@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
@@ -0,0 +1,4 @@
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 _r=Object.defineProperty;var Dr=(e,t,s)=>t in e?_r(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var Pe=(e,t,s)=>Dr(e,typeof t!="symbol"?t+"":t,s);import{t as i,b as a,u as Or,E as Hr,j as r,m as Gt,A as Fr,_ as Ds}from"./index-DSw-TkQL.js";import{D as Ut,W as Br}from"./WorkbenchModal-LNfB69qx.js";import{l as Wr,m as qr,n as Ur,o as Bt,p as yt,q as Vr,s as Cn,t as $r,v as Vt,f as ft,h as Ht,a as Tt,M as Xr,w as Rn,x as bs,y as kn,z as Tn,A as Gr,S as Yr,B as zr,C as Qr,D as Kr,E as Zr,F as Jr,G as eo,H as cs,I as Os,J as to,K as so,L as no,N as ro,O as En,u as oo,e as ws,P as io,Q as ao,R as lo,T as co,U as uo,i as ho,j as mo,V as po}from"./model-switch-api-C-l8-E1S.js";import{u as wt,R as Hs,S as Nt,T as Fs,U as fo,V as go,X as Yt,Y as Bs,Z as vo,f as Ws,_ as dt,c as Ye,$ as bo,a0 as wo,a1 as So,a2 as Io,a3 as Mo,J as xo,i as jn,b as qs,a4 as Lt,a5 as fe,w as yo,a6 as Po,r as An,a7 as Ss,L as Is,a8 as Ft,a9 as Ms,aa as us,ab as Co,ac as Ro,ad as Us,H as ko,ae as To,F as Eo,af as jo,ag as Nn,ah as gt,ai as Ao,aj as ds,n as Ct,ak as No,al as Lo,am as _o,an as Do,o as Oo,C as St,ao as Ln,ap as _n,aq as Dn,ar as On,D as Hn,g as $t,as as Fn,Q as Bn,at as Ho,au as Vs,N as Wn,av as Fo,aw as Bo,ax as Wo,M as qo,K as Uo}from"./WorkbenchLayout-DlbgBT3n.js";import{f as ct,u as mt,e as jt,g as bt,h as xs,c as Vo}from"./App-B9HcTkMT.js";import{B as $o,M as Xo,m as It,c as $s,a as qn,i as Go,r as Xs,b as hs,R as Yo,g as zo,p as Un,P as Vn,d as ys,C as Ps,e as Qo}from"./session-runtime-machine-DgtvREca.js";import{FileContextPanel as $n}from"./FileContextPanel-CdC7GGw5.js";import{GitSidebar as Xn}from"./GitSidebar-z2SBinQh.js";import{TerminalManagerPanel as Gn}from"./TerminalManagerPanel-BOm8Hi_v.js";import{TerminalPage as Ko}from"./TerminalPage-B5JNFU6w.js";import{f as Yn,a as Xt,M as zn}from"./MobileWorkspaceSwitcherHeader-CuGJ31kb.js";import{w as Rt,r as zt,a as Gs,b as Ys}from"./styles-DRVvx_kv.js";import"./window-BVUB8gMK.js";import"./event-DvH9tcej.js";import"./relay-entry-BmLkMKuq.js";import"./file-tree-icon-9pt1OStn.js";import"./terminal-runtime-meta-0h-75uRy.js";import"./TerminalRuntimeFallbackModal-CM3LRKOJ.js";import"./MobileTopHeaderFrame-etF2HKlm.js";function Cs({connectionState:e,onReconnect:t}){const{showToast:s,dismissToast:n}=ct(),o=Wr(),c=o?i(qr(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 Zo=48;function Jo(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 ei(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(!Jo(e))throw new Error(i("conversation.copyContentFailed"))}}function zs(e,t,s){return Math.min(Math.max(e,t),s)}function Qt(e,t=Bt){return e&&t.includes(e)?e:t[0]??"codex"}function ti(e){return Bt.includes(e)}function si(e,t){const s=e.flatMap(n=>ti(n)?[n]:[]);return s.length>0?s:t?[t]:[]}function ms(e){return e?e.nodeType===Node.ELEMENT_NODE?e:e.parentElement:null}function Qs(e){var s,n;const t=ms(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 ni(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=ms(s.startContainer),o=ms(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 u=Qs(s.startContainer),d=Qs(s.endContainer);return{text:c,sourceMessageId:u&&u===d?u:null,rect:{left:l.left,top:l.top,right:l.right,bottom:l.bottom,width:l.width,height:l.height}}}function ri({containerRef:e,session:t,currentCapabilities:s}){const n=mt(),o=jt(),{showToast:c}=ct(),{shellMode:l,requestNavigationRefresh:u,selectWorkspace:d,upsertNavigationSession:f}=wt(),M=Or(h=>h.profile.providers),p=a.useMemo(()=>Hs(t==null?void 0:t.providerConfigMode,t==null?void 0:t.providerPresetId),[t==null?void 0:t.providerConfigMode,t==null?void 0:t.providerPresetId]),[L,A]=a.useState(null),[S,v]=a.useState(null),[k,x]=a.useState(!1),{visibleProviders:I}=Ur(Bt,k),[b,W]=a.useState(""),[_,P]=a.useState(!1),[E,m]=a.useState(Qt(t==null?void 0:t.provider)),[g,N]=a.useState(Nt),[U,X]=a.useState(p.providerConfigMode),[G,re]=a.useState(p.providerPresetId),[$,pe]=a.useState({}),[V,w]=a.useState(!1),[q,Z]=a.useState(null),[Y,D]=a.useState({}),[ce,T]=a.useState(!1),[F,z]=a.useState(!1),[ie,te]=a.useState(!1),[be,Ee]=a.useState(0),[je,H]=a.useState(null),[Q,Le]=a.useState(()=>({width:typeof window>"u"?0:window.innerWidth,height:typeof window>"u"?0:window.innerHeight})),O=a.useRef(!1),B=a.useRef(!1),ue=a.useRef(!1),he=a.useRef(null),me=a.useRef(null),Ue=l==="mobile"||o.isMobile,Oe=a.useMemo(()=>h=>{var K,ne;return(Hr(h)?(ne=(K=M[h])==null?void 0:K.defaultModel)==null?void 0:ne.trim():null)||Nt},[M]),J=a.useMemo(()=>Hs(U,G),[U,G]),se=a.useMemo(()=>si(I,E),[E,I]),we=a.useMemo(()=>Fs(E),[E]),y=a.useMemo(()=>we?$[we]??null:null,[$,we]),C=a.useMemo(()=>fo(y),[y]),ge=a.useMemo(()=>go(y),[y]),Ce=J.providerConfigMode==="cc-switch-preset"?J.providerPresetId??Yt:Yt,Se=a.useMemo(()=>ge.find(h=>h.value===Ce)??ge[0]??null,[ge,Ce]),qe=a.useMemo(()=>E===(t==null?void 0:t.provider)&&J.providerConfigMode===p.providerConfigMode&&J.providerPresetId===p.providerPresetId&&s?s:q??yt(E),[s,q,E,J.providerConfigMode,J.providerPresetId,t==null?void 0:t.provider,p.providerConfigMode,p.providerPresetId]),oe=a.useMemo(()=>{var K;const h=yt(E).modelOptions??[];return(K=qe.modelOptions)!=null&&K.length?qe.modelOptions:h},[qe.modelOptions,E]),Ae=a.useMemo(()=>oe.map(h=>({value:h.id,label:Bs(h)?i("conversation.modelUseCliDefault"):h.name})),[oe]),ee=a.useMemo(()=>oe.find(h=>h.id===g)??oe[0]??null,[oe,g]),Je=a.useMemo(()=>{const h=ee?Bs(ee)?i("conversation.modelUseCliDefault"):ee.name:i("conversation.modelUseCliDefault");return C?`${(Se==null?void 0:Se.label)??i("conversation.deploymentDefaultPreset")} · ${h}`:h},[ee,Se,C]),ae=a.useCallback(h=>{if(m(h),N(Oe(h)),t&&h===t.provider&&Fs(h)){X(p.providerConfigMode),re(p.providerPresetId);return}X("global-default"),re(null)},[Oe,t,p.providerConfigMode,p.providerPresetId]),Ne=a.useMemo(()=>{const h=Y[E]??(E===(t==null?void 0:t.provider)&&J.providerConfigMode===p.providerConfigMode&&J.providerPresetId===p.providerPresetId?s:q);return!h||h.canStartSession!==!1?null:h.limitations[0]??i("conversation.capabilityDenied")},[s,q,Y,E,J.providerConfigMode,J.providerPresetId,t==null?void 0:t.provider,p.providerConfigMode,p.providerPresetId]),_e=a.useMemo(()=>{var xe;if(!L||typeof window>"u")return null;const h=(xe=e.current)==null?void 0:xe.getBoundingClientRect(),K=h?Math.max(80,h.left+80):96,ne=h?Math.min(Q.width-80,h.right-80):Q.width-96,ve=h?Math.max(12,h.top+12):12,He=h?Math.max(ve,h.bottom-48):Math.max(12,Q.height-48),Fe=L.rect.left+L.rect.width/2;return{left:zs(Fe,K,Math.max(K,ne)),top:zs(L.rect.top-48,ve,He)}},[e,L,Q.height,Q.width]);a.useEffect(()=>{if(typeof window>"u")return;const h=()=>{Le({width:window.innerWidth,height:window.innerHeight})};return h(),window.addEventListener("resize",h),()=>{window.removeEventListener("resize",h)}},[]),a.useEffect(()=>{if(!t){me.current!==null&&typeof window<"u"&&(window.clearTimeout(me.current),me.current=null),he.current=null,ue.current=!1,A(null),v(null),x(!1);return}const h=Qt(t.provider);ae(h)},[ae,t]),a.useEffect(()=>{if(!k){w(!1);return}if(!we){w(!1);return}let h=!1;return w(!0),Vr().then(K=>{h||pe(Object.fromEntries(K.items.map(ne=>[ne.app,ne])))}).catch(()=>{h||pe({})}).finally(()=>{h||w(!1)}),()=>{h=!0}},[k,we]),a.useEffect(()=>{!we||J.providerConfigMode!=="cc-switch-preset"||!J.providerPresetId||V||!y||y.options.some(h=>h.id===J.providerPresetId)||(X("global-default"),re(null))},[V,y,we,J.providerConfigMode,J.providerPresetId]),a.useEffect(()=>{if(!t||!e.current||typeof window>"u"){me.current!==null&&(window.clearTimeout(me.current),me.current=null),he.current=null,ue.current=!1,A(null),v(null);return}const h=e.current,K=ye=>{O.current||(he.current=ye,A(ye),ye||x(!1))},ne=()=>{me.current!==null&&(window.clearTimeout(me.current),me.current=null)},ve=(ye,at)=>{if(he.current=ye,ne(),at!=null&&at.immediate){K(ye);return}me.current=window.setTimeout(()=>{me.current=null,K(he.current)},Zo)},He=()=>{const ye=Kt(h);if(ue.current){he.current=ye;return}ve(ye)},Fe=()=>{const ye=Kt(h);if(ue.current){he.current=ye;return}ve(ye,{immediate:!0})},xe=ye=>{!(ye.target instanceof Node)||!h.contains(ye.target)||(ue.current=!0,ne())},ke=()=>{ue.current&&(ue.current=!1,ve(Kt(h)))};return document.addEventListener("pointerdown",xe),document.addEventListener("selectionchange",He),window.addEventListener("pointerup",ke),window.addEventListener("pointercancel",ke),window.addEventListener("mouseup",ke),window.addEventListener("touchend",ke),window.addEventListener("resize",Fe),window.addEventListener("scroll",Fe,!0),()=>{ne(),document.removeEventListener("pointerdown",xe),document.removeEventListener("selectionchange",He),window.removeEventListener("pointerup",ke),window.removeEventListener("pointercancel",ke),window.removeEventListener("mouseup",ke),window.removeEventListener("touchend",ke),window.removeEventListener("resize",Fe),window.removeEventListener("scroll",Fe,!0)}},[e,t]),a.useEffect(()=>{(!k||!(S!=null&&S.sourceMessageId))&&P(!1)},[k,S==null?void 0:S.sourceMessageId]),a.useEffect(()=>{if(!k||!t)return;let h=!1;return E===t.provider&&J.providerConfigMode===p.providerConfigMode&&J.providerPresetId===p.providerPresetId&&s?(T(!1),Z(s),()=>{h=!0}):(T(!0),Z(yt(E)),Cn(E,t.workspaceId,we?{providerConfigMode:J.providerConfigMode,providerPresetId:J.providerPresetId}:void 0).then(K=>{h||Z(K)}).catch(()=>{h||Z(yt(E))}).finally(()=>{h||T(!1)}),()=>{h=!0})},[k,s,we,E,J.providerConfigMode,J.providerPresetId,t,p.providerConfigMode,p.providerPresetId]),a.useEffect(()=>{if(!k||!t){D({});return}let h=!1;return $r(se,t.workspaceId).then(K=>{h||D(K)}),()=>{h=!0}},[k,t,se]),a.useEffect(()=>{if(!k||!t)return;const h=se.filter(ne=>{const ve=Y[ne];return!ve||ve.canStartSession!==!1});if(h.length===0||h.includes(E))return;const K=h[0];ae(K)},[k,ae,Y,E,t,se]),a.useEffect(()=>{var K;const h=Oe(E);if(!oe.some(ne=>ne.id===g)){if(oe.some(ne=>ne.id===h)){N(h);return}N(((K=oe[0])==null?void 0:K.id)??Nt)}},[oe,Oe,g,E]),a.useEffect(()=>{if(!k){O.current=!1;return}O.current=!0},[k]),a.useEffect(()=>{if(typeof window>"u")return;const h=K=>{K.key==="Escape"&&(x(!1),v(null),A(null),O.current=!1)};return window.addEventListener("keydown",h),()=>{window.removeEventListener("keydown",h)}},[]);async function Me(){var K,ne;if(!L)return;const h=L.text;A(null),typeof window<"u"&&((ne=(K=window.getSelection())==null?void 0:K.removeAllRanges)==null||ne.call(K));try{await ei(h,o),c({title:i("conversation.copyContentSuccess"),tone:"success"})}catch(ve){c({title:ve instanceof Error?ve.message:i("conversation.copyContentFailed"),tone:"error"})}}function et(){L&&(H({title:"",content:L.text}),Ee(h=>h+1),te(!0),x(!1),v(null),A(null),O.current=!1)}function nt(){var ne,ve;if(!L||!t)return;const h=L,K=Qt(t.provider,se.length>0?se:Bt);ae(K),W(""),P(!1),v(h),A(null),x(!0),typeof window<"u"&&((ve=(ne=window.getSelection())==null?void 0:ne.removeAllRanges)==null||ve.call(ne))}function rt(h){h.preventDefault(),O.current=!0}function Ke(){B.current=!0,nt()}function Te(){if(B.current){B.current=!1;return}nt()}async function ot(){var h,K,ne,ve;if(!(!S||!t)){if(Ne){c({title:Ne,tone:"error"});return}z(!0);try{const He=ni(S.text,b),Fe=(ee==null?void 0:ee.id)===Nt?null:(ee==null?void 0:ee.id)??null;let xe=null;if(_&&S.sourceMessageId)xe=await Rn(t.sessionId,{sourceType:"message",sourceMessageId:S.sourceMessageId,strategy:"auto",targetProvider:E,providerConfigMode:J.providerConfigMode,providerPresetId:J.providerPresetId,sessionKind:"annotation",annotationSourceMessageId:S.sourceMessageId,annotationSourceText:S.text}),f(xe),await bs(xe.sessionId,{content:He,clientRequestId:((K=(h=globalThis.crypto)==null?void 0:h.randomUUID)==null?void 0:K.call(h))??`selection-action-${Date.now()}-${Math.random().toString(16).slice(2)}`,model:Fe,permissionMode:dt(),providerConfigMode:J.providerConfigMode,providerPresetId:J.providerPresetId});else{const ke=await kn({workspaceId:t.workspaceId,provider:E,content:He,clientRequestId:((ve=(ne=globalThis.crypto)==null?void 0:ne.randomUUID)==null?void 0:ve.call(ne))??`selection-action-${Date.now()}-${Math.random().toString(16).slice(2)}`,model:Fe,permissionMode:dt(),providerConfigMode:J.providerConfigMode,providerPresetId:J.providerPresetId,parentSessionId:t.sessionId,sessionKind:"annotation",annotationSourceMessageId:S.sourceMessageId??null,annotationSourceText:S.text});xe=ke.session??await Tn(ke.sessionId)}f(xe),u(),d(xe.workspaceId),n(Ye(xe.workspaceId,xe.sessionId)),x(!1),v(null),A(null),O.current=!1}catch(He){c({title:He instanceof Error?He.message:i("conversation.selectionActionFailed"),tone:"error"})}finally{z(!1)}}}function Ve(h=!1){x(!1),v(null),O.current=!1,h&&A(null)}const ut=!!(!k&&L&&_e),it=!!(k&&S),Re=r.jsxs(Vt,{children:[r.jsx("button",{type:"button",className:"secondary-button",onClick:()=>Ve(!1),children:i("common.cancel")}),r.jsx("button",{type:"button",className:"primary-button",disabled:F||!!Ne||se.length===0,onClick:()=>void ot(),children:F?i("conversation.sendingState"):i("conversation.selectionActionSubmit")})]}),De=S?r.jsxs(r.Fragment,{children:[r.jsx(ft,{className:"conversation-selection-preview-section",heading:i("conversation.selectionActionPreviewLabel"),children:r.jsx("div",{className:"conversation-selection-action-dialog-quote",children:S.text})}),r.jsxs(ft,{className:"conversation-selection-request-section",children:[r.jsx(Ht,{className:"conversation-selection-field conversation-selection-prompt-field",label:i("conversation.selectionActionPromptLabel"),children:r.jsx("textarea",{value:b,rows:4,placeholder:i("conversation.selectionActionPromptPlaceholder"),onChange:h=>W(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:_,disabled:!S.sourceMessageId,onChange:h=>P(h.target.checked)}),r.jsx("span",{children:i("conversation.selectionActionIncludeContext")})]}),S.sourceMessageId?null:r.jsx("p",{className:"conversation-selection-hint",children:i("conversation.selectionActionContextUnavailable")}),Ne?r.jsx("p",{className:"conversation-selection-hint",children:Ne}):null]})]}),r.jsx(ft,{className:"conversation-selection-target-section",heading:i("conversation.selectionActionTargetLabel"),children:r.jsxs("div",{className:"conversation-selection-grid",children:[r.jsx(Ht,{className:"conversation-selection-field",label:i("conversation.forkTargetProviderLabel"),children:r.jsx("select",{value:E,onChange:h=>{ae(h.target.value)},children:se.map(h=>{var K;return r.jsx("option",{value:h,disabled:((K=Y[h])==null?void 0:K.canStartSession)===!1,children:Tt(h,"full")},h)})})}),r.jsx(Ht,{className:"conversation-selection-field",label:i("conversation.forkTargetModelLabel"),children:we?r.jsx("div",{className:"conversation-selection-deployment-select",children:r.jsx(vo,{ariaLabel:i("conversation.forkTargetModelLabel"),triggerLabel:Je,presetOptions:ge,selectedPresetValue:Ce,selectedPresetSummary:(Se==null?void 0:Se.summary)??null,onSelectPreset:h=>{if(h===Yt){X("global-default"),re(null);return}X("cc-switch-preset"),re(h)},modelOptions:Ae,selectedModelValue:g,onSelectModel:N,loadingPresets:V,loadingModels:ce,modelColumnDisabled:ce||!!Ne,showPresetColumn:C,modelEmptyText:i("conversation.deploymentModelEmpty")})}):r.jsx("select",{value:g,disabled:ce||!!Ne,onChange:h=>N(h.target.value),children:oe.map(h=>r.jsx("option",{value:h.id,children:h.name},h.id))})})]})})]}):null;return!t||!ut&&!it||typeof document>"u"?r.jsx(Ws,{open:ie,preferredWorkspaceId:(t==null?void 0:t.workspaceId)??null,preferredSessionId:(t==null?void 0:t.sessionId)??null,creationRequestId:be,initialDraft:je,onClose:()=>te(!1)}):r.jsxs(r.Fragment,{children:[bt.createPortal(ut?r.jsxs("div",{className:"conversation-selection-toolbar",style:_e??void 0,onMouseDown:h=>h.preventDefault(),children:[r.jsx("button",{type:"button",className:"conversation-selection-action",onClick:()=>void Me(),children:i("conversation.copyAction")}),r.jsx("button",{type:"button",className:"conversation-selection-action",onClick:et,children:i("conversation.selectionTodoAction")}),r.jsx("button",{type:"button",className:"conversation-selection-action is-primary",onPointerDown:rt,onMouseDown:rt,onPointerUp:Ke,onClick:Te,children:i("conversation.selectionActionButton")})]}):null,document.body),Ue?r.jsx(Xr,{open:it,title:i("conversation.selectionActionButton"),height:"auto",kind:"form",showHandle:!0,showCancelButton:!1,cardClassName:"conversation-selection-action-dialog",bodyClassName:"conversation-selection-action-dialog-body",footer:Re,onClose:()=>Ve(!1),children:De}):r.jsx(Ut,{open:it,title:i("conversation.selectionActionButton"),size:"compact",layout:"form",className:"conversation-selection-action-dialog",bodyClassName:"conversation-selection-action-dialog-body",footer:Re,onClose:()=>Ve(!1),children:De}),r.jsx(Ws,{open:ie,preferredWorkspaceId:t.workspaceId,preferredSessionId:t.sessionId,creationRequestId:be,initialDraft:je,onClose:()=>te(!1)})]})}const Mt=5,Qn=["codex","claude-code"];function Kn(){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=Kn()[0])==null?void 0:e.value)??""}function Jt(e,t=Qn){return e==="claude-code"&&t.includes("claude-code")?"claude-code":t.includes("codex")?"codex":t[0]??null}function Zn(e){return e==="codex"||e==="claude-code"}function oi(e){return e.flatMap(t=>!t.enabled||!Zn(t.provider)?[]:[t.provider])}function Jn({session:e,showTrigger:t=!0,openRequestKey:s=0}){const{showToast:n}=ct(),{requestNavigationRefresh:o}=wt(),c=a.useId(),l=a.useId(),u=a.useId(),d=a.useId(),[f,M]=a.useState(!1),[p,L]=a.useState(!1),[A,S]=a.useState(null),[v,k]=a.useState(null),[x,I]=a.useState(null),[b,W]=a.useState(null),[_,P]=a.useState(Jt(e==null?void 0:e.provider)),[E,m]=a.useState(""),[g,N]=a.useState(()=>Zt()),[U,X]=a.useState(Mt),[G,re]=a.useState(!1),[$,pe]=a.useState(0),V=Kn(),w=a.useMemo(()=>b?oi(b):Qn,[b]),q=b!==null&&w.length===0,Z=a.useMemo(()=>{var H;return((H=e==null?void 0:e.title)==null?void 0:H.trim())||null},[e==null?void 0:e.title]),Y=a.useMemo(()=>A?{workspaceId:A.workspaceId,project:A.project,session:A.session}:null,[A]),D=(A==null?void 0:A.latestFollowUpTask)??null,ce=(A==null?void 0:A.latestVerificationRun)??null,T=D&&(D.status==="active"||D.status==="waiting_user")?D:null,F=ce&&(ce.status==="queued"||ce.status==="running")?ce:null;a.useEffect(()=>{M(!1),re(!1),k(null),S(null),W(null),m(""),P(Jt(e==null?void 0:e.provider)),N(Zt()),X(Mt)},[e==null?void 0:e.sessionId]),a.useEffect(()=>{if(!(e!=null&&e.sessionId)){W(null);return}let H=!1;return Gr().then(Q=>{H||W(Q)}).catch(()=>{H||W(null)}),()=>{H=!0}},[e==null?void 0:e.sessionId]),a.useEffect(()=>{const H=Jt(e==null?void 0:e.provider,w);(!_||!w.includes(_))&&P(H)},[w,_,e==null?void 0:e.provider]),a.useEffect(()=>{if(!(e!=null&&e.sessionId)){L(!1);return}let H=!1;return L(!0),k(null),bo(e.sessionId).then(Q=>{H||S(Q.context)}).catch(Q=>{H||(S(null),k(Q instanceof Error?Q.message:i("conversation.butlerActionLoadFailed")))}).finally(()=>{H||L(!1)}),()=>{H=!0}},[$,e==null?void 0:e.sessionId]);function z(){p||pe(H=>H+1)}function ie(){!A&&!p&&z()}if(a.useEffect(()=>{t||s<=0||(M(!0),ie())},[p,s,t,A]),!(e!=null&&e.sessionId))return null;async function te(){if(!Y){ie();return}if(!_)return;const H=E.trim(),Q=g.trim();if(!H){n({title:i("conversation.butlerFollowUpObjectiveRequired"),tone:"warning"});return}if(!Q){n({title:i("conversation.butlerFollowUpCompletionCriteriaRequired"),tone:"warning"});return}I("follow-up");try{const Le=await Mo({projectId:Y.project.id,butlerSessionId:Y.session.id,providerId:_,objective:H,completionCriteria:Q,maxAutoContinueCount:U});S(O=>O&&{...O,latestFollowUpTask:Le.task}),o(),n({title:i("conversation.butlerFollowUpStarted"),description:i("conversation.butlerFollowUpStartedDescription",{projectName:Y.project.name}),tone:"success"}),m(""),N(Zt()),X(Mt),M(!1)}catch(Le){n({title:i("conversation.butlerFollowUpFailed"),description:Le instanceof Error?Le.message:void 0,tone:"error"})}finally{I(null)}}async function be(){if(D){I("follow-up");try{const H=await wo(D.id);S(Q=>Q&&{...Q,latestFollowUpTask:H.task}),o(),n({title:i("conversation.butlerFollowUpStopped"),description:i("conversation.butlerFollowUpStoppedDescription"),tone:"success"}),M(!1)}catch(H){n({title:i("conversation.butlerFollowUpStopFailed"),description:H instanceof Error?H.message:void 0,tone:"error"})}finally{I(null)}}}async function Ee(){if(!Y){ie();return}I("verification");try{const H=await Io({projectId:Y.project.id,butlerSessionId:Y.session.id,verificationType:"browser",targetRef:Z||Y.session.title||Y.project.name});S(Q=>Q&&{...Q,latestVerificationRun:H.result.run}),o(),n({title:i("conversation.butlerVerificationStarted"),description:i("conversation.butlerVerificationStartedDescription",{projectName:Y.project.name}),tone:"success"}),M(!1)}catch(H){n({title:i("conversation.butlerVerificationFailed"),description:H instanceof Error?H.message:void 0,tone:"error"})}finally{I(null)}}async function je(){if(ce){I("verification");try{const H=await So(ce.projectId,ce.id);S(Q=>Q&&{...Q,latestVerificationRun:H.run}),o(),n({title:i("conversation.butlerVerificationStopped"),description:i("conversation.butlerVerificationStoppedDescription"),tone:"success"}),M(!1)}catch(H){n({title:i("conversation.butlerVerificationStopFailed"),description:H instanceof Error?H.message:void 0,tone:"error"})}finally{I(null)}}}return r.jsxs(r.Fragment,{children:[t?r.jsxs("div",{className:"conversation-butler-entry",onMouseEnter:()=>{re(!0),ie()},onMouseLeave:()=>{re(!1)},children:[r.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":i("conversation.butlerActionButton"),title:i("conversation.butlerActionButton"),onFocus:()=>{re(!0),ie()},onBlur:()=>{re(!1)},onClick:()=>{M(!0),ie()},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx($o,{})})}),G?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")}):v?r.jsx("p",{children:v}):D?r.jsxs(r.Fragment,{children:[r.jsxs("p",{children:[i("conversation.butlerAnalysisObjectiveLabel"),":",D.objective]}),r.jsxs("p",{children:[i("conversation.butlerAnalysisStatusLabel"),":",Ks(D.status)]}),r.jsxs("p",{children:[i("conversation.butlerAnalysisSummaryLabel"),":",D.lastAutomationSummary||D.waitingReason||i("conversation.butlerAnalysisEmpty")]}),D.waitingReason?r.jsxs("p",{children:[i("conversation.butlerAnalysisWaitingReasonLabel"),":",D.waitingReason]}):null]}):r.jsx("p",{children:i("conversation.butlerAnalysisEmpty")})]}):null]}):null,r.jsx(Br,{open:f,title:i("conversation.butlerActionModalTitle"),description:i("conversation.butlerActionModalDescription"),className:"conversation-butler-modal-card",footer:!p&&!v&&Y?r.jsxs(Vt,{children:[r.jsx("button",{type:"button",className:"secondary-button",disabled:x!==null,onClick:()=>{Ee()},children:i("conversation.butlerVerificationAction")}),r.jsx("button",{type:"button",className:"primary-button",disabled:x!==null||q||!_,onClick:()=>{te()},children:i("conversation.butlerFollowUpAction")})]}):void 0,onClose:()=>{x||M(!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&&v?r.jsx("p",{className:"conversation-butler-modal-error",children:v}):null,!p&&!v&&Y?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:Y.project.name})]}),r.jsxs("div",{className:"conversation-butler-target-card",children:[r.jsx("span",{children:i("conversation.butlerActionSessionLabel")}),r.jsx("strong",{children:Y.session.title||Z||Y.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")})]}),q?r.jsx("p",{className:"conversation-butler-modal-hint",children:i("conversation.butlerFollowUpProviderHint")}):r.jsx(Yr,{workspaceId:Y.workspaceId,providers:w,selectedProvider:_,disabled:x!==null,onSelect:H=>{Zn(H)&&P(H)}})]}),r.jsxs("div",{className:"workbench-modal-field conversation-butler-modal-field conversation-butler-round-limit-field",children:[r.jsxs("div",{className:"conversation-butler-field-heading",children:[r.jsx("label",{htmlFor:d,children:i("conversation.butlerFollowUpRoundLimitLabel")}),r.jsx("small",{children:i("conversation.butlerFollowUpRoundLimitHint")})]}),r.jsx("input",{id:d,type:"number",min:1,max:20,value:U,disabled:x!==null,onChange:H=>{const Q=Number.parseInt(H.target.value,10);X(Number.isFinite(Q)?Q:Mt)}})]})]}),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:E,placeholder:i("conversation.butlerFollowUpObjectivePlaceholder"),disabled:x!==null,onChange:H=>{m(H.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:u,children:i("conversation.butlerCompletionTemplateSectionHint")})]}),r.jsx("textarea",{id:l,rows:3,value:g,placeholder:i("conversation.butlerFollowUpCompletionCriteriaPlaceholder"),"aria-describedby":u,disabled:x!==null,onChange:H=>{N(H.target.value)}}),r.jsx("div",{className:"conversation-butler-preset-grid",role:"group","aria-label":i("conversation.butlerCompletionTemplateSectionLabel"),children:V.map(H=>r.jsxs("button",{type:"button",className:"conversation-butler-preset-card","data-selected":g.trim()===H.value,"aria-pressed":g.trim()===H.value,disabled:x!==null,onClick:()=>{N(H.value)},children:[r.jsx("strong",{children:H.label}),r.jsx("span",{children:H.description})]},H.id))})]}),T||F?r.jsxs("div",{className:"conversation-butler-meta-grid",children:[T?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(T.status)}),r.jsx("small",{children:i("conversation.butlerCurrentFollowUpProgress",{current:T.autoContinueCount,max:T.maxAutoContinueCount??Mt})}),r.jsx("button",{type:"button",className:"workbench-secondary-button",disabled:x!==null,onClick:()=>{be()},children:i("conversation.butlerStopFollowUpAction")})]}):null,F?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:ii(F.status)}),r.jsx("small",{children:F.targetRef||F.verificationType}),r.jsx("button",{type:"button",className:"workbench-secondary-button",disabled:x!==null,onClick:()=>{je()},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 ii(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 ai=340;function li({session:e,onOpenBranchTree:t}){const s=mt(),n=xs(),o=a.useRef(null),c=a.useRef(null),[l,u]=a.useState(!1),[d,f]=a.useState(null),[M,p]=a.useState(null),[L,A]=a.useState(0);a.useEffect(()=>{u(!1),f(null)},[n.pathname,n.search]),a.useLayoutEffect(()=>{if(!l||!d||typeof window>"u"){p(null);return}const P=()=>{var N,U;const g=xo(d,{width:((N=c.current)==null?void 0:N.offsetWidth)??0,height:((U=c.current)==null?void 0:U.offsetHeight)??0},{width:window.innerWidth,height:window.innerHeight},{estimatedHeightPx:ai});p({position:"fixed",left:`${Math.round(g.left)}px`,top:`${Math.round(g.top)}px`,width:`${Math.round(g.width)}px`,maxWidth:"calc(100vw - 24px)",maxHeight:`${Math.round(g.maxHeight)}px`,transformOrigin:g.transformOrigin})},E=g=>{var U,X;const N=g.target;N&&!((U=c.current)!=null&&U.contains(N))&&!((X=o.current)!=null&&X.contains(N))&&v()},m=g=>{g.key==="Escape"&&v()};return P(),window.addEventListener("pointerdown",E),window.addEventListener("keydown",m),window.addEventListener("resize",P),window.addEventListener("scroll",P,!0),()=>{window.removeEventListener("pointerdown",E),window.removeEventListener("keydown",m),window.removeEventListener("resize",P),window.removeEventListener("scroll",P,!0)}},[d,l]);function S(){var E;const P=(E=o.current)==null?void 0:E.getBoundingClientRect();P&&(f({x:P.right,y:P.bottom}),u(!0))}function v(){u(!1),f(null)}function k(P){s(P),v()}function x(P){const E=new URLSearchParams(n.search);E.set("toolPanel",P),k(`${n.pathname}?${E.toString()}`)}function I(){if(l){v();return}S()}function b(P){P.key!=="ContextMenu"&&!(P.shiftKey&&P.key==="F10")||(P.preventDefault(),P.stopPropagation(),S())}if(!e)return null;const W=[{key:"assistant",label:i("shell.butlerEntry"),onSelect:()=>{A(P=>P+1),v()}},...t?[{key:"branch",label:i("conversation.branchAction"),onSelect:()=>{t(),v()}}]:[],{key:"files",label:i("shell.filesEntry"),onSelect:()=>{x("files")}},{key:"git",label:i("shell.gitEntry"),onSelect:()=>{x("git")}},{key:"processes",label:i("shell.mobileConversationToolProcessesTab"),onSelect:()=>{x("processes")}}],_=l&&typeof document<"u"?bt.createPortal(r.jsx("div",{ref:c,className:"session-action-menu mobile-conversation-action-menu surface-card",role:"menu","aria-label":i("conversation.moreSessionActions"),style:M??{position:"fixed",top:0,left:0,visibility:"hidden"},onClick:P=>P.stopPropagation(),children:W.map(P=>r.jsx("button",{type:"button",className:"session-action-menu-item mobile-conversation-action-menu-item",role:"menuitem",onClick:P.onSelect,children:P.label},P.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:b,children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(Xo,{})})}),r.jsx(Jn,{session:e,showTrigger:!1,openRequestKey:L})]}),_]})}function er({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,u)=>{const d=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:u+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,d?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 ci(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(ui(n,o,c)){l.current=!0;return}l.current&&(l.current=!1,s(!1))},[c,o,t,n,s])}function ui(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 di=30,es=80,Pt=60,tr=600,Zs=300*1e3,hi=600,mi=5e3,pi=1e4;class fi{constructor(t,s={}){Pe(this,"state");Pe(this,"listeners",new Set);Pe(this,"realtimeClient",null);Pe(this,"historyBootstrapFallbackTimer",null);Pe(this,"historyBootstrapEnvelopeReceived",!1);Pe(this,"markSeenTimer",null);Pe(this,"markSeenInFlight",!1);Pe(this,"lastMarkSeenRequestAt",0);Pe(this,"seenWatermark",null);Pe(this,"runtimeRefreshTimer",null);Pe(this,"runtimeRefreshMode",null);Pe(this,"replaceSnapshotSeedOnBackfill",!1);Pe(this,"olderHistoryPrefetchCursor",null);Pe(this,"olderHistoryPrefetchPromise",null);Pe(this,"prefetchedOlderHistoryPage",null);Pe(this,"pendingReplyDebugTraces",[]);Pe(this,"hasAuthoritativeBootstrapMessages");Pe(this,"subscribe",t=>(this.listeners.add(t),()=>{this.listeners.delete(t)}));Pe(this,"getState",()=>this.state);var l;this.sessionId=t,this.options=s;const n=qs(is(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=It((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)<Pt&&((n==null?void 0:n.pagesLoaded)??0)<=1,this.state=$s({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=It(this.state.messages,this.sessionId,t),n=this.hasAuthoritativeBootstrapMessages;this.patch({messages:s,historyState:Ii(this.state.session,n?s.length:0),loadingOlderMessages:!1,olderCursor:n?null:this.state.olderCursor,hasOlderMessages:pt({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=qs(is(this.sessionId),Zs);this.state=$s({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:It((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)<Pt&&((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:pt({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)??[],vi(this.state.messages,this.state.session));this.patch({messages:Go(this.state.messages,o),session:Ze(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:Xs(this.state.messages,this.sessionId,c.message,n)})}catch(c){throw this.failPendingReplyDebugTrace(n,c),this.patch({messages:hs(this.state.messages,n),session:Ze(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:Xs(this.state.messages,this.sessionId,n.message,t)})}catch(n){throw this.failPendingReplyDebugTrace(t,n),this.patch({messages:hs(this.state.messages,t),session:Ze(this.state.session,"failed")}),n}}}async enqueueMessage(t,s){const n=an();try{const o=await zr(this.sessionId,{content:t,clientRequestId:n,model:(s==null?void 0:s.model)??null,reasoningLevel:(s==null?void 0:s.reasoningLevel)??null,permissionMode:dt(),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:Ai(this.state.queuedMessages,o)}),await this.refreshQueue()}catch(o){throw o}}async deleteQueuedMessage(t){await Qr(this.sessionId,t),await this.refreshQueue()}async steerQueuedMessage(t){await Kr(this.sessionId,t),await this.refreshRuntimeSnapshot("queue_steer")}async interrupt(){await Zr(this.sessionId),this.patch({session:Ze(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 Jr(this.sessionId,t,s);this.patch({permissionRequests:as(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,es)))throw new Error("REALTIME_NOT_CONNECTED")}catch(s){const n=s instanceof Error?s.message:"unknown";this.patch({loadingOlderMessages:!1,errorCode:"HISTORY_LOAD_MORE_FAILED",errorDetail:n})}}}destroy(){var t;this.clearHistoryBootstrapFallbackTimer(),this.clearOlderHistoryPrefetch(),(t=this.realtimeClient)==null||t.close(),this.realtimeClient=null,this.pendingReplyDebugTraces.length=0,this.markSeenTimer!==null&&(window.clearTimeout(this.markSeenTimer),this.markSeenTimer=null),this.runtimeRefreshTimer!==null&&(window.clearTimeout(this.runtimeRefreshTimer),this.runtimeRefreshTimer=null),this.runtimeRefreshMode=null}startRealtime(){var s;if(!((s=Gt.getState().session)==null?void 0:s.accessToken)){Gt.clear();return}this.realtimeClient=new Yo({sessionId:this.sessionId,cursor:this.state.lastCursor,limit:Pt,onSubscribed:()=>{fe("session_send.realtime_subscribed",{sessionId:this.sessionId,lastCursor:this.state.lastCursor}),this.patch({connectionState:"connected",hasOlderMessages:pt({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)?Ze(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 u,d;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:xt(n.messages),currentMessages:xt(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:xt(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:pt({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:Ze(this.state.session,sn(n.type,(u=this.state.session)==null?void 0:u.runningState))}),(d=this.realtimeClient)==null||d.updateCursor(n.cursor),this.scheduleMarkSeen(),this.scheduleOlderHistoryPrefetch(n.type==="session.backfill"?"backfill":"delta"),this.state.queuedMessages.length>0&&this.refreshQueue()},onOlderHistory:n=>{this.applyOlderHistoryPage({messages:n.messages,nextCursor:n.olderCursor},"realtime")},onRuntimeMessage:n=>{this.handleRuntimeMessage(n)},onActivity:n=>{this.handleActivity(n)},onRuntimeStatus:n=>{this.handleRuntimeStatus(n)},onRuntimeError:n=>{this.handleRuntimeError(n)},onInterrupted:n=>{this.handleInterrupted(n)},onPermissionRequest:n=>{this.handlePermissionRequest(n)},onPermissionRequestResolved:n=>{this.handlePermissionRequestResolved(n)},onError:n=>{this.patch({loadingOlderMessages:!1,errorCode:n.error_code,errorDetail:n.detail})},onUnauthorized:()=>{Gt.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&&bi(this.state.messages,t),c=o?this.state.messages.filter(u=>u.deliveryState!=="sent"):this.state.messages,l=It(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(hi,s);this.markSeenTimer=window.setTimeout(()=>{this.markSeenTimer=null;const o=this.getTargetSeenAt();o!==null&&(fe("session_seen.start",{sessionId:this.sessionId,targetSeenAt:o,seenWatermark:this.seenWatermark}),this.markSeenInFlight=!0,this.lastMarkSeenRequestAt=Date.now(),eo(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),fe("session_seen.end",{sessionId:this.sessionId,seenWatermark:this.seenWatermark})}).catch(()=>{fe("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(tr,Math.max(Pt,this.state.messages.length,di)),s=await cs(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:pt({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}),fe("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,fe("session.history_older.prefetch.start",{sessionId:this.sessionId,requestedCursor:t,reason:s,limit:es});const n=cs(this.sessionId,t,es,"backward").then(c=>(this.state.olderCursor===t&&(this.prefetchedOlderHistoryPage={requestedCursor:t,page:c}),fe("session.history_older.prefetch.end",{sessionId:this.sessionId,requestedCursor:t,messageCount:c.messages.length,nextCursor:c.nextCursor}),c)).catch(c=>(fe("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,fe("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,fe("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,fe("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"?pi:1200))}async refreshRuntimeState(t,s){var n,o,c,l,u;fe("session_runtime.refresh.start",{sessionId:this.sessionId,mode:t,reason:s,connectionState:this.state.connectionState,runningState:((n=this.state.session)==null?void 0:n.runningState)??null});try{const d=await Os(this.sessionId),f=rs(this.state.runtimeHasActiveRun,d.runningState,d.hasActiveRun),M=os(this.state.runtimeCanInterrupt,d.runningState,f,d.canInterrupt);this.patch({session:en(this.state.session,d),runtimeHasActiveRun:f,runtimeCanInterrupt:M,contextUsage:d.contextUsage,...ss(d,this.state.interruptSource)}),await this.refreshQueue();const p=t==="poll"&&this.state.connectionState!=="connected"&&Qe((o=this.state.session)==null?void 0:o.runningState);fe("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(d){fe("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:d instanceof Error?d.message:"unknown"}),t==="poll"&&this.state.connectionState!=="connected"&&Qe((u=this.state.session)==null?void 0:u.runningState)&&this.scheduleRuntimeRefresh("poll","connection_poll_retry")}}async refreshSessionMetadata(){const t=[];this.state.session===null&&t.push(Tn(this.sessionId).then(s=>{this.patch({session:_t(s,this.state.session)})}).catch(()=>{})),tn(this.state.capabilities)&&t.push(to(this.sessionId).then(s=>{this.patch({capabilities:s})}).catch(()=>{})),t.length!==0&&await Promise.allSettled(t)}async refreshPermissionRequests(){try{const t=await so(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||Ei(this.state.session,this.state.runtimeHasActiveRun,this.state.runtimeCanInterrupt)}async refreshRuntimeSnapshot(t){fe("session_runtime.snapshot.start",{sessionId:this.sessionId,reason:t});try{const s=await Os(this.sessionId),n=rs(this.state.runtimeHasActiveRun,s.runningState,s.hasActiveRun),o=os(this.state.runtimeCanInterrupt,s.runningState,n,s.canInterrupt);this.patch({session:en(this.state.session,s),runtimeHasActiveRun:n,runtimeCanInterrupt:o,contextUsage:s.contextUsage,...ss(s,this.state.interruptSource)}),await this.refreshQueue(),fe("session_runtime.snapshot.end",{sessionId:this.sessionId,reason:t,hasContextUsage:s.contextUsage!==null})}catch(s){fe("session_runtime.snapshot.error",{sessionId:this.sessionId,reason:t,message:s instanceof Error?s.message:"unknown"})}}async refreshQueue(){try{const t=await no(this.sessionId);this.patch({queuedMessages:t.items})}catch{return}}async sendMessageWithFallback(t,s,n){var o;try{return await bs(this.sessionId,{content:t,clientRequestId:s,model:(n==null?void 0:n.model)??null,reasoningLevel:(n==null?void 0:n.reasoningLevel)??null,permissionMode:dt(),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 Fr)||c.status!==404&&c.status!==405||(((o=n==null?void 0:n.attachments)==null?void 0:o.length)??0)>0)throw c;return fe("session_send.live_fallback",{sessionId:this.sessionId,clientRequestId:s,reason:c.message}),ro(this.sessionId,{content:t,clientRequestId:s,permissionMode:dt()})}}handleRuntimeStatus(t){var n;const s=ts((n=this.state.session)==null?void 0:n.runningState,t.status);this.patch({session:Ze(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}),Et(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=rs(this.state.runtimeHasActiveRun,t.runningState,t.hasActiveRun),n=os(this.state.runtimeCanInterrupt,t.runningState,s,t.canInterrupt);if(this.patch({session:xi(this.state.session,t),runtimeHasActiveRun:s,runtimeCanInterrupt:n,...ss(t,this.state.interruptSource)}),Et(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:sr(t.message),currentMessages:xt(this.state.messages)});const s=It(this.state.messages,this.sessionId,[t.message]);Lt("runtime_message.merged",{sessionId:this.sessionId,source:t.source,mergedMessages:xt(s)}),this.logCodexMergeDebug("runtime_message",this.state.messages,[t.message],s,{runtimeSource:t.source}),this.patch({messages:s,historyState:"ready",hasOlderMessages:pt({session:this.state.session,loadedMessageCount:s.length,olderCursor:this.state.olderCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages}),session:Ze(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=ts((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:Ze(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=ts((n=this.state.session)==null?void 0:n.runningState,"interrupted");this.completePendingReplyDebugTraceWithoutAssistant("session_send.client_interrupted",{detail:t.detail}),this.clearRuntimeRefreshTimer(),this.patch({session:Ze(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:as(this.state.permissionRequests,t.request)})}handlePermissionRequestResolved(t){this.patch({permissionRequests:as(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,mi-(Date.now()-this.lastMarkSeenRequestAt))}applySeenWatermark(t){return!t||!this.seenWatermark?t:Js(t,this.seenWatermark)}emit(){for(const t of this.listeners)t()}persistSnapshot(){yo(is(this.sessionId),{session:this.state.session,capabilities:this.state.capabilities,runtimeHasActiveRun:this.state.runtimeHasActiveRun,runtimeCanInterrupt:this.state.runtimeCanInterrupt,contextUsage:this.state.contextUsage,messages:ji(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),fe(`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(),fe(`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&&(fe(`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();fe(`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&&(fe(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(Pi);if(l.length===0)return;const u=rn(s),d=rn(o);Po("session.messages.merge",{sessionId:this.sessionId,source:t,beforeCount:s.length,incomingCount:n.length,afterCount:o.length,incoming:l.slice(0,5).map(Ri),beforeDuplicateGroupCount:u.length,afterDuplicateGroupCount:d.length,afterDuplicateGroups:d.slice(0,3),...c})}}function sr(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:gi(e.content)}}function xt(e){return e.map(t=>sr(t))}function gi(e){const t=e.replace(/\s+/g," ").trim();return t.length>80?`${t.slice(0,80)}...`:t}function Be(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 nr(e){const t=e==null?void 0:e.messageCount;return typeof t=="number"&&Number.isFinite(t)?t:null}function vi(e,t){const s=zo(e),n=nr(t);return n===null?s:Math.max(s,n+1)}function bi(e,t){const s=wi(t);if(!s)return!1;const n=Si(e);return n?Rs(s.sequence,s.timestamp,n.sequence,n.timestamp)>=0:!0}function wi(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 Si(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 Ii(e,t){return t>0?"ready":"loading"}function Mi(e,t){const s=nr(e);return s!==null?s>t:t>=Pt}function pt(e){return e.olderCursor?!0:e.pagesLoaded>1?e.currentHasOlderMessages:Mi(e.session,e.loadedMessageCount)}function Ze(e,t){return e&&{...e,runningState:t,activityState:or(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 rr(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 xi(e,t){return rr(e,t)}function rr(e,t){if(!e)return e;const s=yi(t.activityResolutionSource),n=Et(t.runningState)?ns(e.completedAt,t.updatedAt):null,o=t.runningState==="completed"||t.runningState==="interrupted"||t.runningState==="failed"?ns(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:ns(e.updatedAt,t.updatedAt)??t.updatedAt,activityState:or(e,t.runningState,n,t.hasActiveRun)}}function or(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 Et(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 ts(e,t){return Et(e)?e:t}function ss(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 yi(e){return e==="authoritative_runtime"||e==="authoritative_provider_event"?"runtime":e==="inferred_log"?"inferred":"none"}function Pi(e){return e.provider==="codex"&&(e.role==="assistant"||e.role==="tool")}function Ci(e){return e.rawRef.startsWith("codex://")&&e.deliveryState==="sent"&&(e.role==="assistant"||e.role==="tool")}function Ri(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:ir(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:ir(e.content,e.kind)}}function rn(e){const t=new Map;for(const n of e){if(!Ci(n))continue;const o=ki(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((u,d)=>u.sequence!==d.sequence?u.sequence-d.sequence:u.timestamp.localeCompare(d.timestamp));let l=[];for(const u of c){const d=l.at(-1)??null;if(!d||Ti(d,u)){l.push(u);continue}l.length>1&&s.push({signature:n,messages:l.map(nn)}),l=[u]}l.length>1&&s.push({signature:n,messages:l.map(nn)})}return s}function ki(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=ps(t.text),n=t.inlineImages.map(l=>l.url).join("|");return[e.role,e.kind,s,n].join(":")}function Ti(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 ir(e,t){return t==="text"||t==="thinking"?ps(Un(e).text).slice(0,160):ps(e).slice(0,160)}function ps(e){return e.replace(/\r\n/g,`
4
+ `).trimEnd()}function on(e){const t=Date.parse(e);return Number.isFinite(t)?t:0}function ns(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 ar(e,t){return t&&(!e||e.provider===t.provider)?t:null}function ln(e,t){const s=ar(e,t);return s?!!s.canSendMessage:e?En(e.provider):!1}function cn(e,t){const s=ar(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 Ei(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 rs(e,t,s){return s?!0:e===!0&&Qe(t)}function os(e,t,s,n){return n?!0:e===!0&&(s||Qe(t))}function is(e){return`session-runtime.snapshot.${e}`}function ji(e){return e.filter(t=>t.deliveryState==="sent").slice(-tr)}function Ai(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 as(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||un(e,t)||dn(e,t))return e;if(un(t,e)||dn(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 un(e,t){return hn(e)&&!hn(t)&&e.lastEventAt===t.lastEventAt&&e.lastMessageAt===t.lastMessageAt&&e.completedAt===t.completedAt}function dn(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 Et(e.runningState)}const Ni="workbench:focus-composer",Li=15e3,_i=320;function lr(){typeof window>"u"||window.dispatchEvent(new CustomEvent(Ni))}function cr(e){var J,se,we;const t=a.useRef(null),s=a.useRef(null),[n,o]=a.useState(!1),[c,l]=a.useState(null),[u,d]=a.useState(null),[f,M]=a.useState(null),[p,L]=a.useState(null),A=ct(),{showToast:S}=A,v=A.dismissToast??(()=>{}),k=oo(y=>y.notificationPreferences.notifyOnPermissionRequest),x=jt(),I=ws(),b=a.useRef(null),W=a.useRef(null),_=a.useRef(null),P=a.useRef(((J=e.externalSession)==null?void 0:J.runningState)??null),E=a.useRef(new Set);(!t.current||s.current!==e.sessionId)&&((se=t.current)==null||se.destroy(),t.current=new fi(e.sessionId,{initialSession:e.externalSession,bootstrapMessages:e.bootstrapMessages??[],onSeen:e.onSeen}),s.current=e.sessionId);const m=t.current,g=Be(m,y=>y.session),N=Be(m,y=>y.capabilities),U=Be(m,y=>y.runtimeHasActiveRun),X=Be(m,y=>y.runtimeCanInterrupt),G=Be(m,y=>y.messages),re=Be(m,y=>y.permissionRequests),$=Be(m,y=>y.queuedMessages),pe=Be(m,y=>y.contextUsage),V=Be(m,y=>y.historyState),w=Be(m,y=>y.errorCode),q=Be(m,y=>y.errorDetail),Z=Be(m,y=>y.interruptSource),Y=Be(m,y=>y.loadingOlderMessages),D=Be(m,y=>y.hasOlderMessages),ce=Be(m,y=>y.connectionState),T=jn(g),F=n&&!p,z=T||U===!0||F?!0:U,ie=X===!0||F?!0:X,te=T||F,be=(g==null?void 0:g.provider)===(N==null?void 0:N.provider)&&io(N),Ee=$.some(y=>y.status==="queued"||y.status==="dispatching"),je=g??e.externalSession??null,H=e.enableForkTimelineSanitizer===!1?G:Ui(je,G),Q=Hi({sessionId:e.sessionId,provider:(g==null?void 0:g.provider)??null,runningState:(g==null?void 0:g.runningState)??null,activityState:(g==null?void 0:g.activityState)??null,runtimeHasActiveRun:U,messages:H}),Le=e.enableThinkingPlaceholder===!1||!Q?null:i("conversation.runtimeThinkingPlaceholder",{provider:i("conversation.providerCodex")});ci({sending:n,setSending:o,session:g,runtimeHasActiveRun:U,runtimeCanInterrupt:X}),a.useEffect(()=>{m.applyNavigationSession(e.externalSession)},[e.externalSession,m]),a.useEffect(()=>(m.initialize(),()=>{m.destroy(),t.current===m&&(t.current=null)}),[m]),a.useEffect(()=>{L(null),E.current.clear()},[e.sessionId]),a.useEffect(()=>{if(e.onBindSessionWorkspace)return e.onBindSessionWorkspace(e.sessionId,(g==null?void 0:g.workspaceId)??null),()=>{var y;(y=e.onBindSessionWorkspace)==null||y.call(e,e.sessionId,null)}},[e.onBindSessionWorkspace,e.sessionId,g==null?void 0:g.workspaceId]),a.useEffect(()=>{if(e.enableCompletionHaptics===!1)return;const y=P.current,C=(g==null?void 0:g.runningState)??null;(y==="starting"||y==="running"||y==="reconnecting")&&C==="completed"&&I.trigger("success"),P.current=C},[I,e.enableCompletionHaptics,g==null?void 0:g.runningState]),a.useEffect(()=>{var Ce;if((e.permissionRequestNotificationMode??"always")==="current_only"&&!e.isCurrent)return;const C=re.filter(Se=>Se.status==="pending"),ge=(g==null?void 0:g.workspaceId)??((Ce=e.externalSession)==null?void 0:Ce.workspaceId)??null;for(const Se of C)E.current.has(Se.id)||(E.current.add(Se.id),k&&(S({id:`${e.permissionToastIdPrefix??"permission-request"}-${Se.id}`,title:i("conversation.permissionRequestToastTitle"),description:Se.title,tone:"warning",durationMs:8e3,action:ge&&e.onNavigateToSession?{label:i("shell.contextOpenSession"),onClick:()=>{var qe;(qe=e.onNavigateToSession)==null||qe.call(e,ge,e.sessionId)}}:void 0}),x.bridge.showNotification(i("conversation.permissionRequestToastTitle"),Se.title)))},[(we=e.externalSession)==null?void 0:we.workspaceId,e.isCurrent,e.onNavigateToSession,e.permissionRequestNotificationMode,e.permissionToastIdPrefix,e.sessionId,k,re,x.bridge,g==null?void 0:g.workspaceId,S]),a.useEffect(()=>{if(e.enableRuntimeErrorHandling!==!1)return()=>{_.current!==null&&(window.clearTimeout(_.current),_.current=null)}},[e.enableRuntimeErrorHandling]),a.useEffect(()=>{var y;e.enableRuntimeErrorHandling!==!1&&(w!=="SESSION_NOT_FOUND"&&w!=="WORKSPACE_NOT_FOUND"||(v("conversation-runtime-error"),(y=e.onResolveMissingSession)==null||y.call(e)))},[v,e.enableRuntimeErrorHandling,e.onResolveMissingSession,w]),a.useEffect(()=>{if(e.enableRuntimeErrorHandling===!1)return;if(w==="SESSION_NOT_FOUND"||w==="WORKSPACE_NOT_FOUND"){_.current!==null&&(window.clearTimeout(_.current),_.current=null),W.current=null,b.current=null,v("conversation-runtime-error");return}if(!w||!q){_.current!==null&&(window.clearTimeout(_.current),_.current=null),W.current=null,b.current=null,v("conversation-runtime-error");return}const y=`${w}:${q}`;if(!(b.current===y||W.current===y)){if(_.current!==null&&(window.clearTimeout(_.current),_.current=null),Oi((g==null?void 0:g.provider)??null,w,q)){W.current=y,_.current=window.setTimeout(()=>{W.current=null,_.current=null,b.current=y,S({id:"conversation-runtime-error",title:i("conversation.runtimeErrorTitle"),description:q,tone:"error",durationMs:null})},Li);return}W.current=null,b.current=y,S({id:"conversation-runtime-error",title:i("conversation.runtimeErrorTitle"),description:q,tone:"error",durationMs:null})}},[v,e.enableRuntimeErrorHandling,w,q,g==null?void 0:g.provider,S]);const O=a.useCallback(async(y,C)=>{var Se,qe,oe,Ae,ee,Je,ae;const ge=p;if(!ge){await m.sendMessage(y,{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}),(Se=e.onRequestNavigationRefresh)==null||Se.call(e);return}let Ce=null;try{Ce=await Rn(e.sessionId,{sourceType:"message",sourceMessageId:ge.sourceMessageId,sourceMessageSnapshot:ge.sourceMessageSnapshot,strategy:"auto",targetProvider:ge.targetProvider,providerConfigMode:ge.targetProviderConfigMode??(C==null?void 0:C.providerConfigMode),providerPresetId:ge.targetProviderPresetId??(C==null?void 0:C.providerPresetId)??null}),(qe=e.onUpsertNavigationSession)==null||qe.call(e,Ce),await bs(Ce.sessionId,{content:y,clientRequestId:Di(),model:ge.targetModel,reasoningLevel:(C==null?void 0:C.reasoningLevel)??null,permissionMode:dt(),attachments:(C==null?void 0:C.attachments)??[],providerConfigMode:ge.targetProviderConfigMode??(C==null?void 0:C.providerConfigMode),providerPresetId:ge.targetProviderPresetId??(C==null?void 0:C.providerPresetId)??null}),L(null),(oe=e.onRequestNavigationRefresh)==null||oe.call(e),(Ae=e.onNavigateToSession)==null||Ae.call(e,Ce.workspaceId,Ce.sessionId),(ee=e.onForkSuccess)==null||ee.call(e,Ce)}catch(Ne){throw Ce&&((Je=e.onUpsertNavigationSession)==null||Je.call(e,Ce),(ae=e.onRequestNavigationRefresh)==null||ae.call(e)),Ne}},[p,e,m]),B=a.useCallback(async(y,C)=>{o(!0);try{await O(y,C)}finally{o(!1)}},[O]),ue=a.useCallback(async(y,C)=>{o(!0);try{p?await O(y,C):await m.enqueueMessage(y,{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,O,m]),he=a.useCallback(async(y,C)=>{l(y);try{await m.replyPermissionRequest(y,C)}catch(ge){S({title:i("conversation.permissionRequestReplyFailed"),description:ge instanceof Error?ge.message:void 0,tone:"error"})}finally{l(null)}},[S,m]),me=a.useCallback(async y=>{d(y);try{await m.deleteQueuedMessage(y)}finally{d(null)}},[m]),Ue=a.useCallback(async y=>{var C;M(y);try{await m.steerQueuedMessage(y),(C=e.onRequestNavigationRefresh)==null||C.call(e)}finally{M(null)}},[e.onRequestNavigationRefresh,m]),Oe=a.useCallback(async()=>{var y;await m.interrupt(),(y=e.onRequestNavigationRefresh)==null||y.call(e)},[e.onRequestNavigationRefresh,m]);return{session:je,capabilities:N,runtimeHasActiveRun:U,runtimeCanInterrupt:X,messages:G,timelineMessages:H,permissionRequests:re,queuedMessages:$,contextUsage:pe,historyState:V,runtimeErrorCode:w,runtimeErrorDetail:q,runtimeInterruptSource:Z,loadingOlderMessages:Y,hasOlderMessages:D,connectionState:ce,sending:n,replyingPermissionRequestId:c,deletingQueueItemId:u,steeringQueueItemId:f,forkDraft:p,setForkDraft:L,composerHasActiveRun:z,composerCanInterrupt:ie,composerIsRunning:te,canSteerQueuedMessage:be,hasPendingQueuedMessages:Ee,runtimeThinkingPlaceholder:Le,reconnect:m.reconnect.bind(m),loadOlderMessages:m.loadOlderMessages.bind(m),retryMessage:m.retryMessage.bind(m),send:B,queue:ue,interrupt:Oe,replyPermissionRequest:he,deleteQueuedMessage:me,steerQueuedMessage:Ue}}function Di(){const e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}function Oi(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 Hi(e){const t=Fi(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)},_i))},[t,s]),a.useEffect(()=>()=>{o.current!==null&&window.clearTimeout(o.current)},[]),s}function Fi(e){const{provider:t,runningState:s,activityState:n,runtimeHasActiveRun:o,messages:c}=e;if(t!=="codex")return"hide_immediately";const l=qi(c);return l<0||Wi(c,l)?"hide_immediately":Bi(s,n,o)?"show":"hide_deferred"}function Bi(e,t,s){return s===!0||t==="running"||e==="starting"||e==="running"||e==="reconnecting"}function Wi(e,t){return e.slice(t+1).some(s=>s.role==="assistant"&&(s.kind==="text"||s.kind==="thinking"))}function qi(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 Ui(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 Vi=1.5,$i=24,Xi=72,Gi=296,Yi=16,pn={2:496,3:408,4:344};function ur(e){return pn[e]??pn[4]}function zi({memberCount:e,currentWidth:t,monitorWidth:s}){if(e<2||t<=0||s<=0)return t;const n=Gi,o=Math.max(0,e-1)*Yi,c=Math.max(0,(t-n-o)/e),l=ur(e);if(c>=l)return t;const u=n+o+e*l,d=Math.min(t*Vi,Math.max(t,s-Xi)),f=Math.min(Math.max(t,u),d);return f<=t+$i?t:f}const Qi=240,fn=920,gn=760,ks=360,Ts=320,We=16,vn=428,Ki=404,tt=12;function kt(e,t){if(typeof window>"u")return e;const s=Math.max(0,window.innerWidth-We*2),n=Math.max(0,window.innerHeight-We*2),o=Math.min((t==null?void 0:t.minWidth)??ks,s),c=Math.min((t==null?void 0:t.minHeight)??Ts,n),l=Math.max(o,s),u=Math.max(c,n),d=Math.min(Math.max(e.width,o),l),f=Math.min(Math.max(e.height,c),u),M=Math.min(Math.max(e.x,We),Math.max(We,window.innerWidth-d-We)),p=Math.min(Math.max(e.y,We),Math.max(We,window.innerHeight-f-We));return{x:M,y:p,width:d,height:f}}function Zi(e){if(typeof window>"u")return{x:We,y:We,width:fn,height:gn};const t=Math.min(fn,Math.max(ks,window.innerWidth-We*2)),s=Math.min(gn,Math.max(Ts,window.innerHeight-We*2));return kt({x:((e==null?void 0:e.right)??window.innerWidth-We)-t+28,y:Math.max(((e==null?void 0:e.bottom)??48)+8,We),width:t,height:s})}function Ji(e){return!e||e.width<=0||e.height<=0?null:kt({x:e.left,y:e.top,width:e.width,height:e.height},{minWidth:Math.min(ks,e.width),minHeight:Math.min(Ts,e.height)})}function ea(e){if(typeof window>"u")return{x:tt,y:tt,width:vn};const t=Math.min(vn,Math.max(Ki,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 ta({groupId:e,currentSessionId:t}){var Y,D,ce;const s=mt(),n=jt(),o=An(n),{showToast:c}=ct(),{navigationGroups:l,requestNavigationRefresh:u}=wt(),d=a.useMemo(()=>Ss(l),[l]),f=a.useMemo(()=>new Map(d.map(T=>[T.session.sessionId,T])),[d]),M=a.useMemo(()=>Is(l),[l]),[p,L]=a.useState(null),[A,S]=a.useState(!0),[v,k]=a.useState(null),[x,I]=a.useState(null),[b,W]=a.useState(null),[_,P]=a.useState(null),[E,m]=a.useState(null),[g,N]=a.useState(!1),U=a.useRef(null),X=a.useRef(null);a.useEffect(()=>{let T=!1;async function F(){S(!0),k(null);try{const z=await ao(e);if(T)return;L(z)}catch(z){if(T)return;k(z instanceof Error?z.message:i("shell.parallelGroupLoadFailed"))}finally{T||S(!1)}}return F(),()=>{T=!0}},[e]),a.useEffect(()=>{const T=Ro(e);T&&pe(T)},[e]),a.useEffect(()=>()=>{X.current!==null&&window.clearTimeout(X.current)},[]);const G=a.useMemo(()=>p?p.members.slice().sort((T,F)=>T.member.ordinal-F.member.ordinal).map(T=>{const F=f.get(T.session.sessionId),z=(F==null?void 0:F.session)??T.session;return{session:z,workspaceId:(F==null?void 0:F.workspace.id)??Ft(z,T.sessionIsolatedWorkspace),ordinal:T.member.ordinal,memberPrompt:T.member.memberPrompt,model:T.member.model,sessionIsolatedWorkspace:T.sessionIsolatedWorkspace}}):[],[p,f]);a.useEffect(()=>{if(!n.isDesktop||n.ui.osFamily!=="macos"&&n.ui.osFamily!=="windows"||G.length<2)return;const T=`${e}:${G.length}`;if(U.current===T)return;U.current=T;let F=!1;async function z(){try{const ie=await Ds(()=>import("./window-BVUB8gMK.js").then(he=>he.w),__vite__mapDeps([0,1])),te=await Ds(()=>import("./window-BVUB8gMK.js").then(he=>he.d),__vite__mapDeps([0,1])),be=ie.getCurrentWindow(),Ee=await be.innerSize(),je=await be.scaleFactor(),H=await ie.currentMonitor();if(F||je<=0)return;const Q=Ee.width/je,Le=Ee.height/je,O=H?H.workArea.size.width/H.scaleFactor:Q*1.5,B=zi({memberCount:G.length,currentWidth:Q,monitorWidth:O});if(B<=Q+24)return;const ue=10;await new Promise(he=>window.setTimeout(he,56));for(let he=1;he<=ue;he+=1){if(F)return;const me=he/ue,Ue=1-Math.pow(1-me,3),Oe=Q+(B-Q)*Ue;await be.setSize(new te.LogicalSize(Oe,Le)),await new Promise(J=>window.setTimeout(J,Qi/ue))}}catch{return}}return z(),()=>{F=!0}},[e,G.length,n.isDesktop,n.ui.osFamily]);async function re(T){W(T);try{const F=await co(T);await u(),L(z=>z&&{...z,members:z.members.map(ie=>{var te;return((te=ie.sessionIsolatedWorkspace)==null?void 0:te.id)===T?{...ie,sessionIsolatedWorkspace:{...ie.sessionIsolatedWorkspace,workspaceId:F.workspace.id,lifecycleStatus:"promoted",promotedAt:F.record.promotedAt}}:ie})}),c({title:i("shell.parallelWorkspacePromotedBadge"),tone:"success"})}catch(F){c({title:F instanceof Error?F.message:i("shell.parallelGroupLoadFailed"),tone:"error"})}finally{W(null)}}async function $(T){if(_)return;const F=T.trim();if(!F)return;const z=G.find(te=>te.session.sessionId!==F)??null,ie=(p==null?void 0:p.group.workspaceId)??(z==null?void 0:z.workspaceId)??null;P(F);try{await lo(F),ds(F,null),I(te=>te===F?null:te),L(te=>te&&{...te,members:te.members.filter(be=>be.session.sessionId!==F)}),await u(),t===F&&(z?s(Ye(z.workspaceId,z.session.sessionId)):ie&&s(Ct(ie))),c({title:i("shell.deleteSessionSuccess"),tone:"success"})}catch(te){c({title:te instanceof Error?te.message:i("shell.deleteSessionFailed"),tone:"error"})}finally{P(null)}}function pe(T){m(T),X.current!==null&&window.clearTimeout(X.current),X.current=window.setTimeout(()=>{m(null),X.current=null},T.totalDurationMs)}if(A&&!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(v&&!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:v})]})});if(G.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 V=((Y=M[(p==null?void 0:p.group.workspaceId)??""])==null?void 0:Y.displayName)??(p==null?void 0:p.group.workspaceId)??i("common.unknown"),w=G.find(T=>T.session.sessionId===(p==null?void 0:p.group.anchorSessionId))??G[0]??null,q=G.length<4,Z={"--parallel-pane-min-width":`${ur(G.length)}px`,...E?{"--parallel-pane-enter-delay":`${E.paneEnterDelayMs}ms`,"--parallel-pane-enter-duration":`${E.paneEnterDurationMs}ms`,"--parallel-grid-reveal-delay":`${E.gridRevealDelayMs}ms`,"--parallel-grid-reveal-duration":`${E.gridRevealDurationMs}ms`,"--parallel-shell-expand-duration":`${E.shellExpandDurationMs}ms`,"--parallel-pane-stagger-delay":`${E.paneStaggerMs}ms`}:{}};return r.jsxs("main",{className:"workbench-page conversation-page-shell parallel-conversation-page","data-parallel-count":G.length,"data-parallel-entering":E?"true":void 0,style:Z,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:((D=p==null?void 0:p.group.sharedPrompt)==null?void 0:D.trim())||i("common.unknown")})]}),r.jsx("button",{type:"button",className:"secondary-button parallel-conversation-group-add-button","aria-label":i("shell.parallelAppendAction"),title:i("shell.parallelAppendAction"),"data-window-drag":"ignore",disabled:!q,onClick:()=>{q&&N(!0)},children:r.jsx("span",{"aria-hidden":"true",children:"+"})})]})}),r.jsx("div",{className:"parallel-conversation-grid",children:G.map(T=>{const F=M[T.workspaceId]??Ms({id:T.workspaceId,name:T.session.workspaceId,path:T.session.workspaceId,repoRoot:T.session.workspaceId});return r.jsx(sa,{entry:T,isCurrent:T.session.sessionId===t,workspaceContext:F,infoOpen:x===T.session.sessionId,promotingWorkspaceId:b,onCloseInfo:()=>{I(null)},onToggleInfo:()=>{I(z=>z===T.session.sessionId?null:T.session.sessionId)},onPromoteWorkspace:re,onRemoveSession:$,removingSessionId:_},T.session.sessionId)})}),r.jsx(us,{open:g,source:p?{kind:"group",groupId:p.group.id,workspaceId:p.group.workspaceId,workspaceName:V,sharedPrompt:((ce=p.group.sharedPrompt)==null?void 0:ce.trim())||"",currentMemberCount:G.length,defaultProvider:(w==null?void 0:w.session.provider)??"codex"}:null,onClose:()=>N(!1),onCreated:async T=>{L(T),N(!1),pe(Co("append")),await u(),c({title:i("shell.parallelAppendSucceeded"),tone:"success"})}})]})}function sa({entry:e,isCurrent:t,workspaceContext:s,infoOpen:n,onCloseInfo:o,onToggleInfo:c,onPromoteWorkspace:l,promotingWorkspaceId:u,onRemoveSession:d,removingSessionId:f}){var Fe,xe,ke,ye,at;const M=mt(),p=jt(),{showToast:L}=ct(),{navigationGroups:A,requestNavigationRefresh:S,selectWorkspace:v,setSessionWorkspace:k,upsertNavigationSession:x,markNavigationSessionSeen:I}=wt(),b=e.session.sessionId,[W,_]=a.useState(!1),[P,E]=a.useState("files"),[m,g]=a.useState(!1),[N,U]=a.useState(null),[X,G]=a.useState(null),re=a.useRef(null),$=a.useRef(null),pe=a.useRef(null),V=a.useRef(null),w=a.useRef(null),q=a.useRef(null),[Z,Y]=a.useState(()=>Us(b)),{session:D,capabilities:ce,messages:T,timelineMessages:F,permissionRequests:z,queuedMessages:ie,contextUsage:te,historyState:be,runtimeInterruptSource:Ee,loadingOlderMessages:je,hasOlderMessages:H,connectionState:Q,sending:Le,replyingPermissionRequestId:O,deletingQueueItemId:B,steeringQueueItemId:ue,forkDraft:he,setForkDraft:me,composerHasActiveRun:Ue,composerCanInterrupt:Oe,composerIsRunning:J,canSteerQueuedMessage:se,hasPendingQueuedMessages:we,runtimeThinkingPlaceholder:y,reconnect:C,loadOlderMessages:ge,retryMessage:Ce,send:Se,queue:qe,interrupt:oe,replyPermissionRequest:Ae,deleteQueuedMessage:ee,steerQueuedMessage:Je}=cr({sessionId:b,externalSession:e.session,onSeen:(j,de)=>{I(j,de)},onRequestNavigationRefresh:S,onUpsertNavigationSession:x,onNavigateToSession:(j,de)=>{v(j),M(Ye(j,de))},onBindSessionWorkspace:k,onResolveMissingSession:()=>{S()},permissionRequestNotificationMode:"current_only",permissionToastIdPrefix:"parallel-permission-request",isCurrent:t,enableRuntimeErrorHandling:!0,enableCompletionHaptics:!1,enableThinkingPlaceholder:!0,enableForkTimelineSanitizer:!0}),ae=ko((D==null?void 0:D.parallelGroup)??e.session.parallelGroup),Ne=To({groupId:((Fe=(D==null?void 0:D.parallelGroup)??e.session.parallelGroup)==null?void 0:Fe.groupId)??"parallel-group",ordinal:e.ordinal,overrideColor:Z}),_e=Eo((D==null?void 0:D.parallelGroup)??e.session.parallelGroup),Me=(D==null?void 0:D.sessionIsolatedWorkspace)??e.sessionIsolatedWorkspace,et=jo(Me),nt=((xe=te==null?void 0:te.modelId)==null?void 0:xe.trim())||((ke=e.model)==null?void 0:ke.trim())||i("shell.parallelPaneModelFallback"),rt=((ye=e.memberPrompt)==null?void 0:ye.trim())||i("shell.parallelPanePromptFallback"),Ke=e.workspaceId,Te=Nn(D??e.session,Me),ot=Te===Ke?(s==null?void 0:s.displayName)??Ke:et??rt,Ve=f===b,ut=n&&X?{...gt(s)??{},...ae??{},...Ne,left:`${X.x}px`,top:`${X.y}px`,width:`${X.width}px`}:void 0,it=W&&N?{...gt(s)??{},...ae??{},...Ne,left:`${N.x}px`,top:`${N.y}px`,width:`${N.width}px`,height:`${N.height}px`}:void 0;a.useEffect(()=>{Y(Us(b)),_(!1),g(!1),U(null),G(null),E("files")},[b]),a.useEffect(()=>{if(!n)return;const j=de=>{var Xe,ze,Ge;const $e=de.target;$e instanceof HTMLElement&&((Xe=$.current)!=null&&Xe.contains($e)||(ze=V.current)!=null&&ze.contains($e)||(Ge=w.current)!=null&&Ge.contains($e)||o())};return window.addEventListener("pointerdown",j),()=>{window.removeEventListener("pointerdown",j)}},[n,o]),a.useEffect(()=>{if(!n){G(null);return}const j=()=>{var de;G(ea(((de=pe.current)==null?void 0:de.getBoundingClientRect())??null))};return j(),window.addEventListener("resize",j),window.addEventListener("scroll",j,!0),()=>{window.removeEventListener("resize",j),window.removeEventListener("scroll",j,!0)}},[n]),a.useEffect(()=>{if(!W)return;const j=()=>{U(de=>de&&kt(de))};return window.addEventListener("resize",j),()=>{window.removeEventListener("resize",j)}},[W]);async function Re(){if(Te===Ke&&v(Ke),p.isDesktop&&p.bridge.supported){const j=await Do(p,{workspaceId:Te,workspaceName:ot,focusOwner:"terminal-page"});j.ok||L({title:j.detail??i("terminalManager.openExternalFailed"),tone:"error"});return}M(Oo(Te))}async function De(){if(!(!p.isDesktop||!p.bridge.supported)){if(P==="files"){const j=await No(p,{workspaceId:Te,workspaceName:ot,sessionId:b,focusOwner:"file-context-panel"});j.ok||L({title:j.detail??i("conversation.filePanelOpenExternalFailed"),tone:"error"});return}if(P==="git"){const j=await Lo(p,{workspaceId:Te,workspaceName:ot,focusOwner:"git-sidebar"});j.ok||L({title:j.detail??i("git.openExternalFailed"),tone:"error"});return}if(P==="processes"){const j=await _o(p,{workspaceId:Te,workspaceName:ot,focusOwner:"terminal-manager-panel"});j.ok||L({title:j.detail??i("terminalManager.openExternalFailed"),tone:"error"});return}await Re()}}function h(){var j,de;_(!0),U(Ji(((j=re.current)==null?void 0:j.getBoundingClientRect())??null)??Zi(((de=q.current)==null?void 0:de.getBoundingClientRect())??null))}function K(j){if(j.button!==0||!N)return;j.preventDefault();const de=j.clientX,$e=j.clientY,Xe=N,ze=lt=>{U(kt({...Xe,x:Xe.x+(lt.clientX-de),y:Xe.y+(lt.clientY-$e)}))},Ge=()=>{window.removeEventListener("pointermove",ze),window.removeEventListener("pointerup",Ge)};window.addEventListener("pointermove",ze),window.addEventListener("pointerup",Ge)}function ne(j){if(j.button!==0||!N)return;j.preventDefault(),j.stopPropagation();const de=j.clientX,$e=j.clientY,Xe=N,ze=lt=>{U(kt({...Xe,width:Xe.width+(lt.clientX-de),height:Xe.height+(lt.clientY-$e)}))},Ge=()=>{window.removeEventListener("pointermove",ze),window.removeEventListener("pointerup",Ge)};window.addEventListener("pointermove",ze),window.addEventListener("pointerup",Ge)}const ve=W&&typeof document<"u"?bt.createPortal(r.jsxs("div",{ref:w,className:"parallel-pane-tools-popover","data-parallel-pane-layer":b,"data-pinned":m?"true":void 0,"data-workspace-tone":(s==null?void 0:s.tone)??"root",style:it,children:[r.jsxs("div",{className:"parallel-pane-tools-toolbar",children:[r.jsxs("div",{className:"parallel-pane-tools-drag-handle",onPointerDown:K,children:[r.jsx("span",{className:"parallel-pane-tools-drag-dots","aria-hidden":"true",children:r.jsx(oa,{})}),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(j=>r.jsx("button",{type:"button",role:"tab","aria-selected":P===j,className:"parallel-pane-tools-tab",onClick:()=>{E(j)},children:j==="files"?i("shell.filesEntry"):j==="git"?i("shell.gitEntry"):j==="processes"?i("shell.parallelPaneProcessesEntry"):i("shell.terminalsEntry")},j))}),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:()=>{g(j=>!j)},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(ia,{})})}),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:()=>{De()},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(aa,{})})}):null,r.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":i("common.close"),title:i("common.close"),onClick:()=>{_(!1)},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(la,{})})})]})]}),r.jsx("div",{className:"parallel-pane-tools-body","data-panel":P,children:P==="files"?r.jsx($n,{className:"parallel-pane-tools-surface",hideHeading:!0,sessionId:b,workspaceId:Te}):P==="git"?r.jsx(Xn,{className:"parallel-pane-tools-surface",panelActive:!0,workspaceId:Te}):P==="processes"?r.jsx(Gn,{className:"parallel-pane-tools-surface parallel-pane-tools-process-panel",currentWorkspaceId:Te,navigationGroups:A}):r.jsx(Ko,{embeddedMode:!0,externalWindowWorkspaceId:Te,workbenchShellOverrides:{navigationGroups:A,currentWorkspaceId:Te,selectWorkspace:v}})}),r.jsx("button",{type:"button",className:"parallel-pane-tools-resize-handle","aria-label":i("shell.parallelPaneResizeAction"),title:i("shell.parallelPaneResizeAction"),onPointerDown:ne,children:r.jsx("span",{"aria-hidden":"true",children:r.jsx(ca,{})})})]}),document.body):null,He=n&&typeof document<"u"?bt.createPortal(r.jsxs("div",{ref:V,className:"parallel-pane-info-popover","data-parallel-pane-layer":b,"data-workspace-tone":(s==null?void 0:s.tone)??"root",style:ut,children:[r.jsx("strong",{className:"parallel-pane-info-title",children:i("shell.parallelPaneInfoTitle")}),r.jsx(ft,{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:Tt((D??e.session).provider,"full")})]}),r.jsxs("div",{children:[r.jsx("dt",{children:i("shell.parallelPaneModelFallback")}),r.jsx("dd",{children:nt})]}),r.jsxs("div",{children:[r.jsx("dt",{children:i("shell.parallelPaneIsolatedWorkspaceTitle")}),r.jsx("dd",{children:et??i("common.unknown")})]})]})}),r.jsx(ft,{heading:i("shell.parallelPaneColorPaletteLabel"),description:i("shell.parallelPaneColorPaletteDescription"),actions:r.jsx("button",{type:"button",className:"ghost-button parallel-pane-color-reset",disabled:!Z||Ve,onClick:()=>{ds(b,null),Y(null)},children:i("shell.parallelPaneColorPaletteReset")}),children:r.jsx("div",{className:"workbench-manage-color-palette parallel-pane-color-palette","aria-label":i("shell.parallelPaneColorPaletteLabel"),children:Ao.map(j=>r.jsx("button",{type:"button",className:"workbench-manage-color-swatch","aria-label":i("shell.manageWorkspaceColorSelectSwatch",{color:j}),"aria-pressed":Z===j,"data-selected":Z===j,disabled:Ve,style:{backgroundColor:j},onClick:()=>{const de=ds(b,j);Y(de)}},j))})}),r.jsx(ft,{heading:i("shell.parallelPaneIsolatedWorkspaceTitle"),description:(Me==null?void 0:Me.lifecycleStatus)==="active"?i("shell.parallelPanePromoteDescription"):(Me==null?void 0:Me.lifecycleStatus)==="promoted"?i("shell.parallelPaneRemovePromotedDescription"):i("shell.parallelPaneRemoveDescription"),children:r.jsxs(Vt,{align:"start",className:"parallel-pane-action-row",children:[(Me==null?void 0:Me.lifecycleStatus)==="active"?r.jsx("button",{type:"button",className:"secondary-button parallel-pane-promote-action",disabled:u===Me.id||Ve,onClick:()=>{const j=Me==null?void 0:Me.id;j&&l(j)},children:u===Me.id?i("shell.parallelPanePromoting"):i("shell.parallelPanePromoteAction")}):null,r.jsx("button",{type:"button",className:"secondary-button workbench-danger-button",disabled:Ve,onClick:()=>{d(b)},children:Ve?i("shell.parallelPaneRemoving"):i("shell.parallelPaneRemoveAction")})]})})]}),document.body):null;return r.jsxs(r.Fragment,{children:[r.jsxs("article",{ref:re,className:"parallel-conversation-pane","data-current":t?"true":void 0,"data-workspace-tone":(s==null?void 0:s.tone)??"root","data-parallel-role":((at=(D==null?void 0:D.parallelGroup)??e.session.parallelGroup)==null?void 0:at.role)??void 0,style:{"--parallel-pane-order":String(e.ordinal),...gt(s)??{},...ae??{},...Ne},children:[r.jsxs("header",{ref:$,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:[_e?r.jsx("span",{className:"session-parallel-badge",children:_e}):null,r.jsx("p",{className:"parallel-conversation-pane-subtitle",title:rt,children:rt}),r.jsxs("div",{className:"parallel-conversation-pane-meta",children:[r.jsx("span",{className:`session-provider-badge ${(D??e.session).provider}`,children:Tt((D??e.session).provider)}),r.jsx("span",{className:"parallel-conversation-pane-model",children:nt})]})]}),r.jsxs("div",{className:"parallel-conversation-pane-actions",children:[r.jsx("button",{ref:pe,type:"button",className:"conversation-header-ai-button","aria-label":i("shell.parallelPaneInfoAction"),title:i("shell.parallelPaneInfoAction"),"aria-expanded":n,onClick:()=>{_(!1),c()},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(na,{})})}),r.jsx("button",{ref:q,type:"button",className:`conversation-header-ai-button${W?" active":""}`,"aria-label":i("shell.parallelPaneToolsAction"),title:i("shell.parallelPaneToolsAction"),"aria-expanded":W,onClick:()=>{o(),h()},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(ra,{})})})]})]}),r.jsxs("div",{className:"parallel-conversation-pane-body",children:[r.jsx(Cs,{connectionState:Q,onReconnect:C}),r.jsx(Vn,{requests:z,replyingRequestId:O,onReply:Ae}),r.jsx("div",{className:"parallel-conversation-pane-timeline",children:r.jsx(ys,{sessionId:b,messages:F,historyState:be,loadingOlderMessages:je,hasOlderMessages:H,provider:(D==null?void 0:D.provider)??e.session.provider,interruptedSource:Ee,runtimeThinkingPlaceholder:y,followTailUpdates:!0,onLoadOlderMessages:ge,onRetryMessage:Ce,onForkMessage:j=>{const de=D??e.session;me({sourceMessageId:j.id,sourceMessageSnapshot:{role:j.role,kind:j.kind??(j.role==="tool"?"tool_result":"text"),content:j.content},content:j.content,sourceProvider:de.provider,workspaceId:de.workspaceId,targetProvider:de.provider,targetModel:null,targetProviderConfigMode:de.providerConfigMode??"global-default",targetProviderPresetId:de.providerPresetId??null}),lr()}})}),r.jsx(er,{items:ie,deletingQueueItemId:B,steeringQueueItemId:ue,canSteer:se,onDelete:ee,onSteer:Je}),r.jsx(Ps,{capabilities:ce,draftStorageId:b,initialModel:e.model,workspaceId:(D??e.session).workspaceId,initialProviderConfigMode:(D??e.session).providerConfigMode??"global-default",initialProviderPresetId:(D??e.session).providerPresetId??null,forkDraft:he,onClearForkDraft:()=>me(null),onForkDraftChange:j=>me(j),hasActiveRun:Ue,contextUsage:te,taskProvider:(D??e.session).provider,taskMessages:T,hasPendingQueuedMessages:we,canInterrupt:Oe,isSubmitting:Le,isRunning:J,onInterrupt:oe,onSend:Se,onQueueSend:qe})]})]}),He,ve]})}function na(){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 ra(){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 oa(){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 ia(){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 aa(){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 la(){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 ca(){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 vt=196,ht=82,bn=28,wn=24,dr=34,fs=18,ua=332,Dt=360,Wt=840,Sn=18,da=.22,ha=2.4,ma=6;function pa(e,t){return(t.lastMessageAt??t.updatedAt).localeCompare(e.lastMessageAt??e.updatedAt)}function hr(e,t,s){var A,S;if(!t)return null;const n=e.find(v=>v.workspace.id===t);if(!n)return null;const o=new Map(n.sessions.map(v=>[v.sessionId,v])),c=o.get(s)??null;if(!c)return null;const l=new Map;for(const v of n.sessions){const k=((A=v.parentSessionId)==null?void 0:A.trim())||null;if(!k)continue;const x=l.get(k)??[];l.set(k,[...x,v.sessionId])}const u=new Set,d=new Set;let f=c,M=c.sessionId;for(;f&&!d.has(f.sessionId);){u.add(f.sessionId),d.add(f.sessionId),M=f.sessionId;const v=((S=f.parentSessionId)==null?void 0:S.trim())||null;f=v?o.get(v)??null:null}const p=mr(M,0,o,l,new Set),L=ga(p);return{root:p,current:c,currentPathIds:u,relatedSessionIds:L,sessionsById:o}}function fa(e){return((e==null?void 0:e.relatedSessionIds.size)??0)>1}function mr(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 u=[...n.get(e)??[]].filter(d=>!l.has(d)).sort((d,f)=>{const M=s.get(d),p=s.get(f);return!M||!p?0:pa(M,p)});return{session:c,depth:t,children:u.map(d=>mr(d,t+1,s,n,l))}}function ga(e){const t=new Set;function s(n){t.add(n.session.sessionId),n.children.forEach(s)}return s(e),t}function pr(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[Tt(e.provider),n,t].filter(Boolean).join(" · ")}function fr(e){return e.isArchived===!0}function va(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 gr(e,t){return e<=0||t<=0?1:Math.min(1,e/t)}function ba(e,t,s,n){const o=gr(e,s),c=s*o,l=n*o,u=c<e?(e-c)/2:0;return{scale:o,offsetX:u,offsetY:0,shellWidth:Math.max(e,c),shellHeight:l}}function gs(e,t,s){return Math.min(s,Math.max(t,e))}function wa(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 qt(e,t,s,n,o){const c=n*e.scale,l=o*e.scale,u=(t-c)/2,d=(s-l)/2,f=c<=t?u:gs(e.offsetX,t-c,0),M=l<=s?d:gs(e.offsetY,s-l,0);return{scale:e.scale,offsetX:f,offsetY:M}}function Ot(e,t,s,n){const o=wa(e,t,s,n);return qt({scale:o,offsetX:(e-s*o)/2,offsetY:(t-n*o)/2},e,t,s,n)}function Sa(e,t,s,n,o,c,l,u){const d=(s-e.offsetX)/e.scale,f=(n-e.offsetY)/e.scale;return qt({scale:t,offsetX:s-d*t,offsetY:n-f*t},o,c,l,u)}function Ia(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 Ma(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 vs(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,vt),vt;const n=e.children.reduce((c,l,u)=>{const d=c+vs(l,t);return u===0?d:d+fs},0),o=Math.max(vt,n);return t.set(e.session.sessionId,o),o}function xa(e){const t=new Map,s=[],n=new Map;function o(u,d,f){const M=vs(u,t),p=d+M/2,L=wn+f*(ht+dr),A=p-vt/2,S=u.children.reduce((I,b,W)=>{const _=I+vs(b,t);return W===0?_:_+fs},0);let v=d+Math.max(0,(M-S)/2);const k=u.children.map(I=>{const b=o(I,v,f+1);return v+=b.subtreeWidth+fs,b}),x={node:u,children:k,x:A,y:L,centerX:p,centerY:L+ht/2,subtreeWidth:M};return s.push(x),n.set(u.session.sessionId,x),x}const c=o(e,bn,0),l=s.reduce((u,d)=>Math.max(u,d.y+ht),0);return{root:c,nodes:s,bySessionId:n,width:c.subtreeWidth+bn*2,height:l+wn}}function ya(e){return Math.max(0,Math.min(255,Number.parseFloat(e)))}function Pa(e){const t=e.trim();if(t.startsWith("#")){const n=t.slice(1);if(n.length===3){const[o,c,l]=n.split("").map(u=>Number.parseInt(u.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=>ya(l));return{r:n,g:o,b:c}}return null}function st(e,t,s){const n=Pa(e);return n?`rgba(${n.r}, ${n.g}, ${n.b}, ${t})`:s}function Ca(e,t,s,n,o,c){const l=e.getContext("2d");if(!l)return;const u=l,d=window.devicePixelRatio||1;e.width=Math.max(1,Math.floor(t.width*d)),e.height=Math.max(1,Math.floor(t.height*d)),e.style.width=`${t.width}px`,e.style.height=`${t.height}px`,u.setTransform(d,0,0,d,0,0),u.clearRect(0,0,t.width,t.height);const f=window.getComputedStyle(e),M=f.getPropertyValue("--accent").trim()||"#3b82f6",p=f.getPropertyValue("--border-primary").trim()||"#d4d8df",L=f.getPropertyValue("--bg-surface").trim()||"#ffffff";if(!c){const S=u.createLinearGradient(0,0,t.width,t.height);S.addColorStop(0,st(L,.38,"rgba(255, 255, 255, 0.38)")),S.addColorStop(1,st(M,.05,"rgba(59, 130, 246, 0.05)")),u.fillStyle=S,u.fillRect(0,0,t.width,t.height)}function A(S){for(const v of S.children){const k=n.has(S.node.session.sessionId)&&n.has(v.node.session.sessionId),x=S.node.session.sessionId===o||v.node.session.sessionId===o;u.beginPath(),u.moveTo(S.centerX,S.y+ht-10);const I=S.y+ht+dr*.52;u.bezierCurveTo(S.centerX,I,v.centerX,I,v.centerX,v.y+10),u.lineWidth=x?3:k?2.5:1.5,u.strokeStyle=x?st(M,.52,"rgba(59, 130, 246, 0.52)"):k?st(M,.32,"rgba(59, 130, 246, 0.32)"):st(p,.72,"rgba(148, 163, 184, 0.72)"),u.stroke(),u.beginPath(),u.arc(v.centerX,v.y,x?4.5:3.5,0,Math.PI*2),u.fillStyle=x?st(M,.9,"rgba(59, 130, 246, 0.9)"):st(p,.78,"rgba(148, 163, 184, 0.78)"),u.fill(),A(v)}}A(t.root);for(const S of t.nodes){const v=S.node.session.sessionId===s,k=S.node.session.sessionId===o,x=n.has(S.node.session.sessionId);if(!v&&!k&&!x)continue;const I=u.createRadialGradient(S.centerX,S.centerY,10,S.centerX,S.centerY,k?90:64);I.addColorStop(0,st(M,k?.22:.14,"rgba(59, 130, 246, 0.22)")),I.addColorStop(1,"rgba(59, 130, 246, 0)"),u.fillStyle=I,u.beginPath(),u.ellipse(S.centerX,S.centerY,vt*.72,ht*.9,0,0,Math.PI*2),u.fill(),(k||v)&&(u.beginPath(),u.arc(S.centerX,S.y+12,k?6:5,0,Math.PI*2),u.fillStyle=st(M,.94,"rgba(59, 130, 246, 0.94)"),u.fill())}}function Ra(e,t,s){const n=Math.min(ua,t-24),o=e.left+e.width/2-n/2,c=Math.max(12,Math.min(t-n-12,o)),d=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:d,maxHeight:Math.min(Dt,s-24)}}function ka({model:e,selectedSession:t,selectedTreeNode:s,previewEntry:n,onClose:o,onOpenSession:c}){const l=St(t.title,i("common.unknown")),u=t.sessionId===e.current.sessionId,d=fr(t),f=Ln(s.session),M=_n(s.session),p=Dn(s.session),L=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}),u?r.jsx("span",{className:"conversation-branch-current-badge",children:i("conversation.branchTreeCurrentBadge")}):null,d?r.jsx("span",{className:"conversation-branch-archived-badge",children:i("conversation.branchTreeArchivedBadge")}):null]}),r.jsx("button",{type:"button",className:"conversation-branch-preview-close","aria-label":i("common.close"),onClick:o,children:"x"})]}),r.jsx("p",{className:"conversation-branch-preview-popover-meta",children:pr(t)}),M&&f||L&&p?r.jsxs("div",{className:"conversation-branch-badge-row",children:[L&&p?r.jsx("span",{className:`session-fork-badge ${p}`,children:L}):null,M&&f?r.jsx("span",{className:`session-fork-badge ${f}`,children:M}):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(A=>r.jsxs("article",{className:"conversation-branch-preview-message",children:[r.jsxs("div",{className:"conversation-branch-preview-message-meta",children:[r.jsx("span",{children:Ma(A)}),r.jsx("span",{children:new Intl.DateTimeFormat(void 0,{hour:"2-digit",minute:"2-digit"}).format(new Date(A.timestamp))})]}),r.jsx("p",{children:Ia(A)})]},`${t.sessionId}:${A.messageId}`)):r.jsx("p",{className:"conversation-branch-empty",children:i("conversation.branchTreePreviewEmpty")})}),r.jsx("div",{className:"conversation-branch-preview-actions",children:r.jsx("button",{type:"button",className:"secondary-button",disabled:u,onClick:()=>c(t),children:u?i("conversation.branchTreeCurrentAction"):i("conversation.branchTreeSwitchAction")})})]})}function Ta({layout:e,model:t,selectedSessionId:s,onSelectSession:n,onBackgroundClick:o,stageScale:c,desktopStageLayout:l,transform:u,isMobileViewport:d,viewportRef:f,onRegisterNodeElement:M,onViewportTouchStart:p,onViewportTouchMove:L,onViewportTouchEnd:A}){const S=a.useRef(null);return a.useEffect(()=>{const v=S.current;v&&Ca(v,e,t.current.sessionId,t.currentPathIds,s,d)},[d,e,t.current.sessionId,t.currentPathIds,s]),r.jsx("div",{ref:f,className:"conversation-branch-canvas-viewport","data-scaled":c<.999,"data-mobile":d,onClick:v=>{v.target===v.currentTarget&&(o==null||o())},onTouchStart:p,onTouchMove:L,onTouchEnd:A,onTouchCancel:A,children:r.jsx("div",{className:"conversation-branch-canvas-stage-shell",style:{width:d?"100%":l.shellWidth,height:d?"100%":l.shellHeight},onClick:v=>{v.target===v.currentTarget&&(o==null||o())},children:r.jsxs("div",{className:"conversation-branch-canvas-stage",style:{width:e.width,height:e.height,transform:u?`translate(${u.offsetX}px, ${u.offsetY}px) scale(${u.scale})`:`translate(${l.offsetX}px, ${l.offsetY}px) scale(${l.scale})`,transformOrigin:"top left"},onClick:()=>{if(o){o();return}n(null)},children:[r.jsx("canvas",{ref:S,className:"conversation-branch-canvas",width:e.width,height:e.height,"aria-hidden":"true"}),e.nodes.map(v=>{const k=St(v.node.session.title,i("common.unknown")),x=Ln(v.node.session),I=_n(v.node.session),b=Dn(v.node.session),W=On(v.node.session),_=v.node.session.sessionId===t.current.sessionId,P=v.node.session.sessionId===s,E=t.currentPathIds.has(v.node.session.sessionId),m=fr(v.node.session);return r.jsx("button",{ref:g=>M(v.node.session.sessionId,g),type:"button",className:"conversation-branch-smart-card conversation-branch-canvas-node","data-current":_,"data-selected":P,"data-current-path":E,"data-archived":m,style:{left:v.x,top:v.y,width:vt,minHeight:ht},"aria-pressed":P,onClick:g=>{g.stopPropagation(),n(v.node.session.sessionId)},children:r.jsxs("div",{className:"conversation-branch-smart-card-main",children:[r.jsxs("div",{className:"conversation-branch-smart-card-title-row",children:[r.jsx("strong",{title:k.fullTitle,children:k.displayTitle}),_?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:pr(v.node.session)}),I&&x||W&&b?r.jsxs("div",{className:"conversation-branch-badge-row",children:[W&&b?r.jsx("span",{className:`session-fork-badge ${b}`,children:W}):null,I&&x?r.jsx("span",{className:`session-fork-badge ${x}`,children:I}):null]}):null]})},v.node.session.sessionId)})]})})})}function In({model:e,onOpenSession:t,onClose:s}){const n=a.useMemo(()=>xa(e.root),[e.root]),o=a.useRef(null),c=a.useRef(new Map),[l,u]=a.useState(null),[d,f]=a.useState(0),[M,p]=a.useState(0),[L,A]=a.useState(null),[S,v]=a.useState({}),k=a.useRef(new Set),[x,I]=a.useState(typeof window<"u"?window.innerWidth<=Wt:!1),[b,W]=a.useState(null),_=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 V=o.current;if(!V)return;const w=V;function q(){f(w.clientWidth),p(w.clientHeight),I(window.innerWidth<=Wt)}if(q(),typeof ResizeObserver>"u")return window.addEventListener("resize",q),()=>window.removeEventListener("resize",q);const Z=new ResizeObserver(q);return Z.observe(V),()=>Z.disconnect()},[]),a.useEffect(()=>{u(null)},[e.current.sessionId,e.root.session.sessionId]);const P=a.useMemo(()=>gr(d,n.width),[d,n.width]),E=a.useMemo(()=>ba(d,M,n.width,n.height),[M,d,n.height,n.width]);a.useEffect(()=>{if(!x||d<=0||M<=0){W(null);return}W(V=>V?qt(V,d,M,n.width,n.height):Ot(d,M,n.width,n.height))},[M,d,x,n.height,n.width]);const m=l?e.sessionsById.get(l)??null:null,g=m?n.bySessionId.get(m.sessionId)??null:null,N=m?S[m.sessionId]??{status:"idle",messages:[],error:null}:null,U=x&&!!s,X=!!s&&!U;a.useEffect(()=>{if(!l){A(null);return}const V=l;function w(){const q=c.current.get(V);if(!q){A(null);return}A(q.getBoundingClientRect())}return w(),window.addEventListener("resize",w),window.addEventListener("scroll",w,!0),()=>{window.removeEventListener("resize",w),window.removeEventListener("scroll",w,!0)}},[l,P]),a.useEffect(()=>{if(!x)return;const V=l;if(!V)return;const w=window.requestAnimationFrame(()=>{const q=c.current.get(V);q&&A(q.getBoundingClientRect())});return()=>window.cancelAnimationFrame(w)},[x,b,l]),a.useEffect(()=>{if(!(m!=null&&m.sessionId)||(N==null?void 0:N.status)==="ready"||k.current.has(m.sessionId))return;let V=!1;return k.current.add(m.sessionId),v(w=>{var q;return{...w,[m.sessionId]:{status:"loading",messages:((q=w[m.sessionId])==null?void 0:q.messages)??[],error:null}}}),cs(m.sessionId,null,6,"backward").then(w=>{k.current.delete(m.sessionId),!V&&v(q=>({...q,[m.sessionId]:{status:"ready",messages:va(w.messages),error:null}}))}).catch(w=>{k.current.delete(m.sessionId),!V&&v(q=>{var Z;return{...q,[m.sessionId]:{status:"error",messages:((Z=q[m.sessionId])==null?void 0:Z.messages)??[],error:w instanceof Error?w.message:i("conversation.branchTreePreviewFailed")}}})}),()=>{V=!0}},[m==null?void 0:m.sessionId]);function G(V){!x||d<=0||M<=0||W(w=>{const q=w??Ot(d,M,n.width,n.height);return qt(V(q),d,M,n.width,n.height)})}function re(V){if(!x)return;const w=V.currentTarget.getBoundingClientRect();if(V.touches.length>=2){const Y=V.touches[0],D=V.touches[1],ce=Math.hypot(D.clientX-Y.clientX,D.clientY-Y.clientY),T=(Y.clientX+D.clientX)/2-w.left,F=(Y.clientY+D.clientY)/2-w.top,z=b??Ot(d,M,n.width,n.height);_.current={mode:"pinch",startDistance:ce,startScale:z.scale,startOffsetX:z.offsetX,startOffsetY:z.offsetY,startTouchX:T,startTouchY:F,anchorX:T,anchorY:F,moved:!1};return}const q=V.touches[0],Z=b??Ot(d,M,n.width,n.height);_.current={mode:"pan",startDistance:0,startScale:Z.scale,startOffsetX:Z.offsetX,startOffsetY:Z.offsetY,startTouchX:q.clientX,startTouchY:q.clientY,anchorX:0,anchorY:0,moved:!1}}function $(V){if(!x)return;const w=_.current;if(V.touches.length>=2){const ce=V.currentTarget.getBoundingClientRect(),T=V.touches[0],F=V.touches[1],z=Math.hypot(F.clientX-T.clientX,F.clientY-T.clientY);if(z<=0||w.startDistance<=0)return;V.preventDefault();const ie=(T.clientX+F.clientX)/2-ce.left,te=(T.clientY+F.clientY)/2-ce.top,be=gs(w.startScale*(z/w.startDistance),da,ha);_.current={...w,mode:"pinch",moved:!0,anchorX:ie,anchorY:te},G(Ee=>Sa({...Ee,scale:w.startScale,offsetX:w.startOffsetX,offsetY:w.startOffsetY},be,ie,te,d,M,n.width,n.height));return}if(w.mode!=="pan"||V.touches.length!==1)return;const q=V.touches[0],Z=q.clientX-w.startTouchX,Y=q.clientY-w.startTouchY;(w.moved||Math.hypot(Z,Y)>=ma)&&(V.preventDefault(),_.current={...w,moved:!0},G(ce=>({...ce,offsetX:w.startOffsetX+Z,offsetY:w.startOffsetY+Y})))}function pe(){_.current={mode:"idle",startDistance:0,startScale:(b==null?void 0:b.scale)??1,startOffsetX:(b==null?void 0:b.offsetX)??0,startOffsetY:(b==null?void 0:b.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":""}${U?" 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:[X?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:[U?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,U?null:r.jsx("div",{className:"conversation-branch-canvas-tip",children:i("conversation.branchTreePreviewDescription")}),r.jsx(Ta,{layout:n,model:e,selectedSessionId:l,onSelectSession:u,onBackgroundClick:U?s:void 0,stageScale:P,desktopStageLayout:E,transform:x?b:null,isMobileViewport:x,viewportRef:o,onRegisterNodeElement:(V,w)=>{if(w){c.current.set(V,w);return}c.current.delete(V)},onViewportTouchStart:re,onViewportTouchMove:$,onViewportTouchEnd:pe})]})]}),m&&g&&N&&L&&typeof document<"u"?bt.createPortal(r.jsx("div",{className:"conversation-branch-preview-floating",style:Ra(L,window.innerWidth,window.innerHeight),children:r.jsx(ka,{model:e,selectedSession:m,selectedTreeNode:g.node,previewEntry:N,onClose:()=>u(null),onOpenSession:t})}),document.body):null]})}function Ea({open:e,navigationGroups:t,workspaceId:s,sessionId:n,onClose:o,onOpenSession:c}){const l=a.useMemo(()=>hr(t,s,n),[t,n,s]),[u,d]=a.useState(typeof window<"u"?window.innerWidth>Wt:!0);return a.useEffect(()=>{if(typeof window>"u")return;function f(){d(window.innerWidth>Wt)}return f(),window.addEventListener("resize",f),()=>window.removeEventListener("resize",f)},[]),!e||!l||typeof document>"u"?null:u?r.jsx(Ut,{open:e,title:i("conversation.branchTreeMapTitle"),description:i("conversation.branchTreeMapDescription"),size:"regular",layout:"viewer",bodyClassName:"conversation-branch-modal-body",onClose:o,children:r.jsx(In,{model:l,onOpenSession:c})}):bt.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(In,{model:l,onOpenSession:c,onClose:o})]}),document.body)}function ja(e){const t=e.trim().length;return t<=16?"xl":t<=26?"lg":t<=38?"md":"sm"}function vr({session:e,actions:t,workspaceContext:s=null}){const n=jt(),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=St(e.title,i("conversation.titleFallback")),l=ja(c.displayTitle);return r.jsxs("header",{className:"conversation-header","data-workspace-tone":(s==null?void 0:s.tone)??"root",style:gt(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 Aa(e,t,s){if(!t)return null;const n=e.find(l=>l.workspace.id===t);if(!n)return null;const o=Ss([n]).filter(l=>!l.session.isArchived&&!$t(l.session)),c=o.findIndex(l=>l.session.sessionId===s);return c<0?null:o[c+1]??null}const Mn=.6,ls=.6,xn=8,Na=36,La=48,_a=96;function Sl(){const{sessionId:e="",workspaceId:t}=Vo(),s=xs(),n=mt(),o=a.useMemo(()=>new URLSearchParams(s.search),[s.search]),c=Ba(o.get("toolPanel")),l=(t==null?void 0:t.trim())||null,u=a.useMemo(()=>Ha(e,l,o),[l,o,e]),d=a.useMemo(()=>Qa(e,s.state),[s.state,e]),f=a.useMemo(()=>Ka(e,s.state),[s.state,e]);return u?r.jsx(Oa,{draft:u,navigate:n,initialToolPanel:c}):r.jsx(Da,{sessionId:e,bootstrapMessages:d,initialComposerModel:f.initialModel,initialComposerProviderConfigMode:f.providerConfigMode,initialComposerProviderPresetId:f.providerPresetId,initialToolPanel:c})}function Da({sessionId:e,bootstrapMessages:t,initialComposerModel:s,initialComposerProviderConfigMode:n,initialComposerProviderPresetId:o,initialToolPanel:c}){var Es,js,As,Ns,Ls;const{shellMode:l,navigationGroups:u,requestNavigationRefresh:d,selectWorkspace:f,setSessionWorkspace:M,markNavigationSessionSeen:p,favoriteSessions:L,archiveSession:A,unarchiveSession:S,startDraftSession:v,upsertNavigationSession:k}=wt(),x=mt(),[I,b]=a.useState(!1),[W,_]=a.useState(!1),[P,E]=a.useState(null),[m,g]=a.useState(!1),[N,U]=a.useState(!1),[X,G]=a.useState(!1),re=a.useMemo(()=>Ss(u),[u]),$=a.useMemo(()=>{var R;return((R=re.find(le=>le.session.sessionId===e))==null?void 0:R.session)??null},[re,e]),{showToast:pe}=ct(),V=()=>{var Ie;const R=($==null?void 0:$.workspaceId)??((Ie=u[0])==null?void 0:Ie.workspace.id)??null,le=(R?re.find(At=>At.workspace.id===R)??null:null)??re[0]??null;x(le?Ye(le.workspace.id,le.session.sessionId):R?Ct(R):l==="mobile"?Wo():"/landing",{replace:!0})},{session:w,capabilities:q,messages:Z,timelineMessages:Y,permissionRequests:D,queuedMessages:ce,contextUsage:T,historyState:F,runtimeInterruptSource:z,loadingOlderMessages:ie,hasOlderMessages:te,connectionState:be,sending:Ee,replyingPermissionRequestId:je,deletingQueueItemId:H,steeringQueueItemId:Q,forkDraft:Le,setForkDraft:O,composerHasActiveRun:B,composerCanInterrupt:ue,composerIsRunning:he,canSteerQueuedMessage:me,hasPendingQueuedMessages:Ue,runtimeThinkingPlaceholder:Oe,reconnect:J,loadOlderMessages:se,retryMessage:we,send:y,queue:C,interrupt:ge,replyPermissionRequest:Ce,deleteQueuedMessage:Se,steerQueuedMessage:qe}=cr({sessionId:e,externalSession:$,bootstrapMessages:t,onSeen:(R,le)=>{p(R,le)},onRequestNavigationRefresh:d,onUpsertNavigationSession:k,onNavigateToSession:(R,le)=>{f(R),x(Ye(R,le))},onBindSessionWorkspace:M,onResolveMissingSession:V,onForkSuccess:()=>{Rt("preview"),pe({title:i("conversation.forkMessageSucceeded"),tone:"success"})},enableRuntimeErrorHandling:!0,enableCompletionHaptics:!0,enableThinkingPlaceholder:!0,enableForkTimelineSanitizer:!0}),oe=l!=="mobile",Ae=Rr(!oe),ee=w??$??null,Je=(w==null?void 0:w.sessionIsolatedWorkspace)??($==null?void 0:$.sessionIsolatedWorkspace)??null,ae=ee?Ft(ee,Je):null,Ne=ee?Nn(ee,Je):null,_e=Pr({enabled:!oe,initialPanel:c,workspaceId:Ne,suspendMainGesture:!oe&&Ae.isVisible}),Me=a.useMemo(()=>new Set(L.map(R=>R.session.sessionId)),[L]),et=a.useMemo(()=>u.map(R=>R.workspace),[u]),nt=a.useMemo(()=>Yn(u),[u]),rt=a.useMemo(()=>Is(u),[u]),Ke=a.useMemo(()=>wr(u,ae,Me),[Me,ae,u]),Te=a.useMemo(()=>Sr(L,u),[L,u]),[ot,Ve]=a.useState([]),ut=a.useMemo(()=>[...Te,...Ke],[Te,Ke]),it=a.useMemo(()=>ae?et.find(R=>R.id===ae)??null:null,[ae,et]),Re=(ae?rt[ae]??null:null)??(it?Ms(it):null),De=a.useMemo(()=>Xt(u,ae),[ae,u]),h=nt.find(R=>R.workspace.id===ae)??(De?{workspace:De.workspace,label:De.workspace.name,subtitle:De.workspace.path}:null),K=a.useMemo(()=>Aa(u,ae,e),[ae,u,e]),ne=(w==null?void 0:w.provider)??($==null?void 0:$.provider)??null,ve=a.useMemo(()=>{var R;return St(((R=w??$)==null?void 0:R.title)??null,i("conversation.titleFallback"))},[$,w]),He=oe,Fe=He&&Ho(ee)?((Es=ee==null?void 0:ee.parallelGroup)==null?void 0:Es.groupId)??null:null,xe=oe?null:yr(Ae.mainGestureHandlers,_e.mainGestureHandlers);a.useEffect(()=>{const R=Bn(ut,e,le=>le.session.sessionId);R.length!==0&&Ve(le=>{const Ie=new Set(le);let At=!1;for(const _s of R)Ie.has(_s)||(Ie.add(_s),At=!0);return At?Array.from(Ie):le})},[ut,e]);const ke=(ee==null?void 0:ee.workspaceId)??($==null?void 0:$.workspaceId)??null,ye=a.useMemo(()=>hr(u,ke,e),[ke,u,e]),at=fa(ye),j=!!(ee&&ke&&at),de=()=>{U(!0)},$e=a.useMemo(()=>(De==null?void 0:De.sessions.filter(R=>R.isArchived===!0&&!$t(R)))??[],[De]),Xe=a.useRef(null),ze=a.useRef(null),Ge=a.useRef(null),lt=a.useRef(null),[jr,Ar]=a.useState(null),{composerPortalTarget:Nr}=Fn();a.useEffect(()=>{U(!1)},[e]),Mr(Ge,jr,!oe,e),xr(Ge,lt,!oe,e);function Lr(R){f(R),x(Ct(R))}return oe&&Fe?r.jsxs(r.Fragment,{children:[r.jsx(ta,{groupId:Fe,currentSessionId:e}),r.jsx(us,{open:X,source:ee?{kind:"session",sessionId:e,workspaceId:ee.workspaceId,workspaceName:(Re==null?void 0:Re.displayName)??ee.workspaceId,sessionTitle:ee.title,defaultProvider:ee.provider}:null,onClose:()=>G(!1),onCreated:async R=>{R.members.forEach(Ie=>{k(Ie.session)}),Vs(R.group.id),await d();const le=R.members.find(Ie=>Ie.session.sessionId===R.group.anchorSessionId)??R.members[0]??null;if(le){const Ie=Ft(le.session,le.sessionIsolatedWorkspace);f(Ie),x(Ye(Ie,le.session.sessionId))}G(!1),pe({title:i("shell.parallelCreateSucceeded"),tone:"success"})}})]}):r.jsxs(r.Fragment,{children:[r.jsxs("main",{ref:Ge,className:"workbench-page conversation-page-shell mobile-page-fixed-root mobile-conversation-page","data-mobile-shell":!oe,"data-preview-mode":oe?void 0:Ae.displayMode,"data-preview-dragging":oe?void 0:Ae.isDragging,"data-workspace-tone":(Re==null?void 0:Re.tone)??"root","data-worktree-depth":(Re==null?void 0:Re.depth)??0,"data-tool-panel-open":oe?void 0:_e.isOpen,style:{...oe?{}:Ae.pageStyle,...gt(Re)??{}},children:[oe?r.jsx(vr,{session:w??$,workspaceContext:Re,actions:r.jsxs(r.Fragment,{children:[j?r.jsx(Ga,{onOpenBranchTree:de}):null,ee?r.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":i("shell.parallelCreateAction"),title:i("shell.parallelCreateAction"),onClick:()=>G(!0),children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(Ya,{})})}):null,r.jsx(Jn,{session:w??$})]})}):null,oe?null:r.jsx(zn,{containerRef:lt,className:"mobile-conversation-page-header",gestureHandlers:xe??void 0,currentWorkspace:h?{id:h.workspace.id,name:h.label,path:h.subtitle}:et[0]??null,workspaces:et,workspaceOptions:nt,onSelectWorkspace:Lr,heading:ve.fullTitle,trailing:r.jsxs("div",{className:"mobile-conversation-toolbar-main",children:[r.jsx("span",{className:"mobile-conversation-toolbar-title",title:ve.fullTitle,children:ve.displayTitle}),r.jsx(li,{session:w??$,onOpenBranchTree:j?de:void 0})]})}),oe?null:r.jsx(kr,{visible:!_e.isOpen&&Ae.isVisible,widthPx:Ae.previewWidthPx,isDragging:Ae.isDragging,gestureHandlers:Ae.railGestureHandlers,activeSessionId:e,createSessionActionLabel:ae&&ne?i("shell.createSession"):void 0,favoriteItems:Te,items:Ke,expandedRootIds:ot,workspaceSectionLabel:(h==null?void 0:h.label)??i("shell.mobileConversationCurrentWorkspaceSection"),onCreateSession:ae&&ne?()=>{v(ae,ne)}:void 0,archiveCurrentActionLabel:i("shell.archiveCurrentSessionAction"),archiveFolderActionLabel:$e.length>0?i("shell.archiveFolderLabel"):void 0,onArchiveActiveSession:()=>{b(!0)},onOpenArchiveFolder:$e.length>0?()=>{_(!0)}:void 0,onToggleSubsessions:R=>{Ve(le=>le.includes(R)?le.filter(Ie=>Ie!==R):[...le,R])},onActivate:R=>{Ae.closePreview(),f(R.workspace.id),x(Ye(R.workspace.id,R.session.sessionId))}}),r.jsx("div",{className:"mobile-conversation-stage",...xe??{},children:r.jsxs("div",{ref:Xe,className:"mobile-conversation-main",children:[r.jsx(Cs,{connectionState:be,onReconnect:J}),r.jsx(Vn,{requests:D,replyingRequestId:je,onReply:Ce}),r.jsx("div",{ref:ze,className:"conversation-timeline-shell",children:r.jsx(ys,{sessionId:e,messages:Y,historyState:F,loadingOlderMessages:ie,hasOlderMessages:te,provider:(w==null?void 0:w.provider)??null,interruptedSource:z,runtimeThinkingPlaceholder:Oe,onLoadOlderMessages:se,onRetryMessage:we,onForkMessage:R=>{w&&(O({sourceMessageId:R.id,sourceMessageSnapshot:{role:R.role,kind:R.kind??(R.role==="tool"?"tool_result":"text"),content:R.content},content:R.content,sourceProvider:w.provider,workspaceId:w.workspaceId,targetProvider:w.provider,targetModel:null,targetProviderConfigMode:w.providerConfigMode??"global-default",targetProviderPresetId:w.providerPresetId??null}),lr())}})}),r.jsx(ri,{containerRef:ze,session:w??$??null,currentCapabilities:q}),r.jsx(er,{items:ce,deletingQueueItemId:H,steeringQueueItemId:Q,canSteer:me,onDelete:Se,onSteer:qe}),_e.isOpen?null:r.jsx(Ps,{capabilities:q,draftStorageId:e,initialModel:s,workspaceId:((js=w??$)==null?void 0:js.workspaceId)??null,initialProviderConfigMode:n??((As=w??$)==null?void 0:As.providerConfigMode)??"global-default",initialProviderPresetId:o??((Ns=w??$)==null?void 0:Ns.providerPresetId)??null,forkDraft:Le,onClearForkDraft:()=>O(null),onForkDraftChange:R=>O(R),panelRef:oe?void 0:Ar,portalContainer:oe?null:Nr,hasActiveRun:B,contextUsage:T,taskProvider:((Ls=w??$)==null?void 0:Ls.provider)??null,taskMessages:Z,hasPendingQueuedMessages:Ue,canInterrupt:ue,isSubmitting:Ee,isRunning:he,onInterrupt:ge,onSend:y,onQueueSend:C})]})}),!oe&&Ne?r.jsx(Cr,{activePanel:_e.activePanel,open:_e.isOpen,sessionId:e,workspaceId:Ne,navigationGroups:u,onClose:()=>{_e.closePanel()},onSelectPanel:R=>{_e.selectPanel(R)},onSelectPanelBySwipe:R=>{if(R===null){_e.closePanel();return}_e.selectPanel(R)}}):null]}),r.jsx(Ea,{open:N,navigationGroups:u,workspaceId:ke,sessionId:e,onClose:()=>U(!1),onOpenSession:R=>{U(!1),f(R.workspaceId),Rt("preview"),x(Ye(R.workspaceId,R.sessionId))}}),r.jsx(Xa,{open:I,busy:m,onClose:()=>{m||b(!1)},onConfirm:async()=>{if(!m){g(!0);try{if(await A(e),b(!1),pe({title:i("shell.archiveAdded"),tone:"success"}),ae){if(f(ae),Rt("preview"),K){x(Ye(K.workspace.id,K.session.sessionId));return}x(Ct(ae));return}x("/workspaces")}catch(R){pe({title:R instanceof Error?R.message:i("shell.navigationLoadFailed"),tone:"error"})}finally{g(!1)}}}}),r.jsx(Er,{open:W,workspaceName:(De==null?void 0:De.workspace.name)??null,sessions:$e,restoringSessionId:P,onClose:()=>{P||_(!1)},onRestore:async R=>{E(R);try{await S(R),pe({title:i("shell.archiveRestored"),tone:"success"})}catch(le){pe({title:le instanceof Error?le.message:i("shell.navigationLoadFailed"),tone:"error"})}finally{E(null)}}}),He?r.jsx(us,{open:X,source:ee?{kind:"session",sessionId:e,workspaceId:ee.workspaceId,workspaceName:(Re==null?void 0:Re.displayName)??ee.workspaceId,sessionTitle:ee.title,defaultProvider:ee.provider}:null,onClose:()=>G(!1),onCreated:async R=>{R.members.forEach(Ie=>{k(Ie.session)}),Vs(R.group.id),await d();const le=R.members.find(Ie=>Ie.session.sessionId===R.group.anchorSessionId)??R.members[0]??null;if(le){const Ie=Ft(le.session,le.sessionIsolatedWorkspace);f(Ie),x(Ye(Ie,le.session.sessionId))}G(!1),pe({title:i("shell.parallelCreateSucceeded"),tone:"success"})}}):null]})}function Oa({draft:e,navigate:t,initialToolPanel:s}){const{shellMode:n,navigationGroups:o,requestNavigationRefresh:c,selectWorkspace:l,setSessionWorkspace:u,upsertNavigationSession:d,favoriteSessions:f,unarchiveSession:M,startDraftSession:p}=wt(),[L,A]=a.useState(!1),[S,v]=a.useState([]),k=a.useMemo(()=>yt(e.provider),[e.provider]),[x,I]=a.useState(k),b=n!=="mobile",{showToast:W}=ct(),_=a.useMemo(()=>Fa(e),[e]),P=Rr(!b),E=Pr({enabled:!b,initialPanel:s,sessionId:e.sessionId,workspaceId:e.workspaceId,suspendMainGesture:!b&&P.isVisible}),m=a.useMemo(()=>new Set(f.map(O=>O.session.sessionId)),[f]),g=a.useMemo(()=>o.map(O=>O.workspace),[o]),N=a.useMemo(()=>Yn(o),[o]),U=a.useMemo(()=>Is(o),[o]),X=a.useMemo(()=>g.find(O=>O.id===e.workspaceId)??null,[e.workspaceId,g]),G=U[e.workspaceId]??(X?Ms(X):null),re=a.useMemo(()=>St(_.title??null,i("conversation.titleFallback")),[_]),$=a.useMemo(()=>wr(o,e.workspaceId,m),[e.workspaceId,m,o]),pe=a.useMemo(()=>Sr(f,o),[f,o]),[V,w]=a.useState([]),q=a.useMemo(()=>[...pe,...$],[pe,$]),Z=a.useMemo(()=>Xt(o,e.workspaceId),[e.workspaceId,o]),Y=a.useMemo(()=>(Z==null?void 0:Z.sessions.filter(O=>O.isArchived===!0&&!$t(O)))??[],[Z]),D=N.find(O=>O.workspace.id===e.workspaceId)??(Z?{workspace:Z.workspace,label:Z.workspace.name,subtitle:Z.workspace.path}:null),ce=b?null:yr(P.mainGestureHandlers,E.mainGestureHandlers),[T,F]=a.useState(!1),[z,ie]=a.useState(null),te=a.useRef(null),be=a.useRef(null),Ee=a.useRef(null),[je,H]=a.useState(null),{composerPortalTarget:Q}=Fn();a.useEffect(()=>{const O=Bn(q,e.sessionId,B=>B.session.sessionId);O.length!==0&&w(B=>{const ue=new Set(B);let he=!1;for(const me of O)ue.has(me)||(ue.add(me),he=!0);return he?Array.from(ue):B})},[e.sessionId,q]),a.useEffect(()=>(u(e.sessionId,e.workspaceId),()=>{u(e.sessionId,null)}),[e.sessionId,e.workspaceId,u]),a.useEffect(()=>{let O=!1;return I(k),Cn(e.provider,e.workspaceId).then(B=>{O||I(B)}).catch(()=>{}),()=>{O=!0}},[e.provider,e.workspaceId,k]),Mr(be,je,!b,e.sessionId),xr(be,Ee,!b,e.sessionId);function Le(O){l(O),t(Ct(O))}return r.jsx(r.Fragment,{children:r.jsxs("main",{ref:be,className:"workbench-page conversation-page-shell mobile-page-fixed-root mobile-conversation-page","data-mobile-shell":!b,"data-preview-mode":b?void 0:P.displayMode,"data-preview-dragging":b?void 0:P.isDragging,"data-workspace-tone":(G==null?void 0:G.tone)??"root","data-worktree-depth":(G==null?void 0:G.depth)??0,"data-tool-panel-open":b?void 0:E.isOpen,style:{...b?{}:P.pageStyle,...gt(G)??{}},children:[b?r.jsx(vr,{session:_,workspaceContext:G}):null,b?null:r.jsx(zn,{containerRef:Ee,className:"mobile-conversation-page-header",gestureHandlers:ce??void 0,currentWorkspace:D?{id:D.workspace.id,name:D.label,path:D.subtitle}:g[0]??null,workspaces:g,workspaceOptions:N,onSelectWorkspace:Le,heading:re.fullTitle,trailing:r.jsx("span",{className:"mobile-conversation-toolbar-title",title:re.fullTitle,children:re.displayTitle})}),b?null:r.jsx(kr,{visible:!E.isOpen&&P.isVisible,widthPx:P.previewWidthPx,isDragging:P.isDragging,gestureHandlers:P.railGestureHandlers,activeSessionId:e.sessionId,createSessionActionLabel:i("shell.createSession"),favoriteItems:pe,items:$,expandedRootIds:V,workspaceSectionLabel:(D==null?void 0:D.label)??i("shell.mobileConversationCurrentWorkspaceSection"),onCreateSession:()=>{p(e.workspaceId,e.provider)},archiveFolderActionLabel:Y.length>0?i("shell.archiveFolderLabel"):void 0,onOpenArchiveFolder:Y.length>0?()=>{F(!0)}:void 0,onToggleSubsessions:O=>{w(B=>B.includes(O)?B.filter(ue=>ue!==O):[...B,O])},onActivate:O=>{P.closePreview(),l(O.workspace.id),t(Ye(O.workspace.id,O.session.sessionId))}}),r.jsx("div",{className:"mobile-conversation-stage",...ce??{},children:r.jsxs("div",{ref:te,className:"mobile-conversation-main",children:[r.jsx(Cs,{connectionState:"closed",onReconnect:()=>{}}),r.jsx("div",{className:"conversation-timeline-shell",children:r.jsx(ys,{sessionId:e.sessionId,messages:S,historyState:"ready",loadingOlderMessages:!1,hasOlderMessages:!1,provider:e.provider,runtimeThinkingPlaceholder:null,onLoadOlderMessages:()=>{},onRetryMessage:()=>{}})}),E.isOpen?null:r.jsx(Ps,{capabilities:x,draftStorageId:e.sessionId,workspaceId:e.workspaceId,panelRef:b?void 0:H,portalContainer:b?null:Q,contextUsage:null,taskProvider:e.provider,taskMessages:S,isSubmitting:L,isRunning:!1,onSend:async(O,B)=>{var me,Ue,Oe,J;const ue=Ja();v(se=>[...se,qn(e.sessionId,O,ue,(B==null?void 0:B.attachmentMeta)??[],(B==null?void 0:B.attachments)??[])]),A(!0);const he=performance.now();fe("session_send.start_live.client_start",{draftSessionId:e.sessionId,workspaceId:e.workspaceId,provider:e.provider,clientRequestId:ue,contentLength:O.length});try{const se=await kn({workspaceId:e.workspaceId,provider:e.provider,content:O,clientRequestId:ue,model:(B==null?void 0:B.model)??null,reasoningLevel:(B==null?void 0:B.reasoningLevel)??null,permissionMode:dt(),attachments:(B==null?void 0:B.attachments)??[],providerConfigMode:(B==null?void 0:B.providerConfigMode)??"global-default",providerPresetId:(B==null?void 0:B.providerPresetId)??null});fe("session_send.start_live.client_response",{draftSessionId:e.sessionId,sessionId:se.sessionId,workspaceId:((me=se.session)==null?void 0:me.workspaceId)??e.workspaceId,provider:se.provider,clientRequestId:ue,durationMs:Math.round(performance.now()-he),returnedMessageId:((Ue=se.message)==null?void 0:Ue.messageId)??null}),se.session&&d(se.session);const we=((J=(Oe=se.session)==null?void 0:Oe.workspaceId)==null?void 0:J.trim())||e.workspaceId;u(se.sessionId,we),Rt("preview"),t(Ye(we,se.sessionId),{replace:!0,state:{composer:{sessionId:se.sessionId,initialModel:(B==null?void 0:B.model)??null,providerConfigMode:(B==null?void 0:B.providerConfigMode)??"global-default",providerPresetId:(B==null?void 0:B.providerPresetId)??null},bootstrap:se.message?{sessionId:se.sessionId,messages:[se.message]}:void 0}}),c()}catch(se){throw fe("session_send.start_live.client_error",{draftSessionId:e.sessionId,workspaceId:e.workspaceId,provider:e.provider,clientRequestId:ue,durationMs:Math.round(performance.now()-he),error:se instanceof Error?se.message:String(se)}),v(we=>hs(we,ue)),se}finally{A(!1)}}})]})}),b?null:r.jsx(Cr,{activePanel:E.activePanel,open:E.isOpen,sessionId:e.sessionId,workspaceId:e.workspaceId,navigationGroups:o,onClose:()=>{E.closePanel()},onSelectPanel:O=>{E.selectPanel(O)},onSelectPanelBySwipe:O=>{if(O===null){E.closePanel();return}E.selectPanel(O)}}),r.jsx(Er,{open:T,workspaceName:(Z==null?void 0:Z.workspace.name)??null,sessions:Y,restoringSessionId:z,onClose:()=>{z||F(!1)},onRestore:async O=>{ie(O);try{await M(O),W({title:i("shell.archiveRestored"),tone:"success"})}catch(B){W({title:B instanceof Error?B.message:i("shell.navigationLoadFailed"),tone:"error"})}finally{ie(null)}}})]})})}function Ha(e,t,s,n=null){var l,u;if(!za(e))return null;const o=t??((l=s.get("workspaceId"))==null?void 0:l.trim())??null,c=((u=s.get("provider"))==null?void 0:u.trim())??n??null;return!o||!En(c)?null:{sessionId:e,workspaceId:o,provider:c}}function Fa(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:uo(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 br(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=qo(o,{mode:"mobile"});if(!l)return s.set(o.sessionId,!0),!0;const u=t.get(l);if(!u)return s.set(o.sessionId,!0),!0;const d=n(u);return s.set(o.sessionId,d),d};return e.filter(o=>n(o))}function wr(e,t,s){if(!t)return[];const n=Xt(e,t);if(!n)return[];const o=br(n.sessions).map(l=>({session:l,workspace:n.workspace}));return Wn(o,{mode:"mobile"}).filter(l=>!s.has(l.item.session.sessionId)&&!Fo(l.children,u=>s.has(u.session.sessionId)))}function Sr(e,t){return e.filter(s=>!$t(s.session)).flatMap(s=>{const n=Xt(t,s.workspace.id);if(!n)return[];const o=Wn(br(n.sessions).map(l=>({session:l,workspace:n.workspace})),{mode:"mobile"}),c=Ir(o,s.session.sessionId);return c?[c]:[]})}function Ir(e,t){for(const s of e){if(s.item.session.sessionId===t)return s;const n=Ir(s.children,t);if(n)return n}return null}function Mr(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 u(){!e.current||!l.isConnected||c.style.setProperty("--mobile-conversation-composer-height",`${l.offsetHeight}px`)}u();const d=typeof ResizeObserver<"u"?new ResizeObserver(u):null;return d==null||d.observe(l),window.addEventListener("resize",u),()=>{d==null||d.disconnect(),window.removeEventListener("resize",u),o.style.removeProperty("--mobile-conversation-composer-height")}},[t,s,n,e])}function xr(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,u=c;function d(){!e.current||!u.isConnected||l.style.setProperty("--mobile-conversation-page-header-height",`${u.offsetHeight}px`)}d();const f=typeof ResizeObserver<"u"?new ResizeObserver(d):null;return f==null||f.observe(u),window.addEventListener("resize",d),()=>{f==null||f.disconnect(),window.removeEventListener("resize",d),o.style.removeProperty("--mobile-conversation-page-header-height")}},[s,t,n,e])}function Ba(e){return e==="files"||e==="git"||e==="processes"?e:null}function yr(...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 Pr(e){const t=xs(),s=mt(),n=ws(),o=a.useRef(null),[c,l]=a.useState(()=>e.initialPanel??Gs()),u=e.initialPanel??c,d=e.enabled&&e.workspaceId!==null&&e.initialPanel!==null;a.useEffect(()=>{if(!e.enabled){o.current=null;return}const I=e.initialPanel??Gs();l(I),Ys(I)},[e.enabled,e.initialPanel]);function f(I,b){const W=new URLSearchParams(t.search);I?(W.set("toolPanel",I),l(I),Ys(I)):W.delete("toolPanel");const _=W.toString();s({pathname:t.pathname,search:_?`?${_}`:""},{replace:(b==null?void 0:b.replace)??!1})}function M(I){n.trigger("selection"),f(I,{replace:d})}function p(){d&&(n.trigger("gesture"),f(null,{replace:!0}))}function L(I){if(!e.enabled||!e.workspaceId)return;const b=I??u;n.trigger("gesture"),f(b)}function A(I){if(!e.enabled||I.changedTouches.length!==1){o.current=null;return}if(Wa(I.target)){o.current=null;return}const b=I.changedTouches[0];o.current={x:b.clientX,y:b.clientY}}function S(I){const b=o.current;if(o.current=null,!b||I.changedTouches.length!==1||d||e.suspendMainGesture)return;const W=I.changedTouches[0],_=W.clientX-b.x,P=W.clientY-b.y;_>-56||Math.abs(_)<=Math.abs(P)*1.15||L()}function v(I){const b=o.current;if(o.current=null,!b||I.changedTouches.length!==1||!d)return;const W=I.changedTouches[0],_=W.clientX-b.x,P=W.clientY-b.y;_<56||Math.abs(_)<=Math.abs(P)*1.15||p()}return{activePanel:u,closePanel:p,isOpen:d,mainGestureHandlers:{onTouchStart:A,onTouchMove:()=>{},onTouchEnd:S,onTouchCancel:()=>{o.current=null}},openPanel:L,panelGestureHandlers:{onTouchStart:A,onTouchMove:()=>{},onTouchEnd:v,onTouchCancel:()=>{o.current=null}},selectPanel:M}}function Cr(e){const t=a.useRef(null);if(!e.open)return null;function s(o){if(o.changedTouches.length!==1){t.current=null;return}if(qa(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],u=l.clientX-c.x,d=l.clientY-c.y;if(Math.abs(u)<56||Math.abs(u)<=Math.abs(d)*1.15)return;const f=["files","git","processes"],M=f.indexOf(e.activePanel);if(u<0){e.onSelectPanelBySwipe(f[Math.min(f.length-1,M+1)]??e.activePanel);return}if(M===0){e.onSelectPanelBySwipe(null);return}e.onSelectPanelBySwipe(f[Math.max(0,M-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 Wa(e){return e instanceof Element?!!e.closest("input, textarea, select, option, label, button, a, [contenteditable='true'], [data-preview-gesture='ignore']"):!1}function qa(e){return e instanceof Element?!!e.closest("input, textarea, select, option, [contenteditable='true']"):!1}function Rr(e){const t=ws(),[s,n]=a.useState(()=>e?zt():"immersive"),[o,c]=a.useState(()=>yn()),[l,u]=a.useState(()=>e&&zt()==="preview"?"default":"closed"),d=a.useRef(l),f=a.useRef(null);a.useEffect(()=>{d.current=l},[l]),a.useEffect(()=>{if(!e){f.current=null,d.current="closed",u("closed"),n("immersive");return}const m=zt();n(m),u(m==="preview"?"default":"closed")},[e]),a.useEffect(()=>{e&&Rt(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 M(m){d.current=m,u(m)}function p(m="default"){M(m),n("preview")}function L(){M("closed"),n("immersive")}function A(){M("expanded"),n("preview")}function S(){if(d.current!=="closed"){t.trigger("gesture"),L();return}t.trigger("gesture"),p()}function v(m,g){const N=g.touches[0]??g.changedTouches[0];if(!e||!N){f.current=null;return}if(Va(g.target)){f.current=null;return}if(m==="main"){if(d.current==="closed"&&N.clientX>_a){f.current=null;return}}else if(d.current==="closed"){f.current=null;return}f.current={source:m,intent:m==="rail"?"rail":d.current==="closed"?"open":"close",startX:N.clientX,startY:N.clientY,lastX:N.clientX,lastY:N.clientY,horizontalLocked:!1}}function k(m){const g=f.current,N=m.touches[0];if(!e||!g||!N)return;const U=N.clientX-g.startX,X=N.clientY-g.startY;if(g.lastX=N.clientX,g.lastY=N.clientY,!g.horizontalLocked){if(Math.abs(U)<xn&&Math.abs(X)<xn)return;if(Math.abs(U)<=Math.abs(X)){f.current=null;return}if(g.intent==="open"&&U<=0){f.current=null;return}if(g.intent==="close"&&U>=0){f.current=null;return}g.horizontalLocked=!0}}function x(m){var X;const g=f.current;if(f.current=null,!(g!=null&&g.horizontalLocked))return;const N=(X=m==null?void 0:m.changedTouches)==null?void 0:X[0];N&&(g.lastX=N.clientX,g.lastY=N.clientY);const U=g.lastX-g.startX;if(g.intent==="open"){U>=Na&&(t.trigger("gesture"),p("default"));return}if(g.intent==="close"){U<=-34&&(t.trigger("gesture"),L());return}if(U<=-34){t.trigger("gesture"),L();return}U>=La&&d.current==="default"&&(t.trigger("gesture"),A())}const I=l==="expanded"?ls:l==="default"?Mn:0,b=Math.round(o*I*100)/100,W=I===0?0:I/ls,_={"--mobile-conversation-preview-default-width":`${Math.round(o*Mn*100)/100}px`,"--mobile-conversation-preview-max-width":`${Math.round(o*ls*100)/100}px`,"--mobile-conversation-preview-width":`${b}px`,"--mobile-conversation-preview-progress":W.toFixed(4)};return{closePreview:L,displayMode:l==="closed"?"immersive":"preview",isDragging:!1,isVisible:l!=="closed",mainGestureHandlers:{onTouchStart:m=>v("main",m),onTouchMove:k,onTouchEnd:x,onTouchCancel:x},pageStyle:_,previewWidthPx:b,railGestureHandlers:{onTouchStart:m=>v("rail",m),onTouchMove:k,onTouchEnd:x,onTouchCancel:x},togglePreview:S}}function kr({visible:e,widthPx:t,isDragging:s,gestureHandlers:n,activeSessionId:o,createSessionActionLabel:c,favoriteItems:l,items:u,expandedRootIds:d,workspaceSectionLabel:f,onCreateSession:M,archiveCurrentActionLabel:p,archiveFolderActionLabel:L,onArchiveActiveSession:A,onOpenArchiveFolder:S,onToggleSubsessions:v,onActivate:k}){if(!e)return null;function x(I,b){const{workspaceName:W,ancestorExpanded:_=!1,ancestorHasNextSiblings:P=[],hasNextSibling:E=!1,isFirstSibling:m=!1}=b??{},g=I.item.session.sessionId,N=I.children,U=I.depth===0&&N.length>0,X=_||U&&d.includes(g),G=I.depth>0?[...P,E]:[...P];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:[P.map((re,$)=>re?r.jsx("span",{className:"mobile-conversation-preview-guide-column",style:{"--mobile-preview-tree-level":$+1}},`${g}:ancestor:${$}`):null),r.jsx("span",{className:"mobile-conversation-preview-guide-branch","data-continue":E,"data-first":m,style:{"--mobile-preview-tree-level":I.depth},children:r.jsx("span",{className:"mobile-conversation-preview-guide-branch-horizontal"})})]}):null,r.jsx(Ua,{entry:I.item,activeSessionId:o,hasSubsessions:U,subsessionsExpanded:X,workspaceName:W,onToggleSubsessions:U?()=>{v(g)}:void 0,onActivate:k})]}),N.length>0&&X?r.jsx("div",{className:"mobile-conversation-preview-children",children:N.map((re,$)=>x(re,{workspaceName:W,ancestorExpanded:!0,ancestorHasNextSiblings:G,hasNextSibling:$<N.length-1,isFirstSibling:$===0}))}):null]},`${I.item.workspace.id}:${g}`)}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&&M?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:M,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:x(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:u.length})]}),u.length===0?r.jsx("div",{className:"workbench-session-empty",children:i("shell.emptyWorkspaceSessions")}):r.jsx("div",{className:"mobile-conversation-preview-list terminal-mobile-session-list","data-preview-gesture":"ignore",children:u.map(I=>x(I))})]})]}),p&&A||L&&S?r.jsxs("div",{className:"mobile-conversation-preview-actions terminal-mobile-list-footer",children:[p&&A?r.jsx("button",{type:"button",className:"mobile-conversation-preview-archive-button workbench-import-toggle",onClick:()=>{A()},children:p}):null,L&&S?r.jsx("button",{type:"button",className:"mobile-conversation-preview-archive-button workbench-import-toggle",onClick:S,children:L}):null]}):null]})}function Ua({entry:e,activeSessionId:t,hasSubsessions:s=!1,subsessionsExpanded:n=!1,onActivate:o,onToggleSubsessions:c,workspaceName:l}){const u=e.session.sessionId===t;return r.jsxs("article",{className:"mobile-conversation-preview-entry terminal-mobile-session-card","data-active":u,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:d=>{d.stopPropagation(),c==null||c()},children:r.jsx("span",{className:Pn(e.session,{isActive:u,hasSubsessions:s}),"aria-hidden":"true"})}):r.jsx("span",{className:Pn(e.session,{isActive:u,hasSubsessions:s}),"aria-hidden":"true"}),r.jsx("button",{type:"button",className:"mobile-conversation-preview-item terminal-mobile-session-primary","data-active":u,onClick:()=>o(e),children:r.jsxs("div",{className:"mobile-conversation-preview-item-body",children:[r.jsx("span",{className:"mobile-conversation-preview-item-title",children:e.session.title||i("common.unknown")}),r.jsx("span",{className:"mobile-conversation-preview-item-meta",children:Tr(e.session,l)})]})})]})}function yn(){return typeof window>"u"?390:Math.max(window.innerWidth||390,320)}function Va(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=Uo("mobile-conversation-preview-indicator",e,{hasSubagents:t.hasSubsessions});return s.endsWith(" is-idle")&&t.isActive?"mobile-conversation-preview-indicator is-active":s}function Tr(e,t){const s=Hn(e);return[t??null,Tt(e.provider),$a(e.lastMessageAt??e.updatedAt),s].filter(Boolean).join(" · ")}function $a(e){return e?new Date(e).toLocaleString(void 0,{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"}):i("common.unknown")}function Xa({open:e,busy:t,onClose:s,onConfirm:n}){return r.jsx(Ut,{open:e,title:i("shell.archiveConfirmTitle"),description:i("shell.archiveConfirmDescription"),size:"narrow",layout:"confirm",dismissible:!t,showCloseButton:!1,footer:r.jsxs(Vt,{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 Er({open:e,workspaceName:t,sessions:s,restoringSessionId:n,onClose:o,onRestore:c}){const{searchOpen:l,searchKeyword:u,filteredSessions:d,summaryLoading:f,summaryError:M,summaryBySessionId:p,setSearchKeyword:L,toggleSearch:A}=Bo(e,s),S=a.useId(),v=s.length>0&&u.trim().length>0?i("shell.archiveSearchEmpty"):i("shell.archiveEmpty");return r.jsxs(Ut,{open:e,title:i("shell.archiveModalTitle"),description:t?`${t} · ${i("shell.archiveModalDescription")}`:i("shell.archiveModalDescription"),size:"regular",layout:"list",dismissible:!n,headerActions:s.length>0?r.jsx("button",{type:"button",className:"secondary-button","aria-pressed":l,onClick:A,children:i("shell.archiveSearchAction")}):void 0,showCloseButton:!1,onClose:o,children:[l?r.jsxs("div",{className:"workbench-archive-search-panel",children:[r.jsx(Ht,{label:i("shell.archiveSearchLabel"),htmlFor:S,children:r.jsx("input",{id:S,type:"text",value:u,placeholder:i("shell.archiveSearchPlaceholder"),autoFocus:!0,onChange:k=>L(k.target.value)})}),f?r.jsx("p",{className:"workbench-archive-search-status",children:i("shell.archiveSearchSummaryLoading")}):null,M?r.jsx("p",{className:"workbench-archive-search-status status-text","data-tone":"warning",children:M}):null]}):null,d.length>0?r.jsx(ho,{className:"workbench-archive-list",children:d.map(k=>{var b;const x=St(k.title,i("common.unknown")),I=((b=p[k.sessionId])==null?void 0:b.trim())??"";return r.jsx(mo,{className:"workbench-archive-item",trailing:r.jsx("button",{type:"button",className:"secondary-button",disabled:n===k.sessionId,onClick:()=>{c(k.sessionId)},children:i("shell.unarchiveAction")}),children:r.jsxs("div",{className:"workbench-archive-item-main",children:[r.jsx("strong",{title:x.fullTitle,children:x.displayTitle}),r.jsx("p",{children:Tr(k)}),l&&I?r.jsx("p",{className:"workbench-archive-item-summary",children:I}):null]})},k.sessionId)})}):r.jsx(po,{title:v,compact:!0,className:"workbench-section-empty"})]})}function Ga(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(Qo,{})})})}function Ya(){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 za(e){return e.startsWith("draft-")}function Qa(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(Za)}function Ka(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 u=typeof o=="string"&&o.trim()||null,d=typeof l=="string"&&l.trim()||null,f=c==="cc-switch-preset"&&d?"cc-switch-preset":"global-default";return{initialModel:u,providerConfigMode:f,providerPresetId:f==="cc-switch-preset"?d:null}}function Za(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 Ja(){const e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}export{Sl as ConversationPage};
@@ -1 +1 @@
1
- import{b as d,j as e}from"./index-C-0oeG_5.js";function c(){return d.useEffect(()=>{const t=document.documentElement.style.background,s=document.body.style.background;return document.documentElement.style.background="transparent",document.body.style.background="transparent",()=>{document.documentElement.style.background=t,document.body.style.background=s}},[]),e.jsx("main",{className:"desktop-detach-preview-page","aria-hidden":"true",children:e.jsxs("section",{className:"desktop-detach-preview-card",children:[e.jsx("header",{className:"desktop-detach-preview-bar",children:e.jsx("strong",{className:"desktop-detach-preview-title",children:"小窗口"})}),e.jsx("div",{className:"desktop-detach-preview-body",children:e.jsx("span",{className:"desktop-detach-preview-badge"})})]})})}export{c as DesktopDetachPreviewPage};
1
+ import{b as d,j as e}from"./index-DSw-TkQL.js";function c(){return d.useEffect(()=>{const t=document.documentElement.style.background,s=document.body.style.background;return document.documentElement.style.background="transparent",document.body.style.background="transparent",()=>{document.documentElement.style.background=t,document.body.style.background=s}},[]),e.jsx("main",{className:"desktop-detach-preview-page","aria-hidden":"true",children:e.jsxs("section",{className:"desktop-detach-preview-card",children:[e.jsx("header",{className:"desktop-detach-preview-bar",children:e.jsx("strong",{className:"desktop-detach-preview-title",children:"小窗口"})}),e.jsx("div",{className:"desktop-detach-preview-body",children:e.jsx("span",{className:"desktop-detach-preview-badge"})})]})})}export{c as DesktopDetachPreviewPage};
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/window-BVUB8gMK.js","assets/event-DvH9tcej.js"])))=>i.map(i=>d[i]);
2
- import{b as a,m as E,_ as y,j as t,t as c}from"./index-C-0oeG_5.js";import{u as q,g as O}from"./model-switch-api-Bh9nYslz.js";import{FileContextPanel as F}from"./FileContextPanel-DwFzLsOp.js";import{GitSidebar as C}from"./GitSidebar-CH6WqTrM.js";import{TerminalManagerPanel as P}from"./TerminalManagerPanel-BbORd-ee.js";import{TerminalPage as _}from"./TerminalPage-DWHv6mlu.js";import{r as $,W as U,m as W}from"./WorkbenchLayout-pOZvEqp7.js";import{c as z,u as A,e as H,N as K}from"./App-Dsf3ooXU.js";import"./WorkbenchModal-ColqvV6a.js";import"./file-tree-icon-Bp3Ntt7u.js";import"./terminal-runtime-meta-8_uRZf7h.js";import"./TerminalRuntimeFallbackModal-B29YxbQe.js";import"./MobileWorkspaceSwitcherHeader-CfUnHgv_.js";import"./MobileTopHeaderFrame-C5rIKQT6.js";import"./window-BVUB8gMK.js";import"./event-DvH9tcej.js";import"./relay-entry-pmr-c42O.js";function V(n){return{navigationGroups:n,subscribeFileTree:()=>{},requestFileTreeRefresh:()=>{},addFileTreeSnapshotListener:()=>()=>{},subscribeGitSnapshot:()=>{},requestGitRefresh:()=>{},addGitSnapshotListener:()=>()=>{}}}function B(){return{subscribeGitSnapshot:()=>{},requestGitRefresh:()=>{},addGitSnapshotListener:()=>()=>{}}}function J(){return{subscribeTerminalManagerSnapshot:()=>{},requestTerminalManagerRefresh:()=>{},addTerminalManagerSnapshotListener:()=>()=>{}}}function Q(n,u){return{navigationGroups:u,currentWorkspaceId:n,selectWorkspace:()=>{},subscribeTerminalManagerSnapshot:()=>{},requestTerminalManagerRefresh:()=>{},addTerminalManagerSnapshotListener:()=>()=>{}}}function x(n){return n.kind==="files"?c("shell.filesEntry"):n.kind==="git"?c("shell.gitEntry"):n.kind==="processes"?c("shell.terminalManagerEntry"):n.kind==="terminals"?c("shell.terminalsEntry"):n.kind}function M(n,u){var s;return n.workspaceName??(n.workspaceId?((s=u.find(d=>d.workspace.id===n.workspaceId))==null?void 0:s.workspace.name)??null:null)}function X(n,u){const s=M(n,u),d=x(n);return s?`CodingNS - ${d}(${s})`:`CodingNS - ${d}`}function we(){const{windowId:n}=z(),u=A(),s=H(),d=$(s),h=q(i=>i.sessionDisplaySortMode),[e,b]=a.useState(null),[N,w]=a.useState(!0),[T,v]=a.useState(null),[o,k]=a.useState([]),[r,S]=a.useState(null);a.useEffect(()=>{let i=!1;async function l(){if(!n){b(null),w(!1),v(c("desktopWindow.invalidWindowId"));return}w(!0),v(null);const p=await s.bridge.getWindowDescriptor(n),g=p.ok?p.value??null:s.windows.getDescriptor(n);if(!i){if(!g){b(null),w(!1),v(p.detail??c("desktopWindow.loadDescriptorFailed"));return}s.windows.registerDescriptor(g),s.windows.markWindowOpen(g.windowId),b(g),w(!1)}}return l(),()=>{i=!0}},[s,n]),a.useEffect(()=>{if(!(e!=null&&e.workspaceId)){k([]);return}let i=!1;async function l(){try{const p=await O();if(i)return;k(W(p,h))}catch{if(i)return;k([])}}return l(),()=>{i=!0}},[e==null?void 0:e.workspaceId,h]),a.useEffect(()=>{if(!e){S(null);return}const i=new U({onConnectionChange:()=>{},onSnapshot:l=>{k(W(l,h))},onUnauthorized:()=>{E.clear(),u(`/login?returnTo=${encodeURIComponent(`/desktop-window/${e.windowId}`)}`,{replace:!0})}});return S(i),i.start(),()=>{i.close(),S(null)}},[e,u,h]),a.useEffect(()=>{if(!s.isDesktop||!s.bridge.supported||!e||e.mode!=="external")return;const i=X(e,o);document.title=i,y(async()=>{const{getCurrentWindow:l}=await import("./window-BVUB8gMK.js").then(p=>p.w);return{getCurrentWindow:l}},__vite__mapDeps([0,1])).then(({getCurrentWindow:l})=>l().setTitle(i)).catch(()=>{})},[e,o,s.bridge.supported,s.isDesktop]);const D=a.useMemo(()=>r?{navigationGroups:o,subscribeFileTree:r.subscribeFileTree.bind(r),requestFileTreeRefresh:r.requestFileTreeRefresh.bind(r),addFileTreeSnapshotListener:r.addFileTreeSnapshotListener.bind(r),subscribeGitSnapshot:r.subscribeGit.bind(r),requestGitRefresh:r.requestGitRefresh.bind(r),addGitSnapshotListener:r.addGitSnapshotListener.bind(r)}:V(o),[o,r]),I=a.useMemo(()=>r?{subscribeGitSnapshot:r.subscribeGit.bind(r),requestGitRefresh:r.requestGitRefresh.bind(r),addGitSnapshotListener:r.addGitSnapshotListener.bind(r)}:B(),[r]),R=a.useMemo(()=>r?{subscribeTerminalManagerSnapshot:r.subscribeTerminalManager.bind(r),requestTerminalManagerRefresh:r.requestTerminalManagerRefresh.bind(r),addTerminalManagerSnapshotListener:r.addTerminalManagerSnapshotListener.bind(r)}:J(),[r]),G=a.useMemo(()=>r?{navigationGroups:o,currentWorkspaceId:(e==null?void 0:e.workspaceId)??null,selectWorkspace:()=>{},subscribeTerminalManagerSnapshot:r.subscribeTerminalManager.bind(r),requestTerminalManagerRefresh:r.requestTerminalManagerRefresh.bind(r),addTerminalManagerSnapshotListener:r.addTerminalManagerSnapshotListener.bind(r)}:Q((e==null?void 0:e.workspaceId)??null,o),[e==null?void 0:e.workspaceId,o,r]);if(!s.isDesktop)return t.jsx(K,{to:"/",replace:!0});if(N)return t.jsx("main",{className:"desktop-window-page",children:t.jsx("p",{className:"status-text",children:c("common.loading")})});if(T)return t.jsx("main",{className:"desktop-window-page",children:t.jsx("p",{className:"status-text",children:T})});if(!e)return t.jsx("main",{className:"desktop-window-page",children:t.jsx("p",{className:"status-text",children:c("desktopWindow.loadDescriptorFailed")})});let m=null;if(e.kind==="files"?m=t.jsx(F,{sessionId:e.sessionId,workspaceId:e.workspaceId,externalWindowMode:!0,workbenchShellOverrides:D}):e.kind==="git"?m=t.jsx(C,{workspaceId:e.workspaceId,externalWindowMode:!0,workbenchShellOverrides:I}):e.kind==="processes"?m=t.jsx(P,{currentWorkspaceId:e.workspaceId,navigationGroups:o,externalWindowMode:!0,workbenchShellOverrides:R}):e.kind==="terminals"&&(m=t.jsx(_,{externalWindowMode:!0,externalWindowWorkspaceId:e.workspaceId,workbenchShellOverrides:G})),!m)return t.jsx("main",{className:"desktop-window-page",children:t.jsx("p",{className:"status-text",children:c("desktopWindow.unsupportedKind",{kind:e.kind})})});const f=x(e),j=M(e,o),L=e.mode==="external"&&e.kind==="processes";return t.jsxs("main",{className:"desktop-window-page",children:[L?t.jsx("header",{className:"desktop-window-drag-header","data-window-kind":e.kind,"data-window-drag-handle":"desktop-window-drag-header","data-tauri-drag-region":d,"aria-label":f,children:t.jsxs("div",{className:"desktop-window-drag-header-copy","data-tauri-drag-region":d,children:[t.jsx("span",{className:"desktop-window-drag-header-tag","data-tauri-drag-region":d,children:f}),t.jsx("strong",{"data-tauri-drag-region":d,children:j??f})]})}):null,t.jsx("div",{className:"desktop-window-body","data-window-kind":e.kind,"aria-label":f,children:m})]})}export{we as DesktopWindowPage};
2
+ import{b as a,m as E,_ as y,j as t,t as c}from"./index-DSw-TkQL.js";import{u as q,g as O}from"./model-switch-api-C-l8-E1S.js";import{FileContextPanel as F}from"./FileContextPanel-CdC7GGw5.js";import{GitSidebar as C}from"./GitSidebar-z2SBinQh.js";import{TerminalManagerPanel as P}from"./TerminalManagerPanel-BOm8Hi_v.js";import{TerminalPage as _}from"./TerminalPage-B5JNFU6w.js";import{r as $,W as U,m as W}from"./WorkbenchLayout-DlbgBT3n.js";import{c as z,u as A,e as H,N as K}from"./App-B9HcTkMT.js";import"./WorkbenchModal-LNfB69qx.js";import"./file-tree-icon-9pt1OStn.js";import"./terminal-runtime-meta-0h-75uRy.js";import"./TerminalRuntimeFallbackModal-CM3LRKOJ.js";import"./MobileWorkspaceSwitcherHeader-CuGJ31kb.js";import"./MobileTopHeaderFrame-etF2HKlm.js";import"./window-BVUB8gMK.js";import"./event-DvH9tcej.js";import"./relay-entry-BmLkMKuq.js";function V(n){return{navigationGroups:n,subscribeFileTree:()=>{},requestFileTreeRefresh:()=>{},addFileTreeSnapshotListener:()=>()=>{},subscribeGitSnapshot:()=>{},requestGitRefresh:()=>{},addGitSnapshotListener:()=>()=>{}}}function B(){return{subscribeGitSnapshot:()=>{},requestGitRefresh:()=>{},addGitSnapshotListener:()=>()=>{}}}function J(){return{subscribeTerminalManagerSnapshot:()=>{},requestTerminalManagerRefresh:()=>{},addTerminalManagerSnapshotListener:()=>()=>{}}}function Q(n,u){return{navigationGroups:u,currentWorkspaceId:n,selectWorkspace:()=>{},subscribeTerminalManagerSnapshot:()=>{},requestTerminalManagerRefresh:()=>{},addTerminalManagerSnapshotListener:()=>()=>{}}}function x(n){return n.kind==="files"?c("shell.filesEntry"):n.kind==="git"?c("shell.gitEntry"):n.kind==="processes"?c("shell.terminalManagerEntry"):n.kind==="terminals"?c("shell.terminalsEntry"):n.kind}function M(n,u){var s;return n.workspaceName??(n.workspaceId?((s=u.find(d=>d.workspace.id===n.workspaceId))==null?void 0:s.workspace.name)??null:null)}function X(n,u){const s=M(n,u),d=x(n);return s?`CodingNS - ${d}(${s})`:`CodingNS - ${d}`}function we(){const{windowId:n}=z(),u=A(),s=H(),d=$(s),h=q(i=>i.sessionDisplaySortMode),[e,b]=a.useState(null),[N,w]=a.useState(!0),[T,v]=a.useState(null),[o,k]=a.useState([]),[r,S]=a.useState(null);a.useEffect(()=>{let i=!1;async function l(){if(!n){b(null),w(!1),v(c("desktopWindow.invalidWindowId"));return}w(!0),v(null);const p=await s.bridge.getWindowDescriptor(n),g=p.ok?p.value??null:s.windows.getDescriptor(n);if(!i){if(!g){b(null),w(!1),v(p.detail??c("desktopWindow.loadDescriptorFailed"));return}s.windows.registerDescriptor(g),s.windows.markWindowOpen(g.windowId),b(g),w(!1)}}return l(),()=>{i=!0}},[s,n]),a.useEffect(()=>{if(!(e!=null&&e.workspaceId)){k([]);return}let i=!1;async function l(){try{const p=await O();if(i)return;k(W(p,h))}catch{if(i)return;k([])}}return l(),()=>{i=!0}},[e==null?void 0:e.workspaceId,h]),a.useEffect(()=>{if(!e){S(null);return}const i=new U({onConnectionChange:()=>{},onSnapshot:l=>{k(W(l,h))},onUnauthorized:()=>{E.clear(),u(`/login?returnTo=${encodeURIComponent(`/desktop-window/${e.windowId}`)}`,{replace:!0})}});return S(i),i.start(),()=>{i.close(),S(null)}},[e,u,h]),a.useEffect(()=>{if(!s.isDesktop||!s.bridge.supported||!e||e.mode!=="external")return;const i=X(e,o);document.title=i,y(async()=>{const{getCurrentWindow:l}=await import("./window-BVUB8gMK.js").then(p=>p.w);return{getCurrentWindow:l}},__vite__mapDeps([0,1])).then(({getCurrentWindow:l})=>l().setTitle(i)).catch(()=>{})},[e,o,s.bridge.supported,s.isDesktop]);const D=a.useMemo(()=>r?{navigationGroups:o,subscribeFileTree:r.subscribeFileTree.bind(r),requestFileTreeRefresh:r.requestFileTreeRefresh.bind(r),addFileTreeSnapshotListener:r.addFileTreeSnapshotListener.bind(r),subscribeGitSnapshot:r.subscribeGit.bind(r),requestGitRefresh:r.requestGitRefresh.bind(r),addGitSnapshotListener:r.addGitSnapshotListener.bind(r)}:V(o),[o,r]),I=a.useMemo(()=>r?{subscribeGitSnapshot:r.subscribeGit.bind(r),requestGitRefresh:r.requestGitRefresh.bind(r),addGitSnapshotListener:r.addGitSnapshotListener.bind(r)}:B(),[r]),R=a.useMemo(()=>r?{subscribeTerminalManagerSnapshot:r.subscribeTerminalManager.bind(r),requestTerminalManagerRefresh:r.requestTerminalManagerRefresh.bind(r),addTerminalManagerSnapshotListener:r.addTerminalManagerSnapshotListener.bind(r)}:J(),[r]),G=a.useMemo(()=>r?{navigationGroups:o,currentWorkspaceId:(e==null?void 0:e.workspaceId)??null,selectWorkspace:()=>{},subscribeTerminalManagerSnapshot:r.subscribeTerminalManager.bind(r),requestTerminalManagerRefresh:r.requestTerminalManagerRefresh.bind(r),addTerminalManagerSnapshotListener:r.addTerminalManagerSnapshotListener.bind(r)}:Q((e==null?void 0:e.workspaceId)??null,o),[e==null?void 0:e.workspaceId,o,r]);if(!s.isDesktop)return t.jsx(K,{to:"/",replace:!0});if(N)return t.jsx("main",{className:"desktop-window-page",children:t.jsx("p",{className:"status-text",children:c("common.loading")})});if(T)return t.jsx("main",{className:"desktop-window-page",children:t.jsx("p",{className:"status-text",children:T})});if(!e)return t.jsx("main",{className:"desktop-window-page",children:t.jsx("p",{className:"status-text",children:c("desktopWindow.loadDescriptorFailed")})});let m=null;if(e.kind==="files"?m=t.jsx(F,{sessionId:e.sessionId,workspaceId:e.workspaceId,externalWindowMode:!0,workbenchShellOverrides:D}):e.kind==="git"?m=t.jsx(C,{workspaceId:e.workspaceId,externalWindowMode:!0,workbenchShellOverrides:I}):e.kind==="processes"?m=t.jsx(P,{currentWorkspaceId:e.workspaceId,navigationGroups:o,externalWindowMode:!0,workbenchShellOverrides:R}):e.kind==="terminals"&&(m=t.jsx(_,{externalWindowMode:!0,externalWindowWorkspaceId:e.workspaceId,workbenchShellOverrides:G})),!m)return t.jsx("main",{className:"desktop-window-page",children:t.jsx("p",{className:"status-text",children:c("desktopWindow.unsupportedKind",{kind:e.kind})})});const f=x(e),j=M(e,o),L=e.mode==="external"&&e.kind==="processes";return t.jsxs("main",{className:"desktop-window-page",children:[L?t.jsx("header",{className:"desktop-window-drag-header","data-window-kind":e.kind,"data-window-drag-handle":"desktop-window-drag-header","data-tauri-drag-region":d,"aria-label":f,children:t.jsxs("div",{className:"desktop-window-drag-header-copy","data-tauri-drag-region":d,children:[t.jsx("span",{className:"desktop-window-drag-header-tag","data-tauri-drag-region":d,children:f}),t.jsx("strong",{"data-tauri-drag-region":d,children:j??f})]})}):null,t.jsx("div",{className:"desktop-window-body","data-window-kind":e.kind,"aria-label":f,children:m})]})}export{we as DesktopWindowPage};