@openchambery/web 1.17.1-beta.7 → 1.17.1-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/README.md +3 -39
  2. package/bin/cli-output.js +0 -16
  3. package/bin/cli.js +3 -66
  4. package/bin/cli.test.js +4 -81
  5. package/bin/lib/DOCUMENTATION.md +5 -19
  6. package/bin/lib/cli-args.js +3 -327
  7. package/bin/lib/cli-http.js +0 -16
  8. package/bin/lib/cli-lifecycle.js +2 -111
  9. package/bin/lib/cli-paths.js +0 -57
  10. package/dist/assets/{AgentAvatar-htFrIvQx.js → AgentAvatar-C6Hxu5_o.js} +1 -1
  11. package/dist/assets/{AssistantView-BZiJsNuI.js → AssistantView-ZlXc0xFT.js} +1 -1
  12. package/dist/assets/{ChatContainer-CdmcMnL3.js → ChatContainer-BXFy3Uu2.js} +5 -5
  13. package/dist/assets/{DiagramView-B7sq74V-.js → DiagramView-CgotrQyK.js} +1 -1
  14. package/dist/assets/{FadeInOnReveal-8fY7XL23.js → FadeInOnReveal-CvNA_aGD.js} +1 -1
  15. package/dist/assets/{Icon-B7eLbnyj.js → Icon-BPJ_quEe.js} +1 -1
  16. package/dist/assets/{MarkdownRendererImpl-DICju9ve.js → MarkdownRendererImpl-Cj4y0P0S.js} +1 -1
  17. package/dist/assets/{MobileDetailNavigation-CuxWU1yf.js → MobileDetailNavigation-5tAL5d_M.js} +1 -1
  18. package/dist/assets/{MobileShareBridge-CPg9Eyro.js → MobileShareBridge-BL7Ehxhd.js} +1 -1
  19. package/dist/assets/{MobileSurface-D7sDH_tx.js → MobileSurface-ByMnQ5rD.js} +1 -1
  20. package/dist/assets/{MultiRunWindow-MSO0Equt.js → MultiRunWindow-Che7L3TX.js} +1 -1
  21. package/dist/assets/{OnboardingScreen-C87u_MLg.js → OnboardingScreen-CdvaEBtt.js} +1 -1
  22. package/dist/assets/{OverlayScrollbar-Kmmybw-z.js → OverlayScrollbar-C2pEDFq-.js} +1 -1
  23. package/dist/assets/SettingsView-D0p-e8Px.js +25 -0
  24. package/dist/assets/{SettingsWindow-Bl25cfXX.js → SettingsWindow-KYhsFUrb.js} +1 -1
  25. package/dist/assets/{TerminalView-jR5jP1b0.js → TerminalView-Da5aLqHR.js} +1 -1
  26. package/dist/assets/{ToolOutputDialog-DCEZb2DZ.js → ToolOutputDialog-DZI4uxx3.js} +1 -1
  27. package/dist/assets/{appThemeRegistry-aiRF-s3c.js → appThemeRegistry-DAgBeFsZ.js} +2 -2
  28. package/dist/assets/{button-bYWkDtDI.js → button-BmNJBT13.js} +1 -1
  29. package/dist/assets/{clipboard-CzpzN4Um.js → clipboard-CXWbHCAk.js} +1 -1
  30. package/dist/assets/{collapsible-A1PFvMRp.js → collapsible-68IqWBM1.js} +1 -1
  31. package/dist/assets/{context-menu-CkpHn-Bm.js → context-menu-BXH0AcOc.js} +1 -1
  32. package/dist/assets/desktopHosts-BpjUSDz4.js +1 -0
  33. package/dist/assets/{desktopRelayRestore-C5vYnSTd.js → desktopRelayRestore-BzUEk1i7.js} +1 -1
  34. package/dist/assets/{diagram-BkwKWaTO.js → diagram-YN0GZ1Q0.js} +1 -1
  35. package/dist/assets/{dialog-DW7-_iqo.js → dialog-BV1ENlLf.js} +1 -1
  36. package/dist/assets/es-EXZUX1sB.js +15 -0
  37. package/dist/assets/{fileQueries-P9SX4YwC.js → fileQueries-i4oziMnC.js} +1 -1
  38. package/dist/assets/fr-jWNPO91J.js +13 -0
  39. package/dist/assets/{gitApi-CMsZ2v08.js → gitApi-BW5AFgD1.js} +1 -1
  40. package/dist/assets/{gitApiHttp-DvIIcDAO.js → gitApiHttp-C1DaEMKR.js} +1 -1
  41. package/dist/assets/{input-B9aNttqV.js → input-BLVhPvhN.js} +1 -1
  42. package/dist/assets/{insertionBoundaries-Di3rCXgN.js → insertionBoundaries-D4KbXFFj.js} +1 -1
  43. package/dist/assets/ja-Dcb0VtDE.js +15 -0
  44. package/dist/assets/ko-CX71xNDX.js +15 -0
  45. package/dist/assets/{main-DY27kMV5.js → main-CcyyPAib.js} +2 -2
  46. package/dist/assets/{main-Chtf300b.js → main-DzxdsF_k.js} +5 -5
  47. package/dist/assets/{markdown-worker-BoB1_DPo.js → markdown-worker-Cq3Twp1A.js} +1 -1
  48. package/dist/assets/{markdownTheme-om5XcPqq.js → markdownTheme-CCnvI6L0.js} +1 -1
  49. package/dist/assets/{miniChat-BWbpl5SN.js → miniChat-BsNf9y48.js} +2 -2
  50. package/dist/assets/mobile-CsJg2IAq.js +2 -0
  51. package/dist/assets/{multirun-BfPcVktg.js → multirun-qs5hZkwM.js} +1 -1
  52. package/dist/assets/persistence-C_KCiMcY.js +3 -0
  53. package/dist/assets/{pl-BSjLn4dm.js → pl-mR_3Sqr8.js} +2 -2
  54. package/dist/assets/{projectMeta-CiAR7MRG.js → projectMeta-1SSTNg8w.js} +1 -1
  55. package/dist/assets/pt-BR-D1RpVOvC.js +15 -0
  56. package/dist/assets/radio-DBJG9Dd1.js +1 -0
  57. package/dist/assets/{renderElectronMiniChatApp-CiEXAVSt.js → renderElectronMiniChatApp-DOWE0jSA.js} +2 -2
  58. package/dist/assets/{renderMobileApp-BHvgSVPk.js → renderMobileApp-bklJJSZi.js} +3 -3
  59. package/dist/assets/{runtimeConfig-49YbZaqI.js → runtimeConfig-JSaYFA5x.js} +1 -1
  60. package/dist/assets/{runtimeEndpointReset-CdhtjuPe.js → runtimeEndpointReset-ix1NxqYw.js} +1 -1
  61. package/dist/assets/{sortable-tabs-strip-XeYica3j.js → sortable-tabs-strip-DncWjNx4.js} +1 -1
  62. package/dist/assets/src-B8mzksNL.css +2 -0
  63. package/dist/assets/store-oojlrF4d.js +15 -0
  64. package/dist/assets/{terminalApi-DAu7xKli.js → terminalApi-BYTA045F.js} +1 -1
  65. package/dist/assets/{tooltip-BSlxaNrR.js → tooltip-BYGBBTc2.js} +1 -1
  66. package/dist/assets/uk-UvnVqWv-.js +15 -0
  67. package/dist/assets/{url-DjkTDrad.js → url-CGHw6D-E.js} +1 -1
  68. package/dist/assets/useAppFontEffects-B1EhZNex.js +7 -0
  69. package/dist/assets/{useDesktopWindowControlsLayout-BwYnhrEy.js → useDesktopWindowControlsLayout-Dc69l-pm.js} +1 -1
  70. package/dist/assets/{useEffectiveDirectory-CEmsrrEs.js → useEffectiveDirectory-dCGvvYRh.js} +1 -1
  71. package/dist/assets/{useFontPreferences-BxMT_kty.js → useFontPreferences-Bu4ME5hk.js} +1 -1
  72. package/dist/assets/{useMobileNavigationStore-DryW-QdG.js → useMobileNavigationStore-DhkIZBJw.js} +4 -4
  73. package/dist/assets/useSessionAutoCleanup-D-r9oDye.js +1 -0
  74. package/dist/assets/{useWorkerHighlightedLines-CFW2AoPL.js → useWorkerHighlightedLines-05dLFgTI.js} +1 -1
  75. package/dist/assets/{utils-RUACCsOs.js → utils-DyUyiLje.js} +1 -1
  76. package/dist/assets/zh-CN-9v-RC966.js +15 -0
  77. package/dist/assets/zh-TW-BZ_wZdC-.js +15 -0
  78. package/dist/index.html +8 -8
  79. package/dist/mini-chat.html +8 -8
  80. package/dist/mobile.html +8 -8
  81. package/package.json +1 -1
  82. package/server/index.d.ts +0 -6
  83. package/server/index.js +5 -153
  84. package/server/lib/opencode/DOCUMENTATION.md +6 -10
  85. package/server/lib/opencode/cli-entry-runtime.js +0 -10
  86. package/server/lib/opencode/cli-options.js +0 -65
  87. package/server/lib/opencode/core-routes.js +2 -4
  88. package/server/lib/opencode/routes.test.js +0 -1
  89. package/server/lib/opencode/server-startup-runtime.js +0 -55
  90. package/server/lib/opencode/settings-helpers.js +0 -55
  91. package/server/lib/opencode/settings-helpers.test.js +0 -20
  92. package/server/lib/opencode/settings-normalization-runtime.js +0 -87
  93. package/server/lib/opencode/settings-normalization-runtime.test.js +0 -3
  94. package/server/lib/opencode/settings-runtime.js +9 -102
  95. package/server/lib/opencode/settings-runtime.test.js +0 -10
  96. package/server/lib/opencode/shutdown-runtime.js +1 -9
  97. package/server/lib/opencode/shutdown-runtime.test.js +0 -2
  98. package/server/lib/opencode/startup-pipeline-runtime.js +0 -20
  99. package/server/lib/opencode/startup-pipeline-runtime.test.js +2 -3
  100. package/server/lib/opencode/tunnel-wiring-runtime.js +2 -80
  101. package/server/lib/relay/DOCUMENTATION.md +1 -1
  102. package/bin/lib/cli-tunnel-capabilities.js +0 -9
  103. package/bin/lib/cli-tunnel-profiles.js +0 -366
  104. package/bin/lib/cli-tunnel-utils.js +0 -300
  105. package/bin/lib/commands-tunnel.js +0 -1761
  106. package/dist/assets/SettingsView-5YNu54KI.js +0 -25
  107. package/dist/assets/desktopHosts-D5m_ggY1.js +0 -1
  108. package/dist/assets/es-Cei_75Jt.js +0 -15
  109. package/dist/assets/fr-Dn7WSHh2.js +0 -13
  110. package/dist/assets/ja-DFARVqVj.js +0 -15
  111. package/dist/assets/ko-pyLnIyDY.js +0 -15
  112. package/dist/assets/mobile-DEQeGskq.js +0 -2
  113. package/dist/assets/persistence-CHA81Od7.js +0 -3
  114. package/dist/assets/pt-BR-DaWvr_0A.js +0 -15
  115. package/dist/assets/radio-BnF4XhCC.js +0 -1
  116. package/dist/assets/src-BtkWqMFu.css +0 -2
  117. package/dist/assets/store-DIpqFVjs.js +0 -15
  118. package/dist/assets/uk-CHCRqRKf.js +0 -15
  119. package/dist/assets/useAppFontEffects-BRNICZS2.js +0 -7
  120. package/dist/assets/useSessionAutoCleanup-DMJ1LiW_.js +0 -1
  121. package/dist/assets/zh-CN-BWEQZKXk.js +0 -15
  122. package/dist/assets/zh-TW-BbO-gJq3.js +0 -15
  123. package/server/lib/cloudflare-tunnel.js +0 -618
  124. package/server/lib/ngrok-tunnel.js +0 -343
  125. package/server/lib/ngrok-tunnel.test.js +0 -50
  126. package/server/lib/tunnels/DOCUMENTATION.md +0 -21
  127. package/server/lib/tunnels/executable-search.js +0 -140
  128. package/server/lib/tunnels/executable-search.test.js +0 -96
  129. package/server/lib/tunnels/index.js +0 -179
  130. package/server/lib/tunnels/index.test.js +0 -93
  131. package/server/lib/tunnels/install-help.js +0 -56
  132. package/server/lib/tunnels/install-help.test.js +0 -31
  133. package/server/lib/tunnels/managed-config.js +0 -201
  134. package/server/lib/tunnels/providers/cloudflare.js +0 -266
  135. package/server/lib/tunnels/providers/ngrok.js +0 -123
  136. package/server/lib/tunnels/registry.js +0 -51
  137. package/server/lib/tunnels/routes.js +0 -610
  138. package/server/lib/tunnels/types.js +0 -245
  139. package/server/lib/tunnels/types.test.js +0 -34
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/store-DIpqFVjs.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-base-ui-CnHfUmDN.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/vendor-sonner-DVzioF3d.js"])))=>i.map(i=>d[i]);
2
- import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{A as n,C as r,E as i,O as a,P as o,R as s,T as c,U as l,X as u,Y as d,b as f,k as p,t as m,w as h,y as g}from"./useUIStore-D6BTB4va.js";import{$ as _,$t as v,A as y,An as b,At as x,Ct as S,Dt as C,Et as w,F as T,H as E,I as D,L as O,M as k,Mt as A,N as j,Nt as ee,P as te,Pt as M,Q as ne,R as re,St as ie,Tt as ae,X as oe,Xt as se,Yt as ce,_t as le,bt as ue,d as N,dt as de,et as P,gt as fe,ht as F,i as pe,jt as me,kn as I,nt as he,o as L,ot as ge,q as _e,r as ve,rt as ye,tt as be,u as R,vt as xe,w as Se,wt as Ce,xn as we,xt as Te,yt as z,zt as Ee}from"./persistence-CHA81Od7.js";import{a as De,i as Oe,o as ke,r as Ae}from"./vendor-zustand-B4dlGEM2.js";import{nt as je,rt as Me}from"./vendor-base-ui-CnHfUmDN.js";import{At as B,F as Ne,Gt as Pe,Ht as Fe,Lt as Ie,Nt as Le,Wt as Re,jt as ze,kt as V,vt as Be,wt as Ve,yt as He}from"./gitApiHttp-DvIIcDAO.js";import{i as Ue,n as We,r as Ge,t as Ke}from"./vendor-pathe-vBmvQE8f.js";import{a as qe,n as Je,o as Ye}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as Xe}from"./vendor-react-DLPElpoQ.js";import{r as Ze}from"./vendor-tanstack-query-core-BWz0ose6.js";import{a as Qe,o as $e,s as et,t as tt}from"./vendor-tanstack-react-query-D7pys_c9.js";import{r as nt}from"./vendor-sonner-DVzioF3d.js";import{t as rt}from"./clipboard-CzpzN4Um.js";import{i as it,t as at}from"./store-DIpqFVjs.js";import{i as ot}from"./useAssistantUIStore-ESTV1mEY.js";import{t as st}from"./vendor-fuse.js-DB5wDJbI.js";var ct=()=>typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0||window.location.protocol===`capacitor:`,lt=()=>{if(typeof window>`u`||!ct()||ut()!==`ios`)return!1;let e=navigator.userAgent||``,t=navigator.maxTouchPoints??0;return/iPad/i.test(e)||/Macintosh|MacIntel/i.test(e)&&t>1},ut=()=>{if(typeof window<`u`){let e=window.Capacitor?.getPlatform?.();if(e===`ios`||e===`android`)return e}return v()?`vscode`:se()?`desktop`:`web`},dt=1048576,ft=new TextEncoder,pt=e=>e instanceof Error&&e.name===`AbortError`,mt=e=>pt(e)?e:new DOMException(`The operation was aborted.`,`AbortError`),ht=async e=>{try{await e?.cancel()}catch{}},gt=async e=>{try{await e.cancel()}catch{}},_t=async(e,t={})=>{let n=t.fetch??I,r;try{r=await n(e,{method:`GET`,headers:{Accept:`text/event-stream`},signal:t.signal})}catch(e){throw t.signal?.aborted||pt(e)?mt(e):Error(`SSE request failed`)}if(!r.ok)throw await ht(r.body),Error(`SSE response failed`);if(!/^text\/event-stream(?:\s*;|\s*$)/i.test(r.headers.get(`content-type`)??``))throw await ht(r.body),Error(`SSE response has invalid content type`);if(!r.body)throw Error(`SSE response has no body`);let i=r.body.getReader();try{t.onOpen?.()}catch(e){throw await gt(i),i.releaseLock(),t.signal?.aborted||pt(e)?mt(e):Error(`SSE response read failed`)}let a=new TextDecoder,o=``,s=0,c=!1,l=[],u=0,d=!1,f=()=>{l=[],u=0},p=()=>{l.length!==0&&(t.onActivity?.(),t.onMessage?.(l.join(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/store-oojlrF4d.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-base-ui-CnHfUmDN.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/vendor-sonner-DVzioF3d.js"])))=>i.map(i=>d[i]);
2
+ import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{A as n,C as r,E as i,O as a,P as o,R as s,T as c,U as l,X as u,Y as d,b as f,k as p,t as m,w as h,y as g}from"./useUIStore-D6BTB4va.js";import{$ as _,$t as v,A as y,An as b,At as x,Ct as S,Dt as C,Et as w,F as T,H as E,I as D,L as O,M as k,Mt as A,N as j,Nt as ee,P as te,Pt as M,Q as ne,R as re,St as ie,Tt as ae,X as oe,Xt as se,Yt as ce,_t as le,bt as ue,d as N,dt as de,et as P,gt as fe,ht as F,i as pe,jt as me,kn as I,nt as he,o as L,ot as ge,q as _e,r as ve,rt as ye,tt as be,u as R,vt as xe,w as Se,wt as Ce,xn as we,xt as Te,yt as z,zt as Ee}from"./persistence-C_KCiMcY.js";import{a as De,i as Oe,o as ke,r as Ae}from"./vendor-zustand-B4dlGEM2.js";import{nt as je,rt as Me}from"./vendor-base-ui-CnHfUmDN.js";import{At as B,F as Ne,Gt as Pe,Ht as Fe,Lt as Ie,Nt as Le,Wt as Re,jt as ze,kt as V,vt as Be,wt as Ve,yt as He}from"./gitApiHttp-C1DaEMKR.js";import{i as Ue,n as We,r as Ge,t as Ke}from"./vendor-pathe-vBmvQE8f.js";import{a as qe,n as Je,o as Ye}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as Xe}from"./vendor-react-DLPElpoQ.js";import{r as Ze}from"./vendor-tanstack-query-core-BWz0ose6.js";import{a as Qe,o as $e,s as et,t as tt}from"./vendor-tanstack-react-query-D7pys_c9.js";import{r as nt}from"./vendor-sonner-DVzioF3d.js";import{t as rt}from"./clipboard-CXWbHCAk.js";import{i as it,t as at}from"./store-oojlrF4d.js";import{i as ot}from"./useAssistantUIStore-ESTV1mEY.js";import{t as st}from"./vendor-fuse.js-DB5wDJbI.js";var ct=()=>typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0||window.location.protocol===`capacitor:`,lt=()=>{if(typeof window>`u`||!ct()||ut()!==`ios`)return!1;let e=navigator.userAgent||``,t=navigator.maxTouchPoints??0;return/iPad/i.test(e)||/Macintosh|MacIntel/i.test(e)&&t>1},ut=()=>{if(typeof window<`u`){let e=window.Capacitor?.getPlatform?.();if(e===`ios`||e===`android`)return e}return v()?`vscode`:se()?`desktop`:`web`},dt=1048576,ft=new TextEncoder,pt=e=>e instanceof Error&&e.name===`AbortError`,mt=e=>pt(e)?e:new DOMException(`The operation was aborted.`,`AbortError`),ht=async e=>{try{await e?.cancel()}catch{}},gt=async e=>{try{await e.cancel()}catch{}},_t=async(e,t={})=>{let n=t.fetch??I,r;try{r=await n(e,{method:`GET`,headers:{Accept:`text/event-stream`},signal:t.signal})}catch(e){throw t.signal?.aborted||pt(e)?mt(e):Error(`SSE request failed`)}if(!r.ok)throw await ht(r.body),Error(`SSE response failed`);if(!/^text\/event-stream(?:\s*;|\s*$)/i.test(r.headers.get(`content-type`)??``))throw await ht(r.body),Error(`SSE response has invalid content type`);if(!r.body)throw Error(`SSE response has no body`);let i=r.body.getReader();try{t.onOpen?.()}catch(e){throw await gt(i),i.releaseLock(),t.signal?.aborted||pt(e)?mt(e):Error(`SSE response read failed`)}let a=new TextDecoder,o=``,s=0,c=!1,l=[],u=0,d=!1,f=()=>{l=[],u=0},p=()=>{l.length!==0&&(t.onActivity?.(),t.onMessage?.(l.join(`
3
3
  `)),f())},m=()=>{let e=o,n=s;if(o=``,s=0,e.length===0){p();return}if(e.startsWith(`:`)){t.onActivity?.();return}let r=e.indexOf(`:`),i=r===-1?e:e.slice(0,r),a=r===-1?``:e.slice(r+1);if(a.startsWith(` `)&&(a=a.slice(1)),i===`data`){let t=n-(r===-1?n:r+1+ +(e.charAt(r+1)===` `)),i=u+t+ +(l.length>0);if(i>dt)throw Error(`SSE response exceeds buffer limit`);u=i,l.push(a)}},h=e=>{if(e.length===0)return;o+=e,s+=ft.encode(e).byteLength;let t=o===`data`?4:o.startsWith(`data:`)?5+ +(o.charAt(5)===` `):0;if(u+s-t>dt)throw Error(`SSE response exceeds buffer limit`)},g=e=>{let t=0;c&&(c=!1,e.charAt(0)===`
4
4
  `&&(t=1));for(let n=t;n<e.length;n+=1){let r=e.charAt(n);(r===`\r`||r===`
5
5
  `)&&(h(e.slice(t,n)),m(),r===`\r`&&n+1<e.length&&e.charAt(n+1)===`
@@ -457,7 +457,7 @@ Use the results below as source material. Do not mention that the inputs were hi
457
457
  `),a=(i===-1?r:r.slice(0,i)).trim(),o=(i===-1?``:r.slice(i+1)).trim();!(t.visible in n)&&a.length>0&&(n[t.visible]=a),!(t.instructions in n)&&o.length>0&&(n[t.instructions]=o)}return n},hp=async()=>dp||(fp||=I(cp,{method:`GET`,headers:{Accept:`application/json`}}).then(async e=>{if(!e.ok)throw Error(`Failed to load magic prompts`);let t=mp(await e.json().catch(()=>({})));return dp=t,t}).finally(()=>{fp=null}),fp),gp=e=>{let t=lp.get(e);if(!t)throw Error(`Unknown magic prompt id: ${e}`);return t},_p=e=>gp(e).template,vp=async e=>{let t=(await hp().catch(()=>({})))[e];return typeof t==`string`?t:_p(e)},yp=async(e,t={})=>pp(await vp(e),t),bp=async(e,t)=>{let n=await I(`${cp}/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({text:t})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e?.error||`Failed to save magic prompt`)}let r=await n.json();return dp=mp(r),{version:typeof r?.version==`number`?r.version:1,overrides:dp}},xp=async e=>{let t=await I(`${cp}/${encodeURIComponent(e)}`,{method:`DELETE`,headers:{Accept:`application/json`}});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e?.error||`Failed to reset magic prompt`)}let n=await t.json();return dp=mp(n),{version:typeof n?.version==`number`?n.version:1,overrides:dp}},Sp=async()=>{let e=await I(cp,{method:`DELETE`,headers:{Accept:`application/json`}});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t?.error||`Failed to reset all magic prompts`)}let t=await e.json();return dp=mp(t),{version:typeof t?.version==`number`?t.version:1,overrides:dp}},Cp=e=>e.filter(e=>e?.type===`text`).map(e=>(e.text||e.content||``).trim()).filter(e=>e.length>0).join(`
458
458
  `).replace(/\n\s*\n+/g,`
459
459
  `),wp=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Tp=e=>{let t=e?.metadata;return wp(t)?t:{}},Ep=e=>{let t=e.openchamber;return wp(t)?t:{}},Dp=e=>{let t=Ep(Tp(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Op=e=>{let t=Ep(Tp(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},kp=e=>Ep(Tp(e)).kind===`review`&&!!Op(e),Ap=(e,t)=>{let n=Ep(e);return{...e,openchamber:{...n,reviewSessionID:t}}},jp=(e,t)=>{let n=Ep(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},Mp=(e,t)=>{let n=Ep(e);if(n.reviewSessionID!==t)return e;let r={...n};delete r.reviewSessionID;let i={...e};return Object.keys(r).length>0?i.openchamber=r:delete i.openchamber,i},Np=De()(Oe((e,t)=>({runsByOriginalSessionID:{},upsertRun:t=>e(e=>({runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t.originalSessionID]:t}})),updateRun:(t,n)=>e(e=>{let r=e.runsByOriginalSessionID[t];return r?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:n(r)}}:e}),stopRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`stopped`}}}:e}),completeRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`completed`}}}:e}),stopRunningRunsForRuntime:t=>e(e=>{let n=!1,r={...e.runsByOriginalSessionID};for(let[e,i]of Object.entries(r))i.runtimeKey===t&&i.status===`running`&&(r[e]={...i,status:`stopped`},n=!0);return n?{runsByOriginalSessionID:r}:e}),isRunningForSession:e=>t().runsByOriginalSessionID[e]?.status===`running`}),{name:`auto-review-store`,storage:g(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),Pp=(e,t)=>{let n=new Map;for(let t of e){if(!t.parentID)continue;let e=n.get(t.parentID)??[];e.push(t.id),n.set(t.parentID,e)}let r=new Set([t]),i=[t];for(let e of i){let t=n.get(e);if(t)for(let e of t)r.has(e)||(r.add(e),i.push(e))}return r},Fp=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0},Ip=(e,t,n,r)=>{if(!n)return r;let i=Pp(e,n);if(i.size===0)return r;let a=new Set,o=[];for(let e of i){let n=t[e];if(n)for(let e of n)a.has(e.id)||(a.add(e.id),o.push(e))}return o.length===0?r:o},Lp=`GitHub issue context (JSON)`,Rp=`GitHub pull request context (JSON)`,zp=e=>!e||typeof e!=`object`?!1:!!e.synthetic,Bp=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>zp(e)),Vp=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!zp(e)),n=e=>{if(!zp(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(Lp)||n.startsWith(Rp)};return t&&e.some(e=>zp(e))?e.filter(e=>!zp(e)||n(e)):e},Hp=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},Up=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,Wp=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},Gp=e=>e.replace(/\\/g,`/`),Kp=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,qp=e=>{if(!e.startsWith(`file:`))return null;try{let t=new URL(e);if(t.protocol!==`file:`)return null;let n=decodeURIComponent(t.pathname);return/^\/[A-Za-z]:/.test(n)&&(n=n.slice(1)),t.hostname&&t.hostname!==`localhost`&&!/^[A-Za-z]:/.test(n)&&(n=`//${t.hostname}${n.startsWith(`/`)?n:`/${n}`}`),Gp(n)}catch{return null}},Jp=(e,t)=>{let n=Kp(Gp(e)),r=Kp(Gp(t));if(!r||!n)return null;let i=/^[A-Za-z]:/.test(n)?n[0].toLowerCase()+n.slice(1):n,a=/^[A-Za-z]:/.test(r)?r[0].toLowerCase()+r.slice(1):r;return i===a?``:i.startsWith(`${a}/`)?i.slice(a.length+1):null},Yp=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),Xp=(e,t)=>{let n=Gp(e),r=Kp(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=Jp(n,t);if(r!==null){let t=Kp(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return Yp(a)},Zp=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},Qp=(e,t,n)=>{let r=0;for(;r<e.length;){let i=e.indexOf(t,r);if(i<0)return null;let a=i+t.length,o=`${i}:${a}`,s=i>0?e[i-1]:``,c=e[a]??``,l=!s||/[\s([{"'`,.;:!?]/.test(s),u=!c||/[\s)\]}"'`,.;:!?]/.test(c);if(!n.has(o)&&l&&u)return{start:i,end:a};r=i+1}return null},$p=e=>{let t=e.source&&typeof e.source==`object`?e.source:null,n=typeof t?.value==`string`?t.value.trim():``;if(n){let e=n.startsWith(`@`)?n:`@${n}`,t=e.slice(1);if(t)return{token:e,name:t}}let r=typeof e.name==`string`?e.name.trim():``;if(!r)return null;let i=r.startsWith(`@`)?r.slice(1):r;return i?{token:`@${i}`,name:i}:null},em=async(e,t={})=>{let n=t.createID??P,r=t.directory??t.root??null,i=e.filter(e=>!zp(e)),a=i.filter(e=>e.type===`text`),o=i.filter(e=>e.type===`agent`),s=i.filter(e=>e.type===`file`),c=a.map(Up).join(`
460
- `),l=[];for(let e of o){let t=$p(e);t&&l.push(t)}for(let e of[...l].reverse())Qp(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=E(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=Qp(c,e.token,p);t&&(p.add(`${t.start}:${t.end}`),f.push({kind:`agent`,value:e.name,path:e.name,label:e.name,range:t}))}let m=[],h=new Map;for(let e of s){if(e.slim===!0)continue;let t=typeof e.url==`string`?e.url:``;if(!t)continue;let i=typeof e.mime==`string`?e.mime:`application/octet-stream`,a=typeof e.filename==`string`?e.filename:`attachment`,o=t.startsWith(`file:`)?qp(t):null;if(o){let e=Xp(o,r),t=null;for(let n of e){let e=Qp(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=Wp(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=ue(s);if(t.startsWith(`data:`)){let e=await Zp(t);h.set(l,e),m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:e.type||i,size:e.size,source:`local`,locator:{kind:`blob`,blobID:s}});continue}if(Hp(t)){if(!ie(t))throw Error(`composer-restoration-url-too-long`);m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:i,size:0,source:t.startsWith(`file:`)?`server`:`local`,locator:{kind:`url`,url:t},...t.startsWith(`file:`)&&o?{serverPath:o}:{}}),h.set(l,t);continue}throw Error(`composer-restoration-invalid-attachment-url`)}f.sort((e,t)=>e.range.start-t.range.start);let g=ae(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=Ce(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},tm=async(e,t={})=>{let n=t.createID??P,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=Ce(r,i),o=ae(r,e.composerMentions??[]);if(!a||!o)throw Error(`composer-restoration-invalid-sidecars`);if(e.draftAttachments)return{snapshot:{text:r,composerReferences:a.references,attachments:[...e.draftAttachments],syntheticParts:e.syntheticParts??[],mentions:o},values:e.draftValues??new Map};let s=[],c=new Map;for(let t of e.attachments??[]){let e=t.id||n(),r=ue(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await Zp(i);c.set(r,n),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||n.type||`application/octet-stream`,size:n.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}if(Hp(i)){if(!ie(i)){if(!(t.file instanceof Blob))throw Error(`composer-restoration-url-too-long`);c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType,size:t.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`url`,url:i},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}}),c.set(r,i);continue}if(t.file&&t.file.size>=0){c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}throw Error(`composer-restoration-invalid-attachment`)}return{snapshot:{text:r,composerReferences:a.references,attachments:s,syntheticParts:e.syntheticParts??[],mentions:o},values:c}},nm=e=>e?JSON.parse(JSON.stringify(e)):null,rm=e=>e?{...e}:{},im=(e,t=Cr.getState())=>{let n=t.getDraft?.(e)??null,r=rm(t.draftAttachmentViews?.[z(e)]);return{record:nm(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},am=async e=>{let t=e.input??Cr.getState(),n=im(e.key,{getDraft:t.getDraft?.bind(t),draftAttachmentViews:t.draftAttachmentViews}),r;try{r=await t.commitDraftSnapshot({key:e.key,expectedRevision:e.expectedRevision,runtime:e.runtime??t.captureDraftRuntime(),snapshot:e.payload.snapshot,values:e.payload.values})}catch{return{status:`failed`,current:!1,durable:!1,previous:n}}return{status:r.status,current:r.current,durable:r.durable,result:r,previous:n}},om=async e=>{let t=e.store.getDraft(e.key);if(!t||t.revision!==e.restoredRevision)return{status:`conflict`,current:!0};if(!e.previous.record)try{let t=await e.store.deleteDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}let n=e.previous.record,r=new Map;for(let t of[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)]){let n=e.previous.views[t.attachmentRefID];t.locator.kind===`url`?r.set(t.attachmentRefID,t.locator.url):n?.file?r.set(t.attachmentRefID,n.file):n?.dataUrl&&r.set(t.attachmentRefID,n.dataUrl)}try{let t=await e.store.commitDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime,snapshot:{text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}},values:r});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}},sm=async e=>{let t=e.input??Cr.getState(),n=t.getDraft(e.key);if(!n||n.revision!==e.restoredRevision)return{status:`conflict`,current:!0};let r=e.key.transportIdentity,i=e.runtime?.transportIdentity===r?e.runtime:void 0,a;try{let e=t.captureDraftRuntime();e.transportIdentity===r&&(a=e)}catch{}let o=i??a;return o?om({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},cm=(e,t,n)=>{let r=n.getDraft(e);if(r)return[...r.attachments,...r.syntheticParts.flatMap(e=>e.attachments)].find(e=>e.attachmentID===t)?.attachmentRefID},lm=e=>e?.status===`committed`&&e.current===!0,um=new Map,dm=async(e,t)=>{let n=z(e),r=um.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);um.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),um.get(n)===o&&um.delete(n)}},fm=(e,t)=>({key:e,addLocal:async n=>{await dm(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await dm(e,async()=>{let r=t(),i=cm(e,n,r);if(!i)return!(r.getDraft(e)&&[...r.getDraft(e)?.attachments??[],...r.getDraft(e)?.syntheticParts.flatMap(e=>e.attachments)??[]].some(e=>e.attachmentID===n));try{await r.removeDraftAttachment(e,i)}catch{}let a=r.getDraft(e);return!a||![...a.attachments,...a.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.attachmentID===n)})}catch{return!1}},clearRootAttachments:async()=>{try{return await dm(e,async()=>{let n=t(),r=n.getDraft(e);return!r||r.attachments.length===0||n.setDraftAttachments(e,[])?.attachments.length===0})}catch{return!1}},restoreRootAttachments:async n=>{try{return await dm(e,async()=>{let r=async()=>t().restoreDraftRootAttachments(e,n),i=await r();return i.status===`conflict`&&(i=await r()),i.status===`failed`||i.status===`stale`?!1:lm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await dm(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await dm(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await dm(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),pm=4e4,mm=0,hm=null;function gm(e=Date.now()){mm=e}function _m(e){return hm=e,()=>{hm===e&&(hm=null)}}function vm(e){hm?.(e)}function ym(e=Date.now(),t=pm){return mm<=0?!1:e-mm>=t}var bm=3e4,xm=200,Sm=new Map;function Cm(e,t,n){return`${n?.transport??i()}\n${n?.generation??h()}\n${e.trim()}\n${t}`}function wm(e,t,n){if(!e||!t)return!1;let r=Sm.get(Cm(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<bm}function Tm(e,t,n){if(!e||!t)return;let r=Cm(e,t,n);for(Sm.has(r)&&Sm.delete(r);Sm.size>=xm;){let e=Sm.keys().next().value;if(typeof e!=`string`)break;Sm.delete(e)}Sm.set(r,n?.now??Date.now())}var Em=768,Dm=()=>{if(typeof window>`u`)return!1;let e=typeof window.matchMedia==`function`?window.matchMedia(`(pointer: coarse)`).matches||window.matchMedia(`(hover: none)`).matches:!1,t=typeof navigator<`u`?navigator.maxTouchPoints??0:0;return e||t>0},Om=()=>{if(typeof window>`u`)return`desktop`;let e=window.__OPENCHAMBER_SURFACE__;if(e===`mobile`||e===`desktop`)return e;let t=new URLSearchParams(window.location.search).get(`surface`);if(t===`mobile`||t===`desktop`)return t;if(se())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=Em&&Dm()?`mobile`:`desktop`},km=()=>Om()===`mobile`,Am=3,jm=2,Mm=4,Nm=4,Pm=100,Fm=30;function Im(){return d()?`relay`:`local`}function Lm(e=Im()){return e===`relay`?jm:Am}function Rm(e=Im()){return e===`relay`?Nm:Mm}function zm(e){return Lm(Hm(e))}function Bm(){return Pm}function Vm(){return Fm}function Hm(e){return e===`relay`||e===`local`?e:Im()}var Um=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function Wm(){return{pages:[],pageParams:[]}}function Gm(e){let t={};for(let[n,r]of Object.entries(e.messagesByID))t[n]=r;let n={};for(let[t,r]of Object.entries(e.partsByMessageID))n[t]=Object.isFrozen(r)?r:Object.freeze([...r]);return Object.freeze({kind:e.kind,messageOrder:Object.isFrozen(e.messageOrder)?e.messageOrder:Object.freeze([...e.messageOrder]),messagesByID:Object.freeze(t),partsByMessageID:Object.freeze(n),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:Object.freeze({...e.sync})})}function Km(e){return{pages:Object.freeze(e.pages.map(Gm)),pageParams:Object.freeze([...e.pageParams])}}function qm(e,t,n=Um){let r=[],i={},a={};for(let t of e.records){let e=t.info?.id;!e||i[e]||(r.push(e),i[e]=t.info,t.parts&&(a[e]=Object.freeze([...t.parts])))}let o=typeof e.turnCount==`number`&&Number.isFinite(e.turnCount)?Math.max(0,Math.floor(e.turnCount)):typeof e.requestedTurnLimit==`number`&&Number.isFinite(e.requestedTurnLimit)?Math.max(0,Math.floor(e.requestedTurnLimit)):+(e.records.length>0);return Gm({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function Jm(e){if(!e||e.pages.length===0)return Xc;let t=e.pages[0],n=e.pages.reduce((e,t)=>e+t.turnCount,0);return t.complete?{kind:`exhausted`,loadedTurns:n}:typeof t.cursor==`string`&&t.cursor.length>0?{kind:`has-more`,cursor:t.cursor,loadedTurns:n}:{kind:`unknown`,loadedTurns:n}}function Ym(e,t){let n={},r={},i=[],a=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder){if(a.has(e))continue;let n=t.messagesByID[e];if(!n)continue;a.add(e),i.push(n);let o=t.partsByMessageID[e];o&&(r[e]=[...o])}n[t]=i;let o=Jm(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function Xm(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function Zm(e,t,n,r,i,a,o){let s=[],c={},l={};for(let e of t){if(!e?.id)continue;s.push(e.id),c[e.id]=e;let t=n[e.id];t&&(l[e.id]=Object.freeze([...t]))}return Gm({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:Xm(t)}})}function Qm(e,t,n,r,i,a){let o=n.messages,s=n.part,c=typeof i.turnCount==`number`&&Number.isFinite(i.turnCount)?Math.max(0,Math.floor(i.turnCount)):typeof i.requestedTurnLimit==`number`&&Number.isFinite(i.requestedTurnLimit)?Math.max(0,Math.floor(i.requestedTurnLimit)):+(i.records.length>0),l=i.complete?null:i.cursor??null,u=i.complete;if(!e||e.pages.length===0||r===`initial`)return Km({pages:[Zm(`tail`,o,s,l,u,c,a)],pageParams:[null]});if(r===`prepend`){let r=new Set;for(let t of e.pages)for(let e of t.messageOrder)r.add(e);let d=o.filter(e=>i.records.some(t=>t.info.id===e.id)||!r.has(e.id)).filter(t=>{if(i.records.some(e=>e.info.id===t.id))return!0;if(!r.has(t.id)){let n=e.pages[0]?.messageOrder[0];return!n||t.id<n}return!1}),f=[],p=new Set;for(let e of i.records){let t=o.find(t=>t.id===e.info.id);!t||p.has(t.id)||(p.add(t.id),f.push(t))}for(let e of d)p.has(e.id)||(p.add(e.id),f.push(e));let m=Zm(`history`,f,s,l,u,c,a),h=new Set(p),g=[m],_=[l];for(let r=0;r<e.pages.length;r+=1){let i=e.pages[r],o=[];for(let e of i.messageOrder){if(h.has(e))continue;let r=n.message[t]?.find(t=>t.id===e)??i.messagesByID[e];r&&o.push(r)}g.push(eh(i,o,s,a)),_.push(e.pageParams[r]??null)}return Km({pages:g,pageParams:_})}let d=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)d.has(n)||d.set(n,t)});let f=e.pages.map(()=>[]),p=[];for(let e of o){let t=d.get(e.id);t===void 0?p.push(e):f[t].push(e)}let m=e.pages.map((t,n)=>{let i=f[n]??[];return n===e.pages.length-1&&p.length>0?eh(t,r===`reconcile-page`?$m(i,p):[...i,...p],s,a):eh(t,i,s,a)});if(m.length>0&&n.boundary){let e=m[0],t=n.boundary.kind===`has-more`?n.boundary.cursor:null,r=n.boundary.kind===`exhausted`;(e.cursor!==t||e.complete!==r)&&(m[0]=Gm({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return Km({pages:m,pageParams:[...e.pageParams]})}function $m(e,t){let n=e.slice();for(let e of t){let t=Qs(e),r=n.length;for(let e=0;e<n.length;e+=1)if(Zs(t,Qs(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function eh(e,t,n,r){let i=[],a={},o={},s=t.length!==e.messageOrder.length,c=!1,l=!1;for(let r=0;r<t.length;r+=1){let u=t[r];if(!u?.id)continue;i.push(u.id),e.messageOrder[r]!==u.id&&(s=!0);let d=e.messagesByID[u.id];d===u?a[u.id]=u:d&&th(d,u)?a[u.id]=d:(a[u.id]=u,c=!0);let f=n[u.id],p=e.partsByMessageID[u.id];f===void 0?p!==void 0&&(l=!0):p&&(p===f||rh(p,f))?o[u.id]=p:Object.isFrozen(f)&&f===p?o[u.id]=f:p&&f===p?o[u.id]=p:(o[u.id]=Object.freeze([...f]),l=!0)}return!s&&!c&&!l&&e.sync.liveRevision===r||!s&&!c&&!l?e:Gm({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:Xm(t)}})}function th(e,t){return e===t||e.id===t.id&&e===t}function nh(e,t){return e===t||!(!e||!t||e.id!==t.id||e.type!==t.type||e.text!==t.text||e.state!==t.state||e.output!==t.output||e.metadata!==t.metadata||e.time!==t.time||e.url!==t.url||e.slim!==t.slim)}function rh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!nh(e[n],t[n]))return!1;return!0}function ih(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function ah(e){let t=e.properties;if(t){if(typeof t.messageID==`string`)return t.messageID;if(typeof t.info?.id==`string`)return t.info.id;if(typeof t.part?.messageID==`string`)return t.part.messageID}}function oh(e,t,n,r){if(!bl(n.type))return{data:e,result:{applied:!1,changed:!1}};let i=Ym(e,t),a=Jm(e),o={message:{...i.message,[t]:[...i.message[t]??[]]},part:{...i.part}};for(let[e,t]of Object.entries(o.part))o.part[e]=t&&[...t];let s=As(o,n);if(!(typeof s==`boolean`?s:s.changed))return{data:e,result:{applied:!0,changed:!1}};let c=o.message[t]??[],l=o.part,u=Qm(e??Wm(),t,{message:o.message,part:l,messages:c,boundary:a},`recovery`,{records:c.map(e=>({info:e,parts:l[e.id]??[]})),complete:a.kind===`exhausted`,cursor:a.kind===`has-more`?a.cursor:void 0,turnCount:0},r);if(e&&e.pages.length>0){let t=new Map,i=new Map;e.pages.forEach((e,n)=>{for(let r of e.messageOrder){t.has(r)||t.set(r,n);let a=e.messagesByID[r];a&&i.set(r,a)}});let a=c.map(e=>{let t=i.get(e.id);return t&&t.id===e.id&&t===e||t&&e.id===t.id&&e===t?t:e}),o=ah(n),s=a.map(e=>{let t=i.get(e.id);return!t||o&&e.id===o?e:t}),u={};for(let t of s){let n=l[t.id];if(!n)continue;let r;for(let n of e.pages)if(n.partsByMessageID[t.id]){r=n.partsByMessageID[t.id];break}r&&(!o||t.id!==o)||r&&rh(r,n)?u[t.id]=r:u[t.id]=n}let d=e.pages.map(()=>[]),f=[];for(let e of s){let n=t.get(e.id);n===void 0?f.push(e):d[n].push(e)}return{data:Km({pages:e.pages.map((t,n)=>eh(t,n===e.pages.length-1?[...d[n]??[],...f]:d[n]??[],u,r)),pageParams:[...e.pageParams]}),result:{applied:!0,changed:!0}}}return{data:u,result:{applied:!0,changed:!0}}}function sh(e,t,n,r,i){let a=e&&e.pages.length>0?e:Km({pages:[Zm(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=Ym(a,t),s=o.message[t]?[...o.message[t]]:[];s.findIndex(e=>e.id===n.id)<0&&s.push(n);let c={...o.part,[n.id]:ih(r)};return{data:Km({pages:a.pages.map((e,t)=>t===a.pages.length-1?eh(e,s.filter(e=>{for(let t=0;t<a.pages.length-1;t+=1)if(a.pages[t]?.messagesByID[e.id])return!1;return!0}),c,i):e.messagesByID[n.id]?eh(e,e.messageOrder.filter(e=>e!==n.id).map(t=>e.messagesByID[t]).filter(Boolean),c,i):e),pageParams:[...a.pageParams]}),result:{applied:!0,changed:!0}}}function ch(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:Km({pages:e.pages.map(e=>{if(!e.messagesByID[t]&&!e.partsByMessageID[t])return e;r=!0;let i=e.messageOrder.filter(e=>e!==t).map(t=>e.messagesByID[t]).filter(Boolean),a={};for(let[n,r]of Object.entries(e.partsByMessageID))n!==t&&(a[n]=[...r]);return eh(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function lh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=Ym(e,t),i=Wc({message:r.message,part:r.part},t,n.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),{skipPartTypes:n.skipPartTypes,merge:n.merge});if(!i.messagesChanged&&!i.partsChanged)return{data:e,result:{applied:!0,changed:!1,boundary:Jm(e)}};let a=e?.pages[e.pages.length-1]?.sync.liveRevision??0,o=i.part;if(!e||e.pages.length===0){let e=i.messages[0]?.id,t=i.messages.filter(e=>e.role===`user`).length,n=Km({pages:[Zm(`tail`,i.messages,o,typeof e==`string`&&e.length>0?e:null,!1,t,a)],pageParams:[null]});return{data:n,result:{applied:!0,changed:!0,boundary:Jm(n)}}}let s=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)s.has(n)||s.set(n,t)});let c=e.pages.map(()=>[]),l=[];for(let e of i.messages){let t=s.get(e.id);t===void 0?l.push(e):c[t].push(e)}let u=Km({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?eh(t,$m(r,l),o,a):eh(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:Jm(u)}}}function uh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=al(Ym(e,t),t,{ok:!0,records:n.page.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:n.page.cursor,complete:n.page.complete,turnCount:n.page.turnCount,requestedTurnLimit:n.page.requestedTurnLimit},{purpose:n.purpose,skipPartTypes:n.skipPartTypes,optimistic:n.optimistic?n.optimistic.map(e=>({message:e.message,parts:[...e.parts]})):void 0,capturedRevision:n.capturedLiveRevision,liveRevision:n.liveRevision});return i.applied?{data:Qm(e,t,{message:i.message,part:i.part,messages:i.messages,boundary:i.boundary},n.purpose,n.page,r),result:{applied:!0,changed:i.changed,boundary:i.boundary,meta:i.meta,confirmedOptimisticIDs:i.confirmedOptimisticIDs}}:{data:e,result:{applied:!1,changed:!1,error:i.error}}}case`sse-event`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return oh(e,t,n.event,r+1)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return sh(e,t,n.message,n.parts,r)}case`optimistic-confirm`:return{data:e,result:{applied:!0,changed:!1}};case`optimistic-remove`:{let t=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return ch(e,n.messageID,t)}case`durable-seed`:return lh(e,t,n);case`reset`:return n.page?uh(void 0,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes}):{data:void 0,result:{applied:!0,changed:!!(e&&e.pages.length>0)}};default:return{data:e,result:{applied:!1,changed:!1}}}}function dh(e){return{records:e.messageOrder.map(t=>({info:e.messagesByID[t],parts:e.partsByMessageID[t]?[...e.partsByMessageID[t]]:[]})),cursor:e.cursor??void 0,complete:e.complete,turnCount:e.turnCount}}function fh(e,t,n,r=`materialize`){return uh(e,n,{type:`http-page`,purpose:r,page:dh(t),liveRevision:t.sync.liveRevision}).data}function ph(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return Km(t);if(t.pages.length===e.pages.length){let r=_h(e,t);if(r===e)return e;if(gh(e,t)||hh(e,t))return r;let i=t.pages[t.pages.length-1];return fh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return uh(e,n,{type:`http-page`,purpose:`prepend`,page:dh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return fh(e,r,n)??Km(t)}return Km(t)}function mh(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function hh(e,t){let n=mh(e),r=mh(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=vh(e,``),a=vh(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function gh(e,t){let n=mh(e);if(n.size===0)return!1;let r=mh(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=vh(t,``);for(let e=1;e<i.messageOrder.length;e+=1){let t=i.messagesByID[i.messageOrder[e-1]],n=i.messagesByID[i.messageOrder[e]];if(!t||!n||Zs(Qs(t),Qs(n))>0)return!1}return!0}function _h(e,t){let n=!1,r=t.pages.map((t,r)=>{let i=e.pages[r];return i&&(i===t||i.kind===t.kind&&i.cursor===t.cursor&&i.complete===t.complete&&i.turnCount===t.turnCount&&i.messageOrder.length===t.messageOrder.length&&i.messageOrder.every((e,n)=>e===t.messageOrder[n])&&i.messageOrder.every(e=>i.messagesByID[e]===t.messagesByID[e])&&i.messageOrder.every(e=>i.partsByMessageID[e]===t.partsByMessageID[e])&&i.sync.liveRevision===t.sync.liveRevision)?i:(n=!0,Gm(t))});return!n&&e.pageParams.length===t.pageParams.length?e:Km({pages:r,pageParams:[...t.pageParams]})}function vh(e,t){let n=[],r={},i={},a=0;for(let t of e?.pages??[]){a=Math.max(a,t.sync.liveRevision);for(let e of t.messageOrder){if(r[e]){r[e]=t.messagesByID[e]??r[e],t.partsByMessageID[e]&&(i[e]=t.partsByMessageID[e]);continue}n.push(e);let a=t.messagesByID[e];a&&(r[e]=a);let o=t.partsByMessageID[e];o&&(i[e]=o)}}let o=[],s=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder)s.has(e)||(s.add(e),o.push(e));return{messageOrder:o,messagesByID:r,partsByMessageID:i,boundary:Jm(e),liveRevision:a}}var yh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},bh=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},xh=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Sh=e=>e.trim(),Ch=e=>e?.trim()||`tail`,wh=new Set([502,503,504]),Th=[`load failed`,`network connection was lost`,`network request failed`,`failed to fetch`,`econnreset`,`econnrefused`,`etimedout`,`socket hang up`,`signal timed out`,`timed out`,`timeout`,`opencode api unavailable`];function Eh(e){if(!e||e instanceof yh||e instanceof bh)return!1;if(e instanceof xh)return e.status>=400&&e.status<500?!1:wh.has(e.status)||e.status>=500&&e.status<600;let t=e?.status;if(typeof t==`number`){if(t>=400&&t<500)return!1;if(wh.has(t)||t>=500&&t<600)return!0}let n=String(e instanceof Error?e.message:e).toLowerCase(),r=n.match(/\((\d{3})\)/);if(r){let e=Number(r[1]);if(e>=400&&e<500)return!1;if(wh.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:Th.some(e=>n.includes(e))}function Dh(e,t){return e>=2?!1:Eh(t)}var Oh=(e,t=i(),n=h())=>[t,n,`sessionMessages`,`page`,Sh(e.directory),e.sessionID,e.limit,Ch(e.before)],kh=(e,t=i(),n=h())=>[t,n,`session-transcript`,Sh(e.directory),e.sessionID];function Ah(e){if(!e||typeof e!=`object`)throw new bh(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new bh(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new bh(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new bh(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new bh(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new bh(`session message page: cursor must be string when set`);return e}var jh=e=>{let t=e.records.map(e=>Object.freeze({info:Object.freeze({...e.info}),parts:e.parts===void 0?void 0:Object.freeze([...e.parts])}));return Object.freeze({records:Object.freeze(t),cursor:e.cursor,complete:e.complete,...typeof e.turnCount==`number`?{turnCount:e.turnCount}:{},...typeof e.requestedTurnLimit==`number`?{requestedTurnLimit:e.requestedTurnLimit}:{}})},Mh=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw new yh},Nh=(e,t,n=i(),r={},a=(r.getGeneration??h)())=>{let o=Sh(e.directory),s=e.sessionID,c=e.limit,l=e.before?.trim()||void 0;return{queryKey:Oh({directory:o,sessionID:s,limit:c,before:l},n,a),queryFn:async({signal:e})=>{Mh(n,a,r);let i=await t({directory:o,sessionID:s,limit:c,before:l,signal:e});return Mh(n,a,r),jh(Ah(i))},staleTime:1/0,gcTime:3e5,retry:Dh,retryDelay:e=>Math.min(500*2**e,4e3)}},Ph=(e,t,n=R,r=i(),a={},o=(a.getGeneration??h)())=>n.fetchQuery(Nh(e,t,r,a,o));function Fh(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function Ih(e){return jh({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function Lh(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function Rh(e){let t=Sh(e.directory),n=e.sessionID,r=e.transport??i(),a=e.probe??{},o=e.generation??(a.getGeneration??h)(),s=e.initialLimit??Lm(),c=e.historyLimit??Rm(),l=e.client??R,u=kh({directory:t,sessionID:n},r,o),d=async t=>Ih(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:u,queryFn:async e=>{Mh(r,o,a);let i=e.pageParam?.trim()||void 0,u=i?c:s,f=i?`prepend`:`initial`,p=await Ph({directory:t,sessionID:n,limit:u,before:i},d,l,r,a,o);Mh(r,o,a);let m=Fh(p);return qm(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:Lh,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:Dh,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>ph(e,t,n)}}function zh(e){let t=e.client??R,n=Rh({...e,client:t}),r=new Ze(t,{...n,structuralSharing:(t,n)=>ph(t,n,e.sessionID)});return{queryKey:n.queryKey,observer:r,ensureInitial:async()=>{let e=(await r.fetchNextPage()).data;if(e&&e.pages.length>0)return Km(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return Km(t)},fetchPreviousPage:async()=>{let e=r.getCurrentResult().data;try{let t=await r.fetchPreviousPage({cancelRefetch:!1}),n=r.getCurrentResult(),i=t.data??n.data??e;if(t.isError||n.isFetchPreviousPageError){let e=t.error??n.error??Error(`transcript previous page fetch failed`);throw i&&i.pages.length>0?Object.assign(e instanceof Error?e:Error(String(e)),{retainedPages:Km(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return Km(i)}catch(t){let n=r.getCurrentResult().data??e;throw n&&n.pages.length>0?Object.assign(t instanceof Error?t:Error(String(t)),{retainedPages:Km(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function Bh(e,t,n,r){let i=e.getQueryData(t),a=uh(i,n,r);return a.result.applied?a.data===void 0?(`removeQueries`in e&&typeof e.removeQueries==`function`?e.removeQueries({queryKey:t,exact:!0}):e.setQueryData(t,void 0),a):(!a.result.changed&&a.data===i||e.setQueryData(t,a.data),a):a}function Vh(e,t=R,n=i(),r=h()){return t.getQueryData(kh(e,n,r))}function Hh(){return v()||km()}function Uh(){return v()?4:km()?12:40}var Wh=1048576,Gh=4*Wh,Kh=12*Wh,qh=40*Wh;function Jh(){return v()?Gh:km()?Kh:qh}var Yh=e=>e.trim();function Xh(e){return{transport:e.transport,generation:e.generation,directory:Yh(e.directory),sessionID:e.sessionID}}function Zh(e){let t=Xh(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function Qh(e){return`${e.transport}\n${e.generation}\n${Yh(e.directory)}`}var $h={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function eg(e,t,n){return[t,n,$h.taskRoot,$h.reconcileTaskKind,Yh(e.directory),e.sessionID,e.checkpoint]}function tg(e,t,n){return[t,n,$h.checkpoint,Yh(e.directory),e.sessionID]}function ng(e){let t=Xh(e);return[{queryKey:kh({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,$h.transportPageRoot,$h.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,$h.taskRoot,$h.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,$h.taskRoot,$h.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:tg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function rg(){let e=new Map;return{retain(t){let n=Xh(t),r=Zh(n),i=e.get(r);i?i.count+=1:e.set(r,{scope:n,count:1});let a=!1;return()=>{if(a)return;a=!0;let t=e.get(r);t&&(--t.count,t.count<=0&&e.delete(r))}},isRetained(t){return(e.get(Zh(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(Zh(t))?.count??0},clear(){e.clear()}}}function ig(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var ag=3e4;function og(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function sg(e){return!Array.isArray(e)||e.length<5||e[2]!==$h.canonical||typeof e[0]!=`string`||typeof e[1]!=`number`||typeof e[3]!=`string`||typeof e[4]!=`string`?null:{transport:e[0],generation:e[1],directory:e[3],sessionID:e[4]}}function cg(e){let t=e.client,n=e.activeRegistry??rg(),r=e.counters??ig(),i=e.getLimit??Uh,a=e.now??Date.now,o=e.minResidencyMs??ag,s=new Map,c=e=>{let t=Zh(Xh(e));s.set(t,a())},l=e=>{let t=Zh(Xh(e)),n=s.get(t);return n!==void 0&&a()-n<o},u=e=>{let r=Xh(e);if(n.isRetained(r))return!0;let i=kh({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},d=e=>{let r=e?.directory===void 0?void 0:Yh(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=sg(a.queryKey);if(!t||e?.transport!==void 0&&t.transport!==e.transport||e?.generation!==void 0&&t.generation!==e.generation||r!==void 0&&t.directory!==r)continue;let o=a.getObserversCount(),s=n.isRetained(t);i.push({scope:t,queryKey:a.queryKey,dataUpdatedAt:a.state.dataUpdatedAt,observerCount:o,retained:s,active:s||o>0,pageCount:og(a.state.data)})}return i},f=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},p=e=>{r.purgeSession+=1,s.delete(Zh(Xh(e)));for(let t of ng(e))f(t)},m=(e,t)=>{r.purgeGeneration+=1;let n=[[e,t,$h.canonical],[e,t,$h.transportPageRoot,$h.transportPageKind],[e,t,$h.taskRoot],[e,t,$h.checkpoint]];for(let e of n)f({queryKey:e})},h=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>Zh(Xh(e)))),o=d({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=Qh(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let u=[];for(let e of c.values()){for(let t of e){let e=Zh(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(Zh(e.scope))||l(e.scope)));i.sort((e,t)=>e.dataUpdatedAt===t.dataUpdatedAt?e.scope.sessionID<t.scope.sessionID?-1:+(e.scope.sessionID>t.scope.sessionID):e.dataUpdatedAt-t.dataUpdatedAt);let o=e.length-i.length,c=e.length,d=0;for(;c>t&&d<i.length&&!(c-1<o);){let e=i[d];d+=1,p(e.scope),u.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:u}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:u,listCanonical:d,purgeSession:p,purgeGeneration:m,enforce:h,destructiveReset:async(e,t)=>{r.destructiveReset+=1,p(e);try{let n=await t();return h({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw p(e),t}},noteScopeObserved:c}}var lg=3e4,ug=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function dg(e,t=lg){let n;try{return await Promise.race([e,new Promise((e,r)=>{n=setTimeout(()=>{r(Error(`session turn page: timed out after ${t}ms`))},t)})])}finally{n!==void 0&&clearTimeout(n)}}var fg=e=>e?e.toLowerCase().includes(`application/json`):!1,pg=e=>e?e.toLowerCase().includes(`text/html`):!1;function mg(e,t){if(!e||typeof e!=`object`)throw Error(`session turn page: expected JSON object`);let n=e;if(n.partial===!0)throw Error(`session turn page: partial responses are not accepted`);if(!Array.isArray(n.records))throw Error(`session turn page: records must be an array`);if(!(`complete`in n)||typeof n.complete!=`boolean`)throw Error(`session turn page: complete must be a boolean`);if(typeof n.turnCount!=`number`||!Number.isFinite(n.turnCount))throw Error(`session turn page: turnCount must be a number`);if(!Number.isInteger(n.turnCount)||n.turnCount<0||n.turnCount>t)throw Error(`session turn page: turnCount must be an integer in 0..${t}`);if(n.cursor!=null&&typeof n.cursor!=`string`)throw Error(`session turn page: cursor must be string or null`);if(typeof n.cursor==`string`&&n.cursor.length===0)throw Error(`session turn page: cursor must not be empty string`);if(n.complete===!0&&n.cursor!=null)throw Error(`session turn page: complete=true requires cursor=null`);if(n.complete===!1&&(n.cursor==null||typeof n.cursor!=`string`))throw Error(`session turn page: complete=false requires non-empty cursor`);let r=[];for(let e=0;e<n.records.length;e++){let t=n.records[e];if(!t||typeof t!=`object`)throw Error(`session turn page: records[${e}] must be an object`);let i=t,a=i.info;if(!a||typeof a!=`object`)throw Error(`session turn page: records[${e}].info must be an object`);let o=a.id;if(typeof o!=`string`||o.length===0)throw Error(`session turn page: records[${e}].info.id must be a non-empty string`);if(`parts`in i&&i.parts!==void 0&&!Array.isArray(i.parts))throw Error(`session turn page: records[${e}].parts must be an array when present`);r.push({info:a,...i.parts===void 0?{}:{parts:i.parts}})}return{records:r,cursor:n.cursor==null?null:n.cursor,complete:n.complete,turnCount:n.turnCount}}async function hg(e){let t=e.turns??Rm(),n=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages`,r={directory:e.directory,turns:String(t)};e.before&&(r.before=e.before),typeof e.scanLimit==`number`&&Number.isFinite(e.scanLimit)&&(r.scanLimit=String(Math.floor(e.scanLimit)));let i=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:lg;return dg((async()=>{let a=await I(n,{method:`GET`,query:r,signal:ug(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(pg(o))throw Error(`session turn page: unexpected HTML response`);fg(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return mg(s,t)})(),i)}async function gg(e){let t=e.purpose===`prepend`&&e.before?Rm():Lm();return hg({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var _g=3e4,vg=2,yg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),bg=e=>e?e.toLowerCase().includes(`text/html`):!1,xg=e=>new Promise(t=>{setTimeout(t,e)});function Sg(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new bh(`session transcript reconcile: ${t} must be string or null`);return e}function Cg(e){if(!e||typeof e!=`object`)throw new bh(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new bh(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new bh(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new bh(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new bh(`session transcript reconcile: resetRequired must be a boolean`);if(typeof t.scannedRecords!=`number`||!Number.isFinite(t.scannedRecords)||!Number.isInteger(t.scannedRecords)||t.scannedRecords<0)throw new bh(`session transcript reconcile: scannedRecords must be a non-negative integer`);if(typeof t.responseBytes!=`number`||!Number.isFinite(t.responseBytes)||!Number.isInteger(t.responseBytes)||t.responseBytes<0)throw new bh(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=Sg(t.capturedHeadMessageID,`capturedHeadMessageID`),r=Sg(t.latestHeadMessageID,`latestHeadMessageID`),i=Sg(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new bh(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new bh(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new bh(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new bh(`session transcript reconcile: resetRequired=true requires continuation=null`)}let a=[];for(let e=0;e<t.records.length;e+=1){let n=t.records[e];if(!n||typeof n!=`object`)throw new bh(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new bh(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new bh(`session transcript reconcile: records[${e}].info.id must be a non-empty string`);if(`parts`in r&&r.parts!==void 0&&!Array.isArray(r.parts))throw new bh(`session transcript reconcile: records[${e}].parts must be an array when present`);a.push({info:i,...r.parts===void 0?{}:{parts:r.parts}})}return{records:Object.freeze(a),anchorFound:t.anchorFound,capturedHeadMessageID:n,latestHeadMessageID:r,continuation:i,complete:t.complete,resetRequired:t.resetRequired,scannedRecords:t.scannedRecords,responseBytes:t.responseBytes}}function wg(e){let t=typeof e.anchor==`string`&&e.anchor.length>0?e.anchor:void 0,n=typeof e.continuation==`string`&&e.continuation.length>0?e.continuation:void 0;if(!!t==!!n)throw new bh(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function Tg(e,t,n){let r=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages/reconcile`,i={directory:e.directory};return t.anchor&&(i.anchor=t.anchor),t.continuation&&(i.continuation=t.continuation),dg((async()=>{let t;try{t=await I(r,{method:`GET`,query:i,signal:yg(e.signal,n)})}catch(e){throw e instanceof yh||e instanceof bh||e instanceof xh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new xh(t.status,`session transcript reconcile failed (${t.status})`);if(bg(t.headers.get(`content-type`)))throw new bh(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new bh(`session transcript reconcile: malformed JSON`)}return Cg(a)})(),n)}async function Eg(e){let t=wg(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:_g,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):vg,i=e.sleep??xg,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await Tg(e,t,n)}catch(t){if(t instanceof yh||t instanceof bh||t instanceof xh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!Eh(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var Dg=`GitHub issue context (JSON)`,Og=`GitHub pull request context (JSON)`,kg=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,Ag=(e,t)=>{let n=e.trimStart();if(!n.startsWith(t))return null;let r=n.indexOf(`{`);if(r<0)return null;try{return JSON.parse(n.slice(r))}catch{return null}},jg=e=>{let t=Ag(e,Dg);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!kg(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=Ag(e,Og);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!kg(t)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.pull-request-link`,filename:`PR #${t}: ${r}`,url:i}}return null},Mg=(e,t)=>{let n=e.trim();return!!(t&&n.startsWith(`User has requested to enter plan mode`)||t&&n.startsWith(`The plan at `)||n.startsWith(`The following tool was executed by the user`))},Ng=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),Pg=e=>e.trim()===`/compact`,Fg=(e,t)=>{let n=t?.planModeEnabled===!0;return e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(Ng(t)||Pg(t)))return!1}if(e.synthetic!==!0)return!0;if(e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let r=t.trimStart();return Mg(t,n)||r.startsWith(Dg)||r.startsWith(Og)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=jg(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},Ig=e=>e?.length?Fg(e).length>0:!1,Lg=`oc_asst_session_divider:`,Rg=[],zg=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),Bg=(e,t=0)=>({info:{id:`${Lg}${e}`,role:`system`,time:{created:t}},parts:[]}),Vg=e=>e.slice().reverse().flatMap(e=>e.entries),Hg=(e,t,n=Rg)=>{if(!e.length)return Rg;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(Bg(n.sessionID,Number(n.info.time?.created??0))),r.push({info:n.info,parts:n.parts,sourceSessionID:n.sessionID,sourceDirectory:n.directory}),i=!0,a=n.sessionID);return r.length===0?Rg:qg(n,r)?n:r},Ug=(e,t)=>{if(t.length===0)return e;if(e.length===0)return t;let n=new Map;for(let e of t)e?.id&&n.set(e.id,e);for(let t of e)t?.id&&n.set(t.id,t);let r=new Set,i=[];for(let e of t){if(!e?.id||r.has(e.id))continue;let t=n.get(e.id);t&&(i.push(t),r.add(e.id))}for(let t of e)!t?.id||r.has(t.id)||(i.push(t),r.add(t.id));return i.length===e.length&&i.every((t,n)=>t===e[n])?e:i},Wg=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=Ug(e.parts,t.parts);return n===e.parts&&e.info===t.info?e:n===t.parts&&e.info===t.info&&e.parts===t.parts?t:{...e,parts:n,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}}return Ig(e.parts)?e:Ig(t.parts)?e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}:e.parts.length>0||t.parts.length===0?e:e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}},Gg=(e,t,n,r=Rg)=>{if(!t)return n.length>0?Array.from(n):Rg;let i=new Map,a=0;for(let n of e)n.sessionID===t&&i.set(n.info.id,{message:{info:n.info,parts:n.parts},order:a++});for(let e of n){let t=i.get(e.info.id);i.set(e.info.id,{message:Wg(e,t?.message),order:t?.order??a++})}if(i.size===0)return Rg;let o=[...i.values()].sort((e,t)=>Number(e.message.info.time?.created??0)-Number(t.message.info.time?.created??0)||e.order-t.order).map(({message:e})=>e);return qg(r,o)?r:o},Kg=(e,t)=>{if(!zg(e)||!zg(t))return!1;let n=Number(e.info.time?.created??0),r=Number(t.info.time?.created??0);return e.info.id===t.info.id&&n===r},qg=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||!(r===i||Kg(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},Jg=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),Yg=e=>e.startsWith(Lg);function Xg(e,t){if(!e?.id||Yg(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(Jg(t,`subtask`)||Jg(t,`compaction`)||t.every(e=>zp(e))):!1}function Zg(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.messagesByID[n],i=e.partsByMessageID[n];if(Xg(r,i))return n}return null}function Qg(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function $g(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:Zg(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:Qg(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function e_(e,t){return{...e,...t}}function t_(e,t){let n=tg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),r=e.getQueryData(n);if(!r||typeof r!=`object`)return;let i=r;if(i.sessionID===t.sessionID&&i.transport===t.transport&&i.generation===t.generation)return i}function n_(e,t){let n=tg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function r_(e,t){let n=tg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function i_(e){return e.slim===!0}var a_=/bearer|token|authorization|password|secret|cookie/i;function o_(e){return typeof e==`string`&&e.includes(`-`)}var s_=`openchamber.client-diagnostics.enabled`;function c_(e){return e===`true`||e!==`false`&&null}function l_(e){return e.preference===!0||e.preference!==!1&&o_(e.version)}function u_(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function d_(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function f_(e){if(e&&typeof e==`object`&&`status`in e){let t=e.status;if(typeof t==`number`&&Number.isFinite(t)&&t>=100&&t<=599)return t}let t=(e instanceof Error?e.message:typeof e==`string`?e:``).match(/\((\d{3})\)/);if(!t)return;let n=Number(t[1]);return n>=100&&n<=599?n:void 0}function p_(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return a_.test(t)?`redacted-error`:t}function m_(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)i_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function h_(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function g_(e){let t=0;for(let n of e.messageOrder)O_(e.messagesByID[n])===!0&&(t+=1);return t}function __(e){let t=e.transcript?m_(e.transcript.partsByMessageID):void 0;return{at:(e.now??Date.now)(),feat:`transcript`,kind:e.kind,sessionID:e.sessionID,...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.source?{source:e.source}:{},...e.durationMs===void 0?{}:{durationMs:e.durationMs},...e.request?{requestStatus:e.request.status}:{},...e.hydration?{hydrationPhase:e.hydration.phase,p0Satisfied:e.hydration.p0Satisfied}:{},...e.transcript?{messageCount:e.transcript.messageOrder.length,lastMessageIDs:h_(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:g_(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...p_(e.error??e.request?.error)?{error:p_(e.error??e.request?.error)}:{},...f_(e.error)===void 0?{}:{httpStatus:f_(e.error)}}}function v_(e={}){let t=e.limit??500,n=[];return{append(e){n.push(e),n.length>t&&n.splice(0,n.length-t)},async read(){return n.slice()},async clear(){n.length=0}}}function y_(e){return{isEnabled:e.isEnabled,record(t){e.isEnabled()&&Promise.resolve(e.sink.append(t)).catch(()=>void 0)},async exportReport(){let t=await e.sink.read(),n=[...new Set(t.map(e=>e.feat))];return JSON.stringify({schema:`openchamber.client-diagnostics.v1`,exportedAt:Date.now(),eventCount:t.length,feats:n,events:t},null,2)},clear:()=>e.sink.clear()}}function b_(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return e.event.type===`message.part.delta`?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function x_(e){if(e.type===`http-page`)return e.purpose}function S_(e){if(e.type===`sse-event`)return e.event.type}function C_(e){switch(e.type){case`http-page`:return`network`;case`sse-event`:return`sse`;case`materialize-snapshots`:return`durable-cache`;default:return}}function w_(e){return e.__openchamberOptimistic===!0}function T_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function E_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var D_=e=>typeof e==`string`&&e.trim().length>0;function O_(e){if(!e||T_(e)!==`assistant`)return;let t=e,n=!D_(t.mode)&&!D_(t.agent),r=!D_(t.modelID)||!D_(t.providerID);return n||r}function k_(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function A_(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)i_(e)?r+=1:i+=1,w_(e)&&(a=!0);let o=e.messagesByID[t],s=T_(o),c=O_(o);return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:E_(o),...s?{role:s}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function j_(e,t){let n=new Map(e.messages.map(e=>[e.id,e])),r=new Map(t.messages.map(e=>[e.id,e])),i=new Set(e.messageIDs),a=new Set(t.messageIDs),o=t.messageIDs.filter(e=>!i.has(e)),s=e.messageIDs.filter(e=>!a.has(e)),c=[],l=[],u=[],d=[];for(let t of e.messageIDs){let e=n.get(t);if(!e)continue;let i=r.get(t);if(!i){e.optimistic&&u.push(t);continue}(e.partCount!==i.partCount||e.slimCount!==i.slimCount||e.fullCount!==i.fullCount||e.optimistic!==i.optimistic)&&c.push({id:t,before:k_(e),after:k_(i)}),e.fullCount>0&&i.fullCount===0&&i.slimCount>0&&l.push(t),e.optimistic&&!i.optimistic&&!i.completed&&u.push(t),e.identityMissing!==!0&&i.identityMissing===!0&&d.push(t)}return{addedMessageIDs:o,removedMessageIDs:s,partsChanged:c,downgraded:l,optimisticLost:u,identityLost:d}}function M_(e){return{at:(e.now??Date.now)(),feat:`transcript`,kind:`transcript-diff`,sessionID:e.sessionID,trigger:e.trigger,before:e.before,after:e.after,diff:j_(e.before,e.after),...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.purpose?{purpose:e.purpose}:{}}}var N_=`openchamber-transcript-diagnostics`,P_=`events`,F_=1,I_=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),L_=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,F_);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(P_)||e.createObjectStore(P_,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),R_=(e=N_)=>({async append(t,n){let r=await L_(e);try{let e=r.transaction(P_,`readwrite`).objectStore(P_);await I_(e.add(t));let i=await I_(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await I_(e.delete(t))}finally{r.close()}},async read(){let t=await L_(e);try{return await I_(t.transaction(P_,`readonly`).objectStore(P_).getAll())}finally{t.close()}},async clear(){let t=await L_(e);try{await I_(t.transaction(P_,`readwrite`).objectStore(P_).clear())}finally{t.close()}}});function z_(e={}){let t=e.driver??R_(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var B_=qe(`OpenChamberMedia`);function V_(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function H_(){return ct()&&Je!==void 0&&Je.isPluginAvailable(`OpenChamberMedia`)}function U_(){return`1.17.1-beta.7`}function W_(){if(typeof localStorage>`u`)return null;try{return c_(localStorage.getItem(s_))}catch{return null}}function G_(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(s_,e?`true`:`false`)}catch{}}function K_(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var q_;function J_(e=U_()){return l_({version:e,preference:W_()})}function Y_(e={}){return y_({sink:K_()===`indexeddb`?(e.createIndexedDBSink??z_)():(e.createMemorySink??v_)(),isEnabled:e.isEnabled??J_})}function X_(){return q_??=Y_(),q_}function Z_(e){X_().record(e)}function Q_(e){try{return J_()?A_(e()):void 0}catch{return}}function $_(e){try{Z_(M_(e))}catch{}}function ev(e){let t=b_(e.command);t&&Z_(__({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:e.transcript,request:e.request,hydration:e.hydration,command:e.command.type,purpose:x_(e.command),sseType:S_(e.command),source:C_(e.command),error:e.error}))}async function tv(){let e=await X_().exportReport(),t=we()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function nv(e,t=u_()){if(H_())return(await B_.saveFile({dataBase64:V_(e),mimeType:`application/json`,filename:t}))?.cancelled?`cancelled`:`saved`;if(typeof document>`u`)return`failed`;let n=new Blob([e],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);return i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),`downloaded`}async function rv(){let e=await tv(),t=u_();return{content:e,fileName:t,outcome:await nv(e,t),eventCount:d_(e)}}function iv(e){let t=e.directory.trim(),n=new Set,r=[],i=e=>{!e||n.has(e)||(n.add(e),r.push({directory:t,sessionID:e}))};for(let n of e.viewedSessions??[])n.directory.trim()===t&&i(n.sessionID);e.viewed?.directory.trim()===t&&i(e.viewed.sessionID);for(let t of e.busyOrRetrySessionIDs??[])i(t);for(let n of e.activeScopes)n.directory.trim()===t&&i(n.sessionID);return r}var av=2,ov=6e4;function sv(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??i)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??h)()}}function cv(e,t){let n=(t.probe?.getTransport??i)(),r=(t.probe?.getGeneration??h)();if(n!==e.transport||r!==e.generation)throw new yh}function lv(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function uv(e,t){return Xh({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function dv(e,t){return`${e.trim()}\n${t}`}function fv(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??cg({client:t,activeRegistry:rg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??av)),o=e.fetchReconcile??Eg,s=e.now??Date.now,c=!1,l=0,u=new Map,d=new Map,f=new Map,p=new Map,m=new Set,g=new Map,_=new Set,v=(e,t)=>{m.add(dv(e,t))},y=(e,t)=>{m.delete(dv(e,t))},b=e=>{let t=d.get(e);t&&(t.abort(),d.delete(e)),u.delete(e)},x=e=>{l+=1;for(let e of[...d.keys()])b(e);f.clear(),p.clear()},S=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(dv(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of r.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&i.set(dv(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(i.values())},C=(t,n)=>{let i=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of r.listCanonical({transport:t.transport,generation:t.generation}))i.add(e.scope.directory);for(let e of r.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&i.add(e.directory);for(let e of n)e.directory&&i.add(e.directory.trim());return i},w=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=dv(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},T=i=>{if(c)return;let a={transport:i.transport??sv(e).transport,generation:i.generation??sv(e).generation},o=s(),l=w(),u=C(a,l),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(dv(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of r.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(dv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of l)f.set(dv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(dv(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=lv(e,a),s=n.getTranscript(r),c=$g({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:i.lastEventID,capturedAt:o});n_(t,c)}let p=new Set;for(let t of u){let n=iv({directory:t,activeScopes:S(a,t),viewedSessions:l,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(dv(e.directory,e.sessionID))}for(let e of d){let t=dv(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=Q_(()=>n.getTranscript(e)),a=n.getTranscript(e).liveRevision,o=n.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:t.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:r,liveRevision:a});try{let t=Q_(()=>n.getTranscript(e));i&&t&&$_({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},D=async(r,i,a)=>{if(cv({transport:i.transport,generation:i.generation},e),a!==l)throw new yh;n_(t,e_(t_(t,i)??$g({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let o=Q_(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),cv({transport:i.transport,generation:i.generation},e),a!==l)throw new yh;r_(t,i),y(i.directory,i.sessionID);try{let e=Q_(()=>n.getTranscript(r));o&&e&&$_({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw n_(t,e_(t_(t,i)??$g({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},O=async(r,i,a)=>{if(cv({transport:i.transport,generation:i.generation},e),a!==l)throw new yh;n_(t,e_(t_(t,i)??$g({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Q_(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),cv({transport:i.transport,generation:i.generation},e),a!==l)throw new yh;r_(t,i),y(i.directory,i.sessionID);try{let e=Q_(()=>n.getTranscript(r));o&&e&&$_({trigger:`reconnect-compensation-ensure-tail`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw n_(t,e_(t_(t,i)??$g({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},k=async(r,i,a,c)=>{let u=lv(r,i),d=uv(r,i),f=eg({directory:d.directory,sessionID:d.sessionID,checkpoint:String(t_(t,d)?.capturedAt??s())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:s()});try{if(cv(i,e),a!==l||c.aborted)throw new yh;let p=t_(t,d);if(p||(p=$g({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(u),lastEventID:null,capturedAt:s()}),n_(t,p)),!p.anchorMessageID){await O(u,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:s()});return}p=e_(p,{state:`reconciling`}),n_(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,cv(i,e),a!==l||c.aborted)throw new yh;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,cv(i,e),a!==l||c.aborted)throw new yh;let h=n.getTranscript(u).liveRevision;if(!g&&!m){await O(u,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:s()});return}let y=await o({sessionID:r.sessionID,directory:r.directory.trim(),...g?{continuation:g}:{anchor:m},signal:c});if(cv(i,e),a!==l||c.aborted)throw new yh;if(y.resetRequired){await D(u,d,a),t.setQueryData(f,{status:`reset`,finishedAt:s()});return}if(b===1&&(_=y.capturedHeadMessageID),v=y.latestHeadMessageID??v,y.records.length>0&&E(u,y,h),p=e_(t_(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),n_(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=e_(t_(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),n_(t,p);continue}p=e_(t_(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),n_(t,p),y(r.directory,r.sessionID),t.setQueryData(f,{status:`complete`,finishedAt:s()});return}await D(u,d,a),t.setQueryData(f,{status:`reset`,finishedAt:s()})}catch(n){if(n instanceof yh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(f,{status:`cancelled`,finishedAt:s()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(f,{status:`error`,finishedAt:s(),code:n instanceof Error?n.name:`error`}),n}},A=t=>{let n=t.trim(),r=p.get(n)??0;if(r>=a)return;let i=f.get(n);if(!i||i.length===0)return;let o=i.shift();p.set(n,r+1);let s=dv(o.directory,o.sessionID);if(u.has(s)){p.set(n,(p.get(n)??1)-1),A(n);return}let c=sv(e),m=l,h=new AbortController;d.set(s,h);let g=(async()=>{try{await k(o,c,m,h.signal)}catch{}finally{d.delete(s),u.delete(s),p.set(n,Math.max(0,(p.get(n)??1)-1)),A(n)}})();u.set(s,g)},j=e=>{let t=e.directory.trim(),n=dv(t,e.sessionID);if(u.has(n))return;let r=f.get(t);r||(r=[],f.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),A(t))},ee=t=>{let n=w(),i=C(t,n);for(let a of i){let i=iv({directory:a,activeScopes:S(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)j(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=dv(e.scope.directory,e.scope.sessionID);i.some(e=>dv(e.directory,e.sessionID)===t)||v(e.scope.directory,e.scope.sessionID)}}},te=t=>{if(c||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??i)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??h)(),a=(e.probe?.getTransport??i)();if(r!==n.generation||a!==n.transport){x(`generation_mismatch`);return}ee(n)},M=t=>{if(c)return;let r=t.directory.trim(),i=sv(e,t),a=lv({directory:r,sessionID:t.sessionID},i),l=Zh(uv({directory:r,sessionID:t.sessionID},i)),d=g.get(l);if(d&&s()-d.checkedAt<ov||_.has(l)||u.has(dv(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(_.add(l),(async()=>{try{if(cv(i,e),c)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(cv(i,e),c||(g.set(l,{checkedAt:s()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;E(a,u,d)}catch{}finally{_.delete(l)}})())};return{captureCheckpoints:T,onCompensation:te,ensureOnObserve:async r=>{if(c)return null;let i=r.directory.trim(),a=dv(i,r.sessionID);if(!m.has(a))return M(r),null;y(i,r.sessionID);let o=sv(e,r),s=lv({directory:i,sessionID:r.sessionID},o),l=uv({directory:i,sessionID:r.sessionID},o),d=t_(t,l);if(d&&d.state!==`complete`&&d.anchorMessageID){j({directory:i,sessionID:r.sessionID});let e=u.get(a);return e&&await e,n.getTranscript(s)}try{cv(o,e);let r=await n.ensureInitial(s);return r_(t,l),r}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:x,getCheckpoint:n=>{let r=sv(e,n);return t_(t,uv({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>u.has(dv(e,t)),destroy:()=>{c=!0,x(`destroy`)}}}function pv(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function mv(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts??[]})),cursor:typeof e.cursor==`string`?e.cursor:void 0,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function hv(e){if(e.type===`message.part.delta`)return{action:`skip`};let t=e.properties;if(e.type===`message.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`remove`,messageID:e}:{action:`skip`}}if(e.type===`message.updated`){let e=t?.info;return typeof e?.id==`string`&&e.id.length>0?{action:`persist`,messageID:e.id}:{action:`skip`}}if(e.type===`message.part.updated`){let e=t?.part;return typeof e?.messageID==`string`&&e.messageID.length>0?{action:`persist`,messageID:e.messageID}:{action:`skip`}}if(e.type===`message.part.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`persist`,messageID:e}:{action:`skip`}}return{action:`skip`}}function gv(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(Js(e))??Promise.resolve(),r.get(Xs(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=Js(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=Xs(e),i=(r.get(n)??Promise.resolve()).then(t,t);return r.set(n,i.then(()=>void 0,()=>void 0)),i};return{wait:i,persistSettled:(n,r,i)=>a(n,async()=>{if((await e.upsertSettled(n,r,i)).status!==`written`)return;let a=(t.getByteBudget??Jh)();await e.evictToBytes(a,{protect:t.getProtectScopes?.()??[]})}),removeMessage:(t,n)=>a(t,()=>e.removeMessage(t,n)),clearSession:t=>a(t,()=>e.clearSession(t)),clearGeneration:t=>o(t,()=>e.clearGeneration(t))}}var _v=new Map;function vv(e,t){let n=_v.get(e);if(n)return n;let r=t().finally(()=>{_v.get(e)===r&&_v.delete(e)});return _v.set(e,r),r}var yv=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function bv(e){return vv(yv(e),e.request)}function xv(e,t){return`${e}\n${t}`}var Sv=new Map;function Cv(e){return Sv.get(e)}async function wv(e){return bv({runtimeKey:xv(e.transport,e.generation),directory:e.directory,sessionID:e.sessionID,messageID:e.messageID,request:async()=>{let t=await e.request();if(t.error)throw Error(`session.message failed`);let n=t.data,r=n?.info,i=n?.parts??t.parts??[];if(!r?.id)throw Error(`session.message failed: empty response`);return Sv.set(r.id,i),{info:Zf(r),parts:i}}})}function Tv(e,t){let n=e.info;return n.role===t||n.clientRole===t}function Ev(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Tv(i,`assistant`))continue;let e=i.info.parentID;if(!(!e||t.has(e)||r.has(e))&&(r.add(e),n.push(e),n.length===8))break}return n}async function Dv(e){if(e.complete){let t=e.records.some(e=>Tv(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=Ev(e.records);if(t.length===0){let t=e.records.some(e=>Tv(e,`user`));return{records:e.records,boundaryFound:t,partial:!t}}let n=await Promise.all(t.map(async t=>{try{return await e.requestMessage(t)}catch{return null}})),r=new Map;for(let t of e.records)r.set(t.info.id,t);for(let e of n)e?.info?.id&&r.set(e.info.id,e);let i=[...r.values()].sort((e,t)=>e.info.id.localeCompare(t.info.id)),a=i.some(e=>Tv(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Ov(e){return e.trim()}function kv(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??i)(),r=e.generation??t.generation??(t.probe?.getGeneration??h)();return{directory:Ov(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function Av(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:Xc,liveRevision:0}}function jv(e,t){if(!e||e.pages.length===0)return Av(t);let n=vh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function Mv(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function Nv(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function Pv(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=Mv(e.info);t!==void 0&&(n===void 0||t<n)&&(n=t)}if(n===void 0)return[];let r=new Set(t.records.map(e=>e.info.id)),i=[];for(let t of e.messageOrder){if(r.has(t))continue;let a=Mv(e.messagesByID[t]);a===void 0||a<=n||Nv(e.partsByMessageID[t])||i.push(t)}return i}function Fv(e={}){let t=e.client??R,n=e.cacheBudget??cg({client:t,activeRegistry:e.activeRegistry??rg()}),r=n.activeRegistry,a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=e.durableStore?gv(e.durableStore,{getProtectScopes:()=>r.listRetained().map(pv),getByteBudget:e.getDurableByteBudget}):void 0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=jv(w(e),t.sessionID);!hl(r)&&!v.has(n)||(y.add(n),Z_(__({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=l.get(e);return t||(t={messages:new Map,parts:new Map},l.set(e,t)),t},w=n=>{let r=kv(n,e);return Vh({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=kv(t,e);return kh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=kv(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let r=e.probe??{getTransport:i,getGeneration:h},o=kv(n,{...e,transport:void 0,generation:void 0,probe:r}),s=K(o),c=a.get(s);if(c)return c;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=zh({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(s,l),l},k=t=>{let n=K(kv(t,e));l.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(kv(n,e));if(s.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});s.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=s.get(e);n&&(n(),s.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of p.keys())t.startsWith(e)&&p.delete(t);for(let t of m.keys())t.startsWith(e)&&m.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of p)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of m.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=kv({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{u&&u.persistSettled(pv(e),t,n??[])},le=(e,t,n,r)=>{if(!u||S>0||!r.applied||!r.changed)return;let i=pv(t);if(n.type===`remove-message`){u.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(u.clearSession(i),n.page){let r=jv(w(e),t.sessionID);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;ce(t,n,r.partsByMessageID[e.info.id]??e.parts)}}return}if(n.type!==`optimistic-add`&&n.type!==`optimistic-confirm`&&n.type!==`optimistic-remove`){if(n.type===`sse-event`){let r=hv(n.event);if(r.action===`remove`){u.removeMessage(i,r.messageID);return}if(r.action===`skip`)return;let a=jv(w(e),t.sessionID),o=a.messagesByID[r.messageID];if(!o)return;ce(t,o,a.partsByMessageID[r.messageID]);return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=jv(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:i,getGeneration:h},s={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??Lm()};return mv(r?.fresh?await t.fetchQuery({...Nh(s,a,n.transport,o,n.generation),staleTime:0}):await Ph(s,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)Zl(`${e.directory}\n${e.sessionID}\n${n}`,()=>F.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now();d.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return d.delete(r),F.getTranscript(e);F.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Tm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let a=g.get(r);if(a&&a.size>0){let n=[],r=0;for(let o of i.records){let i=o.info.id;if(!(!i||!a.has(i))){if(!ll(F.getParts(e,i),F.getMessage(e,i)??o.info)){ne(t,i),p.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return d.delete(r),n.noteScopeObserved(E(e)),D(e),F.getTranscript(e)}catch(n){if(n instanceof yh||!se(t))return d.delete(r),F.getTranscript(e);throw d.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Z_(__({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:jv(w(e),t.sessionID),request:F.getRequestState?.(e),hydration:F.getHydrationState?.(e),error:n})),n}finally{f.delete(r)}})();return f.set(r,a),a},P=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=F.getTranscript(e).liveRevision;d.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return d.delete(r),F.getTranscript(e);let o=F.getTranscript(e).liveRevision;return o<a||Ul(t.sessionID,t.directory)?(d.delete(r),F.getTranscript(e)):(F.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Tm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),d.delete(r),n.noteScopeObserved(E(e)),D(e),F.getTranscript(e))}catch(n){return d.delete(r),n instanceof yh||!se(t)||Z_(__({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`reconcile-page`,durationMs:Date.now()-i,transcript:jv(w(e),t.sessionID),request:F.getRequestState?.(e),hydration:F.getHydrationState?.(e),error:n})),F.getTranscript(e)}finally{f.delete(r)}})();return f.set(r,a),a},fe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(kv(t,e)))?!0:Jm(n).kind===`unknown`},F={getTranscript(t){let n=kv(t,e),r=K(n),i=jv(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=kv(t,e),r=K(n),i=F.getTranscript(t);return te(r,_l(n.sessionID,i.boundary))},getRequestState(t){let n=kv(t,e),r=d.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=kv(t,e),r=K(n),i=F.getTranscript(t);hl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:gl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:fl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(kv(t,e)),i=C(r),a=F.getTranscript(t).messagesByID[n];return i.messages.has(n)&&i.messages.get(n)===a?i.messages.get(n):(i.messages.set(n,a),a)},getParts(t,n){let r=K(kv(t,e)),i=C(r),a=F.getTranscript(t).partsByMessageID[n]??Iv,o=i.parts.get(n);return o===a||o&&a&&o.length===a.length&&o.every((e,t)=>e===a[t])?o??a:(i.parts.set(n,a),a)},getMessageMaterializationState(t,n){let r=kv(t,e),i=p.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!F.getMessage(t,n)||g.get(K(r))?.has(n)||cl(F.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=kv(t,e),i=M(r,n),a=Q_(()=>F.getTranscript(t)),o=e=>{try{let t=Q_(e);if(!a||!t)return;$_({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=m.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!F.getMessage(t,n))return p.set(i,{status:`idle`}),F.getTranscript(t);if(!cl(F.getParts(t,n))&&!g.get(K(r))?.has(n))return p.set(i,{status:`ready`}),F.getTranscript(t);p.set(i,{status:`loading`}),k(t);try{let a=await wv({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return V.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return se(r)?(F.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),cl(F.getParts(t,n))?p.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):p.set(i,{status:`ready`}),k(t),F.getTranscript(t)):(p.delete(i),F.getTranscript(t))}catch(e){if(!se(r))return p.delete(i),F.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return p.set(i,{status:`error`,error:n}),k(t),F.getTranscript(t)}}finally{ne(r,n)}})();return m.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{m.get(i)===c&&m.delete(i)}),c},apply(r,i){let a=kv(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=Bh(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&_.delete(K(a)),e.result.changed&&(k(r),D(r)),e.result}case`sse-event`:{let e=Bh(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=Bh(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&k(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),Bh(t,o,a.sessionID,{type:`optimistic-confirm`,messageID:i.messageID}).result;case`optimistic-remove`:{e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID});let n=Bh(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&k(r),n.result}case`reset`:{if(b.delete(K(a)),g.delete(K(a)),_.delete(K(a)),n.purgeSession(E(r)),!i.page)return k(r),{applied:!0,changed:!0};let e=Bh(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(k(r),D(r)),e.result}case`materialize-snapshots`:return Lv(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=Bh(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&k(r),e.result}default:return{applied:!1,changed:!1}}})();return le(r,a,i,s),s.applied&&(ev({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:jv(w(r),a.sessionID),request:F.getRequestState?.(r),hydration:F.getHydrationState?.(r),error:s.error}),x(r,a)),s},subscribe(t,i){let a=K(kv(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);c.set(a,r.retain(e)),n.noteScopeObserved(e)}return s.add(i),A(t),()=>{let e=o.get(a);if(e){if(e.delete(i),e.size===0){let e=c.get(a);e&&(e(),c.delete(a))}j(a)}}},async ensureInitial(t){let i=kv(t,e),a=K(i);if(u&&await u.wait(pv(i)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(pv(i));if(se(i)&&w(t)===void 0&&n.records.length>0){S+=1;try{F.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)ll(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Z_(__({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(fe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,i);return Z_(__({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:F.getRequestState?.(t),hydration:F.getHydrationState?.(t)})),x(t,i),n}let o=w(t);if(o&&o.pages.length>0&&!fe(t)&&e.fetcher&&!r.isRetained(E(t))){let e=Date.now(),n=await P(t,i);return Z_(__({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:F.getRequestState?.(t),hydration:F.getHydrationState?.(t)})),x(t,i),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;d.delete(a);try{await s.ensureInitial()}catch(e){throw Z_(__({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:jv(w(t),i.sessionID),request:F.getRequestState?.(t),hydration:F.getHydrationState?.(t),error:e})),e}d.delete(a),l||Tm(i.directory,i.sessionID,{transport:i.transport,generation:i.generation}),n.noteScopeObserved(E(t)),D(t);let f=F.getTranscript(t);return Z_(__({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:f,request:F.getRequestState?.(t),hydration:F.getHydrationState?.(t)})),x(t,i),f},async fetchPreviousPage(t){if(fe(t)&&await F.ensureInitial(t),Jm(w(t)).kind!==`has-more`)return F.getTranscript(t);let n=kv(t,e),r=K(n);b.add(r),k(t);let i=Date.now();try{await O(t).fetchPreviousPage(),D(t);let e=F.getTranscript(t);return Z_(__({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:F.getRequestState?.(t),hydration:F.getHydrationState?.(t)})),e}catch(e){throw Z_(__({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{b.delete(r),k(t)}},getController(t){let n=kv(t,e);return a.get(K(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=kv(t,e),i=Q_(()=>F.getTranscript(t)),a=F.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??Lm(),signal:new AbortController().signal}),s=F.getTranscript(t).liveRevision;if(F.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:o.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:s}),s<=a){let n=Pv(F.getTranscript(t),o);for(let i of n)F.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let c=F.getTranscript(t);n.noteScopeObserved(E(t));try{let e=Q_(()=>c);i&&e&&$_({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:i,after:e})}catch{}return c},async destructiveReset(t){let r=Q_(()=>F.getTranscript(t)),i=E(t);return u&&await u.clearSession(pv(kv(t,e))),n.destructiveReset(i,async()=>{let n=kv(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),l.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await F.ensureInitial(t);try{let e=Q_(()=>s);r&&e&&$_({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=K(kv(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),l.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),l.delete(n);let e=c.get(n);e&&(e(),c.delete(n));let t=s.get(n);t&&(t(),s.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),u&&u.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of s.values())e();s.clear();for(let e of c.values())e();c.clear(),o.clear(),l.clear(),d.clear(),f.clear(),p.clear(),m.clear(),g.clear(),v.clear(),y.clear(),b.clear()}};return F}var Iv=Object.freeze([]);function Lv(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=Bh(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var Rv=`/api/openchamber/transcript-cache`,zv=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),Bv=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Vv=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},Hv=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},Uv=e=>{if(!Bv(e))throw Error(`Invalid transcript cache scope`);return{transport:Vv(e.transport,`scope`),generation:Hv(e.generation,`scope`),directory:Vv(e.directory,`scope`),sessionID:Vv(e.sessionID,`scope`)}},Wv=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},Gv=e=>{if(!Bv(e)||!Bv(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!Bv(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:Uv(e.scope),messageID:Vv(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>Wv(e,`part completeness`)),completeness:Wv(e.completeness,`completeness`),contentHash:Vv(e.contentHash,`content hash`),byteSize:Hv(e.byteSize,`byte size`),lastAccessedAt:Hv(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:Hv(e.sortKey.created,`sort key`),messageID:Vv(e.sortKey.messageID,`sort key`)}}},Kv=(e,t)=>{if(!Bv(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(Gv);return{scope:e.scope===void 0?lc(t):Uv(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},qv=e=>{if(!Bv(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:Gv(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!zv.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:Gv(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Jv=e=>{if(!Bv(e))throw Error(`Invalid transcript cache evict`);return{evicted:Hv(e.evicted,`evict`),freedBytes:Hv(e.freedBytes,`evict`),remainingBytes:Hv(e.remainingBytes,`evict`)}},Yv=e=>({scope:lc(e),records:[],byteSize:0}),Xv=(e,t)=>Bv(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Zv=async e=>{if(e.status===204)return;let t=await e.text();if(t)try{return JSON.parse(t)}catch{throw Error(`Invalid transcript cache payload`)}},Qv=async(e,t,n)=>{let r=await e(t,n);if(r.status===501)return{kind:`disabled`};if(r.status===404)return{kind:`not-found`};if(r.ok)return{kind:`ok`,payload:await Zv(r)};let i=await Zv(r).catch(()=>void 0);throw Error(Xv(i,`Transcript cache request failed (${r.status})`))},$v=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),ey=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function ty(e={}){let t=e.fetch??I;return{async readSession(e){let n=await Qv(t,`${Rv}/session`,{method:`GET`,query:$v(e)});return n.kind===`disabled`||n.kind===`not-found`?Yv(e):Kv(n.payload,e)},async readMessage(e,n){let r=await Qv(t,`${Rv}/message`,{method:`GET`,query:{...$v(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!Bv(r.payload))throw Error(`Invalid transcript cache record`);return Gv(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Qv(t,`${Rv}/message`,ey(`PUT`,{scope:e,info:n,parts:r}));if(i.kind===`disabled`)return{status:`skipped`,reason:`unchanged`};if(i.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return qv(i.payload)},async removeMessage(e,n){let r=await Qv(t,`${Rv}/message`,ey(`DELETE`,{scope:e,messageID:n}));if(r.kind!==`disabled`&&r.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearSession(e){let n=await Qv(t,`${Rv}/session`,ey(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Qv(t,`${Rv}/generation`,ey(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Qv(t,`${Rv}/evict`,ey(`POST`,{maxBytes:e,...n?.protect?{protect:n.protect}:{}}));if(r.kind===`disabled`)return{evicted:0,freedBytes:0,remainingBytes:0};if(r.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return Jv(r.payload)},async clearAll(){let e=await Qv(t,`${Rv}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var ny=`openchamber-transcript-durable`,ry=1,iy=`transcriptIndex`,ay=`transcriptContent`,oy=class extends Error{code;constructor(e){super(e),this.code=e}},sy=e=>({id:Ys(e.scope,e.messageID),scope:lc(e.scope),scopeKey:Js(e.scope),generationKey:Xs(e.scope),messageID:e.messageID,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID},contentHash:e.contentHash,completeness:e.completeness,partCompleteness:e.partCompleteness.slice(),byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt}),cy=(e,t)=>({scope:lc(e.scope),messageID:e.messageID,info:cc(t.info),parts:cc(t.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),ly=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return cy(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},uy=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},dy=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),fy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new oy(`database-unavailable`));return}let r=indexedDB.open(e,ry),i=!1,a=()=>{i||(i=!0,n(new oy(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(iy)){let t=e.createObjectStore(iy,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(ay)||e.createObjectStore(ay,{keyPath:`id`})},r.onsuccess=()=>{let e=r.result;if(e.onversionchange=()=>e.close(),i){e.close();return}i=!0,t(e)},r.onerror=a,r.onblocked=a}),py=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new oy(`database-unavailable`)),r.onblocked=()=>void 0}),my=(e=ny)=>({transaction:async t=>{let n=await fy(e),r=n.transaction([iy,ay],`readwrite`),i=r.objectStore(iy),a=r.objectStore(ay),o=e=>dy(e,r),s=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{console.error(`Transcript durable IndexedDB transaction error`,r.error)}}),c;try{let e=await t({getIndex:e=>o(i.get(e)),getAllIndexes:()=>o(i.getAll()),getIndexesByScope:e=>o(i.index(`scopeKey`).getAll(e)),getIndexesByGeneration:e=>o(i.index(`generationKey`).getAll(e)),putIndex:async e=>{await o(i.put(e))},deleteIndex:async e=>{await o(i.delete(e))},getContent:e=>o(a.get(e)),putContent:async e=>{await o(a.put(e))},deleteContent:async e=>{await o(a.delete(e))},clearAll:async()=>{await o(i.clear()),await o(a.clear())}});return await s,e}catch(e){c=e;try{r.abort()}catch{}try{await s}catch(e){c===void 0&&(c=e)}throw c}finally{n.close()}},destroy:()=>py(e)});function hy(e,t={}){let n=uc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(sy(t)),dc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(Js(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=cy(t,r);a.lastAccessedAt=n(),await e.putIndex(sy(a)),i.push(a)}return fc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await ly(e,Ys(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=pc({info:i,incomingCompleteness:tc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=cc(a.slice()),c=tc(s),l=await ic(i,s),u=Ys(t,i.id);return e.transaction(async e=>{let a=await ly(e,u),o=pc({info:i,existing:a,incomingCompleteness:c,incomingHash:l.hash});if(o.status===`skipped`)return o.reason===`slim-downgrade`&&a?{status:`skipped`,reason:`slim-downgrade`,record:dc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:lc(t),messageID:i.id,info:cc(i),parts:s,partCompleteness:s.map(ec),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:Qs(i)};return await e.putIndex(sy(d)),await e.putContent({id:u,info:cc(i),parts:s}),{status:`written`,record:dc(d)}})},async removeMessage(t,n){await e.transaction(e=>uy(e,Ys(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(Js(t));for(let t of n)await uy(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(Xs(t));for(let t of n)await uy(e,t.id)})},async evictToBytes(t,n){return e.transaction(async e=>{let r=Number.isFinite(t)?Math.max(0,t):0,i=new Set((n?.protect??[]).map(Js)),a=await e.getAllIndexes(),o=0;for(let e of a)o+=e.byteSize;if(o<=r)return{evicted:0,freedBytes:0,remainingBytes:o};let s=a.filter(e=>!i.has(e.scopeKey)).sort((e,t)=>e.lastAccessedAt===t.lastAccessedAt?Zs(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await uy(e,t.id),o-=t.byteSize,l+=t.byteSize,c+=1}return{evicted:c,freedBytes:l,remainingBytes:o}})},async clearAll(){await e.transaction(async e=>{await e.clearAll()})},async destroy(){await e.destroy()}}}function gy(e={}){return hy(e.driver??my(e.databaseName),e)}function _y(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??ct;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var vy=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function yy(e={}){let t,n,r=()=>(t??=(e.createHttpStore??ty)(),t),i=()=>(n??=(e.createIndexedDBStore??gy)(),n),a=()=>_y(e)===`http`?r():i();return{readSession:e=>a().readSession(e),readMessage:(e,t)=>a().readMessage(e,t),upsertSettled:(e,t,n)=>a().upsertSettled(e,t,n),removeMessage:(e,t)=>a().removeMessage(e,t),clearSession:e=>a().clearSession(e),clearGeneration:e=>vy([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function by(e={}){await yy(e).clearAll()}var xy=(e,t)=>e<t?-1:+(e>t);function Sy(e){return e.filter(e=>!!e?.id).sort((e,t)=>xy(e.id,t.id))}async function Cy(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await gg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=r.records.map(e=>({info:Zf(e.info),parts:Sy(e.parts??[])}));if(!e.before&&!r.complete&&Ev(a).length>0){let t=V.getScopedSdkClient(e.directory);a=(await Dv({records:a,complete:r.complete,requestMessage:async n=>{let r=await wv({transport:i(),generation:h(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:Sy(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Sy(e.parts??[])}))}return{records:a,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function wy(e){let t=e.client??R,n=rg(),r=cg({client:t,activeRegistry:n}),a=Fv({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:i,getGeneration:h},fetcher:e=>Cy({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:Lm(),historyLimit:Rm(),durableStore:e.durableStore??yy()}),o=fv({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:r,probe:{getTransport:i,getGeneration:h}});return au(a),yu(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),yu(null),a.destroy(),ou()}}}function Ty(e){return su().apply(W(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var Ey=new Map;function Dy(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Oy(e,t,n,r={}){let a=r.getTransportIdentity??i,o=r.getGeneration??h,s=a(),c=o(),l=Dy(e,t,s,c),u=()=>a()===s&&o()===c,d=Ey.get(l)??Promise.resolve(),f,p=new Promise(e=>{f=e}),m=d.catch(()=>void 0).then(()=>p);Ey.set(l,m);try{if(await d.catch(()=>void 0),!u())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:s,generation:c,isCurrent:u})}finally{f(),Ey.get(l)===m&&Ey.delete(l)}}var ky=new Set,Ay=new Set,jy=new Set,My=new Set,Ny={onDeleteRequest(e){return ky.add(e),()=>{ky.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||ky.forEach(t=>t(e))},onCreateRequest(e){return Ay.add(e),()=>{Ay.delete(e)}},requestCreate(e){let t=e??{};Ay.forEach(e=>e(t))},onDirectoryRequest(e){return jy.add(e),()=>{jy.delete(e)}},requestDirectoryDialog(){jy.forEach(e=>e())},onGitRefreshHint(e){return My.add(e),()=>{My.delete(e)}},requestGitRefresh(e){e.directory.trim()&&My.forEach(t=>t(e))}},Py=e=>e.trim(),Fy=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session status runtime changed`)},Iy=(e,t={})=>{let n=Py(e),r=t.transport??i(),a=t.loadSnapshot??((e,t)=>V.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,s=t.runtimeProbe??{},c=(s.getGeneration??h)();return $e({queryKey:N.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{Fy(r,c,s);let t=o(),i=await a(n,e);if(Fy(r,c,s),i===null)throw Error(`session status snapshot unavailable`);return{snapshot:i,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},Ly=(e,t={})=>{let{client:n=R,...r}=t;return n.fetchQuery(Iy(e,r))},Ry=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session active runtime changed`)},zy=(e={})=>{let t=e.transport??i(),n=e.loadActive??(e=>V.getSessionActive(e)),r=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??h)();return $e({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{Ry(t,o,a);let i=r(),s=await n(e);return Ry(t,o,a),{result:s,requestedAt:i}},staleTime:0,gcTime:3e5,retry:!1})},By=(e={})=>{let{client:t=R,...n}=e;return t.fetchQuery(zy(n))},Vy;function Hy(e){Vy=e}function Uy(e){if(e){if(e.type===`idle`||e.type===`busy`)return{type:e.type};if(e.type===`retry`&&typeof e.attempt==`number`&&typeof e.message==`string`&&typeof e.next==`number`)return{type:`retry`,attempt:e.attempt,message:e.message,next:e.next}}}function Wy(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Gy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Ky(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>({session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n}})),!0)}function qy(e,t,n,r=Date.now()){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let i=e.membership,a=t??{},o=new Set([...n,...Object.keys(a)]);if(o.size===0)return{snapshot:null,source:`none`};let s={};for(let e of o){let t=Object.prototype.hasOwnProperty.call(i,e),n=Uy(a[e]);if(t){s[e]=n&&Gy(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function Jy(e,t,n,r){if(n.length===0)return!1;let i=!1;return e.setState(e=>{let a=e.session_status??{},o,s,c=()=>o??={...a},l=()=>s??={...e.session_status_observed_at},u=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(l()[t]=r,i=!0)};for(let o of n){if(r!==void 0&&(e.session_status_observed_at[o]??-1/0)>=r)continue;let n=Uy(t[o]);if(n&&n.type!==`idle`){Wy(a[o],n)||(c()[o]=n,i=!0),u(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(c()[o]={type:`idle`},i=!0),u(o)}return!o&&!s?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{}}}),i}function Yy(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Xy(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await Ly(e,{client:o,loadSnapshot:r.loadSnapshot,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),f=r.skipActive?Promise.resolve(null):(async()=>{try{return await By({client:o,loadActive:r.loadActive,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),[p,m]=await Promise.all([d,f]);if(c=p,m&&(l=m.result,u=m.requestedAt),r.isStale?.())return null;let h=c?.snapshot??null,g=l?.state===`supported`;if(h===null&&!g)return null;let{snapshot:_,source:v}=qy(l,h,n);if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=Yy(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Jy(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Vy;if(S){let n=t.getState().session_status??{},r={};for(let e of x){let t=n[e];t&&t.type!==`idle`&&(r[e]={type:t.type})}S(e,r,x)}return _}async function Zy({directory:e,sessionID:t,store:n,statusBeforePull:r,statusObservedAtBeforePull:i,hasMessages:a,isTailPage:o=!0,isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m}){if(!o||!a||!r||r.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:Xy(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var Qy=50,$y=e=>{let t=Object.keys(e);if(t.length<=Qy)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Qy).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},eb=De()(Ae(Oe((e,t)=>({sessions:{},setSessionTodos:(t,n)=>{t&&e(e=>{let r={...e.sessions};return!n||n.length===0?t in r?(delete r[t],{sessions:r}):e:(r[t]={todos:n,touchedAt:Date.now()},{sessions:$y(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:g(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),tb=new Set([`todowrite`,`todoread`]),nb=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),rb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),ib=(e,t)=>{eb.getState().setSessionTodos(e,t)},ab=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},ob=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},sb=e=>{if(!e||typeof e!=`object`)return null;let t=e;if(typeof t.content!=`string`||typeof t.status!=`string`)return null;let n={content:t.content,status:t.status,priority:typeof t.priority==`string`?t.priority:`medium`};return typeof t.id==`string`&&t.id.length>0&&(n.id=t.id),n},cb=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=sb(n);e&&t.push(e)}return t},lb=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return cb(t);if(t&&typeof t==`object`)return cb(t.todos)}catch{}return[]},ub=e=>{if(!tb.has(ab(e)))return[];let t=ob(e);if(t&&nb.has(t))return[];let n=e.state,r=cb(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=cb(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=cb(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?lb(i):[]};function db(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.partsByMessageID[n];if(!(!r||r.length===0))for(let e=r.length-1;e>=0;--e){let t=ub(r[e]);if(t.length>0)return t}}return[]}function fb(e){if(!e.sessionID||e.isStale?.()||rb(e.store.getState().todo,e.sessionID))return!1;let t=db(e.transcript);return t.length===0||e.isStale?.()||rb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function pb(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??U()?.getTranscript(W(e.directory,e.sessionID));return t?fb({sessionID:e.sessionID,store:e.store,transcript:t,persist:ib,isStale:e.isStale}):!1}var mb=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>pS,COMBINED_SEND_PRESENCE_GRACE_MS:()=>fS,SESSION_DELETE_UNDO_MS:()=>Lx,abortBusySessionForMessageEdit:()=>DS,abortCurrentOperation:()=>vS,archiveSession:()=>qx,beginOptimisticSend:()=>rS,cancelScheduledSessionDeletes:()=>Kx,classifySendFailure:()=>sx,combinedSendConfirmationOptions:()=>mS,commitMessageEdit:()=>kS,createSession:()=>jx,deleteSession:()=>Wx,dirStoreForDirectory:()=>Kb,dismissOpenQuestionsForSession:()=>SS,ensureSentUserMessagePresence:()=>_S,fetchMessagesForSession:()=>FS,fetchRecentSendConfirmationRecords:()=>uS,forkSession:()=>NS,getSendFailureKind:()=>ax,getSessionLastAssistantModel:()=>Qb,isQuestionRequestNotFoundError:()=>Ox,materializeConfirmedSendRecords:()=>dS,mirrorSessionIntoLiveStores:()=>ex,optimisticInsertUserMessage:()=>cS,optimisticSend:()=>sS,patchSessionMetadata:()=>Mx,refetchSessionMessages:()=>jS,rejectQuestion:()=>xS,releaseUnconfirmedQueueSend:()=>Ub,requestSessionSmartTitle:()=>Xx,resolveForkMessageId:()=>Db,respondToPermission:()=>yS,respondToQuestion:()=>bS,revertToMessage:()=>CS,rollbackOptimisticSend:()=>aS,scheduleSessionDeletes:()=>Gx,setActionRefs:()=>Vb,setOptimisticRefs:()=>Hb,settleOptimisticSend:()=>oS,shareSession:()=>Zx,shouldSuppressForkCopyEvent:()=>kb,stageMessageEdit:()=>TS,trackForkCopySessionCreated:()=>Cb,unarchiveSession:()=>Jx,unrevertSession:()=>MS,unshareSession:()=>Qx,updateSessionTitle:()=>Yx,waitForConnectionOrThrow:()=>dx,waitForSessionIdleForMessageEdit:()=>OS}),hb=2,gb=150,_b=new Set([`patch`,`step-start`,`step-finish`]),vb=3,yb=150,bb=null,xb=new Map,Sb=3e4;function Cb(e,t){let n=t?.id;!bb||bb.runtimeKey!==c()||bb.directory!==e||!n||t?.title!==bb.expectedTargetTitle||n===bb.sourceSessionID||bb.targetSessionID||(bb.targetSessionID=n)}function wb(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function Tb(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function Eb(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Db(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!n||n.type===`idle`)return e;for(let e=t.length-1;e>=0;--e)if(t[e]?.role===`user`)return t[e].id}async function Ob(e,t){let n=Tp(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return V.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function kb(e,t,n){if(bb&&bb.runtimeKey===c()&&bb.directory===e&&t&&t===bb.targetSessionID)return!0;if(!t||!n)return!1;let r=`${c()}:${e}:${t}`,i=xb.get(r);return i?i.expiresAt<=Date.now()?(xb.delete(r),!1):n<=i.messageID:!1}var Ab=null,jb=null,Mb=()=>``,Nb=new Map,Pb=null,Fb=null,Ib=null,Lb=e=>new Promise(t=>setTimeout(t,e));function Rb(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e.message;if(typeof t==`string`&&t.length>0)return t;let n=e.data;if(n&&typeof n==`object`){let e=n.message;if(typeof e==`string`&&e.length>0)return e}}try{return JSON.stringify(e)}catch{return String(e)}}function zb(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Rb(e.error)}`);throw n!==void 0&&(r.status=n),r}function Bb(e,t){let n=zb(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Vb(e,t,n){if(Ab=e,jb=t,Mb=n,Nb.size>0){let e=[...Nb.values()];Nb.clear(),queueMicrotask(()=>{for(let t of e)FS(t.sessionID,t.directory)})}}function Hb(e,t,n){Pb=e,Fb=t,Ib=n??null}function Ub(e){let t=e.directory??null;Fb?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Wb(){if(!Ab)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Ab}function Gb(){if(!jb)throw Error(`Child stores not initialized`);let e=Mb();if(!e)throw Error(`No current directory`);return jb.ensureChild(e)}function Kb(e,t){if(!jb)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return jb.ensureChild(e,t)}function qb(e,t){let n=t??_x(e);return n?{store:Kb(n),directory:n}:{store:Gb(),directory:tx()}}function Jb(e,t){let{store:n,directory:r}=qb(e,t??void 0),i=r??tx()??``;return{repository:U()??cu(i,n),directory:i,store:n}}function Yb(e,t){let{repository:n,directory:r,store:i}=Jb(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(W(r,e))}}function Xb(e,t){return Pu(Yb(e,t).data)}function Zb(e,t){return Yb(e,t).data.messageOrder.length}function Qb(e){try{let t=Xb(e);for(let e=t.length-1;e>=0;--e){let n=t[e];if(n?.role===`assistant`&&typeof n.providerID==`string`&&n.providerID&&typeof n.modelID==`string`&&n.modelID)return{providerID:n.providerID,modelID:n.modelID}}return null}catch{return null}}function $b(e,t){let n=jb;if(!n)return!1;let r=t?[[t,n.getChild(t)]]:n.children;for(let[,t]of r){if(!t)continue;let n=t.getState().session,r=n.findIndex(t=>t.id===e.id);if(r===-1)continue;let i=[...n];return i[r]=Bw(e,n[r]),t.setState({session:i}),!0}return!1}function ex(e,t){t&&$b(e,t)||$b(e)}function tx(){return Mb()||void 0}function nx(){let{hasEverConnected:e,lastDisconnectReason:t}=Nf.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function rx(e){if(!e||typeof e!=`object`)return null;let t=e.status;if(typeof t==`number`)return t;let n=e.response;return typeof n?.status==`number`?n.status:null}var ix=class extends Error{kind;cause;messageID;constructor(e,t,n){super(t instanceof Error?t.message:String(t)),this.name=`SendDispatchError`,this.kind=e,this.cause=t,this.messageID=n}};function ax(e){return e instanceof ix?e.kind:null}function ox(e){let t=rx(e);if(t===503||t===504||t===408||e instanceof TypeError||e instanceof DOMException&&(e.name===`AbortError`||e.name===`TimeoutError`))return!0;let n=e instanceof Error?e.message.toLowerCase():typeof e==`string`?e.toLowerCase():``;return n.includes(`timeout`)||n.includes(`timed out`)||n.includes(`failed to fetch`)||n.includes(`networkerror`)||n.includes(`network error`)||n.includes(`gateway timeout`)||n.includes(`econnreset`)||n.includes(`socket hang up`)}function sx(e,t){return t?ox(e)||rx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var cx=2e3,lx=5e3,ux=3e4;async function dx(){let e=ym();e&&vm(`send_stream_stale`);let t=Date.now()+(e?lx:cx);for(;Date.now()<t;){if(Nf.getState().isConnected&&!ym()||u()&&!ym())return;let e=t-Date.now();if(e<=0)break;if(await Nf.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!ym())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw nx()}function fx(e){return new Promise((t,n)=>{let r=setTimeout(()=>{vm(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},ux);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function px(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function mx(e){e&&Y.getState().upsertSession(e)}function hx(e,t){let n=Yf(t),r=[...e.getState().session],i=ns.search(r,n.id,e=>e.id);if(i.found){let t=Bw(n,r[i.index]);return r[i.index]=t,e.setState({session:r}),t}return r.splice(i.index,0,n),e.setState({session:r}),n}async function gx(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=px(e);if(i)return hx(t,i);try{return hx(t,await V.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function _x(e){return vx(e)||$.getState().getDirectoryForSession(e)||tx()}function vx(e){let t=jb;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=U()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function yx(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?V.getScopedSdkClient(t):Wb()}function bx(e){Cr.getState().clearAttachedFiles();for(let t of e){let e=typeof t.url==`string`?t.url:``,n=typeof t.mime==`string`?t.mime:`application/octet-stream`,r=typeof t.filename==`string`?t.filename:`attachment`;e&&Cr.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var xx=()=>new Map(Array.from(Cd(),([e,t])=>[e,t.title||e]));function Sx(e){return!(e.type!==`file`||zp(e))}function Cx(e){return Sx(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function wx(e){return e.some(Cx)}async function Tx(e){let t=[...e.parts];if(!wx(t))return t;let n=h(),r=e.directory??``;try{await hu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||h()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=Jb(e.sessionID,r);if(t=[...i.getParts(W(a,e.sessionID),e.messageID)],wx(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function Ex(e){if(wx(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await em(e.parts,{sessionTitles:xx(),directory:e.directory}),n=Cr.getState(),r=n.getDraft(e.key);return{payload:t,commit:await am({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function Dx(e,t,n){let r=jb;if(!r||!n)return null;for(let[t,i]of r.children){let r=i.getState(),a=e===`permission`?r.permission:r.question;for(let e of Object.values(a))if(e?.some(e=>e.id===n))return t}let i=$.getState().getDirectoryForSession(t);if(i)return i;for(let[e,n]of r.children){let r=n.getState();if(r.session.some(e=>e.id===t)||Object.prototype.hasOwnProperty.call(r.session_status??{},t)||Object.prototype.hasOwnProperty.call(r.permission??{},t)||Object.prototype.hasOwnProperty.call(r.question??{},t))return e}return null}function Ox(e){if(e&&typeof e==`object`&&e.status===404)return!0;let t=``;return e instanceof Error?t=e.message:typeof e==`string`&&(t=e),/Question(?:\.)?NotFoundError|Question request not found/i.test(t)}function kx(e,t){let n=jb;if(!n||!t)return!1;let r=!1;for(let[,i]of n.children){let n=i.getState().question??{},a=null,o=new Set([e,...Object.keys(n)].filter(Boolean));for(let e of o){let i=n[e];if(!i?.length)continue;let o=i.filter(e=>e.id!==t);o.length!==i.length&&(a??={...n},o.length>0?a[e]=o:delete a[e],r=!0)}a&&i.setState({question:a})}return r}function Ax(e,t,n){let r=Dx(e,t,n);return r?V.getScopedSdkClient(r):yx(t)}async function jx(e,t,n,r){try{let i=await V.createSession({title:e,parentID:n??void 0,metadata:r},t??tx()),a=i.directory??null;return a&&hd(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),Y.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function Mx(e,t,n){let r=t??_x(e),i=n(Tp(await V.getSession(e,r))),a=await V.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&hd(a.id,o),a}async function Nx(e,t){let n;try{n=await V.getSession(e,t??_x(e))}catch{return}if(!kp(n))return;let r=Op(n);if(r)try{await Mx(r,t??_x(r),t=>Mp(t,e))}catch(e){let t=e instanceof Error?e.message:String(e);if(/not found/i.test(t))return;console.warn(`[session-actions] review metadata cleanup failed before delete`,e)}}function Px(e,t){if(!jb)return[];let n=[],r=new Set,i=[];if(t){let e=jb.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of jb.children.entries())r.has(e[0])||i.push(e);for(let[t,r]of i){let i=r.getState();i.session.some(t=>t.id===e)&&(n.push({directory:t,sessions:i.session}),r.setState({session:i.session.filter(t=>t.id!==e)}))}return n}function Fx(e){if(jb)for(let t of e){let e=jb.children.get(t.directory);e&&e.setState({session:t.sessions})}}function Ix(e){$.getState().setWorktreeMetadata(e,null)}var Lx=1e4,Rx=new Map,zx=0;function Bx(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function Vx(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),Fx(e.listSnapshots),mx(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function Hx(e,t){let n=t??_x(e);Y.getState().markSessionsPendingDeletion([e]);let r=Px(e,n),i=px(e);Y.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function Ux(e,t){try{if(await Nx(e,t),await V.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return Px(e,t),Y.getState().removeSessions([e]),Ix(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(Px(e,t),Y.getState().removeSessions([e]),Ix(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function Wx(e,t){let n=Hx(e);return await Ux(e,n.directory)?!0:(Vx(n),!1)}function Gx(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>Hx(e)),i=`session-delete-${Date.now()}-${zx+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=Rx.get(i);if(!e)return;Rx.delete(i);let t=[],n=[];for(let r of e.entries)await Ux(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),Vx(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return Rx.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function Kx(e){if(!e)return!1;let t=Rx.get(e);if(!t)return!1;clearTimeout(t.timer),Rx.delete(e);for(let e of[...t.entries].reverse())Vx(e);return!0}async function qx(e){let t=_x(e),n=Px(e,t),r=px(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await Nx(e,t);let n=await V.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),Fx(n),mx(r),!1}}async function Jx(e){let t=_x(e),n=px(e),r=n?Bx(n):null;if(r&&(Y.getState().upsertSession(r),t&&jb)){let e=jb.children.get(t);e&&hx(e,r)}try{let n=await V.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=Bx(n);if(Y.getState().upsertSession(r),t&&jb){let e=jb.children.get(t);e?hx(e,r):ex(r,t)}else ex(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&Px(e,t)),!1}}async function Yx(e,t){let n=_x(e),r=px(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?zf(r):0,c=await V.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),ex(c,n)}async function Xx(e){let t=_x(e),n=px(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await V.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),ex(s,t)}async function Zx(e){let t=_x(e),n=Yf(Bb(await Wb().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),$b(n,t),n}async function Qx(e){let t=_x(e),n=Yf(Bb(await Wb().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),$b(n,t),n}function $x(e){let t=jb,n=e??Mb();if(!t||!n)return{store:e?Kb(e):Gb(),isCurrent:()=>!0};let r=t,i=r.captureChild?.(n);if(i&&r.isCurrentChildCapture)return{store:i.store,isCurrent:()=>r.isCurrentChildCapture?.(i)===!0};let a=t.ensureChild(n);return{store:a,isCurrent:()=>t.getChild(n)===a}}function eS(){return{identity:i(),generation:h()}}function tS(e,t){return e.isCurrent()&&i()===t.identity&&h()===t.generation}function nS(e,t){if(!tS(e,t))throw Error(`Send target changed before transport dispatch`)}function rS(e){if(!Pb||!Fb)throw new ix(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??tx()??null,n=$x(t),r=eS();nS(n,r),e.beforeOptimisticInsert?.(),nS(n,r);let i=e.messageID??he(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),cS({sessionId:e.sessionId,messageID:i,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.parts}),e.onOptimisticInsert?.(),{messageID:i,sessionId:e.sessionId,directory:t,capture:n,transport:r}}catch(e){throw e instanceof ix?e:new ix(ax(e)??sx(e,!1),e)}}function iS(e){if(!tS(e.capture,e.transport)||!Fb)return;Fb({sessionID:e.sessionId,directory:e.directory,messageID:e.messageID});let t=e.capture.store.getState(),n=Date.now();e.capture.store.setState({session_status:{...t.session_status,[e.sessionId]:{type:`idle`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:n}})}function aS(e){iS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function oS(e){if(!Pb||!Fb)throw new ix(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));let{ticket:t}=e,{capture:n,transport:r,messageID:i,sessionId:a,directory:o}=t,s=!1;try{if(await dx(),nS(n,r),s=!0,await fx(e.send(i)),!tS(n,r))throw new ix(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=ax(c)??sx(c,s),u=c instanceof ix?c:new ix(l,c,i);if(!tS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await uS(a,i,o):null;if(d&&tS(n,r)){dS(n.store,a,i,d,{directory:o??void 0}),Ib?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||iS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function sS(e){await oS({ticket:e.ticket??rS({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:e.directory,files:e.files,parts:e.parts,messageID:e.messageID,onOptimisticInsert:e.onOptimisticInsert,onMessageID:e.onMessageID,beforeOptimisticInsert:e.beforeOptimisticInsert}),preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:e.onSendConfirmed,send:e.send})}function cS(e){if(!Pb)return!1;let t=e.directory??tx(),n=t?Kb(t):Gb(),r=t??tx()??``;if(hS(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:he(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:he(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:he(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),s={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},c=Q_(()=>Yb(e.sessionId,t).data);Pb({sessionID:e.sessionId,directory:t,message:s,parts:a});let l=Q_(()=>Yb(e.sessionId,t).data);try{c&&l&&$_({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:i(),generation:h(),before:c,after:l})}catch{}let u=n.getState();return n.setState({session_status:{...u.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...u.session_status_observed_at,[e.sessionId]:o}}),!0}function lS(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function uS(e,t,n,r){let i=r?.signal||r?.timeoutMs!==void 0?new AbortController:null,a=()=>i?.abort();r?.signal?.addEventListener(`abort`,a,{once:!0}),r?.signal?.aborted&&i?.abort();let o=r?.timeoutMs===void 0?void 0:setTimeout(()=>i?.abort(),Math.max(0,r.timeoutMs)),s=r?.attempts??hb,c=r?.retryDelayMs??gb;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!lS(r?.isCurrent)||a>0&&(await Lb(c),i?.signal.aborted||!lS(r?.isCurrent)))return null;try{let a=await Wb().session.messages({sessionID:e,directory:n??void 0,limit:Vm(),...i?{signal:i.signal}:{}});if(!lS(r?.isCurrent))return null;let o=(zb(a,`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.some(e=>e.info.id===t))return o}catch{}}return null}finally{o&&clearTimeout(o),r?.signal?.removeEventListener(`abort`,a)}}function dS(e,t,n,r,i){if(!r.length)return;let a=i?.directory??_x(t)??Mb(),o=W(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:Zf(e.info),parts:e.parts??[]})),skipPartTypes:_b,merge:i?.gapFillOnly===!0?Hs:Ws({purpose:`recovery`})};uu(o,s)||cu(a,e).apply(o,s)}var fS=2e3,pS={attempts:12,retryDelayMs:500},mS={presenceGraceMs:fS,recovery:{...pS}};function hS(e,t,n,r){let i=r??_x(t)??Mb()??``,a=U()??cu(i,e),o=W(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function gS(e,t,n,r){let i=r?.directory??_x(t)??Mb()??``;if(hS(e,t,n,i))return Promise.resolve(!0);if(!lS(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=U()??cu(i,e),f=W(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!lS(r?.isCurrent)){l(!1);return}hS(e,t,n,i)&&l(!0)}),hS(e,t,n,i)&&l(!0)})}async function _S(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await gS(t,n,r,{timeoutMs:e.graceMs??mS.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!lS(a))return`cancelled`;let o=await uS(n,r,i,{...mS.recovery,isCurrent:a});return o?lS(a)?(dS(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:lS(a)?`missing`:`cancelled`}async function vS(e){let{store:t,directory:n}=qb(e),r=n?{state:`bound`,transportIdentity:i(),directory:n,sessionID:e}:null,a=r?$.getState().beginQueueAbortBlock(r):null;try{if(Bb(await Wb().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&a&&$.getState().clearQueueAbortBlock(r,a),Ye(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>Fz);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function yS(e,t,n){await dx();let r=Dx(`permission`,e,t)||_x(e)||tx();if(Bb(await Ax(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function bS(e,t,n){await dx();let r=Dx(`question`,e,t)||_x(e)||tx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Bb(await Ax(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw Ox(n)&&kx(e,t),n}}async function xS(e,t){await dx();let n=Dx(`question`,e,t)||_x(e)||tx();try{if(Bb(await Ax(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw Ox(n)&&kx(e,t),n}}async function SS(e){if(!e)return!1;let t=jb;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Pp(t.session,e);if(i.size===0)continue;let a=t.question??{};for(let e of i){let t=a[e];if(t)for(let r of t)n.push({sessionId:e,requestId:r.id})}}if(n.length===0)return!1;for(let{sessionId:e,requestId:t}of n)kx(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await xS(e,t)}catch(e){if(Ox(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function CS(e,t,n){let r=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return Oy(e,r??(()=>{try{return qb(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:o,directory:c}=qb(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Wb().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=Xb(e,c).find(e=>e.id===t),d=Xb(e,c).find(e=>e.id===t)??u;if(!d||d.role!==`user`)throw Error(`The selected user message is unavailable`);let{repository:f,directory:p}=Jb(e,c),m=[...f.getParts(W(p,e),t)],h=a===void 0?s?C({transportIdentity:i()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await Tx({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await em(m,{sessionTitles:xx(),directory:c})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=o.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),w={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},w.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(o.setState(w),h){let t=Cr.getState(),r=await am({key:h,expectedRevision:t.getDraft(h)?.revision??`absent`,payload:g,runtime:t.captureDraftRuntime()});if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),r.status===`committed`&&r.current&&r.previous&&r.result?.record?.revision!==void 0&&await sm({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await V.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await sm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}let i=[...o.getState().session],a=i.findIndex(t=>t.id===e);return a>=0&&(i[a]=r,o.setState({session:i})),c&&Ny.requestGitRefresh({directory:c}),g}catch(t){let r=[...o.getState().session],i=r.findIndex(t=>t.id===e);throw i>=0&&(r[i]={...r[i],revert:b}),n()?(o.setState({session:r}),h&&v&&_!==void 0&&await sm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await sm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function wS(e,t,n,r){let a=r??_x(t)??Mb(),o=W(a,t),s=Q_(()=>Yb(t,a).data),c=[...lu(t)];c.some(e=>e.directory===a&&e.sessionID===t)||c.push(o);let l=!1;for(let e of c)uu(e,{type:`remove-message`,messageID:n})!=null&&(l=!0);l||cu(a,e).apply(o,{type:`remove-message`,messageID:n});let u=Q_(()=>Yb(t,a).data);try{s&&u&&$_({trigger:`user-delete`,sessionID:t,directory:a,transport:i(),generation:h(),before:s,after:u})}catch{}}async function TS(e,t,n,r){let a=n?.info,o=n?.parts,s=r?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=qb(e,s).directory}else{c=qb(e,s).directory;let{data:n}=Yb(e,c),r=Pu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=r?.draftKey??C({transportIdentity:i()},e),{commit:u}=await Ex({key:l,parts:await Tx({directory:c,sessionID:e,messageID:t,parts:o??[]}),directory:c});if(u.status!==`committed`||!u.current)throw Error(`composer-restoration-commit-${u.status}`);let d=u.result?.record?.revision,f=u.previous;return d===void 0||!f?{rollback:async()=>({status:`skipped`})}:{rollback:async()=>({status:(await sm({key:l,restoredRevision:d,previous:f})).status})}}function ES(e,t,n,r){let i=t.findIndex(t=>t.id===e),a=i>=0?t[i]:void 0;if(!a||a.role!==`user`||!n.has(e))throw Error(`The selected user message is unavailable`);let o=r?.preserveMessageId,s=o?t.findIndex(e=>e.id===o):-1,c=s>i?s:t.length;return t.slice(i,c).filter(e=>!(!n.has(e.id)||o&&e.id===o))}async function DS(e,t){let n=t?.directory,{store:r,directory:i}=qb(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Wb().session.abort({sessionID:e,directory:i})}catch{}}async function OS(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=qb(e,n),o=Date.now()+r;for(;Date.now()<o;){let t=a.getState().session_status[e];if(!t||t.type===`idle`)return;await new Promise(e=>setTimeout(e,i))}let s=a.getState().session_status[e];if(!(!s||s.type===`idle`))throw Error(`Session is still busy after waiting to edit: ${e}`)}async function kS(e,t,n){let r=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:s}=qb(e,r),c=Q_(()=>Yb(e,r).data);try{await DS(e,{directory:r}),await OS(e,{directory:r});let n=new Set((await AS(e,r)).map(e=>e.id)),i=ES(t,Xb(e,r),n,{preserveMessageId:a});for(let t of[...i].reverse())await V.deleteSessionMessage(e,t.id,s),wS(o,e,t.id,s)}finally{try{let t=Q_(()=>Yb(e,r).data);c&&t&&$_({trigger:`user-edit`,sessionID:e,directory:s,transport:i(),generation:h(),before:c,after:t})}catch{}}}async function AS(e,t){let{directory:n}=qb(e,t);return(zb(await Wb().session.messages({sessionID:e,directory:n,limit:Bm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>Zf(e.info))}async function jS(e,t){let{store:n,directory:r}=qb(e,t),a=Q_(()=>Yb(e,t).data),o=(zb(await Wb().session.messages({sessionID:e,directory:r,limit:Bm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Q_(()=>Yb(e,t).data);a&&n&&$_({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let s=o.map(e=>({info:Zf(e.info),parts:e.parts??[]})),c=W(r??Mb(),e);uu(c,{type:`materialize-snapshots`,records:s,skipPartTypes:_b})||cu(r??Mb(),n).apply(c,{type:`materialize-snapshots`,records:s,skipPartTypes:_b});try{let n=Q_(()=>Yb(e,t).data);a&&n&&$_({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return s.map(e=>e.info)}async function MS(e,t){return Oy(e,t??(()=>{try{return qb(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=qb(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Zb(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Wb().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Wb().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Bb(c,`session.unrevert`),u=[...r.getState().session],d=u.findIndex(t=>t.id===e);d>=0&&(u[d]=l,r.setState({session:u}));for(let r=0;r<vb;r+=1){if(r>0&&(await Lb(yb),!n())||(await jS(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Zb(e,i)>o)return}if(Zb(e,i)<=o){let n=i??Mb(),a=U()??cu(n,r),o=W(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await jS(e,t)}})}async function NS(e,t,n,r){let i=c(),{store:a,directory:o}=qb(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await gx(e,a,o);hd(e,o);let l=a.getState(),u=l.session_status[e],d=Xb(e,o);u?.type,d.length;let f=Db(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await jS(e),l=a.getState(),u=l.session_status[e],d=Xb(e,o),f=Db(void 0,d,u)),!n&&l.session_status[e]?.type!==`idle`&&!f)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:Zb(e,o)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=Yb(e,o),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(W(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!zp(e)).map(e=>e.text||e.content||``).join(`
460
+ `),l=[];for(let e of o){let t=$p(e);t&&l.push(t)}for(let e of[...l].reverse())Qp(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=E(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=Qp(c,e.token,p);t&&(p.add(`${t.start}:${t.end}`),f.push({kind:`agent`,value:e.name,path:e.name,label:e.name,range:t}))}let m=[],h=new Map;for(let e of s){if(e.slim===!0)continue;let t=typeof e.url==`string`?e.url:``;if(!t)continue;let i=typeof e.mime==`string`?e.mime:`application/octet-stream`,a=typeof e.filename==`string`?e.filename:`attachment`,o=t.startsWith(`file:`)?qp(t):null;if(o){let e=Xp(o,r),t=null;for(let n of e){let e=Qp(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=Wp(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=ue(s);if(t.startsWith(`data:`)){let e=await Zp(t);h.set(l,e),m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:e.type||i,size:e.size,source:`local`,locator:{kind:`blob`,blobID:s}});continue}if(Hp(t)){if(!ie(t))throw Error(`composer-restoration-url-too-long`);m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:i,size:0,source:t.startsWith(`file:`)?`server`:`local`,locator:{kind:`url`,url:t},...t.startsWith(`file:`)&&o?{serverPath:o}:{}}),h.set(l,t);continue}throw Error(`composer-restoration-invalid-attachment-url`)}f.sort((e,t)=>e.range.start-t.range.start);let g=ae(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=Ce(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},tm=async(e,t={})=>{let n=t.createID??P,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=Ce(r,i),o=ae(r,e.composerMentions??[]);if(!a||!o)throw Error(`composer-restoration-invalid-sidecars`);if(e.draftAttachments)return{snapshot:{text:r,composerReferences:a.references,attachments:[...e.draftAttachments],syntheticParts:e.syntheticParts??[],mentions:o},values:e.draftValues??new Map};let s=[],c=new Map;for(let t of e.attachments??[]){let e=t.id||n(),r=ue(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await Zp(i);c.set(r,n),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||n.type||`application/octet-stream`,size:n.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}if(Hp(i)){if(!ie(i)){if(!(t.file instanceof Blob))throw Error(`composer-restoration-url-too-long`);c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType,size:t.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`url`,url:i},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}}),c.set(r,i);continue}if(t.file&&t.file.size>=0){c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}throw Error(`composer-restoration-invalid-attachment`)}return{snapshot:{text:r,composerReferences:a.references,attachments:s,syntheticParts:e.syntheticParts??[],mentions:o},values:c}},nm=e=>e?JSON.parse(JSON.stringify(e)):null,rm=e=>e?{...e}:{},im=(e,t=Cr.getState())=>{let n=t.getDraft?.(e)??null,r=rm(t.draftAttachmentViews?.[z(e)]);return{record:nm(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},am=async e=>{let t=e.input??Cr.getState(),n=im(e.key,{getDraft:t.getDraft?.bind(t),draftAttachmentViews:t.draftAttachmentViews}),r;try{r=await t.commitDraftSnapshot({key:e.key,expectedRevision:e.expectedRevision,runtime:e.runtime??t.captureDraftRuntime(),snapshot:e.payload.snapshot,values:e.payload.values})}catch{return{status:`failed`,current:!1,durable:!1,previous:n}}return{status:r.status,current:r.current,durable:r.durable,result:r,previous:n}},om=async e=>{let t=e.store.getDraft(e.key);if(!t||t.revision!==e.restoredRevision)return{status:`conflict`,current:!0};if(!e.previous.record)try{let t=await e.store.deleteDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}let n=e.previous.record,r=new Map;for(let t of[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)]){let n=e.previous.views[t.attachmentRefID];t.locator.kind===`url`?r.set(t.attachmentRefID,t.locator.url):n?.file?r.set(t.attachmentRefID,n.file):n?.dataUrl&&r.set(t.attachmentRefID,n.dataUrl)}try{let t=await e.store.commitDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime,snapshot:{text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}},values:r});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}},sm=async e=>{let t=e.input??Cr.getState(),n=t.getDraft(e.key);if(!n||n.revision!==e.restoredRevision)return{status:`conflict`,current:!0};let r=e.key.transportIdentity,i=e.runtime?.transportIdentity===r?e.runtime:void 0,a;try{let e=t.captureDraftRuntime();e.transportIdentity===r&&(a=e)}catch{}let o=i??a;return o?om({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},cm=(e,t,n)=>{let r=n.getDraft(e);if(r)return[...r.attachments,...r.syntheticParts.flatMap(e=>e.attachments)].find(e=>e.attachmentID===t)?.attachmentRefID},lm=e=>e?.status===`committed`&&e.current===!0,um=new Map,dm=async(e,t)=>{let n=z(e),r=um.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);um.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),um.get(n)===o&&um.delete(n)}},fm=(e,t)=>({key:e,addLocal:async n=>{await dm(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await dm(e,async()=>{let r=t(),i=cm(e,n,r);if(!i)return!(r.getDraft(e)&&[...r.getDraft(e)?.attachments??[],...r.getDraft(e)?.syntheticParts.flatMap(e=>e.attachments)??[]].some(e=>e.attachmentID===n));try{await r.removeDraftAttachment(e,i)}catch{}let a=r.getDraft(e);return!a||![...a.attachments,...a.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.attachmentID===n)})}catch{return!1}},clearRootAttachments:async()=>{try{return await dm(e,async()=>{let n=t(),r=n.getDraft(e);return!r||r.attachments.length===0||n.setDraftAttachments(e,[])?.attachments.length===0})}catch{return!1}},restoreRootAttachments:async n=>{try{return await dm(e,async()=>{let r=async()=>t().restoreDraftRootAttachments(e,n),i=await r();return i.status===`conflict`&&(i=await r()),i.status===`failed`||i.status===`stale`?!1:lm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await dm(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await dm(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await dm(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),pm=4e4,mm=0,hm=null;function gm(e=Date.now()){mm=e}function _m(e){return hm=e,()=>{hm===e&&(hm=null)}}function vm(e){hm?.(e)}function ym(e=Date.now(),t=pm){return mm<=0?!1:e-mm>=t}var bm=3e4,xm=200,Sm=new Map;function Cm(e,t,n){return`${n?.transport??i()}\n${n?.generation??h()}\n${e.trim()}\n${t}`}function wm(e,t,n){if(!e||!t)return!1;let r=Sm.get(Cm(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<bm}function Tm(e,t,n){if(!e||!t)return;let r=Cm(e,t,n);for(Sm.has(r)&&Sm.delete(r);Sm.size>=xm;){let e=Sm.keys().next().value;if(typeof e!=`string`)break;Sm.delete(e)}Sm.set(r,n?.now??Date.now())}var Em=768,Dm=()=>{if(typeof window>`u`)return!1;let e=typeof window.matchMedia==`function`?window.matchMedia(`(pointer: coarse)`).matches||window.matchMedia(`(hover: none)`).matches:!1,t=typeof navigator<`u`?navigator.maxTouchPoints??0:0;return e||t>0},Om=()=>{if(typeof window>`u`)return`desktop`;let e=window.__OPENCHAMBER_SURFACE__;if(e===`mobile`||e===`desktop`)return e;let t=new URLSearchParams(window.location.search).get(`surface`);if(t===`mobile`||t===`desktop`)return t;if(se())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=Em&&Dm()?`mobile`:`desktop`},km=()=>Om()===`mobile`,Am=3,jm=2,Mm=4,Nm=4,Pm=100,Fm=30;function Im(){return d()?`relay`:`local`}function Lm(e=Im()){return e===`relay`?jm:Am}function Rm(e=Im()){return e===`relay`?Nm:Mm}function zm(e){return Lm(Hm(e))}function Bm(){return Pm}function Vm(){return Fm}function Hm(e){return e===`relay`||e===`local`?e:Im()}var Um=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function Wm(){return{pages:[],pageParams:[]}}function Gm(e){let t={};for(let[n,r]of Object.entries(e.messagesByID))t[n]=r;let n={};for(let[t,r]of Object.entries(e.partsByMessageID))n[t]=Object.isFrozen(r)?r:Object.freeze([...r]);return Object.freeze({kind:e.kind,messageOrder:Object.isFrozen(e.messageOrder)?e.messageOrder:Object.freeze([...e.messageOrder]),messagesByID:Object.freeze(t),partsByMessageID:Object.freeze(n),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:Object.freeze({...e.sync})})}function Km(e){return{pages:Object.freeze(e.pages.map(Gm)),pageParams:Object.freeze([...e.pageParams])}}function qm(e,t,n=Um){let r=[],i={},a={};for(let t of e.records){let e=t.info?.id;!e||i[e]||(r.push(e),i[e]=t.info,t.parts&&(a[e]=Object.freeze([...t.parts])))}let o=typeof e.turnCount==`number`&&Number.isFinite(e.turnCount)?Math.max(0,Math.floor(e.turnCount)):typeof e.requestedTurnLimit==`number`&&Number.isFinite(e.requestedTurnLimit)?Math.max(0,Math.floor(e.requestedTurnLimit)):+(e.records.length>0);return Gm({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function Jm(e){if(!e||e.pages.length===0)return Xc;let t=e.pages[0],n=e.pages.reduce((e,t)=>e+t.turnCount,0);return t.complete?{kind:`exhausted`,loadedTurns:n}:typeof t.cursor==`string`&&t.cursor.length>0?{kind:`has-more`,cursor:t.cursor,loadedTurns:n}:{kind:`unknown`,loadedTurns:n}}function Ym(e,t){let n={},r={},i=[],a=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder){if(a.has(e))continue;let n=t.messagesByID[e];if(!n)continue;a.add(e),i.push(n);let o=t.partsByMessageID[e];o&&(r[e]=[...o])}n[t]=i;let o=Jm(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function Xm(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function Zm(e,t,n,r,i,a,o){let s=[],c={},l={};for(let e of t){if(!e?.id)continue;s.push(e.id),c[e.id]=e;let t=n[e.id];t&&(l[e.id]=Object.freeze([...t]))}return Gm({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:Xm(t)}})}function Qm(e,t,n,r,i,a){let o=n.messages,s=n.part,c=typeof i.turnCount==`number`&&Number.isFinite(i.turnCount)?Math.max(0,Math.floor(i.turnCount)):typeof i.requestedTurnLimit==`number`&&Number.isFinite(i.requestedTurnLimit)?Math.max(0,Math.floor(i.requestedTurnLimit)):+(i.records.length>0),l=i.complete?null:i.cursor??null,u=i.complete;if(!e||e.pages.length===0||r===`initial`)return Km({pages:[Zm(`tail`,o,s,l,u,c,a)],pageParams:[null]});if(r===`prepend`){let r=new Set;for(let t of e.pages)for(let e of t.messageOrder)r.add(e);let d=o.filter(e=>i.records.some(t=>t.info.id===e.id)||!r.has(e.id)).filter(t=>{if(i.records.some(e=>e.info.id===t.id))return!0;if(!r.has(t.id)){let n=e.pages[0]?.messageOrder[0];return!n||t.id<n}return!1}),f=[],p=new Set;for(let e of i.records){let t=o.find(t=>t.id===e.info.id);!t||p.has(t.id)||(p.add(t.id),f.push(t))}for(let e of d)p.has(e.id)||(p.add(e.id),f.push(e));let m=Zm(`history`,f,s,l,u,c,a),h=new Set(p),g=[m],_=[l];for(let r=0;r<e.pages.length;r+=1){let i=e.pages[r],o=[];for(let e of i.messageOrder){if(h.has(e))continue;let r=n.message[t]?.find(t=>t.id===e)??i.messagesByID[e];r&&o.push(r)}g.push(eh(i,o,s,a)),_.push(e.pageParams[r]??null)}return Km({pages:g,pageParams:_})}let d=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)d.has(n)||d.set(n,t)});let f=e.pages.map(()=>[]),p=[];for(let e of o){let t=d.get(e.id);t===void 0?p.push(e):f[t].push(e)}let m=e.pages.map((t,n)=>{let i=f[n]??[];return n===e.pages.length-1&&p.length>0?eh(t,r===`reconcile-page`?$m(i,p):[...i,...p],s,a):eh(t,i,s,a)});if(m.length>0&&n.boundary){let e=m[0],t=n.boundary.kind===`has-more`?n.boundary.cursor:null,r=n.boundary.kind===`exhausted`;(e.cursor!==t||e.complete!==r)&&(m[0]=Gm({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return Km({pages:m,pageParams:[...e.pageParams]})}function $m(e,t){let n=e.slice();for(let e of t){let t=Qs(e),r=n.length;for(let e=0;e<n.length;e+=1)if(Zs(t,Qs(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function eh(e,t,n,r){let i=[],a={},o={},s=t.length!==e.messageOrder.length,c=!1,l=!1;for(let r=0;r<t.length;r+=1){let u=t[r];if(!u?.id)continue;i.push(u.id),e.messageOrder[r]!==u.id&&(s=!0);let d=e.messagesByID[u.id];d===u?a[u.id]=u:d&&th(d,u)?a[u.id]=d:(a[u.id]=u,c=!0);let f=n[u.id],p=e.partsByMessageID[u.id];f===void 0?p!==void 0&&(l=!0):p&&(p===f||rh(p,f))?o[u.id]=p:Object.isFrozen(f)&&f===p?o[u.id]=f:p&&f===p?o[u.id]=p:(o[u.id]=Object.freeze([...f]),l=!0)}return!s&&!c&&!l&&e.sync.liveRevision===r||!s&&!c&&!l?e:Gm({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:Xm(t)}})}function th(e,t){return e===t||e.id===t.id&&e===t}function nh(e,t){return e===t||!(!e||!t||e.id!==t.id||e.type!==t.type||e.text!==t.text||e.state!==t.state||e.output!==t.output||e.metadata!==t.metadata||e.time!==t.time||e.url!==t.url||e.slim!==t.slim)}function rh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!nh(e[n],t[n]))return!1;return!0}function ih(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function ah(e){let t=e.properties;if(t){if(typeof t.messageID==`string`)return t.messageID;if(typeof t.info?.id==`string`)return t.info.id;if(typeof t.part?.messageID==`string`)return t.part.messageID}}function oh(e,t,n,r){if(!bl(n.type))return{data:e,result:{applied:!1,changed:!1}};let i=Ym(e,t),a=Jm(e),o={message:{...i.message,[t]:[...i.message[t]??[]]},part:{...i.part}};for(let[e,t]of Object.entries(o.part))o.part[e]=t&&[...t];let s=As(o,n);if(!(typeof s==`boolean`?s:s.changed))return{data:e,result:{applied:!0,changed:!1}};let c=o.message[t]??[],l=o.part,u=Qm(e??Wm(),t,{message:o.message,part:l,messages:c,boundary:a},`recovery`,{records:c.map(e=>({info:e,parts:l[e.id]??[]})),complete:a.kind===`exhausted`,cursor:a.kind===`has-more`?a.cursor:void 0,turnCount:0},r);if(e&&e.pages.length>0){let t=new Map,i=new Map;e.pages.forEach((e,n)=>{for(let r of e.messageOrder){t.has(r)||t.set(r,n);let a=e.messagesByID[r];a&&i.set(r,a)}});let a=c.map(e=>{let t=i.get(e.id);return t&&t.id===e.id&&t===e||t&&e.id===t.id&&e===t?t:e}),o=ah(n),s=a.map(e=>{let t=i.get(e.id);return!t||o&&e.id===o?e:t}),u={};for(let t of s){let n=l[t.id];if(!n)continue;let r;for(let n of e.pages)if(n.partsByMessageID[t.id]){r=n.partsByMessageID[t.id];break}r&&(!o||t.id!==o)||r&&rh(r,n)?u[t.id]=r:u[t.id]=n}let d=e.pages.map(()=>[]),f=[];for(let e of s){let n=t.get(e.id);n===void 0?f.push(e):d[n].push(e)}return{data:Km({pages:e.pages.map((t,n)=>eh(t,n===e.pages.length-1?[...d[n]??[],...f]:d[n]??[],u,r)),pageParams:[...e.pageParams]}),result:{applied:!0,changed:!0}}}return{data:u,result:{applied:!0,changed:!0}}}function sh(e,t,n,r,i){let a=e&&e.pages.length>0?e:Km({pages:[Zm(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=Ym(a,t),s=o.message[t]?[...o.message[t]]:[];s.findIndex(e=>e.id===n.id)<0&&s.push(n);let c={...o.part,[n.id]:ih(r)};return{data:Km({pages:a.pages.map((e,t)=>t===a.pages.length-1?eh(e,s.filter(e=>{for(let t=0;t<a.pages.length-1;t+=1)if(a.pages[t]?.messagesByID[e.id])return!1;return!0}),c,i):e.messagesByID[n.id]?eh(e,e.messageOrder.filter(e=>e!==n.id).map(t=>e.messagesByID[t]).filter(Boolean),c,i):e),pageParams:[...a.pageParams]}),result:{applied:!0,changed:!0}}}function ch(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:Km({pages:e.pages.map(e=>{if(!e.messagesByID[t]&&!e.partsByMessageID[t])return e;r=!0;let i=e.messageOrder.filter(e=>e!==t).map(t=>e.messagesByID[t]).filter(Boolean),a={};for(let[n,r]of Object.entries(e.partsByMessageID))n!==t&&(a[n]=[...r]);return eh(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function lh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=Ym(e,t),i=Wc({message:r.message,part:r.part},t,n.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),{skipPartTypes:n.skipPartTypes,merge:n.merge});if(!i.messagesChanged&&!i.partsChanged)return{data:e,result:{applied:!0,changed:!1,boundary:Jm(e)}};let a=e?.pages[e.pages.length-1]?.sync.liveRevision??0,o=i.part;if(!e||e.pages.length===0){let e=i.messages[0]?.id,t=i.messages.filter(e=>e.role===`user`).length,n=Km({pages:[Zm(`tail`,i.messages,o,typeof e==`string`&&e.length>0?e:null,!1,t,a)],pageParams:[null]});return{data:n,result:{applied:!0,changed:!0,boundary:Jm(n)}}}let s=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)s.has(n)||s.set(n,t)});let c=e.pages.map(()=>[]),l=[];for(let e of i.messages){let t=s.get(e.id);t===void 0?l.push(e):c[t].push(e)}let u=Km({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?eh(t,$m(r,l),o,a):eh(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:Jm(u)}}}function uh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=al(Ym(e,t),t,{ok:!0,records:n.page.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:n.page.cursor,complete:n.page.complete,turnCount:n.page.turnCount,requestedTurnLimit:n.page.requestedTurnLimit},{purpose:n.purpose,skipPartTypes:n.skipPartTypes,optimistic:n.optimistic?n.optimistic.map(e=>({message:e.message,parts:[...e.parts]})):void 0,capturedRevision:n.capturedLiveRevision,liveRevision:n.liveRevision});return i.applied?{data:Qm(e,t,{message:i.message,part:i.part,messages:i.messages,boundary:i.boundary},n.purpose,n.page,r),result:{applied:!0,changed:i.changed,boundary:i.boundary,meta:i.meta,confirmedOptimisticIDs:i.confirmedOptimisticIDs}}:{data:e,result:{applied:!1,changed:!1,error:i.error}}}case`sse-event`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return oh(e,t,n.event,r+1)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return sh(e,t,n.message,n.parts,r)}case`optimistic-confirm`:return{data:e,result:{applied:!0,changed:!1}};case`optimistic-remove`:{let t=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return ch(e,n.messageID,t)}case`durable-seed`:return lh(e,t,n);case`reset`:return n.page?uh(void 0,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes}):{data:void 0,result:{applied:!0,changed:!!(e&&e.pages.length>0)}};default:return{data:e,result:{applied:!1,changed:!1}}}}function dh(e){return{records:e.messageOrder.map(t=>({info:e.messagesByID[t],parts:e.partsByMessageID[t]?[...e.partsByMessageID[t]]:[]})),cursor:e.cursor??void 0,complete:e.complete,turnCount:e.turnCount}}function fh(e,t,n,r=`materialize`){return uh(e,n,{type:`http-page`,purpose:r,page:dh(t),liveRevision:t.sync.liveRevision}).data}function ph(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return Km(t);if(t.pages.length===e.pages.length){let r=_h(e,t);if(r===e)return e;if(gh(e,t)||hh(e,t))return r;let i=t.pages[t.pages.length-1];return fh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return uh(e,n,{type:`http-page`,purpose:`prepend`,page:dh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return fh(e,r,n)??Km(t)}return Km(t)}function mh(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function hh(e,t){let n=mh(e),r=mh(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=vh(e,``),a=vh(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function gh(e,t){let n=mh(e);if(n.size===0)return!1;let r=mh(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=vh(t,``);for(let e=1;e<i.messageOrder.length;e+=1){let t=i.messagesByID[i.messageOrder[e-1]],n=i.messagesByID[i.messageOrder[e]];if(!t||!n||Zs(Qs(t),Qs(n))>0)return!1}return!0}function _h(e,t){let n=!1,r=t.pages.map((t,r)=>{let i=e.pages[r];return i&&(i===t||i.kind===t.kind&&i.cursor===t.cursor&&i.complete===t.complete&&i.turnCount===t.turnCount&&i.messageOrder.length===t.messageOrder.length&&i.messageOrder.every((e,n)=>e===t.messageOrder[n])&&i.messageOrder.every(e=>i.messagesByID[e]===t.messagesByID[e])&&i.messageOrder.every(e=>i.partsByMessageID[e]===t.partsByMessageID[e])&&i.sync.liveRevision===t.sync.liveRevision)?i:(n=!0,Gm(t))});return!n&&e.pageParams.length===t.pageParams.length?e:Km({pages:r,pageParams:[...t.pageParams]})}function vh(e,t){let n=[],r={},i={},a=0;for(let t of e?.pages??[]){a=Math.max(a,t.sync.liveRevision);for(let e of t.messageOrder){if(r[e]){r[e]=t.messagesByID[e]??r[e],t.partsByMessageID[e]&&(i[e]=t.partsByMessageID[e]);continue}n.push(e);let a=t.messagesByID[e];a&&(r[e]=a);let o=t.partsByMessageID[e];o&&(i[e]=o)}}let o=[],s=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder)s.has(e)||(s.add(e),o.push(e));return{messageOrder:o,messagesByID:r,partsByMessageID:i,boundary:Jm(e),liveRevision:a}}var yh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},bh=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},xh=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Sh=e=>e.trim(),Ch=e=>e?.trim()||`tail`,wh=new Set([502,503,504]),Th=[`load failed`,`network connection was lost`,`network request failed`,`failed to fetch`,`econnreset`,`econnrefused`,`etimedout`,`socket hang up`,`signal timed out`,`timed out`,`timeout`,`opencode api unavailable`];function Eh(e){if(!e||e instanceof yh||e instanceof bh)return!1;if(e instanceof xh)return e.status>=400&&e.status<500?!1:wh.has(e.status)||e.status>=500&&e.status<600;let t=e?.status;if(typeof t==`number`){if(t>=400&&t<500)return!1;if(wh.has(t)||t>=500&&t<600)return!0}let n=String(e instanceof Error?e.message:e).toLowerCase(),r=n.match(/\((\d{3})\)/);if(r){let e=Number(r[1]);if(e>=400&&e<500)return!1;if(wh.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:Th.some(e=>n.includes(e))}function Dh(e,t){return e>=2?!1:Eh(t)}var Oh=(e,t=i(),n=h())=>[t,n,`sessionMessages`,`page`,Sh(e.directory),e.sessionID,e.limit,Ch(e.before)],kh=(e,t=i(),n=h())=>[t,n,`session-transcript`,Sh(e.directory),e.sessionID];function Ah(e){if(!e||typeof e!=`object`)throw new bh(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new bh(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new bh(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new bh(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new bh(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new bh(`session message page: cursor must be string when set`);return e}var jh=e=>{let t=e.records.map(e=>Object.freeze({info:Object.freeze({...e.info}),parts:e.parts===void 0?void 0:Object.freeze([...e.parts])}));return Object.freeze({records:Object.freeze(t),cursor:e.cursor,complete:e.complete,...typeof e.turnCount==`number`?{turnCount:e.turnCount}:{},...typeof e.requestedTurnLimit==`number`?{requestedTurnLimit:e.requestedTurnLimit}:{}})},Mh=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw new yh},Nh=(e,t,n=i(),r={},a=(r.getGeneration??h)())=>{let o=Sh(e.directory),s=e.sessionID,c=e.limit,l=e.before?.trim()||void 0;return{queryKey:Oh({directory:o,sessionID:s,limit:c,before:l},n,a),queryFn:async({signal:e})=>{Mh(n,a,r);let i=await t({directory:o,sessionID:s,limit:c,before:l,signal:e});return Mh(n,a,r),jh(Ah(i))},staleTime:1/0,gcTime:3e5,retry:Dh,retryDelay:e=>Math.min(500*2**e,4e3)}},Ph=(e,t,n=R,r=i(),a={},o=(a.getGeneration??h)())=>n.fetchQuery(Nh(e,t,r,a,o));function Fh(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function Ih(e){return jh({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function Lh(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function Rh(e){let t=Sh(e.directory),n=e.sessionID,r=e.transport??i(),a=e.probe??{},o=e.generation??(a.getGeneration??h)(),s=e.initialLimit??Lm(),c=e.historyLimit??Rm(),l=e.client??R,u=kh({directory:t,sessionID:n},r,o),d=async t=>Ih(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:u,queryFn:async e=>{Mh(r,o,a);let i=e.pageParam?.trim()||void 0,u=i?c:s,f=i?`prepend`:`initial`,p=await Ph({directory:t,sessionID:n,limit:u,before:i},d,l,r,a,o);Mh(r,o,a);let m=Fh(p);return qm(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:Lh,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:Dh,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>ph(e,t,n)}}function zh(e){let t=e.client??R,n=Rh({...e,client:t}),r=new Ze(t,{...n,structuralSharing:(t,n)=>ph(t,n,e.sessionID)});return{queryKey:n.queryKey,observer:r,ensureInitial:async()=>{let e=(await r.fetchNextPage()).data;if(e&&e.pages.length>0)return Km(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return Km(t)},fetchPreviousPage:async()=>{let e=r.getCurrentResult().data;try{let t=await r.fetchPreviousPage({cancelRefetch:!1}),n=r.getCurrentResult(),i=t.data??n.data??e;if(t.isError||n.isFetchPreviousPageError){let e=t.error??n.error??Error(`transcript previous page fetch failed`);throw i&&i.pages.length>0?Object.assign(e instanceof Error?e:Error(String(e)),{retainedPages:Km(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return Km(i)}catch(t){let n=r.getCurrentResult().data??e;throw n&&n.pages.length>0?Object.assign(t instanceof Error?t:Error(String(t)),{retainedPages:Km(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function Bh(e,t,n,r){let i=e.getQueryData(t),a=uh(i,n,r);return a.result.applied?a.data===void 0?(`removeQueries`in e&&typeof e.removeQueries==`function`?e.removeQueries({queryKey:t,exact:!0}):e.setQueryData(t,void 0),a):(!a.result.changed&&a.data===i||e.setQueryData(t,a.data),a):a}function Vh(e,t=R,n=i(),r=h()){return t.getQueryData(kh(e,n,r))}function Hh(){return v()||km()}function Uh(){return v()?4:km()?12:40}var Wh=1048576,Gh=4*Wh,Kh=12*Wh,qh=40*Wh;function Jh(){return v()?Gh:km()?Kh:qh}var Yh=e=>e.trim();function Xh(e){return{transport:e.transport,generation:e.generation,directory:Yh(e.directory),sessionID:e.sessionID}}function Zh(e){let t=Xh(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function Qh(e){return`${e.transport}\n${e.generation}\n${Yh(e.directory)}`}var $h={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function eg(e,t,n){return[t,n,$h.taskRoot,$h.reconcileTaskKind,Yh(e.directory),e.sessionID,e.checkpoint]}function tg(e,t,n){return[t,n,$h.checkpoint,Yh(e.directory),e.sessionID]}function ng(e){let t=Xh(e);return[{queryKey:kh({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,$h.transportPageRoot,$h.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,$h.taskRoot,$h.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,$h.taskRoot,$h.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:tg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function rg(){let e=new Map;return{retain(t){let n=Xh(t),r=Zh(n),i=e.get(r);i?i.count+=1:e.set(r,{scope:n,count:1});let a=!1;return()=>{if(a)return;a=!0;let t=e.get(r);t&&(--t.count,t.count<=0&&e.delete(r))}},isRetained(t){return(e.get(Zh(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(Zh(t))?.count??0},clear(){e.clear()}}}function ig(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var ag=3e4;function og(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function sg(e){return!Array.isArray(e)||e.length<5||e[2]!==$h.canonical||typeof e[0]!=`string`||typeof e[1]!=`number`||typeof e[3]!=`string`||typeof e[4]!=`string`?null:{transport:e[0],generation:e[1],directory:e[3],sessionID:e[4]}}function cg(e){let t=e.client,n=e.activeRegistry??rg(),r=e.counters??ig(),i=e.getLimit??Uh,a=e.now??Date.now,o=e.minResidencyMs??ag,s=new Map,c=e=>{let t=Zh(Xh(e));s.set(t,a())},l=e=>{let t=Zh(Xh(e)),n=s.get(t);return n!==void 0&&a()-n<o},u=e=>{let r=Xh(e);if(n.isRetained(r))return!0;let i=kh({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},d=e=>{let r=e?.directory===void 0?void 0:Yh(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=sg(a.queryKey);if(!t||e?.transport!==void 0&&t.transport!==e.transport||e?.generation!==void 0&&t.generation!==e.generation||r!==void 0&&t.directory!==r)continue;let o=a.getObserversCount(),s=n.isRetained(t);i.push({scope:t,queryKey:a.queryKey,dataUpdatedAt:a.state.dataUpdatedAt,observerCount:o,retained:s,active:s||o>0,pageCount:og(a.state.data)})}return i},f=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},p=e=>{r.purgeSession+=1,s.delete(Zh(Xh(e)));for(let t of ng(e))f(t)},m=(e,t)=>{r.purgeGeneration+=1;let n=[[e,t,$h.canonical],[e,t,$h.transportPageRoot,$h.transportPageKind],[e,t,$h.taskRoot],[e,t,$h.checkpoint]];for(let e of n)f({queryKey:e})},h=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>Zh(Xh(e)))),o=d({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=Qh(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let u=[];for(let e of c.values()){for(let t of e){let e=Zh(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(Zh(e.scope))||l(e.scope)));i.sort((e,t)=>e.dataUpdatedAt===t.dataUpdatedAt?e.scope.sessionID<t.scope.sessionID?-1:+(e.scope.sessionID>t.scope.sessionID):e.dataUpdatedAt-t.dataUpdatedAt);let o=e.length-i.length,c=e.length,d=0;for(;c>t&&d<i.length&&!(c-1<o);){let e=i[d];d+=1,p(e.scope),u.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:u}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:u,listCanonical:d,purgeSession:p,purgeGeneration:m,enforce:h,destructiveReset:async(e,t)=>{r.destructiveReset+=1,p(e);try{let n=await t();return h({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw p(e),t}},noteScopeObserved:c}}var lg=3e4,ug=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function dg(e,t=lg){let n;try{return await Promise.race([e,new Promise((e,r)=>{n=setTimeout(()=>{r(Error(`session turn page: timed out after ${t}ms`))},t)})])}finally{n!==void 0&&clearTimeout(n)}}var fg=e=>e?e.toLowerCase().includes(`application/json`):!1,pg=e=>e?e.toLowerCase().includes(`text/html`):!1;function mg(e,t){if(!e||typeof e!=`object`)throw Error(`session turn page: expected JSON object`);let n=e;if(n.partial===!0)throw Error(`session turn page: partial responses are not accepted`);if(!Array.isArray(n.records))throw Error(`session turn page: records must be an array`);if(!(`complete`in n)||typeof n.complete!=`boolean`)throw Error(`session turn page: complete must be a boolean`);if(typeof n.turnCount!=`number`||!Number.isFinite(n.turnCount))throw Error(`session turn page: turnCount must be a number`);if(!Number.isInteger(n.turnCount)||n.turnCount<0||n.turnCount>t)throw Error(`session turn page: turnCount must be an integer in 0..${t}`);if(n.cursor!=null&&typeof n.cursor!=`string`)throw Error(`session turn page: cursor must be string or null`);if(typeof n.cursor==`string`&&n.cursor.length===0)throw Error(`session turn page: cursor must not be empty string`);if(n.complete===!0&&n.cursor!=null)throw Error(`session turn page: complete=true requires cursor=null`);if(n.complete===!1&&(n.cursor==null||typeof n.cursor!=`string`))throw Error(`session turn page: complete=false requires non-empty cursor`);let r=[];for(let e=0;e<n.records.length;e++){let t=n.records[e];if(!t||typeof t!=`object`)throw Error(`session turn page: records[${e}] must be an object`);let i=t,a=i.info;if(!a||typeof a!=`object`)throw Error(`session turn page: records[${e}].info must be an object`);let o=a.id;if(typeof o!=`string`||o.length===0)throw Error(`session turn page: records[${e}].info.id must be a non-empty string`);if(`parts`in i&&i.parts!==void 0&&!Array.isArray(i.parts))throw Error(`session turn page: records[${e}].parts must be an array when present`);r.push({info:a,...i.parts===void 0?{}:{parts:i.parts}})}return{records:r,cursor:n.cursor==null?null:n.cursor,complete:n.complete,turnCount:n.turnCount}}async function hg(e){let t=e.turns??Rm(),n=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages`,r={directory:e.directory,turns:String(t)};e.before&&(r.before=e.before),typeof e.scanLimit==`number`&&Number.isFinite(e.scanLimit)&&(r.scanLimit=String(Math.floor(e.scanLimit)));let i=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:lg;return dg((async()=>{let a=await I(n,{method:`GET`,query:r,signal:ug(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(pg(o))throw Error(`session turn page: unexpected HTML response`);fg(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return mg(s,t)})(),i)}async function gg(e){let t=e.purpose===`prepend`&&e.before?Rm():Lm();return hg({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var _g=3e4,vg=2,yg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),bg=e=>e?e.toLowerCase().includes(`text/html`):!1,xg=e=>new Promise(t=>{setTimeout(t,e)});function Sg(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new bh(`session transcript reconcile: ${t} must be string or null`);return e}function Cg(e){if(!e||typeof e!=`object`)throw new bh(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new bh(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new bh(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new bh(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new bh(`session transcript reconcile: resetRequired must be a boolean`);if(typeof t.scannedRecords!=`number`||!Number.isFinite(t.scannedRecords)||!Number.isInteger(t.scannedRecords)||t.scannedRecords<0)throw new bh(`session transcript reconcile: scannedRecords must be a non-negative integer`);if(typeof t.responseBytes!=`number`||!Number.isFinite(t.responseBytes)||!Number.isInteger(t.responseBytes)||t.responseBytes<0)throw new bh(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=Sg(t.capturedHeadMessageID,`capturedHeadMessageID`),r=Sg(t.latestHeadMessageID,`latestHeadMessageID`),i=Sg(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new bh(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new bh(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new bh(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new bh(`session transcript reconcile: resetRequired=true requires continuation=null`)}let a=[];for(let e=0;e<t.records.length;e+=1){let n=t.records[e];if(!n||typeof n!=`object`)throw new bh(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new bh(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new bh(`session transcript reconcile: records[${e}].info.id must be a non-empty string`);if(`parts`in r&&r.parts!==void 0&&!Array.isArray(r.parts))throw new bh(`session transcript reconcile: records[${e}].parts must be an array when present`);a.push({info:i,...r.parts===void 0?{}:{parts:r.parts}})}return{records:Object.freeze(a),anchorFound:t.anchorFound,capturedHeadMessageID:n,latestHeadMessageID:r,continuation:i,complete:t.complete,resetRequired:t.resetRequired,scannedRecords:t.scannedRecords,responseBytes:t.responseBytes}}function wg(e){let t=typeof e.anchor==`string`&&e.anchor.length>0?e.anchor:void 0,n=typeof e.continuation==`string`&&e.continuation.length>0?e.continuation:void 0;if(!!t==!!n)throw new bh(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function Tg(e,t,n){let r=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages/reconcile`,i={directory:e.directory};return t.anchor&&(i.anchor=t.anchor),t.continuation&&(i.continuation=t.continuation),dg((async()=>{let t;try{t=await I(r,{method:`GET`,query:i,signal:yg(e.signal,n)})}catch(e){throw e instanceof yh||e instanceof bh||e instanceof xh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new xh(t.status,`session transcript reconcile failed (${t.status})`);if(bg(t.headers.get(`content-type`)))throw new bh(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new bh(`session transcript reconcile: malformed JSON`)}return Cg(a)})(),n)}async function Eg(e){let t=wg(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:_g,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):vg,i=e.sleep??xg,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await Tg(e,t,n)}catch(t){if(t instanceof yh||t instanceof bh||t instanceof xh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!Eh(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var Dg=`GitHub issue context (JSON)`,Og=`GitHub pull request context (JSON)`,kg=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,Ag=(e,t)=>{let n=e.trimStart();if(!n.startsWith(t))return null;let r=n.indexOf(`{`);if(r<0)return null;try{return JSON.parse(n.slice(r))}catch{return null}},jg=e=>{let t=Ag(e,Dg);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!kg(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=Ag(e,Og);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!kg(t)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.pull-request-link`,filename:`PR #${t}: ${r}`,url:i}}return null},Mg=(e,t)=>{let n=e.trim();return!!(t&&n.startsWith(`User has requested to enter plan mode`)||t&&n.startsWith(`The plan at `)||n.startsWith(`The following tool was executed by the user`))},Ng=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),Pg=e=>e.trim()===`/compact`,Fg=(e,t)=>{let n=t?.planModeEnabled===!0;return e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(Ng(t)||Pg(t)))return!1}if(e.synthetic!==!0)return!0;if(e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let r=t.trimStart();return Mg(t,n)||r.startsWith(Dg)||r.startsWith(Og)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=jg(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},Ig=e=>e?.length?Fg(e).length>0:!1,Lg=`oc_asst_session_divider:`,Rg=[],zg=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),Bg=(e,t=0)=>({info:{id:`${Lg}${e}`,role:`system`,time:{created:t}},parts:[]}),Vg=e=>e.slice().reverse().flatMap(e=>e.entries),Hg=(e,t,n=Rg)=>{if(!e.length)return Rg;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(Bg(n.sessionID,Number(n.info.time?.created??0))),r.push({info:n.info,parts:n.parts,sourceSessionID:n.sessionID,sourceDirectory:n.directory}),i=!0,a=n.sessionID);return r.length===0?Rg:qg(n,r)?n:r},Ug=(e,t)=>{if(t.length===0)return e;if(e.length===0)return t;let n=new Map;for(let e of t)e?.id&&n.set(e.id,e);for(let t of e)t?.id&&n.set(t.id,t);let r=new Set,i=[];for(let e of t){if(!e?.id||r.has(e.id))continue;let t=n.get(e.id);t&&(i.push(t),r.add(e.id))}for(let t of e)!t?.id||r.has(t.id)||(i.push(t),r.add(t.id));return i.length===e.length&&i.every((t,n)=>t===e[n])?e:i},Wg=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=Ug(e.parts,t.parts);return n===e.parts&&e.info===t.info?e:n===t.parts&&e.info===t.info&&e.parts===t.parts?t:{...e,parts:n,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}}return Ig(e.parts)?e:Ig(t.parts)?e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}:e.parts.length>0||t.parts.length===0?e:e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}},Gg=(e,t,n,r=Rg)=>{if(!t)return n.length>0?Array.from(n):Rg;let i=new Map,a=0;for(let n of e)n.sessionID===t&&i.set(n.info.id,{message:{info:n.info,parts:n.parts},order:a++});for(let e of n){let t=i.get(e.info.id);i.set(e.info.id,{message:Wg(e,t?.message),order:t?.order??a++})}if(i.size===0)return Rg;let o=[...i.values()].sort((e,t)=>Number(e.message.info.time?.created??0)-Number(t.message.info.time?.created??0)||e.order-t.order).map(({message:e})=>e);return qg(r,o)?r:o},Kg=(e,t)=>{if(!zg(e)||!zg(t))return!1;let n=Number(e.info.time?.created??0),r=Number(t.info.time?.created??0);return e.info.id===t.info.id&&n===r},qg=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||!(r===i||Kg(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},Jg=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),Yg=e=>e.startsWith(Lg);function Xg(e,t){if(!e?.id||Yg(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(Jg(t,`subtask`)||Jg(t,`compaction`)||t.every(e=>zp(e))):!1}function Zg(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.messagesByID[n],i=e.partsByMessageID[n];if(Xg(r,i))return n}return null}function Qg(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function $g(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:Zg(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:Qg(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function e_(e,t){return{...e,...t}}function t_(e,t){let n=tg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),r=e.getQueryData(n);if(!r||typeof r!=`object`)return;let i=r;if(i.sessionID===t.sessionID&&i.transport===t.transport&&i.generation===t.generation)return i}function n_(e,t){let n=tg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function r_(e,t){let n=tg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function i_(e){return e.slim===!0}var a_=/bearer|token|authorization|password|secret|cookie/i;function o_(e){return typeof e==`string`&&e.includes(`-`)}var s_=`openchamber.client-diagnostics.enabled`;function c_(e){return e===`true`||e!==`false`&&null}function l_(e){return e.preference===!0||e.preference!==!1&&o_(e.version)}function u_(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function d_(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function f_(e){if(e&&typeof e==`object`&&`status`in e){let t=e.status;if(typeof t==`number`&&Number.isFinite(t)&&t>=100&&t<=599)return t}let t=(e instanceof Error?e.message:typeof e==`string`?e:``).match(/\((\d{3})\)/);if(!t)return;let n=Number(t[1]);return n>=100&&n<=599?n:void 0}function p_(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return a_.test(t)?`redacted-error`:t}function m_(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)i_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function h_(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function g_(e){let t=0;for(let n of e.messageOrder)O_(e.messagesByID[n])===!0&&(t+=1);return t}function __(e){let t=e.transcript?m_(e.transcript.partsByMessageID):void 0;return{at:(e.now??Date.now)(),feat:`transcript`,kind:e.kind,sessionID:e.sessionID,...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.source?{source:e.source}:{},...e.durationMs===void 0?{}:{durationMs:e.durationMs},...e.request?{requestStatus:e.request.status}:{},...e.hydration?{hydrationPhase:e.hydration.phase,p0Satisfied:e.hydration.p0Satisfied}:{},...e.transcript?{messageCount:e.transcript.messageOrder.length,lastMessageIDs:h_(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:g_(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...p_(e.error??e.request?.error)?{error:p_(e.error??e.request?.error)}:{},...f_(e.error)===void 0?{}:{httpStatus:f_(e.error)}}}function v_(e={}){let t=e.limit??500,n=[];return{append(e){n.push(e),n.length>t&&n.splice(0,n.length-t)},async read(){return n.slice()},async clear(){n.length=0}}}function y_(e){return{isEnabled:e.isEnabled,record(t){e.isEnabled()&&Promise.resolve(e.sink.append(t)).catch(()=>void 0)},async exportReport(){let t=await e.sink.read(),n=[...new Set(t.map(e=>e.feat))];return JSON.stringify({schema:`openchamber.client-diagnostics.v1`,exportedAt:Date.now(),eventCount:t.length,feats:n,events:t},null,2)},clear:()=>e.sink.clear()}}function b_(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return e.event.type===`message.part.delta`?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function x_(e){if(e.type===`http-page`)return e.purpose}function S_(e){if(e.type===`sse-event`)return e.event.type}function C_(e){switch(e.type){case`http-page`:return`network`;case`sse-event`:return`sse`;case`materialize-snapshots`:return`durable-cache`;default:return}}function w_(e){return e.__openchamberOptimistic===!0}function T_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function E_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var D_=e=>typeof e==`string`&&e.trim().length>0;function O_(e){if(!e||T_(e)!==`assistant`)return;let t=e,n=!D_(t.mode)&&!D_(t.agent),r=!D_(t.modelID)||!D_(t.providerID);return n||r}function k_(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function A_(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)i_(e)?r+=1:i+=1,w_(e)&&(a=!0);let o=e.messagesByID[t],s=T_(o),c=O_(o);return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:E_(o),...s?{role:s}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function j_(e,t){let n=new Map(e.messages.map(e=>[e.id,e])),r=new Map(t.messages.map(e=>[e.id,e])),i=new Set(e.messageIDs),a=new Set(t.messageIDs),o=t.messageIDs.filter(e=>!i.has(e)),s=e.messageIDs.filter(e=>!a.has(e)),c=[],l=[],u=[],d=[];for(let t of e.messageIDs){let e=n.get(t);if(!e)continue;let i=r.get(t);if(!i){e.optimistic&&u.push(t);continue}(e.partCount!==i.partCount||e.slimCount!==i.slimCount||e.fullCount!==i.fullCount||e.optimistic!==i.optimistic)&&c.push({id:t,before:k_(e),after:k_(i)}),e.fullCount>0&&i.fullCount===0&&i.slimCount>0&&l.push(t),e.optimistic&&!i.optimistic&&!i.completed&&u.push(t),e.identityMissing!==!0&&i.identityMissing===!0&&d.push(t)}return{addedMessageIDs:o,removedMessageIDs:s,partsChanged:c,downgraded:l,optimisticLost:u,identityLost:d}}function M_(e){return{at:(e.now??Date.now)(),feat:`transcript`,kind:`transcript-diff`,sessionID:e.sessionID,trigger:e.trigger,before:e.before,after:e.after,diff:j_(e.before,e.after),...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.purpose?{purpose:e.purpose}:{}}}var N_=`openchamber-transcript-diagnostics`,P_=`events`,F_=1,I_=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),L_=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,F_);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(P_)||e.createObjectStore(P_,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),R_=(e=N_)=>({async append(t,n){let r=await L_(e);try{let e=r.transaction(P_,`readwrite`).objectStore(P_);await I_(e.add(t));let i=await I_(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await I_(e.delete(t))}finally{r.close()}},async read(){let t=await L_(e);try{return await I_(t.transaction(P_,`readonly`).objectStore(P_).getAll())}finally{t.close()}},async clear(){let t=await L_(e);try{await I_(t.transaction(P_,`readwrite`).objectStore(P_).clear())}finally{t.close()}}});function z_(e={}){let t=e.driver??R_(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var B_=qe(`OpenChamberMedia`);function V_(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function H_(){return ct()&&Je!==void 0&&Je.isPluginAvailable(`OpenChamberMedia`)}function U_(){return`1.17.1-beta.8`}function W_(){if(typeof localStorage>`u`)return null;try{return c_(localStorage.getItem(s_))}catch{return null}}function G_(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(s_,e?`true`:`false`)}catch{}}function K_(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var q_;function J_(e=U_()){return l_({version:e,preference:W_()})}function Y_(e={}){return y_({sink:K_()===`indexeddb`?(e.createIndexedDBSink??z_)():(e.createMemorySink??v_)(),isEnabled:e.isEnabled??J_})}function X_(){return q_??=Y_(),q_}function Z_(e){X_().record(e)}function Q_(e){try{return J_()?A_(e()):void 0}catch{return}}function $_(e){try{Z_(M_(e))}catch{}}function ev(e){let t=b_(e.command);t&&Z_(__({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:e.transcript,request:e.request,hydration:e.hydration,command:e.command.type,purpose:x_(e.command),sseType:S_(e.command),source:C_(e.command),error:e.error}))}async function tv(){let e=await X_().exportReport(),t=we()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function nv(e,t=u_()){if(H_())return(await B_.saveFile({dataBase64:V_(e),mimeType:`application/json`,filename:t}))?.cancelled?`cancelled`:`saved`;if(typeof document>`u`)return`failed`;let n=new Blob([e],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);return i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),`downloaded`}async function rv(){let e=await tv(),t=u_();return{content:e,fileName:t,outcome:await nv(e,t),eventCount:d_(e)}}function iv(e){let t=e.directory.trim(),n=new Set,r=[],i=e=>{!e||n.has(e)||(n.add(e),r.push({directory:t,sessionID:e}))};for(let n of e.viewedSessions??[])n.directory.trim()===t&&i(n.sessionID);e.viewed?.directory.trim()===t&&i(e.viewed.sessionID);for(let t of e.busyOrRetrySessionIDs??[])i(t);for(let n of e.activeScopes)n.directory.trim()===t&&i(n.sessionID);return r}var av=2,ov=6e4;function sv(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??i)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??h)()}}function cv(e,t){let n=(t.probe?.getTransport??i)(),r=(t.probe?.getGeneration??h)();if(n!==e.transport||r!==e.generation)throw new yh}function lv(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function uv(e,t){return Xh({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function dv(e,t){return`${e.trim()}\n${t}`}function fv(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??cg({client:t,activeRegistry:rg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??av)),o=e.fetchReconcile??Eg,s=e.now??Date.now,c=!1,l=0,u=new Map,d=new Map,f=new Map,p=new Map,m=new Set,g=new Map,_=new Set,v=(e,t)=>{m.add(dv(e,t))},y=(e,t)=>{m.delete(dv(e,t))},b=e=>{let t=d.get(e);t&&(t.abort(),d.delete(e)),u.delete(e)},x=e=>{l+=1;for(let e of[...d.keys()])b(e);f.clear(),p.clear()},S=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(dv(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of r.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&i.set(dv(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(i.values())},C=(t,n)=>{let i=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of r.listCanonical({transport:t.transport,generation:t.generation}))i.add(e.scope.directory);for(let e of r.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&i.add(e.directory);for(let e of n)e.directory&&i.add(e.directory.trim());return i},w=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=dv(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},T=i=>{if(c)return;let a={transport:i.transport??sv(e).transport,generation:i.generation??sv(e).generation},o=s(),l=w(),u=C(a,l),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(dv(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of r.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(dv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of l)f.set(dv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(dv(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=lv(e,a),s=n.getTranscript(r),c=$g({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:i.lastEventID,capturedAt:o});n_(t,c)}let p=new Set;for(let t of u){let n=iv({directory:t,activeScopes:S(a,t),viewedSessions:l,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(dv(e.directory,e.sessionID))}for(let e of d){let t=dv(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=Q_(()=>n.getTranscript(e)),a=n.getTranscript(e).liveRevision,o=n.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:t.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:r,liveRevision:a});try{let t=Q_(()=>n.getTranscript(e));i&&t&&$_({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},D=async(r,i,a)=>{if(cv({transport:i.transport,generation:i.generation},e),a!==l)throw new yh;n_(t,e_(t_(t,i)??$g({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let o=Q_(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),cv({transport:i.transport,generation:i.generation},e),a!==l)throw new yh;r_(t,i),y(i.directory,i.sessionID);try{let e=Q_(()=>n.getTranscript(r));o&&e&&$_({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw n_(t,e_(t_(t,i)??$g({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},O=async(r,i,a)=>{if(cv({transport:i.transport,generation:i.generation},e),a!==l)throw new yh;n_(t,e_(t_(t,i)??$g({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Q_(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),cv({transport:i.transport,generation:i.generation},e),a!==l)throw new yh;r_(t,i),y(i.directory,i.sessionID);try{let e=Q_(()=>n.getTranscript(r));o&&e&&$_({trigger:`reconnect-compensation-ensure-tail`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw n_(t,e_(t_(t,i)??$g({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},k=async(r,i,a,c)=>{let u=lv(r,i),d=uv(r,i),f=eg({directory:d.directory,sessionID:d.sessionID,checkpoint:String(t_(t,d)?.capturedAt??s())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:s()});try{if(cv(i,e),a!==l||c.aborted)throw new yh;let p=t_(t,d);if(p||(p=$g({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(u),lastEventID:null,capturedAt:s()}),n_(t,p)),!p.anchorMessageID){await O(u,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:s()});return}p=e_(p,{state:`reconciling`}),n_(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,cv(i,e),a!==l||c.aborted)throw new yh;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,cv(i,e),a!==l||c.aborted)throw new yh;let h=n.getTranscript(u).liveRevision;if(!g&&!m){await O(u,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:s()});return}let y=await o({sessionID:r.sessionID,directory:r.directory.trim(),...g?{continuation:g}:{anchor:m},signal:c});if(cv(i,e),a!==l||c.aborted)throw new yh;if(y.resetRequired){await D(u,d,a),t.setQueryData(f,{status:`reset`,finishedAt:s()});return}if(b===1&&(_=y.capturedHeadMessageID),v=y.latestHeadMessageID??v,y.records.length>0&&E(u,y,h),p=e_(t_(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),n_(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=e_(t_(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),n_(t,p);continue}p=e_(t_(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),n_(t,p),y(r.directory,r.sessionID),t.setQueryData(f,{status:`complete`,finishedAt:s()});return}await D(u,d,a),t.setQueryData(f,{status:`reset`,finishedAt:s()})}catch(n){if(n instanceof yh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(f,{status:`cancelled`,finishedAt:s()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(f,{status:`error`,finishedAt:s(),code:n instanceof Error?n.name:`error`}),n}},A=t=>{let n=t.trim(),r=p.get(n)??0;if(r>=a)return;let i=f.get(n);if(!i||i.length===0)return;let o=i.shift();p.set(n,r+1);let s=dv(o.directory,o.sessionID);if(u.has(s)){p.set(n,(p.get(n)??1)-1),A(n);return}let c=sv(e),m=l,h=new AbortController;d.set(s,h);let g=(async()=>{try{await k(o,c,m,h.signal)}catch{}finally{d.delete(s),u.delete(s),p.set(n,Math.max(0,(p.get(n)??1)-1)),A(n)}})();u.set(s,g)},j=e=>{let t=e.directory.trim(),n=dv(t,e.sessionID);if(u.has(n))return;let r=f.get(t);r||(r=[],f.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),A(t))},ee=t=>{let n=w(),i=C(t,n);for(let a of i){let i=iv({directory:a,activeScopes:S(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)j(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=dv(e.scope.directory,e.scope.sessionID);i.some(e=>dv(e.directory,e.sessionID)===t)||v(e.scope.directory,e.scope.sessionID)}}},te=t=>{if(c||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??i)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??h)(),a=(e.probe?.getTransport??i)();if(r!==n.generation||a!==n.transport){x(`generation_mismatch`);return}ee(n)},M=t=>{if(c)return;let r=t.directory.trim(),i=sv(e,t),a=lv({directory:r,sessionID:t.sessionID},i),l=Zh(uv({directory:r,sessionID:t.sessionID},i)),d=g.get(l);if(d&&s()-d.checkedAt<ov||_.has(l)||u.has(dv(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(_.add(l),(async()=>{try{if(cv(i,e),c)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(cv(i,e),c||(g.set(l,{checkedAt:s()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;E(a,u,d)}catch{}finally{_.delete(l)}})())};return{captureCheckpoints:T,onCompensation:te,ensureOnObserve:async r=>{if(c)return null;let i=r.directory.trim(),a=dv(i,r.sessionID);if(!m.has(a))return M(r),null;y(i,r.sessionID);let o=sv(e,r),s=lv({directory:i,sessionID:r.sessionID},o),l=uv({directory:i,sessionID:r.sessionID},o),d=t_(t,l);if(d&&d.state!==`complete`&&d.anchorMessageID){j({directory:i,sessionID:r.sessionID});let e=u.get(a);return e&&await e,n.getTranscript(s)}try{cv(o,e);let r=await n.ensureInitial(s);return r_(t,l),r}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:x,getCheckpoint:n=>{let r=sv(e,n);return t_(t,uv({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>u.has(dv(e,t)),destroy:()=>{c=!0,x(`destroy`)}}}function pv(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function mv(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts??[]})),cursor:typeof e.cursor==`string`?e.cursor:void 0,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function hv(e){if(e.type===`message.part.delta`)return{action:`skip`};let t=e.properties;if(e.type===`message.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`remove`,messageID:e}:{action:`skip`}}if(e.type===`message.updated`){let e=t?.info;return typeof e?.id==`string`&&e.id.length>0?{action:`persist`,messageID:e.id}:{action:`skip`}}if(e.type===`message.part.updated`){let e=t?.part;return typeof e?.messageID==`string`&&e.messageID.length>0?{action:`persist`,messageID:e.messageID}:{action:`skip`}}if(e.type===`message.part.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`persist`,messageID:e}:{action:`skip`}}return{action:`skip`}}function gv(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(Js(e))??Promise.resolve(),r.get(Xs(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=Js(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=Xs(e),i=(r.get(n)??Promise.resolve()).then(t,t);return r.set(n,i.then(()=>void 0,()=>void 0)),i};return{wait:i,persistSettled:(n,r,i)=>a(n,async()=>{if((await e.upsertSettled(n,r,i)).status!==`written`)return;let a=(t.getByteBudget??Jh)();await e.evictToBytes(a,{protect:t.getProtectScopes?.()??[]})}),removeMessage:(t,n)=>a(t,()=>e.removeMessage(t,n)),clearSession:t=>a(t,()=>e.clearSession(t)),clearGeneration:t=>o(t,()=>e.clearGeneration(t))}}var _v=new Map;function vv(e,t){let n=_v.get(e);if(n)return n;let r=t().finally(()=>{_v.get(e)===r&&_v.delete(e)});return _v.set(e,r),r}var yv=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function bv(e){return vv(yv(e),e.request)}function xv(e,t){return`${e}\n${t}`}var Sv=new Map;function Cv(e){return Sv.get(e)}async function wv(e){return bv({runtimeKey:xv(e.transport,e.generation),directory:e.directory,sessionID:e.sessionID,messageID:e.messageID,request:async()=>{let t=await e.request();if(t.error)throw Error(`session.message failed`);let n=t.data,r=n?.info,i=n?.parts??t.parts??[];if(!r?.id)throw Error(`session.message failed: empty response`);return Sv.set(r.id,i),{info:Zf(r),parts:i}}})}function Tv(e,t){let n=e.info;return n.role===t||n.clientRole===t}function Ev(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Tv(i,`assistant`))continue;let e=i.info.parentID;if(!(!e||t.has(e)||r.has(e))&&(r.add(e),n.push(e),n.length===8))break}return n}async function Dv(e){if(e.complete){let t=e.records.some(e=>Tv(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=Ev(e.records);if(t.length===0){let t=e.records.some(e=>Tv(e,`user`));return{records:e.records,boundaryFound:t,partial:!t}}let n=await Promise.all(t.map(async t=>{try{return await e.requestMessage(t)}catch{return null}})),r=new Map;for(let t of e.records)r.set(t.info.id,t);for(let e of n)e?.info?.id&&r.set(e.info.id,e);let i=[...r.values()].sort((e,t)=>e.info.id.localeCompare(t.info.id)),a=i.some(e=>Tv(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Ov(e){return e.trim()}function kv(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??i)(),r=e.generation??t.generation??(t.probe?.getGeneration??h)();return{directory:Ov(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function Av(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:Xc,liveRevision:0}}function jv(e,t){if(!e||e.pages.length===0)return Av(t);let n=vh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function Mv(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function Nv(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function Pv(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=Mv(e.info);t!==void 0&&(n===void 0||t<n)&&(n=t)}if(n===void 0)return[];let r=new Set(t.records.map(e=>e.info.id)),i=[];for(let t of e.messageOrder){if(r.has(t))continue;let a=Mv(e.messagesByID[t]);a===void 0||a<=n||Nv(e.partsByMessageID[t])||i.push(t)}return i}function Fv(e={}){let t=e.client??R,n=e.cacheBudget??cg({client:t,activeRegistry:e.activeRegistry??rg()}),r=n.activeRegistry,a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=e.durableStore?gv(e.durableStore,{getProtectScopes:()=>r.listRetained().map(pv),getByteBudget:e.getDurableByteBudget}):void 0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=jv(w(e),t.sessionID);!hl(r)&&!v.has(n)||(y.add(n),Z_(__({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=l.get(e);return t||(t={messages:new Map,parts:new Map},l.set(e,t)),t},w=n=>{let r=kv(n,e);return Vh({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=kv(t,e);return kh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=kv(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let r=e.probe??{getTransport:i,getGeneration:h},o=kv(n,{...e,transport:void 0,generation:void 0,probe:r}),s=K(o),c=a.get(s);if(c)return c;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=zh({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(s,l),l},k=t=>{let n=K(kv(t,e));l.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(kv(n,e));if(s.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});s.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=s.get(e);n&&(n(),s.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of p.keys())t.startsWith(e)&&p.delete(t);for(let t of m.keys())t.startsWith(e)&&m.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of p)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of m.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=kv({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{u&&u.persistSettled(pv(e),t,n??[])},le=(e,t,n,r)=>{if(!u||S>0||!r.applied||!r.changed)return;let i=pv(t);if(n.type===`remove-message`){u.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(u.clearSession(i),n.page){let r=jv(w(e),t.sessionID);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;ce(t,n,r.partsByMessageID[e.info.id]??e.parts)}}return}if(n.type!==`optimistic-add`&&n.type!==`optimistic-confirm`&&n.type!==`optimistic-remove`){if(n.type===`sse-event`){let r=hv(n.event);if(r.action===`remove`){u.removeMessage(i,r.messageID);return}if(r.action===`skip`)return;let a=jv(w(e),t.sessionID),o=a.messagesByID[r.messageID];if(!o)return;ce(t,o,a.partsByMessageID[r.messageID]);return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=jv(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:i,getGeneration:h},s={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??Lm()};return mv(r?.fresh?await t.fetchQuery({...Nh(s,a,n.transport,o,n.generation),staleTime:0}):await Ph(s,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)Zl(`${e.directory}\n${e.sessionID}\n${n}`,()=>F.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now();d.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return d.delete(r),F.getTranscript(e);F.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Tm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let a=g.get(r);if(a&&a.size>0){let n=[],r=0;for(let o of i.records){let i=o.info.id;if(!(!i||!a.has(i))){if(!ll(F.getParts(e,i),F.getMessage(e,i)??o.info)){ne(t,i),p.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return d.delete(r),n.noteScopeObserved(E(e)),D(e),F.getTranscript(e)}catch(n){if(n instanceof yh||!se(t))return d.delete(r),F.getTranscript(e);throw d.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Z_(__({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:jv(w(e),t.sessionID),request:F.getRequestState?.(e),hydration:F.getHydrationState?.(e),error:n})),n}finally{f.delete(r)}})();return f.set(r,a),a},P=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=F.getTranscript(e).liveRevision;d.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return d.delete(r),F.getTranscript(e);let o=F.getTranscript(e).liveRevision;return o<a||Ul(t.sessionID,t.directory)?(d.delete(r),F.getTranscript(e)):(F.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Tm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),d.delete(r),n.noteScopeObserved(E(e)),D(e),F.getTranscript(e))}catch(n){return d.delete(r),n instanceof yh||!se(t)||Z_(__({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`reconcile-page`,durationMs:Date.now()-i,transcript:jv(w(e),t.sessionID),request:F.getRequestState?.(e),hydration:F.getHydrationState?.(e),error:n})),F.getTranscript(e)}finally{f.delete(r)}})();return f.set(r,a),a},fe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(kv(t,e)))?!0:Jm(n).kind===`unknown`},F={getTranscript(t){let n=kv(t,e),r=K(n),i=jv(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=kv(t,e),r=K(n),i=F.getTranscript(t);return te(r,_l(n.sessionID,i.boundary))},getRequestState(t){let n=kv(t,e),r=d.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=kv(t,e),r=K(n),i=F.getTranscript(t);hl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:gl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:fl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(kv(t,e)),i=C(r),a=F.getTranscript(t).messagesByID[n];return i.messages.has(n)&&i.messages.get(n)===a?i.messages.get(n):(i.messages.set(n,a),a)},getParts(t,n){let r=K(kv(t,e)),i=C(r),a=F.getTranscript(t).partsByMessageID[n]??Iv,o=i.parts.get(n);return o===a||o&&a&&o.length===a.length&&o.every((e,t)=>e===a[t])?o??a:(i.parts.set(n,a),a)},getMessageMaterializationState(t,n){let r=kv(t,e),i=p.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!F.getMessage(t,n)||g.get(K(r))?.has(n)||cl(F.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=kv(t,e),i=M(r,n),a=Q_(()=>F.getTranscript(t)),o=e=>{try{let t=Q_(e);if(!a||!t)return;$_({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=m.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!F.getMessage(t,n))return p.set(i,{status:`idle`}),F.getTranscript(t);if(!cl(F.getParts(t,n))&&!g.get(K(r))?.has(n))return p.set(i,{status:`ready`}),F.getTranscript(t);p.set(i,{status:`loading`}),k(t);try{let a=await wv({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return V.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return se(r)?(F.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),cl(F.getParts(t,n))?p.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):p.set(i,{status:`ready`}),k(t),F.getTranscript(t)):(p.delete(i),F.getTranscript(t))}catch(e){if(!se(r))return p.delete(i),F.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return p.set(i,{status:`error`,error:n}),k(t),F.getTranscript(t)}}finally{ne(r,n)}})();return m.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{m.get(i)===c&&m.delete(i)}),c},apply(r,i){let a=kv(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=Bh(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&_.delete(K(a)),e.result.changed&&(k(r),D(r)),e.result}case`sse-event`:{let e=Bh(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=Bh(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&k(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),Bh(t,o,a.sessionID,{type:`optimistic-confirm`,messageID:i.messageID}).result;case`optimistic-remove`:{e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID});let n=Bh(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&k(r),n.result}case`reset`:{if(b.delete(K(a)),g.delete(K(a)),_.delete(K(a)),n.purgeSession(E(r)),!i.page)return k(r),{applied:!0,changed:!0};let e=Bh(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(k(r),D(r)),e.result}case`materialize-snapshots`:return Lv(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=Bh(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&k(r),e.result}default:return{applied:!1,changed:!1}}})();return le(r,a,i,s),s.applied&&(ev({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:jv(w(r),a.sessionID),request:F.getRequestState?.(r),hydration:F.getHydrationState?.(r),error:s.error}),x(r,a)),s},subscribe(t,i){let a=K(kv(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);c.set(a,r.retain(e)),n.noteScopeObserved(e)}return s.add(i),A(t),()=>{let e=o.get(a);if(e){if(e.delete(i),e.size===0){let e=c.get(a);e&&(e(),c.delete(a))}j(a)}}},async ensureInitial(t){let i=kv(t,e),a=K(i);if(u&&await u.wait(pv(i)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(pv(i));if(se(i)&&w(t)===void 0&&n.records.length>0){S+=1;try{F.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)ll(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Z_(__({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(fe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,i);return Z_(__({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:F.getRequestState?.(t),hydration:F.getHydrationState?.(t)})),x(t,i),n}let o=w(t);if(o&&o.pages.length>0&&!fe(t)&&e.fetcher&&!r.isRetained(E(t))){let e=Date.now(),n=await P(t,i);return Z_(__({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:F.getRequestState?.(t),hydration:F.getHydrationState?.(t)})),x(t,i),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;d.delete(a);try{await s.ensureInitial()}catch(e){throw Z_(__({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:jv(w(t),i.sessionID),request:F.getRequestState?.(t),hydration:F.getHydrationState?.(t),error:e})),e}d.delete(a),l||Tm(i.directory,i.sessionID,{transport:i.transport,generation:i.generation}),n.noteScopeObserved(E(t)),D(t);let f=F.getTranscript(t);return Z_(__({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:f,request:F.getRequestState?.(t),hydration:F.getHydrationState?.(t)})),x(t,i),f},async fetchPreviousPage(t){if(fe(t)&&await F.ensureInitial(t),Jm(w(t)).kind!==`has-more`)return F.getTranscript(t);let n=kv(t,e),r=K(n);b.add(r),k(t);let i=Date.now();try{await O(t).fetchPreviousPage(),D(t);let e=F.getTranscript(t);return Z_(__({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:F.getRequestState?.(t),hydration:F.getHydrationState?.(t)})),e}catch(e){throw Z_(__({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{b.delete(r),k(t)}},getController(t){let n=kv(t,e);return a.get(K(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=kv(t,e),i=Q_(()=>F.getTranscript(t)),a=F.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??Lm(),signal:new AbortController().signal}),s=F.getTranscript(t).liveRevision;if(F.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:o.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:s}),s<=a){let n=Pv(F.getTranscript(t),o);for(let i of n)F.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let c=F.getTranscript(t);n.noteScopeObserved(E(t));try{let e=Q_(()=>c);i&&e&&$_({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:i,after:e})}catch{}return c},async destructiveReset(t){let r=Q_(()=>F.getTranscript(t)),i=E(t);return u&&await u.clearSession(pv(kv(t,e))),n.destructiveReset(i,async()=>{let n=kv(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),l.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await F.ensureInitial(t);try{let e=Q_(()=>s);r&&e&&$_({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=K(kv(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),l.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),l.delete(n);let e=c.get(n);e&&(e(),c.delete(n));let t=s.get(n);t&&(t(),s.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),u&&u.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of s.values())e();s.clear();for(let e of c.values())e();c.clear(),o.clear(),l.clear(),d.clear(),f.clear(),p.clear(),m.clear(),g.clear(),v.clear(),y.clear(),b.clear()}};return F}var Iv=Object.freeze([]);function Lv(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=Bh(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var Rv=`/api/openchamber/transcript-cache`,zv=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),Bv=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Vv=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},Hv=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},Uv=e=>{if(!Bv(e))throw Error(`Invalid transcript cache scope`);return{transport:Vv(e.transport,`scope`),generation:Hv(e.generation,`scope`),directory:Vv(e.directory,`scope`),sessionID:Vv(e.sessionID,`scope`)}},Wv=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},Gv=e=>{if(!Bv(e)||!Bv(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!Bv(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:Uv(e.scope),messageID:Vv(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>Wv(e,`part completeness`)),completeness:Wv(e.completeness,`completeness`),contentHash:Vv(e.contentHash,`content hash`),byteSize:Hv(e.byteSize,`byte size`),lastAccessedAt:Hv(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:Hv(e.sortKey.created,`sort key`),messageID:Vv(e.sortKey.messageID,`sort key`)}}},Kv=(e,t)=>{if(!Bv(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(Gv);return{scope:e.scope===void 0?lc(t):Uv(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},qv=e=>{if(!Bv(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:Gv(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!zv.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:Gv(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Jv=e=>{if(!Bv(e))throw Error(`Invalid transcript cache evict`);return{evicted:Hv(e.evicted,`evict`),freedBytes:Hv(e.freedBytes,`evict`),remainingBytes:Hv(e.remainingBytes,`evict`)}},Yv=e=>({scope:lc(e),records:[],byteSize:0}),Xv=(e,t)=>Bv(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Zv=async e=>{if(e.status===204)return;let t=await e.text();if(t)try{return JSON.parse(t)}catch{throw Error(`Invalid transcript cache payload`)}},Qv=async(e,t,n)=>{let r=await e(t,n);if(r.status===501)return{kind:`disabled`};if(r.status===404)return{kind:`not-found`};if(r.ok)return{kind:`ok`,payload:await Zv(r)};let i=await Zv(r).catch(()=>void 0);throw Error(Xv(i,`Transcript cache request failed (${r.status})`))},$v=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),ey=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function ty(e={}){let t=e.fetch??I;return{async readSession(e){let n=await Qv(t,`${Rv}/session`,{method:`GET`,query:$v(e)});return n.kind===`disabled`||n.kind===`not-found`?Yv(e):Kv(n.payload,e)},async readMessage(e,n){let r=await Qv(t,`${Rv}/message`,{method:`GET`,query:{...$v(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!Bv(r.payload))throw Error(`Invalid transcript cache record`);return Gv(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Qv(t,`${Rv}/message`,ey(`PUT`,{scope:e,info:n,parts:r}));if(i.kind===`disabled`)return{status:`skipped`,reason:`unchanged`};if(i.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return qv(i.payload)},async removeMessage(e,n){let r=await Qv(t,`${Rv}/message`,ey(`DELETE`,{scope:e,messageID:n}));if(r.kind!==`disabled`&&r.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearSession(e){let n=await Qv(t,`${Rv}/session`,ey(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Qv(t,`${Rv}/generation`,ey(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Qv(t,`${Rv}/evict`,ey(`POST`,{maxBytes:e,...n?.protect?{protect:n.protect}:{}}));if(r.kind===`disabled`)return{evicted:0,freedBytes:0,remainingBytes:0};if(r.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return Jv(r.payload)},async clearAll(){let e=await Qv(t,`${Rv}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var ny=`openchamber-transcript-durable`,ry=1,iy=`transcriptIndex`,ay=`transcriptContent`,oy=class extends Error{code;constructor(e){super(e),this.code=e}},sy=e=>({id:Ys(e.scope,e.messageID),scope:lc(e.scope),scopeKey:Js(e.scope),generationKey:Xs(e.scope),messageID:e.messageID,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID},contentHash:e.contentHash,completeness:e.completeness,partCompleteness:e.partCompleteness.slice(),byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt}),cy=(e,t)=>({scope:lc(e.scope),messageID:e.messageID,info:cc(t.info),parts:cc(t.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),ly=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return cy(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},uy=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},dy=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),fy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new oy(`database-unavailable`));return}let r=indexedDB.open(e,ry),i=!1,a=()=>{i||(i=!0,n(new oy(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(iy)){let t=e.createObjectStore(iy,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(ay)||e.createObjectStore(ay,{keyPath:`id`})},r.onsuccess=()=>{let e=r.result;if(e.onversionchange=()=>e.close(),i){e.close();return}i=!0,t(e)},r.onerror=a,r.onblocked=a}),py=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new oy(`database-unavailable`)),r.onblocked=()=>void 0}),my=(e=ny)=>({transaction:async t=>{let n=await fy(e),r=n.transaction([iy,ay],`readwrite`),i=r.objectStore(iy),a=r.objectStore(ay),o=e=>dy(e,r),s=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{console.error(`Transcript durable IndexedDB transaction error`,r.error)}}),c;try{let e=await t({getIndex:e=>o(i.get(e)),getAllIndexes:()=>o(i.getAll()),getIndexesByScope:e=>o(i.index(`scopeKey`).getAll(e)),getIndexesByGeneration:e=>o(i.index(`generationKey`).getAll(e)),putIndex:async e=>{await o(i.put(e))},deleteIndex:async e=>{await o(i.delete(e))},getContent:e=>o(a.get(e)),putContent:async e=>{await o(a.put(e))},deleteContent:async e=>{await o(a.delete(e))},clearAll:async()=>{await o(i.clear()),await o(a.clear())}});return await s,e}catch(e){c=e;try{r.abort()}catch{}try{await s}catch(e){c===void 0&&(c=e)}throw c}finally{n.close()}},destroy:()=>py(e)});function hy(e,t={}){let n=uc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(sy(t)),dc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(Js(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=cy(t,r);a.lastAccessedAt=n(),await e.putIndex(sy(a)),i.push(a)}return fc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await ly(e,Ys(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=pc({info:i,incomingCompleteness:tc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=cc(a.slice()),c=tc(s),l=await ic(i,s),u=Ys(t,i.id);return e.transaction(async e=>{let a=await ly(e,u),o=pc({info:i,existing:a,incomingCompleteness:c,incomingHash:l.hash});if(o.status===`skipped`)return o.reason===`slim-downgrade`&&a?{status:`skipped`,reason:`slim-downgrade`,record:dc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:lc(t),messageID:i.id,info:cc(i),parts:s,partCompleteness:s.map(ec),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:Qs(i)};return await e.putIndex(sy(d)),await e.putContent({id:u,info:cc(i),parts:s}),{status:`written`,record:dc(d)}})},async removeMessage(t,n){await e.transaction(e=>uy(e,Ys(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(Js(t));for(let t of n)await uy(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(Xs(t));for(let t of n)await uy(e,t.id)})},async evictToBytes(t,n){return e.transaction(async e=>{let r=Number.isFinite(t)?Math.max(0,t):0,i=new Set((n?.protect??[]).map(Js)),a=await e.getAllIndexes(),o=0;for(let e of a)o+=e.byteSize;if(o<=r)return{evicted:0,freedBytes:0,remainingBytes:o};let s=a.filter(e=>!i.has(e.scopeKey)).sort((e,t)=>e.lastAccessedAt===t.lastAccessedAt?Zs(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await uy(e,t.id),o-=t.byteSize,l+=t.byteSize,c+=1}return{evicted:c,freedBytes:l,remainingBytes:o}})},async clearAll(){await e.transaction(async e=>{await e.clearAll()})},async destroy(){await e.destroy()}}}function gy(e={}){return hy(e.driver??my(e.databaseName),e)}function _y(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??ct;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var vy=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function yy(e={}){let t,n,r=()=>(t??=(e.createHttpStore??ty)(),t),i=()=>(n??=(e.createIndexedDBStore??gy)(),n),a=()=>_y(e)===`http`?r():i();return{readSession:e=>a().readSession(e),readMessage:(e,t)=>a().readMessage(e,t),upsertSettled:(e,t,n)=>a().upsertSettled(e,t,n),removeMessage:(e,t)=>a().removeMessage(e,t),clearSession:e=>a().clearSession(e),clearGeneration:e=>vy([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function by(e={}){await yy(e).clearAll()}var xy=(e,t)=>e<t?-1:+(e>t);function Sy(e){return e.filter(e=>!!e?.id).sort((e,t)=>xy(e.id,t.id))}async function Cy(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await gg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=r.records.map(e=>({info:Zf(e.info),parts:Sy(e.parts??[])}));if(!e.before&&!r.complete&&Ev(a).length>0){let t=V.getScopedSdkClient(e.directory);a=(await Dv({records:a,complete:r.complete,requestMessage:async n=>{let r=await wv({transport:i(),generation:h(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:Sy(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Sy(e.parts??[])}))}return{records:a,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function wy(e){let t=e.client??R,n=rg(),r=cg({client:t,activeRegistry:n}),a=Fv({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:i,getGeneration:h},fetcher:e=>Cy({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:Lm(),historyLimit:Rm(),durableStore:e.durableStore??yy()}),o=fv({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:r,probe:{getTransport:i,getGeneration:h}});return au(a),yu(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),yu(null),a.destroy(),ou()}}}function Ty(e){return su().apply(W(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var Ey=new Map;function Dy(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Oy(e,t,n,r={}){let a=r.getTransportIdentity??i,o=r.getGeneration??h,s=a(),c=o(),l=Dy(e,t,s,c),u=()=>a()===s&&o()===c,d=Ey.get(l)??Promise.resolve(),f,p=new Promise(e=>{f=e}),m=d.catch(()=>void 0).then(()=>p);Ey.set(l,m);try{if(await d.catch(()=>void 0),!u())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:s,generation:c,isCurrent:u})}finally{f(),Ey.get(l)===m&&Ey.delete(l)}}var ky=new Set,Ay=new Set,jy=new Set,My=new Set,Ny={onDeleteRequest(e){return ky.add(e),()=>{ky.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||ky.forEach(t=>t(e))},onCreateRequest(e){return Ay.add(e),()=>{Ay.delete(e)}},requestCreate(e){let t=e??{};Ay.forEach(e=>e(t))},onDirectoryRequest(e){return jy.add(e),()=>{jy.delete(e)}},requestDirectoryDialog(){jy.forEach(e=>e())},onGitRefreshHint(e){return My.add(e),()=>{My.delete(e)}},requestGitRefresh(e){e.directory.trim()&&My.forEach(t=>t(e))}},Py=e=>e.trim(),Fy=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session status runtime changed`)},Iy=(e,t={})=>{let n=Py(e),r=t.transport??i(),a=t.loadSnapshot??((e,t)=>V.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,s=t.runtimeProbe??{},c=(s.getGeneration??h)();return $e({queryKey:N.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{Fy(r,c,s);let t=o(),i=await a(n,e);if(Fy(r,c,s),i===null)throw Error(`session status snapshot unavailable`);return{snapshot:i,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},Ly=(e,t={})=>{let{client:n=R,...r}=t;return n.fetchQuery(Iy(e,r))},Ry=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session active runtime changed`)},zy=(e={})=>{let t=e.transport??i(),n=e.loadActive??(e=>V.getSessionActive(e)),r=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??h)();return $e({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{Ry(t,o,a);let i=r(),s=await n(e);return Ry(t,o,a),{result:s,requestedAt:i}},staleTime:0,gcTime:3e5,retry:!1})},By=(e={})=>{let{client:t=R,...n}=e;return t.fetchQuery(zy(n))},Vy;function Hy(e){Vy=e}function Uy(e){if(e){if(e.type===`idle`||e.type===`busy`)return{type:e.type};if(e.type===`retry`&&typeof e.attempt==`number`&&typeof e.message==`string`&&typeof e.next==`number`)return{type:`retry`,attempt:e.attempt,message:e.message,next:e.next}}}function Wy(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Gy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Ky(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>({session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n}})),!0)}function qy(e,t,n,r=Date.now()){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let i=e.membership,a=t??{},o=new Set([...n,...Object.keys(a)]);if(o.size===0)return{snapshot:null,source:`none`};let s={};for(let e of o){let t=Object.prototype.hasOwnProperty.call(i,e),n=Uy(a[e]);if(t){s[e]=n&&Gy(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function Jy(e,t,n,r){if(n.length===0)return!1;let i=!1;return e.setState(e=>{let a=e.session_status??{},o,s,c=()=>o??={...a},l=()=>s??={...e.session_status_observed_at},u=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(l()[t]=r,i=!0)};for(let o of n){if(r!==void 0&&(e.session_status_observed_at[o]??-1/0)>=r)continue;let n=Uy(t[o]);if(n&&n.type!==`idle`){Wy(a[o],n)||(c()[o]=n,i=!0),u(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(c()[o]={type:`idle`},i=!0),u(o)}return!o&&!s?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{}}}),i}function Yy(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Xy(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await Ly(e,{client:o,loadSnapshot:r.loadSnapshot,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),f=r.skipActive?Promise.resolve(null):(async()=>{try{return await By({client:o,loadActive:r.loadActive,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),[p,m]=await Promise.all([d,f]);if(c=p,m&&(l=m.result,u=m.requestedAt),r.isStale?.())return null;let h=c?.snapshot??null,g=l?.state===`supported`;if(h===null&&!g)return null;let{snapshot:_,source:v}=qy(l,h,n);if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=Yy(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Jy(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Vy;if(S){let n=t.getState().session_status??{},r={};for(let e of x){let t=n[e];t&&t.type!==`idle`&&(r[e]={type:t.type})}S(e,r,x)}return _}async function Zy({directory:e,sessionID:t,store:n,statusBeforePull:r,statusObservedAtBeforePull:i,hasMessages:a,isTailPage:o=!0,isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m}){if(!o||!a||!r||r.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:Xy(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var Qy=50,$y=e=>{let t=Object.keys(e);if(t.length<=Qy)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Qy).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},eb=De()(Ae(Oe((e,t)=>({sessions:{},setSessionTodos:(t,n)=>{t&&e(e=>{let r={...e.sessions};return!n||n.length===0?t in r?(delete r[t],{sessions:r}):e:(r[t]={todos:n,touchedAt:Date.now()},{sessions:$y(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:g(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),tb=new Set([`todowrite`,`todoread`]),nb=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),rb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),ib=(e,t)=>{eb.getState().setSessionTodos(e,t)},ab=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},ob=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},sb=e=>{if(!e||typeof e!=`object`)return null;let t=e;if(typeof t.content!=`string`||typeof t.status!=`string`)return null;let n={content:t.content,status:t.status,priority:typeof t.priority==`string`?t.priority:`medium`};return typeof t.id==`string`&&t.id.length>0&&(n.id=t.id),n},cb=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=sb(n);e&&t.push(e)}return t},lb=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return cb(t);if(t&&typeof t==`object`)return cb(t.todos)}catch{}return[]},ub=e=>{if(!tb.has(ab(e)))return[];let t=ob(e);if(t&&nb.has(t))return[];let n=e.state,r=cb(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=cb(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=cb(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?lb(i):[]};function db(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.partsByMessageID[n];if(!(!r||r.length===0))for(let e=r.length-1;e>=0;--e){let t=ub(r[e]);if(t.length>0)return t}}return[]}function fb(e){if(!e.sessionID||e.isStale?.()||rb(e.store.getState().todo,e.sessionID))return!1;let t=db(e.transcript);return t.length===0||e.isStale?.()||rb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function pb(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??U()?.getTranscript(W(e.directory,e.sessionID));return t?fb({sessionID:e.sessionID,store:e.store,transcript:t,persist:ib,isStale:e.isStale}):!1}var mb=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>pS,COMBINED_SEND_PRESENCE_GRACE_MS:()=>fS,SESSION_DELETE_UNDO_MS:()=>Lx,abortBusySessionForMessageEdit:()=>DS,abortCurrentOperation:()=>vS,archiveSession:()=>qx,beginOptimisticSend:()=>rS,cancelScheduledSessionDeletes:()=>Kx,classifySendFailure:()=>sx,combinedSendConfirmationOptions:()=>mS,commitMessageEdit:()=>kS,createSession:()=>jx,deleteSession:()=>Wx,dirStoreForDirectory:()=>Kb,dismissOpenQuestionsForSession:()=>SS,ensureSentUserMessagePresence:()=>_S,fetchMessagesForSession:()=>FS,fetchRecentSendConfirmationRecords:()=>uS,forkSession:()=>NS,getSendFailureKind:()=>ax,getSessionLastAssistantModel:()=>Qb,isQuestionRequestNotFoundError:()=>Ox,materializeConfirmedSendRecords:()=>dS,mirrorSessionIntoLiveStores:()=>ex,optimisticInsertUserMessage:()=>cS,optimisticSend:()=>sS,patchSessionMetadata:()=>Mx,refetchSessionMessages:()=>jS,rejectQuestion:()=>xS,releaseUnconfirmedQueueSend:()=>Ub,requestSessionSmartTitle:()=>Xx,resolveForkMessageId:()=>Db,respondToPermission:()=>yS,respondToQuestion:()=>bS,revertToMessage:()=>CS,rollbackOptimisticSend:()=>aS,scheduleSessionDeletes:()=>Gx,setActionRefs:()=>Vb,setOptimisticRefs:()=>Hb,settleOptimisticSend:()=>oS,shareSession:()=>Zx,shouldSuppressForkCopyEvent:()=>kb,stageMessageEdit:()=>TS,trackForkCopySessionCreated:()=>Cb,unarchiveSession:()=>Jx,unrevertSession:()=>MS,unshareSession:()=>Qx,updateSessionTitle:()=>Yx,waitForConnectionOrThrow:()=>dx,waitForSessionIdleForMessageEdit:()=>OS}),hb=2,gb=150,_b=new Set([`patch`,`step-start`,`step-finish`]),vb=3,yb=150,bb=null,xb=new Map,Sb=3e4;function Cb(e,t){let n=t?.id;!bb||bb.runtimeKey!==c()||bb.directory!==e||!n||t?.title!==bb.expectedTargetTitle||n===bb.sourceSessionID||bb.targetSessionID||(bb.targetSessionID=n)}function wb(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function Tb(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function Eb(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Db(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!n||n.type===`idle`)return e;for(let e=t.length-1;e>=0;--e)if(t[e]?.role===`user`)return t[e].id}async function Ob(e,t){let n=Tp(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return V.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function kb(e,t,n){if(bb&&bb.runtimeKey===c()&&bb.directory===e&&t&&t===bb.targetSessionID)return!0;if(!t||!n)return!1;let r=`${c()}:${e}:${t}`,i=xb.get(r);return i?i.expiresAt<=Date.now()?(xb.delete(r),!1):n<=i.messageID:!1}var Ab=null,jb=null,Mb=()=>``,Nb=new Map,Pb=null,Fb=null,Ib=null,Lb=e=>new Promise(t=>setTimeout(t,e));function Rb(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e.message;if(typeof t==`string`&&t.length>0)return t;let n=e.data;if(n&&typeof n==`object`){let e=n.message;if(typeof e==`string`&&e.length>0)return e}}try{return JSON.stringify(e)}catch{return String(e)}}function zb(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Rb(e.error)}`);throw n!==void 0&&(r.status=n),r}function Bb(e,t){let n=zb(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Vb(e,t,n){if(Ab=e,jb=t,Mb=n,Nb.size>0){let e=[...Nb.values()];Nb.clear(),queueMicrotask(()=>{for(let t of e)FS(t.sessionID,t.directory)})}}function Hb(e,t,n){Pb=e,Fb=t,Ib=n??null}function Ub(e){let t=e.directory??null;Fb?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Wb(){if(!Ab)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Ab}function Gb(){if(!jb)throw Error(`Child stores not initialized`);let e=Mb();if(!e)throw Error(`No current directory`);return jb.ensureChild(e)}function Kb(e,t){if(!jb)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return jb.ensureChild(e,t)}function qb(e,t){let n=t??_x(e);return n?{store:Kb(n),directory:n}:{store:Gb(),directory:tx()}}function Jb(e,t){let{store:n,directory:r}=qb(e,t??void 0),i=r??tx()??``;return{repository:U()??cu(i,n),directory:i,store:n}}function Yb(e,t){let{repository:n,directory:r,store:i}=Jb(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(W(r,e))}}function Xb(e,t){return Pu(Yb(e,t).data)}function Zb(e,t){return Yb(e,t).data.messageOrder.length}function Qb(e){try{let t=Xb(e);for(let e=t.length-1;e>=0;--e){let n=t[e];if(n?.role===`assistant`&&typeof n.providerID==`string`&&n.providerID&&typeof n.modelID==`string`&&n.modelID)return{providerID:n.providerID,modelID:n.modelID}}return null}catch{return null}}function $b(e,t){let n=jb;if(!n)return!1;let r=t?[[t,n.getChild(t)]]:n.children;for(let[,t]of r){if(!t)continue;let n=t.getState().session,r=n.findIndex(t=>t.id===e.id);if(r===-1)continue;let i=[...n];return i[r]=Bw(e,n[r]),t.setState({session:i}),!0}return!1}function ex(e,t){t&&$b(e,t)||$b(e)}function tx(){return Mb()||void 0}function nx(){let{hasEverConnected:e,lastDisconnectReason:t}=Nf.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function rx(e){if(!e||typeof e!=`object`)return null;let t=e.status;if(typeof t==`number`)return t;let n=e.response;return typeof n?.status==`number`?n.status:null}var ix=class extends Error{kind;cause;messageID;constructor(e,t,n){super(t instanceof Error?t.message:String(t)),this.name=`SendDispatchError`,this.kind=e,this.cause=t,this.messageID=n}};function ax(e){return e instanceof ix?e.kind:null}function ox(e){let t=rx(e);if(t===503||t===504||t===408||e instanceof TypeError||e instanceof DOMException&&(e.name===`AbortError`||e.name===`TimeoutError`))return!0;let n=e instanceof Error?e.message.toLowerCase():typeof e==`string`?e.toLowerCase():``;return n.includes(`timeout`)||n.includes(`timed out`)||n.includes(`failed to fetch`)||n.includes(`networkerror`)||n.includes(`network error`)||n.includes(`gateway timeout`)||n.includes(`econnreset`)||n.includes(`socket hang up`)}function sx(e,t){return t?ox(e)||rx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var cx=2e3,lx=5e3,ux=3e4;async function dx(){let e=ym();e&&vm(`send_stream_stale`);let t=Date.now()+(e?lx:cx);for(;Date.now()<t;){if(Nf.getState().isConnected&&!ym()||u()&&!ym())return;let e=t-Date.now();if(e<=0)break;if(await Nf.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!ym())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw nx()}function fx(e){return new Promise((t,n)=>{let r=setTimeout(()=>{vm(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},ux);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function px(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function mx(e){e&&Y.getState().upsertSession(e)}function hx(e,t){let n=Yf(t),r=[...e.getState().session],i=ns.search(r,n.id,e=>e.id);if(i.found){let t=Bw(n,r[i.index]);return r[i.index]=t,e.setState({session:r}),t}return r.splice(i.index,0,n),e.setState({session:r}),n}async function gx(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=px(e);if(i)return hx(t,i);try{return hx(t,await V.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function _x(e){return vx(e)||$.getState().getDirectoryForSession(e)||tx()}function vx(e){let t=jb;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=U()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function yx(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?V.getScopedSdkClient(t):Wb()}function bx(e){Cr.getState().clearAttachedFiles();for(let t of e){let e=typeof t.url==`string`?t.url:``,n=typeof t.mime==`string`?t.mime:`application/octet-stream`,r=typeof t.filename==`string`?t.filename:`attachment`;e&&Cr.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var xx=()=>new Map(Array.from(Cd(),([e,t])=>[e,t.title||e]));function Sx(e){return!(e.type!==`file`||zp(e))}function Cx(e){return Sx(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function wx(e){return e.some(Cx)}async function Tx(e){let t=[...e.parts];if(!wx(t))return t;let n=h(),r=e.directory??``;try{await hu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||h()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=Jb(e.sessionID,r);if(t=[...i.getParts(W(a,e.sessionID),e.messageID)],wx(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function Ex(e){if(wx(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await em(e.parts,{sessionTitles:xx(),directory:e.directory}),n=Cr.getState(),r=n.getDraft(e.key);return{payload:t,commit:await am({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function Dx(e,t,n){let r=jb;if(!r||!n)return null;for(let[t,i]of r.children){let r=i.getState(),a=e===`permission`?r.permission:r.question;for(let e of Object.values(a))if(e?.some(e=>e.id===n))return t}let i=$.getState().getDirectoryForSession(t);if(i)return i;for(let[e,n]of r.children){let r=n.getState();if(r.session.some(e=>e.id===t)||Object.prototype.hasOwnProperty.call(r.session_status??{},t)||Object.prototype.hasOwnProperty.call(r.permission??{},t)||Object.prototype.hasOwnProperty.call(r.question??{},t))return e}return null}function Ox(e){if(e&&typeof e==`object`&&e.status===404)return!0;let t=``;return e instanceof Error?t=e.message:typeof e==`string`&&(t=e),/Question(?:\.)?NotFoundError|Question request not found/i.test(t)}function kx(e,t){let n=jb;if(!n||!t)return!1;let r=!1;for(let[,i]of n.children){let n=i.getState().question??{},a=null,o=new Set([e,...Object.keys(n)].filter(Boolean));for(let e of o){let i=n[e];if(!i?.length)continue;let o=i.filter(e=>e.id!==t);o.length!==i.length&&(a??={...n},o.length>0?a[e]=o:delete a[e],r=!0)}a&&i.setState({question:a})}return r}function Ax(e,t,n){let r=Dx(e,t,n);return r?V.getScopedSdkClient(r):yx(t)}async function jx(e,t,n,r){try{let i=await V.createSession({title:e,parentID:n??void 0,metadata:r},t??tx()),a=i.directory??null;return a&&hd(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),Y.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function Mx(e,t,n){let r=t??_x(e),i=n(Tp(await V.getSession(e,r))),a=await V.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&hd(a.id,o),a}async function Nx(e,t){let n;try{n=await V.getSession(e,t??_x(e))}catch{return}if(!kp(n))return;let r=Op(n);if(r)try{await Mx(r,t??_x(r),t=>Mp(t,e))}catch(e){let t=e instanceof Error?e.message:String(e);if(/not found/i.test(t))return;console.warn(`[session-actions] review metadata cleanup failed before delete`,e)}}function Px(e,t){if(!jb)return[];let n=[],r=new Set,i=[];if(t){let e=jb.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of jb.children.entries())r.has(e[0])||i.push(e);for(let[t,r]of i){let i=r.getState();i.session.some(t=>t.id===e)&&(n.push({directory:t,sessions:i.session}),r.setState({session:i.session.filter(t=>t.id!==e)}))}return n}function Fx(e){if(jb)for(let t of e){let e=jb.children.get(t.directory);e&&e.setState({session:t.sessions})}}function Ix(e){$.getState().setWorktreeMetadata(e,null)}var Lx=1e4,Rx=new Map,zx=0;function Bx(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function Vx(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),Fx(e.listSnapshots),mx(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function Hx(e,t){let n=t??_x(e);Y.getState().markSessionsPendingDeletion([e]);let r=Px(e,n),i=px(e);Y.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function Ux(e,t){try{if(await Nx(e,t),await V.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return Px(e,t),Y.getState().removeSessions([e]),Ix(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(Px(e,t),Y.getState().removeSessions([e]),Ix(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function Wx(e,t){let n=Hx(e);return await Ux(e,n.directory)?!0:(Vx(n),!1)}function Gx(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>Hx(e)),i=`session-delete-${Date.now()}-${zx+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=Rx.get(i);if(!e)return;Rx.delete(i);let t=[],n=[];for(let r of e.entries)await Ux(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),Vx(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return Rx.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function Kx(e){if(!e)return!1;let t=Rx.get(e);if(!t)return!1;clearTimeout(t.timer),Rx.delete(e);for(let e of[...t.entries].reverse())Vx(e);return!0}async function qx(e){let t=_x(e),n=Px(e,t),r=px(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await Nx(e,t);let n=await V.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),Fx(n),mx(r),!1}}async function Jx(e){let t=_x(e),n=px(e),r=n?Bx(n):null;if(r&&(Y.getState().upsertSession(r),t&&jb)){let e=jb.children.get(t);e&&hx(e,r)}try{let n=await V.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=Bx(n);if(Y.getState().upsertSession(r),t&&jb){let e=jb.children.get(t);e?hx(e,r):ex(r,t)}else ex(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&Px(e,t)),!1}}async function Yx(e,t){let n=_x(e),r=px(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?zf(r):0,c=await V.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),ex(c,n)}async function Xx(e){let t=_x(e),n=px(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await V.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),ex(s,t)}async function Zx(e){let t=_x(e),n=Yf(Bb(await Wb().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),$b(n,t),n}async function Qx(e){let t=_x(e),n=Yf(Bb(await Wb().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),$b(n,t),n}function $x(e){let t=jb,n=e??Mb();if(!t||!n)return{store:e?Kb(e):Gb(),isCurrent:()=>!0};let r=t,i=r.captureChild?.(n);if(i&&r.isCurrentChildCapture)return{store:i.store,isCurrent:()=>r.isCurrentChildCapture?.(i)===!0};let a=t.ensureChild(n);return{store:a,isCurrent:()=>t.getChild(n)===a}}function eS(){return{identity:i(),generation:h()}}function tS(e,t){return e.isCurrent()&&i()===t.identity&&h()===t.generation}function nS(e,t){if(!tS(e,t))throw Error(`Send target changed before transport dispatch`)}function rS(e){if(!Pb||!Fb)throw new ix(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??tx()??null,n=$x(t),r=eS();nS(n,r),e.beforeOptimisticInsert?.(),nS(n,r);let i=e.messageID??he(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),cS({sessionId:e.sessionId,messageID:i,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.parts}),e.onOptimisticInsert?.(),{messageID:i,sessionId:e.sessionId,directory:t,capture:n,transport:r}}catch(e){throw e instanceof ix?e:new ix(ax(e)??sx(e,!1),e)}}function iS(e){if(!tS(e.capture,e.transport)||!Fb)return;Fb({sessionID:e.sessionId,directory:e.directory,messageID:e.messageID});let t=e.capture.store.getState(),n=Date.now();e.capture.store.setState({session_status:{...t.session_status,[e.sessionId]:{type:`idle`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:n}})}function aS(e){iS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function oS(e){if(!Pb||!Fb)throw new ix(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));let{ticket:t}=e,{capture:n,transport:r,messageID:i,sessionId:a,directory:o}=t,s=!1;try{if(await dx(),nS(n,r),s=!0,await fx(e.send(i)),!tS(n,r))throw new ix(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=ax(c)??sx(c,s),u=c instanceof ix?c:new ix(l,c,i);if(!tS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await uS(a,i,o):null;if(d&&tS(n,r)){dS(n.store,a,i,d,{directory:o??void 0}),Ib?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||iS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function sS(e){await oS({ticket:e.ticket??rS({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:e.directory,files:e.files,parts:e.parts,messageID:e.messageID,onOptimisticInsert:e.onOptimisticInsert,onMessageID:e.onMessageID,beforeOptimisticInsert:e.beforeOptimisticInsert}),preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:e.onSendConfirmed,send:e.send})}function cS(e){if(!Pb)return!1;let t=e.directory??tx(),n=t?Kb(t):Gb(),r=t??tx()??``;if(hS(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:he(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:he(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:he(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),s={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},c=Q_(()=>Yb(e.sessionId,t).data);Pb({sessionID:e.sessionId,directory:t,message:s,parts:a});let l=Q_(()=>Yb(e.sessionId,t).data);try{c&&l&&$_({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:i(),generation:h(),before:c,after:l})}catch{}let u=n.getState();return n.setState({session_status:{...u.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...u.session_status_observed_at,[e.sessionId]:o}}),!0}function lS(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function uS(e,t,n,r){let i=r?.signal||r?.timeoutMs!==void 0?new AbortController:null,a=()=>i?.abort();r?.signal?.addEventListener(`abort`,a,{once:!0}),r?.signal?.aborted&&i?.abort();let o=r?.timeoutMs===void 0?void 0:setTimeout(()=>i?.abort(),Math.max(0,r.timeoutMs)),s=r?.attempts??hb,c=r?.retryDelayMs??gb;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!lS(r?.isCurrent)||a>0&&(await Lb(c),i?.signal.aborted||!lS(r?.isCurrent)))return null;try{let a=await Wb().session.messages({sessionID:e,directory:n??void 0,limit:Vm(),...i?{signal:i.signal}:{}});if(!lS(r?.isCurrent))return null;let o=(zb(a,`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.some(e=>e.info.id===t))return o}catch{}}return null}finally{o&&clearTimeout(o),r?.signal?.removeEventListener(`abort`,a)}}function dS(e,t,n,r,i){if(!r.length)return;let a=i?.directory??_x(t)??Mb(),o=W(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:Zf(e.info),parts:e.parts??[]})),skipPartTypes:_b,merge:i?.gapFillOnly===!0?Hs:Ws({purpose:`recovery`})};uu(o,s)||cu(a,e).apply(o,s)}var fS=2e3,pS={attempts:12,retryDelayMs:500},mS={presenceGraceMs:fS,recovery:{...pS}};function hS(e,t,n,r){let i=r??_x(t)??Mb()??``,a=U()??cu(i,e),o=W(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function gS(e,t,n,r){let i=r?.directory??_x(t)??Mb()??``;if(hS(e,t,n,i))return Promise.resolve(!0);if(!lS(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=U()??cu(i,e),f=W(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!lS(r?.isCurrent)){l(!1);return}hS(e,t,n,i)&&l(!0)}),hS(e,t,n,i)&&l(!0)})}async function _S(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await gS(t,n,r,{timeoutMs:e.graceMs??mS.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!lS(a))return`cancelled`;let o=await uS(n,r,i,{...mS.recovery,isCurrent:a});return o?lS(a)?(dS(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:lS(a)?`missing`:`cancelled`}async function vS(e){let{store:t,directory:n}=qb(e),r=n?{state:`bound`,transportIdentity:i(),directory:n,sessionID:e}:null,a=r?$.getState().beginQueueAbortBlock(r):null;try{if(Bb(await Wb().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&a&&$.getState().clearQueueAbortBlock(r,a),Ye(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>Fz);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function yS(e,t,n){await dx();let r=Dx(`permission`,e,t)||_x(e)||tx();if(Bb(await Ax(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function bS(e,t,n){await dx();let r=Dx(`question`,e,t)||_x(e)||tx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Bb(await Ax(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw Ox(n)&&kx(e,t),n}}async function xS(e,t){await dx();let n=Dx(`question`,e,t)||_x(e)||tx();try{if(Bb(await Ax(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw Ox(n)&&kx(e,t),n}}async function SS(e){if(!e)return!1;let t=jb;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Pp(t.session,e);if(i.size===0)continue;let a=t.question??{};for(let e of i){let t=a[e];if(t)for(let r of t)n.push({sessionId:e,requestId:r.id})}}if(n.length===0)return!1;for(let{sessionId:e,requestId:t}of n)kx(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await xS(e,t)}catch(e){if(Ox(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function CS(e,t,n){let r=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return Oy(e,r??(()=>{try{return qb(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:o,directory:c}=qb(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Wb().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=Xb(e,c).find(e=>e.id===t),d=Xb(e,c).find(e=>e.id===t)??u;if(!d||d.role!==`user`)throw Error(`The selected user message is unavailable`);let{repository:f,directory:p}=Jb(e,c),m=[...f.getParts(W(p,e),t)],h=a===void 0?s?C({transportIdentity:i()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await Tx({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await em(m,{sessionTitles:xx(),directory:c})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=o.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),w={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},w.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(o.setState(w),h){let t=Cr.getState(),r=await am({key:h,expectedRevision:t.getDraft(h)?.revision??`absent`,payload:g,runtime:t.captureDraftRuntime()});if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),r.status===`committed`&&r.current&&r.previous&&r.result?.record?.revision!==void 0&&await sm({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await V.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await sm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}let i=[...o.getState().session],a=i.findIndex(t=>t.id===e);return a>=0&&(i[a]=r,o.setState({session:i})),c&&Ny.requestGitRefresh({directory:c}),g}catch(t){let r=[...o.getState().session],i=r.findIndex(t=>t.id===e);throw i>=0&&(r[i]={...r[i],revert:b}),n()?(o.setState({session:r}),h&&v&&_!==void 0&&await sm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await sm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function wS(e,t,n,r){let a=r??_x(t)??Mb(),o=W(a,t),s=Q_(()=>Yb(t,a).data),c=[...lu(t)];c.some(e=>e.directory===a&&e.sessionID===t)||c.push(o);let l=!1;for(let e of c)uu(e,{type:`remove-message`,messageID:n})!=null&&(l=!0);l||cu(a,e).apply(o,{type:`remove-message`,messageID:n});let u=Q_(()=>Yb(t,a).data);try{s&&u&&$_({trigger:`user-delete`,sessionID:t,directory:a,transport:i(),generation:h(),before:s,after:u})}catch{}}async function TS(e,t,n,r){let a=n?.info,o=n?.parts,s=r?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=qb(e,s).directory}else{c=qb(e,s).directory;let{data:n}=Yb(e,c),r=Pu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=r?.draftKey??C({transportIdentity:i()},e),{commit:u}=await Ex({key:l,parts:await Tx({directory:c,sessionID:e,messageID:t,parts:o??[]}),directory:c});if(u.status!==`committed`||!u.current)throw Error(`composer-restoration-commit-${u.status}`);let d=u.result?.record?.revision,f=u.previous;return d===void 0||!f?{rollback:async()=>({status:`skipped`})}:{rollback:async()=>({status:(await sm({key:l,restoredRevision:d,previous:f})).status})}}function ES(e,t,n,r){let i=t.findIndex(t=>t.id===e),a=i>=0?t[i]:void 0;if(!a||a.role!==`user`||!n.has(e))throw Error(`The selected user message is unavailable`);let o=r?.preserveMessageId,s=o?t.findIndex(e=>e.id===o):-1,c=s>i?s:t.length;return t.slice(i,c).filter(e=>!(!n.has(e.id)||o&&e.id===o))}async function DS(e,t){let n=t?.directory,{store:r,directory:i}=qb(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Wb().session.abort({sessionID:e,directory:i})}catch{}}async function OS(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=qb(e,n),o=Date.now()+r;for(;Date.now()<o;){let t=a.getState().session_status[e];if(!t||t.type===`idle`)return;await new Promise(e=>setTimeout(e,i))}let s=a.getState().session_status[e];if(!(!s||s.type===`idle`))throw Error(`Session is still busy after waiting to edit: ${e}`)}async function kS(e,t,n){let r=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:s}=qb(e,r),c=Q_(()=>Yb(e,r).data);try{await DS(e,{directory:r}),await OS(e,{directory:r});let n=new Set((await AS(e,r)).map(e=>e.id)),i=ES(t,Xb(e,r),n,{preserveMessageId:a});for(let t of[...i].reverse())await V.deleteSessionMessage(e,t.id,s),wS(o,e,t.id,s)}finally{try{let t=Q_(()=>Yb(e,r).data);c&&t&&$_({trigger:`user-edit`,sessionID:e,directory:s,transport:i(),generation:h(),before:c,after:t})}catch{}}}async function AS(e,t){let{directory:n}=qb(e,t);return(zb(await Wb().session.messages({sessionID:e,directory:n,limit:Bm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>Zf(e.info))}async function jS(e,t){let{store:n,directory:r}=qb(e,t),a=Q_(()=>Yb(e,t).data),o=(zb(await Wb().session.messages({sessionID:e,directory:r,limit:Bm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Q_(()=>Yb(e,t).data);a&&n&&$_({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let s=o.map(e=>({info:Zf(e.info),parts:e.parts??[]})),c=W(r??Mb(),e);uu(c,{type:`materialize-snapshots`,records:s,skipPartTypes:_b})||cu(r??Mb(),n).apply(c,{type:`materialize-snapshots`,records:s,skipPartTypes:_b});try{let n=Q_(()=>Yb(e,t).data);a&&n&&$_({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return s.map(e=>e.info)}async function MS(e,t){return Oy(e,t??(()=>{try{return qb(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=qb(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Zb(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Wb().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Wb().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Bb(c,`session.unrevert`),u=[...r.getState().session],d=u.findIndex(t=>t.id===e);d>=0&&(u[d]=l,r.setState({session:u}));for(let r=0;r<vb;r+=1){if(r>0&&(await Lb(yb),!n())||(await jS(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Zb(e,i)>o)return}if(Zb(e,i)<=o){let n=i??Mb(),a=U()??cu(n,r),o=W(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await jS(e,t)}})}async function NS(e,t,n,r){let i=c(),{store:a,directory:o}=qb(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await gx(e,a,o);hd(e,o);let l=a.getState(),u=l.session_status[e],d=Xb(e,o);u?.type,d.length;let f=Db(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await jS(e),l=a.getState(),u=l.session_status[e],d=Xb(e,o),f=Db(void 0,d,u)),!n&&l.session_status[e]?.type!==`idle`&&!f)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:Zb(e,o)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=Yb(e,o),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(W(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!zp(e)).map(e=>e.text||e.content||``).join(`
461
461
  `).trim();let v=g.filter(e=>e.type===`file`&&!zp(e));bb={operationId:t,runtimeKey:i,directory:o,sourceSessionID:e,expectedTargetTitle:wb(s.title)},await Tb(t,`copying`);let y;try{if(y=await V.forkSession(e,f,o),y.id,c()!==i)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),bb?.operationId===t&&(bb=null),!1;await Tb(t,`opening`);try{y=await Ob(y,o)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw bb?.operationId===t&&(bb=null),e}try{let r=[...a.getState().session],i=ns.search(r,y.id,e=>e.id);i.found||(r.splice(i.index,0,y),a.setState({session:r}));let s=W(o,y.id),l=U();l&&typeof l.destructiveReset==`function`?await l.destructiveReset(s):uu(s,{type:`reset`}),Eb(t,y.id);let u=$.getState().currentSessionId,d=u===e||u===y.id;d&&$.getState().setCurrentSession(y.id,o),await Tb(t,`loading`),y.id;let f=U()??cu(o,a),p=W(o,y.id),m=f.getRequestState?.(p);(!(f.hasSession?.(p)??!1)||m?.status===`error`)&&await FS(y.id,o);let g=Xb(y.id,o).at(-1)?.id;g&&xb.set(`${c()}:${o}:${y.id}`,{messageID:g,expiresAt:Date.now()+Sb}),d&&h&&_&&Cr.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&bx(v)}finally{bb?.operationId===t&&(bb=null)}return y.id,!0}var PS=new Map;async function FS(e,t){let n=t??tx();if(!n)return;let r=c(),i=zm(),a=`${r}:${n}:${e}:${i}`;if(!Ab||!jb){Nb.set(a,{sessionID:e,directory:n});return}let o=PS.get(a);if(o)return o;let s=IS(e,n,r,i).finally(()=>{PS.get(a)===s&&PS.delete(a)});return PS.set(a,s),s}async function IS(e,t,n,r){Wb();let i=Kb(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=U()??cu(t,i),l=W(t,e),u=c.getTranscript(l),d=c.getPagination(l),f=c.getRequestState?.(l),p=e=>e.role===`user`||e.clientRole===`user`,m=u.messageOrder.map(e=>u.messagesByID[e]).filter(e=>!!e),h=m.some(p),g=d.boundary,_=g.kind===`has-more`||g.kind===`exhausted`,v=(c.hasSession?.(l)??m.length>0)&&(h||g.kind===`exhausted`)&&_&&f?.status!==`error`,y=()=>$.getState().currentSessionId!==e;if(v){if(wm(t,e)){pb({directory:t,sessionID:e,store:i,transcript:u});return}if(U()){try{await fu(t,e)}catch{return}if(y())return;pb({directory:t,sessionID:e,store:i,isStale:y}),await Zy({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}pb({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await Cy({directory:t,sessionID:e,limit:r,signal:AbortSignal.timeout(3e4),purpose:`initial`});if(y())return;c.apply(l,{type:`http-page`,purpose:`initial`,page:n,skipPartTypes:_b}),b=n.records.length,Tm(t,e)}catch{return}y()||(pb({directory:t,sessionID:e,store:i,isStale:y}),await Zy({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var LS=new Map,RS=e=>{LS.set(e,(LS.get(e)??0)+1)},zS=e=>(LS.get(e)??0)>0,BS=e=>{let t=LS.get(e)??0;return t<=0?!1:(t===1?LS.delete(e):LS.set(e,t-1),!0)},VS=18e4,HS=400,US=300,WS=15,GS=`FINAL_REVIEW_STATUS: no_remaining_findings`,KS=GS.toLowerCase(),qS=new Set,JS=new Set,YS=e=>{let t=e.finish;if(typeof t==`string`&&t.length>0)return!0;let n=e.time?.completed;return typeof n==`number`&&n>0},XS=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},ZS=e=>{let t=e.role;return typeof t==`string`?t:``},QS=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},$S=(e,t)=>Ed(e.id,t).some(e=>{let t=e.type;if(t===`compaction`)return!0;if(t!==`text`)return!1;let n=e.text;return typeof n==`string`&&n.trim()===`/compact`}),eC=(e,t,n,r=0,i)=>{let a=Td(e,t),o=new Set;for(let e of a)$S(e,t)&&o.add(e.id);for(let e=a.length-1;e>=0;--e){let s=a[e];if(s.id===n)return null;if(ZS(s)!==`assistant`||!YS(s)||XS(s)<r-1e3)continue;let c=QS(s);if(!cC(s,i)||c&&o.has(c))continue;let l=Cp(Ed(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},tC=(e,t)=>Dd(e,t)?.type===`idle`,nC=e=>e===c(),rC=e=>{Np.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},iC=e=>{if(e&&!nC(e))throw Error(`Auto-review stopped because the runtime changed.`)},aC=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),oC=e=>e.trim().split(`
462
462
  `).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===KS,sC=e=>{let t=e.trimEnd().split(`
463
463
  `);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===KS&&t.pop(),t.join(`
@@ -472,4 +472,4 @@ Use the results below as source material. Do not mention that the inputs were hi
472
472
 
473
473
  [… objective trimmed for the auditor — the full text was delivered in the chat message …]
474
474
 
475
- `,jB=async e=>{if(e.length<=5e3)return e;let t=await gB(e);if(t)return t.slice(0,vB);let n=Math.max(0,Math.floor((vB-93)/2)),r=it.getState().dictionary;return zE.error(at(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${AB}${e.slice(-n)}`};async function MB(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await jB(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await DB(e,a),c=Date.now();await EB(e,t,e=>r&&e&&e.id===r.id&&r.status!==`complete`?{...e,objective:s?``:a,objectiveFile:s,tokenBudget:o,status:`active`,statusReason:`resumed`,blockedStreak:0,updatedAt:c}:{id:TB(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function NB(e,t){await EB(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function PB(e,t,n){n===`paused`&&(aB(e),vS(e)),await EB(e,t,e=>e?{...e,status:n,statusReason:n===`active`?`resumed`:n===`complete`?`marked by user`:``,blockedStreak:0,...n===`active`?{turnsUsed:0}:{},updatedAt:Date.now()}:null)}async function FB(e,t){let n=!1;await EB(e,t,e=>(n=e?.status===`active`,null)),OB(e),n&&(aB(e),vS(e))}var IB=`<system-reminder>`,LB=`</system-reminder>`,RB=e=>{let t=e.trim();return t?t.startsWith(IB)&&t.endsWith(LB)?t:`${IB}\n${t}\n${LB}`:``},zB=(e,t=c())=>`${t}\n${e}`,BB=(e,t)=>{let n=VB.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(zB(e))??n.sessionMemoryState.get(e)},VB=De()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??zB(t),s=a.get(o)??(i?void 0:a.get(t))??{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0};return a.set(o,{...s,viewportAnchor:n,...r?{scrollPosition:r}:{},lastAccessedAt:Date.now()}),{sessionMemoryState:a}})})),HB=De((e,t)=>({attachments:new Map,setAttachment:(t,n)=>e(e=>{let r=new Map(e.attachments);return r.set(t,n),{attachments:r}}),getAttachment:e=>t().attachments.get(e),clearAttachment:t=>e(e=>{let n=new Map(e.attachments);return n.delete(t),{attachments:n}})})),UB=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function WB(e,t){if(e){if(!e.degraded&&e.cwd)return UB(e.cwd);if(e.worktreeRoot)return UB(e.worktreeRoot);if(e.cwd)return UB(e.cwd)}return t?UB(t):null}function GB(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function KB(e,t){let n=[];if(t&&t.isClean===!1){let e=t.files?.length;n.push(e==null?{reason:`dirty`}:{reason:`dirty`,dirtyFiles:e})}return e?(e.worktreeStatus===`missing`&&n.push({reason:`missing`}),e.worktreeStatus===`invalid`&&n.push({reason:`invalid`}),e.attentionReason&&n.push({reason:`attention`,attentionReason:e.attentionReason}),n):n}function qB(e){let t=[];e.projectRoot&&t.push({value:e.projectRoot,label:e.rootBranch||e.projectRoot.split(`/`).pop()||e.projectRoot,kind:`root`});let n=e.pendingBootstrapDirectory?UB(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=UB(r.path);if(i===e.projectRoot)continue;let a=i===n;t.push({value:i,label:r.branch?.trim()||r.label||i.split(`/`).pop()||i,kind:`worktree`,pending:a||void 0})}return t}var JB=`openchamber.session-switch.start`,YB=`openchamber.session-switch.highlight-painted`,XB=`openchamber.session-switch.content-committed`,ZB=`data-openchamber-session-switch-highlight-ms`,QB=`data-openchamber-session-switch-content-ms`,$B=`openchamber.session-switch.highlight-latency`,eV=`openchamber.session-switch.content-latency`,tV=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,nV=()=>tV()&&performance.getEntriesByName(JB,`mark`).length>0,rV=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},iV=(e=!1)=>{tV()&&(!e&&performance.getEntriesByName(JB,`mark`).length>0&&performance.getEntriesByName(XB,`mark`).length===0||(performance.clearMarks(JB),performance.clearMarks(YB),performance.clearMarks(XB),performance.clearMeasures($B),performance.clearMeasures(eV),typeof document<`u`&&(document.documentElement.removeAttribute(ZB),document.documentElement.removeAttribute(QB)),performance.mark(JB)))},aV=()=>{if(!nV())return;performance.mark(YB),performance.measure($B,JB,YB);let e=performance.getEntriesByName($B,`measure`).at(-1);e&&rV(ZB,e.duration)},oV=()=>{if(!nV())return;performance.mark(XB),performance.measure(eV,JB,XB);let e=performance.getEntriesByName(eV,`measure`).at(-1);e&&rV(QB,e.duration)},sV={revision:0,sessionId:null},cV=new Set,lV=e=>{sV={revision:sV.revision+1,sessionId:e};for(let e of cV)e(sV);return sV},uV=()=>sV,dV=e=>(cV.add(e),()=>cV.delete(e));function fV(e){let t=e.parts?e.parts.map(e=>({...e})):[];if(e.parts)return{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t};e.text!==void 0&&t.push({id:he(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:he(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:he(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:he(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:he(`prt`),type:`agent`,name:e.agentMentionName}),{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t}}function pV(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function mV(e,t){if(!e)return;let n=pV(t,e);$.setState(t=>{let r=[...(t.retainedPendingUserMessages.get(e)??[]).filter(e=>e.info.id!==n.info.id),n],i=new Map(t.retainedPendingUserMessages);return i.set(e,r),{retainedPendingUserMessages:i}})}async function hV(e){let t=e.directory??void 0,n=_V(e.sessionId,e.onSendConfirmed),r=e.content;if(e.inputMode===`shell`){let r=e.messageID??he(`msg`);return V.shellSession({sessionId:e.sessionId,directory:t,agent:e.agent??``,model:{providerID:e.providerID,modelID:e.modelID},command:e.content}).then(()=>{n(r)})}let a=de(e.content);if(a){let o=a.commandName.toLowerCase(),s=a.argumentsText,c=t??He.getState().currentDirectory??null,l=i(),u=Si(c,l),d=Ba(c,l),f=R.getQueryState(u.queryKey),p=R.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(wi(c,l)):R.fetchQuery({...u,staleTime:1/0}),h?Promise.resolve(Ha(R,c,l)):R.fetchQuery({...d,staleTime:1/0})]);if(i()!==l)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===o)?void 0:g.find(e=>e.name.toLowerCase()===o);if(v?.isBuiltIn===!1)r=`[command:${v.reference??v.name}]${s?` ${s}`:``}`;else if(v)return sS({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>V.sendCommand({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,command:v.name,arguments:s,agent:e.agent,variant:e.variant,files:e.files,messageId:n,directory:t}).then(()=>{})})}return sS({sessionId:e.sessionId,content:r,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.optimisticParts,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>V.sendMessage({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,text:r,agent:e.agent,agentMentions:e.agentMentionName?[{name:e.agentMentionName}]:void 0,variant:e.variant,files:e.files,additionalParts:e.additionalParts,delivery:e.delivery,messageId:n,directory:t}).then(()=>{})})}function gV(e,t){I(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function _V(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{gV(e,r)}}}}var vV=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},yV=f(),bV=`oc.chatInput.lastDraftTarget`,xV=()=>{try{let e=yV.getItem(bV);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:_(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},SV=e=>{try{yV.setItem(bV,JSON.stringify(e))}catch{}},CV=Go,wV=e=>{if(e)return HB.getState().getAttachment(e)},TV=(e,t,n)=>{if(!e)return null;let r=WB(wV(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return _(i);if(n?.includeRuntimeMemory!==!1){let t=jV.get(MV());if(t?.sessionId===e&&t.directory)return _(t.directory)}let a=Sd().find(t=>t.id===e);return a?vV(a):null},EV=e=>{let t=Sd().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},DV=async(e,t)=>{await Nf.getState().activateDirectory(_(e),t)},OV={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},kV=new Map,AV=0,jV=new Map,MV=e=>(e??c()).trim()||`default`,NV=e=>({...e}),PV=(e,t)=>{let n=jV.get(e);jV.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?NV(n.draft):{...OV},...t})},FV=(e,t)=>{let n=vi.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=Go(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},IV=async(e,t)=>{if(!e)return;let n=FV(e,t);n&&await oO(n)&&await hD(e)},LV=(e,t)=>{let n=vi.getState(),r=Go(n.projects,t,e);r&&n.moveProjectToTop(r.id)},RV=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,zV=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,BV=(e,t)=>zV(e,t)&&RV(Cr.getState().captureDraftRuntime(),t.runtime);async function VV(e){let t=!1;if($.setState(n=>{let r=n.newSessionDraft;if(!r?.open||!r.draftID||r.draftSubmitting||r.draftEstablishing)return{};t=!0;let i=e?fV({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return PV(MV(),{draft:a}),{newSessionDraft:a}}),!t)return!1;await new Promise(e=>setTimeout(e,0));let n=$.getState().newSessionDraft;return n.open===!0&&n.draftEstablishing===!0}function HV(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return PV(MV(),{draft:n}),{newSessionDraft:n}})}async function UV(e){let t=null,n=null,r=null;if($.setState(i=>{let a=i.newSessionDraft;if(!a?.open||a.draftSubmitting||!a.draftID)return{};let o=(a.submissionToken??0)+1,s={...a,draftSubmitting:!0,draftEstablishing:!1,submissionToken:o,...e?{pendingUserMessage:e}:{}};return r=MV(),t=s.draftID,n=o,PV(r,{draft:s}),{newSessionDraft:s}}),!t||n===null||!r)return null;await new Promise(e=>setTimeout(e,0));let i=$.getState().newSessionDraft;if(!i.open||i.draftSubmitting!==!0||i.draftID!==t||i.submissionToken!==n)return null;let a=Cr.getState().captureDraftRuntime(),o=S(a,t),s=Cr.getState().getDraft(o);return{token:n,draftID:t,draft:NV(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function WV(e){$.setState(t=>{let n=t.newSessionDraft;if(BV(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=jV.get(e.runtimeMemoryKey);return r&&zV(r.draft,e)&&PV(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=jV.get(e.runtimeMemoryKey);t&&zV(t.draft,e)&&PV(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function GV(e){let t=jV.get(e.runtimeMemoryKey);t&&zV(t.draft,e)&&PV(e.runtimeMemoryKey,{draft:{...OV}})}async function KV(e,t,n){if(!e.source)return null;let r;try{r=await Cr.getState().finalizeDraftOwnership({source:e.source.key,destination:C(e.runtime,t),expectedSourceRevision:e.source.revision,disposition:n,runtime:e.runtime})}catch{return console.warn(`[session-ui-store] draft ownership finalization rejected`,{disposition:n,sessionID:t,draftID:e.draftID}),null}return r.status!==`committed`&&console.warn(`[session-ui-store] draft ownership finalization did not commit`,{status:r.status,disposition:n,sessionID:t,draftID:e.draftID}),r}function qV(e,t){let n=t??e.directory??null;n&&hd(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function JV(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=_(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!BV(l,r);qV(e,c);let f=Nf.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&XT.getState().addSessionToFolder(t,a,e.id)}return d||(SV({projectId:o??null,directory:c}),DV(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),Vo.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(Vo.getState().saveSessionAgentSelection(e.id,p),Vo.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),Vo.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),LV(c,$.getState().availableWorktreesByProject),u&&Ye(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>kA);return{usePermissionStore:e}},void 0).then(({usePermissionStore:t})=>t.getState().setSessionAutoAccept(e.id,!0)).catch(e=>{console.warn(`Failed to apply draft permission auto-accept to new session:`,e)})),d&&r&&GV(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function YV(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await oE(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await IV(t,n);let r=t??V.getDirectory();return{directory:_(r),projectId:n}}async function XV(e,t){let n=await UV(t);if(!n)return null;let{draft:r}=n,i=typeof e.agent==`string`&&e.agent.trim().length>0?e.agent.trim():void 0;try{let{directory:a}=await YV(r),o=a??V.getDirectory(),s=await jx(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&cS({sessionId:s.id,messageID:t.info.id,content:``,providerID:e.providerID,modelID:e.modelID,agent:i,directory:a??s.directory??null,parts:t.parts}),{materialized:await JV(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return WV(n),null}}async function ZV(e){let t=await XV(e);return t?(await KV(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var QV=2,$V=300;async function eH(e){let{useI18nStore:t,formatMessage:n}=await Ye(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DIpqFVjs.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:r}=t.getState();return Error(n(r,e))}async function tH(e){let{content:t,providerID:n,modelID:r,agent:i,agentMentionName:a,variant:o,attachments:s,additionalParts:c,onSessionReady:l}=e,u=$.getState().newSessionDraft,d=typeof i==`string`&&i.trim().length>0?i.trim():void 0,f=Nf.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??he(`msg`),h=fV({messageID:m,sessionID:`draft:pending`,providerID:n,modelID:r,agent:p,text:t,attachments:s,additionalParts:u.syntheticParts?.length?[...c||[],...u.syntheticParts]:c,agentMentionName:a}),g=await UV(h);if(!g)throw await eH(`chat.chatInput.toast.messageSendFailed`);let{draft:_}=g;try{let e=s?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))??[],i=(_.syntheticParts?.length?[...c||[],..._.syntheticParts]:c)?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))})),u=a?[{name:a}]:void 0,{directory:d}=await YV(_),f=await V.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=we()?.conversations;if(!v?.createWithPrompt)throw await eH(`chat.chatInput.toast.messageSendFailed`);let y=d??V.getDirectory()??``,b=Kb(y,{bootstrap:!1}),x=()=>RV(Cr.getState().captureDraftRuntime(),g.runtime),S;for(let e=0;e<=QV;e++){e>0&&await new Promise(e=>setTimeout(e,$V));try{if(S=await v.createWithPrompt({input:{type:`prompt`},directory:y,..._.title?{title:_.title}:{},..._.parentID?{parentID:_.parentID}:{},messageID:m,model:{providerID:n,modelID:r},...p?{agent:p}:{},...o?{variant:o}:{},parts:f}),!S||S.ok||S.phase!==`unavailable`||(S=void 0,e===QV))break}catch{if(e===QV)break}}if(!S)throw WV(g),Cr.getState().setPendingInputText(t,`replace`),await eH(`chat.chatInput.toast.messageSendFailed`);if(S.ok){let e=S.session,t=d??e.directory??null,i=t??y;qV(e,t);let a=i===y?b:Kb(i,{bootstrap:!1});mV(e.id,h);let s=await JV(e,{providerID:n,modelID:r,agent:p,variant:o},{directory:t,agent:p,draftProjectId:_.selectedProjectId,targetFolderId:_.targetFolderId,draftSyntheticParts:_.syntheticParts},g);{let t=a.getState();Object.prototype.hasOwnProperty.call(t.session_status??{},e.id)||a.setState({session_status:{...t.session_status,[e.id]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.id]:Date.now()}})}await KV(g,e.id,`consume`),gV(e.id,m),s.selected&&RS(e.id),_S({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:x}).then(t=>{t===`missing`&&console.warn(`[combined] sent user message never materialized`,{sessionId:e.id,messageID:m,directory:i})}).catch(t=>{console.warn(`[combined] sent user message presence check failed`,{sessionId:e.id,messageID:m,directory:i,error:t instanceof Error?t.message:String(t)})}),l?.(e.id,t);return}if(!S.ok){let e=S.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw WV(g),Cr.getState().setPendingInputText(t,`replace`),await eH(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=S,i=e.session,a=d??i.directory??null,s=await JV(i,{providerID:n,modelID:r,agent:p,variant:o},{directory:a,agent:p,draftProjectId:_.selectedProjectId,targetFolderId:_.targetFolderId,draftSyntheticParts:_.syntheticParts},g);if(e.ambiguous){let e=await uS(i.id,m,a,{isCurrent:x});if(e&&x()){await KV(g,i.id,`consume`),gV(i.id,m),s.selected&&RS(i.id),dS(Kb(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await KV(g,i.id,`preserve`),Cr.getState().setPendingInputText(t,`replace`),await eH(`chat.chatInput.toast.sendStatusUnknown`)}throw await KV(g,i.id,`preserve`),Cr.getState().setPendingInputText(t,`replace`),await eH(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw WV(g),e}}var nH=`oc.worktreeMap`,rH=()=>{try{let e=f().getItem(nH);if(!e)return new Map;let t=JSON.parse(e);return Array.isArray(t)?new Map(t.filter(e=>Array.isArray(e)&&typeof e[0]==`string`&&Array.isArray(e[1]))):new Map}catch{return new Map}},iH=e=>{try{f().setItem(nH,e)}catch{}},aH=e=>{let t=[];for(let n of e.values())t.push(...n);return t},oH=rH(),$=De()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...OV},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:aH(oH),availableWorktreesByProject:oH,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,sessionPlanAvailable:new Map,pendingChangesBarDismissed:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map,clearRetainedPendingUserMessages:(t,n)=>{!t||n.length===0||e(e=>{let r=e.retainedPendingUserMessages.get(t);if(!r?.length)return e;let i=new Set(n),a=r.filter(e=>!i.has(e.info.id));if(a.length===r.length)return e;let o=new Map(e.retainedPendingUserMessages);return a.length===0?o.delete(t):o.set(t,a),{retainedPendingUserMessages:o}})},clearStagedMessageEdit:t=>{e(e=>!e.stagedMessageEdit||t&&e.stagedMessageEdit.sessionId!==t?e:{stagedMessageEdit:null})},beginMessageEditCommit:(t,n)=>{e({messageEditCommitting:{sessionId:t,messageId:n}})},endMessageEditCommit:(t,n)=>{e(e=>{let r=e.messageEditCommitting;return!r||r.sessionId!==t||r.messageId!==n?e:{messageEditCommitting:null}})},markMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)===n)return e;let r=new Map(e.pendingSendMessageIDs);return r.set(t,n),{pendingSendMessageIDs:r}})},clearMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)!==n)return e;let r=new Map(e.pendingSendMessageIDs);return r.delete(t),{pendingSendMessageIDs:r}})},setCurrentSession:(n,r)=>{lV(n),b(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(iV(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Cr.getState().setActiveAttachmentDraft(n?C({transportIdentity:i()},n):null);let s=MV();kV.set(s,n);let c=He.getState(),l=TV(n,e=>t().worktreeMetadata.get(e)),u=V.getDirectory()??c.currentDirectory??null,d=(r?_(r):null)??l??u,f=vi.getState(),p=d?Go(f.projects,t().availableWorktreesByProject,d):null;e({currentSessionId:n,currentSessionDirectory:n?d??null:null}),PV(s,{sessionId:n,directory:d??null}),a!==n&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?d??null:null}),n&&FS(n,d);try{d&&c.currentDirectory!==d&&c.setDirectory(d,{showOverlay:!1}),p&&f.activeProjectId!==p.id&&f.setActiveProjectIdOnly(p.id),V.setDirectory(d??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!BB(e)?.isStreaming){let t=Td(e);t.length>0&&VB.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(AO(n),_M(d??``,n))},prepareForRuntimeSwitch:n=>{let r=MV(n),i=He.getState().currentDirectory||null,a=t().currentSessionId,o=i?_d(i):null;$A({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),kV.set(r,t().currentSessionId),PV(r,{sessionId:a,directory:i,draft:NV(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=MV(t),r=jV.get(n),a=r?.sessionId??kV.get(n)??null;b(a);let o=r?.draft?NV(r.draft):{...OV},s=r?.directory??null;s&&He.getState().setDirectory(s,{showOverlay:!1}),e({currentSessionId:a,currentSessionDirectory:a?s:null,newSessionDraft:a?{...OV}:o,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,sessionAbortFlags:new Map,queueAbortBlocks:new Map,pendingChangesBarDismissed:new Map,retainedPendingUserMessages:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map}),Cr.getState().setActiveAttachmentDraft(a?C({transportIdentity:i()},a):o.open&&o.draftID?S({transportIdentity:i()},o.draftID):null),a?_M(s??V.getDirectory()??``,a):_M(``,``)},openNewSessionDraft:n=>{if(jP.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let a=vi.getState(),o=a.projects,s=t().availableWorktreesByProject,c=_(t().currentSessionDirectory??null),l=_(He.getState().currentDirectory??null),u=xV(),d=n?.directoryOverride===void 0?null:_(n.directoryOverride),f=CV(o,s,d),p=n?.ensureProjectForDirectory&&d&&!f?a.addProject(d):null;p&&(a=vi.getState());let h=a.projects,g=a.getActiveProject(),v=n?.selectedProjectId?h.find(e=>e.id===n.selectedProjectId)??null:null,y=g||(a.activeProjectId?h.find(e=>e.id===a.activeProjectId)??null:h[0]??null),x=u?.projectId?h.find(e=>e.id===u.projectId)??null:null,C=CV(h,s,u?.directory??null),w=CV(h,s,c),T=CV(h,s,l),E=v||(d===null?w||(l?T:C??x??y):p??f),D=d===null?v?_(v.path??null):c||l||(u?.directory?u.directory:_(E?.path??null)):d;SV({projectId:E?.id??null,directory:D}),E&&a.activeProjectId!==E.id&&a.setActiveProjectIdOnly(E.id);let O=le({projectId:E?.id??null,directory:D}),k=S({transportIdentity:i()},O),A=Cr.getState().getDraft(k),j={open:!0,draftID:O,selectedProjectId:E?.id??null,directoryOverride:D,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:_(n?.bootstrapPendingDirectory??null),preserveDirectoryOverride:n?.preserveDirectoryOverride===!0,parentID:n?.parentID??null,title:n?.title,initialPrompt:n?.initialPrompt,syntheticParts:n?.syntheticParts,targetFolderId:n?.targetFolderId,submissionToken:r.open&&r.draftID===O?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},ee=t().currentSessionId,te=t().currentSessionDirectory;e({newSessionDraft:{...j},currentSessionId:null,currentSessionDirectory:null,error:null}),b(null),m.getState().setActiveMainTab(`chat`),ee&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:ee,previousDirectory:te,nextSessionId:null,nextDirectory:null}),PV(MV(),{sessionId:null,directory:D,draft:j}),Cr.getState().setActiveAttachmentDraft(k),A||Cr.getState().clearAttachedFiles(),n?.initialPrompt&&Cr.getState().setPendingInputText(n.initialPrompt);let M=_(E?.path??null)??D,ne=E?_(M):null,re=j.draftID,ie=i();DV(M,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=_(Nf.getState().activeDirectoryKey);!e.open||e.draftID!==re||i()!==ie||!ne||n!==ne||Nf.getState().applyDefaultModelAgentSelection({projectDefaultModel:E?.defaultModel})}),D&&D!==He.getState().currentDirectory&&He.getState().setDirectory(D)},closeNewSessionDraft:()=>{let t={open:!1,draftID:null,selectedProjectId:null,directoryOverride:null,pendingWorktreeRequestId:null,bootstrapPendingDirectory:null,preserveDirectoryOverride:!1,parentID:null,title:void 0,initialPrompt:void 0,syntheticParts:void 0,targetFolderId:void 0,draftSubmitting:!1,draftEstablishing:!1};e({newSessionDraft:t}),PV(MV(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=_(t.directoryOverride??e.newSessionDraft.directoryOverride);let i=n?.force===!0;return{newSessionDraft:{...e.newSessionDraft,selectedProjectId:t.projectId??t.selectedProjectId??e.newSessionDraft.selectedProjectId,directoryOverride:t.directoryOverride??e.newSessionDraft.directoryOverride,...i?{bootstrapPendingDirectory:null,preserveDirectoryOverride:!1}:{}}}}),DV(r,{source:`setNewSessionDraftTarget`}),r&&r!==He.getState().currentDirectory&&He.getState().setDirectory(r)},setDraftPreserveDirectoryOverride:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,preserveDirectoryOverride:t}}:e),setDraftPermissionAutoAcceptEnabled:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,permissionAutoAcceptEnabled:t}}:e),acknowledgeSessionAbort:t=>e(e=>{let n=new Map(e.sessionAbortFlags),r=n.get(t);return r&&n.set(t,{...r,acknowledged:!0}),{sessionAbortFlags:n}}),beginQueueAbortBlock:(t,n=2e3)=>{let r=P(),i=D(t);return e(e=>{let t=new Map(e.queueAbortBlocks);return t.set(i,{token:r,expiresAt:Date.now()+n}),{queueAbortBlocks:t}}),r},clearQueueAbortBlock:(t,n)=>e(e=>{let r=D(t);if(e.queueAbortBlocks.get(r)?.token!==n)return e;let i=new Map(e.queueAbortBlocks);return i.delete(r),{queueAbortBlocks:i}}),pruneQueueAbortBlocks:(t=Date.now())=>e(e=>{let n;for(let[r,i]of e.queueAbortBlocks)i.expiresAt>t||(n||=new Map(e.queueAbortBlocks),n.delete(r));return n?{queueAbortBlocks:n}:e}),clearAbortPrompt:()=>e({abortPromptSessionId:null,abortPromptExpiresAt:null}),armAbortPrompt:(n=5e3)=>{let{currentSessionId:r}=t();if(!r)return null;let i=Date.now()+n;return e({abortPromptSessionId:r,abortPromptExpiresAt:i}),i},clearError:()=>e({error:null}),markSessionAsOpenChamberCreated:t=>e(e=>{let n=new Set(e.webUICreatedSessions);return n.add(t),{webUICreatedSessions:n}}),isOpenChamberCreatedSession:e=>t().webUICreatedSessions.has(e),getContextUsage:(e,n)=>{if(t().newSessionDraft?.open)return null;let r=t().currentSessionId;if(!r)return null;let i=Td(r);if(i.length===0)return null;let a,o;for(let e=i.length-1;e>=0;e--){let t=i[e];if(t.role!==`assistant`)continue;let n=t.tokens;if(n&&n.input+n.output+n.reasoning+(n.cache?.read??0)+(n.cache?.write??0)>0){a=n,o=t.id;break}}if(!a)return null;let s=a.input+a.output+a.reasoning+(a.cache?.read??0)+(a.cache?.write??0),c=e>0?e:2e5,l=e>0?Math.round(s/e*100):0,u=n>0?Math.round(a.output/n*100):void 0;return{totalTokens:s,percentage:l,contextLimit:e||0,outputLimit:n||void 0,normalizedOutput:u,thresholdLimit:c,lastMessageId:o}},initializeNewOpenChamberSession:()=>{},setWorktreeMetadata:(t,n)=>{n?HB.getState().setAttachment(t,{worktreeRoot:n.worktreeRoot??n.path??null,cwd:n.path??null,branch:n.branch??null,headState:n.headState??(n.branch?`branch`:`detached`),worktreeStatus:n.worktreeStatus??`ready`,worktreeSource:n.worktreeSource??null,legacy:!1,degraded:!1}):HB.getState().clearAttachment(t),e(e=>{let r=new Map(e.worktreeMetadata);return n?r.set(t,n):r.delete(t),{worktreeMetadata:r}})},overrideNewSessionDraftTarget:t=>{let n=null;e(e=>{let r={...e.newSessionDraft,...t};return n=_(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),DV(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==He.getState().currentDirectory&&He.getState().setDirectory(n)},resolvePendingDraftWorktreeTarget:(t,n,r)=>e(e=>!e.newSessionDraft?.open||e.newSessionDraft.pendingWorktreeRequestId!==t?e:{newSessionDraft:{...e.newSessionDraft,selectedProjectId:r?.projectId??e.newSessionDraft.selectedProjectId??null,directoryOverride:_(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:_(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:_(t)}}:e),setPendingDraftWorktreeRequest:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,pendingWorktreeRequestId:t}}:e),getWorktreeMetadata:e=>t().worktreeMetadata.get(e),dismissPendingChangesBar:(n,r)=>{let i=new Map(t().pendingChangesBarDismissed);r===null?i.delete(n):i.set(n,r),e({pendingChangesBarDismissed:i})},sendMessage:async(n,r,i,a,o,s,c,l,u,d)=>{let f=t().stagedMessageEdit,p=d?.sessionId??t().currentSessionId,h=d?.commitStagedMessageEdit&&f&&f.sessionId===p?f:null,g=d?.sessionId??t().currentSessionId;if(g){let n=new Map(t().pendingChangesBarDismissed);n.delete(g),e({pendingChangesBarDismissed:n})}let v=t().newSessionDraft,y=typeof a==`string`&&a.trim().length>0?a.trim():void 0,b=u!==`shell`&&n.trim().length>0?MP.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=m.getState(),t=RB(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let S=(e,t)=>{if(!x)return;let r=m.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;MB(e,t??void 0,{objective:a,tokenBudget:i},null).catch(e=>{console.warn(`[session-ui-store] failed to set goal from armed send`,e)})};if(!d?.sessionId&&v?.open){if(u!==`shell`&&!n.trimStart().startsWith(`/`)&&!d?.delivery&&we()?.conversations?.createWithPrompt){await tH({content:n,providerID:r,modelID:i,agent:y,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:d?.messageID,onSessionReady:S});return}let e=d?.messageID??v.pendingUserMessage?.info.id??he(`msg`),a=fV({messageID:e,sessionID:`draft:pending`,providerID:r,modelID:i,agent:y,text:n,attachments:o,additionalParts:v.syntheticParts?.length?[...c||[],...v.syntheticParts]:c,agentMentionName:s}),f=await XV({providerID:r,modelID:i,agent:y,variant:l},a);if(!f)throw Error(`Failed to create session`);let{materialized:p,claim:m}=f,h=p.syntheticParts?.length?[...c||[],...p.syntheticParts]:c;RS(p.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await hV({sessionId:p.sessionId,directory:p.directory,content:n,providerID:r,modelID:i,agent:p.agent,agentMentionName:s,variant:l,inputMode:u,files:g,delivery:d?.delivery,messageID:e,optimisticParts:a.parts,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:h?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))}),await KV(m,p.sessionId,`consume`)}catch(e){throw await KV(m,p.sessionId,`preserve`),e}LV(p.directory,t().availableWorktreesByProject),S(p.sessionId,p.directory);return}let C=d?.sessionId??t().currentSessionId,w=C?Vo.getState().getSessionAgentSelection(C):null,T=Nf.getState().currentAgentName,E=y||w||T||void 0;if(C&&Vo.getState().saveSessionModelSelection(C,r,i),C&&E&&(Vo.getState().saveSessionAgentSelection(C,E),Vo.getState().saveAgentModelForSession(C,E,r,i),Vo.getState().saveAgentModelVariantForSession(C,E,r,i,l)),C){let e=VB.getState(),t=BB(C);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(zB(C),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),VB.setState({sessionMemoryState:n})}}let D=C?_(d?.directoryHint)??_(t().getDirectoryForSession(C)):null;C&&RS(C);let O=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(h)try{await kS(h.sessionId,h.messageId,{directory:D??void 0}),t().stagedMessageEdit===h&&e({stagedMessageEdit:null})}catch(e){throw t().endMessageEditCommit(h.sessionId,h.messageId),e}try{await hV({sessionId:C||``,directory:D,content:n,providerID:r,modelID:i,agent:E,agentMentionName:s,variant:l,inputMode:u,files:O,delivery:d?.delivery,messageID:d?.messageID,ticket:d?.ticket,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:c?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))})}finally{h&&t().endMessageEditCommit(h.sessionId,h.messageId)}LV(D,t().availableWorktreesByProject),C&&S(C,D)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await jx(n,r??V.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),PV(MV(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&XT.getState().addSessionToFolder(e,s,o.id)}return o}catch(n){return console.error(`[session-ui-store] createSession failed`,n),c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),PV(MV(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>Wx(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await Wx(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>qx(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await qx(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await Yx(e,t)},requestSessionSmartTitle:async e=>{await Xx(e)},shareSession:async e=>Zx(e),unshareSession:async e=>Qx(e),revertToMessage:async(e,t,n)=>{await CS(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await TS(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Td(e),r=xd().find(t=>t.id===e)?.revert?.messageID,i=os(n,r);if(!i)return;let a=Ed(i.id).find(e=>e.type===`text`),o=a?.text?String(a.text).slice(0,50)+(a.text.length>50?`...`:``):`[No text]`;await t().revertToMessage(e,i.id);let{toast:s}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:c,formatMessage:l}=await Ye(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DIpqFVjs.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:u}=c.getState();s.success(l(u,`chat.revert.toast.undo`,{preview:o}))},handleSlashRedo:async(e,n)=>{if(n?.fullUnrevert){let{unrevertSession:t}=await Ye(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>mb);return{unrevertSession:e}},void 0);await t(e);let{toast:n}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:i}=await Ye(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DIpqFVjs.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:a}=r.getState();n.success(i(a,`chat.revert.toast.restored`));return}let r=xd().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=ss(Td(e),r);if(i){await t().revertToMessage(e,i.id,{skipRedoPush:!0});let{toast:n}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:a}=await Ye(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DIpqFVjs.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:o}=r.getState();n.success(a(o,`chat.revert.toast.redo`));return}await MS(e);let{toast:a}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:o,formatMessage:s}=await Ye(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DIpqFVjs.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:c}=o.getState();a.success(s(c,`chat.revert.toast.restored`))},forkFromMessage:async(n,r,i)=>{let a=t().forkTransition;if(a?.operationId,a?.stage,a){console.warn(`[session-fork] forkFromMessage skipped because a transition is active`,{sessionId:n,messageId:r,activeOperationId:a.operationId,activeSourceSessionId:a.sourceSessionId,activeStage:a.stage});return}let o=EV(n),s=++AV;try{let a=i?.directory??t().getDirectoryForSession(n)??V.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:s,sourceSessionId:n,targetSessionId:null,directory:a,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await NS(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));c.success(`Forked from ${o?.title??`session`}`)}catch(e){console.error(`[session-fork] forkFromMessage failed`,{operationId:s,sessionId:n,messageId:r,error:e});let{toast:t}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===s?{forkTransition:null}:e)}},forkCurrentSession:async n=>{let r=t().forkTransition;if(r?.operationId,r?.stage,r){console.warn(`[session-fork] forkCurrentSession skipped because a transition is active`,{sessionId:n,activeOperationId:r.operationId,activeSourceSessionId:r.sourceSessionId,activeStage:r.stage});return}let i=EV(n),a=++AV;try{let r=t().getDirectoryForSession(n)??V.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:a,sourceSessionId:n,targetSessionId:null,directory:r,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await NS(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));o.success(`Forked from ${i?.title??`session`}`)}catch(e){console.error(`[session-fork] forkCurrentSession failed`,{operationId:a,sessionId:n,error:e});let{toast:t}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===a?{forkTransition:null}:e)}},getSessionsByDirectory:e=>{let t=_(e);return t?Sd().filter(e=>vV(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=TV(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=Y.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?zw(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:TV(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Td(e,t().getDirectoryForSession(e)??void 0);for(let e=n.length-1;e>=0;--e){let t=n[e];if(t.role!==`user`)continue;let r=typeof t.model?.providerID==`string`&&t.model.providerID.trim().length>0?t.model.providerID:void 0,i=typeof t.model?.modelID==`string`&&t.model.modelID.trim().length>0?t.model.modelID:void 0,a=typeof t.agent==`string`&&t.agent.trim().length>0?t.agent:typeof t.mode==`string`&&t.mode.trim().length>0?t.mode:void 0,o=t.model?.variant??t.variant,s=typeof o==`string`&&o.trim().length>0?o:void 0;return{id:typeof t.id==`string`?t.id:void 0,agent:a,providerID:r,modelID:i,variant:s}}return null},getCurrentAgent:e=>Vo.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Td(e);xd().find(t=>t.id===e),`${e}`,t.length,t.map(e=>({id:e.id,role:e.role,tokens:e.role===`assistant`?e.tokens:void 0}))},pollForTokenUpdates:()=>{},setSessionDirectory:(n,r)=>{let i=_(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),PV(MV(),{sessionId:n,directory:i}))},markSessionPlanAvailable:t=>{e(e=>{if(e.sessionPlanAvailable.get(t)===!0)return e;let n=new Map(e.sessionPlanAvailable);return n.set(t,!0),{sessionPlanAvailable:n}})},isSessionPlanAvailable:e=>t().sessionPlanAvailable.get(e)??!1}));KA((e,t)=>{$.getState().setCurrentSession(e,t)});var sH=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==sH&&(sH=t,iH(t))}});function cH(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function lH(e){return e.length>1?e.slice(0,-1):[]}function uH(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function dH(e,t){let n=e.at(-1);if(!n||n.sessionId===t.sessionId)return e;let r=e.at(-2);return r?.sessionId===t.sessionId?r.directory===t.directory?e:[...e.slice(0,-2),t,n]:e.length===1?[t,n]:e}var fH={activeTab:`projects`,secondary:null},pH=0,mH=null,hH=e=>{let t=++pH;return mH={generation:t,sessionId:e.sessionId,directory:_(e.directory)??null},t},gH=e=>{let t=mH;return t&&t.generation===pH&&t.sessionId===e.sessionId&&t.directory===(_(e.directory)??null)?(mH=null,`internal`):(mH=null,`external`)},_H=()=>{pH+=1,mH=null},vH=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&_(n)===_(e.directory)?_H():hH(e),t.setCurrentSession(e.sessionId,e.directory??null)},yH=De(e=>({...fH,setActiveTab:t=>{_H(),e({activeTab:t,secondary:null})},openSession:t=>{e({secondary:{kind:`chat`,routes:[xH(t,`root`)]}}),vH(t)},pushSession:t=>{e(e=>{let n=xH(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?cH(e.secondary.routes,n):[n]}}}),vH(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=lH(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=yH.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&vH(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=dH(e.secondary.routes,xH(t,`parent`));return n===e.secondary.routes?e:{secondary:{kind:`chat`,routes:n}}}),replaceChatSession:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=e.secondary.routes.at(-1);return n?.sessionId===t.sessionId&&n.directory===(t.directory??null)?e:{secondary:{kind:`chat`,routes:uH(e.secondary.routes,xH(t,`root`))}}}),materializeDraftSession:t=>e(e=>e.secondary?.kind===`draft`?{secondary:{kind:`chat`,routes:[{key:`chat-primary`,sessionId:t.sessionId,directory:t.directory??null}]}}:e),openDraft:t=>{_H(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{_H(),ot.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},closeSecondary:()=>{_H(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{_H(),e({...fH})}})),bH=1,xH=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${bH++}`,sessionId:e.sessionId,directory:e.directory??null}),SH=e=>!ct()||lt()?!1:(yH.getState().pushSession(e),!0);export{jR as $,xa as $a,Vu as $i,zE as $n,Zy as $r,pP as $t,CB as A,No as Aa,Cp as Ai,bO as An,Lx as Ar,sP as At,Tz as B,po as Ba,zf as Bi,lO as Bn,Xx as Br,dN as Bt,zB as C,Ko as Ca,fm as Ci,fk as Cn,ct as Co,RC as Cr,MP as Ct,NB as D,Vo as Da,Bp as Di,jO as Dn,wC as Dr,OP as Dt,kB as E,Go as Ea,Vp as Ei,OO as En,TC as Er,kP as Et,Kz as F,ko as Fa,Sp as Fi,oO as Fn,kS as Fr,vM as Ft,LR as G,Va as Ga,gd as Gi,rD as Gn,Gx as Gr,IN as Gt,GR as H,Ha,Nf as Hi,aO as Hn,bS as Hr,gP as Ht,aB as I,Ya as Ia,xp as Ii,vO as In,jx as Ir,jj as It,BR as J,Oa as Ja,xd as Ji,aD as Jn,Jx as Jr,LN as Jt,DR as K,pa as Ka,Td as Ki,oD as Kn,Hb as Kr,PN as Kt,Uz as L,qa as La,bp as Li,eO as Ln,SS as Lr,Oj as Lt,xB as M,jo as Ma,_p as Mi,cO as Mn,qx as Mr,XM as Mt,mB as N,Ao as Na,gp as Ni,uO as Nn,rS as Nr,_M as Nt,PB as O,Lo as Oa,zp as Oi,bD as On,BS as Or,jP as Ot,Wz as P,Do as Pa,yp as Pi,iO as Pn,Kx as Pr,yM as Pt,AR as Q,Sa as Qa,Gu as Qi,hD as Qn,eb as Qr,_N as Qt,oB as R,Ja as Ra,Yf as Ri,hO as Rn,Ox as Rr,HN as Rt,VB as S,$o as Sa,wm as Si,pk as Sn,ut as So,Y as Sr,uF as St,FB as T,Uo as Ta,tm as Ti,AO as Tn,EC as Tr,DP as Tt,cz as U,Ua,Cd as Ui,sO as Un,CS as Ur,wj as Ut,UR as V,ao as Va,uf as Vi,dO as Vn,yS as Vr,fN as Vt,Oz as W,La as Wa,Sd as Wi,SO as Wn,aS as Wr,Cj as Wt,zR as X,Ea as Xa,wd as Xi,mD as Xn,dx as Xr,_P as Xt,IR as Y,Da as Ya,hd as Yi,nD as Yn,Yx as Yr,BN as Yt,OR as Z,ha as Za,Pu as Zi,tD as Zn,pb as Zr,cP as Zt,WB as _,ns as _a,lg as _i,NA as _n,Cr as _o,vT as _r,QF as _t,HV as a,iu as aa,Z_ as ai,bN as an,Ti as ao,sE as ar,mR as at,HB as b,Yo as ba,Bm as bi,lA as bn,Kt as bo,mT as br,HF as bt,hV as c,mu as ca,Q_ as ci,uP as cn,vi as co,rE as cr,sR as ct,uV as d,ru as da,Vg as di,VN as dn,Nr as do,bT as dr,tR as dt,uu as ea,Ny as ei,hN as en,ua as eo,EE as er,wR as et,dV as f,W as fa,zg as fi,dP as fn,Ir as fo,XT as fr,qL as ft,qB as g,as as ga,Fg as gi,PA as gn,Tr as go,Vw as gr,XF as gt,aV as h,Rs as ha,Ig as hi,zA as hn,Dr as ho,yT as hr,kL as ht,VV as i,U as ia,J_ as ii,ON as in,wi as io,fE as ir,vR as it,SB as j,Io as ja,hp as ji,fO as jn,vS as jr,eP as jt,vB as k,Fo as ka,Np as ki,_O as kn,zS as kr,uN as kt,$ as l,cu as la,__ as li,lP as ln,Pr as lo,aE as lr,ZL as lt,oV as m,Wl as ma,Hg as mi,WA as mn,Er as mo,pT as mr,UL as mt,SH as n,du as na,Cv as ni,yN as nn,ca as no,AE as nr,CR as nt,fV as o,hu as oa,$_ as oi,SN as on,bi as oo,dE as or,pR as ot,iV as p,Ul as pa,Gg as pi,UA as pn,Fr as po,fT as pr,VL as pt,RR as q,Ca as qa,Ed as qi,sD as qn,TS as qr,FN as qt,yH as r,gu as ra,rv as ri,EN as rn,la as ro,NE as rr,SR as rt,ZV as s,_u as sa,G_ as si,wN as sn,Ci as so,cE as sr,cR as st,gH as t,fu as ta,by as ti,gN as tn,sa as to,OE as tr,TR as tt,lV as u,pu as ua,Bg as ui,kN as un,Lr as uo,iE as ur,GL as ut,KB as v,qo as va,Uh as vi,OA as vn,Gt as vo,hT as vr,X as vt,RB as w,Ho as wa,am as wi,mk as wn,lt as wo,hC as wr,AP as wt,BB as x,Jo as xa,km as xi,Tk as xn,Vt as xo,gT as xr,UF as xt,GB as y,ts as ya,Hh as yi,uA as yn,qt as yo,zw as yr,IF as yt,Pz as z,fo as za,Hf as zi,xO as zn,xS as zr,zN as zt};
475
+ `,jB=async e=>{if(e.length<=5e3)return e;let t=await gB(e);if(t)return t.slice(0,vB);let n=Math.max(0,Math.floor((vB-93)/2)),r=it.getState().dictionary;return zE.error(at(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${AB}${e.slice(-n)}`};async function MB(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await jB(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await DB(e,a),c=Date.now();await EB(e,t,e=>r&&e&&e.id===r.id&&r.status!==`complete`?{...e,objective:s?``:a,objectiveFile:s,tokenBudget:o,status:`active`,statusReason:`resumed`,blockedStreak:0,updatedAt:c}:{id:TB(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function NB(e,t){await EB(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function PB(e,t,n){n===`paused`&&(aB(e),vS(e)),await EB(e,t,e=>e?{...e,status:n,statusReason:n===`active`?`resumed`:n===`complete`?`marked by user`:``,blockedStreak:0,...n===`active`?{turnsUsed:0}:{},updatedAt:Date.now()}:null)}async function FB(e,t){let n=!1;await EB(e,t,e=>(n=e?.status===`active`,null)),OB(e),n&&(aB(e),vS(e))}var IB=`<system-reminder>`,LB=`</system-reminder>`,RB=e=>{let t=e.trim();return t?t.startsWith(IB)&&t.endsWith(LB)?t:`${IB}\n${t}\n${LB}`:``},zB=(e,t=c())=>`${t}\n${e}`,BB=(e,t)=>{let n=VB.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(zB(e))??n.sessionMemoryState.get(e)},VB=De()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??zB(t),s=a.get(o)??(i?void 0:a.get(t))??{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0};return a.set(o,{...s,viewportAnchor:n,...r?{scrollPosition:r}:{},lastAccessedAt:Date.now()}),{sessionMemoryState:a}})})),HB=De((e,t)=>({attachments:new Map,setAttachment:(t,n)=>e(e=>{let r=new Map(e.attachments);return r.set(t,n),{attachments:r}}),getAttachment:e=>t().attachments.get(e),clearAttachment:t=>e(e=>{let n=new Map(e.attachments);return n.delete(t),{attachments:n}})})),UB=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function WB(e,t){if(e){if(!e.degraded&&e.cwd)return UB(e.cwd);if(e.worktreeRoot)return UB(e.worktreeRoot);if(e.cwd)return UB(e.cwd)}return t?UB(t):null}function GB(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function KB(e,t){let n=[];if(t&&t.isClean===!1){let e=t.files?.length;n.push(e==null?{reason:`dirty`}:{reason:`dirty`,dirtyFiles:e})}return e?(e.worktreeStatus===`missing`&&n.push({reason:`missing`}),e.worktreeStatus===`invalid`&&n.push({reason:`invalid`}),e.attentionReason&&n.push({reason:`attention`,attentionReason:e.attentionReason}),n):n}function qB(e){let t=[];e.projectRoot&&t.push({value:e.projectRoot,label:e.rootBranch||e.projectRoot.split(`/`).pop()||e.projectRoot,kind:`root`});let n=e.pendingBootstrapDirectory?UB(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=UB(r.path);if(i===e.projectRoot)continue;let a=i===n;t.push({value:i,label:r.branch?.trim()||r.label||i.split(`/`).pop()||i,kind:`worktree`,pending:a||void 0})}return t}var JB=`openchamber.session-switch.start`,YB=`openchamber.session-switch.highlight-painted`,XB=`openchamber.session-switch.content-committed`,ZB=`data-openchamber-session-switch-highlight-ms`,QB=`data-openchamber-session-switch-content-ms`,$B=`openchamber.session-switch.highlight-latency`,eV=`openchamber.session-switch.content-latency`,tV=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,nV=()=>tV()&&performance.getEntriesByName(JB,`mark`).length>0,rV=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},iV=(e=!1)=>{tV()&&(!e&&performance.getEntriesByName(JB,`mark`).length>0&&performance.getEntriesByName(XB,`mark`).length===0||(performance.clearMarks(JB),performance.clearMarks(YB),performance.clearMarks(XB),performance.clearMeasures($B),performance.clearMeasures(eV),typeof document<`u`&&(document.documentElement.removeAttribute(ZB),document.documentElement.removeAttribute(QB)),performance.mark(JB)))},aV=()=>{if(!nV())return;performance.mark(YB),performance.measure($B,JB,YB);let e=performance.getEntriesByName($B,`measure`).at(-1);e&&rV(ZB,e.duration)},oV=()=>{if(!nV())return;performance.mark(XB),performance.measure(eV,JB,XB);let e=performance.getEntriesByName(eV,`measure`).at(-1);e&&rV(QB,e.duration)},sV={revision:0,sessionId:null},cV=new Set,lV=e=>{sV={revision:sV.revision+1,sessionId:e};for(let e of cV)e(sV);return sV},uV=()=>sV,dV=e=>(cV.add(e),()=>cV.delete(e));function fV(e){let t=e.parts?e.parts.map(e=>({...e})):[];if(e.parts)return{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t};e.text!==void 0&&t.push({id:he(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:he(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:he(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:he(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:he(`prt`),type:`agent`,name:e.agentMentionName}),{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t}}function pV(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function mV(e,t){if(!e)return;let n=pV(t,e);$.setState(t=>{let r=[...(t.retainedPendingUserMessages.get(e)??[]).filter(e=>e.info.id!==n.info.id),n],i=new Map(t.retainedPendingUserMessages);return i.set(e,r),{retainedPendingUserMessages:i}})}async function hV(e){let t=e.directory??void 0,n=_V(e.sessionId,e.onSendConfirmed),r=e.content;if(e.inputMode===`shell`){let r=e.messageID??he(`msg`);return V.shellSession({sessionId:e.sessionId,directory:t,agent:e.agent??``,model:{providerID:e.providerID,modelID:e.modelID},command:e.content}).then(()=>{n(r)})}let a=de(e.content);if(a){let o=a.commandName.toLowerCase(),s=a.argumentsText,c=t??He.getState().currentDirectory??null,l=i(),u=Si(c,l),d=Ba(c,l),f=R.getQueryState(u.queryKey),p=R.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(wi(c,l)):R.fetchQuery({...u,staleTime:1/0}),h?Promise.resolve(Ha(R,c,l)):R.fetchQuery({...d,staleTime:1/0})]);if(i()!==l)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===o)?void 0:g.find(e=>e.name.toLowerCase()===o);if(v?.isBuiltIn===!1)r=`[command:${v.reference??v.name}]${s?` ${s}`:``}`;else if(v)return sS({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>V.sendCommand({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,command:v.name,arguments:s,agent:e.agent,variant:e.variant,files:e.files,messageId:n,directory:t}).then(()=>{})})}return sS({sessionId:e.sessionId,content:r,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.optimisticParts,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>V.sendMessage({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,text:r,agent:e.agent,agentMentions:e.agentMentionName?[{name:e.agentMentionName}]:void 0,variant:e.variant,files:e.files,additionalParts:e.additionalParts,delivery:e.delivery,messageId:n,directory:t}).then(()=>{})})}function gV(e,t){I(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function _V(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{gV(e,r)}}}}var vV=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},yV=f(),bV=`oc.chatInput.lastDraftTarget`,xV=()=>{try{let e=yV.getItem(bV);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:_(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},SV=e=>{try{yV.setItem(bV,JSON.stringify(e))}catch{}},CV=Go,wV=e=>{if(e)return HB.getState().getAttachment(e)},TV=(e,t,n)=>{if(!e)return null;let r=WB(wV(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return _(i);if(n?.includeRuntimeMemory!==!1){let t=jV.get(MV());if(t?.sessionId===e&&t.directory)return _(t.directory)}let a=Sd().find(t=>t.id===e);return a?vV(a):null},EV=e=>{let t=Sd().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},DV=async(e,t)=>{await Nf.getState().activateDirectory(_(e),t)},OV={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},kV=new Map,AV=0,jV=new Map,MV=e=>(e??c()).trim()||`default`,NV=e=>({...e}),PV=(e,t)=>{let n=jV.get(e);jV.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?NV(n.draft):{...OV},...t})},FV=(e,t)=>{let n=vi.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=Go(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},IV=async(e,t)=>{if(!e)return;let n=FV(e,t);n&&await oO(n)&&await hD(e)},LV=(e,t)=>{let n=vi.getState(),r=Go(n.projects,t,e);r&&n.moveProjectToTop(r.id)},RV=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,zV=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,BV=(e,t)=>zV(e,t)&&RV(Cr.getState().captureDraftRuntime(),t.runtime);async function VV(e){let t=!1;if($.setState(n=>{let r=n.newSessionDraft;if(!r?.open||!r.draftID||r.draftSubmitting||r.draftEstablishing)return{};t=!0;let i=e?fV({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return PV(MV(),{draft:a}),{newSessionDraft:a}}),!t)return!1;await new Promise(e=>setTimeout(e,0));let n=$.getState().newSessionDraft;return n.open===!0&&n.draftEstablishing===!0}function HV(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return PV(MV(),{draft:n}),{newSessionDraft:n}})}async function UV(e){let t=null,n=null,r=null;if($.setState(i=>{let a=i.newSessionDraft;if(!a?.open||a.draftSubmitting||!a.draftID)return{};let o=(a.submissionToken??0)+1,s={...a,draftSubmitting:!0,draftEstablishing:!1,submissionToken:o,...e?{pendingUserMessage:e}:{}};return r=MV(),t=s.draftID,n=o,PV(r,{draft:s}),{newSessionDraft:s}}),!t||n===null||!r)return null;await new Promise(e=>setTimeout(e,0));let i=$.getState().newSessionDraft;if(!i.open||i.draftSubmitting!==!0||i.draftID!==t||i.submissionToken!==n)return null;let a=Cr.getState().captureDraftRuntime(),o=S(a,t),s=Cr.getState().getDraft(o);return{token:n,draftID:t,draft:NV(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function WV(e){$.setState(t=>{let n=t.newSessionDraft;if(BV(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=jV.get(e.runtimeMemoryKey);return r&&zV(r.draft,e)&&PV(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=jV.get(e.runtimeMemoryKey);t&&zV(t.draft,e)&&PV(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function GV(e){let t=jV.get(e.runtimeMemoryKey);t&&zV(t.draft,e)&&PV(e.runtimeMemoryKey,{draft:{...OV}})}async function KV(e,t,n){if(!e.source)return null;let r;try{r=await Cr.getState().finalizeDraftOwnership({source:e.source.key,destination:C(e.runtime,t),expectedSourceRevision:e.source.revision,disposition:n,runtime:e.runtime})}catch{return console.warn(`[session-ui-store] draft ownership finalization rejected`,{disposition:n,sessionID:t,draftID:e.draftID}),null}return r.status!==`committed`&&console.warn(`[session-ui-store] draft ownership finalization did not commit`,{status:r.status,disposition:n,sessionID:t,draftID:e.draftID}),r}function qV(e,t){let n=t??e.directory??null;n&&hd(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function JV(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=_(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!BV(l,r);qV(e,c);let f=Nf.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&XT.getState().addSessionToFolder(t,a,e.id)}return d||(SV({projectId:o??null,directory:c}),DV(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),Vo.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(Vo.getState().saveSessionAgentSelection(e.id,p),Vo.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),Vo.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),LV(c,$.getState().availableWorktreesByProject),u&&Ye(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>kA);return{usePermissionStore:e}},void 0).then(({usePermissionStore:t})=>t.getState().setSessionAutoAccept(e.id,!0)).catch(e=>{console.warn(`Failed to apply draft permission auto-accept to new session:`,e)})),d&&r&&GV(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function YV(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await oE(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await IV(t,n);let r=t??V.getDirectory();return{directory:_(r),projectId:n}}async function XV(e,t){let n=await UV(t);if(!n)return null;let{draft:r}=n,i=typeof e.agent==`string`&&e.agent.trim().length>0?e.agent.trim():void 0;try{let{directory:a}=await YV(r),o=a??V.getDirectory(),s=await jx(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&cS({sessionId:s.id,messageID:t.info.id,content:``,providerID:e.providerID,modelID:e.modelID,agent:i,directory:a??s.directory??null,parts:t.parts}),{materialized:await JV(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return WV(n),null}}async function ZV(e){let t=await XV(e);return t?(await KV(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var QV=2,$V=300;async function eH(e){let{useI18nStore:t,formatMessage:n}=await Ye(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-oojlrF4d.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:r}=t.getState();return Error(n(r,e))}async function tH(e){let{content:t,providerID:n,modelID:r,agent:i,agentMentionName:a,variant:o,attachments:s,additionalParts:c,onSessionReady:l}=e,u=$.getState().newSessionDraft,d=typeof i==`string`&&i.trim().length>0?i.trim():void 0,f=Nf.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??he(`msg`),h=fV({messageID:m,sessionID:`draft:pending`,providerID:n,modelID:r,agent:p,text:t,attachments:s,additionalParts:u.syntheticParts?.length?[...c||[],...u.syntheticParts]:c,agentMentionName:a}),g=await UV(h);if(!g)throw await eH(`chat.chatInput.toast.messageSendFailed`);let{draft:_}=g;try{let e=s?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))??[],i=(_.syntheticParts?.length?[...c||[],..._.syntheticParts]:c)?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))})),u=a?[{name:a}]:void 0,{directory:d}=await YV(_),f=await V.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=we()?.conversations;if(!v?.createWithPrompt)throw await eH(`chat.chatInput.toast.messageSendFailed`);let y=d??V.getDirectory()??``,b=Kb(y,{bootstrap:!1}),x=()=>RV(Cr.getState().captureDraftRuntime(),g.runtime),S;for(let e=0;e<=QV;e++){e>0&&await new Promise(e=>setTimeout(e,$V));try{if(S=await v.createWithPrompt({input:{type:`prompt`},directory:y,..._.title?{title:_.title}:{},..._.parentID?{parentID:_.parentID}:{},messageID:m,model:{providerID:n,modelID:r},...p?{agent:p}:{},...o?{variant:o}:{},parts:f}),!S||S.ok||S.phase!==`unavailable`||(S=void 0,e===QV))break}catch{if(e===QV)break}}if(!S)throw WV(g),Cr.getState().setPendingInputText(t,`replace`),await eH(`chat.chatInput.toast.messageSendFailed`);if(S.ok){let e=S.session,t=d??e.directory??null,i=t??y;qV(e,t);let a=i===y?b:Kb(i,{bootstrap:!1});mV(e.id,h);let s=await JV(e,{providerID:n,modelID:r,agent:p,variant:o},{directory:t,agent:p,draftProjectId:_.selectedProjectId,targetFolderId:_.targetFolderId,draftSyntheticParts:_.syntheticParts},g);{let t=a.getState();Object.prototype.hasOwnProperty.call(t.session_status??{},e.id)||a.setState({session_status:{...t.session_status,[e.id]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.id]:Date.now()}})}await KV(g,e.id,`consume`),gV(e.id,m),s.selected&&RS(e.id),_S({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:x}).then(t=>{t===`missing`&&console.warn(`[combined] sent user message never materialized`,{sessionId:e.id,messageID:m,directory:i})}).catch(t=>{console.warn(`[combined] sent user message presence check failed`,{sessionId:e.id,messageID:m,directory:i,error:t instanceof Error?t.message:String(t)})}),l?.(e.id,t);return}if(!S.ok){let e=S.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw WV(g),Cr.getState().setPendingInputText(t,`replace`),await eH(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=S,i=e.session,a=d??i.directory??null,s=await JV(i,{providerID:n,modelID:r,agent:p,variant:o},{directory:a,agent:p,draftProjectId:_.selectedProjectId,targetFolderId:_.targetFolderId,draftSyntheticParts:_.syntheticParts},g);if(e.ambiguous){let e=await uS(i.id,m,a,{isCurrent:x});if(e&&x()){await KV(g,i.id,`consume`),gV(i.id,m),s.selected&&RS(i.id),dS(Kb(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await KV(g,i.id,`preserve`),Cr.getState().setPendingInputText(t,`replace`),await eH(`chat.chatInput.toast.sendStatusUnknown`)}throw await KV(g,i.id,`preserve`),Cr.getState().setPendingInputText(t,`replace`),await eH(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw WV(g),e}}var nH=`oc.worktreeMap`,rH=()=>{try{let e=f().getItem(nH);if(!e)return new Map;let t=JSON.parse(e);return Array.isArray(t)?new Map(t.filter(e=>Array.isArray(e)&&typeof e[0]==`string`&&Array.isArray(e[1]))):new Map}catch{return new Map}},iH=e=>{try{f().setItem(nH,e)}catch{}},aH=e=>{let t=[];for(let n of e.values())t.push(...n);return t},oH=rH(),$=De()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...OV},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:aH(oH),availableWorktreesByProject:oH,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,sessionPlanAvailable:new Map,pendingChangesBarDismissed:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map,clearRetainedPendingUserMessages:(t,n)=>{!t||n.length===0||e(e=>{let r=e.retainedPendingUserMessages.get(t);if(!r?.length)return e;let i=new Set(n),a=r.filter(e=>!i.has(e.info.id));if(a.length===r.length)return e;let o=new Map(e.retainedPendingUserMessages);return a.length===0?o.delete(t):o.set(t,a),{retainedPendingUserMessages:o}})},clearStagedMessageEdit:t=>{e(e=>!e.stagedMessageEdit||t&&e.stagedMessageEdit.sessionId!==t?e:{stagedMessageEdit:null})},beginMessageEditCommit:(t,n)=>{e({messageEditCommitting:{sessionId:t,messageId:n}})},endMessageEditCommit:(t,n)=>{e(e=>{let r=e.messageEditCommitting;return!r||r.sessionId!==t||r.messageId!==n?e:{messageEditCommitting:null}})},markMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)===n)return e;let r=new Map(e.pendingSendMessageIDs);return r.set(t,n),{pendingSendMessageIDs:r}})},clearMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)!==n)return e;let r=new Map(e.pendingSendMessageIDs);return r.delete(t),{pendingSendMessageIDs:r}})},setCurrentSession:(n,r)=>{lV(n),b(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(iV(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Cr.getState().setActiveAttachmentDraft(n?C({transportIdentity:i()},n):null);let s=MV();kV.set(s,n);let c=He.getState(),l=TV(n,e=>t().worktreeMetadata.get(e)),u=V.getDirectory()??c.currentDirectory??null,d=(r?_(r):null)??l??u,f=vi.getState(),p=d?Go(f.projects,t().availableWorktreesByProject,d):null;e({currentSessionId:n,currentSessionDirectory:n?d??null:null}),PV(s,{sessionId:n,directory:d??null}),a!==n&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?d??null:null}),n&&FS(n,d);try{d&&c.currentDirectory!==d&&c.setDirectory(d,{showOverlay:!1}),p&&f.activeProjectId!==p.id&&f.setActiveProjectIdOnly(p.id),V.setDirectory(d??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!BB(e)?.isStreaming){let t=Td(e);t.length>0&&VB.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(AO(n),_M(d??``,n))},prepareForRuntimeSwitch:n=>{let r=MV(n),i=He.getState().currentDirectory||null,a=t().currentSessionId,o=i?_d(i):null;$A({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),kV.set(r,t().currentSessionId),PV(r,{sessionId:a,directory:i,draft:NV(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=MV(t),r=jV.get(n),a=r?.sessionId??kV.get(n)??null;b(a);let o=r?.draft?NV(r.draft):{...OV},s=r?.directory??null;s&&He.getState().setDirectory(s,{showOverlay:!1}),e({currentSessionId:a,currentSessionDirectory:a?s:null,newSessionDraft:a?{...OV}:o,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,sessionAbortFlags:new Map,queueAbortBlocks:new Map,pendingChangesBarDismissed:new Map,retainedPendingUserMessages:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map}),Cr.getState().setActiveAttachmentDraft(a?C({transportIdentity:i()},a):o.open&&o.draftID?S({transportIdentity:i()},o.draftID):null),a?_M(s??V.getDirectory()??``,a):_M(``,``)},openNewSessionDraft:n=>{if(jP.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let a=vi.getState(),o=a.projects,s=t().availableWorktreesByProject,c=_(t().currentSessionDirectory??null),l=_(He.getState().currentDirectory??null),u=xV(),d=n?.directoryOverride===void 0?null:_(n.directoryOverride),f=CV(o,s,d),p=n?.ensureProjectForDirectory&&d&&!f?a.addProject(d):null;p&&(a=vi.getState());let h=a.projects,g=a.getActiveProject(),v=n?.selectedProjectId?h.find(e=>e.id===n.selectedProjectId)??null:null,y=g||(a.activeProjectId?h.find(e=>e.id===a.activeProjectId)??null:h[0]??null),x=u?.projectId?h.find(e=>e.id===u.projectId)??null:null,C=CV(h,s,u?.directory??null),w=CV(h,s,c),T=CV(h,s,l),E=v||(d===null?w||(l?T:C??x??y):p??f),D=d===null?v?_(v.path??null):c||l||(u?.directory?u.directory:_(E?.path??null)):d;SV({projectId:E?.id??null,directory:D}),E&&a.activeProjectId!==E.id&&a.setActiveProjectIdOnly(E.id);let O=le({projectId:E?.id??null,directory:D}),k=S({transportIdentity:i()},O),A=Cr.getState().getDraft(k),j={open:!0,draftID:O,selectedProjectId:E?.id??null,directoryOverride:D,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:_(n?.bootstrapPendingDirectory??null),preserveDirectoryOverride:n?.preserveDirectoryOverride===!0,parentID:n?.parentID??null,title:n?.title,initialPrompt:n?.initialPrompt,syntheticParts:n?.syntheticParts,targetFolderId:n?.targetFolderId,submissionToken:r.open&&r.draftID===O?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},ee=t().currentSessionId,te=t().currentSessionDirectory;e({newSessionDraft:{...j},currentSessionId:null,currentSessionDirectory:null,error:null}),b(null),m.getState().setActiveMainTab(`chat`),ee&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:ee,previousDirectory:te,nextSessionId:null,nextDirectory:null}),PV(MV(),{sessionId:null,directory:D,draft:j}),Cr.getState().setActiveAttachmentDraft(k),A||Cr.getState().clearAttachedFiles(),n?.initialPrompt&&Cr.getState().setPendingInputText(n.initialPrompt);let M=_(E?.path??null)??D,ne=E?_(M):null,re=j.draftID,ie=i();DV(M,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=_(Nf.getState().activeDirectoryKey);!e.open||e.draftID!==re||i()!==ie||!ne||n!==ne||Nf.getState().applyDefaultModelAgentSelection({projectDefaultModel:E?.defaultModel})}),D&&D!==He.getState().currentDirectory&&He.getState().setDirectory(D)},closeNewSessionDraft:()=>{let t={open:!1,draftID:null,selectedProjectId:null,directoryOverride:null,pendingWorktreeRequestId:null,bootstrapPendingDirectory:null,preserveDirectoryOverride:!1,parentID:null,title:void 0,initialPrompt:void 0,syntheticParts:void 0,targetFolderId:void 0,draftSubmitting:!1,draftEstablishing:!1};e({newSessionDraft:t}),PV(MV(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=_(t.directoryOverride??e.newSessionDraft.directoryOverride);let i=n?.force===!0;return{newSessionDraft:{...e.newSessionDraft,selectedProjectId:t.projectId??t.selectedProjectId??e.newSessionDraft.selectedProjectId,directoryOverride:t.directoryOverride??e.newSessionDraft.directoryOverride,...i?{bootstrapPendingDirectory:null,preserveDirectoryOverride:!1}:{}}}}),DV(r,{source:`setNewSessionDraftTarget`}),r&&r!==He.getState().currentDirectory&&He.getState().setDirectory(r)},setDraftPreserveDirectoryOverride:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,preserveDirectoryOverride:t}}:e),setDraftPermissionAutoAcceptEnabled:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,permissionAutoAcceptEnabled:t}}:e),acknowledgeSessionAbort:t=>e(e=>{let n=new Map(e.sessionAbortFlags),r=n.get(t);return r&&n.set(t,{...r,acknowledged:!0}),{sessionAbortFlags:n}}),beginQueueAbortBlock:(t,n=2e3)=>{let r=P(),i=D(t);return e(e=>{let t=new Map(e.queueAbortBlocks);return t.set(i,{token:r,expiresAt:Date.now()+n}),{queueAbortBlocks:t}}),r},clearQueueAbortBlock:(t,n)=>e(e=>{let r=D(t);if(e.queueAbortBlocks.get(r)?.token!==n)return e;let i=new Map(e.queueAbortBlocks);return i.delete(r),{queueAbortBlocks:i}}),pruneQueueAbortBlocks:(t=Date.now())=>e(e=>{let n;for(let[r,i]of e.queueAbortBlocks)i.expiresAt>t||(n||=new Map(e.queueAbortBlocks),n.delete(r));return n?{queueAbortBlocks:n}:e}),clearAbortPrompt:()=>e({abortPromptSessionId:null,abortPromptExpiresAt:null}),armAbortPrompt:(n=5e3)=>{let{currentSessionId:r}=t();if(!r)return null;let i=Date.now()+n;return e({abortPromptSessionId:r,abortPromptExpiresAt:i}),i},clearError:()=>e({error:null}),markSessionAsOpenChamberCreated:t=>e(e=>{let n=new Set(e.webUICreatedSessions);return n.add(t),{webUICreatedSessions:n}}),isOpenChamberCreatedSession:e=>t().webUICreatedSessions.has(e),getContextUsage:(e,n)=>{if(t().newSessionDraft?.open)return null;let r=t().currentSessionId;if(!r)return null;let i=Td(r);if(i.length===0)return null;let a,o;for(let e=i.length-1;e>=0;e--){let t=i[e];if(t.role!==`assistant`)continue;let n=t.tokens;if(n&&n.input+n.output+n.reasoning+(n.cache?.read??0)+(n.cache?.write??0)>0){a=n,o=t.id;break}}if(!a)return null;let s=a.input+a.output+a.reasoning+(a.cache?.read??0)+(a.cache?.write??0),c=e>0?e:2e5,l=e>0?Math.round(s/e*100):0,u=n>0?Math.round(a.output/n*100):void 0;return{totalTokens:s,percentage:l,contextLimit:e||0,outputLimit:n||void 0,normalizedOutput:u,thresholdLimit:c,lastMessageId:o}},initializeNewOpenChamberSession:()=>{},setWorktreeMetadata:(t,n)=>{n?HB.getState().setAttachment(t,{worktreeRoot:n.worktreeRoot??n.path??null,cwd:n.path??null,branch:n.branch??null,headState:n.headState??(n.branch?`branch`:`detached`),worktreeStatus:n.worktreeStatus??`ready`,worktreeSource:n.worktreeSource??null,legacy:!1,degraded:!1}):HB.getState().clearAttachment(t),e(e=>{let r=new Map(e.worktreeMetadata);return n?r.set(t,n):r.delete(t),{worktreeMetadata:r}})},overrideNewSessionDraftTarget:t=>{let n=null;e(e=>{let r={...e.newSessionDraft,...t};return n=_(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),DV(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==He.getState().currentDirectory&&He.getState().setDirectory(n)},resolvePendingDraftWorktreeTarget:(t,n,r)=>e(e=>!e.newSessionDraft?.open||e.newSessionDraft.pendingWorktreeRequestId!==t?e:{newSessionDraft:{...e.newSessionDraft,selectedProjectId:r?.projectId??e.newSessionDraft.selectedProjectId??null,directoryOverride:_(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:_(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:_(t)}}:e),setPendingDraftWorktreeRequest:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,pendingWorktreeRequestId:t}}:e),getWorktreeMetadata:e=>t().worktreeMetadata.get(e),dismissPendingChangesBar:(n,r)=>{let i=new Map(t().pendingChangesBarDismissed);r===null?i.delete(n):i.set(n,r),e({pendingChangesBarDismissed:i})},sendMessage:async(n,r,i,a,o,s,c,l,u,d)=>{let f=t().stagedMessageEdit,p=d?.sessionId??t().currentSessionId,h=d?.commitStagedMessageEdit&&f&&f.sessionId===p?f:null,g=d?.sessionId??t().currentSessionId;if(g){let n=new Map(t().pendingChangesBarDismissed);n.delete(g),e({pendingChangesBarDismissed:n})}let v=t().newSessionDraft,y=typeof a==`string`&&a.trim().length>0?a.trim():void 0,b=u!==`shell`&&n.trim().length>0?MP.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=m.getState(),t=RB(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let S=(e,t)=>{if(!x)return;let r=m.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;MB(e,t??void 0,{objective:a,tokenBudget:i},null).catch(e=>{console.warn(`[session-ui-store] failed to set goal from armed send`,e)})};if(!d?.sessionId&&v?.open){if(u!==`shell`&&!n.trimStart().startsWith(`/`)&&!d?.delivery&&we()?.conversations?.createWithPrompt){await tH({content:n,providerID:r,modelID:i,agent:y,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:d?.messageID,onSessionReady:S});return}let e=d?.messageID??v.pendingUserMessage?.info.id??he(`msg`),a=fV({messageID:e,sessionID:`draft:pending`,providerID:r,modelID:i,agent:y,text:n,attachments:o,additionalParts:v.syntheticParts?.length?[...c||[],...v.syntheticParts]:c,agentMentionName:s}),f=await XV({providerID:r,modelID:i,agent:y,variant:l},a);if(!f)throw Error(`Failed to create session`);let{materialized:p,claim:m}=f,h=p.syntheticParts?.length?[...c||[],...p.syntheticParts]:c;RS(p.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await hV({sessionId:p.sessionId,directory:p.directory,content:n,providerID:r,modelID:i,agent:p.agent,agentMentionName:s,variant:l,inputMode:u,files:g,delivery:d?.delivery,messageID:e,optimisticParts:a.parts,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:h?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))}),await KV(m,p.sessionId,`consume`)}catch(e){throw await KV(m,p.sessionId,`preserve`),e}LV(p.directory,t().availableWorktreesByProject),S(p.sessionId,p.directory);return}let C=d?.sessionId??t().currentSessionId,w=C?Vo.getState().getSessionAgentSelection(C):null,T=Nf.getState().currentAgentName,E=y||w||T||void 0;if(C&&Vo.getState().saveSessionModelSelection(C,r,i),C&&E&&(Vo.getState().saveSessionAgentSelection(C,E),Vo.getState().saveAgentModelForSession(C,E,r,i),Vo.getState().saveAgentModelVariantForSession(C,E,r,i,l)),C){let e=VB.getState(),t=BB(C);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(zB(C),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),VB.setState({sessionMemoryState:n})}}let D=C?_(d?.directoryHint)??_(t().getDirectoryForSession(C)):null;C&&RS(C);let O=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(h)try{await kS(h.sessionId,h.messageId,{directory:D??void 0}),t().stagedMessageEdit===h&&e({stagedMessageEdit:null})}catch(e){throw t().endMessageEditCommit(h.sessionId,h.messageId),e}try{await hV({sessionId:C||``,directory:D,content:n,providerID:r,modelID:i,agent:E,agentMentionName:s,variant:l,inputMode:u,files:O,delivery:d?.delivery,messageID:d?.messageID,ticket:d?.ticket,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:c?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))})}finally{h&&t().endMessageEditCommit(h.sessionId,h.messageId)}LV(D,t().availableWorktreesByProject),C&&S(C,D)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await jx(n,r??V.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),PV(MV(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&XT.getState().addSessionToFolder(e,s,o.id)}return o}catch(n){return console.error(`[session-ui-store] createSession failed`,n),c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),PV(MV(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>Wx(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await Wx(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>qx(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await qx(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await Yx(e,t)},requestSessionSmartTitle:async e=>{await Xx(e)},shareSession:async e=>Zx(e),unshareSession:async e=>Qx(e),revertToMessage:async(e,t,n)=>{await CS(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await TS(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Td(e),r=xd().find(t=>t.id===e)?.revert?.messageID,i=os(n,r);if(!i)return;let a=Ed(i.id).find(e=>e.type===`text`),o=a?.text?String(a.text).slice(0,50)+(a.text.length>50?`...`:``):`[No text]`;await t().revertToMessage(e,i.id);let{toast:s}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:c,formatMessage:l}=await Ye(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-oojlrF4d.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:u}=c.getState();s.success(l(u,`chat.revert.toast.undo`,{preview:o}))},handleSlashRedo:async(e,n)=>{if(n?.fullUnrevert){let{unrevertSession:t}=await Ye(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>mb);return{unrevertSession:e}},void 0);await t(e);let{toast:n}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:i}=await Ye(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-oojlrF4d.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:a}=r.getState();n.success(i(a,`chat.revert.toast.restored`));return}let r=xd().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=ss(Td(e),r);if(i){await t().revertToMessage(e,i.id,{skipRedoPush:!0});let{toast:n}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:a}=await Ye(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-oojlrF4d.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:o}=r.getState();n.success(a(o,`chat.revert.toast.redo`));return}await MS(e);let{toast:a}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:o,formatMessage:s}=await Ye(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-oojlrF4d.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:c}=o.getState();a.success(s(c,`chat.revert.toast.restored`))},forkFromMessage:async(n,r,i)=>{let a=t().forkTransition;if(a?.operationId,a?.stage,a){console.warn(`[session-fork] forkFromMessage skipped because a transition is active`,{sessionId:n,messageId:r,activeOperationId:a.operationId,activeSourceSessionId:a.sourceSessionId,activeStage:a.stage});return}let o=EV(n),s=++AV;try{let a=i?.directory??t().getDirectoryForSession(n)??V.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:s,sourceSessionId:n,targetSessionId:null,directory:a,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await NS(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));c.success(`Forked from ${o?.title??`session`}`)}catch(e){console.error(`[session-fork] forkFromMessage failed`,{operationId:s,sessionId:n,messageId:r,error:e});let{toast:t}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===s?{forkTransition:null}:e)}},forkCurrentSession:async n=>{let r=t().forkTransition;if(r?.operationId,r?.stage,r){console.warn(`[session-fork] forkCurrentSession skipped because a transition is active`,{sessionId:n,activeOperationId:r.operationId,activeSourceSessionId:r.sourceSessionId,activeStage:r.stage});return}let i=EV(n),a=++AV;try{let r=t().getDirectoryForSession(n)??V.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:a,sourceSessionId:n,targetSessionId:null,directory:r,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await NS(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));o.success(`Forked from ${i?.title??`session`}`)}catch(e){console.error(`[session-fork] forkCurrentSession failed`,{operationId:a,sessionId:n,error:e});let{toast:t}=await Ye(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===a?{forkTransition:null}:e)}},getSessionsByDirectory:e=>{let t=_(e);return t?Sd().filter(e=>vV(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=TV(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=Y.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?zw(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:TV(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Td(e,t().getDirectoryForSession(e)??void 0);for(let e=n.length-1;e>=0;--e){let t=n[e];if(t.role!==`user`)continue;let r=typeof t.model?.providerID==`string`&&t.model.providerID.trim().length>0?t.model.providerID:void 0,i=typeof t.model?.modelID==`string`&&t.model.modelID.trim().length>0?t.model.modelID:void 0,a=typeof t.agent==`string`&&t.agent.trim().length>0?t.agent:typeof t.mode==`string`&&t.mode.trim().length>0?t.mode:void 0,o=t.model?.variant??t.variant,s=typeof o==`string`&&o.trim().length>0?o:void 0;return{id:typeof t.id==`string`?t.id:void 0,agent:a,providerID:r,modelID:i,variant:s}}return null},getCurrentAgent:e=>Vo.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Td(e);xd().find(t=>t.id===e),`${e}`,t.length,t.map(e=>({id:e.id,role:e.role,tokens:e.role===`assistant`?e.tokens:void 0}))},pollForTokenUpdates:()=>{},setSessionDirectory:(n,r)=>{let i=_(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),PV(MV(),{sessionId:n,directory:i}))},markSessionPlanAvailable:t=>{e(e=>{if(e.sessionPlanAvailable.get(t)===!0)return e;let n=new Map(e.sessionPlanAvailable);return n.set(t,!0),{sessionPlanAvailable:n}})},isSessionPlanAvailable:e=>t().sessionPlanAvailable.get(e)??!1}));KA((e,t)=>{$.getState().setCurrentSession(e,t)});var sH=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==sH&&(sH=t,iH(t))}});function cH(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function lH(e){return e.length>1?e.slice(0,-1):[]}function uH(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function dH(e,t){let n=e.at(-1);if(!n||n.sessionId===t.sessionId)return e;let r=e.at(-2);return r?.sessionId===t.sessionId?r.directory===t.directory?e:[...e.slice(0,-2),t,n]:e.length===1?[t,n]:e}var fH={activeTab:`projects`,secondary:null},pH=0,mH=null,hH=e=>{let t=++pH;return mH={generation:t,sessionId:e.sessionId,directory:_(e.directory)??null},t},gH=e=>{let t=mH;return t&&t.generation===pH&&t.sessionId===e.sessionId&&t.directory===(_(e.directory)??null)?(mH=null,`internal`):(mH=null,`external`)},_H=()=>{pH+=1,mH=null},vH=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&_(n)===_(e.directory)?_H():hH(e),t.setCurrentSession(e.sessionId,e.directory??null)},yH=De(e=>({...fH,setActiveTab:t=>{_H(),e({activeTab:t,secondary:null})},openSession:t=>{e({secondary:{kind:`chat`,routes:[xH(t,`root`)]}}),vH(t)},pushSession:t=>{e(e=>{let n=xH(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?cH(e.secondary.routes,n):[n]}}}),vH(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=lH(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=yH.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&vH(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=dH(e.secondary.routes,xH(t,`parent`));return n===e.secondary.routes?e:{secondary:{kind:`chat`,routes:n}}}),replaceChatSession:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=e.secondary.routes.at(-1);return n?.sessionId===t.sessionId&&n.directory===(t.directory??null)?e:{secondary:{kind:`chat`,routes:uH(e.secondary.routes,xH(t,`root`))}}}),materializeDraftSession:t=>e(e=>e.secondary?.kind===`draft`?{secondary:{kind:`chat`,routes:[{key:`chat-primary`,sessionId:t.sessionId,directory:t.directory??null}]}}:e),openDraft:t=>{_H(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{_H(),ot.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},closeSecondary:()=>{_H(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{_H(),e({...fH})}})),bH=1,xH=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${bH++}`,sessionId:e.sessionId,directory:e.directory??null}),SH=e=>!ct()||lt()?!1:(yH.getState().pushSession(e),!0);export{jR as $,xa as $a,Vu as $i,zE as $n,Zy as $r,pP as $t,CB as A,No as Aa,Cp as Ai,bO as An,Lx as Ar,sP as At,Tz as B,po as Ba,zf as Bi,lO as Bn,Xx as Br,dN as Bt,zB as C,Ko as Ca,fm as Ci,fk as Cn,ct as Co,RC as Cr,MP as Ct,NB as D,Vo as Da,Bp as Di,jO as Dn,wC as Dr,OP as Dt,kB as E,Go as Ea,Vp as Ei,OO as En,TC as Er,kP as Et,Kz as F,ko as Fa,Sp as Fi,oO as Fn,kS as Fr,vM as Ft,LR as G,Va as Ga,gd as Gi,rD as Gn,Gx as Gr,IN as Gt,GR as H,Ha,Nf as Hi,aO as Hn,bS as Hr,gP as Ht,aB as I,Ya as Ia,xp as Ii,vO as In,jx as Ir,jj as It,BR as J,Oa as Ja,xd as Ji,aD as Jn,Jx as Jr,LN as Jt,DR as K,pa as Ka,Td as Ki,oD as Kn,Hb as Kr,PN as Kt,Uz as L,qa as La,bp as Li,eO as Ln,SS as Lr,Oj as Lt,xB as M,jo as Ma,_p as Mi,cO as Mn,qx as Mr,XM as Mt,mB as N,Ao as Na,gp as Ni,uO as Nn,rS as Nr,_M as Nt,PB as O,Lo as Oa,zp as Oi,bD as On,BS as Or,jP as Ot,Wz as P,Do as Pa,yp as Pi,iO as Pn,Kx as Pr,yM as Pt,AR as Q,Sa as Qa,Gu as Qi,hD as Qn,eb as Qr,_N as Qt,oB as R,Ja as Ra,Yf as Ri,hO as Rn,Ox as Rr,HN as Rt,VB as S,$o as Sa,wm as Si,pk as Sn,ut as So,Y as Sr,uF as St,FB as T,Uo as Ta,tm as Ti,AO as Tn,EC as Tr,DP as Tt,cz as U,Ua,Cd as Ui,sO as Un,CS as Ur,wj as Ut,UR as V,ao as Va,uf as Vi,dO as Vn,yS as Vr,fN as Vt,Oz as W,La as Wa,Sd as Wi,SO as Wn,aS as Wr,Cj as Wt,zR as X,Ea as Xa,wd as Xi,mD as Xn,dx as Xr,_P as Xt,IR as Y,Da as Ya,hd as Yi,nD as Yn,Yx as Yr,BN as Yt,OR as Z,ha as Za,Pu as Zi,tD as Zn,pb as Zr,cP as Zt,WB as _,ns as _a,lg as _i,NA as _n,Cr as _o,vT as _r,QF as _t,HV as a,iu as aa,Z_ as ai,bN as an,Ti as ao,sE as ar,mR as at,HB as b,Yo as ba,Bm as bi,lA as bn,Kt as bo,mT as br,HF as bt,hV as c,mu as ca,Q_ as ci,uP as cn,vi as co,rE as cr,sR as ct,uV as d,ru as da,Vg as di,VN as dn,Nr as do,bT as dr,tR as dt,uu as ea,Ny as ei,hN as en,ua as eo,EE as er,wR as et,dV as f,W as fa,zg as fi,dP as fn,Ir as fo,XT as fr,qL as ft,qB as g,as as ga,Fg as gi,PA as gn,Tr as go,Vw as gr,XF as gt,aV as h,Rs as ha,Ig as hi,zA as hn,Dr as ho,yT as hr,kL as ht,VV as i,U as ia,J_ as ii,ON as in,wi as io,fE as ir,vR as it,SB as j,Io as ja,hp as ji,fO as jn,vS as jr,eP as jt,vB as k,Fo as ka,Np as ki,_O as kn,zS as kr,uN as kt,$ as l,cu as la,__ as li,lP as ln,Pr as lo,aE as lr,ZL as lt,oV as m,Wl as ma,Hg as mi,WA as mn,Er as mo,pT as mr,UL as mt,SH as n,du as na,Cv as ni,yN as nn,ca as no,AE as nr,CR as nt,fV as o,hu as oa,$_ as oi,SN as on,bi as oo,dE as or,pR as ot,iV as p,Ul as pa,Gg as pi,UA as pn,Fr as po,fT as pr,VL as pt,RR as q,Ca as qa,Ed as qi,sD as qn,TS as qr,FN as qt,yH as r,gu as ra,rv as ri,EN as rn,la as ro,NE as rr,SR as rt,ZV as s,_u as sa,G_ as si,wN as sn,Ci as so,cE as sr,cR as st,gH as t,fu as ta,by as ti,gN as tn,sa as to,OE as tr,TR as tt,lV as u,pu as ua,Bg as ui,kN as un,Lr as uo,iE as ur,GL as ut,KB as v,qo as va,Uh as vi,OA as vn,Gt as vo,hT as vr,X as vt,RB as w,Ho as wa,am as wi,mk as wn,lt as wo,hC as wr,AP as wt,BB as x,Jo as xa,km as xi,Tk as xn,Vt as xo,gT as xr,UF as xt,GB as y,ts as ya,Hh as yi,uA as yn,qt as yo,zw as yr,IF as yt,Pz as z,fo as za,Hf as zi,xO as zn,xS as zr,zN as zt};