@jingyi0605/codingns 0.6.1 → 0.6.5

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 (162) hide show
  1. package/bin/codingns.mjs +225 -0
  2. package/dist/public/assets/AdaptiveButlerPage-CfsUVZKl.js +3 -0
  3. package/dist/public/assets/{App-Dsf3ooXU.js → App-B9HcTkMT.js} +3 -3
  4. package/dist/public/assets/{BootstrapPage-CE0m1qSR.js → BootstrapPage-BgLdZEKQ.js} +1 -1
  5. package/dist/public/assets/ConversationPage-Cj8go7L0.js +4 -0
  6. package/dist/public/assets/{DesktopDetachPreviewPage-Dxarr_Wf.js → DesktopDetachPreviewPage-YCBnyC58.js} +1 -1
  7. package/dist/public/assets/{DesktopWindowPage-VytPwJ4c.js → DesktopWindowPage-CrvndE23.js} +1 -1
  8. package/dist/public/assets/{FileContextPanel-DwFzLsOp.js → FileContextPanel-CdC7GGw5.js} +1 -1
  9. package/dist/public/assets/{GitSidebar-CH6WqTrM.js → GitSidebar-z2SBinQh.js} +1 -1
  10. package/dist/public/assets/{MobileCreateSessionSheet-DcxKM00P.js → MobileCreateSessionSheet-Cb2HM-y3.js} +1 -1
  11. package/dist/public/assets/{MobileTopHeaderFrame-C5rIKQT6.js → MobileTopHeaderFrame-etF2HKlm.js} +1 -1
  12. package/dist/public/assets/{MobileWorkspaceSwitcherHeader-CfUnHgv_.js → MobileWorkspaceSwitcherHeader-CuGJ31kb.js} +1 -1
  13. package/dist/public/assets/{RelayConnectEntryPage-CgMvVZwa.js → RelayConnectEntryPage-BB6DbGtP.js} +1 -1
  14. package/dist/public/assets/{ServerSettingsModal-CFul__z1.js → ServerSettingsModal-Bl1sacZg.js} +1 -1
  15. package/dist/public/assets/{SessionIndexPage-B-tRhBXC.js → SessionIndexPage-NbF9gJnp.js} +1 -1
  16. package/dist/public/assets/SettingsPage-DGsmQpLv.js +1 -0
  17. package/dist/public/assets/{TerminalManagerPanel-BbORd-ee.js → TerminalManagerPanel-BOm8Hi_v.js} +1 -1
  18. package/dist/public/assets/{TerminalPage-DWHv6mlu.js → TerminalPage-B5JNFU6w.js} +19 -19
  19. package/dist/public/assets/{TerminalRuntimeFallbackModal-B29YxbQe.js → TerminalRuntimeFallbackModal-CM3LRKOJ.js} +1 -1
  20. package/dist/public/assets/{ToolFilesPage-Dx9cv9hu.js → ToolFilesPage-GSqKQsj_.js} +1 -1
  21. package/dist/public/assets/{ToolGitPage-D7H3vAia.js → ToolGitPage-BVFWMMQp.js} +1 -1
  22. package/dist/public/assets/{ToolProcessesPage-PqQWxsy-.js → ToolProcessesPage-DZ456fYz.js} +1 -1
  23. package/dist/public/assets/{ToolsHomePage-CX05Pe_4.js → ToolsHomePage-DsJp0y8A.js} +1 -1
  24. package/dist/public/assets/{WorkbenchLandingPage-CchkAC75.js → WorkbenchLandingPage-DyPei0e-.js} +1 -1
  25. package/dist/public/assets/WorkbenchLayout-DlbgBT3n.js +4 -0
  26. package/dist/public/assets/WorkbenchModal-LNfB69qx.js +1 -0
  27. package/dist/public/assets/WorkbenchShellRoute-BsxumYx5.js +1 -0
  28. package/dist/public/assets/{WorkbenchShellRoute-RGZpA0_J.css → WorkbenchShellRoute-DhQo_0vu.css} +1 -1
  29. package/dist/public/assets/{WorkspaceDebugDetailPage-Deqy2_pO.js → WorkspaceDebugDetailPage-CaXj5zVI.js} +1 -1
  30. package/dist/public/assets/{WorkspaceDetailPage-Cvf-ZdlB.js → WorkspaceDetailPage-DOexuuaw.js} +1 -1
  31. package/dist/public/assets/{WorkspaceHomePage-Dsyvqyk1.js → WorkspaceHomePage-DkCHNjKD.js} +1 -1
  32. package/dist/public/assets/{client-runtime-manager-DROQJ9v3.js → client-runtime-manager-6OoYHXGd.js} +1 -1
  33. package/dist/public/assets/{file-tree-icon-Bp3Ntt7u.js → file-tree-icon-9pt1OStn.js} +1 -1
  34. package/dist/public/assets/index-BwlbvwaA.css +1 -0
  35. package/dist/public/assets/index-DSw-TkQL.js +42 -0
  36. package/dist/public/assets/{login-direct-candidate-resolver-DotM530R.js → login-direct-candidate-resolver-CLlYtBRq.js} +1 -1
  37. package/dist/public/assets/model-switch-api-C-l8-E1S.js +1 -0
  38. package/dist/public/assets/{preferences-service-BG6GKG29.js → preferences-service-BCcfYP_d.js} +1 -1
  39. package/dist/public/assets/{relay-entry-pmr-c42O.js → relay-entry-BmLkMKuq.js} +1 -1
  40. package/dist/public/assets/session-runtime-machine-DgtvREca.js +21 -0
  41. package/dist/public/assets/{terminal-runtime-meta-8_uRZf7h.js → terminal-runtime-meta-0h-75uRy.js} +1 -1
  42. package/dist/public/assets/{useRegisteredDebugTemplates-DWX7LXQu.js → useRegisteredDebugTemplates-rBVmAqh3.js} +1 -1
  43. package/dist/public/index.html +2 -2
  44. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +4 -1
  45. package/dist/server/modules/assistant-capability/assistant-capability-service.js +12 -1
  46. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
  47. package/dist/server/modules/butler/butler-control-session-service.d.ts +4 -1
  48. package/dist/server/modules/butler/butler-control-session-service.js +17 -1
  49. package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
  50. package/dist/server/modules/butler/butler-profile-service.d.ts +3 -1
  51. package/dist/server/modules/butler/butler-profile-service.js +16 -4
  52. package/dist/server/modules/butler/butler-profile-service.js.map +1 -1
  53. package/dist/server/modules/opencli/opencli-bridge-skill-service.d.ts +12 -0
  54. package/dist/server/modules/opencli/opencli-bridge-skill-service.js +124 -0
  55. package/dist/server/modules/opencli/opencli-bridge-skill-service.js.map +1 -0
  56. package/dist/server/modules/opencli/opencli-catalog-service.d.ts +50 -0
  57. package/dist/server/modules/opencli/opencli-catalog-service.js +345 -0
  58. package/dist/server/modules/opencli/opencli-catalog-service.js.map +1 -0
  59. package/dist/server/modules/opencli/opencli-controller.d.ts +13 -0
  60. package/dist/server/modules/opencli/opencli-controller.js +30 -0
  61. package/dist/server/modules/opencli/opencli-controller.js.map +1 -0
  62. package/dist/server/modules/opencli/opencli-health-service.d.ts +28 -0
  63. package/dist/server/modules/opencli/opencli-health-service.js +106 -0
  64. package/dist/server/modules/opencli/opencli-health-service.js.map +1 -0
  65. package/dist/server/modules/opencli/opencli-install-discovery.d.ts +23 -0
  66. package/dist/server/modules/opencli/opencli-install-discovery.js +130 -0
  67. package/dist/server/modules/opencli/opencli-install-discovery.js.map +1 -0
  68. package/dist/server/modules/opencli/opencli-management-service.d.ts +59 -0
  69. package/dist/server/modules/opencli/opencli-management-service.js +152 -0
  70. package/dist/server/modules/opencli/opencli-management-service.js.map +1 -0
  71. package/dist/server/modules/opencli/opencli-runtime-builder.d.ts +11 -0
  72. package/dist/server/modules/opencli/opencli-runtime-builder.js +214 -0
  73. package/dist/server/modules/opencli/opencli-runtime-builder.js.map +1 -0
  74. package/dist/server/modules/opencli/opencli-runtime-layout.d.ts +3 -0
  75. package/dist/server/modules/opencli/opencli-runtime-layout.js +11 -0
  76. package/dist/server/modules/opencli/opencli-runtime-layout.js.map +1 -0
  77. package/dist/server/modules/opencli/opencli-runtime-profile-service.d.ts +29 -0
  78. package/dist/server/modules/opencli/opencli-runtime-profile-service.js +104 -0
  79. package/dist/server/modules/opencli/opencli-runtime-profile-service.js.map +1 -0
  80. package/dist/server/modules/opencli/opencli-runtime-resolver.d.ts +29 -0
  81. package/dist/server/modules/opencli/opencli-runtime-resolver.js +110 -0
  82. package/dist/server/modules/opencli/opencli-runtime-resolver.js.map +1 -0
  83. package/dist/server/modules/opencli/opencli-session-prompt-service.d.ts +11 -0
  84. package/dist/server/modules/opencli/opencli-session-prompt-service.js +66 -0
  85. package/dist/server/modules/opencli/opencli-session-prompt-service.js.map +1 -0
  86. package/dist/server/modules/provider/provider-catalog-service.d.ts +46 -0
  87. package/dist/server/modules/provider/provider-catalog-service.js +249 -0
  88. package/dist/server/modules/provider/provider-catalog-service.js.map +1 -0
  89. package/dist/server/modules/provider/provider-controller.d.ts +15 -2
  90. package/dist/server/modules/provider/provider-controller.js +44 -6
  91. package/dist/server/modules/provider/provider-controller.js.map +1 -1
  92. package/dist/server/modules/provider/provider-disabled.d.ts +8 -0
  93. package/dist/server/modules/provider/provider-disabled.js +45 -0
  94. package/dist/server/modules/provider/provider-disabled.js.map +1 -0
  95. package/dist/server/modules/provider/provider-discovery-helper-client.d.ts +1 -0
  96. package/dist/server/modules/provider/provider-discovery-helper-client.js.map +1 -1
  97. package/dist/server/modules/provider/provider-discovery-helper-process.js +3 -3
  98. package/dist/server/modules/provider/provider-discovery-helper-process.js.map +1 -1
  99. package/dist/server/modules/provider/provider-discovery-runtime.d.ts +1 -1
  100. package/dist/server/modules/provider/provider-discovery-runtime.js +12 -8
  101. package/dist/server/modules/provider/provider-discovery-runtime.js.map +1 -1
  102. package/dist/server/modules/sessions/claude-compatible-provider-registry.d.ts +16 -0
  103. package/dist/server/modules/sessions/claude-compatible-provider-registry.js +91 -0
  104. package/dist/server/modules/sessions/claude-compatible-provider-registry.js.map +1 -0
  105. package/dist/server/modules/sessions/session-history-service.d.ts +7 -1
  106. package/dist/server/modules/sessions/session-history-service.js +49 -16
  107. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  108. package/dist/server/modules/sessions/session-live-runtime-router-service.js +9 -4
  109. package/dist/server/modules/sessions/session-live-runtime-router-service.js.map +1 -1
  110. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +8 -4
  111. package/dist/server/modules/sessions/session-live-runtime-service.js +100 -87
  112. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  113. package/dist/server/modules/sessions/session-permission-request-service.d.ts +5 -2
  114. package/dist/server/modules/sessions/session-permission-request-service.js +26 -27
  115. package/dist/server/modules/sessions/session-permission-request-service.js.map +1 -1
  116. package/dist/server/modules/sessions/session-provider-config-service.d.ts +17 -1
  117. package/dist/server/modules/sessions/session-provider-config-service.js +121 -17
  118. package/dist/server/modules/sessions/session-provider-config-service.js.map +1 -1
  119. package/dist/server/modules/skills/skill-manager-service.d.ts +5 -0
  120. package/dist/server/modules/skills/skill-manager-service.js +26 -0
  121. package/dist/server/modules/skills/skill-manager-service.js.map +1 -1
  122. package/dist/server/modules/tasks/task-helper-process-handlers.d.ts +1 -0
  123. package/dist/server/modules/tasks/task-helper-process-handlers.js +1 -1
  124. package/dist/server/modules/tasks/task-helper-process-handlers.js.map +1 -1
  125. package/dist/server/routes/opencli.d.ts +3 -0
  126. package/dist/server/routes/opencli.js +7 -0
  127. package/dist/server/routes/opencli.js.map +1 -0
  128. package/dist/server/routes/providers.js +4 -2
  129. package/dist/server/routes/providers.js.map +1 -1
  130. package/dist/server/server/create-server.d.ts +8 -0
  131. package/dist/server/server/create-server.js +44 -11
  132. package/dist/server/server/create-server.js.map +1 -1
  133. package/dist/server/storage/repositories/opencli-catalog-entry-repository.d.ts +9 -0
  134. package/dist/server/storage/repositories/opencli-catalog-entry-repository.js +85 -0
  135. package/dist/server/storage/repositories/opencli-catalog-entry-repository.js.map +1 -0
  136. package/dist/server/storage/repositories/opencli-provider-repository.d.ts +8 -0
  137. package/dist/server/storage/repositories/opencli-provider-repository.js +88 -0
  138. package/dist/server/storage/repositories/opencli-provider-repository.js.map +1 -0
  139. package/dist/server/storage/repositories/opencli-runtime-profile-repository.d.ts +11 -0
  140. package/dist/server/storage/repositories/opencli-runtime-profile-repository.js +127 -0
  141. package/dist/server/storage/repositories/opencli-runtime-profile-repository.js.map +1 -0
  142. package/dist/server/storage/repositories/provider-control-repository.d.ts +9 -0
  143. package/dist/server/storage/repositories/provider-control-repository.js +51 -0
  144. package/dist/server/storage/repositories/provider-control-repository.js.map +1 -0
  145. package/dist/server/storage/sqlite/client.js +53 -0
  146. package/dist/server/storage/sqlite/client.js.map +1 -1
  147. package/dist/server/storage/sqlite/schema.sql +66 -0
  148. package/dist/server/types/domain.d.ts +50 -0
  149. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.d.ts +5 -0
  150. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js +1 -1
  151. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js.map +1 -1
  152. package/package.json +1 -1
  153. package/dist/public/assets/AdaptiveButlerPage-Dw72U3hG.js +0 -3
  154. package/dist/public/assets/ConversationPage-8wOY7SX-.js +0 -4
  155. package/dist/public/assets/SettingsPage-C9LGxSQZ.js +0 -1
  156. package/dist/public/assets/WorkbenchLayout-pOZvEqp7.js +0 -3
  157. package/dist/public/assets/WorkbenchModal-ColqvV6a.js +0 -1
  158. package/dist/public/assets/WorkbenchShellRoute-C0_h4lP6.js +0 -1
  159. package/dist/public/assets/index-B84Po2NA.css +0 -1
  160. package/dist/public/assets/index-C-0oeG_5.js +0 -42
  161. package/dist/public/assets/model-switch-api-Bh9nYslz.js +0 -1
  162. package/dist/public/assets/session-runtime-machine-YN84QBlr.js +0 -21
@@ -1,4 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/window-BVUB8gMK.js","assets/event-DvH9tcej.js"])))=>i.map(i=>d[i]);
2
- var Nr=Object.defineProperty;var Lr=(e,t,s)=>t in e?Nr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var xe=(e,t,s)=>Lr(e,typeof t!="symbol"?t+"":t,s);import{t as i,b as a,u as _r,E as Dr,j as r,m as Xt,A as Or,_ as _s}from"./index-C-0oeG_5.js";import{D as qt,W as Hr}from"./WorkbenchModal-ColqvV6a.js";import{l as Fr,m as Br,n as It,o as Wr,p as Rn,q as qr,s as Ht,t as Ut,f as mt,h as Gt,a as Ct,M as Ur,v as Cn,w as vs,x as kn,y as Tn,S as Vr,z as $r,A as Xr,B as Gr,C as Yr,D as zr,E as Qr,F as ls,G as Ds,H as Kr,I as Zr,J as Jr,K as eo,L as En,u as to,e as bs,N as so,O as no,P as ro,Q as oo,R as io,i as ao,j as lo,T as co}from"./model-switch-api-Bh9nYslz.js";import{u as vt,R as Os,S as Nt,T as Hs,U as uo,V as ho,X as Yt,Y as Fs,Z as mo,f as Bs,_ as ct,c as $e,$ as po,a0 as fo,a1 as go,a2 as vo,a3 as bo,J as wo,i as jn,b as Ws,a4 as Lt,a5 as pe,w as So,a6 as Mo,r as An,a7 as ws,L as Ss,a8 as Ft,a9 as Ms,aa as cs,ab as Io,ac as xo,ad as qs,H as yo,ae as Po,F as Ro,af as Co,ag as Nn,ah as pt,ai as ko,aj as ds,n as yt,ak as To,al as Eo,am as jo,an as Ao,o as No,C as bt,ao as Ln,ap as _n,aq as Dn,ar as On,D as Hn,g as Vt,as as Fn,Q as Bn,at as Lo,au as Us,N as Wn,av as _o,aw as Do,M as Oo,K as Ho}from"./WorkbenchLayout-pOZvEqp7.js";import{f as rt,u as ut,e as Tt,g as gt,h as Is,c as Fo}from"./App-Dsf3ooXU.js";import{B as Bo,M as Wo,m as wt,c as Vs,a as qn,i as qo,r as $s,b as us,R as Uo,g as Vo,p as Un,P as Vn,d as xs,C as ys,e as $o}from"./session-runtime-machine-YN84QBlr.js";import{FileContextPanel as $n}from"./FileContextPanel-DwFzLsOp.js";import{GitSidebar as Xn}from"./GitSidebar-CH6WqTrM.js";import{TerminalManagerPanel as Gn}from"./TerminalManagerPanel-BbORd-ee.js";import{TerminalPage as Xo}from"./TerminalPage-DWHv6mlu.js";import{f as Yn,a as $t,M as zn}from"./MobileWorkspaceSwitcherHeader-CfUnHgv_.js";import{w as Pt,r as zt,a as Xs,b as Gs}from"./styles-DRVvx_kv.js";import"./window-BVUB8gMK.js";import"./event-DvH9tcej.js";import"./relay-entry-pmr-c42O.js";import"./file-tree-icon-Bp3Ntt7u.js";import"./terminal-runtime-meta-8_uRZf7h.js";import"./TerminalRuntimeFallbackModal-B29YxbQe.js";import"./MobileTopHeaderFrame-C5rIKQT6.js";function Ps({connectionState:e,onReconnect:t}){const{showToast:s,dismissToast:n}=rt(),o=Fr(),c=o?i(Br(o.kind)):null;return a.useEffect(()=>{if(e==="connected"||e==="closed"){n("conversation-connection-state");return}if(e==="reconnect_failed"){s({id:"conversation-connection-state",title:i("conversation.connectionReconnectFailed"),description:c?i("conversation.reconnectFailedExplainWithRoute",{route:c}):i("conversation.reconnectFailedExplain"),tone:"warning",durationMs:null,action:{label:i("conversation.reconnectButton"),onClick:t}});return}s({id:"conversation-connection-state",title:i("conversation.connectionReconnecting"),description:c?i("conversation.reconnectExplainWithRoute",{route:c}):i("conversation.reconnectExplain"),tone:"info",durationMs:3200})},[c,e,n,t,s]),null}const Go=48;function Yo(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 zo(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(!Yo(e))throw new Error(i("conversation.copyContentFailed"))}}function Ys(e,t,s){return Math.min(Math.max(e,t),s)}function Qt(e){return e&&Ht.includes(e)?e:"codex"}function hs(e){return e?e.nodeType===Node.ELEMENT_NODE?e:e.parentElement:null}function zs(e){var s,n;const t=hs(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 Qo(e,t){return[t.trim()||i("conversation.selectionActionDefaultPrompt"),"",i("conversation.selectionActionQuotedLabel"),"```text",e.trim(),"```"].join(`
3
- `)}function Kt(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=hs(s.startContainer),o=hs(s.endContainer);if(!n||!o||!e.contains(n)||!e.contains(o))return null;const c=t.toString().trim();if(!c)return null;const l=s.getBoundingClientRect();if(!l.width&&!l.height)return null;const d=zs(s.startContainer),u=zs(s.endContainer);return{text:c,sourceMessageId:d&&d===u?d:null,rect:{left:l.left,top:l.top,right:l.right,bottom:l.bottom,width:l.width,height:l.height}}}function Ko({containerRef:e,session:t,currentCapabilities:s}){const n=ut(),o=Tt(),{showToast:c}=rt(),{shellMode:l,requestNavigationRefresh:d,selectWorkspace:u,upsertNavigationSession:f}=vt(),x=_r(h=>h.profile.providers),p=a.useMemo(()=>Os(t==null?void 0:t.providerConfigMode,t==null?void 0:t.providerPresetId),[t==null?void 0:t.providerConfigMode,t==null?void 0:t.providerPresetId]),[N,j]=a.useState(null),[M,b]=a.useState(null),[_,y]=a.useState(!1),[I,S]=a.useState(""),[q,D]=a.useState(!1),[w,V]=a.useState(Qt(t==null?void 0:t.provider)),[m,v]=a.useState(Nt),[L,B]=a.useState(p.providerConfigMode),[z,X]=a.useState(p.providerPresetId),[ce,G]=a.useState({}),[de,A]=a.useState(!1),[g,H]=a.useState(null),[Y,re]=a.useState({}),[U,le]=a.useState(!1),[E,W]=a.useState(!1),[Q,ue]=a.useState(!1),[R,K]=a.useState(0),[Se,Re]=a.useState(null),[Ce,Ne]=a.useState(()=>({width:typeof window>"u"?0:window.innerWidth,height:typeof window>"u"?0:window.innerHeight})),ke=a.useRef(!1),F=a.useRef(!1),O=a.useRef(!1),ie=a.useRef(null),ne=a.useRef(null),Te=l==="mobile"||o.isMobile,Le=a.useMemo(()=>h=>{var $,Z;return(Dr(h)?(Z=($=x[h])==null?void 0:$.defaultModel)==null?void 0:Z.trim():null)||Nt},[x]),J=a.useMemo(()=>Os(L,z),[L,z]),ve=a.useMemo(()=>Hs(w),[w]),ee=a.useMemo(()=>ve?ce[ve]??null:null,[ce,ve]),_e=a.useMemo(()=>uo(ee),[ee]),P=a.useMemo(()=>ho(ee),[ee]),C=J.providerConfigMode==="cc-switch-preset"?J.providerPresetId??Yt:Yt,he=a.useMemo(()=>P.find(h=>h.value===C)??P[0]??null,[P,C]),ye=a.useMemo(()=>w===(t==null?void 0:t.provider)&&J.providerConfigMode===p.providerConfigMode&&J.providerPresetId===p.providerPresetId&&s?s:g??It(w),[s,g,w,J.providerConfigMode,J.providerPresetId,t==null?void 0:t.provider,p.providerConfigMode,p.providerPresetId]),fe=a.useMemo(()=>{var $;const h=It(w).modelOptions??[];return($=ye.modelOptions)!=null&&$.length?ye.modelOptions:h},[ye.modelOptions,w]),Xe=a.useMemo(()=>fe.map(h=>({value:h.id,label:Fs(h)?i("conversation.modelUseCliDefault"):h.name})),[fe]),te=a.useMemo(()=>fe.find(h=>h.id===m)??fe[0]??null,[fe,m]),Ee=a.useMemo(()=>{const h=te?Fs(te)?i("conversation.modelUseCliDefault"):te.name:i("conversation.modelUseCliDefault");return _e?`${(he==null?void 0:he.label)??i("conversation.deploymentDefaultPreset")} · ${h}`:h},[te,he,_e]),se=a.useCallback(h=>{if(V(h),v(Le(h)),t&&h===t.provider&&Hs(h)){B(p.providerConfigMode),X(p.providerPresetId);return}B("global-default"),X(null)},[Le,t,p.providerConfigMode,p.providerPresetId]),De=a.useMemo(()=>{const h=Y[w]??(w===(t==null?void 0:t.provider)&&J.providerConfigMode===p.providerConfigMode&&J.providerPresetId===p.providerPresetId?s:g);return!h||h.canStartSession!==!1?null:h.limitations[0]??i("conversation.capabilityDenied")},[s,g,Y,w,J.providerConfigMode,J.providerPresetId,t==null?void 0:t.provider,p.providerConfigMode,p.providerPresetId]),me=a.useMemo(()=>{var Pe;if(!N||typeof window>"u")return null;const h=(Pe=e.current)==null?void 0:Pe.getBoundingClientRect(),$=h?Math.max(80,h.left+80):96,Z=h?Math.min(Ce.width-80,h.right-80):Ce.width-96,ge=h?Math.max(12,h.top+12):12,Ae=h?Math.max(ge,h.bottom-48):Math.max(12,Ce.height-48),He=N.rect.left+N.rect.width/2;return{left:Ys(He,$,Math.max($,Z)),top:Ys(N.rect.top-48,ge,Ae)}},[e,N,Ce.height,Ce.width]);a.useEffect(()=>{if(typeof window>"u")return;const h=()=>{Ne({width:window.innerWidth,height:window.innerHeight})};return h(),window.addEventListener("resize",h),()=>{window.removeEventListener("resize",h)}},[]),a.useEffect(()=>{if(!t){ne.current!==null&&typeof window<"u"&&(window.clearTimeout(ne.current),ne.current=null),ie.current=null,O.current=!1,j(null),b(null),y(!1);return}const h=Qt(t.provider);se(h)},[se,t]),a.useEffect(()=>{if(!_){A(!1);return}if(!ve){A(!1);return}let h=!1;return A(!0),Wr().then($=>{h||G(Object.fromEntries($.items.map(Z=>[Z.app,Z])))}).catch(()=>{h||G({})}).finally(()=>{h||A(!1)}),()=>{h=!0}},[_,ve]),a.useEffect(()=>{!ve||J.providerConfigMode!=="cc-switch-preset"||!J.providerPresetId||de||!ee||ee.options.some(h=>h.id===J.providerPresetId)||(B("global-default"),X(null))},[de,ee,ve,J.providerConfigMode,J.providerPresetId]),a.useEffect(()=>{if(!t||!e.current||typeof window>"u"){ne.current!==null&&(window.clearTimeout(ne.current),ne.current=null),ie.current=null,O.current=!1,j(null),b(null);return}const h=e.current,$=Me=>{ke.current||(ie.current=Me,j(Me),Me||y(!1))},Z=()=>{ne.current!==null&&(window.clearTimeout(ne.current),ne.current=null)},ge=(Me,Ye)=>{if(ie.current=Me,Z(),Ye!=null&&Ye.immediate){$(Me);return}ne.current=window.setTimeout(()=>{ne.current=null,$(ie.current)},Go)},Ae=()=>{const Me=Kt(h);if(O.current){ie.current=Me;return}ge(Me)},He=()=>{const Me=Kt(h);if(O.current){ie.current=Me;return}ge(Me,{immediate:!0})},Pe=Me=>{!(Me.target instanceof Node)||!h.contains(Me.target)||(O.current=!0,Z())},je=()=>{O.current&&(O.current=!1,ge(Kt(h)))};return document.addEventListener("pointerdown",Pe),document.addEventListener("selectionchange",Ae),window.addEventListener("pointerup",je),window.addEventListener("pointercancel",je),window.addEventListener("mouseup",je),window.addEventListener("touchend",je),window.addEventListener("resize",He),window.addEventListener("scroll",He,!0),()=>{Z(),document.removeEventListener("pointerdown",Pe),document.removeEventListener("selectionchange",Ae),window.removeEventListener("pointerup",je),window.removeEventListener("pointercancel",je),window.removeEventListener("mouseup",je),window.removeEventListener("touchend",je),window.removeEventListener("resize",He),window.removeEventListener("scroll",He,!0)}},[e,t]),a.useEffect(()=>{(!_||!(M!=null&&M.sourceMessageId))&&D(!1)},[_,M==null?void 0:M.sourceMessageId]),a.useEffect(()=>{if(!_||!t)return;let h=!1;return w===t.provider&&J.providerConfigMode===p.providerConfigMode&&J.providerPresetId===p.providerPresetId&&s?(le(!1),H(s),()=>{h=!0}):(le(!0),H(It(w)),Rn(w,t.workspaceId,ve?{providerConfigMode:J.providerConfigMode,providerPresetId:J.providerPresetId}:void 0).then($=>{h||H($)}).catch(()=>{h||H(It(w))}).finally(()=>{h||le(!1)}),()=>{h=!0})},[_,s,ve,w,J.providerConfigMode,J.providerPresetId,t,p.providerConfigMode,p.providerPresetId]),a.useEffect(()=>{if(!_||!t){re({});return}let h=!1;return qr(Ht,t.workspaceId).then($=>{h||re($)}),()=>{h=!0}},[_,t]),a.useEffect(()=>{if(!_||!t)return;const h=Ht.filter(Z=>{const ge=Y[Z];return!ge||ge.canStartSession!==!1});if(h.length===0||h.includes(w))return;const $=h[0];se($)},[_,se,Y,w,t]),a.useEffect(()=>{var $;const h=Le(w);if(!fe.some(Z=>Z.id===m)){if(fe.some(Z=>Z.id===h)){v(h);return}v((($=fe[0])==null?void 0:$.id)??Nt)}},[fe,Le,m,w]),a.useEffect(()=>{if(!_){ke.current=!1;return}ke.current=!0},[_]),a.useEffect(()=>{if(typeof window>"u")return;const h=$=>{$.key==="Escape"&&(y(!1),b(null),j(null),ke.current=!1)};return window.addEventListener("keydown",h),()=>{window.removeEventListener("keydown",h)}},[]);async function Ge(){var $,Z;if(!N)return;const h=N.text;j(null),typeof window<"u"&&((Z=($=window.getSelection())==null?void 0:$.removeAllRanges)==null||Z.call($));try{await zo(h,o),c({title:i("conversation.copyContentSuccess"),tone:"success"})}catch(ge){c({title:ge instanceof Error?ge.message:i("conversation.copyContentFailed"),tone:"error"})}}function Oe(){N&&(Re({title:"",content:N.text}),K(h=>h+1),ue(!0),y(!1),b(null),j(null),ke.current=!1)}function be(){var Z,ge;if(!N||!t)return;const h=N,$=Qt(t.provider);se($),S(""),D(!1),b(h),j(null),y(!0),typeof window<"u"&&((ge=(Z=window.getSelection())==null?void 0:Z.removeAllRanges)==null||ge.call(Z))}function Ke(h){h.preventDefault(),ke.current=!0}function ot(){F.current=!0,be()}function it(){if(F.current){F.current=!1;return}be()}async function Ze(){var h,$,Z,ge;if(!(!M||!t)){if(De){c({title:De,tone:"error"});return}W(!0);try{const Ae=Qo(M.text,I),He=(te==null?void 0:te.id)===Nt?null:(te==null?void 0:te.id)??null;let Pe=null;if(q&&M.sourceMessageId)Pe=await Cn(t.sessionId,{sourceType:"message",sourceMessageId:M.sourceMessageId,strategy:"auto",targetProvider:w,providerConfigMode:J.providerConfigMode,providerPresetId:J.providerPresetId,sessionKind:"annotation",annotationSourceMessageId:M.sourceMessageId,annotationSourceText:M.text}),f(Pe),await vs(Pe.sessionId,{content:Ae,clientRequestId:(($=(h=globalThis.crypto)==null?void 0:h.randomUUID)==null?void 0:$.call(h))??`selection-action-${Date.now()}-${Math.random().toString(16).slice(2)}`,model:He,permissionMode:ct(),providerConfigMode:J.providerConfigMode,providerPresetId:J.providerPresetId});else{const je=await kn({workspaceId:t.workspaceId,provider:w,content:Ae,clientRequestId:((ge=(Z=globalThis.crypto)==null?void 0:Z.randomUUID)==null?void 0:ge.call(Z))??`selection-action-${Date.now()}-${Math.random().toString(16).slice(2)}`,model:He,permissionMode:ct(),providerConfigMode:J.providerConfigMode,providerPresetId:J.providerPresetId,parentSessionId:t.sessionId,sessionKind:"annotation",annotationSourceMessageId:M.sourceMessageId??null,annotationSourceText:M.text});Pe=je.session??await Tn(je.sessionId)}f(Pe),d(),u(Pe.workspaceId),n($e(Pe.workspaceId,Pe.sessionId)),y(!1),b(null),j(null),ke.current=!1}catch(Ae){c({title:Ae instanceof Error?Ae.message:i("conversation.selectionActionFailed"),tone:"error"})}finally{W(!1)}}}function Ie(h=!1){y(!1),b(null),ke.current=!1,h&&j(null)}const et=!!(!_&&N&&me),We=!!(_&&M),at=r.jsxs(Ut,{children:[r.jsx("button",{type:"button",className:"secondary-button",onClick:()=>Ie(!1),children:i("common.cancel")}),r.jsx("button",{type:"button",className:"primary-button",disabled:E||!!De,onClick:()=>void Ze(),children:E?i("conversation.sendingState"):i("conversation.selectionActionSubmit")})]}),lt=M?r.jsxs(r.Fragment,{children:[r.jsx(mt,{className:"conversation-selection-preview-section",heading:i("conversation.selectionActionPreviewLabel"),children:r.jsx("div",{className:"conversation-selection-action-dialog-quote",children:M.text})}),r.jsxs(mt,{className:"conversation-selection-request-section",children:[r.jsx(Gt,{className:"conversation-selection-field conversation-selection-prompt-field",label:i("conversation.selectionActionPromptLabel"),children:r.jsx("textarea",{value:I,rows:4,placeholder:i("conversation.selectionActionPromptPlaceholder"),onChange:h=>S(h.target.value)})}),r.jsxs("div",{className:"conversation-selection-context-block",children:[r.jsxs("label",{className:"conversation-selection-checkbox",children:[r.jsx("input",{type:"checkbox",checked:q,disabled:!M.sourceMessageId,onChange:h=>D(h.target.checked)}),r.jsx("span",{children:i("conversation.selectionActionIncludeContext")})]}),M.sourceMessageId?null:r.jsx("p",{className:"conversation-selection-hint",children:i("conversation.selectionActionContextUnavailable")}),De?r.jsx("p",{className:"conversation-selection-hint",children:De}):null]})]}),r.jsx(mt,{className:"conversation-selection-target-section",heading:i("conversation.selectionActionTargetLabel"),children:r.jsxs("div",{className:"conversation-selection-grid",children:[r.jsx(Gt,{className:"conversation-selection-field",label:i("conversation.forkTargetProviderLabel"),children:r.jsx("select",{value:w,onChange:h=>{se(h.target.value)},children:Ht.map(h=>{var $;return r.jsx("option",{value:h,disabled:(($=Y[h])==null?void 0:$.canStartSession)===!1,children:Ct(h,"full")},h)})})}),r.jsx(Gt,{className:"conversation-selection-field",label:i("conversation.forkTargetModelLabel"),children:ve?r.jsx("div",{className:"conversation-selection-deployment-select",children:r.jsx(mo,{ariaLabel:i("conversation.forkTargetModelLabel"),triggerLabel:Ee,presetOptions:P,selectedPresetValue:C,selectedPresetSummary:(he==null?void 0:he.summary)??null,onSelectPreset:h=>{if(h===Yt){B("global-default"),X(null);return}B("cc-switch-preset"),X(h)},modelOptions:Xe,selectedModelValue:m,onSelectModel:v,loadingPresets:de,loadingModels:U,modelColumnDisabled:U||!!De,showPresetColumn:_e,modelEmptyText:i("conversation.deploymentModelEmpty")})}):r.jsx("select",{value:m,disabled:U||!!De,onChange:h=>v(h.target.value),children:fe.map(h=>r.jsx("option",{value:h.id,children:h.name},h.id))})})]})})]}):null;return!t||!et&&!We||typeof document>"u"?r.jsx(Bs,{open:Q,preferredWorkspaceId:(t==null?void 0:t.workspaceId)??null,preferredSessionId:(t==null?void 0:t.sessionId)??null,creationRequestId:R,initialDraft:Se,onClose:()=>ue(!1)}):r.jsxs(r.Fragment,{children:[gt.createPortal(et?r.jsxs("div",{className:"conversation-selection-toolbar",style:me??void 0,onMouseDown:h=>h.preventDefault(),children:[r.jsx("button",{type:"button",className:"conversation-selection-action",onClick:()=>void Ge(),children:i("conversation.copyAction")}),r.jsx("button",{type:"button",className:"conversation-selection-action",onClick:Oe,children:i("conversation.selectionTodoAction")}),r.jsx("button",{type:"button",className:"conversation-selection-action is-primary",onPointerDown:Ke,onMouseDown:Ke,onPointerUp:ot,onClick:it,children:i("conversation.selectionActionButton")})]}):null,document.body),Te?r.jsx(Ur,{open:We,title:i("conversation.selectionActionButton"),height:"auto",kind:"form",showHandle:!0,showCancelButton:!1,cardClassName:"conversation-selection-action-dialog",bodyClassName:"conversation-selection-action-dialog-body",footer:at,onClose:()=>Ie(!1),children:lt}):r.jsx(qt,{open:We,title:i("conversation.selectionActionButton"),size:"compact",layout:"form",className:"conversation-selection-action-dialog",bodyClassName:"conversation-selection-action-dialog-body",footer:at,onClose:()=>Ie(!1),children:lt}),r.jsx(Bs,{open:Q,preferredWorkspaceId:t.workspaceId,preferredSessionId:t.sessionId,creationRequestId:R,initialDraft:Se,onClose:()=>ue(!1)})]})}const St=5,Zo=["codex","claude-code"];function Qn(){return[{id:"recommended",label:i("conversation.butlerCompletionTemplateRecommendedLabel"),description:i("conversation.butlerCompletionTemplateRecommendedDescription"),value:i("conversation.butlerCompletionTemplateRecommendedValue")},{id:"spec-finish",label:i("conversation.butlerCompletionTemplateSpecLabel"),description:i("conversation.butlerCompletionTemplateSpecDescription"),value:i("conversation.butlerCompletionTemplateSpecValue")},{id:"bugfix",label:i("conversation.butlerCompletionTemplateBugfixLabel"),description:i("conversation.butlerCompletionTemplateBugfixDescription"),value:i("conversation.butlerCompletionTemplateBugfixValue")}]}function Zt(){var e;return((e=Qn()[0])==null?void 0:e.value)??""}function Qs(e){return e==="claude-code"?"claude-code":"codex"}function Jo(e){return e==="codex"||e==="claude-code"}function Kn({session:e,showTrigger:t=!0,openRequestKey:s=0}){const{showToast:n}=rt(),{requestNavigationRefresh:o}=vt(),c=a.useId(),l=a.useId(),d=a.useId(),u=a.useId(),[f,x]=a.useState(!1),[p,N]=a.useState(!1),[j,M]=a.useState(null),[b,_]=a.useState(null),[y,I]=a.useState(null),[S,q]=a.useState(Qs(e==null?void 0:e.provider)),[D,w]=a.useState(""),[V,m]=a.useState(()=>Zt()),[v,L]=a.useState(St),[B,z]=a.useState(!1),[X,ce]=a.useState(0),G=Qn(),de=a.useMemo(()=>{var R;return((R=e==null?void 0:e.title)==null?void 0:R.trim())||null},[e==null?void 0:e.title]),A=a.useMemo(()=>j?{workspaceId:j.workspaceId,project:j.project,session:j.session}:null,[j]),g=(j==null?void 0:j.latestFollowUpTask)??null,H=(j==null?void 0:j.latestVerificationRun)??null,Y=g&&(g.status==="active"||g.status==="waiting_user")?g:null,re=H&&(H.status==="queued"||H.status==="running")?H:null;a.useEffect(()=>{x(!1),z(!1),_(null),M(null),w(""),q(Qs(e==null?void 0:e.provider)),m(Zt()),L(St)},[e==null?void 0:e.sessionId]),a.useEffect(()=>{if(!(e!=null&&e.sessionId)){N(!1);return}let R=!1;return N(!0),_(null),po(e.sessionId).then(K=>{R||M(K.context)}).catch(K=>{R||(M(null),_(K instanceof Error?K.message:i("conversation.butlerActionLoadFailed")))}).finally(()=>{R||N(!1)}),()=>{R=!0}},[X,e==null?void 0:e.sessionId]);function U(){p||ce(R=>R+1)}function le(){!j&&!p&&U()}if(a.useEffect(()=>{t||s<=0||(x(!0),le())},[p,s,t,j]),!(e!=null&&e.sessionId))return null;async function E(){if(!A){le();return}const R=D.trim(),K=V.trim();if(!R){n({title:i("conversation.butlerFollowUpObjectiveRequired"),tone:"warning"});return}if(!K){n({title:i("conversation.butlerFollowUpCompletionCriteriaRequired"),tone:"warning"});return}I("follow-up");try{const Se=await bo({projectId:A.project.id,butlerSessionId:A.session.id,providerId:S,objective:R,completionCriteria:K,maxAutoContinueCount:v});M(Re=>Re&&{...Re,latestFollowUpTask:Se.task}),o(),n({title:i("conversation.butlerFollowUpStarted"),description:i("conversation.butlerFollowUpStartedDescription",{projectName:A.project.name}),tone:"success"}),w(""),m(Zt()),L(St),x(!1)}catch(Se){n({title:i("conversation.butlerFollowUpFailed"),description:Se instanceof Error?Se.message:void 0,tone:"error"})}finally{I(null)}}async function W(){if(g){I("follow-up");try{const R=await fo(g.id);M(K=>K&&{...K,latestFollowUpTask:R.task}),o(),n({title:i("conversation.butlerFollowUpStopped"),description:i("conversation.butlerFollowUpStoppedDescription"),tone:"success"}),x(!1)}catch(R){n({title:i("conversation.butlerFollowUpStopFailed"),description:R instanceof Error?R.message:void 0,tone:"error"})}finally{I(null)}}}async function Q(){if(!A){le();return}I("verification");try{const R=await vo({projectId:A.project.id,butlerSessionId:A.session.id,verificationType:"browser",targetRef:de||A.session.title||A.project.name});M(K=>K&&{...K,latestVerificationRun:R.result.run}),o(),n({title:i("conversation.butlerVerificationStarted"),description:i("conversation.butlerVerificationStartedDescription",{projectName:A.project.name}),tone:"success"}),x(!1)}catch(R){n({title:i("conversation.butlerVerificationFailed"),description:R instanceof Error?R.message:void 0,tone:"error"})}finally{I(null)}}async function ue(){if(H){I("verification");try{const R=await go(H.projectId,H.id);M(K=>K&&{...K,latestVerificationRun:R.run}),o(),n({title:i("conversation.butlerVerificationStopped"),description:i("conversation.butlerVerificationStoppedDescription"),tone:"success"}),x(!1)}catch(R){n({title:i("conversation.butlerVerificationStopFailed"),description:R instanceof Error?R.message:void 0,tone:"error"})}finally{I(null)}}}return r.jsxs(r.Fragment,{children:[t?r.jsxs("div",{className:"conversation-butler-entry",onMouseEnter:()=>{z(!0),le()},onMouseLeave:()=>{z(!1)},children:[r.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":i("conversation.butlerActionButton"),title:i("conversation.butlerActionButton"),onFocus:()=>{z(!0),le()},onBlur:()=>{z(!1)},onClick:()=>{x(!0),le()},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(Bo,{})})}),B?r.jsxs("div",{className:"conversation-butler-analysis-popover",role:"status","aria-live":"polite",children:[r.jsx("strong",{children:i("conversation.butlerAnalysisTitle")}),p?r.jsx("p",{children:i("conversation.butlerActionLoading")}):b?r.jsx("p",{children:b}):g?r.jsxs(r.Fragment,{children:[r.jsxs("p",{children:[i("conversation.butlerAnalysisObjectiveLabel"),":",g.objective]}),r.jsxs("p",{children:[i("conversation.butlerAnalysisStatusLabel"),":",Ks(g.status)]}),r.jsxs("p",{children:[i("conversation.butlerAnalysisSummaryLabel"),":",g.lastAutomationSummary||g.waitingReason||i("conversation.butlerAnalysisEmpty")]}),g.waitingReason?r.jsxs("p",{children:[i("conversation.butlerAnalysisWaitingReasonLabel"),":",g.waitingReason]}):null]}):r.jsx("p",{children:i("conversation.butlerAnalysisEmpty")})]}):null]}):null,r.jsx(Hr,{open:f,title:i("conversation.butlerActionModalTitle"),description:i("conversation.butlerActionModalDescription"),className:"conversation-butler-modal-card",footer:!p&&!b&&A?r.jsxs(Ut,{children:[r.jsx("button",{type:"button",className:"secondary-button",disabled:y!==null,onClick:()=>{Q()},children:i("conversation.butlerVerificationAction")}),r.jsx("button",{type:"button",className:"primary-button",disabled:y!==null,onClick:()=>{E()},children:i("conversation.butlerFollowUpAction")})]}):void 0,onClose:()=>{y||x(!1)},children:r.jsxs("div",{className:"conversation-butler-modal",children:[p?r.jsx("p",{className:"conversation-butler-modal-hint",children:i("conversation.butlerActionLoading")}):null,!p&&b?r.jsx("p",{className:"conversation-butler-modal-error",children:b}):null,!p&&!b&&A?r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"conversation-butler-target-grid",children:[r.jsxs("div",{className:"conversation-butler-target-card",children:[r.jsx("span",{children:i("conversation.butlerActionProjectLabel")}),r.jsx("strong",{children:A.project.name})]}),r.jsxs("div",{className:"conversation-butler-target-card",children:[r.jsx("span",{children:i("conversation.butlerActionSessionLabel")}),r.jsx("strong",{children:A.session.title||de||A.session.sessionId})]})]}),r.jsxs("div",{className:"conversation-butler-follow-up-grid",children:[r.jsxs("div",{className:"workbench-modal-field conversation-butler-modal-field",children:[r.jsxs("div",{className:"conversation-butler-field-heading",children:[r.jsx("label",{children:i("conversation.butlerFollowUpProviderLabel")}),r.jsx("small",{children:i("conversation.butlerFollowUpProviderHint")})]}),r.jsx(Vr,{workspaceId:A.workspaceId,providers:Zo,selectedProvider:S,disabled:y!==null,onSelect:R=>{Jo(R)&&q(R)}})]}),r.jsxs("div",{className:"workbench-modal-field conversation-butler-modal-field conversation-butler-round-limit-field",children:[r.jsxs("div",{className:"conversation-butler-field-heading",children:[r.jsx("label",{htmlFor:u,children:i("conversation.butlerFollowUpRoundLimitLabel")}),r.jsx("small",{children:i("conversation.butlerFollowUpRoundLimitHint")})]}),r.jsx("input",{id:u,type:"number",min:1,max:20,value:v,disabled:y!==null,onChange:R=>{const K=Number.parseInt(R.target.value,10);L(Number.isFinite(K)?K:St)}})]})]}),r.jsxs("div",{className:"workbench-modal-field conversation-butler-modal-field",children:[r.jsx("label",{htmlFor:c,children:i("conversation.butlerFollowUpObjectiveLabel")}),r.jsx("textarea",{id:c,rows:3,value:D,placeholder:i("conversation.butlerFollowUpObjectivePlaceholder"),disabled:y!==null,onChange:R=>{w(R.target.value)}})]}),r.jsxs("div",{className:"workbench-modal-field conversation-butler-modal-field",children:[r.jsxs("div",{className:"conversation-butler-field-heading",children:[r.jsx("label",{htmlFor:l,children:i("conversation.butlerFollowUpCompletionCriteriaLabel")}),r.jsx("small",{id:d,children:i("conversation.butlerCompletionTemplateSectionHint")})]}),r.jsx("textarea",{id:l,rows:3,value:V,placeholder:i("conversation.butlerFollowUpCompletionCriteriaPlaceholder"),"aria-describedby":d,disabled:y!==null,onChange:R=>{m(R.target.value)}}),r.jsx("div",{className:"conversation-butler-preset-grid",role:"group","aria-label":i("conversation.butlerCompletionTemplateSectionLabel"),children:G.map(R=>r.jsxs("button",{type:"button",className:"conversation-butler-preset-card","data-selected":V.trim()===R.value,"aria-pressed":V.trim()===R.value,disabled:y!==null,onClick:()=>{m(R.value)},children:[r.jsx("strong",{children:R.label}),r.jsx("span",{children:R.description})]},R.id))})]}),Y||re?r.jsxs("div",{className:"conversation-butler-meta-grid",children:[Y?r.jsxs("div",{className:"conversation-butler-target-card conversation-butler-current-task-card",children:[r.jsx("span",{children:i("conversation.butlerCurrentFollowUpLabel")}),r.jsx("strong",{children:Ks(Y.status)}),r.jsx("small",{children:i("conversation.butlerCurrentFollowUpProgress",{current:Y.autoContinueCount,max:Y.maxAutoContinueCount??St})}),r.jsx("button",{type:"button",className:"workbench-secondary-button",disabled:y!==null,onClick:()=>{W()},children:i("conversation.butlerStopFollowUpAction")})]}):null,re?r.jsxs("div",{className:"conversation-butler-target-card conversation-butler-current-task-card",children:[r.jsx("span",{children:i("conversation.butlerCurrentVerificationLabel")}),r.jsx("strong",{children:ei(re.status)}),r.jsx("small",{children:re.targetRef||re.verificationType}),r.jsx("button",{type:"button",className:"workbench-secondary-button",disabled:y!==null,onClick:()=>{ue()},children:i("conversation.butlerStopVerificationAction")})]}):null]}):null]}):null]})})]})}function Ks(e){switch(e){case"waiting_user":return i("shell.butlerAutomationStatusWaitingUser");case"completed":return i("shell.butlerAutomationStatusCompleted");case"failed":return i("shell.butlerAutomationStatusFailed");case"cancelled":return i("shell.butlerAutomationStatusCancelled");case"active":default:return i("shell.butlerAutomationStatusActive")}}function ei(e){switch(e){case"queued":case"running":return i("shell.butlerAutomationStatusActive");case"passed":case"skipped":return i("shell.butlerAutomationStatusCompleted");case"failed":return i("shell.butlerAutomationStatusFailed");case"cancelled":default:return i("shell.butlerAutomationStatusCancelled")}}const ti=340;function si({session:e,onOpenBranchTree:t}){const s=ut(),n=Is(),o=a.useRef(null),c=a.useRef(null),[l,d]=a.useState(!1),[u,f]=a.useState(null),[x,p]=a.useState(null),[N,j]=a.useState(0);a.useEffect(()=>{d(!1),f(null)},[n.pathname,n.search]),a.useLayoutEffect(()=>{if(!l||!u||typeof window>"u"){p(null);return}const w=()=>{var L,B;const v=wo(u,{width:((L=c.current)==null?void 0:L.offsetWidth)??0,height:((B=c.current)==null?void 0:B.offsetHeight)??0},{width:window.innerWidth,height:window.innerHeight},{estimatedHeightPx:ti});p({position:"fixed",left:`${Math.round(v.left)}px`,top:`${Math.round(v.top)}px`,width:`${Math.round(v.width)}px`,maxWidth:"calc(100vw - 24px)",maxHeight:`${Math.round(v.maxHeight)}px`,transformOrigin:v.transformOrigin})},V=v=>{var B,z;const L=v.target;L&&!((B=c.current)!=null&&B.contains(L))&&!((z=o.current)!=null&&z.contains(L))&&b()},m=v=>{v.key==="Escape"&&b()};return w(),window.addEventListener("pointerdown",V),window.addEventListener("keydown",m),window.addEventListener("resize",w),window.addEventListener("scroll",w,!0),()=>{window.removeEventListener("pointerdown",V),window.removeEventListener("keydown",m),window.removeEventListener("resize",w),window.removeEventListener("scroll",w,!0)}},[u,l]);function M(){var V;const w=(V=o.current)==null?void 0:V.getBoundingClientRect();w&&(f({x:w.right,y:w.bottom}),d(!0))}function b(){d(!1),f(null)}function _(w){s(w),b()}function y(w){const V=new URLSearchParams(n.search);V.set("toolPanel",w),_(`${n.pathname}?${V.toString()}`)}function I(){if(l){b();return}M()}function S(w){w.key!=="ContextMenu"&&!(w.shiftKey&&w.key==="F10")||(w.preventDefault(),w.stopPropagation(),M())}if(!e)return null;const q=[{key:"assistant",label:i("shell.butlerEntry"),onSelect:()=>{j(w=>w+1),b()}},...t?[{key:"branch",label:i("conversation.branchAction"),onSelect:()=>{t(),b()}}]:[],{key:"files",label:i("shell.filesEntry"),onSelect:()=>{y("files")}},{key:"git",label:i("shell.gitEntry"),onSelect:()=>{y("git")}},{key:"processes",label:i("shell.mobileConversationToolProcessesTab"),onSelect:()=>{y("processes")}}],D=l&&typeof document<"u"?gt.createPortal(r.jsx("div",{ref:c,className:"session-action-menu mobile-conversation-action-menu surface-card",role:"menu","aria-label":i("conversation.moreSessionActions"),style:x??{position:"fixed",top:0,left:0,visibility:"hidden"},onClick:w=>w.stopPropagation(),children:q.map(w=>r.jsx("button",{type:"button",className:"session-action-menu-item mobile-conversation-action-menu-item",role:"menuitem",onClick:w.onSelect,children:w.label},w.key))}),document.body):null;return r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"mobile-conversation-session-actions",children:[r.jsx("button",{ref:o,type:"button",className:"conversation-header-ai-button mobile-conversation-more-button","aria-label":i("conversation.moreSessionActions"),title:i("conversation.moreSessionActions"),"aria-haspopup":"menu","aria-expanded":l,onClick:I,onKeyDown:S,children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(Wo,{})})}),r.jsx(Kn,{session:e,showTrigger:!1,openRequestKey:N})]}),D]})}function Zn({items:e,deletingQueueItemId:t=null,steeringQueueItemId:s=null,canSteer:n=!1,onDelete:o,onSteer:c}){return e.length===0?null:r.jsxs("section",{className:"queued-message-list","aria-label":i("conversation.queueTitle"),children:[r.jsx("div",{className:"queued-message-list__header",children:r.jsx("h2",{children:`${i("conversation.queueTitle")} · ${e.length}`})}),r.jsx("div",{className:"queued-message-list__items",children:e.map((l,d)=>{const u=l.status==="queued"||l.status==="failed",f=n&&typeof c=="function"&&(l.status==="queued"||l.status==="failed");return r.jsxs("article",{className:"queued-message-item",children:[r.jsxs("div",{className:"queued-message-item__main",children:[r.jsx("span",{className:"queued-message-item__order","aria-hidden":"true",children:d+1}),r.jsx("p",{className:"queued-message-item__content",title:l.content||i("conversation.queueImageOnly"),children:l.content||i("conversation.queueImageOnly")}),r.jsx("span",{className:`queued-message-item__status queued-message-item__status--${l.status}`,children:l.status==="failed"?i("conversation.queueStatusFailed"):i("conversation.queueStatusQueued")}),r.jsxs("div",{className:"queued-message-item__actions",children:[f?r.jsx("button",{type:"button",className:"queued-message-item__action queued-message-item__action--steer",onClick:()=>void c(l.id),disabled:s===l.id,"aria-label":i("conversation.queueSteer"),title:i("conversation.queueSteer"),children:s===l.id?i("conversation.queueSteering"):i("conversation.queueSteer")}):null,u?r.jsx("button",{type:"button",className:"queued-message-item__action queued-message-item__action--delete",onClick:()=>void o(l.id),disabled:t===l.id,"aria-label":i("conversation.queueDelete"),title:i("conversation.queueDelete"),children:t===l.id?"…":"×"}):null]})]}),l.errorDetail?r.jsx("p",{className:"queued-message-item__error",children:l.errorDetail}):null]},l.id)})})]})}function ni(e){const{sending:t,setSending:s,session:n,runtimeHasActiveRun:o,runtimeCanInterrupt:c}=e,l=a.useRef(!1);a.useEffect(()=>{if(!t){l.current=!1;return}if(ri(n,o,c)){l.current=!0;return}l.current&&(l.current=!1,s(!1))},[c,o,t,n,s])}function ri(e,t,s){return t===!0||s===!0||(e==null?void 0:e.runningState)==="stale"||(e==null?void 0:e.runningState)==="unknown"?!0:jn(e)}const oi=30,Jt=80,xt=60,Jn=600,Zs=300*1e3,ii=600,ai=5e3,li=1e4;class ci{constructor(t,s={}){xe(this,"state");xe(this,"listeners",new Set);xe(this,"realtimeClient",null);xe(this,"historyBootstrapFallbackTimer",null);xe(this,"historyBootstrapEnvelopeReceived",!1);xe(this,"markSeenTimer",null);xe(this,"markSeenInFlight",!1);xe(this,"lastMarkSeenRequestAt",0);xe(this,"seenWatermark",null);xe(this,"runtimeRefreshTimer",null);xe(this,"runtimeRefreshMode",null);xe(this,"replaceSnapshotSeedOnBackfill",!1);xe(this,"olderHistoryPrefetchCursor",null);xe(this,"olderHistoryPrefetchPromise",null);xe(this,"prefetchedOlderHistoryPage",null);xe(this,"pendingReplyDebugTraces",[]);xe(this,"hasAuthoritativeBootstrapMessages");xe(this,"subscribe",t=>(this.listeners.add(t),()=>{this.listeners.delete(t)}));xe(this,"getState",()=>this.state);var l;this.sessionId=t,this.options=s;const n=Ws(os(t),Zs);this.hasAuthoritativeBootstrapMessages=(((l=s.bootstrapMessages)==null?void 0:l.length)??0)>0;const o=_t(s.initialSession??null,(n==null?void 0:n.session)??null),c=wt((n==null?void 0:n.messages)??[],this.sessionId,s.bootstrapMessages??[]);this.replaceSnapshotSeedOnBackfill=!this.hasAuthoritativeBootstrapMessages&&((n==null?void 0:n.messages.length)??0)>0&&((n==null?void 0:n.messages.length)??0)<xt&&((n==null?void 0:n.pagesLoaded)??0)<=1,this.state=Vs({session:o,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:c,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=(o==null?void 0:o.lastSeenAt)??null}async initialize(){this.historyBootstrapEnvelopeReceived=!1,this.clearHistoryBootstrapFallbackTimer(),this.clearOlderHistoryPrefetch();const t=this.options.bootstrapMessages??[],s=wt(this.state.messages,this.sessionId,t),n=this.hasAuthoritativeBootstrapMessages;this.patch({messages:s,historyState:fi(this.state.session,n?s.length:0),loadingOlderMessages:!1,olderCursor:n?null:this.state.olderCursor,hasOlderMessages:ht({session:this.state.session,loadedMessageCount:s.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(o){this.handleError(o)}}async reload(){var s,n;this.clearHistoryBootstrapFallbackTimer(),this.historyBootstrapEnvelopeReceived=!1,this.clearOlderHistoryPrefetch(),(s=this.realtimeClient)==null||s.close(),this.realtimeClient=null;const t=Ws(os(this.sessionId),Zs);this.state=Vs({session:_t(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:wt((t==null?void 0:t.messages)??[],this.sessionId,this.options.bootstrapMessages??[]),permissionRequests:(t==null?void 0:t.permissionRequests)??[],queuedMessages:(t==null?void 0:t.queuedMessages)??[],olderCursor:(t==null?void 0:t.olderCursor)??null,hasOlderMessages:(t==null?void 0:t.hasOlderMessages)??!1,lastCursor:(t==null?void 0:t.lastCursor)??null,pagesLoaded:(t==null?void 0:t.pagesLoaded)??0}),this.seenWatermark=((n=this.state.session)==null?void 0:n.lastSeenAt)??null,this.replaceSnapshotSeedOnBackfill=!this.hasAuthoritativeBootstrapMessages&&((t==null?void 0:t.messages.length)??0)>0&&((t==null?void 0:t.messages.length)??0)<xt&&((t==null?void 0:t.pagesLoaded)??0)<=1,this.emit(),await this.initialize()}applyNavigationSession(t){if(!t||t.sessionId!==this.sessionId)return;const s=_t(this.state.session,t);s!==this.state.session&&this.patch({session:s,hasOlderMessages:ht({session:s,loadedMessageCount:this.state.messages.length,olderCursor:this.state.olderCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages})})}async sendMessage(t,s){const n=an();this.beginPendingReplyDebugTrace("send_live",n,t.length);const o=qn(this.sessionId,t,n,(s==null?void 0:s.attachmentMeta)??[],(s==null?void 0:s.attachments)??[],ui(this.state.messages,this.state.session));this.patch({messages:qo(this.state.messages,o),session:Je(this.state.session,"running"),runtimeHasActiveRun:ln(this.state.session,this.state.capabilities)?!0:this.state.runtimeHasActiveRun,runtimeCanInterrupt:cn(this.state.session,this.state.capabilities)?!0:this.state.runtimeCanInterrupt});try{const c=await this.sendMessageWithFallback(t,n,s);this.markPendingReplyDebugTraceResponseReady(n,{returnedMessageId:c.message.messageId,returnedProviderSessionId:c.message.providerSessionId}),this.patch({messages:$s(this.state.messages,this.sessionId,c.message,n)})}catch(c){throw this.failPendingReplyDebugTrace(n,c),this.patch({messages:us(this.state.messages,n),session:Je(this.state.session,"failed"),runtimeHasActiveRun:!1,runtimeCanInterrupt:!1}),c}}async retryMessage(t){const s=this.state.messages.find(n=>n.clientRequestId===t);if(s){this.patch({messages:this.state.messages.map(n=>n.clientRequestId===t?{...n,deliveryState:"sending"}:n),runtimeHasActiveRun:ln(this.state.session,this.state.capabilities)?!0:this.state.runtimeHasActiveRun,runtimeCanInterrupt:cn(this.state.session,this.state.capabilities)?!0:this.state.runtimeCanInterrupt}),this.beginPendingReplyDebugTrace("retry_live",t,s.content.length);try{const n=await this.sendMessageWithFallback(s.content,t,{attachments:s.attachmentPayloads??[],attachmentMeta:s.attachments});this.markPendingReplyDebugTraceResponseReady(t,{returnedMessageId:n.message.messageId,returnedProviderSessionId:n.message.providerSessionId}),this.patch({messages:$s(this.state.messages,this.sessionId,n.message,t)})}catch(n){throw this.failPendingReplyDebugTrace(t,n),this.patch({messages:us(this.state.messages,t),session:Je(this.state.session,"failed")}),n}}}async enqueueMessage(t,s){const n=an();try{const o=await $r(this.sessionId,{content:t,clientRequestId:n,model:(s==null?void 0:s.model)??null,reasoningLevel:(s==null?void 0:s.reasoningLevel)??null,permissionMode:ct(),attachments:(s==null?void 0:s.attachments)??[],providerConfigMode:s==null?void 0:s.providerConfigMode,providerPresetId:(s==null?void 0:s.providerPresetId)??null});this.patch({queuedMessages:Ri(this.state.queuedMessages,o)}),await this.refreshQueue()}catch(o){throw o}}async deleteQueuedMessage(t){await Xr(this.sessionId,t),await this.refreshQueue()}async steerQueuedMessage(t){await Gr(this.sessionId,t),await this.refreshRuntimeSnapshot("queue_steer")}async interrupt(){await Yr(this.sessionId),this.patch({session:Je(this.state.session,"interrupted"),runtimeHasActiveRun:!1,runtimeCanInterrupt:!1,interruptSource:"user",errorCode:null,errorDetail:null})}async replyPermissionRequest(t,s){if(!(this.state.permissionRequests.find(c=>c.id===t)??null))return;const o=await zr(this.sessionId,t,s);this.patch({permissionRequests:is(this.state.permissionRequests,o)})}reconnect(){var t;(t=this.realtimeClient)==null||t.reconnectNow()}async loadOlderMessages(){var t;if(!(this.state.historyState!=="ready"||this.state.loadingOlderMessages||!this.state.olderCursor)){this.patch({loadingOlderMessages:!0,errorCode:null,errorDetail:null});try{const 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,Jt)))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=Xt.getState().session)==null?void 0:s.accessToken)){Xt.clear();return}this.realtimeClient=new Uo({sessionId:this.sessionId,cursor:this.state.lastCursor,limit:xt,onSubscribed:()=>{pe("session_send.realtime_subscribed",{sessionId:this.sessionId,lastCursor:this.state.lastCursor}),this.patch({connectionState:"connected",hasOlderMessages:ht({session:this.state.session,loadedMessageCount:this.state.messages.length,olderCursor:this.state.olderCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages})}),this.scheduleHistoryBootstrapFallback()},onConnectionChange:n=>{var c;const o=this.state.connectionState;if(this.patch({connectionState:n,session:n==="reconnecting"&&Qe((c=this.state.session)==null?void 0:c.runningState)?Je(this.state.session,"reconnecting"):this.state.session}),n==="connected"){this.clearRuntimeRefreshTimer("poll"),o!=="closed"&&o!=="connected"&&this.patch({errorCode:null,errorDetail:null});return}this.scheduleRuntimeRefresh("poll","connection_state_change")},onEnvelope:n=>{var d,u;this.historyBootstrapEnvelopeReceived=!0,this.clearHistoryBootstrapFallbackTimer();const o=n.type==="session.backfill"&&this.replaceSnapshotSeedOnBackfill;Lt("envelope.received",{sessionId:this.sessionId,type:n.type,cursor:n.cursor,olderCursor:n.olderCursor??null,incomingMessages:Mt(n.messages),currentMessages:Mt(this.state.messages)});const{messages:c,replacedSnapshotSeed:l}=this.mergeHistoryMessages(n.messages,o,n.type==="session.backfill"?"realtime_backfill":"realtime_delta");Lt("envelope.merged",{sessionId:this.sessionId,type:n.type,replacedSnapshotSeed:l,mergedMessages:Mt(c)}),this.patch({messages:c,lastCursor:n.cursor,historyState:"ready",olderCursor:n.type==="session.backfill"&&!l&&this.state.pagesLoaded>1?this.state.olderCursor:n.olderCursor??this.state.olderCursor,hasOlderMessages:n.type==="session.backfill"?!l&&this.state.pagesLoaded>1?this.state.hasOlderMessages:!!n.olderCursor:ht({session:this.state.session,loadedMessageCount:c.length,olderCursor:this.state.olderCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages}),pagesLoaded:n.type==="session.backfill"?!l&&this.state.pagesLoaded>1?this.state.pagesLoaded:Math.max(this.state.pagesLoaded,c.length>0?1:0):this.state.pagesLoaded,session:Je(this.state.session,sn(n.type,(d=this.state.session)==null?void 0:d.runningState))}),(u=this.realtimeClient)==null||u.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:()=>{Xt.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)}),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,"permissionRequests")||Object.prototype.hasOwnProperty.call(s,"queuedMessages"))&&this.persistSnapshot(),this.emit()}mergeHistoryMessages(t,s,n){const o=s&&this.replaceSnapshotSeedOnBackfill&&hi(this.state.messages,t),c=o?this.state.messages.filter(d=>d.deliveryState!=="sent"):this.state.messages,l=wt(c,this.sessionId,t);return this.logCodexMergeDebug(n,this.state.messages,t,l,{replacedSnapshotSeedAttempted:s,replacedSnapshotSeed:o,baseMessageCount:c.length}),o&&(this.replaceSnapshotSeedOnBackfill=!1),{messages:l,replacedSnapshotSeed:o}}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(ii,s);this.markSeenTimer=window.setTimeout(()=>{this.markSeenTimer=null;const o=this.getTargetSeenAt();o!==null&&(pe("session_seen.start",{sessionId:this.sessionId,targetSeenAt:o,seenWatermark:this.seenWatermark}),this.markSeenInFlight=!0,this.lastMarkSeenRequestAt=Date.now(),Qr(this.sessionId).then(()=>{var c,l;this.bumpSeenWatermark(o),this.patch({session:Js(this.state.session,o)}),(l=(c=this.options).onSeen)==null||l.call(c,this.sessionId,o),pe("session_seen.end",{sessionId:this.sessionId,seenWatermark:this.seenWatermark})}).catch(()=>{pe("session_seen.error",{sessionId:this.sessionId,targetSeenAt:o})}).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(Jn,Math.max(xt,this.state.messages.length,oi)),s=await ls(this.sessionId,null,t,"backward");if(this.historyBootstrapEnvelopeReceived)return;this.historyBootstrapEnvelopeReceived=!0;const{messages:n,replacedSnapshotSeed:o}=this.mergeHistoryMessages(s.messages,this.replaceSnapshotSeedOnBackfill,"http_bootstrap_fallback");this.patch({messages:n,historyState:"ready",olderCursor:!o&&this.state.pagesLoaded>1?this.state.olderCursor:s.nextCursor,hasOlderMessages:!o&&this.state.pagesLoaded>1?this.state.hasOlderMessages:ht({session:this.state.session,loadedMessageCount:n.length,olderCursor:s.nextCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages}),lastCursor:s.cursor??this.state.lastCursor,pagesLoaded:!o&&this.state.pagesLoaded>1?this.state.pagesLoaded:n.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}),pe("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 o;if(((o=this.prefetchedOlderHistoryPage)==null?void 0:o.requestedCursor)===t)return this.prefetchedOlderHistoryPage.page;if(this.olderHistoryPrefetchPromise&&this.olderHistoryPrefetchCursor===t)return this.olderHistoryPrefetchPromise;this.olderHistoryPrefetchCursor=t,pe("session.history_older.prefetch.start",{sessionId:this.sessionId,requestedCursor:t,reason:s,limit:Jt});const n=ls(this.sessionId,t,Jt,"backward").then(c=>(this.state.olderCursor===t&&(this.prefetchedOlderHistoryPage={requestedCursor:t,page:c}),pe("session.history_older.prefetch.end",{sessionId:this.sessionId,requestedCursor:t,messageCount:c.messages.length,nextCursor:c.nextCursor}),c)).catch(c=>(pe("session.history_older.prefetch.error",{sessionId:this.sessionId,requestedCursor:t,message:c instanceof Error?c.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,pe("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,pe("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,o;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,pe("session_runtime.refresh.schedule",{sessionId:this.sessionId,mode:t,reason:s,connectionState:this.state.connectionState,runningState:((o=this.state.session)==null?void 0:o.runningState)??null}),this.runtimeRefreshTimer=window.setTimeout(()=>{const c=this.runtimeRefreshMode??t;this.runtimeRefreshTimer=null,this.runtimeRefreshMode=null,this.refreshRuntimeState(c,s)},t==="poll"?li:1200))}async refreshRuntimeState(t,s){var n,o,c,l,d;pe("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 u=await Ds(this.sessionId),f=ns(this.state.runtimeHasActiveRun,u.runningState,u.hasActiveRun),x=rs(this.state.runtimeCanInterrupt,u.runningState,f,u.canInterrupt);this.patch({session:en(this.state.session,u),runtimeHasActiveRun:f,runtimeCanInterrupt:x,contextUsage:u.contextUsage,...ts(u,this.state.interruptSource)}),await this.refreshQueue();const p=t==="poll"&&this.state.connectionState!=="connected"&&Qe((o=this.state.session)==null?void 0:o.runningState);pe("session_runtime.refresh.end",{sessionId:this.sessionId,mode:t,reason:s,connectionState:this.state.connectionState,runningState:((c=this.state.session)==null?void 0:c.runningState)??null,continuePolling:p}),p&&this.scheduleRuntimeRefresh("poll","connection_poll")}catch(u){pe("session_runtime.refresh.error",{sessionId:this.sessionId,mode:t,reason:s,connectionState:this.state.connectionState,runningState:((l=this.state.session)==null?void 0:l.runningState)??null,message:u instanceof Error?u.message:"unknown"}),t==="poll"&&this.state.connectionState!=="connected"&&Qe((d=this.state.session)==null?void 0:d.runningState)&&this.scheduleRuntimeRefresh("poll","connection_poll_retry")}}async refreshSessionMetadata(){const t=[];this.state.session===null&&t.push(Tn(this.sessionId).then(s=>{this.patch({session:_t(s,this.state.session)})}).catch(()=>{})),tn(this.state.capabilities)&&t.push(Kr(this.sessionId).then(s=>{this.patch({capabilities:s})}).catch(()=>{})),t.length!==0&&await Promise.allSettled(t)}async refreshPermissionRequests(){try{const t=await Zr(this.sessionId);this.patch({permissionRequests:t.items})}catch{return}}shouldRefreshSessionDetail(){return this.state.session===null||tn(this.state.capabilities)||this.state.session.runningState===null}shouldRefreshRuntimeSnapshot(){return this.state.contextUsage===null||yi(this.state.session,this.state.runtimeHasActiveRun,this.state.runtimeCanInterrupt)}async refreshRuntimeSnapshot(t){pe("session_runtime.snapshot.start",{sessionId:this.sessionId,reason:t});try{const s=await Ds(this.sessionId),n=ns(this.state.runtimeHasActiveRun,s.runningState,s.hasActiveRun),o=rs(this.state.runtimeCanInterrupt,s.runningState,n,s.canInterrupt);this.patch({session:en(this.state.session,s),runtimeHasActiveRun:n,runtimeCanInterrupt:o,contextUsage:s.contextUsage,...ts(s,this.state.interruptSource)}),await this.refreshQueue(),pe("session_runtime.snapshot.end",{sessionId:this.sessionId,reason:t,hasContextUsage:s.contextUsage!==null})}catch(s){pe("session_runtime.snapshot.error",{sessionId:this.sessionId,reason:t,message:s instanceof Error?s.message:"unknown"})}}async refreshQueue(){try{const t=await Jr(this.sessionId);this.patch({queuedMessages:t.items})}catch{return}}async sendMessageWithFallback(t,s,n){var o;try{return await vs(this.sessionId,{content:t,clientRequestId:s,model:(n==null?void 0:n.model)??null,reasoningLevel:(n==null?void 0:n.reasoningLevel)??null,permissionMode:ct(),attachments:(n==null?void 0:n.attachments)??[],providerConfigMode:n==null?void 0:n.providerConfigMode,providerPresetId:(n==null?void 0:n.providerPresetId)??null})}catch(c){if(!(c instanceof Or)||c.status!==404&&c.status!==405||(((o=n==null?void 0:n.attachments)==null?void 0:o.length)??0)>0)throw c;return pe("session_send.live_fallback",{sessionId:this.sessionId,clientRequestId:s,reason:c.message}),eo(this.sessionId,{content:t,clientRequestId:s,permissionMode:ct()})}}handleRuntimeStatus(t){var n;const s=es((n=this.state.session)==null?void 0:n.runningState,t.status);this.patch({session:Je(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}),kt(s)&&(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=ns(this.state.runtimeHasActiveRun,t.runningState,t.hasActiveRun),n=rs(this.state.runtimeCanInterrupt,t.runningState,s,t.canInterrupt);if(this.patch({session:vi(this.state.session,t),runtimeHasActiveRun:s,runtimeCanInterrupt:n,...ts(t,this.state.interruptSource)}),kt(t.runningState)){this.clearRuntimeRefreshTimer(),this.refreshQueue();return}(t.runningState==="stale"||t.runningState==="unknown")&&this.scheduleRuntimeRefresh("tail","activity_watchdog")}handleRuntimeMessage(t){var n;t.message.role==="assistant"&&this.completePendingReplyDebugTrace(t),Lt("runtime_message.received",{sessionId:this.sessionId,source:t.source,message:er(t.message),currentMessages:Mt(this.state.messages)});const s=wt(this.state.messages,this.sessionId,[t.message]);Lt("runtime_message.merged",{sessionId:this.sessionId,source:t.source,mergedMessages:Mt(s)}),this.logCodexMergeDebug("runtime_message",this.state.messages,[t.message],s,{runtimeSource:t.source}),this.patch({messages:s,historyState:"ready",hasOlderMessages:ht({session:this.state.session,loadedMessageCount:s.length,olderCursor:this.state.olderCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages}),session:Je(this.state.session,sn("session.delta",(n=this.state.session)==null?void 0:n.runningState))}),this.scheduleMarkSeen(),this.state.queuedMessages.length>0&&this.refreshQueue()}handleRuntimeError(t){var n;const s=es((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:Je(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=es((n=this.state.session)==null?void 0:n.runningState,"interrupted");this.completePendingReplyDebugTraceWithoutAssistant("session_send.client_interrupted",{detail:t.detail}),this.clearRuntimeRefreshTimer(),this.patch({session:Je(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:is(this.state.permissionRequests,t.request)})}handlePermissionRequestResolved(t){this.patch({permissionRequests:is(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,ai-(Date.now()-this.lastMarkSeenRequestAt))}applySeenWatermark(t){return!t||!this.seenWatermark?t:Js(t,this.seenWatermark)}emit(){for(const t of this.listeners)t()}persistSnapshot(){So(os(this.sessionId),{session:this.state.session,capabilities:this.state.capabilities,runtimeHasActiveRun:this.state.runtimeHasActiveRun,runtimeCanInterrupt:this.state.runtimeCanInterrupt,contextUsage:this.state.contextUsage,messages:Pi(this.state.messages),permissionRequests:this.state.permissionRequests,queuedMessages:this.state.queuedMessages,olderCursor:this.state.olderCursor,hasOlderMessages:this.state.hasOlderMessages,lastCursor:this.state.lastCursor,pagesLoaded:this.state.pagesLoaded,interruptSource:this.state.interruptSource})}beginPendingReplyDebugTrace(t,s,n){const o={mode:t,clientRequestId:s,startedAtMs:performance.now(),responseReadyAtMs:null,contentLength:n};this.pendingReplyDebugTraces.push(o),pe(`session_send.${t}.client_start`,{sessionId:this.sessionId,clientRequestId:s,contentLength:n})}markPendingReplyDebugTraceResponseReady(t,s={}){const n=this.pendingReplyDebugTraces.find(o=>o.clientRequestId===t);!n||n.responseReadyAtMs!==null||(n.responseReadyAtMs=performance.now(),pe(`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(o=>o.clientRequestId===t);n&&(pe(`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();pe(`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&&(pe(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,o,c={}){const l=n.filter(wi);if(l.length===0)return;const d=rn(s),u=rn(o);Mo("session.messages.merge",{sessionId:this.sessionId,source:t,beforeCount:s.length,incomingCount:n.length,afterCount:o.length,incoming:l.slice(0,5).map(Mi),beforeDuplicateGroupCount:d.length,afterDuplicateGroupCount:u.length,afterDuplicateGroups:u.slice(0,3),...c})}}function er(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:di(e.content)}}function Mt(e){return e.map(t=>er(t))}function di(e){const t=e.replace(/\s+/g," ").trim();return t.length>80?`${t.slice(0,80)}...`:t}function Fe(e,t){const[s,n]=a.useState(()=>t(e.getState()));return a.useEffect(()=>(n(t(e.getState())),e.subscribe(()=>{n(t(e.getState()))})),[t,e]),s}function tr(e){const t=e==null?void 0:e.messageCount;return typeof t=="number"&&Number.isFinite(t)?t:null}function ui(e,t){const s=Vo(e),n=tr(t);return n===null?s:Math.max(s,n+1)}function hi(e,t){const s=mi(t);if(!s)return!1;const n=pi(e);return n?Rs(s.sequence,s.timestamp,n.sequence,n.timestamp)>=0:!0}function mi(e){let t=null;for(const s of e)(!t||Rs(s.sequence,s.timestamp,t.sequence,t.timestamp)>0)&&(t=s);return t}function pi(e){let t=null;for(const s of e)s.deliveryState==="sent"&&(!t||Rs(s.sequence,s.timestamp,t.sequence,t.timestamp)>0)&&(t=s);return t}function Rs(e,t,s,n){return e!==s?e-s:t.localeCompare(n)}function fi(e,t){return t>0?"ready":"loading"}function gi(e,t){const s=tr(e);return s!==null?s>t:t>=xt}function ht(e){return e.olderCursor?!0:e.pagesLoaded>1?e.currentHasOlderMessages:gi(e.session,e.loadedMessageCount)}function Je(e,t){return e&&{...e,runningState:t,activityState:nr(e,t,e.completedAt??null,Qe(t))}}function Js(e,t){return!e||e.lastSeenAt&&e.lastSeenAt>=t?e:{...e,lastSeenAt:t,activityState:e.activityState==="completed_unread"?"idle":e.activityState}}function en(e,t){return sr(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 vi(e,t){return sr(e,t)}function sr(e,t){if(!e)return e;const s=bi(t.activityResolutionSource),n=kt(t.runningState)?ss(e.completedAt,t.updatedAt):null,o=t.runningState==="completed"||t.runningState==="interrupted"||t.runningState==="failed"?ss(e.lastEventAt,t.updatedAt):t.updatedAt;return{...e,runningState:t.runningState,activitySource:s,activityResolutionSource:t.activityResolutionSource,activityConfidence:t.activityConfidence,runId:t.runId,lastEventAt:o,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:ss(e.updatedAt,t.updatedAt)??t.updatedAt,activityState:nr(e,t.runningState,n,t.hasActiveRun)}}function nr(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 kt(e){return e==="completed"||e==="interrupted"||e==="failed"}function tn(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 sn(e,t){return e==="session.backfill"?t??"idle":t==="completed"||t==="interrupted"||t==="failed"?t:"running"}function es(e,t){return kt(e)?e:t}function ts(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 bi(e){return e==="authoritative_runtime"||e==="authoritative_provider_event"?"runtime":e==="inferred_log"?"inferred":"none"}function wi(e){return e.provider==="codex"&&(e.role==="assistant"||e.role==="tool")}function Si(e){return e.rawRef.startsWith("codex://")&&e.deliveryState==="sent"&&(e.role==="assistant"||e.role==="tool")}function Mi(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:rr(e.content,e.kind??"text")}}function nn(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:rr(e.content,e.kind)}}function rn(e){const t=new Map;for(const n of e){if(!Si(n))continue;const o=Ii(n),c=t.get(o);if(c){c.push(n);continue}t.set(o,[n])}const s=[];for(const[n,o]of t.entries()){const c=[...o].sort((d,u)=>d.sequence!==u.sequence?d.sequence-u.sequence:d.timestamp.localeCompare(u.timestamp));let l=[];for(const d of c){const u=l.at(-1)??null;if(!u||xi(u,d)){l.push(d);continue}l.length>1&&s.push({signature:n,messages:l.map(nn)}),l=[d]}l.length>1&&s.push({signature:n,messages:l.map(nn)})}return s}function Ii(e){var o,c;if(e.kind==="tool_call"||e.kind==="tool_result")return[e.role,e.kind,((o=e.toolCall)==null?void 0:o.callId)??"",((c=e.toolCall)==null?void 0:c.name)??""].join(":");const t=Un(e.content),s=ms(t.text),n=t.inlineImages.map(l=>l.url).join("|");return[e.role,e.kind,s,n].join(":")}function xi(e,t){const s=on(e.timestamp),n=on(t.timestamp);return Math.abs(s-n)<=120*1e3&&Math.abs(e.sequence-t.sequence)<=8}function rr(e,t){return t==="text"||t==="thinking"?ms(Un(e).text).slice(0,160):ms(e).slice(0,160)}function ms(e){return e.replace(/\r\n/g,`
4
- `).trimEnd()}function on(e){const t=Date.parse(e);return Number.isFinite(t)?t:0}function ss(e,t){return e?t?e>=t?e:t:e:t??null}function an(){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,o=>o.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 or(e,t){return t&&(!e||e.provider===t.provider)?t:null}function ln(e,t){const s=or(e,t);return s?!!s.canSendMessage:e?En(e.provider):!1}function cn(e,t){const s=or(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 yi(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 ns(e,t,s){return s?!0:e===!0&&Qe(t)}function rs(e,t,s,n){return n?!0:e===!0&&(s||Qe(t))}function os(e){return`session-runtime.snapshot.${e}`}function Pi(e){return e.filter(t=>t.deliveryState==="sent").slice(-Jn)}function Ri(e,t){const s=e.filter(n=>n.id!==t.id);return s.push(t),s.sort((n,o)=>n.orderIndex-o.orderIndex),s}function is(e,t){const s=e.filter(n=>n.id!==t.id);return s.push(t),s.sort((n,o)=>n.status!==o.status?n.status==="pending"?-1:1:o.createdAt.localeCompare(n.createdAt)),s}function _t(e,t){if(!e)return t;if(!t||dn(e,t)||un(e,t))return e;if(dn(t,e)||un(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 dn(e,t){return hn(e)&&!hn(t)&&e.lastEventAt===t.lastEventAt&&e.lastMessageAt===t.lastMessageAt&&e.completedAt===t.completedAt}function un(e,t){if(!mn(e)||mn(t))return!1;const s=e.completedAt??e.lastEventAt??null;return s?(!t.lastEventAt||t.lastEventAt<=s)&&(!t.completedAt||t.completedAt<=s):!1}function hn(e){return e.activityState==="running"||Qe(e.runningState)}function mn(e){return kt(e.runningState)}const Ci="workbench:focus-composer",ki=15e3,Ti=320;function ir(){typeof window>"u"||window.dispatchEvent(new CustomEvent(Ci))}function ar(e){var ve,ee,_e;const t=a.useRef(null),s=a.useRef(null),[n,o]=a.useState(!1),[c,l]=a.useState(null),[d,u]=a.useState(null),[f,x]=a.useState(null),[p,N]=a.useState(null),j=rt(),{showToast:M}=j,b=j.dismissToast??(()=>{}),_=to(P=>P.notificationPreferences.notifyOnPermissionRequest),y=Tt(),I=bs(),S=a.useRef(null),q=a.useRef(null),D=a.useRef(null),w=a.useRef(((ve=e.externalSession)==null?void 0:ve.runningState)??null),V=a.useRef(new Set);(!t.current||s.current!==e.sessionId)&&((ee=t.current)==null||ee.destroy(),t.current=new ci(e.sessionId,{initialSession:e.externalSession,bootstrapMessages:e.bootstrapMessages??[],onSeen:e.onSeen}),s.current=e.sessionId);const m=t.current,v=Fe(m,P=>P.session),L=Fe(m,P=>P.capabilities),B=Fe(m,P=>P.runtimeHasActiveRun),z=Fe(m,P=>P.runtimeCanInterrupt),X=Fe(m,P=>P.messages),ce=Fe(m,P=>P.permissionRequests),G=Fe(m,P=>P.queuedMessages),de=Fe(m,P=>P.contextUsage),A=Fe(m,P=>P.historyState),g=Fe(m,P=>P.errorCode),H=Fe(m,P=>P.errorDetail),Y=Fe(m,P=>P.interruptSource),re=Fe(m,P=>P.loadingOlderMessages),U=Fe(m,P=>P.hasOlderMessages),le=Fe(m,P=>P.connectionState),E=jn(v),W=n&&!p,Q=E||B===!0||W?!0:B,ue=z===!0||W?!0:z,R=E||W,K=(v==null?void 0:v.provider)===(L==null?void 0:L.provider)&&so(L),Se=G.some(P=>P.status==="queued"||P.status==="dispatching"),Re=v??e.externalSession??null,Ce=e.enableForkTimelineSanitizer===!1?X:Oi(Re,X),Ne=Ai({sessionId:e.sessionId,provider:(v==null?void 0:v.provider)??null,runningState:(v==null?void 0:v.runningState)??null,activityState:(v==null?void 0:v.activityState)??null,runtimeHasActiveRun:B,messages:Ce}),ke=e.enableThinkingPlaceholder===!1||!Ne?null:i("conversation.runtimeThinkingPlaceholder",{provider:i("conversation.providerCodex")});ni({sending:n,setSending:o,session:v,runtimeHasActiveRun:B,runtimeCanInterrupt:z}),a.useEffect(()=>{m.applyNavigationSession(e.externalSession)},[e.externalSession,m]),a.useEffect(()=>(m.initialize(),()=>{m.destroy(),t.current===m&&(t.current=null)}),[m]),a.useEffect(()=>{N(null),V.current.clear()},[e.sessionId]),a.useEffect(()=>{if(e.onBindSessionWorkspace)return e.onBindSessionWorkspace(e.sessionId,(v==null?void 0:v.workspaceId)??null),()=>{var P;(P=e.onBindSessionWorkspace)==null||P.call(e,e.sessionId,null)}},[e.onBindSessionWorkspace,e.sessionId,v==null?void 0:v.workspaceId]),a.useEffect(()=>{if(e.enableCompletionHaptics===!1)return;const P=w.current,C=(v==null?void 0:v.runningState)??null;(P==="starting"||P==="running"||P==="reconnecting")&&C==="completed"&&I.trigger("success"),w.current=C},[I,e.enableCompletionHaptics,v==null?void 0:v.runningState]),a.useEffect(()=>{var ye;if((e.permissionRequestNotificationMode??"always")==="current_only"&&!e.isCurrent)return;const C=ce.filter(fe=>fe.status==="pending"),he=(v==null?void 0:v.workspaceId)??((ye=e.externalSession)==null?void 0:ye.workspaceId)??null;for(const fe of C)V.current.has(fe.id)||(V.current.add(fe.id),_&&(M({id:`${e.permissionToastIdPrefix??"permission-request"}-${fe.id}`,title:i("conversation.permissionRequestToastTitle"),description:fe.title,tone:"warning",durationMs:8e3,action:he&&e.onNavigateToSession?{label:i("shell.contextOpenSession"),onClick:()=>{var Xe;(Xe=e.onNavigateToSession)==null||Xe.call(e,he,e.sessionId)}}:void 0}),y.bridge.showNotification(i("conversation.permissionRequestToastTitle"),fe.title)))},[(_e=e.externalSession)==null?void 0:_e.workspaceId,e.isCurrent,e.onNavigateToSession,e.permissionRequestNotificationMode,e.permissionToastIdPrefix,e.sessionId,_,ce,y.bridge,v==null?void 0:v.workspaceId,M]),a.useEffect(()=>{if(e.enableRuntimeErrorHandling!==!1)return()=>{D.current!==null&&(window.clearTimeout(D.current),D.current=null)}},[e.enableRuntimeErrorHandling]),a.useEffect(()=>{var P;e.enableRuntimeErrorHandling!==!1&&(g!=="SESSION_NOT_FOUND"&&g!=="WORKSPACE_NOT_FOUND"||(b("conversation-runtime-error"),(P=e.onResolveMissingSession)==null||P.call(e)))},[b,e.enableRuntimeErrorHandling,e.onResolveMissingSession,g]),a.useEffect(()=>{if(e.enableRuntimeErrorHandling===!1)return;if(g==="SESSION_NOT_FOUND"||g==="WORKSPACE_NOT_FOUND"){D.current!==null&&(window.clearTimeout(D.current),D.current=null),q.current=null,S.current=null,b("conversation-runtime-error");return}if(!g||!H){D.current!==null&&(window.clearTimeout(D.current),D.current=null),q.current=null,S.current=null,b("conversation-runtime-error");return}const P=`${g}:${H}`;if(!(S.current===P||q.current===P)){if(D.current!==null&&(window.clearTimeout(D.current),D.current=null),ji((v==null?void 0:v.provider)??null,g,H)){q.current=P,D.current=window.setTimeout(()=>{q.current=null,D.current=null,S.current=P,M({id:"conversation-runtime-error",title:i("conversation.runtimeErrorTitle"),description:H,tone:"error",durationMs:null})},ki);return}q.current=null,S.current=P,M({id:"conversation-runtime-error",title:i("conversation.runtimeErrorTitle"),description:H,tone:"error",durationMs:null})}},[b,e.enableRuntimeErrorHandling,g,H,v==null?void 0:v.provider,M]);const F=a.useCallback(async(P,C)=>{var fe,Xe,te,Ee,se,De,me;const he=p;if(!he){await m.sendMessage(P,{model:C==null?void 0:C.model,reasoningLevel:C==null?void 0:C.reasoningLevel,providerConfigMode:C==null?void 0:C.providerConfigMode,providerPresetId:(C==null?void 0:C.providerPresetId)??null,attachments:C==null?void 0:C.attachments,attachmentMeta:C==null?void 0:C.attachmentMeta}),(fe=e.onRequestNavigationRefresh)==null||fe.call(e);return}let ye=null;try{ye=await Cn(e.sessionId,{sourceType:"message",sourceMessageId:he.sourceMessageId,sourceMessageSnapshot:he.sourceMessageSnapshot,strategy:"auto",targetProvider:he.targetProvider,providerConfigMode:he.targetProviderConfigMode??(C==null?void 0:C.providerConfigMode),providerPresetId:he.targetProviderPresetId??(C==null?void 0:C.providerPresetId)??null}),(Xe=e.onUpsertNavigationSession)==null||Xe.call(e,ye),await vs(ye.sessionId,{content:P,clientRequestId:Ei(),model:he.targetModel,reasoningLevel:(C==null?void 0:C.reasoningLevel)??null,permissionMode:ct(),attachments:(C==null?void 0:C.attachments)??[],providerConfigMode:he.targetProviderConfigMode??(C==null?void 0:C.providerConfigMode),providerPresetId:he.targetProviderPresetId??(C==null?void 0:C.providerPresetId)??null}),N(null),(te=e.onRequestNavigationRefresh)==null||te.call(e),(Ee=e.onNavigateToSession)==null||Ee.call(e,ye.workspaceId,ye.sessionId),(se=e.onForkSuccess)==null||se.call(e,ye)}catch(Ge){throw ye&&((De=e.onUpsertNavigationSession)==null||De.call(e,ye),(me=e.onRequestNavigationRefresh)==null||me.call(e)),Ge}},[p,e,m]),O=a.useCallback(async(P,C)=>{o(!0);try{await F(P,C)}finally{o(!1)}},[F]),ie=a.useCallback(async(P,C)=>{o(!0);try{p?await F(P,C):await m.enqueueMessage(P,{model:C==null?void 0:C.model,reasoningLevel:C==null?void 0:C.reasoningLevel,providerConfigMode:C==null?void 0:C.providerConfigMode,providerPresetId:(C==null?void 0:C.providerPresetId)??null,attachments:C==null?void 0:C.attachments,attachmentMeta:C==null?void 0:C.attachmentMeta})}finally{o(!1)}},[p,F,m]),ne=a.useCallback(async(P,C)=>{l(P);try{await m.replyPermissionRequest(P,C)}catch(he){M({title:i("conversation.permissionRequestReplyFailed"),description:he instanceof Error?he.message:void 0,tone:"error"})}finally{l(null)}},[M,m]),Te=a.useCallback(async P=>{u(P);try{await m.deleteQueuedMessage(P)}finally{u(null)}},[m]),Le=a.useCallback(async P=>{var C;x(P);try{await m.steerQueuedMessage(P),(C=e.onRequestNavigationRefresh)==null||C.call(e)}finally{x(null)}},[e.onRequestNavigationRefresh,m]),J=a.useCallback(async()=>{var P;await m.interrupt(),(P=e.onRequestNavigationRefresh)==null||P.call(e)},[e.onRequestNavigationRefresh,m]);return{session:Re,capabilities:L,runtimeHasActiveRun:B,runtimeCanInterrupt:z,messages:X,timelineMessages:Ce,permissionRequests:ce,queuedMessages:G,contextUsage:de,historyState:A,runtimeErrorCode:g,runtimeErrorDetail:H,runtimeInterruptSource:Y,loadingOlderMessages:re,hasOlderMessages:U,connectionState:le,sending:n,replyingPermissionRequestId:c,deletingQueueItemId:d,steeringQueueItemId:f,forkDraft:p,setForkDraft:N,composerHasActiveRun:Q,composerCanInterrupt:ue,composerIsRunning:R,canSteerQueuedMessage:K,hasPendingQueuedMessages:Se,runtimeThinkingPlaceholder:ke,reconnect:m.reconnect.bind(m),loadOlderMessages:m.loadOlderMessages.bind(m),retryMessage:m.retryMessage.bind(m),send:O,queue:ie,interrupt:J,replyPermissionRequest:ne,deleteQueuedMessage:Te,steerQueuedMessage:Le}}function Ei(){const e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}function ji(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 Ai(e){const t=Ni(e),[s,n]=a.useState(t==="show"),o=a.useRef(null);return a.useEffect(()=>{o.current!==null&&(window.clearTimeout(o.current),o.current=null),n(t==="show")},[e.sessionId]),a.useEffect(()=>{if(t==="show"){o.current!==null&&(window.clearTimeout(o.current),o.current=null),n(!0);return}if(t==="hide_immediately"){o.current!==null&&(window.clearTimeout(o.current),o.current=null),n(!1);return}!s||o.current!==null||(o.current=window.setTimeout(()=>{o.current=null,n(!1)},Ti))},[t,s]),a.useEffect(()=>()=>{o.current!==null&&window.clearTimeout(o.current)},[]),s}function Ni(e){const{provider:t,runningState:s,activityState:n,runtimeHasActiveRun:o,messages:c}=e;if(t!=="codex")return"hide_immediately";const l=Di(c);return l<0||_i(c,l)?"hide_immediately":Li(s,n,o)?"show":"hide_deferred"}function Li(e,t,s){return s===!0||t==="running"||e==="starting"||e==="running"||e==="reconnecting"}function _i(e,t){return e.slice(t+1).some(s=>s.role==="assistant"&&(s.kind==="text"||s.kind==="thinking"))}function Di(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}function Oi(e,t){var o;if(!e||e.forkSourceType!=="message"||typeof e.inheritedPrefixMessageCount!="number"||e.inheritedPrefixMessageCount<0)return t;const s=((o=e.createdAt)==null?void 0:o.trim())||"";if(s.length===0)return t;const n=Math.max(0,e.inheritedPrefixMessageCount);return t.filter(c=>c.sequence<=n?!0:c.timestamp>=s)}const Hi=1.5,Fi=24,Bi=72,Wi=296,qi=16,pn={2:496,3:408,4:344};function lr(e){return pn[e]??pn[4]}function Ui({memberCount:e,currentWidth:t,monitorWidth:s}){if(e<2||t<=0||s<=0)return t;const n=Wi,o=Math.max(0,e-1)*qi,c=Math.max(0,(t-n-o)/e),l=lr(e);if(c>=l)return t;const d=n+o+e*l,u=Math.min(t*Hi,Math.max(t,s-Bi)),f=Math.min(Math.max(t,d),u);return f<=t+Fi?t:f}const Vi=240,fn=920,gn=760,Cs=360,ks=320,Be=16,vn=428,$i=404,tt=12;function Rt(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),o=Math.min((t==null?void 0:t.minWidth)??Cs,s),c=Math.min((t==null?void 0:t.minHeight)??ks,n),l=Math.max(o,s),d=Math.max(c,n),u=Math.min(Math.max(e.width,o),l),f=Math.min(Math.max(e.height,c),d),x=Math.min(Math.max(e.x,Be),Math.max(Be,window.innerWidth-u-Be)),p=Math.min(Math.max(e.y,Be),Math.max(Be,window.innerHeight-f-Be));return{x,y:p,width:u,height:f}}function Xi(e){if(typeof window>"u")return{x:Be,y:Be,width:fn,height:gn};const t=Math.min(fn,Math.max(Cs,window.innerWidth-Be*2)),s=Math.min(gn,Math.max(ks,window.innerHeight-Be*2));return Rt({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 Gi(e){return!e||e.width<=0||e.height<=0?null:Rt({x:e.left,y:e.top,width:e.width,height:e.height},{minWidth:Math.min(Cs,e.width),minHeight:Math.min(ks,e.height)})}function Yi(e){if(typeof window>"u")return{x:tt,y:tt,width:vn};const t=Math.min(vn,Math.max($i,window.innerWidth-tt*2));return{x:Math.min(Math.max(((e==null?void 0:e.right)??window.innerWidth-tt)-t,tt),Math.max(tt,window.innerWidth-t-tt)),y:Math.max(tt,((e==null?void 0:e.bottom)??tt)+8),width:t}}function zi({groupId:e,currentSessionId:t}){var re,U,le;const s=ut(),n=Tt(),o=An(n),{showToast:c}=rt(),{navigationGroups:l,requestNavigationRefresh:d}=vt(),u=a.useMemo(()=>ws(l),[l]),f=a.useMemo(()=>new Map(u.map(E=>[E.session.sessionId,E])),[u]),x=a.useMemo(()=>Ss(l),[l]),[p,N]=a.useState(null),[j,M]=a.useState(!0),[b,_]=a.useState(null),[y,I]=a.useState(null),[S,q]=a.useState(null),[D,w]=a.useState(null),[V,m]=a.useState(null),[v,L]=a.useState(!1),B=a.useRef(null),z=a.useRef(null);a.useEffect(()=>{let E=!1;async function W(){M(!0),_(null);try{const Q=await no(e);if(E)return;N(Q)}catch(Q){if(E)return;_(Q instanceof Error?Q.message:i("shell.parallelGroupLoadFailed"))}finally{E||M(!1)}}return W(),()=>{E=!0}},[e]),a.useEffect(()=>{const E=xo(e);E&&de(E)},[e]),a.useEffect(()=>()=>{z.current!==null&&window.clearTimeout(z.current)},[]);const X=a.useMemo(()=>p?p.members.slice().sort((E,W)=>E.member.ordinal-W.member.ordinal).map(E=>{const W=f.get(E.session.sessionId),Q=(W==null?void 0:W.session)??E.session;return{session:Q,workspaceId:(W==null?void 0:W.workspace.id)??Ft(Q,E.sessionIsolatedWorkspace),ordinal:E.member.ordinal,memberPrompt:E.member.memberPrompt,model:E.member.model,sessionIsolatedWorkspace:E.sessionIsolatedWorkspace}}):[],[p,f]);a.useEffect(()=>{if(!n.isDesktop||n.ui.osFamily!=="macos"&&n.ui.osFamily!=="windows"||X.length<2)return;const E=`${e}:${X.length}`;if(B.current===E)return;B.current=E;let W=!1;async function Q(){try{const ue=await _s(()=>import("./window-BVUB8gMK.js").then(ne=>ne.w),__vite__mapDeps([0,1])),R=await _s(()=>import("./window-BVUB8gMK.js").then(ne=>ne.d),__vite__mapDeps([0,1])),K=ue.getCurrentWindow(),Se=await K.innerSize(),Re=await K.scaleFactor(),Ce=await ue.currentMonitor();if(W||Re<=0)return;const Ne=Se.width/Re,ke=Se.height/Re,F=Ce?Ce.workArea.size.width/Ce.scaleFactor:Ne*1.5,O=Ui({memberCount:X.length,currentWidth:Ne,monitorWidth:F});if(O<=Ne+24)return;const ie=10;await new Promise(ne=>window.setTimeout(ne,56));for(let ne=1;ne<=ie;ne+=1){if(W)return;const Te=ne/ie,Le=1-Math.pow(1-Te,3),J=Ne+(O-Ne)*Le;await K.setSize(new R.LogicalSize(J,ke)),await new Promise(ve=>window.setTimeout(ve,Vi/ie))}}catch{return}}return Q(),()=>{W=!0}},[e,X.length,n.isDesktop,n.ui.osFamily]);async function ce(E){q(E);try{const W=await oo(E);await d(),N(Q=>Q&&{...Q,members:Q.members.map(ue=>{var R;return((R=ue.sessionIsolatedWorkspace)==null?void 0:R.id)===E?{...ue,sessionIsolatedWorkspace:{...ue.sessionIsolatedWorkspace,workspaceId:W.workspace.id,lifecycleStatus:"promoted",promotedAt:W.record.promotedAt}}:ue})}),c({title:i("shell.parallelWorkspacePromotedBadge"),tone:"success"})}catch(W){c({title:W instanceof Error?W.message:i("shell.parallelGroupLoadFailed"),tone:"error"})}finally{q(null)}}async function G(E){if(D)return;const W=E.trim();if(!W)return;const Q=X.find(R=>R.session.sessionId!==W)??null,ue=(p==null?void 0:p.group.workspaceId)??(Q==null?void 0:Q.workspaceId)??null;w(W);try{await ro(W),ds(W,null),I(R=>R===W?null:R),N(R=>R&&{...R,members:R.members.filter(K=>K.session.sessionId!==W)}),await d(),t===W&&(Q?s($e(Q.workspaceId,Q.session.sessionId)):ue&&s(yt(ue))),c({title:i("shell.deleteSessionSuccess"),tone:"success"})}catch(R){c({title:R instanceof Error?R.message:i("shell.deleteSessionFailed"),tone:"error"})}finally{w(null)}}function de(E){m(E),z.current!==null&&window.clearTimeout(z.current),z.current=window.setTimeout(()=>{m(null),z.current=null},E.totalDurationMs)}if(j&&!p)return r.jsx("main",{className:"workbench-page conversation-page-shell parallel-conversation-page",children:r.jsx("section",{className:"parallel-conversation-empty-state",children:r.jsx("strong",{children:i("shell.parallelCreateSubmitting")})})});if(b&&!p)return r.jsx("main",{className:"workbench-page conversation-page-shell parallel-conversation-page",children:r.jsxs("section",{className:"parallel-conversation-empty-state error",children:[r.jsx("strong",{children:i("shell.parallelGroupLoadFailed")}),r.jsx("p",{children:b})]})});if(X.length===0)return r.jsx("main",{className:"workbench-page conversation-page-shell parallel-conversation-page",children:r.jsx("section",{className:"parallel-conversation-empty-state",children:r.jsx("strong",{children:i("shell.parallelGroupEmpty")})})});const A=((re=x[(p==null?void 0:p.group.workspaceId)??""])==null?void 0:re.displayName)??(p==null?void 0:p.group.workspaceId)??i("common.unknown"),g=X.find(E=>E.session.sessionId===(p==null?void 0:p.group.anchorSessionId))??X[0]??null,H=X.length<4,Y={"--parallel-pane-min-width":`${lr(X.length)}px`,...V?{"--parallel-pane-enter-delay":`${V.paneEnterDelayMs}ms`,"--parallel-pane-enter-duration":`${V.paneEnterDurationMs}ms`,"--parallel-grid-reveal-delay":`${V.gridRevealDelayMs}ms`,"--parallel-grid-reveal-duration":`${V.gridRevealDurationMs}ms`,"--parallel-shell-expand-duration":`${V.shellExpandDurationMs}ms`,"--parallel-pane-stagger-delay":`${V.paneStaggerMs}ms`}:{}};return r.jsxs("main",{className:"workbench-page conversation-page-shell parallel-conversation-page","data-parallel-count":X.length,"data-parallel-entering":V?"true":void 0,style:Y,children:[r.jsx("header",{className:"parallel-conversation-group-header","data-window-drag-handle":"parallel-conversation-group-titlebar","data-tauri-drag-region":o,children:r.jsxs("div",{className:"parallel-conversation-group-titlebar","data-tauri-drag-region":o,children:[r.jsxs("div",{className:"parallel-conversation-group-titlemain","data-tauri-drag-region":o,children:[r.jsx("span",{className:"session-parallel-badge",children:i("shell.parallelGroupBadge")}),r.jsx("strong",{"data-tauri-drag-region":o,children:((U=p==null?void 0:p.group.sharedPrompt)==null?void 0:U.trim())||i("common.unknown")})]}),r.jsx("button",{type:"button",className:"secondary-button parallel-conversation-group-add-button","aria-label":i("shell.parallelAppendAction"),title:i("shell.parallelAppendAction"),"data-window-drag":"ignore",disabled:!H,onClick:()=>{H&&L(!0)},children:r.jsx("span",{"aria-hidden":"true",children:"+"})})]})}),r.jsx("div",{className:"parallel-conversation-grid",children:X.map(E=>{const W=x[E.workspaceId]??Ms({id:E.workspaceId,name:E.session.workspaceId,path:E.session.workspaceId,repoRoot:E.session.workspaceId});return r.jsx(Qi,{entry:E,isCurrent:E.session.sessionId===t,workspaceContext:W,infoOpen:y===E.session.sessionId,promotingWorkspaceId:S,onCloseInfo:()=>{I(null)},onToggleInfo:()=>{I(Q=>Q===E.session.sessionId?null:E.session.sessionId)},onPromoteWorkspace:ce,onRemoveSession:G,removingSessionId:D},E.session.sessionId)})}),r.jsx(cs,{open:v,source:p?{kind:"group",groupId:p.group.id,workspaceId:p.group.workspaceId,workspaceName:A,sharedPrompt:((le=p.group.sharedPrompt)==null?void 0:le.trim())||"",currentMemberCount:X.length,defaultProvider:(g==null?void 0:g.session.provider)??"codex"}:null,onClose:()=>L(!1),onCreated:async E=>{N(E),L(!1),de(Io("append")),await d(),c({title:i("shell.parallelAppendSucceeded"),tone:"success"})}})]})}function Qi({entry:e,isCurrent:t,workspaceContext:s,infoOpen:n,onCloseInfo:o,onToggleInfo:c,onPromoteWorkspace:l,promotingWorkspaceId:d,onRemoveSession:u,removingSessionId:f}){var je,Me,Ye,Et,jt;const x=ut(),p=Tt(),{showToast:N}=rt(),{navigationGroups:j,requestNavigationRefresh:M,selectWorkspace:b,setSessionWorkspace:_,upsertNavigationSession:y,markNavigationSessionSeen:I}=vt(),S=e.session.sessionId,[q,D]=a.useState(!1),[w,V]=a.useState("files"),[m,v]=a.useState(!1),[L,B]=a.useState(null),[z,X]=a.useState(null),ce=a.useRef(null),G=a.useRef(null),de=a.useRef(null),A=a.useRef(null),g=a.useRef(null),H=a.useRef(null),[Y,re]=a.useState(()=>qs(S)),{session:U,capabilities:le,messages:E,timelineMessages:W,permissionRequests:Q,queuedMessages:ue,contextUsage:R,historyState:K,runtimeInterruptSource:Se,loadingOlderMessages:Re,hasOlderMessages:Ce,connectionState:Ne,sending:ke,replyingPermissionRequestId:F,deletingQueueItemId:O,steeringQueueItemId:ie,forkDraft:ne,setForkDraft:Te,composerHasActiveRun:Le,composerCanInterrupt:J,composerIsRunning:ve,canSteerQueuedMessage:ee,hasPendingQueuedMessages:_e,runtimeThinkingPlaceholder:P,reconnect:C,loadOlderMessages:he,retryMessage:ye,send:fe,queue:Xe,interrupt:te,replyPermissionRequest:Ee,deleteQueuedMessage:se,steerQueuedMessage:De}=ar({sessionId:S,externalSession:e.session,onSeen:(T,ae)=>{I(T,ae)},onRequestNavigationRefresh:M,onUpsertNavigationSession:y,onNavigateToSession:(T,ae)=>{b(T),x($e(T,ae))},onBindSessionWorkspace:_,onResolveMissingSession:()=>{M()},permissionRequestNotificationMode:"current_only",permissionToastIdPrefix:"parallel-permission-request",isCurrent:t,enableRuntimeErrorHandling:!0,enableCompletionHaptics:!1,enableThinkingPlaceholder:!0,enableForkTimelineSanitizer:!0}),me=yo((U==null?void 0:U.parallelGroup)??e.session.parallelGroup),Ge=Po({groupId:((je=(U==null?void 0:U.parallelGroup)??e.session.parallelGroup)==null?void 0:je.groupId)??"parallel-group",ordinal:e.ordinal,overrideColor:Y}),Oe=Ro((U==null?void 0:U.parallelGroup)??e.session.parallelGroup),be=(U==null?void 0:U.sessionIsolatedWorkspace)??e.sessionIsolatedWorkspace,Ke=Co(be),ot=((Me=R==null?void 0:R.modelId)==null?void 0:Me.trim())||((Ye=e.model)==null?void 0:Ye.trim())||i("shell.parallelPaneModelFallback"),it=((Et=e.memberPrompt)==null?void 0:Et.trim())||i("shell.parallelPanePromptFallback"),Ze=e.workspaceId,Ie=Nn(U??e.session,be),et=Ie===Ze?(s==null?void 0:s.displayName)??Ze:Ke??it,We=f===S,at=n&&z?{...pt(s)??{},...me??{},...Ge,left:`${z.x}px`,top:`${z.y}px`,width:`${z.width}px`}:void 0,lt=q&&L?{...pt(s)??{},...me??{},...Ge,left:`${L.x}px`,top:`${L.y}px`,width:`${L.width}px`,height:`${L.height}px`}:void 0;a.useEffect(()=>{re(qs(S)),D(!1),v(!1),B(null),X(null),V("files")},[S]),a.useEffect(()=>{if(!n)return;const T=ae=>{var Ue,ze,Ve;const qe=ae.target;qe instanceof HTMLElement&&((Ue=G.current)!=null&&Ue.contains(qe)||(ze=A.current)!=null&&ze.contains(qe)||(Ve=g.current)!=null&&Ve.contains(qe)||o())};return window.addEventListener("pointerdown",T),()=>{window.removeEventListener("pointerdown",T)}},[n,o]),a.useEffect(()=>{if(!n){X(null);return}const T=()=>{var ae;X(Yi(((ae=de.current)==null?void 0:ae.getBoundingClientRect())??null))};return T(),window.addEventListener("resize",T),window.addEventListener("scroll",T,!0),()=>{window.removeEventListener("resize",T),window.removeEventListener("scroll",T,!0)}},[n]),a.useEffect(()=>{if(!q)return;const T=()=>{B(ae=>ae&&Rt(ae))};return window.addEventListener("resize",T),()=>{window.removeEventListener("resize",T)}},[q]);async function h(){if(Ie===Ze&&b(Ze),p.isDesktop&&p.bridge.supported){const T=await Ao(p,{workspaceId:Ie,workspaceName:et,focusOwner:"terminal-page"});T.ok||N({title:T.detail??i("terminalManager.openExternalFailed"),tone:"error"});return}x(No(Ie))}async function $(){if(!(!p.isDesktop||!p.bridge.supported)){if(w==="files"){const T=await To(p,{workspaceId:Ie,workspaceName:et,sessionId:S,focusOwner:"file-context-panel"});T.ok||N({title:T.detail??i("conversation.filePanelOpenExternalFailed"),tone:"error"});return}if(w==="git"){const T=await Eo(p,{workspaceId:Ie,workspaceName:et,focusOwner:"git-sidebar"});T.ok||N({title:T.detail??i("git.openExternalFailed"),tone:"error"});return}if(w==="processes"){const T=await jo(p,{workspaceId:Ie,workspaceName:et,focusOwner:"terminal-manager-panel"});T.ok||N({title:T.detail??i("terminalManager.openExternalFailed"),tone:"error"});return}await h()}}function Z(){var T,ae;D(!0),B(Gi(((T=ce.current)==null?void 0:T.getBoundingClientRect())??null)??Xi(((ae=H.current)==null?void 0:ae.getBoundingClientRect())??null))}function ge(T){if(T.button!==0||!L)return;T.preventDefault();const ae=T.clientX,qe=T.clientY,Ue=L,ze=nt=>{B(Rt({...Ue,x:Ue.x+(nt.clientX-ae),y:Ue.y+(nt.clientY-qe)}))},Ve=()=>{window.removeEventListener("pointermove",ze),window.removeEventListener("pointerup",Ve)};window.addEventListener("pointermove",ze),window.addEventListener("pointerup",Ve)}function Ae(T){if(T.button!==0||!L)return;T.preventDefault(),T.stopPropagation();const ae=T.clientX,qe=T.clientY,Ue=L,ze=nt=>{B(Rt({...Ue,width:Ue.width+(nt.clientX-ae),height:Ue.height+(nt.clientY-qe)}))},Ve=()=>{window.removeEventListener("pointermove",ze),window.removeEventListener("pointerup",Ve)};window.addEventListener("pointermove",ze),window.addEventListener("pointerup",Ve)}const He=q&&typeof document<"u"?gt.createPortal(r.jsxs("div",{ref:g,className:"parallel-pane-tools-popover","data-parallel-pane-layer":S,"data-pinned":m?"true":void 0,"data-workspace-tone":(s==null?void 0:s.tone)??"root",style:lt,children:[r.jsxs("div",{className:"parallel-pane-tools-toolbar",children:[r.jsxs("div",{className:"parallel-pane-tools-drag-handle",onPointerDown:ge,children:[r.jsx("span",{className:"parallel-pane-tools-drag-dots","aria-hidden":"true",children:r.jsx(Ji,{})}),r.jsx("span",{children:i("shell.parallelPaneToolsAction")})]}),r.jsx("div",{className:"parallel-pane-tools-tabs",role:"tablist","aria-label":i("shell.parallelPaneToolsAction"),children:["files","git","processes","terminals"].map(T=>r.jsx("button",{type:"button",role:"tab","aria-selected":w===T,className:"parallel-pane-tools-tab",onClick:()=>{V(T)},children:T==="files"?i("shell.filesEntry"):T==="git"?i("shell.gitEntry"):T==="processes"?i("shell.parallelPaneProcessesEntry"):i("shell.terminalsEntry")},T))}),r.jsxs("div",{className:"parallel-pane-tools-actions",children:[r.jsx("button",{type:"button",className:`conversation-header-ai-button${m?" active":""}`,"aria-label":i("shell.parallelPanePinAction"),title:i("shell.parallelPanePinAction"),"aria-pressed":m,onClick:()=>{v(T=>!T)},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(ea,{})})}),p.isDesktop&&p.bridge.supported?r.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":i("shell.parallelPaneDetachAction"),title:i("shell.parallelPaneDetachAction"),onClick:()=>{$()},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(ta,{})})}):null,r.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":i("common.close"),title:i("common.close"),onClick:()=>{D(!1)},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(sa,{})})})]})]}),r.jsx("div",{className:"parallel-pane-tools-body","data-panel":w,children:w==="files"?r.jsx($n,{className:"parallel-pane-tools-surface",hideHeading:!0,sessionId:S,workspaceId:Ie}):w==="git"?r.jsx(Xn,{className:"parallel-pane-tools-surface",panelActive:!0,workspaceId:Ie}):w==="processes"?r.jsx(Gn,{className:"parallel-pane-tools-surface parallel-pane-tools-process-panel",currentWorkspaceId:Ie,navigationGroups:j}):r.jsx(Xo,{embeddedMode:!0,externalWindowWorkspaceId:Ie,workbenchShellOverrides:{navigationGroups:j,currentWorkspaceId:Ie,selectWorkspace:b}})}),r.jsx("button",{type:"button",className:"parallel-pane-tools-resize-handle","aria-label":i("shell.parallelPaneResizeAction"),title:i("shell.parallelPaneResizeAction"),onPointerDown:Ae,children:r.jsx("span",{"aria-hidden":"true",children:r.jsx(na,{})})})]}),document.body):null,Pe=n&&typeof document<"u"?gt.createPortal(r.jsxs("div",{ref:A,className:"parallel-pane-info-popover","data-parallel-pane-layer":S,"data-workspace-tone":(s==null?void 0:s.tone)??"root",style:at,children:[r.jsx("strong",{className:"parallel-pane-info-title",children:i("shell.parallelPaneInfoTitle")}),r.jsx(mt,{children:r.jsxs("dl",{className:"parallel-pane-info-list",children:[r.jsxs("div",{children:[r.jsx("dt",{children:i("shell.createSessionProviderLabel")}),r.jsx("dd",{children:Ct((U??e.session).provider,"full")})]}),r.jsxs("div",{children:[r.jsx("dt",{children:i("shell.parallelPaneModelFallback")}),r.jsx("dd",{children:ot})]}),r.jsxs("div",{children:[r.jsx("dt",{children:i("shell.parallelPaneIsolatedWorkspaceTitle")}),r.jsx("dd",{children:Ke??i("common.unknown")})]})]})}),r.jsx(mt,{heading:i("shell.parallelPaneColorPaletteLabel"),description:i("shell.parallelPaneColorPaletteDescription"),actions:r.jsx("button",{type:"button",className:"ghost-button parallel-pane-color-reset",disabled:!Y||We,onClick:()=>{ds(S,null),re(null)},children:i("shell.parallelPaneColorPaletteReset")}),children:r.jsx("div",{className:"workbench-manage-color-palette parallel-pane-color-palette","aria-label":i("shell.parallelPaneColorPaletteLabel"),children:ko.map(T=>r.jsx("button",{type:"button",className:"workbench-manage-color-swatch","aria-label":i("shell.manageWorkspaceColorSelectSwatch",{color:T}),"aria-pressed":Y===T,"data-selected":Y===T,disabled:We,style:{backgroundColor:T},onClick:()=>{const ae=ds(S,T);re(ae)}},T))})}),r.jsx(mt,{heading:i("shell.parallelPaneIsolatedWorkspaceTitle"),description:(be==null?void 0:be.lifecycleStatus)==="active"?i("shell.parallelPanePromoteDescription"):(be==null?void 0:be.lifecycleStatus)==="promoted"?i("shell.parallelPaneRemovePromotedDescription"):i("shell.parallelPaneRemoveDescription"),children:r.jsxs(Ut,{align:"start",className:"parallel-pane-action-row",children:[(be==null?void 0:be.lifecycleStatus)==="active"?r.jsx("button",{type:"button",className:"secondary-button parallel-pane-promote-action",disabled:d===be.id||We,onClick:()=>{const T=be==null?void 0:be.id;T&&l(T)},children:d===be.id?i("shell.parallelPanePromoting"):i("shell.parallelPanePromoteAction")}):null,r.jsx("button",{type:"button",className:"secondary-button workbench-danger-button",disabled:We,onClick:()=>{u(S)},children:We?i("shell.parallelPaneRemoving"):i("shell.parallelPaneRemoveAction")})]})})]}),document.body):null;return r.jsxs(r.Fragment,{children:[r.jsxs("article",{ref:ce,className:"parallel-conversation-pane","data-current":t?"true":void 0,"data-workspace-tone":(s==null?void 0:s.tone)??"root","data-parallel-role":((jt=(U==null?void 0:U.parallelGroup)??e.session.parallelGroup)==null?void 0:jt.role)??void 0,style:{"--parallel-pane-order":String(e.ordinal),...pt(s)??{},...me??{},...Ge},children:[r.jsxs("header",{ref:G,className:"parallel-conversation-pane-header",children:[r.jsx("span",{className:"parallel-conversation-pane-connector","aria-hidden":"true"}),r.jsxs("div",{className:"parallel-conversation-pane-heading",children:[Oe?r.jsx("span",{className:"session-parallel-badge",children:Oe}):null,r.jsx("p",{className:"parallel-conversation-pane-subtitle",title:it,children:it}),r.jsxs("div",{className:"parallel-conversation-pane-meta",children:[r.jsx("span",{className:`session-provider-badge ${(U??e.session).provider}`,children:Ct((U??e.session).provider)}),r.jsx("span",{className:"parallel-conversation-pane-model",children:ot})]})]}),r.jsxs("div",{className:"parallel-conversation-pane-actions",children:[r.jsx("button",{ref:de,type:"button",className:"conversation-header-ai-button","aria-label":i("shell.parallelPaneInfoAction"),title:i("shell.parallelPaneInfoAction"),"aria-expanded":n,onClick:()=>{D(!1),c()},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(Ki,{})})}),r.jsx("button",{ref:H,type:"button",className:`conversation-header-ai-button${q?" active":""}`,"aria-label":i("shell.parallelPaneToolsAction"),title:i("shell.parallelPaneToolsAction"),"aria-expanded":q,onClick:()=>{o(),Z()},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(Zi,{})})})]})]}),r.jsxs("div",{className:"parallel-conversation-pane-body",children:[r.jsx(Ps,{connectionState:Ne,onReconnect:C}),r.jsx(Vn,{requests:Q,replyingRequestId:F,onReply:Ee}),r.jsx("div",{className:"parallel-conversation-pane-timeline",children:r.jsx(xs,{sessionId:S,messages:W,historyState:K,loadingOlderMessages:Re,hasOlderMessages:Ce,provider:(U==null?void 0:U.provider)??e.session.provider,interruptedSource:Se,runtimeThinkingPlaceholder:P,followTailUpdates:!0,onLoadOlderMessages:he,onRetryMessage:ye,onForkMessage:T=>{const ae=U??e.session;Te({sourceMessageId:T.id,sourceMessageSnapshot:{role:T.role,kind:T.kind??(T.role==="tool"?"tool_result":"text"),content:T.content},content:T.content,sourceProvider:ae.provider,workspaceId:ae.workspaceId,targetProvider:ae.provider,targetModel:null,targetProviderConfigMode:ae.providerConfigMode??"global-default",targetProviderPresetId:ae.providerPresetId??null}),ir()}})}),r.jsx(Zn,{items:ue,deletingQueueItemId:O,steeringQueueItemId:ie,canSteer:ee,onDelete:se,onSteer:De}),r.jsx(ys,{capabilities:le,draftStorageId:S,initialModel:e.model,workspaceId:(U??e.session).workspaceId,initialProviderConfigMode:(U??e.session).providerConfigMode??"global-default",initialProviderPresetId:(U??e.session).providerPresetId??null,forkDraft:ne,onClearForkDraft:()=>Te(null),onForkDraftChange:T=>Te(T),hasActiveRun:Le,contextUsage:R,taskProvider:(U??e.session).provider,taskMessages:E,hasPendingQueuedMessages:_e,canInterrupt:J,isSubmitting:ke,isRunning:ve,onInterrupt:te,onSend:fe,onQueueSend:Xe})]})]}),Pe,He]})}function Ki(){return r.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[r.jsx("circle",{cx:"8",cy:"8",r:"5.5",fill:"none",stroke:"currentColor",strokeWidth:"1.4"}),r.jsx("path",{d:"M8 6.1H8.01M7.35 7.6H8V10.3H8.65",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.4"})]})}function Zi(){return r.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[r.jsx("rect",{x:"2.5",y:"2.5",width:"4.2",height:"4.2",rx:"1.2",fill:"none",stroke:"currentColor",strokeWidth:"1.2"}),r.jsx("rect",{x:"9.3",y:"2.5",width:"4.2",height:"4.2",rx:"1.2",fill:"none",stroke:"currentColor",strokeWidth:"1.2"}),r.jsx("rect",{x:"2.5",y:"9.3",width:"4.2",height:"4.2",rx:"1.2",fill:"none",stroke:"currentColor",strokeWidth:"1.2"}),r.jsx("rect",{x:"9.3",y:"9.3",width:"4.2",height:"4.2",rx:"1.2",fill:"none",stroke:"currentColor",strokeWidth:"1.2"})]})}function Ji(){return r.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[r.jsx("circle",{cx:"5",cy:"4.5",r:"0.9",fill:"currentColor"}),r.jsx("circle",{cx:"11",cy:"4.5",r:"0.9",fill:"currentColor"}),r.jsx("circle",{cx:"5",cy:"8",r:"0.9",fill:"currentColor"}),r.jsx("circle",{cx:"11",cy:"8",r:"0.9",fill:"currentColor"}),r.jsx("circle",{cx:"5",cy:"11.5",r:"0.9",fill:"currentColor"}),r.jsx("circle",{cx:"11",cy:"11.5",r:"0.9",fill:"currentColor"})]})}function ea(){return r.jsx("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:r.jsx("path",{d:"M10.9 3.1 12.9 5.1 10.9 6.1v2.1l-2.1 2.1v2.6l-.8-.8-.8.8v-2.6L5 8.2V6.1L3.1 5.1l2-2h5.8Z",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.1"})})}function ta(){return r.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[r.jsx("path",{d:"M5 3.1H3.8A1.3 1.3 0 0 0 2.5 4.4v7.8a1.3 1.3 0 0 0 1.3 1.3h7.8a1.3 1.3 0 0 0 1.3-1.3V11",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"}),r.jsx("path",{d:"M8.1 3.1h4.4v4.4M12.3 3.3 7 8.6",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"})]})}function sa(){return r.jsx("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:r.jsx("path",{d:"M4.5 4.5 11.5 11.5M11.5 4.5 4.5 11.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"1.3"})})}function na(){return r.jsx("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:r.jsx("path",{d:"M6.5 12.2 12.2 6.5M9 12.4 12.4 9M11.4 12.4 12.4 11.4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.1"})})}const ft=196,dt=82,bn=28,wn=24,cr=34,ps=18,ra=332,Dt=360,Bt=840,Sn=18,oa=.22,ia=2.4,aa=6;function la(e,t){return(t.lastMessageAt??t.updatedAt).localeCompare(e.lastMessageAt??e.updatedAt)}function dr(e,t,s){var j,M;if(!t)return null;const n=e.find(b=>b.workspace.id===t);if(!n)return null;const o=new Map(n.sessions.map(b=>[b.sessionId,b])),c=o.get(s)??null;if(!c)return null;const l=new Map;for(const b of n.sessions){const _=((j=b.parentSessionId)==null?void 0:j.trim())||null;if(!_)continue;const y=l.get(_)??[];l.set(_,[...y,b.sessionId])}const d=new Set,u=new Set;let f=c,x=c.sessionId;for(;f&&!u.has(f.sessionId);){d.add(f.sessionId),u.add(f.sessionId),x=f.sessionId;const b=((M=f.parentSessionId)==null?void 0:M.trim())||null;f=b?o.get(b)??null:null}const p=ur(x,0,o,l,new Set),N=da(p);return{root:p,current:c,currentPathIds:d,relatedSessionIds:N,sessionsById:o}}function ca(e){return((e==null?void 0:e.relatedSessionIds.size)??0)>1}function ur(e,t,s,n,o){const c=s.get(e);if(!c)throw new Error(`Session ${e} not found`);const l=new Set(o);l.add(e);const d=[...n.get(e)??[]].filter(u=>!l.has(u)).sort((u,f)=>{const x=s.get(u),p=s.get(f);return!x||!p?0:la(x,p)});return{session:c,depth:t,children:d.map(u=>ur(u,t+1,s,n,l))}}function da(e){const t=new Set;function s(n){t.add(n.session.sessionId),n.children.forEach(s)}return s(e),t}function hr(e){const t=Hn(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[Ct(e.provider),n,t].filter(Boolean).join(" · ")}function mr(e){return e.isArchived===!0}function ua(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 pr(e,t){return e<=0||t<=0?1:Math.min(1,e/t)}function ha(e,t,s,n){const o=pr(e,s),c=s*o,l=n*o,d=c<e?(e-c)/2:0;return{scale:o,offsetX:d,offsetY:0,shellWidth:Math.max(e,c),shellHeight:l}}function fs(e,t,s){return Math.min(s,Math.max(t,e))}function ma(e,t,s,n){if(e<=0||t<=0||s<=0||n<=0)return 1;const o=Math.max(1,e-Sn*2),c=Math.max(1,t-Sn*2);return Math.min(1,o/s,c/n)}function Wt(e,t,s,n,o){const c=n*e.scale,l=o*e.scale,d=(t-c)/2,u=(s-l)/2,f=c<=t?d:fs(e.offsetX,t-c,0),x=l<=s?u:fs(e.offsetY,s-l,0);return{scale:e.scale,offsetX:f,offsetY:x}}function Ot(e,t,s,n){const o=ma(e,t,s,n);return Wt({scale:o,offsetX:(e-s*o)/2,offsetY:(t-n*o)/2},e,t,s,n)}function pa(e,t,s,n,o,c,l,d){const u=(s-e.offsetX)/e.scale,f=(n-e.offsetY)/e.scale;return Wt({scale:t,offsetX:s-u*t,offsetY:n-f*t},o,c,l,d)}function fa(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} ${i("conversation.branchTreeToolMessageFallback")}`:i("conversation.branchTreeMessageEmpty")}function ga(e){switch(e.role){case"assistant":return i("conversation.roleAssistant");case"system":return i("conversation.roleSystem");case"tool":return i("conversation.roleTool");case"user":default:return i("conversation.roleUser")}}function gs(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,ft),ft;const n=e.children.reduce((c,l,d)=>{const u=c+gs(l,t);return d===0?u:u+ps},0),o=Math.max(ft,n);return t.set(e.session.sessionId,o),o}function va(e){const t=new Map,s=[],n=new Map;function o(d,u,f){const x=gs(d,t),p=u+x/2,N=wn+f*(dt+cr),j=p-ft/2,M=d.children.reduce((I,S,q)=>{const D=I+gs(S,t);return q===0?D:D+ps},0);let b=u+Math.max(0,(x-M)/2);const _=d.children.map(I=>{const S=o(I,b,f+1);return b+=S.subtreeWidth+ps,S}),y={node:d,children:_,x:j,y:N,centerX:p,centerY:N+dt/2,subtreeWidth:x};return s.push(y),n.set(d.session.sessionId,y),y}const c=o(e,bn,0),l=s.reduce((d,u)=>Math.max(d,u.y+dt),0);return{root:c,nodes:s,bySessionId:n,width:c.subtreeWidth+bn*2,height:l+wn}}function ba(e){return Math.max(0,Math.min(255,Number.parseFloat(e)))}function wa(e){const t=e.trim();if(t.startsWith("#")){const n=t.slice(1);if(n.length===3){const[o,c,l]=n.split("").map(d=>Number.parseInt(d.repeat(2),16));return{r:o,g:c,b:l}}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,o,c]=s[1].split(",").map(l=>ba(l));return{r:n,g:o,b:c}}return null}function st(e,t,s){const n=wa(e);return n?`rgba(${n.r}, ${n.g}, ${n.b}, ${t})`:s}function Sa(e,t,s,n,o,c){const l=e.getContext("2d");if(!l)return;const d=l,u=window.devicePixelRatio||1;e.width=Math.max(1,Math.floor(t.width*u)),e.height=Math.max(1,Math.floor(t.height*u)),e.style.width=`${t.width}px`,e.style.height=`${t.height}px`,d.setTransform(u,0,0,u,0,0),d.clearRect(0,0,t.width,t.height);const f=window.getComputedStyle(e),x=f.getPropertyValue("--accent").trim()||"#3b82f6",p=f.getPropertyValue("--border-primary").trim()||"#d4d8df",N=f.getPropertyValue("--bg-surface").trim()||"#ffffff";if(!c){const M=d.createLinearGradient(0,0,t.width,t.height);M.addColorStop(0,st(N,.38,"rgba(255, 255, 255, 0.38)")),M.addColorStop(1,st(x,.05,"rgba(59, 130, 246, 0.05)")),d.fillStyle=M,d.fillRect(0,0,t.width,t.height)}function j(M){for(const b of M.children){const _=n.has(M.node.session.sessionId)&&n.has(b.node.session.sessionId),y=M.node.session.sessionId===o||b.node.session.sessionId===o;d.beginPath(),d.moveTo(M.centerX,M.y+dt-10);const I=M.y+dt+cr*.52;d.bezierCurveTo(M.centerX,I,b.centerX,I,b.centerX,b.y+10),d.lineWidth=y?3:_?2.5:1.5,d.strokeStyle=y?st(x,.52,"rgba(59, 130, 246, 0.52)"):_?st(x,.32,"rgba(59, 130, 246, 0.32)"):st(p,.72,"rgba(148, 163, 184, 0.72)"),d.stroke(),d.beginPath(),d.arc(b.centerX,b.y,y?4.5:3.5,0,Math.PI*2),d.fillStyle=y?st(x,.9,"rgba(59, 130, 246, 0.9)"):st(p,.78,"rgba(148, 163, 184, 0.78)"),d.fill(),j(b)}}j(t.root);for(const M of t.nodes){const b=M.node.session.sessionId===s,_=M.node.session.sessionId===o,y=n.has(M.node.session.sessionId);if(!b&&!_&&!y)continue;const I=d.createRadialGradient(M.centerX,M.centerY,10,M.centerX,M.centerY,_?90:64);I.addColorStop(0,st(x,_?.22:.14,"rgba(59, 130, 246, 0.22)")),I.addColorStop(1,"rgba(59, 130, 246, 0)"),d.fillStyle=I,d.beginPath(),d.ellipse(M.centerX,M.centerY,ft*.72,dt*.9,0,0,Math.PI*2),d.fill(),(_||b)&&(d.beginPath(),d.arc(M.centerX,M.y+12,_?6:5,0,Math.PI*2),d.fillStyle=st(x,.94,"rgba(59, 130, 246, 0.94)"),d.fill())}}function Ma(e,t,s){const n=Math.min(ra,t-24),o=e.left+e.width/2-n/2,c=Math.max(12,Math.min(t-n-12,o)),u=s-e.bottom-12<220&&e.top>Dt?Math.max(12,e.top-Dt-12):Math.max(12,Math.min(s-Dt-12,e.bottom+12));return{width:n,left:c,top:u,maxHeight:Math.min(Dt,s-24)}}function Ia({model:e,selectedSession:t,selectedTreeNode:s,previewEntry:n,onClose:o,onOpenSession:c}){const l=bt(t.title,i("common.unknown")),d=t.sessionId===e.current.sessionId,u=mr(t),f=Ln(s.session),x=_n(s.session),p=Dn(s.session),N=On(s.session);return r.jsxs("div",{className:"conversation-branch-preview-popover",role:"dialog","aria-label":`${i("conversation.branchTreePreviewTitle")} ${l.fullTitle}`,children:[r.jsxs("div",{className:"conversation-branch-preview-popover-header",children:[r.jsxs("div",{className:"conversation-branch-preview-card-title-row",children:[r.jsx("strong",{title:l.fullTitle,children:l.displayTitle}),d?r.jsx("span",{className:"conversation-branch-current-badge",children:i("conversation.branchTreeCurrentBadge")}):null,u?r.jsx("span",{className:"conversation-branch-archived-badge",children:i("conversation.branchTreeArchivedBadge")}):null]}),r.jsx("button",{type:"button",className:"conversation-branch-preview-close","aria-label":i("common.close"),onClick:o,children:"x"})]}),r.jsx("p",{className:"conversation-branch-preview-popover-meta",children:hr(t)}),x&&f||N&&p?r.jsxs("div",{className:"conversation-branch-badge-row",children:[N&&p?r.jsx("span",{className:`session-fork-badge ${p}`,children:N}):null,x&&f?r.jsx("span",{className:`session-fork-badge ${f}`,children:x}):null]}):null,r.jsx("div",{className:"conversation-branch-preview-messages",children:n.status==="loading"?r.jsx("p",{className:"conversation-branch-empty",children:i("conversation.branchTreePreviewLoading")}):n.status==="error"?r.jsx("p",{className:"conversation-branch-empty",children:n.error||i("conversation.branchTreePreviewFailed")}):n.messages.length>0?n.messages.map(j=>r.jsxs("article",{className:"conversation-branch-preview-message",children:[r.jsxs("div",{className:"conversation-branch-preview-message-meta",children:[r.jsx("span",{children:ga(j)}),r.jsx("span",{children:new Intl.DateTimeFormat(void 0,{hour:"2-digit",minute:"2-digit"}).format(new Date(j.timestamp))})]}),r.jsx("p",{children:fa(j)})]},`${t.sessionId}:${j.messageId}`)):r.jsx("p",{className:"conversation-branch-empty",children:i("conversation.branchTreePreviewEmpty")})}),r.jsx("div",{className:"conversation-branch-preview-actions",children:r.jsx("button",{type:"button",className:"secondary-button",disabled:d,onClick:()=>c(t),children:d?i("conversation.branchTreeCurrentAction"):i("conversation.branchTreeSwitchAction")})})]})}function xa({layout:e,model:t,selectedSessionId:s,onSelectSession:n,onBackgroundClick:o,stageScale:c,desktopStageLayout:l,transform:d,isMobileViewport:u,viewportRef:f,onRegisterNodeElement:x,onViewportTouchStart:p,onViewportTouchMove:N,onViewportTouchEnd:j}){const M=a.useRef(null);return a.useEffect(()=>{const b=M.current;b&&Sa(b,e,t.current.sessionId,t.currentPathIds,s,u)},[u,e,t.current.sessionId,t.currentPathIds,s]),r.jsx("div",{ref:f,className:"conversation-branch-canvas-viewport","data-scaled":c<.999,"data-mobile":u,onClick:b=>{b.target===b.currentTarget&&(o==null||o())},onTouchStart:p,onTouchMove:N,onTouchEnd:j,onTouchCancel:j,children:r.jsx("div",{className:"conversation-branch-canvas-stage-shell",style:{width:u?"100%":l.shellWidth,height:u?"100%":l.shellHeight},onClick:b=>{b.target===b.currentTarget&&(o==null||o())},children:r.jsxs("div",{className:"conversation-branch-canvas-stage",style:{width:e.width,height:e.height,transform:d?`translate(${d.offsetX}px, ${d.offsetY}px) scale(${d.scale})`:`translate(${l.offsetX}px, ${l.offsetY}px) scale(${l.scale})`,transformOrigin:"top left"},onClick:()=>{if(o){o();return}n(null)},children:[r.jsx("canvas",{ref:M,className:"conversation-branch-canvas",width:e.width,height:e.height,"aria-hidden":"true"}),e.nodes.map(b=>{const _=bt(b.node.session.title,i("common.unknown")),y=Ln(b.node.session),I=_n(b.node.session),S=Dn(b.node.session),q=On(b.node.session),D=b.node.session.sessionId===t.current.sessionId,w=b.node.session.sessionId===s,V=t.currentPathIds.has(b.node.session.sessionId),m=mr(b.node.session);return r.jsx("button",{ref:v=>x(b.node.session.sessionId,v),type:"button",className:"conversation-branch-smart-card conversation-branch-canvas-node","data-current":D,"data-selected":w,"data-current-path":V,"data-archived":m,style:{left:b.x,top:b.y,width:ft,minHeight:dt},"aria-pressed":w,onClick:v=>{v.stopPropagation(),n(b.node.session.sessionId)},children:r.jsxs("div",{className:"conversation-branch-smart-card-main",children:[r.jsxs("div",{className:"conversation-branch-smart-card-title-row",children:[r.jsx("strong",{title:_.fullTitle,children:_.displayTitle}),D?r.jsx("span",{className:"conversation-branch-current-badge",children:i("conversation.branchTreeCurrentBadge")}):null,m?r.jsx("span",{className:"conversation-branch-archived-badge",children:i("conversation.branchTreeArchivedBadge")}):null]}),r.jsx("p",{children:hr(b.node.session)}),I&&y||q&&S?r.jsxs("div",{className:"conversation-branch-badge-row",children:[q&&S?r.jsx("span",{className:`session-fork-badge ${S}`,children:q}):null,I&&y?r.jsx("span",{className:`session-fork-badge ${y}`,children:I}):null]}):null]})},b.node.session.sessionId)})]})})})}function Mn({model:e,onOpenSession:t,onClose:s}){const n=a.useMemo(()=>va(e.root),[e.root]),o=a.useRef(null),c=a.useRef(new Map),[l,d]=a.useState(null),[u,f]=a.useState(0),[x,p]=a.useState(0),[N,j]=a.useState(null),[M,b]=a.useState({}),_=a.useRef(new Set),[y,I]=a.useState(typeof window<"u"?window.innerWidth<=Bt:!1),[S,q]=a.useState(null),D=a.useRef({mode:"idle",startDistance:0,startScale:1,startOffsetX:0,startOffsetY:0,startTouchX:0,startTouchY:0,anchorX:0,anchorY:0,moved:!1});a.useEffect(()=>{const A=o.current;if(!A)return;const g=A;function H(){f(g.clientWidth),p(g.clientHeight),I(window.innerWidth<=Bt)}if(H(),typeof ResizeObserver>"u")return window.addEventListener("resize",H),()=>window.removeEventListener("resize",H);const Y=new ResizeObserver(H);return Y.observe(A),()=>Y.disconnect()},[]),a.useEffect(()=>{d(null)},[e.current.sessionId,e.root.session.sessionId]);const w=a.useMemo(()=>pr(u,n.width),[u,n.width]),V=a.useMemo(()=>ha(u,x,n.width,n.height),[x,u,n.height,n.width]);a.useEffect(()=>{if(!y||u<=0||x<=0){q(null);return}q(A=>A?Wt(A,u,x,n.width,n.height):Ot(u,x,n.width,n.height))},[x,u,y,n.height,n.width]);const m=l?e.sessionsById.get(l)??null:null,v=m?n.bySessionId.get(m.sessionId)??null:null,L=m?M[m.sessionId]??{status:"idle",messages:[],error:null}:null,B=y&&!!s,z=!!s&&!B;a.useEffect(()=>{if(!l){j(null);return}const A=l;function g(){const H=c.current.get(A);if(!H){j(null);return}j(H.getBoundingClientRect())}return g(),window.addEventListener("resize",g),window.addEventListener("scroll",g,!0),()=>{window.removeEventListener("resize",g),window.removeEventListener("scroll",g,!0)}},[l,w]),a.useEffect(()=>{if(!y)return;const A=l;if(!A)return;const g=window.requestAnimationFrame(()=>{const H=c.current.get(A);H&&j(H.getBoundingClientRect())});return()=>window.cancelAnimationFrame(g)},[y,S,l]),a.useEffect(()=>{if(!(m!=null&&m.sessionId)||(L==null?void 0:L.status)==="ready"||_.current.has(m.sessionId))return;let A=!1;return _.current.add(m.sessionId),b(g=>{var H;return{...g,[m.sessionId]:{status:"loading",messages:((H=g[m.sessionId])==null?void 0:H.messages)??[],error:null}}}),ls(m.sessionId,null,6,"backward").then(g=>{_.current.delete(m.sessionId),!A&&b(H=>({...H,[m.sessionId]:{status:"ready",messages:ua(g.messages),error:null}}))}).catch(g=>{_.current.delete(m.sessionId),!A&&b(H=>{var Y;return{...H,[m.sessionId]:{status:"error",messages:((Y=H[m.sessionId])==null?void 0:Y.messages)??[],error:g instanceof Error?g.message:i("conversation.branchTreePreviewFailed")}}})}),()=>{A=!0}},[m==null?void 0:m.sessionId]);function X(A){!y||u<=0||x<=0||q(g=>{const H=g??Ot(u,x,n.width,n.height);return Wt(A(H),u,x,n.width,n.height)})}function ce(A){if(!y)return;const g=A.currentTarget.getBoundingClientRect();if(A.touches.length>=2){const re=A.touches[0],U=A.touches[1],le=Math.hypot(U.clientX-re.clientX,U.clientY-re.clientY),E=(re.clientX+U.clientX)/2-g.left,W=(re.clientY+U.clientY)/2-g.top,Q=S??Ot(u,x,n.width,n.height);D.current={mode:"pinch",startDistance:le,startScale:Q.scale,startOffsetX:Q.offsetX,startOffsetY:Q.offsetY,startTouchX:E,startTouchY:W,anchorX:E,anchorY:W,moved:!1};return}const H=A.touches[0],Y=S??Ot(u,x,n.width,n.height);D.current={mode:"pan",startDistance:0,startScale:Y.scale,startOffsetX:Y.offsetX,startOffsetY:Y.offsetY,startTouchX:H.clientX,startTouchY:H.clientY,anchorX:0,anchorY:0,moved:!1}}function G(A){if(!y)return;const g=D.current;if(A.touches.length>=2){const le=A.currentTarget.getBoundingClientRect(),E=A.touches[0],W=A.touches[1],Q=Math.hypot(W.clientX-E.clientX,W.clientY-E.clientY);if(Q<=0||g.startDistance<=0)return;A.preventDefault();const ue=(E.clientX+W.clientX)/2-le.left,R=(E.clientY+W.clientY)/2-le.top,K=fs(g.startScale*(Q/g.startDistance),oa,ia);D.current={...g,mode:"pinch",moved:!0,anchorX:ue,anchorY:R},X(Se=>pa({...Se,scale:g.startScale,offsetX:g.startOffsetX,offsetY:g.startOffsetY},K,ue,R,u,x,n.width,n.height));return}if(g.mode!=="pan"||A.touches.length!==1)return;const H=A.touches[0],Y=H.clientX-g.startTouchX,re=H.clientY-g.startTouchY;(g.moved||Math.hypot(Y,re)>=aa)&&(A.preventDefault(),D.current={...g,moved:!0},X(le=>({...le,offsetX:g.startOffsetX+Y,offsetY:g.startOffsetY+re})))}function de(){D.current={mode:"idle",startDistance:0,startScale:(S==null?void 0:S.scale)??1,startOffsetX:(S==null?void 0:S.offsetX)??0,startOffsetY:(S==null?void 0:S.offsetY)??0,startTouchX:0,startTouchY:0,anchorX:0,anchorY:0,moved:!1}}return r.jsxs(r.Fragment,{children:[r.jsxs("section",{className:`conversation-branch-tree-pane${s?" conversation-branch-dialog":""}${B?" conversation-branch-dialog-mobile-bare":""}`,role:s?"dialog":void 0,"aria-modal":s?"true":void 0,"aria-label":s?i("conversation.branchTreeTitle"):void 0,children:[z?r.jsx("div",{className:"conversation-branch-tree-pane-header",children:r.jsxs("div",{className:"conversation-branch-tree-pane-topbar",children:[r.jsxs("div",{className:"conversation-branch-tree-pane-heading",children:[r.jsx("h3",{children:i("conversation.branchTreeMapTitle")}),r.jsx("p",{children:i("conversation.branchTreeMapDescription")})]}),s?r.jsx("button",{type:"button",className:"conversation-branch-pane-close","aria-label":i("common.close"),onClick:s,children:"x"}):null]})}):null,r.jsxs("div",{className:"conversation-branch-canvas-shell",children:[B?r.jsx("button",{type:"button",className:"conversation-branch-pane-close conversation-branch-mobile-floating-close","aria-label":i("common.close"),onClick:s,children:"x"}):null,B?null:r.jsx("div",{className:"conversation-branch-canvas-tip",children:i("conversation.branchTreePreviewDescription")}),r.jsx(xa,{layout:n,model:e,selectedSessionId:l,onSelectSession:d,onBackgroundClick:B?s:void 0,stageScale:w,desktopStageLayout:V,transform:y?S:null,isMobileViewport:y,viewportRef:o,onRegisterNodeElement:(A,g)=>{if(g){c.current.set(A,g);return}c.current.delete(A)},onViewportTouchStart:ce,onViewportTouchMove:G,onViewportTouchEnd:de})]})]}),m&&v&&L&&N&&typeof document<"u"?gt.createPortal(r.jsx("div",{className:"conversation-branch-preview-floating",style:Ma(N,window.innerWidth,window.innerHeight),children:r.jsx(Ia,{model:e,selectedSession:m,selectedTreeNode:v.node,previewEntry:L,onClose:()=>d(null),onOpenSession:t})}),document.body):null]})}function ya({open:e,navigationGroups:t,workspaceId:s,sessionId:n,onClose:o,onOpenSession:c}){const l=a.useMemo(()=>dr(t,s,n),[t,n,s]),[d,u]=a.useState(typeof window<"u"?window.innerWidth>Bt:!0);return a.useEffect(()=>{if(typeof window>"u")return;function f(){u(window.innerWidth>Bt)}return f(),window.addEventListener("resize",f),()=>window.removeEventListener("resize",f)},[]),!e||!l||typeof document>"u"?null:d?r.jsx(qt,{open:e,title:i("conversation.branchTreeMapTitle"),description:i("conversation.branchTreeMapDescription"),size:"regular",layout:"viewer",bodyClassName:"conversation-branch-modal-body",onClose:o,children:r.jsx(Mn,{model:l,onOpenSession:c})}):gt.createPortal(r.jsxs("div",{className:"workbench-modal-layer conversation-branch-panel-layer",children:[r.jsx("button",{type:"button",className:"workbench-modal-backdrop","aria-label":i("common.close"),onClick:o}),r.jsx(Mn,{model:l,onOpenSession:c,onClose:o})]}),document.body)}function Pa(e){const t=e.trim().length;return t<=16?"xl":t<=26?"lg":t<=38?"md":"sm"}function fr({session:e,actions:t,workspaceContext:s=null}){const n=Tt(),o=An(n);if(!e)return r.jsxs("header",{className:"conversation-header conversation-header-skeleton","aria-hidden":"true","data-window-drag-handle":"conversation-header","data-tauri-drag-region":o,children:[r.jsxs("div",{className:"conversation-header-main","data-tauri-drag-region":o,children:[r.jsx("span",{className:"skeleton-line short"}),r.jsx("span",{className:"skeleton-line long"})]}),t?r.jsx("div",{className:"conversation-header-actions",children:t}):null]});const c=bt(e.title,i("conversation.titleFallback")),l=Pa(c.displayTitle);return r.jsxs("header",{className:"conversation-header","data-workspace-tone":(s==null?void 0:s.tone)??"root",style:pt(s),"data-window-drag-handle":"conversation-header","data-tauri-drag-region":o,children:[r.jsx("div",{className:"conversation-header-main","data-tauri-drag-region":o,children:r.jsx("h1",{className:`conversation-title is-${l}`,title:c.fullTitle,"data-tauri-drag-region":o,children:c.displayTitle})}),t?r.jsx("div",{className:"conversation-header-actions",children:t}):null]})}function Ra(e,t,s){if(!t)return null;const n=e.find(l=>l.workspace.id===t);if(!n)return null;const o=ws([n]).filter(l=>!l.session.isArchived&&!Vt(l.session)),c=o.findIndex(l=>l.session.sessionId===s);return c<0?null:o[c+1]??null}const In=.6,as=.6,xn=8,Ca=36,ka=48,Ta=96;function pl(){const{sessionId:e="",workspaceId:t}=Fo(),s=Is(),n=ut(),o=a.useMemo(()=>new URLSearchParams(s.search),[s.search]),c=La(o.get("toolPanel")),l=(t==null?void 0:t.trim())||null,d=a.useMemo(()=>Aa(e,l,o),[l,o,e]),u=a.useMemo(()=>Va(e,s.state),[s.state,e]),f=a.useMemo(()=>$a(e,s.state),[s.state,e]);return d?r.jsx(ja,{draft:d,navigate:n,initialToolPanel:c}):r.jsx(Ea,{sessionId:e,bootstrapMessages:u,initialComposerModel:f.initialModel,initialComposerProviderConfigMode:f.providerConfigMode,initialComposerProviderPresetId:f.providerPresetId,initialToolPanel:c})}function Ea({sessionId:e,bootstrapMessages:t,initialComposerModel:s,initialComposerProviderConfigMode:n,initialComposerProviderPresetId:o,initialToolPanel:c}){var Ts,Es,js,As,Ns;const{shellMode:l,navigationGroups:d,requestNavigationRefresh:u,selectWorkspace:f,setSessionWorkspace:x,markNavigationSessionSeen:p,favoriteSessions:N,archiveSession:j,unarchiveSession:M,startDraftSession:b,upsertNavigationSession:_}=vt(),y=ut(),[I,S]=a.useState(!1),[q,D]=a.useState(!1),[w,V]=a.useState(null),[m,v]=a.useState(!1),[L,B]=a.useState(!1),[z,X]=a.useState(!1),ce=a.useMemo(()=>ws(d),[d]),G=a.useMemo(()=>{var k;return((k=ce.find(oe=>oe.session.sessionId===e))==null?void 0:k.session)??null},[ce,e]),{showToast:de}=rt(),A=()=>{var we;const k=(G==null?void 0:G.workspaceId)??((we=d[0])==null?void 0:we.workspace.id)??null,oe=(k?ce.find(At=>At.workspace.id===k)??null:null)??ce[0]??null;y(oe?$e(oe.workspace.id,oe.session.sessionId):k?yt(k):l==="mobile"?Do():"/landing",{replace:!0})},{session:g,capabilities:H,messages:Y,timelineMessages:re,permissionRequests:U,queuedMessages:le,contextUsage:E,historyState:W,runtimeInterruptSource:Q,loadingOlderMessages:ue,hasOlderMessages:R,connectionState:K,sending:Se,replyingPermissionRequestId:Re,deletingQueueItemId:Ce,steeringQueueItemId:Ne,forkDraft:ke,setForkDraft:F,composerHasActiveRun:O,composerCanInterrupt:ie,composerIsRunning:ne,canSteerQueuedMessage:Te,hasPendingQueuedMessages:Le,runtimeThinkingPlaceholder:J,reconnect:ve,loadOlderMessages:ee,retryMessage:_e,send:P,queue:C,interrupt:he,replyPermissionRequest:ye,deleteQueuedMessage:fe,steerQueuedMessage:Xe}=ar({sessionId:e,externalSession:G,bootstrapMessages:t,onSeen:(k,oe)=>{p(k,oe)},onRequestNavigationRefresh:u,onUpsertNavigationSession:_,onNavigateToSession:(k,oe)=>{f(k),y($e(k,oe))},onBindSessionWorkspace:x,onResolveMissingSession:A,onForkSuccess:()=>{Pt("preview"),de({title:i("conversation.forkMessageSucceeded"),tone:"success"})},enableRuntimeErrorHandling:!0,enableCompletionHaptics:!0,enableThinkingPlaceholder:!0,enableForkTimelineSanitizer:!0}),te=l!=="mobile",Ee=Pr(!te),se=g??G??null,De=(g==null?void 0:g.sessionIsolatedWorkspace)??(G==null?void 0:G.sessionIsolatedWorkspace)??null,me=se?Ft(se,De):null,Ge=se?Nn(se,De):null,Oe=xr({enabled:!te,initialPanel:c,workspaceId:Ge,suspendMainGesture:!te&&Ee.isVisible}),be=a.useMemo(()=>new Set(N.map(k=>k.session.sessionId)),[N]),Ke=a.useMemo(()=>d.map(k=>k.workspace),[d]),ot=a.useMemo(()=>Yn(d),[d]),it=a.useMemo(()=>Ss(d),[d]),Ze=a.useMemo(()=>vr(d,me,be),[be,me,d]),Ie=a.useMemo(()=>br(N,d),[N,d]),[et,We]=a.useState([]),at=a.useMemo(()=>[...Ie,...Ze],[Ie,Ze]),lt=a.useMemo(()=>me?Ke.find(k=>k.id===me)??null:null,[me,Ke]),h=(me?it[me]??null:null)??(lt?Ms(lt):null),$=a.useMemo(()=>$t(d,me),[me,d]),Z=ot.find(k=>k.workspace.id===me)??($?{workspace:$.workspace,label:$.workspace.name,subtitle:$.workspace.path}:null),ge=a.useMemo(()=>Ra(d,me,e),[me,d,e]),Ae=(g==null?void 0:g.provider)??(G==null?void 0:G.provider)??null,He=a.useMemo(()=>{var k;return bt(((k=g??G)==null?void 0:k.title)??null,i("conversation.titleFallback"))},[G,g]),Pe=te,je=Pe&&Lo(se)?((Ts=se==null?void 0:se.parallelGroup)==null?void 0:Ts.groupId)??null:null,Me=te?null:Ir(Ee.mainGestureHandlers,Oe.mainGestureHandlers);a.useEffect(()=>{const k=Bn(at,e,oe=>oe.session.sessionId);k.length!==0&&We(oe=>{const we=new Set(oe);let At=!1;for(const Ls of k)we.has(Ls)||(we.add(Ls),At=!0);return At?Array.from(we):oe})},[at,e]);const Ye=(se==null?void 0:se.workspaceId)??(G==null?void 0:G.workspaceId)??null,Et=a.useMemo(()=>dr(d,Ye,e),[Ye,d,e]),jt=ca(Et),T=!!(se&&Ye&&jt),ae=()=>{B(!0)},qe=a.useMemo(()=>($==null?void 0:$.sessions.filter(k=>k.isArchived===!0&&!Vt(k)))??[],[$]),Ue=a.useRef(null),ze=a.useRef(null),Ve=a.useRef(null),nt=a.useRef(null),[Tr,Er]=a.useState(null),{composerPortalTarget:jr}=Fn();a.useEffect(()=>{B(!1)},[e]),Sr(Ve,Tr,!te,e),Mr(Ve,nt,!te,e);function Ar(k){f(k),y(yt(k))}return te&&je?r.jsxs(r.Fragment,{children:[r.jsx(zi,{groupId:je,currentSessionId:e}),r.jsx(cs,{open:z,source:se?{kind:"session",sessionId:e,workspaceId:se.workspaceId,workspaceName:(h==null?void 0:h.displayName)??se.workspaceId,sessionTitle:se.title,defaultProvider:se.provider}:null,onClose:()=>X(!1),onCreated:async k=>{k.members.forEach(we=>{_(we.session)}),Us(k.group.id),await u();const oe=k.members.find(we=>we.session.sessionId===k.group.anchorSessionId)??k.members[0]??null;if(oe){const we=Ft(oe.session,oe.sessionIsolatedWorkspace);f(we),y($e(we,oe.session.sessionId))}X(!1),de({title:i("shell.parallelCreateSucceeded"),tone:"success"})}})]}):r.jsxs(r.Fragment,{children:[r.jsxs("main",{ref:Ve,className:"workbench-page conversation-page-shell mobile-page-fixed-root mobile-conversation-page","data-mobile-shell":!te,"data-preview-mode":te?void 0:Ee.displayMode,"data-preview-dragging":te?void 0:Ee.isDragging,"data-workspace-tone":(h==null?void 0:h.tone)??"root","data-worktree-depth":(h==null?void 0:h.depth)??0,"data-tool-panel-open":te?void 0:Oe.isOpen,style:{...te?{}:Ee.pageStyle,...pt(h)??{}},children:[te?r.jsx(fr,{session:g??G,workspaceContext:h,actions:r.jsxs(r.Fragment,{children:[T?r.jsx(Wa,{onOpenBranchTree:ae}):null,se?r.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":i("shell.parallelCreateAction"),title:i("shell.parallelCreateAction"),onClick:()=>X(!0),children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(qa,{})})}):null,r.jsx(Kn,{session:g??G})]})}):null,te?null:r.jsx(zn,{containerRef:nt,className:"mobile-conversation-page-header",gestureHandlers:Me??void 0,currentWorkspace:Z?{id:Z.workspace.id,name:Z.label,path:Z.subtitle}:Ke[0]??null,workspaces:Ke,workspaceOptions:ot,onSelectWorkspace:Ar,heading:He.fullTitle,trailing:r.jsxs("div",{className:"mobile-conversation-toolbar-main",children:[r.jsx("span",{className:"mobile-conversation-toolbar-title",title:He.fullTitle,children:He.displayTitle}),r.jsx(si,{session:g??G,onOpenBranchTree:T?ae:void 0})]})}),te?null:r.jsx(Rr,{visible:!Oe.isOpen&&Ee.isVisible,widthPx:Ee.previewWidthPx,isDragging:Ee.isDragging,gestureHandlers:Ee.railGestureHandlers,activeSessionId:e,createSessionActionLabel:me&&Ae?i("shell.createSession"):void 0,favoriteItems:Ie,items:Ze,expandedRootIds:et,workspaceSectionLabel:(Z==null?void 0:Z.label)??i("shell.mobileConversationCurrentWorkspaceSection"),onCreateSession:me&&Ae?()=>{b(me,Ae)}:void 0,archiveCurrentActionLabel:i("shell.archiveCurrentSessionAction"),archiveFolderActionLabel:qe.length>0?i("shell.archiveFolderLabel"):void 0,onArchiveActiveSession:()=>{S(!0)},onOpenArchiveFolder:qe.length>0?()=>{D(!0)}:void 0,onToggleSubsessions:k=>{We(oe=>oe.includes(k)?oe.filter(we=>we!==k):[...oe,k])},onActivate:k=>{Ee.closePreview(),f(k.workspace.id),y($e(k.workspace.id,k.session.sessionId))}}),r.jsx("div",{className:"mobile-conversation-stage",...Me??{},children:r.jsxs("div",{ref:Ue,className:"mobile-conversation-main",children:[r.jsx(Ps,{connectionState:K,onReconnect:ve}),r.jsx(Vn,{requests:U,replyingRequestId:Re,onReply:ye}),r.jsx("div",{ref:ze,className:"conversation-timeline-shell",children:r.jsx(xs,{sessionId:e,messages:re,historyState:W,loadingOlderMessages:ue,hasOlderMessages:R,provider:(g==null?void 0:g.provider)??null,interruptedSource:Q,runtimeThinkingPlaceholder:J,onLoadOlderMessages:ee,onRetryMessage:_e,onForkMessage:k=>{g&&(F({sourceMessageId:k.id,sourceMessageSnapshot:{role:k.role,kind:k.kind??(k.role==="tool"?"tool_result":"text"),content:k.content},content:k.content,sourceProvider:g.provider,workspaceId:g.workspaceId,targetProvider:g.provider,targetModel:null,targetProviderConfigMode:g.providerConfigMode??"global-default",targetProviderPresetId:g.providerPresetId??null}),ir())}})}),r.jsx(Ko,{containerRef:ze,session:g??G??null,currentCapabilities:H}),r.jsx(Zn,{items:le,deletingQueueItemId:Ce,steeringQueueItemId:Ne,canSteer:Te,onDelete:fe,onSteer:Xe}),Oe.isOpen?null:r.jsx(ys,{capabilities:H,draftStorageId:e,initialModel:s,workspaceId:((Es=g??G)==null?void 0:Es.workspaceId)??null,initialProviderConfigMode:n??((js=g??G)==null?void 0:js.providerConfigMode)??"global-default",initialProviderPresetId:o??((As=g??G)==null?void 0:As.providerPresetId)??null,forkDraft:ke,onClearForkDraft:()=>F(null),onForkDraftChange:k=>F(k),panelRef:te?void 0:Er,portalContainer:te?null:jr,hasActiveRun:O,contextUsage:E,taskProvider:((Ns=g??G)==null?void 0:Ns.provider)??null,taskMessages:Y,hasPendingQueuedMessages:Le,canInterrupt:ie,isSubmitting:Se,isRunning:ne,onInterrupt:he,onSend:P,onQueueSend:C})]})}),!te&&Ge?r.jsx(yr,{activePanel:Oe.activePanel,open:Oe.isOpen,sessionId:e,workspaceId:Ge,navigationGroups:d,onClose:()=>{Oe.closePanel()},onSelectPanel:k=>{Oe.selectPanel(k)},onSelectPanelBySwipe:k=>{if(k===null){Oe.closePanel();return}Oe.selectPanel(k)}}):null]}),r.jsx(ya,{open:L,navigationGroups:d,workspaceId:Ye,sessionId:e,onClose:()=>B(!1),onOpenSession:k=>{B(!1),f(k.workspaceId),Pt("preview"),y($e(k.workspaceId,k.sessionId))}}),r.jsx(Ba,{open:I,busy:m,onClose:()=>{m||S(!1)},onConfirm:async()=>{if(!m){v(!0);try{if(await j(e),S(!1),de({title:i("shell.archiveAdded"),tone:"success"}),me){if(f(me),Pt("preview"),ge){y($e(ge.workspace.id,ge.session.sessionId));return}y(yt(me));return}y("/workspaces")}catch(k){de({title:k instanceof Error?k.message:i("shell.navigationLoadFailed"),tone:"error"})}finally{v(!1)}}}}),r.jsx(kr,{open:q,workspaceName:($==null?void 0:$.workspace.name)??null,sessions:qe,restoringSessionId:w,onClose:()=>{w||D(!1)},onRestore:async k=>{V(k);try{await M(k),de({title:i("shell.archiveRestored"),tone:"success"})}catch(oe){de({title:oe instanceof Error?oe.message:i("shell.navigationLoadFailed"),tone:"error"})}finally{V(null)}}}),Pe?r.jsx(cs,{open:z,source:se?{kind:"session",sessionId:e,workspaceId:se.workspaceId,workspaceName:(h==null?void 0:h.displayName)??se.workspaceId,sessionTitle:se.title,defaultProvider:se.provider}:null,onClose:()=>X(!1),onCreated:async k=>{k.members.forEach(we=>{_(we.session)}),Us(k.group.id),await u();const oe=k.members.find(we=>we.session.sessionId===k.group.anchorSessionId)??k.members[0]??null;if(oe){const we=Ft(oe.session,oe.sessionIsolatedWorkspace);f(we),y($e(we,oe.session.sessionId))}X(!1),de({title:i("shell.parallelCreateSucceeded"),tone:"success"})}}):null]})}function ja({draft:e,navigate:t,initialToolPanel:s}){const{shellMode:n,navigationGroups:o,requestNavigationRefresh:c,selectWorkspace:l,setSessionWorkspace:d,upsertNavigationSession:u,favoriteSessions:f,unarchiveSession:x,startDraftSession:p}=vt(),[N,j]=a.useState(!1),[M,b]=a.useState([]),_=a.useMemo(()=>It(e.provider),[e.provider]),[y,I]=a.useState(_),S=n!=="mobile",{showToast:q}=rt(),D=a.useMemo(()=>Na(e),[e]),w=Pr(!S),V=xr({enabled:!S,initialPanel:s,sessionId:e.sessionId,workspaceId:e.workspaceId,suspendMainGesture:!S&&w.isVisible}),m=a.useMemo(()=>new Set(f.map(F=>F.session.sessionId)),[f]),v=a.useMemo(()=>o.map(F=>F.workspace),[o]),L=a.useMemo(()=>Yn(o),[o]),B=a.useMemo(()=>Ss(o),[o]),z=a.useMemo(()=>v.find(F=>F.id===e.workspaceId)??null,[e.workspaceId,v]),X=B[e.workspaceId]??(z?Ms(z):null),ce=a.useMemo(()=>bt(D.title??null,i("conversation.titleFallback")),[D]),G=a.useMemo(()=>vr(o,e.workspaceId,m),[e.workspaceId,m,o]),de=a.useMemo(()=>br(f,o),[f,o]),[A,g]=a.useState([]),H=a.useMemo(()=>[...de,...G],[de,G]),Y=a.useMemo(()=>$t(o,e.workspaceId),[e.workspaceId,o]),re=a.useMemo(()=>(Y==null?void 0:Y.sessions.filter(F=>F.isArchived===!0&&!Vt(F)))??[],[Y]),U=L.find(F=>F.workspace.id===e.workspaceId)??(Y?{workspace:Y.workspace,label:Y.workspace.name,subtitle:Y.workspace.path}:null),le=S?null:Ir(w.mainGestureHandlers,V.mainGestureHandlers),[E,W]=a.useState(!1),[Q,ue]=a.useState(null),R=a.useRef(null),K=a.useRef(null),Se=a.useRef(null),[Re,Ce]=a.useState(null),{composerPortalTarget:Ne}=Fn();a.useEffect(()=>{const F=Bn(H,e.sessionId,O=>O.session.sessionId);F.length!==0&&g(O=>{const ie=new Set(O);let ne=!1;for(const Te of F)ie.has(Te)||(ie.add(Te),ne=!0);return ne?Array.from(ie):O})},[e.sessionId,H]),a.useEffect(()=>(d(e.sessionId,e.workspaceId),()=>{d(e.sessionId,null)}),[e.sessionId,e.workspaceId,d]),a.useEffect(()=>{let F=!1;return I(_),Rn(e.provider,e.workspaceId).then(O=>{F||I(O)}).catch(()=>{}),()=>{F=!0}},[e.provider,e.workspaceId,_]),Sr(K,Re,!S,e.sessionId),Mr(K,Se,!S,e.sessionId);function ke(F){l(F),t(yt(F))}return r.jsx(r.Fragment,{children:r.jsxs("main",{ref:K,className:"workbench-page conversation-page-shell mobile-page-fixed-root mobile-conversation-page","data-mobile-shell":!S,"data-preview-mode":S?void 0:w.displayMode,"data-preview-dragging":S?void 0:w.isDragging,"data-workspace-tone":(X==null?void 0:X.tone)??"root","data-worktree-depth":(X==null?void 0:X.depth)??0,"data-tool-panel-open":S?void 0:V.isOpen,style:{...S?{}:w.pageStyle,...pt(X)??{}},children:[S?r.jsx(fr,{session:D,workspaceContext:X}):null,S?null:r.jsx(zn,{containerRef:Se,className:"mobile-conversation-page-header",gestureHandlers:le??void 0,currentWorkspace:U?{id:U.workspace.id,name:U.label,path:U.subtitle}:v[0]??null,workspaces:v,workspaceOptions:L,onSelectWorkspace:ke,heading:ce.fullTitle,trailing:r.jsx("span",{className:"mobile-conversation-toolbar-title",title:ce.fullTitle,children:ce.displayTitle})}),S?null:r.jsx(Rr,{visible:!V.isOpen&&w.isVisible,widthPx:w.previewWidthPx,isDragging:w.isDragging,gestureHandlers:w.railGestureHandlers,activeSessionId:e.sessionId,createSessionActionLabel:i("shell.createSession"),favoriteItems:de,items:G,expandedRootIds:A,workspaceSectionLabel:(U==null?void 0:U.label)??i("shell.mobileConversationCurrentWorkspaceSection"),onCreateSession:()=>{p(e.workspaceId,e.provider)},archiveFolderActionLabel:re.length>0?i("shell.archiveFolderLabel"):void 0,onOpenArchiveFolder:re.length>0?()=>{W(!0)}:void 0,onToggleSubsessions:F=>{g(O=>O.includes(F)?O.filter(ie=>ie!==F):[...O,F])},onActivate:F=>{w.closePreview(),l(F.workspace.id),t($e(F.workspace.id,F.session.sessionId))}}),r.jsx("div",{className:"mobile-conversation-stage",...le??{},children:r.jsxs("div",{ref:R,className:"mobile-conversation-main",children:[r.jsx(Ps,{connectionState:"closed",onReconnect:()=>{}}),r.jsx("div",{className:"conversation-timeline-shell",children:r.jsx(xs,{sessionId:e.sessionId,messages:M,historyState:"ready",loadingOlderMessages:!1,hasOlderMessages:!1,provider:e.provider,runtimeThinkingPlaceholder:null,onLoadOlderMessages:()=>{},onRetryMessage:()=>{}})}),V.isOpen?null:r.jsx(ys,{capabilities:y,draftStorageId:e.sessionId,workspaceId:e.workspaceId,panelRef:S?void 0:Ce,portalContainer:S?null:Ne,contextUsage:null,taskProvider:e.provider,taskMessages:M,isSubmitting:N,isRunning:!1,onSend:async(F,O)=>{var Te,Le,J,ve;const ie=Ga();b(ee=>[...ee,qn(e.sessionId,F,ie,(O==null?void 0:O.attachmentMeta)??[],(O==null?void 0:O.attachments)??[])]),j(!0);const ne=performance.now();pe("session_send.start_live.client_start",{draftSessionId:e.sessionId,workspaceId:e.workspaceId,provider:e.provider,clientRequestId:ie,contentLength:F.length});try{const ee=await kn({workspaceId:e.workspaceId,provider:e.provider,content:F,clientRequestId:ie,model:(O==null?void 0:O.model)??null,reasoningLevel:(O==null?void 0:O.reasoningLevel)??null,permissionMode:ct(),attachments:(O==null?void 0:O.attachments)??[],providerConfigMode:(O==null?void 0:O.providerConfigMode)??"global-default",providerPresetId:(O==null?void 0:O.providerPresetId)??null});pe("session_send.start_live.client_response",{draftSessionId:e.sessionId,sessionId:ee.sessionId,workspaceId:((Te=ee.session)==null?void 0:Te.workspaceId)??e.workspaceId,provider:ee.provider,clientRequestId:ie,durationMs:Math.round(performance.now()-ne),returnedMessageId:((Le=ee.message)==null?void 0:Le.messageId)??null}),ee.session&&u(ee.session);const _e=((ve=(J=ee.session)==null?void 0:J.workspaceId)==null?void 0:ve.trim())||e.workspaceId;d(ee.sessionId,_e),Pt("preview"),t($e(_e,ee.sessionId),{replace:!0,state:{composer:{sessionId:ee.sessionId,initialModel:(O==null?void 0:O.model)??null,providerConfigMode:(O==null?void 0:O.providerConfigMode)??"global-default",providerPresetId:(O==null?void 0:O.providerPresetId)??null},bootstrap:ee.message?{sessionId:ee.sessionId,messages:[ee.message]}:void 0}}),c()}catch(ee){throw pe("session_send.start_live.client_error",{draftSessionId:e.sessionId,workspaceId:e.workspaceId,provider:e.provider,clientRequestId:ie,durationMs:Math.round(performance.now()-ne),error:ee instanceof Error?ee.message:String(ee)}),b(_e=>us(_e,ie)),ee}finally{j(!1)}}})]})}),S?null:r.jsx(yr,{activePanel:V.activePanel,open:V.isOpen,sessionId:e.sessionId,workspaceId:e.workspaceId,navigationGroups:o,onClose:()=>{V.closePanel()},onSelectPanel:F=>{V.selectPanel(F)},onSelectPanelBySwipe:F=>{if(F===null){V.closePanel();return}V.selectPanel(F)}}),r.jsx(kr,{open:E,workspaceName:(Y==null?void 0:Y.workspace.name)??null,sessions:re,restoringSessionId:Q,onClose:()=>{Q||W(!1)},onRestore:async F=>{ue(F);try{await x(F),q({title:i("shell.archiveRestored"),tone:"success"})}catch(O){q({title:O instanceof Error?O.message:i("shell.navigationLoadFailed"),tone:"error"})}finally{ue(null)}}})]})})}function Aa(e,t,s,n=null){var l,d;if(!Ua(e))return null;const o=t??((l=s.get("workspaceId"))==null?void 0:l.trim())??null,c=((d=s.get("provider"))==null?void 0:d.trim())??n??null;return!o||!En(c)?null:{sessionId:e,workspaceId:o,provider:c}}function Na(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:io(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 gr(e){const t=new Map(e.map(o=>[o.sessionId,o])),s=new Map,n=o=>{const c=s.get(o.sessionId);if(typeof c=="boolean")return c;if(o.isArchived)return s.set(o.sessionId,!1),!1;const l=Oo(o,{mode:"mobile"});if(!l)return s.set(o.sessionId,!0),!0;const d=t.get(l);if(!d)return s.set(o.sessionId,!0),!0;const u=n(d);return s.set(o.sessionId,u),u};return e.filter(o=>n(o))}function vr(e,t,s){if(!t)return[];const n=$t(e,t);if(!n)return[];const o=gr(n.sessions).map(l=>({session:l,workspace:n.workspace}));return Wn(o,{mode:"mobile"}).filter(l=>!s.has(l.item.session.sessionId)&&!_o(l.children,d=>s.has(d.session.sessionId)))}function br(e,t){return e.filter(s=>!Vt(s.session)).flatMap(s=>{const n=$t(t,s.workspace.id);if(!n)return[];const o=Wn(gr(n.sessions).map(l=>({session:l,workspace:n.workspace})),{mode:"mobile"}),c=wr(o,s.session.sessionId);return c?[c]:[]})}function wr(e,t){for(const s of e){if(s.item.session.sessionId===t)return s;const n=wr(s.children,t);if(n)return n}return null}function Sr(e,t,s,n){a.useEffect(()=>{const o=e.current;if(!s||!o){o&&o.style.removeProperty("--mobile-conversation-composer-height");return}if(!t){o.style.removeProperty("--mobile-conversation-composer-height");return}const c=o,l=t;function d(){!e.current||!l.isConnected||c.style.setProperty("--mobile-conversation-composer-height",`${l.offsetHeight}px`)}d();const u=typeof ResizeObserver<"u"?new ResizeObserver(d):null;return u==null||u.observe(l),window.addEventListener("resize",d),()=>{u==null||u.disconnect(),window.removeEventListener("resize",d),o.style.removeProperty("--mobile-conversation-composer-height")}},[t,s,n,e])}function Mr(e,t,s,n){a.useEffect(()=>{const o=e.current,c=t.current;if(!s||!o){o&&o.style.removeProperty("--mobile-conversation-page-header-height");return}if(!c){o.style.removeProperty("--mobile-conversation-page-header-height");return}const l=o,d=c;function u(){!e.current||!d.isConnected||l.style.setProperty("--mobile-conversation-page-header-height",`${d.offsetHeight}px`)}u();const f=typeof ResizeObserver<"u"?new ResizeObserver(u):null;return f==null||f.observe(d),window.addEventListener("resize",u),()=>{f==null||f.disconnect(),window.removeEventListener("resize",u),o.style.removeProperty("--mobile-conversation-page-header-height")}},[s,t,n,e])}function La(e){return e==="files"||e==="git"||e==="processes"?e:null}function Ir(...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 xr(e){const t=Is(),s=ut(),n=bs(),o=a.useRef(null),[c,l]=a.useState(()=>e.initialPanel??Xs()),d=e.initialPanel??c,u=e.enabled&&e.workspaceId!==null&&e.initialPanel!==null;a.useEffect(()=>{if(!e.enabled){o.current=null;return}const I=e.initialPanel??Xs();l(I),Gs(I)},[e.enabled,e.initialPanel]);function f(I,S){const q=new URLSearchParams(t.search);I?(q.set("toolPanel",I),l(I),Gs(I)):q.delete("toolPanel");const D=q.toString();s({pathname:t.pathname,search:D?`?${D}`:""},{replace:(S==null?void 0:S.replace)??!1})}function x(I){n.trigger("selection"),f(I,{replace:u})}function p(){u&&(n.trigger("gesture"),f(null,{replace:!0}))}function N(I){if(!e.enabled||!e.workspaceId)return;const S=I??d;n.trigger("gesture"),f(S)}function j(I){if(!e.enabled||I.changedTouches.length!==1){o.current=null;return}if(_a(I.target)){o.current=null;return}const S=I.changedTouches[0];o.current={x:S.clientX,y:S.clientY}}function M(I){const S=o.current;if(o.current=null,!S||I.changedTouches.length!==1||u||e.suspendMainGesture)return;const q=I.changedTouches[0],D=q.clientX-S.x,w=q.clientY-S.y;D>-56||Math.abs(D)<=Math.abs(w)*1.15||N()}function b(I){const S=o.current;if(o.current=null,!S||I.changedTouches.length!==1||!u)return;const q=I.changedTouches[0],D=q.clientX-S.x,w=q.clientY-S.y;D<56||Math.abs(D)<=Math.abs(w)*1.15||p()}return{activePanel:d,closePanel:p,isOpen:u,mainGestureHandlers:{onTouchStart:j,onTouchMove:()=>{},onTouchEnd:M,onTouchCancel:()=>{o.current=null}},openPanel:N,panelGestureHandlers:{onTouchStart:j,onTouchMove:()=>{},onTouchEnd:b,onTouchCancel:()=>{o.current=null}},selectPanel:x}}function yr(e){const t=a.useRef(null);if(!e.open)return null;function s(o){if(o.changedTouches.length!==1){t.current=null;return}if(Da(o.target)){t.current=null;return}const c=o.changedTouches[0];t.current={x:c.clientX,y:c.clientY}}function n(o){const c=t.current;if(t.current=null,!c||o.changedTouches.length!==1)return;const l=o.changedTouches[0],d=l.clientX-c.x,u=l.clientY-c.y;if(Math.abs(d)<56||Math.abs(d)<=Math.abs(u)*1.15)return;const f=["files","git","processes"],x=f.indexOf(e.activePanel);if(d<0){e.onSelectPanelBySwipe(f[Math.min(f.length-1,x+1)]??e.activePanel);return}if(x===0){e.onSelectPanelBySwipe(null);return}e.onSelectPanelBySwipe(f[Math.max(0,x-1)]??e.activePanel)}return r.jsxs("section",{className:"mobile-conversation-tool-panel","data-panel":e.activePanel,onTouchStart:s,onTouchEnd:n,onTouchCancel:()=>{t.current=null},children:[r.jsxs("header",{className:"mobile-conversation-tool-panel-header","data-preview-gesture":"ignore",children:[r.jsx("button",{type:"button",className:"mobile-conversation-tool-panel-back","aria-label":i("shell.mobileConversationToolCloseAction"),title:i("shell.mobileConversationToolCloseAction"),onClick:e.onClose,children:r.jsx("span",{"aria-hidden":"true",children:"‹"})}),r.jsx("div",{className:"mobile-conversation-tool-panel-tabs",role:"tablist","aria-label":i("shell.mobileConversationToolTabsLabel"),children:["files","git","processes"].map(o=>r.jsx("button",{type:"button",role:"tab","aria-selected":e.activePanel===o,className:"mobile-conversation-tool-panel-tab",onClick:()=>{e.onSelectPanel(o)},children:o==="files"?i("shell.filesEntry"):o==="git"?i("shell.gitEntry"):i("shell.mobileConversationToolProcessesTab")},o))})]}),r.jsx("div",{className:"mobile-conversation-tool-panel-body",children:e.activePanel==="files"?r.jsx($n,{className:"mobile-conversation-tool-surface",hideHeading:!0,sessionId:e.sessionId,workspaceId:e.workspaceId}):e.activePanel==="git"?r.jsx(Xn,{className:"mobile-conversation-tool-surface",panelActive:!0,workspaceId:e.workspaceId}):r.jsx(Gn,{className:"mobile-conversation-tool-surface mobile-tool-native-panel mobile-tool-process-panel",currentWorkspaceId:e.workspaceId,navigationGroups:e.navigationGroups})})]})}function _a(e){return e instanceof Element?!!e.closest("input, textarea, select, option, label, button, a, [contenteditable='true'], [data-preview-gesture='ignore']"):!1}function Da(e){return e instanceof Element?!!e.closest("input, textarea, select, option, [contenteditable='true']"):!1}function Pr(e){const t=bs(),[s,n]=a.useState(()=>e?zt():"immersive"),[o,c]=a.useState(()=>yn()),[l,d]=a.useState(()=>e&&zt()==="preview"?"default":"closed"),u=a.useRef(l),f=a.useRef(null);a.useEffect(()=>{u.current=l},[l]),a.useEffect(()=>{if(!e){f.current=null,u.current="closed",d("closed"),n("immersive");return}const m=zt();n(m),d(m==="preview"?"default":"closed")},[e]),a.useEffect(()=>{e&&Pt(s)},[e,s]),a.useEffect(()=>{if(typeof window>"u")return;function m(){c(yn())}return m(),window.addEventListener("resize",m),()=>{window.removeEventListener("resize",m)}},[]);function x(m){u.current=m,d(m)}function p(m="default"){x(m),n("preview")}function N(){x("closed"),n("immersive")}function j(){x("expanded"),n("preview")}function M(){if(u.current!=="closed"){t.trigger("gesture"),N();return}t.trigger("gesture"),p()}function b(m,v){const L=v.touches[0]??v.changedTouches[0];if(!e||!L){f.current=null;return}if(Ha(v.target)){f.current=null;return}if(m==="main"){if(u.current==="closed"&&L.clientX>Ta){f.current=null;return}}else if(u.current==="closed"){f.current=null;return}f.current={source:m,intent:m==="rail"?"rail":u.current==="closed"?"open":"close",startX:L.clientX,startY:L.clientY,lastX:L.clientX,lastY:L.clientY,horizontalLocked:!1}}function _(m){const v=f.current,L=m.touches[0];if(!e||!v||!L)return;const B=L.clientX-v.startX,z=L.clientY-v.startY;if(v.lastX=L.clientX,v.lastY=L.clientY,!v.horizontalLocked){if(Math.abs(B)<xn&&Math.abs(z)<xn)return;if(Math.abs(B)<=Math.abs(z)){f.current=null;return}if(v.intent==="open"&&B<=0){f.current=null;return}if(v.intent==="close"&&B>=0){f.current=null;return}v.horizontalLocked=!0}}function y(m){var z;const v=f.current;if(f.current=null,!(v!=null&&v.horizontalLocked))return;const L=(z=m==null?void 0:m.changedTouches)==null?void 0:z[0];L&&(v.lastX=L.clientX,v.lastY=L.clientY);const B=v.lastX-v.startX;if(v.intent==="open"){B>=Ca&&(t.trigger("gesture"),p("default"));return}if(v.intent==="close"){B<=-34&&(t.trigger("gesture"),N());return}if(B<=-34){t.trigger("gesture"),N();return}B>=ka&&u.current==="default"&&(t.trigger("gesture"),j())}const I=l==="expanded"?as:l==="default"?In:0,S=Math.round(o*I*100)/100,q=I===0?0:I/as,D={"--mobile-conversation-preview-default-width":`${Math.round(o*In*100)/100}px`,"--mobile-conversation-preview-max-width":`${Math.round(o*as*100)/100}px`,"--mobile-conversation-preview-width":`${S}px`,"--mobile-conversation-preview-progress":q.toFixed(4)};return{closePreview:N,displayMode:l==="closed"?"immersive":"preview",isDragging:!1,isVisible:l!=="closed",mainGestureHandlers:{onTouchStart:m=>b("main",m),onTouchMove:_,onTouchEnd:y,onTouchCancel:y},pageStyle:D,previewWidthPx:S,railGestureHandlers:{onTouchStart:m=>b("rail",m),onTouchMove:_,onTouchEnd:y,onTouchCancel:y},togglePreview:M}}function Rr({visible:e,widthPx:t,isDragging:s,gestureHandlers:n,activeSessionId:o,createSessionActionLabel:c,favoriteItems:l,items:d,expandedRootIds:u,workspaceSectionLabel:f,onCreateSession:x,archiveCurrentActionLabel:p,archiveFolderActionLabel:N,onArchiveActiveSession:j,onOpenArchiveFolder:M,onToggleSubsessions:b,onActivate:_}){if(!e)return null;function y(I,S){const{workspaceName:q,ancestorExpanded:D=!1,ancestorHasNextSiblings:w=[],hasNextSibling:V=!1,isFirstSibling:m=!1}=S??{},v=I.item.session.sessionId,L=I.children,B=I.depth===0&&L.length>0,z=D||B&&u.includes(v),X=I.depth>0?[...w,V]:[...w];return r.jsxs("div",{className:"mobile-conversation-preview-tree-node",children:[r.jsxs("div",{className:"mobile-conversation-preview-tree-row",style:{"--mobile-preview-tree-depth":I.depth},children:[I.depth>0?r.jsxs("div",{className:"mobile-conversation-preview-guides","aria-hidden":"true",children:[w.map((ce,G)=>ce?r.jsx("span",{className:"mobile-conversation-preview-guide-column",style:{"--mobile-preview-tree-level":G+1}},`${v}:ancestor:${G}`):null),r.jsx("span",{className:"mobile-conversation-preview-guide-branch","data-continue":V,"data-first":m,style:{"--mobile-preview-tree-level":I.depth},children:r.jsx("span",{className:"mobile-conversation-preview-guide-branch-horizontal"})})]}):null,r.jsx(Oa,{entry:I.item,activeSessionId:o,hasSubsessions:B,subsessionsExpanded:z,workspaceName:q,onToggleSubsessions:B?()=>{b(v)}:void 0,onActivate:_})]}),L.length>0&&z?r.jsx("div",{className:"mobile-conversation-preview-children",children:L.map((ce,G)=>y(ce,{workspaceName:q,ancestorExpanded:!0,ancestorHasNextSiblings:X,hasNextSibling:G<L.length-1,isFirstSibling:G===0}))}):null]},`${I.item.workspace.id}:${v}`)}return r.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:[c&&x?r.jsx("div",{className:"mobile-conversation-preview-topbar terminal-mobile-list-footer",children:r.jsxs("button",{type:"button",className:"mobile-conversation-preview-create-button workbench-import-toggle terminal-mobile-list-create",onClick:x,children:[r.jsx("span",{className:"workbench-import-toggle-symbol","aria-hidden":"true",children:"+"}),r.jsx("span",{className:"workbench-import-toggle-label",children:c})]})}):null,r.jsxs("div",{className:"mobile-conversation-preview-body terminal-mobile-list-body",children:[l.length>0?r.jsxs("section",{className:"mobile-conversation-preview-group mobile-conversation-preview-list-favorites terminal-mobile-list-group terminal-mobile-list-group-pinned",children:[r.jsxs("div",{className:"mobile-conversation-preview-group-heading terminal-mobile-list-group-heading",children:[r.jsx("span",{children:i("shell.favoriteSectionTitle")}),r.jsx("span",{className:"workbench-section-counter",children:l.length})]}),r.jsx("div",{className:"mobile-conversation-preview-list mobile-conversation-preview-list-static terminal-mobile-session-list",children:l.map(I=>r.jsx("div",{children:y(I,{workspaceName:I.item.workspace.name})},`favorite:${I.item.workspace.id}:${I.item.session.sessionId}`))})]}):null,r.jsxs("section",{className:"mobile-conversation-preview-group mobile-conversation-preview-group-workspace terminal-mobile-list-group terminal-mobile-list-group-workspace",children:[r.jsxs("div",{className:"mobile-conversation-preview-group-heading terminal-mobile-list-group-heading",children:[r.jsx("span",{children:f}),r.jsx("span",{className:"workbench-section-counter",children:d.length})]}),d.length===0?r.jsx("div",{className:"workbench-session-empty",children:i("shell.emptyWorkspaceSessions")}):r.jsx("div",{className:"mobile-conversation-preview-list terminal-mobile-session-list","data-preview-gesture":"ignore",children:d.map(I=>y(I))})]})]}),p&&j||N&&M?r.jsxs("div",{className:"mobile-conversation-preview-actions terminal-mobile-list-footer",children:[p&&j?r.jsx("button",{type:"button",className:"mobile-conversation-preview-archive-button workbench-import-toggle",onClick:()=>{j()},children:p}):null,N&&M?r.jsx("button",{type:"button",className:"mobile-conversation-preview-archive-button workbench-import-toggle",onClick:M,children:N}):null]}):null]})}function Oa({entry:e,activeSessionId:t,hasSubsessions:s=!1,subsessionsExpanded:n=!1,onActivate:o,onToggleSubsessions:c,workspaceName:l}){const d=e.session.sessionId===t;return r.jsxs("article",{className:"mobile-conversation-preview-entry terminal-mobile-session-card","data-active":d,children:[s?r.jsx("button",{type:"button",className:"mobile-conversation-preview-toggle","aria-label":n?i("shell.subagentCollapse"):i("shell.subagentExpand"),title:n?i("shell.subagentCollapse"):i("shell.subagentExpand"),"aria-expanded":n,onClick:u=>{u.stopPropagation(),c==null||c()},children:r.jsx("span",{className:Pn(e.session,{isActive:d,hasSubsessions:s}),"aria-hidden":"true"})}):r.jsx("span",{className:Pn(e.session,{isActive:d,hasSubsessions:s}),"aria-hidden":"true"}),r.jsx("button",{type:"button",className:"mobile-conversation-preview-item terminal-mobile-session-primary","data-active":d,onClick:()=>o(e),children:r.jsxs("div",{className:"mobile-conversation-preview-item-body",children:[r.jsx("span",{className:"mobile-conversation-preview-item-title",children:e.session.title||i("common.unknown")}),r.jsx("span",{className:"mobile-conversation-preview-item-meta",children:Cr(e.session,l)})]})})]})}function yn(){return typeof window>"u"?390:Math.max(window.innerWidth||390,320)}function Ha(e){return e instanceof Element?!!e.closest("input, textarea, select, option, label, [contenteditable='true'], [data-preview-gesture='ignore']"):!1}function Pn(e,t){const s=Ho("mobile-conversation-preview-indicator",e,{hasSubagents:t.hasSubsessions});return s.endsWith(" is-idle")&&t.isActive?"mobile-conversation-preview-indicator is-active":s}function Cr(e,t){const s=Hn(e);return[t??null,Ct(e.provider),Fa(e.lastMessageAt??e.updatedAt),s].filter(Boolean).join(" · ")}function Fa(e){return e?new Date(e).toLocaleString(void 0,{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"}):i("common.unknown")}function Ba({open:e,busy:t,onClose:s,onConfirm:n}){return r.jsx(qt,{open:e,title:i("shell.archiveConfirmTitle"),description:i("shell.archiveConfirmDescription"),size:"narrow",layout:"confirm",dismissible:!t,showCloseButton:!1,footer:r.jsxs(Ut,{children:[r.jsx("button",{type:"button",className:"secondary-button",disabled:t,onClick:s,children:i("common.cancel")}),r.jsx("button",{type:"button",className:"secondary-button workbench-danger-button",disabled:t,onClick:()=>{n()},children:i("shell.archiveAction")})]}),onClose:s,children:r.jsx(r.Fragment,{})})}function kr({open:e,workspaceName:t,sessions:s,restoringSessionId:n,onClose:o,onRestore:c}){return r.jsx(qt,{open:e,title:i("shell.archiveModalTitle"),description:t?`${t} · ${i("shell.archiveModalDescription")}`:i("shell.archiveModalDescription"),size:"regular",layout:"list",dismissible:!n,showCloseButton:!1,onClose:o,children:s.length>0?r.jsx(ao,{className:"workbench-archive-list",children:s.map(l=>{const d=bt(l.title,i("common.unknown"));return r.jsx(lo,{className:"workbench-archive-item",trailing:r.jsx("button",{type:"button",className:"secondary-button",disabled:n===l.sessionId,onClick:()=>{c(l.sessionId)},children:i("shell.unarchiveAction")}),children:r.jsxs("div",{className:"workbench-archive-item-main",children:[r.jsx("strong",{title:d.fullTitle,children:d.displayTitle}),r.jsx("p",{children:Cr(l)})]})},l.sessionId)})}):r.jsx(co,{title:i("shell.archiveEmpty"),compact:!0,className:"workbench-section-empty"})})}function Wa(e){return r.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":i("conversation.branchTreeAction"),title:i("conversation.branchTreeAction"),onClick:e.onOpenBranchTree,children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx($o,{})})})}function qa(){return r.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[r.jsx("path",{d:"M4 3.25a1.75 1.75 0 1 1 0 3.5a1.75 1.75 0 0 1 0-3.5Zm0 6a1.75 1.75 0 1 1 0 3.5a1.75 1.75 0 0 1 0-3.5Zm8-3a1.75 1.75 0 1 1 0 3.5a1.75 1.75 0 0 1 0-3.5Z",fill:"none",stroke:"currentColor",strokeWidth:"1.4"}),r.jsx("path",{d:"M5.75 5h2.15c1.35 0 2.45 1.1 2.45 2.45v.1M5.75 11h2.15c1.35 0 2.45-1.1 2.45-2.45V8.4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.4"})]})}function Ua(e){return e.startsWith("draft-")}function Va(e,t){if(!t||typeof t!="object")return[];const s=t.bootstrap;if(!s||typeof s!="object")return[];const n=s.sessionId,o=s.messages;return n!==e||!Array.isArray(o)?[]:o.filter(Xa)}function $a(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,o=s.initialModel,c=s.providerConfigMode,l=s.providerPresetId;if(n!==e)return{initialModel:null,providerConfigMode:"global-default",providerPresetId:null};const d=typeof o=="string"&&o.trim()||null,u=typeof l=="string"&&l.trim()||null,f=c==="cc-switch-preset"&&u?"cc-switch-preset":"global-default";return{initialModel:d,providerConfigMode:f,providerPresetId:f==="cc-switch-preset"?u:null}}function Xa(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 Ga(){const e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}export{pl as ConversationPage};