@openchambery/web 2.1.10-beta.11 → 2.1.10-beta.13

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 (131) hide show
  1. package/dist/assets/{AgentAvatar-HkvwOX6E.js → AgentAvatar-VWQTTR4M.js} +1 -1
  2. package/dist/assets/AssistantView-D8VcxQfE.js +3 -0
  3. package/dist/assets/DiagramView-DvLFpw3y.js +1 -0
  4. package/dist/assets/{FadeInOnReveal-BKvNCFE0.js → FadeInOnReveal-fsguD-xX.js} +1 -1
  5. package/dist/assets/{Icon-x0XTu231.js → Icon-CEQUcqTJ.js} +1 -1
  6. package/dist/assets/{ImageLoadingPlaceholder-BH8oXC-W.js → ImageLoadingPlaceholder-Bel8eqgg.js} +1 -1
  7. package/dist/assets/{LoadingImage-BiQ8G0W3.js → LoadingImage-DjkSZxMq.js} +1 -1
  8. package/dist/assets/MarkdownRenderer-B6YT_a6w.js +2 -0
  9. package/dist/assets/MarkdownRendererImpl-CNkL7yXb.js +10 -0
  10. package/dist/assets/MarkstreamRendererImpl-CUGoIajK.js +3 -0
  11. package/dist/assets/MobileDetailNavigation-CsSrHs3R.js +1 -0
  12. package/dist/assets/MobileShareBridge-CAwFgfOm.js +4 -0
  13. package/dist/assets/MobileTabPageHeader-BJ4P3FY4.js +2 -0
  14. package/dist/assets/{MultiRunWindow-CPEzqHIB.js → MultiRunWindow-CLpbvvyu.js} +1 -1
  15. package/dist/assets/OnboardingScreen-CQuSd1SL.js +1 -0
  16. package/dist/assets/{OverlayScrollbar-DYyjRbut.js → OverlayScrollbar-DI271QYq.js} +1 -1
  17. package/dist/assets/{SettingsView-BnlqCPxN.js → SettingsView-CJNSvkus.js} +11 -11
  18. package/dist/assets/{SettingsWindow-BgSOpeEz.js → SettingsWindow-D7c_pqLX.js} +1 -1
  19. package/dist/assets/TerminalView-BYVz3yJw.js +8 -0
  20. package/dist/assets/ToolOutputDialog-C7usOU7_.css +1 -0
  21. package/dist/assets/ToolOutputDialog-CTsCbEnG.js +10 -0
  22. package/dist/assets/{appThemeRegistry-BIjwa_wL.js → appThemeRegistry-9ecpM3na.js} +1 -1
  23. package/dist/assets/assistant-attachment-cache-BWe8KqRS.js +1 -0
  24. package/dist/assets/{button-Ca8Z9cOP.js → button-9V3jJ3gG.js} +1 -1
  25. package/dist/assets/{collapsible-P03Lkmyr.js → collapsible-Cx3lMy_W.js} +1 -1
  26. package/dist/assets/{desktopHosts-C0e7Nes2.js → desktopHosts-C4ejHJ9p.js} +1 -1
  27. package/dist/assets/desktopRelayRestore-UTCV51RC.js +1 -0
  28. package/dist/assets/{diagram-DIRYGkQv.js → diagram-Bpt5dSrL.js} +1 -1
  29. package/dist/assets/{dialog-DKsOQO4Y.js → dialog-Yxau54Tq.js} +1 -1
  30. package/dist/assets/dropdown-menu.styles-CtzReuqO.js +1 -0
  31. package/dist/assets/{es-ChfgOskU.js → es-DsJ_HQyU.js} +1 -1
  32. package/dist/assets/{fileMentionTouchSelection-DFsw2Air.js → fileMentionTouchSelection-CHCUQDYO.js} +1 -1
  33. package/dist/assets/{fr-DnKqN4E3.js → fr-Dfkjku77.js} +1 -1
  34. package/dist/assets/{gitApi-CmIIjInT.js → gitApi-CT8aRSjG.js} +3 -3
  35. package/dist/assets/image-loading-ClZBSNMo.js +1 -0
  36. package/dist/assets/{input-CGZVLev1.js → input-BqE6rFfR.js} +1 -1
  37. package/dist/assets/insertionBoundaries-BB0vsknt.js +1 -0
  38. package/dist/assets/{ja-DH-a_ThB.js → ja-C71g0jYh.js} +1 -1
  39. package/dist/assets/{ko-BXABOKd9.js → ko-32s8rv0M.js} +1 -1
  40. package/dist/assets/main-Bv9SkJlY.js +2 -0
  41. package/dist/assets/main-Czvmacb-.js +169 -0
  42. package/dist/assets/{markdownHeightCache-CYwP7eeh.js → markdownHeightCache-lTJfaoDe.js} +1 -1
  43. package/dist/assets/mcpQueries-bXWttRnQ.js +1 -0
  44. package/dist/assets/miniChat-BdOklZ8b.js +2 -0
  45. package/dist/assets/mobile-D2HeI26d.js +2 -0
  46. package/dist/assets/{mobileBackNavigation-mSj0hnU6.js → mobileBackNavigation-D_VvG_-O.js} +1 -1
  47. package/dist/assets/multirun-f5xJbuA3.js +3 -0
  48. package/dist/assets/persistence-CAKBi4bp.js +3 -0
  49. package/dist/assets/{pl-D-KNROrB.js → pl-eAbyJFO9.js} +1 -1
  50. package/dist/assets/platform-C5jNCIbB.js +7 -0
  51. package/dist/assets/projectMeta-CDO3EwZv.js +1 -0
  52. package/dist/assets/{pt-BR-UDs5YUzv.js → pt-BR-nVxduPt0.js} +1 -1
  53. package/dist/assets/queryRuntime-DRiRiAgZ.js +1 -0
  54. package/dist/assets/renderElectronMiniChatApp-cdAuzQ-0.js +2 -0
  55. package/dist/assets/renderMobileApp-BGP-Q03v.css +1 -0
  56. package/dist/assets/renderMobileApp-DLpEe3oD.js +28 -0
  57. package/dist/assets/runtime-file-download-CEzr1Pfg.js +1 -0
  58. package/dist/assets/runtime-file-resource-BUFMRmIF.js +2 -0
  59. package/dist/assets/runtimeConfig-C_Y8Vf2j.js +2 -0
  60. package/dist/assets/runtimeEndpointReset-DTZaxTyi.js +149 -0
  61. package/dist/assets/{scheduledTaskNavigation-CgctKy2R.js → scheduledTaskNavigation-j6F6n0ym.js} +1 -1
  62. package/dist/assets/{sessionChangeSummary-BW__1utJ.js → sessionChangeSummary-DGC9b6Sr.js} +1 -1
  63. package/dist/assets/{sessionLookup-CuUmBpTW.js → sessionLookup-Ds9p3_T4.js} +1 -1
  64. package/dist/assets/{sortable-tabs-strip-MZyRcU60.js → sortable-tabs-strip-DFi-Mck5.js} +1 -1
  65. package/dist/assets/speechSettingsQueries-Dg_Zo54s.js +4 -0
  66. package/dist/assets/src-DzBIReeh.css +2 -0
  67. package/dist/assets/{store-D79UkOhB.js → store-D4rR0svj.js} +2 -2
  68. package/dist/assets/terminalApi-B8arordk.js +1 -0
  69. package/dist/assets/{textarea-BfNgh87h.js → textarea-DoWm-pRV.js} +1 -1
  70. package/dist/assets/{tooltip-B7cKvIho.js → tooltip-DWlA7PRY.js} +1 -1
  71. package/dist/assets/{uk-CkliYeRs.js → uk-DOvCFanR.js} +1 -1
  72. package/dist/assets/{url-nBOUbtV_.js → url-BD7mCWgV.js} +1 -1
  73. package/dist/assets/{useAppFontEffects-_ks0w1bd.js → useAppFontEffects-C1xCiuQB.js} +32 -32
  74. package/dist/assets/{useDesktopWindowControlsLayout-DXQVvdHD.js → useDesktopWindowControlsLayout-C7j1QlhA.js} +1 -1
  75. package/dist/assets/{useEffectiveDirectory-CCu_lDxO.js → useEffectiveDirectory-iHgoiSMV.js} +1 -1
  76. package/dist/assets/{useFontPreferences-rSp7tOs0.js → useFontPreferences-Ctm4A_2D.js} +1 -1
  77. package/dist/assets/useMobileNavigationStore-Bz7hHJCh.js +417 -0
  78. package/dist/assets/{useWorkerHighlightedLines-cWzxInp-.js → useWorkerHighlightedLines-DspLZXJy.js} +1 -1
  79. package/dist/assets/{zh-CN-DdInLm-R.js → zh-CN-CuYFLeS4.js} +1 -1
  80. package/dist/assets/{zh-TW-QxWs2t3K.js → zh-TW-DKJIyd5A.js} +1 -1
  81. package/dist/index.html +13 -10
  82. package/dist/mini-chat.html +13 -10
  83. package/dist/mobile.html +13 -10
  84. package/package.json +1 -1
  85. package/server/lib/fs/DOCUMENTATION.md +4 -1
  86. package/server/lib/fs/image-fingerprint.d.ts +2 -0
  87. package/server/lib/fs/image-fingerprint.js +43 -0
  88. package/server/lib/fs/image-fingerprint.test.js +54 -0
  89. package/server/lib/fs/raw-video.test.js +34 -0
  90. package/server/lib/fs/routes.js +16 -6
  91. package/server/lib/quota/DOCUMENTATION.md +2 -0
  92. package/server/lib/quota/magpie.js +3 -0
  93. package/server/lib/quota/magpie.test.js +14 -0
  94. package/dist/assets/AssistantView-h4JgDKch.js +0 -3
  95. package/dist/assets/DiagramView-COkfppid.js +0 -1
  96. package/dist/assets/MarkdownRenderer-BI0rNBtw.js +0 -2
  97. package/dist/assets/MarkdownRendererImpl-BLyOCqTz.js +0 -10
  98. package/dist/assets/MarkstreamRendererImpl-Do60i4aN.js +0 -3
  99. package/dist/assets/MobileDetailNavigation-CH1olmS8.js +0 -1
  100. package/dist/assets/MobileShareBridge-D4PDUXQS.js +0 -4
  101. package/dist/assets/MobileTabPageHeader-B4l8kjn4.js +0 -2
  102. package/dist/assets/OnboardingScreen-TFogoeFF.js +0 -1
  103. package/dist/assets/TerminalView-CZtA47Sq.js +0 -8
  104. package/dist/assets/ToolOutputDialog-BgjZ_2_o.css +0 -1
  105. package/dist/assets/ToolOutputDialog-DjKdgCBP.js +0 -10
  106. package/dist/assets/assistant-attachment-cache-C-JB3e_-.js +0 -1
  107. package/dist/assets/desktopRelayRestore-DckkHKsi.js +0 -1
  108. package/dist/assets/dropdown-menu.styles-vl6a_Aes.js +0 -1
  109. package/dist/assets/fileQueries-DVpZC5ha.js +0 -1
  110. package/dist/assets/image-loading-BLKPYB1F.js +0 -1
  111. package/dist/assets/insertionBoundaries-BRzI9-zA.js +0 -1
  112. package/dist/assets/main-B18HaTNc.js +0 -169
  113. package/dist/assets/main-DyI3Npnd.js +0 -2
  114. package/dist/assets/mcpQueries-ylwK_h6F.js +0 -1
  115. package/dist/assets/miniChat-_Ap6jcID.js +0 -2
  116. package/dist/assets/mobile-D-4NtQFc.js +0 -2
  117. package/dist/assets/multirun-DCBP8mIS.js +0 -3
  118. package/dist/assets/persistence-BKszKaoQ.js +0 -3
  119. package/dist/assets/platform-QykS5eAQ.js +0 -7
  120. package/dist/assets/projectMeta-DRVg_EU7.js +0 -1
  121. package/dist/assets/relay-image-stream-B05lazQn.js +0 -2
  122. package/dist/assets/renderElectronMiniChatApp-DsMQnVs5.js +0 -2
  123. package/dist/assets/renderMobileApp-OVPO-Ol5.js +0 -28
  124. package/dist/assets/runtime-fetch-WgH0pROs.js +0 -1
  125. package/dist/assets/runtimeConfig-BQKJNTNq.js +0 -2
  126. package/dist/assets/runtimeEndpointReset-KlafK5Te.js +0 -149
  127. package/dist/assets/speechSettingsQueries-CQnnDLiJ.js +0 -4
  128. package/dist/assets/src-DtMCDy_d.css +0 -2
  129. package/dist/assets/terminalApi-BeYpC7rG.js +0 -1
  130. package/dist/assets/useMobileNavigationStore-DzAYtvXh.js +0 -417
  131. package/dist/assets/useRuntimeAPIs-Cx8S1HLz.js +0 -1
@@ -0,0 +1,417 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mcpQueries-bXWttRnQ.js","assets/rolldown-runtime-hePW80VL.js","assets/runtime-switch-CMiMO5Yj.js","assets/runtime-auth-BpCQ-dPr.js","assets/queryRuntime-DRiRiAgZ.js","assets/vendor-tanstack-query-core-BWz0ose6.js","assets/platform-C5jNCIbB.js","assets/persistence-CAKBi4bp.js","assets/vendor-zustand-o69pgTEK.js","assets/vendor-base-ui-CdzJ6My_.js","assets/useUIStore-CEqU9Ujv.js","assets/vendor-react-BP2cRVqX.js","assets/vendor-pathe-vBmvQE8f.js","assets/vendor-opencode-client-MF2GBrFx.js","assets/runtime-file-resource-BUFMRmIF.js","assets/vendor-tanstack-react-query-CdqCAt40.js","assets/vendor-aparajita-capacitor-secure-storage-xol_6BsB.js","assets/vendor-sonner-ZS8XIOVl.js","assets/store-D4rR0svj.js"])))=>i.map(i=>d[i]);
2
+ import{n as e,r as t}from"./rolldown-runtime-hePW80VL.js";import{T as n,i as r,p as i,w as a}from"./runtime-auth-BpCQ-dPr.js";import{_ as o,c as s,f as c,h as l,i as u,m as d,n as f,o as p,r as m,s as h,t as g}from"./runtime-switch-CMiMO5Yj.js";import{a as _,d as v,o as y,s as b,u as x}from"./queryRuntime-DRiRiAgZ.js";import{$ as S,$t as C,At as w,Ct as T,Dt as E,Et as D,F as O,Ft as k,H as A,I as ee,It as j,J as te,L as M,Lt as ne,M as re,Mt as N,N as ie,Nt as ae,Ot as oe,P as se,Pt as P,St as ce,Ut as le,Z as ue,_t as de,a as F,c as fe,en as pe,et as I,ft as L,gt as me,h as he,i as ge,it as _e,j as ve,k as ye,kt as be,l as xe,n as Se,nt as Ce,o as we,p as Te,rn as Ee,rt as De,st as R,tt as Oe,vt as ke,w as Ae,wt as je,xt as z,yt as Me}from"./persistence-CAKBi4bp.js";import{a as Ne,i as Pe,o as Fe,r as Ie}from"./vendor-zustand-o69pgTEK.js";import{it as Le,rt as Re}from"./vendor-base-ui-CdzJ6My_.js";import{$n as ze,$r as Be,$t as Ve,Ai as He,An as Ue,Ar as We,Bi as Ge,Bn as Ke,Br as qe,Bt as Je,Ci as Ye,Cr as B,Ct as Xe,Ei as Ze,Er as Qe,Fi as $e,Fn as et,Fr as tt,Ft as nt,Gn as rt,Gr as it,Gt as at,Hi as ot,Hn as st,Hr as ct,Ht as lt,Ii as ut,In as dt,It as ft,Jn as pt,Jr as mt,Jt as ht,Kn as gt,Kr as _t,Kt as vt,Li as yt,Ln as bt,Lt as xt,Mi as St,Mn as Ct,Mr as wt,Ni as Tt,Nn as Et,Nr as V,Nt as H,Or as Dt,Ot,Pi as kt,Pn as At,Pr as jt,Pt as Mt,Qn as Nt,Qr as Pt,Qt as Ft,R as It,Ri as Lt,Rn as Rt,Rr as zt,Rt as Bt,Si as Vt,St as Ht,Tr as Ut,Un as Wt,Ur as Gt,Ut as Kt,Vi as qt,Vn as Jt,Vr as Yt,Vt as Xt,Wn as Zt,Wr as Qt,Wt as $t,Xn as en,Xr as tn,Yn as nn,Yr as rn,Zn as an,Zr as on,Zt as sn,_i as cn,_r as ln,ai as un,an as dn,ar as fn,bi as pn,bn as mn,br as hn,ci as gn,cr as _n,di as vn,dn as yn,ei as bn,er as xn,fi as Sn,fr as Cn,gi as wn,gn as Tn,gr as En,hi as Dn,hn as On,hr as kn,ii as An,in as jn,ir as Mn,ji as Nn,ki as Pn,kr as Fn,li as In,ln as Ln,lr as Rn,mi as zn,mn as Bn,mr as Vn,n as Hn,ni as Un,nr as Wn,oi as Gn,or as Kn,pi as qn,pr as Jn,qn as Yn,qr as Xn,r as Zn,ri as Qn,rn as $n,si as er,sn as tr,sr as nr,t as rr,ti as ir,tr as ar,ui as or,un as sr,ur as cr,vi as lr,vr as ur,wi as dr,wn as fr,wr as pr,xr as mr,yi as hr,yn as gr,yr as _r,zn as vr,zr as yr,zt as br}from"./platform-C5jNCIbB.js";import{b as xr,n as Sr,x as Cr}from"./useUIStore-CEqU9Ujv.js";import{n as wr}from"./vendor-react-BP2cRVqX.js";import{i as Tr,n as Er,r as Dr,t as Or}from"./vendor-pathe-vBmvQE8f.js";import{c as kr,r as Ar}from"./vendor-tanstack-query-core-BWz0ose6.js";import{a as jr,l as Mr,n as Nr,o as Pr,s as Fr,t as Ir}from"./vendor-tanstack-react-query-CdqCAt40.js";import{a as Lr,n as Rr,o as zr}from"./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js";import{r as Br}from"./vendor-sonner-ZS8XIOVl.js";import{a as Vr,n as Hr}from"./vendor-reactuses-core-BpfIZ1tg.js";import{d as Ur,f as Wr,t as Gr}from"./button-9V3jJ3gG.js";import{i as Kr,t as qr}from"./store-D4rR0svj.js";import{i as Jr}from"./useAssistantUIStore-OyPm_4M_.js";import{a as Yr,i as Xr,n as Zr,o as Qr,r as $r,s as ei,t as ti}from"./vendor-zod-Dzk5kdUU.js";import{t as ni}from"./vendor-fuse.js-DB5wDJbI.js";var ri=1048576,ii=new TextEncoder,ai=e=>e instanceof Error&&e.name===`AbortError`,oi=e=>ai(e)?e:new DOMException(`The operation was aborted.`,`AbortError`),si=async e=>{try{await e?.cancel()}catch{}},ci=async e=>{try{await e.cancel()}catch{}},li=async(e,t={})=>{let n=t.fetch??x,r;try{r=await n(e,{method:`GET`,headers:{Accept:`text/event-stream`},signal:t.signal})}catch(e){throw t.signal?.aborted||ai(e)?oi(e):Error(`SSE request failed`)}if(!r.ok)throw await si(r.body),Error(`SSE response failed`);if(!/^text\/event-stream(?:\s*;|\s*$)/i.test(r.headers.get(`content-type`)??``))throw await si(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 ci(i),i.releaseLock(),t.signal?.aborted||ai(e)?oi(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
+ `)),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>ri)throw Error(`SSE response exceeds buffer limit`);u=i,l.push(a)}},h=e=>{if(e.length===0)return;o+=e,s+=ii.encode(e).byteLength;let t=o===`data`?4:o.startsWith(`data:`)?5+ +(o.charAt(5)===` `):0;if(u+s-t>ri)throw Error(`SSE response exceeds buffer limit`)},g=e=>{let t=0;c&&(c=!1,e.charAt(0)===`
4
+ `&&(t=1));for(let n=t;n<e.length;n+=1){let r=e.charAt(n);(r===`\r`||r===`
5
+ `)&&(h(e.slice(t,n)),m(),r===`\r`&&n+1<e.length&&e.charAt(n+1)===`
6
+ `?n+=1:r===`\r`&&n+1===e.length&&(c=!0),t=n+1)}h(e.slice(t))};try{for(;;){let{done:e,value:t}=await i.read();if(e)break;g(a.decode(t,{stream:!0}))}g(a.decode()),d=!0}catch(e){throw t.signal?.aborted||ai(e)?oi(e):e instanceof Error&&e.message===`SSE response exceeds buffer limit`?e:Error(`SSE response read failed`)}finally{d||await ci(i),i.releaseLock()}},ui=null,di=null,fi=null,pi=0,mi=null,hi=null,gi=new Set,_i=new Map,vi=e=>e===`session-index-changed`||e===`message-queue-changed`||e===`assistants-changed`,yi=()=>{_i.clear()},bi=e=>_i.get(e),xi=(e,t)=>{let n=_i.get(e);(n===void 0||t>n)&&_i.set(e,t)},Si=3e4,Ci=45e3,wi=()=>{fi&&=(clearTimeout(fi),null)},Ti=()=>{if(di||gi.size===0)return;let e=Math.min(1e3*2**Math.min(pi,5),Si);di=setTimeout(()=>{di=null,pi+=1,ji()},e)},Ei=()=>{wi();let e=ui;ui=null,e?.controller.abort()},Di=e=>{if(wi(),gi.size===0||ui!==e)return;let t=setTimeout(()=>{ui===e&&fi===t&&(fi=null,Ei(),Ti())},Ci);fi=t},Oi=e=>{if(!e||e.trim().length===0)return null;try{let t=JSON.parse(e),n=typeof t?.type==`string`?t.type:``,r=t?.properties;return n?{type:n,properties:r}:null}catch{return null}},ki=e=>{if(e.type===`openchamber:event-stream-ready`)return e.properties===void 0||e.properties===null||typeof e.properties==`object`&&!Array.isArray(e.properties)?{type:`event-stream-ready`}:null;if(e.type===`openchamber:heartbeat`)return null;let t=e.properties&&typeof e.properties==`object`&&!Array.isArray(e.properties)?e.properties:null;if(e.type===`openchamber:worktree-topology-changed`){let e=typeof t?.projectDirectory==`string`?t.projectDirectory.trim():``,n=typeof t?.directory==`string`?t.directory.trim():``,r=t?.operation,i=t?.occurredAt;return!e||!n||r!==`added`&&r!==`removed`||typeof i!=`number`||!Number.isFinite(i)?null:{type:`worktree-topology-changed`,projectDirectory:e,directory:n,operation:r,occurredAt:i}}if(e.type===`openchamber:worktree-bootstrap-status`){let e=typeof t?.directory==`string`?t.directory.trim():``,n=t?.status,r=t?.updatedAt,i=typeof t?.error==`string`&&t.error.trim().length>0?t.error.trim():null;return!e||n!==`pending`&&n!==`ready`&&n!==`failed`||typeof r!=`number`||!Number.isFinite(r)?null:{type:`worktree-bootstrap-status`,directory:e,status:n,error:i,updatedAt:r}}if(e.type===`openchamber:session-index-changed`){let e=t?.revision,n=t?.occurredAt;if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n))return null;let r=t?.sync&&typeof t.sync==`object`&&!Array.isArray(t.sync)?t.sync:null;return{type:`session-index-changed`,revision:e,occurredAt:n,...t?.cause===`change`?{cause:`change`}:{},...r?{sync:{active:r.active===!0,enriching:r.enriching===!0}}:{}}}if(e.type===`openchamber:message-queue-changed`){let e=t?.revision,n=t?.occurredAt;return typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n)?null:{type:`message-queue-changed`,revision:e,occurredAt:n}}if(e.type===`openchamber:speech-settings-changed`){let e=t?.occurredAt;return typeof e!=`number`||!Number.isFinite(e)?null:{type:`speech-settings-changed`,occurredAt:e}}if(e.type===`openchamber:session-order-changed`){let e=t?.occurredAt;return typeof e==`number`?{type:`session-order-changed`,occurredAt:e}:null}if(e.type===`openchamber:project-order-changed`){let e=t?.occurredAt;return typeof e!=`number`||!Number.isFinite(e)?null:{type:`project-order-changed`,occurredAt:e}}if(e.type===`openchamber:assistants-changed`){let e=t?.revision,n=t?.occurredAt;return typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n)?null:{type:`assistants-changed`,revision:e,occurredAt:n}}if(e.type===`openchamber:contact-turn-start`){let e=typeof t?.assistantID==`string`?t.assistantID.trim():``,n=typeof t?.turnID==`string`?t.turnID.trim():``,r=typeof t?.messageID==`string`?t.messageID.trim():``,i=t?.occurredAt;return!e||!n||!r||n!==r||typeof i!=`number`||!Number.isFinite(i)?null:{type:`contact-turn-start`,assistantID:e,turnID:n,messageID:r,occurredAt:i}}if(e.type===`openchamber:contact-bubble-delta`){let e=typeof t?.assistantID==`string`?t.assistantID.trim():``,n=typeof t?.turnID==`string`?t.turnID.trim():``,r=t?.bubbleIndex,i=t?.delta,a=t?.done,o=t?.occurredAt;return!e||!n||typeof r!=`number`||!Number.isSafeInteger(r)||r<0||typeof i!=`string`||typeof a!=`boolean`||typeof o!=`number`||!Number.isFinite(o)?null:{type:`contact-bubble-delta`,assistantID:e,turnID:n,bubbleIndex:r,delta:i,done:a,occurredAt:o}}if(e.type===`openchamber:contact-turn-end`){let e=typeof t?.assistantID==`string`?t.assistantID.trim():``,n=typeof t?.turnID==`string`?t.turnID.trim():``,r=t?.status,i=t?.occurredAt;if(!e||!n||r!==`complete`&&r!==`error`||typeof i!=`number`||!Number.isFinite(i))return null;let a=typeof t?.error==`string`&&t.error.trim()?t.error.trim():void 0;return{type:`contact-turn-end`,assistantID:e,turnID:n,status:r,...a?{error:a}:{},occurredAt:i}}if(e.type!==`openchamber:scheduled-task-ran`)return null;let n=typeof t?.projectId==`string`?t.projectId:``,r=typeof t?.taskId==`string`?t.taskId:``,i=typeof t?.ranAt==`number`?t.ranAt:Date.now(),a=t?.status;return!n||!r?null:{type:`scheduled-task-ran`,projectId:n,taskId:r,ranAt:i,status:a===`running`||a===`error`?a:`success`,...typeof t?.sessionId==`string`&&t.sessionId.length>0?{sessionId:t.sessionId}:{}}},Ai=e=>{let t=ki(e);if(t){t.type===`event-stream-ready`&&(pi=0),vi(t.type)&&`revision`in t&&xi(t.type,t.revision);for(let e of gi)try{e(t)}catch{}}},ji=()=>{if(typeof window>`u`||gi.size===0||ui)return;let e={controller:new AbortController};ui=e,li(`/api/openchamber/events`,{signal:e.controller.signal,onOpen:()=>{ui===e&&Di(e)},onActivity:()=>{ui===e&&Di(e)},onMessage:t=>{if(ui!==e)return;let n=Oi(t);n&&Ai(n)}}).then(()=>{ui===e&&(ui=null,wi(),Ti())},()=>{ui===e&&(ui=null,wi(),e.controller.signal.aborted||Ti())})},Mi=()=>{mi||typeof window>`u`||(mi=s(()=>{yi(),di&&=(clearTimeout(di),null),Ei(),pi=0,ji()}))},Ni=()=>{mi?.(),mi=null},Pi=()=>{if(hi||typeof window>`u`)return;let e=window,t=typeof document>`u`?void 0:document,n=t?.visibilityState===`hidden`,r=!1,i=!1,a=()=>{r||i||(i=!0,queueMicrotask(()=>{i=!1,!(r||gi.size===0)&&(di&&=(clearTimeout(di),null),Ei(),ji())}))},o=()=>{t?.visibilityState===`hidden`?n=!0:t?.visibilityState===`visible`&&n&&(n=!1,a())},s=e=>{e.persisted&&a()},c=()=>{(!ui||di)&&a()};t?.addEventListener(`visibilitychange`,o),e.addEventListener(`pageshow`,s),e.addEventListener(`openchamber:system-resume`,a),e.addEventListener(`online`,c),hi=()=>{r=!0,t?.removeEventListener(`visibilitychange`,o),e.removeEventListener(`pageshow`,s),e.removeEventListener(`openchamber:system-resume`,a),e.removeEventListener(`online`,c),hi=null}},Fi=e=>(gi.add(e),Mi(),Pi(),ji(),()=>{gi.delete(e),gi.size===0&&(yi(),di&&=(clearTimeout(di),null),pi=0,Ei(),Ni(),hi?.())}),Ii=!1,Li=Promise.resolve(),Ri=null,zi=()=>{Ii||(Ii=!0,Li=new Promise(e=>{Ri=e}))},Bi=async()=>Li,Vi=()=>{if(!Ii)return;Ii=!1;let e=Ri;Ri=null,e?.()},Hi=`openchamber_input_draft_metadata_v1`,Ui=`openchamber_input_draft_metadata_migration_v1`,Wi=`openchamber_chat_input_draft_`,Gi=`openchamber_chat_confirmed_mentions_`,Ki=()=>({ok:!1,error:{code:`unavailable`}}),qi=()=>({ok:!1,error:{code:`cancelled`}}),Ji=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),Yi=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),Xi=(e,t)=>Object.keys(e).every(e=>t.includes(e)),Zi=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,Qi=e=>typeof e==`string`&&e.length>0,$i=e=>({read:async t=>{if(!e)return Ki();try{return{ok:!0,value:e.getItem(t)}}catch(e){return Ji(e)}},write:async(t,n)=>{if(!e)return Ki();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return Ji(e)}},remove:async t=>{if(!e)return Ki();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return Ji(e)}},keys:async()=>{if(!e)return Ki();try{let t=[];for(let n=0;n<e.length;n+=1){let r=e.key(n);r!==null&&t.push(r)}return{ok:!0,value:t}}catch(e){return Ji(e)}}}),ea=()=>{try{return $i(typeof window>`u`?null:window.localStorage)}catch{return $i(null)}},ta=(e,t,n,r)=>{let i=[];try{let e=n===null?[]:JSON.parse(n);Array.isArray(e)&&(i=e.filter(e=>typeof e==`string`))}catch{}return{suffix:e,text:t??``,mentions:i,keys:r}},na=async e=>{let t=await e.keys();if(!t.ok)return t;let n=new Set;for(let e of t.value)e.startsWith(Wi)&&n.add(e.slice(29)),e.startsWith(Gi)&&n.add(e.slice(36));let r=[];for(let i of n){let n=`${Wi}${i}`,a=`${Gi}${i}`,[o,s]=await Promise.all([e.read(n),e.read(a)]);if(!o.ok)return o;if(!s.ok)return s;r.push(ta(i,o.value,s.value,[n,a].filter(e=>t.value.includes(e))))}return{ok:!0,value:r}},ra=e=>{if(!(!Yi(e)||!Xi(e,[`suffix`,`text`,`mentions`,`keys`])||typeof e.suffix!=`string`||typeof e.text!=`string`||!Array.isArray(e.mentions)||!e.mentions.every(e=>typeof e==`string`)||!Array.isArray(e.keys)||!e.keys.every(e=>typeof e==`string`)))return{suffix:e.suffix,text:e.text,mentions:[...e.mentions],keys:[...e.keys]}},ia=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&Qi(t[0])&&(t[1]===`session`||t[1]===`draft`)&&Qi(t[2])&&e===JSON.stringify(t)}catch{return!1}},aa=e=>{if(!Yi(e)||!Xi(e,[`complete`,`claimedTransportIdentity`,`captured`,`markerCommitted`,`cleanupComplete`])||typeof e.complete!=`boolean`||typeof e.claimedTransportIdentity!=`string`||e.captured!==void 0&&typeof e.captured!=`boolean`||e.markerCommitted!==void 0&&typeof e.markerCommitted!=`boolean`||e.cleanupComplete!==void 0&&typeof e.cleanupComplete!=`boolean`)return;let t=e.cleanupComplete??e.complete,n=e.captured??e.complete,r=e.markerCommitted??e.complete;if(!((n||r||t)&&!Qi(e.claimedTransportIdentity))&&!(r&&!n)&&!(t&&(!n||!r)))return{complete:t,claimedTransportIdentity:e.claimedTransportIdentity,captured:n,markerCommitted:r,cleanupComplete:t}},oa=e=>{if(!Yi(e)||!Xi(e,[`version`,`drafts`,`tombstones`,`migration`,`legacy`])||e.version!==1||!Yi(e.drafts)||!Yi(e.tombstones)||!Yi(e.legacy)||!Xi(e.legacy,[`new`,`entries`])||!Yi(e.legacy.entries))return;let t=aa(e.migration);if(!t)return;let n={};for(let[t,r]of Object.entries(e.drafts)){let e=be(r);if(!e||t!==z(e.key))return;n[t]=e}let r={};for(let[t,n]of Object.entries(e.tombstones)){if(!ia(t)||!Zi(n))return;r[t]=n}let i={};for(let[t,n]of Object.entries(e.legacy.entries)){let e=ra(n);if(!e||t!==e.suffix||t===`new`)return;i[t]=e}let a=e.legacy.new===void 0?void 0:ra(e.legacy.new);if(!(e.legacy.new!==void 0&&(!a||a.suffix!==`new`)))return{version:1,drafts:n,tombstones:r,migration:t,legacy:{...a?{new:a}:{},entries:i}}},sa=(e=``)=>({version:1,drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:e,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),ca=e=>{try{return{ok:!0,value:JSON.stringify(e)}}catch{return{ok:!1,error:{code:`serialization`}}}},la=async e=>{let t=await e.read(Hi);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:null};try{let e=oa(JSON.parse(t.value));return e?{ok:!0,value:e}:{ok:!1,error:{code:`corrupt`}}}catch{return{ok:!1,error:{code:`corrupt`}}}},ua=async(e,t)=>{let n=oa(t);if(!n)return{ok:!1,error:{code:`corrupt`}};let r=ca(n);return r.ok?e.write(Hi,r.value):r},da=e=>Yi(e)&&Xi(e,[`version`,`claimedTransportIdentity`])&&e.version===1&&Qi(e.claimedTransportIdentity)?{version:1,claimedTransportIdentity:e.claimedTransportIdentity}:void 0,fa=e=>ca({version:1,claimedTransportIdentity:e}),pa=(e,t,n)=>{let r={},i;for(let e of t)e.suffix===`new`?i=e:r[e.suffix]=e;return{...e,migration:{complete:!1,claimedTransportIdentity:n,captured:!0,markerCommitted:!1,cleanupComplete:!1},legacy:{...i?{new:i}:{},entries:r}}},ma=e=>[...new Set([e.legacy.new,...Object.values(e.legacy.entries)].flatMap(e=>e?.keys??[]))],ha=new WeakMap,ga=e=>{let t=ha.get(e);if(t)return t;let n=Promise.resolve(),r,i=!0,a=e=>{let t=n.then(e,e);return n=t.then(()=>void 0,()=>void 0),t},o={persist:t=>{let n=oa(t);return n?i?a(async()=>i?ua(e,n):Ki()):Promise.resolve(Ki()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},migrate:(t,n={})=>{if(r)return r;let o=a(async()=>{let r=await la(e);if(!r.ok)return r;let a=r.value??sa(),o=i&&(n.persistenceEnabled??!0);if(!a.migration.captured){let n=await na(e);if(!n.ok)return n;if(!o)return{ok:!0,value:pa(a,n.value,``)};if(a=pa(a,n.value,t),!i)return{ok:!0,value:a};let r=await ua(e,a);if(!r.ok)return r}if(!i||!(n.persistenceEnabled??!0)){let t=await na(e);return t.ok?{ok:!0,value:a}:t}let s=await e.read(Ui);if(!s.ok)return s;if(s.value!==null)try{let t=da(JSON.parse(s.value));if(!t)return{ok:!1,error:{code:`corrupt`}};if(t.claimedTransportIdentity!==a.migration.claimedTransportIdentity){let t=fa(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Ui,t.value);if(!n.ok)return n}}catch{return{ok:!1,error:{code:`corrupt`}}}else{let t=fa(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Ui,t.value);if(!n.ok)return n}if(a.migration.cleanupComplete)return{ok:!0,value:a};for(let t of ma(a)){if(!i)return{ok:!0,value:a};let n=await e.remove(t);if(!n.ok)return n}if(a={...a,migration:{complete:!0,claimedTransportIdentity:a.migration.claimedTransportIdentity,captured:!0,markerCommitted:!0,cleanupComplete:!0}},!i)return{ok:!0,value:a};let c=await ua(e,a);return c.ok?{ok:!0,value:a}:c}).finally(()=>{r=void 0});return r=o,o},flush:()=>n,setEnabled:async e=>{i=e,i||await n}};return ha.set(e,o),o},_a=e=>{let t=ga(e),n=!0,r=!1,i=[],a=[],o=()=>{if(r||i.length>0)return;let e=a;a=[],e.forEach(e=>e())},s=()=>{if(r)return;let e=i.shift();if(!e){o();return}r=!0,t.persist(e.snapshot).then(e.resolve).finally(()=>{r=!1,s()})};return{persist:e=>{let t=oa(e);return t?n?new Promise(e=>{i.push({snapshot:t,resolve:e}),s()}):Promise.resolve(Ki()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},cancelPending:()=>{let e=i;i=[],e.forEach(({resolve:e})=>e(qi())),o()},flush:()=>r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve(),setEnabled:async e=>{if(n=e,!n){let e=i;i=[],e.forEach(({resolve:e})=>e(qi()))}await(r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve()),await t.setEnabled(e),await t.flush()}}},va=`openchamber-input-drafts`,ya=1,ba=`blobs`,xa=`blobRefs`,Sa=class extends Error{code;constructor(e){super(e),this.code=e}},Ca=e=>({ok:!1,error:{code:e instanceof Sa?e.code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota-exceeded`:e instanceof DOMException&&e.name===`AbortError`?`transaction-aborted`:`transaction-failed`}}),wa=e=>{if(!(e instanceof Blob)&&!je(e))throw new Sa(`invalid-value`)},Ta=e=>{if(!e)throw new Sa(`invalid-value`)},Ea=(e,t)=>({id:Me(e),blobID:t,transportIdentity:e.transportIdentity,ownerKind:e.owner.kind,ownerID:e.owner.ownerID}),Da=async e=>{if(typeof e==`string`)return`url:${e}`;let t=await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()),n=[...new Uint8Array(t)].map(e=>e.toString(16).padStart(2,`0`)).join(``);return`blob:${e.type}:${e.size}:${n}`},Oa=async(e,t)=>(e.fingerprint??await Da(e.value))===t,ka=async(e,t=!1)=>{let n=await e.getAllBlobRefs(),r=await e.getAllBlobs(),i=new Map;for(let t of n)await e.getBlob(t.blobID)?i.set(t.blobID,(i.get(t.blobID)??0)+1):await e.deleteBlobRef(t.id);for(let n of r){let r=i.get(n.id)??0;r||!t?await e.putBlob({...n,refCount:r}):await e.deleteBlob(n.id)}},Aa=e=>{try{let t=JSON.parse(e);return!Array.isArray(t)||t.length!==4||typeof t[0]!=`string`||typeof t[2]!=`string`||t[1]!==`session`&&t[1]!==`draft`&&t[1]!==`surface`&&t[1]!==`queue`&&t[1]!==`send`?void 0:{transportIdentity:t[0],ownerKind:t[1],ownerID:t[2]}}catch{return}},ja=(e,t)=>{let n=Aa(e.id),r=e.ownerKind??n?.ownerKind,i=e.transportIdentity??n?.transportIdentity;return r!==void 0&&t.ownerKinds.includes(r)&&(t.transportIdentities===void 0||i!==void 0&&t.transportIdentities.includes(i))},Ma=(e=Na())=>{let t=async(t,n)=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=await e.getBlobRef(Me(t));return!r||n!==void 0&&r.blobID!==n?!1:(await e.deleteBlobRef(r.id),await ka(e),(await e.getAllBlobRefs()).some(e=>e.blobID===r.blobID)||await e.deleteBlob(r.blobID),!0)})}}catch(e){return Ca(e)}};return{put:async(t,n)=>{try{Ta(t),wa(n);let r=await Da(n);return await e.transaction(async e=>{let i=await e.getBlob(t);if(i&&!await Oa(i,r))throw new Sa(`blob-id-conflict`);i||await e.putBlob({id:t,value:n,refCount:0,fingerprint:r})}),{ok:!0,value:void 0}}catch(e){return Ca(e)}},putAndRetain:async(t,n,r)=>{try{Ta(n),wa(r);let i=await Da(r);return await e.transaction(async e=>{let a=Me(t),o=await e.getBlobRef(a);if(o&&o.blobID!==n)throw new Sa(`blob-id-conflict`);let s=await e.getBlob(n);if(s&&!await Oa(s,i))throw new Sa(`blob-id-conflict`);s||await e.putBlob({id:n,value:r,refCount:0,fingerprint:i}),o||await e.putBlobRef(Ea(t,n)),await ka(e)}),{ok:!0,value:void 0}}catch(e){return Ca(e)}},read:async t=>{try{let n=await e.transaction(e=>e.getBlob(t));return n?{ok:!0,value:n.value}:{ok:!1,error:{code:`missing-blob`}}}catch(e){return Ca(e)}},readReference:async t=>{try{return{ok:!0,value:(await e.transaction(e=>e.getBlobRef(Me(t))))?.blobID}}catch(e){return Ca(e)}},retain:async(t,n)=>{try{return Ta(n),await e.transaction(async e=>{let r=await e.getBlobRef(Me(t));if(r&&r.blobID!==n)throw new Sa(`blob-id-conflict`);if(!await e.getBlob(n))throw new Sa(`missing-blob`);r||await e.putBlobRef(Ea(t,n)),await ka(e)}),{ok:!0,value:void 0}}catch(e){return Ca(e)}},release:e=>t(e),releaseIfMatches:(e,n)=>t(e,n),reconcileReferences:async(t,n={ownerKinds:[`session`,`draft`]})=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=[],i=[],a=[],o=new Map((await e.getAllBlobRefs()).map(e=>[e.id,e]));for(let[i,a]of o)ja(a,n)&&t.get(i)!==a.blobID&&(await e.deleteBlobRef(i),r.push(i));for(let[r,s]of t){let t=Aa(r);if(!t||!n.ownerKinds.includes(t.ownerKind)||n.transportIdentities!==void 0&&!n.transportIdentities.includes(t.transportIdentity)){a.push(r);continue}let c=o.get(r);if(!await e.getBlob(s)){a.push(r);continue}(!c||c.blobID!==s)&&(await e.putBlobRef({id:r,blobID:s,...t}),i.push(r))}return await ka(e,!0),{released:r,repaired:i,missing:a}})}}catch(e){return Ca(e)}},reconcileOwnerReferences:async(t,n)=>{let r=new Map;for(let[e,i]of n)r.set(Me({transportIdentity:t.transportIdentity,owner:t.owner,attachmentOccurrenceRefID:e}),i);try{return{ok:!0,value:await e.transaction(async e=>{let n=0,i=new Set;for(let a of await e.getAllBlobRefs())a.transportIdentity===t.transportIdentity&&a.ownerKind===t.owner.kind&&a.ownerID===t.owner.ownerID&&r.get(a.id)!==a.blobID&&(await e.deleteBlobRef(a.id),i.add(a.blobID),n++);await ka(e);let a=await e.getAllBlobRefs();for(let t of i)a.some(e=>e.blobID===t)||await e.deleteBlob(t);return n})}}catch(e){return Ca(e)}},discardUnreferenced:async t=>{try{return{ok:!0,value:await e.transaction(async e=>!await e.getBlob(t)||(await e.getAllBlobRefs()).some(e=>e.blobID===t)?!1:(await e.deleteBlob(t),!0))}}catch(e){return Ca(e)}}}},Na=()=>({transaction:async e=>{let t=await Pa(),n=t.transaction([ba,xa],`readwrite`),r=n.objectStore(ba),i=n.objectStore(xa),a=e=>new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error??n.error??Error(`IndexedDB request failed`))}),o=new Promise((e,t)=>{n.oncomplete=()=>e(),n.onabort=()=>t(n.error??new DOMException(`aborted`,`AbortError`)),n.onerror=()=>{console.error(`Input draft IndexedDB transaction error`,n.error)}}),s;try{let t=await e({getBlob:e=>a(r.get(e)),getAllBlobs:()=>a(r.getAll()),putBlob:async e=>{await a(r.put(e))},deleteBlob:async e=>{await a(r.delete(e))},getBlobRef:e=>a(i.get(e)),getAllBlobRefs:()=>a(i.getAll()),putBlobRef:async e=>{await a(i.put(e))},deleteBlobRef:async e=>{await a(i.delete(e))}});return await o,t}catch(e){s=e;try{n.abort()}catch{}try{await o}catch(e){s===void 0&&(s=e)}throw s}finally{t.close()}}}),Pa=()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(new Sa(`database-unavailable`));return}let n=indexedDB.open(va,ya),r=!1,i=()=>{r||(r=!0,t(new Sa(`database-unavailable`)))};n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(ba)||e.createObjectStore(ba,{keyPath:`id`}),e.objectStoreNames.contains(xa)||e.createObjectStore(xa,{keyPath:`id`})},n.onsuccess=()=>{let t=n.result;if(t.onversionchange=()=>t.close(),r){t.close();return}r=!0,e(t)},n.onerror=i,n.onblocked=i}),Fa=()=>({drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:``,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),Ia=e=>({version:1,drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}),La=e=>{let t=Ia(e),n=Ra(JSON.parse(JSON.stringify(t)));return{drafts:n.drafts,tombstones:n.tombstones,migration:n.migration,legacy:n.legacy}},Ra=e=>{let t=oa(e);if(!t)throw Error(`invalid draft snapshot`);return t},za=e=>e instanceof Map?[...e.entries()]:Object.entries(e??{}),Ba=e=>typeof e==`string`?e:z(e),Va=[`session`,`draft`,`surface`],Ha=e=>({transportIdentity:e.transportIdentity,owner:{kind:e.owner.kind,ownerID:e.owner.ownerID},attachmentOccurrenceRefID:e.attachmentOccurrenceRefID}),Ua=e=>JSON.parse(JSON.stringify(e)),Wa=e=>e.phase===`metadata`?{phase:`metadata`,error:{code:e.error.code}}:{phase:`blob`,error:{...e.error},...e.reference?{reference:Ha(e.reference)}:{}},Ga=e=>({status:e.status,keys:[...e.keys],errors:e.errors.map(Wa),cleanupErrors:e.cleanupErrors.map(Wa)}),Ka=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,qa=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&Va.includes(t[1])&&typeof t[2]==`string`&&t[0].length>0&&t[2].length>0}catch{return!1}},Ja=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)].flatMap(t=>t.locator.kind===`blob`?[{reference:{transportIdentity:e.key.transportIdentity,owner:{kind:e.key.owner.kind,ownerID:e.key.owner.ownerID},attachmentOccurrenceRefID:t.attachmentRefID},attachment:Ua(t)}]:[]),Ya=e=>{let t=new Map;for(let n of Object.values(e))for(let e of Ja(n))t.set(Me(e.reference),e);return t},Xa=(e,t)=>({phase:`blob`,error:{...e},...t?{reference:Ha(t)}:{}}),Za=(e,t=[])=>({status:e,keys:t,errors:[],cleanupErrors:[]}),Qa=e=>e?.attachment.locator.kind===`blob`?e.attachment.locator.blobID:``,$a=(e,t,n={})=>{let r=Fa(),i=n.enabled??!0,a=0,o=!1,s=Promise.resolve(),c=new Map,l=e=>{let t=s.then(e,e);return s=t.then(()=>void 0,()=>void 0),t.then(e=>e&&typeof e==`object`&&`status`in e&&`keys`in e&&`errors`in e&&`cleanupErrors`in e?Ga(e):e)},u=async(t=r.drafts)=>{let n=[],i=new Map([...Ya(t)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``]));for(let[t,r]of c){if(i.get(t)===r.expectedBlobID){c.delete(t);continue}let a=await e.releaseIfMatches(Ha(r.reference),r.expectedBlobID);a.ok?c.delete(t):n.push(Xa(a.error,r.reference))}return n},d=async(t,n,r,i)=>{let o=Ha(t),s=await e.releaseIfMatches(o,n);s.ok||(c.set(Me(o),{reference:Ha(o),expectedBlobID:n,generation:a,reason:i}),r.push(Xa(s.error,o)))},f=async(t,n)=>{let r=t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,i=Ha(t.reference),a=Ua(t.attachment),o=await e.readReference(i);if(!o.ok)return{acquired:!1,error:Xa(o.error,i)};if(o.value&&o.value!==r)return{acquired:!1,error:Xa({code:`reference-conflict`},i)};if(o.value===r){let t=await e.read(r);if(t.ok)return{acquired:!1};if(t.error.code!==`missing-blob`)return{acquired:!1,error:Xa(t.error,i)};let o=await n?.(Ha(i),Ua(a));if(o===void 0)return{acquired:!1,error:Xa({code:`runtime-value-missing`},i)};let s=await e.putAndRetain(i,r,o);return s.ok?{acquired:!0}:{acquired:!1,error:Xa(s.error,i)}}let s=await e.read(r);if(s.ok){let t=await e.retain(i,r);return t.ok?{acquired:!0}:{acquired:!1,error:Xa(t.error,i)}}if(s.error.code!==`missing-blob`)return{acquired:!1,error:Xa(s.error,i)};let c=await n?.(Ha(i),Ua(a));if(c===void 0)return{acquired:!1,error:Xa({code:`runtime-value-missing`},i)};let l=await e.putAndRetain(i,r,c);return l.ok?{acquired:!0}:{acquired:!1,error:Xa(l.error,i)}};return{seed:t=>l(async()=>{if(!i)return Za(`disabled`);if(o)return{...Za(`failed`),errors:[Xa({code:`invalid-record`})]};let n;try{if(!t)n=Fa();else{let e=Ra(JSON.parse(JSON.stringify(t)));n={drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}}}catch{return{...Za(`failed`),errors:[Xa({code:`invalid-record`})]}}let a=Ya(n.drafts),s=await e.reconcileReferences(new Map([...a].map(([e,t])=>[e,Qa(t)])),{ownerKinds:Va});return s.ok?(r=n,o=!0,{...Za(`committed`),errors:s.value.missing.map(e=>Xa({code:`missing-blob`},a.get(e)?.reference))}):{...Za(`failed`),errors:[Xa(s.error)]}}),commit:e=>{let n=[...za(e.drafts).map(([e])=>e),...(e.delete??[]).map(Ba)];return i?l(async()=>{if(!o)return Za(`unseeded`,n);if(!i)return Za(`disabled`,n);let s=a,c=[],l=La(r),p=za(e.drafts),m=za(e.tombstones),h=(e.delete??[]).map(Ba);if(p.some(([e,t])=>!qa(e)||!Ka(t.revision))||m.some(([e,t])=>!qa(e)||!Ka(t))||h.some(e=>!qa(e))||new Set(p.map(([e])=>e)).size!==p.length||m.some(([e])=>p.some(([t])=>t===e)))return{...Za(`failed`,n),errors:[Xa({code:`invalid-record`})]};try{for(let[e,t]of p){let n=be(t);if(!n||e!==z(n.key))throw Error(`invalid draft record`);l.drafts[e]=n,delete l.tombstones[e]}for(let e of h)delete l.drafts[e];for(let[e,t]of m)l.tombstones[e]=t;e.migration&&(l.migration=e.migration),e.legacy&&(l.legacy=e.legacy);let t=Ra(Ia(l));l.drafts=t.drafts,l.tombstones=t.tombstones,l.migration=t.migration,l.legacy=t.legacy}catch{return{...Za(`failed`,n),errors:[Xa({code:`invalid-record`})],cleanupErrors:c}}if(!await e.isCurrent())return Za(`stale`,n);let g=Ya(r.drafts),_=Ya(l.drafts);c=await u(l.drafts);let v=[];for(let[t,r]of _){let i=g.get(t);if((i?.attachment.locator.kind===`blob`?i.attachment.locator.blobID:void 0)===(r.attachment.locator.kind===`blob`?r.attachment.locator.blobID:void 0))continue;let a=await f(r,e.resolveBlobValue);if(a.error){for(let e of v.reverse())await d(e,Qa(_.get(Me(e))),c,`acquire-failed`);return{...Za(`failed`,n),errors:[a.error],cleanupErrors:c}}a.acquired&&v.push(r.reference)}if(!await e.isCurrent()){for(let e of v.reverse())await d(e,Qa(_.get(Me(e))),c,`stale`);return{...Za(`stale`,n),cleanupErrors:c}}if(!i||s!==a){for(let e of v.reverse())await d(e,Qa(_.get(Me(e))),c,`disabled`);return{...Za(`disabled`,n),cleanupErrors:c}}let y=await t.persist(Ia(l));if(!y.ok){for(let e of v.reverse())await d(e,Qa(_.get(Me(e))),c,`metadata-failed`);return{...Za(`failed`,n),errors:[{phase:`metadata`,error:y.error}],cleanupErrors:c}}r=l;for(let[e,t]of g)_.has(e)||await d(t.reference,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,c,`metadata-committed`);return{...Za(`committed`,n),cleanupErrors:c}}):Promise.resolve(Ga(Za(`disabled`,n)))},reconcile:()=>l(async()=>{if(!o)return Za(`unseeded`);if(!i)return Za(`disabled`);let t=await u(),n=new Map([...Ya(r.drafts)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``])),a=await e.reconcileReferences(n,{ownerKinds:Va}),s=a.ok?a.value.missing.map(e=>Xa({code:`missing-blob`},Ya(r.drafts).get(e)?.reference)):[Xa(a.error)];return{status:a.ok?`committed`:`failed`,keys:[],errors:s,cleanupErrors:t}}),retryCleanup:()=>l(async()=>({...Za(`committed`),cleanupErrors:await u()})),flush:()=>s,setEnabled:async e=>{if(!e){i=!1,a+=1,t.cancelPending?.(),await t.setEnabled?.(!1),await s,await t.flush?.();return}await t.setEnabled?.(!0),i=!0,a+=1}}},eo=`openchamber-composer-reference-draft`,to=`openchamber-pasted-text-draft`,no=e=>Array.from(e).length,ro=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),io=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,ao=(e,t)=>{let n=[],r=[],i=0;for(let a=0;a<Math.min(t.length,me.referenceCount);a+=1){let o=t[a];if(!(!ro(o)||!io(o.id,me.idLength)||!io(o.token,me.displayLength)||typeof o.text!=`string`||o.text.length>me.pastePayloadLength||typeof o.characterCount!=`number`||!Number.isSafeInteger(o.characterCount)||o.characterCount!==no(o.text)||typeof o.index!=`number`||!Number.isSafeInteger(o.index)||o.index<1))for(let t=e.indexOf(o.token);t>=0&&n.length<me.referenceCount;t=e.indexOf(o.token,t+o.token.length)){let e=t+o.token.length;if(r.some(n=>n.start<e&&n.end>t)||i+o.text.length>me.totalPastePayloadLength)continue;let a=n.filter(e=>e.id.startsWith(`${o.id}:`)).length;n.push({id:`${o.id}:${a}`,kind:`paste`,start:t,end:e,display:o.token,text:o.text,characterCount:o.characterCount,index:o.index}),r.push({start:t,end:e}),i+=o.text.length}}return n.sort((e,t)=>e.start-t.start)},oo=e=>{try{let t=JSON.parse(e);if(!ro(t)||typeof t.text!=`string`)return{text:e,references:[]};if(t.type===eo)return(t.version===2?E(t.text,t.references):void 0)??{text:t.text,references:[]};if(t.type===to){let e=t.version===1&&Array.isArray(t.references)?ao(t.text,t.references):[];return E(t.text,e)??{text:t.text,references:[]}}}catch{}return{text:e,references:[]}},so=`file://`,co=e=>{let t=e.replace(/\\/g,`/`);return/^[A-Za-z]:/.test(t)&&(t=`/${t}`),t.split(`/`).map((e,t)=>t===1&&/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`)},lo=e=>{let t=e.replace(/\\/g,`/`).trim();return t.toLowerCase().startsWith(so)?t:`${so}${co(t)}`},uo=(e,t)=>`${e}\u0000${t}`,fo=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Failed to read file`)),r.onabort=()=>n(Error(`File read aborted`)),r.readAsDataURL(e)}),po=e=>{if(!e.startsWith(`data:`))return 0;let t=e.indexOf(`,`);if(t<0)return 0;let n=e.slice(0,t).toLowerCase(),r=e.slice(t+1);if(!n.endsWith(`;base64`))return 0;let i=0;return r.endsWith(`==`)?i=2:r.endsWith(`=`)&&(i=1),Math.max(0,Math.floor(r.length*3/4)-i)},mo=(e,t)=>e===t?!0:!e||!t?!1:e.filePath===t.filePath&&e.fileName===t.fileName&&e.relativePath===t.relativePath&&e.fileSize===t.fileSize&&e.selection?.startLine===t.selection?.startLine&&e.selection?.endLine===t.selection?.endLine&&e.selection?.text===t.selection?.text,ho=e=>({version:1,key:e,revision:1,text:``,attachments:[],syntheticParts:[],mentions:[]}),go=(e,t)=>t.flatMap(t=>{let n=`@${t}`,r=[],i=e.indexOf(n);for(;i>=0;)r.push({kind:`file`,value:t,path:t,label:t,range:{start:i,end:i+n.length}}),i=e.indexOf(n,i+n.length);return r}),_o=((e={})=>{let t=e.sink??ea(),n=e.repository??ga(t),r=e.coordinator??_a(t),i=e.blobStore??Ma(),a=e.durability??$a(i,r,{enabled:e.persistenceEnabled??!0}),o=new Map,s=new Map,c=new Map,l=new Map,d=new Map,p=new Set,m=new Set,h,g,_=0,v=0,y=!1,b=!1,x,S=new Set,C=new Map,w=new Set;return Ne()((t,r)=>{let E=e=>o.set(e,(o.get(e)??0)+1),D=(...e)=>{for(let t of e)c.set(t,(c.get(t)??0)+1),l.delete(t)},O=e=>be(e),k=()=>e.runtimeCapture?.()??{transportIdentity:u(),generation:f()},A=e=>{let t=k();return t.transportIdentity===e.transportIdentity&&t.generation===e.generation},ee=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)],j=e=>new Set(ee(e).map(e=>e.attachmentRefID)),te=(e,t,n)=>{let r=j(n);return{draftAttachmentViews:{...e.draftAttachmentViews,[t]:Object.fromEntries(Object.entries(e.draftAttachmentViews[t]??{}).filter(([e])=>r.has(e)))},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[t]:(e.draftMissingAttachmentRefIDs[t]??[]).filter(e=>r.has(e))}}},M=()=>e.createID?.()??Oe(),ne=async(e,t)=>{let n=t instanceof File?t:new File([t],e.filename,{type:e.mimeType});return{id:e.attachmentID,file:n,dataUrl:typeof t==`string`?t:await fo(n),mimeType:e.mimeType,filename:e.filename,size:e.size,source:e.source,...e.serverPath?{serverPath:e.serverPath}:{},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource?{vscodeSource:e.vscodeSource}:{}}},re=e=>{let t=e.errors[0]??e.cleanupErrors[0];return t?.phase===`metadata`||t?.phase===`blob`&&[`blob-id-conflict`,`database-unavailable`,`invalid-value`,`missing-blob`,`quota-exceeded`,`transaction-aborted`,`transaction-failed`].includes(t.error.code)?t.error.code:`unavailable`},N=(e,n)=>{let i=r(),s=_,c=n??k(),l=[...new Set(e)];if(l.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),!i.persistenceEnabled)return l.forEach(e=>S.add(e)),Promise.resolve({status:`disabled`,keys:l,errors:[],cleanupErrors:[]});let u=new Map(l.map(e=>[e,o.get(e)??0])),d=new Map(l.map(e=>[e,i.drafts[e]?.revision??i.tombstones[e]??0])),f=l.filter(e=>i.drafts[e]),v=Object.fromEntries(f.map(e=>[e,i.draftPersistence[e]?.status===`error`?i.draftPersistence[e]:{status:`saving`,revision:d.get(e)}])),y=Object.fromEntries(f.map(e=>[e,i.draftAttachmentPersistence[e]?.status===`error`?i.draftAttachmentPersistence[e]:{status:`saving`,revision:d.get(e)}]));t(e=>({draftPersistence:{...e.draftPersistence,...v},draftAttachmentPersistence:{...e.draftAttachmentPersistence,...y}})),b||l.forEach(e=>S.add(e));let x=(async()=>{let e=r(),n=await a.commit({drafts:Object.fromEntries(l.flatMap(t=>e.drafts[t]?[[t,e.drafts[t]]]:[])),tombstones:Object.fromEntries(l.flatMap(t=>e.tombstones[t]?[[t,e.tombstones[t]]]:[])),delete:l.filter(t=>!e.drafts[t]),migration:e.migration,legacy:{...e.legacyNewDraft?{new:e.legacyNewDraft}:{},entries:e.legacyDraftEntries},resolveBlobValue:t=>{for(let[n,r]of Object.entries(e.drafts))if(r.key.transportIdentity===t.transportIdentity&&r.key.owner.kind===t.owner.kind&&r.key.owner.ownerID===t.owner.ownerID)return e.draftAttachmentViews[n]?.[t.attachmentOccurrenceRefID]?.file},isCurrent:()=>_===s&&r().persistenceEnabled&&A(c)&&l.every(e=>(o.get(e)??0)===u.get(e)&&(r().drafts[e]?.revision??r().tombstones[e]??0)===d.get(e))}),i=_===s&&r().persistenceEnabled&&A(c);return(!i||n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)&&l.forEach(e=>S.add(e)),i&&t(e=>{let t={...e.draftPersistence};for(let e of f){if((o.get(e)??0)!==u.get(e))continue;let r=d.get(e);if(n.status===`committed`)t[e]={status:`saved`,revision:r};else if(n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)continue;else t[e]={status:`error`,revision:r,errorCode:re(n)}}let r={...e.draftAttachmentPersistence};for(let e of f){if((o.get(e)??0)!==u.get(e))continue;let t=d.get(e);r[e]=n.status===`committed`&&n.cleanupErrors.length===0?{status:`saved`,revision:t}:n.status===`failed`||n.cleanupErrors.length>0?{status:`error`,revision:t,errorCode:re(n)}:r[e]??{status:`idle`,revision:t}}return{draftPersistence:t,draftAttachmentPersistence:r}}),n})();return p.add(x),x.then(()=>p.delete(x),()=>p.delete(x)),x},ie=e=>{let n=r(),i=Object.fromEntries(e.flatMap(e=>{let t=n.drafts[e];return t?[[e,{status:`saving`,revision:t.revision}]]:[]}));Object.keys(i).length&&t(e=>({draftPersistence:{...e.draftPersistence,...i}}))},ae=()=>{h&&clearTimeout(h),h=void 0;let e=[...m];m.clear();let t=g;return g=void 0,e.length?N(e,t).then(()=>void 0):Promise.resolve()},oe=e=>{if(!r().persistenceEnabled){S.add(e);return}m.add(e),ie([e]),!h&&(g=k(),h=setTimeout(()=>{ae()},40))},se=e=>{let t=[...e];return t.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),N(t)},P=(e,n,i,a=`immediate`)=>{let o=z(e),s=r().drafts[o];if(!s||i!==void 0&&s.revision!==i)return;let c=O(n(s));if(!(!c||z(c.key)!==o))return E(o),t(e=>({drafts:{...e.drafts,[o]:c},...te(e,o,c)})),a===`deferred`?oe(o):se([o]),c},le=e=>e?de(e):void 0,ue=(e=[])=>JSON.parse(JSON.stringify(e)),F=(e,t,n,r=!1,i=!1)=>({status:e,...le(n)?{record:le(n)}:{},errors:ue(t?.errors),cleanupErrors:ue(t?.cleanupErrors),current:r,durable:i}),fe=(e,t,n,r,i=!1,a=!1)=>({status:e,errors:ue(t?.errors),cleanupErrors:ue(t?.cleanupErrors),current:i,durable:a,source:le(n),destination:le(r)}),pe=e=>e.status,I=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,L=(e,...t)=>{let n={...e};for(let e of t)delete n[e];return n},me=async(e,t)=>{let n={},i=r().draftAttachmentViews[z(e.key)]??{};for(let r of ee(e)){let e;if(r.locator.kind===`url`){let n=t?.get(r.attachmentRefID);e=n===void 0?r.locator.url:n}else e=t?.get(r.attachmentRefID)??i[r.attachmentRefID]?.file??(typeof i[r.attachmentRefID]?.dataUrl==`string`&&je(i[r.attachmentRefID].dataUrl)?i[r.attachmentRefID].dataUrl:void 0);if(r.locator.kind===`url`&&e!==void 0&&(e!==r.locator.url||!je(e))||r.locator.kind===`blob`&&e!==void 0&&!(e instanceof Blob)&&!(typeof e==`string`&&je(e)))return;e!==void 0&&(n[r.attachmentRefID]=await ne(r,e))}return n},he=e=>e?z(e):`legacy-unowned`,ge=e=>C.get(e)??0,_e=e=>{C.set(e,ge(e)+1)},ve=(e,n,r=!1)=>{r&&_e(e),t(t=>{let r=n(t.attachmentBuckets[e]??[]);return{attachmentBuckets:{...t.attachmentBuckets,[e]:r},...he(t.activeAttachmentDraft)===e?{attachedFiles:r}:{}}})};return{drafts:{},tombstones:{},draftHydration:{},draftPersistence:{},draftAttachmentViews:{},draftMissingAttachmentRefIDs:{},draftAttachmentPersistence:{},persistenceEnabled:e.persistenceEnabled??!0,legacyDraftEntries:{},migration:{complete:!1,claimedTransportIdentity:``},captureDraftRuntime:()=>k(),commitDraftSnapshot:async e=>{let n=z(e.key),i=e.runtime;if(i.transportIdentity!==e.key.transportIdentity||!A(i))return F(`stale`,void 0);let s=r(),c=s.drafts[n],l=s.tombstones[n]??0;if(e.expectedRevision!==`absent`&&!I(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return F(`failed`,void 0);if(e.expectedRevision===`absent`?c:c?.revision!==e.expectedRevision)return F(`conflict`,void 0,c);let u=e.expectedRevision===`absent`?l+1:e.expectedRevision+1;if(!I(u))return F(`failed`,void 0);let d=O({version:1,key:e.key,revision:u,...e.snapshot});if(!d)return F(`failed`,void 0);let f=await me(d,e.values);if(!f)return F(`failed`,void 0);let p=o.get(n)??0,m=c?.revision??l,h=await a.commit({drafts:{[n]:d},isCurrent:()=>A(i)&&(o.get(n)??0)===p&&(r().drafts[n]?.revision??r().tombstones[n]??0)===m,resolveBlobValue:t=>e.values?.get(t.attachmentOccurrenceRefID)});if(h.status!==`committed`)return F(pe(h),h,c);let g=(o.get(n)??0)===p&&(r().drafts[n]?.revision??r().tombstones[n]??0)===m,_=A(i);if(!g)return _||t(e=>({draftAttachmentViews:L(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:L(e.draftMissingAttachmentRefIDs,n),draftHydration:L(e.draftHydration,n),draftPersistence:L(e.draftPersistence,n),draftAttachmentPersistence:L(e.draftAttachmentPersistence,n)})),F(`stale`,h,d,!1,!0);let v=de(d);return v?(E(n),D(n),t(e=>({drafts:{...e.drafts,[n]:v},tombstones:(()=>{let t={...e.tombstones};return delete t[n],t})(),draftAttachmentViews:_?{...e.draftAttachmentViews,[n]:f}:L(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:_?{...e.draftMissingAttachmentRefIDs,[n]:[]}:L(e.draftMissingAttachmentRefIDs,n),draftHydration:_?e.draftHydration:L(e.draftHydration,n),draftPersistence:_?{...e.draftPersistence,[n]:{status:`saved`,revision:v.revision}}:L(e.draftPersistence,n),draftAttachmentPersistence:_?{...e.draftAttachmentPersistence,[n]:h.cleanupErrors.length?{status:`error`,revision:v.revision,errorCode:re(h)}:{status:`saved`,revision:v.revision}}:L(e.draftAttachmentPersistence,n)})),F(_?`committed`:`stale`,h,v,_,!0)):F(`failed`,h)},deleteDraftSnapshot:async e=>{let n=z(e.key),i=e.runtime;if(i.transportIdentity!==e.key.transportIdentity||!A(i))return F(`stale`,void 0);let s=r(),c=s.drafts[n],l=s.tombstones[n]??0;if(!I(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return F(`failed`,void 0);if(!c||c.revision!==e.expectedRevision)return F(`conflict`,void 0);let u=e.expectedRevision+1;if(!I(u))return F(`failed`,void 0);let d=o.get(n)??0,f=c.revision,p=Math.max(l,u),m=await a.commit({tombstones:{[n]:p},delete:[n],isCurrent:()=>A(i)&&(o.get(n)??0)===d&&r().drafts[n]?.revision===f&&(r().tombstones[n]??0)===l});if(m.status!==`committed`)return F(pe(m),m);let h=(o.get(n)??0)===d&&r().drafts[n]?.revision===f&&(r().tombstones[n]??0)===l,g=A(i);return h?(E(n),D(n),t(e=>{let t={...e.drafts};return delete t[n],{drafts:t,tombstones:{...e.tombstones,[n]:Math.max(e.tombstones[n]??0,p)},draftAttachmentViews:L(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:L(e.draftMissingAttachmentRefIDs,n),draftHydration:L(e.draftHydration,n),draftPersistence:L(e.draftPersistence,n),draftAttachmentPersistence:L(e.draftAttachmentPersistence,n)}}),F(g?`committed`:`stale`,m,void 0,g,!0)):(g||t(e=>({draftAttachmentViews:L(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:L(e.draftMissingAttachmentRefIDs,n),draftHydration:L(e.draftHydration,n),draftPersistence:L(e.draftPersistence,n),draftAttachmentPersistence:L(e.draftAttachmentPersistence,n)})),F(`stale`,m,void 0,!1,!0))},finalizeDraftOwnership:async e=>{let n=z(e.source),i=z(e.destination),s=e.runtime,c=r(),l=c.drafts[n],u=c.drafts[i];if(n===i||e.destination.owner.kind!==`session`||e.source.transportIdentity!==s.transportIdentity||e.destination.transportIdentity!==s.transportIdentity||!A(s))return fe(`stale`,void 0,l,u);if(!I(e.expectedSourceRevision))return fe(`failed`,void 0,l,u);if(!l||l.revision!==e.expectedSourceRevision||u)return fe(`conflict`,void 0,l,u);let d=o.get(n)??0,f=o.get(i)??0,p=c.tombstones[n]??0,m=c.tombstones[i]??0;if(!Number.isSafeInteger(p)||p<0||!Number.isSafeInteger(m)||m<0)return fe(`failed`,void 0,l,u);let h=Math.max(l.revision+1,m+1);if(!I(h))return fe(`failed`,void 0,l,u);let g=O(e.disposition===`preserve`?{...l,key:e.destination,revision:h}:{...ho(e.destination),revision:h});if(!g)return fe(`failed`,void 0,l,u);let _=await a.commit({drafts:{[i]:g},tombstones:{[n]:Math.max(p,h)},delete:[n],isCurrent:()=>A(s)&&(o.get(n)??0)===d&&(o.get(i)??0)===f&&r().drafts[n]?.revision===l.revision&&!r().drafts[i]&&(r().tombstones[n]??0)===p&&(r().tombstones[i]??0)===m,resolveBlobValue:e=>c.draftAttachmentViews[n]?.[e.attachmentOccurrenceRefID]?.file});if(_.status!==`committed`)return fe(pe(_),_,l,u);let v=(o.get(n)??0)===d&&r().drafts[n]?.revision===l.revision&&(r().tombstones[n]??0)===p,y=(o.get(i)??0)===f&&!r().drafts[i]&&(r().tombstones[i]??0)===m,b=A(s),x=de(g);if(!x)return fe(`failed`,_,l,u);if(b&&!v&&!y)return fe(`stale`,_,l,g,!1,!0);v&&(E(n),D(n)),y&&(E(i),D(i)),t(t=>{let r=t.drafts,a=t.tombstones;(v||y)&&(r={...r}),(v||y)&&(a={...a}),v&&(delete r[n],a[n]=Math.max(a[n]??0,h)),y&&(r[i]=x,delete a[i]);let o=t.draftHydration,s=t.draftPersistence,c=t.draftAttachmentViews,l=t.draftMissingAttachmentRefIDs,u=t.draftAttachmentPersistence;return b?(v&&(o=L(o,n),s=L(s,n),c=L(c,n),l=L(l,n),u=L(u,n)),y&&(o=L(o,i),s={...L(s,i),[i]:{status:`saved`,revision:x.revision}},c=L(c,i),l=L(l,i),u={...L(u,i),[i]:_.cleanupErrors.length?{status:`error`,revision:x.revision,errorCode:re(_)}:{status:`saved`,revision:x.revision}},b&&v&&e.disposition===`preserve`&&(c={...c,[i]:t.draftAttachmentViews[n]??{}},l={...l,[i]:t.draftMissingAttachmentRefIDs[n]??[]}))):(o=L(o,n,i),s=L(s,n,i),c=L(c,n,i),l=L(l,n,i),u=L(u,n,i)),{drafts:r,tombstones:a,draftHydration:o,draftPersistence:s,draftAttachmentViews:c,draftMissingAttachmentRefIDs:l,draftAttachmentPersistence:u}});let S=v&&y&&b;return fe(S?`committed`:`stale`,_,l,g,S,!0)},flushDraftPersistence:async()=>{for(await ae();p.size;)await Promise.all([...p]);await a.flush()},ensureDraft:e=>{let n=z(e),i=r().drafts[n];if(i)return i;let a=O({...ho(e),revision:(r().tombstones[n]??0)+1});if(!a)throw Error(`Invalid empty draft`);return E(n),t(e=>({drafts:{...e.drafts,[n]:a}})),se([n]),a},getDraft:e=>r().drafts[z(e)],setDraftText:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return P(e,e=>({...e,revision:e.revision+1,text:t,mentions:e.mentions.filter(e=>e.range.end<=t.length&&t.slice(e.range.start,e.range.end)===`@${e.value}`),composerReferences:[]}),n.revision,`deferred`)??n},setDraftComposerDocument:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return r().setDraftComposerState(e,{document:t,mentions:n.mentions})},setDraftComposerState:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return P(e,e=>({...e,revision:e.revision+1,text:t.document.text,composerReferences:t.document.references,mentions:t.mentions}),n.revision,`deferred`)},replaceDraft:(e,t,n)=>P(e,e=>({version:1,key:e.key,revision:e.revision+1,text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}}),t),setDraftMentions:(e,t)=>P(e,e=>({...e,revision:e.revision+1,mentions:t})),addDraftMention:(e,t)=>P(e,e=>({...e,revision:e.revision+1,mentions:[...e.mentions,t]})),removeDraftMention:(e,t)=>P(e,e=>({...e,revision:e.revision+1,mentions:e.mentions.filter(e=>e.value!==t)})),setDraftSyntheticParts:(e,t)=>P(e,e=>({...e,revision:e.revision+1,syntheticParts:t})),consumeDraftSyntheticParts:(e,t)=>{let n=r().getDraft(e);if(!n)return null;let i=n.syntheticParts.filter(e=>!t?.(e)),a=n.syntheticParts.filter(e=>t?.(e));return P(e,e=>({...e,revision:e.revision+1,syntheticParts:a}),n.revision)?i:null},setDraftAttachments:(e,t)=>P(e,e=>({...e,revision:e.revision+1,attachments:t})),addDraftLocalAttachment:async(e,n,i={})=>{let a=r().getDraft(e);if(i.partID&&!a?.syntheticParts.some(e=>e.partID===i.partID))return;let s=z(e),c=o.get(s)??0,l=r().tombstones[s]??0,u=k(),d=n instanceof File?n:new File([n],i.filename??`attachment`,{type:n.type}),f;try{f=await fo(d)}catch{let e=r().drafts[s];if(A(u)&&(r().tombstones[s]??0)===l&&(e?z(e.key)===s:(o.get(s)??0)===c)&&(!i.partID||e?.syntheticParts.some(e=>e.partID===i.partID))){let n=e?.revision??r().tombstones[s]??0;t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[s]:{status:`error`,revision:n,errorCode:`transaction-failed`}}}))}return}if(!A(u)||(r().tombstones[s]??0)!==l)return;let p=r().drafts[s];if(!p&&(o.get(s)??0)!==c)return;let m=p??r().ensureDraft(e);if(z(m.key)!==s||i.partID&&!m.syntheticParts.some(e=>e.partID===i.partID))return;let h=i.attachmentID??M(),g=i.partID?T(i.partID,h):ce(h),_=M(),v={attachmentID:h,attachmentRefID:g,filename:i.filename??(n instanceof File?n.name:`attachment`),mimeType:n.type,size:n.size,locator:{kind:`blob`,blobID:_},source:i.source??`local`,...i.vscodePath?{vscodePath:i.vscodePath}:{},...i.vscodeSource?{vscodeSource:i.vscodeSource}:{}},y=i.partID?{...m,revision:m.revision+1,syntheticParts:m.syntheticParts.map(e=>e.partID===i.partID?{...e,attachments:[...e.attachments,v]}:e)}:{...m,revision:m.revision+1,attachments:[...m.attachments,v]},b=O(y);if(!b)return;E(s);let x={id:h,file:d,dataUrl:f,mimeType:v.mimeType,filename:v.filename,size:v.size,source:v.source,...i.vscodePath?{vscodePath:i.vscodePath}:{},...i.vscodeSource?{vscodeSource:i.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[s]:b},draftAttachmentViews:{...e.draftAttachmentViews,[s]:{...e.draftAttachmentViews[s],[g]:x}}})),await N([s]),v},addDraftDurableAttachment:(e,n)=>{let i=r().getDraft(e)??r().ensureDraft(e);if(n.partID&&!i.syntheticParts.some(e=>e.partID===n.partID))return;let a=n.attachmentID??M(),o=n.partID?T(n.partID,a):ce(a),s={attachmentID:a,attachmentRefID:o,filename:n.filename,mimeType:n.mimeType,size:n.size,source:n.source,locator:{kind:`url`,url:n.url},...n.serverPath?{serverPath:n.serverPath}:{},...n.vscodePath?{vscodePath:n.vscodePath}:{},...n.vscodeSource?{vscodeSource:n.vscodeSource}:{}},c=n.partID?{...i,revision:i.revision+1,syntheticParts:i.syntheticParts.map(e=>e.partID===n.partID?{...e,attachments:[...e.attachments,s]}:e)}:{...i,revision:i.revision+1,attachments:[...i.attachments,s]},l=O(c);if(!l)return;let u=z(e);E(u);let d={id:a,file:new File([],s.filename,{type:s.mimeType}),dataUrl:n.url,mimeType:s.mimeType,filename:s.filename,size:s.size,source:s.source,...s.serverPath?{serverPath:s.serverPath}:{},...s.vscodePath?{vscodePath:s.vscodePath}:{},...s.vscodeSource?{vscodeSource:s.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[u]:l},draftAttachmentViews:{...e.draftAttachmentViews,[u]:{...e.draftAttachmentViews[u],[o]:d}}})),N([u]),s},getDraftAttachmentViews:e=>{let t=z(e),n=r().drafts[t],i=r().draftAttachmentViews[t]??{};return n?ee(n).flatMap(e=>i[e.attachmentRefID]?[i[e.attachmentRefID]]:[]):[]},retryDraftAttachmentPersistence:async e=>{let n=z(e);if(!r().persistenceEnabled||!r().drafts[n]&&!r().tombstones[n])return;let i=await a.retryCleanup();i.cleanupErrors.length&&t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[n]:{status:`error`,revision:e.drafts[n]?.revision??e.tombstones[n],errorCode:re(i)}}})),await N([n])},hydrateDraftAttachments:async e=>{let n=z(e),a=l.get(n);if(a)return a;let o=r().drafts[n];if(!o)return;let s=(c.get(n)??0)+1;c.set(n,s);let u=k(),d=_,f=(async()=>{t(e=>({draftHydration:{...e.draftHydration,[n]:`loading`}}));let e=()=>{if(c.get(n)!==s)return;let e=r(),i=e.draftAttachmentViews[n],a=e.draftMissingAttachmentRefIDs[n]??[];t(e=>({draftHydration:{...e.draftHydration,[n]:a.length?`degraded`:Object.keys(i??{}).length?`ready`:`idle`}}))},a={},l=[];for(let f of ee(o)){let p=f.locator.kind===`url`?{ok:!0,value:f.locator.url}:await i.read(f.locator.blobID);if(!p.ok){if(p.error.code===`missing-blob`)l.push(f.attachmentRefID);else{c.get(n)===s&&_===d&&A(u)&&r().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}continue}try{a[f.attachmentRefID]=await ne(f,p.value)}catch{c.get(n)===s&&_===d&&A(u)&&r().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}}let f=r(),p=f.drafts[n],m=c.get(n);if(m===s&&_===d&&A(u)&&p===o)t(e=>({draftAttachmentViews:{...e.draftAttachmentViews,[n]:a},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[n]:l},draftHydration:{...e.draftHydration,[n]:l.length?`degraded`:`ready`}}));else if(m===s){let e=f.draftAttachmentViews[n],r=f.draftMissingAttachmentRefIDs[n]??[];t(t=>({draftHydration:{...t.draftHydration,[n]:r.length?`degraded`:Object.keys(e??{}).length?`ready`:`idle`}}))}})();l.set(n,f);try{await f}finally{l.get(n)===f&&l.delete(n)}},removeDraftAttachment:async(e,n)=>{let i=z(e),a=r().drafts[i],o=a&&ee(a).find(e=>e.attachmentRefID===n);if(!a||!o)return!1;let s=Ct(o)?Et(a.text,[o.filename],a.mentions,a.composerReferences):void 0,c=O({...a,revision:a.revision+1,...s?.changed?{text:s.text,mentions:s.mentions,...s.composerReferences===void 0?{}:{composerReferences:s.composerReferences}}:{},attachments:a.attachments.filter(e=>e.attachmentRefID!==n),syntheticParts:a.syntheticParts.map(e=>({...e,attachments:e.attachments.filter(e=>e.attachmentRefID!==n)}))});return c?(E(i),t(e=>{let t={...e.draftAttachmentViews[i]};return delete t[n],{drafts:{...e.drafts,[i]:c},draftAttachmentViews:{...e.draftAttachmentViews,[i]:t},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[i]:(e.draftMissingAttachmentRefIDs[i]??[]).filter(e=>e!==n)}}}),(await N([i])).status===`committed`):!1},replaceDraftAttachment:async(e,n,i,a)=>{let o=z(e),s=r().drafts[o],c=s&&ee(s).find(e=>e.attachmentRefID===n);if(!s||!c)return;let l=k(),u=r().tombstones[o]??0,d=i instanceof File?i:new File([i],a?.filename??`attachment`,{type:i.type}),f;try{f=await fo(d)}catch{let e=r().drafts[o],i=e&&ee(e).find(e=>e.attachmentRefID===n);A(l)&&(r().tombstones[o]??0)===u&&e&&i?.attachmentID===c.attachmentID&&i.attachmentRefID===c.attachmentRefID&&z(e.key)===o&&t(t=>({draftAttachmentPersistence:{...t.draftAttachmentPersistence,[o]:{status:`error`,revision:e.revision,errorCode:`transaction-failed`}}}));return}let p=r().drafts[o],m=p&&ee(p).find(e=>e.attachmentRefID===n);if(!A(l)||(r().tombstones[o]??0)!==u||!p||m?.attachmentID!==c.attachmentID||m.attachmentRefID!==c.attachmentRefID||z(p.key)!==o)return;let h=p.syntheticParts.find(e=>e.attachments.some(e=>e.attachmentRefID===n)),g=M(),_={attachmentID:g,attachmentRefID:h?T(h.partID,g):ce(g),filename:a?.filename??d.name,mimeType:d.type,size:d.size,locator:{kind:`blob`,blobID:M()},source:a?.source??`local`,...a?.vscodePath?{vscodePath:a.vscodePath}:{},...a?.vscodeSource?{vscodeSource:a.vscodeSource}:{}},v=O({...p,revision:p.revision+1,attachments:h?p.attachments:p.attachments.map(e=>e.attachmentRefID===n?_:e),syntheticParts:p.syntheticParts.map(e=>e.partID===h?.partID?{...e,attachments:e.attachments.map(e=>e.attachmentRefID===n?_:e)}:e)});if(!v)return;E(o);let y={id:g,file:d,dataUrl:f,mimeType:_.mimeType,filename:_.filename,size:_.size,source:_.source,..._.vscodePath?{vscodePath:_.vscodePath}:{},..._.vscodeSource?{vscodeSource:_.vscodeSource}:{}};return t(e=>{let t={...e.draftAttachmentViews[o]};return delete t[n],{drafts:{...e.drafts,[o]:v},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...t,[_.attachmentRefID]:y}},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[o]:(e.draftMissingAttachmentRefIDs[o]??[]).filter(e=>e!==n)}}}),(await N([o])).status===`committed`?_:void 0},replaceDraftRootAttachments:async(e,t)=>{let n=z(e),i=k();if(i.transportIdentity!==e.transportIdentity||!A(i))return F(`stale`,void 0);let a=r().drafts[n],o=a?a.revision:`absent`,s=[],c=new Map;for(let e of t){let t=e.id,n=ce(t);if(e.source===`server`&&e.dataUrl&&je(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),c.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&je(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),c.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=M();s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),c.set(n,r)}}let l=a?.syntheticParts??[];for(let e of l)for(let t of e.attachments)t.locator.kind===`url`&&!c.has(t.attachmentRefID)&&c.set(t.attachmentRefID,t.locator.url);let u={text:a?.text??``,attachments:s,syntheticParts:l,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return r().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:u,values:c,runtime:i})},restoreDraftRootAttachments:async(e,t)=>{let n=z(e),i=k();if(i.transportIdentity!==e.transportIdentity||!A(i))return F(`stale`,void 0);let a=r().drafts[n],o=a?a.revision:`absent`,s=new Set(t.map(e=>e.id)),c=[],l=new Map;for(let e of t){let t=e.id,n=ce(t);if(e.source===`server`&&e.dataUrl&&je(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),l.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&je(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),l.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=M();c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),l.set(n,r)}}let u=r().draftAttachmentViews[n]??{};for(let e of a?.attachments??[])if(!s.has(e.attachmentID))if(c.push(JSON.parse(JSON.stringify(e))),e.locator.kind===`url`)l.set(e.attachmentRefID,e.locator.url);else{let t=u[e.attachmentRefID];t?.file instanceof Blob?l.set(e.attachmentRefID,t.file):typeof t?.dataUrl==`string`&&je(t.dataUrl)&&l.set(e.attachmentRefID,t.dataUrl)}let d=a?.syntheticParts??[];for(let e of d)for(let t of e.attachments)t.locator.kind===`url`&&!l.has(t.attachmentRefID)&&l.set(t.attachmentRefID,t.locator.url);let f={text:a?.text??``,attachments:c,syntheticParts:d,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return r().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:f,values:l,runtime:i})},deleteDraft:(e,n)=>{let i=z(e),a=r().drafts[i];if(!a||n!==void 0&&a.revision!==n)return!1;let o=a.revision+1;return I(o)?(E(i),D(i),t(e=>{let t={...e.drafts};delete t[i];let n={...e.draftHydration},r={...e.draftPersistence},a={...e.draftAttachmentViews},s={...e.draftMissingAttachmentRefIDs},c={...e.draftAttachmentPersistence};return delete n[i],delete r[i],delete a[i],delete s[i],delete c[i],{drafts:t,tombstones:{...e.tombstones,[i]:Math.max(e.tombstones[i]??0,o)},draftHydration:n,draftPersistence:r,draftAttachmentViews:a,draftMissingAttachmentRefIDs:s,draftAttachmentPersistence:c}}),N([i]),!0):!1},moveDraft:(e,n,i)=>{let a=z(e),o=z(n),s=r().drafts[a];if(!s||a===o||i!==void 0&&s.revision!==i||r().drafts[o]||(r().tombstones[o]??0)>=s.revision+1||[...s.attachments,...s.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.locator.kind===`blob`))return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),N([a,o]),c},moveDraftWithAttachments:async(e,n,i)=>{let a=z(e),o=z(n),s=r().drafts[a];if(!s||a===o||i!==void 0&&s.revision!==i||r().drafts[o]||(r().tombstones[o]??0)>=s.revision+1)return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),(await N([a,o])).status===`committed`?c:void 0},setDraftPersistenceEnabled:async e=>{if(_+=1,!e){h&&clearTimeout(h),h=void 0,m.clear(),g=void 0,t({persistenceEnabled:!1,draftPersistence:{}}),await a.setEnabled(!1),await a.flush();return}t({persistenceEnabled:!0}),await a.setEnabled(!0);let n=k();b||await r().hydrateDraftMetadata(n.transportIdentity);let i=new Set([...Object.keys(r().drafts),...Object.keys(r().tombstones),...S]);S.clear(),await N(i),await a.flush()},hydrateDraftMetadata:e=>{let i=d.get(e);if(i)return i;let c=(async()=>{let i=(s.get(e)??0)+1;s.set(e,i);let c=k();if(c.transportIdentity!==e)return!1;let l=_,u=new Map(o),d=v,f=Object.entries(r().drafts).filter(([,t])=>t.key.transportIdentity===e).map(([e])=>e);t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`loading`]))}}));let p=r().persistenceEnabled,m;try{m=await n.migrate(e,{persistenceEnabled:p})}catch{return!1}if(s.get(e)!==i||_!==l||!A(c))return!1;if(!m.ok)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(t=>[t,e.drafts[t]?`degraded`:`error`]))}})),!1;let h=m.value;if(!b){x??=a.seed(h).finally(()=>{x=void 0});let n;try{n=await x}catch{return!1}if(s.get(e)!==i||_!==l||!A(c))return!1;if(n.status!==`committed`&&n.status!==`disabled`)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`degraded`]))}})),!1;n.status===`committed`&&(b=!0)}let g=r(),C={...g.drafts},w={...g.tombstones},T=new Set;for(let[e,t]of Object.entries(h.tombstones))(o.get(e)??0)===(u.get(e)??0)&&(t>=(w[e]??0)&&(w[e]=t,(C[e]?.revision??0)<=t&&delete C[e]),T.add(e));for(let[t,n]of Object.entries(h.drafts)){if(n.key.transportIdentity!==e||(o.get(t)??0)!==(u.get(t)??0))continue;let r=C[t],i=O(n);i&&(!r||r.revision<i.revision)&&(w[t]??0)<i.revision&&(C[t]=i),T.add(t)}let E=v===d?{...h.legacy.entries}:{...g.legacyDraftEntries};if(h.migration.claimedTransportIdentity===e&&v===d)for(let[t,n]of Object.entries(E)){let r={transportIdentity:e,owner:{kind:`session`,ownerID:t}},i=z(r),a=oo(n.text),s=O({...ho(r),text:a.text,composerReferences:a.references,mentions:go(a.text,n.mentions)});s&&!C[i]&&!w[i]&&(o.get(i)??0)===(u.get(i)??0)&&(C[i]=s),delete E[t],T.add(i)}t(e=>({drafts:C,tombstones:w,legacyNewDraft:v===d&&!y?h.legacy.new:e.legacyNewDraft,legacyDraftEntries:E,migration:v===d?h.migration:e.migration,draftHydration:{...e.draftHydration,...Object.fromEntries([...T].map(e=>[e,`ready`]))}}));let D=[...S];for(let e of D)T.add(e);S.clear();try{await N(T),await a.flush()}catch{return!1}return s.get(e)===i&&_===l&&A(c)})();return d.set(e,c),c.finally(()=>{d.get(e)===c&&d.delete(e)}).catch(()=>void 0),c},claimLegacyNewDraft:async e=>{let n=r().legacyNewDraft;if(!n)return r().getDraft(e);let i=z(e),a=r().drafts[i];if(v+=1,y=!0,a||r().tombstones[i])return t({legacyNewDraft:void 0}),N([i]),a;let o=oo(n.text),s=O({...ho(e),text:o.text,composerReferences:o.references,mentions:go(o.text,n.mentions)});if(s)return E(i),t(e=>({drafts:{...e.drafts,[i]:s},legacyNewDraft:void 0})),N([i]),s},pendingInputText:null,pendingInputMode:`replace`,pendingSyntheticParts:null,pendingPresetSubmit:null,attachedFiles:[],attachmentBuckets:{"legacy-unowned":[]},activeAttachmentDraft:null,activeEditorFile:null,setPendingInputText:(e,n=`replace`)=>t({pendingInputText:e,pendingInputMode:n}),consumePendingInputText:()=>{let{pendingInputText:e,pendingInputMode:n}=r();return e===null?null:(t({pendingInputText:null,pendingInputMode:`replace`}),{text:e,mode:n})},requestPresetSubmit:e=>t({pendingPresetSubmit:e}),consumePendingPresetSubmit:()=>{let{pendingPresetSubmit:e}=r();return e===null?null:(t({pendingPresetSubmit:null}),e)},setPendingSyntheticParts:e=>t({pendingSyntheticParts:e}),consumePendingSyntheticParts:()=>{let{pendingSyntheticParts:e}=r();return e!==null&&t({pendingSyntheticParts:null}),e},setActiveAttachmentDraft:e=>{let n=he(e);t(t=>({activeAttachmentDraft:e,attachedFiles:t.attachmentBuckets[n]??[],attachmentBuckets:t.attachmentBuckets[n]?t.attachmentBuckets:{...t.attachmentBuckets,[n]:[]}}))},addAttachedFile:async e=>{let t=r().activeAttachmentDraft;if(t){let n=he(t),i=ge(n),a=await r().addDraftLocalAttachment(t,e);i!==ge(n)&&a&&r().removeDraftAttachment(t,a.attachmentRefID);return}let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,i=he(null),a=ge(i),o;try{o=await fo(e)}catch{return}if(a!==ge(i))return;let s={id:n,file:e,dataUrl:o,mimeType:e.type,filename:e.name,size:e.size,source:`local`};ve(i,e=>[...e,s])},removeAttachedFile:e=>{let t=r().activeAttachmentDraft;if(t){let n=r().getDraft(t),i=n?[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)].find(t=>t.attachmentID===e):void 0;i&&r().removeDraftAttachment(t,i.attachmentRefID);return}ve(he(null),t=>t.filter(t=>t.id!==e))},setAttachedFiles:e=>{ve(he(r().activeAttachmentDraft),()=>e,!0)},clearAttachedFiles:()=>{let e=r().activeAttachmentDraft;if(e){_e(he(e)),r().getDraft(e)||r().ensureDraft(e),r().setDraftAttachments(e,[]);return}ve(he(null),()=>[],!0)},addDraftVSCodeFileAttachment:(e,t,n,i)=>{if(r().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)||(r().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)??!1))return;let a=lo(t);r().addDraftDurableAttachment(e,{filename:n,mimeType:`text/plain`,size:i||0,source:`vscode`,vscodePath:t,vscodeSource:`file`,url:a})},addDraftVSCodeSelectionAttachment:async(e,t,n)=>{let i=z(e),a=ge(i),o=`${i}\u0000${uo(t,n.name)}`;if(!(r().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)||(r().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)??!1)||w.has(o))){w.add(o);try{let o=await r().addDraftLocalAttachment(e,n,{source:`vscode`,vscodePath:t,vscodeSource:`selection`});a!==ge(i)&&o&&r().removeDraftAttachment(e,o.attachmentRefID)}finally{w.delete(o)}}},addVSCodeFileAttachment:(e,t,n)=>{let i=r().activeAttachmentDraft;if(i){r().addDraftVSCodeFileAttachment(i,e,t,n);return}let a=`${Date.now()}-${Math.random().toString(36).slice(2)}`,o=he(null);if((r().attachmentBuckets[o]??[]).some(t=>t.source===`vscode`&&t.vscodeSource===`file`&&(t.vscodePath||``)===e))return;let s=lo(e),c={id:a,file:new File([],t,{type:`text/plain`}),dataUrl:s,mimeType:`text/plain`,filename:t,size:n||0,source:`vscode`,vscodePath:e,vscodeSource:`file`};ve(o,e=>[...e,c])},addVSCodeSelectionAttachment:async(e,t)=>{let n=r().activeAttachmentDraft;if(n){await r().addDraftVSCodeSelectionAttachment(n,e,t);return}let i=`${Date.now()}-${Math.random().toString(36).slice(2)}`,a=he(null),o=ge(a),s=`${a}\u0000${uo(e,t.name)}`;if((r().attachmentBuckets[a]??[]).some(n=>n.source===`vscode`&&n.vscodeSource===`selection`&&n.filename===t.name&&n.vscodePath===e)||w.has(s))return;w.add(s);let c;try{c=await fo(t)}catch{return}finally{w.delete(s)}if(o!==ge(a))return;let l={id:i,file:t,dataUrl:c,mimeType:t.type,filename:t.name,size:t.size,source:`vscode`,vscodePath:e,vscodeSource:`selection`};ve(a,e=>[...e,l])},addCodeSelectionAttachment:async(e,t,n)=>{let i=new File([n],t,{type:`text/plain`});await r().addVSCodeSelectionAttachment(e,i)},setActiveEditorFile:e=>{mo(r().activeEditorFile,e)||t({activeEditorFile:e})},addRestoredAttachment:({url:e,mimeType:t,filename:n})=>{let i=r().activeAttachmentDraft;if(i){if(e.startsWith(`data:`)){let a=z(i);(async()=>{try{let o=await(await fetch(e)).blob(),s=new File([o],n,{type:t||o.type||`application/octet-stream`}),c=r().activeAttachmentDraft;if(!c||z(c)!==a)return;await r().addDraftLocalAttachment(i,s)}catch{}})();return}if(!je(e))return;r().addDraftDurableAttachment(i,{filename:n,mimeType:t,size:po(e),source:`local`,serverPath:e,url:e});return}let a={id:`restored-${Date.now()}-${Math.random().toString(36).slice(2)}`,file:new File([],n,{type:t}),dataUrl:e,mimeType:t,filename:n,size:po(e),source:`local`,serverPath:e};ve(he(null),e=>[...e,a])}}})})(),vo=[`session_status`,`session_status_observed_at`,`session_status_event_at`,`session_status_event_sequence`,`session_interrupt_acknowledged_at`,`session_execution_version`,`session_error_at`,`session_execution_recovery`,`session_diff`,`todo`,`permission`,`question`];function yo(e,t,n){if(!So().size)return n;let r=n;n.session&&n.session!==t.session&&n.session.some(t=>!Eo(t.id,e))&&(r={...r,session:n.session.filter(t=>Eo(t.id,e))});for(let i of vo){let a=n[i];if(!a||a===t[i])continue;let o=Object.keys(a).filter(t=>!Eo(t,e));if(!o.length)continue;let s={...a};for(let e of o)delete s[e];r={...r,[i]:s}}return r}var bo=``,xo=new Map;function So(){let e=`${u()}:${f()}`;return bo!==e&&(bo=e,xo.clear()),xo}function Co(e){return So().get(e)?.directory}function wo(e,t,n){let r=So().get(e);return r&&t&&typeof n==`number`&&n>r.clock&&S(t)!==r.directory&&To(e,t,n),Co(e)}function To(e,t,n,r){let i=So(),a=i.get(e);return t=S(t),a&&(r!==void 0&&a.sequence!==void 0?r<=a.sequence:n<a.clock||n===a.clock&&t===a.directory)?!1:(i.set(e,{directory:t,clock:n,sequence:r}),!0)}function Eo(e,t){let n=Co(e);return!n||n===S(t)}var Do={asrContext:`The speaker is discussing software development and technical tasks with an AI assistant. Speech may mix Mandarin Chinese and English within the same sentence. The conversation may cover requirements, system design, implementation, debugging, testing, deployment, and maintenance. Common software engineering terms include alpha, beta, release, stable, version, build, branch, commit, merge, pull request, code review, bug, fix, hotfix, patch, refactor, rollback, deploy, CI/CD, API, SDK, and CLI. Technical terms, product names, acronyms, and code identifiers may be spoken in English within otherwise Chinese sentences.`,showMessageTTSButtons:!1,voiceProvider:`browser`,speechRate:1,speechPitch:1,speechVolume:1,ttsInputMode:`final`,sayVoice:`Samantha`,localTtsVoiceId:0,browserVoice:``,openaiVoice:`nova`,openaiApiKey:``,openaiApiKeyConfigured:!1,openaiCompatibleUrl:``,openaiCompatibleApiKey:``,openaiCompatibleApiKeyConfigured:!1,openaiCompatibleVoice:`af_sky`,openaiCompatibleTtsModel:`kokoro`,dictationEnabled:!1,sttProvider:`local`,sttServerUrl:`http://localhost:8001/v1`,sttApiKey:``,sttApiKeyConfigured:!1,sttModel:`deepdml/faster-whisper-large-v3-turbo-ct2`,sttLocalModel:`parakeet-tdt-0.6b-v2-int8`,sttLanguage:``,summarizeMessageTTS:!1,summarizeVoiceConversation:!1,summarizeCharacterThreshold:200,summarizeMaxLength:500,configured:!1,apiKey:``,voice:`zh_female_vv_uranus_bigtts`,resourceId:`seed-tts-2.0`,asrResourceId:`volc.seedasr.sauc.duration`},Oo=new Set([`apiKey`,`openaiApiKey`,`openaiCompatibleApiKey`,`sttApiKey`]);function ko(e){if(!e||typeof e!=`object`)throw Error(`Invalid speech settings`);let t=e,n={...Do};for(let e of Object.keys(Do))if(!Oo.has(e)){if(e===`asrContext`&&t[e]===void 0){n.asrContext=``;continue}if(typeof t[e]!=typeof Do[e])throw Error(`Invalid speech settings`);Object.assign(n,{[e]:t[e]})}if(![`browser`,`local`,`openai`,`openai-compatible`,`say`,`volcengine`].includes(n.voiceProvider)||![`local`,`openai-compatible`,`volcengine`].includes(n.sttProvider)||![`final`,`sanitized`,`raw`,`summarized`].includes(n.ttsInputMode))throw Error(`Invalid speech settings`);return n}var Ao=new Set;function jo(e){return Ao.add(e),()=>{Ao.delete(e)}}function Mo(e,t){let n=Array.isArray(e)?e:[e],r=Array.from(new Set(n));if(r.length===0)return;r.includes(`all`)&&r.splice(0,r.length,`all`);let i={scopes:r,source:t?.source,timestamp:Date.now()};for(let e of Ao)try{let t=e(i);t instanceof Promise&&t.catch(e=>{console.error(`[ConfigSync] Async listener failed:`,e)})}catch(e){console.error(`[ConfigSync] Listener threw:`,e)}}function No(e,t){return e.scopes.includes(`all`)||e.scopes.includes(t)}var Po=`Updating OpenCode configuration...`,Fo=0,Io=Po,Lo=new Set;function Ro(){let e={isUpdating:Fo>0,message:Io};Lo.forEach(t=>t(e))}function zo(e){Fo+=1,Fo===1?(Io=e||Po,Ro()):e&&(Io=e,Ro())}function Bo(){Fo!==0&&(--Fo,Fo===0&&(Io=Po,Ro()))}function Vo(e){Io===e&&Fo>0||(Io=e,Fo>0&&Ro())}function Ho(e){return Lo.add(e),e({isUpdating:Fo>0,message:Io}),()=>{Lo.delete(e)}}function Uo(){return{isUpdating:Fo>0,message:Io}}var Wo=Cr(),Go=`projects`,Ko=`activeProjectId`,qo=`projects:manualOrder`,Jo=(e,t)=>{let n=e.trim();return!n.startsWith(`~`)||!t?n:n===`~`?t:n.startsWith(`~/`)||n.startsWith(`~\\`)?`${t}${n.slice(1)}`:n},Yo=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,Xo=e=>{if(typeof e!=`string`)return;let t=e.trim();if(!t)return;let n=t.indexOf(`/`);if(!(n<=0||n>=t.length-1))return t},Zo=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t&&Yo.test(t)?t.toLowerCase():null},Qo=e=>{let t=e.trim();if(!t)return``;let n=Jo(t,k(`homeDirectory`,{storage:Wo})||Xe.getState().homeDirectory||``).replace(/\\/g,`/`);return n===`/`?`/`:n.length>1?n.replace(/\/+$/,``):n},$o=e=>{let t=Qo(e);if(!t||t===`/`)return`Root`;let n=t.split(`/`).filter(Boolean);return n[n.length-1]||t},es=e=>{if(!e||typeof e!=`object`)return;let t=e,n=typeof t.mime==`string`?t.mime.trim():``,r=typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)?Math.max(0,Math.round(t.updatedAt)):0,i=t.source===`custom`||t.source===`auto`?t.source:null;if(!(!n||!r||!i))return{mime:n,updatedAt:r,source:i}},ts=e=>{let t=typeof e.type==`string`?e.type.trim().toLowerCase():``;if(t===`image/png`||t===`image/jpeg`||t===`image/svg+xml`)return t;let n=e.name.toLowerCase();return n.endsWith(`.png`)?`image/png`:n.endsWith(`.jpg`)||n.endsWith(`.jpeg`)?`image/jpeg`:n.endsWith(`.svg`)?`image/svg+xml`:null},ns=async e=>await new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>{n(Error(`Failed to read icon file`))},r.onload=()=>{let e=typeof r.result==`string`?r.result:``;if(!e){n(Error(`Failed to read icon file`));return}t(e)},r.readAsDataURL(e)}),rs=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set,r=new Set;for(let i of e){if(!i||typeof i!=`object`)continue;let e=i,a=typeof e.path==`string`?e.path.trim():``;if(!a)continue;let o=Qo(a);if(!o)continue;let s=Ce(o);if(!s||n.has(s)||r.has(o))continue;n.add(s),r.add(o);let c={id:s,path:o};if(typeof e.label==`string`&&e.label.trim().length>0&&(c.label=e.label.trim()),typeof e.icon==`string`&&e.icon.trim().length>0&&(c.icon=e.icon.trim()),e.iconImage===null)c.iconImage=null;else{let t=es(e.iconImage);t&&(c.iconImage=t)}typeof e.color==`string`&&e.color.trim().length>0&&(c.color=e.color.trim());let l=Xo(e.defaultModel);if(l&&(c.defaultModel=l),e.iconBackground===null)c.iconBackground=null;else{let t=Zo(e.iconBackground);t&&(c.iconBackground=t)}typeof e.addedAt==`number`&&Number.isFinite(e.addedAt)&&e.addedAt>=0&&(c.addedAt=e.addedAt),typeof e.lastOpenedAt==`number`&&Number.isFinite(e.lastOpenedAt)&&e.lastOpenedAt>=0&&(c.lastOpenedAt=e.lastOpenedAt),typeof e.sidebarCollapsed==`boolean`&&(c.sidebarCollapsed=e.sidebarCollapsed),t.push(c)}return t},is=()=>{try{let e=k(Go,{storage:Wo});return e?rs(JSON.parse(e)):[]}catch{return[]}},as=()=>{if(!P())return null;let e=g().trim().replace(/\/+$/,``);return e?Wo.getItem(`${Go}:${encodeURIComponent(e)}:manualOrder`):null},os=()=>{try{let e=k(qo,{storage:Wo})||as();if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}},ss=()=>{try{let e=k(Ko,{storage:Wo});if(typeof e==`string`&&e.trim().length>0)return e.trim()}catch{return null}return null},cs=(e,t)=>{try{ne(Go,JSON.stringify(e),{storage:Wo})}catch{}try{t?ne(Ko,t,{storage:Wo}):j(Ko,{storage:Wo})}catch{}},ls=(e,t,n)=>{cs(e,t),n&&us(n),ge({projects:e,activeProjectId:t??void 0})},us=e=>{try{ne(qo,JSON.stringify(e),{storage:Wo})}catch{}},ds=is(),fs=(e,t,n)=>{let r=e.findIndex(e=>e.id===t),i=e.findIndex(e=>e.id===n);if(r<0||i<0||r===i)return e;let a=[...e],[o]=a.splice(r,1);return a.splice(i,0,o),a},ps=e=>{let t=[],n=new Set;for(let r of e){let e=Qo(r.path);!e||n.has(e)||(n.add(e),t.push({name:r.name?.trim(),path:e}))}return t},ms=(e,t,n,r)=>{let i=Qo(e.path);if(!i)return null;let a=Ce(i),o=r===i;return{...t,id:a,path:i,label:$o(i),addedAt:t?.addedAt??n,lastOpenedAt:o?n:t?.lastOpenedAt??n}},hs=()=>{if(typeof window>`u`||!b()?.runtime?.isVSCode)return null;let e=window.__VSCODE_CONFIG__,t=Array.isArray(e?.workspaceFolders)?e.workspaceFolders.map(e=>{let t=e,n=typeof t.path==`string`?t.path.trim():``;return n?{name:typeof t.name==`string`?t.name.trim():``,path:n}:null}).filter(e=>e!==null):[];if(t.length>0)return ps(t);let n=e?.workspaceFolder;return typeof n!=`string`||n.trim().length===0?null:ps([{path:n}])},gs=(e,t,n)=>{let r=ps(e),i=n?Qo(n):null,a=r.length===0&&i?[{path:i}]:i&&!r.some(e=>e.path===i)?[...r,{path:i}]:r;if(a.length===0)return null;let o=Date.now(),s=a.map(e=>ms(e,t.find(t=>t.path===e.path)??null,o,i)).filter(e=>e!==null);if(s.length===0)return null;let c=i?s.find(e=>e.path===i)??null:s[0]??null,l=c?.id??s[0]?.id??null;return Ot(),{projects:s,activeProjectId:l,activeProject:c??s[0]??null}},_s=(e,t)=>e===t?!0:!e||!t?e===t:e.mime===t.mime&&e.updatedAt===t.updatedAt&&e.source===t.source,vs=(e,t)=>e.length===t.length&&e.every((e,n)=>{let r=t[n];return r?e.id===r.id&&e.path===r.path&&e.label===r.label&&e.icon===r.icon&&e.color===r.color&&e.iconBackground===r.iconBackground&&e.defaultModel===r.defaultModel&&e.addedAt===r.addedAt&&e.lastOpenedAt===r.lastOpenedAt&&e.sidebarCollapsed===r.sidebarCollapsed&&_s(e.iconImage,r.iconImage):!1}),ys=(()=>{let e=hs();if(!e)return null;let t=gs(e,[]);return t?{projects:t.projects,activeProjectId:t.activeProjectId}:null})(),bs=typeof window>`u`?!1:!!b()?.runtime?.isVSCode,xs=ys?.projects??(bs?[]:ds),Ss=ys?.activeProjectId??(bs?null:ss()),Cs=xs.some(e=>e.id===Ss)?Ss:xs[0]?.id??null;ys&&cs(xs,Cs);var ws=Ne()(Ie((e,t)=>({projects:xs,activeProjectId:Cs,manualProjectOrder:os(),validateProjectPath:e=>{if(typeof e!=`string`||e.trim().length===0)return{ok:!1,reason:`Provide a directory path.`};let t=Qo(e);return t?{ok:!0,normalizedPath:t}:{ok:!1,reason:`Directory path cannot be empty.`}},addProject:(n,r)=>{if(bs)return null;let{validateProjectPath:i}=t(),a=i(n);if(!a.ok||!a.normalizedPath)return null;let o=a.normalizedPath,s=t().projects.find(e=>e.path===o);if(s)return t().setActiveProject(s.id),s;let c=Date.now(),l=r?.label?.trim()||$o(o),u={id:Ce(o),path:o,label:l,addedAt:c,lastOpenedAt:c},{projects:d,manualProjectOrder:f}=t();return e({projects:[u,...d],manualProjectOrder:[u.id,...f.filter(e=>e!==u.id)]}),Ot(),t().setActiveProject(u.id),t().discoverProjectIcon(u.id),u},removeProject:n=>{if(bs)return;let r=t(),i=r.projects.find(e=>e.id===n),a=r.projects.filter(e=>e.id!==n),o=r.activeProjectId;r.activeProjectId===n&&(o=a[0]?.id??null);let s=t().manualProjectOrder.filter(e=>e!==n);if(e({projects:a,activeProjectId:o,manualProjectOrder:s}),ls(a,o,s),i){let e=i.path.replace(/\\/g,`/`).replace(/\/+$/,``)||`/`;$.setState(t=>{let n=new Map(t.availableWorktreesByProject);return n.delete(e),{availableWorktreesByProject:n}})}if(o){let e=a.find(e=>e.id===o);e&&(H.setDirectory(e.path),Xe.getState().setDirectory(e.path,{showOverlay:!1}))}else Xe.getState().goHome()},setActiveProject:n=>{if(bs)return;let{projects:r,activeProjectId:i}=t();if(i===n)return;let a=r.find(e=>e.id===n);a&&(e({activeProjectId:n}),ls(r,n,t().manualProjectOrder),H.setDirectory(a.path),Xe.getState().setDirectory(a.path,{showOverlay:!1}))},setActiveProjectIdOnly:n=>{if(bs)return;let{projects:r,activeProjectId:i}=t();i!==n&&r.find(e=>e.id===n)&&(e({activeProjectId:n}),ls(r,n,t().manualProjectOrder))},renameProject:(n,r)=>{if(bs)return;let i=r.trim();if(!i)return;let{projects:a,activeProjectId:o}=t(),s=a.map(e=>e.id===n?{...e,label:i}:e);e({projects:s}),ls(s,o,t().manualProjectOrder)},updateProjectMeta:(n,r)=>{if(bs)return;let{projects:i,activeProjectId:a}=t(),o=i.map(e=>{if(e.id!==n)return e;let t={...e};if(r.label!==void 0){let e=r.label.trim();e&&(t.label=e)}if(r.icon!==void 0&&(t.icon=r.icon),r.color!==void 0&&(t.color=r.color),r.iconBackground!==void 0&&(t.iconBackground=Zo(r.iconBackground)),r.defaultModel!==void 0){let e=Xo(r.defaultModel);e?t.defaultModel=e:delete t.defaultModel}return t});e({projects:o}),ls(o,a,t().manualProjectOrder)},uploadProjectIcon:async(e,n)=>{if(bs)return{ok:!1,error:`Custom icons are not supported in this runtime`};let r=ts(n);if(!r)return{ok:!1,error:`Only PNG, JPEG, and SVG are supported`};if(!Number.isFinite(n.size)||n.size<=0)return{ok:!1,error:`Icon file is empty`};if(n.size>5242880)return{ok:!1,error:`Icon exceeds size limit (5 MB)`};try{let i=(await ns(n)).replace(/^data:[^;]+;/i,`data:${r};`),a=await x(`/api/projects/${encodeURIComponent(e)}/icon`,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({dataUrl:i})});if(!a.ok)return{ok:!1,error:(await a.json().catch(()=>null))?.error||`Failed to upload project icon`};let o=await a.json().catch(()=>null);return o?.settings&&t().synchronizeFromSettings(o.settings),{ok:!0}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to upload project icon`}}},removeProjectIcon:async e=>{if(bs)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let n=await x(`/api/projects/${encodeURIComponent(e)}/icon`,{method:`DELETE`,headers:{Accept:`application/json`}});if(!n.ok)return{ok:!1,error:(await n.json().catch(()=>null))?.error||`Failed to remove project icon`};let r=await n.json().catch(()=>null);return r?.settings&&t().synchronizeFromSettings(r.settings),{ok:!0}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to remove project icon`}}},discoverProjectIcon:async(e,n)=>{if(bs)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let r=await x(`/api/projects/${encodeURIComponent(e)}/icon/discover`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({force:n?.force===!0})}),i=await r.json().catch(()=>null);return r.ok?(i?.settings&&t().synchronizeFromSettings(i.settings),{ok:!0,skipped:i?.skipped===!0,reason:typeof i?.reason==`string`?i.reason:void 0}):{ok:!1,error:i?.error||`Failed to discover project icon`}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to discover project icon`}}},reorderProjects:(n,r)=>{if(bs)return;let{projects:i,activeProjectId:a}=t();if(n<0||n>=i.length||r<0||r>=i.length||n===r)return;let o=[...i],[s]=o.splice(n,1);o.splice(r,0,s);let c=o.map(e=>e.id);e({projects:o,manualProjectOrder:c}),ls(o,a,c)},reorderProjectsById:(n,r)=>{if(bs)return;let{projects:i,activeProjectId:a}=t(),o=fs(i,n,r);if(o===i)return;let s=o.map(e=>e.id);e({projects:o,manualProjectOrder:s}),ls(o,a,s)},moveProjectToTop:n=>{if(bs)return;let{projects:r,activeProjectId:i,manualProjectOrder:a}=t(),o=r.findIndex(e=>e.id===n);if(o===-1)return;let s=a.indexOf(n),c=o>0,l=a.length>0&&s!==0;if(!c&&!l)return;let u=c?(()=>{let e=[...r],[t]=e.splice(o,1);return e.unshift(t),e})():r,d=l?[n,...a.filter(e=>e!==n)]:a;(u!==r||d!==a)&&(e({projects:u,manualProjectOrder:d}),ls(u,i,d))},resetForRuntimeSwitch:()=>{if(bs)return;let t=is(),n=ss(),r=t.some(e=>e.id===n)?n:t[0]?.id??null,i=new Set(t.map(e=>e.id));e({projects:t,activeProjectId:r,manualProjectOrder:os().filter(e=>i.has(e))})},synchronizeFromSettings:n=>{if(bs||!Array.isArray(n.projects))return;let r=rs(n.projects??[]),i=typeof n.activeProjectId==`string`&&n.activeProjectId.trim()?n.activeProjectId.trim():null,a=t(),o=JSON.stringify(a.projects)!==JSON.stringify(r),s=a.activeProjectId!==i,c=r.map(e=>e.id),l=JSON.stringify(a.manualProjectOrder)!==JSON.stringify(c);if(!(!o&&!s&&!l)&&(e({projects:o?r:a.projects,activeProjectId:i,manualProjectOrder:c}),cs(r,i),us(c),i&&s)){let e=r.find(e=>e.id===i);e&&(H.setDirectory(e.path),Xe.getState().setDirectory(e.path,{showOverlay:!1}))}},syncVSCodeWorkspaceFolders:(n,r)=>{if(!bs)return null;let i=t(),a=i.activeProjectId?i.projects.find(e=>e.id===i.activeProjectId)??null:null,o=r??a?.path??null,s=gs(n,i.projects,o);if(!s)return n.length===0&&!r&&i.projects.length>0&&(e({projects:[],activeProjectId:null}),cs([],null)),null;let c=!vs(i.projects,s.projects),l=i.activeProjectId!==s.activeProjectId;return(c||l)&&(e({projects:s.projects,activeProjectId:s.activeProjectId}),cs(s.projects,s.activeProjectId)),s.activeProject&&(H.setDirectory(s.activeProject.path),Xe.getState().setDirectory(s.activeProject.path,{showOverlay:!1})),s.activeProject},getActiveProject:()=>{let{projects:e,activeProjectId:n}=t();return n?e.find(e=>e.id===n)??null:null}}),{name:`projects-store`}));typeof window<`u`&&window.addEventListener(`openchamber:settings-synced`,e=>{let t=e.detail;t&&typeof t==`object`&&ws.getState().synchronizeFromSettings(t)});var U=wr(),Ts=e=>e?.trim()||null,Es=()=>{let e=ws.getState().getActiveProject?.();return Ts(e?.path)??Ts(H.getDirectory())},Ds=(e,t=u())=>y.commands.list(e,t),Os=(e=Es(),t=u())=>{let n=Ts(e);return{queryKey:Ds(n,t),queryFn:async({signal:e})=>{let t=await x(`/api/config/commands/metadata`,{method:`POST`,headers:{"Content-Type":`application/json`,"Cache-Control":`no-cache`,...n?{"x-opencode-directory":n}:{}},body:JSON.stringify({catalog:!0}),query:n?{directory:n}:void 0,signal:e});if(!t.ok)throw Error(`Failed to fetch command metadata`);let r=await t.json();return Array.isArray(r.commands)?r.commands:[]},retry:2}},ks=e=>{let t=(0,U.c)(3),n=e===void 0?{}:e,r=ws(Ms),i=Ts(n.directory)??Ts(r)??Ts(H.getDirectory()),a=n.enabled!==!1&&!!i,o=Os(i),s;return t[0]!==a||t[1]!==o?(s={...o,enabled:a},t[0]=a,t[1]=o,t[2]=s):s=t[2],Fr(s)},As=(e=Es(),t=u())=>_.getQueryData(Ds(Ts(e),t))??[],js=async(e,t,n)=>{let r=Ts(t);if(u()!==n)return e.getQueryData(Ds(r,n))??[];let i=Os(r,n);return e.fetchQuery({...i,staleTime:0})};function Ms(e){return e.getActiveProject?.()?.path??null}var Ns=200,Ps=500,Fs=512,Is=1024,Ls=64,Rs=100,zs=100,Bs=new Set([`__proto__`,`prototype`,`constructor`]),Vs=new Set([`text`,`audio`,`image`,`video`,`pdf`]),Hs=e=>{for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(n<=31||n>=127&&n<=159)return!0}return!1},Us=e=>typeof e==`object`&&e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype?e:void 0,Ws=e=>{if(typeof e==`string`)return e.length>0&&e.length<=Fs&&e.trim()===e&&!Hs(e)&&!Bs.has(e)?e:void 0},Gs=e=>typeof e==`string`&&e.length>0&&e.length<=Is&&e.trim()===e&&!Hs(e)?e:void 0,Ks=e=>typeof e==`string`&&e.length>0&&e.length<=Ls&&e.trim()===e&&!Hs(e)?e:void 0,qs=e=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=1e9?e:void 0,Js=e=>{let t=Us(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))!Vs.has(e)||typeof r!=`boolean`||(n[e]=r);return Object.keys(n).length?n:void 0},Ys=e=>{if(!Array.isArray(e))return;let t={};for(let n of e)typeof n!=`string`||!Vs.has(n)||(t[n]=!0);return Object.keys(t).length?t:void 0},Xs=e=>{let t=Us(e);if(!t)return;let n={};for(let e of[`temperature`,`reasoning`,`attachment`,`toolcall`])t[e]!==void 0&&typeof t[e]==`boolean`&&(n[e]=t[e]);n.toolcall===void 0&&typeof t.tools==`boolean`&&(n.toolcall=t.tools);let r=Array.isArray(t.input)?Ys(t.input):Js(t.input),i=Array.isArray(t.output)?Ys(t.output):Js(t.output);return r&&(n.input=r),i&&(n.output=i),Object.keys(n).length?n:void 0},Zs=e=>Us(Array.isArray(e)?e.find(e=>Us(e)&&!Us(e.tier))??e.find(e=>Us(e)):e),Qs=e=>{if(Array.isArray(e))return e.map(e=>{if(typeof e==`string`)return e;let t=Us(e);return typeof t?.id==`string`?t.id:void 0});let t=Us(e);return t?Object.keys(t):null},$s=e=>{let t=Us(e),n=Ws(t?.id),r=Gs(t?.name);if(!t||!n||!r)return{partial:!0};let i={id:n,name:r},a=!1,o=Xs(t.capabilities);o&&(i.capabilities=o);let s=Zs(t.cost);if(s){let e={},t=qs(s.input);t!==void 0&&(e.input=t);let n=qs(s.output);n!==void 0&&(e.output=n);let r=Us(s.cache);if(r){let t={},n=qs(r.read);n!==void 0&&(t.read=n);let i=qs(r.write);i!==void 0&&(t.write=i),Object.keys(t).length&&(e.cache=t)}Object.keys(e).length&&(i.cost=e)}let c=Us(t.limit);if(c){let e={},t=qs(c.context);t!==void 0&&(e.context=t);let n=qs(c.output);n!==void 0&&(e.output=n),Object.keys(e).length&&(i.limit=e)}let l=Ks(t.release_date);l&&(i.release_date=l);let u=Qs(t.variants);if(u){let e={},n=Us(t.variants);for(let[t,r]of u.entries()){if(t>=zs){a=!0;break}let i=Ws(r);!i||Object.prototype.hasOwnProperty.call(e,i)||n&&!Us(n[i])||(e[i]={})}Object.keys(e).length&&(i.variants=e)}return{value:i,partial:a}},ec=e=>{let t=Us(e);if(!t||t.schemaVersion!==1||!Array.isArray(t.providers)||!Us(t.default)||typeof t.partial!=`boolean`)throw Error(`Invalid provider catalog response`);let n=[],r=new Set,i=t.providers.length>Ns;for(let[e,a]of t.providers.entries()){if(e>=Ns)continue;let t=Us(a),o=Ws(t?.id),s=Gs(t?.name),c=Us(t?.models);if(!t||!o||!s||!c||r.has(o)){i=!0;continue}r.add(o);let l={},u=new Set;for(let[e,[t,n]]of Object.entries(c).entries()){if(e>=Ps||!Ws(t)||Object.prototype.hasOwnProperty.call(l,t)){i=!0;continue}let r=$s(n);if(i||=r.partial,!r.value||u.has(r.value.id)){i=!0;continue}u.add(r.value.id),l[t]=r.value}n.push({id:o,name:s,models:l})}let a=Us(t.default),o={};for(let[e,[t,n]]of Object.entries(a).entries()){let r=Ws(t),a=Ws(n);if(e>=Rs||!r||!a){i=!0;continue}o[r]=a}return{schemaVersion:1,providers:n,default:o,partial:t.partial||i}},tc=e=>{if(typeof e==`object`&&e&&!Array.isArray(e)){let t=e;return typeof t.providerID!=`string`||typeof t.model!=`string`||t.providerID.includes(`/`)||t.model.includes(`#`)||t.variant!==void 0&&typeof t.variant!=`string`?null:tc(`${t.providerID}/${t.model}${t.variant===void 0?``:`#${t.variant}`}`)}if(typeof e!=`string`)return null;let t=e.trim(),n=t.indexOf(`/`);if(n<=0)return null;let[r,i,a]=t.slice(n+1).split(`#`),o=t.slice(0,n);return!r||/[\s#]/u.test(o)||/\s/u.test(r)||a!==void 0||i!==void 0&&(!i||/\s/u.test(i))?null:{providerId:o,modelId:r,...i===void 0?{}:{variant:i}}},nc=e=>{let t=tc(e);return t?`${t.providerId}/${t.modelId}${t.variant?`#${t.variant}`:``}`:void 0},rc=e=>(t=>e(t.state.data)?1/0:0),ic=e=>{let t=e;return!!(t&&!t.partial&&t.providers.length>0)},ac=e=>{if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},oc=e=>e?{location:{directory:e}}:void 0,sc=async(e,t)=>{let n=H.getSdkClient(),r=oc(e),i={signal:t},[a,o,s]=await Promise.all([n.provider.list(r,i),n.model.list(r,i),n.config.get(r,i).catch(()=>void 0)]);if(!Array.isArray(a.data)||!Array.isArray(o.data))throw Error(`v2 provider catalog request failed`);let c=new Map;for(let e of o.data){let t=typeof e?.providerID==`string`?e.providerID:``,n=typeof e?.id==`string`&&e.id?e.id:typeof e?.modelID==`string`?e.modelID:``,r=typeof e?.name==`string`?e.name:n;if(!t||!n||!r)continue;let i=c.get(t)??{},a={id:n,name:r};e.capabilities&&(a.capabilities=e.capabilities),e.cost&&typeof e.cost==`object`&&(a.cost=e.cost),e.limit&&typeof e.limit==`object`&&(a.limit=e.limit),e.variants&&typeof e.variants==`object`&&(a.variants=e.variants);let o=e.time&&typeof e.time==`object`?e.time.released:void 0;typeof o==`number`&&Number.isFinite(o)&&(a.release_date=new Date(o).toISOString().slice(0,10)),i[n]=a,c.set(t,i)}let l={};for(let e of Array.isArray(s)?s:[]){let t=tc(e?.type===`document`?e.info?.model:void 0);t&&(l[t.providerId]=t.modelId)}return{schemaVersion:1,providers:a.data.map(e=>({id:e.id,name:e.name,models:c.get(e.id)??{}})),default:l,partial:!1}},cc=(e,t=u())=>{let n=ac(e);return{queryKey:y.configCatalog.providers(n,t),queryFn:({signal:e})=>xe(e,async e=>{let r=await x(`/api/config/catalog/providers`,{method:`GET`,headers:{Accept:`application/json`,...n?{"x-opencode-directory":n}:{}},signal:e}),i;if(r.ok)i=ec(await r.json());else{if(r.status!==404&&r.status!==501)throw Error(`Provider catalog request failed (${r.status})`);i=ec(await sc(n,e))}let a=_.getQueryData(y.configCatalog.providers(n,t));if(i.partial&&a&&!a.partial)throw Error(`Partial provider catalog refresh retained the complete snapshot`);return i}),staleTime:rc(ic),gcTime:1/0,retry:2,retryDelay:100}},lc=(e,t=u())=>{let n=ac(e);return{queryKey:y.agents.raw(n,t),queryFn:({signal:e})=>xe(e,e=>H.listAgents(n,e)),staleTime:rc(e=>Array.isArray(e)&&e.length>0),gcTime:1/0,retry:2,retryDelay:100}},uc=(e,t=u())=>_.fetchQuery(cc(e,t)),dc=(e,t=u())=>_.fetchQuery(lc(e,t)),fc=async(e,t=u())=>{let n=cc(e,t);return await _.invalidateQueries({queryKey:n.queryKey,exact:!0}),_.fetchQuery(n)},pc=async(e,t=u())=>{let n=lc(e,t);return await _.invalidateQueries({queryKey:n.queryKey,exact:!0}),_.fetchQuery(n)},mc=(e,t=u())=>_.invalidateQueries({queryKey:cc(e,t).queryKey,exact:!0}),hc=e=>e?.trim()||null,gc=(e,t=u())=>y.agents.list(e,t),_c=(e,t=u())=>y.providers.list(e,t);function vc(e){if(!e)return;let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/agents/`);if(n===-1)return;let r=t.substring(n+8).split(`/`);return r.length>1?r[0]:void 0}var yc=(e=Es(),t=u())=>{let n=hc(e);return{queryKey:gc(n,t),queryFn:async({signal:e})=>{let r=await _.fetchQuery(lc(n,t)),i=await x(`/api/config/agents/metadata`,{method:`POST`,headers:{"Cache-Control":`no-cache`,"Content-Type":`application/json`,...n?{"x-opencode-directory":n}:{}},body:JSON.stringify({names:r.map(e=>e.name)}),signal:e});if(!i.ok)throw Error(`Failed to fetch agent metadata`);let a=await i.json(),o=r.map(e=>{let t=a.agents?.[e.name]??{},n=t.scope??(t.sources?.md?.exists?t.sources.md.scope:void 0)??(t.sources?.json?.exists?t.sources.json.scope:void 0)??t.sources?.md?.scope??t.sources?.json?.scope,r=vc(t.sources?.md?.path),i=n===`project`||n===`user`?{...e,scope:n,group:r}:{...e,group:r};return t.sources?.document?{...i,document:t.sources.document}:i}),s=new Set(o.map(e=>e.name)),c=(a.disabled??[]).flatMap(e=>{if(typeof e.name!=`string`||!e.name.trim()||s.has(e.name))return[];let t=e.mode===`primary`||e.mode===`subagent`||e.mode===`all`?e.mode:`primary`,n=e.scope===`project`||e.scope===`user`?e.scope:void 0;return[{id:e.name,name:e.name,displayName:e.name,mode:t,hidden:!1,permissions:[],request:{settings:{},headers:{},body:{}},description:typeof e.description==`string`?e.description:void 0,disabledOverride:!0,...n?{scope:n}:{}}]});return[...o,...c]},retry:2,staleTime:(e=>{let t=e.state.data;return t&&t.length>0?1/0:0}),gcTime:1/0}},bc=(e,t=u())=>{let n=hc(e);return{queryKey:_c(n,t),queryFn:async({signal:e})=>(await cc(n,t).queryFn({signal:e})).providers.map(e=>({...e,models:Object.values(e.models??{})})),retry:2}},xc=e=>{let t=(0,U.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=ws(Tc),a;t[2]===i?a=t[3]:(a=yc(hc(i)??hc(H.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],Fr(o)},Sc=(e,t)=>{let n=(0,U.c)(7),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a;n[2]===e?a=n[3]:(a=bc(e),n[2]=e,n[3]=a);let o;return n[4]!==i.enabled||n[5]!==a?(o={...a,enabled:i.enabled},n[4]=i.enabled,n[5]=a,n[6]=o):o=n[6],Fr(o)},Cc=(e=Es(),t=u())=>_.getQueryData(gc(hc(e),t))??[],wc=async(e,t,n)=>{let r=hc(t);if(u()!==n)return e.getQueryData(gc(r,n))??[];let i=yc(r,n);return await e.invalidateQueries({queryKey:i.queryKey,exact:!0}),e.fetchQuery(i)};function Tc(e){return e.getActiveProject?.()?.path??null}var Ec=[{id:`anthropic`,label:`Anthropic`,description:`Anthropic's public skills repository`,source:`anthropics/skills`,defaultSubpath:`skills`,sourceType:`github`},{id:`clawdhub`,label:`ClawdHub`,description:`Community skill registry with vector search`,source:`clawdhub:registry`,sourceType:`clawdhub`}],Dc=e=>e?.trim()||null,Oc=()=>{let e=ws.getState().getActiveProject?.();return Dc(e?.path)??Dc(H.getDirectory())},kc=(e,t=u())=>y.skillsCatalog.sources(e,t),Ac=(e,t,n=u())=>y.skillsCatalog.source(e,t,n),jc=new Map,Mc=(e=Oc(),t=u(),n=!1)=>{let r=Dc(e);return{queryKey:kc(r,t),queryFn:({signal:e})=>Hc(r,n,e),staleTime:5e3,retry:2}},Nc=(e,t,n=u(),r=!1)=>{let i=Dc(e);return jr({queryKey:Ac(i,t,n),queryFn:({signal:e,pageParam:n})=>Uc(i,t,n,r,e),initialPageParam:null,getNextPageParam:(e,t)=>Wc(e,t),staleTime:5e3,retry:2})},Pc=e=>{let t=(0,U.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=ws(qc),a;t[2]===i?a=t[3]:(a=Mc(Dc(i)??Dc(H.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],Fr(o)},Fc=(e,t)=>{let n=(0,U.c)(8),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a=ws(Jc),o;n[2]!==a||n[3]!==e?(o=Nc(Dc(a)??Dc(H.getDirectory()),e),n[2]=a,n[3]=e,n[4]=o):o=n[4];let s=i.enabled&&!!e,c;return n[5]!==o||n[6]!==s?(c={...o,enabled:s},n[5]=o,n[6]=s,n[7]=c):c=n[7],Ir(c)},Ic=e=>{let t=new Map;for(let n of e)for(let e of n.items)t.set(`${e.sourceId}:${e.skillDir}`,e);return Array.from(t.values())},Lc=(e=_,t=Oc(),n=u())=>e.getQueryData(kc(Dc(t),n))??Ec,Rc=(e=_,t,n,r=u())=>e.getQueryData(Ac(Dc(t),n,r)),zc=async(e,t,n)=>{let r=Dc(t);return u()===n?e.fetchQuery({...Mc(r,n,!0),staleTime:0}):Lc(e,r,n)},Bc=async(e,t,n,r)=>{let i=Dc(t);if(u()!==r)return Rc(e,i,n,r);let a=Ac(i,n,r),o=JSON.stringify(a),s=(jc.get(o)??0)+1;jc.set(o,s),await e.cancelQueries({queryKey:a,exact:!0});let c=await Uc(i,n,null,!0,new AbortController().signal);if(u()!==r||jc.get(o)!==s)return Rc(e,i,n,r);let l={pages:[c],pageParams:[null]};return e.setQueryData(a,l),l},Vc=(e,t,n)=>Promise.all([e.invalidateQueries({queryKey:kc(Dc(t),n)}),e.invalidateQueries({queryKey:[n,`skillsCatalog`,`source`,Dc(t)],exact:!1})]);async function Hc(e,t,n){let r=await Kc(Gc(`/api/config/skills/catalog`,{directory:e,refresh:t}),n),i=await r.json().catch(()=>null);if(!r.ok||!i?.ok)throw Error(i?.error?.message??`Failed to load catalog (${r.status})`);return i.sources?.length?i.sources:Ec}async function Uc(e,t,n,r,i){let a={directory:e,sourceId:t,cursor:n,refresh:r},o=await Kc(Gc(`/api/config/skills/catalog/source`,a),i),s=await o.json().catch(()=>null);if(o.ok&&(s?.ok||Array.isArray(s?.items)))return{items:s.items??[],nextCursor:s.nextCursor??null};let c=await Kc(Gc(`/api/config/skills/catalog`,a),i),l=await c.json().catch(()=>null),u=l?.itemsBySource?.[t];if(c.ok&&l?.ok&&Array.isArray(u))return{items:u,nextCursor:null};throw Error(s?.error?.message??l?.error?.message??`Failed to load catalog source (${o.status})`)}function Wc(e,t){let n=e.nextCursor;if(!(!n||e.items.length===0)&&!t.slice(0,-1).some(e=>e.nextCursor===n))return n}function Gc(e,t){let n=new URLSearchParams;t.directory&&n.set(`directory`,t.directory),t.sourceId&&n.set(`sourceId`,t.sourceId),t.cursor&&n.set(`cursor`,t.cursor),t.refresh&&n.set(`refresh`,`true`);let r=n.toString();return r?`${e}?${r}`:e}async function Kc(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),3e3);try{return await x(e,{method:`GET`,headers:{Accept:`application/json`},signal:AbortSignal.any([t,n.signal])})}finally{clearTimeout(r)}}function qc(e){return e.getActiveProject?.()?.path??null}function Jc(e){return e.getActiveProject?.()?.path??null}var Yc=e=>e?.trim()||null,Xc=()=>{let e=ws.getState().getActiveProject?.();return Yc(e?.path)??Yc(H.getDirectory())},Zc=e=>{let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/skills/`);if(n===-1)return;let r=t.slice(n+8).split(`/`);return r.length>=3?r[0]:void 0},Qc=(e,t=u())=>y.skills.list(e,t),$c=(e=Xc(),t=u())=>{let n=Yc(e);return{queryKey:Qc(n,t),queryFn:async({signal:e})=>{let t=await x(`/api/config/skills`,{query:{summary:`true`,...n?{directory:n}:{}},signal:e});if(!t.ok)throw Error(`Failed to list skills: ${t.status}`);return((await t.json()).skills??[]).map(e=>({name:e.name,path:e.path,scope:e.scope??`user`,source:e.source??`opencode`,description:e.description??``,group:Zc(e.path)}))},retry:2}},el=e=>{let t=(0,U.c)(3),n=e===void 0?{}:e,r=ws(rl),i=$c(Yc(n.directory)??Yc(r)??Yc(H.getDirectory())),a;return t[0]!==n.enabled||t[1]!==i?(a={...i,enabled:n.enabled},t[0]=n.enabled,t[1]=i,t[2]=a):a=t[2],Fr(a)},tl=(e=_,t=Xc(),n=u())=>e.getQueryData(Qc(Yc(t),n))??[],nl=async(e,t,n=u())=>{let r=Yc(t);return u()===n?e.fetchQuery({...$c(r,n),staleTime:0}):tl(e,r,n)};function rl(e){return e.getActiveProject?.()?.path??null}var il=()=>{let e=H.getDirectory();if(typeof e==`string`&&e.trim().length>0)return e;try{let e=window.__zustand_directory_store__;if(e)return e.getState().currentDirectory}catch{}return null},al=Es,ol=e=>{let t=e;return t.native===!0||t.builtIn===!0},sl=e=>{let t=e;return t.hidden===!0||t.options?.hidden===!0},cl=e=>e.filter(e=>!sl(e)),ll=`useAgentsStore`,ul=e=>new Promise(t=>setTimeout(t,e)),dl=2e4,fl=300,pl=4,ml=800,hl=200,gl=2e3,_l=Ne()(Ie(Pe(e=>({selectedAgentName:null,agentDraft:null,setSelectedAgent:t=>e({selectedAgentName:t}),setAgentDraft:t=>e({agentDraft:t}),loadAgents:async()=>{let e=al(),t=u();try{return await wc(_,e,t),!0}catch{return!1}},createAgent:async t=>yl(`POST`,t.name,t,e),updateAgent:async(t,n)=>yl(`PATCH`,t,n,e),deleteAgent:async(t,n)=>yl(`DELETE`,t,{scope:n},e),getAgentByName:e=>Cc().find(t=>t.name===e),getVisibleAgents:()=>cl(Cc())}),{name:`agents-store`,storage:xr(),partialize:e=>({selectedAgentName:e.selectedAgentName})}),{name:`agents-store`}));typeof window<`u`&&(window.__zustand_agents_store__=_l);async function vl(e,t){await wc(_,e,t),u()===t&&Mo(`agents`,{source:ll})}async function yl(e,t,n,r){let i=al(),a=u();try{let o={};for(let e of[`description`,`mode`,`model`,`system`,`steps`,`hidden`,`disabled`,`color`,`permissions`])n&&e in n&&n[e]!==void 0&&(o[e]=n[e]);let s=i?`?directory=${encodeURIComponent(i)}`:``,c=await x(`/api/config/agents/${encodeURIComponent(t)}${s}`,{method:e,headers:{"Content-Type":`application/json`,...i?{"x-opencode-directory":i}:{}},body:JSON.stringify(e===`DELETE`?{scope:n?.scope}:{native:o,...n?.scope?{scope:n.scope}:{},...n?.confirmDrop?{confirmDrop:!0}:{}})}),l=await c.json().catch(()=>null);if(!c.ok)throw Error(l?.error||`Failed to ${e.toLowerCase()} agent`);return u()===a?(e===`DELETE`&&_l.getState().selectedAgentName===t&&r({selectedAgentName:null}),l?.requiresManualRestart?{ok:!0,requiresManualRestart:!0}:(await vl(i,a),{ok:!0})):{ok:!0,...l?.requiresManualRestart?{requiresManualRestart:!0}:{}}}catch(t){return console.error(`[AgentsStore] ${e} agent failed:`,t),{ok:!1}}}async function bl(e){let t=typeof e==`number`&&e>0?Math.min(e,fl):0;t>0&&await ul(t);let n=Date.now(),r=0,i=null;for(;Date.now()-n<dl;){r+=1,Vo(`Waiting for OpenCode… (attempt ${r})`);try{if(await H.checkHealth())return;i=Error(`OpenCode health check reported not ready`)}catch(e){i=e}let e=Date.now()-n;await ul(r<=pl&&e<1200?fl:Math.min(ml+Math.max(0,r-pl)*hl,gl))}throw i||Error(`OpenCode did not become ready in time`)}var xl=e=>{if(!e||e.length===0)return[`all`];let t=Array.from(new Set(e));return t.includes(`all`)?[`all`]:t};async function Sl(e={}){let{message:t,delayMs:n}=e,r=e.transportIdentity??u(),i=e.queryDirectory??al(),a=xl(e.scopes),o=e.mode??(a.includes(`all`)?`projects`:`active`),s=e.silent===!0;if(!s)try{Vo(t||`Refreshing configuration…`)}catch{}try{if(u()!==r||(e.waitForConnection!==!1&&await bl(n),u()!==r))return;let t=W.getState(),c=a.includes(`all`)||a.includes(`providers`),l=a.includes(`all`)||a.includes(`agents`),d=a.includes(`all`)||a.includes(`agents`),f=a.includes(`all`)||a.includes(`commands`),p=a.includes(`all`)||a.includes(`skills`),m=a.includes(`all`)||a.includes(`mcp`),h=il(),g=o===`projects`?ws.getState().projects:[],v=Array.from(new Set([...i?[i]:h?[h]:[],...g.map(e=>e.path).filter(Boolean)]));a.includes(`all`)&&o===`projects`&&W.setState({directoryScoped:{}}),c&&W.getState().invalidateProviderCache(o===`active`?h:void 0);let y=[];for(let e of v)c&&y.push(t.loadProviders({directory:e,source:`agentsStore:refreshConfig`,forceRefresh:!0,allowEmpty:!0}).then(()=>void 0)),l&&y.push(t.loadAgents({directory:e,source:`agentsStore:refreshConfig`,forceRefresh:!0}).then(()=>void 0));let b=[];if(d&&b.push(wc(_,i,r).then(()=>void 0)),f&&b.push(js(_,i,r).then(()=>void 0)),p&&(b.push(nl(_,i,r).then(()=>void 0)),b.push(Vc(_,i,r).then(()=>void 0))),m){let{refreshMcpConfigsQuery:e,refreshMcpStatusQuery:t}=await zr(async()=>{let{refreshMcpConfigsQuery:e,refreshMcpStatusQuery:t}=await import(`./mcpQueries-bXWttRnQ.js`).then(e=>e.t);return{refreshMcpConfigsQuery:e,refreshMcpStatusQuery:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]));if(u()!==r)return;b.push(e(_,i,r).then(()=>void 0)),b.push(t(_,i,r).then(()=>void 0))}s||Vo(`Refreshing configuration…`),await Promise.all([...y,...b])}catch(e){throw s||(Vo(`OpenCode refresh failed. Please retry.`),await ul(1500)),e}finally{s||Bo()}}async function Cl(e){await Sl(e)}async function wl(e){await Sl({...e,silent:!0,waitForConnection:!1})}async function Tl(){await H.getSdkClient().location.reload()}async function El(e){zo(e?.message||`Reloading OpenCode configuration…`);let t=e?.transportIdentity??u(),n=e?.queryDirectory??al();try{let r=await x(`/api/config/reload`,{method:`POST`,headers:{"Content-Type":`application/json`}}),i=await r.json().catch(()=>null);if(!r.ok){let e=i?.error||`Failed to reload configuration`;throw Error(e)}if(u()!==t){Bo();return}let a={...e,transportIdentity:t,queryDirectory:n,scopes:e?.scopes??[`all`],mode:e?.mode??`projects`};i?.requiresReload?await Cl({...a,message:i.message,delayMs:i.reloadDelayMs}):await Cl(a)}catch(e){throw console.error(`[restartOpenCodeService] Failed:`,e),Vo(`Failed to reload configuration. Please try again.`),await ul(2e3),Bo(),e}}var Dl=null;Dl||=jo(e=>{if(e.source!==ll&&No(e,`agents`)){let{loadAgents:e}=_l.getState();e()}});var Ol=e=>typeof e==`string`?e.trim():``,kl=(e,t)=>!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`,Al={ai:`AI`,api:`API`,ernie:`ERNIE`,glm:`GLM`,gpt:`GPT`,it:`IT`,lfm:`LFM`,lm:`LM`,oss:`OSS`,pdf:`PDF`,rp:`RP`,slerp:`SLERP`,tars:`TARS`,ui:`UI`,vl:`VL`,vlm:`VLM`,aion:`Aion`,anthropic:`Anthropic`,chatgpt:`ChatGPT`,claude:`Claude`,codex:`Codex`,codestral:`Codestral`,command:`Command`,deepseek:`DeepSeek`,gemini:`Gemini`,gemma:`Gemma`,grok:`Grok`,hunyuan:`Hunyuan`,kimi:`Kimi`,llama:`Llama`,minimax:`MiniMax`,mistral:`Mistral`,mixtral:`Mixtral`,nemotron:`Nemotron`,openai:`OpenAI`,qwen:`Qwen`,rekaai:`RekaAI`},jl=e=>e?e[0].toUpperCase()+e.slice(1).toLowerCase():``,Ml=e=>{let t=e.startsWith(`~`)?e.slice(1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t},Nl=e=>{let t=e.lastIndexOf(`:`);return t<=0||t>=e.length-1?{base:e,suffix:``}:{base:e.slice(0,t),suffix:e.slice(t+1)}},Pl=e=>{let t=e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).split(/[-_\s]+/).map(e=>e.trim()).filter(Boolean),n=[];for(let e=0;e<t.length;e+=1){let r=t[e],i=t[e+1],a=t[e+2];if(/^(19|20)\d{2}$/.test(r)&&/^\d{2}$/.test(i??``)&&/^\d{2}$/.test(a??``)){n.push(`${r}-${i}-${a}`),e+=2;continue}if(/^\d$/.test(r)&&/^\d$/.test(i??``)){n.push(`${r}.${i}`),e+=1;continue}n.push(r)}return n},Fl=e=>{let t=e.toLowerCase(),n=Al[t];if(n)return n;let r=t.match(/^qwen(\d(?:\.\d+)?)$/);return r?`Qwen${r[1]}`:/^o\d/.test(t)?t:/^v\d/.test(t)?`V${e.slice(1).toUpperCase()}`:/^\d+[on]$/.test(t)?t:/^[a-z]\d+[a-z]?$/.test(t)?t.toUpperCase():/^\d+(?:x\d+)?[a-z]+$/.test(t)?t.replace(/[a-z]+$/i,e=>e.toUpperCase()):/^\d+(?:\.\d+)?[a-z]$/.test(t)?t.replace(/[a-z]$/i,e=>e.toUpperCase()):/^[a-z]+\d+(?:\.\d+)?[a-z]*$/.test(t)?jl(t).replace(/([a-z])(\d)/i,`$1$2`):jl(e)},Il=e=>{let t=[...e];return t[0]===`GPT`&&t[1]&&/^(?:\d|\d+[a-z]|OSS$)/i.test(t[1])&&t.splice(0,2,`GPT-${t[1]}`),t[0]===`GLM`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`GLM-${t[1]}`),t[0]===`LFM`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`LFM${t[1]}`),t[0]===`Qwen`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`Qwen${t[1]}`),t},Ll=e=>{let t=Ol(e).toLowerCase();return t?t===`free`||t===`thinking`?t:Rl(t):``},Rl=e=>{let t=Ol(e);if(!t)return``;let{base:n,suffix:r}=Nl(Ml(t)),i=Il(Pl(n).map(Fl));if(i.length>=2){let e=i[i.length-1],t=i[i.length-2];e===`Reasoning`&&t===`Non`&&i.splice(i.length-2,2,`(Non-Reasoning)`)}let a=i[i.length-1];/^(19|20)\d{2}-\d{2}-\d{2}$/.test(a??``)&&(i[i.length-1]=`(${a})`);let o=i.join(` `).replace(/\s+\(/g,` (`).trim(),s=Ll(r);return s?`${o} (${s})`:o},zl=e=>!/\s/.test(e)&&/[-_]/.test(e),Bl=(e,t,n={})=>{let r=Ol(e?.name),i=Ol(e?.id)||Ol(t);return r&&!zl(r)?kl(r,n.maxLength):r?kl(Rl(r.toLowerCase()),n.maxLength):i?kl(Rl(i),n.maxLength):n.fallbackLabel??``},Vl=(e,t)=>{let n=e?.models;if(!(!n||!t))return Array.isArray(n)?n.find(e=>Ol(e.id)===t):n[t]},Hl=(e,t,n={})=>{let r=Ol(t);return Bl(Vl(e,r),r,n)},Ul=(e,t,n,r)=>{let i=n.find(e=>e.name===t),a=i?.model?.providerID,o=i?.model?.modelID,s=!!(a&&o&&r.some(e=>e.id===a&&e.models?.some(e=>e.id===o)));return{providerID:s?a:e.providerID,modelID:s?o:e.modelID,agent:t}},Wl=e=>e===`primary`||e===`all`||e==null,Gl=e=>e.filter(e=>Wl(e.mode)),Kl=(e,t,n=1)=>{let r=Gl(e);if(r.length<=1)return null;let i=r.findIndex(e=>e.name===t);return r[((i>=0?i:0)+n+r.length)%r.length]?.name??null},ql=e=>e.charAt(0).toUpperCase()+e.slice(1),Jl=(e,t)=>{if(t){let n=e.find(e=>e.name===t);return ql(n?n.name:t)}let n=e.filter(e=>Wl(e.mode)),r=n.find(e=>e.name===`build`)||n[0]||e[0];return r?ql(r.name):`Select agent`},Yl=(e,t,n=``)=>Hl(e,t,{fallbackLabel:n}),Xl=e=>{if(!e||e.trim().length===0)return`Default`;let t=e.trim();return/^\d+(\.\d+)?$/.test(t)?t:ql(t)},Zl=e=>typeof e==`object`&&!!e,Ql=e=>typeof e==`string`&&e.length>0,$l=e=>{let t=new Map;if(!Array.isArray(e))return t;for(let n of e){if(!Array.isArray(n)||n.length<2)continue;let[e,r]=n;if(!Ql(e)||!Array.isArray(r))continue;let i=new Map;for(let e of r){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;if(!Ql(t)||!Array.isArray(n))continue;let r=new Map;for(let e of n){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;!Ql(t)||!Ql(n)||r.set(t,n)}r.size>0&&i.set(t,r)}i.size>0&&t.set(e,i)}return t},eu=Ne()(Pe((e,t)=>({sessionModelSelections:new Map,sessionAgentSelections:new Map,sessionAgentModelSelections:new Map,sessionAgentModelVariantSelections:new Map,lastUsedProvider:null,saveSessionModelSelection:(t,n,r)=>e(e=>{let i=new Map(e.sessionModelSelections);return i.delete(t),i.set(t,{providerId:n,modelId:r}),{sessionModelSelections:i,lastUsedProvider:{providerID:n,modelID:r}}}),getSessionModelSelection:e=>t().sessionModelSelections.get(e)??null,saveSessionAgentSelection:(t,n)=>e(e=>{if(e.sessionAgentSelections.get(t)===n)return e;let r=new Map(e.sessionAgentSelections);return r.delete(t),r.set(t,n),{sessionAgentSelections:r}}),getSessionAgentSelection:e=>t().sessionAgentSelections.get(e)??null,saveAgentModelForSession:(t,n,r,i)=>e(e=>{let a=e.sessionAgentModelSelections.get(t)?.get(n);if(a?.providerId===r&&a?.modelId===i)return e;let o=new Map(e.sessionAgentModelSelections),s=new Map(o.get(t)??new Map);return o.delete(t),s.set(n,{providerId:r,modelId:i}),o.set(t,s),{sessionAgentModelSelections:o}}),getAgentModelForSession:(e,n)=>t().sessionAgentModelSelections.get(e)?.get(n)??null,saveAgentModelVariantForSession:(t,n,r,i,a)=>e(e=>{let o=`${r}/${i}`,s=new Map(e.sessionAgentModelVariantSelections),c=s.get(t),l=new Map(c??new Map),u=l.get(n),d=new Map(u??new Map);return a?d.get(o)===a?e:(s.delete(t),d.set(o,a),l.set(n,d),s.set(t,l),{sessionAgentModelVariantSelections:s}):d.has(o)?(d.delete(o),d.size===0?l.delete(n):l.set(n,d),s.delete(t),l.size>0&&s.set(t,l),{sessionAgentModelVariantSelections:s}):e}),getAgentModelVariantForSession:(e,n,r,i)=>{let a=`${r}/${i}`;return t().sessionAgentModelVariantSelections.get(e)?.get(n)?.get(a)}}),{name:`selection-store`,version:2,storage:xr(),partialize:e=>({sessionModelSelections:Array.from(e.sessionModelSelections.entries()).slice(-150),sessionAgentSelections:Array.from(e.sessionAgentSelections.entries()).slice(-150),sessionAgentModelSelections:Array.from(e.sessionAgentModelSelections.entries()).slice(-150).map(([e,t])=>[e,Array.from(t.entries())]),sessionAgentModelVariantSelections:Array.from(e.sessionAgentModelVariantSelections.entries()).slice(-150).map(([e,t])=>[e,Array.from(t.entries()).map(([e,t])=>[e,Array.from(t.entries())])]),lastUsedProvider:e.lastUsedProvider}),merge:(e,t)=>{let n=Zl(e)?e:void 0,r=new Map;if(Array.isArray(n?.sessionAgentModelSelections))for(let e of n.sessionAgentModelSelections){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;if(!Ql(t)||!Array.isArray(n))continue;let i=new Map;for(let e of n){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;!Ql(t)||typeof n!=`object`||!n||!Ql(n.providerId)||!Ql(n.modelId)||i.set(t,{providerId:n.providerId,modelId:n.modelId})}i.size>0&&r.set(t,i)}return{...t,lastUsedProvider:n?.lastUsedProvider??t.lastUsedProvider,sessionModelSelections:new Map(Array.isArray(n?.sessionModelSelections)?n.sessionModelSelections:[]),sessionAgentSelections:new Map(Array.isArray(n?.sessionAgentSelections)?n.sessionAgentSelections:[]),sessionAgentModelSelections:r,sessionAgentModelVariantSelections:$l(n?.sessionAgentModelVariantSelections)}},migrate:e=>e})),tu=[`concise`,`detailed`,`mentor`,`pushback`,`noFiller`,`matchEnergy`,`warmPeer`],nu=e=>typeof e==`string`&&tu.includes(e),ru=e=>{switch(e){case`concise`:return`Keep replies short. Answer first, no preamble or recap of the question. Write like you're texting a colleague who already has the context — plain sentences, not headings or bullets. Reach for a list only when the content is genuinely a list; never use one to look organised.`;case`detailed`:return`Take the space you need to actually explain things. Walk through what's going on, why it matters, and where the real tradeoffs are. Prefer flowing prose over bullet points and headings — structure the answer with paragraphs and let the reasoning carry it. Lists are fine when something really is enumerable, but don't fragment a normal explanation into bullets.`;case`mentor`:return`Talk like a patient senior engineer pairing with someone less experienced. Explain the underlying idea before the answer, think out loud about how you'd approach it, and drop in a small concrete example when it actually helps. Keep it conversational — no lecture format, no checklists, no numbered steps unless the task literally is a sequence.`;case`pushback`:return`Don't agree automatically. If something I say sounds off — a wrong assumption, a flawed approach, a request that won't actually do what I think it will — push back first. Explain what you disagree with and why, and only proceed once I've responded. Disagreement is welcome; sycophancy is not. Don't soften it with 'you might want to consider' — just say it.`;case`noFiller`:return`Cut the filler. No 'Great question', no 'Certainly', no 'I'll help you with that', no restating what I just asked. No closing summary of what you did when the diff or output already shows it. No trailing 'let me know if you need anything else'. Open with the actual content and stop when you're done.`;case`matchEnergy`:return`Mirror the size and register of my message. A one-line question gets a one-line answer. A casual aside gets a casual reply, not a structured breakdown. If I write three words, don't respond with three paragraphs. Match the tone too — informal stays informal, technical stays technical. Don't inflate small asks into full essays.`;case`warmPeer`:return`Talk like a colleague, not an assistant. First person is fine and encouraged — 'I'd do this', 'I don't love that approach', 'that was sloppy of me'. Have actual opinions and share them. Push back when you disagree. Admit when you screwed up without grovelling. Skip the corporate helpfulness and performative politeness — just be a person.`}},iu=new Map,au=new Map,ou=({enabled:e,preset:t,customInstructions:n})=>e?t===`custom`?(typeof n==`string`?n.trim():``)||null:nu(t)?ru(t):null:null,su=(e,t=u())=>{iu.set(t,{enabled:e.enabled===!0,preset:e.preset,customInstructions:e.customInstructions})},cu=(e=u())=>{let t=iu.get(e);if(t)return ou(t)},lu=async()=>{let e=u(),t=cu(e);if(t!==void 0)return t;let n=au.get(e);if(n)return n;let r=(async()=>{let t=await we(e);return su({enabled:t.responseStyleEnabled,preset:t.responseStylePreset,customInstructions:t.responseStyleCustomInstructions},e),cu(e)??null})();au.set(e,r);try{return await r}finally{au.get(e)===r&&au.delete(e)}},uu=`opencode`,du=`big-pickle`,fu=`__add_provider__`,pu=`zen`,mu=`big-pickle`,hu=async(e,t)=>{On(`config.defaults:start`);let n=typeof performance<`u`?performance.now():Date.now(),r=(e,t)=>{let r=typeof performance<`u`?performance.now():Date.now();return On(`config.defaults:end`,{source:e,durationMs:Math.round(r-n),hasDefaultModel:!!t.defaultModel,hasDefaultAgent:!!t.defaultAgent}),t};try{let t=await we(e);return su({enabled:t?.responseStyleEnabled,preset:t?.responseStylePreset,customInstructions:t?.responseStyleCustomInstructions},e),r(`settings-bootstrap-query`,t)}catch(n){On(`config.defaults:error`,{error:n instanceof Error?n.message:String(n)});let i=fe(e);return i&&su({enabled:i.responseStyleEnabled,preset:i.responseStylePreset,customInstructions:i.responseStyleCustomInstructions},e),r(i?`retained-settings-bootstrap`:`retained-store-settings`,i??t)}},gu=e=>tc(e),_u=e=>e===fu?``:e??``,vu=(e,t)=>e===fu?fu:t,yu=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},bu=e=>{if(!Array.isArray(e))return[];let t=e.map(e=>{if(!Eu(e))return e;let t=Array.isArray(e.models)?Object.fromEntries(e.models.map((e,t)=>[String(t),e])):e.models;return{...e,models:t}});try{return ec({schemaVersion:1,providers:t,default:{},partial:!1}).providers.map(e=>({id:e.id,name:e.name,models:Object.values(e.models)}))}catch{return[]}},xu=e=>{try{return ec({schemaVersion:1,providers:[],default:e,partial:!1}).default}catch{return{}}},Su=(e,t,n)=>{let r=e.find(e=>e.id===t);return r?r.models.some(e=>e.id===n):!1},Cu=({providers:e,currentProviderId:t,currentModelId:n,currentVariant:r,settingsDefaultModel:i,settingsDefaultVariant:a})=>{if(t&&n)return{providerId:t,modelId:n,variant:r};if(i){let e=gu(i);if(e)return{providerId:e.providerId,modelId:e.modelId,variant:e.variant??a}}if(Su(e,uu,du))return{providerId:uu,modelId:du};let o=e[0],s=o?.models[0];return o&&s?{providerId:o.id,modelId:s.id}:null},wu=({agents:e,providers:t,projectDefaultModel:n,settingsDefaultAgent:r,settingsDefaultModel:i,settingsDefaultVariant:a,opencodeDefaultAgent:o,opencodeDefaultModel:s,projectLastUserSelection:c,globalLastUserSelection:l})=>{let u=t=>{if(!t)return null;let n=Ge(e,t.agentName);return n&&(!Wl(n.mode)||n.hidden===!0)?null:{agentName:n?.name??t.agentName,providerId:t.providerId,modelId:t.modelId,variant:t.variant}},d=u(c);if(d)return d;let f=u(l);if(f)return f;let p=e.filter(e=>Wl(e.mode)),m;if(r&&(m=Ge(e,r)),!m&&o){let t=Ge(e,o);t&&Wl(t.mode)&&t.hidden!==!0&&(m=t)}m||=Ge(p,`build`)||p.find(e=>e.name===`build`)||p[0]||e[0];let h,g,_,v=n||i;if(v){let e=gu(v);e&&(h=e.providerId,g=e.modelId,_=e.variant??(n?void 0:a))}if(!h&&m?.model?.providerID&&m.model?.modelID&&(h=m.model.providerID,g=m.model.modelID,_=m.variant),!h&&s){let e=gu(s);e&&(h=e.providerId,g=e.modelId,_=e.variant)}if(!h)if(Su(t,uu,du))h=uu,g=du;else{let e=t[0],n=e?.models[0];e&&n&&(h=e.id,g=n.id)}return{agentName:(r&&!Ge(e,r)?r:!r&&o&&!Ge(e,o)?o:void 0)??m?.name,providerId:h,modelId:g,variant:_}},Tu=({providers:e,settingsZenModel:t})=>{let n=yu(t);if(!Array.isArray(e)||e.length===0)return n?{providerId:pu,modelId:n}:null;if(n&&Su(e,pu,n))return{providerId:pu,modelId:n};if(Su(e,pu,mu))return{providerId:pu,modelId:mu};let r=e.find(e=>e.id===pu);if(r?.models.length){let e=Math.floor(Math.random()*r.models.length),t=yu(r.models[e]?.id);if(t)return{providerId:pu,modelId:t}}return null},Eu=e=>typeof e==`object`&&!!e,Du=e=>{if(!e)return[];let t=[];return e.text&&t.push(`text`),e.audio&&t.push(`audio`),e.image&&t.push(`image`),e.video&&t.push(`video`),e.pdf&&t.push(`pdf`),t},Ou=(e,t)=>({id:t.id,providerId:e,name:t.name,tool_call:t.capabilities?.toolcall,reasoning:t.capabilities?.reasoning,temperature:t.capabilities?.temperature,attachment:t.capabilities?.attachment,modalities:t.capabilities?{input:Du(t.capabilities.input),output:Du(t.capabilities.output)}:void 0,cost:t.cost?{input:t.cost.input,output:t.cost.output,cache_read:t.cost.cache?.read,cache_write:t.cost.cache?.write}:void 0,limit:t.limit,release_date:t.release_date}),ku=e=>new Promise(t=>setTimeout(t,e)),Au=800,ju=async(e=Au)=>Promise.race([H.checkHealth().catch(()=>!1),ku(Math.max(1,e)).then(()=>!1)]),Mu=`__global__`,Nu=e=>{let t=typeof e==`string`?e.trim():``;return t.length>0?t:Mu},Pu=e=>e===Mu?null:e,Fu=()=>typeof window>`u`?Mu:zu(H.getDirectory()??Xe.getState().currentDirectory),Iu=e=>{let t=I(e);return t===null?null:t||`/`},Lu=()=>{try{let{projects:e,activeProjectId:t}=ws.getState();return Iu((t?e.find(e=>e.id===t):null)?.path??e[0]?.path??null)}catch{return null}},Ru=e=>Iu(e),zu=e=>Nu(Ru(e)),Bu=e=>zu(e),Vu=100,Hu=256,Uu=new Set([`__proto__`,`prototype`,`constructor`]),Wu=/[\u0000-\u001F\u007F]/u,Gu=e=>{let t=e.directoryScoped,n=e.activeDirectoryKey;if(!t||!n)return e;let r=t[n];if(!r)return e;let i={...e};return i.providers=[],i.agents=[],i.defaultProviders={},i.currentProviderId=r.currentProviderId,i.currentModelId=r.currentModelId,i.currentVariant=r.currentVariant,i.currentAgentName=r.currentAgentName,i.selectedProviderId=r.selectedProviderId,i.agentModelSelections=r.agentModelSelections,i.lastSelectedAgentName=r.lastSelectedAgentName,i.lastUserSelection=r.lastUserSelection,i.opencodeDefaultAgent=void 0,i.opencodeDefaultModel=void 0,i.selectionSource=r.selectionSource??`auto`,i},Ku=(e,t=!1)=>{if(typeof e!=`string`)return;let n=e.trim();if(!(n.length===0||n.length>Hu||t&&n!==e||Wu.test(n)||Uu.has(n)))return n},qu=e=>{if(!Eu(e))return{};let t=[];for(let[n,r]of Object.entries(e)){if(t.length>=Vu||!Eu(r))continue;let e=Ku(n,!0),i=Ku(r.providerId),a=Ku(r.modelId),o=Ku(r.variant);!e||!i||!a||r.variant!==void 0&&!o||t.push([e,{providerId:i,modelId:a,...o?{variant:o}:{}}])}return Object.fromEntries(t)},Ju=e=>{if(!Eu(e))return;let t=Ku(e.agentName,!0),n=Ku(e.providerId),r=Ku(e.modelId),i=Ku(e.variant);if(!(!t||!n||!r||e.variant!==void 0&&!i))return{agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}}},Yu=(e,t)=>{if(!e)return;let n=t[e];if(n)return{agentName:e,providerId:n.providerId,modelId:n.modelId,...n.variant?{variant:n.variant}:{}}},Xu=(e,t,n)=>Ju(e)??Yu(t,n),Zu=(e=[],t=[])=>({providers:e,agents:t,currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,defaultProviders:{},providerCatalogPartial:!1,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`}),Qu=e=>{if(!Eu(e))return{};let t=yu(e.catalogTransportIdentity),n={};for(let t of[`activeDirectoryKey`]){let r=yu(e[t]);r!==void 0&&(n[t]=r)}for(let t of[`settingsAutoCreateWorktree`,`settingsGitmojiEnabled`,`settingsDefaultFileViewerPreview`])typeof e[t]==`boolean`&&(n[t]=e[t]);(e.settingsMessageStreamTransport===`auto`||e.settingsMessageStreamTransport===`ws`||e.settingsMessageStreamTransport===`sse`)&&(n.settingsMessageStreamTransport=e.settingsMessageStreamTransport);let r={};if(Eu(e.directoryScoped))for(let[t,n]of Object.entries(e.directoryScoped)){if(!Eu(n))continue;let e=qu(n.agentModelSelections),i=Ku(n.lastSelectedAgentName,!0),a=Xu(n.lastUserSelection,i,e);r[t]={...Zu(),providers:[],agents:[],currentProviderId:yu(n.currentProviderId)??``,currentModelId:yu(n.currentModelId)??``,currentVariant:yu(n.currentVariant),currentAgentName:yu(n.currentAgentName),selectedProviderId:_u(yu(n.selectedProviderId)),agentModelSelections:e,lastSelectedAgentName:a?.agentName??i,lastUserSelection:a,defaultProviders:{},selectionSource:n.selectionSource===`manual`?`manual`:`auto`}}let i=qu(e.agentModelSelections),a=Ku(e.lastSelectedAgentName,!0),o=Xu(e.globalLastUserSelection,a,i)??(()=>{let t=yu(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),s=u();return t&&t!==s?{...n,catalogTransportIdentity:s,directoryScoped:{},providers:[],agents:[],defaultProviders:{},currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,globalLastUserSelection:void 0,providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{}}:{...n,catalogTransportIdentity:s,directoryScoped:r,providers:[],agents:[],defaultProviders:{},currentProviderId:yu(e.currentProviderId)??``,currentModelId:yu(e.currentModelId)??``,currentVariant:yu(e.currentVariant),currentAgentName:yu(e.currentAgentName),selectedProviderId:_u(yu(e.selectedProviderId)),agentModelSelections:i,lastSelectedAgentName:o?.agentName??a,lastUserSelection:(()=>{let t=yu(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),globalLastUserSelection:o}},$u=({agents:e,currentAgentName:t,currentProviderId:n,currentModelId:r,currentVariant:i,selectionSource:a,resolvedAgentName:o,resolvedProviderId:s,resolvedModelId:c,resolvedVariant:l})=>{let u=Ge(e,t)?.name??t,d=!!n&&!!r,f=a===`manual`&&(!!u||d);return{agentName:f?u??o:o,providerId:f&&d?n:s,modelId:f&&d?r:c,variant:f&&d?i:l,selectionSource:f?`manual`:`auto`}},ed=null,td=new Map,nd=new Map,rd={},id={},ad=xr(),od=ad&&{flush:()=>ad.flush(),getItem:e=>{let t=u(),n=ad.getItem(he(e,t)),r=n=>u()===t?n||!Te()?n:ad.getItem(e):null;return n instanceof Promise?n.then(r):r(n)},setItem:(e,t)=>ad.setItem(he(e,t.state.catalogTransportIdentity??u()),t),removeItem:e=>ad.removeItem(he(e))},W=Ne()(Ie(Pe((e,t)=>({activeDirectoryKey:Fu(),catalogTransportIdentity:u(),directoryScoped:{},providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{},providers:[],agents:[],currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,globalLastUserSelection:void 0,defaultProviders:{},selectionSource:`auto`,isConnected:!1,hasEverConnected:!1,connectionPhase:`connecting`,lastDisconnectReason:null,isInitialized:!1,settingsDefaultModel:void 0,settingsDefaultVariant:void 0,settingsDefaultAgent:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,settingsAutoCreateWorktree:!1,settingsGitmojiEnabled:!1,settingsDefaultFileViewerPreview:!1,settingsZenModel:void 0,settingsMessageStreamTransport:`auto`,...Do,activateDirectory:async(n,r)=>{let i=f(),a=Ru(n);if(!a){On(`activateDirectory:skippedUnknownDirectory`,{directory:n});return}let o=Nu(a),s=id[o],c=!1,l=!1,u=!1;if(e(e=>{let t=e.directoryScoped[o],n=t?.providers??[],r=t?.defaultProviders??{},i=t?.agents??[];c=n.length>0,l=i.length>0,u=!!t?.agents.length;let a=e.isConnected&&!c,s=e.isConnected&&!l;return t?{activeDirectoryKey:o,providers:n,defaultProviders:r,agents:t.agents.length>0?t.agents:i,currentProviderId:t.currentProviderId,currentModelId:t.currentModelId,currentVariant:t.currentVariant,currentAgentName:t.currentAgentName,selectedProviderId:t.selectedProviderId,agentModelSelections:t.agentModelSelections,lastSelectedAgentName:t.lastSelectedAgentName,lastUserSelection:t.lastUserSelection,opencodeDefaultAgent:t.opencodeDefaultAgent,opencodeDefaultModel:t.opencodeDefaultModel,selectionSource:t.selectionSource??`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:a},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[o]:s}}:{activeDirectoryKey:o,providers:n,defaultProviders:r,agents:i,currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:a},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[o]:s}}}),l&&c&&!u&&t().applyDefaultModelAgentSelection(),t().isConnected){if((!c||r?.refreshProviders)&&await t().loadProviders({directory:Pu(o),source:r?.source??`activateDirectory`,forceRefresh:r?.refreshProviders}),f()!==i||t().activeDirectoryKey!==o){id[o]===s&&e(e=>e.agentConfigLoadingByDirectory[o]===!0?{agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[o]:!1}}:e);return}l||await t().loadAgents({directory:Pu(o),source:`activateDirectory`})}},invalidateProviderCache:e=>{let t=u();mc(e??null,t)},loadProviders:async n=>{let r=n?.directory??Pu(t().activeDirectoryKey),i=Ru(r);if(!i){On(`loadProviders:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`});return}let a=i??H.getDirectory()??null,o=Nu(i),s=n?.source??`unknown`,c=u(),l=f();sd(c);let d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&rd[o]===p&&Ru(r)===i,p=(rd[o]??0)+1;rd[o]=p,On(`loadProviders:called`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let m=t().directoryScoped[o];return t().providers.length>0||m?.providers.length||e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:!0}})),(async()=>{let i=typeof performance<`u`?performance.now():Date.now();On(`loadProviders:start`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let l=t().directoryScoped[o],u=l?.providers??[],f=l?.defaultProviders??{};try{let t=await Tn(`loadProviders:api`,()=>n?.forceRefresh?fc(Pu(o),c):uc(Pu(o),c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),l=bu(t.providers),f=xu(t.default);if(!d()||t.partial&&u.length>0||l.length===0&&(!n?.allowEmpty||t.partial)||(e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let n=e.directoryScoped[o]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},r=e.activeDirectoryKey===o?e.currentProviderId:n.currentProviderId,i=e.activeDirectoryKey===o?e.currentModelId:n.currentModelId,a=e.activeDirectoryKey===o?e.currentVariant:n.currentVariant,s=Cu({providers:l,currentProviderId:r,currentModelId:i,currentVariant:a,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant}),u=e.activeDirectoryKey===o?e.selectedProviderId:n.selectedProviderId,p=u===fu||l.some(e=>e.id===u)?u:s?.providerId??l[0]?.id??``,m={...n,providers:l,defaultProviders:f,providerCatalogPartial:t.partial,currentProviderId:s?.providerId??``,currentModelId:s?.modelId??``,currentVariant:s?.variant,selectedProviderId:p},h={directoryScoped:{...e.directoryScoped,[o]:m}};return e.activeDirectoryKey===o&&(h.providers=l,h.defaultProviders=f,h.currentProviderId=m.currentProviderId,h.currentModelId=m.currentModelId,h.currentVariant=m.currentVariant,h.selectedProviderId=p),h}),!d()))return;let p=typeof performance<`u`?performance.now():Date.now();On(`loadProviders:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(p-i),providers:l.length,models:l.reduce((e,t)=>e+t.models.length,0)});return}catch(e){if(!d())return;console.error(`Failed to load providers:`,e),On(`loadProviders:error`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,error:e instanceof Error?e.message:String(e)})}d()&&e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let t={...e.directoryScoped[o]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:u,defaultProviders:f},n={directoryScoped:{...e.directoryScoped,[o]:t}};if(e.activeDirectoryKey===o&&(n.providers=u,n.defaultProviders=f,!e.currentProviderId&&!e.currentModelId&&e.settingsDefaultModel)){let r=gu(e.settingsDefaultModel);if(r){let i=u.find(e=>e.id===r.providerId);if(i?.models.some(e=>e.id===r.modelId)){let a=i.models.find(e=>e.id===r.modelId),o=e.settingsDefaultVariant&&a?.variants?.[e.settingsDefaultVariant]?e.settingsDefaultVariant:void 0;n.currentProviderId=r.providerId,n.currentModelId=r.modelId,n.currentVariant=o,n.selectedProviderId=r.providerId,t.currentProviderId=r.providerId,t.currentModelId=r.modelId,t.currentVariant=o,t.selectedProviderId=r.providerId}}}return n})})().finally(()=>{rd[o]===p&&e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:!1}}))})},refreshMissingCatalogs:e=>{let n=Pu(t().activeDirectoryKey),r=f(),i=JSON.stringify([u(),r,n]),a=td.get(i);if(a)return a;let o=e?.source??`refreshMissingCatalogs`,s=(async()=>{t().providers.length===0&&await t().loadProviders({directory:n,source:o,forceRefresh:!0}),f()===r&&Pu(t().activeDirectoryKey)===n&&t().agents.length===0&&await t().loadAgents({directory:n,source:o,forceRefresh:!0})})().finally(()=>{td.delete(i)});return td.set(i,s),s},refreshCatalogsOnPickerOpen:e=>{let n=Pu(t().activeDirectoryKey),r=JSON.stringify([u(),f(),n]),i=nd.get(r);if(i)return i;let a=e?.source??`refreshCatalogsOnPickerOpen`,o=Promise.all([t().loadProviders({directory:n,source:a,forceRefresh:!0}),t().loadAgents({directory:n,source:a,forceRefresh:!0})]).then(()=>void 0).finally(()=>{nd.delete(r)});return nd.set(r,o),o},setProvider:n=>{let{providers:r}=t(),i=r.find(e=>e.id===n);if(!i)return;let a=i.models[0]?.id||``;e(e=>{let t=e.activeDirectoryKey,r={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentProviderId:n,currentModelId:a,selectedProviderId:n,selectionSource:`manual`};return{currentProviderId:n,currentModelId:a,selectedProviderId:n,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:r}}})},setModel:t=>{e(e=>{let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentModelId:t,selectionSource:`manual`};return{currentModelId:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},setCurrentVariant:t=>{e(e=>{if(e.currentVariant===t)return e;let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentVariant:t,selectionSource:`manual`};return{currentVariant:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},getCurrentModelVariants:()=>{let e=t().getCurrentModel()?.variants;return e?Object.keys(e):[]},cycleCurrentVariant:()=>{let e=t().getCurrentModelVariants();if(e.length===0)return;let n=t().currentVariant;if(!n){t().setCurrentVariant(e[0]);return}let r=e.indexOf(n);if(r===-1||r===e.length-1){t().setCurrentVariant(void 0);return}t().setCurrentVariant(e[r+1])},setSelectedProvider:t=>{e(e=>{let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},selectedProviderId:t,selectionSource:`manual`};return{selectedProviderId:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},saveAgentModelSelection:(t,n,r,i)=>{!t||!n||!r||e(e=>{let a=e.activeDirectoryKey,o={agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}},s=e.lastUserSelection,c=s?.agentName===o.agentName&&s?.providerId===o.providerId&&s?.modelId===o.modelId&&s?.variant===o.variant,l=e.globalLastUserSelection?.agentName===o.agentName&&e.globalLastUserSelection?.providerId===o.providerId&&e.globalLastUserSelection?.modelId===o.modelId&&e.globalLastUserSelection?.variant===o.variant;if(c&&l)return e;let u={...e.directoryScoped[a]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,lastSelectedAgentName:e.lastSelectedAgentName,lastUserSelection:e.lastUserSelection,defaultProviders:e.defaultProviders},agentModelSelections:{},lastSelectedAgentName:t,lastUserSelection:o,selectionSource:`manual`};return{agentModelSelections:{},lastSelectedAgentName:t,lastUserSelection:o,globalLastUserSelection:o,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[a]:u}}})},getAgentModelSelection:e=>{let{lastUserSelection:n}=t();return!n||n.agentName!==e?null:{providerId:n.providerId,modelId:n.modelId,...n.variant?{variant:n.variant}:{}}},loadAgents:async n=>{let r=n?.directory??Pu(t().activeDirectoryKey),i=Ru(r);if(!i)return On(`loadAgents:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`}),!1;let a=i??H.getDirectory()??null,o=Nu(i),s=n?.source??`unknown`,c=u(),l=f();sd(c);let d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&id[o]===p&&Ru(r)===i,p=(id[o]??0)+1;id[o]=p,On(`loadAgents:called`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let m=t().directoryScoped[o];return t().agents.length>0||m?.agents.length||e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[o]:!0}})),(async()=>{let i=typeof performance<`u`?performance.now():Date.now();On(`loadAgents:start`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let l=t().directoryScoped[o]?.agents??[];try{let u=Pu(o);(Ke(r??void 0)??Ke(u??void 0))&&On(`loadAgents:syncConfigHit`,{directoryKey:o,source:s});let[f,p]=await Promise.all([Tn(`loadAgents:api`,()=>n?.forceRefresh?pc(u,c):dc(u,c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),hu(c,{defaultModel:t().settingsDefaultModel,defaultVariant:t().settingsDefaultVariant,defaultAgent:t().settingsDefaultAgent,autoCreateWorktree:t().settingsAutoCreateWorktree,gitmojiEnabled:t().settingsGitmojiEnabled,defaultFileViewerPreview:t().settingsDefaultFileViewerPreview,zenModel:t().settingsZenModel,messageStreamTransport:t().settingsMessageStreamTransport})]),m=(Array.isArray(f)?f:[]).map(qt);if(!d())return!1;if(m.length===0)return!0;let h=Ke(r??void 0)??Ke(u??void 0),g=h!==void 0,_=g?yu(h.default_agent):void 0,v=g?nc(h.model):void 0,y=t().activeDirectoryKey===o?t().providers:t().directoryScoped[o]?.providers??[],b=yu(t().settingsZenModel),x=yu(p.zenModel),S=Tu({providers:y,settingsZenModel:b}),C=Tu({providers:y,settingsZenModel:x}),w=(S||C)?.modelId||x||b;e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let t=e.directoryScoped[o]??{providers:y,agents:l,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=g?_:t.opencodeDefaultAgent??(e.activeDirectoryKey===o?e.opencodeDefaultAgent:void 0),r=g?v:t.opencodeDefaultModel??(e.activeDirectoryKey===o?e.opencodeDefaultModel:void 0),i={...t,providers:y,agents:m,opencodeDefaultAgent:n,opencodeDefaultModel:r},a={settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,settingsDefaultAgent:p.defaultAgent,settingsAutoCreateWorktree:p.autoCreateWorktree??!1,settingsGitmojiEnabled:p.gitmojiEnabled??!1,settingsDefaultFileViewerPreview:p.defaultFileViewerPreview??!1,settingsZenModel:w,settingsMessageStreamTransport:p.messageStreamTransport??e.settingsMessageStreamTransport??`auto`,directoryScoped:{...e.directoryScoped,[o]:i}};return e.activeDirectoryKey===o&&(a.agents=m,a.opencodeDefaultAgent=n,a.opencodeDefaultModel=r),a});let T=t(),E=T.directoryScoped[o],D=E?.opencodeDefaultAgent??(T.activeDirectoryKey===o?T.opencodeDefaultAgent:void 0),O=E?.opencodeDefaultModel??(T.activeDirectoryKey===o?T.opencodeDefaultModel:void 0),k=!!w&&w!==x;d()&&k&&w&&ge({zenModel:w,gitProviderId:``,gitModelId:``}).catch(()=>{});let A=t(),ee=A.directoryScoped[o]?.lastUserSelection??(A.activeDirectoryKey===o?A.lastUserSelection:void 0),j=wu({agents:m,providers:y,settingsDefaultAgent:p.defaultAgent,settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,opencodeDefaultAgent:D,opencodeDefaultModel:O,projectLastUserSelection:ee,globalLastUserSelection:A.globalLastUserSelection}),te=j.agentName??m[0].name,M=j.providerId,ne=j.modelId,re=j.variant;if(e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let t=e.directoryScoped[o]??{providers:y,agents:m,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=e.activeDirectoryKey===o,r=n?e.currentAgentName:t.currentAgentName,i=n?e.currentProviderId:t.currentProviderId,a=n?e.currentModelId:t.currentModelId,s=n?e.currentVariant:t.currentVariant,l=n?e.selectionSource:t.selectionSource??`auto`,u=$u({agents:m,providers:y,currentAgentName:r,currentProviderId:i,currentModelId:a,currentVariant:s,selectionSource:l,resolvedAgentName:te,resolvedProviderId:M,resolvedModelId:ne,resolvedVariant:re}),f={...t,providers:y,agents:m,currentAgentName:u.agentName,currentProviderId:u.providerId??t.currentProviderId,currentModelId:u.modelId??t.currentModelId,currentVariant:u.variant,opencodeDefaultAgent:D,opencodeDefaultModel:O,selectionSource:u.selectionSource},p={directoryScoped:{...e.directoryScoped,[o]:f}};return n&&(p.currentAgentName=u.agentName,p.opencodeDefaultAgent=D,p.opencodeDefaultModel=O,u.providerId&&u.modelId&&(p.currentProviderId=u.providerId,p.currentModelId=u.modelId,p.currentVariant=u.variant),p.selectionSource=u.selectionSource),p}),!d())return!1;let N=typeof performance<`u`?performance.now():Date.now();return On(`loadAgents:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(N-i),agents:m.length}),!0}catch(t){return!d()||(console.error(`Failed to load agents:`,t),On(`loadAgents:error`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,error:t instanceof Error?t.message:String(t)}),!d())||e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let t=e.activeDirectoryKey===o?e.providers:e.directoryScoped[o]?.providers??[],n={...e.directoryScoped[o]??{providers:t,agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:t,agents:l},r={directoryScoped:{...e.directoryScoped,[o]:n}};return e.activeDirectoryKey===o&&(r.agents=l),r}),!1}})().finally(()=>{id[o]===p&&e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[o]:!1}}))})},setAgent:n=>{let{agents:r,providers:i,settingsDefaultModel:a,settingsDefaultVariant:o,currentProviderId:s,currentModelId:c}=t(),l=ot(r,n)??n;if(e(e=>{let t=e.activeDirectoryKey,n={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentAgentName:l,selectionSource:`manual`};return{currentAgentName:l,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:n}}}),l){let{currentSessionId:e}=$.getState(),t=eu.getState();e&&t.saveSessionAgentSelection(e,l),e&&$.getState().isOpenChamberCreatedSession(e)&&(t.getAgentModelForSession(e,l)||$.getState().initializeNewOpenChamberSession(e,r))}if(l){let{currentSessionId:n}=$.getState(),u=(t,n,r)=>{e(e=>{let i=e.activeDirectoryKey,a={...e.directoryScoped[i]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:vu(e.selectedProviderId,t),selectionSource:`manual`};return{currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:vu(e.selectedProviderId,t),selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[i]:a}}})},d=Ge(r,l),f=(e,t,r=[])=>{let a=i.find(t=>t.id===e)?.models.find(e=>e.id===t)?.variants;if(!a)return;let s=n?eu.getState().getAgentModelVariantForSession(n,l,e,t):void 0;for(let e of[s,...r,o])if(e&&Object.prototype.hasOwnProperty.call(a,e))return e};if(n){let e=eu.getState().getAgentModelForSession(n,l);if(e&&Su(i,e.providerId,e.modelId)){let n=f(e.providerId,e.modelId,[d?.variant]);(s!==e.providerId||c!==e.modelId||t().currentVariant!==n)&&u(e.providerId,e.modelId,n);return}}if(a){let e=gu(a);if(e&&i.find(t=>t.id===e.providerId)?.models.some(t=>t.id===e.modelId)){u(e.providerId,e.modelId,f(e.providerId,e.modelId,[d?.variant]));return}}let p=d?.model;if(p?.providerID&&p?.modelID){let{providerID:e,modelID:t}=p;if(i.find(t=>t.id===e)?.models.find(e=>e.id===t)){u(e,t,f(e,t,[d?.variant]));return}}}},applyDefaultModelAgentSelection:n=>{let{agents:r,providers:i,settingsDefaultModel:a,settingsDefaultVariant:o,settingsDefaultAgent:s,opencodeDefaultAgent:c,opencodeDefaultModel:l,lastUserSelection:u,globalLastUserSelection:d}=t();if(r.length===0||i.length===0)return;let{agentName:f,providerId:p,modelId:m,variant:h}=wu({agents:r,providers:i,projectDefaultModel:n?.projectDefaultModel,settingsDefaultAgent:s,settingsDefaultModel:a,settingsDefaultVariant:o,opencodeDefaultAgent:c,opencodeDefaultModel:l,projectLastUserSelection:u,globalLastUserSelection:d});f&&e(e=>{let t=e.activeDirectoryKey,n={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentAgentName:f,...p&&m?{currentProviderId:p,currentModelId:m,currentVariant:h,selectedProviderId:vu(e.selectedProviderId,p)}:{},selectionSource:`auto`},r={currentAgentName:f,selectionSource:`auto`,directoryScoped:{...e.directoryScoped,[t]:n}};return p&&m&&(r.currentProviderId=p,r.currentModelId=m,r.currentVariant=h,r.selectedProviderId=vu(e.selectedProviderId,p)),r})},applyOpenCodeConfigDefaults:(n,r=`syncConfig`,i)=>{let a=n??Pu(t().activeDirectoryKey),o=zu(a),s=Pu(o),c=i??Ke(a??void 0)??Ke(s??void 0);if(!c)return;let l=yu(c.default_agent),u=nc(c.model);e(e=>{let t=e.directoryScoped[o],n=e.activeDirectoryKey===o,i=n?e.providers:t?.providers??[],s=n?e.agents:t?.agents??[],c=t??Zu(i,s),d=c.opencodeDefaultAgent!==l||c.opencodeDefaultModel!==u||n&&(e.opencodeDefaultAgent!==l||e.opencodeDefaultModel!==u),f={...c,providers:i,agents:s,opencodeDefaultAgent:l,opencodeDefaultModel:u},p={directoryScoped:{...e.directoryScoped,[o]:f}};n&&(p.opencodeDefaultAgent=l,p.opencodeDefaultModel=u);let m=n?e.selectionSource:t?.selectionSource??`auto`;if(i.length===0||s.length===0)return d?p:e;let h=n?e.lastUserSelection:t?.lastUserSelection,g=wu({agents:s,providers:i,settingsDefaultAgent:e.settingsDefaultAgent,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant,opencodeDefaultAgent:l,opencodeDefaultModel:u,projectLastUserSelection:h,globalLastUserSelection:e.globalLastUserSelection});if(!g.agentName)return d?p:e;let _=n?e.currentAgentName:c.currentAgentName,v=n?e.currentProviderId:c.currentProviderId,y=n?e.currentModelId:c.currentModelId,b=n?e.currentVariant:c.currentVariant,x=n?e.selectedProviderId:c.selectedProviderId,S=$u({agents:s,providers:i,currentAgentName:_,currentProviderId:v,currentModelId:y,currentVariant:b,selectionSource:m,resolvedAgentName:g.agentName,resolvedProviderId:g.providerId,resolvedModelId:g.modelId,resolvedVariant:g.variant}),C={...f,providers:i,agents:s,currentAgentName:S.agentName,...S.providerId&&S.modelId?{currentProviderId:S.providerId,currentModelId:S.modelId,currentVariant:S.variant,selectedProviderId:vu(x,S.providerId)}:{},selectionSource:S.selectionSource},w=c.currentAgentName!==C.currentAgentName||c.currentProviderId!==C.currentProviderId||c.currentModelId!==C.currentModelId||c.currentVariant!==C.currentVariant||c.selectedProviderId!==C.selectedProviderId||(c.selectionSource??`auto`)!==C.selectionSource||n&&(e.currentAgentName!==S.agentName||e.selectionSource!==S.selectionSource||S.providerId!==void 0&&S.modelId!==void 0&&(e.currentProviderId!==S.providerId||e.currentModelId!==S.modelId||e.currentVariant!==S.variant||e.selectedProviderId!==vu(x,S.providerId)));return!d&&!w?e:(p.directoryScoped={...e.directoryScoped,[o]:C},n&&(p.currentAgentName=S.agentName,p.selectionSource=S.selectionSource,S.providerId&&S.modelId&&(p.currentProviderId=S.providerId,p.currentModelId=S.modelId,p.currentVariant=S.variant,p.selectedProviderId=vu(x,S.providerId))),On(`loadAgents:opencodeConfigDefaultsApplied`,{directoryKey:o,eventDirectory:a,source:r}),p)})},setSettingsDefaultModel:t=>{e({settingsDefaultModel:t})},setSettingsDefaultVariant:t=>{e({settingsDefaultVariant:t})},setSettingsDefaultAgent:t=>{e({settingsDefaultAgent:t})},setSettingsAutoCreateWorktree:t=>{e({settingsAutoCreateWorktree:t})},setSettingsGitmojiEnabled:t=>{e({settingsGitmojiEnabled:t})},setSettingsDefaultFileViewerPreview:t=>{e({settingsDefaultFileViewerPreview:t})},setSettingsZenModel:t=>{e({settingsZenModel:t})},setSettingsMessageStreamTransport:t=>{e({settingsMessageStreamTransport:t})},getResolvedGitGenerationModel:()=>{let e=t();return Tu({providers:e.providers,settingsZenModel:e.settingsZenModel})},setVoiceProvider:t=>{e({voiceProvider:t})},setSpeechRate:t=>{e({speechRate:Math.max(.5,Math.min(2,t))})},setSpeechPitch:t=>{e({speechPitch:Math.max(.5,Math.min(2,t))})},setSpeechVolume:t=>{e({speechVolume:Math.max(0,Math.min(1,t))})},setSayVoice:t=>{e({sayVoice:t})},setLocalTtsVoiceId:t=>{e({localTtsVoiceId:t})},setBrowserVoice:t=>{e({browserVoice:t})},setOpenaiVoice:t=>{e({openaiVoice:t})},setOpenaiApiKey:t=>{e({openaiApiKey:t})},setOpenaiCompatibleUrl:t=>{e({openaiCompatibleUrl:t})},setOpenaiCompatibleApiKey:t=>{e({openaiCompatibleApiKey:t})},setOpenaiCompatibleVoice:t=>{e({openaiCompatibleVoice:t})},setOpenaiCompatibleTtsModel:t=>{e({openaiCompatibleTtsModel:t})},setDictationEnabled:t=>{e({dictationEnabled:t})},setSttProvider:t=>{e({sttProvider:t})},setSttServerUrl:t=>{e({sttServerUrl:t})},setSttApiKey:t=>{e({sttApiKey:t})},setSttModel:t=>{e({sttModel:t})},setSttLocalModel:t=>{e({sttLocalModel:t})},setSttLanguage:t=>{e({sttLanguage:t})},setShowMessageTTSButtons:t=>{e({showMessageTTSButtons:t})},setTtsInputMode:t=>{e({ttsInputMode:t})},setSummarizeMessageTTS:t=>{e({summarizeMessageTTS:t})},setSummarizeVoiceConversation:t=>{e({summarizeVoiceConversation:t})},setSummarizeCharacterThreshold:t=>{e({summarizeCharacterThreshold:Math.max(50,Math.min(2e3,t))})},setSummarizeMaxLength:t=>{e({summarizeMaxLength:Math.max(50,Math.min(2e3,t))})},probeConnection:async n=>{if(await ju(n?.timeoutMs))return e({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`}),!0;let r=t();return r.isConnected?!0:(e({isConnected:!1,connectionPhase:r.hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`health_probe_unhealthy`}),!1)},checkConnection:async()=>{On(`checkConnection:start`);let n=0,r=null;for(;n<5;)try{On(`checkConnection:attempt`,{attempt:n+1});let r=await Tn(`checkConnection:health`,()=>H.checkHealth(),{attempt:n+1});if(!r&&n<4){let r=t().hasEverConnected;e({isConnected:!1,connectionPhase:r?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),n+=1,await ku(400*n);continue}let i=t().hasEverConnected;return e(r?{isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`}:{isConnected:!1,connectionPhase:i?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),On(`checkConnection:end`,{healthy:r,attempts:n+1}),r}catch(e){r=e,n+=1,await ku(400*n)}return r&&console.warn(`[ConfigStore] Failed to reach OpenCode after retrying:`,r),e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_failed`}),On(`checkConnection:end`,{healthy:!1,attempts:5}),!1},initializeApp:async()=>{if(ed)return On(`initializeApp:deduped`),ed;let n=(async()=>{let n=typeof performance<`u`?performance.now():Date.now();On(`initializeApp:start`);try{if(Ot(),!await t().checkConnection()){e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`});return}On(`initApp:skipped`,{reason:`checkConnection already verified health`});let r=H.getDirectory()??Xe.getState().currentDirectory??Pu(t().activeDirectoryKey),i=Ru(r),a=i??Lu();if(!a){On(`initializeApp:noProjectConfigDirectory`),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});return}!i&&r!==a&&(On(`initializeApp:normalizedUnknownDirectoryToProject`,{initialDirectory:r,configDirectory:a}),H.setDirectory(a),Xe.getState().setDirectory(a,{showOverlay:!1}));let o=Nu(a);t().activeDirectoryKey!==o&&e(e=>{let t=e.directoryScoped[o]??Zu();return{activeDirectoryKey:o,providers:t.providers,agents:t.agents,defaultProviders:t.defaultProviders,currentProviderId:t.currentProviderId,currentModelId:t.currentModelId,currentVariant:t.currentVariant,currentAgentName:t.currentAgentName,selectedProviderId:t.selectedProviderId,agentModelSelections:t.agentModelSelections,lastSelectedAgentName:t.lastSelectedAgentName,lastUserSelection:t.lastUserSelection,opencodeDefaultAgent:t.opencodeDefaultAgent,opencodeDefaultModel:t.opencodeDefaultModel,selectionSource:t.selectionSource??`auto`}}),await Promise.all([t().loadProviders({directory:a,source:`initializeApp`,forceRefresh:!0}),t().loadAgents({directory:a,source:`initializeApp`,forceRefresh:!0})]),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let s=typeof performance<`u`?performance.now():Date.now();On(`initializeApp:end`,{durationMs:Math.round(s-n),providers:t().providers.length,agents:t().agents.length})}catch(n){console.error(`Failed to initialize app:`,n),e({isInitialized:!1,isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`init_error`}),On(`initializeApp:error`,{error:n instanceof Error?n.message:String(n)})}})().finally(()=>{ed=null});return ed=n,n},prewarmProjectConfigs:async e=>{!t().isConnected||zu(e??Pu(t().activeDirectoryKey))!==t().activeDirectoryKey||await t().refreshMissingCatalogs({source:`activeConfigPrewarm`})},getCurrentProvider:()=>{let{providers:e,currentProviderId:n}=t();return e.find(e=>e.id===n)},getCurrentModel:()=>{let e=t().getCurrentProvider(),{currentModelId:n}=t();if(e)return e.models.find(e=>e.id===n)},getCurrentAgent:()=>{let{agents:e,currentAgentName:n}=t();if(n)return Ge(e,n)},getModelMetadata:(e,n)=>{if(!e||!n)return;let r=t().providers.find(t=>t.id===e);if(!r)return;let i=r.models.find(e=>e.id===n);if(i)return Ou(e,i)},getVisibleAgents:()=>{let{agents:e}=t();return cl(e)}}),{name:`config-store`,version:5,storage:od,migrate:e=>Qu(e),merge:(e,t)=>Gu({...t,...Qu(e),catalogTransportIdentity:u()}),partialize:e=>{let t=(t,n)=>{let r=Ju(n?.lastUserSelection)??Yu(Ku(n?.lastSelectedAgentName,!0),qu(n?.agentModelSelections))??(t===e.activeDirectoryKey?Ju(e.lastUserSelection):void 0);return{currentProviderId:n?.currentProviderId??(t===e.activeDirectoryKey?e.currentProviderId:``),currentModelId:n?.currentModelId??(t===e.activeDirectoryKey?e.currentModelId:``),currentVariant:n?.currentVariant??(t===e.activeDirectoryKey?e.currentVariant:void 0),currentAgentName:n?.currentAgentName??(t===e.activeDirectoryKey?e.currentAgentName:void 0),selectedProviderId:_u(n?.selectedProviderId??(t===e.activeDirectoryKey?e.selectedProviderId:``)),agentModelSelections:{},lastSelectedAgentName:r?.agentName??Ku(n?.lastSelectedAgentName,!0),lastUserSelection:r,selectionSource:n?.selectionSource??(t===e.activeDirectoryKey?e.selectionSource:void 0)}},n=Object.fromEntries(Object.entries(e.directoryScoped).map(([e,n])=>[e,t(e,n)]));e.activeDirectoryKey&&!n[e.activeDirectoryKey]&&(n[e.activeDirectoryKey]=t(e.activeDirectoryKey,void 0));let r=Ju(e.globalLastUserSelection)??Ju(e.lastUserSelection);return{activeDirectoryKey:e.activeDirectoryKey,catalogTransportIdentity:e.catalogTransportIdentity,directoryScoped:n,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:_u(e.selectedProviderId),agentModelSelections:{},lastSelectedAgentName:r?.agentName??Ku(e.lastSelectedAgentName,!0),lastUserSelection:Ju(e.lastUserSelection)??r,globalLastUserSelection:r}}})));function sd(e){if(W.getState().catalogTransportIdentity===e)return;let t=W.persist.getOptions().storage;W.persist.setOptions({storage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{}}});try{W.setState({catalogTransportIdentity:e})}finally{W.persist.setOptions({storage:t})}}typeof window<`u`&&(window.__zustand_config_store__=W);var cd=async e=>{await W.getState().loadProviders({source:e,forceRefresh:!0})},ld=null;ld||=jo(async e=>{let t=[];if(H.clearConfigCache(),No(e,`agents`)){let{loadAgents:e}=W.getState();t.push(e({source:`configChange:agents`,forceRefresh:!0}).then(()=>{}))}No(e,`providers`)&&t.push(cd(`configChange:providers`)),t.length>0&&await Promise.all(t)});var ud=null,dd=null;dd||=pt((e,t)=>{W.getState().applyOpenCodeConfigDefaults(e,`syncConfig`,t)}),typeof window<`u`&&!ud&&(ud=Xe.subscribe((e,t)=>{let n=Nu(e.currentDirectory),r=Nu(t.currentDirectory);n!==r&&(On(`directoryStore:changed`,{previous:r,next:n}),W.getState().activateDirectory(e.currentDirectory))}));var fd=e=>typeof e==`number`&&Number.isFinite(e)?e:null,pd=e=>{let t=e.metadata;return fd(t?.openchamber?.titleRefresh?.activityUpdatedAt)??fd(e.time?.updated)??fd(e.time?.created)??0},md=[`load failed`,`network connection was lost`,`network request failed`,`failed to fetch`,`econnreset`,`econnrefused`,`etimedout`,`socket hang up`,`signal timed out`,`opencode api unavailable`,`503`,`502`];function hd(e){if(!e)return!1;let t=String(e instanceof Error?e.message:e).toLowerCase();if(md.some(e=>t.includes(e)))return!0;let n=e?.status;return typeof n==`number`&&n>=500&&n<600}async function gd(e,t={}){let{attempts:n=3,delay:r=500,factor:i=2,maxDelay:a=1e4,retryIf:o=hd}=t,s;for(let t=0;t<n;t++)try{return await e()}catch(e){if(s=e,t===n-1||!o(e))throw e;let c=Math.min(r*i**+t,a);await new Promise(e=>setTimeout(e,c))}throw s}var _d=[`file`,`status`,`additions`,`deletions`],vd=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t={},n=e;return typeof n.messageID==`string`&&(t.messageID=n.messageID),typeof n.partID==`string`&&(t.partID=n.partID),Object.keys(t).length>0?t:void 0},yd=e=>e===void 0?!1:!e||typeof e!=`object`||Array.isArray(e)?!0:Object.keys(e).some(e=>e!==`messageID`&&e!==`partID`),bd=e=>typeof e.before==`string`||typeof e.after==`string`||typeof e.from==`string`||typeof e.to==`string`||typeof e.patch==`string`;function xd(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!bd(t))return e;let n={};for(let e of _d)e in t&&t[e]!==void 0&&(n[e]=t[e]);return n}function Sd(e){if(!Array.isArray(e))return e;let t=!1,n=e.map(e=>{let n=xd(e);return n!==e&&(t=!0),n});return t?n:e}function Cd(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e,n=t.summary;if(!n||typeof n!=`object`||Array.isArray(n)||!Object.prototype.hasOwnProperty.call(n,`diffs`))return e;let r=n.diffs;if(!Array.isArray(r)){let e={...n,diffCount:0,hasDiffs:!1};return delete e.diffs,{...t,summary:e}}let i=Sd(r),a=i.length,o=a>0,s=n.diffCount===a&&n.hasDiffs===o;return i===r&&s?e:{...t,summary:{...n,diffs:i,diffCount:a,hasDiffs:o}}}function wd(e){let t=e.revert,n=e,r=!1;if(t&&(typeof t.snapshot==`string`||typeof t.diff==`string`)){let e={...t};delete e.snapshot,delete e.diff,n={...n,revert:e},r=!0}let i=Cd(r?n:e);return i===(r?n:e)?n:i}function Td(e){let t=e;if(!(yd(t.revert)||Array.isArray(t.summary?.diffs)||typeof t.summary?.diffCount==`number`||typeof t.summary?.hasDiffs==`boolean`||`permission`in t))return e;let n=wd(e),r={...n};delete r.permission;let i=vd(n.revert);i?r.revert=i:delete r.revert;let a=n.summary;if(a&&typeof a==`object`&&!Array.isArray(a)){let e={...a};delete e.diffs,delete e.diffCount,delete e.hasDiffs,r.summary=e}return r}function Ed(e){return Cd(e)}var Dd=new Set([`smartfetch-secondary`]),Od=/^\[(?:Scheduled|Assistant|openchamber-llm)\]/,kd=e=>typeof e==`string`&&e.length>0,Ad=e=>{let t=e.metadata;if(!t||typeof t!=`object`)return!1;let n=t.openchamber;if(!n||typeof n!=`object`)return!1;let r=n;return r.assigned?.from!==`contact`&&!!(kd(r.assistant?.assistantID)||kd(r.scheduledTask?.taskID)||kd(r.smallModel?.purpose)||kd(r.llm?.purpose))},jd=e=>{let t=e.parentID;return typeof t==`string`&&t.trim()?t:null},Md=(e,t={})=>!(e.title&&Dd.has(e.title)||e.title&&Od.test(e.title)||!t.includeChildren&&jd(e)||Ad(e)),Nd=e=>{let t=e.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:0},Pd=e=>{let t=e.time?.archived;return typeof t==`number`&&Number.isFinite(t)&&t>0},Fd=e=>{let t=yt(e);return Td({...t,directory:t.directory||e.directory})};async function Id(e,t){let n=[],r=new Set,i=t.cursor,a;for(;;){let o=t.maxItems===void 0?t.pageSize:Math.max(0,t.maxItems-n.length);if(o===0)break;let s=Math.min(t.pageSize,o),c=await gd(async()=>{let n=t.timeoutMs===void 0?void 0:AbortSignal.timeout(t.timeoutMs),r=t.signal&&n?AbortSignal.any([t.signal,n]):t.signal??n,i=await e.session.list({...t.directory?{directory:t.directory}:{},...t.roots===!0?{parentID:null}:{},limit:s,...a?{cursor:a}:{}},r?{signal:r}:void 0);if(!i||!Array.isArray(i.data)){let e=Error(`session.list returned no data`);throw e.status=503,e}return i},{attempts:t.retryAttempts??3,delay:500}),l=c.data.map(e=>Fd(e)).filter(e=>(t.archived?!Pd(e):Pd(e))||t.start!==void 0&&Nd(e)<t.start||i!==void 0&&Nd(e)>=i?!1:Md(e)),u=0;for(let e of l)!e?.id||r.has(e.id)||(r.add(e.id),n.push(e),u+=1);if(u>0&&t.onPage?.(l),t.maxItems!==void 0&&n.length>=t.maxItems)break;let d=typeof c.cursor?.next==`string`&&c.cursor.next.length>0?c.cursor.next:void 0;if(!d||d===a)break;a=d}return n}var Ld=`/api/magic-prompts`,Rd=new Map([{id:`git.commit.generate.visible`,title:`Commit Generation Visible Prompt`,group:`Git`,description:`Visible user message for commit message generation.`,template:`You are generating a Conventional Commits subject line from the diffs of the selected files.`},{id:`git.commit.generate.instructions`,title:`Commit Generation Instructions`,group:`Git`,description:`Hidden instructions for commit message generation.`,placeholders:[{key:`selected_files`,description:`Bullet list of currently selected file paths.`}],template:`Return exactly one JSON object and nothing else. Do not include prose, markdown, explanations, or code fences.
7
+
8
+ The JSON object must have exactly this shape:
9
+ {"subject": string, "highlights": string[]}
10
+
11
+ Rules:
12
+ - subject format: <type>: <summary>
13
+ - allowed types: feat, fix, refactor, perf, docs, test, build, ci, chore, style, revert
14
+ - no scope in subject
15
+ - keep subject concise and user-facing
16
+ - highlights: 0-3 concise user-facing points
17
+ - use double quotes for all JSON strings
18
+ - do not include trailing commas or comments
19
+
20
+ Selected files:
21
+ {{selected_files}}`},{id:`git.pr.generate.visible`,title:`PR Generation Visible Prompt`,group:`Git`,description:`Visible user message for PR title/body generation.`,template:`You are drafting GitHub Pull Request title and body using session context, commit list, and changed files.`},{id:`git.pr.generate.instructions`,title:`PR Generation Instructions`,group:`Git`,description:`Hidden instructions for PR title/body generation.`,placeholders:[{key:`base_branch`,description:`Base branch name.`},{key:`head_branch`,description:`Head branch name.`},{key:`commits`,description:`Bullet list of commits in base...head.`},{key:`changed_files`,description:`Bullet list of changed files in base...head.`},{key:`additional_context_block`,description:`Optional Additional context block (already formatted).`}],template:`Return exactly one JSON object and nothing else. Do not include prose, markdown outside JSON, explanations, or code fences.
22
+
23
+ The JSON object must have exactly this shape:
24
+ {"title": string, "body": string}
25
+
26
+ Rules:
27
+ - title: concise, outcome-first, conventional style
28
+ - body: markdown with sections: ## Summary, ## Why, ## Testing
29
+ - keep output concrete and user-facing
30
+ - put all markdown inside the body string
31
+ - use double quotes for all JSON strings and escape newlines as \\n
32
+ - do not include trailing commas or comments
33
+
34
+ Base branch: {{base_branch}}
35
+ Head branch: {{head_branch}}
36
+
37
+ Commits in range (base...head):
38
+ {{commits}}
39
+
40
+ Files changed across these commits:
41
+ {{changed_files}}{{additional_context_block}}`},{id:`github.pr.review.visible`,title:`PR Review Visible Prompt`,group:`GitHub`,description:`Visible user message when creating PR review requests from GitHub context.`,placeholders:[{key:`pr_number`,description:`Pull request number.`}],template:`Review this pull request #{{pr_number}} using the provided PR context`},{id:`github.pr.review.instructions`,title:`PR Review Instructions`,group:`GitHub`,description:`Hidden instructions attached when generating a PR review response.`,template:`You are drafting a pull request review comment that will be posted back to the PR author. You are not the implementer; do not propose to write code or run commands.
42
+
43
+ Before drafting:
44
+ - Read the PR title and body first to anchor on the author's intent. Evaluate whether the implementation matches that intent — missing pieces, incorrect behavior vs intent, scope creep.
45
+ - The PR diff is the source of truth for what changed; the repo on disk may not yet reflect those changes. Read the diff carefully. Use the repo only as ancillary context (imports, call sites, existing patterns, nearby code) when you need to verify a specific claim — not to discover the changes themselves.
46
+ - No speculation: every reported issue must be grounded in the diff plus ancillary repo evidence you actually read. If a claim cannot be verified, drop it — do not hedge or guess.
47
+ - Clarifying question: if the PR's intent itself is unreadable (title/body give no "why", diff is ambiguous on purpose), ask me one focused question about intent and stop. Do not open a discovery loop — this is a review, not a planning session.
48
+
49
+ High-signal bar — only report issues that meet all of:
50
+ - Objective and verifiable from the diff plus ancillary repo evidence.
51
+ - Introduced by this PR (not pre-existing).
52
+ - Material: bugs that will cause incorrect runtime behavior, security/privacy risks, correctness edge cases, backwards-compat breakage, missing implementations across modules/targets, boundary violations, OR a clear CLAUDE.md / AGENTS.md violation where you can quote the exact rule.
53
+
54
+ Do NOT report:
55
+ - Pre-existing issues unrelated to the diff.
56
+ - Pedantic nitpicks a senior engineer would not flag.
57
+ - Issues a linter would catch.
58
+ - Subjective style preferences not explicitly required by CLAUDE.md / AGENTS.md.
59
+ - "Might" / "could" / "potential" concerns without concrete evidence.
60
+ - Rules mentioned in CLAUDE.md / AGENTS.md but explicitly silenced in the code (e.g., via an ignore comment or documented exception).
61
+ - Missing tests / coverage gaps unless CLAUDE.md / AGENTS.md explicitly requires them for the changed area.
62
+
63
+ Validation pass: before writing the final comment, re-check each candidate issue against the diff + ancillary repo evidence. Drop anything you are not certain about. False positives waste the author's time.
64
+
65
+ Output rules:
66
+ - Produce a single review comment addressed to the PR author, using the exact format below.
67
+ - No emojis. No code snippets. No fenced blocks. Short inline code identifiers are fine.
68
+ - Reference evidence with file paths and line ranges (e.g., path/to/file.ts:120-138) derived from the diff. Use "approx" only as a last resort when the diff does not expose exact lines.
69
+ - One bullet per unique issue; do not duplicate an issue across sections.
70
+ - Keep the whole comment under ~300 words.
71
+
72
+ Format exactly:
73
+ <1-2 sentence summary of intent and top-level verdict>
74
+
75
+ Must-fix:
76
+ - <issue> - <brief why> - <file:line-range> - Action: <one-line action>
77
+ Nice-to-have:
78
+ - <issue> - <brief why> - <file:line-range> - Action: <one-line action>
79
+
80
+ If nothing clears the high-signal bar, write:
81
+ Must-fix:
82
+ - None
83
+ Nice-to-have:
84
+ - None`},{id:`github.issue.review.visible`,title:`Issue Review Visible Prompt`,group:`GitHub`,description:`Visible user message when creating issue review requests from GitHub context.`,placeholders:[{key:`issue_number`,description:`Issue number.`}],template:`Review this issue #{{issue_number}} using the provided issue context`},{id:`github.issue.review.instructions`,title:`Issue Review Instructions`,group:`GitHub`,description:`Hidden instructions attached when generating an issue review response.`,template:`Review this issue using the provided issue context.
85
+
86
+ Process:
87
+ - First classify the issue type (bug / feature request / question/support / refactor / ops) and state it as: Type: <one label>.
88
+ - Gather any needed repository context (code, config, docs) to validate assumptions.
89
+ - After gathering, if anything is still unclear or cannot be verified, do not speculate — state what's missing and ask targeted questions.
90
+
91
+ Mode selection by type:
92
+ - Bug / Question/Support / Ops: deliver the response directly using the matching template below. Do not bombard me with questions for straightforward diagnosis; use "Missing info" / "Repro/diagnostics needed" fields instead.
93
+ - Feature request / Refactor with substantive unknowns: this is effectively a planning session. Do not emit the Feature template on the first turn. Instead, ask me focused clarifying questions in batches of at most 3, one topic at a time (scope, constraints, tradeoffs, UX, etc.), wait for answers, drop questions that became irrelevant, and repeat until you have no more substantive questions. Only then emit the Feature template.
94
+
95
+ Output rules:
96
+ - Compact output; pick ONE template below and omit the others.
97
+ - No emojis. No code snippets. No fenced blocks.
98
+ - Short inline code identifiers allowed.
99
+ - Reference evidence with file paths and line ranges when applicable; if exact lines are not available, cite the file and say "approx" + why.
100
+ - Keep the entire response under ~300 words (applies to the final template output, not to clarifying-question turns).
101
+
102
+ Templates (choose one):
103
+ Bug:
104
+ - Summary (1-2 sentences)
105
+ - Likely cause (max 2)
106
+ - Repro/diagnostics needed (max 3)
107
+ - Fix approach (max 4 steps)
108
+ - Verification (max 3)
109
+
110
+ Feature:
111
+ - Summary (1-2 sentences)
112
+ - Requirements (max 4)
113
+ - Unknowns/questions (max 4)
114
+ - Proposed plan (max 5 steps)
115
+ - Verification (max 3)
116
+
117
+ Question/Support:
118
+ - Summary (1-2 sentences)
119
+ - Answer/guidance (max 6 lines)
120
+ - Missing info (max 4)
121
+
122
+ Do not implement changes until I confirm; end with: "Next actions: <1 sentence>".`},{id:`github.pr.checks.review.visible`,title:`PR Failed Checks Visible Prompt`,group:`GitHub`,description:`Visible user message for PR failed checks analysis.`,template:`Review these PR failed checks and propose likely fixes. Do not implement until I confirm.`},{id:`github.pr.checks.review.instructions`,title:`PR Failed Checks Instructions`,group:`GitHub`,description:`Hidden instructions for PR failed checks analysis.`,template:`Use the attached checks payload.
123
+ - Summarize what is failing.
124
+ - Prioritize check annotations/errors over generic status text.
125
+ - Identify likely root cause(s).
126
+ - Propose a minimal fix plan and verification steps.
127
+ - No speculation: ask for missing info if needed.`},{id:`github.pr.comments.review.visible`,title:`PR Comments Review Visible Prompt`,group:`GitHub`,description:`Visible user message for PR comments analysis.`,template:`Review these PR comments and propose the required changes and next actions. Do not implement until I confirm.`},{id:`github.pr.comments.review.instructions`,title:`PR Comments Review Instructions`,group:`GitHub`,description:`Hidden instructions for PR comments analysis.`,template:`Use the attached comments payload.
128
+ - Identify required vs optional changes.
129
+ - Call out intent/implementation mismatch if present.
130
+ - Before proposing a plan: if a comment's intent is ambiguous, or the required change depends on a tradeoff only I can decide, ask me focused clarifying questions in batches of at most 3 and wait for answers. Do not speculate.
131
+ - Once intent is clear, propose a minimal plan and verification steps.`},{id:`github.pr.comment.single.visible`,title:`Single PR Comment Visible Prompt`,group:`GitHub`,description:`Visible user message for single PR comment analysis.`,template:`Address this comment from PR and propose required changes. Do not implement until I confirm.`},{id:`github.pr.comment.single.instructions`,title:`Single PR Comment Instructions`,group:`GitHub`,description:`Hidden instructions for single PR comment analysis.`,template:`Use the attached single-comment payload.
132
+ - Explain what the reviewer is asking for.
133
+ - Identify exact code areas likely impacted.
134
+ - Before proposing a plan: if the reviewer's intent is ambiguous or the required change depends on a tradeoff only I can decide, ask me focused clarifying questions in batches of at most 3 and wait for answers. Do not speculate.
135
+ - Once intent is clear, propose a minimal implementation plan and verification steps.`},{id:`git.conflict.resolve.visible`,title:`Merge/Rebase Conflict Visible Prompt`,group:`Git`,description:`Visible user message for merge/rebase conflict resolution help.`,placeholders:[{key:`operation_label`,description:`Operation label in lower-case (merge/rebase).`},{key:`head_ref`,description:`Head reference for preserving intent.`}],template:`Investigate the {{operation_label}} conflicts and concisely report the intended resolution strategy without making modifications. Wait for confirmation before resolving, staging, or continuing the {{operation_label}}. Preserve the intent of changes from {{head_ref}}.`},{id:`git.conflict.resolve.instructions`,title:`Merge/Rebase Conflict Instructions`,group:`Git`,description:`Hidden instructions for merge/rebase conflict resolution help.`,placeholders:[{key:`operation_label`,description:`Operation label in lower-case (merge/rebase).`},{key:`directory`,description:`Repository directory path.`},{key:`operation`,description:`Operation name.`},{key:`head_info`,description:`Head metadata if available.`},{key:`continue_cmd`,description:`Command to continue operation.`}],template:`Git {{operation_label}} operation is in progress with conflicts.
136
+ - Directory: {{directory}}
137
+ - Operation: {{operation}}
138
+ - Head Info: {{head_info}}
139
+
140
+ Required steps before confirmation:
141
+ 1. Read each conflicted file to understand the conflict markers (<<<<<<< HEAD, =======, >>>>>>> ...)
142
+ 2. Inspect the relevant surrounding code and changes from both sides
143
+ 3. Report a concise per-file resolution strategy and any assumptions or tradeoffs
144
+ 4. Wait for explicit user confirmation before editing files, staging files, or running: {{continue_cmd}}
145
+
146
+ Important:
147
+ - Do not modify files before the user confirms the proposed strategy
148
+ - Do not stage files before the user confirms the proposed strategy
149
+ - Do not continue the {{operation_label}} before the user confirms the proposed strategy
150
+ - Remove ALL conflict markers from files (<<<<<<< HEAD, =======, >>>>>>>)
151
+ - Make sure the final code is syntactically correct and preserves intent from both sides
152
+ - Do not leave any files with unresolved conflict markers
153
+ - After completing all steps, confirm the {{operation_label}} was successful`},{id:`git.integrate.cherrypick.resolve.visible`,title:`Cherry-pick Conflict Visible Prompt`,group:`Git`,description:`Visible user message for cherry-pick conflict resolution help.`,placeholders:[{key:`current_commit`,description:`Current commit hash being applied.`},{key:`target_branch`,description:`Target branch name.`}],template:`Resolve cherry-pick conflicts, stage the resolved files, and continue the cherry-pick. Keep intent of commit {{current_commit}} onto branch {{target_branch}}.`},{id:`git.integrate.cherrypick.resolve.instructions`,title:`Cherry-pick Conflict Instructions`,group:`Git`,description:`Hidden instructions for cherry-pick conflict resolution help.`,placeholders:[{key:`repo_root`,description:`Repository root path.`},{key:`temp_worktree_path`,description:`Temporary worktree path.`},{key:`source_branch`,description:`Source branch name.`},{key:`target_branch`,description:`Target branch name.`},{key:`current_commit`,description:`Current commit hash being applied.`}],template:`Worktree commit integration (cherry-pick) is in progress with conflicts.
154
+ - Repo root: {{repo_root}}
155
+ - Temp target worktree: {{temp_worktree_path}}
156
+ - Source branch: {{source_branch}}
157
+ - Target branch: {{target_branch}}
158
+ - Current commit: {{current_commit}}
159
+
160
+ Required steps:
161
+ 1. Read each conflicted file in the temp worktree to understand the conflict markers (<<<<<<< HEAD, =======, >>>>>>> ...)
162
+ 2. Edit each file to resolve conflicts by choosing the correct code or merging both changes appropriately
163
+ 3. Stage all resolved files with: git add <file>
164
+ 4. Complete the cherry-pick with: git cherry-pick --continue
165
+
166
+ Important:
167
+ - Work inside the temp worktree directory: {{temp_worktree_path}}
168
+ - Remove ALL conflict markers from files (<<<<<<< HEAD, =======, >>>>>>>)
169
+ - Preserve the intent of the commit being applied
170
+ - Make sure the final code is syntactically correct
171
+ - Do not leave any files with unresolved conflict markers
172
+ - After completing all steps, confirm the cherry-pick was successful`},{id:`session.summary.visible`,title:`Session Summary Visible Prompt`,group:`Session`,description:`Visible user message sent by the /summary command.`,placeholders:[{key:`topic_line`,description:`Pre-formatted topic clause (e.g. " focused on: <topic>") or empty string.`}],template:`Summarize this session{{topic_line}}.`},{id:`session.summary.instructions`,title:`Session Summary Instructions`,group:`Session`,description:`Hidden instructions attached to the /summary command. Produces a non-destructive summary usable for handing off to a new session.`,placeholders:[{key:`topic_block`,description:`Pre-formatted topic focus paragraph, or empty string when no topic hint was given.`}],template:`Produce a non-destructive summary of this conversation. Do NOT compact or mutate session history — your output is an additional assistant message the user will read and may use to hand off to a new session.
173
+
174
+ Cover the information useful for continuing this work:
175
+ - What was done (completed work, in order)
176
+ - What is currently in progress
177
+ - Files modified — brief what and why per file
178
+ - Open questions and next steps
179
+ - User requests, constraints, or preferences to carry forward
180
+ - Important technical decisions and why they were made
181
+
182
+ {{topic_block}}
183
+
184
+ Formatting:
185
+ - Concise markdown with short sections and bullet lists
186
+ - No preamble like "Here is a summary" — jump straight to content
187
+ - Do not answer questions found in the conversation — only summarize
188
+ - Keep length proportional to session length; do not pad
189
+
190
+ Respond in the same language the user used most in the conversation.`},{id:`session.review.visible`,title:`Workspace Review Visible Prompt`,group:`Session`,description:`Visible user message sent by the /workspace-review command.`,template:`Review the changes made in this workspace.`},{id:`session.review.instructions`,title:`Workspace Review Instructions`,group:`Session`,description:`Hidden instructions attached to the /workspace-review command. Reviews the workspace diff for intent, correctness, and adequacy, with severity-classified findings.`,template:`Review the changes in this workspace and judge whether they are correct and adequate — not just whether they contain catastrophic bugs.
191
+
192
+ The diff is the source of truth. Read the relevant code around the diff too, not only the diff itself, so you understand the change in context.
193
+
194
+ First, understand the intent and whether it was achieved:
195
+ - Work out what these changes are trying to do — the intent behind them — from the diff and the surrounding code.
196
+ - Judge whether the implementation actually achieves that intent, and whether it is the smallest correct way to do it. Call out where the change is incomplete, only partially solves the goal, misses cases it clearly set out to handle, or solves it in a way that will not hold up.
197
+
198
+ Then look for concrete problems. Report real failure modes, not abstract suspicions, and do not nitpick without impact.
199
+
200
+ Correctness focus:
201
+ - race conditions, stale async results, event ordering
202
+ - data loss or failed writes
203
+ - lifecycle and cleanup (listeners, timers, subscriptions, resources)
204
+ - non-transitive comparators or unstable sorting
205
+ - state/store fanout and render performance
206
+ - optimistic state rollback and reconciliation
207
+ - accessibility semantics
208
+ - regressions introduced by the changes
209
+ - missing implementations across affected modules or targets when the diff clearly introduced the gap
210
+ - missing targeted tests for risky or regression-prone changes
211
+ - clear CLAUDE.md or AGENTS.md violations that apply to the changed files
212
+
213
+ Security and supply-chain focus (when the diff touches these):
214
+ - dependencies, build/release/CI scripts
215
+ - auth, tokens, secrets, credentials
216
+ - filesystem boundaries and path traversal
217
+ - shell execution
218
+ - network calls, telemetry, exfiltration
219
+ - IPC, native bridge, updater, desktop shell
220
+ - hidden behavior behind small diffs or broad refactors
221
+
222
+ Do not report:
223
+ - pre-existing issues unrelated to the diff
224
+ - pedantic nitpicks a senior engineer would not flag, or issues a linter would catch
225
+ - subjective style preferences not required by CLAUDE.md or AGENTS.md
226
+ - speculative concerns you cannot tie to a concrete failure
227
+ - rules mentioned in CLAUDE.md or AGENTS.md but explicitly silenced in the code
228
+
229
+ Validation pass:
230
+ - Before reporting an issue, re-check it against the diff plus only the context you actually read.
231
+ - For CLAUDE.md or AGENTS.md violations, verify the rule applies to the affected file path and cite the exact rule.
232
+ - If you cannot tie a finding to a concrete impact, drop it.
233
+
234
+ Classify each finding:
235
+ - blocker: likely regression, data loss, security issue, broken invariant, or a serious correctness problem — or the change does not actually achieve its intent
236
+ - non-blocker: a real but minor issue, a test gap, or a maintainability concern
237
+ - nit: mention only if useful, never treat as blocking
238
+
239
+ This is a review only — do not edit, fix, or commit anything unless the user asks you to.
240
+
241
+ Output:
242
+ - Start with one or two sentences: what the change does and whether it achieves its intent.
243
+ - Then list findings grouped by severity. For each: short title, why it is a real problem, the affected file path, and category (correctness / security / rule violation / adequacy gap).
244
+ - If you find nothing real, say so plainly instead of inventing findings.
245
+
246
+ Keep the review concise and practical. Respond in the same language the user uses.`},{id:`session.reviewHandoff.visible`,title:`Review Handoff Visible Prompt`,group:`Session`,description:`Visible user message sent by the /handoff-review command.`,template:`Prepare a handoff for another agent to review this work.`},{id:`session.reviewHandoff.instructions`,title:`Review Handoff Instructions`,group:`Session`,description:`Hidden instructions attached to the /handoff-review command. Produces a handoff for a separate review agent.`,template:`Produce a review handoff for another agent. Do not compact or mutate session history. Your output is an assistant message that OpenChamber will send to a separate reviewer agent.
247
+
248
+ Include:
249
+ - The user's original intent and any later clarifications that changed the intent
250
+ - What was implemented and why
251
+ - Files changed, with brief purpose per file
252
+ - Important design decisions and tradeoffs
253
+ - Validation/tests run, if known
254
+ - Known gaps, uncertainty, or areas the reviewer should inspect closely
255
+
256
+ Formatting:
257
+ - Concise markdown with clear sections
258
+ - No preamble like "Here is a handoff"
259
+ - Do not mention OpenChamber metadata, linked sessions, session IDs, or routing
260
+ - Respond in the same language the user used most in the conversation`},{id:`session.reviewSession.visible`,title:`Review Session Starter Prompt`,group:`Session`,description:`Visible user message sent to the generated review session.`,placeholders:[{key:`handoff`,description:`The generated implementation handoff.`}],template:`Please review the changes described in this handoff.
261
+
262
+ Focus on correctness, regressions, missing implementation, missing tests, and whether the implementation satisfies the stated intent. Provide concise, actionable feedback for the agent implementing the changes.
263
+
264
+ {{handoff}}`},{id:`session.reviewSessionWithoutHandoff.visible`,title:`Review Session Starter Prompt Without Handoff`,group:`Session`,description:`Visible user message sent to a generated review session when no implementation handoff is generated first.`,template:`Please review the current workspace changes.
265
+
266
+ There is no generated implementation handoff. Infer the likely user intent from the current diff, recent session context if available, changed files, and surrounding code. Judge whether the implementation is correct for that inferred intent, and call out uncertainty explicitly when intent cannot be recovered.
267
+
268
+ Focus on correctness, regressions, missing implementation, missing tests, and whether the implementation is the smallest maintainable way to satisfy the likely goal. Provide concise, actionable feedback for the agent implementing the changes.`},{id:`session.reviewFeedbackToImplementer.visible`,title:`Review Feedback Transfer Prompt`,group:`Session`,description:`Visible user message sent from a review session back to the implementing agent.`,placeholders:[{key:`review_feedback`,description:`Reviewer assistant feedback text.`}],template:`Another agent reviewed your changes and left the feedback below.
269
+
270
+ Please review the feedback, resolve the relevant issues, and explain what you changed.
271
+
272
+ {{review_feedback}}`},{id:`session.implementationResponseToReviewer.visible`,title:`Implementation Response Transfer Prompt`,group:`Session`,description:`Visible user message sent from the implementing agent back to the review session.`,placeholders:[{key:`implementation_response`,description:`Implementing assistant response text.`}],template:`The agent implementing the changes has responded to the previous review feedback.
273
+
274
+ Please review the latest state again and report any remaining issues.
275
+
276
+ {{implementation_response}}`},{id:`session.craftGoal.visible`,title:`Goal Crafting Visible Prompt`,group:`Session`,description:`Visible user message sent by the /craft-goal command.`,placeholders:[{key:`idea_block`,description:`Optional initial task or idea supplied after the command.`}],template:`Help me turn an idea or task into a clear, verifiable Goal.{{idea_block}}`},{id:`session.craftGoal.instructions`,title:`Goal Crafting Instructions`,group:`Session`,description:`Hidden instructions attached to the /craft-goal command. Guides discovery and produces a ready-to-use Goal objective.`,template:`The user wants help turning a task, idea, or desired outcome into a strong Goal for an autonomous, multi-turn working session.
277
+
278
+ A Goal is a persistent completion contract, not an implementation plan and not a larger one-shot prompt. Help the user define what "done" means clearly enough that another agent can work toward it, verify it against evidence, continue through uncertain intermediate steps, and stop honestly when completion is blocked.
279
+
280
+ Run this as a guided dialogue, not a one-shot answer.
281
+
282
+ 1. Start from the user's intent. If the visible message includes an initial idea, use it immediately. Otherwise ask what they want to accomplish. Do not ask them to formulate the Goal themselves.
283
+
284
+ 2. Investigate before asking when context is available. For repository work, inspect relevant code, tests, scripts, documentation, and conventions when that would answer questions or expose constraints. Do not ask for information that can be determined reliably from the workspace.
285
+
286
+ 3. Decide whether a Goal is appropriate. Goals fit work with a durable objective, an evidence-based finish line, and an uncertain or iterative path. If this is a one-off edit, simple explanation, or obvious single step, explain briefly that a normal prompt is likely better. Continue crafting a Goal if the user still wants one.
287
+
288
+ 4. Resolve the Goal contract:
289
+ - Outcome: what must be true when the work is complete.
290
+ - Verification surface: which tests, benchmarks, commands, artifacts, source material, observations, or other evidence prove completion.
291
+ - Constraints: what behavior, quality, compatibility, safety, performance, or scope must remain intact.
292
+ - Boundaries: which files, systems, tools, data, repositories, environments, or resources may or may not be used.
293
+ - Iteration policy: how the working agent should evaluate evidence and choose the next useful action after each attempt.
294
+ - Blocked stop condition: when it should stop, what evidence and attempted paths it should report, and what input would unlock progress.
295
+
296
+ 5. Ask only necessary questions, in batches of at most 3. Prefer concrete, decision-oriented questions. Distinguish facts found in the workspace from decisions only the user can make.
297
+
298
+ 6. Do not over-prescribe the path. Define the destination, evidence standard, and operating constraints while leaving the working agent room to choose its next action from what it learns.
299
+
300
+ 7. Do not invent precision. Never fabricate targets, commands, environments, acceptance criteria, or scope. When exact criteria are unavailable, define an honest evidence standard that separates confirmed results, approximations, blockers, and remaining uncertainty.
301
+
302
+ 8. Do not implement the task. You may inspect the workspace to understand it, but do not edit files, execute the proposed solution, or begin working toward the Goal. This session's deliverable is the Goal itself.
303
+
304
+ 9. Once the contract is resolved, respond in exactly this structure:
305
+
306
+ ## Proposed Goal
307
+
308
+ \`\`\`text
309
+ <one self-contained Goal objective ready to paste into the Goal dialog; do not prefix it with /goal>
310
+ \`\`\`
311
+
312
+ ## Why This Is Verifiable
313
+
314
+ - <brief explanation of the outcome and evidence>
315
+ - <brief explanation of the preserved constraints>
316
+ - <brief explanation of the blocked stop condition>
317
+
318
+ ## Assumptions
319
+
320
+ - <only assumptions that still matter, or "None">
321
+
322
+ The proposed Goal should normally be one compact paragraph. Keep enough operational detail to make completion auditable, but remove conversational history, rationale, repetition, and implementation details that are not part of the completion contract.
323
+
324
+ Do not activate, execute, or claim completion of the proposed Goal. End by inviting the user to revise it or use it in the Goal dialog.
325
+
326
+ Respond in the same language the user uses.`},{id:`session.catchup.visible`,title:`Catch Up Visible Prompt`,group:`Session`,description:`Visible user message sent by the /catch-up command.`,template:`Catch me up on where this project is right now.`},{id:`session.catchup.instructions`,title:`Catch Up Instructions`,group:`Session`,description:`Hidden instructions attached to the /catch-up command. Inspects git state and branches on it: in-progress diff, open PR review state, or recent commits.`,template:`The user is returning to this project after stepping away and wants to quickly get their bearings — a quick, easy-to-digest "here's where you are and where to pick up", not a status report. Investigate the actual repository state first, then orient them conversationally. Do not assume; check.
327
+
328
+ Quietly inspect git state first, and do this work silently — the user wants the takeaway, not a play-by-play of the commands you ran. Look at: the current branch and whether it is the repo's default branch (main/master, or whatever this repo uses), uncommitted changes (status and diff), recent commits, and where the branch stands relative to its remote.
329
+
330
+ Build context in LAYERS — they combine, they are not either/or. Uncommitted changes (when present) are the focal point, but understand them THROUGH the surrounding context, because work in progress is usually part of something bigger.
331
+
332
+ First, get the branch context:
333
+ - If this is NOT the default branch (a feature branch): understand what the branch is for as a whole. Read its recent commits and their diffs — not all of them, just enough, going back until the intent and how it is being implemented become clear. Also check whether the branch has its OWN open pull request, even when there are uncommitted changes — the PR explains what the current diff is in service of (continuing the feature, or addressing review feedback) and helps you judge whether the work looks finished or still mid-flight. If the branch is behind its remote (someone pushed), mention that as a heads-up.
334
+ - If this IS the default branch: take a light skim of the last few commits (no deep dive) to see whether the uncommitted work is a continuation of recent work, and of what.
335
+
336
+ Then focus and synthesize:
337
+ - If there are uncommitted changes, lead with them — what they were doing and why, what looks done versus still in progress, and where they likely stopped — interpreted through the branch context above (is this completing the feature? addressing review? a new direction?). Open with that, e.g. "Looks like you were in the middle of X…".
338
+ - If the tree is clean, orient from the branch's own work and PR (feature branch) or the recent commits (default branch).
339
+
340
+ End with a clear next step, and make it about continuing the actual work, not housekeeping. The fact that they ran this command means they stepped away — if the work were finished they would most likely have shipped it already, so assume there is more to do and point to the substantive next piece ("next you'd wire X into Y and handle Z"). Only suggest housekeeping — pushing, opening a PR, running checks — when there is genuinely nothing left to build, or when it is truly the most useful thing to do next.
341
+
342
+ Hard rules:
343
+ - Only ever discuss the CURRENT branch and its own work. Never mention unrelated branches, other people's PRs, review requests assigned to the user, or PRs that belong to other branches — that is noise here.
344
+ - Use ahead/behind and commit history to understand intent, not as something to dump. Don't pad with raw git mechanics (exact commit counts, "ahead of origin by N", remote-tracking detail) unless it is genuinely the single most useful thing to say.
345
+ - Depth goes into your understanding, not the length of the reply. Keep the output short, easy to digest, and scannable — a couple of sentences of orientation plus a clear next step. Write like a teammate catching them up, not a CI summary.
346
+
347
+ Respond in the same language the user uses.`},{id:`session.debug.visible`,title:`Debugging Visible Prompt`,group:`Session`,description:`Visible user message sent by the /debug command.`,template:`I want to debug an issue.`},{id:`session.debug.instructions`,title:`Debugging Instructions`,group:`Session`,description:`Hidden instructions attached to the /debug command. Runs a guided root-cause investigation before proposing a fix.`,template:`The user wants help debugging an issue. Drive this as a focused root-cause investigation — not a plan, and not an immediate fix.
348
+
349
+ 1. Get the symptom. When the user describes the problem, capture exactly what is observed versus expected — error messages, stack traces, failing behavior, and when it started. If a key detail is missing to even begin, ask for it briefly.
350
+
351
+ 2. Form hypotheses. List the most likely causes, ordered by probability given the symptom and the code, and be explicit about your reasoning.
352
+
353
+ 3. Investigate to confirm or rule out. Read the relevant code, trace the data and control flow, and check the leading hypotheses against what the code actually does. Prefer evidence from the code over speculation.
354
+
355
+ 4. Ask only what you need. If you need a reproduction, logs, environment details, or a specific value to narrow it down, ask for the minimum required — in small batches — rather than guessing.
356
+
357
+ 5. Identify the root cause. Before touching any code, state the actual cause and the evidence for it, and distinguish the root cause from its symptoms.
358
+
359
+ 6. Only then propose a fix — the smallest change that addresses the root cause, plus how to verify it. Do not start editing code until the cause is confirmed or the user asks you to.
360
+
361
+ Respond in the same language the user uses.`},{id:`session.weigh.visible`,title:`Weigh Options Visible Prompt`,group:`Session`,description:`Visible user message sent by the /weigh command.`,template:`Help me decide how to approach this.`},{id:`session.weigh.instructions`,title:`Weigh Options Instructions`,group:`Session`,description:`Hidden instructions attached to the /weigh command. Investigates the code, then compares distinct approaches with trade-offs and a recommendation — no plan, no code.`,template:`The user knows WHAT they want to do but not HOW to approach it. Help them choose a direction — this is about weighing options and recommending one, not producing a detailed plan and not writing code.
362
+
363
+ First, investigate. Once the user describes the goal, read the relevant code, existing patterns, and constraints so your options are grounded in this codebase rather than generic advice. Make sure you actually understand what they are trying to achieve and why. Ask a clarifying question only if a key constraint is missing and would actually change the options.
364
+
365
+ Then lay out 2-3 genuinely distinct approaches — real alternatives, not minor variations of one idea. Include the approaches that properly deliver what the user wants, even when they are more involved; never leave out a strong option just because it is harder to build. For each, cover:
366
+ - what it involves, in a sentence or two
367
+ - how well it actually satisfies the user's goal — does it fully solve it, or only partially?
368
+ - how it fits (or fights) the existing patterns in this codebase
369
+ - trade-offs and consequences: complexity, risk, blast radius, effort, long-term maintainability
370
+ - when it is the right choice
371
+
372
+ Then give a clear recommendation. Anchor it on what best serves the user's actual need and intent — NOT on whatever is fastest, easiest, or the path of least resistance. Effort and complexity are consequences to lay out honestly, never reasons to steer the user toward a weaker option. Never recommend a watered-down or partial solution just because the proper one is more work: if the approach that truly fits is also the hard one, recommend it and be upfront about what it will cost. Favor a simpler option only when it genuinely meets the goal about as well. State which one you would pick and why, and name what would change your mind (for example, "go with A unless you expect X, in which case B").
373
+
374
+ Keep it concrete and scannable. Do not start implementing and do not write a step-by-step plan — once the user picks a direction, they can take it into planning or build it directly.
375
+
376
+ Respond in the same language the user uses.`},{id:`session.explore.visible`,title:`Codebase Tour Visible Prompt`,group:`Session`,description:`Visible user message sent by the /explore command.`,template:`Give me a high-level tour of this codebase.`},{id:`session.explore.instructions`,title:`Codebase Tour Instructions`,group:`Session`,description:`Hidden instructions attached to the /explore command. Investigates the repository and gives a structured orientation rather than a file-by-file dump.`,template:`The user wants to get oriented in this codebase — a high-level tour, as if you were onboarding a new contributor. Investigate first, then explain; do not guess from file or symbol names alone.
377
+
378
+ Explore the actual repository: entry points, the top-level structure, how it is built and run, and the main modules and how they connect. Read enough real code to be accurate.
379
+
380
+ Then give a clear orientation covering:
381
+ - The big picture: what this project is and how it is structured at a high level.
382
+ - Main parts: the key modules, packages, or directories, what each is responsible for, and where they live.
383
+ - How it fits together: the main flow — how a request or action moves through the system, and how the pieces talk to each other.
384
+ - Conventions worth knowing: notable patterns, where shared code, types, and config live, and anything non-obvious a newcomer would trip on.
385
+ - Where to start: a few concrete pointers for finding your way around or making a first change.
386
+
387
+ Keep it a readable orientation, not an exhaustive file-by-file dump — favor the structure and the mental model over listing everything. Lead with the big picture, then drill down. If the user named a specific area, focus the tour there.
388
+
389
+ Respond in the same language the user uses.`},{id:`session.fusion.visible`,title:`Fusion Visible Prompt`,group:`Session`,description:`Visible user message for multi-run fusion sessions.`,template:`Create the best combined answer from the multi-run results.`},{id:`session.fusion.instructions`,title:`Fusion Instructions`,group:`Session`,description:`Hidden instructions used before multi-run source outputs in fusion sessions.`,template:`You are performing fusion over multiple model outputs from the same original task.
390
+
391
+ Goal: produce the strongest possible final answer by combining complementary information, resolving conflicts, removing duplicates, and preserving useful nuance.
392
+
393
+ Use the results below as source material. Do not mention that the inputs were hidden parts. If sources disagree, prefer the most specific, well-supported, and internally consistent answer.
394
+
395
+ --- FUSION INPUTS START ---`}].map(e=>[e.id,e])),zd={"git.commit.generate":{visible:`git.commit.generate.visible`,instructions:`git.commit.generate.instructions`},"git.pr.generate":{visible:`git.pr.generate.visible`,instructions:`git.pr.generate.instructions`}},Bd=null,Vd=null,Hd=(e,t)=>e.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g,(e,n)=>Object.prototype.hasOwnProperty.call(t,n)?t[n]??``:``),Ud=e=>{let t=e?.overrides;if(!t||typeof t!=`object`||Array.isArray(t))return{};let n={};for(let[e,r]of Object.entries(t))typeof r==`string`&&(n[e]=r);for(let[e,t]of Object.entries(zd)){let r=n[e];if(typeof r!=`string`)continue;let i=r.indexOf(`
396
+ `),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},Wd=async()=>Bd||(Vd||=x(Ld,{method:`GET`,headers:{Accept:`application/json`}}).then(async e=>{if(!e.ok)throw Error(`Failed to load magic prompts`);let t=Ud(await e.json().catch(()=>({})));return Bd=t,t}).finally(()=>{Vd=null}),Vd),Gd=e=>{let t=Rd.get(e);if(!t)throw Error(`Unknown magic prompt id: ${e}`);return t},Kd=e=>Gd(e).template,qd=async e=>{let t=(await Wd().catch(()=>({})))[e];return typeof t==`string`?t:Kd(e)},Jd=async(e,t={})=>Hd(await qd(e),t),Yd=async(e,t)=>{let n=await x(`${Ld}/${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 Bd=Ud(r),{version:typeof r?.version==`number`?r.version:1,overrides:Bd}},Xd=async e=>{let t=await x(`${Ld}/${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 Bd=Ud(n),{version:typeof n?.version==`number`?n.version:1,overrides:Bd}},Zd=async()=>{let e=await x(Ld,{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 Bd=Ud(t),{version:typeof t?.version==`number`?t.version:1,overrides:Bd}},Qd=e=>e.filter(e=>e?.type===`text`).map(e=>(e.text||e.content||``).trim()).filter(e=>e.length>0).join(`
397
+ `).replace(/\n\s*\n+/g,`
398
+ `),$d=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),ef=e=>{let t=e?.metadata;return $d(t)?t:{}},tf=e=>{let t=e.openchamber;return $d(t)?t:{}},nf=e=>{let t=tf(ef(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},rf=e=>{let t=tf(ef(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},af=e=>tf(ef(e)).kind===`review`&&!!rf(e),of=(e,t)=>{let n=tf(e);return{...e,openchamber:{...n,reviewSessionID:t}}},sf=(e,t)=>{let n=tf(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},cf=(e,t)=>{let n=tf(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},lf=Ne()(Pe((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:xr(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),uf;(function(e){function t(e,t,n){let r=0,i=e.length-1;for(;r<=i;){let a=Math.floor((r+i)/2),o=n(e[a]);if(o===t)return{found:!0,index:a};o<t?r=a+1:i=a-1}return{found:!1,index:r}}e.search=t})(uf||={});var df=e=>e.type===`user`||e.type===`shell`;function ff(e,t,n){if(!t&&!n)return;let r=t?e.findIndex(e=>e.id===t):-1;if(!t){let t=0;for(let n=e.length-1;n>=0;--n){let i=e[n];if(i.type===`idle`){t=n+1;break}if(df(i)){r=n,t=n+1;break}}let n=e[r];if(n?.type===`shell`&&n.status===`running`)return n.id;let i=e.slice(t).find(e=>e.type===`assistant`||e.type===`compaction`||e.type===`idle`||df(e))?.id;if(!i)throw Error(`Fork live boundary is not yet available`);return i}if(r<0)throw Error(`Fork boundary is not available in authoritative history`);let i=e[r];if(i.type===`user`)return i.id;if(i.type===`shell`)return e[r+1]?.id;for(let t=r+1;t<e.length;t+=1){let n=e[t];if(df(n))return n.id;if(n.type===`idle`)return e[t+1]?.id;if(n.type===`compaction`&&e[t-1]?.finish===`stop`)return n.id}if(n)throw Error(`Fork selected turn is still running`)}async function pf(e,t,n,r,i){if(!n&&!r)return;let a=[],o,s=new Set,c=AbortSignal.timeout(3e4);for(let l=0;l<1e3;l+=1){let l=await e.message.list({sessionID:t,limit:100,...o?{cursor:o}:{order:`desc`}},{signal:c});if(!i())throw Error(`Fork source changed while reading history`);if(a=[...l.data].reverse().concat(a),n?a.some(e=>e.id===n):a.some(e=>df(e)||e.type===`idle`))return ff(a,n,r);if(l.data.length<100||!l.cursor.next){if(!n&&a.length)return ff(a,n,r);break}if(s.has(l.cursor.next))throw Error(`Fork history cursor did not advance`);o=l.cursor.next,s.add(o)}throw Error(`Fork boundary is not available in authoritative history`)}var mf={type:`idle`};function hf(e,t){let n=e.session_interrupt_acknowledged_at?.[t],r=Math.max(e.session_status_observed_at[t]??0,e.session_status_snapshot_at??0);return n!==void 0&&n>=r?n:void 0}function gf(e,t){return hf(e,t)===void 0?e.session_status[t]:mf}function _f(e,t){return hf(e,t)??e.session_status_observed_at[t]}function vf(e,t){return e.session_interrupt_acknowledged_at?.[t]!==void 0&&(e.session_interrupt_acknowledged_at={...e.session_interrupt_acknowledged_at},delete e.session_interrupt_acknowledged_at[t],!0)}function yf(e){let{store:t,sessionID:n,isCurrent:r,request:i}=e,a=t.getState(),o=a.session_execution_version?.[n]??0,s=a.session_status[n]!==void 0,c=a.session_execution_recovery?.[n],l=new AbortController;return new Promise((e,a)=>{let u=!1,d=()=>{},f=()=>{let e=t.getState();return r()&&(e.session_execution_version?.[n]??0)===o&&(!s||e.session_status[n]!==void 0)&&e.session_execution_recovery?.[n]===c},p=(r,i)=>{u||(u=!0,d(),clearTimeout(m),l.abort(),r===`accepted`&&t.setState(e=>({session_interrupt_acknowledged_at:{...e.session_interrupt_acknowledged_at,[n]:Date.now()}})),i===void 0?e(r):a(i))};d=t.subscribe((e,t)=>{if(!f())return p(`superseded`);e.session_status[n]?.type===`idle`&&(e.session_status[n]!==t.session_status[n]||e.session_status_observed_at[n]!==t.session_status_observed_at[n])&&p(`settled`)});let m=setTimeout(()=>p(f()?`unconfirmed`:`superseded`),5e3);try{i(l.signal).then(()=>p(f()?`accepted`:`superseded`),e=>f()?p(`unconfirmed`,e):p(`superseded`))}catch(e){p(`unconfirmed`,e)}})}var bf=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},xf=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=bf(t.parentSessionId),r=bf(t.sessionId);if(!(!n||!r||n===r))return{parentSessionId:n,sessionId:r}},Sf=e=>{let t=[];for(let n of e){if(n?.type!==`tool`||n.tool!==`task`)continue;let e=n.state;if(!e||typeof e!=`object`||Array.isArray(e))continue;let r=e;if(r.status!==`running`)continue;let i=r.metadata,a=xf(i);a&&t.push(a)}return t},Cf=[],wf=(e,t,n)=>{let r=new Map;for(let t of e){if(!t.parentID)continue;let e=r.get(t.parentID)??[];e.push(t.id),r.set(t.parentID,e)}if(n)for(let e of n){let t=r.get(e.parentSessionId)??[];t.push(e.sessionId),r.set(e.parentSessionId,t)}let i=new Set([t]),a=[t];for(let e of a){let t=r.get(e);if(t)for(let e of t)i.has(e)||(i.add(e),a.push(e))}return i},Tf=(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},Ef=(e,t,n,r,i)=>{if(!n)return r;let a=wf(e,n,i);if(a.size===0)return r;let o=new Set,s=[];for(let e of a){let n=t[e];if(n)for(let e of n)o.has(e.id)||(o.add(e.id),s.push(e))}return s.length===0?r:s},Df=`GitHub issue context (JSON)`,Of=`GitHub pull request context (JSON)`,kf=e=>!e||typeof e!=`object`?!1:!!e.synthetic,Af=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>kf(e)),jf=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!kf(e)),n=e=>{if(!kf(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(Df)||n.startsWith(Of)};return t&&e.some(e=>kf(e))?e.filter(e=>!kf(e)||n(e)):e},Mf=new Map,Nf=new Map,Pf=new Map,Ff=e=>{Mf.set(e,(Mf.get(e)??0)+1)},If=e=>(Mf.get(e)??0)>0,Lf=e=>{let t=Mf.get(e)??0;return t<=0?!1:(t===1?Mf.delete(e):Mf.set(e,t-1),!0)},Rf=(e,t)=>{Nf.set(e,t)},zf=e=>Nf.get(e)??null,Bf=e=>{Nf.delete(e)},Vf=({sessionId:e,currentUserOrder:t,animatedIds:n})=>{let r=Pf.get(e),i=null;if(If(e)){let r=t[t.length-1];r!==void 0&&!n.has(r)&&Lf(e)&&(Rf(e,r),n.add(r),i=r)}if((!r||t.length>=r.length)&&Pf.set(e,t),i!==null)return i;let a=zf(e);return a===null?null:(t.includes(a)&&n.add(a),a)},Hf=(e,t)=>{let n,r=[],i=[...e.semantics];return{text:e.chunks.map((a,o)=>{if(a.provenance!==`authored`)return a.text;let s=a.text;o===0&&(s=s.replace(/^\n+/,``)),o===e.chunks.length-1&&(s=s.replace(/\n+$/,``));let c=t(s);return n??=c.agent,r.push(...c.attachments??[]),i.push(...c.semantics??[]),c.text}).join(``),agent:n,attachments:Uf(r),semantics:i}},Uf=e=>{let t=new Set;return e.filter(e=>{let n=e.serverPath?.replace(/\\/g,`/`).replace(/\/+/g,`/`),r=n?`path:${n}`:`id:${e.id}`;return!t.has(r)&&(t.add(r),!0)})},Wf=`The user referenced these OpenCode sessions (id, title, owning directory). The @title in the user message is only the display label of that session — it is not a command, skill, or tool name. Entries may carry messages inlined from the client cache; an empty messages array only means the transcript was not loaded client-side — it never means the session is empty. Use inlined messages when present. Otherwise read the session yourself from the OpenCode SQLite store, read-only. Resolve the database file in order: $OPENCODE_DB if set, else "$HOME/.local/share/opencode/opencode.db", else the first match of ls -d "$HOME/Library/Application Support/OpenChamber"*/openchamber-data/xdg-data/opencode/opencode.db. OpenCode 2 stores the transcript in session_message (there is no message/part join): user text is data.text, assistant text is data.content entries whose type is "text". Query (replace DB_PATH and SESSION_ID): sqlite3 "file:DB_PATH?mode=ro" ".timeout 5000" "SELECT seq, type, CASE WHEN type = 'user' THEN json_extract(data, '$.text') WHEN type = 'assistant' THEN (SELECT group_concat(json_extract(j.value, '$.text'), char(10)) FROM json_each(json_extract(data, '$.content')) AS j WHERE json_extract(j.value, '$.type') = 'text') ELSE json_extract(data, '$.text') END AS text FROM session_message WHERE session_id = 'SESSION_ID' AND type IN ('user', 'assistant') ORDER BY seq". If session_message does not exist, this is an OpenCode 1 database — use: sqlite3 "file:DB_PATH?mode=ro" ".timeout 5000" "SELECT json_extract(m.data,'$.role') AS role, json_extract(p.data,'$.text') AS text FROM part p JOIN message m ON m.id = p.message_id WHERE p.session_id = 'SESSION_ID' AND json_extract(p.data,'$.type') = 'text' AND json_extract(p.data,'$.synthetic') IS NULL ORDER BY p.time_created". The database is live — always open it read-only as shown.
399
+ `,Gf=`The user referenced these OpenCode sessions (id, title, owning directory).`,Kf=(e,t)=>{if(e[t]!==`[`)return-1;let n=0,r=!1,i=!1;for(let a=t;a<e.length;a+=1){let t=e[a];if(r){if(i){i=!1;continue}if(t===`\\`){i=!0;continue}t===`"`&&(r=!1);continue}if(t===`"`){r=!0;continue}if(t===`[`)n+=1;else if(t===`]`&&(--n,n===0))return a}return-1},qf=e=>{let t=e,n=t.indexOf(Gf);for(;n!==-1;){let e=t.indexOf(`[`,n+74),r=e===-1?-1:Kf(t,e),i=r===-1?t.length:r+1,a=t.slice(0,n).replace(/[ \t]*\n*$/,``),o=t.slice(i).replace(/^\n+/,``);t=a.length>0&&o.length>0?`${a}\n${o}`:`${a}${o}`,n=t.indexOf(Gf)}return t},Jf=e=>{if(!e.startsWith(Wf))return[];try{let t=JSON.parse(e.slice(Wf.length));return Array.isArray(t)?t.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;if(typeof t.id!=`string`||typeof t.title!=`string`)return[];let n=typeof t.directory==`string`?t.directory:void 0,r=Array.isArray(t.messages)?t.messages.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return typeof t.role==`string`&&typeof t.text==`string`?[{role:t.role,text:t.text}]:[]}):[];return[{id:t.id,title:t.title,...n===void 0?{}:{directory:n},messages:r}]}):[]}catch{return[]}},Yf=e=>e.length===0?null:e.map(e=>`[skill:${e}]`).join(` `),Xf=(e,t=36e3)=>{if(e.length===0)return null;let n=Wf,r=t-n.length;if(r<2)return n.slice(0,t);let i=e.length+1,a=Math.max(2,Math.floor((r-i)/e.length));return`${n}[${e.map(e=>{let t={id:e.id,title:e.title,messages:[],...e.directory===void 0?{}:{directory:e.directory}};if(JSON.stringify(t).length>a){let e=0,n=t.title.length,r=``;for(;e<=n;){let i=Math.floor((e+n)/2),o=`${t.title.slice(0,i)}...`;JSON.stringify({...t,title:o}).length<=a?(r=o,e=i+1):n=i-1}t.title=r}for(let n of e.messages){let e=[...t.messages,n];if(JSON.stringify({...t,messages:e}).length<=a){t.messages=e;continue}let r=0,i=n.text.length,o=``;for(;r<=i;){let e=Math.floor((r+i)/2),s=`${n.text.slice(0,e)}\n[Message truncated]`,c={...t,messages:[...t.messages,{...n,text:s}]};JSON.stringify(c).length<=a?(o=s,r=e+1):i=e-1}o&&t.messages.push({...n,text:o});break}return JSON.stringify(t)}).join(`,`)}]`},Zf=e=>{let t=[],n=[],r=[],i={session:new Set,skill:new Set,attachment:new Set};for(let a of e)switch(a.type){case`session`:i.session.has(a.sessionId)||(i.session.add(a.sessionId),t.push(a.sessionId));break;case`skill`:i.skill.has(a.skillName)||(i.skill.add(a.skillName),n.push(a.skillName));break;case`attachment`:i.attachment.has(a.attachmentRefID)||(i.attachment.add(a.attachmentRefID),r.push(a.attachmentRefID))}return{sessionIds:t,skillNames:n,attachmentRefIDs:r}},Qf=(e,t)=>{let{sessionIds:n,skillNames:r}=Zf(e),i=n.map(e=>{let n=gt(e,t),r=n?Zt(n).find(t=>t.id===e):void 0,i=n?Jt(e,n).flatMap(e=>{let t=st(e.id,n).filter(e=>e.type===`text`&&!kf(e)).map(e=>`text`in e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(`
400
+ `);return t?[{role:e.role,text:t}]:[]}):[];return{id:e,title:r?.title||e,...n?{directory:n}:{},messages:i}}),a=[],o=Yf(r);o&&a.push({text:o,synthetic:!0});let s=Xf(i);return s&&a.push({text:s,synthetic:!0}),a},$f=50,ep=15e4,tp=e=>{let t=0;for(let n of Object.values(e.partsByMessageID))for(let e of n){let n=e;n.type===`text`&&!kf(n)&&typeof n.text==`string`&&(t+=n.text.length)}return t},np=async(e,t,n)=>{let{sessionIds:r}=Zf(e);if(r.length===0)return;let i=B();if(!i)return;let a=n?.maxPages??$f,o=n?.maxChars??ep;await Promise.all(r.map(async e=>{let n=gt(e,t);if(!n)return;let r=V(n,e),s=i.getTranscript(r);s.messageOrder.length===0&&(await hn(n,e),s=i.getTranscript(r));let c=0;for(;!i.getPagination(r).isComplete&&c<a&&tp(s)<o;)await mr(n,e),s=i.getTranscript(r),c+=1}))},rp=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},ip=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,ap=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},op=e=>e.replace(/\\/g,`/`),sp=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,cp=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}`}`),op(n)}catch{return null}},lp=(e,t)=>{let n=sp(op(e)),r=sp(op(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},up=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),dp=(e,t)=>{let n=op(e),r=sp(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=lp(n,t);if(r!==null){let t=sp(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return up(a)},fp=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},pp=(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},mp=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},hp=async(e,t={})=>{let n=t.createID??Oe,r=t.directory??t.root??null,i=e.filter(e=>!kf(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(e=>qf(ip(e))).filter(e=>e.trim().length>0).join(`
401
+ `),l=[];for(let e of o){let t=mp(e);t&&l.push(t)}for(let e of[...l].reverse())pp(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=A(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=pp(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:`)?cp(t):null;if(o){let e=dp(o,r),t=null;for(let n of e){let e=pp(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=ap(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=ce(s);if(t.startsWith(`data:`)){let e=await fp(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(rp(t)){if(!je(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=oe(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=E(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},gp=async(e,t={})=>{let n=t.createID??Oe,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=E(r,i),o=oe(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=ce(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await fp(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(rp(i)){if(!je(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}},_p=e=>e?JSON.parse(JSON.stringify(e)):null,vp=e=>e?{...e}:{},yp=(e,t=_o.getState())=>{let n=t.getDraft?.(e)??null,r=vp(t.draftAttachmentViews?.[z(e)]);return{record:_p(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},bp=async e=>{let t=e.input??_o.getState(),n=yp(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}},xp=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}}},Sp=async e=>{let t=e.input??_o.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?xp({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},Cp=(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},wp=e=>e?.status===`committed`&&e.current===!0,Tp=new Map,Ep=async(e,t)=>{let n=z(e),r=Tp.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Tp.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Tp.get(n)===o&&Tp.delete(n)}},Dp=(e,t)=>({key:e,addLocal:async n=>{await Ep(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Ep(e,async()=>{let r=t(),i=Cp(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 Ep(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 Ep(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:wp(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Ep(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Ep(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Ep(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Op=4e4,kp=0,Ap=null;function jp(e=Date.now()){kp=e}function Mp(e){return Ap=e,()=>{Ap===e&&(Ap=null)}}function Np(e){Ap?.(e)}function Pp(e=Date.now(),t=Op){return kp<=0?!1:e-kp>=t}var Fp=3e4,Ip=200,Lp=new Map;function Rp(e,t,n){return`${n?.transport??u()}\n${n?.generation??f()}\n${e.trim()}\n${t}`}function zp(e,t,n){if(!e||!t)return!1;let r=Lp.get(Rp(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Fp}function Bp(e,t,n){if(!e||!t)return;let r=Rp(e,t,n);for(Lp.has(r)&&Lp.delete(r);Lp.size>=Ip;){let e=Lp.keys().next().value;if(typeof e!=`string`)break;Lp.delete(e)}Lp.set(r,n?.now??Date.now())}var Vp=768,Hp=()=>{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},Up=()=>{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(pe())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=Vp&&Hp()?`mobile`:`desktop`},Wp=()=>Up()===`mobile`,Gp=3,Kp=2,qp=4,Jp=4,Yp=100,Xp=30;function Zp(){return a()?`relay`:`local`}function Qp(e=Zp()){return e===`relay`?Kp:Gp}function $p(e=Zp()){return e===`relay`?Jp:qp}function em(e){return Qp(rm(e))}function tm(){return Yp}function nm(){return Xp}function rm(e){return e===`relay`||e===`local`?e:Zp()}var im=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function am(){return{pages:[],pageParams:[]}}function om(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 sm(e){return{pages:Object.freeze(e.pages.map(om)),pageParams:Object.freeze([...e.pageParams])}}function cm(e,t,n=im){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 om({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function lm(e){if(!e||e.pages.length===0)return on;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 um(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=lm(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function dm(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function fm(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 om({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:dm(t)}})}function pm(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,d=r===`initial`?mm(e,i):null;if(!e||e.pages.length===0||r===`initial`&&!d)return sm({pages:[fm(`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=[],f=new Set;for(let e of i.records){let t=e.info.id;if(!t||r.has(t)||f.has(t))continue;let n=o.find(e=>e.id===t)??e.info;f.add(t),d.push(n)}for(let e of o)!e?.id||r.has(e.id)||f.has(e.id)||i.records.some(t=>t.info.id===e.id)||(f.add(e.id),d.push(e));let p=e.pages.find(e=>e.messageOrder.length>0)?.messageOrder[0],m=p?o.find(e=>e.id===p):void 0;if(m&&d.some(e=>e.time.created>m.time.created)){let t=new Map(o.map(e=>[e.id,e]));return sm({pages:[fm(`tail`,hm(e.pages.flatMap(e=>e.messageOrder).map(e=>t.get(e)).filter(e=>!!e),d),s,l,u,n.boundary?.loadedTurns??c,a)],pageParams:[null]})}let h=[fm(`history`,d,s,l,u,c,a)],g=[l];for(let r=0;r<e.pages.length;r+=1){let i=e.pages[r],o=[];for(let e of i.messageOrder){let r=n.message[t]?.find(t=>t.id===e)??i.messagesByID[e];r&&o.push(r)}h.push(gm(i,o,s,a)),g.push(e.pageParams[r]??null)}return sm({pages:h,pageParams:g})}let f=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)f.has(n)||f.set(n,t)});let p=e.pages.map(()=>[]),m=e.pages.length-1;for(let e=o.length-1;e>=0;--e){let t=o[e];m=Math.min(m,f.get(t.id)??m),p[m].push(t)}let h=e.pages.map((e,t)=>gm(e,p[t].reverse(),s,a)),g=d??n.boundary;if(h.length>0&&g){let e=h[0],t=g.kind===`has-more`?g.cursor:null,n=g.kind===`exhausted`;(e.cursor!==t||e.complete!==n)&&(h[0]=om({...e,cursor:t,complete:n,sync:{...e.sync,liveRevision:a}}))}return sm({pages:h,pageParams:[...e.pageParams]})}function mm(e,t){if(!e||e.pages.length===0)return null;let n=lm(e);if(n.kind===`unknown`)return null;let r=t.records.find(e=>e.info?.id)?.info.id;return r&&e.pages.some(e=>e.messageOrder.includes(r))?n:null}function hm(e,t){let n=e.slice();for(let e of t){let t=qn(e),r=n.length;for(let e=0;e<n.length;e+=1)if(ir(t,qn(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function gm(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&&_m(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||ym(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:om({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:dm(t)}})}function _m(e,t){return e===t||e.id===t.id&&e===t}function vm(e,t){return e===t?!0:!e||!t||e.id!==t.id||e.type!==t.type?!1:e.type===`compaction`&&t.type===`compaction`?e.status===t.status&&e.reason===t.reason&&e.summary===t.summary&&e.recent===t.recent&&e.error===t.error:e.text===t.text&&e.state===t.state&&e.shellAction===t.shellAction&&e.output===t.output&&e.metadata===t.metadata&&e.time===t.time&&e.url===t.url&&e.slim===t.slim}function ym(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!vm(e[n],t[n]))return!1;return!0}function bm(e){return e.filter(e=>!!e?.id)}function xm(e,t,n){let r=e.properties;if(r){if(typeof r.messageID==`string`)return r.messageID;if(typeof r.assistantMessageID==`string`)return r.assistantMessageID;if(typeof r.info?.id==`string`)return r.info.id;if(typeof r.part?.messageID==`string`)return r.part.messageID;if(typeof r.shell?.id==`string`)return hr(t,n,r.shell.id);if(e.type.startsWith(`session.compaction.`)){if(r.inputID)return r.inputID;let e=t.message[n]??[];for(let n=e.length-1;n>=0;--n){let r=e[n];if(t.part[r.id]?.some(e=>e.type===`compaction`))return r.id}}}}function Sm(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=pm(e??am(),t,{message:n.message,part:s,messages:o,boundary:r},`recovery`,{records:o.map(e=>({info:e,parts:s[e.id]??[]})),complete:r.kind===`exhausted`,cursor:r.kind===`has-more`?r.cursor:void 0,turnCount:0},i);if(e&&e.pages.length>0){let t=new Map,n=new Map;e.pages.forEach((e,r)=>{for(let i of e.messageOrder){t.has(i)||t.set(i,r);let a=e.messagesByID[i];a&&n.set(i,a)}});let r=o.map(e=>{let t=n.get(e.id);return t&&t.id===e.id&&t===e||t&&e.id===t.id&&e===t?t:e}).map(e=>{let t=n.get(e.id);return!t||a.has(e.id)?e:t}),c={};for(let t of r){let n=s[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&&!a.has(t.id)||r&&ym(r,n)?c[t.id]=r:c[t.id]=n}let l=e.pages.map(()=>[]),u=[];for(let e of r){let n=t.get(e.id);n===void 0?u.push(e):l[n].push(e)}return sm({pages:e.pages.map((t,n)=>gm(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function Cm(e,t){let n=um(e,t),r=lm(e),i={message:{...n.message,[t]:[...n.message[t]??[]]},part:{...n.part}};for(let[e,t]of Object.entries(i.part))t&&(i.part[e]=[...t]);return{draft:i,previousBoundary:r}}function wm(e,t,n,r){if(!Yt(n.type))return{data:e,result:{applied:!1,changed:!1}};if(n.type===`session.revert.committed`){let i=typeof n.properties?.to==`string`?n.properties.to:void 0;return i?Mm(e,t,i,r):{data:e,result:{applied:!1,changed:!1}}}let{draft:i,previousBoundary:a}=Cm(e,t),o=lr(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=xm(n,i,t),c=new Set;return s&&c.add(s),{data:Sm(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function Tm(e){let t=new Map;if(!e)return t;for(let n of e.pages)for(let[e,r]of Object.entries(n.partsByMessageID))!t.has(e)&&r&&t.set(e,r);return t}function Em(e){let t=new Map;if(!e)return t;for(let n of e.pages)for(let[e,r]of Object.entries(n.messagesByID))!t.has(e)&&r&&t.set(e,r);return t}function Dm(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Cm(e,t),o=!1,s=0,c,l=new Set,u=Tm(e),d=Em(e),f=i.message[t]??[],p=new Map,m=new Map,h=[],g=e=>{if(p.clear(),m.clear(),h=[],e)for(let t=0;t<e.length;t+=1){let n=e[t];n?.id&&(p.set(n.id,n),m.set(n.id,t),h.push(n.id))}};g(f);let _=h.slice();for(let v=0;v<n.length;v+=1){let y=n[v];if(!Yt(y.type))continue;if(y.type===`session.revert.committed`){let o=typeof y.properties?.to==`string`?y.properties.to:void 0;if(!o)continue;let u=r+s+1,d=Mm(s>0||l.size>0?Sm(e,t,i,a,u,l):e,t,o,u+1),f=n.slice(v+1);if(f.length===0)return{data:d.data,result:{applied:!0,changed:!!(d.result.changed||s>0),materialization:c}};let p=Dm(d.data,t,f,(d.data?.pages[d.data.pages.length-1]?.sync.liveRevision??u)+1);return{data:p.data??d.data,result:{applied:!0,changed:!!(d.result.changed||p.result.changed||s>0),materialization:c??p.result.materialization}}}o=!0;let b=lr(i,y),x=typeof b==`boolean`?b:b.changed,S=typeof b==`boolean`?void 0:b.materialization;if(S&&!c&&(c=S),!x)continue;let C=i.message[t]??[];C!==f&&(f=C,g(C));let w=xm(y,i,t),T=h.length!==_.length||h.some((e,t)=>e!==_[t]),E=T;if(w){let e=i.part[w],t=u.get(w);e&&t&&ym(t,e)?i.part[w]=[...t]:e?(E=!0,u.set(w,e)):t&&(E=!0,u.delete(w));let n=p.get(w),r=d.get(w);if(!(n&&r&&r===n))if(n&&r&&_m(r,n)){let e=m.get(w);e!==void 0&&f[e]&&(f[e]=r,p.set(w,r))}else n?(E=!0,d.set(w,n)):r&&(E=!0,d.delete(w))}else E=!0;if(T){_=h.slice();for(let e of f)e?.id&&!d.has(e.id)&&d.set(e.id,e)}E&&(s+=1,w&&l.add(w))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:Sm(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function Om(e,t,n,r,i){let a=e&&e.pages.length>0?e:sm({pages:[fm(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=um(a,t),s=o.message[t]?[...o.message[t]]:[],c=s.findIndex(e=>e.id===n.id);c<0?s.push(n):s[c]=pn(s[c],n);let l={...o.part,[n.id]:bm(r)};return{data:sm({pages:a.pages.map((e,t)=>t===a.pages.length-1?gm(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}),l,i):e.messagesByID[n.id]?gm(e,e.messageOrder.filter(e=>e!==n.id).map(t=>e.messagesByID[t]).filter(Boolean),l,i):e),pageParams:[...a.pageParams]}),result:{applied:!0,changed:!0}}}function km(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:sm({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 gm(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Am(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=um(e,t),i=Pt({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:lm(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=sm({pages:[fm(`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:lm(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=sm({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?gm(t,hm(r,l),o,a):gm(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:lm(u)}}}function jm(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=um(e,t),a=_t(i,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 a.applied?{data:pm(e,t,{message:a.message,part:a.part,messages:a.messages,boundary:a.boundary},n.purpose,n.page,r),result:{applied:!0,changed:a.changed,boundary:a.boundary,meta:a.meta,confirmedOptimisticIDs:a.confirmedOptimisticIDs}}:{data:e,result:{applied:!1,changed:!1,error:a.error}}}case`sse-event`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return wm(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Dm(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Om(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 km(e,n.messageID,t)}case`durable-seed`:return Am(e,t,n);case`reset`:return n.page?jm(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)}};case`revert-committed`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Mm(e,t,n.to,r+1)}default:return{data:e,result:{applied:!1,changed:!1}}}}function Mm(e,t,n,r){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1},needsAuthorityRecovery:!0};let i=zm(e,t),a=i.messageOrder,o=a.findIndex(e=>e===n),s=lm(e),c=s.kind!==`exhausted`;if(!(o>=0))return c?{data:void 0,result:{applied:!0,changed:!0},needsAuthorityRecovery:!0}:{data:e,result:{applied:!0,changed:!1}};let l=a.slice(0,o);if(l.length===a.length)return{data:e,result:{applied:!0,changed:!1}};let u={},d={};for(let e of l){let t=i.messagesByID[e];if(!t)continue;u[e]=t;let n=i.partsByMessageID[e];n&&(d[e]=n)}let f=l.filter(e=>Ze(u[e],d[e])).length,p=e.pages[0],m=s.kind===`exhausted`||l.length===0;return{data:{pages:[{kind:`tail`,messageOrder:l,messagesByID:u,partsByMessageID:d,cursor:m?null:p?.cursor??null,complete:m,turnCount:f,sync:{liveRevision:r,confirmedHeadMessageID:l.length>0?l[l.length-1]:null}}],pageParams:[null]},result:{applied:!0,changed:!0}}}function Nm(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 Pm(e,t,n,r=`materialize`){return jm(e,n,{type:`http-page`,purpose:r,page:Nm(t),liveRevision:t.sync.liveRevision}).data}function Fm(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return sm(t);if(t.pages.length===e.pages.length){let r=Rm(e,t);return r===e?e:Lm(e,t)?r:jm(e,n,{type:`http-page`,purpose:`materialize`,page:{records:t.pages.flatMap(e=>Nm(e).records),cursor:t.pages[0]?.cursor??void 0,complete:t.pages[0]?.complete??!1,turnCount:t.pages.reduce((e,t)=>e+t.turnCount,0)},liveRevision:Math.max(...t.pages.map(e=>e.sync.liveRevision))}).data??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0],i=jm(e,n,{type:`http-page`,purpose:`prepend`,page:Nm(r),liveRevision:r.sync.liveRevision});return i.data?i.data:e}if(t.pages.length===1&&e.pages.length>1){if(Lm(e,t))return sm(t);let r=t.pages[0];return Pm(e,r,n)??sm(t)}return sm(t)}function Im(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Lm(e,t){let n=Im(e),r=Im(t);if(r.size>=n.size)return!1;if(r.size===0){let n=Math.max(0,...e.pages.map(e=>e.sync.liveRevision));return t.pages.some(e=>e.sync.liveRevision>n)}for(let e of r)if(!n.has(e))return!1;let i=zm(e,``),a=zm(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Rm(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,om(t))});return!n&&e.pageParams.length===t.pageParams.length?e:sm({pages:r,pageParams:[...t.pageParams]})}function zm(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:lm(e),liveRevision:a}}var Bm=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Vm=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Hm=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Um=e=>e.trim(),Wm=e=>e?.trim()||`tail`,Gm=new Set([502,503,504]),Km=[`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 qm(e){if(!e||e instanceof Bm||e instanceof Vm)return!1;if(e instanceof Hm)return e.status>=400&&e.status<500?!1:Gm.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(Gm.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(Gm.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:Km.some(e=>n.includes(e))}function Jm(e,t){return e>=2?!1:qm(t)}var Ym=(e,t=u(),n=f())=>[t,n,`sessionMessages`,`page`,Um(e.directory),e.sessionID,e.limit,Wm(e.before)],Xm=(e,t=u(),n=f())=>[t,n,`session-transcript`,Um(e.directory),e.sessionID];function Zm(e){if(!e||typeof e!=`object`)throw new Vm(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Vm(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Vm(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Vm(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Vm(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Vm(`session message page: cursor must be string when set`);return e}function Qm(e,t){let n=typeof e==`string`?e.trim():``;if(!n||t.complete===!0)return;let r=typeof t.cursor==`string`?t.cursor.trim():``;if(!r)throw new Vm(`session message page: complete=false requires non-empty cursor`);if(r===n)throw new Vm(`session message page: prepend returned the same cursor without progress`)}var $m=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}:{}})},eh=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw new Bm},th=(e,t,n=u(),r={},i=(r.getGeneration??f)())=>{let a=Um(e.directory),o=e.sessionID,s=e.limit,c=e.before?.trim()||void 0;return{queryKey:Ym({directory:a,sessionID:o,limit:s,before:c},n,i),queryFn:async({signal:e})=>{eh(n,i,r);let l=await t({directory:a,sessionID:o,limit:s,before:c,signal:e});eh(n,i,r);let u=Zm(l);return Qm(c,u),$m(u)},staleTime:1/0,gcTime:3e5,retry:Jm,retryDelay:e=>Math.min(500*2**e,4e3)}},nh=(e,t,n=_,r=u(),i={},a=(i.getGeneration??f)())=>n.fetchQuery(th(e,t,r,i,a));function rh(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 $m({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function ah(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function oh(e){let t=Um(e.directory),n=e.sessionID,r=e.transport??u(),i=e.probe??{},a=e.generation??(i.getGeneration??f)(),o=e.initialLimit??Qp(),s=e.historyLimit??$p(),c=e.client??_,l=Xm({directory:t,sessionID:n},r,a),d=async t=>ih(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,...t.before&&e.historyPageSize!==void 0?{pageSize:e.historyPageSize}:{},before:t.before,signal:t.signal}));return{queryKey:l,queryFn:async l=>{eh(r,a,i);let u=l.pageParam?.trim()||void 0,f=u?e.historyPageSize??s:o,p=u?`prepend`:`initial`,m=await nh({directory:t,sessionID:n,limit:f,before:u},d,c,r,i,a);eh(r,a,i);let h=rh(m);return cm(h,p===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:h.records[h.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:ah,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:!1,maxPages:void 0,structuralSharing:(e,t)=>Fm(e,t,n)}}function sh(e){let t=e.client??_,n=oh({...e,client:t}),r={...n,structuralSharing:(t,n)=>Fm(t,n,e.sessionID)},i=new Ar(t,r),a=async()=>{let e=i.getCurrentResult().data;if(e&&e.pages.length>0)return sm(e);let t=await i.refetch(),n=t.data??i.getCurrentResult().data;if(n&&n.pages.length>0)return sm(n);throw t.error??i.getCurrentResult().error??Error(`transcript initial fetch failed`)},o=async()=>{let e=i.getCurrentResult().data;try{let t=await i.fetchPreviousPage({cancelRefetch:!1}),n=i.getCurrentResult(),r=t.data??n.data??e;if(t.isError||n.isFetchPreviousPageError){let e=t.error??n.error??Error(`transcript previous page fetch failed`);throw r&&r.pages.length>0?Object.assign(e instanceof Error?e:Error(String(e)),{retainedPages:sm(r)}):e}if(!r)throw Error(`transcript previous page fetch failed`);return sm(r)}catch(t){let n=i.getCurrentResult().data??e;throw n&&n.pages.length>0?Object.assign(t instanceof Error?t:Error(String(t)),{retainedPages:sm(n)}):t}},s;return{queryKey:n.queryKey,observer:i,ensureInitial:a,fetchPreviousPage:n=>{if(s)return s;if(n!==void 0&&(!Number.isSafeInteger(n)||n<1))return Promise.reject(Error(`history page size must be a positive integer`));if(n!==void 0){let a=oh({...e,client:t,historyPageSize:n});i.setOptions({...r,queryFn:a.queryFn})}return s=o().finally(()=>{n!==void 0&&i.setOptions(r),s=void 0}),s},getData:()=>i.getCurrentResult().data,subscribe:e=>i.subscribe(t=>{e(t.data)}),destroy:()=>{i.destroy()}}}function ch(e,t,n,r){let i=e.getQueryData(t),a=jm(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 lh(e,t=_,n=u(),r=f()){return t.getQueryData(Xm(e,n,r))}function uh(){return Ee()||Wp()}function dh(){return Ee()?4:Wp()?12:40}var fh=1048576,ph=4*fh,mh=32*fh,hh=40*fh;function gh(){return Ee()?ph:Wp()?mh:hh}var _h=e=>e.trim();function vh(e){return{transport:e.transport,generation:e.generation,directory:_h(e.directory),sessionID:e.sessionID}}function yh(e){let t=vh(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function bh(e){return`${e.transport}\n${e.generation}\n${_h(e.directory)}`}var xh={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function Sh(e,t,n){return[t,n,xh.checkpoint,_h(e.directory),e.sessionID]}function Ch(e){let t=vh(e);return[{queryKey:Xm({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,xh.transportPageRoot,xh.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,xh.taskRoot,xh.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,xh.taskRoot,xh.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:Sh({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function wh(){let e=new Map;return{retain(t){let n=vh(t),r=yh(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(yh(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(yh(t))?.count??0},clear(){e.clear()}}}function Th(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Eh=3e4;function Dh(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function Oh(e){return!Array.isArray(e)||e.length<5||e[2]!==xh.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 kh(e){let t=e.client,n=e.activeRegistry??wh(),r=e.counters??Th(),i=e.getLimit??dh,a=e.now??Date.now,o=e.minResidencyMs??Eh,s=new Map,c=new Map,l=e=>{let t=vh(e),n=yh(t),r=c.get(t.sessionID);r||(r=new Map,c.set(t.sessionID,r)),r.set(n,t)},u=e=>{let t=vh(e),n=yh(t),r=c.get(t.sessionID);r&&(r.delete(n),r.size===0&&c.delete(t.sessionID))},d=(e,t)=>{for(let[n,r]of c){for(let[n,i]of r)i.transport===e&&i.generation===t&&r.delete(n);r.size===0&&c.delete(n)}let n=`${e}\n${t}\n`;for(let e of s.keys())e.startsWith(n)&&s.delete(e)};for(let e of t.getQueryCache().getAll()){let t=Oh(e.queryKey);t&&l(t)}let f=t.getQueryCache().subscribe(e=>{if(e.type===`added`||e.type===`updated`){let t=Oh(e.query.queryKey);t&&l(t);return}if(e.type===`removed`){let t=Oh(e.query.queryKey);t&&u(t)}}),p=e=>{let t=yh(vh(e));s.set(t,a())},m=e=>{let t=yh(vh(e)),n=s.get(t);return n!==void 0&&a()-n<o},h=e=>{let r=vh(e);if(n.isRetained(r))return!0;let i=Xm({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},g=e=>{let r=e?.directory===void 0?void 0:_h(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=Oh(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:Dh(a.state.data)})}return i},_=(e,t)=>{let n=c.get(e);if(!n||n.size===0)return[];let r=t?.directory===void 0?void 0:_h(t.directory),i=[];for(let e of n.values())(t?.transport===void 0||e.transport===t.transport)&&(t?.generation===void 0||e.generation===t.generation)&&(r===void 0||e.directory===r)&&i.push(e);return i},v=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},y=e=>{r.purgeSession+=1;let t=vh(e);s.delete(yh(t)),u(t);for(let t of Ch(e))v(t)},b=(e,t)=>{r.purgeGeneration+=1,d(e,t);let n=[[e,t,xh.canonical],[e,t,xh.transportPageRoot,xh.transportPageKind],[e,t,xh.taskRoot],[e,t,xh.checkpoint]];for(let e of n)v({queryKey:e})},x=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>yh(vh(e)))),o=g({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=bh(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let l=[];for(let e of c.values()){for(let t of e){let e=yh(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(yh(e.scope))||m(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,u=0;for(;c>t&&u<i.length&&!(c-1<o);){let e=i[u];u+=1,y(e.scope),l.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:l}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:h,listCanonical:g,listCanonicalScopesForSession:_,purgeSession:y,purgeGeneration:b,enforce:x,destructiveReset:async(e,t)=>{r.destructiveReset+=1,y(e);try{let n=await t();return x({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw y(e),t}},noteScopeObserved:p,dispose:()=>{f(),c.clear(),s.clear()}}}var Ah=new Map,jh=new Set;function Mh(e,t){return`${e}\n${t}`}function Nh(){for(let e of jh)e()}function Ph(e,t){if(!e||!t)return;let n=Mh(e,t),r=Ah.get(n)??0;Ah.set(n,r+1),r===0&&Nh()}function Fh(e,t){if(!e||!t)return;let n=Mh(e,t),r=Ah.get(n);if(r){if(r<=1){Ah.delete(n),Nh();return}Ah.set(n,r-1)}}function Ih(e,t){if(!e)return!1;if(t)return Ah.has(Mh(t,e));let n=`\n${e}`;for(let e of Ah.keys())if(e.endsWith(n))return!0;return!1}function Lh(e){return jh.add(e),()=>{jh.delete(e)}}function Rh(e){let t=e.directory.trim(),n=new Set;for(let r of[...e.viewedSessions??[],...e.viewed?[e.viewed]:[]])r.directory.trim()===t&&n.add(r.sessionID);for(let t of e.busyOrRetrySessionIDs??[])n.add(t);for(let r of e.activeScopes)r.directory.trim()===t&&n.add(r.sessionID);return[...n].map(e=>({directory:t,sessionID:e}))}function zh(e){let t=e.repository,n=e.cacheBudget??t.getCacheBudget?.(),r=e.now??Date.now,i=Math.max(1,e.directoryConcurrency??2),a=()=>({transport:e.probe?.getTransport?.()??e.transport??u(),generation:e.probe?.getGeneration?.()??e.generation??f()}),o=e=>({...a(),...e,directory:e.directory.trim()}),s=e=>JSON.stringify([e.transport,e.generation,e.directory,e.sessionID]),c=0,l=0,d=!1,p=new Set,m=new Map,h=new Map,g=new Map,_=new Map,v=new Set,y=e=>!d&&e.epoch===c&&e.scope.transport===a().transport&&e.scope.generation===a().generation,b=n=>{let a=h.get(n);for(;a?.length&&(g.get(n)??0)<i;){let i=a.shift();if(!y(i)){i.resolve(null);continue}g.set(n,(g.get(n)??0)+1),i.gap&&Ph(n,i.scope.sessionID);let o=()=>{v.delete(o)&&i.gap&&Fh(n,i.scope.sessionID)};v.add(o),(async()=>{try{for(;y(i);){let n=l,a;try{a=t.hasSession?.(i.scope)?await t.refreshFromAuthority(i.scope):await t.ensureInitial(i.scope)}catch(e){if(y(i)&&n!==l)continue;throw e}if(!y(i)){i.resolve(null);return}let o=a.messagesByID[a.messageOrder.at(-1)??``];try{await e.confirmSessionStatus?.(i.scope,{tailOpen:!!(o?.role===`assistant`&&wn(o))})}catch{}if(!y(i)){i.resolve(null);return}if(n===l){p.delete(s(i.scope)),m.set(s(i.scope),r()),i.resolve(a);return}}i.resolve(null)}catch(t){y(i)?(p.add(s(i.scope)),e.onError?.(t,{...i.scope,phase:`native-refresh`}),i.reject(t)):i.resolve(null)}finally{o(),i.epoch===c&&(g.set(n,Math.max(0,(g.get(n)??1)-1)),b(n))}})()}},x=(e,t)=>{let n=o(e),r=s(n),i=_.get(r);if(i)return i;let a,l,u=new Promise((e,t)=>{a=e,l=t}).finally(()=>{_.get(r)===u&&_.delete(r)});_.set(r,u);let d=h.get(n.directory)??[];return d.push({scope:n,gap:t,epoch:c,resolve:a,reject:l}),h.set(n.directory,d),b(n.directory),u},S=()=>{let t=a(),r=n?.listCanonical(t)??[],i=n?.activeRegistry.listRetained()??[],o=[...e.getViewedSessions?.()??[],...e.getViewedSession()?[e.getViewedSession()]:[]],s=new Set([...e.listDirectories(),...r.map(e=>e.scope.directory),...i.map(e=>e.directory),...o.map(e=>e.directory)]),c=[];for(let n of s)c.push(...Rh({directory:n,viewedSessions:o,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(n),activeScopes:[...r.filter(e=>e.active).map(e=>e.scope),...i.filter(e=>e.transport===t.transport&&e.generation===t.generation)]}));return{canonical:r,immediate:c}},C=()=>{let{canonical:e,immediate:t}=S();for(let n of[...e.map(e=>e.scope),...t])p.add(s(o(n)))},w=()=>{c+=1;for(let e of v)e();for(let e of h.values())for(let t of e)t.resolve(null);h.clear(),g.clear(),_.clear(),p.clear(),m.clear()};return{captureCheckpoints:()=>{d||C()},onCompensation(e){if(!(d||!e.isReconnect||e.runtimeGeneration!==a().generation)){l+=1,C();for(let e of S().immediate)x(e,!0).catch(()=>void 0)}},ensureOnObserve(e){if(d)return Promise.resolve(null);let n=o(e),i=s(n),a=_.get(i);if(a)return a;let c=p.has(i);return!c&&(!t.hasSession?.(n)||r()-(m.get(i)??-1/0)<6e4)?Promise.resolve(null):x(n,c)},cancelAll:w,isSessionInFlight:(e,t)=>_.has(s(o({directory:e,sessionID:t}))),destroy(){d=!0,w()}}}var Bh=e=>e.trim(),Vh=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session status runtime changed`)},Hh=(e,t={})=>{let n=Bh(e),r=t.transport??u(),i=t.loadSnapshot??((e,t)=>H.getSessionStatusForDirectory(e,t)),a=t.now??Date.now,o=t.runtimeProbe??{},s=(o.getGeneration??f)();return Pr({queryKey:y.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{Vh(r,s,o);let t=a(),c=await i(n,e);if(Vh(r,s,o),c===null)throw Error(`session status snapshot unavailable`);return{snapshot:c,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},Uh=(e,t={})=>{let{client:n=_,...r}=t;return n.fetchQuery(Hh(e,r))},Wh=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session active runtime changed`)},Gh=(e={})=>{let t=e.transport??u(),n=e.loadActive??(e=>H.getSessionActive(e)),r=e.now??Date.now,i=e.runtimeProbe??{},a=(i.getGeneration??f)();return Pr({queryKey:y.sessionActive.snapshot(t,a),queryFn:async({signal:e})=>{Wh(t,a,i);let o=r(),s=await n(e);return Wh(t,a,i),{result:s,requestedAt:o}},staleTime:0,gcTime:3e5,retry:!1})},Kh=(e={})=>{let{client:t=_,...n}=e;return t.fetchQuery(Gh(n))},qh=I,Jh=(e,t)=>{let n=qh(t);if(!n)return null;let r=null;for(let t of e){let e=qh(t.path);e&&(n!==e&&!n.startsWith(`${e}/`)||(!r||e.length>(qh(r.path)?.length??0))&&(r=t))}return r},Yh=(e,t,n)=>{let r=qh(n);if(!r)return null;let i=null,a=null,o=-1;for(let[e,n]of t.entries())for(let t of n){let n=qh(t.path);n&&(r!==n&&!r.startsWith(`${n}/`)||n.length>o&&(o=n.length,i=t,a=qh(e)))}if(!i)return null;let s=[qh(i.projectDirectory),a].filter(e=>!!e);for(let t of s){let n=e.find(e=>qh(e.path)===t)??null;if(n)return n;let r=Jh(e,t);if(r)return r}return null},Xh=(e,t,n)=>Yh(e,t,n)??Jh(e,n),Zh=``,Qh=new Map,$h=new Map,eg=new Map,tg=-1/0,ng;function rg(){let e=`${u()}:${f()}`;Zh!==e&&(Zh=e,Qh.clear(),$h.clear(),eg.clear(),tg=-1/0,ng=void 0)}var ig=new Set([`session.status`,`session.idle`,`session.error`,`session.step.started`,`session.execution.started`,`session.execution.succeeded`,`session.execution.failed`,`session.execution.interrupted`]),ag=Ne(()=>({statusById:new Map})),og=e=>e===`busy`?`busy`:e===`retry`?`retry`:`idle`,sg=e=>qh(e)??e,cg=(e,t,n)=>{ag.setState(r=>{let i=r.statusById.get(e);if(n===`idle`){if(!i)return r;let t=new Map(r.statusById);return t.delete(e),{statusById:t}}if(i&&i.status===n&&i.directory===t)return r;let a=new Map(r.statusById);return a.set(e,{status:n,directory:t}),{statusById:a}})},lg=(e,t)=>{if(ig.has(t.type)){rg();let e=t.properties;if(e.sessionID&&typeof e.eventSequence==`number`){if(e.eventSequence<=($h.get(e.sessionID)??-1))return;$h.set(e.sessionID,e.eventSequence)}if(e.sessionID&&typeof e.eventCreated==`number`){if(e.eventSequence===void 0&&e.eventCreated<(Qh.get(e.sessionID)??0))return;Qh.set(e.sessionID,e.eventCreated)}e.sessionID&&eg.set(e.sessionID,Date.now())}switch(t.type){case`session.moved`:{let e=t.properties,n=e.sessionID?ag.getState().statusById.get(e.sessionID):void 0;n&&e.sessionID&&e.location?.directory&&cg(e.sessionID,sg(e.location.directory),n.status);return}case`session.status`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;let r=og(n.status?.type);cg(n.sessionID,sg(e),r);return}case`session.idle`:case`session.error`:case`session.execution.succeeded`:case`session.execution.failed`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&cg(n.sessionID,sg(e),`idle`);return}case`session.execution.interrupted`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;if(n.reason===`shutdown`){cg(n.sessionID,sg(e),`busy`);return}cg(n.sessionID,sg(e),`idle`);return}case`session.step.started`:case`session.execution.started`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&cg(n.sessionID,sg(e),`busy`);return}default:return}};function ug(e,t){if(rg(),!(t<tg)&&(t!==tg||e!==ng)){tg=t,ng=e,ag.setState(n=>{let r=new Map(n.statusById),i=!1;for(let n of new Set([...r.keys(),...Object.keys(e)])){if((eg.get(n)??-1/0)>=t)continue;let a=r.get(n);Object.prototype.hasOwnProperty.call(e,n)?a||(r.set(n,{status:`busy`,directory:``}),i=!0):i=r.delete(n)||i}return i?{statusById:r}:n});for(let[e,n]of eg)n<t&&eg.delete(e)}}var dg=(e,t,n)=>{let r=sg(e),i=new Set(n??[]);ag.setState(e=>{let n=!1,a=new Map(e.statusById);for(let[o,s]of e.statusById)(s.directory===r||i.has(o))&&!(o in t)&&(a.delete(o),n=!0);for(let[e,i]of Object.entries(t)){let t=og(i?.type),o=a.get(e);if(t===`idle`){o&&o.directory===r&&(a.delete(e),n=!0);continue}(!o||o.status!==t||o.directory!==r)&&(a.set(e,{status:t,directory:r}),n=!0)}return n?{statusById:a}:e})},fg;function pg(e){fg=e}function mg(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 hg(e,t){return JSON.stringify(e)===JSON.stringify(t)}function gg(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function _g(e,t,n){e.setState(e=>{let r={...e.session_error_at};return delete r[t],{session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n},session_error_at:r}})}function vg(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(_g(e,t,n),!0)}function yg(e,t,n=Date.now()){let r=e.getState().session_status?.[t];return r?.type===`busy`?!1:r?.type===`retry`?vg(e,t,n):(_g(e,t,n),!0)}function bg(e,t,n,r=Date.now(),i){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let a=e.membership,o=t??{},s=new Set([...n,...Object.keys(o)]);if(s.size===0)return{snapshot:null,source:`none`};let c={};for(let e of s){let t=Object.prototype.hasOwnProperty.call(a,e),n=mg(o[e]);if(t){c[e]=n&&gg(n,r)?n:{type:`busy`};continue}if(i?.tailOpenSessionIds?.has(e)&&(n?.type===`retry`||n?.type===`busy`)){c[e]=n;continue}c[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:c,source:`fused`}}function xg(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,l=()=>o??={...a},u=()=>s??={...e.session_status_observed_at},d=()=>c??={...e.session_error_at},f=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(u()[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=mg(t[o]);if(n&&n.type!==`idle`){hg(a[o],n)||(l()[o]=n,i=!0),(n.type===`busy`||n.type===`retry`)&&e.session_error_at?.[o]!==void 0&&(delete d()[o],i=!0),f(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(l()[o]={type:`idle`},i=!0),f(o)}return!o&&!s&&!c?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{},...c?{session_error_at:c}:{}}}),i}function Sg(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Cg(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 Uh(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 Kh({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;l?.state===`supported`&&u!==void 0&&ug(l.membership,u);let g=l?.state===`supported`;if(h===null&&!g)return null;let{snapshot:_,source:v}=bg(l,h,n,Date.now(),{tailOpenSessionIds:r.tailOpenSessionIds});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=Sg(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),xg(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??fg;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 wg({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?.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:Cg(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Tg(e,t){return t?{transport:t,generation:0,directory:e.directory,sessionID:e.sessionID}:{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Eg(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 Dg(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 Og(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(or(e))??Promise.resolve(),r.get(gn(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=or(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=gn(e),i=(r.get(n)??Promise.resolve()).then(t,t);return r.set(n,i.then(()=>void 0,()=>void 0)),i},s=0,c=!1,l=!1,u=[],d=()=>{if(s>0||l||!c)return;c=!1,l=!0;let n=u;u=[];let r=(t.getByteBudget??gh)();e.evictToBytes(r,{protect:t.getProtectScopes?.()??[]}).catch(()=>void 0).then(()=>{l=!1;for(let e of n)e();d()})};return{wait:i,persistSettled:(t,n,r)=>{s+=1;let i=!1;return a(t,async()=>{i=(await e.upsertSettled(t,n,r)).status===`written`}).finally(()=>{--s,i&&(c=!0)}).then(()=>{if(!i){d();return}let e=new Promise(e=>u.push(e));return d(),e})},removeMessage:(t,n)=>a(t,()=>e.removeMessage(t,n)),clearSession:t=>a(t,()=>e.clearSession(t)),clearGeneration:t=>o(t,()=>e.clearGeneration(t))}}var kg=new Map;function Ag(e,t){let n=kg.get(e);if(n)return n;let r=t().finally(()=>{kg.get(e)===r&&kg.delete(e)});return kg.set(e,r),r}var jg=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Mg(e){return Ag(jg(e),e.request)}function Ng(e,t){return`${e}\n${t}`}var Pg=new Map;function Fg(e){return Pg.get(e)}async function Ig(e){return Mg({runtimeKey:Ng(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 Pg.set(r.id,i),{info:Ed(r),parts:i}}})}function Lg(e,t){let n=e.info;return n.role===t||n.clientRole===t}function Rg(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Lg(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 zg(e){if(e.complete){let t=e.records.some(e=>Lg(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=Rg(e.records);if(t.length===0){let t=e.records.some(e=>Lg(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=>Lg(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Bg(e){return e.slim===!0}var Vg=/bearer|token|authorization|password|secret|cookie/i,Hg=new Set([`message.part.delta`]);function Ug(e){return typeof e==`string`&&e.includes(`-`)}var Wg=`openchamber.client-diagnostics.enabled`;function Gg(e){return e===`true`||e!==`false`&&null}function Kg(e){return e.preference===!0||e.preference!==!1&&Ug(e.version)}function qg(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function Jg(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function Yg(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 Xg(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return Vg.test(t)?`redacted-error`:t}function Zg(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)Bg(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function Qg(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)p_(e.messagesByID[n])===!0&&(t+=1);return t}function e_(e){let t=e.transcript?Zg(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:Qg(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}:{},...Xg(e.error??e.request?.error)?{error:Xg(e.error??e.request?.error)}:{},...Yg(e.error)===void 0?{}:{httpStatus:Yg(e.error)}}}function t_(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 n_(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 r_(e){return typeof e==`string`&&Hg.has(e)}function i_(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return r_(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>r_(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;case`revert-committed`:return`purge`;default:return null}}function a_(e){if(e.type===`http-page`)return e.purpose}function o_(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function s_(e){switch(e.type){case`http-page`:return`network`;case`sse-event`:case`sse-event-batch`:return`sse`;case`materialize-snapshots`:return`durable-cache`;default:return}}function c_(e){return e.__openchamberOptimistic===!0}function l_(e){let t=[];for(let n of e){if(n.type!==`text`)continue;let e=typeof n.text==`string`?n.text.trim():``;e&&t.push(e)}let n=t.join(`
402
+ `).trim();if(n)return Vg.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function u_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function d_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var f_=e=>typeof e==`string`&&e.trim().length>0;function p_(e){if(!e||u_(e)!==`assistant`)return;let t=e,n=!f_(t.mode)&&!f_(t.agent),r=!f_(t.modelID)||!f_(t.providerID);return n||r}function m_(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function h_(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)Bg(e)?r+=1:i+=1,c_(e)&&(a=!0);let o=e.messagesByID[t],s=u_(o),c=p_(o),l=s===`user`?l_(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:d_(o),...s?{role:s}:{},...l?{text:l}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function g_(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:m_(e),after:m_(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 __(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:g_(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}:{}}}function v_(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function y_(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function b_(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function x_(e){let t=b_(e.partID),n=b_(e.messageID),r=b_(e.directory),i=b_(e.childSessionID),a=b_(e.toolStatus),o=b_(e.surfaceKind);return{directoryPresent:e.directoryPresent,childSessionPresent:e.childSessionPresent,finalized:e.finalized,backgroundRunning:e.backgroundRunning,effectiveActive:e.effectiveActive,suppressLoading:e.suppressLoading,delegating:e.delegating,childStatus:e.childStatus,parentStatus:e.parentStatus,idleConfirmed:e.idleConfirmed,navigateCapability:e.navigateCapability,...t?{partID:t}:{},...n?{messageID:n}:{},...r?{directory:r}:{},...i?{childSessionID:i}:{},...a?{toolStatus:a}:{},...o?{surfaceKind:o}:{},...e.taskStartedAt===void 0?{}:{taskStartedAt:e.taskStartedAt},...e.statusObservedAt===void 0?{}:{statusObservedAt:e.statusObservedAt},...e.statusSnapshotAt===void 0?{}:{statusSnapshotAt:e.statusSnapshotAt}}}function S_(e){return[e.sessionID,b_(e.partID)??``,e.childSessionPresent?`1`:`0`,b_(e.childSessionID)??``,b_(e.toolStatus)??``,e.finalized?`1`:`0`,e.backgroundRunning?`1`:`0`,e.effectiveActive?`1`:`0`,e.suppressLoading?`1`:`0`,e.delegating?`1`:`0`,e.childStatus,e.parentStatus,e.idleConfirmed?`1`:`0`,e.navigateCapability?`1`:`0`,e.directoryPresent?`1`:`0`,b_(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function C_(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...x_(e)}}function w_(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:y_(e),...x_(e)}}var T_=`openchamber-transcript-diagnostics`,E_=`events`,D_=1,O_=(e,t)=>{try{return e.error??Error(t)}catch{return Error(t)}},k_=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>{try{r(e.error??t?.error??Error(`IndexedDB request failed`))}catch{r(t?.error??Error(`IndexedDB request failed`))}}}),A_=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,D_),i=!1,a=()=>{i||(i=!0,n(O_(r,`IndexedDB open failed`)))};r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(E_)||e.createObjectStore(E_,{autoIncrement:!0})},r.onsuccess=()=>{let e=r.result;if(i){try{e.close()}catch{}return}i=!0,t(e)},r.onerror=a,r.onblocked=a}),j_=(e=T_)=>{let t=null,n=null,r=Promise.resolve(),i=[],a=500,o=0,s=null,c=[],l=()=>{let e=t;if(t=null,n=null,e)try{e.onversionchange=null,e.onclose=null,e.close()}catch{}},u=e=>(e.onversionchange=()=>{l()},e.onclose=()=>{t===e&&(t=null,n=null)},t=e,e),d=()=>t?Promise.resolve(t):n||(n=A_(e).then(e=>(n=null,u(e))).catch(e=>{throw n=null,e}),n),f=e=>{let t=r.then(e,e);return r=t.then(()=>void 0,()=>void 0),t},p=async(e,t)=>{let n=await d(),r;try{r=n.transaction(E_,e)}catch(e){throw l(),e}let i=r.objectStore(E_),a=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{}}),o;try{let e=await t(i);return await a,e}catch(e){o=e;try{r.abort()}catch{}try{await a}catch(e){o===void 0&&(o=e)}throw l(),o}},m=e=>{for(let t of e)t.resolve()},h=(e,t)=>{for(let n of e)n.reject(t)},g=e=>{if(i.length<=e)return;let t=i.splice(0,i.length-e);m(t)},_=async(e,t)=>{e.length!==0&&await p(`readwrite`,async n=>{for(let t of e)await k_(n.add(t),n.transaction);let r=await k_(n.getAllKeys(),n.transaction),i=r.length-t;if(i>0)for(let e of r.slice(0,i))await k_(n.delete(e),n.transaction)})},v=()=>c.length===0?1/0:Math.min(...c),y=async()=>{if(i.length===0)return!1;let e=v(),t=i.filter(t=>t.seq<=e);if(t.length===0)return!1;i=i.filter(t=>t.seq>e);let n=a;try{return await _(t.map(e=>e.event),n),m(t),!0}catch(e){throw i=t.map(e=>({seq:e.seq,event:e.event,resolve:()=>{},reject:()=>{}})).concat(i),g(n),h(t,e),e}},b=async e=>{if(i.length===0)return;let t=i.filter(t=>t.seq<=e);if(t.length===0)return;i=i.filter(t=>t.seq>e);let n=a;try{await _(t.map(e=>e.event),n),m(t)}catch(e){throw i=t.map(e=>({seq:e.seq,event:e.event,resolve:()=>{},reject:()=>{}})).concat(i),g(n),h(t,e),e}},x=()=>{s||=f(async()=>{let e=!1;try{e=await y()}finally{s=null}e&&i.length>0&&x()}).then(()=>void 0,()=>{s=null})};return{append(e,t){return a=t,new Promise((n,r)=>{i.push({seq:++o,event:e,resolve:n,reject:r}),g(t),x()})},read(){let e=o;return c.push(e),f(async()=>{try{return await b(e),await p(`readonly`,e=>k_(e.getAll(),e.transaction))}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})},clear(){let e=o;return c.push(e),f(async()=>{try{let t=[],n=[];for(let r of i)r.seq<=e?n.push(r):t.push(r);i=t,m(n),await p(`readwrite`,async e=>{await k_(e.clear(),e.transaction)})}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})}}};function M_(e={}){let t=e.driver??j_(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var N_=Lr(`OpenChamberMedia`);function P_(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function F_(){return Hn()&&Rr!==void 0&&Rr.isPluginAvailable(`OpenChamberMedia`)}function I_(){return`2.1.10-beta.13`}function L_(){if(typeof localStorage>`u`)return null;try{return Gg(localStorage.getItem(Wg))}catch{return null}}function R_(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(Wg,e?`true`:`false`)}catch{}}function z_(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var B_;function V_(e=I_()){return Kg({version:e,preference:L_()})}function H_(e={}){return n_({sink:z_()===`indexeddb`?(e.createIndexedDBSink??M_)():(e.createMemorySink??t_)(),isEnabled:e.isEnabled??V_})}function U_(){return B_??=H_(),B_}function W_(e){U_().record(e)}function G_(e){try{return V_()?h_(e()):void 0}catch{return}}function K_(e){try{W_(__(e))}catch{}}function q_(e){try{W_(C_(e))}catch{}}function J_(e){try{W_(w_(e))}catch{}}function Y_(e){if(e!==void 0)return typeof e==`function`?e():e}function X_(e){return!i_(e.command)||e.changed===!1&&(e.command.type===`sse-event`||e.command.type===`sse-event-batch`)?!1:(e.isEnabled??(()=>U_().isEnabled()))()}function Z_(e){if(!X_(e))return;let t=i_(e.command);t&&W_(e_({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:Y_(e.transcript),request:Y_(e.request),hydration:Y_(e.hydration),command:e.command.type,purpose:a_(e.command),sseType:o_(e.command),source:s_(e.command),error:e.error}))}async function Q_(){let e=await U_().exportReport(),t=b()?.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 $_(e,t=qg()){if(F_())return(await N_.saveFile({dataBase64:P_(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 ev(){let e=await Q_(),t=qg();return{content:e,fileName:t,outcome:await $_(e,t),eventCount:Jg(e)}}function tv(e){return e.trim()}function nv(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??u)(),r=e.generation??t.generation??(t.probe?.getGeneration??f)();return{directory:tv(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function G(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function rv(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:on,liveRevision:0}}function iv(e,t){if(!e||e.pages.length===0)return rv(t);let n=zm(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function av(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function ov(e,t,n){let r=new Set,i=new Set([...Object.keys(e),...Object.keys(t),...n.messageOrder,...Object.keys(n.messagesByID),...Object.keys(n.partsByMessageID)]);for(let a of i)e[a]!==n.messagesByID[a]&&r.add(a),t[a]!==n.partsByMessageID[a]&&r.add(a);for(let e of n.messageOrder)av(n.partsByMessageID[e])&&r.add(e);return r}function sv(e){let t=[];for(let n of e.messageOrder){let r=e.messagesByID[n];r?.id&&t.push({info:r,parts:[...e.partsByMessageID[n]??[]]})}return t}function cv(e){let t=[];for(let n of e.records)n.info?.id&&t.push({info:n.info,parts:[...n.parts??[]]});return t}function lv(e,t){let n=[];for(let r of e.messageOrder)t.has(r)||av(e.partsByMessageID[r])||n.push(r);return n}function uv(e={}){let t=e.client??_,n=e.cacheBudget??kh({client:t,activeRegistry:e.activeRegistry??wh()}),r=n.activeRegistry,i=new Map,a=new Map,o=new Map,s=new Map,c=new Map,p=t=>Tg(t,e.durablePartition?.()),m=t=>e.durablePartition&&!_e(t)?null:p(t),h=e.durableStore?Og(e.durableStore,{getProtectScopes:()=>r.listRetained().map(e=>p(e)),getByteBudget:e.getDurableByteBudget}):void 0,g=e.contentSearchStore?Og(e.contentSearchStore,{getByteBudget:()=>33554432}):void 0,v=new Map,y=new Map,b=new Map,x=new Map,S=new Map,C=new Set,w=new Map,T=new Set,E=new Set,D=new Map,O=new Set,k=new Map,A=e=>D.get(e)??0,ee=e=>{let t=A(e)+1;return D.set(e,t),t},j=e=>{let t=A(e);return k.set(e,t),t},te=(e,t)=>A(e)===t,M=(e,t)=>{let n=G(t);if(T.has(n))return;let r=F(e);!yr(r)&&!w.has(n)||(T.add(n),W_(e_({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},ne=0,re=e=>{let t=c.get(e);return t||(t={messages:new Map,parts:new Map},c.set(e,t)),t},N=n=>{let r=nv(n,e);return lh({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},ie=t=>{let n=nv(t,e);return Xm({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},ae=t=>{let n=nv(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},oe=e=>{let t=ae(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},se=n=>{let r=e.probe??{getTransport:u,getGeneration:f},a=nv(n,{...e,transport:void 0,generation:void 0,probe:r}),o=G(a),s=i.get(o);if(s)return s;let c=e.fetcher;if(!c)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=sh({directory:a.directory,sessionID:a.sessionID,fetcher:async e=>{if(!e.before)return c(e);let t=A(o),n=await c(e);if(!te(o,t))throw new Bm(`read_epoch_retired`);return n},transport:a.transport,generation:a.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return i.set(o,l),l},P=t=>{let n=G(nv(t,e)),r=a.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},ce=n=>{let r=G(nv(n,e));if(o.has(r))return;let i=ie(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]&&P(n)});o.set(r,a)},le=e=>{let t=a.get(e);if(t&&t.size>0)return;let n=o.get(e);n&&(n(),o.delete(e)),a.delete(e)},ue=(e,t)=>{let n=re(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},de=(e,t)=>{let n=re(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)},F=t=>{let n=nv(t,e),r=G(n),i=N(t),a=re(r);if(a.hasTranscriptCache&&a.cachedFrom===i&&a.transcript)return a.transcript;a.cachedFrom!==i&&(a.messages.clear(),a.parts.clear(),a.pagination=void 0);let o=iv(i,n.sessionID),s=ue(r,o);return a.cachedFrom=i,a.hasTranscriptCache=!0,s},fe=(e,t)=>`${G(e)}\n${t}`,pe=(e,t)=>{let n=G(e),r=S.get(n);r&&(r.delete(t),r.size===0&&S.delete(n))},I=e=>{for(let t of S.keys())(t===e||t.startsWith(e))&&S.delete(t)},L=e=>{for(let t of b.keys())t.startsWith(e)&&b.delete(t);for(let t of x.keys())t.startsWith(e)&&x.delete(t)},me=e=>{for(let t of w.keys())(t===e||t.startsWith(e))&&w.delete(t);for(let t of[...T])(t===e||t.startsWith(e))&&T.delete(t);for(let t of E)(t===e||t.startsWith(e))&&E.delete(t)},he=e=>{let t=`${G(e)}\n`;for(let[e,n]of b)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of x.keys())if(e.startsWith(t))return!0;return!1},ge=!1,_e=t=>{let n=nv({directory:t.directory,sessionID:t.sessionID},e);return!ge&&n.transport===t.transport&&n.generation===t.generation},ve=(e,t,n,r=h)=>{if(!r||r===h&&!d())return;let i=m(e);i&&r.persistSettled(i,t,n??[])},ye=(e,t,n,r,i=h)=>{if(!i||i===h&&ne>0||i===h&&!d()||!r.applied||!r.changed)return;let a=m(t);if(a){if(n.type===`remove-message`){i.removeMessage(a,n.messageID);return}if(n.type===`reset`||n.type===`revert-committed`){if(i.clearSession(a),n.type===`reset`&&n.page){let r=F(e);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;ve(t,n,r.partsByMessageID[e.info.id]??e.parts,i)}}else if(n.type===`revert-committed`){let n=F(e);for(let e of n.messageOrder){let r=n.messagesByID[e];r&&ve(t,r,n.partsByMessageID[e],i)}}return}if(n.type!==`optimistic-add`&&n.type!==`optimistic-confirm`&&n.type!==`optimistic-remove`){if(n.type===`sse-event`||n.type===`sse-event-batch`){let r=n.type===`sse-event`?[n.event]:n.events,o=F(e);for(let e of r){let n=Dg(e);if(n.action===`remove`){i.removeMessage(a,n.messageID);continue}if(n.action===`skip`)continue;let r=o.messagesByID[n.messageID];r&&ve(t,r,o.partsByMessageID[n.messageID],i)}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=F(e),a=n.type===`http-page`?n.page.records:n.records;for(let e of a){let n=r.messagesByID[e.info.id];n&&ve(t,n,r.partsByMessageID[e.info.id],i)}}}}},be=(e,t)=>{if(!g||!_e(t))return;let n=F(e);for(let e of n.messageOrder){let r=n.messagesByID[e];r&&ve(t,r,n.partsByMessageID[e],g)}},xe=(e,t,n)=>{if(!h||ne>0||!_e(t))return;let r=F(e);for(let e of r.messageOrder){if(n?.has(e))continue;let i=r.messagesByID[e];i&&ve(t,i,r.partsByMessageID[e])}},Se=async n=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let r=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}},i=e.probe??{getTransport:u,getGeneration:f};return Eg(await nh({directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??Qp()},r,t,n.transport,i,n.generation))},Ce=(e,t)=>{for(let n of t){let t=`${e.directory}\n${e.sessionID}\n${n}`;tt(t,()=>R.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)}},we=(e,t)=>{let r=G(t),i=y.get(r);if(i)return i;let a=l(),o=j(r),s=(async()=>{let i=Date.now();v.set(r,{status:`loading`});try{let i=await Se(t);if(!_e(t)||l()!==a||!te(r,o))return v.delete(r),R.getTranscript(e);R.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Bp(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let s=S.get(r);if(s&&s.size>0){let n=[],r=0;for(let a of i.records){let i=a.info.id;if(!i||!s.has(i))continue;let o=R.getParts(e,i),c=R.getMessage(e,i)??a.info;if(!Gt(o,c)){pe(t,i),b.set(fe(t,i),{status:`ready`}),r+=1;continue}n.push(i)}r>0&&P(e),Ce(e,n)}return v.delete(r),n.noteScopeObserved(ae(e)),oe(e),R.getTranscript(e)}catch(n){if(n instanceof Bm||!_e(t))return v.delete(r),R.getTranscript(e);throw v.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),W_(e_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:F(e),request:R.getRequestState?.(e),hydration:R.getHydrationState?.(e),error:n})),n}finally{y.delete(r)}})();return y.set(r,s),s},Te=new Map,Ee=(e,t)=>{let r=G(t),i=y.get(r);if(i)return i;let a=l(),o=j(r),s=(async()=>{let i=Date.now();v.set(r,{status:`loading`});try{return await R.refreshFromAuthority(e),!_e(t)||l()!==a||!te(r,o)?(v.delete(r),R.getTranscript(e)):(Bp(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),v.delete(r),n.noteScopeObserved(ae(e)),oe(e),R.getTranscript(e))}catch(n){return v.delete(r),n instanceof Bm||!_e(t)||W_(e_({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:F(e),request:R.getRequestState?.(e),hydration:R.getHydrationState?.(e),error:n})),R.getTranscript(e)}finally{y.delete(r)}})();return y.set(r,s),s},De=t=>{let n=N(t);return!n||n.pages.length===0||C.has(G(nv(t,e)))?!0:lm(n).kind===`unknown`},R={getTranscript(e){return F(e)},getPagination(t){let n=nv(t,e),r=G(n),i=R.getTranscript(t);return de(r,Qt(n.sessionID,i.boundary))},getRequestState(t){let n=nv(t,e),r=v.get(G(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 a=i.get(G(n));if(!a){let e=N(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=a.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=nv(t,e),r=G(n),i=R.getTranscript(t);yr(i)&&w.set(r,!0);let a=w.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:it({p0Satisfied:a,prependActive:E.has(r),materializeActive:he(n),earlierHistoryLoaded:zt(i)>1})}},hasSession(e){return N(e)!==void 0},getMessage(t,n){let r=G(nv(t,e)),i=re(r),a=R.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=G(nv(t,e)),i=re(r),a=R.getTranscript(t).partsByMessageID[n]??dv,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=nv(t,e),i=b.get(fe(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!R.getMessage(t,n)||S.get(G(r))?.has(n)||ct(R.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=nv(t,e),i=l(),a=fe(r,n),o=G_(()=>R.getTranscript(t)),s=e=>{try{let t=G_(e);if(!o||!t)return;K_({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:o,after:t})}catch{}},c=x.get(a);if(c)return c.then(e=>s(()=>e)).catch(()=>void 0),c;let u=(async()=>{try{if(!R.getMessage(t,n))return b.set(a,{status:`idle`}),R.getTranscript(t);if(!ct(R.getParts(t,n))&&!S.get(G(r))?.has(n))return b.set(a,{status:`ready`}),R.getTranscript(t);b.set(a,{status:`loading`}),P(t);try{let o=await Ig({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??[]]}}}let t=await H.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n}),i=Pn(r.sessionID,t);if(!i?.info?.id)throw Error(`session.message failed: empty response`);return{data:{info:i.info,parts:[...i.parts??[]]}}}});return!_e(r)||l()!==i?(b.delete(a),R.getTranscript(t)):(R.apply(t,{type:`materialize-snapshots`,records:[{info:o.info,parts:o.parts??[]}]}),ct(R.getParts(t,n))?b.set(a,{status:`error`,error:`session.message failed: slim parts remain`}):b.set(a,{status:`ready`}),P(t),R.getTranscript(t))}catch(e){if(!_e(r)||l()!==i)return b.delete(a),R.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return b.set(a,{status:`error`,error:n}),P(t),R.getTranscript(t)}}finally{pe(r,n)}})();return x.set(a,u),u.then(e=>s(()=>e)).catch(()=>void 0),u.finally(()=>{x.get(a)===u&&x.delete(a)}),u},apply(r,a){let o=nv(r,e),s=ie(r),c=(()=>{switch(a.type){case`http-page`:{let e=G(o),n=k.get(e);if(typeof n==`number`&&!te(e,n))return{applied:!1,changed:!1,error:`stale-read-epoch`};let i=ch(t,s,o.sessionID,{type:`http-page`,purpose:a.purpose,page:a.page,capturedLiveRevision:a.capturedLiveRevision,liveRevision:a.liveRevision,skipPartTypes:a.skipPartTypes,optimistic:a.optimistic});return i.result.applied&&C.delete(e),i.result.changed&&(P(r),oe(r)),i.result}case`sse-event`:{if(a.event.type===`session.revert.committed`){let e=typeof a.event.properties?.to==`string`?a.event.properties.to:void 0;return e?R.apply(r,{type:`revert-committed`,to:e}):{applied:!1,changed:!1}}let e=ch(t,s,o.sessionID,{type:`sse-event`,event:a.event});return e.result.applied&&C.delete(G(o)),e.result.changed&&P(r),e.result}case`sse-event-batch`:{let e=a.events,n=!1,i=!1,c=[],l=()=>{if(c.length===0)return;let e=ch(t,s,o.sessionID,{type:`sse-event-batch`,events:c});c=[],e.result.applied&&(i=!0,C.delete(G(o))),e.result.changed&&(n=!0,P(r))};for(let t of e){if(t.type===`session.revert.committed`){l();let e=typeof t.properties?.to==`string`?t.properties.to:void 0;if(!e)continue;let a=R.apply(r,{type:`revert-committed`,to:e});a.applied&&(i=!0),a.changed&&(n=!0);continue}c.push(t)}return l(),{applied:i,changed:n}}case`optimistic-add`:{e.setOptimisticShadow?.({directory:o.directory,sessionID:o.sessionID,message:a.message,parts:a.parts});let n=ch(t,s,o.sessionID,{type:`optimistic-add`,message:a.message,parts:a.parts});return n.result.changed&&P(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:o.directory,sessionID:o.sessionID,messageID:a.messageID}),ch(t,s,o.sessionID,{type:`optimistic-confirm`,messageID:a.messageID}).result;case`optimistic-remove`:{e.clearOptimisticShadow?.({directory:o.directory,sessionID:o.sessionID,messageID:a.messageID});let n=ch(t,s,o.sessionID,{type:`optimistic-remove`,messageID:a.messageID});return n.result.changed&&P(r),n.result}case`reset`:{if(E.delete(G(o)),S.delete(G(o)),C.delete(G(o)),n.purgeSession(ae(r)),!a.page)return P(r),{applied:!0,changed:!0};let e=ch(t,s,o.sessionID,{type:`reset`,page:a.page,capturedLiveRevision:a.capturedLiveRevision,liveRevision:a.liveRevision,skipPartTypes:a.skipPartTypes});return(e.result.changed||e.result.applied)&&(P(r),oe(r)),e.result}case`materialize-snapshots`:return fv(t,s,o.sessionID,a,()=>P(r));case`remove-message`:{let e=ch(t,s,o.sessionID,{type:`optimistic-remove`,messageID:a.messageID});return e.result.changed&&P(r),e.result}case`revert-committed`:{let c=G(o),l=`${c}\n${a.to}`;if(O.has(l))return{applied:!0,changed:!1};O.add(l),O.size>256&&O.delete(O.values().next().value),ee(c),y.delete(c),v.delete(c),E.delete(c),i.delete(c),L(`${c}\n`);let u=ch(t,s,o.sessionID,{type:`revert-committed`,to:a.to});if(u.needsAuthorityRecovery){n.purgeSession(ae(r)),C.delete(c),S.delete(c);let t=m(o);return e.durableStore&&t&&e.durableStore.clearSession(t).catch(()=>void 0),P(r),e.fetcher&&R.ensureInitial(r).catch(()=>void 0),{applied:!0,changed:!0}}return u.result.applied&&C.delete(c),u.result.changed&&(P(r),oe(r)),{applied:!0,changed:u.result.changed}}default:return{applied:!1,changed:!1}}})();return ye(r,o,a,c),g&&ye(r,o,a,c,g),c.applied&&(Z_({directory:o.directory,sessionID:o.sessionID,transport:o.transport,generation:o.generation,command:a,transcript:()=>R.getTranscript(r),request:()=>R.getRequestState?.(r),hydration:()=>R.getHydrationState?.(r),error:c.error,changed:c.changed}),M(r,o)),c},subscribe(t,i){let o=G(nv(t,e)),c=a.get(o);if(!c){c=new Set,a.set(o,c);let e=ae(t);s.set(o,r.retain(e)),n.noteScopeObserved(e)}return c.add(i),ce(t),()=>{let e=a.get(o);if(e){if(e.delete(i),e.size===0){let e=s.get(o);e&&(e(),s.delete(o))}le(o)}}},async ensureInitial(t){let a=nv(t,e),o=l(),s=G(a),u=p(a);if(h&&await h.wait(u),l()!==o)return R.getTranscript(t);if(N(t)===void 0&&e.durableStore&&d())try{let n=await e.durableStore.readSession(u);if(_e(a)&&l()===o&&N(t)===void 0&&n.records.length>0){ne+=1;try{R.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)Gt(t.parts,t.info)&&e.add(t.info.id);e.size>0&&S.set(s,e),C.add(s)}finally{--ne}}}catch(e){W_(e_({kind:`request-error`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(l()!==o)return R.getTranscript(t);if(De(t)&&N(t)!==void 0){let e=Date.now(),n=await we(t,a);return be(t,a),W_(e_({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:R.getRequestState?.(t),hydration:R.getHydrationState?.(t)})),M(t,a),n}let f=N(t);if(f&&f.pages.length>0&&!De(t)&&e.fetcher&&!r.isRetained(ae(t))){let e=Date.now(),n=await Ee(t,a);return be(t,a),W_(e_({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:R.getRequestState?.(t),hydration:R.getHydrationState?.(t)})),M(t,a),n}let m=se(t),g=Date.now(),_=N(t)!==void 0;v.delete(s);try{await m.ensureInitial()}catch(e){if(l()!==o)return R.getTranscript(t);throw W_(e_({kind:`request-error`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:_?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-g,transcript:F(t),request:R.getRequestState?.(t),hydration:R.getHydrationState?.(t),error:e})),e}if(l()!==o)return i.get(s)===m&&(n.purgeSession(ae(t)),c.delete(s),P(t)),R.getTranscript(t);v.delete(s),_||Bp(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(ae(t)),oe(t);let y=R.getTranscript(t);return xe(t,a),be(t,a),W_(e_({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:_?`query-cache`:`network`,durationMs:Date.now()-g,transcript:y,request:R.getRequestState?.(t),hydration:R.getHydrationState?.(t)})),M(t,a),y},async fetchPreviousPage(n,r){if(De(n)&&await R.ensureInitial(n),lm(N(n)).kind!==`has-more`)return R.getTranscript(n);let i=nv(n,e),a=G(i),o=j(a);E.add(a),P(n);let s=Date.now(),c=new Set(R.getTranscript(n).messageOrder);try{if(await se(n).fetchPreviousPage(r),!te(a,o))return R.getTranscript(n);oe(n);let e=R.getTranscript(n);return xe(n,i,c),be(n,i),W_(e_({kind:`http-page`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-s,purpose:`prepend`,command:`http-page`,transcript:e,request:R.getRequestState?.(n),hydration:R.getHydrationState?.(n)})),e}catch(e){if(!te(a,o)){let e=N(n);return e&&t.setQueryData(ie(n),e),R.getTranscript(n)}throw W_(e_({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-s,purpose:`prepend`,error:e})),e}finally{E.delete(a),P(n)}},getController(t){let n=nv(t,e);return i.get(G(n))},getCacheBudget(){return n},async refreshFromAuthority(r){let i=e.fetcher;if(!i)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let a=nv(r,e),o=G(a),s=j(o),c=`${o}\n${s}\n${l()}`,u=Te.get(c);if(u)return u;let d=(async()=>{let c=l(),u=G_(()=>R.getTranscript(r)),d=R.getTranscript(r),f={...d.messagesByID},p={...d.partsByMessageID},m=await i({directory:a.directory,sessionID:a.sessionID,limit:e.initialLimit??Qp(),signal:new AbortController().signal});if(l()!==c||!te(o,s))return R.getTranscript(r);if(!_e(a))return R.getTranscript({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation});let h=R.getTranscript(r),g=ov(f,p,h),_=(m.coverageMessageIDs??m.records.map(e=>e.info.id)).some(e=>h.messagesByID[e]!==void 0),v=He({fetched:cv(m),previous:sv(h),touched:g,coverageMessageIDs:m.coverageMessageIDs,completeTail:m.complete===!0}),y=h.liveRevision;R.apply(r,{type:`http-page`,purpose:`reconcile-page`,page:{records:v.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:y,liveRevision:y});let b=new Set(v.map(e=>e.info.id)),x=lv(R.getTranscript(r),b);for(let t of x)R.apply(r,{type:`remove-message`,messageID:t}),e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:t});if(h.boundary.kind===`unknown`||!m.complete&&!_){let e=N(r);e?.pages.length&&(t.setQueryData(ie(r),{...e,pages:e.pages.map((e,t)=>t===0?{...e,cursor:m.complete?null:m.cursor??null,complete:m.complete}:e)}),P(r))}let S=R.getTranscript(r);Bp(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(ae(r)),jn(a.sessionID,S.messageOrder);try{let e=G_(()=>S);u&&e&&K_({trigger:`user-refresh`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,purpose:`refresh-from-authority`,before:u,after:e})}catch{}return S})();Te.set(c,d);try{return await d}finally{Te.get(c)===d&&Te.delete(c)}},async destructiveReset(t){let r=m(nv(t,e));r&&await g?.clearSession(r);let a=G_(()=>R.getTranscript(t)),o=ae(t);return h&&r&&await h.clearSession(r),n.destructiveReset(o,async()=>{let n=nv(t,e),r=G(n),o=i.get(r);if(o&&(o.destroy(),i.delete(r)),c.delete(r),me(r),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await R.ensureInitial(t);try{let e=G_(()=>s);a&&e&&K_({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:a,after:e})}catch{}return s})},purgeSession(t){let r=G(nv(t,e)),a=i.get(r);a&&(a.destroy(),i.delete(r)),c.delete(r),L(`${r}\n`),S.delete(r),me(r),n.purgeSession(ae(t)),P(t)},resetReasoningProjection(){let t=`${(e.probe?.getTransport??u)()}\n${(e.probe?.getGeneration??f)()}\n`,r=new Set;for(let e of i.keys())e.startsWith(t)&&r.add(e);for(let e of c.keys())e.startsWith(t)&&r.add(e);for(let e of a.keys())e.startsWith(t)&&r.add(e);for(let e of r){let t=i.get(e);t&&(t.destroy(),i.delete(e)),c.delete(e);let r=e.split(`
403
+ `);if(r.length>=4){let e={transport:r[0],generation:Number(r[1]),directory:r[2],sessionID:r[3]};n.purgeSession(ae(e)),P(e)}}L(t),I(t),me(t);for(let e of[...v.keys()])e.startsWith(t)&&v.delete(e);for(let e of[...y.keys()])e.startsWith(t)&&y.delete(e);for(let e of[...C])e.startsWith(t)&&C.delete(e)},purgeGeneration(t,r){for(let e of O)e.startsWith(`${t}\n${r}\n`)&&O.delete(e);for(let[e,n]of i)if(e.startsWith(`${t}\n${r}\n`)){n.destroy(),i.delete(e),c.delete(e);let t=s.get(e);t&&(t(),s.delete(e));let r=o.get(e);r&&(r(),o.delete(e)),a.delete(e)}L(`${t}\n${r}\n`),I(`${t}\n${r}\n`),me(`${t}\n${r}\n`),n.purgeGeneration(t,r),h&&!e.durablePartition&&h.clearGeneration({transport:t,generation:r})},destroy(){ge=!0,Te.clear();for(let e of i.values())e.destroy();i.clear();for(let e of o.values())e();o.clear();for(let e of s.values())e();s.clear(),a.clear(),c.clear(),v.clear(),y.clear(),b.clear(),x.clear(),S.clear(),w.clear(),T.clear(),E.clear(),O.clear(),n.dispose()}};return R}var dv=Object.freeze([]);function fv(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=ch(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var pv=`/api/openchamber/transcript-cache`,mv=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),hv=e=>typeof e==`object`&&!!e&&!Array.isArray(e),gv=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},_v=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},vv=e=>{if(!hv(e))throw Error(`Invalid transcript cache scope`);return{transport:gv(e.transport,`scope`),generation:_v(e.generation,`scope`),directory:gv(e.directory,`scope`),sessionID:gv(e.sessionID,`scope`)}},yv=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},bv=e=>{if(!hv(e)||!hv(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!hv(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:vv(e.scope),messageID:gv(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>yv(e,`part completeness`)),completeness:yv(e.completeness,`completeness`),contentHash:gv(e.contentHash,`content hash`),byteSize:_v(e.byteSize,`byte size`),lastAccessedAt:_v(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:_v(e.sortKey.created,`sort key`),messageID:gv(e.sortKey.messageID,`sort key`)}}},xv=(e,t)=>{if(!hv(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(bv);return{scope:e.scope===void 0?Be(t):vv(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},Sv=e=>{if(!hv(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:bv(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!mv.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:bv(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Cv=e=>{if(!hv(e))throw Error(`Invalid transcript cache evict`);return{evicted:_v(e.evicted,`evict`),freedBytes:_v(e.freedBytes,`evict`),remainingBytes:_v(e.remainingBytes,`evict`)}},wv=e=>({scope:Be(e),records:[],byteSize:0}),Tv=(e,t)=>hv(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Ev=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`)}},Dv=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 Ev(r)};let i=await Ev(r).catch(()=>void 0);throw Error(Tv(i,`Transcript cache request failed (${r.status})`))},Ov=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),kv=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Av(e={}){let t=e.fetch??x;return{async readSession(e){let n=await Dv(t,`${pv}/session`,{method:`GET`,query:Ov(e)});return n.kind===`disabled`||n.kind===`not-found`?wv(e):xv(n.payload,e)},async readMessage(e,n){let r=await Dv(t,`${pv}/message`,{method:`GET`,query:{...Ov(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!hv(r.payload))throw Error(`Invalid transcript cache record`);return bv(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Dv(t,`${pv}/message`,kv(`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 Sv(i.payload)},async removeMessage(e,n){let r=await Dv(t,`${pv}/message`,kv(`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 Dv(t,`${pv}/session`,kv(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Dv(t,`${pv}/generation`,kv(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Dv(t,`${pv}/evict`,kv(`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 Cv(r.payload)},async clearAll(){let e=await Dv(t,`${pv}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var jv=`openchamber-transcript-durable`,Mv=1,Nv=`transcriptIndex`,Pv=`transcriptContent`,Fv=class extends Error{code;constructor(e){super(e),this.code=e}},Iv=e=>({id:In(e.scope,e.messageID),scope:Be(e.scope),scopeKey:or(e.scope),generationKey:gn(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}),Lv=(e,t)=>({scope:Be(e.scope),messageID:e.messageID,info:bn(t.info),parts:bn(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}}),Rv=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Lv(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},zv=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},Bv=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Vv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Fv(`database-unavailable`));return}let r=indexedDB.open(e,Mv),i=!1,a=()=>{i||(i=!0,n(new Fv(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Nv)){let t=e.createObjectStore(Nv,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Pv)||e.createObjectStore(Pv,{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}),Hv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Fv(`database-unavailable`)),r.onblocked=()=>void 0}),Uv=(e=jv)=>({transaction:async(t,n=`readwrite`)=>{let r=await Vv(e),i=r.transaction([Nv,Pv],n),a=i.objectStore(Nv),o=i.objectStore(Pv),s=e=>Bv(e,i),c=new Promise((e,t)=>{i.oncomplete=()=>e(),i.onabort=()=>t(i.error??new DOMException(`aborted`,`AbortError`)),i.onerror=()=>{console.error(`Transcript durable IndexedDB transaction error`,i.error)}}),l;try{let e=await t({getIndex:e=>s(a.get(e)),getAllIndexes:()=>s(a.getAll()),getIndexesByScope:e=>s(a.index(`scopeKey`).getAll(e)),getIndexesByGeneration:e=>s(a.index(`generationKey`).getAll(e)),putIndex:async e=>{await s(a.put(e))},deleteIndex:async e=>{await s(a.delete(e))},getContent:e=>s(o.get(e)),putContent:async e=>{await s(o.put(e))},deleteContent:async e=>{await s(o.delete(e))},clearAll:async()=>{await s(a.clear()),await s(o.clear())}});return await c,e}catch(e){l=e;try{i.abort()}catch{}try{await c}catch(e){l===void 0&&(l=e)}throw l}finally{r.close()}},destroy:()=>Hv(e)});function Wv(e,t={}){let n=Un(t.now??Date.now),r,i=0,a=e=>{i+=1,r!==void 0&&(r+=e)},o=()=>{i+=1,r=void 0},s=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Iv(t)),er(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(or(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id),o();continue}let a=Lv(t,r);a.lastAccessedAt=n(),await e.putIndex(Iv(a)),i.push(a)}return Gn(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let r=await Rv(e,In(t,n));if(r)return s(e,r)})},async upsertSettled(t,r,i){let o=Qn({info:r,incomingCompleteness:Sn(i)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let c=bn(i.slice()),l=Sn(c),u=await An(r,c),d=In(t,r.id),f=0,p=await e.transaction(async e=>{let i=await Rv(e,d),a=Qn({info:r,existing:i,incomingCompleteness:l,incomingHash:u.hash});if(a.status===`skipped`)return a.reason===`slim-downgrade`&&i?{status:`skipped`,reason:`slim-downgrade`,record:er(i)}:a.reason===`unchanged`&&i?{status:`skipped`,reason:`unchanged`,record:await s(e,i)}:{status:`skipped`,reason:a.reason};let o={scope:Be(t),messageID:r.id,info:bn(r),parts:c,partCompleteness:c.map(vn),completeness:l,contentHash:u.hash,byteSize:u.byteSize,lastAccessedAt:n(),sortKey:qn(r)};return await e.putIndex(Iv(o)),await e.putContent({id:d,info:bn(r),parts:c}),f=o.byteSize-(i?.byteSize??0),{status:`written`,record:er(o)}});return a(f),p},async removeMessage(t,n){await e.transaction(e=>zv(e,In(t,n))),o()},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(or(t));for(let t of n)await zv(e,t.id)}),o()},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(gn(t));for(let t of n)await zv(e,t.id)}),o()},async evictToBytes(t,n){let a=Number.isFinite(t)?Math.max(0,t):0;if(r!==void 0&&r<=a)return{evicted:0,freedBytes:0,remainingBytes:r};r=void 0;let o=i,s=await e.transaction(async e=>{let t=new Set((n?.protect??[]).map(or)),r=await e.getAllIndexes(),i=0;for(let e of r)i+=e.byteSize;if(i<=a)return{evicted:0,freedBytes:0,remainingBytes:i};let o=r.filter(e=>!t.has(e.scopeKey)).sort((e,t)=>e.lastAccessedAt===t.lastAccessedAt?ir(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),s=0,c=0;for(let t of o){if(i<=a)break;await zv(e,t.id),i-=t.byteSize,c+=t.byteSize,s+=1}return{evicted:s,freedBytes:c,remainingBytes:i}});return i===o&&(r=s.remainingBytes),s},async clearAll(){await e.transaction(async e=>{await e.clearAll()}),i+=1,r=0},async destroy(){await e.destroy()}}}function Gv(e={}){return Wv(e.driver??Uv(e.databaseName),e)}var Kv=`openchamber-transcript-search`,qv=(e,t)=>{let n=e.clientRole??e.role;if(n!==`user`&&n!==`assistant`||!un(e))return``;let r=t.filter(e=>e.type===`text`&&!e.synthetic&&!e.ignored&&vn(e)===`full`).map(e=>e.text??``).join(`
404
+ `).trim();return n===`assistant`&&r.length>2048&&(r=r.slice(0,1024)+`
405
+ `+r.slice(-1023)),r};function Jv(e){let t=Gv({databaseName:Kv,driver:e}),n=e=>{_.invalidateQueries({predicate:({queryKey:t})=>t[1]===`sessionContentSearch`&&(!e?.transport||t[0]===e.transport)&&(!e?.directory||t[3]===e.directory)&&(e?.generation===void 0||t[4]===e.generation)})};return{...t,async upsertSettled(e,r,i){if(!un(r))return{status:`skipped`,reason:`not-settled`};if(i.some(e=>e.type===`text`&&vn(e)===`slim`))return{status:`skipped`,reason:`slim-downgrade`};let a=qv(r,i),o=await t.upsertSettled(e,{id:r.id,sessionID:r.sessionID,role:r.role,clientRole:r.clientRole,time:r.time,finish:r.finish},a?[{id:`${r.id}:search`,sessionID:r.sessionID,messageID:r.id,type:`text`,text:a}]:[]);return o.status===`written`&&n(e),o},async removeMessage(e,r){await t.removeMessage(e,r),n(e)},async clearSession(e){await t.clearSession(e),n(e)},async clearGeneration(e){await t.clearGeneration(e),n(e)},async clearAll(){await t.clearAll(),n()}}}function Yv(e={}){let t=e.isDesktopShell??pe,n=e.isDesktopLocalOriginActive??C,r=e.isVSCodeRuntime??Ee,i=e.isCapacitorApp??Hn;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Xv=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Zv(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Av)(),t),i=()=>(n??=(e.createIndexedDBStore??Gv)(),n),a=()=>Yv(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=>Xv([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Qv(e={}){await Zv(e).clearAll(),await(e.createContentSearchStore??Jv)().clearAll()}var $v=3e4;async function ey(e,t=$v){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)}}function ty(e){return e.filter(e=>!!e?.id)}async function ny(e,t){let n=e;for(let e=0;e<4&&n.turnCount===0&&n.cursor&&!n.complete;e+=1){let e=await dr({sessionID:t.sessionID,directory:t.directory,cursor:n.cursor,signal:t.signal}),r=new Set(n.records.map(e=>e.info.id)),i=[...e.records.filter(e=>!r.has(e.info.id)),...n.records];n={...n,records:i,coverageMessageIDs:[...e.coverageMessageIDs??e.records.map(e=>e.info.id),...n.coverageMessageIDs??n.records.map(e=>e.info.id)],cursor:e.cursor,complete:e.complete,turnCount:i.filter(e=>Ze(e.info,e.parts)).length}}return n}async function ry(e){let t=new AbortController,n=()=>t.abort(e.signal.reason);e.signal.aborted?n():e.signal.addEventListener(`abort`,n,{once:!0});let r=setTimeout(()=>t.abort(),$v);try{return await ey(iy({...e,signal:t.signal}))}finally{clearTimeout(r),e.signal.removeEventListener(`abort`,n),t.abort()}}async function iy(e){let t=Ye.getState(),n=f();e.before||e.purpose;let r=await dr({sessionID:e.sessionID,directory:e.directory,limit:e.pageSize,...e.before?{cursor:e.before}:{},signal:e.signal});e.signal.throwIfAborted();let i=e.before?r:await ny(r,e),a=i.records.map(e=>({info:Ed(e.info),parts:ty(e.parts??[])}));if(!e.before&&!i.complete&&Rg(a).length>0){let t=H.getScopedSdkClient(e.directory);a=(await zg({records:a,complete:i.complete,requestMessage:async n=>{let r=await Ig({transport:u(),generation:f(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:async()=>{let r=await t.session.message({sessionID:e.sessionID,messageID:n}),i=Pn(e.sessionID,r);if(!i?.info?.id)throw Error(`session.message failed: empty response`);return{info:Ed(i.info),parts:ty(i.parts??[])}}});return{info:r.info,parts:ty(r.parts??[])}}})).records.map(e=>({info:e.info,parts:ty(e.parts??[])}))}return e.signal.throwIfAborted(),!e.before&&f()===n&&Ye.getState()===t&&Vt(e.sessionID,a),{records:a,coverageMessageIDs:i.coverageMessageIDs??i.records.map(e=>e.info.id),cursor:i.cursor??void 0,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:e.limit}}function ay(e){let t=e.client??_,n=wh(),r=kh({client:t,activeRegistry:n}),i=uv({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:u,getGeneration:f},fetcher:e=>ry({directory:e.directory,sessionID:e.sessionID,limit:e.limit,pageSize:e.pageSize,before:e.before,signal:e.signal}),initialLimit:Qp(),historyLimit:$p(),durableStore:e.durableStore??Zv(),durablePartition:m}),a=zh({client:t,repository:i,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:u,getGeneration:f},confirmSessionStatus:async(t,n)=>{let r=e.childStores.getChild(t.directory);if(!r)return;let i=r.getState().session_status?.[t.sessionID];!n.tailOpen&&i?.type!==`busy`&&i?.type!==`retry`||await Cg(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return _r(i),ln(a),{repository:i,destroy:()=>{a.cancelAll(`dispose`),ln(null),i.destroy(),jt()}}}function oy(e){return Fn().apply(V(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 sy=new Map;function cy(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function ly(e,t,n,r={}){let i=r.getTransportIdentity??u,a=r.getGeneration??f,o=i(),s=a(),c=cy(e,t,o,s),l=()=>i()===o&&a()===s,d=sy.get(c)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=d.catch(()=>void 0).then(()=>m);sy.set(c,h);try{if(await d.catch(()=>void 0),!l())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:o,generation:s,isCurrent:l})}finally{p(),sy.get(c)===h&&sy.delete(c)}}function uy(e){let t=$n(),n=e.directory.trim();return Pr({queryKey:[t.transportIdentity,t.generation,`session-inbox`,n,e.sessionID],queryFn:async({signal:r})=>{if(!tr(t))throw Error(`Runtime changed`);let i=Bn.getState().list(e.sessionID),a=await Ft({sessionID:e.sessionID,directory:n,signal:AbortSignal.any([r,AbortSignal.timeout(1e4)])});if(r.aborted||!a.current||!tr(t))throw Error(`Runtime changed`);return yn(e.sessionID,a.items,{startedMark:a.startedMark,observedItems:i}),a},staleTime:0,gcTime:6e4,retry:1,retryDelay:250})}function dy(e){return _.fetchQuery(uy(e))}var fy=()=>!1,py=new Set,my=new Set,hy=new Set,gy=new Set,_y={onDeleteRequest(e){return py.add(e),()=>{py.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||py.forEach(t=>t(e))},onCreateRequest(e){return my.add(e),()=>{my.delete(e)}},requestCreate(e){let t=e??{};my.forEach(e=>e(t))},onDirectoryRequest(e){return hy.add(e),()=>{hy.delete(e)}},requestDirectoryDialog(){hy.forEach(e=>e())},onGitRefreshHint(e){return gy.add(e),()=>{gy.delete(e)}},requestGitRefresh(e){e.directory.trim()&&gy.forEach(t=>t(e))}},vy=50,yy=e=>{let t=Object.keys(e);if(t.length<=vy)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-vy).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},by=Ne()(Ie(Pe((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:yy(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:xr(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),xy=new Set([`todowrite`,`todoread`]),Sy=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),Cy=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),wy=(e,t)=>{by.getState().setSessionTodos(e,t)},Ty=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Ey=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Dy=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},Oy=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Dy(n);e&&t.push(e)}return t},ky=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Oy(t);if(t&&typeof t==`object`)return Oy(t.todos)}catch{}return[]},Ay=e=>{if(!xy.has(Ty(e)))return[];let t=Ey(e);if(t&&Sy.has(t))return[];let n=e.state,r=Oy(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Oy(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Oy(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?ky(i):[]};function jy(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=Ay(r[e]);if(t.length>0)return t}}return[]}function My(e){if(!e.sessionID||e.isStale?.()||Cy(e.store.getState().todo,e.sessionID))return!1;let t=jy(e.transcript);return t.length===0||e.isStale?.()||Cy(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Ny(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??B()?.getTranscript(V(e.directory,e.sessionID));return t?My({sessionID:e.sessionID,store:e.store,transcript:t,persist:wy,isStale:e.isStale}):!1}var Py=e({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>Fx,COMBINED_SEND_PRESENCE_GRACE_MS:()=>Px,SESSION_DELETE_UNDO_MS:()=>nx,abortBusySessionForMessageEdit:()=>Xx,abortCurrentOperation:()=>Vx,archiveSession:()=>fx,beginOptimisticSend:()=>Tx,cancelScheduledSessionDeletes:()=>dx,classifySendFailure:()=>Tb,combinedSendConfirmationOptions:()=>Ix,commitMessageEdit:()=>Qx,commitStagedRevertBeforeSend:()=>gx,createSession:()=>Xb,deleteSession:()=>lx,dirStoreForDirectory:()=>db,dismissOpenQuestionsForSession:()=>Kx,dismissQuestion:()=>Wx,ensureSentUserMessagePresence:()=>zx,fetchMessagesForSession:()=>rS,fetchRecentSendConfirmationRecords:()=>Mx,forkSession:()=>tS,getSendFailureKind:()=>Cb,isQuestionRequestNotFoundError:()=>qb,isQuestionSubmissionClaimedError:()=>Kb,materializeConfirmedSendRecords:()=>Nx,mirrorSessionIntoLiveStores:()=>vb,optimisticInsertUserMessage:()=>Ax,optimisticSend:()=>kx,patchSessionMetadata:()=>Zb,refetchSessionMessages:()=>$x,rejectQuestion:()=>Gx,releaseUnconfirmedQueueSend:()=>cb,requestSessionSmartTitle:()=>hx,respondToPermission:()=>Hx,respondToQuestion:()=>Ux,revertToMessage:()=>qx,rollbackOptimisticSend:()=>Dx,scheduleSessionDeletes:()=>ux,setActionRefs:()=>ob,setOptimisticRefs:()=>sb,settleOptimisticSend:()=>Ox,settleSessionPromptAfterSend:()=>ab,shareSession:()=>_x,shouldSuppressForkCopyEvent:()=>Yy,stageMessageEdit:()=>Yx,trackForkCopySessionCreated:()=>Uy,unarchiveSession:()=>px,unrevertSession:()=>eS,unshareSession:()=>vx,updateSessionTitle:()=>mx,waitForConnectionOrThrow:()=>kb,waitForSessionIdleForMessageEdit:()=>Zx}),Fy=2,Iy=150,Ly=new Set([`patch`,`step-start`,`step-finish`]),Ry=3,zy=150,By=null,Vy=new Map,Hy=3e4;function Uy(e,t){let n=t?.id;!By||By.runtimeKey!==m()||By.directory!==e||!n||t?.title!==By.expectedTargetTitle||n===By.sourceSessionID||By.targetSessionID||(By.targetSessionID=n)}function Wy(e){let t=e?.trim()||`session`,n=t.match(/^(.+) \(fork #(\d+)\)$/);return n?`${n[1]} (fork #${Number.parseInt(n[2],10)+1})`:`${t} (fork #1)`}async function Gy(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function Ky(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function qy(e){return e?.type===`busy`||e?.type===`retry`}async function Jy(e,t){let n=ef(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return H.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function Yy(e,t,n){if(By&&By.runtimeKey===m()&&By.directory===e&&t&&t===By.targetSessionID)return!0;if(!t||!n)return!1;let r=`${m()}:${e}:${t}`,i=Vy.get(r);return i?i.expiresAt<=Date.now()?(Vy.delete(r),!1):i.messageIDs.has(n):!1}var Xy=null,Zy=null,Qy=()=>``,$y=new Map,eb=null,tb=null,nb=null,rb=e=>new Promise(t=>setTimeout(t,e));async function ib(e){return(await dr({sessionID:e.sessionID,directory:e.directory??``,limit:e.limit,...e.signal?{signal:e.signal}:{}})).records.filter(e=>!!e?.info?.id)}async function ab(e){let t=bx(),n=()=>xx(t);e.inboxID&&n()&&Ln({id:e.inboxID,sessionID:e.sessionId,timeCreated:Date.now(),type:`user`,delivery:e.delivery===`queue`?`queue`:`steer`,payload:{text:e.text??``}});let r=!!e.inboxID;if(e.inboxID)try{let t=await Ft({sessionID:e.sessionId,directory:e.directory});if(!n()||!t.current)return;let i=t.items.find(t=>t.id===e.inboxID);i?(sr(i,{startedMark:t.startedMark}),r=!0):r=!1}catch{r=!0}let i=[];try{let t=await ib({sessionID:e.sessionId,directory:e.directory,limit:nm()});if(!n())return;i=t.map(e=>e.info.id)}catch{return}e.delivery!==`queue`&&e.inboxID&&!r&&i.includes(e.inboxID)&&dn(e.sessionId,e.inboxID,`consumed`);try{await sn({optimisticID:e.optimisticID,promotedIDs:i,removeOptimistic:t=>{n()&&tb?.({sessionID:e.sessionId,directory:e.directory,messageID:t})},refreshFromAuthority:async()=>{n()&&await $x(e.sessionId,e.directory??void 0)}})}catch{}}function ob(e,t,n){if(Xy=e,Zy=t,Qy=n,$y.size>0){let e=[...$y.values()];$y.clear(),queueMicrotask(()=>{for(let t of e)rS(t.sessionID,t.directory)})}}function sb(e,t,n){eb=e,tb=t,nb=n??null}function cb(e){let t=e.directory??null;tb?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function lb(){if(!Xy)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Xy}function ub(){if(!Zy)throw Error(`Child stores not initialized`);let e=Qy();if(!e)throw Error(`No current directory`);return Zy.ensureChild(e)}function db(e,t){if(!Zy)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Zy.ensureChild(e,t)}function fb(e,t){let n=Co(e)??t??Fb(e);return n?{store:db(n),directory:n}:{store:ub(),directory:yb()}}function pb(e,t){let{store:n,directory:r}=fb(e,t??void 0),i=r??yb()??``;return{repository:B()??We(i,n),directory:i,store:n}}function mb(e,t){let{repository:n,directory:r,store:i}=pb(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(V(r,e))}}function hb(e,t){return en(mb(e,t).data)}function gb(e,t){return mb(e,t).data.messageOrder.length}function _b(e,t){let n=Zy;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]=ET(e,n[r]),t.setState({session:i}),!0}return!1}function vb(e,t){t&&_b(e,t)||_b(e)}function yb(){return Qy()||void 0}function bb(){let{hasEverConnected:e,lastDisconnectReason:t}=W.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function xb(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 Sb=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 Cb(e){return e instanceof Sb?e.kind:null}function wb(e){let t=xb(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 Tb(e,t){return t?wb(e)||xb(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var Eb=2e3,Db=5e3,Ob=3e4;async function kb(){let e=Pp();e&&Np(`send_stream_stale`);let t=Date.now()+(e?Db:Eb);for(;Date.now()<t;){if(W.getState().isConnected&&!Pp()||n()&&!Pp())return;let e=t-Date.now();if(e<=0)break;if(await W.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Pp())return;let r=Math.min(100,t-Date.now());r>0&&await new Promise(e=>setTimeout(e,r))}throw bb()}function Ab(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Np(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},Ob);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function jb(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Mb(e){e&&Y.getState().upsertSession(e)}function Nb(e,t){let n=wd(t),r=[...e.getState().session],i=uf.search(r,n.id,e=>e.id);if(i.found){let t=ET(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 Pb(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=jb(e);if(i)return Nb(t,i);try{return Nb(t,await H.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 Fb(e){return Co(e)||Ib(e)||$.getState().getDirectoryForSession(e)||yb()}function Ib(e){let t=Zy;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=B()?.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 Lb(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?H.getScopedSdkClient(t):lb()}function Rb(e){_o.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&&_o.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var zb=()=>new Map(Array.from(dt(),([e,t])=>[e,t.title||e]));function Bb(e){return!(e.type!==`file`||kf(e))}function Vb(e){return Bb(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function Hb(e){return e.some(Vb)}async function Ub(e){let t=[...e.parts];if(!Hb(t))return t;let n=f(),r=e.directory??``;try{await Qe(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()||f()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=pb(e.sessionID,r);if(t=[...i.getParts(V(a,e.sessionID),e.messageID)],Hb(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function Wb(e){if(Hb(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await hp(e.parts,{sessionTitles:zb(),directory:e.directory}),n=_o.getState(),r=n.getDraft(e.key);return{payload:t,commit:await bp({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function Gb(e,t,n){let r=Zy;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 Kb(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.status===409&&t.code===`question_submission_claimed`}function qb(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 Jb(e,t){let n=Zy;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 Yb(e,t,n,r){let i=Co(t)||(typeof r==`string`&&r.trim().length>0?r.trim():null)||Gb(e,t,n)||Fb(t)||yb();return i?H.getScopedSdkClient(i):Lb(t)}async function Xb(e,t,n,r){try{let i=await H.createSession({title:e,parentID:n??void 0,metadata:r},t??yb()),a=i.directory??null;return a&&rt(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 Zb(e,t,n){let r=t??Fb(e),i=n(ef(await H.getSession(e,r))),a=await H.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&rt(a.id,o),a}async function Qb(e,t){let n;try{n=await H.getSession(e,t??Fb(e))}catch{return}if(!af(n))return;let r=rf(n);if(r)try{await Zb(r,t??Fb(r),t=>cf(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 $b(e,t){if(!Zy)return[];let n=[],r=new Set,i=[];if(t){let e=Zy.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Zy.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 ex(e){if(Zy)for(let t of e){let e=Zy.children.get(t.directory);e&&e.setState({session:t.sessions})}}function tx(e){$.getState().setWorktreeMetadata(e,null)}var nx=1e4,rx=new Map,ix=0;function ax(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function ox(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),ex(e.listSnapshots),Mb(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function sx(e,t){let n=t??Fb(e);Y.getState().markSessionsPendingDeletion([e]);let r=$b(e,n),i=jb(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 cx(e,t){try{if(await Qb(e,t),await H.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return $b(e,t),Y.getState().removeSessions([e]),tx(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&($b(e,t),Y.getState().removeSessions([e]),tx(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function lx(e,t){let n=sx(e);return await cx(e,n.directory)?!0:(ox(n),!1)}function ux(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>sx(e)),i=`session-delete-${Date.now()}-${ix+=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 cx(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),ox(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return rx.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function dx(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())ox(e);return!0}async function fx(e){let t=Fb(e),n=$b(e,t),r=jb(e),i=Date.now(),a=bx(),o=()=>f()===a.generation&&u()===a.identity;Y.getState().archiveSessions([e],i);let s=$.getState();s.currentSessionId===e&&s.setCurrentSession(null);try{if(await Qb(e,t),!o())throw Error(`session archive aborted because the runtime changed`);let n=await H.updateSession(e,{time:{archived:i}},t);if(!o())throw Error(`session archive aborted because the runtime changed`);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),o()?(ex(n),Mb(r),!1):!1}}async function px(e){let t=Fb(e),n=jb(e),r=n?ax(n):null,i=bx(),a=()=>f()===i.generation&&u()===i.identity;if(r&&(Y.getState().upsertSession(r),t&&Zy)){let e=Zy.children.get(t);e&&Nb(e,r)}try{let n=await H.updateSession(e,{time:{archived:0}},t);if(!a())throw Error(`session unarchive aborted because the runtime changed`);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=ax(n);if(Y.getState().upsertSession(r),t&&Zy){let e=Zy.children.get(t);e?Nb(e,r):vb(r,t)}else vb(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),a()&&n&&(Y.getState().upsertSession(n),typeof n.time?.archived==`number`&&n.time.archived>0&&$b(e,t)),!1}}async function mx(e,t){let n=Fb(e),r=jb(e),i=r?pd(r):0;await H.updateSession(e,{metadata:{openchamber:{titleAuthority:{sessionID:e,title:t,revision:Oe(),source:`manual`},titleRefresh:{activityUpdatedAt:i,isGenerating:null,requestedAt:null,lastError:null,failedAt:null}}}},n);let a=await H.updateSession(e,{title:t},n);Y.getState().upsertSession(a),vb(a,n)}async function hx(e){let t=Fb(e),n=jb(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 H.updateSession(e,{metadata:{openchamber:{titleRefresh:{...o?{lastAutoTitle:o}:{},requestedAt:Date.now(),isGenerating:null,lastError:null,failedAt:null}}}},t);Y.getState().upsertSession(s),vb(s,t)}async function gx(e,t){let n;try{n=fb(e,t??void 0)}catch{return}let{store:r,directory:i}=n,a=i??Qy();return ly(e,i,async({isCurrent:t})=>{let n=r.getState().session?.find(t=>t.id===e);if(!n?.revert)return;let o=typeof n.revert.messageID==`string`&&n.revert.messageID.length>0?n.revert.messageID:null;if(await at({sessionID:e,directory:i}),!t())throw Error(`Session history mutation aborted because the runtime changed`);let s=[...r.getState().session],c=s.findIndex(t=>t.id===e);if(c>=0&&(s[c]={...s[c],revert:void 0},r.setState({session:s})),o)try{let{repository:t,directory:n}=pb(e,i);t.apply(V(n,e),{type:`revert-committed`,to:o})}catch(n){if(!t())throw n;try{await Dt(a,e)}catch(e){throw AggregateError([n,e],`Revert committed, but local synchronization failed: ${e instanceof Error?e.message:String(e)}`)}if(!t())throw Error(`Session history mutation aborted because the runtime changed`)}})}async function _x(e){if(!fy())return null;throw Xt(`session.share`)}async function vx(e){throw Xt(`session.unshare`)}function yx(e){let t=Zy,n=e??Qy();if(!t||!n)return{store:e?db(e):ub(),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 bx(){return{identity:u(),generation:f()}}function xx(e){return u()===e.identity&&f()===e.generation}function Sx(e,t){return e.isCurrent()&&xx(t)}function Cx(e,t){if(!Sx(e,t))throw Error(`Send target changed before transport dispatch`)}var wx=new WeakMap;function Tx(e){if(!eb||!tb)throw new Sb(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??yb()??null,n=yx(t),r=bx();Cx(n,r),e.beforeOptimisticInsert?.(),Cx(n,r);let i=e.messageID??De(`msg`);e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i);let a=()=>{Cx(n,r),Ff(e.sessionId),Ax({sessionId:e.sessionId,messageID:i,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant,directory:t,files:e.files,parts:e.parts}),e.onOptimisticInsert?.()},o={messageID:i,sessionId:e.sessionId,directory:t,capture:n,transport:r};return n.store.getState().session?.find(t=>t.id===e.sessionId)?.revert?wx.set(o,a):a(),o}catch(e){throw e instanceof Sb?e:new Sb(Cb(e)??Tb(e,!1),e)}}function Ex(e){if(!Sx(e.capture,e.transport)||!tb)return;tb({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 Dx(e){wx.delete(e),Ex(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function Ox(e){if(!eb||!tb)throw new Sb(`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{let c=wx.get(t);if(c&&(Cx(n,r),await gx(a,o),c(),wx.delete(t)),await kb(),Cx(n,r),s=!0,await Ab(e.send(i)),!xx(r))throw new Sb(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Cb(c)??Tb(c,s),u=c instanceof Sb?c:new Sb(l,c,i);if(!Sx(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await Mx(a,i,o):null;if(d&&Sx(n,r)){Nx(n.store,a,i,d,{directory:o??void 0}),nb?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||Ex(t),u}finally{wx.delete(t),$.getState().clearMessageSending?.(a,i)}}async function kx(e){if(e.delivery===`queue`){let t=yx(e.directory),n=bx(),r=e.messageID??De(`msg`),i=!1;try{if(e.onMessageID?.(r),await kb(),Cx(t,n),i=!0,await Ab(e.send(r)),!xx(n))throw new Sb(`ambiguous-dispatched`,Error(`Runtime changed after transport dispatch`),r);e.onSendConfirmed?.(r)}catch(e){throw e instanceof Sb?e:new Sb(Tb(e,i),e,r)}return}await Ox({ticket:e.ticket??Tx({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 Ax(e){if(!eb)return!1;let t=e.directory??yb(),n=t?db(t):ub(),r=t??yb()??``;if(Lx(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now(),i={...t};return vf(i,e.sessionId),n.setState({session_interrupt_acknowledged_at:i.session_interrupt_acknowledged_at,session_execution_version:{...t.session_execution_version,[e.sessionId]:(t.session_execution_version?.[e.sessionId]??0)+1},session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let i=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:De(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:De(`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)i.push({id:De(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let a=Date.now(),o=typeof e.variant==`string`&&e.variant.trim().length>0?e.variant.trim():void 0,s={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,...o?{variant:o}:{},model:{providerID:e.providerID,modelID:e.modelID,...o?{variant:o}:{}},metadata:{},time:{created:a,completed:0}},c=G_(()=>mb(e.sessionId,t).data);eb({sessionID:e.sessionId,directory:t,message:s,parts:i});let l=G_(()=>mb(e.sessionId,t).data);try{c&&l&&K_({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:u(),generation:f(),before:c,after:l})}catch{}let d=n.getState(),p={...d};return vf(p,e.sessionId),n.setState({session_interrupt_acknowledged_at:p.session_interrupt_acknowledged_at,session_execution_version:{...d.session_execution_version,[e.sessionId]:(d.session_execution_version?.[e.sessionId]??0)+1},session_status:{...d.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...d.session_status_observed_at,[e.sessionId]:a}}),!0}function jx(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function Mx(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??Fy,c=r?.retryDelayMs??Iy;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!jx(r?.isCurrent)||a>0&&(await rb(c),i?.signal.aborted||!jx(r?.isCurrent)))return null;try{let a=await ib({sessionID:e,directory:n,limit:nm(),...i?{signal:i.signal}:{}});if(!jx(r?.isCurrent))return null;if(a.some(e=>e.info.id===t))return a}catch{}}return null}finally{o&&clearTimeout(o),r?.signal?.removeEventListener(`abort`,a)}}function Nx(e,t,n,r,i){if(!r.length)return;let a=i?.directory??Fb(t)??Qy(),o=V(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:Ed(e.info),parts:e.parts??[]})),skipPartTypes:Ly,merge:i?.gapFillOnly===!0?zn:Dn({purpose:`recovery`})};ur(o,s)||We(a,e).apply(o,s)}var Px=2e3,Fx={attempts:12,retryDelayMs:500},Ix={presenceGraceMs:Px,recovery:{...Fx}};function Lx(e,t,n,r){let i=r??Fb(t)??Qy()??``,a=B()??We(i,e),o=V(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function Rx(e,t,n,r){let i=r?.directory??Fb(t)??Qy()??``;if(Lx(e,t,n,i))return Promise.resolve(!0);if(!jx(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=B()??We(i,e),f=V(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!jx(r?.isCurrent)){l(!1);return}Lx(e,t,n,i)&&l(!0)}),Lx(e,t,n,i)&&l(!0)})}async function zx(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await Rx(t,n,r,{timeoutMs:e.graceMs??Ix.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!jx(a))return`cancelled`;let o=await Mx(n,r,i,{...Ix.recovery,isCurrent:a});return o?jx(a)?(Nx(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:jx(a)?`missing`:`cancelled`}var Bx=new WeakMap;function Vx(e){let{store:t,directory:n}=fb(e),r=bx(),i=Zy,a=t.getState().session_execution_version?.[e]??0,o=()=>xx(r)&&i===Zy&&(!n||i?.getChild(n)===t)&&(t.getState().session_execution_version?.[e]??0)===a,s=Bx.get(t);s||(s=new Map,Bx.set(t,s));let c=s.get(e);if(c?.current())return c.promise;let l=n?{state:`bound`,transportIdentity:u(),directory:n,sessionID:e}:null,d=l?$.getState().beginQueueAbortBlock(l):null,f=()=>{o()&&(l&&d&&$.getState().clearQueueAbortBlock(l,d),zr(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>bH);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{o()&&t(e)}).catch(()=>{}),Br.error(qr(Kr.getState().dictionary,`chat.chatInput.stopUnconfirmed`)))},p=yf({store:t,sessionID:e,isCurrent:o,request:t=>Ve({sessionID:e,directory:n,signal:t,resume:!0})}).then(e=>{e===`unconfirmed`&&f()},()=>f()).finally(()=>{s.get(e)?.promise===p&&s.delete(e)});return s.set(e,{current:o,promise:p}),p}async function Hx(e,t,n){await kb();let r=Gb(`permission`,e,t)||Fb(e)||yb();await lt({sessionID:e,requestID:t,reply:n,directory:r})}async function Ux(e,t,n,r){await kb();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n],a=Yb(`question`,e,t,r),o=await a.session.form.get({sessionID:e,formID:t});await a.session.form.reply({sessionID:e,formID:t,answer:nt(i,o.fields)})}catch(n){throw qb(n)&&Jb(e,t),n}}async function Wx(e,t,n){let r=f(),i=u(),a=Yb(`question`,e,t,n),o=()=>r===f()&&i===u();if(await kb(),!o())throw Error(`Question dismissal runtime changed`);try{let n=await a.session.interrupt({sessionID:e,resume:!1});if(!o())return;n.interrupted||await a.session.form.cancel({sessionID:e,formID:t}),o()&&Jb(e,t)}catch(n){throw o()&&qb(n)&&Jb(e,t),n}}async function Gx(e,t,n){await kb();try{await Yb(`question`,e,t,n).session.form.cancel({sessionID:e,formID:t})}catch(n){throw qb(n)&&Jb(e,t),n}}async function Kx(e){if(!e)return!1;let t=Zy;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=wf(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)Jb(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await Gx(e,t)}catch(e){if(qb(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function qx(e,t,n){let r=typeof n==`string`?n:n?.directory,i=typeof n==`string`?void 0:n?.draftKey,a=typeof n==`string`||n?.restorePrimaryInput!==!1,o=i!==null&&(i!==void 0||a);return ly(e,r??(()=>{try{return fb(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:a,directory:s}=fb(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let c=a.getState().session_status[e];if(c&&c.type!==`idle`){try{await Ve({sessionID:e,directory:s})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let l=hb(e,s).find(e=>e.id===t),d=hb(e,s).find(e=>e.id===t)??l;if(!d||d.role!==`user`)throw Error(`The selected user message is unavailable`);let{repository:f,directory:p}=pb(e,s),m=[...f.getParts(V(p,e),t)],h=i===void 0?o?w({transportIdentity:u()},e):null:i,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await Ub({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await hp(m,{sessionTitles:zb(),directory:s})}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=a.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),C={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},C.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(a.setState(C),h){let t=_o.getState(),r=await bp({key:h,expectedRevision:t.getDraft(h)?.revision??`absent`,payload:g,runtime:t.captureDraftRuntime()});if(!n()){let t=[...a.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),a.setState({session:t}),r.status===`committed`&&r.current&&r.previous&&r.result?.record?.revision!==void 0&&await Sp({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=[...a.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),a.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await vt({sessionID:e,messageID:t,directory:s});if(!n()){let t=[...a.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),a.setState({session:t}),h&&v&&_!==void 0&&await Sp({key:h,restoredRevision:_,previous:v}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}let i=[...a.getState().session],o=i.findIndex(t=>t.id===e);return o>=0&&(i[o]={...i[o],revert:r},a.setState({session:i})),s&&_y.requestGitRefresh({directory:s}),g}catch(r){let i=[...a.getState().session],o=i.findIndex(t=>t.id===e);if(o>=0&&(i[o]={...i[o],revert:b}),n()?(a.setState({session:i}),h&&v&&_!==void 0&&await Sp({key:h,restoredRevision:_,previous:v})):r instanceof Error&&r.message.includes(`runtime changed`)||(a.setState({session:i}),h&&v&&_!==void 0&&await Sp({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),n()&&r instanceof Error&&r.name===`MessageNotFoundError`){try{let t=await H.getSession(e,s);if(!n()||(_b(t,s),await Dt(p,e),!n()))throw Error(`Session history mutation aborted because the runtime changed`)}catch(e){throw AggregateError([r,e],`${r.message}\n${e instanceof Error?e.message:String(e)}`)}finally{n()&&f.apply(V(p,e),{type:`remove-message`,messageID:t})}r.name=`SessionRevertMessageMissingRecoveredError`}throw r}})}function Jx(e,t,n,r){let i=r??Fb(t)??Qy(),a=V(i,t),o=[...Ut(t)];o.some(e=>e.directory===i&&e.sessionID===t)||o.push(a);let s=!1;for(let e of o)ur(e,{type:`revert-committed`,to:n})!=null&&(s=!0);s||We(i,e).apply(a,{type:`revert-committed`,to:n})}async function Yx(e,t,n,r){let i=n?.info,a=n?.parts,o=r?.directory,s;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);s=fb(e,o).directory}else{s=fb(e,o).directory;let{data:n}=mb(e,s),r=en(n),c=r.findIndex(e=>e.id===t),l=c>=0?r[c]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);i=l,a=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!i||n&&a===void 0)throw Error(`The selected user message is unavailable`);let c=r?.draftKey??w({transportIdentity:u()},e),{commit:l}=await Wb({key:c,parts:await Ub({directory:s,sessionID:e,messageID:t,parts:a??[]}),directory:s});if(l.status!==`committed`||!l.current)throw Error(`composer-restoration-commit-${l.status}`);let d=l.result?.record?.revision,f=l.previous;return d===void 0||!f?{rollback:async()=>({status:`skipped`})}:{rollback:async()=>({status:(await Sp({key:c,restoredRevision:d,previous:f})).status})}}async function Xx(e,t){let n=t?.directory,{directory:r}=fb(e,n);await H.getScopedSdkClient(r??``).session.interrupt({sessionID:e,resume:!1})}async function Zx(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,{directory:i}=fb(e,n),a=bx(),o=AbortSignal.timeout(r);try{await H.getScopedSdkClient(i??``).session.wait({sessionID:e},{signal:o})}catch(t){throw o.aborted?Error(`Session is still busy after waiting to edit: ${e}`,{cause:t}):t}if(!xx(a))throw Error(`Session history mutation aborted because the runtime changed`)}async function Qx(e,t,n){let{store:r,directory:i}=fb(e,n?.directory);return ly(e,i,async({isCurrent:a})=>{let o=()=>{if(!a())throw Error(`Session history mutation aborted because the runtime changed`)},s=()=>{let r=hb(e,i),a=r.find(e=>e.id===t);if(!a||a.role!==`user`)throw Error(`The selected user message is unavailable`);let o=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e);if(o&&r.some(e=>e.id===o))throw Error(`Message edit must commit before the replacement is admitted`)},c=t=>{o(),r.setState(n=>({session:n.session.map(n=>n.id===e?{...n,revert:t}:n)}))};s(),await Xx(e,{directory:i}),o(),await Zx(e,{directory:i}),o(),s();let l=r.getState().session.find(t=>t.id===e)?.revert;if(l?.files?.length)throw Error(`The selected user message is unavailable`);let d=G_(()=>mb(e,i).data),p=await vt({sessionID:e,messageID:t,directory:i,files:!1});o(),c(p);try{s(),await at({sessionID:e,directory:i})}catch(n){if(o(),wb(n))try{await H.getApiClient().session.message({sessionID:e,messageID:t}),o()}catch(a){if(o(),!(typeof a==`object`&&a&&`_tag`in a&&a._tag===`MessageNotFoundError`))throw n;c(void 0),Jx(r,e,t,i);return}try{l?c(await vt({sessionID:e,messageID:l.messageID,directory:i,files:!!l.files?.length})):(await $t({sessionID:e,directory:i}),c(void 0))}catch{o()}throw n}o(),c(void 0),Jx(r,e,t,i);try{let t=G_(()=>mb(e,i).data);d&&t&&K_({trigger:`user-edit`,sessionID:e,directory:i,transport:u(),generation:f(),before:d,after:t})}catch{}})}async function $x(e,t){let{store:n,directory:r}=fb(e,t),i=G_(()=>mb(e,t).data),a=await ib({sessionID:e,directory:r,limit:tm()});if(a.length===0){try{let n=G_(()=>mb(e,t).data);i&&n&&K_({trigger:`materialize`,sessionID:e,directory:r,transport:u(),generation:f(),purpose:`refetch`,before:i,after:n})}catch{}return[]}let o=a.map(e=>({info:Ed(e.info),parts:e.parts??[]})),s=V(r??Qy(),e);ur(s,{type:`materialize-snapshots`,records:o,skipPartTypes:Ly})||We(r??Qy(),n).apply(s,{type:`materialize-snapshots`,records:o,skipPartTypes:Ly});try{let n=G_(()=>mb(e,t).data);i&&n&&K_({trigger:`materialize`,sessionID:e,directory:r,transport:u(),generation:f(),purpose:`refetch`,before:i,after:n})}catch{}return o.map(e=>e.info)}async function eS(e,t){return ly(e,t??(()=>{try{return fb(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=fb(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=gb(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Ve({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}if(await $t({sessionID:e,directory:i}),!n())throw Error(`Session history mutation aborted because the runtime changed`);let c=[...r.getState().session],l=c.findIndex(t=>t.id===e);l>=0&&(c[l]={...c[l],revert:void 0},r.setState({session:c}));for(let r=0;r<Ry;r+=1){if(r>0&&(await rb(zy),!n())||(await $x(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(gb(e,i)>o)return}if(gb(e,i)<=o){let n=i??Qy(),a=B()??We(n,r),o=V(n,e),s=a.destructiveReset;typeof s==`function`?await s(o):await $x(e,t)}})}async function tS(e,t,n,r){let i=m(),a=bx(),{store:o,directory:s}=fb(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await Pb(e,o,s);if(!xx(a)||c.directory&&c.directory!==s)throw Error(`Fork source changed while reading identity`);rt(e,s);let l=o.getState(),u=l.session_status[e],d=hb(e,s);u?.type,d.length;let f=()=>xx(a)&&Fb(e)===s,p=await pf(H.getScopedSdkClient(s),e,n,qy(u),f);l.session_status[e]?.type;let{repository:h,data:g}=mb(e,s),_=n?g.messagesByID[n]??d.find(e=>e.id===n):void 0,v=n?[...h.getParts(V(s,e),n)]:[];if(n&&(!_||Hb(v))){let t=await H.getScopedSdkClient(s).session.message.get({sessionID:e,messageID:n});if(!f())throw Error(`Fork source changed while reading the selected message`);let r=Pn(e,t);if(r&&(_=r.info,v=r.parts),Hb(v))throw Error(`Fork attachment is unavailable`)}let y=Ze(_,v),b=y?v:[],x=``;x=b.filter(e=>e.type===`text`&&!kf(e)).map(e=>e.text||e.content||``).join(`
406
+ `).trim();let S=b.filter(e=>e.type===`file`&&!kf(e));By={operationId:t,runtimeKey:i,directory:s,sourceSessionID:e,expectedTargetTitle:Wy(c.title)},await Gy(t,`copying`);let C;try{if(!f())throw Error(`Fork source changed before copying`);if(C=await H.forkSession(e,p,s),C.id,m()!==i)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:C.id}),By?.operationId===t&&(By=null),!1;if(C.title?.startsWith(`[Scheduled]`)&&(C=await H.updateSession(C.id,{title:C.title.replace(/^\[Scheduled\]\s*/,``)},s),!f()))return By?.operationId===t&&(By=null),!1;let n=[...o.getState().session],r=uf.search(n,C.id,e=>e.id);r.found||(n.splice(r.index,0,C),o.setState({session:n})),Ky(t,C.id);let a=$.getState().currentSessionId;(a===e||a===C.id)&&$.getState().setCurrentSession(C.id,s,{skipMessageFetch:!0}),await Gy(t,`opening`);try{C=await Jy(C,s)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw By?.operationId===t&&(By=null),e}try{let e=V(s,C.id),r=B(),i=r?.destructiveReset;r&&typeof i==`function`?await i(e):ur(e,{type:`reset`}),await Gy(t,`loading`),C.id,$.getState().currentSessionId,C.id;let a=B()??We(s,o),c=V(s,C.id),l=a.getRequestState?.(c);(!(a.hasSession?.(c)??!1)||l?.status===`error`)&&await rS(C.id,s);let u=hb(C.id,s);u.at(-1)?.id&&Vy.set(`${m()}:${s}:${C.id}`,{messageIDs:new Set(u.map(e=>e.id)),expiresAt:Date.now()+Hy});let d=$.getState().currentSessionId===C.id;d&&y&&x&&_o.setState({pendingInputText:x,pendingInputMode:`replace`}),d&&y&&n&&Rb(S)}finally{By?.operationId===t&&(By=null)}return C.id,!0}var nS=new Map;async function rS(e,t){let n=Co(e)??t??yb();if(!n)return;let r=m(),i=em(),a=JSON.stringify([u(),f(),n,e,i]);if(!Xy||!Zy){$y.set(a,{sessionID:e,directory:n});return}let o=nS.get(a);if(o)return o;let s=Promise.all([iS(e,n,r,i),dy({sessionID:e,directory:n}).catch(()=>void 0)]).then(()=>void 0).finally(()=>{nS.get(a)===s&&nS.delete(a)});return nS.set(a,s),s}async function iS(e,t,n,r){lb();let i=db(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=B()??We(t,i),l=V(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(zp(t,e)){Ny({directory:t,sessionID:e,store:i,transcript:u});return}if(B()){try{await hn(t,e)}catch{return}if(y())return;Ny({directory:t,sessionID:e,store:i,isStale:y}),await wg({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}Ny({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{if(B())await hn(t,e),b=c.getTranscript(l).messageOrder.length;else{let n=await ry({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:Ly}),b=n.records.length,Bp(t,e)}}catch{return}y()||(Ny({directory:t,sessionID:e,store:i,isStale:y}),await wg({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var aS=18e4,oS=400,sS=300,cS=15,lS=`FINAL_REVIEW_STATUS: no_remaining_findings`,uS=lS.toLowerCase(),dS=new Set,fS=new Set,pS=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},mS=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},hS=e=>{let t=e.role;return typeof t==`string`?t:``},gS=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},_S=(e,t)=>st(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`}),vS=(e,t,n,r=0,i)=>{let a=Jt(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(hS(s)!==`assistant`||!pS(s)||mS(s)<r-1e3)continue;let c=gS(s);if(!ES(s,i)||c&&o.has(c))continue;let l=Qd(st(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},yS=(e,t)=>Wt(e,t)?.type===`idle`,bS=e=>e===m(),xS=e=>{lf.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},SS=e=>{if(e&&!bS(e))throw Error(`Auto-review stopped because the runtime changed.`)},CS=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),wS=e=>e.trim().split(`
407
+ `).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===uS,TS=e=>{let t=e.trimEnd().split(`
408
+ `);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===uS&&t.pop(),t.join(`
409
+ `).trim()},ES=(e,t)=>!t||gS(e)===t,DS=(e,t)=>[e.runtimeKey,e.originalSessionID,e.phase,e.expectedAssistantParentID??``,t].join(`:`),OS=(e,t)=>{let n=DS(e,t);return fS.has(n)?null:(fS.add(n),n)},kS=e=>{fS.delete(e)},AS=()=>[{synthetic:!0,text:`This review is part of an automatic review loop. If there are no remaining issues, end your response with this exact final line:\n${lS}\nIf you found issues that require changes, do not include that final status line.`}],jS=async e=>{for(;;){let t=lf.getState().runsByOriginalSessionID[e];if(!t||t.status!==`running`)return;if(!bS(t.runtimeKey)){xS(t);return}let n=t.phase===`waiting_for_reviewer`?t.reviewSessionID:t.originalSessionID;if(!yS(n,t.directory)){await new Promise(e=>setTimeout(e,sS));continue}let r=vS(n,t.directory,t.lastForwardedMessageID,t.waitAfterCreatedAt,t.expectedAssistantParentID);if(!r){await new Promise(e=>setTimeout(e,sS));continue}if(t.phase===`waiting_for_reviewer`){let e=OS(t,r.id);if(!e){await new Promise(e=>setTimeout(e,sS));continue}if(!bS(t.runtimeKey)){kS(e),xS(t);return}try{let e=Date.now(),n=wS(r.text),i=n?TS(r.text):r.text,a=await US(t.reviewSessionID,t.directory,i,t.runtimeKey);if(n){lf.getState().completeRun(t.originalSessionID);return}lf.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_implementer`,lastForwardedMessageID:r.id,expectedAssistantParentID:a,waitAfterCreatedAt:e}))}finally{kS(e)}}else{if(t.iteration>=t.maxIterations){lf.getState().stopRun(t.originalSessionID);return}let e=OS(t,r.id);if(!e){await new Promise(e=>setTimeout(e,sS));continue}if(!bS(t.runtimeKey)){kS(e),xS(t);return}try{let e=Date.now(),n=await WS(t.originalSessionID,t.directory,r.text,!0,t.runtimeKey);lf.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_reviewer`,iteration:t.iteration+1,lastForwardedMessageID:r.id,expectedAssistantParentID:n,waitAfterCreatedAt:e}))}finally{kS(e)}}}},MS=e=>{lf.getState().upsertRun(e),NS(e.originalSessionID)},NS=e=>{let t=lf.getState().runsByOriginalSessionID[e];!t||t.status!==`running`||!bS(t.runtimeKey)||dS.has(e)||(dS.add(e),jS(t.originalSessionID).catch(e=>{console.error(`[review-flow] auto-review loop failed`,e),lf.getState().updateRun(t.originalSessionID,t=>({...t,status:CS(e)?`stopped`:`error`,error:e instanceof Error?e.message:String(e)}))}).finally(()=>{dS.delete(e)}))},PS=async(e,t,n)=>{let r=Date.now()+aS;for(;Date.now()<r;){let r=Jt(e,t).filter(e=>hS(e)===`assistant`).filter(e=>mS(e)>=n-1e3).filter(pS).sort((e,t)=>mS(t)-mS(e));for(let e of r){let n=Qd(st(e.id,t)).trim();if(n)return n}await new Promise(e=>setTimeout(e,oS))}throw Error(`Timed out waiting for handoff response`)},FS=e=>{let t=eu.getState(),n=W.getState(),r=$.getState().getLastUserChoice(e),i=r?.agent||t.getSessionAgentSelection(e)||n.currentAgentName||void 0,a=t.getSessionModelSelection(e),o=i?t.getAgentModelForSession(e,i):null,s=r?.providerID&&r.modelID?{providerId:r.providerID,modelId:r.modelID}:null,c=s||o||a||(n.currentProviderId&&n.currentModelId?{providerId:n.currentProviderId,modelId:n.currentModelId}:null);if(!c?.providerId||!c?.modelId)return null;if(s)return{providerID:s.providerId,modelID:s.modelId,agent:i,variant:r?.variant};let l=i?t.getAgentModelVariantForSession(e,i,c.providerId,c.modelId):void 0,u=n.currentProviderId===c.providerId&&n.currentModelId===c.modelId?n.currentVariant:void 0;return{providerID:c.providerId,modelID:c.modelId,agent:i,variant:l||u||void 0}},IS=async(e,t,n,r,i,a)=>{SS(a);let o=r??FS(e);if(!o)throw Error(`Select a model before sending review flow messages`);let s=eu.getState();s.saveSessionModelSelection(e,o.providerID,o.modelID),o.agent&&(s.saveSessionAgentSelection(e,o.agent),s.saveAgentModelForSession(e,o.agent,o.providerID,o.modelID),s.saveAgentModelVariantForSession(e,o.agent,o.providerID,o.modelID,o.variant)),Ff(e);let c=null;if(await kx({sessionId:e,content:n,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,onMessageID:e=>{c=e},beforeOptimisticInsert:()=>SS(a),onOptimisticInsert:()=>LS(e),send:r=>(SS(a),H.sendMessage({id:e,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,variant:o.variant,text:n,additionalParts:i,messageId:r}).then(()=>void 0))}),!c)throw Error(`Failed to prepare review flow message`);return c},LS=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:chat-force-scroll-bottom`,{detail:{sessionId:e}}))},RS=(e,t)=>{Sr.getState().openContextPanelTab(e,{mode:`chat`,dedupeKey:`session:${t.id}`,label:t.title??null,sessionTitleFallback:t.title??null})},zS=async(e,t)=>{try{return await H.getSession(e,t)}catch{return null}},BS=e=>`Review: ${e.title?.trim()||e.id}`,VS=async(e,t,n)=>{SS(n);let r=await H.getSession(e,t);SS(n);let i=nf(r);if(i){let r=await zS(i,t);if(SS(n),r&&af(r))return r;await Zb(e,t,e=>{let t={...e},n=t.openchamber;if(n&&typeof n==`object`&&!Array.isArray(n)){let e={...n};delete e.reviewSessionID,t.openchamber=e}return t})}SS(n);let a=await H.createSession({title:BS(r),metadata:sf({},e)},t);SS(n),rt(a.id,t);try{SS(n),await Zb(e,t,e=>of(e,a.id))}catch(e){throw SS(n),await H.deleteSession(a.id,t).catch(e=>{console.warn(`[review-flow] failed to delete unlinked review session after link failure`,e)}),e}return Y.getState().upsertSession(a),a},HS=async e=>{await kb();let t=e.autoReview?m():void 0,n;if(e.generateHandoff??!0){let n=await Jd(`session.reviewHandoff.visible`),r=await Jd(`session.reviewHandoff.instructions`),i=Date.now();await IS(e.originalSessionID,e.directory,n,null,[{text:r,synthetic:!0}],t);let a=async()=>{let n=await PS(e.originalSessionID,e.directory,i);SS(t);let r=await Jd(`session.reviewSession.visible`,{handoff:n}),a=await VS(e.originalSessionID,e.directory,t),o=t??m(),s=Date.now(),c=await IS(a.id,e.directory,r,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?AS():void 0,e.autoReview?o:void 0);e.autoReview&&MS({originalSessionID:e.originalSessionID,reviewSessionID:a.id,directory:e.directory,runtimeKey:o,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:cS,expectedAssistantParentID:c,waitAfterCreatedAt:s}),e.autoReview||RS(e.directory,a)};if(e.returnAfterHandoffRequest){a().catch(e=>{console.error(`[review-flow] failed to finish background review flow`,e)});return}await a();return}n=await Jd(`session.reviewSessionWithoutHandoff.visible`);let r=await VS(e.originalSessionID,e.directory,t),i=t??m(),a=Date.now(),o=await IS(r.id,e.directory,n,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?AS():void 0,e.autoReview?i:void 0);e.autoReview&&MS({originalSessionID:e.originalSessionID,reviewSessionID:r.id,directory:e.directory,runtimeKey:i,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:cS,expectedAssistantParentID:o,waitAfterCreatedAt:a}),e.autoReview||RS(e.directory,r)},US=async(e,t,n,r)=>{SS(r);let i=rf(await H.getSession(e,t));if(!i)throw Error(`Original session is missing`);let a=await Jd(`session.reviewFeedbackToImplementer.visible`,{review_feedback:n});return SS(r),IS(i,t,a,void 0,void 0,r)},WS=async(e,t,n,r=!1,i)=>{SS(i);let a=nf(await H.getSession(e,t));if(!a)throw Error(`Review session is missing`);let o;try{o=await H.getSession(a,t)}catch(n){throw SS(i),await Zb(e,t,e=>cf(e,a)),n}let s=await Jd(`session.implementationResponseToReviewer.visible`,{implementation_response:n});SS(i);let c=await IS(a,t,s,void 0,r?AS():void 0,i);return r||RS(t,o),c},GS=e=>af(e)?`review-to-original`:nf(e)?`original-to-review`:null,KS=[0,250,500,1e3,2e3,2e3,2e3,2e3],qS=5e3,JS=(e=>{let t=new Map,n=new Set,r=new Map,i=new Map,a=0,o=e=>`${a}:${i.get(e)??0}`;return{waitUntilReady:i=>{if(n.has(i))return Promise.resolve();let a=t.get(i);if(a)return a;let s=e.now??Date.now,c=e.failureCooldownMs??qS,l=r.get(i);if(l!==void 0&&s()-l<c)return Promise.reject(Error(`OpenCode readiness is cooling down for runtime ${i}`));let u=e.retryDelaysMs??KS,d=o(i),f=(async()=>{for(let t of u){if(o(i)!==d||(t>0&&await e.wait(t),o(i)!==d))return;if(await e.probe(i)){o(i)===d&&(n.add(i),r.delete(i));return}}throw r.set(i,s()),Error(`OpenCode did not become ready for runtime ${i}`)})();return t.set(i,f),f.finally(()=>{t.get(i)===f&&t.delete(i)}).catch(()=>{}),f},reset:e=>{if(e){i.set(e,(i.get(e)??0)+1),t.delete(e),n.delete(e),r.delete(e);return}a+=1,t.clear(),n.clear(),r.clear()}}})({probe:()=>H.checkHealth(),wait:e=>new Promise(t=>setTimeout(t,e))}),YS=()=>JS.waitUntilReady(m()),XS=e=>{JS.reset(e)},ZS=100,QS=1e3,$S=1500,eC=async e=>{if(!e.ok)throw Error(`session index request failed (${e.status})`)},tC=e=>{if(e.available!==!0||!Array.isArray(e.directories))return null;let t=Array.isArray(e.pinnedSessionIds)?e.pinnedSessionIds.filter(e=>typeof e==`string`&&e.length>0):void 0;return{revision:typeof e.revision==`number`?e.revision:0,sync:e.sync??{active:!1,completed:0,total:0,pendingDirectories:[],completedDirectories:[],failedDirectories:[],enriching:!1},directories:e.directories,...t?{pinnedSessionIds:t}:{}}},nC=new Map,rC=new Map,iC=()=>JSON.stringify([u(),f()]),aC=async(e,t)=>{if(typeof window>`u`)return null;let n=e.trim();if(!n)return null;try{let e=await x(`/api/openchamber/session-index/session/${encodeURIComponent(n)}`,{signal:t?.signal});if(e.status===404||e.status===501)return null;await eC(e);let r=await e.json();if(r.available!==!0||!r.session)return null;let i=typeof r.session.directory==`string`?r.session.directory.trim():``,a=typeof r.session.id==`string`?r.session.id:n;return i?{id:a,directory:i,title:typeof r.session.title==`string`?r.session.title:void 0,parentID:r.session.parentID??null}:null}catch{return null}},oC=async e=>{if(typeof window>`u`)return null;e?.signal?.throwIfAborted();let t=iC(),n=nC.get(t)??new Map,r=n.get(e?.signal);if(r)return r;let i=(async()=>{let t=await x(`/api/openchamber/session-index`,{signal:e?.signal});return t.status===501?null:(await eC(t),tC(await t.json()))})().finally(()=>{n.get(e?.signal)===i&&n.delete(e?.signal),n.size===0&&nC.get(t)===n&&nC.delete(t)});return n.set(e?.signal,i),nC.set(t,n),i},sC=async e=>{if(typeof window>`u`)return null;let t=[...new Set(e.map(I).filter(Boolean))].sort(),n=JSON.stringify([iC(),t]),r=rC.get(n);if(r)return r;let i=(async()=>{let e=await x(`/api/openchamber/session-index/sync`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:t})});return e.status===501?null:(await eC(e),e.json())})().finally(()=>{rC.get(n)===i&&rC.delete(n)});return rC.set(n,i),i},cC=(e,t,n)=>new Promise(r=>{if(t.aborted){r(`aborted`);return}let i=n?.safetyTimeoutMs===null?null:typeof n?.safetyTimeoutMs==`number`&&n.safetyTimeoutMs>0?n.safetyTimeoutMs:$S,a,o,s,c=e=>{a!==void 0&&clearTimeout(a),d!==void 0&&clearTimeout(d),f(),t.removeEventListener(`abort`,u),r(e)},l=e=>{o=e,e===`ready`&&(s=void 0);let t=s===void 0?ZS:Math.max(0,Math.min(ZS,s-Date.now()));s!==void 0&&(s=Date.now()+t),a!==void 0&&clearTimeout(a),a=setTimeout(()=>{a=void 0,c(o??e)},t)},u=()=>c(`aborted`),d=i===null?void 0:setTimeout(()=>c(`timeout`),i),f=Fi(t=>{if(t.type===`event-stream-ready`){l(`ready`);return}if(t.type===`session-index-changed`&&t.revision>e){if(t.cause!==`change`&&(t.sync?.active||t.sync?.enriching)){o=`tip`,a===void 0&&(s=Date.now()+QS,a=setTimeout(()=>{a=void 0,c(`tip`)},QS));return}l(`tip`);return}});t.addEventListener(`abort`,u,{once:!0})}),lC=async(e,t)=>{let n=e.trim();if(!n)throw Error(`session index pin requires a session id`);let r=await x(`/api/openchamber/session-index/session/${encodeURIComponent(n)}/pin`,{method:`POST`,signal:t?.signal});if(r.status===501)throw Error(`session index pin is unsupported`);await eC(r)},uC=async(e,t)=>{let n=e.trim();if(!n)throw Error(`session index unpin requires a session id`);let r=await x(`/api/openchamber/session-index/session/${encodeURIComponent(n)}/pin`,{method:`DELETE`,signal:t?.signal});if(r.status===501)throw Error(`session index unpin is unsupported`);await eC(r)},dC=async e=>{if(typeof window>`u`)return;let t=await x(`/api/openchamber/session-index/directory`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});t.status!==501&&await eC(t)},fC=async e=>{if(typeof window>`u`||e.length===0)return;let t=await x(`/api/openchamber/session-index/snapshot`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:e})});t.status!==501&&await eC(t)},pC=1,mC=`oc.sessionIndexStartupCache`,hC=1e6,gC=e=>!!e&&typeof e==`object`&&!Array.isArray(e),_C=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),vC=e=>!(!gC(e)||typeof e.active!=`boolean`||typeof e.completed!=`number`||!Number.isFinite(e.completed)||typeof e.total!=`number`||!Number.isFinite(e.total)||!_C(e.pendingDirectories)||!_C(e.completedDirectories)||!_C(e.failedDirectories)||e.enriching!==void 0&&typeof e.enriching!=`boolean`),yC=e=>gC(e)&&typeof e.id==`string`&&e.id.length>0&&typeof e.title==`string`&&typeof e.directory==`string`&&e.directory.length>0&&gC(e.time)&&typeof e.time.created==`number`&&Number.isFinite(e.time.created)&&typeof e.time.updated==`number`&&Number.isFinite(e.time.updated),bC=e=>!gC(e)||typeof e.directory!=`string`||!e.directory.trim()||e.cursor!==null&&(typeof e.cursor!=`number`||!Number.isFinite(e.cursor))||typeof e.hasMore!=`boolean`||typeof e.lastSyncedAt!=`number`||!Number.isFinite(e.lastSyncedAt)||typeof e.lastFullSyncedAt!=`number`||!Number.isFinite(e.lastFullSyncedAt)||typeof e.lastAccessedAt!=`number`||!Number.isFinite(e.lastAccessedAt)?!1:Array.isArray(e.sessions)&&e.sessions.every(yC),xC=e=>!gC(e)||typeof e.revision!=`number`||!Number.isFinite(e.revision)||!vC(e.sync)||!Array.isArray(e.directories)||e.pinnedSessionIds!==void 0&&!_C(e.pinnedSessionIds)?!1:e.directories.every(bC),SC=e=>gC(e)&&e.version===pC&&gC(e.entries),CC=e=>{if(!e)return null;try{let t=JSON.parse(e);return SC(t)?{version:pC,entries:t.entries}:null}catch{return null}},wC=(e,t)=>{try{let n=Object.keys(t.entries);for(;n.length>0;){let r=Object.fromEntries(n.map(e=>[e,t.entries[e]])),i=JSON.stringify({version:t.version,entries:r});if(i.length<=hC){e.setItem(mC,i);return}if(n.length===1)return;n.shift()}}catch{}},TC=(e,t)=>{if(!e)return null;let n;try{n=t.getItem(mC)}catch{return null}let r=CC(n);if(!r)return null;let i=r.entries[e];return xC(i)?i:null},EC=(e,t,n)=>{if(!e||!xC(t))return;let r=null;try{r=n.getItem(mC)}catch{return}let{[e]:i,...a}=CC(r)?.entries??{},o={...a,[e]:t},s=Object.keys(o).slice(-8);wC(n,{version:pC,entries:Object.fromEntries(s.map(e=>[e,o[e]]))})},DC=(e,t)=>{let n=e?.identity===t.identity?e:null,r=t.content.trim().length>0,i=n?.appeared??!1,a=(n?.wasActive??!1)||t.isActive,o=t.content!==(n?.content??``);return{shouldEmit:t.mode===`appearance`?a&&r&&!i:a&&r&&o,nextState:{identity:t.identity,content:t.content,appeared:i||r,wasActive:a}}},OC=(e,t)=>!e||t,kC=(e=1e3)=>{let t=new Set,n=Math.max(1,Math.floor(e));return e=>{if(e.kind===`text`)return!0;let r=`${e.sessionID}\u0000${e.messageID}\u0000${e.partID}\u0000${e.kind}`;if(t.has(r))return!1;for(t.add(r);t.size>n;){let e=t.values().next().value;if(typeof e!=`string`)break;t.delete(e)}return!0}},AC=new Set,jC=()=>AC.size>0,MC=e=>{for(let t of AC)t(e)},NC=e=>(AC.add(e),()=>AC.delete(e)),PC=3e4,FC=3e3,IC=1e3,LC=0,RC=0,zC=0,BC=null;function VC(e){try{if(e===`medium`){RC+=1;return}if(e===`heavy`){zC+=1;return}LC+=1}catch{}}function HC(){return{light:LC,medium:RC,heavy:zC}}function UC(){LC=0,RC=0,zC=0}function WC(e){if(e.length===0)return{avg:null,min:null,p10:null};let t=e.map(e=>e>0?1e3/e:0),n=t.reduce((e,t)=>e+t,0)/t.length,r=Math.min(...t),i=[...t].sort((e,t)=>e-t);return{avg:n,min:r,p10:i[Math.max(0,Math.min(i.length-1,Math.floor(.1*(i.length-1))))]??r}}function GC(){let e=0,t=0,n=0,r=0,i=0,a=0,o=0,s=0,c=0,l=[];return{addLongTaskMs(r){!Number.isFinite(r)||r<0||(e+=1,t+=r,r>n&&(n=r))},addLagMs(e){!Number.isFinite(e)||e<0||(r+=1,i+=e,e>a&&(a=e))},addFpsDelta(e){!Number.isFinite(e)||e<0||l.push(e)},noteHaptic(e){if(e===`medium`){s+=1;return}if(e===`heavy`){c+=1;return}o+=1},snapshotWindow(){let u=WC(l),d={longTaskCount:e,longTaskTotalMs:t,longTaskMaxMs:n,eventLoopLagMaxMs:a,eventLoopLagAvgMs:r>0?i/r:0,hapticLightCount:o,hapticMediumCount:s,hapticHeavyCount:c};return u.avg==null?d:{...d,fpsAvg:u.avg,fpsMin:u.min??void 0,fpsP10:u.p10??void 0}},reset(){e=0,t=0,n=0,r=0,i=0,a=0,o=0,s=0,c=0,l.length=0}}}function KC(){try{let e=performance.memory;return e?{used:typeof e.usedJSHeapSize==`number`?Math.round(e.usedJSHeapSize/1048576):void 0,limit:typeof e.jsHeapSizeLimit==`number`?Math.round(e.jsHeapSizeLimit/1048576):void 0}:{}}catch{return{}}}function qC(){let e={};try{typeof document<`u`&&document.visibilityState&&(e.visible=document.visibilityState===`visible`)}catch{}try{typeof document<`u`&&document.documentElement&&(e.foreground=document.documentElement.classList.contains(`oc-native-app-active`))}catch{}return e}function JC(e){let t=KC(),n=qC();return{at:e.at,feat:`perf`,kind:`perf-window`,sessionID:`app`,longTaskCount:e.snapshot.longTaskCount,longTaskTotalMs:e.snapshot.longTaskTotalMs,longTaskMaxMs:e.snapshot.longTaskMaxMs,eventLoopLagMaxMs:e.snapshot.eventLoopLagMaxMs,eventLoopLagAvgMs:e.snapshot.eventLoopLagAvgMs,hapticLightCount:e.haptics.light,hapticMediumCount:e.haptics.medium,hapticHeavyCount:e.haptics.heavy,platform:e.platform,...e.snapshot.fpsAvg==null?{}:{fpsAvg:e.snapshot.fpsAvg,fpsMin:e.snapshot.fpsMin,fpsP10:e.snapshot.fpsP10},...t.used==null?{}:{jsHeapUsedMB:t.used},...t.limit==null?{}:{jsHeapLimitMB:t.limit},...n.visible==null?{}:{visible:n.visible},...n.foreground==null?{}:{foreground:n.foreground}}}function YC(e={}){if(BC)return BC;let t=e.isEnabled??V_,n=e.record??W_,r=e.now??(()=>Date.now()),i=e.getPlatform??(()=>rr()),a=GC(),o=!1,s,c,l,u,d,f,p=e=>{try{e()}catch{}},m=()=>{if(l!=null&&(clearTimeout(l),l=void 0),u!=null&&typeof cancelAnimationFrame==`function`){try{cancelAnimationFrame(u)}catch{}u=void 0}d=void 0},h=()=>{if(m(),typeof requestAnimationFrame!=`function`)return;let e=r()+FC,t=n=>{o||p(()=>{d!=null&&a.addFpsDelta(n-d),d=n,r()<e?u=requestAnimationFrame(t):(u=void 0,d=void 0)})};u=requestAnimationFrame(t),l=setTimeout(()=>{p(()=>{u!=null&&typeof cancelAnimationFrame==`function`&&(cancelAnimationFrame(u),u=void 0),d=void 0})},FC)},g=()=>{p(()=>{let e=a.snapshotWindow(),o=HC();t()&&n(JC({at:r(),snapshot:e,haptics:o,platform:i()})),UC(),a.reset()})},_=()=>{s=setTimeout(()=>{o||(g(),h(),_())},PC)},v=()=>{let e=r()+IC;c=setTimeout(()=>{o||(p(()=>{let t=Math.max(0,r()-e);a.addLagMs(t)}),v())},IC)};p(()=>{if(!(typeof PerformanceObserver>`u`))try{f=new PerformanceObserver(e=>{p(()=>{for(let t of e.getEntries())a.addLongTaskMs(t.duration)})}),f.observe({entryTypes:[`longtask`]})}catch{f=void 0}}),h(),v(),_();let y=()=>{if(!o){if(o=!0,s!=null&&clearTimeout(s),c!=null&&clearTimeout(c),m(),f){try{f.disconnect()}catch{}f=void 0}BC===y&&(BC=null)}};return BC=y,y}var K=t(Le(),1),XC=typeof window<`u`?K.useLayoutEffect:K.useEffect,ZC=Lr(`OpenChamberHaptics`),QC=null,$C=()=>(QC??=Rr.isPluginAvailable(`OpenChamberHaptics`),QC);function ew(e){switch(e){case`medium`:return`impactMedium`;case`heavy`:return`impactHeavy`;default:return`impactLight`}}function tw(){return typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0}function nw(){if(!tw())return!1;let e=window.Capacitor?.getPlatform?.();return e===`ios`||e===`android`}function rw(e){let{eventSessionId:t,currentSessionId:n,isForeground:r,isVisible:i}=e;return!n||t!==n?{shouldTrigger:!1,reason:`different-session`}:r?i?{shouldTrigger:!0,reason:`trigger`}:{shouldTrigger:!1,reason:`hidden`}:{shouldTrigger:!1,reason:`background`}}var iw=20,aw=750;function ow(e,t){return t-e>=iw}function sw(e,t){return t-e>=aw}function cw(e){return!e.thresholdReached&&e.available&&e.distance>=e.enterDistance?{thresholdReached:!0,event:`enter`}:e.thresholdReached&&(!e.available||e.distance<=e.cancelDistance)?{thresholdReached:!1,event:`cancel`}:{thresholdReached:e.thresholdReached,event:null}}var lw=-1/0;function uw(e=`light`,t){if(!nw()||!$C()||document.visibilityState!==`visible`||!document.documentElement.classList.contains(`oc-native-app-active`))return!1;let n=Date.now();return!t?.bypassCadence&&!ow(lw,n)?!1:(lw=n,ZC[ew(e)]().catch(()=>void 0),VC(e),!0)}var dw=`button, [role="button"], [role="menuitem"]`;function fw(){let e=(0,U.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],K.useEffect(pw,t)}function pw(){if(!nw())return;let e=mw;return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}function mw(e){if(!e.isTrusted||!(e.target instanceof Element))return;let t=e.target.closest(dw);t&&(t.matches(`:disabled, [aria-disabled="true"], [data-mobile-press-feedback="none"]`)||uw(`light`))}function hw(){let e=(0,U.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],XC(gw,t)}function gw(){if(!nw())return;let e=kC(),t=rr()===`android`,n=-1/0;return NC(r=>{if(!e(r))return;let i=$.getState().currentSessionId,a=document.documentElement.classList.contains(`oc-native-app-active`);if(rw({eventSessionId:r.sessionID,currentSessionId:i,isForeground:a,isVisible:document.visibilityState===`visible`}).shouldTrigger){if(t&&r.kind===`text`){let e=Date.now();if(!sw(n,e))return;uw()&&(n=e);return}uw()}})}var _w=async e=>{let t=await Ur(e);t.ok||console.error(`Failed to copy to clipboard:`,t.error)},vw=e=>e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(vw).join(` `).trim():(0,K.isValidElement)(e)?vw(e.props?.children):``,yw=e=>typeof e==`function`?e():e,bw=(e,t)=>{let n=vw(yw(t?.description));return n.length>0?n:vw(e)},xw=Object.assign((...e)=>(uw(),Br(...e)),{...Br,success:(...e)=>{let[t,n]=e;return uw(),Br.success(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},info:(...e)=>{let[t,n]=e;return uw(),Br.info(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},error:(...e)=>{let[t,n]=e;return uw(),Br.error(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>_w(bw(t,n))}})},warning:(...e)=>{let[t,n]=e;return uw(),Br.warning(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>_w(bw(t,n))}})},loading:(...e)=>(uw(),Br.loading(...e)),custom:(...e)=>(uw(),Br.custom(...e)),promise:(...e)=>(uw(),Br.promise(...e))}),Sw=new Set,Cw,ww=Sw,Tw=null,Ew=(e,t)=>qr(Kr.getState().dictionary,e,t),Dw=e=>{let t=e?.time?.pinned;return t!=null&&t!==``},Ow=e=>{if(!e)return Sw;let t=new Set;if(Array.isArray(e.pinnedSessionIds))for(let n of e.pinnedSessionIds)typeof n==`string`&&n&&t.add(n);for(let n of e.directories)for(let e of n.sessions)Dw(e)&&t.add(e.id);return t.size===0?Sw:t},kw=(e,t)=>{if(e===t)return!0;if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0},Aw=(e=_,t=u())=>{let n=Vw(e,t);if(n===Cw&&t===Tw)return ww;let r=Ow(n);return Cw=n,Tw=t,ww=kw(ww,r)?ww:r,ww},jw=(e,t,n)=>{let r=!1,i=e.directories.map(e=>{let i=!1,a=e.sessions.map(e=>{if(e.id!==t)return e;let a=e.time?.pinned??null;return(a==null||a===``?null:a)===n?e:(i=!0,r=!0,{...e,time:{...e.time,pinned:n}})});return i?{...e,sessions:a}:e}),a=Ow(e),o=new Set(a);return n==null||n===``?o.delete(t):o.add(t),kw(a,o)||(r=!0),r?{...e,directories:i,pinnedSessionIds:[...o]}:e},Mw=(e,t,n,r)=>{let i=Vw(e,t);if(!i)return null;let a=jw(i,n,r?new Date().toISOString():null);return a!==i&&Uw(a,{client:e,transport:t,persist:!1}),i},Nw=e=>_.getQueryCache().subscribe(t=>{if(t.type!==`updated`&&t.type!==`removed`)return;let n=t.query.queryKey;!Array.isArray(n)||n[1]!==`sessionIndex`||n[2]!==`snapshot`||e()}),Pw=()=>Aw(),Fw=()=>(0,K.useSyncExternalStore)(Nw,Pw,Lw),Iw=()=>{let e=(0,U.c)(6),t=Mr(),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`sessionIndex`,`pin`],e[0]=n):n=e[0];let r;e[1]===t?r=e[2]:(r={mutationKey:n,mutationFn:Rw,onMutate:e=>{let{sessionId:n,nextPinned:r,transport:i}=e;return{previous:Mw(t,i,n,r),transport:i}},onError:(e,n,r)=>{r?.previous&&Uw(r.previous,{client:t,transport:r.transport,persist:!1}),xw.error(e instanceof Error?e.message:Ew(n.nextPinned?`sessions.sidebar.session.pin.error`:`sessions.sidebar.session.unpin.error`))}},e[1]=t,e[2]=r);let i=Nr(r),a;return e[3]!==t||e[4]!==i?(a=e=>{let n=e.trim();if(!n)return;let r=u(),a=Vw(t,r);if(!a)return;let o=Ow(a).has(n);i.mutate({sessionId:n,nextPinned:!o,transport:r})},e[3]=t,e[4]=i,e[5]=a):a=e[5],Hr(a)};function Lw(){return Sw}async function Rw(e){let{sessionId:t,nextPinned:n}=e;n?await lC(t):await uC(t)}var zw=(e=u())=>y.sessionIndex.snapshot(e),Bw=(e=u(),t=m(),n=Cr(),r=oC)=>{let i=t,a=n,o=r;return{queryKey:zw(e),queryFn:async({signal:e})=>{let t=await o({signal:e});return t&&EC(i,t,a),t},staleTime:0,gcTime:1/0,initialData:()=>TC(i,a)??void 0,initialDataUpdatedAt:0}},Vw=(e=_,t=u())=>e.getQueryData(zw(t))??null,Hw=(e=_,t=u(),n=m(),r=Cr())=>{let i=Bw(t,n,r);return e.getQueryCache().build(e,i),e.getQueryData(i.queryKey)??null},Uw=(e,t)=>{if(!xC(e))return;let n=t?.client??_,r=t?.transport??u(),i=t?.runtimeKey??m(),a=t?.storage??Cr();n.setQueryData(zw(r),e),t?.persist!==!1&&EC(i,e,a)},Ww=(e=_,t=u(),n=m(),r=Cr(),i=oC)=>{let a={...Bw(t,n,r,i),staleTime:0};return e.getQueryCache().build(e,a),e.fetchQuery(a)},Gw=(e,t=_,n=u(),r=m(),i=Cr(),a=oC)=>{let o=t.getQueryState(zw(n));return o?.data&&o.dataUpdatedAt>0&&!o.isInvalidated&&o.data.revision>=e?Promise.resolve(o.data):Ww(t,n,r,i,a)},Kw=500,qw=20,Jw=6e3,Yw=7,Xw=3,Zw=1,Qw=2,$w=750,eT=500,tT=1e4,nT=2,rT=(e,t)=>new Promise(n=>{if(t.aborted){n();return}let r=setTimeout(()=>{t.removeEventListener(`abort`,i),n()},e),i=()=>{clearTimeout(r),n()};t.addEventListener(`abort`,i,{once:!0})}),iT=(e,t)=>{if(t.aborted)return Promise.resolve();let n=globalThis.scheduler;return n?.postTask?n.postTask(()=>{t.aborted||e()},{priority:`background`,signal:t}).catch(e=>{if(!t.aborted)throw e}):new Promise((n,r)=>{let i=typeof globalThis.requestIdleCallback==`function`,a=()=>{t.removeEventListener(`abort`,s);try{t.aborted||e(),n()}catch(e){r(e)}},o=i?globalThis.requestIdleCallback(a,{timeout:500}):globalThis.setTimeout(a,32),s=()=>{i?globalThis.cancelIdleCallback(o):globalThis.clearTimeout(o),n()};t.addEventListener(`abort`,s,{once:!0})})},aT=null,q=0,oT=new Map,sT=new Map,cT=new Map,lT=[],uT=new Set,dT=0,fT=Xw,pT=0,mT=null,hT,gT=new Map,_T,vT,yT=()=>{let e={loadGeneration:q,runtimeGeneration:f(),transportIdentity:u()};return(!_T||_T.loadGeneration!==e.loadGeneration||_T.runtimeGeneration!==e.runtimeGeneration||_T.transportIdentity!==e.transportIdentity)&&(_T=e,vT=void 0),e},J=e=>e.loadGeneration===q&&e.runtimeGeneration===f()&&e.transportIdentity===u(),bT=e=>{let t=e?.status;if(t===429||t===502||t===503)return!0;let n=String(e instanceof Error?e.message:e).toLowerCase();return n.includes(`signal timed out`)||n.includes(`timeout`)},xT=e=>{pT=0,bT(e)&&(fT=fT>Xw?Xw:Zw)},ST=()=>{pT+=1,!(pT<Qw||fT>=Yw)&&(fT+=1,pT=0)},CT=()=>{for(;dT<fT&&lT.length>0;){let e=lT.shift();if(!e)return;dT+=1,e()}},wT=e=>new Promise((t,n)=>{lT.push(()=>{e().then(t,n).finally(()=>{--dT,CT()})}),CT()}),TT=e=>{let t=e;return I(t.directory??null)??I(t.project?.worktree??null)},ET=(e,t)=>{let n=wo(e.id,e.directory,e.time?.updated);if(n&&e.directory!==n&&(e=t?.directory===n?t:{...e,directory:n}),!t)return e;let r=e,i=t,a=I(r.directory??null),o=I(r.project?.worktree??null),s=I(i.directory??null),c=I(i.project?.worktree??null),l=!1,u={...r};!a&&s&&(u.directory=i.directory,l=!0),!o&&c?(u.project={...i.project??{},...r.project??{},worktree:i.project?.worktree},l=!0):!r.project&&i.project&&(u.project=i.project,l=!0);let d=r.hasChildren,f=i.hasChildren;typeof d!=`boolean`&&typeof f==`boolean`&&(u.hasChildren=f,l=!0);let p=pd(t);if(p>pd(e)){let e=r.metadata&&typeof r.metadata==`object`?r.metadata:{},t=e.openchamber&&typeof e.openchamber==`object`?e.openchamber:{},n=t.titleRefresh&&typeof t.titleRefresh==`object`?t.titleRefresh:{};u.metadata={...e,openchamber:{...t,titleRefresh:{...n,activityUpdatedAt:p}}},l=!0}return l?u:e},DT=(e,t)=>{let n=ET(e,t),r=e.time?.updated??e.time?.created??0,i=(t.time?.updated??t.time?.created??0)>r?t.title:n.title;return n.share!==t.share||n.title!==i?{...n,title:i,share:t.share}:n},OT=(e,t)=>{if(t.length===0)return e.slice();let n=new Map(t.map(e=>[e.id,e])),r=e.map(e=>{let t=n.get(e.id);return t?DT(t,e):e}),i=new Set(r.map(e=>e.id));for(let e of t)i.has(e.id)||(r.push(e),i.add(e.id));return r},kT=e=>{let t=new Map;for(let n of e){let e=TT(n);if(!e)continue;let r=t.get(e);if(r){r.push(n);continue}t.set(e,[n])}return t},AT=e=>[e.id,e.title??``,e.time?.created??0,e.time?.updated??0,e.time?.archived??0,e.share?.url??``,JSON.stringify(e.metadata??null),String(e.hasChildren??!1),TT(e)??``].join(`:`),jT=e=>{let t=e;return[e.id,e.title??``,t.parentID??``,e.time?.created??0,e.time?.archived??0,e.share?.url??``,JSON.stringify(t.metadata??null),String(t.hasChildren??!1),TT(e)??``].join(`:`)},MT=(e,t)=>e.time?.updated!==t.time?.updated&&jT(e)===jT(t),NT=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(AT(e[n])!==AT(t[n]))return!1;return!0},PT=e=>{let t=e.time?.archived;return typeof t==`number`&&Number.isFinite(t)&&t>0},FT=(e,t)=>{let n=new Set,r=!1;for(let t of e){if(!t?.id||n.has(t.id)||PT(t)){r=!0;break}n.add(t.id)}if(!r){let e=new Set;for(let i of t){if(!i?.id||e.has(i.id)||n.has(i.id)||!PT(i)){r=!0;break}e.add(i.id)}}if(!r)return{activeSessions:e,archivedSessions:t};let i=new Map;for(let t of e)t?.id&&i.set(t.id,t);for(let e of t){if(!e?.id)continue;let t=i.get(e.id);i.set(e.id,t?ET(e,t):e)}let a=[],o=[],s=new Set,c=e=>{if(!e?.id||s.has(e.id))return;s.add(e.id);let t=i.get(e.id)??e;PT(t)?o.push(t):a.push(t)};return e.forEach(c),t.forEach(c),{activeSessions:a,archivedSessions:o}},IT=(e,t)=>{if(t.size===0)return e;let n=e.findIndex(e=>t.has(e.id));return n===-1?e:e.filter((e,r)=>r!==n&&!t.has(e.id))},LT=e=>[...e].sort((e,t)=>{let n=pd(t)-pd(e);return n===0?t.id.localeCompare(e.id):n}),RT=e=>{let t=new Set;for(let n of e){let e=I(n);e&&t.add(e)}return t},zT=e=>{let t=RT(e);for(let e of t)gT.set(e,(gT.get(e)??0)+1);return t},BT=e=>{let t=new Set;for(let n of e){let e=gT.get(n)??0;if(e<=1){gT.delete(n),t.add(n);continue}gT.set(n,e-1)}return t},VT=(e,t)=>{let n=e.loadingDirectories,r=e.refreshingDirectories;for(let i of t)oT.has(i)||(n.has(i)&&(n===e.loadingDirectories&&(n=new Set(e.loadingDirectories)),n.delete(i)),r.has(i)&&(r===e.refreshingDirectories&&(r=new Set(e.refreshingDirectories)),r.delete(i)));return n===e.loadingDirectories&&r===e.refreshingDirectories?e:{loadingDirectories:n,refreshingDirectories:r}},HT=e=>{let t=e[e.length-1]?.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:null},UT=(e,t)=>{let n=HT(e);return{cursor:n,hasMore:e.length===qw&&n!==null&&(t==null||n<t),loadingMore:!1}},WT=(e,t,n)=>{if(n.size===0)return e;let r=new Map(e.map(e=>[e.id,e])),i=new Map;for(let e of t)e?.id&&i.set(e.id,ET(e,r.get(e.id)));let a=e.filter(e=>{if(i.has(e.id))return!1;let t=TT(e);return!t||!n.has(t)});return LT([...i.values(),...a])},GT=(e,t)=>e.cursor===null?!e.hasMore&&(t.hasMore||t.cursor!==null):t.cursor===null||e.cursor<t.cursor,KT=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;if(e.length===0)return null;let n=LT(e),r=n[n.length-1];return r?pd(r):null},qT=(e,t)=>pd(e)<=t,JT=(e,t,n,r,i)=>{if(n.size===0)return e;let a=new Map(e.map(e=>[e.id,e])),o=new Map;for(let e of t.values())for(let t of e)t?.id&&o.set(t.id,ET(t,a.get(t.id)));let s=e.filter(e=>{if(o.has(e.id))return!1;let t=TT(e);if(!t||!n.has(t))return!0;if(!i.has(t))return!1;let a=r.get(t);return a!=null&&qT(e,a)});return LT([...o.values(),...s])},YT=(e,t,n=0,r={remaining:4096})=>{if(Object.is(e,t))return!0;if(--r.remaining<0||n>32||e===null||t===null||typeof e!=`object`||typeof t!=`object`||Array.isArray(e)!==Array.isArray(t))return!1;let i=Object.keys(e),a=Object.keys(t);if(i.length!==a.length)return!1;let o=e,s=t;return i.every(e=>Object.prototype.hasOwnProperty.call(s,e)&&YT(o[e],s[e],n+1,r))},XT=(e,t)=>e.size===t.size&&[...t].every(t=>e.has(t))?e:t,ZT=(e,t)=>{let n=e.size===t.size;for(let[r,i]of t)e.has(r)&&YT(e.get(r),i)?t.set(r,e.get(r)):n=!1;return n?e:t},QT=(e,t,n)=>{if(vT!==void 0&&t.revision<vT)return e;let r=n&&t.revision===vT;n&&(vT=t.revision);let i=new Set(t.directories.map(e=>e.directory)),a=new Map;for(let n of t.directories)a.set(n.directory,IT(n.sessions,e.pendingDeletionIds));let o=[...a.values()].flat(),s=new Map;if(n)for(let t of e.activeSessions){let e=TT(t);!e||!i.has(e)||s.set(e,(s.get(e)??0)+1)}let c=new Map,l=new Set;if(n)for(let n of t.directories){let t={cursor:n.cursor,hasMore:n.hasMore},r=e.activePaginationByDirectory.get(n.directory),i=(s.get(n.directory)??0)>qw;n.hasMore&&i&&r&&GT(r,t)&&l.add(n.directory),c.set(n.directory,KT(a.get(n.directory)??[],n.cursor))}let u=r?e.activeSessions:n?JT(e.activeSessions,a,i,c,l):LT(tE(e.activeSessions,o));if(u!==e.activeSessions){let t=new Map(e.activeSessions.map(e=>[e.id,e]));u=u.map(e=>{let n=t.get(e.id);return n&&YT(n,e)?n:e}),u.length===e.activeSessions.length&&u.every((t,n)=>t===e.activeSessions[n])&&(u=e.activeSessions)}let d=u===e.activeSessions?e.sessionsByDirectory:kT(u),f=new Map(e.activePaginationByDirectory),p=new Map(e.sessionIndexSyncByDirectory);for(let r of t.directories){let t={cursor:r.cursor,hasMore:r.hasMore,loadingMore:!1},i=e.activePaginationByDirectory.get(r.directory);f.set(r.directory,n&&l.has(r.directory)&&i?{cursor:i.cursor,hasMore:i.hasMore,loadingMore:!1}:t),p.set(r.directory,{lastSyncedAt:r.lastSyncedAt,lastFullSyncedAt:r.lastFullSyncedAt})}let m=new Set(e.loadedDirectories);for(let e of i)m.add(e);let h=new Set(e.loadingDirectories),g=new Set(e.refreshingDirectories),_=new Set(t.sync.pendingDirectories);for(let e of _)d.has(e)?(g.add(e),h.delete(e)):h.add(e);for(let e of[...t.sync.completedDirectories,...t.sync.failedDirectories])h.delete(e),g.delete(e);if(n)for(let e of gT.keys())_.has(e)||oT.has(e)||(h.delete(e),g.delete(e));let v={activeSessions:u,sessionsByDirectory:d,reviewTransferBySessionId:u===e.activeSessions?e.reviewTransferBySessionId:rE(u),cachedDirectories:XT(e.cachedDirectories,i),sessionIndexSyncByDirectory:ZT(e.sessionIndexSyncByDirectory,p),activePaginationByDirectory:ZT(e.activePaginationByDirectory,f),loadedDirectories:XT(e.loadedDirectories,m),loadingDirectories:XT(e.loadingDirectories,h),refreshingDirectories:XT(e.refreshingDirectories,g),hasLoaded:!0,status:e.status===`idle`||e.status===`loading`?`ready`:e.status};return Object.keys(v).every(t=>v[t]===e[t])?e:v},$T=(e,t)=>{let n=IT(t.activeSessions,e.pendingDeletionIds),r=IT(t.fallbackActive??[],e.pendingDeletionIds),i=t.mergeOnly?LT(tE(e.activeSessions,n)):WT(e.activeSessions,n,t.directories);i=tE(i,r);let a=t.archivedSessions===void 0?void 0:IT(t.archivedSessions,e.pendingDeletionIds),o=a===void 0?e.archivedSessions:WT(e.archivedSessions,a,t.directories),s=FT(i,o);i=s.activeSessions,o=s.archivedSessions,NT(e.activeSessions,i)&&(i=e.activeSessions),NT(e.archivedSessions,o)&&(o=e.archivedSessions);let c=i===e.activeSessions?e.sessionsByDirectory:kT(i),l=e.loadedDirectories,u=!1;for(let n of t.directories)l.has(n)||(u||=(l=new Set(e.loadedDirectories),!0),l.add(n));let d=e.loadingDirectories,f=!1;for(let n of t.directories)d.has(n)&&(f||=(d=new Set(e.loadingDirectories),!0),d.delete(n));let p=t.markReady?`ready`:e.status,m=t.markReady?!0:e.hasLoaded;return i===e.activeSessions&&o===e.archivedSessions&&c===e.sessionsByDirectory&&l===e.loadedDirectories&&d===e.loadingDirectories&&e.status===p&&e.hasLoaded===m?e:{activeSessions:i,archivedSessions:o,sessionsByDirectory:c,reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:rE(i),loadedDirectories:l,loadingDirectories:d,hasLoaded:m,status:p}},eE=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[t,...e];let r=e[n],i=ET(t,r);if(MT(r,i)||AT(r)===AT(i))return e;let a=[...e];return a[n]=i,a},tE=(e,t)=>{if(!t||t.length===0)return e;if(e.length===0)return t;let n=new Map(e.map(e=>[e.id,e]));t.forEach(e=>{n.set(e.id,ET(e,n.get(e.id)))});let r=[],i=new Set;return e.forEach(e=>{let t=n.get(e.id);t&&(r.push(t),i.add(e.id))}),t.forEach(e=>{if(i.has(e.id))return;let t=n.get(e.id);t&&(r.push(t),i.add(e.id))}),r},nE=(e,t,n,r)=>{let i=FT(t,n),a=IT(i.activeSessions,e.pendingDeletionIds),o=IT(i.archivedSessions,e.pendingDeletionIds),s=NT(e.activeSessions,a)?e.activeSessions:a,c=NT(e.archivedSessions,o)?e.archivedSessions:o,l=s===e.activeSessions?e.sessionsByDirectory:kT(s),u=s===e.activeSessions?e.reviewTransferBySessionId:rE(s);return s===e.activeSessions&&c===e.archivedSessions&&l===e.sessionsByDirectory&&u===e.reviewTransferBySessionId&&e.hasLoaded&&e.status===r?e:{activeSessions:s,archivedSessions:c,sessionsByDirectory:l,reviewTransferBySessionId:u,hasLoaded:!0,status:r}},rE=e=>{let t=new Map,n=new Set(e.map(e=>e.id));for(let r of e){let e=GS(r);if(!e)continue;let i=e===`review-to-original`?rf(r):nf(r);!i||!n.has(i)||t.set(r.id,e)}return t},Y=Ne((e,t)=>({activeSessions:[],archivedSessions:[],sessionsByDirectory:new Map,reviewTransferBySessionId:new Map,loadedDirectories:new Set,loadingDirectories:new Set,refreshingDirectories:new Set,archivedLoadedDirectories:new Set,archivedLoadingDirectories:new Set,activePaginationByDirectory:new Map,cachedDirectories:new Set,hasHydratedSessionIndex:!1,hasCachedSessionIndex:!1,sessionIndexSyncByDirectory:new Map,hasLoadedFullCatalog:!1,fullCatalogSessionIds:new Set,fullCatalogGeneration:0,pendingDeletionIds:new Set,hasLoaded:!1,status:`idle`,startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0},applySnapshot:(t,n,r=`ready`)=>{e(e=>nE(e,t,n,r))},resetForRuntimeSwitch:()=>{q+=1,_T=void 0,vT=void 0,XS(),aT=null,oT.clear(),sT.clear(),cT.clear(),uT.forEach(e=>e.abort()),uT.clear(),fT=Xw,pT=0,mT?.abort(),mT=null,hT=void 0,gT.clear(),e({activeSessions:[],archivedSessions:[],sessionsByDirectory:new Map,reviewTransferBySessionId:new Map,loadedDirectories:new Set,loadingDirectories:new Set,refreshingDirectories:new Set,archivedLoadedDirectories:new Set,archivedLoadingDirectories:new Set,activePaginationByDirectory:new Map,cachedDirectories:new Set,hasHydratedSessionIndex:!1,hasCachedSessionIndex:!1,sessionIndexSyncByDirectory:new Map,hasLoadedFullCatalog:!1,fullCatalogSessionIds:new Set,fullCatalogGeneration:0,pendingDeletionIds:new Set,hasLoaded:!1,status:`idle`,startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}})},hydrateSessionIndex:async()=>{if(hT)return hT;if(t().hasHydratedSessionIndex)return;let n=yT(),r=u(),i=m(),a=Hw(void 0,r,i);a&&J(n)&&e(e=>({...QT(e,a,!1),hasCachedSessionIndex:!0}));let o=(async()=>{try{let t;try{t=await Ww(void 0,r,i)}catch(e){if(!J(n))return;if(a){console.warn(`[GlobalSessions] Failed to refresh runtime session index; keeping stale seed:`,e);return}throw e}if(!J(n))return;if(!t){e(e=>e.hasHydratedSessionIndex?e:{hasHydratedSessionIndex:!0});return}e(e=>({...QT(e,t,!1),hasCachedSessionIndex:t.directories.length>0,hasHydratedSessionIndex:!0}))}catch(e){console.warn(`[GlobalSessions] Failed to hydrate runtime session index:`,e)}})().finally(()=>{hT===o&&(hT=void 0)});return hT=o,hT},startSessionIndexStartup:async(n,r)=>{let i=yT();if(e({startupSyncProgress:{active:!0,phase:`restoring`,completed:0,total:0}}),await t().hydrateSessionIndex(),!J(i))return{activeSessions:[],archivedSessions:[]};t().hasHydratedSessionIndex||e({hasHydratedSessionIndex:!0});let a=RT([...n,...t().cachedDirectories]);if(a.size===0){e({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let n=t();return{activeSessions:n.activeSessions,archivedSessions:n.archivedSessions}}let o=t().hasCachedSessionIndex,s=r?.priorityDirectories?RT(r.priorityDirectories):null,c=!!(o&&s&&s.size>0&&[...s].some(e=>a.has(e))),l=c?new Set([...a].filter(e=>s.has(e))):a,u=c?new Set([...a].filter(e=>!s.has(e))):new Set,d={activeSessions:t().activeSessions,archivedSessions:t().archivedSessions},f=null,p=yT();try{if(f=await sC([...l]),!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};f&&Uw(f)}catch(e){if(!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}let m=()=>{if(u.size===0)return;let e=[...u],n=()=>{J(i)&&t().syncSessionsForDirectories(e,d.activeSessions)},r=new AbortController;uT.add(r),iT(n,r.signal).finally(()=>{uT.delete(r)})};if(!f){let e=lE(l,d.activeSessions,{retryFailed:!o});if(o)e.then(()=>{m()});else{if(await e,!J(i))return{activeSessions:[],archivedSessions:[]};m()}return d}mT?.abort();let h=new AbortController;mT=h;let g=zT(l),_=()=>{if(!J(i))return;let t=BT(g);t.size!==0&&e(e=>VT(e,t))},v=!o,y=f;v||e({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let b=()=>void 0,x=new Promise(e=>{b=e}),S=!1,C=()=>{S||(S=!0,b())};if((async()=>{let t=y,n=eT;for(;!h.signal.aborted&&J(i);){let r=yT(),a=cC(t.revision,h.signal,{safetyTimeoutMs:t.sync.active?void 0:null}),o=()=>{h.signal.aborted||!J(i)||e(e=>{let n=QT(e,t,!0);if(!v)return n;let r={active:t.sync.active,phase:t.sync.active?`syncing`:`idle`,completed:t.sync.completed,total:t.sync.total},i=e.startupSyncProgress;return i.active===r.active&&i.phase===r.phase&&i.completed===r.completed&&i.total===r.total?n:{...n,startupSyncProgress:r}})};if(v&&!S?o():await iT(o,h.signal),h.signal.aborted||!J(i))break;t.sync.active||C();let s=await a;if(!J(i)||!J(r)||s===`aborted`)break;let c;for(;!h.signal.aborted&&J(i);){let e=yT();try{let e=s===`tip`?bi(`session-index-changed`):void 0;c=e!==void 0&&e>t.revision?await Gw(e):await Ww()}catch{if(h.signal.aborted||!J(i)){c=void 0;break}if(await rT(n,h.signal),h.signal.aborted||!J(i)){c=void 0;break}n=Math.min(n*nT,tT);continue}if(!J(e)){c=void 0;break}if(!c)break;n=eT;break}if(c===void 0||!c)break;t=c}})().catch(e=>{h.signal.aborted||console.warn(`[GlobalSessions] Session index tip sync failed:`,e)}).finally(()=>{h.abort(),_(),C(),mT===h&&(mT=null),v&&J(i)&&e(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:e.startupSyncProgress.completed,total:e.startupSyncProgress.total}}))}),v){if(await x,!J(i))return{activeSessions:[],archivedSessions:[]};m()}else m();return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},loadSessions:async n=>{if(aT)return aT;e(e=>e.status===`loading`?e:{status:`loading`});let r=q,i=Promise.resolve().then(async()=>{let a=t();try{if(await YS(),r!==q)return{activeSessions:[],archivedSessions:[]};let i=H.getSdkClient(),[o,s]=await Promise.allSettled([Id(i,{archived:!1,pageSize:Kw}),Id(i,{archived:!0,pageSize:Kw})]),c=tE(a.activeSessions,n),l=o.status===`fulfilled`?o.value:c,u=s.status===`fulfilled`?s.value:a.archivedSessions;return o.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load active sessions, preserving existing snapshot with fallback merge:`,o.reason),s.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load archived sessions, preserving current snapshot:`,s.reason),r===q?(e(e=>{let t=o.status===`fulfilled`&&s.status===`fulfilled`?`ready`:`error`,n=nE(e,l,u,t);if(o.status!==`fulfilled`||s.status!==`fulfilled`)return n===e?e:n;let r=new Set([...o.value.map(e=>e.id),...s.value.map(e=>e.id)]);return{...n,hasLoadedFullCatalog:!0,fullCatalogSessionIds:r,fullCatalogGeneration:e.fullCatalogGeneration+1}}),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}):{activeSessions:[],archivedSessions:[]}}catch(i){if(r!==q)return{activeSessions:[],archivedSessions:[]};let o=tE(a.activeSessions,n),s=a.archivedSessions;return console.warn(`[GlobalSessions] Failed to load sessions, using fallback snapshot:`,i),e(e=>nE(e,o,s,`error`)),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}}finally{aT===i&&(aT=null)}});return aT=i,i},refreshSessionsForDirectories:async(n,r,i)=>{let a=RT(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=q;e(e=>{let t=tE(e.activeSessions,IT(r??[],e.pendingDeletionIds)),n=new Set(e.loadingDirectories),i=new Set(e.refreshingDirectories);for(let t of a)i.add(t),e.loadedDirectories.has(t)||e.sessionsByDirectory.has(t)||r?.some(e=>TT(e)===t)||n.add(t);return{...t===e.activeSessions?{}:{activeSessions:t,sessionsByDirectory:kT(t),reviewTransferBySessionId:rE(t)},loadingDirectories:n,refreshingDirectories:i,status:e.status===`idle`?`loading`:e.status}});let s=[...a].map(n=>{let r=oT.get(n);if(r)return r;let a=wT(async()=>{let r=new AbortController;uT.add(r);try{if(o!==q||(await YS(),o!==q))return!1;let a=await Id(H.getSdkClient(),{directory:n,archived:!1,roots:!0,...i?.incrementalStart===void 0?{}:{start:i.incrementalStart},pageSize:qw,maxItems:qw,timeoutMs:Jw,retryAttempts:2,signal:r.signal});if(o!==q)return!1;if(e(e=>{let t=$T(e,{activeSessions:a,directories:new Set([n]),markReady:!0,mergeOnly:i?.incrementalStart!==void 0}),r=new Set(e.refreshingDirectories),o=new Map(e.activePaginationByDirectory);return r.delete(n),i?.incrementalStart===void 0&&o.set(n,UT(a)),t===e?{refreshingDirectories:r,activePaginationByDirectory:o}:{...t,refreshingDirectories:r,activePaginationByDirectory:o}}),i?.persist!==!1){let e=t().sessionsByDirectory.get(n)??[],r=t().activePaginationByDirectory.get(n)??UT(a);try{await dC({directory:n,sessions:e,cursor:r.cursor,hasMore:r.hasMore,fullSync:i?.incrementalStart===void 0})}catch(e){console.warn(`[GlobalSessions] Failed to persist session index for ${n}:`,e)}}return ST(),!0}catch(t){return xT(t),o===q&&(console.warn(`[GlobalSessions] Failed to refresh active sessions for ${n}:`,t),e(e=>{let t=new Set(e.loadingDirectories),r=new Set(e.refreshingDirectories);return t.delete(n),r.delete(n),{loadingDirectories:t,refreshingDirectories:r}})),!1}finally{uT.delete(r)}});return oT.set(n,a),a.finally(()=>{oT.get(n)===a&&oT.delete(n)}),a}),c=await Promise.all(s);return o===q?([...a].forEach((e,t)=>{i?.onDirectoryResult?.(e,c[t]??!1)}),e(e=>({status:e.status===`loading`?c.some(Boolean)?`ready`:`error`:e.status,hasLoaded:!0})),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}):{activeSessions:[],archivedSessions:[]}},syncSessionsForDirectories:async(n,r)=>{let i=yT(),a=RT(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=null,s=yT();try{if(o=await sC([...a]),!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};o&&Uw(o)}catch(e){if(!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}if(!o)return t().refreshSessionsForDirectories(a,r);let c=new AbortController;uT.add(c);let l=zT(a),u=()=>{if(!J(i))return;let t=BT(l);t.size!==0&&e(e=>VT(e,t))};try{let t=o;for(;!c.signal.aborted&&J(i);){let n=yT(),r=t.sync.active?cC(t.revision,c.signal):null;if(await iT(()=>{J(i)&&e(e=>QT(e,t,!0))},c.signal),c.signal.aborted||!J(i)||!t.sync.active)break;let a=await r;if(!J(i)||!J(n)||a===`aborted`)break;let o=yT(),s;try{let e=a===`tip`?bi(`session-index-changed`):void 0;s=e!==void 0&&e>t.revision?await Gw(e):await Ww()}catch{break}if(!J(i)||!J(o)||!s)break;t=s}}catch(e){!c.signal.aborted&&J(i)&&console.warn(`[GlobalSessions] Session index sync failed:`,e)}finally{c.abort(),u(),uT.delete(c)}return J(i)?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},loadMoreSessionsForDirectory:async n=>{let r=I(n);if(!r){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=cT.get(r);if(i)return await i,{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions};let a=t().activePaginationByDirectory.get(r);if(!a?.hasMore||a.cursor===null){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=q;e(e=>{let t=new Map(e.activePaginationByDirectory);return t.set(r,{...a,loadingMore:!0}),{activePaginationByDirectory:t}});let s=wT(async()=>{let t=new AbortController;uT.add(t);try{if(await YS(),o!==q)return!1;let n=await Id(H.getSdkClient(),{directory:r,archived:!1,roots:!0,cursor:a.cursor??void 0,pageSize:qw,maxItems:qw,timeoutMs:Jw,retryAttempts:2,signal:t.signal});return o===q&&(e(e=>{let t=e.activeSessions.filter(e=>TT(e)===r),i=new Map(t.map(e=>[e.id,e]));IT(n,e.pendingDeletionIds).forEach(e=>{i.set(e.id,ET(e,i.get(e.id)))});let o=LT([...i.values()]),s=WT(e.activeSessions,o,new Set([r])),c=new Map(e.activePaginationByDirectory);return c.set(r,UT(n,a.cursor)),{activeSessions:NT(e.activeSessions,s)?e.activeSessions:s,sessionsByDirectory:kT(s),reviewTransferBySessionId:rE(s),activePaginationByDirectory:c}}),ST(),!0)}catch(t){return xT(t),o===q&&(console.warn(`[GlobalSessions] Failed to load more sessions for ${r}:`,t),e(e=>{let t=e.activePaginationByDirectory.get(r);if(!t)return e;let n=new Map(e.activePaginationByDirectory);return n.set(r,{...t,loadingMore:!1}),{activePaginationByDirectory:n}})),!1}finally{uT.delete(t)}});cT.set(r,s);try{await s}finally{cT.get(r)===s&&cT.delete(r)}return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},refreshArchivedSessionsForDirectories:async n=>{let r=RT(n);if(r.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=q;e(e=>{let t=new Set(e.archivedLoadingDirectories);return r.forEach(e=>t.add(e)),{archivedLoadingDirectories:t}});let a=[...r].map(t=>{let n=sT.get(t);if(n)return n;let r=wT(async()=>{let n=new AbortController;uT.add(n);try{if(i!==q||(await YS(),i!==q))return!1;let r=await Id(H.getSdkClient(),{directory:t,archived:!0,roots:!0,pageSize:qw,maxItems:qw,timeoutMs:Jw,retryAttempts:2,signal:n.signal});return i===q&&(e(e=>{let n=WT(e.archivedSessions,IT(r,e.pendingDeletionIds),new Set([t])),i=FT(e.activeSessions,n),a=NT(e.activeSessions,i.activeSessions)?e.activeSessions:i.activeSessions,o=NT(e.archivedSessions,i.archivedSessions)?e.archivedSessions:i.archivedSessions,s=new Set(e.archivedLoadedDirectories),c=new Set(e.archivedLoadingDirectories);return s.add(t),c.delete(t),{activeSessions:a,archivedSessions:o,sessionsByDirectory:a===e.activeSessions?e.sessionsByDirectory:kT(a),reviewTransferBySessionId:a===e.activeSessions?e.reviewTransferBySessionId:rE(a),archivedLoadedDirectories:s,archivedLoadingDirectories:c}}),!0)}catch(n){return i===q&&(console.warn(`[GlobalSessions] Failed to refresh archived sessions for ${t}:`,n),e(e=>{let n=new Set(e.archivedLoadingDirectories);return n.delete(t),{archivedLoadingDirectories:n}})),!1}finally{uT.delete(n)}});return sT.set(t,r),r.finally(()=>{sT.get(t)===r&&sT.delete(t)}),r});return await Promise.all(a),i===q?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},upsertSession:n=>{if(!Md(n)){t().removeSessions([n.id]);return}e(e=>{if(e.pendingDeletionIds.has(n.id))return e;let t=ET(n,e.activeSessions.find(e=>e.id===n.id)??e.archivedSessions.find(e=>e.id===n.id)??null),r=PT(t),i=r?e.activeSessions.filter(e=>e.id!==n.id):eE(e.activeSessions,t),a=r?eE(e.archivedSessions,t):e.archivedSessions.filter(e=>e.id!==n.id);return i===e.activeSessions&&a===e.archivedSessions?e:{activeSessions:i,archivedSessions:a,sessionsByDirectory:i===e.activeSessions?e.sessionsByDirectory:kT(i),reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:rE(i)}})},markSessionsPendingDeletion:t=>{e(e=>{let n=null;for(let r of t)!r||e.pendingDeletionIds.has(r)||(n??=new Set(e.pendingDeletionIds),n.add(r));return n?{pendingDeletionIds:n}:e})},clearSessionsPendingDeletion:t=>{e(e=>{let n=null;for(let r of t)e.pendingDeletionIds.has(r)&&(n??=new Set(e.pendingDeletionIds),n.delete(r));return n?{pendingDeletionIds:n}:e})},removeSessions:t=>{let n=t instanceof Set?t:new Set(t);n.size!==0&&e(e=>{let t=e.activeSessions.filter(e=>!n.has(e.id)),r=e.archivedSessions.filter(e=>!n.has(e.id));return t.length===e.activeSessions.length&&r.length===e.archivedSessions.length?e:{activeSessions:t,archivedSessions:r,sessionsByDirectory:kT(t),reviewTransferBySessionId:rE(t)}})},archiveSessions:(t,n=Date.now())=>{let r=t instanceof Set?t:new Set(t);r.size!==0&&e(e=>{let t=[],i=e.activeSessions.filter(e=>!r.has(e.id)||(t.push({...e,time:{...e.time,archived:n}}),!1));if(t.length===0)return e;let a=e.archivedSessions.filter(e=>!r.has(e.id));return{activeSessions:i,archivedSessions:[...t,...a],sessionsByDirectory:kT(i),reviewTransferBySessionId:rE(i)}})}})),iE=async e=>{let t=Y.getState();return t.hasLoadedFullCatalog&&t.status!==`error`?{activeSessions:t.activeSessions,archivedSessions:t.archivedSessions}:t.loadSessions(e)},aE=async()=>{await Y.getState().hydrateSessionIndex()},oE=async(e,t)=>Y.getState().startSessionIndexStartup(e,t),sE=async(e,t)=>Y.getState().refreshSessionsForDirectories(e,t),cE=async(e,t)=>Y.getState().syncSessionsForDirectories(e,t),lE=async(e,t,n)=>{let r=RT(e),i=q;if(r.size===0){Y.setState({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let e=Y.getState();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}Y.setState({startupSyncProgress:{active:!0,phase:`syncing`,completed:0,total:r.size}});let a=new Set,o=new Set(r);try{do await Promise.all([...o].map(async e=>{let r=!1;await Y.getState().refreshSessionsForDirectories([e],t,{persist:!1,incrementalStart:n?.incrementalStartByDirectory?.get(e),onDirectoryResult:(e,t)=>{r=t}}),i===q&&r&&!a.has(e)&&(a.add(e),Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,completed:a.size}})))})),o=new Set([...r].filter(e=>!a.has(e))),o.size>0&&n?.retryFailed===!0&&i===q&&await new Promise(e=>setTimeout(e,$w));while(o.size>0&&n?.retryFailed===!0&&i===q);if(i===q){Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,phase:`committing`}}));let e=Y.getState(),t=[...a].flatMap(t=>{let r=e.sessionsByDirectory.get(t)??[],i=e.activePaginationByDirectory.get(t);return[{directory:t,sessions:r,cursor:i?.cursor??null,hasMore:i?.hasMore??!1,fullSync:!n?.incrementalStartByDirectory?.has(t)}]});try{await fC(t);let e=Date.now();Y.setState(n=>{let r=new Map(n.sessionIndexSyncByDirectory);for(let n of t){let t=r.get(n.directory);r.set(n.directory,{lastSyncedAt:e,lastFullSyncedAt:n.fullSync?e:t?.lastFullSyncedAt??0})}return{sessionIndexSyncByDirectory:r}})}catch(e){console.warn(`[GlobalSessions] Failed to persist cold-start session index batch:`,e)}}}finally{i===q&&Y.setState(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:a.size,total:e.startupSyncProgress.total}}))}let s=Y.getState();return{activeSessions:s.activeSessions,archivedSessions:s.archivedSessions}},uE=async e=>Y.getState().refreshArchivedSessionsForDirectories(e),dE=async e=>Y.getState().loadMoreSessionsForDirectory(e),fE=`/api/session-folders/order`,pE=e=>[`session-order`,e],mE=async e=>{if(!e.ok)throw Error(`Session order: ${e.status}`);let t=await e.json();if(!Number.isFinite(t.revision)||!t.sessionOrderByScope||!t.sessionOrderActivityByScope)throw Error(`Invalid session order snapshot`);if(!Object.values(t.sessionOrderByScope).every(e=>Array.isArray(e)&&e.every(e=>typeof e==`string`))||!Object.values(t.sessionOrderActivityByScope).every(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.values(e).every(e=>typeof e==`number`&&Number.isFinite(e))))throw Error(`Invalid session order entries`);return t},hE=(e=u())=>({queryKey:pE(e),queryFn:async({signal:e})=>mE(await x(fE,{signal:e})),staleTime:0,retry:2,refetchOnWindowFocus:!0,structuralSharing:(e,t)=>{let n=e,r=t;return n&&n.revision>r.revision?n:kr(n,r)}}),gE=()=>_.getQueryData(pE(u())),_E=new Map,vE=(e,t,n,r=!1)=>{let i=u(),a=f(),o=()=>i===u()&&a===f(),s=(_E.get(i)??Promise.resolve()).catch(()=>{}).then(async()=>{if(!o())throw Error(`Runtime changed`);await _.cancelQueries({queryKey:pE(i),exact:!0});let a=await mE(await x(fE,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({scopeKey:e,order:t,activity:n,onlyIfAbsent:r})}));if(!o())throw Error(`Runtime changed`);return _.setQueryData(pE(i),e=>e&&e.revision>a.revision?e:a),a});return _E.set(i,s),s.finally(()=>{_E.get(i)===s&&_E.delete(i)}).catch(()=>{}),s},yE=()=>{let e=(0,U.c)(6),t,n,r,i;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=u(),t=!Ee(),n=Fr,r={...hE(i),enabled:t},e[0]=t,e[1]=n,e[2]=r,e[3]=i):(t=e[0],n=e[1],r=e[2],i=e[3]);let a=n(r),o,s;return e[4]===Symbol.for(`react.memo_cache_sentinel`)?(o=()=>{if(t)return Fi(e=>{i===u()&&(e.type===`session-order-changed`||e.type===`event-stream-ready`)&&_.invalidateQueries({queryKey:pE(i),exact:!0})})},s=[t,i],e[4]=o,e[5]=s):(o=e[4],s=e[5]),K.useEffect(o,s),a},bE=(e,t)=>{if(!t)return!1;let n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(n=>t[n]===e[n])},xE=`oc.sessions.folders`,SE=`oc.sessions.folderCollapse`,CE=`oc.sessions.order`,wE=`oc.sessions.orderActivity`,TE=`/api/session-folders`,EE=250,DE=`__archived__:`,OE=ae(Cr()),kE=new Map,AE=new Map,jE=null,ME=!1,NE=!1,PE=0,FE,IE,LE=null,RE=null,zE=()=>typeof window>`u`?!1:Ee()?!0:window.__VSCODE_CONFIG__!==void 0,BE=(e,t)=>{if(typeof window>`u`||zE())return;jE&&clearTimeout(jE);let n=JSON.parse(JSON.stringify(e)),r=Array.from(t);jE=setTimeout(()=>{jE=null,x(TE,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({version:1,foldersMap:n,collapsedFolderIds:r,updatedAt:Date.now()})}).catch(()=>{})},EE)},VE=()=>{try{let e=OE.getItem(xE);if(!e)return{};let t=JSON.parse(e);if(!t||typeof t!=`object`||Array.isArray(t))return{};let n={};for(let[e,r]of Object.entries(t)){if(!Array.isArray(r))continue;let t=[];for(let e of r){if(!e||typeof e!=`object`)continue;let n=e,r=typeof n.id==`string`?n.id.trim():``,i=typeof n.name==`string`?n.name.trim():``,a=typeof n.createdAt==`number`?n.createdAt:0;if(!r||!i)continue;let o=Array.isArray(n.sessionIds)?n.sessionIds.filter(e=>typeof e==`string`&&e.trim().length>0):[],s=typeof n.parentId==`string`?n.parentId:null;t.push({id:r,name:i,sessionIds:o,createdAt:a,parentId:s})}t.length>0&&(n[e]=t)}return n}catch{return{}}},HE=()=>{try{let e=OE.getItem(SE);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}},UE=()=>{try{let e=OE.getItem(CE);if(!e)return{};let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?{}:Object.fromEntries(Object.entries(t).flatMap(([e,t])=>{if(!Array.isArray(t))return[];let n=t.filter(e=>typeof e==`string`&&e.length>0);return n.length>0?[[e,n]]:[]}))}catch{return{}}},WE=()=>{try{let e=OE.getItem(wE);if(!e)return{};let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?{}:Object.fromEntries(Object.entries(t).flatMap(([e,t])=>{if(!t||typeof t!=`object`||Array.isArray(t))return[];let n=Object.fromEntries(Object.entries(t).flatMap(([e,t])=>typeof t==`number`&&Number.isFinite(t)?[[e,t]]:[]));return Object.keys(n).length>0?[[e,n]]:[]}))}catch{return{}}},GE=(e,t)=>{try{let n={...e},r={...t},i=gE();for(let e of kE.keys()){let t=AE.get(e);n[e]=i?.sessionOrderByScope[e]??t?.order??[],r[e]=i?.sessionOrderActivityByScope[e]??t?.activity??{}}OE.setItem(CE,JSON.stringify(n)),OE.setItem(wE,JSON.stringify(r))}catch{}},KE=e=>{LE=e,clearTimeout(FE),FE=setTimeout(()=>{try{OE.setItem(xE,JSON.stringify(e)),LE=null}catch{}},300)},qE=e=>{RE=e,clearTimeout(IE),IE=setTimeout(()=>{try{OE.setItem(SE,JSON.stringify(Array.from(e))),RE=null}catch{}},300)};typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{if(LE!==null){clearTimeout(FE);try{OE.setItem(xE,JSON.stringify(LE))}catch{}LE=null}if(RE!==null){clearTimeout(IE);try{OE.setItem(SE,JSON.stringify(Array.from(RE)))}catch{}RE=null}});var JE=(e,t)=>{KE(e),qE(t),BE(e,t)},YE=()=>Oe(),XE=(e,t,n)=>{let r=new Set(t.map(e=>e.id)),i=null;for(let t of e)!r.has(t.id)&&n.has(t.id)&&(i||=new Set(n),i.delete(t.id));return i},ZE=(e,t)=>e.startsWith(DE)?t.filter(e=>e.sessionIds.length>0):t,QE=Ne()(Ie((e,t)=>({foldersMap:VE(),collapsedFolderIds:HE(),sessionOrderByScope:UE(),sessionOrderActivityByScope:WE(),getFoldersForScope:e=>e?t().foldersMap[e]??[]:[],createFolder:(n,r,i)=>{let a=r.trim()||`New folder`,o={id:YE(),name:a,sessionIds:[],createdAt:Date.now(),parentId:i??null},s=t().foldersMap,c=s[n]??[],l={...s,[n]:[...c,o]};return e({foldersMap:l}),JE(l,t().collapsedFolderIds),o},renameFolder:(n,r,i)=>{let a=i.trim();if(!a||!n)return;let o=t().foldersMap,s=o[n];if(!s)return;let c=s.map(e=>e.id===r?{...e,name:a}:e),l={...o,[n]:c};e({foldersMap:l}),JE(l,t().collapsedFolderIds)},deleteFolder:(n,r)=>{if(!n)return;let i=t().foldersMap,a=i[n];if(!a)return;let o=new Set([r]),s=!0;for(;s;){s=!1;for(let e of a)e.parentId&&o.has(e.parentId)&&!o.has(e.id)&&(o.add(e.id),s=!0)}let c=a.filter(e=>!o.has(e.id)),l={...i,[n]:c};e({foldersMap:l}),JE(l,t().collapsedFolderIds);let u=t().collapsedFolderIds;if(Array.from(o).some(e=>u.has(e))){let t=new Set(u);o.forEach(e=>t.delete(e)),e({collapsedFolderIds:t}),JE(l,t)}},addSessionToFolder:(n,r,i)=>{if(!n||!r||!i)return;let a=t().foldersMap,o=a[n];if(!o)return;let s=o.find(e=>e.id===r);if(!s)return;let c=o.reduce((e,t)=>e+ +!!t.sessionIds.includes(i),0);if(s.sessionIds.includes(i)&&c===1)return;let l=o.map(e=>{let t=e.sessionIds.filter(e=>e!==i);return e.id===r?{...e,sessionIds:[...t,i]}:t.length===e.sessionIds.length?e:{...e,sessionIds:t}}),u={...a,[n]:l},d=XE(o,l,t().collapsedFolderIds);e(d?{foldersMap:u,collapsedFolderIds:d}:{foldersMap:u}),JE(u,d??t().collapsedFolderIds)},addSessionsToFolder:(n,r,i)=>{if(!n||!r||i.length===0)return;let a=t().foldersMap,o=a[n];if(!o)return;let s=new Set(i.filter(e=>typeof e==`string`&&e.length>0));if(s.size===0)return;let c=o.find(e=>e.id===r);if(!c)return;let l=!1;for(let e of o){for(let t of s)if(e.sessionIds.includes(t)&&(e.id!==r||!c.sessionIds.includes(t))){l=!0;break}if(l)break}if(!l){for(let e of s)if(!c.sessionIds.includes(e)){l=!0;break}}if(!l)return;let u=o.map(e=>{let t=e.sessionIds.filter(e=>!s.has(e));return e.id===r?{...e,sessionIds:[...t,...s]}:t.length===e.sessionIds.length?e:{...e,sessionIds:t}}),d={...a,[n]:u},f=XE(o,u,t().collapsedFolderIds);e(f?{foldersMap:d,collapsedFolderIds:f}:{foldersMap:d}),JE(d,f??t().collapsedFolderIds)},removeSessionsFromFolders:(n,r)=>{if(!n||r.length===0)return;let i=t().foldersMap,a=i[n];if(!a)return;let o=new Set(r.filter(e=>typeof e==`string`&&e.length>0));if(o.size===0)return;let s=!1,c=a.map(e=>{let t=e.sessionIds.filter(e=>!o.has(e));return t.length===e.sessionIds.length?e:(s=!0,{...e,sessionIds:t})});if(!s)return;let l={...i,[n]:c},u=XE(a,c,t().collapsedFolderIds);e(u?{foldersMap:l,collapsedFolderIds:u}:{foldersMap:l}),JE(l,u??t().collapsedFolderIds)},removeSessionFromFolder:(n,r)=>{if(!n||!r)return;let i=t().foldersMap,a=i[n];if(!a)return;let o=!1,s=a.map(e=>{let t=e.sessionIds.filter(e=>e!==r);return t.length===e.sessionIds.length?e:(o=!0,{...e,sessionIds:t})});if(!o)return;let c={...i,[n]:s},l=XE(a,s,t().collapsedFolderIds);e(l?{foldersMap:c,collapsedFolderIds:l}:{foldersMap:c}),JE(c,l??t().collapsedFolderIds)},toggleFolderCollapse:n=>{let r=t().collapsedFolderIds,i=new Set(r);i.has(n)?i.delete(n):i.add(n),e({collapsedFolderIds:i}),JE(t().foldersMap,i)},cleanupSessions:(n,r)=>{if(!n)return;let i=t().foldersMap,a=i[n],o=t().sessionOrderByScope[n]??[],s=t().sessionOrderActivityByScope[n]??{};if((!a||a.length===0)&&o.length===0&&Object.keys(s).length===0)return;let c=!1,l=(a??[]).map(e=>{let t=e.sessionIds.filter(e=>r.has(e));return t.length===e.sessionIds.length?e:(c=!0,{...e,sessionIds:t})}),u=ZE(n,l);u.length!==l.length&&(c=!0);let d=o.filter(e=>r.has(e)),f=d.length!==o.length,p=Object.entries(s).filter(([e])=>r.has(e)),m=p.length!==Object.keys(s).length;if(!c&&!f&&!m)return;let h={...i,[n]:u},g=XE(a??[],u,t().collapsedFolderIds),_=f?d.length>0?{...t().sessionOrderByScope,[n]:d}:Object.fromEntries(Object.entries(t().sessionOrderByScope).filter(([e])=>e!==n)):t().sessionOrderByScope,v=t().sessionOrderActivityByScope;(m||f&&d.length===0)&&(v=p.length===0||d.length===0?Object.fromEntries(Object.entries(t().sessionOrderActivityByScope).filter(([e])=>e!==n)):{...t().sessionOrderActivityByScope,[n]:Object.fromEntries(p)}),e(g?{foldersMap:h,collapsedFolderIds:g,sessionOrderByScope:_,sessionOrderActivityByScope:v}:{foldersMap:h,sessionOrderByScope:_,sessionOrderActivityByScope:v}),JE(h,g??t().collapsedFolderIds),GE(_,v)},getSessionFolderId:(e,n)=>{if(!e||!n)return null;let r=t().foldersMap[e];if(!r)return null;for(let e of r)if(e.sessionIds.includes(n))return e.id;return null},isSessionOrderPending:e=>kE.has(e),applySessionOrderSnapshot:n=>{let r={...t().sessionOrderByScope},i={...t().sessionOrderActivityByScope};for(let[e,t]of Object.entries(n.sessionOrderByScope))kE.has(e)||(r[e]=t,i[e]=n.sessionOrderActivityByScope[e]??{});e({sessionOrderByScope:r,sessionOrderActivityByScope:i}),GE(r,i)},reorderSessions:async(n,r,i,a,o)=>{if(!n||i===a)return;let s=Array.from(new Set(r)),c=s.indexOf(i),l=s.indexOf(a);if(c===-1||l===-1)return;let u=t().sessionOrderByScope[n]??[],d=t().sessionOrderActivityByScope[n],p=bE(o,d)&&u.length>0?[...u.filter(e=>s.includes(e)),...s.filter(e=>!u.includes(e))]:s,m=p.indexOf(i),h=p.indexOf(a);if(m===-1||h===-1||m===h)return;let g=[...p];g.splice(m,1),g.splice(h,0,i);let _=new Set(s),v=u.filter(e=>!_.has(e)),y={...t().sessionOrderByScope,[n]:[...g,...v]},b={...t().sessionOrderActivityByScope,[n]:{...o}},x=f(),S=Symbol(),C=gE();kE.has(n)||AE.set(n,{order:C?.sessionOrderByScope[n]??u,activity:C?.sessionOrderActivityByScope[n]??d??{}});let w=AE.get(n);kE.set(n,S),e({sessionOrderByScope:y,sessionOrderActivityByScope:b});try{if(zE()){kE.delete(n),AE.delete(n),GE(y,b);return}await vE(n,y[n],{...o})}catch(r){if(x===f()&&kE.get(n)===S){let r=gE();e({sessionOrderByScope:{...t().sessionOrderByScope,[n]:r?.sessionOrderByScope[n]??w.order},sessionOrderActivityByScope:{...t().sessionOrderActivityByScope,[n]:r?.sessionOrderActivityByScope[n]??w.activity}})}throw r}finally{if(kE.get(n)===S&&(kE.delete(n),AE.delete(n),x===f())){let e=gE();e&&t().applySessionOrderSnapshot(e)}}}}),{name:`session-folders-store`})),$E=async()=>{if(ME||NE||typeof window>`u`)return;if(zE()){ME=!0;return}NE=!0;let e=PE;try{let t=await x(TE).catch(()=>null);if(e!==PE||!t||!t.ok)return;let n=await t.json().catch(()=>null);if(!n)return;let r=n.foldersMap&&typeof n.foldersMap==`object`?n.foldersMap:{},i=Array.isArray(n.collapsedFolderIds)?new Set(n.collapsedFolderIds.filter(e=>typeof e==`string`)):new Set;if(e!==PE||!(Object.keys(r).length>0||i.size>0))return;QE.setState({foldersMap:r,collapsedFolderIds:i}),KE(r),qE(i)}catch{}finally{e===PE&&(NE=!1,ME=!0)}},eD=()=>{typeof window>`u`||$E()},tD=()=>{kE.clear(),AE.clear(),PE+=1,ME=!1,NE=!1,LE=null,RE=null,FE&&=(clearTimeout(FE),void 0),IE&&=(clearTimeout(IE),void 0),QE.setState({foldersMap:VE(),collapsedFolderIds:HE(),sessionOrderByScope:UE(),sessionOrderActivityByScope:WE()}),$E()};typeof window<`u`&&s(e=>{h(e)&&tD()}),eD();var nD=new Map,rD=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},iD=()=>`worktree_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,aD=()=>{let e=iD();return nD.set(e,rD()),e},oD=(e,t)=>{let n=nD.get(e);n&&(nD.delete(e),n.resolve(t))},sD=(e,t)=>{let n=nD.get(e);n&&(nD.delete(e),n.reject(t))},cD=e=>{let t=nD.get(e);return t?t.promise:Promise.reject(Error(`Pending worktree request not found`))},lD=3e5,uD=5e3,dD=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``)||e,fD=new Map,pD=new Map,mD=new Map,hD=new Map,gD=new Set,_D=null,vD=!1,yD=e=>dD(e),bD=e=>hD.get(e)??0,xD=e=>{let t=bD(e)+1;return hD.set(e,t),t},SD=async e=>{let t=b()?.git;return t?.worktree?.bootstrapStatus?t.worktree.bootstrapStatus(e):t?.getGitWorktreeBootstrapStatus?t.getGitWorktreeBootstrapStatus(e):It(e)},CD=(e,t)=>{for(let n of gD)try{n(e,t)}catch{}},wD=e=>(gD.add(e),()=>{gD.delete(e)}),TD=(e,t)=>{let n=yD(e);if(!n)return!1;let r=fD.get(n),i=r?.status===`pending`&&t.status!==`pending`;return r&&typeof r.updatedAt==`number`&&Number.isFinite(r.updatedAt)&&typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)&&t.updatedAt<r.updatedAt&&!i?!1:(fD.set(n,t),t.status!==`pending`&&pD.delete(n),CD(n,t),!0)},ED=(e,t)=>{let n=yD(e);if(!n)return!1;let r=t.status===`pending`||t.status===`ready`||t.status===`failed`?t.status:null;return r?TD(n,{status:r,error:typeof t.error==`string`&&t.error.trim().length>0?t.error.trim():null,updatedAt:typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)?t.updatedAt:Date.now()}):!1},DD=()=>{_D||=Fi(e=>{e.type===`worktree-bootstrap-status`&&ED(e.directory,e)}),!(typeof window>`u`||vD)&&(vD=!0,window.addEventListener(`openchamber:worktree-bootstrap-status`,(e=>{let t=e.detail;if(!t||typeof t!=`object`||Array.isArray(t))return;let n=t,r=typeof n.directory==`string`?n.directory:``;r&&ED(r,{status:n.status,error:typeof n.error==`string`?n.error:null,updatedAt:typeof n.updatedAt==`number`?n.updatedAt:Date.now()})})))},OD=e=>{let t=yD(e);t&&(DD(),TD(t,{status:`pending`,error:null,updatedAt:Date.now()}))},kD=e=>{let t=yD(e);if(!t)return;xD(t);let n=mD.get(t);n&&(n.cancelled=!0,n.disposeSettlement?.(),n.disposeSettlement=null,mD.delete(t));let r=pD.get(t);r&&(r.dispose(),pD.delete(t)),fD.delete(t)},AD=e=>{let t=yD(e);return t?fD.get(t)??null:null},jD=(e,t)=>{let n=Kr.getState().dictionary;return qr(n,e,t)},MD=e=>({status:`failed`,error:e,updatedAt:Date.now()}),ND=(e,t,n)=>{let r=MD(t);return TD(e,r),n?.(r),r},PD=async(e,t=()=>!0)=>{try{let n=await SD(e);return t()?TD(e,n)?n:AD(e):null}catch{return null}},FD=(e,t,n=uD)=>{let r=yD(e),i=bD(r);DD();let a=!1,o=null,s=null,c=!1,l=null,u=null,d=()=>{},f=()=>{o&&clearTimeout(o),o=null,s&&clearInterval(s),s=null},p=()=>{a||s||(s=setInterval(()=>{a||c||(c=!0,PD(e,()=>!a&&bD(r)===i).finally(()=>{c=!1}))},Number.isFinite(n)?Math.max(1,n):uD))},m=e=>{a||(a=!0,f(),l?.(),l=null,e&&u?.(e))},h=new Promise((n,i)=>{u=i;let s=e=>{a||(a=!0,f(),l?.(),l=null,e())};d=e=>{if(e){if(e.status===`ready`){s(()=>n(e));return}e.status===`failed`&&s(()=>i(Error(e.error||`Worktree bootstrap failed`)))}},l=wD((e,t)=>{yD(e)===r&&d(t)}),o=setTimeout(()=>{s(()=>{let t=ND(e,jD(`worktree.bootstrap.toast.timeoutDescription`));i(Error(t.error||`Timed out waiting for worktree bootstrap`))})},Math.max(0,t)),d(fD.get(r))});return h.catch(()=>void 0),{promise:h,startCompensation:p,dispose:()=>m(Error(`Worktree bootstrap wait cancelled`))}},ID=async(e,t,n,r,i,a)=>{let o=yD(e),s=FD(e,n,r);t.disposeSettlement=s.dispose;let c=await PD(e,()=>!t.cancelled&&mD.get(o)===t&&bD(o)===t.epoch);if(t.cancelled||mD.get(o)!==t){s.dispose();return}if(c?.status===`ready`){s.dispose(),a?.(c);return}if(c?.status===`failed`){s.dispose(),i?.(c),xw.error(jD(`worktree.bootstrap.toast.failed`),{description:c.error||jD(`worktree.bootstrap.toast.failedDescription`)});return}s.startCompensation();try{let e=await s.promise;if(t.cancelled||mD.get(o)!==t)return;a?.(e)}catch(n){if(t.cancelled||mD.get(o)!==t)return;let r=AD(e);if(r?.status===`failed`){i?.(r),xw.error(jD(`worktree.bootstrap.toast.failed`),{description:r.error||jD(`worktree.bootstrap.toast.failedDescription`)});return}let a=ND(e,n instanceof Error?n.message:String(n),i);xw.error(jD(`worktree.bootstrap.toast.failed`),{description:a.error||jD(`worktree.bootstrap.toast.failedDescription`)})}},LD=(e,t)=>{let n=yD(e);if(!n||fD.get(n)?.status!==`pending`||mD.has(n))return;let r={cancelled:!1,epoch:bD(n),promise:Promise.resolve(),disposeSettlement:null};r.promise=ID(e,r,t?.timeoutMs??lD,t?.pollIntervalMs??uD,t?.onFailed,t?.onReady).finally(()=>{mD.get(n)===r&&mD.delete(n)}),mD.set(n,r)},RD=async(e,t=lD)=>{let n=yD(e);if(!n)return;let r=fD.get(n);if(!r||r.status===`ready`)return;if(r.status===`failed`)throw Error(r.error||`Worktree bootstrap failed`);let i=pD.get(n);if(i)return i.promise;let a=()=>{},o=bD(n),s=(async()=>{let r=FD(e,t,uD);a=r.dispose;let i=await PD(e,()=>bD(n)===o);if(bD(n)!==o){r.dispose();return}if(i?.status===`ready`){r.dispose();return}if(i?.status===`failed`)throw r.dispose(),Error(i.error||`Worktree bootstrap failed`);r.startCompensation(),await r.promise})().finally(()=>{pD.get(n)?.promise===s&&pD.delete(n)});return pD.set(n,{promise:s,dispose:()=>a()}),s},zD=`openchamber.json`,BD=`.openchamber`,VD=[`.config`,`openchamber`,`projects`];function HD(){let e=b();return e?.files?e.files:null}var UD=80,WD=4e3,GD=2e3,KD=300,qD=new Set([`macos`,`linux`,`windows`]),JD=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)},YD=(e,t)=>{let n=JD(e),r=t.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/\/+$/,``);return!n||n===`/`?`/${r}`:`${n}/${r}`},XD=e=>YD(YD(e,BD),zD),ZD=()=>{let e=`/api`;return e.startsWith(`/`),e},QD=async(e,t)=>{try{let n=await x(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});return n.ok?{ok:!0,data:await n.json().catch(()=>null)}:{ok:!1,data:null}}catch{return{ok:!1,data:null}}},$D=async e=>{let t=HD();if(t?.createDirectory)try{if((await t.createDirectory(e))?.success)return!0}catch{}return!!(await QD(`${ZD()}/fs/mkdir`,{path:e})).ok},eO=async e=>{let t=HD();if(t?.readFile)try{let n=await t.readFile(e);return typeof n?.content==`string`?n.content:``}catch{return null}try{let t=await x(`${ZD()}/fs/read?path=${encodeURIComponent(e)}`,{cache:`no-store`});return t.ok?await t.text():null}catch{return null}},tO=async(e,t)=>{let n=HD();if(n?.writeFile)try{if((await n.writeFile(e,t))?.success)return!0}catch{}return!!(await QD(`${ZD()}/fs/write`,{path:e,content:t})).ok},nO=async()=>{try{let e=await x(`${ZD()}/fs/home`,{cache:`no-store`});if(!e.ok)throw Error(`Failed to resolve home directory from API`);let t=await e.json().catch(()=>null),n=typeof t?.home==`string`?t.home.trim():``;if(n)return JD(n)}catch{}if(!Ee()){let e=await le().catch(()=>null);if(e&&e.trim().length>0)return JD(e)}return null},rO=async()=>{let e=await nO();return e?VD.reduce((e,t)=>YD(e,t),e):null},iO=e=>{let t=typeof e?.path==`string`?e.path.trim():``,n=t?JD(t):``;return n&&Ce(n)||null},aO=async e=>{let t=await rO();if(!t)return null;let n=iO(e);return n?YD(t,`${n}.json`):null},oO=(e,t)=>e.length<=t?e:e.slice(0,t),sO=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(typeof r!=`string`)continue;let e=r.trim().toLowerCase();!qD.has(e)||n.has(e)||(n.add(e),t.push(e))}return t},cO=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(!r||typeof r!=`object`)continue;let e=r,i=typeof e.id==`string`?e.id.trim():``,a=oO(typeof e.name==`string`?e.name.trim():``,UD),o=oO(typeof e.command==`string`?e.command.trim():``,WD);if(!i||!a||!o||n.has(i))continue;n.add(i);let s=typeof e.icon==`string`?e.icon.trim():``,c=sO(e.platforms),l=e.autoOpenUrl===!0,u=oO(typeof e.openUrl==`string`?e.openUrl.trim():``,GD),d=oO(typeof e.desktopOpenSshForward==`string`?e.desktopOpenSshForward.trim():``,KD);t.push({id:i,name:a,command:o,icon:s||null,...l?{autoOpenUrl:!0}:{},...u?{openUrl:u}:{},...d?{desktopOpenSshForward:d}:{},...c.length>0?{platforms:c}:{}})}return t},lO=e=>{let t=cO(e?.actions),n=typeof e?.primaryActionId==`string`?e.primaryActionId.trim():``;return{actions:t,primaryActionId:n&&t.some(e=>e.id===n)?n:null}};async function uO(e){let t=typeof e?.path==`string`?e.path.trim():``;if(!t)return null;let n=await aO(e),r=async e=>{let t=await eO(e);return t===null?null:t},i=e=>{if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;try{let e=JSON.parse(t);return!e||typeof e!=`object`?null:e}catch{return null}};if(n){let e=i(await r(n));if(e)return e}let a=i(await r(XD(t)));if(!a)return null;try{await dO(e,a)&&await SO(t)}catch{}return a}async function dO(e,t){let n=typeof e?.path==`string`?e.path.trim():``;if(!n)return!1;let r=await rO(),i=await aO(e);if(!r||!i)return!1;try{if(!await $D(r))return!1;let e=await eO(i),a={};if(typeof e==`string`&&e.trim())try{let t=JSON.parse(e);t&&typeof t==`object`&&!Array.isArray(t)&&(a=t)}catch{a={}}let o={};return a.version!==void 0&&(o.version=a.version),a.scheduledTasks!==void 0&&(o.scheduledTasks=a.scheduledTasks),await tO(i,JSON.stringify({...a,...t,...o,projectPath:JD(n)},null,2))}catch(e){return console.error(`Failed to write openchamber config:`,e),!1}}async function fO(e,t){return dO(e,{...await uO(e)||{},...t})}async function pO(e){return(await uO(e))?.[`setup-worktree`]??[]}async function mO(e,t){return fO(e,{"setup-worktree":t.filter(e=>e.trim().length>0)})}async function hO(e){return(await uO(e))?.[`setup-worktree-wait`]===!0}async function gO(e,t){return fO(e,{"setup-worktree-wait":t})}async function _O(e){let t=await uO(e);return Ae(t?.draftStarters)}async function vO(e,t){return fO(e,{draftStarters:Ae(t)})}async function yO(e){let t=await uO(e);return lO({actions:t?.projectActions,primaryActionId:t?.projectActionsPrimaryId})}async function bO(e,t){let n=lO({actions:t.actions,primaryActionId:t.primaryActionId});return fO(e,{projectActions:n.actions,projectActionsPrimaryId:n.primaryActionId??void 0})}function xO(e,t){return e.replace(/\$ROOT_PROJECT_PATH/g,t.rootWorktreePath).replace(/\$\{ROOT_PROJECT_PATH\}/g,t.rootWorktreePath).replace(/\$ROOT_WORKTREE_PATH/g,t.rootWorktreePath).replace(/\$\{ROOT_WORKTREE_PATH\}/g,t.rootWorktreePath)}async function SO(e){let t=XD(e),n=HD();if(n?.delete)try{await n.delete(t);return}catch{}try{await QD(`${ZD()}/fs/delete`,{path:t})}catch{}}var CO=null,wO=e=>{let t=CO;return CO=e,()=>{CO===e&&(CO=t)}},TO=()=>({orderByProject:{},pendingProjectIDs:{}}),EO=(e,t)=>!!(e&&e.length===t.length&&e.every((e,n)=>e===t[n])),DO=u(),OO=Ne()(Pe((e,t)=>({runtimeIdentity:DO,...TO(),serverRevisionByProject:{},deferredServerOrderByProject:{},runtimeOrdersByIdentity:{[DO]:TO()},activateWorktreeOrderRuntime:t=>e(e=>{if(e.runtimeIdentity===t)return e;let n=e.runtimeOrdersByIdentity[t]??TO();return{runtimeIdentity:t,orderByProject:n.orderByProject,pendingProjectIDs:n.pendingProjectIDs,serverRevisionByProject:{},deferredServerOrderByProject:{},runtimeOrdersByIdentity:e.runtimeOrdersByIdentity[t]?e.runtimeOrdersByIdentity:{...e.runtimeOrdersByIdentity,[t]:n}}}),setWorktreeOrder:(t,n,r)=>{let i=!1;e(e=>{let n=EO(e.orderByProject[t],r),a=e.pendingProjectIDs[t]?e.pendingProjectIDs:{...e.pendingProjectIDs,[t]:!0};if(i=!n||a!==e.pendingProjectIDs,!i)return e;let o=n?e.orderByProject:{...e.orderByProject,[t]:r},s={orderByProject:o,pendingProjectIDs:a};return{orderByProject:o,pendingProjectIDs:a,runtimeOrdersByIdentity:{...e.runtimeOrdersByIdentity,[e.runtimeIdentity]:s}}}),i&&CO?.(t,n,r)},promoteWorktree:(e,n,r,i)=>{let a=I(r),o=I(n);if(!a||a===o)return;let s=null,c=[];for(let e of i){let t=I(e.path);!t||t===o||(c.push(t),(a===t||a.startsWith(`${t}/`))&&(!s||t.length>s.length)&&(s=t))}if(!s)return;let l=t().orderByProject[e];if(!l)try{let t=JSON.parse(k(`oc.sessions.groupOrder`)??`{}`)?.[e];Array.isArray(t)&&(l=t.filter(e=>typeof e==`string`&&e.startsWith(`worktree:`)).map(e=>e.slice(9)))}catch{}let u=[...new Set([...l??[],...c].map(I).filter(e=>!!e&&e!==o))];I(t().orderByProject[e]?.[0])!==s&&t().setWorktreeOrder(e,n,[s,...u.filter(e=>e!==s)])},markPendingWorktreeOrder:t=>e(e=>{if(e.pendingProjectIDs[t])return e;let n={...e.pendingProjectIDs,[t]:!0};return{pendingProjectIDs:n,runtimeOrdersByIdentity:{...e.runtimeOrdersByIdentity,[e.runtimeIdentity]:{orderByProject:e.orderByProject,pendingProjectIDs:n}}}}),applyServerWorktreeOrder:(t,n,r)=>e(e=>{let i=e.serverRevisionByProject[t];if(i!==void 0&&r<=i)return e;let a={...e.serverRevisionByProject,[t]:r};if(e.pendingProjectIDs[t])return{serverRevisionByProject:a,deferredServerOrderByProject:{...e.deferredServerOrderByProject,[t]:{orderedPaths:n,revision:r}}};if(EO(e.orderByProject[t],n))return{serverRevisionByProject:a};let o={...e.orderByProject,[t]:n};return{orderByProject:o,serverRevisionByProject:a,runtimeOrdersByIdentity:{...e.runtimeOrdersByIdentity,[e.runtimeIdentity]:{orderByProject:o,pendingProjectIDs:e.pendingProjectIDs}}}}),setServerRevision:(t,n)=>e(e=>{let r=e.serverRevisionByProject[t];return r!==void 0&&n<=r?e:{serverRevisionByProject:{...e.serverRevisionByProject,[t]:n}}}),resolvePendingWorktreeOrder:(t,n)=>e(e=>{let r=e.serverRevisionByProject[t],i=e.deferredServerOrderByProject[t],a=Math.max(r??0,n,i?.revision??0),o=r===a?e.serverRevisionByProject:{...e.serverRevisionByProject,[t]:a},s=i?(()=>{let n={...e.deferredServerOrderByProject};return delete n[t],n})():e.deferredServerOrderByProject;if(!e.pendingProjectIDs[t])return o===e.serverRevisionByProject&&s===e.deferredServerOrderByProject?e:{serverRevisionByProject:o,deferredServerOrderByProject:s};let c={...e.pendingProjectIDs};delete c[t];let l=i&&i.revision>n&&!EO(e.orderByProject[t],i.orderedPaths)?{...e.orderByProject,[t]:i.orderedPaths}:e.orderByProject;return{pendingProjectIDs:c,orderByProject:l,serverRevisionByProject:o,deferredServerOrderByProject:s,runtimeOrdersByIdentity:{...e.runtimeOrdersByIdentity,[e.runtimeIdentity]:{orderByProject:l,pendingProjectIDs:c}}}}),resetServerWorktreeOrders:()=>e(e=>Object.keys(e.serverRevisionByProject).length===0&&Object.keys(e.deferredServerOrderByProject).length===0?e:{serverRevisionByProject:{},deferredServerOrderByProject:{}}),hasPendingWorktreeOrder:e=>!!t().pendingProjectIDs[e]}),{name:`mobile-worktree-order`,version:2,partialize:e=>({runtimeOrdersByIdentity:e.runtimeOrdersByIdentity}),migrate:e=>{let t=e;return t.runtimeOrdersByIdentity?{runtimeOrdersByIdentity:t.runtimeOrdersByIdentity}:{runtimeOrdersByIdentity:{[DO]:{orderByProject:t.orderByProject??{},pendingProjectIDs:t.pendingProjectIDs??{}}}}},merge:(e,t)=>{let n=e.runtimeOrdersByIdentity??t.runtimeOrdersByIdentity,r=n[t.runtimeIdentity]??TO();return{...t,runtimeOrdersByIdentity:n,orderByProject:r.orderByProject,pendingProjectIDs:r.pendingProjectIDs}}})),kO=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``),AO=(e,t)=>{if(!e||e.length===0)return t;let n=new Map(e.map((e,t)=>[kO(e),t]));return t.map((e,t)=>({worktree:e,index:t})).sort((e,t)=>(n.get(kO(e.worktree.path))??2**53-1)-(n.get(kO(t.worktree.path))??2**53-1)||e.index-t.index).map(e=>e.worktree)},jO=500,MO=2592e6;function NO(e){let t=Date.now()-MO,n=e.filter(e=>e.time>=t);return n.length<=jO?n:n.slice(n.length-jO)}function PO(e){let t={session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}};for(let n of e)n.viewed||(n.session&&(t.session.unseenCount[n.session]=(t.session.unseenCount[n.session]??0)+1,n.type===`error`&&(t.session.unseenHasError[n.session]=!0)),n.directory&&(t.project.unseenCount[n.directory]=(t.project.unseenCount[n.directory]??0)+1,n.type===`error`&&(t.project.unseenHasError[n.directory]=!0)));return t}var FO=Ne((e,t)=>({list:[],index:{session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}},append:n=>{let r=t().list,i=NO([...r,n]);e({list:i,index:PO(i)})},markSessionViewed:n=>{let r=t();if((r.index.session.unseenCount[n]??0)===0)return;let i=r.list.map(e=>e.session===n&&!e.viewed?{...e,viewed:!0}:e);e({list:i,index:PO(i)})},markProjectViewed:n=>{let r=t();if((r.index.project.unseenCount[n]??0)===0)return;let i=r.list.map(e=>e.directory===n&&!e.viewed?{...e,viewed:!0}:e);e({list:i,index:PO(i)})},sessionUnseenCount:e=>t().index.session.unseenCount[e]??0,sessionHasError:e=>t().index.session.unseenHasError[e]??!1,projectUnseenCount:e=>t().index.project.unseenCount[e]??0,projectHasError:e=>t().index.project.unseenHasError[e]??!1}));function IO(e){FO.getState().append(e)}function LO(e){FO.getState().markSessionViewed(e)}function RO(e){if(!e)return;let t=FO.getState().list,n=!1,r=t.filter(t=>t.session===e&&t.type===`error`?(n=!0,!1):!0);n&&FO.setState({list:r,index:PO(r)})}function zO(e){let t=(0,U.c)(2),n;return t[0]===e?n=t[1]:(n=t=>t.index.session.unseenCount[e]??0,t[0]=e,t[1]=n),FO(n)}function BO(e){let t=(0,U.c)(2),n;return t[0]===e?n=t[1]:(n=t=>{if(!e)return null;for(let n=t.list.length-1;n>=0;--n){let r=t.list[n];if(r.session===e&&r.type===`error`)return r}return null},t[0]=e,t[1]=n),FO(n)}var VO=(e=u())=>({queryKey:[e,`settings`,`project-order`],queryFn:({signal:t})=>xe(t,async t=>{if(u()!==e)throw Error(`Project order runtime changed`);let n=await x(`/api/config/settings`,{signal:t});if(!n.ok)throw Error(`Project order request failed (${n.status})`);let r=await n.json();if(!r||typeof r!=`object`||Array.isArray(r)||!Array.isArray(r.projects)||r.projects.some(e=>!e||typeof e!=`object`||!(`path`in e)||typeof e.path!=`string`||!e.path.trim()))throw Error(`Invalid project order snapshot`);return{projects:r.projects,projectSortOrder:r.projectSortOrder}}),staleTime:0,retry:1}),HO=(e=u())=>_.fetchQuery(VO(e)),UO=Ne()(Pe(e=>({displayMode:`minimal`,projectSortOrder:`manual`,setDisplayMode:t=>e({displayMode:t}),setProjectSortOrder:t=>{e({projectSortOrder:t}),b()?.runtime.isVSCode||ge({projectSortOrder:t})},synchronizeFromSettings:t=>{if(b()?.runtime.isVSCode)return;let n=t.projectSortOrder;e({projectSortOrder:n&&[`manual`,`a-z`,`z-a`,`date-added`,`recent`].includes(n)?n:`manual`})}}),{name:`session-display-mode`,storage:N(),version:4,migrate:(e,t)=>{let n=e??{};return t<1?{...n,displayMode:`minimal`,projectSortOrder:`manual`}:t<2||t<3?{...n,projectSortOrder:`manual`}:t<4?{displayMode:n.displayMode??`minimal`,projectSortOrder:n.projectSortOrder??`manual`}:n}}));typeof window<`u`&&(window.addEventListener(`openchamber:settings-synced`,e=>{let t=e.detail;t&&UO.getState().synchronizeFromSettings(t)}),s(e=>{h(e)&&UO.persist.rehydrate()}));function WO(){if(b()?.runtime.isVSCode)return()=>void 0;let e=!1,t=!1,n=!1,r=0,i=async()=>{if(n=!0,t)return;t=!0;let i=++r;try{for(;n&&!e&&i===r;){n=!1;let t=u(),a=f(),o=()=>!e&&i===r&&a===f()&&t===u();if(await F(t),!o())continue;let s=ws.getState().projects,c=UO.getState().projectSortOrder;try{let e=await HO(t);if(!o())continue;if(s!==ws.getState().projects||c!==UO.getState().projectSortOrder){n=!0;continue}let r=ws.getState().activeProjectId;Se(t),ws.getState().synchronizeFromSettings({...e,...r&&e.projects?.some(e=>e.id===r)?{activeProjectId:r}:{}}),UO.getState().synchronizeFromSettings(e)}catch(e){o()&&console.warn(`Failed to synchronize project order:`,e)}}}finally{i===r&&(t=!1)}},a=Fi(e=>{(e.type===`project-order-changed`||e.type===`event-stream-ready`)&&i()}),o=s(()=>{r+=1,t=!1,i()});return i(),()=>{e=!0,a(),o()}}var GO=/^(.*)\.(\d+)$/,KO=[`session.next.step.`,`session.next.text.`,`session.next.reasoning.`,`session.next.tool.`,`session.next.shell.`,`session.next.compaction.`,`session.step.`,`session.text.`,`session.reasoning.`,`session.tool.`,`session.shell.`,`session.compaction.`],qO=new Set([`session.next.step.ended`,`session.next.step.failed`,`session.step.ended`,`session.step.failed`,`session.shell.ended`,`session.compaction.ended`,`session.compaction.failed`]);function JO(e){return GO.exec(e)?.[1]??e}function YO(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function XO(e){let t=e.sessionID;if(typeof t==`string`&&t.length>0)return t;let n=e.sessionId;if(typeof n==`string`&&n.length>0)return n}function ZO(e){let t=YO(e.durable);if(!t)return!1;let n=t.kind??t.type??t.source;if(typeof n==`string`&&n.toLowerCase()===`sync`||t.sync===!0)return!0;let r=t.aggregateID;return!!(typeof r==`string`&&r.startsWith(`sync:`))}function QO(e){let t=YO(e.location);if(t){let e=t.path??t.directory;if(typeof e==`string`&&e.length>0)return e}let n=e.directory;if(typeof n==`string`&&n.length>0)return n}function $O(e){let t=YO(e);if(!t)return e;if(t.payload&&typeof t.payload==`object`){let e=t.payload;if(typeof e.type==`string`)return{...e,...typeof t.directory==`string`&&!QO(e)?{directory:t.directory}:{}}}return e}function ek(e,t){if(e===`session.status`){let e=XO(t),n=t.status;if(e&&n&&typeof n==`object`)return{sessionID:e,status:n}}return t}function tk(e,t){let n=XO(t);return n?e===`session.next.prompt.admitted`?{admissionHint:{sessionID:n,messageID:typeof t.messageID==`string`?t.messageID:void 0},domainActivityHint:{sessionID:n,kind:`activity`}}:qO.has(e)?{domainActivityHint:{sessionID:n,kind:`terminal`}}:KO.some(t=>e.startsWith(t))||e.startsWith(`session.next.`)?{domainActivityHint:{sessionID:n,kind:`activity`}}:{}:{}}function nk(e){let t=YO($O(e));if(!t)return{action:`drop`,reason:`invalid`};let n=t.type;if(typeof n!=`string`||n.length===0)return{action:`drop`,reason:`invalid`};if(ZO(t))return{action:`drop`,reason:`sync-duplicate`};let r=JO(n),i=YO(t.data),a=YO(t.properties),o=i??a;if(!o)return r.startsWith(`openchamber:`)?{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:a??{},locationDirectory:QO(t)}}:{action:`drop`,reason:`invalid`};let s={...ek(r,o)},c=YO(t.durable);if(typeof c?.seq==`number`&&Number.isSafeInteger(c.seq)&&c.seq>=0&&(s.eventSequence=c.seq),r===`session.retry.scheduled`){let e=YO(o.error);if(!XO(o)||typeof o.attempt!=`number`||!Number.isFinite(o.attempt)||typeof o.at!=`number`||!Number.isFinite(o.at))return{action:`drop`,reason:`invalid`};r=`session.status`,s.status={type:`retry`,attempt:o.attempt,next:o.at,message:typeof e?.message==`string`?e.message:``}}typeof t.created==`number`&&Number.isFinite(t.created)&&t.created>0&&typeof s.eventCreated!=`number`&&(s.eventCreated=t.created);let l=QO(t)??QO(o)??(()=>{let e=YO(s.info);return typeof e?.directory==`string`?e.directory:void 0})(),u=tk(r,s);return{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:s,locationDirectory:l,...u}}}function rk(e){return{...e.id?{id:e.id}:{},type:e.type,properties:e.properties}}var ik=33,ak=200,ok=1e4,sk=8,ck=250,lk=3e4,uk=6e4,dk=2,fk=2e3,pk=8e3,mk=250,hk=5e3,gk=6e4,_k=8,vk=e=>{let t=e;if(t.type!==`openchamber:session-status`)return null;let n=typeof t.properties?.sessionID==`string`&&t.properties.sessionID.length>0?t.properties.sessionID:typeof t.properties?.sessionId==`string`&&t.properties.sessionId.length>0?t.properties.sessionId:``,r=typeof t.properties?.status==`string`?t.properties.status:``;if(!n||!r)return null;let i=null;if(r===`idle`||r===`busy`)i={type:r};else if(r===`retry`){let e=t.properties?.metadata;typeof e?.attempt==`number`&&typeof e.message==`string`&&typeof e.next==`number`&&(i={type:`retry`,attempt:e.attempt,message:e.message,next:e.next})}return i?{id:typeof t.id==`string`&&t.id.length>0?t.id:`openchamber-status-${n}-${Date.now()}`,type:`session.status`,properties:{sessionID:n,status:i}}:null},yk=e=>{let t=e;if(t.type!==`openchamber:session-metadata`)return null;let n=typeof t.properties?.sessionID==`string`&&t.properties.sessionID.length>0?t.properties.sessionID:``,r=t.properties?.metadata;return!n||!r||typeof r!=`object`||Array.isArray(r)?null:{id:typeof t.id==`string`&&t.id.length>0?t.id:`openchamber-metadata-${n}-${Date.now()}`,type:`openchamber:session-metadata`,properties:{sessionID:n,metadata:r}}},bk=e=>{if(!e||typeof e!=`object`)return{status:`unusable`};let t=vk(e);if(t){let e=t.properties;return{status:`event`,event:t,normalized:{id:typeof t.id==`string`?t.id:void 0,type:`session.status`,properties:e}}}let n=yk(e);if(n){let e=n.properties;return{status:`event`,event:n,normalized:{id:typeof n.id==`string`?n.id:void 0,type:`openchamber:session-metadata`,properties:e}}}let r=nk(e);return r.action===`drop`?r.reason===`sync-duplicate`?{status:`declined`}:{status:`unusable`}:{status:`event`,event:rk(r.event),normalized:r.event}};function xk(e,t,n,r){if(typeof t==`object`&&t&&typeof t.data==`object`&&t.data!==null&&r&&r.length>0)return r;let i=typeof e==`object`&&e&&typeof e.directory==`string`?e.directory:null;if(i&&i.length>0)return i;if(r&&r.length>0)return r;let a=typeof n.properties==`object`&&n.properties!==null?n.properties:null,o=typeof a?.directory==`string`?a.directory:null;if(o&&o.length>0)return o;let s=typeof a?.info==`object`&&a.info!==null?a.info:null,c=typeof s?.directory==`string`?s.directory:null;return c&&c.length>0?c:`global`}function Sk(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.type==`string`?e:t.payload&&typeof t.payload==`object`&&typeof t.payload.type==`string`?t.payload:null}function Ck(e){let t=`/api`;try{let e=H;typeof e.getBaseUrl==`function`&&(t=e.getBaseUrl())}catch{t=`/api`}let n=t.endsWith(`/`)?t:`${t}/`,r={};return e&&e.length>0&&(r.lastEventId=e),d()||(r.includeReasoning=`false`),c().websocket(`${n}global/event/ws`,Object.keys(r).length>0?r:void 0)}function wk(e){let t=Ck(e);return Ht(t)}function Tk(e){let{sdk:t,onEvent:n,onFlushStart:o,onFlushEnd:s,onNormalizedEvent:c,onReconnect:l,onCompensation:u,onRecoveryContextCaptured:d,onDisconnect:p,onTransportActivity:m,onTransportSwitch:h,routeDirectory:g,transport:_=`auto`,heartbeatTimeoutMs:v=lk,reconnectDelayMs:y=ck,wsReadyTimeoutMs:b}=e,x=b??(a()?pk:fk),S=new AbortController,C=!1,w,T=0,E,D=0,O=null,k=new Map,A=e=>{let t=k.get(e);return t||(t={queue:[],buffer:[],coalesced:new Map,timer:void 0,last:0},k.set(e,t),t)},ee=e=>{if(e.type===`session.status`)return`session.status:${e.properties.sessionID}`;if(e.type===`session.updated`){let t=e.properties;return t.info?.id?`session.updated:${t.info.id}`:void 0}if(e.type===`lsp.updated`)return`lsp.updated`;if(e.type===`message.part.delta`){let t=e.properties;return`message.part.delta:${t.messageID}:${t.partID}:${t.field}`}if(e.type===`session.text.delta`||e.type===`session.reasoning.delta`){let t=e.properties;return t.assistantMessageID?`${e.type}:${t.assistantMessageID}:${t.ordinal??0}`:void 0}if(e.type===`session.tool.input.delta`){let t=e.properties;return!t.assistantMessageID||!t.id?void 0:`session.tool.input.delta:${t.assistantMessageID}:${t.id}`}},j=e=>{let t=k.get(e);if(!t||(t.timer&&=(clearTimeout(t.timer),void 0),t.queue.length===0))return;let r=t.queue;t.queue=t.buffer,t.buffer=r,t.queue.length=0,t.coalesced.clear(),t.last=Date.now(),Nn.pipeline.flush(r.length),o?.();try{for(let t of r)try{n(e,t)}catch(e){console.error(`[sync] event handler failed`,t.type,e)}}finally{s?.()}t.buffer.length=0},te=()=>{for(let e of k.keys())j(e)},M=()=>{for(let e of k.values())e.timer&&=(clearTimeout(e.timer),void 0),e.queue.length=0,e.buffer.length=0,e.coalesced.clear()},ne=e=>{let t=A(e);if(t.timer)return;let n=Date.now()-t.last;t.timer=setTimeout(()=>j(e),Math.max(0,(Date.now()<L?ak:ik)-n))},re=e=>new Promise(t=>setTimeout(t,e)),N=e=>e instanceof DOMException&&e.name===`AbortError`||typeof e==`object`&&!!e&&e.name===`AbortError`,ie=()=>typeof navigator==`object`&&navigator!==null&&navigator.onLine===!1,ae=()=>typeof document<`u`&&document.visibilityState!==`visible`,oe=e=>{if(!e||typeof e!=`object`)return;let t=e.status;if(typeof t==`number`)return t;let n=e.response?.status;if(typeof n==`number`)return n},se=e=>!(e<400||e>=500||e===408||e===429),P=e=>new Promise(t=>{if(e<=0||S.signal.aborted){t();return}let n=()=>{a!==void 0&&(clearTimeout(a),a=void 0),globalThis.window!==void 0&&(globalThis.window.removeEventListener(`online`,r),globalThis.window.removeEventListener(`openchamber:system-resume`,r)),typeof document<`u`&&document.removeEventListener(`visibilitychange`,i),S.signal.removeEventListener(`abort`,r)},r=()=>{n(),t()},i=()=>{typeof document<`u`&&document.visibilityState===`visible`&&r()},a=setTimeout(r,e);globalThis.window!==void 0&&(globalThis.window.addEventListener(`online`,r,{once:!0}),globalThis.window.addEventListener(`openchamber:system-resume`,r,{once:!0})),typeof document<`u`&&document.addEventListener(`visibilitychange`,i),S.signal.addEventListener(`abort`,r,{once:!0})}),ce=e=>{if(e<=0)return 0;if(ie())return gk;let t=ae()?gk:hk,n=Math.min(e-1,_k);return Math.min(t,mk*2**n)},le=!1,ue,de=Date.now(),F,fe=_===`ws`?`ws`:`sse`,pe=null,I=0,L=0,me=e=>{O||(O={lastEventId:w&&w.length>0?w:null,disconnectedAt:Date.now(),runtimeGeneration:f(),reason:e},d?.({lastEventId:O.lastEventId,disconnectedAt:O.disconnectedAt,runtimeGeneration:O.runtimeGeneration,reason:O.reason}))},he=e=>{C||(C=!0,me(e),p?.(e))},ge=()=>{let e=O;O=null;let t=e!==null;u?.({lastEventId:e?.lastEventId??(w&&w.length>0?w:null),disconnectedAt:e?.disconnectedAt??null,runtimeGeneration:e?.runtimeGeneration??f(),reason:e?.reason??`ready`,transport:fe,isReconnect:t})},_e=()=>{C=!1,I=0,te(),l?.(),ge()},ve=(e,t,n)=>{if(n&&typeof n.type==`string`&&n.type.startsWith(`session.next.`)){c?.(e,n);return}n&&c?.(e,n);let r=t,i=g?.(e,r)||e,a=A(i);if(r.type===`message.part.updated`){let e=r.properties.part,t=typeof e?.messageID==`string`?e.messageID:void 0,n=typeof e?.id==`string`?e.id:void 0;if(t&&n){let e=`message.part.delta:${t}:${n}:`;for(let t of a.coalesced.keys())t.startsWith(e)&&a.coalesced.delete(t)}}let o=ee(r);if(o){let e=a.coalesced.get(o);if(e!==void 0){if(r.type===`message.part.delta`||r.type===`session.text.delta`||r.type===`session.reasoning.delta`||r.type===`session.tool.input.delta`){let t=a.queue[e],n=r.properties;a.queue[e]={...r,properties:{...r.properties,delta:t.properties.delta+n.delta}}}else a.queue[e]=r;Nn.pipeline.coalesced(r.type,o);return}a.coalesced.set(o,a.queue.length)}a.queue.push(r),ne(i)},ye=(e,t)=>{let n=Sk(t);if(!n)return`unusable`;let r=bk(n);if(r.status!==`event`)return r.status===`declined`?`declined`:`unusable`;let i=xk(e,n,r.event,r.normalized.locationDirectory);return ve(i,r.event,r.normalized),`ingested`},be=()=>{de=Date.now(),F&&clearTimeout(F),F=setTimeout(()=>{pe=`${fe}_heartbeat_timeout`,ue?.abort()},v)},xe=()=>{be(),m?.()},Se=()=>{F&&=(clearTimeout(F),void 0)},Ce=async(e,t)=>{if(t.aborted)throw new DOMException(`Aborted`,`AbortError`);let n,r=new Promise((e,r)=>{n=()=>r(new DOMException(`Aborted`,`AbortError`)),t.addEventListener(`abort`,n,{once:!0})});try{return await Promise.race([e,r])}finally{n&&t.removeEventListener(`abort`,n)}},we=async e=>{be();let n=await Ce(Promise.resolve(t.event.subscribe({signal:e,...w&&w.length>0?{headers:{"Last-Event-ID":w}}:{}})),e);_e();let r=Date.now();xe();for await(let e of n){xe(),le=!1;let t=typeof e.id==`string`?e.id:void 0;t&&t.length>0&&(w=t),ye(e,e.payload??e),!(Date.now()-r<sk)&&(r=Date.now(),await re(0))}if(!e.aborted){let e=Error(`Global event SSE stream closed`);throw e.reason=`sse_stream_closed`,e}},Te=async e=>{try{await i()}catch(e){let t=e instanceof Error?e:Error(`Message stream WebSocket auth token unavailable`);throw _===`auto`&&(T=Date.now()+uk,t.code=`WS_FALLBACK`),t.reason=`ws_auth_token_unavailable`,t}if(e.aborted)throw new DOMException(`Aborted`,`AbortError`);await new Promise((t,n)=>{let i=!1,a=!1,o=0,s=wk(w),c=(e,t=!1)=>{(t||!a)&&_===`auto`&&(T=Date.now()+uk,e.code=`WS_FALLBACK`)},l=setTimeout(()=>{l=void 0;let e=Error(`Message stream WebSocket ready timeout`);c(e),f(e);try{s.close()}catch{}},x),u=()=>{l&&=(clearTimeout(l),void 0),s.onopen=null,s.onmessage=null,s.onerror=null,s.onclose=null},d=()=>{i||(i=!0,e.removeEventListener(`abort`,p),u(),t())},f=t=>{i||(i=!0,e.removeEventListener(`abort`,p),u(),n(t))},p=()=>{try{s.close()}catch{}d()};e.addEventListener(`abort`,p,{once:!0}),s.onopen=()=>{};let m=e=>{_===`auto`&&(T=Date.now()+uk);let t=Error(`Message stream WebSocket invalid frame`);t.reason=e,f(t);try{s.close()}catch{}};s.onmessage=e=>{let t=null;try{t=JSON.parse(String(e.data))}catch{m(`ws_invalid_frame:json`);return}if(!t||typeof t.type!=`string`){m(`ws_invalid_frame:type`);return}if(t.type===`ready`){xe(),a=!0,o=Date.now(),l&&=(clearTimeout(l),void 0),le=!1,_e();return}if(t.type===`error`){xe();let e=Error(t.message||`Message stream WebSocket error`);e.reason=`ws_error_frame:${t.message||`unknown`}`,c(e),f(e);try{s.close()}catch{}return}if(t.type===`backpressure`){xe(),L=Date.now()+ok;return}if(t.type!==`event`){m(`ws_invalid_frame:type`);return}let n=typeof t.eventId==`string`&&t.eventId.length>0?t.eventId:void 0;if(ye({directory:t.directory,payload:t.payload},t.payload)===`unusable`){n&&(D=E===n?D+1:1,E=n,D>=dk&&(w=n,E=void 0,D=0)),m(`ws_invalid_frame:event_payload`);return}E=void 0,D=0,xe(),le=!1,n&&(w=n)},s.onerror=()=>{},s.onclose=t=>{if(e.aborted){d();return}let n=Error(`Global message stream WebSocket closed`);n.reason=a?`ws_closed:code=${t?.code??`?`}`:`ws_closed_before_ready`,a||r();let i=o>0?Date.now()-o:0;c(n,a&&i>0&&i<2e3),f(n)}})},Ee=()=>typeof WebSocket==`function`?_===`ws`?`ws`:_===`sse`||a()||T>Date.now()?`sse`:`ws`:`sse`;(async()=>{for(;!S.signal.aborted;){ue=new AbortController,de=Date.now(),pe=null;let e=y,t=Ee();fe=t;let n=()=>{pe=`pipeline_stopped`,ue?.abort()};S.signal.addEventListener(`abort`,n);try{t===`ws`?await Te(ue.signal):await we(ue.signal)}catch(n){let r=typeof n==`object`&&n?n.code:void 0;if(t===`ws`&&r===`WS_FALLBACK`)e=0,h?.();else if(!N(n)){I+=1,le||(le=!0,console.error(`[event-pipeline] stream failed`,n));let r=typeof n==`object`&&n?n.reason:void 0,i=typeof n==`object`&&n?n.message:void 0,a=typeof r==`string`&&r.length>0?r:typeof i==`string`&&i.length>0?`${t}_error:${i.slice(0,80)}`:`${t}_error:unknown`;he(a);let o=oe(n);e=o!==void 0&&se(o)?gk:ce(I)}}finally{S.signal.removeEventListener(`abort`,n),ue=void 0,Se()}if(S.signal.aborted)return;pe&&pe!==`pipeline_stopped`&&(he(pe),I+=1,e=y>0?ce(I):0,pe=null),e>0&&await P(e)}})().finally(te);let De=!1,R=()=>{if(!(typeof document>`u`)){if(document.visibilityState===`hidden`){De=!0,me(`visibility_hidden`);return}document.visibilityState===`visible`&&(De&&(De=!1,me(`visibility_hidden`)),!(!O&&Date.now()-de<v)&&ue?.abort())}},Oe=e=>{e.persisted&&(me(`pageshow_persisted`),ue?.abort())},ke=()=>{me(`system_resume`),ue&&(pe=`${fe}_system_resume`,ue.abort())},Ae=()=>{C&&(me(`online`),ue?.abort())},je=()=>{ue?.abort()};return typeof document<`u`&&(document.addEventListener(`visibilitychange`,R),window.addEventListener(`pageshow`,Oe)),globalThis.window!==void 0&&(globalThis.window.addEventListener(`openchamber:system-resume`,ke),globalThis.window.addEventListener(`online`,Ae),globalThis.window.addEventListener(`offline`,je)),{cleanup:()=>{typeof document<`u`&&(document.removeEventListener(`visibilitychange`,R),window.removeEventListener(`pageshow`,Oe)),globalThis.window!==void 0&&(globalThis.window.removeEventListener(`openchamber:system-resume`,ke),globalThis.window.removeEventListener(`online`,Ae),globalThis.window.removeEventListener(`offline`,je)),S.abort(),Se(),te()},reconnect:(e=`manual`)=>{e===`reasoning_projection`&&M(),pe=`${fe}_${e}`,ue?.abort()}}}var Ek=Qr({epoch:ei().min(1),revision:Yr().int().nonnegative(),serverNow:Yr(),enabled:$r(),delayMs:Xr(3e4),coverage:Qr({state:ti([`ready`,`reconciling`,`partial`]),failedDirectories:Zr(ei())}),requests:Zr(Qr({requestID:ei(),sessionID:ei(),directory:ei(),questionCount:Yr(),state:ti([`counting`,`paused`,`disabled`,`submitting`,`uncertain`,`settled`]),deadlineAt:Yr().nullable(),pauseReason:ti([`interaction`,`user`,`goal`]).nullable(),submittedBy:ti([`manual`,`auto`]).nullable(),resolution:ti([`replied`,`rejected`,`external`]).nullable()}))}),Dk=0,Ok=()=>({transport:u(),generation:f()}),kk=e=>e.transport===u()&&e.generation===f(),Ak=e=>[e.transport,`question-auto-delegate`,e.generation];function jk(e,t){return e?e.snapshot.epoch===t.snapshot.epoch?t.snapshot.revision<e.snapshot.revision||t.snapshot.revision===e.snapshot.revision&&t.sequence<e.sequence?e:{...t,sequence:Math.max(e.sequence,t.sequence),retiredEpochs:e.retiredEpochs}:t.sequence<e.sequence||e.retiredEpochs.includes(t.snapshot.epoch)?e:{...t,retiredEpochs:[...e.retiredEpochs,e.snapshot.epoch]}:t}var Mk=(e,t)=>({snapshot:e,receivedAt:performance.now(),sequence:t,retiredEpochs:[]});function Nk(e=Ok()){return Pr({queryKey:Ak(e),queryFn:async({signal:t})=>{if(!kk(e))throw Error(`Runtime changed`);let n=++Dk,r=await x(`/api/question-auto-delegate`,{signal:t});if(!r.ok)throw Error(`Question snapshot: ${r.status}`);let i=Ek.parse(await r.json());if(!kk(e)||t.aborted)throw Error(`Runtime changed`);return Mk(i,n)},structuralSharing:(e,t)=>jk(e,t),staleTime:1/0,retry:1,refetchOnWindowFocus:`always`})}function Pk(){let e=(0,U.c)(1);(0,K.useSyncExternalStore)(s,f,f);let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=Nk(),e[0]=t):t=e[0],Fr(t,_)}var Fk=()=>_.getQueryData(Nk().queryKey),Ik=async()=>{let e=Ak(Ok());await _.cancelQueries({queryKey:e,exact:!0},{revert:!1,silent:!0}),await _.invalidateQueries({queryKey:e,exact:!0})};async function Lk(e){let t=Ok(),n=++Dk,r=await x(`/api/question-auto-delegate/requests/${encodeURIComponent(e.requestID)}/pause`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionID:e.sessionID,directory:e.directory,reason:`interaction`})}),i=Qr({outcome:ti([`ok`,`paused`,`delegated`,`submitted`,`claimed`,`uncertain`,`settled`,`not_found`,`disabled`,`error`]),snapshot:Ek}).parse(await r.json());if(!kk(t))throw Error(`Runtime changed`);if(_.setQueryData(Ak(t),e=>jk(e,Mk(i.snapshot,n))),Ik(),!r.ok&&![`claimed`,`uncertain`,`not_found`].includes(i.outcome))throw Error(`Question pause: ${r.status}`);return i.outcome}var Rk=new Set([`/`,`-`,`_`,`.`,` `,`:`,`\\`]);function zk(e){return e==null?[]:typeof e==`string`?e?[e]:[]:e.filter(e=>typeof e==`string`&&e.length>0)}function Bk(e,t){if(!t)return 0;if(!e)return null;let n=e.toLowerCase(),r=t.toLowerCase(),i=n.indexOf(r);if(i<0)return null;let a=(n.length-r.length)/1e4;if(n===r)return-2;if(i===0)return-1+a;let o=n[i-1]??``;return(Rk.has(o)?0:.5)+i/1e3+a}function Vk(e,t,n,r){if(!t)return e.map(e=>({item:e,score:0}));let i=r?.limit??e.length,a=r?.threshold??.3,o=r?.noFuzzy??!1,s=t.toLowerCase(),c=[],l=[],u=new Set;for(let t of e){let e=zk(n(t));if(e.length===0)continue;let r=null,i=e[0].toLowerCase();for(let t of e){let e=t.toLowerCase(),n=Bk(e,s);n!==null&&(r===null||n<r)&&(r=n,i=e)}if(r!==null){c.push({item:t,score:r,sortKey:i}),u.add(t);continue}if(!o)for(let n of e)l.push({item:t,text:n,sortKey:e[0].toLowerCase()})}if(l.length>0){let e=new ni(l.map(e=>e.text),{threshold:a,ignoreLocation:!0,distance:100,includeScore:!0,minMatchCharLength:2}),n=new Map;for(let r of e.search(t)){let e=l[r.refIndex];if(!e||u.has(e.item))continue;let t=1+(r.score??1),i=n.get(e.item);(!i||t<i.score)&&n.set(e.item,{score:t,sortKey:e.sortKey})}for(let[e,t]of n)c.push({item:e,score:t.score,sortKey:t.sortKey})}return c.sort((e,t)=>e.score===t.score?e.sortKey.length===t.sortKey.length?e.sortKey.localeCompare(t.sortKey,void 0,{sensitivity:`accent`}):e.sortKey.length-t.sortKey.length:e.score-t.score),c.slice(0,i).map(({item:e,score:t})=>({item:e,score:t}))}var Hk={activeTab:`0`,selectedOptions:{},customMode:{},customText:{},customTextFilled:{},interacted:!1,pausePending:!1,pauseFailed:!1},Uk=Ne(()=>({drafts:{}})),Wk=(e,t)=>e.drafts[t]??Hk,Gk=e=>Wk(Uk.getState(),e);function Kk(e,t){Uk.setState(n=>{let r=n.drafts[e]??Hk,i=t(r);return Object.entries(i).every(([e,t])=>r[e]===t)?n:{drafts:{...n.drafts,[e]:{...r,...i}}}})}function qk(e){Uk.setState(t=>{if(!t.drafts[e])return t;let n={...t.drafts};return delete n[e],{drafts:n}})}s(()=>Uk.setState({drafts:{}}));var Jk=Re(),Yk=3e4,Xk=(e,t)=>e?.find(e=>e.requestID===t.id);function Zk(e){let t=Pk(),n=Xk(t.data?.snapshot.requests,e),r=`${f()}:${e.sessionID}:${e.id}`,i=Uk(e=>e.drafts[r]?.interacted??!1),a=Uk(e=>e.drafts[r]?.pausePending??!1),o=Uk(e=>e.drafts[r]?.pauseFailed??!1),[s,c]=K.useState(null),l=s?.scope===r&&(!s.epoch||s.epoch===t.data?.snapshot.epoch),u=l&&(!n||![`submitting`,`uncertain`,`settled`].includes(n.state)),d=Hr(async(t=!1)=>{let n=Gk(r);if(l||n.pausePending||!t&&n.pauseFailed)return;let i=Xk(Fk()?.snapshot.requests,e);if(i&&[`submitting`,`uncertain`,`settled`].includes(i.state)){t&&Ik();return}let a=f();Kk(r,()=>({interacted:!0,pausePending:!0,pauseFailed:!1}));try{let t=await Lk({requestID:e.id,sessionID:i?.sessionID||e.sessionID,directory:i?.directory||``});if(t===`error`||t===`disabled`)throw Error(`Question pause failed`)}catch{a===f()&&Uk.getState().drafts[r]&&Kk(r,()=>({pauseFailed:!0}))}finally{a===f()&&Uk.getState().drafts[r]&&Kk(r,()=>({pausePending:!1}))}}),p=Hr(e=>{e.target.closest(`[data-question-delegation-controls]`)||l||Gk(r).interacted||d()}),m=Hr(async n=>{n===`${f()}:${e.sessionID}:${e.id}`&&(c({scope:r,epoch:t.data?.snapshot.epoch}),await Ik())});return K.useEffect(()=>{!i||l||n&&n.state!==`counting`||d()},[i,l,n?.state,n?.requestID]),{query:t,request:n,submissionClaimed:m,claimed:l,awaitingClaim:u,scope:r,held:i,pausePending:a,pauseFailed:o,pause:d,interaction:p}}function Qk(e){let t=(0,U.c)(2),{remaining:n,delayMs:r}=e,i=`scaleX(${r>0?Math.min(1,n/r):0})`,a;return t[0]===i?a=t[1]:(a=(0,Jk.jsx)(`div`,{"data-question-delegate-bar":!0,"aria-hidden":!0,className:`h-1 w-full overflow-hidden rounded-full bg-muted/40`,children:(0,Jk.jsx)(`div`,{className:`h-full origin-left bg-primary/70 transition-transform duration-300 ease-linear motion-reduce:transition-none`,style:{transform:i}})}),t[0]=i,t[1]=a),a}function $k(e){let t=(0,U.c)(11),{data:n,deadlineAt:r,startedAt:i,delayMs:a}=e,{t:o}=Wr(),[,s]=K.useReducer(eA,0),c=Math.max(0,r!=null&&n?r-n.snapshot.serverNow-(performance.now()-n.receivedAt):a-(performance.now()-i));Vr(s,c>0?250:null);let l;t[0]!==c||t[1]!==o?(l=c>0?o(`chat.questionDelegate.countdown`,{seconds:Math.ceil(c/1e3)}):o(`chat.questionDelegate.awaiting`),t[0]=c,t[1]=o,t[2]=l):l=t[2];let u;t[3]===l?u=t[4]:(u=(0,Jk.jsx)(`span`,{className:`typography-micro tabular-nums text-muted-foreground`,role:`status`,children:l}),t[3]=l,t[4]=u);let d;t[5]!==a||t[6]!==c?(d=(0,Jk.jsx)(Qk,{remaining:c,delayMs:a}),t[5]=a,t[6]=c,t[7]=d):d=t[7];let f;return t[8]!==u||t[9]!==d?(f=(0,Jk.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[u,d]}),t[8]=u,t[9]=d,t[10]=f):f=t[10],f}function eA(e){return e+1}function tA({delegation:e}){let{t}=Wr(),{query:n,request:r,claimed:i,awaitingClaim:a,scope:o,held:s,pausePending:c,pauseFailed:l,pause:u}=e,d=K.useRef(performance.now()),f=K.useRef(o);f.current!==o&&(f.current=o,d.current=performance.now());let p=n.data?.snapshot.enabled!==!1,m=p&&!a&&!s&&(!r||r.state===`counting`),h=n.data?.snapshot.delayMs??Yk,g=a?`chat.questionDelegate.uncertain`:r?.state===`submitting`?`chat.questionDelegate.submitting`:r?.state===`uncertain`?`chat.questionDelegate.uncertain`:r?.state===`settled`&&r.submittedBy===`auto`&&r.resolution===`replied`?`chat.questionDelegate.success`:r?.state===`settled`?`chat.questionDelegate.settled`:p?r?.state===`disabled`?`chat.questionDelegate.disabled`:`chat.questionDelegate.settled`:`chat.questionDelegate.disabled`,_=!i&&(r?.state===`paused`||s&&(!r||r.state===`counting`));return _&&!n.isError&&!l?null:(0,Jk.jsxs)(`div`,{"data-question-delegation-controls":!0,className:`flex flex-col gap-1.5 border-t border-border/20 px-2 py-1.5`,children:[m?(0,Jk.jsx)($k,{data:n.data,deadlineAt:r?.deadlineAt??null,startedAt:d.current,delayMs:h}):_?null:(0,Jk.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Jk.jsx)(`span`,{role:`status`,className:`typography-micro text-muted-foreground`,children:t(g)}),(0,Jk.jsx)(`div`,{"aria-hidden":!0,className:`h-1`})]}),n.isError||l?(0,Jk.jsx)(`div`,{role:`alert`,className:`typography-micro text-[var(--status-error)]`,children:t(l?`chat.questionDelegate.pauseFailed`:`chat.questionDelegate.loadFailed`)}):null,(n.isError||l||a)&&(0,Jk.jsx)(`div`,{className:`flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1`,children:(0,Jk.jsx)(Gr,{variant:`ghost`,size:`xs`,disabled:c||n.isFetching,onClick:()=>l&&!i?void u(!0):void n.refetch(),children:t(i?`chat.questionDelegate.refreshStatus`:`chat.questionDelegate.retry`)})})]})}function nA(){let e=(0,U.c)(5),t=Pk(),{t:n}=Wr(),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=f(),e[0]=r):r=e[0];let i=r,a=K.useRef(void 0),o,s;return e[1]!==t.data||e[2]!==n?(o=()=>{let e=t.data;if(!e)return;let r=new Set(e.snapshot.requests.filter(aA).map(iA));for(let e of Object.keys(Uk.getState().drafts))e.startsWith(`${i}:`)&&r.has(e.slice(e.lastIndexOf(`:`)+1))&&qk(e);let o=a.current;if(a.current={generation:i,data:e},!o||o.generation!==i)return;let s=o.data;if(s.snapshot.epoch!==e.snapshot.epoch||s.snapshot.revision===e.snapshot.revision||document.visibilityState!==`visible`)return;let c=new Map(s.snapshot.requests.map(rA));for(let t of e.snapshot.requests)c.get(t.requestID)?.state!==`settled`&&t.state===`settled`&&t.submittedBy===`auto`&&t.resolution===`replied`&&xw.success(n(`chat.questionDelegate.success`),{id:`question-delegate:${e.snapshot.epoch}:${t.requestID}`})},s=[i,t.data,n],e[1]=t.data,e[2]=n,e[3]=o,e[4]=s):(o=e[3],s=e[4]),K.useEffect(o,s),null}function rA(e){return[e.requestID,e]}function iA(e){return e.requestID}function aA(e){return e.state===`settled`}function oA(e){let t=new Set;for(let[n,r]of Object.entries(e.session_status??{}))r&&r.type!==`idle`&&t.add(n);for(let[n,r]of Object.entries(e.permission??{}))(r?.length??0)>0&&t.add(n);for(let[n,r]of Object.entries(e.question??{}))(r?.length??0)>0&&t.add(n);return t}function sA(e,t){let n=new Set(Array.from(t).filter(Boolean));if(n.size===0)return;let r=e.session_interrupt_acknowledged_at,i=e.session_execution_version,a=e.session_status_event_at,o=e.session_status_event_sequence;for(let t of n)r?.[t]!==void 0&&e.session_interrupt_acknowledged_at===r&&(e.session_interrupt_acknowledged_at={...r}),i?.[t]!==void 0&&e.session_execution_version===i&&(e.session_execution_version={...i}),a?.[t]!==void 0&&e.session_status_event_at===a&&(e.session_status_event_at={...a}),o?.[t]!==void 0&&e.session_status_event_sequence===o&&(e.session_status_event_sequence={...o}),delete e.todo[t],delete e.session_diff[t],delete e.session_status[t],e.session_status_observed_at&&delete e.session_status_observed_at[t],e.session_status_event_at&&delete e.session_status_event_at[t],e.session_status_event_sequence&&delete e.session_status_event_sequence[t],e.session_interrupt_acknowledged_at&&delete e.session_interrupt_acknowledged_at[t],e.session_execution_version&&delete e.session_execution_version[t],e.session_error_at&&delete e.session_error_at[t],delete e.permission[t],delete e.question[t]}function cA(e){let t=[],n=new Set([e.keep,...Array.from(e.preserve??[])]);e.seen.has(e.keep)&&e.seen.delete(e.keep),e.seen.add(e.keep);for(let r of e.seen){if(e.seen.size-t.length<=e.limit)break;n.has(r)||t.push(r)}for(let n of t)e.seen.delete(n);return t}var lA=e=>{let t=e.time?.updated;if(typeof t==`number`&&Number.isFinite(t))return t;let n=e.time?.created;return typeof n==`number`&&Number.isFinite(n)?n:0},uA=(e,t)=>e?lA(t)<lA(e):!1,dA=(e,t)=>{if(t.sessionID!==e.id||typeof t.title!=`string`)return e;let n=typeof t.eventCreated==`number`&&Number.isFinite(t.eventCreated)?t.eventCreated:lA(e);return n<lA(e)||e.title===t.title&&n===lA(e)?e:{...e,title:t.title,time:{...e.time,updated:n}}};function fA(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function pA(e){return typeof e==`string`&&e.length>0?e:void 0}function mA(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function hA(e){let t=fA(e);if(!t)return null;let n=pA(t.id),r=pA(t.sessionID)??pA(t.sessionId),i=pA(t.permission)??pA(t.action);if(!n||!r||!i)return null;let a=fA(t.source)??fA(t.tool),o=mA(t.patterns),s=mA(t.resources),c=mA(t.always),l=mA(t.save);return Bt({id:n,sessionID:r,action:i,resources:o.length>0?o:s,save:c.length>0?c:l,metadata:fA(t.metadata)??{},source:a?{messageID:pA(a.messageID),id:pA(a.callID)??pA(a.id)}:void 0})}function gA(e){let t=fA(e);if(!t)return null;let n=pA(t.id),r=pA(t.sessionID)??pA(t.sessionId);if(!n||!r)return null;let i=(Array.isArray(t.questions)?t.questions:[]).flatMap(e=>{let t=fA(e);if(!t)return[];let n=Array.isArray(t.options)?t.options.flatMap(e=>{let t=fA(e);if(!t)return[];let n=pA(t.label);return n?[{label:n,description:typeof t.description==`string`?t.description:``}]:[]}):[];return[{question:pA(t.question)??``,header:pA(t.header)??``,options:n,...t.multiple===!0?{multiple:!0}:{}}]}),a=fA(t.tool);return br({id:n,sessionID:r,questions:i,tool:a?{messageID:pA(a.messageID),id:pA(a.callID)??pA(a.id)}:void 0})}function _A(e){let t=fA(e);if(!t)return null;let n=fA(t.form)??t;if(!ft(n.metadata))return null;let r=pA(n.id),i=pA(n.sessionID)??pA(n.sessionId);if(!r||!i)return null;let a=fA(n.metadata)??void 0,o=Array.isArray(n.fields)?n.fields.flatMap(e=>{let t=fA(e),n=t?pA(t.key):void 0;if(!t||!n)return[];let r=Array.isArray(t.options)?t.options.flatMap(e=>{let t=fA(e);return t?[{...typeof t.label==`string`?{label:t.label}:{},...typeof t.value==`string`?{value:t.value}:{},...typeof t.description==`string`?{description:t.description}:{}}]:[]}):void 0;return[{key:n,...typeof t.type==`string`?{type:t.type}:{},...typeof t.title==`string`?{title:t.title}:{},...typeof t.description==`string`?{description:t.description}:{},...r&&r.length>0?{options:r}:{}}]}):void 0;return br({id:r,sessionID:i,title:typeof n.title==`string`?n.title:void 0,...o&&o.length>0?{fields:o}:{},...a?{metadata:a}:{}})}function vA(e,t){let n=[...e.question[t.sessionID]??[]],r=uf.search(n,t.id,e=>e.id);return r.found?n[r.index]=t:n.splice(r.index,0,t),e.question[t.sessionID]=n,!0}function yA(e,t,n){if(!t||!n)return!1;let r=e.question[t];if(!r)return!1;let i=uf.search(r,n,e=>e.id);if(!i.found)return!1;let a=[...r];return a.splice(i.index,1),e.question[t]=a,!0}function bA(e,t,n){return e.session_error_at?.[t]!==n&&(e.session_error_at={...e.session_error_at,[t]:n},!0)}function xA(e,t){if(e.session_error_at?.[t]===void 0)return!1;let n={...e.session_error_at};return delete n[t],e.session_error_at=n,!0}function SA(e,t,n){let r=e.session_execution_recovery?.[t];return r&&r.reason===n.reason&&r.observedAt===n.observedAt?!1:(e.session_execution_recovery={...e.session_execution_recovery,[t]:n},!0)}function CA(e,t){let n=vf(e,t);if(e.session_execution_recovery?.[t]===void 0)return n;let r={...e.session_execution_recovery};return delete r[t],e.session_execution_recovery=r,!0}function wA(e,t){return e===t?!0:!e||e.type!==t.type?!1:e.type!==`retry`||t.type===`retry`&&e.attempt===t.attempt&&e.message===t.message&&e.next===t.next}function TA(e){return e.type===`global.disposed`||e.type===`server.connected`?{type:`refresh`}:e.type===`project.updated`?{type:`project`,project:e.properties}:null}function EA(e,t){let n=[...e.projects],r=uf.search(n,t.id,e=>e.id);return r.found?n[r.index]={...n[r.index],...t}:n.splice(r.index,0,t),{...e,projects:n}}function DA(e,t,n){t&&(n?.(t,void 0),sA(e,[t]))}var OA=e=>e.title===`smartfetch-secondary`;function kA(e,t,n,r){return n.found?(e.session.splice(n.index,1),OA(t)&&DA(e,t.id,r),t.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0):!1}function AA(e){let t=e.properties?.info;if(!(!t||typeof t!=`object`))return typeof t.id==`string`?t:void 0}function jA(e,t,n){if(t.type===`session.status`||t.type===`session.idle`||t.type===`session.error`||t.type.startsWith(`session.execution.`)){let n=t.properties;if(n.sessionID&&typeof n.eventSequence==`number`){if(n.eventSequence<=(e.session_status_event_sequence?.[n.sessionID]??-1))return!1;e.session_status_event_sequence={...e.session_status_event_sequence,[n.sessionID]:n.eventSequence}}if(n.sessionID&&typeof n.eventCreated==`number`){if(n.eventSequence===void 0&&n.eventCreated<(e.session_status_event_at?.[n.sessionID]??0))return!1;e.session_status_event_at={...e.session_status_event_at,[n.sessionID]:n.eventCreated}}}switch(t.type){case`server.instance.disposed`:return n?.onRefresh?.(``),!1;case`session.created`:{let r=AA(t);if(!r)return!1;let i=wd(r),a=e.session,o=uf.search(a,i.id,e=>e.id);return Md(i,{includeChildren:o.found})?o.found&&uA(a[o.index],i)?!1:(o.found?a[o.index]=i:(a.splice(o.index,0,i),MA(e),i.parentID||(e.sessionTotal+=1)),!0):kA(e,i,o,n?.onSetSessionTodo)}case`session.renamed`:{let r=t.properties;if(typeof r.sessionID!=`string`)return!1;let i=uf.search(e.session,r.sessionID,e=>e.id);if(!i.found)return!1;let a=e.session[i.index],o=dA(a,r);return o===a?!1:Md(o,{includeChildren:!0})?(e.session[i.index]=o,!0):kA(e,o,i,n?.onSetSessionTodo)}case`session.updated`:{let r=AA(t);if(!r)return!1;let i=wd(r),a=e.session,o=uf.search(a,i.id,e=>e.id);if(o.found&&uA(a[o.index],i))return!1;{let t=i.time?.archived,r=typeof t==`number`&&Number.isFinite(t)&&t>0;if(!Md(i,{includeChildren:o.found})||r)return kA(e,i,o,n?.onSetSessionTodo)}return o.found?a[o.index]=i:(a.splice(o.index,0,i),MA(e)),!0}case`openchamber:session-metadata`:{let r=t.properties,i=typeof r.sessionID==`string`?r.sessionID:``;if(!i||r.metadata===void 0)return!1;let a=e.session,o=uf.search(a,i,e=>e.id);if(!o.found)return!1;let s={...a[o.index],metadata:r.metadata};return a[o.index]=s,Md(s,{includeChildren:!0})?!0:kA(e,s,o,n?.onSetSessionTodo)}case`session.deleted`:{let r=t.properties.info,i=e.session,a=uf.search(i,r.id,e=>e.id);return a.found&&i.splice(a.index,1),DA(e,r.id,n?.onSetSessionTodo),r.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0}case`session.diff`:{let n=t.properties;return e.session_diff[n.sessionID]=Sd(n.diff),!0}case`todo.updated`:{let r=t.properties;return e.todo[r.sessionID]=r.todos,n?.onSetSessionTodo?.(r.sessionID,r.todos),!0}case`session.status`:{let r=t.properties;r.status.type===`idle`&&n?.onServerSessionIdle?.(r.sessionID);let i=!1;(r.status.type===`busy`||r.status.type===`retry`)&&(vf(e,r.sessionID),i=xA(e,r.sessionID));let a=CA(e,r.sessionID);return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),wA(e.session_status[r.sessionID],r.status)?!!n?.now||i||a:(e.session_status[r.sessionID]=r.status,!0)}case`session.idle`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i=CA(e,r.sessionID),a={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),wA(e.session_status[r.sessionID],a)?!!n?.now||i:(e.session_status[r.sessionID]=a,!0)}case`session.error`:{let r=t.properties,i=vf(e,r.sessionID);n?.onServerSessionIdle?.(r.sessionID);let a={type:`idle`},o=n?.now?.();o!==void 0&&(e.session_status_observed_at[r.sessionID]=o);let s=o!==void 0&&bA(e,r.sessionID,o);return wA(e.session_status[r.sessionID],a)?o!==void 0||s||i:(e.session_status[r.sessionID]=a,!0)}case`session.execution.started`:{let r=t.properties;e.session_execution_version={...e.session_execution_version,[r.sessionID]:(e.session_execution_version?.[r.sessionID]??0)+1};let i={type:`busy`};return xA(e,r.sessionID),CA(e,r.sessionID),n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),wA(e.session_status[r.sessionID],i)||(e.session_status[r.sessionID]=i),!0}case`session.execution.succeeded`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i=CA(e,r.sessionID),a={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),wA(e.session_status[r.sessionID],a)?!!n?.now||i:(e.session_status[r.sessionID]=a,!0)}case`session.execution.interrupted`:{let r=t.properties,i=r.reason,a=n?.now?.();if(a!==void 0&&(e.session_status_observed_at[r.sessionID]=a),i===`shutdown`){let t=vf(e,r.sessionID),n={type:`busy`},i=SA(e,r.sessionID,{reason:`shutdown`,observedAt:a??Date.now()});return wA(e.session_status[r.sessionID],n)?i||t||a!==void 0:(e.session_status[r.sessionID]=n,!0)}n?.onServerSessionIdle?.(r.sessionID);let o=CA(e,r.sessionID),s={type:`idle`};return wA(e.session_status[r.sessionID],s)?o||a!==void 0:(e.session_status[r.sessionID]=s,!0)}case`session.execution.failed`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i={type:`idle`},a=n?.now?.();a!==void 0&&(e.session_status_observed_at[r.sessionID]=a);let o=a!==void 0&&bA(e,r.sessionID,a),s=CA(e,r.sessionID);return wA(e.session_status[r.sessionID],i)?a!==void 0||o||s:(e.session_status[r.sessionID]=i,!0)}case`session.revert.staged`:{let n=t.properties,r=typeof n.sessionID==`string`?n.sessionID:void 0,i=typeof n.revert?.messageID==`string`?n.revert.messageID:void 0;if(!r||!i)return!1;let a=e.session,o=uf.search(a,r,e=>e.id);if(!o.found)return!1;let s=a[o.index],c={messageID:i,...typeof n.revert?.partID==`string`?{partID:n.revert.partID}:{}},l=s.revert;return l&&l.messageID===c.messageID&&l.partID===c.partID?!1:(a[o.index]={...s,revert:c},!0)}case`session.revert.cleared`:case`session.revert.committed`:{let n=t.properties,r=typeof n.sessionID==`string`?n.sessionID:void 0;if(!r)return!1;let i=e.session,a=uf.search(i,r,e=>e.id);if(!a.found)return!1;let o=i[a.index];return o.revert?(i[a.index]={...o,revert:void 0},!0):!1}case`message.updated`:case`message.removed`:case`message.part.updated`:case`message.part.removed`:case`message.part.delta`:return!1;case`vcs.branch.updated`:{let n=pA(fA(t.properties)?.branch);return!n||e.vcs?.branch?.current===n?!1:(e.vcs={...e.vcs,branch:{...e.vcs?.branch,current:n}},!0)}case`permission.asked`:{let n=hA(t.properties);if(!n)return!1;let r=[...e.permission[n.sessionID]??[]],i=uf.search(r,n.id,e=>e.id);return i.found?r[i.index]=n:r.splice(i.index,0,n),e.permission[n.sessionID]=r,!0}case`permission.replied`:{let n=t.properties,r=e.permission[n.sessionID];if(!r)return!1;let i=uf.search(r,n.requestID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),e.permission[n.sessionID]=t,!0}return!1}case`question.asked`:{let n=gA(t.properties);return n?vA(e,n):!1}case`form.created`:{let n=_A(t.properties);return n?vA(e,n):!1}case`question.replied`:case`question.rejected`:{let n=t.properties;return yA(e,n.sessionID,n.requestID)}case`form.replied`:case`form.cancelled`:{let n=t.properties;return yA(e,n.sessionID,n.id??n.requestID)}case`lsp.updated`:return n?.onLoadLsp?.(),!1;default:return!1}}function MA(e){if(e.session.length<=e.limit)return;let t=new Set(Object.entries(e.permission??{}).filter(([,e])=>e&&e.length>0).map(([e])=>e));for(;e.session.length>e.limit;){let n=e.session[0];if(t.has(n.id))break;e.session.shift()}}var NA=Ne()(e=>({...rn,actions:{set:t=>e(t),reset:()=>e(rn)}}));function PA(e){if(!e)return!1;for(let t of Object.values(e.question??{}))if(t&&t.length>0)return!0;for(let t of Object.values(e.permission??{}))if(t&&t.length>0)return!0;return!1}function FA(e){let t=Math.max(0,e.stores.length-e.max),n=e.graceMs??0,r=e.stores.filter(t=>!e.pins.has(t)).filter(t=>!e.hasPendingBlockingRequests?.(t)).slice().sort((t,n)=>(e.state.get(t)?.lastAccessAt??0)-(e.state.get(n)?.lastAccessAt??0)),i=[];for(let a of r){let r=e.state.get(a)?.lastAccessAt??0,o=e.now-r,s=o>=e.ttl;!s&&t<=0||!s&&o<n||(i.push(a),t>0&&--t)}return i}function IA(e){return!(!e.directory||!e.hasStore||e.pinned||e.booting||e.loadingSessions||e.hasPendingBlockingRequests)}function LA(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t|=0}return Math.abs(t).toString(36)}function RA(e){let t=e.slice(0,12).replace(/[^a-zA-Z0-9]/g,`_`);return`oc.dir.${LA(m().trim()||`default`)}.${t}.${LA(e)}`}function zA(e,t){return`${RA(e)}.${t}`}function BA(e,t){try{let n=localStorage.getItem(zA(e,t));return n?JSON.parse(n):void 0}catch{return}}function VA(e,t,n){try{let r=zA(e,t);n===void 0?localStorage.removeItem(r):localStorage.setItem(r,JSON.stringify(n))}catch{}}function HA(e){return{vcs:BA(e,`vcs`),projectMeta:BA(e,`projectMeta`),icon:BA(e,`icon`)}}function UA(e){try{localStorage.removeItem(`${RA(e)}.sessions`)}catch{}}function WA(e,t){VA(e,`vcs`,t)}function GA(e,t){VA(e,`projectMeta`,t)}function KA(e,t){VA(e,`icon`,t)}function qA(e){let t=HA(e);UA(e);let n=Ne()(e=>({...tn,vcs:t.vcs??tn.vcs,projectMeta:t.projectMeta??tn.projectMeta,icon:t.icon??tn.icon,patch:t=>e(t),replace:t=>e(t)})),r=n.setState;return n.setState=((t,i)=>{let a=typeof t==`function`?t(n.getState()):t;r(yo(e,n.getState(),a),i)}),n.setState({patch:e=>n.setState(e),replace:e=>n.setState(e)}),n.subscribe((t,n)=>{t.vcs!==n.vcs&&WA(e,t.vcs),t.projectMeta!==n.projectMeta&&GA(e,t.projectMeta),t.icon!==n.icon&&KA(e,t.icon)}),n}var JA=class{children=new Map;lifecycle=new Map;pins=new Map;disposers=new Map;registrySubscribers=new Set;generations=new Map;evictionScheduled=!1;onBootstrap;onDispose;isBooting;isLoadingSessions;notifyRegistrySubscribers(){for(let e of this.registrySubscribers)e()}configure(e){this.onBootstrap=e.onBootstrap,this.onDispose=e.onDispose,this.isBooting=e.isBooting,this.isLoadingSessions=e.isLoadingSessions}mark(e){let t=S(e);t&&(this.lifecycle.set(t,{lastAccessAt:Date.now()}),this.scheduleEviction())}scheduleEviction(){this.evictionScheduled||(this.evictionScheduled=!0,queueMicrotask(()=>{this.evictionScheduled=!1,this.runEviction()}))}pin(e){let t=S(e);t&&(this.pins.set(t,(this.pins.get(t)??0)+1),this.mark(t))}unpin(e){let t=S(e);if(!t)return;let n=(this.pins.get(t)??0)-1;if(n>0){this.pins.set(t,n);return}this.pins.delete(t),this.scheduleEviction()}pinned(e){return(this.pins.get(S(e))??0)>0}ensureChild(e,t){let n=S(e);if(!n)throw Error(`No directory provided to ensureChild`);let r=this.children.get(n);return r||(r=qA(n),this.children.set(n,r),this.generations.set(n,(this.generations.get(n)??0)+1),this.notifyRegistrySubscribers()),this.mark(n),(t?.bootstrap??!0)&&r.getState().status===`loading`&&this.onBootstrap?.(n),r}getChild(e){return this.children.get(S(e))}captureChild(e,t){let n=S(e),r=this.ensureChild(n,t);return{directory:n,generation:this.generations.get(n)??0,store:r}}isCurrentChildCapture(e){let t=S(e.directory);return this.children.get(t)===e.store&&this.generations.get(t)===e.generation}disposeDirectory(e){let t=S(e);if(!IA({directory:t,hasStore:this.children.has(t),pinned:this.pinned(t),booting:this.isBooting?.(t)??!1,loadingSessions:this.isLoadingSessions?.(t)??!1,hasPendingBlockingRequests:this.hasPendingBlockingRequestsForDirectory(t)}))return!1;this.lifecycle.delete(t),this.children.delete(t),this.notifyRegistrySubscribers();let n=this.disposers.get(t);return n&&(n(),this.disposers.delete(t)),this.onDispose?.(t),!0}runEviction(e){let t=[...this.children.keys()];if(t.length===0)return;let n=FA({stores:t,state:this.lifecycle,pins:new Set(t.filter(e=>this.pinned(e))),max:30,ttl:Xn,graceMs:mt,now:Date.now(),hasPendingBlockingRequests:e=>this.hasPendingBlockingRequestsForDirectory(e)}).filter(t=>t!==e);for(let e of n)this.disposeDirectory(e)}hasPendingBlockingRequestsForDirectory(e){return PA(this.getChild(e)?.getState())}update(e,t){let n=this.getChild(e);if(!n)return;let r=t(n.getState());n.setState(r)}getState(e){return this.getChild(e)?.getState()}disposeAll(){for(let e of[...this.children.keys()])this.children.delete(e);this.notifyRegistrySubscribers(),this.lifecycle.clear(),this.pins.clear(),this.disposers.clear()}subscribeRegistry(e){return this.registrySubscribers.add(e),()=>{this.registrySubscribers.delete(e)}}subscribeAll(e){let t=new Map,n=()=>{let n=new Set(this.children.keys());for(let[e,r]of t.entries())n.has(e)||(r(),t.delete(e));for(let[n,r]of this.children.entries())t.has(n)||t.set(n,r.subscribe(e))};n();let r=this.subscribeRegistry(()=>{n(),e()});return()=>{r();for(let e of t.values())e();t.clear()}}subscribeAllSelected(e,t){let n=new Map,r=()=>{let r=new Set(this.children.keys());for(let[e,t]of n.entries())r.has(e)||(t(),n.delete(e));for(let[r,i]of this.children.entries())n.has(r)||n.set(r,i.subscribe((n,r)=>{Object.is(e(n),e(r))||t()}))};r();let i=this.subscribeRegistry(()=>{r(),t()});return()=>{i();for(let e of n.values())e();n.clear()}}},YA=e=>{let t=e.time?.updated;if(typeof t==`number`&&Number.isFinite(t))return t;let n=e.time?.created;return typeof n==`number`&&Number.isFinite(n)?n:0},XA=e=>{let t=e.directory??``,n=e.parentID??``,r=e.metadata?.openchamber?.titleRefresh;return[e.id,e.title??``,e.time?.created??0,e.time?.archived??0,t,n,e.share?.url??``,r?.isGenerating===!0,typeof r?.lastError==`string`?r.lastError:``,typeof r?.failedAt==`number`?r.failedAt:``].join(`|`)},ZA=e=>{switch(e?.type){case`retry`:return 4;case`busy`:return 3;case`idle`:return 1;default:return 0}},QA=e=>{let t=e?.message;return typeof t==`string`?t:null},$A=(e,t)=>{let n=e?.[t];return typeof n==`number`?n:null},ej=(e,t)=>e?.type===t?.type&&QA(e)===QA(t)&&$A(e,`attempt`)===$A(t,`attempt`)&&$A(e,`next`)===$A(t,`next`),tj=(e,t)=>{let n=e.session_status?.[t];if(!n)return null;let r=e.session.find(e=>e.id===t);return{status:n,sessionUpdatedAt:r?YA(r):-1}},nj=(e,t)=>e?t.sessionUpdatedAt===e.sessionUpdatedAt?ZA(t.status)>=ZA(e.status):t.sessionUpdatedAt>e.sessionUpdatedAt:!0,rj=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(XA(e[n])!==XA(t[n]))return!1;return!0},ij=(e,t)=>{if(e===t)return!0;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n){if(!(r in t))return!1;let n=e[r],i=t[r];if(!ej(n,i))return!1}return!0};function aj(e,t,n={}){let r=new Map;for(let i of e)for(let e of i.session){if(!e?.id||t?.has(e.id)||!Md(e,n))continue;let i=r.get(e.id);(!i||YA(e)>=YA(i))&&r.set(e.id,e)}return Array.from(r.values()).sort((e,t)=>YA(t)-YA(e))}function oj(e){let t=new Map;for(let n of e){let e=new Map(n.session.map(e=>[e.id,YA(e)]));for(let r of Object.keys(n.session_status??{})){let i={status:n.session_status[r],sessionUpdatedAt:e.get(r)??-1};nj(t.get(r),i)&&t.set(r,i)}}let n={};for(let[e,r]of t)n[e]=r.status;return n}function sj(e,t){if(!t)return;let n;for(let r of e){let e=r.session.find(e=>e.id===t);e&&(!n||YA(e)>=YA(n))&&(n=e)}return n}function cj(e,t){if(!t)return;let n;for(let r of e){let e=tj(r,t);e&&nj(n,e)&&(n=e)}return n?.status}function lj(e,t){let n=new Set;for(let[t,r]of Object.entries(e))(r.type===`busy`||r.type===`retry`)&&n.add(t);for(let r of t.keys())e[r]===void 0&&n.add(r);return n}function uj(e){let t=new Set,n=new Map,r=!0,i,a=new Set,o=()=>{if(!r&&i)return t;r=!1;let a=Array.from(e.children.values(),e=>e.getState()),o=new Map;for(let e of Y.getState().activeSessions)o.set(e.id,e);for(let e of a)for(let t of e.session){let e=o.get(t.id);(!e||(t.time?.updated??0)>=(e.time?.updated??0))&&o.set(t.id,t)}let s=lj(oj(a),ag.getState().statusById),c=new Set,l=new Map;for(let e of s){let t=new Set,n=e;for(;n&&!t.has(n);)t.add(n),c.add(n),n!==e&&l.set(n,(l.get(n)??0)+1),n=o.get(n)?.parentID}return(l.size!==n.size||[...l].some(([e,t])=>n.get(e)!==t))&&(n=l),(c.size!==t.size||[...c].some(e=>!t.has(e)))&&(t=c),t},s=()=>{r=!0;let e=t,i=n;if(o()!==e||n!==i)for(let e of a)e()};return{read:o,readDescendantCount:e=>(o(),n.get(e)??0),subscribe:t=>{if(a.add(t),!i){let t=e.subscribeAllSelected(e=>e.session_status,s),n=e.subscribeAllSelected(e=>e.session,s),r=ag.subscribe(s),a=Y.subscribe((e,t)=>{e.activeSessions!==t.activeSessions&&s()});i=()=>{t(),n(),r(),a()},s()}return()=>{a.delete(t),a.size===0&&(i?.(),i=void 0,r=!0)}}}}var dj=new WeakMap;function fj(e){let t=dj.get(e);return t||(t=uj(e),dj.set(e,t)),t}var pj=(e,t)=>e<t?-1:+(e>t);function mj(e){if(typeof e==`string`&&e.trim().length!==0)return{location:{directory:e}}}var hj=e=>!e||e.length===0?``:e.map(e=>e.id).sort(pj).join(`|`);function gj(e){return e.reduce((e,t)=>{if(!t?.id||!t.sessionID)return e;let n=e[t.sessionID];return n?n.push(t):e[t.sessionID]=[t],e},{})}function _j(e,t,n){let r=n,i=new Set([...Object.keys(e),...Object.keys(t)]);for(let a of i){let i=t[a];i!==e[a]&&(r===n&&(r={...n}),i?r[a]=i:delete r[a])}return r}function vj(e,t){return t.find(t=>Je(t)===e||t.sandboxes?.includes(e))?.id}async function yj(e,t){let n=await Promise.allSettled([gd(()=>e.server.info())]),r=n.filter(e=>e.status===`rejected`).map(e=>e.reason);if(r.length&&console.error(`[bootstrap] global bootstrap failed`,r[0]),r.length===n.length){let e=r[0]instanceof Error?r[0].message:String(r[0]);try{let t=await x(`/health`,{signal:AbortSignal.timeout(4e3)});if(t.ok){let n=await t.json();if(n.lastOpenCodeError)e=n.lastOpenCodeError;else if(n.runtimeContract?.executionAllowed===!1){let t=typeof n.runtimeContract?.phase==`string`?n.runtimeContract.phase:`incompatible`,r=typeof n.runtimeContract?.serveVersion==`string`?n.runtimeContract.serveVersion:null;e=r?`OpenCode runtime contract limits execution (phase=${t}, serve=${r})`:`OpenCode runtime contract limits execution (phase=${t})`}else n.openCodeRunning||(e=`OpenCode process is not running`)}}catch{}t({ready:!0,error:{type:`init`,message:e}})}else t({ready:!0,error:void 0})}async function bj(e){let{directory:t,sdk:n,getState:r,set:i,global:a}=e;if(!t.trim())throw Error(`Directory bootstrap requires an explicit directory`);let o=r(),s=o.status!==`complete`,c=vj(t,a.projects);if(c&&i({project:c}),Object.keys(o.config??{}).length===0&&Object.keys(a.config??{}).length>0){let e=a.config;i({config:e}),et(t,e)}s&&i({status:`partial`});let l=await Promise.allSettled([c?Promise.resolve():gd(()=>n.location.get(mj(t)).then(e=>{let t=e?.project?.id;t&&i({project:t})})),gd(()=>n.config.get(mj(t)).then(e=>{let n=ut(e);i({config:n}),et(t,n)})),gd(()=>n.location.get(mj(t)).then(e=>{let n=xt(e);i({path:n});let r=vj(n.directory||t,a.projects);r&&i({project:r})})),gd(async()=>{let e=Date.now(),t=r().session_status,a=await n.session.active(),o=new Set([...Object.keys(t),...r().session.map(e=>e.id)]);if(o.size===0)return;let s=Mt(a,o),c=r().session_status,l={...r().session_status_observed_at};for(let n of Object.keys(s))c[n]===t[n]&&(l[n]=e);i({session_status:_j(t,c,s),session_status_observed_at:l,session_status_snapshot_at:e})})]),u=l.filter(e=>e.status===`rejected`).map(e=>e.reason),[,,d]=l,f=d.status===`rejected`&&!r().project;if(u.length===l.length||f){console.error(`[bootstrap] directory bootstrap failed for ${t}`,u[0]);return}s&&i({status:`complete`}),Promise.allSettled([gd(async()=>{let e=await n.vcs.get(mj(t));if(!e?.data)throw Error(`vcs.get returned no data`);i({vcs:e.data})}),gd(async()=>{let e=r(),a=new Map(Object.entries(e.question??{}).map(([e,t])=>[e,hj(t)])),o=gj((await n.form.list(mj(t))).data.filter(e=>!!e?.id&&!!e?.sessionID&&ft(e.metadata)).map(e=>br({id:e.id,sessionID:e.sessionID,title:e.title,fields:e.fields,...e.metadata?{metadata:e.metadata}:{}}))),s=r(),c={...s.question};for(let[e,t]of Object.entries(o))c[e]=t.filter(e=>!!e?.id).sort((e,t)=>pj(e.id,t.id));for(let e of a.keys()){if(o[e])continue;let t=a.get(e)??``;hj(s.question[e])===t&&delete c[e]}i({question:c})}),gd(async()=>{let e=r(),a=new Map(Object.entries(e.permission??{}).map(([e,t])=>[e,hj(t)])),o=gj((await n.permission.request.list(mj(t))).data.filter(e=>!!e?.id&&!!e?.sessionID).map(Bt)),s=r(),c={...s.permission};for(let[e,t]of Object.entries(o))c[e]=t.filter(e=>!!e?.id).sort((e,t)=>pj(e.id,t.id));for(let e of a.keys()){if(o[e])continue;let t=a.get(e)??``;hj(s.permission[e])===t&&delete c[e]}i({permission:c})})]).then(e=>{let n=e.filter(e=>e.status===`rejected`).map(e=>e.reason);n.length&&console.error(`[bootstrap] deferred phase failed for ${t}`,n[0])})}function xj(e,t,n,r){let i=n[e][t];i!==void 0&&(r[e]={...r[e],[t]:i},n[e]={...n[e]},delete n[e][t])}function Sj(e,t){let n=e.directory;if(!n)return;let r=t.ensureChild(n,{bootstrap:!1}),i={...r.getState()};for(let[n,a]of t.children){if(a===r)continue;let t={...a.getState()};if(t.session.some(t=>t.id===e.id)||vo.some(n=>t[n][e.id]!==void 0)){t.session=t.session.filter(t=>t.id!==e.id);for(let n of vo)xj(n,e.id,t,i);a.setState(t),B()?.apply(V(n,e.id),{type:`reset`})}}i.session=[...i.session.filter(t=>t.id!==e.id),e].sort((e,t)=>e.id.localeCompare(t.id)),r.setState(i),rt(e.id,n),Y.getState().upsertSession(e),$.getState().setSessionDirectory(e.id,n)}var Cj=Ne()(()=>({streamingMessageIds:new Map,messageStreamStates:new Map}));function wj(){Cj.setState({streamingMessageIds:new Map,messageStreamStates:new Map})}var Tj=1e3;function Ej(e,t){let n=Date.now(),r=Cj.getState(),i=r.streamingMessageIds,a=r.messageStreamStates,o=new Map,s=new Map(a),c=!1,l=new Set;for(let[t,n]of Object.entries(e.session_status??{}))n.type===`busy`&&l.add(t);let u=(e,t)=>{o.set(e,null);let r=s.get(t);r&&r.phase===`streaming`&&s.set(t,{...r,phase:`completed`,completedAt:n}),c=!0},d=t?.directory??``,f=B();t?.store;for(let e of l){let t=[];if(f&&d&&(t=en(f.getTranscript(V(d,e)))),t.length===0)continue;let r=null;for(let e=t.length-1;e>=0&&t[e].role!==`user`;e--)if(t[e].role===`assistant`){r=t[e];break}if(!r){let t=i.get(e);t&&u(e,t);continue}i.get(e)!==r.id&&(c=!0),o.set(e,r.id);let a=s.get(r.id);!a||a.phase!==`streaming`?(s.set(r.id,{phase:`streaming`,startedAt:a?.startedAt??n,lastUpdateAt:n}),c=!0):n-a.lastUpdateAt>=Tj&&(s.set(r.id,{...a,lastUpdateAt:n}),c=!0)}for(let[e,t]of i)t&&(l.has(e)||u(e,t));c&&Cj.setState({streamingMessageIds:o,messageStreamStates:s})}function Dj(e,t){if(t.type!==`session.inbox.delivered`)return;let n=t.properties;if(!n.sessionID||!n.inboxID)return;let r=B();if(!r)return;let i=V(e,n.sessionID);if(r.getParts(i,n.inboxID).length>0)return;let a=Bn.getState().list(n.sessionID).find(e=>e.id===n.inboxID),o=a?Pn(n.sessionID,{id:a.id,type:`user`,text:a.payload.text,metadata:a.payload.metadata,time:{created:n.eventCreated??a.timeCreated},files:Array.isArray(a.payload.files)?a.payload.files.flatMap(e=>!e||typeof e!=`object`||typeof e.uri!=`string`?[]:[{name:e.name,source:{type:`uri`,uri:e.uri}}]):[]}):null;if(!o||o.parts.length===0){let{sessionID:t,inboxID:a}=n,o=u(),s=f(),c=()=>o===u()&&s===f()&&r===B()&&Eo(t,e);tt(`${o}\n${s}\n${e}\n${t}\n${a}`,async()=>{if(!c())return;let n=H.getScopedSdkClient(e),l=await Ig({transport:o,generation:s,directory:e,sessionID:t,messageID:a,request:async()=>{let e=await n.session.message({sessionID:t,messageID:a}),r=Pn(t,e);if(!r||r.info.id!==a)throw Error(`Delivered inbox message unavailable`);return{data:r}}});c()&&r.apply(i,{type:`materialize-snapshots`,records:[l]})}).catch(()=>{console.warn(`[sync] Delivered inbox message recovery failed`)});return}r.apply(i,{type:`sse-event-batch`,events:[{type:`message.updated`,properties:{info:o.info}},...o.parts.map(e=>({type:`message.part.updated`,properties:{part:e}}))]})}function Oj(e){let t=e.listCanonicalScopes(e.sessionID).filter(t=>t.sessionID===e.sessionID&&t.transport===e.transport&&t.generation===e.generation);return t.length>0?[...t]:[{directory:e.resolvedDirectory,sessionID:e.sessionID,transport:e.transport,generation:e.generation}]}function kj(e){if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null}function Aj(e){if(e[1]===`commands`)return kj(e[2]);if(e[1]===`mcp`&&(e[2]===`configs`||e[2]===`status`))return kj(e[3])}function jj(e,t){let n=t.directory===void 0?void 0:kj(t.directory);return t.directory!==void 0&&!n?Promise.resolve():e.invalidateQueries({predicate:e=>{if(e.queryKey[0]!==t.transport)return!1;let r=Aj(e.queryKey);return r===void 0?!1:n===void 0||r===n},refetchType:`active`})}function Mj(e,t){if(e.type!==`location.shutdown`&&e.type!==`server.instance.disposed`)return null;let n=e.properties?.directory,r=typeof n==`string`&&n.trim()?n:t;return r&&r!==`global`?r:null}var Nj={"credential.updated":[`providers`],"credential.switched":[`providers`],"integration.updated":[`providers`],"provider.updated":[`providers`],"model.updated":[`providers`],"config.updated":[`providers`,`agents`,`plugins`],"agent.updated":[`agents`],"command.updated":[`commands`],"skill.updated":[`skills`],"mcp.status.changed":[`mcp`],"mcp.resources.changed":[`mcp`],"plugin.updated":[`plugins`]},Pj=[`providers`,`agents`,`commands`,`skills`,`mcp`,`plugins`];function Fj(e){if(e[2]===`provider-connections`||e[1]===`configCatalog`&&e[2]===`providers`)return{domain:`providers`,directory:I(e[3])};if(e[1]===`providers`)return{domain:`providers`,directory:I(e[2])};if(e[1]===`agents`)return{domain:`agents`,directory:I(e[2]===`raw`?e[3]:e[2])};if(e[1]===`commands`||e[1]===`skills`)return{domain:e[1],directory:I(e[2])};if(e[1]===`mcp`||e[1]===`plugins`)return{domain:e[1],directory:I(e[3])};if(e[1]===`skillsCatalog`)return{domain:`skills`,directory:I(e[3])}}function Ij(e){let t=new Map,n,r=e.identity(),i=!1,a=t=>{let n=e.identity();return n.transport===t.transport&&n.generation===t.generation},o=()=>{n||i||(n=setTimeout(()=>{n=void 0,s()},100))},s=async()=>{if(!a(r)){t.clear();return}let n=t,s=r;t=new Map;let c=n.get(void 0);if(c){for(let[e,t]of n)if(e!==void 0){for(let e of c)t.delete(e);t.size||n.delete(e)}}i=!0;try{if(await e.client.invalidateQueries({predicate:e=>{if(e.queryKey[0]!==s.transport)return!1;let t=Fj(e.queryKey);return t?[...n].some(([e,n])=>n.has(t.domain)&&(e===void 0||t.directory===null||t.directory===e)):!1},refetchType:`active`}),!a(s))return;await Promise.all([...n].map(([t,n])=>e.refreshProjections(t,n)))}catch(t){a(s)&&e.onError(t)}finally{i=!1,t.size&&o()}};return{event(n,i){let s=n===`server.connected`?Pj:Object.hasOwn(Nj,n)?Nj[n]:void 0;if(!s)return!1;a(r)||(t.clear(),r=e.identity());let c=n.startsWith(`credential.`)||!i||i===`global`?void 0:I(i)??void 0,l=t.get(c)??new Set;for(let e of s)l.add(e);return t.set(c,l),o(),!0},dispose(){n&&clearTimeout(n),n=void 0,t.clear()}}}var Lj=e=>e?e.toLowerCase().includes(`text/html`):!1;function Rj(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function zj(e){return typeof e==`string`&&e.length>0?e:void 0}function Bj(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function Vj(e){try{return(await e.text()).trim()}catch{return``}}async function Hj(e,t){if(Lj(e.headers.get(`content-type`)))throw Error(`${t}: unexpected HTML response`);if(e.status===204)return null;let n=await e.text();if(!n.trim()){if(e.ok)return null;throw Error(`${t}: empty response`)}try{return JSON.parse(n)}catch{throw Error(`${t}: malformed JSON`)}}function Uj(e){return e?{directory:e}:{}}function Wj(e){if(!Rj(e))return null;let t=zj(e.value),n=zj(e.label);return!t||!n?null:{value:t,label:n,...zj(e.description)?{description:zj(e.description)}:{}}}function Gj(e){if(!Rj(e))return null;let t=zj(e.key),n=zj(e.type);if(!t||!n)return null;let r=zj(e.title),i=zj(e.description);if(n===`external`){let a=zj(e.url);return a?{key:t,type:n,url:a,...r?{title:r}:{},...i?{description:i}:{}}:null}if(n===`string`){let a=Array.isArray(e.options)?e.options.flatMap(e=>{let t=Wj(e);return t?[t]:[]}):void 0;return{key:t,type:n,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...zj(e.placeholder)?{placeholder:zj(e.placeholder)}:{},...typeof e.default==`string`?{default:e.default}:{},...a&&a.length>0?{options:a}:{},...typeof e.custom==`boolean`?{custom:e.custom}:{}}}if(n===`number`||n===`integer`)return{key:t,type:n,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...typeof e.default==`number`?{default:e.default}:{}};if(n===`boolean`)return{key:t,type:n,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...typeof e.default==`boolean`?{default:e.default}:{}};if(n===`multiselect`){let a=Array.isArray(e.options)?e.options.flatMap(e=>{let t=Wj(e);return t?[t]:[]}):[];return a.length===0?null:{key:t,type:n,options:a,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...Array.isArray(e.default)?{default:e.default.filter(e=>typeof e==`string`)}:{}}}return null}function Kj(e){let t=Rj(e)?e:null,n=t&&Rj(t.data)?t.data:t&&Rj(t.form)?t.form:t;if(!n)throw Error(`session form: expected form payload`);let r=zj(n.id),i=zj(n.sessionID),a=zj(n.title);if(!r||!r.startsWith(`frm_`)||!i||!a)throw Error(`session form: missing id, sessionID, or title`);let o=Array.isArray(n.fields)?n.fields.flatMap(e=>{let t=Gj(e);return t?[t]:[]}):[];if(o.length===0)throw Error(`session form: expected fields`);return{id:r,sessionID:i,title:a,fields:o,...Rj(n.metadata)?{metadata:n.metadata}:{}}}function qj(e){let t=Rj(e)?e:null,n=t&&Array.isArray(t.data)?t.data:Array.isArray(e)?e:null;if(!n)throw Error(`session form: expected list payload`);return n.map(e=>Kj(e))}function Jj(e){return`/api/session/${encodeURIComponent(e)}/form`}function Yj(e,t){return`/api/session/${encodeURIComponent(e)}/form/${encodeURIComponent(t)}/reply`}function Xj(e,t){return`/api/session/${encodeURIComponent(e)}/form/${encodeURIComponent(t)}/cancel`}async function Zj(e){let t=await x(Jj(e.sessionID),{method:`GET`,query:Uj(e.directory),signal:e.signal});return t.ok||Bj(`session form list`,t.status,await Vj(t)),qj(await Hj(t,`session form list`))}async function Qj(e){let t=await x(Yj(e.sessionID,e.formID),{method:`POST`,headers:{"Content-Type":`application/json`},query:Uj(e.directory),body:JSON.stringify({answer:e.answer}),signal:e.signal});t.ok||Bj(`session form reply`,t.status,await Vj(t))}async function $j(e){let t=await x(Xj(e.sessionID,e.formID),{method:`POST`,query:Uj(e.directory),signal:e.signal});t.ok||Bj(`session form cancel`,t.status,await Vj(t))}var eM=Ne((e,t)=>({forms:{},upsert:t=>e(e=>{let n=e.forms[t.sessionID]??[],r=n.findIndex(e=>e.id===t.id),i=r>=0?n.map((e,n)=>n===r?t:e):[...n,t];return{forms:{...e.forms,[t.sessionID]:i}}}),remove:(t,n)=>e(e=>{let r=e.forms[t];if(!r?.length)return e;let i=r.filter(e=>e.id!==n);if(i.length===r.length)return e;let a={...e.forms};return i.length>0?a[t]=i:delete a[t],{forms:a}}),replaceSession:(t,n)=>e(e=>({forms:{...e.forms,[t]:n}})),formsForSession:e=>t().forms[e]??[]}));async function tM(e){let t=(await Zj(e)).filter(e=>!ft(e.metadata));eM.getState().replaceSession(e.sessionID,t)}var nM=3e5,rM=1e4;function iM(e,t){let n=I(e);return!n||[...t.keys()].some(e=>I(e)===n)?!1:[...t.values()].some(e=>e.some(e=>I(e.path)===n))}function aM(e,t){if(!t||t.status!==`complete`||t.session_status_snapshot_at===void 0)return`unknown`;if(Object.values(t.session_status).some(e=>e.type===`busy`||e.type===`retry`)||Object.values(t.permission).some(e=>e.length>0)||Object.values(t.question).some(e=>e.length>0))return`busy`;let n=eM.getState().forms;if(t.session.some(e=>n[e.id]?.length))return`busy`;for(let t of ag.getState().statusById.values())if(I(t.directory)===I(e))return`busy`;return`free`}function oM(e){let t=new Map,n=!1,r=e=>{let n=t.get(e);n&&(clearTimeout(n.timer),clearTimeout(n.deadline),n.controller.abort(),n.finish?.(),t.delete(e))},i=a=>{r(a);let o={controller:new AbortController};t.set(a,o);let s=()=>!n&&!o.controller.signal.aborted&&t.get(a)===o&&e.isRuntimeCurrent()&&!e.isCurrentDirectory(a)&&e.eligible(a),c=async()=>{try{if(!s())return;let t=e.directoryUse(a);if(t===`unknown`)return;if(t===`busy`){i(a);return}let n=new Promise(e=>{o.finish=()=>e(`unknown`),o.deadline=setTimeout(()=>{o.controller.abort(),e(`unknown`)},rM)}),r=await Promise.race([e.checkRemoteUse(a,o.controller.signal),n]);if(!s())return;let c=e.directoryUse(a);if(r===`unknown`||c===`unknown`)return;if(r===`busy`||c===`busy`){i(a);return}await Promise.race([e.release(a,o.controller.signal),n])}catch{}finally{clearTimeout(o.deadline),o.controller.abort(),t.get(a)===o&&t.delete(a)}};o.timer=setTimeout(()=>{c()},nM)};return{directoryChanged(t,a){if(n)return;let o=I(t??``),s=I(a??``);o!==s&&(s&&r(s),o&&e.eligible(o)&&i(o))},dispose(){n=!0;for(let e of t.keys())r(e)}}}function sM(e){return!e.idleSessionID||!e.directory||e.directory===`global`?{action:`none`}:e.parentID?{action:`materialize-parent`,sessionID:e.parentID}:e.idleSessionID===e.activeSessionID&&e.directory===e.activeDirectory||e.hasLoadedTranscript?{action:`materialize-now`,sessionID:e.idleSessionID}:{action:`defer-until-viewed`,sessionID:e.idleSessionID}}var cM=new Set,lM=(e,t)=>`${e}\n${t}`;function uM(e,t){!e||e===`global`||!t||cM.add(lM(e,t))}function dM(e,t){let n=lM(e,t);return cM.has(n)?(cM.delete(n),!0):!1}var fM=(e,t)=>{if(e.type!==`session.created`&&e.type!==`session.updated`&&e.type!==`session.deleted`)return null;let n=e.properties;if(!n||typeof n!=`object`)return null;let r=n.info;if(!r||typeof r!=`object`)return null;let i=r;if(typeof i.id!=`string`||!i.time)return null;let a=wd(i),o=typeof t==`string`&&t!==`global`?t.trim():``,s=a.directory;return!o||typeof s==`string`&&s.trim()?a:{...a,directory:o}},pM=e=>{let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null},mM=e=>{let t=e;return JSON.stringify([Md(e),e.title??``,e.time?.archived??0,e.share?.url??``,t.directory??``,t.parentID??``,t.hasChildren??!1])},hM=(e,t)=>{if(e.type===`session.renamed`){let t=e.properties;if(typeof t.sessionID!=`string`)return;let n=pM(t.sessionID);if(!n)return;let r=dA(n,t);r!==n&&Y.getState().upsertSession(r);return}if(e.type===`session.created`||e.type===`session.updated`){let n=fM(e,t);if(n){let e=pM(n.id);(!e||mM(e)!==mM(n))&&!uA(e,n)&&Y.getState().upsertSession(n)}return}if(e.type===`openchamber:session-metadata`){let t=e.properties,n=typeof t?.sessionID==`string`?t.sessionID:``,r=t?.metadata;if(!n||!r||typeof r!=`object`||Array.isArray(r))return;let i=pM(n);if(!i)return;Y.getState().upsertSession({...i,metadata:r});return}if(e.type===`session.deleted`){let t=e.properties?.sessionID??fM(e)?.id;t&&Y.getState().removeSessions([t])}};function gM(e){return Object.entries(e.session_status??{}).filter(([,e])=>e&&e.type!==`idle`).map(([e])=>e)}function _M(e,t){let n=t?.viewedSession;return!n?.sessionId||n.directory!==t?.directory?[]:[n.sessionId]}function vM(e,t){let n=new Set;for(let[t,r]of Object.entries(e.session_status??{}))r&&r.type!==`idle`&&n.add(t);let r=new Set;for(let t of e.session){let e=t.parentID;e&&r.add(e)}for(let e of r)n.add(e);let i=t?.viewedSession;if(i?.sessionId&&i.directory===t?.directory){let t=i.sessionId;(e.session.some(e=>e.id===t)||Object.hasOwn(e.session_status??{},t))&&n.add(t)}return Array.from(n)}function yM(e,t){let n=new Set(vM(e,t));for(let t of Object.keys(e.session_status??{}))n.add(t);for(let t of e.session)t?.id&&n.add(t.id);let r=t?.viewedSession;r?.sessionId&&r.directory===t?.directory&&n.add(r.sessionId);for(let e of t?.extraSessionIds??[])e&&n.add(e);return Array.from(n)}var bM=e=>{let t=new Map;for(let n of e)t.set(n.id,n);return t},xM=(e,t,n)=>{let r=n??bM(t),i=[],a=new Set,o=e;for(;o&&!a.has(o);)a.add(o),i.push(o),o=r.get(o)?.parentID;return i},SM=e=>{let{autoAccept:t,sessions:n,sessionById:r,sessionID:i}=e,a=xM(i,n,r);for(let e of a)if(Object.prototype.hasOwnProperty.call(t,e))return t[e]===!0;return!0},CM=e({usePermissionStore:()=>DM}),wM=async e=>{if(!e.ok)throw Error(`Permission auto-accept request failed (${e.status})`);let t=await e.json();if(!t.sessions||typeof t.sessions!=`object`)throw Error(`Invalid permission auto-accept response`);let n={};for(let[e,r]of Object.entries(t.sessions))e&&typeof r==`boolean`&&(n[e]=r);return{sessions:n}},TM=async(e,t)=>wM(await x(e,t)),EM=(e,t,n)=>SM({autoAccept:e,sessions:[],sessionById:t,sessionID:n}),DM=Ne()(Pe((e,t)=>({autoAccept:{},loaded:!1,saving:!1,hydrate:async()=>{let n=await TM(`/api/permission-auto-accept`),r=Object.entries(t().autoAccept).filter(([e,t])=>!e.includes(`/`)&&typeof t==`boolean`);if(Object.keys(n.sessions).length===0&&r.length>0)for(let[e,t]of r)!e||typeof t!=`boolean`||(n=await TM(`/api/permission-auto-accept/sessions/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:t})}));e({autoAccept:n.sessions,loaded:!0})},reset:()=>{e({autoAccept:{},loaded:!1,saving:!1})},applySnapshot:t=>{let n={};for(let[e,r]of Object.entries(t.sessions??{}))e&&typeof r==`boolean`&&(n[e]=r);e({autoAccept:n,loaded:!0})},isSessionAutoAccepting:e=>{if(!e)return!1;let n=t().autoAccept;return Object.keys(n).length!==0&&EM(n,dt(),e)},setSessionAutoAccept:async(t,n)=>{if(t){if(Ee()){let r=await x(`/api/notifications/auto-accept`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionId:t,enabled:n})});if(!r.ok)throw Error(`Permission auto-accept request failed (${r.status})`);e(e=>({autoAccept:{...e.autoAccept,[t]:n},loaded:!0}));return}e({saving:!0});try{let r=$.getState().getDirectoryForSession(t)??H.getDirectory()??void 0;e({autoAccept:(await TM(`/api/permission-auto-accept/sessions/${encodeURIComponent(t)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:n,directory:r})})).sessions,loaded:!0})}finally{e({saving:!1})}}}}),{name:`permission-store`,storage:xr(),partialize:e=>({autoAccept:e.autoAccept})})),OM=20,kM=400;function AM(e){if(!e||typeof e!=`object`||Array.isArray(e))return{name:null,message:null};let t=e,n=typeof t.type==`string`?t.type.trim():``,r=typeof t.name==`string`?t.name.trim():``,i=n||r||null,a=typeof t.message==`string`?t.message.trim():``;return{name:i,message:a?a.slice(0,kM):null,...n?{type:n}:{},...typeof t.status==`number`&&Number.isInteger(t.status)&&t.status>=100&&t.status<=599?{status:t.status}:{}}}var jM=[];function MM(e){jM.push({...e,at:Date.now()}),jM.length>OM&&jM.splice(0,jM.length-OM)}var NM=(e,t=async(e,t)=>yt(await H.getSdkClient().session.get({sessionID:e},{signal:t})))=>{let n=u(),r=f();return Pr({queryKey:[n,`sessionIdentity`,r,e],queryFn:async({signal:i})=>{let a=await t(e,i);if(n!==u()||r!==f())throw Error(`session identity runtime changed`);if(a.id!==e||!a.directory)throw Error(`session identity is incomplete`);return a},staleTime:3e4,gcTime:3e5,retry:1})};function PM(e,t={}){let n=t.client??_,r=new Set,i=new Map,a=!1,o=!1,s=()=>{a||o||(o=!0,queueMicrotask(()=>{o=!1,a||c()}))},c=()=>{let o=new Map;for(let e of Y.getState().activeSessions)o.set(e.id,e);let c=new Set(ag.getState().statusById.keys());for(let t of e.children.values()){let e=t.getState();for(let t of e.session)o.set(t.id,t);for(let[t,n]of Object.entries(e.session_status))(n.type===`busy`||n.type===`retry`)&&c.add(t)}let l=new Set;for(let e of c){let t=new Set,n=e;for(;n&&!t.has(n);){t.add(n);let e=o.get(n);if(!e){l.add(n);break}n=e.parentID}}for(let e of i.keys())l.has(e)||i.delete(e);for(let o of l){if(r.size>=2)break;if(r.has(o)||(i.get(o)??0)>Date.now())continue;r.add(o);let c=u(),l=f(),d=()=>!a&&c===u()&&l===f();n.fetchQuery(NM(o,t.loadSession)).then(t=>{let n=t.directory;if(!(!d()||!n)){for(let t of e.children.values())if(t.getState().session.some(e=>e.id===o))return;e.ensureChild(n,{bootstrap:!1}).setState(e=>e.session.some(e=>e.id===o)?e:{session:[...e.session,wd(t)].sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))})}}).catch(()=>{d()&&i.set(o,Date.now()+3e4)}).finally(()=>{r.delete(o),s()})}},l=[e.subscribeAllSelected(e=>e.session_status,s),e.subscribeAllSelected(e=>e.session,s),ag.subscribe(s),Y.subscribe((e,t)=>{e.activeSessions!==t.activeSessions&&s()})];return s(),()=>{a=!0,l.forEach(e=>e())}}var FM=e=>typeof e==`string`&&e.trim().length>0;function IM(e){let t=e.trim();return t.length<=18?t:`${t.slice(0,10)}…${t.slice(-4)}`}function LM(e,t){return qr(Kr.getState().dictionary,e,t)}function RM(e,t=`missing-directory`){let n=FM(e)?IM(e):null;if(t===`missing-session-id`||!n){xw.error(LM(`sessions.toast.openFailedMissingSessionId`));return}if(t===`missing-directory`){xw.error(LM(`sessions.toast.openFailedMissingDirectory`,{sessionId:n}));return}xw.error(LM(`sessions.toast.openFailed`,{sessionId:n}))}function zM(e,t,n={}){let r=n.notify!==!1;if(!FM(e))return r&&RM(null,`missing-session-id`),{ok:!1,reason:`missing-session-id`,sessionId:null};if(!FM(t))return r&&RM(e,`missing-directory`),{ok:!1,reason:`missing-directory`,sessionId:e.trim()};let i=e.trim(),a=t.trim();return n.phoneShell&&!Zn()?(uG.getState().openSession({sessionId:i,directory:a}),{ok:!0,sessionId:i,directory:a}):n.switchToChat!==!1&&!Sr.getState().setActiveMainTab(`chat`)?(r&&RM(i,`tab-switch-blocked`),{ok:!1,reason:`tab-switch-blocked`,sessionId:i}):($.getState().setCurrentSession(i,a),{ok:!0,sessionId:i,directory:a})}var BM=null,VM=e=>{BM=e},HM=(e,t)=>typeof BM==`function`&&typeof e==`string`&&e.trim()&&typeof t==`string`&&t.trim()?(BM(e.trim(),t.trim()),{ok:!0,sessionId:e.trim(),directory:t.trim()}):zM(e,t,{switchToChat:!0}),UM=(e,t)=>!e||!t?null:`${e}:${t}`,WM=({permission:e,directory:t,isViewed:n,pendingIds:r,show:i,openSession:a})=>{let o=UM(e.sessionID,e.id);if(n||!o||r.has(o))return!1;r.add(o);let s=typeof e.permission==`string`&&e.permission.trim().length>0?e.permission:`Agent needs your approval`;return i(`Permission needed`,{id:`permission-${o}`,description:s,action:{label:`Open session`,onClick:()=>a(e.sessionID,t)}}),!0},GM=15e3,KM=new Map,qM=(e,t)=>`${e}\n${t}`;function JM(e){if(!e.runtimeKey||!e.directory||!e.sessionId||!e.status||e.status.type===`idle`)return;let t=Date.now();for(let[e,n]of KM)n.expiresAt<=t&&KM.delete(e);KM.set(qM(e.runtimeKey,e.directory),{runtimeKey:e.runtimeKey,directory:e.directory,sessionId:e.sessionId,status:e.status,expiresAt:Date.now()+GM})}function YM(e,t){let n=KM.get(qM(e,t));return n?n.expiresAt<=Date.now()?(KM.delete(qM(e,t)),null):n:null}var XM=[],ZM=[],QM=[],$M={sessionID:``,revertMessageID:void 0,records:ZM,history:QM},eN=e=>{if(e?.type!==`text`)return``;let t=e.text;return typeof t==`string`?t:``},tN=e=>{for(let t of e){let e=eN(t);if(e.length>0)return e}return``},nN=(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]?.message!==t[n]?.message||e[n]?.parts!==t[n]?.parts)return!1;return!0},rN=(e,t=$M)=>{let n=e.sessionID;if(!n)return $M;let r=e.messages,i=e.revertMessageID,a=[];for(let t=r.length-1;t>=0;--t){let n=r[t];n.role===`user`&&(i&&St(r,n.id,i)||a.push({message:n,parts:e.parts[n.id]??XM}))}if(a.length===0)return t.sessionID===n&&t.revertMessageID===i&&t.records.length===0?t:{sessionID:n,revertMessageID:i,records:ZM,history:QM};if(t.sessionID===n&&t.revertMessageID===i&&nN(t.records,a))return t;let o=[];for(let e of a){let t=tN(e.parts);t.length>0&&o.push(t)}return{sessionID:n,revertMessageID:i,records:a,history:o}};function iN(e,t){let n=e.getChild(t.directory)?.getState();if(!n)return`unknown`;let r=n.session_status?.[t.sessionID];return r?r.type:n.session_status_snapshot_at===void 0?`unknown`:`idle`}function aN(e,t){return t.map(t=>{let n=e.getChild(t.directory)?.getState();return`${t.directory}\n${t.sessionID}\n${n?.session_status?.[t.sessionID]?.type??``}\n${n?.session_status_snapshot_at??``}`}).join(`\0`)}function oN(e,t,n){let r=new Map,i=new Map;for(let e of t){let t=i.get(e.directory)??[];t.push(e),i.set(e.directory,t)}let a=()=>{let t=!1;for(let[n,a]of r)i.has(n)&&e.getChild(n)||(a(),r.delete(n),t=!0);for(let[a,o]of i){if(r.has(a))continue;let i=e.getChild(a);i&&(r.set(a,i.subscribe((e,t)=>{for(let r of o)if(e.session_status?.[r.sessionID]!==t.session_status?.[r.sessionID]||e.session_status_snapshot_at!==t.session_status_snapshot_at){n();return}})),t=!0)}return t};a();let o=e.subscribeRegistry(()=>{a()&&n()});return()=>{o();for(let e of r.values())e();r.clear()}}function sN(e,t,n){if(!e)return null;let r=t?.id===e?t:null,i=n?.id===e?n:null;return r??i}function cN(e,t,n,r){if(!t||t.id!==e||!t.parentID)return null;let i=t.parentID,a=n?.id===i?n??null:null;return{id:i,directory:a?.directory??t.directory??r??null,session:a}}var lN=`__openchamber_sync_context__`,uN=globalThis,dN=uN[lN]??(0,K.createContext)(null);uN[lN]=dN;function fN(){let e=(0,K.useContext)(dN);if(!e)throw Error(`useSyncSystem must be used within <SyncProvider>`);return e}var pN=new Set,mN=()=>()=>{},hN=()=>pN;function gN(e){let t=(0,U.c)(5),{childStores:n}=fN(),r;t[0]===n?r=t[1]:(r=fj(n),t[0]=n,t[1]=r);let i=r,a;t[2]!==i||t[3]!==e?(a=()=>i.read().has(e),t[2]=i,t[3]=e,t[4]=a):a=t[4];let o=a;return K.useSyncExternalStore(i.subscribe,o,o)}function _N(e){let t=(0,U.c)(5),{childStores:n}=fN(),r;t[0]===n?r=t[1]:(r=fj(n),t[0]=n,t[1]=r);let i=r,a;t[2]!==i||t[3]!==e?(a=()=>i.readDescendantCount(e),t[2]=i,t[3]=e,t[4]=a):a=t[4];let o=a;return K.useSyncExternalStore(i.subscribe,o,o)}function vN(e){let t=(0,U.c)(2),n=e===void 0||e,{childStores:r}=fN(),i;t[0]===r?i=t[1]:(i=fj(r),t[0]=r,t[1]=i);let a=i;return K.useSyncExternalStore(n?a.subscribe:mN,n?a.read:hN,n?a.read:hN)}function yN(e){return Array.from(e.children.values(),e=>e.getState())}function bN(e,t,n){let r=(0,U.c)(7),i=t===void 0?Object.is:t,{childStores:a}=fN(),o=(0,K.useRef)(void 0),s=(0,K.useRef)(!1),c;r[0]!==a||r[1]!==i||r[2]!==e?(c=()=>{let t=e(yN(a));return s.current&&i(o.current,t)?o.current:(o.current=t,s.current=!0,t)},r[0]=a,r[1]=i,r[2]=e,r[3]=c):c=r[3];let l=c,u;return r[4]!==a||r[5]!==n?(u=e=>n?n(a,e):a.subscribeAll(e),r[4]=a,r[5]=n,r[6]=u):u=r[6],K.useSyncExternalStore(u,l,l)}function xN(e){let t=(0,U.c)(4),n;t[0]===e?n=t[1]:(n=t=>cj(t,e),t[0]=e,t[1]=n);let r;return t[2]===e?r=t[3]:(r=(t,n)=>t.subscribeAllSelected(t=>t.session_status?.[e],n),t[2]=e,t[3]=r),bN(n,Object.is,r)}function SN(e){let t=(0,U.c)(5),n=xN(e),r;t[0]===e?r=t[1]:(r=t=>t.statusById.get(e)?.status,t[0]=e,t[1]=r);let i=ag(r),a;return t[2]!==i||t[3]!==n?(a=CN(n,i),t[2]=i,t[3]=n,t[4]=a):a=t[4],a}function CN(e,t){if(e)return e;if(t===`busy`)return{type:`busy`};if(t===`retry`)return{type:`retry`,attempt:0,message:``,next:0}}var wN=[],TN={};function EN(e){let t=(0,U.c)(4),n=e?.enabled??!0,r;t[0]===n?r=t[1]:(r=e=>n?oj(e):TN,t[0]=n,t[1]=r);let i;return t[2]===n?i=t[3]:(i=(e,t)=>n?e.subscribeAllSelected(DN,t):ON,t[2]=n,t[3]=i),bN(r,ij,i)}function DN(e){return e.session_status}function ON(){}function kN(e){let t=(0,U.c)(6),n=e?.enabled??!0,r=e?.includeChildren??!1,i=Y(MN),a;t[0]!==n||t[1]!==r||t[2]!==i?(a=e=>n?aj(e,i,{includeChildren:r}):wN,t[0]=n,t[1]=r,t[2]=i,t[3]=a):a=t[3];let o;return t[4]===n?o=t[5]:(o=(e,t)=>n?e.subscribeAllSelected(AN,t):jN,t[4]=n,t[5]=o),bN(a,rj,o)}function AN(e){return e.session}function jN(){}function MN(e){return e.pendingDeletionIds}var NN=!1,PN=0,FN=0,IN=1500,LN=new Set([`patch`,`step-start`,`step-finish`]),RN=5e3,zN=4e4,BN=15e3,VN=6e4,HN=6e4,UN=e=>!e||e.length===0?``:e.map(e=>e.id).sort(WN).join(`|`),WN=(e,t)=>e<t?-1:+(e>t),GN=e=>JSON.stringify(e);function KN(e,t){return GN(e)===GN(t)}var qN=5e3,JN=new Map,YN=(e,t)=>JSON.stringify([u(),f(),e,t]);function XN(e,t){try{let n=B();return n?qe(n.getTranscript(V(e,t))):!1}catch{return!1}}async function ZN(e,t){try{if(!B())return;await Dt(e,t)}catch{}}function QN(e,t,n,r){if(!e||e===`global`||!t)return;let i=f(),a=u(),o=n.getChild(e),s=()=>i!==f()||a!==u()||n.getChild(e)!==o,c=YN(e,t),l=JN.get(c);if(l&&(r.reconcileTail||Date.now()-l.enqueuedAt<qN)){if(r.reconcileTail){l.reconcileTailRequested=!0;return}Promise.resolve().then(()=>{!s()&&XN(e,t)&&ZN(e,t)});return}let d={sessionID:t,directory:e,enqueuedAt:Date.now(),request:r,reconcileTailRequested:!!r.reconcileTail};JN.set(c,d),Promise.resolve().then(async()=>{let i=n.getChild(e);if(!i||s()){JN.get(c)===d&&JN.delete(c);return}try{let n=r.reconcileTail?`skipped`:await eP(e,t,i,{...r,isStale:s});!s()&&r.reason===`session-idle`&&(n===`ready`?dM(e,t):uM(e,t))}catch{}finally{for(;d.reconcileTailRequested&&!s();){d.reconcileTailRequested=!1;try{await Dt(e,t),s()||dM(e,t)}catch{s()||uM(e,t)}}JN.get(c)===d&&JN.delete(c)}})}function $N(e,t,n){let r=t.admissionHint?.sessionID??t.domainActivityHint?.sessionID??(typeof t.properties.sessionID==`string`?t.properties.sessionID:void 0);if(!(!r||!e||e===`global`)){if(t.domainActivityHint?.kind===`activity`){let i=n.getChild(e)??n.ensureChild(e,{bootstrap:!1}),a=t.type===`session.step.started`||/^session\.(?:next\.)?(?:text|reasoning)\./.test(t.type),o=t.properties.eventCreated,s=t.properties.eventSequence;if(typeof s==`number`){if(s<=(i.getState().session_status_event_sequence?.[r]??-1))return;t.type===`session.step.started`&&i.setState({session_status_event_sequence:{...i.getState().session_status_event_sequence,[r]:s}})}if(typeof o==`number`){if(s===void 0&&o<(i.getState().session_status_event_at?.[r]??0))return;a&&(t.type===`session.step.started`||i.getState().session_status?.[r]?.type!==`busy`)&&i.setState({session_status_event_at:{...i.getState().session_status_event_at,[r]:o}})}if(i.getState().session_status?.[r]?.type===`retry`&&!a)return;yg(i,r)}t.domainActivityHint?.kind===`terminal`&&r===nP&&e===tP&&QN(e,r,n,{reason:`session-idle`})}}async function eP(e,t,n,r){let i=n.getState().session_status?.[t];Nn.recovery.materializing({reason:r?.reason??`ensure-session-messages`,directory:e,sessionID:t,messageID:r?.messageID,partID:r?.partID});try{let a=()=>{try{return B()?.getTranscript(V(e,t)).liveRevision}catch{return}},o=a(),s=await ry({directory:e,sessionID:t,limit:Qp(),signal:AbortSignal.timeout(3e4),purpose:`materialize`});if(r?.isStale?.())return`skipped`;let c=oy({directory:e,sessionID:t,purpose:`materialize`,page:s,capturedLiveRevision:o,liveRevision:a(),skipPartTypes:LN});return XN(e,t)&&await ZN(e,t),c.applied?(Ny({directory:e,sessionID:t,store:n,isStale:r?.isStale}),s.records.length===0||!r?.isStale?.()&&i?.type!==`idle`&&await Cg(e,n,[t]),`ready`):`skipped`}catch{return`error`}}var tP=``,nP=``,rP=null,iP=``,aP=``,oP=new Map,sP=new Set,cP=15e3,lP=(e,t)=>`${e}\n${t}`;function uP(e=Date.now()){for(let[t,n]of oP.entries())n<=e&&oP.delete(t)}var dP=new Set,fP=new Set,pP=(e,t)=>!e||!t?null:`${e}:${t}`,mP=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},hP=(e,t)=>{if(e.type!==`openchamber:notification`)return!1;let n=e.properties;if(!n||typeof n!=`object`)return!0;let r=n;if((r.desktopNotificationDelivered===!0||r.desktopStdoutActive===!0)&&m()===`local`)return!0;let i=b()?.notifications;return i?.notifyAgentCompletion&&i.notifyAgentCompletion({title:mP(r.title),body:mP(r.body),tag:mP(r.tag),kind:mP(r.kind),sessionId:mP(r.sessionId),assistantID:mP(r.assistantID),directory:mP(r.directory)??(t&&t!==`global`?t:void 0),requireHidden:r.requireHidden===!0}).catch(e=>{console.warn(`[notifications] failed to dispatch UI notification`,e)}),!0};function gP(e,t){!e||!t||!rP||dM(e,t)&&QN(e,t,rP,{reason:`session-idle`})}function _P(e){rP=e,e&&gP(tP,nP)}function vP(e,t){tP=e,nP=t,gP(e,t)}function yP(e,t,n){if(!e||!t)return;let r=lP(e,t);if(!n){oP.delete(r);return}oP.set(r,Date.now()+cP)}function bP(e,t){if(!e||!t){iP=``,aP=``;return}iP=e,aP=t}function xP(){let e=[],t=new Set,n=(n,r)=>{if(!n||!r)return;let i=lP(n,r);t.has(i)||(t.add(i),e.push({directory:n,sessionID:r}))};return n(iP,aP),n(tP,nP),e}function SP(){return typeof document<`u`&&document.hasFocus()}function CP(e,t){return t?tP&&nP&&e===tP&&t===nP&&SP()?!0:(uP(),oP.has(lP(e,t))):!1}function wP(){return NN||Date.now()-PN<IN}function TP(e){return!tP||!nP||e!==tP?null:{directory:tP,sessionId:nP}}function EP(e,t){return vM(t,{directory:e,viewedSession:TP(e)})}function DP(e){let t=qh(e)??e,n=[];for(let e of Y.getState().activeSessions){let r=e.directory||e.location?.directory;r&&(qh(r)??r)===t&&n.push(e.id)}return n}function OP(e,t){return yM(t,{directory:e,viewedSession:TP(e),extraSessionIds:DP(e)})}function kP(e,t,n,r=zN,i=BN){return!(e<=0||n-e<r||n-t<i)}function AP({isViewed:e,status:t,lastTransportActivityAt:n,lastDomainActivityAt:r,lastFullResyncAt:i,now:a,transportStaleThresholdMs:o=zN,domainStaleThresholdMs:s=VN,recoveryCooldownMs:c=HN}){return!(!e||t?.type!==`busy`&&t?.type!==`retry`||n<=0||a-n>=o||r<=0||a-r<s||a-i<c)}var jP=Ee(),MP=(e,t)=>{!jP||typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:vscode-notification-event`,{detail:{directory:e,payload:t}}))},NP=()=>({sessionDirectoryById:new Map,messageSessionById:new Map,sessionMessageIdsById:new Map}),PP=e=>{if(!e||e===`global`)return e;let t=e.replace(/\\/g,`/`).replace(/^([a-z]):/,(e,t)=>t.toUpperCase()+`:`);return t.length>1?t.replace(/\/+$/,``):t},FP=e=>{let t=e.properties;if(!t||typeof t!=`object`)return null;let n=t;if(e.type===`message.updated`){let e=n.info;if(!e||typeof e!=`object`)return null;let t=e.sessionID;return typeof t==`string`&&t.length>0?t:null}if(e.type===`message.removed`||e.type===`session.status`||e.type===`session.idle`||e.type===`session.error`||e.type===`todo.updated`||e.type===`permission.asked`||e.type===`permission.replied`||e.type===`question.asked`||e.type===`question.replied`||e.type===`question.rejected`||e.type===`form.replied`||e.type===`form.cancelled`||e.type===`session.deleted`){let e=n.sessionID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`form.created`){let e=n.form;if(e&&typeof e==`object`){let t=e.sessionID;return typeof t==`string`&&t.length>0?t:null}return null}if(e.type===`message.part.updated`){let e=n.sessionID;if(typeof e==`string`&&e.length>0)return e;let t=n.part;if(!t||typeof t!=`object`)return null;let r=t.sessionID;return typeof r==`string`&&r.length>0?r:null}if(e.type===`message.part.delta`||e.type===`message.part.removed`){let e=n.sessionID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`session.created`||e.type===`session.updated`){let e=n.info;if(!e||typeof e!=`object`)return null;let t=e.id;return typeof t==`string`&&t.length>0?t:null}let r=n.sessionID;return typeof r==`string`&&r.length>0?r:null},IP=e=>{let t=e.properties;if(!t||typeof t!=`object`)return null;let n=t;if(e.type===`message.updated`){let e=n.info;if(!e||typeof e!=`object`)return null;let t=e.id;return typeof t==`string`&&t.length>0?t:null}if(e.type===`message.removed`||e.type===`message.part.delta`||e.type===`message.part.removed`){let e=n.messageID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`message.part.updated`){let e=n.part;if(!e||typeof e!=`object`)return null;let t=e.messageID;return typeof t==`string`&&t.length>0?t:null}let r=n.messageID??n.assistantMessageID;return typeof r==`string`&&r.length>0?r:null},LP=(e,t,n)=>{!t||!n||n===`global`||e.sessionDirectoryById.set(t,n)},RP=(e,t,n,r)=>{if(!t)return;LP(e,t,n);let i=e.sessionMessageIdsById.get(t),a=new Set;for(let n of r)n?.id&&(a.add(n.id),e.messageSessionById.set(n.id,t));if(i)for(let t of i)a.has(t)||e.messageSessionById.delete(t);e.sessionMessageIdsById.set(t,a)},zP=(e,t,n,r)=>{if(!t||!n)return;LP(e,t,r),e.messageSessionById.set(n,t);let i=e.sessionMessageIdsById.get(t);i?i.add(n):e.sessionMessageIdsById.set(t,new Set([n]))},BP=(e,t,n)=>{if(!t)return;let r=n??e.messageSessionById.get(t);if(e.messageSessionById.delete(t),!r)return;let i=e.sessionMessageIdsById.get(r);i&&(i.delete(t),i.size===0&&e.sessionMessageIdsById.delete(r))},VP=(e,t)=>{if(!t)return;e.sessionDirectoryById.delete(t);let n=e.sessionMessageIdsById.get(t);if(n)for(let t of n)e.messageSessionById.delete(t);e.sessionMessageIdsById.delete(t)},HP=(e,t,n)=>{let r=new Set;for(let i of n.session)i?.id&&(r.add(i.id),LP(e,i.id,t));try{let n=B(),i=n?.getCacheBudget?.().listCanonical({directory:t});if(i)for(let a of i){if(a.scope.directory!==t)continue;r.add(a.scope.sessionID),LP(e,a.scope.sessionID,t);let i=n?.getTranscript?.(V(t,a.scope.sessionID));if(i){let n=en(i);RP(e,a.scope.sessionID,t,n)}}}catch{}for(let[n,i]of e.sessionDirectoryById)i===t&&(r.has(n)||VP(e,n))},UP=(e,t,n)=>{for(let[r,i]of t.children){let t=i.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e))return LP(n,e,r),r}try{let t=B()?.getCacheBudget?.().listCanonical()?.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory)??[],r=[...new Set(t)];if(r.length===1){let t=r[0];return LP(n,e,t),t}}catch{}return null},WP=(e,t,n)=>{let r=e.getChild(t);if(!r)return!1;let i=r.getState();if(i.session.some(e=>e.id===n)||Object.prototype.hasOwnProperty.call(i.session_status??{},n))return!0;try{return(B()??We(t,r)).hasSession?.(V(t,n))??!1}catch{return!1}},GP=(e,t,n)=>{try{let e=B();if(e&&e.getParts(V(t,n),n).length>0)return!0}catch{}return!1},KP=e=>!tP||!nP?null:e.getChild(tP)?tP:null,qP=(e,t,n,r)=>{let i=PP(t),a=FP(n);if(a){let t=Co(a);if(t)return t;if(i&&i!==`global`&&WP(r,i,a))return LP(e,a,i),i;let n=e.sessionDirectoryById.get(a);if(n&&r.getChild(n))return n;let o=UP(a,r,e);if(o)return o}let o=IP(n);if(o){if(i&&i!==`global`&&GP(r,i,o))return i;let t=e.messageSessionById.get(o);if(t){let n=e.sessionDirectoryById.get(t);if(n&&r.getChild(n))return n}if(GP(r,i,o))return i;for(let[e]of r.children)if(GP(r,e,o))return e;let n=KP(r);if(n)return n}if((a||o)&&(!i||i===`global`)&&r.children.size===1){let e=r.children.keys().next().value;if(typeof e==`string`&&e.length>0)return e}return i},JP=(e,t,n,r)=>{if(e)return e;if(t){let e=r.messageSessionById.get(t);if(e)return e}if(n&&n===tP&&nP)return nP};function YP(e,t){let n=FP(e)??(e.type===`session.deleted`?e.properties.info?.id:void 0);if(n)return n;let r=IP(e);return r?t.get(r):void 0}function XP(e,t){return e===t}var ZP=e=>e.type===`session.created`||e.type===`session.renamed`||e.type===`session.updated`||e.type===`session.deleted`||e.type===`message.updated`||e.type===`message.removed`||e.type===`message.part.updated`||e.type===`message.part.removed`||e.type===`message.part.delta`,QP=(e,t,n)=>{if(!t||t===`global`)return;let r=FP(n);switch(r&&LP(e,r,t),n.type){case`session.created`:case`session.updated`:{let r=n.properties.info;r?.id&&LP(e,r.id,t);return}case`session.deleted`:{let t=n.properties.sessionID;t&&VP(e,t);return}case`message.updated`:{let r=n.properties.info;r?.id&&r.sessionID&&zP(e,r.sessionID,r.id,t);return}case`message.removed`:{let t=n.properties;t.messageID&&BP(e,t.messageID,t.sessionID);return}case`message.part.updated`:{let r=n.properties,i=r.part,a=i?.sessionID??r.sessionID,o=i?.messageID;o&&a&&zP(e,a,o,t);return}default:return}};async function $P(e,t,n){let r=t.getState(),i=new Set([...r.session.map(e=>e.id),...Object.keys(r.session_status??{}),...Object.keys(r.question??{}),...Object.keys(r.permission??{})]),a=n??Array.from(i);if(a.length!==0){try{let n=new Map(a.map(e=>[e,UN(r.question[e])])),o=await H.listPendingQuestions({directories:[e]}),s={};for(let e of o){if(!e?.id||!e.sessionID||!i.has(e.sessionID))continue;let t=s[e.sessionID];t?t.push(e):s[e.sessionID]=[e]}for(let e of Object.keys(s))s[e].sort((e,t)=>e.id<t.id?-1:+(e.id>t.id));for(let[t,n]of Object.entries(s)){let i=new Set((r.question[t]??[]).map(e=>e.id));if(!CP(e,t))for(let r of n){if(i.has(r.id))continue;let n=pP(t,r.id);if(!n||dP.has(n))continue;dP.add(n);let a=r.questions?.[0],o=a?.header?.trim()||`Input needed`,s=a?.question?.trim()||`Agent is waiting for your response`;xw.info(o,{id:`question-${n}`,description:s,action:{label:`Open session`,onClick:()=>HM(t,e)}})}}t.setState(e=>{let t={...e.question};for(let[e,n]of Object.entries(s))t[e]=n;for(let r of a){if(s[r])continue;let i=n.get(r)??``;UN(e.question[r])===i&&delete t[r]}return{question:t}})}catch{}try{let n=new Map(a.map(e=>[e,UN(r.permission[e])])),o=await H.listPendingPermissions({directories:[e]}),s={};for(let e of o){if(!e?.id||!e.sessionID||!i.has(e.sessionID))continue;let t=s[e.sessionID];t?t.push(e):s[e.sessionID]=[e]}for(let e of Object.keys(s))s[e].sort((e,t)=>e.id<t.id?-1:+(e.id>t.id));let c=DM.getState(),l=Ee()?Object.keys(s).filter(e=>c.isSessionAutoAccepting(e)):[];if(l.length>0){let e=new Map,t=new Map;await Promise.all(l.flatMap(n=>(s[n]??[]).map(async r=>{try{let i=await H.fetchPermission(r.sessionID,r.id);if(i.state===`ok`){await Hx(r.sessionID,r.id,`once`);let t=e.get(n)??new Set;t.add(r.id),e.set(n,t)}else if(i.state===`resolved`){let e=t.get(n)??new Set;e.add(r.id),t.set(n,e)}}catch{}})));for(let n of l){let r=e.get(n),i=t.get(n);if(!r&&!i)continue;let a=e=>r?.has(e)||i?.has(e)||!1,o=(s[n]??[]).filter(e=>!a(e.id));o.length>0?s[n]=o:delete s[n]}}for(let[t,n]of Object.entries(s)){let i=new Set((r.permission[t]??[]).map(e=>e.id)),a=CP(e,t);if(!a)for(let t of n)i.has(t.id)||WM({permission:t,directory:e,isViewed:a,pendingIds:fP,show:(e,t)=>xw.info(e,t),openSession:HM})}t.setState(e=>{let t={...e.permission};for(let[e,n]of Object.entries(s))t[e]=n;for(let r of a){if(s[r])continue;let i=n.get(r)??``;UN(e.permission[r])===i&&delete t[r]}return{permission:t}})}catch{}}}function eF(e,t,n){n?.statusOnly}function tF(e){return e.isFirstConnect&&!e.disconnectedBeforeFirstConnect}function nF(e){return{resyncBlockingRequests:!0,ingestRoutingIndex:!e?.statusOnly}}async function rF(e,t,n,r,i,a){let o=f(),s=u(),c=OP(e,t.getState());await Promise.all([Cg(e,t,c),...xP().filter(t=>PP(t.directory)===PP(e)).map(e=>dy(e).catch(()=>void 0))]);let l=_M(EP(e,t.getState()),{directory:e,viewedSession:TP(e)});if(l.length>0){let a=H.getScopedSdkClient(e);await Promise.all(l.map(async c=>{let l=Co(c),d=i(c);Nn.recovery.materializing({reason:r,directory:e,sessionID:c});let p=await gd(async()=>await a.session.get({sessionID:c})).catch(()=>null);if(o!==f()||s!==u())return;if(p&&XP(d,i(c))){let r=wd(yt(p));if(l!==Co(c))return;if(r.directory&&PP(r.directory)!==PP(e)){To(c,r.directory,Date.now()),Sj(r,vr()),LP(n,c,r.directory);return}t.setState(e=>{let t=e.session.findIndex(e=>e.id===r.id),n=e.session,i=!1,a=e.sessionTotal;return t>=0?KN(n[t],r)||(n=[...e.session],n[t]=r,i=!0):(n=[...e.session],n.push(r),n.sort((e,t)=>WN(e.id,t.id)),r.parentID||(a+=1),i=!0),i?{session:n,sessionTotal:a}:e}),LP(n,r.id,e)}let m=i(c),h=t.getState(),g=h.session_status?.[c],_=h.session_status_observed_at?.[c],v=()=>!XP(m,i(c));Ph(e,c);try{if(await Dt(e,c),o!==f()||s!==u()||l!==Co(c))return;let r=Fn().getTranscript(V(e,c));RP(n,c,e,r.messageOrder.map(e=>r.messagesByID[e]).filter(e=>!!e)),Ny({directory:e,sessionID:c,store:t,transcript:r,isStale:v}),await wg({directory:e,sessionID:c,store:t,statusBeforePull:g,statusObservedAtBeforePull:_,hasMessages:r.messageOrder.length>0,isStale:v})}catch{}finally{Fh(e,c)}}))}let d=nF(a);d.resyncBlockingRequests&&await $P(e,t,c),d.ingestRoutingIndex&&HP(n,e,t.getState())}function iF(e){try{let t=B(),n=u(),r=f();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>V(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function aF(e){let t=FP(e)??void 0;if(t)return t;if(e.type===`message.updated`)return e.properties.info?.sessionID??void 0}var oF=null,sF=0;function cF(e){return`${e.directory}\0${e.sessionID}\0${e.transport??``}\0${e.generation??``}`}function lF(){sF===0&&(oF={byScope:new Map,routing:[],debug:[]}),sF+=1}function uF(){if(sF===0||(--sF,sF>0))return;let e=oF;if(oF=null,e)try{for(let t of e.byScope.values()){let n=ur(t.scope,{type:`sse-event-batch`,events:t.events})??{applied:!1,changed:!1};if(n.changed)for(let n of e.debug)n.transcriptSessionID===t.transcriptSessionID&&(n.changed=!0);let r=n.materialization;if(r){let e=t.eventMessageIDs.find(e=>typeof e==`string`),n=JP(r.sessionID??t.transcriptSessionID,r.messageID??e,t.scope.directory,t.routingIndex);n&&QN(t.scope.directory,n,t.childStores,{reason:r.reason,messageID:r.messageID,partID:r.partID})}}for(let t of e.debug)t.changed?Nn.dispatch.eventApplied(t.payloadType,t.transcriptSessionID,t.eventMessageID):Nn.dispatch.eventNoChange(t.payloadType,t.transcriptSessionID,t.eventMessageID);for(let t of e.routing)QP(t.routingIndex,t.resolvedDirectory,t.payload)}finally{oF=null,sF=0}}function dF(e,t,n,r,i,a){let o=Oj({sessionID:t,resolvedDirectory:n,transport:u(),generation:f(),listCanonicalScopes:iF});if(oF){for(let n of o){let o=cF(n),s=oF.byScope.get(o);s||(s={scope:n,events:[],transcriptSessionID:t,eventMessageIDs:[],childStores:i,routingIndex:a},oF.byScope.set(o,s)),s.events.push(e),s.eventMessageIDs.push(r)}oF.debug.push({payloadType:e.type,transcriptSessionID:t,eventMessageID:r,changed:!1}),oF.routing.push({routingIndex:a,resolvedDirectory:n,payload:e});return}let s=!1;for(let n of o){let o=ur(n,{type:`sse-event`,event:e})??{applied:!1,changed:!1};o.changed&&(s=!0);let c=o.materialization;if(c){let e=JP(c.sessionID??t,c.messageID??r,n.directory,a);e&&QN(n.directory,e,i,{reason:c.reason,messageID:c.messageID,partID:c.partID})}}s?Nn.dispatch.eventApplied(e.type,t,r):Nn.dispatch.eventNoChange(e.type,t,r),QP(a,n,e)}var fF=Ij({client:_,identity:()=>({transport:u(),generation:f()}),refreshProjections:async(e,t)=>{if(!t.has(`providers`)&&!t.has(`agents`))return;let n=W.getState(),r=u(),i=f(),a=[...new Set([...Object.keys(n.directoryScoped),...H.getDirectory()?[H.getDirectory()]:[]])].filter(t=>t&&t!==`__global__`&&(!e||I(t)===I(e)));for(let e=0;e<a.length;e+=4){if(u()!==r||f()!==i)return;await Promise.all(a.slice(e,e+4).flatMap(e=>[...t.has(`providers`)?[n.loadProviders({directory:e,source:`config-event`,forceRefresh:!0,allowEmpty:!0})]:[],...t.has(`agents`)?[n.loadAgents({directory:e,source:`config-event`,forceRefresh:!0})]:[]]))}},onError:()=>console.warn(`[sync] Configuration refresh failed; retaining previous catalogs`)});function pF(e,t,n,r){if(t.type===`session.moved`){let e=t.properties,i=e.sessionID,a=e.location?.directory;if(!i||!a||!To(i,a,e.eventCreated??Date.now(),e.eventSequence))return;let o=f(),s=u();LP(r,i,a),lg(a,t);let c=[...n.children.values()].map(e=>e.getState().session.find(e=>e.id===i)).find(Boolean)??Y.getState().activeSessions.find(e=>e.id===i);c?Sj({...c,directory:a,location:{...e.location,directory:a},projectID:e.projectID??c.projectID,subpath:e.subpath},n):$.getState().setSessionDirectory(i,a),H.getSession(i,a).then(e=>{o!==f()||s!==u()||!Eo(i,a)||!Eo(i,e.directory??a)||Sj(e,n)}).catch(()=>{});return}if(fF.event(t.type,e)&&t.type!==`server.connected`)return;if(t.type===`openchamber:worktree-bootstrap-status`){let e=t.properties;if(e&&typeof e==`object`&&!Array.isArray(e)){let t=e,n=typeof t.directory==`string`?t.directory:``;n&&ED(n,{status:t.status,error:typeof t.error==`string`?t.error:null,updatedAt:typeof t.updatedAt==`number`?t.updatedAt:Date.now()})}return}if(t.type===`openchamber:question-auto-delegate-changed`){Ik();return}if(t.type===`openchamber:permission-auto-accept.updated`){let e=t.properties;if(e&&typeof e==`object`){let t=e;t.sessions&&typeof t.sessions==`object`&&DM.getState().applySnapshot({sessions:t.sessions})}return}let i=Mj(t,e);i&&jj(_,{transport:u(),directory:i});let a=qP(r,e,t,n);if(hP(t,a))return;hM(t,a);let o=t.type===`session.status`||t.type===`session.idle`||t.type===`session.error`||t.type===`session.execution.started`||t.type===`session.execution.succeeded`||t.type===`session.execution.failed`||t.type===`session.execution.interrupted`||t.type===`session.retry.scheduled`||t.type===`session.step.started`?FP(t):void 0,s=o?n.getChild(a)?.getState().session_status[o]?.type??ag.getState().statusById.get(o)?.status??`idle`:void 0;if(lg(a,t),o&&a&&a!==`global`&&s!==(ag.getState().statusById.get(o)?.status??`idle`)){let e=n.getChild(a)?.getState().session.find(e=>e.id===o)??Y.getState().sessionsByDirectory.get(a)?.find(e=>e.id===o);DW(a,$.getState().availableWorktreesByProject,e)}if(a===`global`||!a){if(Yt(t.type)){let e=aF(t);if(e){dF(t,e,a||`global`,IP(t)??void 0,n,r);return}}let e=wP(),i=TA(t);if(!i)return;if(i.type===`refresh`)e||NA.setState({reload:`pending`});else if(i.type===`project`){let e=NA.getState();NA.setState({projects:EA(e,i.project).projects})}if((t.type===`server.connected`||t.type===`global.disposed`)&&!e){jj(_,{transport:u()});for(let e of n.children.keys()){let t=n.getChild(e);t&&t.getState().status!==`loading`&&(t.setState({status:`loading`,session_status_snapshot_at:void 0}),n.ensureChild(e))}}return}let c=n.getChild(a),l=a;if(!c){let e=FP(t);if(e){let t=UP(e,n,r);t&&(c=n.getChild(t),l=t)}}if(!c){if(Yt(t.type)){let e=aF(t);if(e){dF(t,e,l,IP(t)??void 0,n,r);return}}let e=TA(t);if(e?.type===`refresh`)NA.setState({reload:`pending`});else if(e?.type===`project`){let t=NA.getState();NA.setState({projects:EA(t,e.project).projects})}return}if(n.mark(l),t.type===`permission.asked`){let e=hA(t.properties);if(!e)return;if(DM.getState().isSessionAutoAccepting(e.sessionID)){QP(r,l,t),Ee()&&Hx(e.sessionID,e.id,`once`).catch(()=>void 0);return}let n=c.getState().session.find(t=>t.id===e.sessionID)??Y.getState().activeSessions.find(t=>t.id===e.sessionID);if(n&&!n.parentID){let t=CP(l,e.sessionID);WM({permission:e,directory:l,isViewed:t,pendingIds:fP,show:(e,t)=>xw.info(e,t),openSession:HM})}}if(t.type===`permission.replied`){let e=t.properties,n=UM(e.sessionID,e.requestID);n&&(fP.delete(n),xw.dismiss(`permission-${n}`))}if(t.type===`question.asked`){let e=gA(t.properties);if(!e)return;let n=e.sessionID,r=c.getState().session.find(e=>e.id===n)??Y.getState().activeSessions.find(e=>e.id===n);if(r&&!r.parentID){let t=pP(n,e.id);if(!CP(l,n)&&t&&!dP.has(t)){dP.add(t);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;xw.info(i,{id:`question-${t}`,description:a,action:{label:`Open session`,onClick:()=>HM(n,l)}})}}}if(t.type===`question.replied`||t.type===`question.rejected`){let e=t.properties,n=pP(e.sessionID,e.requestID);n&&(dP.delete(n),xw.dismiss(`question-${n}`))}if(t.type===`form.created`){let e=_A(t.properties);if(e){let t=e.sessionID,n=c.getState().session.find(e=>e.id===t)??Y.getState().activeSessions.find(e=>e.id===t);if(n&&!n.parentID){let n=pP(t,e.id);if(!CP(l,t)&&n&&!dP.has(n)){dP.add(n);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;xw.info(i,{id:`question-${n}`,description:a,action:{label:`Open session`,onClick:()=>HM(t,l)}})}}}}if(t.type===`form.replied`||t.type===`form.cancelled`){let e=t.properties,n=pP(e.sessionID,e.id??e.requestID);n&&(dP.delete(n),xw.dismiss(`question-${n}`))}if(t.type===`session.execution.started`){let e=t.properties.sessionID;e&&(RO(e),sP.delete(e))}if(t.type===`session.status`){let e=t.properties;e.sessionID&&(e.status?.type===`busy`||e.status?.type===`retry`)&&sP.delete(e.sessionID)}if(t.type===`session.idle`||t.type===`session.execution.succeeded`||t.type===`session.error`||t.type===`session.execution.failed`){let e=t.properties,n=e.sessionID,r=t.type===`session.idle`||t.type===`session.execution.succeeded`,i=r?null:AM(e.error),a=!!(i&&(i.message||i.name));a&&i&&n&&MM({sessionId:n,directory:l??null,...i});let o=c.getState().session.find(e=>e.id===n)??Y.getState().activeSessions.find(e=>e.id===n);n&&o&&!o.parentID&&(r&&t.type===`session.idle`&&sP.has(n)?sP.delete(n):(r&&l&&l!==`global`&&_y.requestGitRefresh({directory:l}),IO({directory:l,session:n,time:Date.now(),viewed:CP(l,n),...a&&i?{type:`error`,error:i}:{type:`turn-complete`}}),t.type===`session.execution.succeeded`&&sP.add(n)))}if(t.type===`session.idle`||t.type===`session.execution.succeeded`||t.type===`session.execution.failed`||t.type===`session.execution.interrupted`&&t.properties?.reason!==`shutdown`){let e=FP(t);if(e&&l&&l!==`global`){let t=c.getState().session.find(t=>t.id===e),r=t?t.parentID:null,i=B()?.getTranscript(V(l,e)),a=sM({idleSessionID:e,directory:l,parentID:r,activeSessionID:nP,activeDirectory:tP,hasLoadedTranscript:!!(i&&i.boundary.kind!==`unknown`)});a.action===`materialize-parent`?QN(l,a.sessionID,n,{reason:`child-session-idle`}):a.action===`materialize-now`?QN(l,a.sessionID,n,{reason:`session-idle`,reconcileTail:a.sessionID===nP&&l===tP}):a.action===`defer-until-viewed`&&uM(l,a.sessionID)}}let d=c.getState(),p=FP(t)??void 0,m=IP(t)??void 0;if(t.type===`session.created`){let e=t.properties.info;Uy(l,e)}if((t.type===`message.updated`||t.type===`message.removed`||t.type===`message.part.updated`||t.type===`message.part.removed`||t.type===`message.part.delta`)&&Yy(l,p,m))return;if(t.type===`session.inbox.enqueued`||t.type===`session.inbox.cancelled`||t.type===`session.inbox.delivered`||t.type===`session.inbox.delivery.changed`){Dj(l,t),ht({type:t.type,properties:t.properties??null}),QP(r,l,t);return}if(t.type===`session.revert.committed`||t.type===`session.revert.staged`||t.type===`session.revert.cleared`){let e={...d,session:[...d.session]};if(jA(e,t,{now:Date.now})&&c.setState(e),t.type===`session.revert.committed`){let e=aF(t)??t.properties.sessionID,i=t.properties.to;e&&typeof i==`string`&&i.length>0&&dF(t,e,l,m,n,r)}QP(r,l,t);return}if(Yt(t.type)){let e=aF(t);if(!e){QP(r,l,t);return}dF(t,e,l,m,n,r);return}let h={...d};switch(t.type){case`session.created`:case`session.updated`:case`session.deleted`:case`session.renamed`:case`openchamber:session-metadata`:h.session=[...d.session],h.session_status_observed_at={...d.session_status_observed_at},h.permission={...d.permission},h.todo={...d.todo};break;case`session.diff`:h.session_diff={...d.session_diff};break;case`session.status`:case`session.idle`:case`session.error`:case`session.execution.started`:case`session.execution.succeeded`:case`session.execution.failed`:case`session.execution.interrupted`:h.session_status={...d.session_status??{}},h.session_status_observed_at={...d.session_status_observed_at},h.session_error_at={...d.session_error_at},h.session_execution_recovery={...d.session_execution_recovery??{}};break;case`todo.updated`:h.todo={...d.todo};break;case`vcs.branch.updated`:break;case`permission.asked`:case`permission.replied`:h.permission={...d.permission};break;case`question.asked`:case`question.replied`:case`question.rejected`:case`form.created`:case`form.replied`:case`form.cancelled`:h.question={...d.question};break;case`lsp.updated`:h.lsp=[...d.lsp]}let g=jA(h,t,{onSetSessionTodo:(e,t)=>{by.getState().setSessionTodos(e,t)},onServerSessionIdle:e=>{$.getState().releaseQueueAbortBlocksForServerIdle(l,e)},now:Date.now}),v=typeof g==`boolean`?g:g.changed,y=typeof g==`boolean`?void 0:g.materialization;if(v){c.setState(h);let e=FP(t)??void 0,n=IP(t)??void 0;Nn.dispatch.eventApplied(t.type,e,n)}else{let e=FP(t)??void 0,n=IP(t)??void 0;Nn.dispatch.eventNoChange(t.type,e,n)}if(y){let e=JP(y.sessionID??FP(t)??void 0,y.messageID??IP(t)??void 0,l,r);e&&QN(l,e,n,{reason:y.reason,messageID:y.messageID,partID:y.partID})}QP(r,l,t)}var mF=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:opencode-update-available`,{detail:e}))},hF=null,gF=async()=>{let e=m();return(!hF||hF.runtimeKey!==e)&&(hF={runtimeKey:e,promise:x(`/api/config/opencode-resolution`,{signal:AbortSignal.timeout(4e3)}).then(async e=>{if(e.ok){let t=await e.json();return t.source===`bundled`||t.detectedSourceNow===`bundled`}let t=await x(`/health`,{signal:AbortSignal.timeout(4e3)});return t.ok?(await t.json()).opencodeBinarySource===`bundled`:!1}).catch(()=>!1)}),hF.promise},_F=e=>{typeof window>`u`||gF().then(t=>{t||mF(e)})};function vF(e,t,n){return e!==t||n!==!1}function yF(e){let t=W(e=>e.settingsMessageStreamTransport);(0,K.useEffect)(()=>WO(),[]);let n=(0,K.useRef)(null);n.current||=new JA;let r=n.current,i=(0,K.useRef)(e.directory);i.current=e.directory;let a=(0,K.useRef)(e.directory),c=(0,K.useRef)(null);(0,K.useEffect)(()=>{let e=()=>{c.current?.dispose(),a.current=i.current;let e=f(),t=m(),n=H.getSdkClient();c.current=oM({eligible:e=>iM(e,$.getState().availableWorktreesByProject),isCurrentDirectory:e=>I(e)===I(i.current),isRuntimeCurrent:()=>e===f()&&t===m()&&n===H.getSdkClient(),directoryUse:e=>{if(uP(),I(iP)===e||[...oP.keys()].some(t=>I(t.split(`
410
+ `)[0])===e))return`busy`;let t=[...r.children.entries()].find(([t])=>I(t)===e)?.[1];return aM(e,t?.getState())},checkRemoteUse:(e,t)=>H.checkLocationReleaseUse(e,t),release:(e,t)=>H.releaseLocation(e,t)})};e();let t=s(e);return()=>{t(),c.current?.dispose(),c.current=null}},[r,e.sdk]),(0,K.useEffect)(()=>{let t=a.current;a.current=e.directory,c.current?.directoryChanged(t,e.directory)},[e.directory]);let l=(0,K.useRef)(null);l.current||=NP();let d=l.current,p=(0,K.useRef)(0),h=(0,K.useRef)(new Map),g=(0,K.useRef)(new Map),_=(0,K.useRef)(new Map),v=(0,K.useRef)(new Set),y=(0,K.useRef)(null),b=(0,K.useRef)(!1),x=(0,K.useRef)(!1),S=(0,K.useRef)({directory:e.directory,enabled:e.bootstrapDirectory});S.current={directory:e.directory,enabled:e.bootstrapDirectory};let C=e=>{let t=S.current;return vF(e,t.directory,t.enabled)},w=(0,K.useMemo)(()=>({childStores:r,sdk:e.sdk,directory:e.directory}),[r,e.sdk,e.directory]);(0,K.useEffect)(()=>(_P(r),()=>{_P(null)}),[r]);let T=(0,K.useCallback)((e,t,n)=>{if(eF(e,r.children.get(e),n),!C(e))return;let i=r.children.get(e);if(!i)return;let a=v.current;a.has(e)||(n?.statusOnly||_.current.set(e,Date.now()),a.add(e),rF(e,i,d,t,t=>g.current.get(lP(e,t))??0,n).catch(()=>{}).finally(()=>{a.delete(e)}))},[r,d]);(0,K.useEffect)(()=>{Ee()||DM.getState().hydrate().catch(()=>void 0)},[e.sdk]),(0,K.useEffect)(()=>{let t=new Set;r.configure({onBootstrap:n=>{if(!C(n)||t.has(n))return;t.add(n);let i=r.getChild(n);i&&(async()=>{if(await Bi(),!C(n))return;let t=NA.getState();await bj({directory:n,sdk:e.sdk,getState:()=>i.getState(),set:e=>{i.setState(e),e.session&&HP(d,n,i.getState())},global:{config:t.config,projects:t.projects}})})().finally(()=>{t.delete(n)})},onDispose:e=>{t.delete(e)},isBooting:e=>t.has(e),isLoadingSessions:()=>!1})},[r,e.sdk,d]),(0,K.useEffect)(()=>{let t=++FN;NN=!0;let n=NA.getState().actions;return Bi().then(()=>{if(FN===t)return yj(e.sdk,e=>{FN===t&&n.set(e)})}).then(()=>{FN===t&&(PN=Date.now())}).finally(()=>{FN===t&&(NN=!1)}),()=>{FN===t&&(NN=!1)}},[e.sdk]),(0,K.useEffect)(()=>{let n=Tk({sdk:e.sdk,transport:t,routeDirectory:(e,t)=>qP(d,e,t,r),onFlushStart:()=>{lF()},onFlushEnd:()=>{uF()},onNormalizedEvent:(e,t)=>{$N(e,t,r);let n=t.domainActivityHint?.sessionID??t.admissionHint?.sessionID;n&&e===tP&&n===nP&&(t.domainActivityHint||t.admissionHint)&&h.current.set(lP(e,n),Date.now())},onEvent:(e,t)=>{let n=YP(t,d.messageSessionById)??null;if(n&&ZP(t)){let t=lP(e,n);g.current.set(t,(g.current.get(t)??0)+1)}if(n&&e===tP&&n===nP&&(t.type===`message.updated`||t.type===`message.removed`||t.type===`message.part.updated`||t.type===`message.part.removed`||t.type===`message.part.delta`)&&h.current.set(lP(e,n),Date.now()),n&&e===tP&&n===nP&&t.type===`session.status`){let r=t.properties.status;if(r?.type===`busy`||r?.type===`retry`){let t=lP(e,n);h.current.has(t)||h.current.set(t,Date.now())}r?.type===`idle`&&h.current.delete(lP(e,n))}if(n&&(t.type===`session.idle`||t.type===`session.deleted`)&&h.current.delete(lP(e,n)),MP(e,t),t.type===`installation.update-available`){let e=typeof t.properties?.version==`string`?t.properties.version:``;e&&_F({version:e})}pF(e,t,r,d)},onTransportActivity:()=>{let e=Date.now();p.current=e,jp(e)},onReconnect:()=>{Kh().then(({result:e,requestedAt:t})=>{e.state===`supported`&&ug(e.membership,t)}).catch(()=>{}),fF.event(`server.connected`),W.setState({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let e=!b.current;b.current=!0;let t=tF({isFirstConnect:e,disconnectedBeforeFirstConnect:x.current});for(let e of r.children.keys())T(e,`stream-reconnect`,{statusOnly:t})},onDisconnect:e=>{b.current||(x.current=!0);let{hasEverConnected:t}=W.getState();W.setState({isConnected:!1,connectionPhase:t?`reconnecting`:`connecting`,lastDisconnectReason:e})},onRecoveryContextCaptured:e=>{En({lastEventID:e.lastEventId,reason:e.reason,generation:e.runtimeGeneration})},onCompensation:e=>{Ik(),kn(e)},onTransportSwitch:()=>{let{hasEverConnected:e}=W.getState();W.setState({isConnected:!1,connectionPhase:e?`reconnecting`:`connecting`});for(let e of r.children.keys())T(e,`transport-switch`)}});y.current=n.reconnect;let i=Mp(n.reconnect);return()=>{i(),y.current===n.reconnect&&(y.current=null),n.cleanup()}},[e.sdk,r,d,t,T]),(0,K.useEffect)(()=>{let e=!1,t=!1,n=()=>{t||e||(t=!0,Promise.resolve().then(()=>{if(e)return;let t=Date.now();for(let[e,n]of r.children.entries()){let r=n.getState();if(gM(r).length===0){_.current.delete(e);continue}let i=_.current.get(e)??0;kP(p.current,i,t)&&(y.current?.(`active_stream_stale`),T(e,`stale-status-resync`));let a=TP(e);if(!a)continue;let o=r.session_status?.[a.sessionId],s=lP(e,a.sessionId),c=h.current.get(s);if((o?.type===`busy`||o?.type===`retry`)&&!c){h.current.set(s,t);continue}if(o?.type===`idle`||!o){h.current.delete(s);continue}AP({isViewed:!0,status:o,lastTransportActivityAt:p.current,lastDomainActivityAt:c??0,lastFullResyncAt:i,now:t})&&T(e,`domain-stale-resync`)}}).finally(()=>{t=!1}))},i=setInterval(n,RN);return n(),()=>{e=!0,clearInterval(i)}},[r,T]),(0,K.useEffect)(()=>PM(r),[r]),(0,K.useEffect)(()=>{let t;if(e.directory){let n=r.ensureChild(e.directory,{bootstrap:vF(e.directory,e.directory,e.bootstrapDirectory)}),i=YM(m(),e.directory);i&&(n.setState(e=>({session_status:{...e.session_status,[i.sessionId]:e.session_status[i.sessionId]??i.status}})),t=setTimeout(()=>{n.setState(e=>e.session_status[i.sessionId]===i.status?{session_status:{...e.session_status,[i.sessionId]:{type:`idle`}}}:e)},GM)),HP(d,e.directory,n.getState())}return()=>{t&&clearTimeout(t)}},[e.directory,e.bootstrapDirectory,r,d]);let E=(0,K.useRef)(null),D=(0,K.useRef)({transport:u(),generation:f()});return(0,K.useEffect)(()=>{if(E.current)return;let e=ay({childStores:r,getViewedSession:()=>xP()[0]??null,getViewedSessions:()=>xP()});return E.current=e,D.current={transport:u(),generation:f()},()=>{let e=D.current;Vn(`provider-dispose`);let t=E.current?.repository;t&&t.purgeGeneration(e.transport,e.generation),E.current?.destroy(),E.current=null}},[r]),(0,K.useEffect)(()=>(Yn(e.sdk,r,e.directory,(e,t)=>{LP(d,e,t)}),ob(e.sdk,r,()=>H.getDirectory()||e.directory),pg((e,t,n)=>{let r=new Set(n),i=qh(e)??e,a={...t};for(let[e,t]of ag.getState().statusById)r.has(e)||t.directory===i&&(a[e]={type:t.status});dg(e,a,n)}),()=>{pg(void 0)}),[e.sdk,e.directory,r,d]),(0,K.useEffect)(()=>s(e=>{if(!e.transportIdentityChanged){D.current={transport:u(),generation:f()};return}let t=D.current;Vn(`runtime-switch`);let n=E.current?.repository;n&&n.purgeGeneration(t.transport,t.generation),D.current={transport:u(),generation:f()}}),[]),(0,K.useEffect)(()=>o(()=>{Np(`reasoning_projection`),(E.current?.repository)?.resetReasoningProjection?.();let e=xP();for(let t of e)hn(t.directory,t.sessionID).catch(()=>void 0)}),[]),(0,K.useEffect)(()=>{if(!e.directory)return;let t=r.getChild(e.directory);if(!t)return;let n=e.directory,i=()=>{Ej(t.getState(),{directory:n,store:t})};i();let a=t.subscribe(()=>{i()}),o=[],s=()=>{for(let e of o)e();o=[];let e=B()??We(n,t),r=t.getState().session_status??{};for(let[t,a]of Object.entries(r))!a||a.type===`idle`||o.push(e.subscribe(V(n,t),i));i()};s();let c=wt(s);return()=>{c(),a();for(let e of o)e()}},[e.directory,r]),(0,Jk.jsxs)(dN.Provider,{value:w,children:[(0,Jk.jsx)(nA,{}),e.children]})}function bF(e,t){let n=(0,U.c)(4),r=fN(),i=e??r.directory,a;return n[0]!==i||n[1]!==t||n[2]!==r.childStores?(a=r.childStores.ensureChild(i,t),n[0]=i,n[1]=t,n[2]=r.childStores,n[3]=a):a=n[3],a}function xF(e,t){let n=bF(t);return Fe(n,e)}function SF(e){let{childStores:t}=fN(),n=e.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),r=(0,K.useRef)(e);r.current=e;let i=(0,K.useCallback)(e=>n?oN(t,r.current,e):()=>void 0,[t,n]),a=(0,K.useCallback)(()=>n?aN(t,r.current):``,[t,n]);return K.useSyncExternalStore(i,a,a)}function CF(){let e=(0,U.c)(2),{childStores:t}=fN(),n;return e[0]===t?n=e[1]:(n=e=>iN(t,e),e[0]=t,e[1]=n),n}function wF(e,t,n,r){let i=fN(),a=r??i.directory,o=bF(a);return Wn(e,a,o,t,n)}function TF(e,t){let n=fN(),r=t??n.directory,i=bF(r);return nr(e,r,i)}function EF(e,t){let n=fN(),r=t??n.directory,i=bF(r);return _n(e,r,i)}function DF(e,t){let n=(0,U.c)(8),r=fN(),i=t??r.directory,a=bF(i),o=(0,K.useRef)(void 0),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(pr(),!e){o.current=void 0;return}let t=(B()??We(i,a)).getRequestState?.(V(i,e)),n=t?{status:t.status===`idle`?`ready`:t.status,error:t.error,requestedLimit:t.requestedLimit??0,at:Date.now(),loadGeneration:0}:void 0,r=o.current;return r&&n&&r.status===n.status&&r.error===n.error&&r.requestedLimit===n.requestedLimit?r:(o.current=n,n)},n[0]=e,n[1]=a,n[2]=i,n[3]=s):s=n[3];let c=s,l;n[4]!==e||n[5]!==a||n[6]!==i?(l=t=>{if(!e)return OF;let n=(B()??We(i,a)).subscribe(V(i,e),()=>{t()}),r=wt(()=>{n(),o.current=void 0,n=(B()??We(i,a)).subscribe(V(i,e),()=>{t()}),t()});return()=>{r(),n()}},n[4]=e,n[5]=a,n[6]=i,n[7]=l):l=n[7];let u=l;return K.useSyncExternalStore(u,c,c)}function OF(){}function kF(e,t,n){let r=fN(),i=t??r.directory,a=bF(i);return cr(e,i,a,n)}function AF(e,t){let n=(0,U.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=bF(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return gf(i.getState(),e)},n[1]=e,n[2]=i,n[3]=a):a=n[3];let o=a,s;n[4]!==e||n[5]!==i?(s=t=>e?i.subscribe(t):jF,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return K.useSyncExternalStore(c,o,o)}function jF(){}function MF(e,t){let n=(0,U.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=bF(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return _f(i.getState(),e)},n[1]=e,n[2]=i,n[3]=a):a=n[3];let o=a,s;n[4]!==e||n[5]!==i?(s=t=>e?i.subscribe(t):NF,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return K.useSyncExternalStore(c,o,o)}function NF(){}function PF(e,t){let n=(0,U.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=bF(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return i.getState().session_error_at?.[e]},n[1]=e,n[2]=i,n[3]=a):a=n[3];let o=a,s;n[4]!==e||n[5]!==i?(s=t=>e?i.subscribe((n,r)=>{n.session_error_at?.[e]!==r.session_error_at?.[e]&&t()}):FF,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return K.useSyncExternalStore(c,o,o)}function FF(){}function IF(e,t){let n=(0,U.c)(7),r=t===void 0||t,i;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={bootstrap:!1},n[0]=i):i=n[0];let a=bF(e,i),o;n[1]!==r||n[2]!==a?(o=()=>r?a.getState().session_status_snapshot_at:void 0,n[1]=r,n[2]=a,n[3]=o):o=n[3];let s=o,c;n[4]!==r||n[5]!==a?(c=e=>r?a.subscribe(e):LF,n[4]=r,n[5]=a,n[6]=c):c=n[6];let l=c;return K.useSyncExternalStore(l,s,s)}function LF(){}function RF(e,t,n){let r=(0,U.c)(6),i=bF(t,n),a;r[0]!==e||r[1]!==i?(a=()=>e?i.getState().permission[e]??RI:RI,r[0]=e,r[1]=i,r[2]=a):a=r[2];let o=a,s;r[3]!==e||r[4]!==i?(s=t=>e?i.subscribe(t):zF,r[3]=e,r[4]=i,r[5]=s):s=r[5];let c=s;return K.useSyncExternalStore(c,o,o)}function zF(){}function BF(e,t,n){let r=(0,U.c)(2),i=bF(t,n),a;return r[0]===e?a=r[1]:(a=t=>e?t.question[e]??zI:zI,r[0]=e,r[1]=a),Fe(i,a)}function VF(e){return xF(HF,e)}function HF(e){return e.session}var UF=e=>e.permission,WF=e=>e.question;function GF(e){if(!e)return Cf;let t=[];for(let n of e.messageOrder){let r=e.partsByMessageID[n];if(r)for(let e of Sf(r))t.push(e)}return t.length===0?Cf:t}function KF(){let e=null;return t=>{let n=GF(t);if(n.length===0)return Cf;let r=n.map(e=>`${e.parentSessionId}\u0000${e.sessionId}`).join(``);return e&&e.signature===r?e.edges:(e={signature:r,edges:n},n)}}function qF(e,t){let n=fN(),r=t??n.directory,i=bF(r),a=(0,K.useRef)(KF()).current,o=(0,K.useCallback)(()=>{if(!e)return Cf;try{let t=B()?.getTranscript(V(r,e));return a(t)}catch{return Cf}},[a,e,r]),s=(0,K.useCallback)(t=>{if(!e)return()=>void 0;let n=(B()??We(r,i))?.subscribe(V(r,e),()=>{t()})??(()=>void 0),a=wt(()=>{n(),n=(B()??We(r,i))?.subscribe(V(r,e),()=>{t()})??(()=>void 0),t()});return()=>{a(),n()}},[e,i,r]);return K.useSyncExternalStore(s,o,o)}function JF(e,t,n,r){let i=(0,U.c)(7),a=qF(e,t),o;i[0]===r?o=i[1]:(o={sessionID:null,sessions:null,requestsBySession:null,dispatchEdges:null,result:r},i[0]=r,i[1]=o);let s=(0,K.useRef)(o),c;return i[2]!==a||i[3]!==r||i[4]!==n||i[5]!==e?(c=t=>{let i=n(t),o=s.current;if(o.sessionID===e&&o.sessions===t.session&&o.requestsBySession===i&&o.dispatchEdges===a)return o.result;let c=Ef(t.session,i,e,r,a),l=Tf(o.result,c)?o.result:c;return s.current={sessionID:e,sessions:t.session,requestsBySession:i,dispatchEdges:a,result:l},l},i[2]=a,i[3]=r,i[4]=n,i[5]=e,i[6]=c):c=i[6],xF(c,t)}function YF(e,t){return JF(e,t,UF,RI)}function XF(e,t){return JF(e,t,WF,zI)}function ZF(e,t){let n=(0,U.c)(9),r=QF(e,t),i=QF(e),a;n[0]===e?a=n[1]:(a=t=>t.activeSessions.find(t=>t.id===e)??t.archivedSessions.find(t=>t.id===e)??null,n[0]=e,n[1]=a);let o=Y(a),s=r??i??o,c=s?.parentID??null,l=QF(c,t),u=QF(c),d;n[2]===c?d=n[3]:(d=e=>e.activeSessions.find(e=>e.id===c)??e.archivedSessions.find(e=>e.id===c)??null,n[2]=c,n[3]=d);let f=Y(d),p=l??u??f,m;return n[4]!==s||n[5]!==t||n[6]!==p||n[7]!==e?(m=cN(e,s,p,t),n[4]=s,n[5]=t,n[6]=p,n[7]=e,n[8]=m):m=n[8],m}function QF(e,t){let n=(0,U.c)(7),{childStores:r}=fN(),i;n[0]!==r||n[1]!==t||n[2]!==e?(i=()=>{if(typeof window<`u`){let n=window;n.__snapCalls=(n.__snapCalls??0)+1;let i=t?r.getChild(t)?.getState().session.find(t=>t.id===e):sj(yN(r),e);return n.__prevSnap!==void 0&&!Object.is(n.__prevSnap,i)&&(n.__snapChanges=(n.__snapChanges??0)+1,performance.now()-(n.__lastNotifyAt??0)>100&&(n.__selfDriven=(n.__selfDriven??0)+1)),n.__prevSnap=i,i}return t?r.getChild(t)?.getState().session.find(t=>t.id===e):sj(yN(r),e)},n[0]=r,n[1]=t,n[2]=e,n[3]=i):i=n[3];let a=i,o;n[4]!==r||n[5]!==t?(o=e=>{if(typeof window<`u`){let n=window;n.__notifySubs=(n.__notifySubs??0)+1;let i=()=>{n.__notifyCalls=(n.__notifyCalls??0)+1,e()};return t?r.ensureChild(t).subscribe(i):r.subscribeAllSelected(eI,i)}return t?r.ensureChild(t).subscribe(e):r.subscribeAllSelected($F,e)},n[4]=r,n[5]=t,n[6]=o):o=n[6];let s=o;return K.useSyncExternalStore(s,a,a)}function $F(e){return e.session}function eI(e){return e.session}function tI(e){let t=sN(e,QF(e),Y((0,K.useCallback)(t=>e?t.activeSessions.find(t=>t.id===e)??null:null,[e]))),n=(0,K.useRef)(null),[,r]=K.useState(0);if((0,K.useEffect)(()=>{if(!e){n.current=null;return}if(t){n.current={sessionID:e,session:t,expiresAt:null};return}let i=n.current;if(!i||i.sessionID!==e){n.current=null;return}let a=i.expiresAt??Date.now()+2e3;i.expiresAt=a;let o=a-Date.now(),s=window.setTimeout(()=>{n.current?.sessionID===e&&(n.current=null),r(e=>e+1)},o);return()=>window.clearTimeout(s)},[t,e]),t)return t;let i=n.current;return i&&i.sessionID===e&&(i.expiresAt===null||i.expiresAt>Date.now())?i.session:null}function nI(e,t){return QF(e,t)?.directory??void 0}function rI(){return fN().directory}function iI(){return fN().childStores}var aI=[],oI=40,sI=4,cI=30,lI=4,uI=30,dI=new WeakMap,fI=(e,t,n)=>`${e}\u0000${+!!t}\u0000${n??``}`,pI=e=>{let t=dI.get(e);return t||(t=new Map,dI.set(e,t)),t},mI=(e,t,n,r)=>{let i=dI.get(e);if(!i)return;let a=fI(t,n,r),o=i.get(a);if(o)return i.delete(a),i.set(a,o),o},hI=(e,t)=>{if(!t.sessionID)return;let n=pI(e),r=fI(t.sessionID,t.suspendPartUpdates,t.suspendedPartUpdatesMessageID),i=Ee()?cI:Wp()?uI:null;if(i!==null&&t.list.length>i){n.delete(r);return}n.delete(r),n.set(r,t);let a=Ee()?sI:Wp()?lI:oI;for(;n.size>a;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}};function gI(e,t){let n=dI.get(e);if(n)for(let e of t){if(!e)continue;let t=`${e}\u0000`;for(let e of[...n.keys()])e.startsWith(t)&&n.delete(e)}}var _I=`The following tool was executed by the user`,vI=(e,t,n)=>{if(!n||n.length!==1)return!1;let r=n[0];if(r?.type!==`tool`||typeof r.tool!=`string`||r.tool.toLowerCase()!==`bash`)return!1;let i=t.parentID;if(typeof i!=`string`||i.length===0)return!1;let a=e[i];return a?a.some(e=>{if(e?.type!==`text`||e.synthetic!==!0)return!1;let t=e.text;return typeof t==`string`&&t.trim().startsWith(_I)}):!1};function yI(e,t){if(e.length!==t.length)return!0;for(let n=0;n<t.length;n+=1){let r=e[n],i=t[n];if(!r||!i||r.id!==i.id||r.type!==i.type||i.type===`tool`&&r!==i)return!0}return!1}var bI=(e,t)=>{for(let n of e.list){let r=t.parts[n.info.id]??LI;if(e.suspendPartUpdates){let i=e.suspendedPartUpdatesMessageID;if((!i||n.info.id===i)&&!vI(t.parts,n.info,r)&&!yI(n.parts,r))continue}if(cn(n.parts,r,n.info)!==n.parts)return!1}return!0},xI=(e,t,n,r)=>{let i=mI(e,t.sessionID,n,r);if(i&&i.sourceMessages===t.messages&&i.revertMessageID===t.revertMessageID&&i.suspendPartUpdates===n&&i.suspendedPartUpdatesMessageID===r&&bI(i,t))return i};function SI(e,t){let n=e.messages,r=e.revertMessageID;if(t&&t.sourceMessages===n&&t.revertMessageID===r)return{sourceMessages:n,visibleMessages:t.visibleMessages,revertMessageID:r};let i=n;return{sourceMessages:n,visibleMessages:r?Tt(i,r):n.length===0?II:i.slice(),revertMessageID:r}}function CI(e,t,n=!1,r){let i=e.sessionID,{sourceMessages:a,visibleMessages:o,revertMessageID:s}=SI(e,t),c=new Map,l=o.map(i=>{let a=t?.byId.get(i.id),o=e.parts[i.id]??LI,s=n&&a&&(!r||i.id===r)&&!vI(e.parts,i,o)&&!yI(a.parts,o)?a.parts:cn(a?.parts,o,i),l=a&&a.info===i&&a.parts===s?a:{info:i,parts:s};return c.set(i.id,l),l});return t&&t?.visibleMessages===o&&t.suspendPartUpdates===n&&t.suspendedPartUpdatesMessageID===r&&t.list.length===l.length&&t.list.every((e,t)=>e===l[t])&&t?t:{sessionID:i,sourceMessages:a,visibleMessages:o,revertMessageID:s,suspendPartUpdates:n,suspendedPartUpdatesMessageID:r,list:l,byId:c}}function wI(e,t){let n=fN(),r=t??n.directory,i=bF(r);return Kn(e,r,i)}function TI(e,t){let n=fN(),r=t??n.directory,i=bF(r);return Rn(e,r,i)}function EI(e,t){let n=fN(),r=t??n.directory,i=bF(r);return Mn(e,r,i)}function DI(e,t){let n=(0,U.c)(8),r=fN(),i=t??r.directory,a=bF(i),o=(0,K.useRef)($M),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(pr(),!e)return o.current=$M,$M.history;let t=(B()??We(i,a)).getTranscript(V(i,e)),n=a.getState().session.find(t=>t.id===e)?.revert?.messageID,r=rN({sessionID:e,messages:en(t),parts:t.partsByMessageID,revertMessageID:n},o.current);return o.current=r,r.history},n[0]=e,n[1]=a,n[2]=i,n[3]=s):s=n[3];let c=s,l;n[4]!==e||n[5]!==a||n[6]!==i?(l=t=>{if(!e)return OI;let n=(B()??We(i,a)).subscribe(V(i,e),()=>{t()}),r=wt(()=>{n(),n=(B()??We(i,a)).subscribe(V(i,e),()=>{t()}),t()}),o=a.subscribe(()=>{t()});return()=>{r(),n(),o()}},n[4]=e,n[5]=a,n[6]=i,n[7]=l):l=n[7];let u=l;return K.useSyncExternalStore(u,c,c)}function OI(){}var kI=(e,t,n)=>({sessionID:e,directory:t,store:n,bindingRevision:pr(),transportIdentity:u(),generation:f()}),AI=(e,t)=>e.sessionID===t.sessionID&&e.directory===t.directory&&e.store===t.store&&e.bindingRevision===t.bindingRevision&&e.transportIdentity===t.transportIdentity&&e.generation===t.generation;function jI(e,t,n){let r=(0,U.c)(23),i=fN(),a=t??i.directory,o=bF(a),c=n?.enabled??!0,l=!!n?.suspendPartUpdates,u=n?.suspendPartUpdatesForMessageId??void 0,d,f;r[0]===Symbol.for(`react.memo_cache_sentinel`)?(d=[],f=new Map,r[0]=d,r[1]=f):(d=r[0],f=r[1]);let p;r[2]!==e||r[3]!==l||r[4]!==u?(p={sessionID:e,sourceMessages:II,visibleMessages:II,revertMessageID:void 0,suspendPartUpdates:l,suspendedPartUpdatesMessageID:u,list:d,byId:f},r[2]=e,r[3]=l,r[4]=u,r[5]=p):p=r[5];let m=(0,K.useRef)(p),h=(0,K.useRef)(null);n?.suspendPartUpdates,n?.suspendPartUpdatesForMessageId;let g;r[6]!==n?.suspendPartUpdates||r[7]!==n?.suspendPartUpdatesForMessageId||r[8]!==e||r[9]!==o||r[10]!==a?(g=()=>{if(!e)return aI;let t=(B()??We(a,o)).getTranscript(V(a,e)),r=!!n?.suspendPartUpdates,i=n?.suspendPartUpdatesForMessageId??void 0,s=m.current.sessionID===e?m.current.sourceMessages:mI(o,e,r,i)?.sourceMessages,c=en(t,s),l=o.getState().session.find(t=>t.id===e)?.revert?.messageID,u={sessionID:e,messages:c,parts:t.partsByMessageID,revertMessageID:l},d=xI(o,u,r,i);if(d)return m.current=d,d.list;let f=CI(u,m.current.sessionID===e?m.current:mI(o,e,r,i),r,i);return m.current=f,hI(o,f),f.list},r[6]=n?.suspendPartUpdates,r[7]=n?.suspendPartUpdatesForMessageId,r[8]=e,r[9]=o,r[10]=a,r[11]=g):g=r[11];let _=g,v;r[12]!==c||r[13]!==_||r[14]!==e||r[15]!==o||r[16]!==a?(v=()=>{let t=kI(e,a,o);if(!e)return h.current={scope:t,list:aI},aI;if(!c){let e=h.current;if(e&&AI(e.scope,t))return e.list}let n=_();return h.current={scope:t,list:n},n},r[12]=c,r[13]=_,r[14]=e,r[15]=o,r[16]=a,r[17]=v):v=r[17];let y=v,b;r[18]!==c||r[19]!==e||r[20]!==o||r[21]!==a?(b=t=>{if(!e)return MI;if(!c){let e=wt(()=>{t()}),n=s(()=>{t()});return()=>{e(),n()}}xn(a,e);let n=(B()??We(a,o)).subscribe(V(a,e),()=>{t()}),r=wt(()=>{n(),n=(B()??We(a,o)).subscribe(V(a,e),()=>{t()}),ze(a,e),xn(a,e),t()}),i=s(()=>{t()}),l=o.subscribe(()=>{t()});return()=>{r(),i(),n(),l()}},r[18]=c,r[19]=e,r[20]=o,r[21]=a,r[22]=b):b=r[22];let x=b;return K.useSyncExternalStore(x,y,y)}function MI(){}var NI=new Set;function PI(e,t){let n=rI(),r=t??n,i=bF(r),a=K.useRef(0);K.useEffect(()=>{if(!e)return;let t=B()??We(r,i),n=V(r,e),o=t.getTranscript(n),s=t.hasSession?.(n);if(nn(o,{resolved:s===!0||void 0}).renderable){Ny({directory:r,sessionID:e,store:i});return}if(!i.getState().session.some(t=>t.id===e))return;let c=`${r}:${e}`;if(NI.has(c))return;let l=++a.current,u=()=>l!==a.current;NI.add(c),(async()=>{try{if(B())try{if(await hn(r,e),u())return;Ny({directory:r,sessionID:e,store:i,isStale:u})}catch{if(u())return;await eP(r,e,i,{reason:`ensure-session-messages`,isStale:u})}else await eP(r,e,i,{reason:`ensure-session-messages`,isStale:u})}catch{}finally{NI.delete(c)}})()},[e,i,r])}function FI(e,t){let n=fN(),r=t??n.directory,i=bF(r);return fn(e,r,i)}var II=[],LI=[],RI=[],zI=[],BI=[],VI=()=>({requestID:Oe(),queueItemID:Oe(),operationID:Oe(),messageID:De(`msg`)}),HI=e=>({kind:`pending-admission`,requestID:e.requestID,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,createdAt:e.createdAt,phase:`admitting`,attachmentCount:e.attachmentCount,...e.composerDocument?{composerDocument:e.composerDocument}:{},...e.composerMentions?{composerMentions:e.composerMentions}:{}}),UI,WI=(e,t)=>{let n=e.establishing;if(!n||t&&n.draftID!==t||n.pending.length===0)return BI;if(UI&&UI.pending===n.pending&&UI.draftID===t)return UI.items;let r=n.pending.map(HI);return UI={pending:n.pending,draftID:t,items:r},r},GI=e=>t=>t.flights[e]??null,KI=e=>t=>!!e&&t.establishing?.draftID===e,qI=e=>t=>WI(t,e),JI=(e,t)=>({flightKind:e,inFlight:e!==null,establishing:t}),YI=Ne()((e,t)=>({flights:{},establishing:null,beginFlight:(n,r=`send`)=>{let i=n.trim();return!i||t().flights[i]?!1:(e(e=>({flights:{...e.flights,[i]:r}})),!0)},endFlight:n=>{let r=n.trim();!r||!t().flights[r]||e(e=>{if(!e.flights[r])return e;let t={...e.flights};return delete t[r],{flights:t}})},isInFlight:e=>!!t().flights[e.trim()],beginEstablishing:({draftID:n,primaryMessageID:r})=>{let i=n.trim(),a=r.trim();if(!i||!a)return!1;let o=t().establishing;return o?o.draftID===i&&o.primaryMessageID===a:(e({establishing:{draftID:i,primaryMessageID:a,pending:[]}}),!0)},isEstablishing:e=>e?t().establishing?.draftID===e:!1,getEstablishing:()=>t().establishing,enqueueEstablishingFollowUp:n=>{let r=t().establishing;if(!r||r.draftID!==n.draftID||!n.sendConfig.providerID||!n.sendConfig.modelID)return null;let i=n.content;if(!i.trim()&&(n.attachments?.length??0)===0)return null;let a=n.identity??VI(),o=[...n.attachments??[]],s={kind:`pending-admission`,requestID:a.requestID,queueItemID:a.queueItemID,operationID:a.operationID,messageID:a.messageID||De(`msg`),content:i,createdAt:n.createdAt??Date.now(),phase:`admitting`,attachmentCount:o.length,...n.composerDocument?{composerDocument:n.composerDocument}:{},...n.composerMentions?{composerMentions:n.composerMentions}:{},draftID:n.draftID,sendConfig:{providerID:n.sendConfig.providerID,modelID:n.sendConfig.modelID,...n.sendConfig.agent?{agent:n.sendConfig.agent}:{},...n.sendConfig.variant?{variant:n.sendConfig.variant}:{}},attachments:o};return e({establishing:{...r,pending:[...r.pending,s]}}),s},removeEstablishingFollowUp:n=>{let r=t().establishing;if(!r)return null;let i=r.pending.findIndex(e=>e.requestID===n);if(i<0)return null;let a=r.pending[i];return e({establishing:{...r,pending:[...r.pending.slice(0,i),...r.pending.slice(i+1)]}}),a??null},takeEstablishingPending:n=>{let r=t().establishing;if(!r||r.draftID!==n)return[];let i=r.pending;return e({establishing:null}),i},clearEstablishing:n=>{let r=t().establishing;if(!r||n!=null&&n!==``&&r.draftID!==n)return[];let i=r.pending;return e({establishing:null}),i},shouldBlockNewSessionDraftOpen:()=>t().establishing!==null})),XI=Ne((e,t)=>({armed:!1,objectiveOverride:null,setArmed:(t,n=null)=>e({armed:t,objectiveOverride:t?n:null}),consume:()=>{let{armed:n,objectiveOverride:r}=t();return n&&e({armed:!1,objectiveOverride:null}),{armed:n,objectiveOverride:r}}})),X=class extends Error{status;code;constructor(e,t){super(`Message queue server request failed: ${t}`),this.name=`MessageQueueServerError`,this.status=e,this.code=t}},ZI=`/api/openchamber/message-queue`,QI=new Set([`validation_error`,`revision_conflict`,`row_version_conflict`,`idempotency_conflict`,`generation_conflict`,`authority_conflict`,`not_found`,`scope_locked`,`scope_limit`,`reserved`,`internal_error`,`unavailable`]),$I=new Set([`revision`,`scopeID`,`queueItemID`,`rowVersion`,`removedQueueItemID`,`projectDirectory`,`token`,`state`,`scopeCount`,`statusCounts`]),eL=new Set([`scopeID`,`revision`,`directory`,`sessionID`,`worktreeState`,`itemCount`]),tL=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Z=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,nL=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),rL=async e=>{if(e.status===501)return`unavailable`;try{let t=await e.json();if(tL(t)&&typeof t.code==`string`&&QI.has(t.code))return t.code}catch{}return`unavailable`},iL=async(e,t)=>{let n;try{n=await x(e,t)}catch{throw new X(0,`unavailable`)}if(!n.ok)throw new X(n.status,await rL(n));try{return await n.json()}catch{throw new X(n.status,`unavailable`)}},aL=()=>{throw new X(200,`unavailable`)},oL=e=>tL(e)&&Object.getPrototypeOf(e)===Object.prototype,sL=e=>{if(!(!oL(e)||typeof e.text!=`string`||!Array.isArray(e.references)||e.references.some(e=>!oL(e))))return{text:e.text,references:e.references.map(e=>({...e}))}},cL=e=>Array.isArray(e)&&e.every(oL)?e.map(e=>({...e})):void 0,lL=e=>{if(!(!tL(e)||typeof e.providerID!=`string`||typeof e.modelID!=`string`)&&!(e.agent!==void 0&&typeof e.agent!=`string`||e.variant!==void 0&&typeof e.variant!=`string`))return{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}},uL=e=>tL(e)?e.kind===`primary`&&Object.keys(e).length===1?{kind:`primary`}:e.kind===`assistant`&&Object.keys(e).every(e=>e===`kind`||e===`assistantID`)&&typeof e.assistantID==`string`&&e.assistantID?{kind:`assistant`,assistantID:e.assistantID}:null:null,dL=e=>{if(!Array.isArray(e)||e.length===0||e.length>129)return null;let t=[],n=0;for(let r of e){if(!oL(r))return null;if(r.type===`text`&&Object.keys(r).every(e=>e===`type`||e===`text`||e===`synthetic`)&&typeof r.text==`string`&&(r.synthetic===void 0||typeof r.synthetic==`boolean`)){t.push({type:`text`,text:r.text,...r.synthetic===void 0?{}:{synthetic:r.synthetic}});continue}if(r.type===`file`&&Object.keys(r).length===3&&typeof r.mime==`string`&&typeof r.attachmentID==`string`&&r.attachmentID){if(n+=1,n>64)return null;t.push({type:`file`,mime:r.mime,attachmentID:r.attachmentID});continue}if(r.type===`file`&&Object.keys(r).length===3&&typeof r.mime==`string`&&typeof r.url==`string`){if(n+=1,n>64)return null;t.push({type:`file`,mime:r.mime,url:r.url});continue}return null}return t},fL=e=>{if(!Array.isArray(e)||e.length>64)return null;let t=new Set,n=[];for(let r of e){if(!oL(r)||Object.keys(r).some(e=>![`partID`,`text`,`synthetic`,`attachmentIDs`,`deliveryPartIndexes`].includes(e))||typeof r.partID!=`string`||!r.partID||t.has(r.partID)||typeof r.text!=`string`||r.synthetic!==void 0&&typeof r.synthetic!=`boolean`||!Array.isArray(r.attachmentIDs)||r.attachmentIDs.some(e=>typeof e!=`string`||!e)||new Set(r.attachmentIDs).size!==r.attachmentIDs.length||!Array.isArray(r.deliveryPartIndexes)||r.deliveryPartIndexes.length!==r.attachmentIDs.length+1||r.deliveryPartIndexes.some(e=>!Number.isSafeInteger(e)||e<0)||new Set(r.deliveryPartIndexes).size!==r.deliveryPartIndexes.length)return null;t.add(r.partID),n.push({partID:r.partID,text:r.text,...r.synthetic===!0?{synthetic:!0}:{},attachmentIDs:[...r.attachmentIDs],deliveryPartIndexes:[...r.deliveryPartIndexes]})}return n},pL=e=>{if(!oL(e)||Object.keys(e).some(e=>![`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`locator`].includes(e))||typeof e.attachmentID!=`string`||!e.attachmentID||typeof e.filename!=`string`||!e.filename||typeof e.mimeType!=`string`||!e.mimeType||!Z(e.size)||![`local`,`vscode`,`server`].includes(String(e.source))||!oL(e.locator))return null;let t=e.occurrenceRefID;if(!(Array.isArray(t)&&(t.length===2&&t[0]===`root`&&t[1]===e.attachmentID||t.length===3&&t[0]===`part`&&typeof t[1]==`string`&&t[1]&&t[2]===e.attachmentID)))return null;let n=e.locator;return n.kind===`upload`&&Object.keys(n).every(e=>[`kind`,`uploadID`,`storageKey`].includes(e))&&typeof n.uploadID==`string`&&n.uploadID&&(n.storageKey===void 0||typeof n.storageKey==`string`)&&n.storageKey!==``?{attachmentID:e.attachmentID,occurrenceRefID:t,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source,locator:{kind:`upload`,uploadID:n.uploadID}}:n.kind===`server-path`&&Object.keys(n).every(e=>[`kind`,`path`].includes(e))&&typeof n.path==`string`&&n.path?{attachmentID:e.attachmentID,occurrenceRefID:t,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source,locator:{kind:`server-path`,path:n.path}}:null},mL=e=>Array.isArray(e)&&e.map(pL).every(e=>e!==null)?e.map(pL):null,hL=e=>{if(!tL(e)||typeof e.queueItemID!=`string`||typeof e.operationID!=`string`||typeof e.messageID!=`string`||typeof e.content!=`string`||typeof e.status!=`string`||!Z(e.attemptCount)||!Z(e.position)||!Z(e.rowVersion)||!Z(e.createdAt)||e.manualDispatchRequested!==void 0&&typeof e.manualDispatchRequested!=`boolean`)return null;let t=e.composerDocument===void 0?void 0:sL(e.composerDocument),n=e.composerMentions===void 0?void 0:cL(e.composerMentions),r=e.sendConfig===void 0?void 0:lL(e.sendConfig),i=e.deliveryTarget===void 0?{kind:`primary`}:uL(e.deliveryTarget),a=e.deliveryParts===void 0?void 0:dL(e.deliveryParts),o=e.syntheticParts===void 0?void 0:fL(e.syntheticParts),s=e.attachmentIssues===void 0?void 0:cL(e.attachmentIssues);if(e.composerDocument!==void 0&&!t||e.composerMentions!==void 0&&!n||e.sendConfig!==void 0&&!r||!i||e.deliveryParts!==void 0&&!a||i.kind===`assistant`&&!a||e.syntheticParts!==void 0&&!o||e.attachmentIssues!==void 0&&!s)return null;let c=e.attachments===void 0?void 0:mL(e.attachments);if(e.attachments!==void 0&&!c)return null;if(o&&a){let e=new Set,t=new Set;for(let n of o){let[r,...i]=n.deliveryPartIndexes;if(r===void 0||e.has(r)||a[r]?.type!==`text`||a[r].text!==n.text)return null;e.add(r);for(let t of i){if(e.has(t)||a[t]?.type!==`file`||!(`attachmentID`in a[t])||a[t].attachmentID!==n.attachmentIDs[i.indexOf(t)])return null;e.add(t)}for(let e of n.attachmentIDs){let r=c?.find(t=>t.attachmentID===e);if(!r||t.has(e)||r.occurrenceRefID[0]!==`part`||r.occurrenceRefID[1]!==n.partID||r.occurrenceRefID[2]!==e)return null;t.add(e)}}if(c?.some(e=>e.occurrenceRefID[0]===`part`&&!t.has(e.attachmentID)))return null}return{queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,status:e.status,attemptCount:e.attemptCount,position:e.position,rowVersion:e.rowVersion,createdAt:e.createdAt,deliveryTarget:i,...e.manualDispatchRequested===!0?{manualDispatchRequested:!0}:{},...t?{composerDocument:t}:{},...n?{composerMentions:n}:{},...r?{sendConfig:r}:{},...a?{deliveryParts:a}:{},...o?{syntheticParts:o}:{},...c?{attachments:c}:{},...s?{attachmentIssues:s}:{}}},gL=e=>{if(!tL(e)||typeof e.scopeID!=`string`||!Z(e.revision)||typeof e.directory!=`string`||typeof e.sessionID!=`string`||typeof e.worktreeState!=`string`||!Z(e.itemCount)||!Array.isArray(e.items)||e.items.length>8||e.nextOffset!==void 0&&(!Z(e.nextOffset)||e.nextOffset<=0))return null;let t=e.items.map(hL);return t.every(e=>e!==null)?{scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount,items:t,...e.nextOffset===void 0?{}:{nextOffset:e.nextOffset}}:null},_L=e=>tL(e)&&Object.keys(e).every(e=>eL.has(e))&&typeof e.scopeID==`string`&&Z(e.revision)&&typeof e.directory==`string`&&typeof e.sessionID==`string`&&typeof e.worktreeState==`string`&&Z(e.itemCount)?{scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount}:null,vL=e=>tL(e)&&typeof e.projectDirectory==`string`&&nL(e.orderedPaths)&&Z(e.revision)?{projectDirectory:e.projectDirectory,orderedPaths:e.orderedPaths,revision:e.revision}:null,yL=e=>{if(!tL(e)||!Z(e.revision)||!Array.isArray(e.scopes)||!Array.isArray(e.worktreeOrders))return aL();let t=e.scopes.map(_L),n=e.worktreeOrders.map(vL);return!t.every(e=>e!==null)||!n.every(e=>e!==null)?aL():{revision:e.revision,scopes:t,worktreeOrders:n}},bL=e=>!tL(e)||!Z(e.revision)||Object.keys(e).some(e=>!$I.has(e))||e.scopeID!==void 0&&typeof e.scopeID!=`string`||e.queueItemID!==void 0&&typeof e.queueItemID!=`string`||e.rowVersion!==void 0&&!Z(e.rowVersion)||e.removedQueueItemID!==void 0&&typeof e.removedQueueItemID!=`string`||e.projectDirectory!==void 0&&typeof e.projectDirectory!=`string`||e.token!==void 0&&typeof e.token!=`string`||e.state!==void 0&&typeof e.state!=`string`||e.scopeCount!==void 0&&!Z(e.scopeCount)||e.statusCounts!==void 0&&(!tL(e.statusCounts)||Object.values(e.statusCounts).some(e=>!Z(e)))?aL():{revision:e.revision,...typeof e.scopeID==`string`?{scopeID:e.scopeID}:{},...typeof e.queueItemID==`string`?{queueItemID:e.queueItemID}:{},...Z(e.rowVersion)?{rowVersion:e.rowVersion}:{},...typeof e.removedQueueItemID==`string`?{removedQueueItemID:e.removedQueueItemID}:{},...typeof e.projectDirectory==`string`?{projectDirectory:e.projectDirectory}:{},...typeof e.token==`string`?{token:e.token}:{},...typeof e.state==`string`?{state:e.state}:{},...Z(e.scopeCount)?{scopeCount:e.scopeCount}:{},...tL(e.statusCounts)?{statusCounts:e.statusCounts}:{}},xL=(e,t,n)=>({method:e,headers:{"Content-Type":`application/json`},body:JSON.stringify(t),signal:n}),SL=(e,t)=>{let{signal:n,...r}=t;return xL(e,r,n)},CL=async e=>yL(await iL(ZI,{signal:e})),wL=new Map,TL=(e,t)=>`${c().api(ZI)}\u0000${e}\u0000${t.offset??``}\u0000${t.limit??``}\u0000${t.expectedRevision??``}`,EL=async(e,t={})=>{if(t.signal?.aborted)throw new X(0,`unavailable`);let n=TL(e,t),r=wL.get(n);if(r){let e=await r;if(t.signal?.aborted)throw new X(0,`unavailable`);return e}let i=(async()=>gL(await iL(`${ZI}/scopes/${encodeURIComponent(e)}`,{query:{offset:t.offset,limit:t.limit,expectedRevision:t.expectedRevision},signal:t.signal}))??aL())().finally(()=>{wL.get(n)===i&&wL.delete(n)});return wL.set(n,i),i},DL=15e3,OL=(e,t={})=>new Promise(n=>{let r=t.signal;if(r?.aborted){n(`aborted`);return}let i=typeof t.safetyTimeoutMs==`number`&&t.safetyTimeoutMs>0?t.safetyTimeoutMs:DL,a=!1,o=e=>{a||(a=!0,clearTimeout(l),c(),r?.removeEventListener(`abort`,s),n(e))},s=()=>o(`aborted`),c=Fi(t=>{if(t.type===`event-stream-ready`){o(`ready`);return}t.type===`message-queue-changed`&&t.revision>e&&o(`tip`)}),l=setTimeout(()=>o(`timeout`),i),u=bi(`message-queue-changed`);if(u!==void 0&&u>e){o(`tip`);return}r?.addEventListener(`abort`,s,{once:!0})}),kL=async e=>{let t=await iL(`${ZI}/status`,{signal:e}),n=new Set([`capability`,`authority`,`generation`,`activationEpoch`,`activatedAt`,`manifestHash`,`protocol`,`worker`]);return!tL(t)||Object.keys(t).some(e=>!n.has(e))||typeof t.capability!=`boolean`||t.authority!==void 0&&t.authority!==`shadow`&&t.authority!==`active`&&t.authority!==`paused`||t.generation!==void 0&&!Z(t.generation)||t.activationEpoch!==void 0&&!Z(t.activationEpoch)||t.activatedAt!==void 0&&!Z(t.activatedAt)||t.protocol!==void 0&&t.protocol!==4||t.manifestHash!==void 0&&typeof t.manifestHash!=`string`||t.worker!==void 0&&(!tL(t.worker)||Object.keys(t.worker).some(e=>e!==`paused`&&e!==`active`)||typeof t.worker.paused!=`boolean`||!Z(t.worker.active))?aL():{capability:t.capability,...typeof t.authority==`string`?{authority:t.authority}:{},...Z(t.generation)?{generation:t.generation}:{},...Z(t.activationEpoch)?{activationEpoch:t.activationEpoch}:{},...Z(t.activatedAt)?{activatedAt:t.activatedAt}:{},...typeof t.manifestHash==`string`?{manifestHash:t.manifestHash}:{},...t.protocol===4?{protocol:4}:{},...tL(t.worker)?{worker:{paused:t.worker.paused,active:t.worker.active}}:{}}},AL=(e,t)=>Object.keys(e).length===t.length&&Object.keys(e).every(e=>t.includes(e)),jL=e=>{let t=[`revision`,`importID`,`state`,`duplicate`,`manifestHash`,`commit`];if(!tL(e)||Object.keys(e).some(e=>!t.includes(e))||!Z(e.revision)||typeof e.importID!=`string`||![`staging`,`sealed`,`committed`,`abandoned`,`expired`].includes(String(e.state))||e.duplicate!==void 0&&typeof e.duplicate!=`boolean`||e.manifestHash!==void 0&&typeof e.manifestHash!=`string`)return aL();let n=e.commit===void 0?void 0:PL(e.commit);return e.commit!==void 0&&!n?aL():{revision:e.revision,importID:e.importID,state:e.state,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{},...typeof e.manifestHash==`string`?{manifestHash:e.manifestHash}:{},...n?{commit:n}:{}}},ML=e=>!tL(e)||!AL(e,e.duplicate===void 0?[`revision`,`importID`,`staged`]:[`revision`,`importID`,`staged`,`duplicate`])||!Z(e.revision)||typeof e.importID!=`string`||e.staged!==!0||e.duplicate!==void 0&&typeof e.duplicate!=`boolean`?aL():{revision:e.revision,importID:e.importID,staged:!0,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{}},NL=e=>!tL(e)||!AL(e,[`revision`,`importID`,`manifestHash`,`state`,`itemCount`])||!Z(e.revision)||typeof e.importID!=`string`||typeof e.manifestHash!=`string`||!/^[a-f0-9]{64}$/.test(e.manifestHash)||e.state!==`sealed`||!Z(e.itemCount)?aL():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,state:`sealed`,itemCount:e.itemCount},PL=e=>!tL(e)||!AL(e,[`revision`,`importID`,`manifestHash`,`generation`,`activationEpoch`,`added`])||!Z(e.revision)||typeof e.importID!=`string`||typeof e.manifestHash!=`string`||!/^[a-f0-9]{64}$/.test(e.manifestHash)||!Z(e.generation)||!Z(e.activationEpoch)||!Z(e.added)?aL():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,generation:e.generation,activationEpoch:e.activationEpoch,added:e.added},FL=e=>PL(e),IL=e=>PL(e),LL=(e,t)=>!tL(e)||!AL(e,[`authority`,`generation`,`revision`])||e.authority!==t||!Z(e.generation)||!Z(e.revision)?aL():{authority:t,generation:e.generation,revision:e.revision},RL=async e=>jL(await iL(`${ZI}/imports`,SL(`POST`,e))),zL=async(e,t)=>{let n=await iL(`${ZI}/imports/${encodeURIComponent(e)}`,{signal:t});if(!tL(n)||![`staging`,`sealed`,`committed`,`abandoned`,`expired`].includes(String(n.state))||!Z(n.itemCount)||!Array.isArray(n.staged)||n.manifestHash!==void 0&&typeof n.manifestHash!=`string`)return aL();let r=n.staged.map(e=>tL(e)&&Z(e.scopeOrdinal)&&Z(e.itemOrdinal)&&typeof e.payloadHash==`string`?{scopeOrdinal:e.scopeOrdinal,itemOrdinal:e.itemOrdinal,payloadHash:e.payloadHash}:null),i=n.commit===void 0?void 0:PL(n.commit);return!r.every(e=>e!==null)||n.commit!==void 0&&!i?aL():{state:n.state,...typeof n.manifestHash==`string`?{manifestHash:n.manifestHash}:{},itemCount:n.itemCount,staged:r,...i?{commit:i}:{}}},BL=async(e,t)=>ML(await iL(`${ZI}/imports/${encodeURIComponent(e)}/items`,SL(`POST`,t))),VL=async(e,t)=>NL(await iL(`${ZI}/imports/${encodeURIComponent(e)}/seal`,SL(`POST`,t))),HL=async(e,t)=>FL(await iL(`${ZI}/imports/${encodeURIComponent(e)}/activate`,SL(`POST`,t))),UL=async(e,t)=>IL(await iL(`${ZI}/imports/${encodeURIComponent(e)}/late-commit`,SL(`POST`,t))),WL=async e=>LL(await iL(`${ZI}/authority/pause`,SL(`POST`,e)),`paused`),GL=async e=>LL(await iL(`${ZI}/authority/resume`,SL(`POST`,e)),`active`),KL=async(e={})=>{let t=await iL(`${ZI}/attachments/uploads`,SL(`POST`,e));return!tL(t)||typeof t.uploadID!=`string`||typeof t.uploadToken!=`string`||!Z(t.expiresAt)?aL():{uploadID:t.uploadID,uploadToken:t.uploadToken,expiresAt:t.expiresAt}},qL=async(e,t,n,r)=>{let i;try{i=await x(`${ZI}/attachments/uploads/${encodeURIComponent(e.uploadID)}`,{method:`PUT`,headers:{"Content-Length":String(t.size),"X-Message-Queue-Content-Length":String(t.size),"X-Message-Queue-Upload-Token":e.uploadToken,"X-Message-Queue-Sha256":n},body:t,signal:r})}catch{throw new X(0,`unavailable`)}if(!i.ok)throw new X(i.status,await rL(i))},JL=e=>!tL(e)||!Z(e.revision)||typeof e.scopeID!=`string`||typeof e.queueItemID!=`string`||!Z(e.rowVersion)||typeof e.token!=`string`||!Z(e.expiresAt)||!Z(e.generation)?aL():{revision:e.revision,scopeID:e.scopeID,queueItemID:e.queueItemID,rowVersion:e.rowVersion,token:e.token,expiresAt:e.expiresAt,generation:e.generation},YL=e=>!tL(e)||typeof e.queueItemID!=`string`||typeof e.token!=`string`||!Z(e.generation)||!Z(e.expiresAt)?aL():{queueItemID:e.queueItemID,token:e.token,generation:e.generation,expiresAt:e.expiresAt},XL=async(e,t)=>JL(await iL(`${ZI}/items/${encodeURIComponent(e)}/reserve`,SL(`POST`,t))),ZL=async(e,t)=>{await iL(`${ZI}/items/${encodeURIComponent(e)}/release`,SL(`POST`,t))},QL=async(e,t)=>YL(await iL(`${ZI}/items/${encodeURIComponent(e)}/edit-reservations/${encodeURIComponent(t.token)}/renew`,SL(`POST`,t))),$L=async(e,t)=>bL(await iL(`${ZI}/items/${encodeURIComponent(e)}/reserved-remove`,SL(`DELETE`,t))),eR=async(e,t,n)=>{let r;try{r=await x(`${ZI}/items/${encodeURIComponent(e)}/attachments/${encodeURIComponent(t.attachmentID)}/content`,{signal:n})}catch{throw new X(0,`unavailable`)}if(!r.ok)throw new X(r.status,await rL(r));let i=t.mimeType.trim().toLowerCase(),a=r.headers.get(`Content-Length`),o=r.headers.get(`Content-Type`)?.split(`;`,1)[0]?.trim().toLowerCase();if(a!==null&&a!==String(t.size)||o!==i)throw new X(r.status,`unavailable`);let s;try{s=await r.blob()}catch{throw new X(r.status,`unavailable`)}if(s.size!==t.size)throw new X(r.status,`unavailable`);let c=new Blob([s],{type:i});return c.type===i?c:Object.defineProperty(c,"type",{value:i})},tR=async e=>bL(await iL(`${ZI}/items`,SL(`POST`,e))),nR=async(e,t)=>bL(await iL(`${ZI}/items/${encodeURIComponent(e)}`,SL(`PATCH`,t))),rR=async(e,t)=>bL(await iL(`${ZI}/items/${encodeURIComponent(e)}/send`,SL(`POST`,t))),iR=async(e,t)=>bL(await iL(`${ZI}/items/${encodeURIComponent(e)}`,SL(`DELETE`,t))),aR=async(e,t)=>bL(await iL(`${ZI}/scopes/${encodeURIComponent(e)}/order`,SL(`PUT`,t))),oR=async(e,t)=>vL(await iL(`${ZI}/worktrees/order`,{query:{projectDirectory:e},signal:t}))??aL(),sR=async e=>bL(await iL(`${ZI}/worktrees/order`,SL(`PUT`,e))),cR=(e=u())=>y.messageQueue.snapshot(e),lR=(e=u())=>y.messageQueue.status(e),uR=(e,t,n=u())=>y.messageQueue.scope(e,t,n),dR=(e=u())=>({queryKey:lR(e),queryFn:({signal:e})=>kL(e),retry:!1,staleTime:3e4}),fR=(e=u())=>({queryKey:cR(e),queryFn:({signal:e})=>CL(e),staleTime:5e3}),pR=(e=_,t=u())=>e.fetchQuery(dR(t)),mR=(e=_,t=u())=>e.fetchQuery(fR(t)),hR=async(e=_,t=u())=>e.fetchQuery({...dR(t),staleTime:0}),gR=async(e=_,t=u())=>e.fetchQuery({...fR(t),staleTime:0}),_R=(e,t,n=u())=>{e.setQueryData(uR(t.scopeID,t.revision,n),{pages:[t],pageParams:[0]})},vR=(e,t,n=u())=>{e.setQueryData(lR(n),t)},yR=(e,t,n=u())=>{e.setQueryData(cR(n),t)},bR=(e,t,n,r=u())=>{let i=e.getQueryData(uR(t,n,r));if(!i?.pages.length)return;let a=i.pages[0];if(!a)return;let o=i.pages.flatMap(e=>e.items);return o.length===a.itemCount&&i.pages.every(e=>e.revision===a.revision)?{...a,items:o,nextOffset:void 0}:void 0},xR=(e,t=u())=>e.removeQueries({queryKey:[t,`messageQueue`,`scope`],exact:!1}),SR=(e,t,n=u())=>e.removeQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),CR=(e,t,n=u())=>e.invalidateQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),wR=`openchamber_message_queue_ledger_v4`,TR=`message-queue-store`,ER={scopes:128,totalItems:2048,attachmentsPerItem:64,issuesPerItem:64,string:8192,content:2e5,dataURL:26214400,bytes:26214400},DR=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,OR=(e,t)=>Object.keys(e).every(e=>t.includes(e)),kR=(e,t=ER.string)=>typeof e==`string`&&e.length>0&&e.length<=t,AR=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,jR=e=>JSON.parse(JSON.stringify(e)),MR=(e,t,n,r)=>{let i=DR(t)?t:{};return{...e?{scopeKey:e}:{},...kR(i.queueItemID)?{queueItemID:i.queueItemID}:{},...kR(i.operationID)?{operationID:i.operationID}:{},path:n,reason:r}},NR=e=>e.state===`bound`?`bound:${JSON.stringify([e.transportIdentity,e.directory,e.sessionID])}`:`unbound-legacy:${JSON.stringify([e.sessionID])}`,PR=e=>{if(typeof e!=`string`)return;let t=e.startsWith(`bound:`)?(()=>{try{return JSON.parse(e.slice(6))}catch{return}})():e.startsWith(`unbound-legacy:`)?(()=>{try{return JSON.parse(e.slice(15))}catch{return}})():void 0,n=IR(e.startsWith(`bound:`)&&Array.isArray(t)&&t.length===3?{state:`bound`,transportIdentity:t[0],directory:t[1],sessionID:t[2]}:e.startsWith(`unbound-legacy:`)&&Array.isArray(t)&&t.length===1?{state:`unbound-legacy`,sessionID:t[0]}:void 0);return n&&NR(n)===e?n:void 0},FR=()=>({version:4,queues:{},migration:{v3State:`pending`}}),IR=e=>!DR(e)||!kR(e.state)?void 0:e.state===`bound`&&OR(e,[`state`,`transportIdentity`,`directory`,`sessionID`])&&kR(e.transportIdentity)&&kR(e.directory)&&kR(e.sessionID)?{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID}:e.state===`unbound-legacy`&&OR(e,[`state`,`sessionID`])&&kR(e.sessionID)?{state:`unbound-legacy`,sessionID:e.sessionID}:void 0,LR=(e,t)=>{try{let n=JSON.parse(e);return Array.isArray(n)&&(n.length===2&&n[0]===`root`&&n[1]===t||n.length===3&&typeof n[1]==`string`&&n[0]===`part`&&n[2]===t)}catch{return!1}},RR=[`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`serverPath`,`vscodePath`,`vscodeSource`],zR=e=>{if(!kR(e.attachmentID)||!kR(e.occurrenceRefID)||!LR(e.occurrenceRefID,e.attachmentID)||!kR(e.filename)||typeof e.mimeType!=`string`||e.mimeType.length>ER.string||!AR(e.size))return;let t={attachmentID:e.attachmentID,occurrenceRefID:e.occurrenceRefID,filename:e.filename,mimeType:e.mimeType,size:e.size};if(e.source===`local`&&e.serverPath===void 0&&e.vscodePath===void 0&&e.vscodeSource===void 0)return{...t,source:`local`};if(e.source===`server`&&kR(e.serverPath)&&e.vscodePath===void 0&&e.vscodeSource===void 0)return{...t,source:`server`,serverPath:e.serverPath};if(e.source===`vscode`&&e.serverPath===void 0&&kR(e.vscodePath)&&(e.vscodeSource===`file`||e.vscodeSource===`selection`))return{...t,source:`vscode`,vscodePath:e.vscodePath,vscodeSource:e.vscodeSource}},BR=e=>{if(!DR(e)||!OR(e,[...RR,`version`,`locator`])||e.version!==1)return;let t=zR(e);if(!t||!DR(e.locator))return;let n=e.locator.kind===`blob`&&OR(e.locator,[`kind`,`blobID`])&&kR(e.locator.blobID)?{kind:`blob`,blobID:e.locator.blobID}:e.locator.kind===`url`&&OR(e.locator,[`kind`,`url`])&&je(e.locator.url)?{kind:`url`,url:e.locator.url}:void 0;return n?{version:1,...t,locator:n}:void 0},VR=e=>{if(!DR(e)||!OR(e,[...RR,`reason`]))return;let t=zR(e);return t&&[`legacy-blob-url`,`legacy-bytes-missing`,`legacy-unbound-data`,`missing-blob`].includes(e.reason)?{...t,reason:e.reason}:void 0},HR=(e,t)=>{if(!DR(e)||!OR(e,[`text`,`references`])||typeof e.text!=`string`)return;let n=E(e.text,e.references),r=n&&te(n,`queue-canonical`);return r&&r.ok&&r.text===t?n:void 0},UR=(e,t)=>{if(e===void 0)return[];if(!t)return;let n=oe(t.text,e);return!n||n.some(e=>t.references.some(t=>e.range.start<t.end&&t.start<e.range.end))?void 0:n},WR=(e,t)=>{if(!DR(e)||!OR(e,[`version`,`queueItemID`,`operationID`,`messageID`,`owner`,`content`,`composerDocument`,`composerMentions`,`attachments`,`attachmentIssues`,`createdAt`,`sendConfig`,`status`,`attemptCount`,`nextAttemptAt`,`reconciliationStartedAt`,`reconciliationDeadlineAt`,`reconciliationChecks`,`reconciliationNextCheckAt`,`failureKind`])||e.version!==1||!kR(e.queueItemID)||!kR(e.operationID)||!kR(e.messageID)||typeof e.content!=`string`||e.content.length>ER.content||!AR(e.createdAt)||!AR(e.attemptCount)||!Array.isArray(e.attachments)||e.attachments.length>ER.attachmentsPerItem||!Array.isArray(e.attachmentIssues)||e.attachmentIssues.length>ER.issuesPerItem||![`queued`,`sending`,`retrying`,`reconciling`,`unresolved`,`failed`].includes(e.status))return;let n=IR(e.owner),r=e.attachments.map(BR),i=e.attachmentIssues.map(VR),a=e.composerDocument===void 0?void 0:HR(e.composerDocument,e.content),o=UR(e.composerMentions,a);if(!n||e.composerDocument!==void 0&&!a||e.composerMentions!==void 0&&!o||!r.every(Boolean)||!i.every(Boolean))return;let s=new Set(r.map(e=>e.occurrenceRefID)),c=new Set(a?ue(a).flatMap(e=>e.type===`attachment`?[e.attachmentRefID]:[]):[]);if(s.size!==r.length||new Set(i.map(e=>e.occurrenceRefID)).size!==i.length||i.some(e=>s.has(e.occurrenceRefID))||[...c].some(e=>!s.has(e))||e.sendConfig!==void 0&&(!DR(e.sendConfig)||!OR(e.sendConfig,[`providerID`,`modelID`,`agent`,`variant`])||!kR(e.sendConfig.providerID)||!kR(e.sendConfig.modelID)||[e.sendConfig.agent,e.sendConfig.variant].some(e=>e!==void 0&&!kR(e))))return;let l=[e.nextAttemptAt,e.reconciliationStartedAt,e.reconciliationDeadlineAt,e.reconciliationChecks,e.reconciliationNextCheckAt],u=e.reconciliationStartedAt!==void 0&&e.reconciliationDeadlineAt!==void 0&&e.reconciliationChecks!==void 0&&e.reconciliationDeadlineAt>=e.reconciliationStartedAt,d=e.reconciliationStartedAt===void 0&&e.reconciliationDeadlineAt===void 0&&e.reconciliationChecks===void 0&&e.reconciliationNextCheckAt===void 0,f=e.nextAttemptAt===void 0,p=e.failureKind===void 0,m=e.status===`queued`||e.status===`sending`?f&&d&&p&&i.length===0:e.status===`retrying`?e.nextAttemptAt!==void 0&&e.failureKind===`pre-dispatch`&&d&&i.length===0:e.status===`reconciling`?f&&u&&e.failureKind===`ambiguous-dispatch`&&i.length===0:e.status===`unresolved`?f&&u&&e.failureKind===`ambiguous-dispatch`&&i.length===0||f&&d&&p&&i.length>0:f&&d&&e.failureKind===`definitive`&&i.length===0;if(l.some(e=>e!==void 0&&!AR(e))||!m)return;let h=e.status===`sending`&&t,g=h?e.createdAt+3e4:e.reconciliationDeadlineAt;if(h&&!AR(g))return;let _=h?e.createdAt:e.reconciliationStartedAt,v=h?0:e.reconciliationChecks;return{version:1,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,owner:n,content:e.content,...a?{composerDocument:a}:{},...o?.length?{composerMentions:o}:{},attachments:r,attachmentIssues:i,createdAt:e.createdAt,...e.sendConfig?{sendConfig:jR(e.sendConfig)}:{},status:h?`reconciling`:e.status,attemptCount:e.attemptCount,...e.nextAttemptAt===void 0?{}:{nextAttemptAt:e.nextAttemptAt},..._===void 0?{}:{reconciliationStartedAt:_,reconciliationDeadlineAt:g,reconciliationChecks:v,...e.reconciliationNextCheckAt===void 0?{}:{reconciliationNextCheckAt:e.reconciliationNextCheckAt}},...h?{failureKind:`ambiguous-dispatch`}:e.failureKind?{failureKind:e.failureKind}:{}}},GR=(e,t={})=>{let n=e=>({status:`corrupt`,snapshot:FR(),issues:[MR(void 0,void 0,`$`,e)],degradedScopeKeys:[]});if(!DR(e)||!OR(e,[`version`,`queues`,`migration`])||e.version!==4||!DR(e.queues)||!DR(e.migration)||!OR(e.migration,[`v3State`])||![`pending`,`complete`,`degraded`].includes(e.migration.v3State)||Object.keys(e.queues).length>ER.scopes)return n(`snapshot`);let r=0,i={},a=[],o=new Set,s=new Map,c=new Map,l=new Map,u=(e,t,n,r)=>{a.push(MR(e,t,n,r)),o.add(e)};for(let[a,d]of Object.entries(e.queues)){if(!PR(a)){u(a,d,`$.queues.${JSON.stringify(a)}`,`scope`);continue}if(!Array.isArray(d)){u(a,d,`$.queues.${JSON.stringify(a)}`,`queue`);continue}let e=[];for(let i=0;i<d.length;i++){if(++r>ER.totalItems)return n(`item-limit`);let f=d[i],p=`$.queues.${JSON.stringify(a)}[${i}]`,m=WR(f,t.normalizeSending===!0);if(!m||NR(m.owner)!==a){u(a,f,p,`item`);continue}let h=[[s,m.queueItemID,`duplicate-queue-item-id`],[c,m.operationID,`duplicate-operation-id`],[l,m.messageID,`duplicate-message-id`]].find(([e,t])=>e.has(t));if(h){let[e,,t]=h;u(a,f,p,t),o.add(e.get(h[1]));continue}s.set(m.queueItemID,a),c.set(m.operationID,a),l.set(m.messageID,a),e.push(m)}e.length&&(i[a]=e)}return{status:`ok`,snapshot:jR({version:4,queues:i,migration:{v3State:e.migration.v3State}}),issues:a,degradedScopeKeys:[...o]}},KR=e=>{let t=GR(e);if(t.status===`corrupt`||t.issues.length)return{ok:!1,error:{code:`corrupt`}};try{return{ok:!0,value:JSON.stringify(t.snapshot)}}catch{return{ok:!1,error:{code:`serialization`}}}},qR=()=>({ok:!1,error:{code:`unavailable`}}),JR=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),YR=e=>({read:async t=>{if(!e)return qR();try{return{ok:!0,value:e.getItem(t)}}catch(e){return JR(e)}},write:async(t,n)=>{if(!e)return qR();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return JR(e)}},remove:async t=>{if(!e)return qR();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return JR(e)}}}),XR=()=>{try{return YR(typeof window>`u`?null:window.localStorage)}catch{return YR(null)}},ZR=async e=>{let t=await e.read(wR);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}};try{let e=GR(JSON.parse(t.value),{normalizeSending:!0});return{ok:!0,value:{raw:t.value,snapshot:e.status===`ok`?e.snapshot:null,status:e.status===`corrupt`?`corrupt`:e.issues.length?`partial`:`ok`,issues:e.issues,degradedScopeKeys:e.degradedScopeKeys}}}catch{return{ok:!0,value:{raw:t.value,snapshot:null,status:`corrupt`,issues:[MR(void 0,void 0,`$`,`json`)],degradedScopeKeys:[]}}}},QR=async e=>{let t=await ZR(e);return t.ok?t.value.status===`empty`?{ok:!0,value:null}:t.value.status===`ok`?{ok:!0,value:t.value.snapshot}:{ok:!1,error:{code:`corrupt`}}:t},$R=async(e,t)=>{let n=KR(t);return n.ok?e.write(wR,n.value):n},ez=e=>{let t=!0,n=[],r=!1,i=new Set,a=()=>{if(!r&&n.length===0){for(let e of i)e();i.clear()}},o=()=>{if(r)return;let t=n.shift();if(!t){a();return}r=!0,$R(e,t.snapshot).then(t.resolve).finally(()=>{r=!1,o()})},s=()=>{let e=n;n=[],e.forEach(e=>e.resolve({ok:!1,error:{code:`cancelled`}})),a()};return{readDetailed:()=>ZR(e),read:()=>QR(e),persist:e=>{if(!t)return Promise.resolve({ok:!1,error:{code:`cancelled`}});let r=GR(e);if(r.status===`corrupt`||r.issues.length)return Promise.resolve({ok:!1,error:{code:`corrupt`}});let i=jR(r.snapshot);return new Promise(e=>{n.push({snapshot:i,resolve:e}),o()})},flush:()=>!r&&n.length===0?Promise.resolve():new Promise(e=>i.add(e)),setEnabled:async e=>{t=e,t||s(),await(!r&&n.length===0?Promise.resolve():new Promise(e=>i.add(e)))},cancelPending:s}},tz=ER.string,nz=ER.dataURL,rz=ER.bytes,iz=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,az=(e,t,n=!1)=>typeof e==`string`&&e.length<=tz&&(n||e.length>0)?e:t,oz=(e,t=0)=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0?e:t,sz=(e,t)=>NR(e)===NR(t),cz=(e,t,n,r)=>({scopeKey:e,queueItemID:t,path:n,reason:r}),lz=async(e,t)=>{let n=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(t));return`${e}-${[...new Uint8Array(n)].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`},uz=e=>typeof e==`string`&&e.length>0&&e.length<=tz,dz=e=>PR(e)??(uz(e)?{state:`unbound-legacy`,sessionID:e}:void 0),fz=e=>{if(iz(e)){if(e.state===`bound`&&uz(e.transportIdentity)&&uz(e.directory)&&uz(e.sessionID))return{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID};if(e.state===`unbound-legacy`&&uz(e.sessionID))return{state:`unbound-legacy`,sessionID:e.sessionID}}},pz=e=>{if(e.length>nz)return;let t=/^data:([^,]*),(.*)$/s.exec(e);if(!t)return;let n=t[1].split(`;`),r=n.at(-1)?.toLowerCase()===`base64`,i=(r?n.slice(0,-1):n).join(`;`)||`application/octet-stream`,a=t[2];try{let e;if(r){if(!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(a))return;let t=atob(a);if(t.length>rz)return;e=Uint8Array.from(t,e=>e.charCodeAt(0))}else if(e=new TextEncoder().encode(decodeURIComponent(a)),e.byteLength>rz)return;let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),new Blob([t],{type:i})}catch{return}},mz=e=>iz(e)&&uz(e.providerID)&&uz(e.modelID)&&(e.agent===void 0||uz(e.agent))&&(e.variant===void 0||uz(e.variant))?{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}:void 0,hz=async(e,t)=>{let n=await ZR(e);if(!n.ok)return{status:`failed`,error:n.error,issues:[],cleanupErrors:[]};if(n.value.status===`ok`){let e=n.value.snapshot;return e.migration.v3State===`degraded`?{status:`degraded`,snapshot:e,issues:[cz(``,``,`$.migration.v3State`,`existing-degraded`)],cleanupErrors:[]}:{status:`committed`,snapshot:e,issues:[],cleanupErrors:[]}}if(n.value.status===`partial`||n.value.status===`corrupt`)return{status:`recovery-required`,issues:n.value.issues.map(e=>cz(e.scopeKey??``,e.queueItemID??``,e.path,e.reason)),cleanupErrors:[]};let r=await e.read(TR);if(!r.ok)return{status:`failed`,error:r.error,issues:[],cleanupErrors:[]};let i=[],a=[],o=[],s=async()=>{for(let e of o.reverse()){let n=await t.releaseIfMatches(e.reference,e.blobID);n.ok||a.push({...e.issue,reason:`rollback-${n.error.code}`})}};if(r.value===null){let t={...FR(),migration:{v3State:`complete`}},n=await $R(e,t);return n.ok?{status:`committed`,snapshot:t,issues:i,cleanupErrors:a}:{status:`failed`,error:n.error,issues:i,cleanupErrors:a}}let c;try{c=JSON.parse(r.value)}catch{return{status:`failed`,error:{code:`corrupt`},issues:[cz(``,``,`$`,`legacy-json`)],cleanupErrors:a}}let l=iz(c)&&iz(c.state)?c.state.queuedMessages:iz(c)?c.queuedMessages:void 0;if(!iz(l))return{status:`failed`,error:{code:`corrupt`},issues:[cz(``,``,`$.state.queuedMessages`,`legacy-state`)],cleanupErrors:a};let u={...FR(),migration:{v3State:`complete`}},d=new Set,f=new Set,p=new Set,m=0,h=Object.entries(l);for(let e=0;e<h.length;e++){let[n,r]=h[e];if(e>=ER.scopes){i.push(cz(n,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-scope-limit`));break}let c=dz(n),l=c?NR(c):n;if(!c||!Array.isArray(r)){i.push(cz(l,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-queue`));continue}for(let e=0;e<r.length;e++){if(m>=ER.totalItems){i.push(cz(l,``,`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,`legacy-item-limit`));break}m++;let h=`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,g=iz(r[e])?r[e]:void 0;if(!g||typeof g.content!=`string`||g.content.length>131072){i.push(cz(l,``,h,`legacy-item`));continue}let _=fz(g.owner);if(g.owner!==void 0&&(!_||!sz(c,_))){i.push(cz(l,uz(g.queueItemID)?g.queueItemID:``,h,`owner-conflict`));continue}let v=JSON.stringify([n,e,g.content]),y=uz(g.queueItemID)?g.queueItemID:uz(g.id)?g.id:await lz(`queue`,v),b=uz(g.operationID)?g.operationID:await lz(`operation`,`${v}:operation`),x=uz(g.messageID)?g.messageID:await lz(`message`,`${v}:message`);if(d.has(y)||f.has(b)||p.has(x)){i.push(cz(l,y,h,`duplicate-id`));continue}d.add(y),f.add(b),p.add(x);let S=[],C=[],w=new Set,T=Array.isArray(g.attachments)?g.attachments:[];g.attachments!==void 0&&!Array.isArray(g.attachments)&&i.push(cz(l,y,`${h}.attachments`,`legacy-attachments`));for(let e=0;e<T.length&&e<ER.attachmentsPerItem;e++){let n=iz(T[e])?T[e]:void 0,r=`${h}.attachments[${e}]`;if(!n){i.push(cz(l,y,r,`legacy-attachment`));continue}let u=uz(n.id)?n.id:await lz(`attachment`,`${v}:attachment:${e}`),d=ce(u),f=az(n.filename,u),p=az(n.mimeType,``,!0),m=oz(n.size);if(w.has(d)){i.push(cz(l,y,r,`duplicate-attachment-occurrence`));continue}w.add(d);let g=n.source===`local`?n.serverPath===void 0&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`server`?uz(n.serverPath)&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`vscode`&&uz(n.vscodePath)&&(n.vscodeSource===`file`||n.vscodeSource===`selection`)&&n.serverPath===void 0,_=g?n.source:`local`,b=_===`server`?n.serverPath:void 0,x=_===`vscode`?n.vscodePath:void 0,E=_===`vscode`?n.vscodeSource:void 0,D={attachmentID:u,occurrenceRefID:d,filename:f,mimeType:p,size:m,source:_,...b?{serverPath:b}:{},...x?{vscodePath:x}:{},...E?{vscodeSource:E}:{}},O=e=>{C.push({...D,reason:e}),i.push(cz(l,y,r,e))};if(c.state===`unbound-legacy`){O(`legacy-unbound-data`);continue}if(!g){i.push(cz(l,y,r,n.source===`server`?`server-metadata`:n.source===`vscode`?`vscode-metadata`:`attachment-source`)),O(`legacy-bytes-missing`);continue}let k=typeof n.dataUrl==`string`?n.dataUrl:``;if(je(k)){S.push({version:1,...D,locator:{kind:`url`,url:k}});continue}if(k.startsWith(`blob:`)){O(`legacy-blob-url`);continue}if(!k.startsWith(`data:`)){O(`legacy-bytes-missing`);continue}let A=pz(k);if(!A){O(`legacy-bytes-missing`);continue}let ee=await lz(`legacy-blob`,`${y}:${u}`),j={transportIdentity:c.transportIdentity,owner:{kind:`queue`,ownerID:y},attachmentOccurrenceRefID:d},te=await t.readReference(j);if(!te.ok||te.value!==void 0&&te.value!==ee||!(await t.putAndRetain(j,ee,A)).ok)return await s(),{status:`failed`,error:{code:`unavailable`},issues:i,cleanupErrors:a};te.value===void 0&&o.push({reference:j,blobID:ee,issue:cz(l,y,r,`blob-retain`)}),S.push({version:1,...D,mimeType:A.type,size:A.size,locator:{kind:`blob`,blobID:ee}})}T.length>ER.attachmentsPerItem&&i.push(cz(l,y,`${h}.attachments`,`legacy-attachment-limit`));let D=oz(g.createdAt),O=typeof g.status==`string`?g.status:`queued`,k=iz(g.failure)?g.failure.kind:g.failureKind,A=k===`pre-dispatch`||k===`ambiguous-dispatch`||k===`definitive`?k:void 0,ee=O===`retrying`||A===`pre-dispatch`,j=O===`sending`||O===`reconciling`||A===`ambiguous-dispatch`,M=O===`unresolved`&&C.length===0,ne=C.length>0,re=oz(g.reconciliationStartedAt,D),N=oz(g.reconciliationDeadlineAt,-1),ie=re>2**53-1-3e4?re:re+3e4,ae=Math.max(re,N>=0?N:ie),se=oz(g.reconciliationChecks),P=oz(g.reconciliationNextCheckAt,re);j&&N<0&&re>2**53-1-3e4&&i.push(cz(l,y,`${h}.reconciliationDeadlineAt`,`reconciliation-deadline-overflow`));let le=ne||M||c.state===`unbound-legacy`&&j?`unresolved`:ee?`retrying`:j?`reconciling`:O===`failed`||A===`definitive`?`failed`:`queued`,ue=le===`reconciling`||le===`unresolved`&&!ne,de=iz(g.composerDocument)&&typeof g.composerDocument.text==`string`?E(g.composerDocument.text,g.composerDocument.references):void 0,F=de&&te(de,`queue-canonical`);g.composerDocument!==void 0&&(!F||!F.ok||F.text!==g.content)&&i.push(cz(l,y,`${h}.composerDocument`,`degraded-composer-document`));let fe=F&&F.ok&&F.text===g.content?de:void 0,pe=fe?oe(fe.text,g.composerMentions):void 0,I=pe&&!pe.some(e=>fe.references.some(t=>e.range.start<t.end&&t.start<e.range.end));g.composerMentions!==void 0&&!I&&i.push(cz(l,y,`${h}.composerMentions`,`degraded-composer-mentions`));let L={version:1,queueItemID:y,operationID:b,messageID:x,owner:c,content:g.content,...fe?{composerDocument:fe}:{},...I&&pe.length?{composerMentions:pe}:{},attachments:S,attachmentIssues:C,createdAt:D,...mz(g.sendConfig)?{sendConfig:mz(g.sendConfig)}:{},status:le,attemptCount:oz(g.attemptCount),...le===`retrying`?{nextAttemptAt:oz(g.nextAttemptAt,D),failureKind:`pre-dispatch`}:ue?{reconciliationStartedAt:re,reconciliationDeadlineAt:ae,reconciliationChecks:se,reconciliationNextCheckAt:P,failureKind:`ambiguous-dispatch`}:le===`failed`?{failureKind:`definitive`}:{}};(u.queues[l]??=[]).push(L)}}i.length&&(u.migration.v3State=`degraded`);let g=await $R(e,u);return g.ok?{status:u.migration.v3State===`complete`?`committed`:`degraded`,snapshot:u,issues:i,cleanupErrors:a}:(await s(),{status:`failed`,error:g.error,issues:i,cleanupErrors:a})},gz=(e,t)=>JSON.stringify(e)===JSON.stringify(t),_z=(e,t=[])=>({status:e,errors:t,cleanupErrors:[]}),vz=e=>e.status===`sending`||e.status===`reconciling`,yz=(e,t,n={})=>{let r={hydration:`idle`,snapshot:FR(),issues:[],enabled:n.enabled??!0},i,a=Promise.resolve(),o=new Set,s=e=>{r=e,o.forEach(e=>e())},c=e=>{let t={};for(let[n,i]of Object.entries(e.queues))t[n]=gz(r.snapshot.queues[n],i)?r.snapshot.queues[n]:i;let n=gz(r.snapshot.queues,t)&&gz(r.snapshot.migration,e.migration)?r.snapshot:{...e,queues:t};s({...r,snapshot:n})},l=e=>{let t=a.then(e,e);return a=t.then(()=>void 0,()=>void 0),t},u=e=>{let t=r.snapshot.queues[e.scopeKey]?.find(t=>t.queueItemID===e.queueItemID&&t.operationID===e.operationID&&t.messageID===e.messageID);return t&&NR(t.owner)===e.scopeKey?t:void 0},d=()=>r.hydration===`idle`||r.hydration===`hydrating`?_z(`unseeded`):r.hydration===`recovery-required`?_z(`recovery-required`,[...r.issues]):r.hydration===`failed`?_z(`failed`,[...r.issues]):void 0,f=async t=>{let n=r.snapshot,i=await t();return i.status===`committed`&&c(e.getSnapshot()),i.status===`committed`&&i.current===!1?{...i,status:`stale`}:(i.status!==`committed`&&r.snapshot!==n&&s({...r,snapshot:n}),i)},p=()=>t(),m=(e,t)=>e.owner.state!==`bound`||e.owner.transportIdentity===t.transportIdentity,h=new Map,g=e=>`${e.scopeKey}\u0000${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,_=e=>h.has(g(e)),v=()=>_z(`failed`,[{phase:`identity`,code:`reserved`}]),y=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,b=async()=>{for(let[t,n]of h){let[,r,i,a]=t.split(`\0`);try{(await e.releaseSend({queueItemID:r,operationID:i,messageID:a},n.token,n.runtime)).status!==`stale`&&h.delete(t)}catch{h.delete(t)}}};return{subscribe:e=>(o.add(e),()=>o.delete(e)),getState:()=>r,captureRuntime:p,hydrate:t=>i??=l(async()=>{await b(),s({...r,hydration:`hydrating`});let n=await e.hydrate(t),i=n.errors.map(e=>({phase:e.phase,code:e.code,scopeKey:e.scopeKey,path:e.path})),a=n.status===`committed`||n.status===`disabled`?`ready`:n.status===`recovery-required`?`recovery-required`:`failed`;return c(e.getSnapshot()),s({...r,hydration:a,issues:i,enabled:r.enabled}),n}).finally(()=>{i=void 0}),flush:()=>l(()=>e.flush()),setEnabled:t=>l(async()=>{t||await b(),await e.setEnabled(t),s({...r,enabled:t})}),admit:(t,n,r=p())=>l(async()=>d()||(m(t,r)?f(()=>e.admit(t,r,n)):_z(`stale`))),materializeForEdit:(t,n=p())=>l(async()=>{let r=d(),i=u(t);if(r)return r;if(!i||!m(i,n))return _z(`stale`);if(vz(i))return _z(`failed`,[{phase:`identity`,code:`locked`}]);if(_(t))return v();let a=await e.acquireSendPayload(t,n);return a.status!==`committed`||!a.token?a.status===`committed`?_z(`failed`,[{phase:`identity`,code:`missing-send-token`}]):a:(h.set(g(t),{token:a.token,runtime:n}),{...a,item:JSON.parse(JSON.stringify(i)),values:a.values?.map(({attachment:e,value:t})=>({attachment:JSON.parse(JSON.stringify(e)),value:t}))})}),releaseEditReservation:(t,n,r=p())=>l(async()=>{let i=g(t),a=h.get(i);if(!a||a.token!==n||!y(a.runtime,r))return _z(`stale`);try{let a=await e.releaseSend(t,n,r);return a.status!==`stale`&&h.delete(i),a}catch{return h.delete(i),_z(`failed`,[{phase:`runtime`,code:`reservation-release-threw`}])}}),removeEditReservation:(t,n,i=p())=>l(async()=>{let a=g(t),o=h.get(a),l=d(),f=u(t);if(l)return{...l,durableRemoval:!1};if(!o||o.token!==n||!y(o.runtime,i)||!f||!m(f,i))return{..._z(`stale`),durableRemoval:!1};if(vz(f))return{..._z(`failed`,[{phase:`identity`,code:`locked`}]),durableRemoval:!1};let p=r.snapshot,_=await e.remove(t,i),v=_.status===`committed`;return v&&(h.delete(a),c(e.getSnapshot())),v&&_.current===!1?{..._,status:`stale`,durableRemoval:v}:(!v&&r.snapshot!==p&&s({...r,snapshot:p}),{..._,durableRemoval:v})}),remove:(t,n=p())=>l(async()=>{let i=d(),a=u(t);if(i)return{...i,durableRemoval:!1};if(!a||!m(a,n))return{..._z(`stale`),durableRemoval:!1};if(_(t))return{...v(),durableRemoval:!1};if(vz(a))return{..._z(`failed`,[{phase:`identity`,code:`locked`}]),durableRemoval:!1};let o=r.snapshot,l=await e.remove(t,n),f=l.status===`committed`;return f&&c(e.getSnapshot()),f&&l.current===!1?{...l,status:`stale`,durableRemoval:f}:(!f&&r.snapshot!==o&&s({...r,snapshot:o}),{...l,durableRemoval:f})}),reorder:(t,n,i=p())=>l(async()=>{let a=d(),o=r.snapshot.queues[t];return a||(o?o.some(e=>_({scopeKey:t,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}))?v():o.some(e=>vz(e)||!m(e,i))?_z(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.reorder(t,n,i)):_z(`failed`,[{phase:`identity`,code:`locked`}]))}),bind:(t,n,r=p())=>l(async()=>{let i=d(),a=u(t);return i||(!a||n.transportIdentity!==r.transportIdentity||!m(a,r)?_z(`stale`):_(t)?v():vz(a)?_z(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.bind(t,n,r)))}),bindMany:(t,n,r=p())=>l(async()=>{let i=d(),a=t.map(u);return i||(t.some(_)?v():!a.length||a.some(e=>!e||vz(e)||!m(e,r))||n.transportIdentity!==r.transportIdentity?_z(`stale`):f(()=>e.bindMany(t,n,r)))}),transition:(t,n,r,i=p())=>l(async()=>{let a=d(),o=u(t);return a||(!o||!m(o,i)?_z(`stale`):_(t)?_z(`failed`,[{phase:`identity`,code:`reserved`}]):(Array.isArray(n)?n:[n]).includes(o.status)?f(()=>e.transition(t,r,i)):_z(`stale`))}),confirm:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?_z(`stale`):_(t)?_z(`failed`,[{phase:`identity`,code:`reserved`}]):f(()=>e.remove(t,n)))}),acquireSendPayload:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?_z(`stale`):_(t)?_z(`failed`,[{phase:`identity`,code:`reserved`}]):e.acquireSendPayload(t,n))}),releaseSend:(t,n,r=p())=>l(async()=>e.releaseSend(t,n,r))}},bz=e=>JSON.parse(JSON.stringify(e)),Q=(e,t=[],n=[],r)=>({status:e,...r===void 0?{}:{current:r},errors:t,cleanupErrors:n}),xz=(e,t)=>e.queueItemID===t.queueItemID&&e.operationID===t.operationID&&e.messageID===t.messageID,Sz=(e,t,n)=>e.owner.state===`bound`?{transportIdentity:e.owner.transportIdentity,owner:{kind:t,ownerID:t===`queue`?e.queueItemID:e.operationID},attachmentOccurrenceRefID:n}:void 0,Cz=e=>JSON.stringify(e),wz=e=>({owner:e.owner,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,composerDocument:e.composerDocument,composerMentions:e.composerMentions,attachments:e.attachments,attachmentIssues:e.attachmentIssues,createdAt:e.createdAt,sendConfig:e.sendConfig}),Tz=e=>`${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,Ez=e=>typeof e==`number`&&Number.isSafeInteger(e),Dz=(e,t)=>{if(Cz(wz(e))!==Cz(wz(t))||!Ez(t.attemptCount)||t.attemptCount<e.attemptCount)return!1;let n=`${e.status}:${t.status}`;return!(![`queued:sending`,`retrying:sending`,`sending:retrying`,`sending:reconciling`,`sending:failed`,`reconciling:reconciling`,`reconciling:unresolved`].includes(n)||t.status===`sending`&&t.attemptCount!==e.attemptCount+1||t.status!==`sending`&&t.attemptCount!==e.attemptCount||[t.reconciliationStartedAt,t.reconciliationDeadlineAt,t.reconciliationChecks,t.reconciliationNextCheckAt].some(e=>e!==void 0&&!Ez(e))||e.status===`reconciling`&&t.status===`reconciling`&&(t.reconciliationStartedAt!==e.reconciliationStartedAt||t.reconciliationDeadlineAt!==e.reconciliationDeadlineAt||(t.reconciliationChecks??0)<(e.reconciliationChecks??0)))},Oz=e=>{if(!e.composerDocument)return!0;let t=new Set(e.composerDocument?ue(e.composerDocument).flatMap(e=>e.type===`attachment`?[e.attachmentRefID]:[]):[]),n=new Set(e.attachments.map(e=>e.occurrenceRefID));return[...t].every(e=>n.has(e))},kz=(e,t,n={})=>{let r=FR(),i=!1,a=n.enabled??!0,o=0,s=!1,c=!1,l=Promise.resolve(),u=new Map,d=new Map,f=new Map,p=0n,m=e=>{let t=l.then(e,e);return l=t.then(()=>void 0,()=>void 0),t},h=()=>Object.values(r.queues).flat(),g=e=>h().find(t=>xz(t,e)),_=(e,t,n,r,i)=>({phase:e,code:t,...n?{scopeKey:NR(n.owner),queueItemID:n.queueItemID,operationID:n.operationID}:{},...r?{attachmentID:r.attachmentID,occurrenceRefID:r.occurrenceRefID}:{},...i?{path:i}:{}}),v=(e,t)=>e.attachments.flatMap(n=>n.locator.kind===`blob`?(()=>{let r=Sz(e,t,n.occurrenceRefID);return r?[{reference:r,blobID:n.locator.blobID,attachment:n,item:e}]:[]})():[]),y=(e,t)=>({transportIdentity:e.transportIdentity,generation:e.generation,enableGeneration:o,identity:{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID}}),b=(e,t)=>e.owner.state!==`bound`||e.owner.transportIdentity===t.transportIdentity,x=async(e,t)=>{if(!a||t.enableGeneration!==o||e.transportIdentity!==t.transportIdentity||e.generation!==t.generation||!await e.isCurrent())return!1;let n=await e.current?.();return n===void 0||n.transportIdentity===t.transportIdentity&&n.generation===t.generation},S=()=>Q(a?`stale`:`disabled`,[],[],!1),C=()=>Q(`recovery-required`,[_(`metadata`,`recovery-required`)]),w=async(t,n)=>{let r=await e.releaseIfMatches(t.reference,t.blobID);r.ok||(u.set(Me(t.reference),t),n.push(_(`blob`,r.error.code,t.item,t.attachment)))},T=async e=>{let t=[];for(let n of[...e].reverse())await w(n,t);return t},E=()=>{let e=new Map;for(let t of h())for(let n of v(t,`queue`))e.set(Me(n.reference),n.blobID);return e},D=(e,t,n=E())=>n.get(e)===t.blobID||d.get(e)?.blobID===t.blobID,O=async(e,n,i)=>{if(!await x(n,i))return{committed:!1,current:!1};let a=await t.persist(e);return a.ok?(r=e,{committed:!0,current:await x(n,i)}):{committed:!1,current:!0,error:_(`metadata`,a.error.code)}},k=async(t=!1)=>{if(!i)return Q(`unseeded`);if(!a)return Q(`disabled`);if(c||s)return C();let n=E(),r=t?new Map:new Map([...d].map(([e,t])=>[e,t.blobID])),o=new Map;for(let e of h())for(let t of v(e,`queue`))o.set(Me(t.reference),t);let l=new Map(d),u=[];if(!s){let t=await e.reconcileReferences(n,{ownerKinds:[`queue`]});if(!t.ok)u.push(_(`blob`,t.error.code));else for(let e of t.value.missing){let t=o.get(e);u.push(_(`blob`,`missing-blob`,t?.item,t?.attachment,e))}}let f=await e.reconcileReferences(r,{ownerKinds:[`send`]});if(!f.ok)u.push(_(`blob`,f.error.code));else for(let e of f.value.missing){let t=l.get(e);u.push(_(`blob`,`missing-blob`,t?.item,t?.attachment,e))}return Q(u.length?`failed`:`committed`,u)};return{hydrate:e=>m(async()=>{let n=e===void 0?t.readDetailed?await t.readDetailed():t.read?await t.read().then(e=>e.ok?{ok:!0,value:e.value===null?{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}:{raw:null,snapshot:e.value,status:`ok`,issues:[],degradedScopeKeys:[]}}:e):void 0:void 0;if(n&&!n.ok)return Q(`failed`,[_(`metadata`,n.error.code)]);let o=n?.value??e,l=o&&`status`in o?o:void 0,u=l?.snapshot??(o&&!(`status`in o)?o:null);if(l?.snapshot===null&&l.raw!==null)try{u=JSON.parse(l.raw)}catch{u=null}let p=u?GR(u,{normalizeSending:!0}):{status:`ok`,snapshot:FR(),issues:[],degradedScopeKeys:[]},m=l?.issues??p.issues;i=!0;let h=l?.status===`corrupt`||p.status===`corrupt`,g=l?.status===`partial`||m.length>0;return d.clear(),f.clear(),h?(c=!0,s=!0,Q(`recovery-required`,m.map(e=>({phase:`metadata`,code:e.reason,...e})))):(r=p.snapshot,c=g,s=g,g?Q(`recovery-required`,m.map(e=>({phase:`metadata`,code:e.reason,...e}))):a?k(!0):Q(`disabled`,m.map(e=>({phase:`metadata`,code:e.reason,...e}))))}),getSnapshot:()=>bz(r),admit:(t,n,o)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();if(!b(t,n))return S();let s=NR(t.owner),l=bz(r);l.queues[s]=[...l.queues[s]??[],t];let d=GR(l);if(!Oz(t))return Q(`failed`,[_(`identity`,`composer-attachment-mismatch`,t)]);if(d.status===`corrupt`||d.issues.length)return Q(`failed`,d.issues.map(e=>({phase:`identity`,code:e.reason,...e})));let f=y(n,t);if(!await x(n,f))return S();let p=[];for(let r of v(t,`queue`)){if(!await x(n,f))return{...S(),cleanupErrors:await T(p)};let i=await e.readReference(r.reference);if(!i.ok)return Q(`failed`,[_(`blob`,i.error.code,t,r.attachment)],await T(p));if(i.value&&i.value!==r.blobID)return Q(`failed`,[_(`blob`,`blob-id-conflict`,t,r.attachment)],await T(p));if(i.value===r.blobID){let n=await e.read(r.blobID);if(n.ok)continue;if(n.error.code!==`missing-blob`)return Q(`failed`,[_(`blob`,n.error.code,t,r.attachment)],await T(p));let i=await o?.(r.attachment);if(i===void 0)return Q(`failed`,[_(`blob`,`missing-blob`,t,r.attachment)],await T(p));let a=await e.putAndRetain(r.reference,r.blobID,i);if(!a.ok)return Q(`failed`,[_(`blob`,a.error.code,t,r.attachment)],await T(p));continue}let a=await e.read(r.blobID),s=a.ok?await e.retain(r.reference,r.blobID):a.error.code===`missing-blob`?await(async()=>{let t=await o?.(r.attachment);return t===void 0?{ok:!1,error:{code:`missing-blob`}}:e.putAndRetain(r.reference,r.blobID,t)})():a;if(!s.ok)return Q(`failed`,[_(`blob`,s.error.code,t,r.attachment)],await T(p));p.push(r)}let m=await O(d.snapshot,n,f);if(!m.committed)return m.error?Q(`failed`,[m.error],await T(p)):{...S(),cleanupErrors:await T(p)};for(let e of v(t,`queue`))u.delete(Me(e.reference));return Q(`committed`,[],[],m.current)}),transition:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=g(e);if(!o||!b(o,n))return S();let s=y(n,o);if(!await x(n,s))return S();let l=t(bz(o)),u=bz(r),d=NR(o.owner);u.queues[d]=u.queues[d].map(t=>xz(t,e)?l:t);let f=GR(u);if(!xz(l,e)||!Dz(o,l)||f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-transition`,o)]);let p=await O(f.snapshot,n,s);return p.committed?Q(`committed`,[],[],p.current):p.error?Q(`failed`,[p.error]):S()}),reorder:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=r.queues[e];if(!o||o.length!==t.length||new Set(t).size!==o.length||o.some(e=>!t.includes(e.queueItemID)))return Q(`failed`,[_(`identity`,`invalid-reorder`)]);if(o.some(e=>!b(e,n)))return S();let s=y(n,o[0]);if(!await x(n,s))return S();let l=new Map(o.map(e=>[e.queueItemID,e])),u=bz(r);u.queues[e]=t.map(e=>l.get(e));let d=await O(u,n,s);return d.committed?Q(`committed`,[],[],d.current):d.error?Q(`failed`,[d.error]):S()}),bind:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=g(e);if(!o)return Q(`failed`,[_(`identity`,`invalid-bind`)]);if(!b(o,n)||t.transportIdentity!==n.transportIdentity)return S();if(o.owner.state!==`unbound-legacy`||o.attachments.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let s=NR(o.owner),l=r.queues[s];if(!l||l.length!==1||!xz(l[0],e)||l[0].owner.state!==`unbound-legacy`||l[0].attachments.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let u=y(n,o);if(!await x(n,u))return S();let d={...bz(o),owner:t},f=GR({version:4,queues:{[NR(t)]:[d]},migration:r.migration});if(f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let p=bz(r),m=s,h=NR(t);p.queues[m]=p.queues[m].filter(t=>!xz(t,e)),p.queues[m].length||delete p.queues[m],p.queues[h]=[d,...p.queues[h]??[]];let v=GR(p);if(v.status===`corrupt`||v.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let w=await O(v.snapshot,n,u);return w.committed?Q(`committed`,[],[],w.current):w.error?Q(`failed`,[w.error]):S()}),bindMany:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=e.map(g);if(!o.length||o.some(e=>!e||!b(e,n)||e.owner.state!==`unbound-legacy`)||t.transportIdentity!==n.transportIdentity)return S();let s=o[0].owner,l=r.queues[NR(s)];if(!l||l.length!==e.length||o.some(e=>Cz(e.owner)!==Cz(s)||e.attachments.length)||l.some((t,n)=>!xz(t,e[n])))return Q(`failed`,[_(`identity`,`invalid-bind`)]);let u=y(n,o[0]);if(!await x(n,u))return S();let d=o,f=d.map(e=>({...bz(e),owner:t})),p=bz(r),m=NR(s),h=NR(t);p.queues[m]=p.queues[m].filter(e=>!d.some(t=>xz(e,t))),p.queues[m].length||delete p.queues[m],p.queues[h]=[...f,...p.queues[h]??[]];let v=GR(p);if(v.status===`corrupt`||v.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`)]);let w=await O(v.snapshot,n,u);return w.committed?Q(`committed`,[],[],w.current):w.error?Q(`failed`,[w.error]):S()}),acquireSendPayload:(t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let r=g(t);if(!r||!b(r,n))return S();if(f.has(Tz(t)))return Q(`failed`,[_(`identity`,`active-send`,r)]);let o=y(n,r);if(!await x(n,o))return S();let s=[],l=[];for(let t of r.attachments){if(!await x(n,o))return{...S(),cleanupErrors:await T(s)};if(t.locator.kind===`url`){l.push({attachment:t,value:t.locator.url});continue}let i=v(r,`send`).find(e=>e.attachment.occurrenceRefID===t.occurrenceRefID),a=await e.readReference(i.reference);if(!a.ok||a.value&&a.value!==i.blobID)return Q(`failed`,[_(`blob`,a.ok?`blob-id-conflict`:a.error.code,r,t)],await T(s));if(a.value!==i.blobID){let n=await e.retain(i.reference,i.blobID);if(!n.ok)return Q(`failed`,[_(`blob`,n.error.code,r,t)],await T(s));s.push(i)}let c=await e.read(i.blobID);if(!c.ok)return Q(`failed`,[_(`blob`,c.error.code,r,t)],await T(s));l.push({attachment:t,value:c.value})}if(!await x(n,o))return{...S(),cleanupErrors:await T(s)};let u=v(r,`send`),m=`${++p}`;for(let e of u)d.set(Me(e.reference),e);return f.set(Tz(t),{token:m,identity:t,held:u}),{...Q(`committed`,[],[],!0),token:m,values:l}}),releaseSend:(e,t)=>m(async()=>{let n=f.get(Tz(e));if(typeof t!=`string`||!n||n.token!==t)return Q(`stale`);f.delete(Tz(e));let r=[];for(let e of n.held)d.delete(Me(e.reference)),await w(e,r);return Q(r.length?`failed`:`committed`,[],r,!0)}),remove:(e,t)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let n=g(e);if(!n||!b(n,t))return S();let o=y(t,n);if(!await x(t,o))return S();let s=bz(r);for(let[t,n]of Object.entries(s.queues)){let r=n.filter(t=>!xz(t,e));r.length?s.queues[t]=r:delete s.queues[t]}let l=await O(s,t,o);if(!l.committed)return l.error?Q(`failed`,[l.error]):S();let u=f.get(Tz(e));f.delete(Tz(e));let p=[];for(let e of v(n,`queue`))await w(e,p);for(let e of u?.held??v(n,`send`))d.delete(Me(e.reference)),await w(e,p);return Q(`committed`,[],p,l.current)}),reconcile:()=>m(()=>k(!1)),retryCleanup:()=>m(async()=>{if(!a)return Q(`disabled`);if(c||s)return C();let t=[],n=E();for(let[r,i]of u){if(D(r,i,n)){u.delete(r);continue}let a=await e.releaseIfMatches(i.reference,i.blobID);a.ok?u.delete(r):t.push(_(`blob`,a.error.code,i.item,i.attachment))}return Q(t.length?`failed`:`committed`,[],t)}),flush:()=>l.then(()=>t.flush()),setEnabled:async e=>{a=e,o++,t.cancelPending(),await t.setEnabled(e),await l}}},Az=()=>{let e=XR(),t=ez(e),n=Ma();return{controller:yz(kz(n,t),()=>{let e=u(),t=f();return{transportIdentity:e,generation:t,isCurrent:()=>u()===e&&f()===t}}),migrate:async()=>hz(e,n)}},jz=(e=Az)=>{let t,n,r=()=>(t??=e()).controller;return{subscribe:e=>r().subscribe(e),getState:()=>r().getState(),captureRuntime:()=>r().captureRuntime(),hydrate:r=>n??=(async()=>{let n=t??=e();if(r!==void 0)return n.controller.hydrate(r);let i=await n.migrate();return i.status===`committed`?n.controller.hydrate(i.snapshot):i.status===`degraded`?n.controller.hydrate({raw:null,snapshot:i.snapshot,status:`partial`,issues:i.issues??[{path:`$.migration`,reason:`degraded`}],degradedScopeKeys:[]}):n.controller.hydrate({raw:null,snapshot:null,status:`corrupt`,issues:i.issues??[{path:`$`,reason:i.status}],degradedScopeKeys:[]})})().finally(()=>{n=void 0}),flush:()=>r().flush(),setEnabled:e=>r().setEnabled(e),admit:(e,t,n)=>r().admit(e,t,n),materializeForEdit:(e,t)=>r().materializeForEdit(e,t),releaseEditReservation:(e,t,n)=>r().releaseEditReservation(e,t,n),removeEditReservation:(e,t,n)=>r().removeEditReservation(e,t,n),remove:(e,t)=>r().remove(e,t),reorder:(e,t,n)=>r().reorder(e,t,n),bind:(e,t,n)=>r().bind(e,t,n),bindMany:(e,t,n)=>r().bindMany(e,t,n),transition:(e,t,n,i)=>r().transition(e,t,n,i),confirm:(e,t)=>r().confirm(e,t),acquireSendPayload:(e,t)=>r().acquireSendPayload(e,t),releaseSend:(e,t,n)=>r().releaseSend(e,t,n)}},Mz,Nz=()=>Mz??=jz(),Pz=26214400,Fz=52428800,Iz=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),Lz=async(e,t)=>{let n=0;for(let t of e){let e=t.source===`local`?t.value.size:t.size;if(!Number.isSafeInteger(e)||e<0||e>Pz)throw RangeError(`message-queue-attachment-too-large`);n+=e}if(n>Fz)throw RangeError(`message-queue-attachments-too-large`);let r=[];for(let n of e){if(n.source===`server`){r.push({attachmentID:n.attachmentID,occurrenceRefID:n.occurrenceRefID??[`root`,n.attachmentID],filename:n.filename,mimeType:n.mimeType||`application/octet-stream`,size:n.size,source:`server`,locator:{kind:`server-path`,path:n.path}});continue}let e=await KL({signal:t});await qL(e,n.value,await Iz(n.value),t),r.push({attachmentID:n.attachmentID,occurrenceRefID:n.occurrenceRefID??[`root`,n.attachmentID],filename:n.filename,mimeType:n.mimeType||n.value.type||`application/octet-stream`,size:n.value.size,source:`local`,locator:{kind:`upload`,uploadID:e.uploadID}})}return{attachments:r,totalBytes:n}},Rz,zz=()=>{let e=`openchamber:message-queue-import-client-id`;try{let t=globalThis.localStorage,n=t.getItem(e);if(n)return n;let r=Oe();return t.setItem(e,r),r}catch{return Rz??=Oe()}},Bz={queue:void 0,capture:()=>({transportIdentity:``,generation:0}),current:()=>!0,admit:tR,create:RL,details:zL,stage:BL,seal:VL,upload:Lz,resolveURL:async(e,t)=>{let n=new URL(e);if(n.protocol!==`http:`&&n.protocol!==`https:`)throw Error(`durable-url-scheme`);let r=await fetch(e,{signal:t});if(!r.ok)throw Error(`durable-url-unavailable`);return r.blob()},existing:()=>[],refresh:async()=>{},publish:()=>{}},Vz=e=>({scopeKey:NR(e.owner),queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}),Hz=async e=>`shadow-import:${[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e)))].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`,Uz=e=>({status:e.status===`sending`?`reconciling`:e.status,attemptCount:e.attemptCount,...e.nextAttemptAt===void 0?{}:{dueAt:e.nextAttemptAt},...e.reconciliationStartedAt===void 0?{}:{reconciliationStartedAt:e.reconciliationStartedAt},...e.reconciliationDeadlineAt===void 0?{}:{reconciliationDeadlineAt:e.reconciliationDeadlineAt},...e.reconciliationChecks===void 0?{}:{reconciliationChecks:e.reconciliationChecks},...e.reconciliationNextCheckAt===void 0?{}:{reconciliationNextCheckAt:e.reconciliationNextCheckAt},...e.failureKind===void 0?{}:{failureKind:e.failureKind}}),Wz=e=>Array.isArray(e)?`[${e.map(Wz).join(`,`)}]`:e&&typeof e==`object`?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${Wz(e[t])}`).join(`,`)}}`:JSON.stringify(e),Gz=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(Wz(e))))].map(e=>e.toString(16).padStart(2,`0`)).join(``),Kz=e=>{let t={...Bz,...e},n=e.create!==void 0||e.stage!==void 0||e.seal!==void 0||e.admit===void 0,r=e=>(t.publish(e),e);return{run:async e=>{let i=t.capture(),a=new AbortController,o=e??a.signal,s=await t.queue.hydrate();if(!t.current(i))return r({status:`pending`,imported:0,total:0,issues:[`runtime-stale`],canActivate:!1});let c=t.queue.getState();if(s.status===`recovery-required`||c.hydration===`recovery-required`||c.snapshot.migration.v3State===`degraded`)return r({status:`degraded`,imported:0,total:0,issues:[`recovery-required`],canActivate:!1});if(c.hydration!==`ready`)return r({status:`error`,imported:0,total:0,issues:[`hydrate-failed`],canActivate:!1});let l=Object.entries(c.snapshot.queues).sort(([e],[t])=>e.localeCompare(t)).flatMap(([,e])=>e).filter(e=>e.owner.state===`bound`&&e.owner.transportIdentity===i.transportIdentity),u=t.queue.captureRuntime(),d=Object.values(c.snapshot.queues).flat().some(e=>e.owner.state!==`bound`),f=0,p=`prepare`;try{let e=[],a=new Map;for(let s of l){if(!t.current(i)||o.aborted)return r({status:`pending`,imported:f,total:l.length,issues:[`runtime-stale`],canActivate:!1});let c=t.existing().filter(e=>e.queueItemID===s.queueItemID||e.operationID===s.operationID||e.messageID===s.messageID);if(c.length){if(!c.some(e=>e.queueItemID===s.queueItemID&&e.operationID===s.operationID&&e.messageID===s.messageID))return r({status:`degraded`,imported:f,total:l.length,issues:[`cross-id-conflict`],canActivate:!1});f++;continue}if(s.attachments.some(e=>e.source===`vscode`))return r({status:`degraded`,imported:f,total:l.length,issues:[`vscode-attachment`],canActivate:!1});let d=s.owner;if(d.state!==`bound`)return r({status:`pending`,imported:f,total:l.length,issues:[`unbound-legacy`],canActivate:!1});p=`acquire`;let m=await t.queue.acquireSendPayload(Vz(s),u);if(m.status!==`committed`||!m.token)return r({status:`degraded`,imported:f,total:l.length,issues:[`payload-unavailable`],canActivate:!1});try{let i=new Map(m.values?.map(e=>[e.attachment.occurrenceRefID,e.value])),c=[];for(let e of s.attachments){let n=JSON.parse(e.occurrenceRefID);if(e.source===`server`&&e.serverPath){c.push({attachmentID:e.attachmentID,occurrenceRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`server-path`,path:e.serverPath}});continue}let a=i.get(e.occurrenceRefID),s=typeof a==`string`?await t.resolveURL(a,o):a??(e.locator.kind===`url`?await t.resolveURL(e.locator.url,o):void 0);if(!s||typeof s!=`object`||typeof s.arrayBuffer!=`function`||s.size!==e.size||s.type&&s.type!==e.mimeType)return r({status:`degraded`,imported:f,total:l.length,issues:[`attachment-bytes-unavailable`],canActivate:!1});p=`upload`;let u=await t.upload([{attachmentID:e.attachmentID,occurrenceRefID:n,filename:e.filename,mimeType:e.mimeType,source:`local`,value:s}],o);c.push(u.attachments[0])}let u=`${d.directory}\u0000${d.sessionID}`,h=a.get(u)??a.size;a.set(u,h);let g=e.filter(e=>e.scopeOrdinal===h).length,_={scope:{directory:d.directory,sessionID:d.sessionID},item:{queueItemID:s.queueItemID,operationID:s.operationID,messageID:s.messageID,content:s.content,...s.composerDocument?{composerDocument:s.composerDocument}:{},...s.composerMentions?{composerMentions:s.composerMentions}:{},...s.sendConfig?{sendConfig:s.sendConfig}:{},attachments:c,attachmentIssues:s.attachmentIssues,createdAt:s.createdAt,migrationImport:!0,migrationState:Uz(s)}};n||(p=`admit`,await t.admit({requestID:await Hz(s.operationID),..._,signal:o})),e.push({item:s,scopeOrdinal:h,itemOrdinal:g,payload:_,payloadHash:await Gz(_)}),f++}finally{await t.queue.releaseSend(Vz(s),m.token,u)}}if(!n){p=`refresh`,await t.refresh();let e=l.every(e=>t.existing().some(t=>t.queueItemID===e.queueItemID&&t.operationID===e.operationID&&t.messageID===e.messageID));return r({status:d?`pending`:e?`complete`:`error`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:e?[]:[`catalog-incomplete`],canActivate:e&&!d})}let s=await Gz(e.map(({item:e,scopeOrdinal:t,itemOrdinal:n})=>({scopeOrdinal:t,itemOrdinal:n,owner:e.owner,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,composerDocument:e.composerDocument,composerMentions:e.composerMentions,sendConfig:e.sendConfig,attachments:e.attachments.map(({attachmentID:e,occurrenceRefID:t,filename:n,mimeType:r,size:i,source:a,serverPath:o})=>({attachmentID:e,occurrenceRefID:t,filename:n,mimeType:r,size:i,source:a,serverPath:o})),attachmentIssues:e.attachmentIssues,createdAt:e.createdAt,status:e.status,attemptCount:e.attemptCount})));p=`create`;let c=t.kind??`activation`,m=zz(),h=t.authorityGeneration?.()??i.generation,g=await t.create({requestID:`shadow-create:${c}:${h}:${m}:${s}`,kind:c,clientID:m,snapshotHash:s,itemCount:e.length,protocol:4,expectedGeneration:h,signal:o});if(g.state===`committed`)return r({status:d?`pending`:`complete`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:[],canActivate:!d,importID:g.importID,manifestHash:g.manifestHash,activationEpoch:g.commit?.activationEpoch});let _=await t.details(g.importID,o);if(_.state===`committed`)return r({status:d?`pending`:`complete`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:[],canActivate:!d,importID:g.importID,manifestHash:_.manifestHash,activationEpoch:_.commit?.activationEpoch});let v=new Set(_.staged.map(e=>`${e.scopeOrdinal}:${e.itemOrdinal}`));if(p=`stage`,_.state===`staging`){for(let n of e)if(!v.has(`${n.scopeOrdinal}:${n.itemOrdinal}`)){if(!t.current(i))return r({status:`pending`,imported:f,total:l.length,issues:[`runtime-stale`],canActivate:!1});await t.stage(g.importID,{requestID:`shadow-stage:${g.importID}:${n.scopeOrdinal}:${n.itemOrdinal}:${n.payloadHash}`,scopeOrdinal:n.scopeOrdinal,itemOrdinal:n.itemOrdinal,payload:n.payload,payloadHash:n.payloadHash,signal:o})}}p=`seal`;let y=_.state===`sealed`?{manifestHash:_.manifestHash}:await t.seal(g.importID,{requestID:`shadow-seal:${g.importID}:${s}`,signal:o});return r({status:d?`pending`:`complete`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:[],canActivate:!d,importID:g.importID,manifestHash:y.manifestHash})}catch{return r({status:`error`,imported:f,total:l.length,issues:[`shadow-${p}-failed`],canActivate:!1})}}}},qz=e=>typeof e==`object`&&!!e&&e.kind===`pending-admission`,Jz=(e,t)=>e.then(e=>{if(t?.aborted)throw new DOMException(`Aborted`,`AbortError`);return e}),Yz={snapshot:e=>Jz(gR(_),e),status:e=>Jz(pR(_),e),scope:EL,waitInvalidation:OL,admit:tR,edit:nR,remove:iR,reserve:XL,renew:QL,release:ZL,removeReserved:$L,reorder:aR,manualSend:rR,upload:Lz,client:_,capture:()=>({transportIdentity:u(),generation:f()}),current:e=>e.transportIdentity===u()&&e.generation===f(),legacyManualSend:async()=>{},shadowQueue:Nz,admissionUploadTimeoutMs:12e4,admissionRequestTimeoutMs:2e4,admissionReconcileTimeoutMs:2e4},Xz=e=>e instanceof X&&(e.code===`revision_conflict`||e.code===`row_version_conflict`),Zz=e=>e instanceof X&&e.code===`unavailable`,Qz=8,$z=(e,t)=>{if(!t)return[...e];let n=t.items.map(e=>e.queueItemID),r=new Set(n),i=e.filter(e=>r.has(e)),a=new Set(i);return[...i,...n.filter(e=>!a.has(e))]},eB=e=>`${e.transportIdentity}\u0000${S(e.directory)}\u0000${e.sessionID}`,tB=(e,t)=>new Promise(n=>{let r=setTimeout(n,e);t.addEventListener(`abort`,()=>{clearTimeout(r),n()},{once:!0})}),nB=(e,t,n)=>{let r=new AbortController,i,a=()=>r.abort();t?.aborted?a():t?.addEventListener(`abort`,a,{once:!0}),r.signal.aborted||(i=setTimeout(a,n));let o=new Promise((e,t)=>{r.signal.aborted?t(new X(0,`unavailable`)):r.signal.addEventListener(`abort`,()=>t(new X(0,`unavailable`)),{once:!0})});return Promise.race([Promise.resolve().then(()=>e(r.signal)),o]).finally(()=>{i!==void 0&&clearTimeout(i),t?.removeEventListener(`abort`,a)})},rB=(e={})=>{let t={...Yz,...e},n={...t,snapshot:e.snapshot??(e=>Jz(gR(t.client,t.capture().transportIdentity),e)),status:e.status??(e=>Jz(pR(t.client,t.capture().transportIdentity),e))},r={transportIdentity:n.capture().transportIdentity,scopes:new Map,hydration:`idle`,capability:`idle`,authority:void 0,isFetching:!1,error:void 0,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}},i,a=0,o,s=new Set,c=new Map,l=new Map,u=new Map,d=[],f=e=>c.get(e)?.forEach(e=>e()),p=(e,t)=>{let n=u.get(e)??d,r=t(n);r!==n&&(r.length?u.set(e,r):u.delete(e),f(e))},m=e=>{r={...r,...e},s.forEach(e=>e()),`scopes`in e||c.forEach(e=>e.forEach(e=>e()))},h=e=>{let t=n.capture();return r.transportIdentity===e.transportIdentity&&t.transportIdentity===e.transportIdentity&&t.generation===e.generation&&n.current(e)},g=e=>{let t=[...u.keys()];i?.abort(),i=void 0,o=void 0,l.clear(),u.clear(),m({transportIdentity:e.transportIdentity,scopes:new Map,hydration:`idle`,capability:`idle`,authority:void 0,isFetching:!1,error:void 0,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),t.forEach(f)},_=()=>{let e=n.capture();return r.transportIdentity!==e.transportIdentity&&g(e),e},v=(e,t,n)=>{let r=new Set([...e.keys(),...t.keys()]);for(let i of r){let r=e.get(i),a=t.get(i);if(r?.revision===a?.revision&&r?.directory===a?.directory&&r?.sessionID===a?.sessionID)continue;let o=a?eB({transportIdentity:n,directory:a.directory,sessionID:a.sessionID}):r?eB({transportIdentity:n,directory:r.directory,sessionID:r.sessionID}):``;c.get(o)?.forEach(e=>e())}},y=(e,t)=>{if(!h(t))return;let n=r.scopes,i=new Map(e.map(e=>[e.scopeID,e]));for(let[e,t]of l)i.get(t.scope.scopeID)?.revision!==t.revision&&l.delete(e);m({scopes:i}),v(n,i,t.transportIdentity)},b=async(e,t,r,i)=>{if(r.throwIfAborted(),e.itemCount===0&&!i)return{...e,items:[]};let a=0,o,s,c=[];do{let t=i??await n.scope(e.scopeID,{offset:a,limit:8,expectedRevision:o,signal:r});if(i=void 0,s||=t,t.revision!==e.revision||t.scopeID!==e.scopeID||o!==void 0&&t.revision!==o)throw new X(409,`revision_conflict`);c.push(...t.items),o=t.revision,a=t.nextOffset??-1}while(a>=0);if(!s||c.length!==s.itemCount)throw new X(200,`unavailable`);return{...s,items:c}},x=e=>({scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount}),C=e=>Math.max(n.client.getQueryData([e.transportIdentity,`messageQueue`,`snapshot`])?.revision??0,...[...r.scopes.values()].map(e=>e.revision)),w=(e,t)=>{if(!h(t))return;let i=r.scopes.get(e.scopeID);if(i&&i.revision>e.revision)return;_R(n.client,e,t.transportIdentity);let a=eB({transportIdentity:t.transportIdentity,directory:e.directory,sessionID:e.sessionID});return(!i||i.revision!==e.revision||i.directory!==e.directory||i.sessionID!==e.sessionID)&&y([...r.scopes.values()].filter(t=>t.scopeID!==e.scopeID).concat(x(e)),t),p(a,t=>{let n=t.filter(t=>t.phase!==`acknowledged`||e.revision<(t.acknowledgedRevision??2**53-1));return n.length===t.length?t:n}),e},T=(e,t,i)=>{if(!h(i)||e.revision<C(i))return!1;let a=new Map(e.scopes.map(e=>[e.scopeID,e]));if([...r.scopes.values()].some(e=>{let t=a.get(e.scopeID);return t!==void 0&&t.revision<e.revision}))return!1;let o=r.scopes;for(let e of t)_R(n.client,e,i.transportIdentity);if(yR(n.client,e,i.transportIdentity),e.scopes.length===0)xR(n.client,i.transportIdentity);else for(let e of o.keys())a.has(e)||SR(n.client,e,i.transportIdentity);y(e.scopes,i);for(let e of t){let t=eB({transportIdentity:i.transportIdentity,directory:e.directory,sessionID:e.sessionID});p(t,t=>{let n=t.filter(t=>t.phase!==`acknowledged`||e.revision<(t.acknowledgedRevision??2**53-1));return n.length===t.length?t:n})}return!0},E=async()=>{let e=_(),t=i?.signal??new AbortController().signal;m({isFetching:!0,hydration:`hydrating`,error:void 0});try{let i=await n.status(t);if(!h(e)||(vR(n.client,i,e.transportIdentity),m({capability:i.capability?`available`:`unsupported`,authority:i.authority}),!i.capability))return;let a=await n.snapshot(t);if(!h(e))return;let o=r.scopes,s=await Promise.all(a.scopes.filter(e=>o.get(e.scopeID)?.revision!==e.revision).map(n=>b(n,e,t)));T(a,s,e)&&m({hydration:`ready`})}catch(n){if(!h(e)||t.aborted)return;m({capability:n instanceof X&&n.status===501?`unsupported`:`error`,hydration:`error`,error:n})}finally{h(e)&&m({isFetching:!1})}},D=async(e,t)=>{for(;!t.aborted&&i;){if(!h(e))return`stale`;let i=n.client.getQueryData([e.transportIdentity,`messageQueue`,`snapshot`]),a=await n.snapshot(t);if(!h(e)||t.aborted)return t.aborted?`aborted`:`stale`;let o=new Map(r.scopes);if(!(i?.revision!==a.revision||a.scopes.some(e=>o.get(e.scopeID)?.revision!==e.revision)||[...o.keys()].some(e=>!a.scopes.some(t=>t.scopeID===e))))return`applied`;let s=await Promise.all(a.scopes.filter(e=>o.get(e.scopeID)?.revision!==e.revision).map(n=>b(n,e,t)));if(!h(e)||t.aborted)return t.aborted?`aborted`:`stale`;T(a,s,e)&&m({hydration:`ready`,error:void 0});let c=await n.snapshot(t);if(!h(e)||t.aborted)return t.aborted?`aborted`:`stale`;if(c.revision===a.revision)return`applied`}return`aborted`},O=async()=>{await E();let e=0,t=i;if(!t)return;let r=t.signal;for(;!r.aborted&&i===t;){let a=n.capture();try{let t=await D(a,r);if(t===`aborted`||t===`stale`)return;let i=C(a),o=await n.waitInvalidation(i,{signal:r});if(!h(a)||r.aborted||o===`aborted`)return;e=0}catch(n){if(r.aborted||i!==t||!h(a))return;if(n instanceof X&&n.code===`revision_conflict`){e=0;continue}m({error:n,isFetching:!1}),await tB(Math.min(3e4,500*2**e++),r)}}},k=async(e,t,a)=>{let o=await n.snapshot(i?.signal);if(!h(t))return;let s=o.scopes.find(t=>t.scopeID===e);if(!s)throw a;let c=await b(s,t,i?.signal??new AbortController().signal);return w(c,t)??bR(n.client,e,r.scopes.get(e)?.revision??s.revision,t.transportIdentity)},A=async(e,t,i,a)=>{let o=r.scopes.get(e),s=o&&o.revision>=t?bR(n.client,e,o.revision,i.transportIdentity):void 0;if(s)return s;let c=await n.scope(e,{offset:0,limit:8,signal:a});if(!h(i)||c.scopeID!==e||c.revision<t)return;let l=r.scopes.get(e);if(l&&l.revision>c.revision)return;let u=await b({scopeID:e,revision:c.revision,directory:c.directory,sessionID:c.sessionID,worktreeState:c.worktreeState,itemCount:c.itemCount},i,a,c);return w(u,i)},ee=async(e,t,i)=>{let a=_(),o=t;for(let t=0;t<Qz;t++){let s=r.scopes.get(e),c=s?bR(n.client,e,s.revision,a.transportIdentity):void 0,l;try{try{l=(await i(o,c)).revision}catch(e){if(!Zz(e)||!h(a))throw e;l=(await i(o,c)).revision}}catch(n){if(Xz(n)&&t+1<Qz){let t=await k(e,a,n);if(!t)return{status:`stale`};o=t.revision;continue}throw await k(e,a,n).catch(()=>void 0),n}if(!h(a))return{status:`stale`};let u=e=>l===void 0?e:{...e,committedRevision:l};for(let t=0;t<2;t++)try{let t=await k(e,a,new X(409,`revision_conflict`));if(!t)return u({status:`stale`});await CR(n.client,e,a.transportIdentity);let i=r.scopes.get(e);return u({status:`committed`,scope:i?bR(n.client,e,i.revision,a.transportIdentity):t})}catch(r){if(Xz(r)&&!t)continue;return h(a)?(m({error:r}),CR(n.client,e,a.transportIdentity).catch(()=>{}),u({status:`committed`})):u({status:`stale`})}}throw new X(409,`revision_conflict`)},j,te=()=>{i?.abort(),i=void 0,o=void 0},M=()=>{j!==void 0&&(clearTimeout(j),j=void 0),!i&&(i=new AbortController,O())},ne=()=>{j!==void 0&&clearTimeout(j),j=setTimeout(()=>{j=void 0,a||te()},0)};return{subscribe:e=>(s.add(e),()=>s.delete(e)),subscribeScope:(e,t)=>{let n=eB(e),r=c.get(n)??new Set;return r.add(t),c.set(n,r),()=>{r.delete(t),r.size||c.delete(n)}},getState:()=>(_(),r),captureRuntime:()=>_(),getScope:e=>{let t=_();if(e.transportIdentity!==t.transportIdentity||r.transportIdentity!==e.transportIdentity)return;let i=[...r.scopes.values()].find(t=>S(t.directory)===S(e.directory)&&t.sessionID===e.sessionID);if(!i)return;let a=`${e.transportIdentity}\u0000${i.scopeID}`,o=l.get(a);if(o?.revision===i.revision)return o.scope;let s=bR(n.client,i.scopeID,i.revision,e.transportIdentity);return s&&l.set(a,{revision:i.revision,scope:s}),s},getPendingAdmissions:e=>{let t=_();return e.transportIdentity===t.transportIdentity&&r.transportIdentity===e.transportIdentity?u.get(eB(e))??d:d},start:()=>{a++,_(),M()},stop:()=>{a=Math.max(0,a-1),a||ne()},restart:()=>{j!==void 0&&(clearTimeout(j),j=void 0),te(),g(n.capture()),a&&M()},refresh:E,runShadowImport:()=>{if(o)return o;let e=(async()=>{let e=_();if(r.capability!==`available`||r.authority!==`shadow`){let e={status:`pending`,imported:0,total:0,issues:[`shadow-unavailable`],canActivate:!1};return m({importState:e}),e}return Kz({queue:n.shadowQueue(),capture:()=>e,current:h,existing:()=>[...r.scopes.values()].flatMap(t=>bR(n.client,t.scopeID,t.revision,e.transportIdentity)?.items??[]),refresh:E,publish:t=>{h(e)&&m({importState:t})}}).run(i?.signal)})().finally(()=>{o===e&&(o=void 0)});return o=e,e},pause:async e=>{await WL({expectedGeneration:e,signal:i?.signal}),await E()},resume:async e=>{await GL({expectedGeneration:e,signal:i?.signal}),await E()},stageAdmission:({requestID:e,scope:t,item:n})=>{let r=eB({transportIdentity:_().transportIdentity,...t}),i={kind:`pending-admission`,requestID:e,queueItemID:n.queueItemID,operationID:n.operationID,messageID:n.messageID,content:n.content,createdAt:n.createdAt,phase:`uploading`,attachmentCount:n.attachmentCount??0,...n.composerDocument?{composerDocument:n.composerDocument}:{},...n.composerMentions?{composerMentions:n.composerMentions}:{},...n.sendConfig?{sendConfig:n.sendConfig}:{}};p(r,t=>[...t.filter(t=>t.requestID!==e&&t.queueItemID!==n.queueItemID),i])},unstageAdmission:({requestID:e,scope:t})=>{let n=eB({transportIdentity:_().transportIdentity,...t});p(n,t=>t.filter(t=>t.requestID!==e))},admit:async({requestID:e,scope:t,item:r,attachments:a=[]})=>{let o=_(),s=eB({transportIdentity:o.transportIdentity,...t}),c=(u.get(s)??d).find(t=>t.requestID===e||t.queueItemID===r.queueItemID),l=c&&(c.requestID===e||c.queueItemID===r.queueItemID)?{...c,requestID:e,queueItemID:r.queueItemID,operationID:r.operationID,messageID:r.messageID,content:r.content,createdAt:r.createdAt,phase:`uploading`,attachmentCount:a.length,...r.composerDocument?{composerDocument:r.composerDocument}:{},...r.composerMentions?{composerMentions:r.composerMentions}:{},...r.sendConfig?{sendConfig:r.sendConfig}:{}}:{kind:`pending-admission`,requestID:e,queueItemID:r.queueItemID,operationID:r.operationID,messageID:r.messageID,content:r.content,createdAt:r.createdAt,phase:`uploading`,attachmentCount:a.length,...r.composerDocument?{composerDocument:r.composerDocument}:{},...r.composerMentions?{composerMentions:r.composerMentions}:{},...r.sendConfig?{sendConfig:r.sendConfig}:{}},f=t=>p(s,n=>n.map(n=>n.requestID===e||n.queueItemID===r.queueItemID?t:n)),m=()=>p(s,t=>t.filter(t=>t.requestID!==e&&t.queueItemID!==r.queueItemID));c?f(l):p(s,e=>[...e,l]);let g;try{g=await nB(e=>n.upload(a,e),i?.signal,n.admissionUploadTimeoutMs)}catch(e){if(m(),!h(o))return{status:`stale`};throw e}if(!h(o))return m(),{status:`stale`};let v={requestID:e,scope:t,item:{...r,attachments:g.attachments}};f({...l,phase:`admitting`});let y;try{y=await nB(e=>n.admit({...v,signal:e}),i?.signal,n.admissionRequestTimeoutMs)}catch(e){if(!h(o))return m(),{status:`stale`};if(!(e instanceof X)||e.code!==`unavailable`)throw m(),e;f({...l,phase:`ambiguous`});try{y=await nB(e=>n.admit({...v,signal:e}),i?.signal,n.admissionRequestTimeoutMs)}catch(e){if(m(),!h(o))return{status:`stale`};throw e}}return f({...l,phase:`acknowledged`,acknowledgedRevision:y.revision}),y.scopeID?nB(e=>A(y.scopeID,y.revision,o,e),i?.signal,n.admissionReconcileTimeoutMs).then(m,m):m(),{status:`committed`}},edit:({requestID:e,scopeID:t,revision:r,item:a,patch:o})=>ee(t,r,(t,r)=>{let s=r?.items.find(e=>e.queueItemID===a.queueItemID)??a;return n.edit(s.queueItemID,{requestID:e,expectedRevision:t,expectedRowVersion:s.rowVersion,item:o,signal:i?.signal})}),remove:({requestID:e,scopeID:t,revision:r,item:a})=>ee(t,r,async(r,o)=>{let s=o?.items.find(e=>e.queueItemID===a.queueItemID)??a;try{return await n.remove(s.queueItemID,{requestID:e,expectedRevision:r,expectedRowVersion:s.rowVersion,signal:i?.signal})}catch(e){if(!(e instanceof X)||e.code!==`not_found`)throw e;let n=await k(t,_(),e);if(!n||n.items.some(e=>e.queueItemID===a.queueItemID))throw e;return{revision:n.revision,removedQueueItemID:a.queueItemID}}}),reserveEdit:async({requestID:e,scopeID:t,revision:a,item:o,owner:s,ttlMs:c,runtime:l})=>{if(!h(l))return;let u=a;for(let a=0;a<Qz;a++){let d=r.scopes.get(t),f=(d?bR(n.client,t,d.revision,l.transportIdentity):void 0)?.items.find(e=>e.queueItemID===o.queueItemID)??o;try{let t=await n.reserve(f.queueItemID,{requestID:e,expectedRevision:u,rowVersion:f.rowVersion,owner:s,ttlMs:c,signal:i?.signal});if(!h(l)){await n.release(f.queueItemID,{token:t.token,signal:i?.signal}).catch(()=>{});return}return t}catch(e){if(!Xz(e)||a+1>=Qz)throw e;let n=await k(t,l,e);if(!n||!n.items.some(e=>e.queueItemID===o.queueItemID))return;u=n.revision}}},renewEdit:async({item:e,token:t,generation:r,ttlMs:a,runtime:o,signal:s})=>{if(!h(o))return;let c=await n.renew(e.queueItemID,{token:t,generation:r,ttlMs:a,signal:s??i?.signal});if(!(!h(o)||c.queueItemID!==e.queueItemID||c.token!==t||c.generation!==r))return c},releaseEdit:async({item:e,token:t,runtime:r})=>{h(r)&&(await n.release(e.queueItemID,{token:t,signal:i?.signal.aborted?void 0:i?.signal}),h(r)&&await E())},removeReserved:async({requestID:e,scopeID:t,revision:a,item:o,token:s,generation:c,runtime:l})=>{if(!h(l))return!1;let u=a;for(let a=0;a<Qz;a++){let d=r.scopes.get(t),f=(d?bR(n.client,t,d.revision,l.transportIdentity):void 0)?.items.find(e=>e.queueItemID===o.queueItemID)??o;try{return await n.removeReserved(f.queueItemID,{requestID:e,expectedRevision:u,expectedRowVersion:f.rowVersion,token:s,generation:c,signal:i?.signal}),h(l)?(await k(t,l,new X(404,`not_found`)).catch(()=>void 0),await E(),!0):!1}catch(e){if(!Xz(e)||a+1>=Qz)throw e;let n=await k(t,l,e);if(!n||!n.items.some(e=>e.queueItemID===o.queueItemID))return!1;u=n.revision}}return!1},reorder:({requestID:e,scopeID:t,revision:r,queueItemIDs:a})=>ee(t,r,(r,o)=>n.reorder(t,{requestID:e,expectedRevision:r,queueItemIDs:$z(a,o),signal:i?.signal})),manualSend:async({requestID:e,scopeID:t,revision:a,item:o})=>{if(r.authority===`active`||r.authority===`paused`)return ee(t,a,(t,r)=>{let a=r?.items.find(e=>e.queueItemID===o.queueItemID)??o;return n.manualSend(a.queueItemID,{requestID:e,expectedRevision:t,expectedRowVersion:a.rowVersion,signal:i?.signal})});if(r.authority===`shadow`||r.capability===`unsupported`){let e=_();return h(e)?(await n.legacyManualSend(o),h(e)?{status:`committed`}:{status:`stale`}):{status:`stale`}}throw new X(0,`unavailable`)}}},iB,aB=()=>iB??=rB(),oB=new WeakMap,sB=e=>{let t=e,n=oB.get(t);if(n)return n.refs++,()=>{n.refs--,n.refs||(n.unsubscribe(),oB.delete(t))};let r={refs:1,unsubscribe:s(t=>{p(t)&&e.restart()})};return oB.set(t,r),()=>{r.refs--,r.refs||(r.unsubscribe(),oB.delete(t))}},cB=e=>!e||/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(e),lB=(e,t)=>{if(typeof e!=`string`||e.length===0)return{sanitizedText:e,mention:null};let n=t.filter(e=>e.mode&&e.mode!==`primary`);if(n.length===0||!e.includes(`@`))return{sanitizedText:e,mention:null};let r=null;for(let t of n){let n=t.name.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),i=RegExp(`@${n}\\b`,`gi`),a;for(;(a=i.exec(e))!==null;){let n=a.index,i=n+a[0].length;if(!cB(n>0?e[n-1]:null))continue;let o={name:t.name,source:{value:a[0],start:n,end:i}};r||=o}}return r?{sanitizedText:e,mention:r}:{sanitizedText:e,mention:null}},uB=/\.[a-z0-9]{1,8}$/i,dB=/^([a-z0-9][a-z0-9._-]*)\/([a-z0-9][a-z0-9._-]*)(?:@[^\s/\\]+)?$/i,fB=e=>{let t=dB.exec(e);return t?!uB.test(t[2]):!1},pB=new Set([`test`,`tests`,`__tests__`,`spec`,`specs`,`e2e`,`__mocks__`]),mB=/\.(?:test|spec|e2e)\./i,hB=.85,gB=3,_B=3,vB=1.25,yB=-.35,bB=-.5,xB=e=>{let t=e.trim().replace(/^\.\//,``).replace(/^[/\\]+/,``).toLowerCase(),n=/[/\\]$/.test(t),r=t.replace(/[/\\]+$/,``),i=Math.max(r.lastIndexOf(`/`),r.lastIndexOf(`\\`)),a=(i>=0?r.slice(i+1):r).match(uB),o=!n&&a!==null,s=o&&a?a[0].slice(1):null;return{raw:t,search:r,stem:o&&a?r.slice(0,r.length-a[0].length):r,extension:s,fileIntent:o,directoryIntent:n}},SB=e=>{let t=xB(e);return(t.fileIntent||t.directoryIntent)&&t.stem?t.stem:t.search},CB=e=>{let t=e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase();if(!t)return!1;let n=t.split(`/`).filter(Boolean);if(n.some(e=>pB.has(e)))return!0;let r=n.at(-1)??t;return mB.test(r)},wB=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase(),TB=(e,t)=>(e.name||t.split(`/`).filter(Boolean).pop()||t).toLowerCase(),EB=(e,t)=>e===null&&t===null?null:Math.min(e??1/0,t??1/0),DB=(e,t)=>{let n=wB(e.relativePath),r=TB(e,n),i=e.isDirectory===!0,a=EB(Bk(n,t.search),Bk(r,t.search)),o;if(a!==null)o=a;else if(t.stem&&t.stem!==t.search){let e=EB(Bk(n,t.stem),Bk(r,t.stem));if(e===null)return null;o=e+hB}else return null;return t.fileIntent&&i&&(o+=gB),t.directoryIntent&&!i&&(o+=_B),t.fileIntent&&!i&&t.extension&&e.extension===t.extension&&(o+=yB),t.directoryIntent&&i&&r===t.stem&&(o+=bB),CB(n)&&!CB(t.search)&&(o+=vB),o},OB=(e,t,n)=>{let r=n?.limit??20,i=xB(t);if(!i.search&&!i.stem)return e.slice(0,r);let a=e.flatMap(e=>{let t=DB(e,i);return t===null?[]:[{item:e,score:t,sortKey:wB(e.relativePath)}]});return a.sort((e,t)=>e.score===t.score?e.sortKey.length===t.sortKey.length?e.sortKey.localeCompare(t.sortKey,void 0,{sensitivity:`accent`}):e.sortKey.length-t.sortKey.length:e.score-t.score),a.slice(0,r).map(({item:e})=>e)},kB=/\.[a-z0-9]{1,8}$/i,AB=e=>!fB(e)&&(e.includes(`/`)||e.includes(`\\`)||e.includes(`.`)),jB=e=>{if(!AB(e))return!1;let t=e.replace(/\\/g,`/`);if(t.endsWith(`/`))return!0;let n=t.split(`/`).filter(Boolean).pop()??t;return kB.test(n)},MB=e=>{let t=e.replace(/\\/g,`/`);return/^[A-Za-z]:\//.test(t)?t.slice(3).includes(`/`):t.startsWith(`//`)?t.replace(/^\/+/,``).includes(`/`):t.startsWith(`/`)?t.slice(1).includes(`/`):!1},NB=(e,t)=>{if(e[t]!==`@`)return null;let n=e.slice(t+1),r=n.search(/\s/),i=r===-1?n:n.slice(0,r);if(!i||/[\r\n]/.test(i)||!MB(i))return null;let a=t+1+i.length,o=i;if(jB(o))return{value:o,end:a};for(;a<e.length&&/[ \t]/.test(e[a]);){let n=a+1;for(;n<e.length&&!/\s/.test(e[n]);)n+=1;if(n===a+1)break;let r=e.slice(t+1,n);if(r.length>4096)break;if(o=r,a=n,jB(o))return{value:o,end:a}}return null},PB=(e,t,n)=>{if(!n||n.size===0||e[t]!==`@`)return null;let r=e.slice(t+1),i=null;for(let a of n){if(!a||!a.includes(` `)&&!a.includes(` `)||!r.startsWith(a))continue;let n=e[t+1+a.length];n!==void 0&&!/\s/.test(n)||(!i||a.length>i.length)&&(i=a)}return i?{value:i,end:t+1+i.length}:null},FB=/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/,IB=e=>!fB(e)&&(e.includes(`/`)||e.includes(`\\`)||e.includes(`.`)),LB=e=>e?{value:e.value,end:e.end,highlightEnd:e.end}:null,RB=(e,t)=>{let n=/^([^\s]+)/.exec(e.slice(t+1))?.[1]??``;if(!n)return null;let r=n.trim().replace(/[),.;:!?`"'>]+$/g,``);return r?{value:r,end:t+1+r.length,highlightEnd:t+1+n.length}:null},zB=(e,{confirmedValues:t,allowSpacedPastedPaths:n=!1})=>{let r=[],i=0;for(;i<e.length;){let a=e.indexOf(`@`,i);if(a<0)break;let o=a>0?e[a-1]:null;if(!(!o||FB.test(o))){i=a+1;continue}let s=LB(PB(e,a,t))??(n?LB(NB(e,a)):null)??RB(e,a);if(!s){i=a+1;continue}r.push({start:a,...s}),i=Math.max(s.highlightEnd,s.end,a+1)}return r},BB=({files:e,directories:t,query:n,excludePaths:r,limit:i=20})=>{let a=new Map;for(let e of t)!e.path||r?.has(e.path)||a.set(e.path,{...e,isDirectory:!0});for(let t of e)!t.path||r?.has(t.path)||a.has(t.path)||a.set(t.path,{...t,isDirectory:t.isDirectory===!0});return OB(Array.from(a.values()),n,{limit:i})},VB=6,HB=(e,t,n)=>OB(e,t,{limit:n?.limit??VB}),UB=(e,t)=>{let n=e[t];return n!==void 0&&/\s/.test(n)},WB=({mention:e,confirmed:t,terminated:n})=>!e||e.startsWith(`session:`)?!1:t?!0:n&&IB(e),GB=(e,{confirmedValues:t,agentNames:n})=>{if(!e.includes(`@`))return[];let r=[];for(let i of zB(e,{confirmedValues:t})){let{start:a,value:o,end:s,highlightEnd:c}=i;if(o.startsWith(`session:`))continue;if(n.has(o.toLowerCase())){r.push({start:a,end:c,kind:`agent`});continue}let l=UB(e,s);WB({mention:o,confirmed:t.has(o),terminated:l})&&r.push({start:a,end:c,kind:`file`})}return r},KB=(e,{agentNames:t,includeUnterminatedPastedReferences:n=!1,confirmedValues:r}={})=>{if(!e.includes(`@`))return[];let i=[];for(let a of zB(e,{confirmedValues:r,allowSpacedPastedPaths:n})){let{start:o,value:s,end:c}=a;if(!s||s.startsWith(`session:`)||t?.has(s.toLowerCase()))continue;let l=s.includes(` `)||s.includes(` `),u=UB(e,c),d=n&&(l||jB(s)),f=r?.has(s)===!0;!u&&!d&&!f||!IB(s)&&!d||i.push({kind:s.endsWith(`/`)||s.endsWith(`\\`)?`directory`:`file`,value:s,start:o,end:c})}return i},qB=/(^|[\s([{])(@session:([A-Za-z0-9_-]+))(?=$|[\s)\]},.!?;:])/g,JB=e=>{let t=[];qB.lastIndex=0;let n;for(;(n=qB.exec(e))!==null;){let e=n.index+n[1].length;t.push({start:e,end:e+n[2].length,id:n[3]})}return t},YB=e=>{let t=[],n=new Set;for(let{id:r}of JB(e))n.has(r)||(n.add(r),t.push(r));return t},XB=(e,t)=>{let n=e;for(let r of JB(e).reverse()){let e=t.get(r.id)??r.id;n=`${n.slice(0,r.start)}@${e}${n.slice(r.end)}`}return n},ZB=({sessions:e,currentSessionId:t,searchQuery:n})=>{let r=n.trim().toLowerCase();return e.filter(e=>e.id!==t).filter(e=>!r||`${e.title??``} ${e.id}`.toLowerCase().includes(r)).sort((e,t)=>(t.time?.updated??t.time?.created??0)-(e.time?.updated??e.time?.created??0)).slice(0,r?10:3)},QB=({value:e,cursorPosition:t,inputSource:n=`manual`,insertedText:r})=>{if(n===`paste`&&r?.includes(`@`))return null;let i=e.substring(0,t),a=i.lastIndexOf(`@`);if(a===-1)return null;let o=a>0?i[a-1]:null,s=i.substring(a+1);return!(!o||/\s/.test(o))||s.includes(` `)||s.includes(`
411
+ `)?null:s},$B=/(^|\s)\/\u2003?([a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?)|(^|\s)@\u2003?([a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?)(?=$|\s|[),.;:!?])/g,eV=e=>Tr(e.trim()),tV=e=>{let t=e.trim();if(t.toLowerCase().startsWith(`file://`))return t;let n=eV(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`file:///${n}`:`file://${n}`},nV=e=>({chunks:[{provenance:`authored`,text:e,start:0,end:e.length}],semantics:[]}),rV=({text:e,root:t,confirmedFilePaths:n,confirmedDirectoryPaths:r=[],agentNames:i})=>{let a=[],o=new Set,s=t?eV(t).replace(/\/+$/,``):``,c=e=>eV(e).replace(/^\.\//,``),l=new Set(n.map(e=>c(e))),u=new Set(r.map(e=>c(e))),d=e=>{if(!e||i.has(e.toLowerCase()))return;let t=c(e),n=Er(e)||Er(t)?t:t.replace(/^\/+/,``);if(!(l.has(t)||l.has(n)||!fB(e)&&(e.includes(`/`)||e.includes(`\\`)||e.includes(`.`))))return;let r=Er(e)||Er(t)?t:s?Dr(s,n):null;if(!n||!r||o.has(r))return;o.add(r);let d=Or(r)||n,f=u.has(t)||u.has(n)||/[/\\]$/.test(e)?mn:`text/plain`;a.push({id:Oe(),file:new File([],d,{type:f}),filename:d,mimeType:f,size:0,dataUrl:tV(r),source:`server`,serverPath:r})},f=[];for(let t of n){if(!t.includes(` `)&&!t.includes(` `))continue;let n=`@${t}`,r=0;for(;r<e.length;){let i=e.indexOf(n,r);if(i<0)break;let a=i>0?e[i-1]:null,o=e[i+n.length],s=!a||/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(a),c=o===void 0||/\s/.test(o);s&&c&&(f.push({start:i,end:i+n.length}),d(t)),r=i+n.length}}let p=/@([^\s]+)/g,m;for(;(m=p.exec(e))!==null;){let t=m;if(f.some(e=>t.index>=e.start&&t.index<e.end))continue;let n=t.index>0?e[t.index-1]:null;n&&!/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(n)||d(t[1].trim().replace(/^[`"'<(]+/,``).replace(/[),.;:!?`"'>]+$/g,``))}return a},iV=(e,t)=>{let n=[],r=new Set;$B.lastIndex=0;let i;for(;(i=$B.exec(e))!==null;){let e=i[2]||i[4]||``;t.has(e)&&!r.has(e)&&(r.add(e),n.push({type:`skill`,skillName:e}))}return n},aV=(e,t)=>{if(!e.includes(`@`)||t.length===0)return[];let n=[];for(let{id:r,title:i}of t)(e.includes(`@${i}`)||e.includes(`@${R}${i}`))&&n.push(r);return n},oV=({plan:e,agents:t,installedSkillNames:n,directory:r,root:i,confirmedFilePaths:a=[],confirmedDirectoryPaths:o=[],citationAttachments:s=[]})=>{let c=new Set(t.map(e=>e.name.toLowerCase())),l=new Map(Zt(r).map(e=>[e.id,e.title||e.id])),u=[];for(let e of dt().values()){let t=typeof e.title==`string`?e.title.trim():``;t&&u.push({id:e.id,title:t})}return Hf(e,e=>{let r=lB(e,t),d=[...new Set([...YB(e),...aV(e,u)])],f=[...iV(e,n),...d.map(e=>({type:`session`,sessionId:e}))],p=rV({text:r.sanitizedText,root:i,confirmedFilePaths:a,confirmedDirectoryPaths:o,agentNames:c});return{text:XB(Ue(fr(r.sanitizedText,s)),l),agent:r.mention?.name,attachments:p,semantics:f}})},sV=e=>e.map(e=>({text:e.text,...e.attachments?.length?{attachments:Uf(e.attachments)}:{},synthetic:!0})),cV=({text:e,attachments:t,semanticParts:n,syntheticParts:r=[]})=>[{type:`text`,text:e},...Uf(t).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id})),...n.map(e=>({type:`text`,text:e.text,synthetic:!0})),...(r??[]).flatMap(e=>[{type:`text`,text:e.text,synthetic:!0},...Uf(e.attachments??[]).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id}))])],lV=(e,t)=>{let n=t.map(e=>({...e,attachments:Uf(e.attachments??[])})),r=e.length-n.reduce((e,t)=>e+1+t.attachments.length,0);if(r<0)throw Error(`assistant-queue-synthetic-parts-mismatch`);return n.map(e=>{let t=[r++];for(let n of e.attachments)t.push(r++);return{partID:e.partID,text:e.text,...e.synthetic===!0?{synthetic:!0}:{},attachmentIDs:e.attachments.map(e=>e.id),deliveryPartIndexes:t}})},uV=e=>e?.trim()||void 0,dV=e=>e.hasQueuedMessages&&(e.sessionIsRunning||e.autoReviewRunning)&&!e.queuedOnly&&e.delivery!==`steer`,fV=(e,t)=>e!==`assistant`||t===`server`,pV=(e,t,n)=>{let r=(e.current.get(t)??Promise.resolve()).catch(()=>void 0).then(n),i=r.then(()=>void 0,()=>void 0);return e.current.set(t,i),r.finally(()=>{e.current.get(t)===i&&e.current.delete(t)})},mV=({currentConfig:e,sessionID:t,selection:n})=>{let r=uV(e.currentAgentName),i=t?uV(n.getSessionAgentSelection(t))??r:r,a=t&&i?n.getAgentModelForSession(t,i):null,o=t?n.getSessionModelSelection(t):null,s=uV(a?.providerId)??uV(o?.providerId)??uV(e.currentProviderId),c=uV(a?.modelId)??uV(o?.modelId)??uV(e.currentModelId);if(!s||!c)return;let l=t&&i?uV(n.getAgentModelVariantForSession(t,i,s,c))??uV(e.currentVariant):uV(e.currentVariant);return{providerID:s,modelID:c,...i?{agent:i}:{},...l?{variant:l}:{}}},hV=e=>!!(uV(e?.providerID)&&uV(e?.modelID)),gV=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,_V=(e,t)=>gV(e,t),vV=e=>JSON.stringify([e.text,e.references]),yV=e=>JSON.stringify(e),bV=(e,t)=>e.id===t.id&&e.file===t.file&&e.dataUrl===t.dataUrl&&e.mimeType===t.mimeType&&e.filename===t.filename&&e.size===t.size&&e.source===t.source&&e.serverPath===t.serverPath&&e.vscodePath===t.vscodePath&&e.vscodeSource===t.vscodeSource,xV=({draftKey:e,runtime:t,document:n,attachments:r,inlineDrafts:i})=>({draftKey:{transportIdentity:e.transportIdentity,owner:{...e.owner}},draftKeyID:z(e),runtime:{...t},documentFingerprint:vV(n),attachments:new Map(r.map(e=>[e.id,e])),inlineDrafts:new Map(i.map(e=>[e.id,yV(e)]))}),SV=async({capture:e,admit:t,captureRuntime:n,getCurrentDraftKey:r,getDocument:i,consumeBody:a,getAttachments:o,removeAttachment:s,getInlineDrafts:c,removeInlineDraft:l})=>{let u=await t(),d=r();if(u.status!==`committed`||!_V(e.runtime,n())||!d||z(d)!==e.draftKeyID)return{status:`stale`,bodyConsumed:!1,attachmentIDsConsumed:[],inlineDraftIDsConsumed:[]};let f=vV(i())===e.documentFingerprint;f&&a();let p=[],m=[],h=new Map(o().map(e=>[e.id,e]));for(let[t,n]of e.attachments){let e=h.get(t);if(!e||!bV(n,e))continue;let r=!1;try{r=await s(t)}catch{r=!1}r?p.push(t):m.push(t)}let g=[],_=new Map(c().map(e=>[e.id,e]));for(let[t,n]of e.inlineDrafts){let e=_.get(t);!e||yV(e)!==n||(l(t),g.push(t))}return m.length>0?{status:`partial`,bodyConsumed:f,attachmentIDsConsumed:p,attachmentIDsFailed:m,inlineDraftIDsConsumed:g}:{status:`committed`,bodyConsumed:f,attachmentIDsConsumed:p,inlineDraftIDsConsumed:g}},CV=(e,t)=>e.map(e=>{let n=e.mimeType||e.file.type||`application/octet-stream`;if(e.source===`server`){if(!e.serverPath)throw Error(`message-queue-server-attachment-unavailable`);return{attachmentID:e.id,occurrenceRefID:t?[`part`,t,e.id]:[`root`,e.id],filename:e.filename||e.file.name,mimeType:n,source:`server`,path:e.serverPath,size:e.size}}if(e.source===`vscode`)throw Error(`message-queue-vscode-attachment-unsupported`);return{attachmentID:e.id,occurrenceRefID:t?[`part`,t,e.id]:[`root`,e.id],filename:e.filename||e.file.name,mimeType:n,source:`local`,value:e.file.slice(0,e.file.size,n)}}),wV=(e=Oe,t=()=>De(`msg`),n=Date.now())=>({requestID:e(),queueItemID:`queued-${e()}`,operationID:`operation-${e()}`,messageID:t(),createdAt:n}),TV=({stage:e,clearComposer:t,postClear:n})=>{let r=e();return t(),n?.(),r},EV=`blocked`,DV=new Set,OV=()=>EV,kV=e=>{if(EV!==e){EV=e;for(let e of DV)e()}},AV=e=>(DV.add(e),()=>DV.delete(e)),jV=()=>EV===`legacy-enabled`,MV=2e3,NV=6e4,PV=5e3,FV=3,IV=e=>Math.min(MV*2**Math.max(e-1,0),NV),LV=new Map,RV=new Map,zV=new Set,BV=new Set,VV=0,HV=()=>{VV+=1;for(let e of BV)e()},UV=(e,t)=>JSON.stringify([O(e),t.queueItemID,t.operationID]),WV=e=>`scope:${O(e)}`,GV=()=>new Set([...LV.keys(),...RV.keys()]),KV=e=>(BV.add(e),()=>BV.delete(e)),qV=e=>{let t=(0,U.c)(2),n;return t[0]===e?n=t[1]:(n=()=>e?RV.has(WV(e)):!1,t[0]=e,t[1]=n),K.useSyncExternalStore(KV,n,mH)},JV=()=>structuredClone(M.getState().queuedMessages),YV=async()=>{for(kV(`blocked`);LV.size||RV.size||zV.size;)await Promise.allSettled([...new Set([...LV.values(),...RV.values(),...zV])]);return ye(),JV()},XV=e=>e===`idle`,ZV=e=>{if(e===void 0)return`unknown`;let t=e[e.length-1];return!t||t.role===`assistant`?`settled`:`unsettled`},QV=(e,t,n,r,i=!1,a=`settled`)=>e?e.status===`sending`?i?{}:{recover:!0}:e.status===`queued`?XV(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`retrying`?e.nextAttemptAt&&e.nextAttemptAt>r?{nextWakeAt:e.nextAttemptAt}:XV(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`reconciling`?(e.reconciliationChecks??0)>=FV||(e.reconciliationDeadlineAt??1/0)<=r?{resolve:!0}:(e.reconciliationNextCheckAt??0)>r?{nextWakeAt:e.reconciliationNextCheckAt}:i?{}:{query:!0}:{}:{},$V=(e,t)=>{let n=new Set;for(let[r,i]of Object.entries(e))i?.status===`running`&&i.runtimeKey===t&&n.add(r);return n},eH=(e,t)=>{let n;for(let r of Jt(e,t)){let e=typeof r?.id==`string`?r.id:``;/^msg_[0-9a-f]{12}[0-9A-Za-z]{14}$/.test(e)&&(!n||e>n)&&(n=e)}return n},tH=(e,t)=>{let n;for(let r of e.values())r.expiresAt>t&&(!n||r.expiresAt<n)&&(n=r.expiresAt);return n},nH=({queuedMessages:e,activeTransportIdentity:t,getStatus:n,getTurnState:r=()=>`settled`,previous:i,inFlight:a,dispatchInFlight:o=GV(),blockedSessions:s,blockedScopeKeys:c=new Set,now:l})=>{let u={dispatchScopes:[],queryOperations:[],resolveOperations:[],recoverOperations:[],inspectedScopeCount:0},d=new Set;for(let[f,p]of Object.entries(e)){let e=p[0],m=e?.owner;if(!e||m?.state!==`bound`||m.transportIdentity!==t)continue;u.inspectedScopeCount+=1;let h=`${f}:${e.queueItemID}`,g=UV(m,e),_=WV(m);d.add(h);let v=n(m),y=QV(e,v,i.get(f),l,o.has(g),r(m));i.set(f,v),y.nextWakeAt&&(!u.nextWakeAt||y.nextWakeAt<u.nextWakeAt)&&(u.nextWakeAt=y.nextWakeAt),y.dispatch&&!s.has(m.sessionID)&&!c.has(O(m))&&!o.has(g)&&!o.has(_)&&u.dispatchScopes.push(m),y.query&&!a.has(h)&&u.queryOperations.push({scope:m,item:e,key:h}),y.resolve&&u.resolveOperations.push({scope:m,item:e,key:h}),y.recover&&!a.has(h)&&u.recoverOperations.push({scope:m,item:e,key:h})}for(let e of a)d.has(e)||a.delete(e);for(let t of i.keys())e[t]||i.delete(t);return u},rH=e=>{let t=e[0];if(!t)return null;let n=t.composerDocument&&te(t.composerDocument,`direct-send-display`),r=t.owner?.state===`bound`?t.owner.directory:``,i=oV({plan:n?.ok?{chunks:n.chunks??[],semantics:n.semantics??[]}:nV(t.content),agents:W.getState().getVisibleAgents(),installedSkillNames:new Set(tl(_,r).map(e=>e.name)),directory:r,root:r,confirmedFilePaths:t.composerMentions?.filter(e=>e.kind===`file`||e.kind===`directory`).map(e=>e.path||e.value),confirmedDirectoryPaths:t.composerMentions?.filter(e=>e.kind===`directory`).map(e=>e.path||e.value),citationAttachments:t.attachments}),a=Qf(i.semantics,r);return{queuedMessageId:t.id,messageID:t.messageID,operationID:t.operationID,primaryText:i.text,primaryAttachments:Uf([...t.attachments??[],...i.attachments]),agentMentionName:i.agent,additionalParts:a,sendConfig:t.sendConfig}},iH=(e,t,n,r)=>$.getState().sendMessage(t.primaryText,n.providerID,n.modelID,n.agent,t.primaryAttachments,t.agentMentionName,t.additionalParts,n.variant,`normal`,{sessionId:e,directoryHint:r.directory,delivery:r.delivery,messageID:t.messageID,ticket:r.ticket,preserveOptimisticOnAmbiguous:!0,onSendConfirmed:r.onSendConfirmed}),aH=(e,t)=>t?{...t}:mV({currentConfig:W.getState(),sessionID:e,selection:eu.getState()})??{providerID:``,modelID:``},oH=e=>{let t=$.getState().getDirectoryForSession(e);return t?{state:`bound`,transportIdentity:u(),directory:t,sessionID:e}:null},sH=(e,t)=>!!(e===`queued`||e===`retrying`||t&&(e===`failed`||e===`unresolved`)),cH=e=>e.status===`sending`||e.status===`reconciling`,lH=(e,t,n,r)=>{if(!r||r.sessionID!==t)return null;let i=e.getQueueForScope(r),a=n?i.find(e=>e.queueItemID===n||e.id===n):i[0];return!a||a.owner?.state!==`bound`||O(a.owner)!==O(r)?null:{scope:r,item:a}};function uH(e,t={}){if(!jV())return Promise.resolve();let n=M.getState(),r=t.scope??oH(e),i=t.manual===!0||t.delivery===`steer`;if(!r||r.transportIdentity!==u())return Promise.resolve();let a=lH(n,e,t.queueItemID,r??void 0);if((i||!t.scope)&&!RV.has(WV(r))){let i=n.getQueueForScope({state:`unbound-legacy`,sessionID:e}),o=n.getQueueForScope(r),s=t.queueItemID?i.find(e=>e.queueItemID===t.queueItemID||e.id===t.queueItemID):i[0];(a||s)&&!i.some(cH)&&!o.some(cH)&&(n.bindLegacyQueue({state:`unbound-legacy`,sessionID:e},r),a=lH(n,e,t.queueItemID,r))}if(!a||a.scope.transportIdentity!==u())return Promise.resolve();let o=a.scope;if(o.deliveryTarget?.kind===`assistant`)return Promise.resolve();let s=a.item,c={queueItemID:s.queueItemID,operationID:s.operationID,messageID:s.messageID},l=UV(o,c),d=LV.get(l);if(d)return d;if(RV.has(WV(o))||!sH(s.status,i)||s.status===`retrying`&&!i&&(s.nextAttemptAt??0)>Date.now())return Promise.resolve();let p,m=new Promise(e=>{p=e});return LV.set(l,m),RV.set(WV(o),m),HV(),(async()=>{try{let r=eH(e,o.directory),a=AH(e),l=a?.queueItemID===s.queueItemID?a.messageID:_e(`msg`,r),d=n.beginQueueItemDispatch(o,c,l,i);if(!d)return;s=d;let p={queueItemID:d.queueItemID,operationID:d.operationID,messageID:d.messageID};if(!ye()){n.markQueueItemPreDispatchRetry(o,p,Date.now()+IV(d.attemptCount+1));return}let m=f(),h=rH([d]);if(!h)return;let g=aH(e,d.sendConfig);if(!g.providerID||!g.modelID){n.markQueueItemPreDispatchRetry(o,p,Date.now()+IV(d.attemptCount+1));return}if(!jV()){n.markQueueItemPreDispatchRetry(o,p,Date.now()+IV(d.attemptCount+1));return}let _=()=>{let e=M.getState().getQueueForScope(o)[0];return u()===o.transportIdentity&&f()===m&&e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&O(e.owner)===O(o)},v=()=>{let e=M.getState().getQueueForScope(o)[0];return e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&O(e.owner)===O(o)},y=t=>{_()&&t===p.messageID&&(M.getState().confirmQueueItem(o,p),WH(e))};try{await iH(e,h,g,{directory:o.directory,delivery:t.delivery,onSendConfirmed:y}),y(p.messageID)}catch(e){if(!v())return;let t=Cb(e);t===`pre-dispatch`?n.markQueueItemPreDispatchRetry(o,p,Date.now()+IV(d.attemptCount+1)):t===`definitive-rejection`?n.markQueueItemDefinitiveFailure(o,p):n.markQueueItemReconciling(o,p)}}finally{let e=!1;LV.get(l)===m&&(LV.delete(l),e=!0),RV.get(WV(o))===m&&(RV.delete(WV(o)),e=!0),e&&HV(),p?.()}})(),m}async function dH(e,t=f()){if(!jV())return;let n=Math.min(e.item.reconciliationDeadlineAt??1/0,Date.now()+PV),r=new AbortController,i=setTimeout(()=>r.abort(),Math.max(0,n-Date.now())),a=null;try{a=await Mx(e.scope.sessionID,e.item.messageID,e.scope.directory,{signal:r.signal,timeoutMs:Math.max(0,n-Date.now())})}catch{a=null}finally{clearTimeout(i)}let o=M.getState().getQueueForScope(e.scope)[0];o?.queueItemID===e.item.queueItemID&&o.operationID===e.item.operationID&&o.messageID===e.item.messageID&&O(o.owner)===O(e.scope)&&u()===e.scope.transportIdentity&&f()===t&&(a?.some(t=>t.info.id===e.item.messageID)?(oW(e.scope.sessionID,e.item.messageID),M.getState().confirmQueueItem(e.scope,{queueItemID:o.queueItemID,operationID:o.operationID,messageID:o.messageID})):M.getState().recordQueueItemReconciliationCheck(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID}))}var fH=(e,t)=>{cb({sessionID:e.sessionID,messageID:t.messageID,directory:e.directory}),M.getState().resolveQueueItemReconciliation(e,{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID})};function pH(e){let t=typeof e==`boolean`?e:e?.enabled??!0,n=K.useSyncExternalStore(AV,OV,OV),r=M(e=>e.queuedMessages),i=lf(e=>e.runsByOriginalSessionID),a=$(e=>e.queueAbortBlocks),o=K.useSyncExternalStore(s,u,u),c=K.useSyncExternalStore(s,m,m),l=K.useSyncExternalStore(KV,()=>VV,()=>VV),d=K.useMemo(()=>Object.values(r).flatMap(e=>{let t=e[0]?.owner;return t?.state===`bound`&&t.transportIdentity===o?[t]:[]}),[o,r]),p=SF(d),h=CF(),g=iI(),_=K.useMemo(()=>d.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),[d]),v=K.useRef(d);v.current=d;let y=K.useSyncExternalStore(K.useMemo(()=>e=>{if(!_)return()=>void 0;let t=v.current.map(e=>({directory:e.directory,sessionID:e.sessionID}));return ar(t,e,e=>g.getChild(e),{subscribeRebuild:e=>g.subscribeRegistry(e)})},[g,_]),K.useMemo(()=>()=>{if(!_)return``;let e=v.current.map(e=>({directory:e.directory,sessionID:e.sessionID}));return an(e,e=>g.getChild(e))},[g,_]),()=>``),b=K.useCallback(e=>h(e),[h]),x=K.useCallback(e=>ZV(Nt(e.directory,e.sessionID,g.getChild(e.directory))),[g]),[S,C]=K.useState(0),w=K.useRef(new Map),T=K.useRef(new Set);K.useEffect(()=>{if(!t||n!==`legacy-enabled`)return;let e=Date.now();$.getState().pruneQueueAbortBlocks(e);let s=new Set,l=new Set;for(let[t,n]of a)n.expiresAt>e&&l.add(t);for(let e of $V(i,c))s.add(e);let u=nH({queuedMessages:r,activeTransportIdentity:o,getStatus:b,getTurnState:x,previous:w.current,inFlight:T.current,blockedSessions:s,blockedScopeKeys:l,now:e});for(let e of u.recoverOperations)M.getState().markQueueItemReconciling(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID});for(let e of u.dispatchScopes)M.getState().getQueueForScope(e)[0]&&uH(e.sessionID,{scope:e}).finally(()=>{C(e=>e+1)});for(let e of u.resolveOperations)fH(e.scope,e.item);for(let e of u.queryOperations){T.current.add(e.key);let t=dH(e,f()).finally(()=>{T.current.delete(e.key),zV.delete(t),C(e=>e+1)});zV.add(t)}let d=tH(a,e),p=u.nextWakeAt?d?Math.min(u.nextWakeAt,d):u.nextWakeAt:d,m;return p&&(m=setTimeout(()=>{$.getState().pruneQueueAbortBlocks(),C(e=>e+1)},Math.max(0,p-Date.now()))),()=>{m&&clearTimeout(m)}},[c,o,g,l,t,n,r,a,i,p,y,b,x,S])}function mH(){return!1}var hH={server:aB(),queue:Nz(),status:e=>pR(_).then(t=>{if(e?.aborted)throw new DOMException(`Aborted`,`AbortError`);return t}),activate:HL,lateCommit:UL,capture:()=>({transportIdentity:u(),generation:f()}),current:e=>e.transportIdentity===u()&&e.generation===f(),quiesce:async()=>{await YV()},flush:async()=>{ye()},prepare:se,resolveDirectory:e=>$.getState().getDirectoryForSession(e)},gH=()=>({ownership:`probing`,migration:`idle`,frozen:!0,admission:`frozen`,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),_H=(e={})=>{let t={...hH,...e},n=gH(),r=0,i,a,o,c=500,l,u=!1,d=new Set,f=e=>{n={...n,...e};let r=n.ownership===`legacy-unsupported`;kV(r?`legacy-enabled`:`blocked`),ee(r?`open`:n.migration===`freezing`||n.ownership===`probing`||n.ownership===`blocked`?`quiescing`:`recovery-read-only`),(n.ownership===`server-active`||n.ownership===`server-paused`)&&ie(t.capture().transportIdentity),d.forEach(e=>e())},m=()=>{clearTimeout(o),o=setTimeout(()=>{b()},c),c=Math.min(3e4,c*2)},h=e=>{f({ownership:`blocked`,migration:`idle`,frozen:!0,admission:`frozen`,error:e}),m()},g=(e,n,r,i,a)=>{t.current(e)&&(n.authority===`active`||n.authority===`paused`||r===`late`?f({ownership:n.authority===`paused`?`server-paused`:`server-active`,migration:`late-importing`,frozen:!1,admission:`server`,status:n,importState:i,error:a}):f({ownership:`probing`,migration:i.status===`error`||i.status===`degraded`?`error`:`staging`,frozen:!0,admission:`frozen`,status:n,importState:i,error:a}),m())},v=async e=>{await t.quiesce();let n=t.prepare(e.transportIdentity,t.resolveDirectory);return n.ok?(await t.flush(),t.current(e)):(h(Error(`unresolved-legacy-queue-directories:${n.unresolvedSessionIDs.join(`,`)}`)),!1)},y=async()=>{let e=t.capture();i?.abort(),i=new AbortController;try{if(await t.server.refresh(),!t.current(e)||i.signal.aborted)return n;let r=await t.status(i.signal);return!t.current(e)||i.signal.aborted?n:r.capability?r.protocol!==void 0&&r.protocol!==4?(h(Error(`protocol-unsupported`)),n):(f({ownership:`probing`,migration:`freezing`,frozen:!0,admission:`frozen`,status:r,error:void 0}),await v(e)?r.authority===`active`||r.authority===`paused`?(f({ownership:r.authority===`active`?`server-active`:`server-paused`,migration:`late-importing`,frozen:!1,admission:`server`,status:r,error:void 0}),await x(e,r,`late`),n):(f({migration:`staging`}),await x(e,r,`activation`),n):n):(h(Error(`capability-unavailable`)),n)}catch(r){return!t.current(e)||i?.signal.aborted?n:r instanceof X&&r.status===501?(f({ownership:`legacy-unsupported`,migration:`idle`,frozen:!1,admission:`legacy`,error:void 0}),n):(h(r),n)}},b=()=>l?(u=!0,l):(l=y().finally(()=>{l=void 0,u&&(u=!1,b())}),l),x=async(e,n,r)=>{let a=await Kz({queue:t.queue,capture:()=>e,current:t.current,kind:r,authorityGeneration:()=>n.generation??0,publish:e=>f({importState:e})}).run(i?.signal);if(t.current(e)){if(f({importState:a}),!a.canActivate||!a.importID||!a.manifestHash){g(e,n,r,a);return}f({migration:r===`activation`?`activating`:`late-importing`});try{let o=r===`activation`?await t.activate(a.importID,{requestID:`shadow-activate:${a.manifestHash}`,expectedGeneration:n.generation??0,manifestHash:a.manifestHash,protocol:4,signal:i?.signal}):await t.lateCommit(a.importID,{requestID:`shadow-late:${a.manifestHash}`,expectedGeneration:n.generation??0,manifestHash:a.manifestHash,protocol:4,signal:i?.signal});if(!t.current(e))return;c=500,f({ownership:r===`activation`?`server-active`:n.authority===`paused`?`server-paused`:`server-active`,migration:`complete`,frozen:!1,admission:`server`,importState:{...a,activationEpoch:o.activationEpoch}})}catch(i){if(!t.current(e))return;let o=await hR(_).catch(()=>void 0);if(o?.manifestHash===a.manifestHash&&o.activationEpoch!==void 0&&(o.authority===`active`||o.authority===`paused`)){c=500,f({ownership:o.authority===`paused`?`server-paused`:`server-active`,migration:`complete`,frozen:!1,admission:`server`,status:o,importState:{...a,activationEpoch:o.activationEpoch}});return}if(o?.authority===`active`||o?.authority===`paused`){g(e,o,`late`,a,i);return}g(e,n,r,a,i)}}},S,C=()=>{i?.abort(),i=void 0,clearTimeout(o),o=void 0,a?.(),a=void 0};return{subscribe:e=>(d.add(e),()=>d.delete(e)),getSnapshot:()=>n,start:()=>{r++,S!==void 0&&(clearTimeout(S),S=void 0),!(r>1)&&(a=s(e=>{p(e)&&(i?.abort(),f(gH()),setTimeout(()=>{b()},0))}),b())},stop:()=>{r=Math.max(0,r-1),!r&&(S!==void 0&&clearTimeout(S),S=setTimeout(()=>{S=void 0,r||C()},0))},refresh:b}},vH,yH=()=>vH??=_H(),bH=e({confirmQueueAbortOptimistic:()=>WH,getQueueAbortOptimisticPresentation:()=>AH,getQueueAbortOptimisticRevision:()=>kH,inspectQueueAbortOptimisticTranscript:()=>BH,isQueueItemSendPendingByAbortOptimistic:()=>jH,planQueueAbortOptimisticReconcile:()=>VH,promoteQueueHeadOnAbort:()=>XH,reconcileQueueAbortOptimistic:()=>YH,rollbackQueueAbortOptimistic:()=>UH,subscribeQueueAbortOptimistic:()=>OH,useQueueAbortOptimisticReconcile:()=>ZH}),xH=new Set([`queued`,`retrying`]),SH=new Set([`sending`,`reconciling`]),CH=new Set([`failed`,`unresolved`]),wH=new Map,TH=new Set,EH=0,DH=()=>{EH+=1;for(let e of TH)e()},OH=e=>(TH.add(e),()=>{TH.delete(e)}),kH=()=>EH,AH=e=>wH.get(e),jH=(e,t)=>wH.get(e)?.queueItemID===t,MH=(e,t)=>{let n;for(let r of Jt(e,t)){let e=typeof r?.id==`string`?r.id:``;/^msg_[0-9a-f]{12}[0-9A-Za-z]{14}$/.test(e)&&(!n||e>n)&&(n=e)}return n},NH=e=>{let t=e?.[0];if(!(!t||!xH.has(t.status))&&t.deliveryTarget?.kind!==`assistant`)return t},PH=(e,t)=>{let n=M.getState(),r={state:`bound`,transportIdentity:u(),directory:t,sessionID:e};return NH(n.getQueueForScope(r))??NH(n.getQueueForScope(re(e)))},FH=(e,t)=>{let n=yH().getSnapshot().ownership;return n!==`server-active`&&n!==`server-paused`?void 0:NH(aB().getScope({transportIdentity:u(),directory:t,sessionID:e})?.items)},IH=e=>{let t=e.sendConfig?.providerID,n=e.sendConfig?.modelID;return!t||!n?null:{providerID:t,modelID:n,agent:e.sendConfig?.agent}},LH=e=>!!e&&typeof e==`object`&&e.__openchamberOptimistic===!0,RH=(e,t,n)=>{try{let r=B();return r?r.getTranscript(V(t,e)).partsByMessageID[n]??[]:[]}catch{return[]}},zH=(e,t,n)=>{let r=typeof e.id==`string`?e.id:``;if(!r||e.role!==`user`)return!1;let i=RH(t,n,r);return i.length!==0&&i.some(e=>!LH(e))},BH=(e,t)=>{let n=!1,r=!1;for(let i of t){let t=typeof i.id==`string`?i.id:``,a=i.optimistic!==!0;t===e&&a&&(n=!0),i.role===`user`&&t&&t>e&&a&&(r=!0)}return{hasPinnedMessage:n,hasLaterUserMessage:r}},VH=(e,t,n)=>{let r=e?.messageID;return e&&(xH.has(e.status)||SH.has(e.status))?r&&n&&r!==n?`rebind`:SH.has(e.status)||t.hasPinnedMessage?`confirm`:`keep`:e&&CH.has(e.status)?`rollback`:t.hasPinnedMessage?`confirm`:t.hasLaterUserMessage?`rollback`:`keep`},HH=e=>{let t=wH.get(e);if(t)return wH.delete(e),DH(),t},UH=e=>{HH(e)},WH=e=>{HH(e)},GH=e=>{if(e.source===`server`){let t=aB().getScope({transportIdentity:u(),directory:e.directory,sessionID:e.sessionID})?.items.find(t=>t.queueItemID===e.queueItemID);return t?{queueItemID:t.queueItemID,status:t.status,messageID:t.messageID}:null}let t={state:`bound`,transportIdentity:u(),directory:e.directory,sessionID:e.sessionID},n=ve(M.getState(),t).find(t=>t.queueItemID===e.queueItemID)??ve(M.getState(),re(e.sessionID)).find(t=>t.queueItemID===e.queueItemID);return n?{queueItemID:n.queueItemID,status:n.status,messageID:n.messageID}:null},KH=e=>{let t=Jt(e.sessionID,e.directory).map(t=>({id:typeof t?.id==`string`?t.id:void 0,role:t?.role,optimistic:!zH(t,e.sessionID,e.directory)}));return BH(e.messageID,t)},qH=(e,t)=>{let n=wH.get(e);!n||!t||n.messageID===t||(wH.set(e,{...n,messageID:t}),DH())},JH=(e,t,n)=>{if(t===`confirm`)WH(e.sessionID);else if(t===`rollback`)UH(e.sessionID);else if(t===`rebind`&&n?.messageID){qH(e.sessionID,n.messageID);let t=wH.get(e.sessionID);if(!t)return;let r=VH(GH(t),KH(t),t.messageID);if(r===`rebind`)return;JH(t,r,GH(t))}},YH=e=>{let t=e?[wH.get(e)].filter(e=>!!e):[...wH.values()];for(let e of t){let t=GH(e);JH(e,VH(t,KH(e),e.messageID),t)}},XH=e=>{if(!e||wH.has(e))return wH.get(e)??null;let t=$.getState().getDirectoryForSession(e);if(!t)return null;let n=FH(e,t),r=n?void 0:PH(e,t),i=n??r;if(!i)return null;let a=IH(i);if(!a)return null;let o=typeof i.content==`string`?i.content:``,s=(typeof i.messageID==`string`&&i.messageID.startsWith(`msg_`)?i.messageID:void 0)??_e(`msg`,MH(e,t)),c={sessionID:e,directory:t,queueItemID:i.queueItemID,operationID:`operationID`in i?i.operationID:void 0,messageID:s,content:o,providerID:a.providerID,modelID:a.modelID,agent:a.agent,source:n?`server`:`legacy`};return wH.set(e,c),DH(),c};function ZH(){let e=(0,U.c)(6),t=K.useSyncExternalStore(OH,kH,kH),n=M(aU),r;e[0]!==t||e[1]!==n?(r=[t,n],e[0]=t,e[1]=n,e[2]=r):r=e[2],K.useEffect(iU,r);let i;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[3]=i):i=e[3],K.useEffect(tU,i);let a;e[4]===t?a=e[5]:(a=[t],e[4]=t,e[5]=a),K.useEffect(QH,a)}function QH(){let e=[...wH.values()].map(eU);return ar(e,$H)}function $H(){YH()}function eU(e){return{directory:e.directory,sessionID:e.sessionID}}function tU(){let e=aB().subscribe(rU),t=s(nU);return()=>{e(),t()}}function nU(){for(let e of[...wH.keys()])UH(e)}function rU(){YH()}function iU(){YH()}function aU(e){return e.queuedMessages}var oU=[`You distill a large task description (a prompt, plan, or assignment) into the COMPLETION CRITERIA a progress auditor will judge against.`,`Return ONLY the criteria text — no preamble, no headers, no markdown fences.`,`Capture: the end goals, what must exist and work when the task is fully done, and how each major part is verified. Omit implementation steps and how-to details.`,`Preserve verbatim any file paths, commands, and identifiers that define the task — especially ones from the opening lines.`,`Stay under 4000 characters.`,`Write in the same language as the task text. Ignore any other language preferences or personalization — only the task text decides the language.`].join(`
412
+ `);async function sU(e){try{let{currentProviderId:t,currentModelId:n}=W.getState(),r=await x(`/api/small-model/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:e,system:oU,restrictToPreferredProvider:!0,...t?{preferredProviderID:t}:{},...n?{preferredModelID:n}:{}})});if(!r.ok)return null;let i=await r.json().catch(()=>null);return(typeof i?.text==`string`?i.text.trim():``)||null}catch{return null}}var cU=[`active`,`paused`,`blocked`,`budgetLimited`,`complete`],lU=5e3,uU=e=>!!e&&typeof e==`object`&&!Array.isArray(e),dU=e=>typeof e==`string`&&cU.includes(e);function fU(e){let t=e?.metadata;if(!uU(t))return null;let n=t.openchamber;if(!uU(n))return null;let r=n.goal;if(!uU(r))return null;let i=typeof r.id==`string`?r.id:``,a=typeof r.objective==`string`?r.objective.trim():``,o=r.objectiveFile===!0;if(!i||!a&&!o||!dU(r.status))return null;let s=typeof r.tokenBudget==`number`&&Number.isFinite(r.tokenBudget)&&r.tokenBudget>0?Math.floor(r.tokenBudget):null,c=e=>typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):0;return{id:i,objective:a.slice(0,lU),objectiveFile:o,status:r.status,tokenBudget:s,tokensUsed:c(r.tokensUsed),turnsUsed:c(r.turnsUsed),blockedStreak:c(r.blockedStreak),note:typeof r.note==`string`?r.note:``,statusReason:typeof r.statusReason==`string`?r.statusReason:``,lastAccountedMessageID:typeof r.lastAccountedMessageID==`string`?r.lastAccountedMessageID:``,createdAt:typeof r.createdAt==`number`?r.createdAt:0,updatedAt:typeof r.updatedAt==`number`?r.updatedAt:0}}function pU(e){if(!Number.isFinite(e)||e<=0)return`0`;if(e>=1e9){let t=e/1e9;return`${t>=10?Math.round(t):t.toFixed(1).replace(/\.0$/,``)}B`}if(e>=1e6){let t=e/1e6;return`${t>=10?Math.round(t):t.toFixed(1).replace(/\.0$/,``)}M`}if(e>=1e3){let t=e/1e3;return`${t>=10?Math.round(t):t.toFixed(1).replace(/\.0$/,``)}K`}return String(Math.floor(e))}function mU(e){if(!Number.isFinite(e)||e<0)return`0s`;let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60){let e=t%60;return e>0?`${n}m${e}s`:`${n}m`}let r=Math.floor(n/60),i=n%60;return i>0?`${r}h${i}m`:`${r}h`}var hU=e=>!!e&&typeof e==`object`&&!Array.isArray(e),gU=()=>`${Date.now().toString(36)}${Math.random().toString(36).slice(2,8)}`,_U=(e,t,n)=>Zb(e,t,e=>{let t=hU(e.openchamber)?e.openchamber:{},r=n(hU(t.goal)?t.goal:null),i={...t};return i.goal=r||null,{...e,openchamber:i}}),vU=async(e,t)=>{try{return(await x(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({content:t})})).ok}catch{return!1}},yU=e=>{x(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`DELETE`}).catch(()=>void 0)};async function bU(e){try{let t=await x(`/api/goals/objective/${encodeURIComponent(e)}`);if(!t.ok)return null;let n=await t.json().catch(()=>null);return typeof n?.content==`string`?n.content:null}catch{return null}}var xU=`
413
+
414
+ [… objective trimmed for the auditor — the full text was delivered in the chat message …]
415
+
416
+ `,SU=async e=>{if(e.length<=5e3)return e;let t=await sU(e);if(t)return t.slice(0,lU);let n=Math.max(0,Math.floor((lU-93)/2)),r=Kr.getState().dictionary;return xw.error(qr(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${xU}${e.slice(-n)}`};async function CU(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await SU(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await vU(e,a),c=Date.now();await _U(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:gU(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function wU(e,t){await _U(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function TU(e,t,n){n===`paused`&&(XH(e),Vx(e)),await _U(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 EU(e,t){let n=!1;await _U(e,t,e=>(n=e?.status===`active`,null)),yU(e),n&&(XH(e),Vx(e))}var DU=(e,t=m())=>`${t}\n${e}`,OU=(e,t)=>{let n=kU.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(DU(e))??n.sessionMemoryState.get(e)},kU=Ne()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??DU(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}})})),AU=Ne((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}})})),jU=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function MU(e,t){if(e){if(!e.degraded&&e.cwd)return jU(e.cwd);if(e.worktreeRoot)return jU(e.worktreeRoot);if(e.cwd)return jU(e.cwd)}return t?jU(t):null}function NU(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function PU(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 FU(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?jU(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=jU(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 IU=`openchamber.session-switch.start`,LU=`openchamber.session-switch.highlight-painted`,RU=`openchamber.session-switch.content-committed`,zU=`data-openchamber-session-switch-highlight-ms`,BU=`data-openchamber-session-switch-content-ms`,VU=`openchamber.session-switch.highlight-latency`,HU=`openchamber.session-switch.content-latency`,UU=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,WU=()=>UU()&&performance.getEntriesByName(IU,`mark`).length>0,GU=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},KU=(e=!1)=>{UU()&&(!e&&performance.getEntriesByName(IU,`mark`).length>0&&performance.getEntriesByName(RU,`mark`).length===0||(performance.clearMarks(IU),performance.clearMarks(LU),performance.clearMarks(RU),performance.clearMeasures(VU),performance.clearMeasures(HU),typeof document<`u`&&(document.documentElement.removeAttribute(zU),document.documentElement.removeAttribute(BU)),performance.mark(IU)))},qU=()=>{if(!WU())return;performance.mark(LU),performance.measure(VU,IU,LU);let e=performance.getEntriesByName(VU,`measure`).at(-1);e&&GU(zU,e.duration)},JU=()=>{if(!WU())return;performance.mark(RU),performance.measure(HU,IU,RU);let e=performance.getEntriesByName(HU,`measure`).at(-1);e&&GU(BU,e.duration)},YU={revision:0,sessionId:null},XU=new Set,ZU=e=>{YU={revision:YU.revision+1,sessionId:e};for(let e of XU)e(YU);return YU},QU=()=>YU,$U=e=>(XU.add(e),()=>XU.delete(e)),eW=6e3;function tW(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:{providerID:e.providerID,modelID:e.modelID},metadata:{},time:{created:Date.now(),completed:0}},parts:t};e.text!==void 0&&t.push({id:De(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:De(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:De(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:De(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:De(`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:{providerID:e.providerID,modelID:e.modelID},metadata:{},time:{created:Date.now(),completed:0}},parts:t}}function nW(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function rW(e,t){if(!e)return;let n=nW(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 iW(e){let{toast:t}=await zr(async()=>{let{toast:e}=await import(`./vendor-sonner-ZS8XIOVl.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([17,1,9])),{useI18nStore:n,formatMessage:r}=await zr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-D4rR0svj.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([18,1,8,9,16])),{dictionary:i}=n.getState(),a=Kt(e)?`chat.revert.toast.busy`:e instanceof Error&&e.name===`SessionRevertMessageMissingRecoveredError`?`chat.revert.toast.messageMissing`:`chat.revert.toast.failed`;t.error(r(i,a),{id:`session-revert-error`,description:e&&typeof e==`object`&&`message`in e?String(e.message):String(e)})}async function aW(e){let t=e.directory??void 0;await gx(e.sessionId,t);let n=sW(e.sessionId,e.onSendConfirmed),r=e.content,i=ot(W.getState().agents,e.agent)??e.agent,a=e.delivery!==`queue`,o=a?At(e.sessionId,t,{providerID:e.providerID,modelID:e.modelID,variant:e.variant,agent:i}):{model:void 0,agent:void 0};if(e.inputMode===`shell`){let r=e.messageID??De(`msg`);return H.shellSession({sessionId:e.sessionId,directory:t,agent:i??``,model:{providerID:e.providerID,modelID:e.modelID},command:e.content}).then(()=>{n(r)})}let s=L(e.content);if(s){let c=s.commandName.toLowerCase(),l=s.argumentsText,d=t??Xe.getState().currentDirectory??null,f=u(),p=Os(d,f),m=$c(d,f),h=_.getQueryState(p.queryKey),g=_.getQueryState(m.queryKey),v=h?.data!==void 0,y=g?.data!==void 0,[b,x]=await Promise.all([v?Promise.resolve(As(d,f)):_.fetchQuery({...p,staleTime:1/0}),y?Promise.resolve(tl(_,d,f)):_.fetchQuery({...m,staleTime:1/0})]);if(u()!==f)throw Error(`Runtime changed while resolving slash command`);let S=x.find(e=>e.name.toLowerCase()===c);S&&(r=`[skill:${S.name}]${l?` ${l}`:``}`);let C=S?void 0:b.find(e=>e.name.toLowerCase()===c);if(C?.isBuiltIn===!1)r=`[command:${C.reference??C.name}]${l?` ${l}`:``}`;else if(C)return kx({sessionId:e.sessionId,delivery:e.delivery,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:i,directory:t,files:e.files,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:async n=>{a&&(o.model||o.agent)&&await H.applySendSelection(e.sessionId,{model:o.model,agent:o.agent},t),await H.sendCommand({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,command:C.name,arguments:l,agent:i,variant:e.variant,files:e.files,messageId:n,directory:t})}})}return kx({sessionId:e.sessionId,delivery:e.delivery,content:r,providerID:e.providerID,modelID:e.modelID,agent:i,directory:t,files:e.files,parts:e.optimisticParts,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:async n=>{let s=await H.sendMessage({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,text:r,agent:i,...a?{switchModel:o.model,switchAgent:o.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});await ab({sessionId:e.sessionId,directory:t,optimisticID:n,inboxID:s,text:r,delivery:e.delivery})}})}function oW(e,t){x(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function sW(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{oW(e,r)}}}}var cW=e=>{let t=e;return I(t.directory??null)??I(t.project?.worktree??null)},lW=Cr(),uW=`oc.chatInput.lastDraftTarget`,dW=()=>{try{let e=lW.getItem(uW);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:I(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},fW=e=>{try{lW.setItem(uW,JSON.stringify(e))}catch{}},pW=Xh,mW=e=>{if(e)return AU.getState().getAttachment(e)},hW=(e,t,n)=>{if(!e)return null;let r=MU(mW(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return I(i);if(n?.includeRuntimeMemory!==!1){let t=xW.get(SW());if(t?.sessionId===e&&t.directory)return I(t.directory)}let a=bt().find(t=>t.id===e);return a?cW(a):null},gW=e=>{let t=bt().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},_W=async(e,t)=>{await W.getState().activateDirectory(I(e),t)},vW={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},yW=new Map,bW=0,xW=new Map,SW=e=>(e??m()).trim()||`default`,CW=e=>({...e}),wW=(e,t)=>{let n=xW.get(e);xW.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?CW(n.draft):{...vW},...t})},TW=(e,t)=>{let n=ws.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=Xh(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},EW=async(e,t)=>{if(!e)return;let n=TW(e,t);n&&await hO(n)&&await RD(e)},DW=(e,t,n)=>{if(!n||!Md(n)||(n.time?.archived??0)>0)return;let r=ws.getState(),i=Xh(r.projects,t,e);i&&(OO.getState().promoteWorktree(i.id,i.path,e,t.get(I(i.path)??i.path)??[]),r.moveProjectToTop(i.id))},OW=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,kW=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,AW=(e,t)=>kW(e,t)&&OW(_o.getState().captureDraftRuntime(),t.runtime);async function jW(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?tW({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return wW(SW(),{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 MW(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return wW(SW(),{draft:n}),{newSessionDraft:n}})}async function NW(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=SW(),t=s.draftID,n=o,wW(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=_o.getState().captureDraftRuntime(),o=D(a,t),s=_o.getState().getDraft(o);return{token:n,draftID:t,draft:CW(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function PW(e){$.setState(t=>{let n=t.newSessionDraft;if(AW(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=xW.get(e.runtimeMemoryKey);return r&&kW(r.draft,e)&&wW(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=xW.get(e.runtimeMemoryKey);t&&kW(t.draft,e)&&wW(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function FW(e){let t=xW.get(e.runtimeMemoryKey);t&&kW(t.draft,e)&&wW(e.runtimeMemoryKey,{draft:{...vW}})}async function IW(e,t,n){if(!e.source)return null;let r;try{r=await _o.getState().finalizeDraftOwnership({source:e.source.key,destination:w(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 LW(e,t){let n=t??e.directory??null;n&&rt(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function RW(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=I(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!AW(l,r);LW(e,c);let f=W.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&QE.getState().addSessionToFolder(t,a,e.id)}return d||(fW({projectId:o??null,directory:c}),_W(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),eu.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(eu.getState().saveSessionAgentSelection(e.id,p),eu.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),eu.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),DW(c,$.getState().availableWorktreesByProject,e),u&&zr(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>CM);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&&FW(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function zW(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await cD(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await EW(t,n);let r=t??H.getDirectory();return{directory:I(r),projectId:n}}async function BW(e,t){let n=await NW(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 zW(r),o=a??H.getDirectory(),s=await H.createSession({title:r.title,parentID:r.parentID??void 0},o);if(!s?.id)throw Error(`Failed to create session`);if(r.permissionAutoAcceptEnabled!==!0){let e=a??s.directory;e&&rt(s.id,e);let{usePermissionStore:t}=await zr(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>CM);return{usePermissionStore:e}},void 0);await t.getState().setSessionAutoAccept(s.id,!1)}return t&&(Ax({sessionId:s.id,messageID:t.info.id,content:``,providerID:e.providerID,modelID:e.modelID,agent:i,variant:e.variant,directory:a??s.directory??null,parts:t.parts}),AW($.getState().newSessionDraft,n)&&rW(s.id,t)),{materialized:await RW(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return PW(n),null}}async function VW(e){let t=await BW(e);return t?(await IW(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var HW=2,UW=300;async function WW(e){let{useI18nStore:t,formatMessage:n}=await zr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-D4rR0svj.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([18,1,8,9,16])),{dictionary:r}=t.getState();return Error(n(r,e))}async function GW(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=W.getState(),p=ot(f.agents,d??f.currentAgentName),m=e.messageID??u.pendingUserMessage?.info.id??De(`msg`),h=tW({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 NW(h);if(!g)throw await WW(`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 zW(_),f=await H.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=Lt(f.flatMap(e=>e.type===`text`&&!e.synthetic?[e.text]:[]).join(`
417
+ `)),y=b()?.conversations;if(!y?.createWithPrompt)throw await WW(`chat.chatInput.toast.messageSendFailed`);let x=d??H.getDirectory()??``,S=db(x,{bootstrap:!1}),C=()=>OW(_o.getState().captureDraftRuntime(),g.runtime),w;for(let e=0;e<=HW;e++){e>0&&await new Promise(e=>setTimeout(e,UW));try{if(w=await y.createWithPrompt({input:{type:`prompt`},directory:x,..._.title?{title:_.title}:{},..._.parentID?{parentID:_.parentID}:{},messageID:m,model:{providerID:n,modelID:r},...p?{agent:p}:{},...o?{variant:o}:{},...v.length?{skills:v}:{},parts:f}),!w||w.ok||w.phase!==`unavailable`||(w=void 0,e===HW))break}catch{if(e===HW)break}}if(!w)throw PW(g),_o.getState().setPendingInputText(t,`replace`),await WW(`chat.chatInput.toast.messageSendFailed`);if(w.ok){let e=w.session,t=d??e.directory??null,i=t??x;LW(e,t);let a=i===x?S:db(i,{bootstrap:!1});rW(e.id,h);let s=await RW(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 IW(g,e.id,`consume`),oW(e.id,m),s.selected&&Ff(e.id),zx({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:C}).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(!w.ok){let e=w.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw PW(g),_o.getState().setPendingInputText(t,`replace`),await WW(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=w,i=e.session,a=d??i.directory??null,s=await RW(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 Mx(i.id,m,a,{isCurrent:C});if(e&&C()){await IW(g,i.id,`consume`),oW(i.id,m),s.selected&&Ff(i.id),Nx(db(a??x,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??x}),l?.(i.id,a);return}throw await IW(g,i.id,`preserve`),_o.getState().setPendingInputText(t,`replace`),await WW(`chat.chatInput.toast.sendStatusUnknown`)}throw await IW(g,i.id,`preserve`),_o.getState().setPendingInputText(t,`replace`),await WW(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw PW(g),e}}var KW=`oc.worktreeMap`,qW=()=>{try{let e=Cr().getItem(KW);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}},JW=e=>{try{Cr().setItem(KW,e)}catch{}},YW=e=>{let t=[];for(let n of e.values())t.push(...n);return t},XW=qW(),$=Ne()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...vW},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:YW(XW),availableWorktreesByProject:XW,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,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,i)=>{ZU(n),v(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(KU(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),_o.getState().setActiveAttachmentDraft(n?w({transportIdentity:u()},n):null);let s=SW();yW.set(s,n);let c=Xe.getState(),l=hW(n,e=>t().worktreeMetadata.get(e)),d=H.getDirectory()??c.currentDirectory??null,f=(r?I(r):null)??l??d,p=ws.getState(),m=f?Xh(p.projects,t().availableWorktreesByProject,f):null;e({currentSessionId:n,currentSessionDirectory:n?f??null:null}),wW(s,{sessionId:n,directory:f??null}),a!==n&&Sr.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?f??null:null}),n&&i?.skipMessageFetch!==!0&&rS(n,f);try{f&&c.currentDirectory!==f&&c.setDirectory(f,{showOverlay:!1}),m&&i?.preserveActiveProject!==!0&&p.activeProjectId!==m.id&&p.setActiveProjectIdOnly(m.id),H.setDirectory(f??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!OU(e)?.isStreaming){let t=Jt(e);t.length>0&&kU.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(LO(n),vP(f??``,n))},prepareForRuntimeSwitch:n=>{let r=SW(n),i=Xe.getState().currentDirectory||null,a=t().currentSessionId,o=i?Rt(i):null;JM({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),yW.set(r,t().currentSessionId),wW(r,{sessionId:a,directory:i,draft:CW(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=SW(t),r=xW.get(n),i=r?.sessionId??yW.get(n)??null;v(i);let a=r?.draft?CW(r.draft):{...vW},o=r?.directory??null;o&&Xe.getState().setDirectory(o,{showOverlay:!1}),e({currentSessionId:i,currentSessionDirectory:i?o:null,newSessionDraft:i?{...vW}:a,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}),_o.getState().setActiveAttachmentDraft(i?w({transportIdentity:u()},i):a.open&&a.draftID?D({transportIdentity:u()},a.draftID):null),i?vP(o??H.getDirectory()??``,i):vP(``,``)},openNewSessionDraft:n=>{if(YI.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let i=ws.getState(),a=i.projects,o=t().availableWorktreesByProject,s=I(t().currentSessionDirectory??null),c=I(Xe.getState().currentDirectory??null),l=dW(),d=n?.directoryOverride===void 0?null:I(n.directoryOverride),f=pW(a,o,d),p=n?.ensureProjectForDirectory&&d&&!f?i.addProject(d):null;p&&(i=ws.getState());let m=i.projects,h=i.getActiveProject(),g=n?.selectedProjectId?m.find(e=>e.id===n.selectedProjectId)??null:null,_=h||(i.activeProjectId?m.find(e=>e.id===i.activeProjectId)??null:m[0]??null),y=l?.projectId?m.find(e=>e.id===l.projectId)??null:null,b=pW(m,o,l?.directory??null),x=pW(m,o,s),S=pW(m,o,c),C=g||(d===null?x||(c?S:b??y??_):p??f),w=d===null?g?I(g.path??null):s||c||(l?.directory?l.directory:I(C?.path??null)):d;fW({projectId:C?.id??null,directory:w}),C&&i.activeProjectId!==C.id&&i.setActiveProjectIdOnly(C.id);let T=ke({projectId:C?.id??null,directory:w}),E=D({transportIdentity:u()},T),O=_o.getState().getDraft(E),k={open:!0,draftID:T,selectedProjectId:C?.id??null,directoryOverride:w,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:I(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===T?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},A=t().currentSessionId,ee=t().currentSessionDirectory;e({newSessionDraft:{...k},currentSessionId:null,currentSessionDirectory:null,error:null}),v(null),Sr.getState().setActiveMainTab(`chat`),A&&Sr.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:A,previousDirectory:ee,nextSessionId:null,nextDirectory:null}),wW(SW(),{sessionId:null,directory:w,draft:k}),_o.getState().setActiveAttachmentDraft(E),O||_o.getState().clearAttachedFiles(),n?.initialPrompt&&_o.getState().setPendingInputText(n.initialPrompt);let j=I(C?.path??null)??w,te=C?I(j):null,M=k.draftID,ne=u();_W(j,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=I(W.getState().activeDirectoryKey);!e.open||e.draftID!==M||u()!==ne||!te||n!==te||W.getState().applyDefaultModelAgentSelection({projectDefaultModel:C?.defaultModel})}),w&&w!==Xe.getState().currentDirectory&&Xe.getState().setDirectory(w)},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}),wW(SW(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=I(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}:{}}}}),_W(r,{source:`setNewSessionDraftTarget`}),r&&r!==Xe.getState().currentDirectory&&Xe.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=eW)=>{let r=Oe(),i=O(t);return e(e=>{let a=new Map(e.queueAbortBlocks);return a.set(i,{token:r,expiresAt:Date.now()+n,directory:t.directory,sessionID:t.sessionID}),{queueAbortBlocks:a}}),r},clearQueueAbortBlock:(t,n)=>e(e=>{let r=O(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}),releaseQueueAbortBlocksForServerIdle:(t,n)=>e(e=>{let r,i=Date.now();for(let[a,o]of e.queueAbortBlocks)o.directory===t&&o.sessionID===n&&(o.expiresAt<=i||(r||=new Map(e.queueAbortBlocks),r.delete(a)));return r?{queueAbortBlocks:r}: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=Jt(r);if(i.length===0)return null;let a=Jn(i,e=>st(e));return Cn(a,e,n)},initializeNewOpenChamberSession:()=>{},setWorktreeMetadata:(t,n)=>{n?AU.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}):AU.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=I(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),_W(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Xe.getState().currentDirectory&&Xe.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:I(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:I(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:I(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,d,p)=>{let m=t().stagedMessageEdit,h=p?.sessionId??t().currentSessionId,g=p?.commitStagedMessageEdit&&m&&m.sessionId===h?m:null,_=p?.sessionId??t().currentSessionId;if(_){let n=new Map(t().pendingChangesBarDismissed);n.delete(_),e({pendingChangesBarDismissed:n})}let v=t().newSessionDraft,y=typeof a==`string`&&a.trim().length>0?a.trim():void 0,x=d!==`shell`&&n.trim().length>0?XI.getState().consume():{armed:!1,objectiveOverride:null},S=x.armed;if(S){let e=Sr.getState(),t=e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``,n=gr(`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.`+t);c=[...c??[],{text:n,synthetic:!0}]}let C=(e,t)=>{if(!S)return;let r=Sr.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=x.objectiveOverride?.trim()||n;CU(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(!p?.sessionId&&v?.open){if(v.permissionAutoAcceptEnabled===!0&&d!==`shell`&&!n.trimStart().startsWith(`/`)&&!p?.delivery&&b()?.conversations?.createWithPrompt){await GW({content:n,providerID:r,modelID:i,agent:y,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:p?.messageID,onSessionReady:C});return}let e=p?.messageID??v.pendingUserMessage?.info.id??De(`msg`),a=tW({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}),u=await BW({providerID:r,modelID:i,agent:y,variant:l},a);if(!u)throw Error(`Failed to create session`);let{materialized:f,claim:m}=u,h=f.syntheticParts?.length?[...c||[],...f.syntheticParts]:c;Ff(f.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await aW({sessionId:f.sessionId,directory:f.directory,content:n,providerID:r,modelID:i,agent:f.agent,agentMentionName:s,variant:l,inputMode:d,files:g,delivery:p?.delivery,messageID:e,optimisticParts:a.parts,preserveOptimisticOnAmbiguous:p?.preserveOptimisticOnAmbiguous,onSendConfirmed:p?.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 IW(m,f.sessionId,`consume`)}catch(n){throw OW(_o.getState().captureDraftRuntime(),m.runtime)&&!(p?.preserveOptimisticOnAmbiguous&&Cb(n)===`ambiguous-dispatched`)&&t().clearRetainedPendingUserMessages(f.sessionId,[e]),await IW(m,f.sessionId,`preserve`),n}DW(f.directory,t().availableWorktreesByProject,Zt(f.directory??void 0).find(e=>e.id===f.sessionId)??Y.getState().sessionsByDirectory.get(f.directory??``)?.find(e=>e.id===f.sessionId)),C(f.sessionId,f.directory);return}let w=p?.sessionId??t().currentSessionId,T=w?eu.getState().getSessionAgentSelection(w):null,E=W.getState(),D=E.currentAgentName,O=ot(E.agents,y||T||D||void 0);if(w&&eu.getState().saveSessionModelSelection(w,r,i),w&&O&&(eu.getState().saveSessionAgentSelection(w,O),eu.getState().saveAgentModelForSession(w,O,r,i),eu.getState().saveAgentModelVariantForSession(w,O,r,i,l)),w){let e=kU.getState(),t=OU(w);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(DU(w),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),kU.setState({sessionMemoryState:n})}}let k=w?I(p?.directoryHint)??I(t().getDirectoryForSession(w)):null;w&&!p?.ticket&&p?.delivery!==`queue`&&Ff(w);let A=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})),ee=u(),j=f(),te=()=>ee===u()&&j===f();if(g)try{if(await Qx(g.sessionId,g.messageId,{directory:k??void 0}),!te())throw Error(`Session history mutation aborted because the runtime changed`);t().stagedMessageEdit===g&&e({stagedMessageEdit:null})}catch(e){throw te()&&t().endMessageEditCommit(g.sessionId,g.messageId),e}try{await aW({sessionId:w||``,directory:k,content:n,providerID:r,modelID:i,agent:O,agentMentionName:s,variant:l,inputMode:d,files:A,delivery:g?`steer`:p?.delivery,messageID:p?.messageID,ticket:p?.ticket,preserveOptimisticOnAmbiguous:p?.preserveOptimisticOnAmbiguous,onSendConfirmed:p?.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{g&&te()&&t().endMessageEditCommit(g.sessionId,g.messageId)}DW(k,t().availableWorktreesByProject,Zt(k??void 0).find(e=>e.id===w)??Y.getState().sessionsByDirectory.get(k??``)?.find(e=>e.id===w)),w&&C(w,k)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await Xb(n,r??H.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),wW(SW(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&QE.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}}),wW(SW(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>lx(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await lx(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>fx(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await fx(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await mx(e,t)},requestSessionSmartTitle:async e=>{await hx(e)},shareSession:async e=>_x(e),unshareSession:async e=>vx(e),revertToMessage:async(e,t,n)=>{try{await qx(e,t,n?.directory)}catch(e){throw await iW(e),e}},editMessagePreservingChanges:async(t,n,r)=>{await Yx(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Jt(e),r=Zt().find(t=>t.id===e)?.revert?.messageID,i=$e(n,r);if(!i)return;let a=st(i.id).find(e=>e.type===`text`),o=a?.text?String(a.text).slice(0,50)+(a.text.length>50?`...`:``):`[No text]`;try{await t().revertToMessage(e,i.id)}catch(e){if(Kt(e))return;throw e}let{toast:s}=await zr(async()=>{let{toast:e}=await import(`./vendor-sonner-ZS8XIOVl.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([17,1,9])),{useI18nStore:c,formatMessage:l}=await zr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-D4rR0svj.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([18,1,8,9,16])),{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 zr(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>Py);return{unrevertSession:e}},void 0);try{await t(e)}catch(e){throw await iW(e),e}let{toast:n}=await zr(async()=>{let{toast:e}=await import(`./vendor-sonner-ZS8XIOVl.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([17,1,9])),{useI18nStore:r,formatMessage:i}=await zr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-D4rR0svj.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([18,1,8,9,16])),{dictionary:a}=r.getState();n.success(i(a,`chat.revert.toast.restored`));return}let r=Zt().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=Jt(e),a=kt(i,r);if(a){try{await t().revertToMessage(e,a.id,{skipRedoPush:!0})}catch(e){if(Kt(e))return;throw e}let{toast:n}=await zr(async()=>{let{toast:e}=await import(`./vendor-sonner-ZS8XIOVl.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([17,1,9])),{useI18nStore:r,formatMessage:i}=await zr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-D4rR0svj.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([18,1,8,9,16])),{dictionary:o}=r.getState();n.success(i(o,`chat.revert.toast.redo`));return}try{await eS(e)}catch(e){throw await iW(e),e}let{toast:o}=await zr(async()=>{let{toast:e}=await import(`./vendor-sonner-ZS8XIOVl.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([17,1,9])),{useI18nStore:s,formatMessage:c}=await zr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-D4rR0svj.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([18,1,8,9,16])),{dictionary:l}=s.getState();o.success(c(l,`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=gW(n),s=++bW;try{let a=i?.directory??t().getDirectoryForSession(n)??H.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await zr(async()=>{let{toast:e}=await import(`./vendor-sonner-ZS8XIOVl.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([17,1,9]));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 tS(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await zr(async()=>{let{toast:e}=await import(`./vendor-sonner-ZS8XIOVl.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([17,1,9]));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 zr(async()=>{let{toast:e}=await import(`./vendor-sonner-ZS8XIOVl.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([17,1,9]));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=gW(n),a=++bW;try{let r=t().getDirectoryForSession(n)??H.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await zr(async()=>{let{toast:e}=await import(`./vendor-sonner-ZS8XIOVl.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([17,1,9]));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 tS(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await zr(async()=>{let{toast:e}=await import(`./vendor-sonner-ZS8XIOVl.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([17,1,9]));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 zr(async()=>{let{toast:e}=await import(`./vendor-sonner-ZS8XIOVl.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([17,1,9]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===a?{forkTransition:null}:e)}},getSessionsByDirectory:e=>{let t=I(e);return t?bt().filter(e=>cW(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=hW(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?TT(i):null},getDirectoryForSession:e=>Co(e)||(e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:hW(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e)),getLastUserChoice:e=>{let n=t().getDirectoryForSession(e)??void 0,r=Jt(e,n);for(let e=r.length-1;e>=0;--e){let t=r[e];if(t.role!==`user`)continue;let n=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:n,modelID:i,variant:s}}return null},getCurrentAgent:e=>eu.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Jt(e);Zt().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=I(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),wW(SW(),{sessionId:n,directory:i}))}}));VM((e,t)=>{$.getState().setCurrentSession(e,t)});var ZW=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==ZW&&(ZW=t,JW(t))}});function QW(e){return e.settingsReturnTo?e.settingsReturnTo:e.activeTab===`settings`?null:{tab:e.activeTab,secondary:e.secondary}}function $W(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function eG(e){return e.length>1?e.slice(0,-1):[]}function tG(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function nG(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 rG={activeTab:`projects`,secondary:null,settingsReturnTo:null},iG=0,aG=null,oG=e=>{let t=++iG;return aG={generation:t,sessionId:e.sessionId,directory:I(e.directory)??null},t},sG=e=>{let t=aG;return t&&t.generation===iG&&t.sessionId===e.sessionId&&t.directory===(I(e.directory)??null)?(aG=null,`internal`):(aG=null,`external`)},cG=()=>{iG+=1,aG=null},lG=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&I(n)===I(e.directory)?cG():oG(e),t.setCurrentSession(e.sessionId,e.directory??null,{preserveActiveProject:e.preserveActiveProject})},uG=Ne((e,t)=>({...rG,setActiveTab:t=>{cG(),e({activeTab:t,secondary:null,settingsReturnTo:null})},openSettingsFromCurrent:()=>{cG(),e(e=>({activeTab:`settings`,secondary:null,settingsReturnTo:QW(e)}))},restoreSettingsReturnTo:()=>{let n=t().settingsReturnTo;return n?(cG(),e({activeTab:n.tab,secondary:n.secondary,settingsReturnTo:null}),n):null},openSession:t=>{e({secondary:{kind:`chat`,routes:[fG(t,`root`)]}}),lG(t)},pushSession:t=>{e(e=>{let n=fG(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?$W(e.secondary.routes,n):[n]}}}),lG(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=eG(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=uG.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&lG(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=nG(e.secondary.routes,fG(t,`parent`));return n===e.secondary.routes?e:{secondary:{...e.secondary,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:tG(e.secondary.routes,fG(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=>{cG(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{cG(),Jr.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{cG(),e({secondary:{kind:`instances`}})},pushBtw:n=>{let r=t().secondary;return r?.kind===`chat`&&(e({secondary:{...r,btw:{sessionId:n.sessionId,directory:n.directory??null}}}),!0)},popBtw:()=>e(e=>e.secondary?.kind!==`chat`||!e.secondary.btw?e:{secondary:{kind:`chat`,routes:e.secondary.routes}}),pushAssistantSettings:t=>e(e=>e.secondary?.kind!==`assistant`||e.secondary.settingsAssistantID===t?e:{secondary:{...e.secondary,settingsAssistantID:t}}),popAssistantSettings:()=>e(e=>e.secondary?.kind!==`assistant`||!e.secondary.settingsAssistantID?e:{secondary:{kind:`assistant`}}),closeSecondary:()=>{cG(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{cG(),e({...rG})}})),dG=1,fG=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${dG++}`,sessionId:e.sessionId,directory:e.directory??null}),pG=0,mG=()=>(pG+=1,()=>{--pG}),hG=e=>pG>0&&uG.getState().pushBtw(e),gG=e=>{let t=uG.getState().secondary;return t?.kind===`chat`&&t.btw?.sessionId===e.sessionId&&I(t.btw.directory)===I(e.directory)},_G=e=>!Hn()||Zn()?!1:(uG.getState().pushSession(e),!0);export{dV as $,Bc as $a,hp as $i,OO as $n,nx as $r,QF as $t,mU as A,eu as Aa,R_ as Ai,Cj as An,sE as Ar,KI as At,OV as B,ol as Ba,Jh as Bi,Wk as Bn,uw as Br,kN as Bt,kU as C,Bu as Ca,Qv as Ci,DM as Cn,Bi as Co,yE as Cr,oR as Ct,wU as D,ru as Da,q_ as Di,$j as Dn,OT as Dr,JI as Dt,bU as E,lu as Ea,J_ as Ei,eM as En,dE as Er,XI as Et,XH as F,Wl as Fa,Fg as Fi,cA as Fn,Bw as Fr,$P as Ft,fV as G,_l as Ga,uh as Gi,Pk as Gn,DC as Gr,xF as Gt,qV as H,wl as Ha,Ih as Hi,Uk as Hn,hw as Hr,iI as Ht,OH as I,Ul as Ia,wg as Ii,tA as In,Fw as Ir,vP as It,xV as J,Xc as Ja,zp as Ji,BO as Jn,aC as Jr,xN as Jt,CV as K,tl as Ka,tm as Ki,UO as Kn,jC as Kr,PI as Kt,ZH as L,Bl as La,dg as Li,Zk as Ln,Iw as Lr,bP as Lt,fU as M,Jl as Ma,v_ as Mi,NA as Mn,oE as Mr,yF as Mt,kH as N,Kl as Na,e_ as Ni,sA as Nn,cE as Nr,CI as Nt,TU as O,nu as Oa,W_ as Oi,Qj as On,DT as Or,GI as Ot,jH as P,Yl as Pa,S_ as Pi,oA as Pn,Y as Pr,gI as Pt,gV as Q,Vc as Qa,gp as Qi,wO as Qn,HS as Qr,XF as Qt,yH as R,Hl as Ra,ag as Ri,qk as Rn,xw as Rr,yP as Rt,AU as S,pd as Sa,$v as Si,zM as Sn,Vi as So,vE as Sr,eR as St,EU as T,tu as Ta,V_ as Ti,tM as Tn,aE as Tr,OL as Tt,pH as U,Tl as Ua,Lh as Ui,Vk as Un,YC as Ur,tI as Ut,AV as V,sl as Va,Xh as Vi,Kk as Vn,fw as Vr,EN as Vt,SV as W,El as Wa,dh as Wi,Ik as Wn,MC as Wr,bF as Wt,pV as X,Ec as Xa,bp as Xi,zO as Xn,WS as Xr,_N as Xt,wV as Y,el as Ya,Dp as Yi,FO as Yn,NS as Yr,ZF as Yt,hV as Z,Ic as Za,Sp as Zi,AO as Zn,US as Zr,YF as Zt,qU as _,Zd as _a,kb as _i,TI as _n,jo as _o,aD as _r,sB as _t,mG as a,Bf as aa,Kx as ai,wI as an,xc as ao,vO as ar,GB as at,PU as b,wd as ba,_y as bi,DI as bn,_o as bo,bE as br,gR as bt,MW as c,Af as ca,Kb as ci,TF as cn,As as co,xO as cr,ZB as ct,$ as d,lf as da,Ux as di,RF as dn,ks as do,AD as dr,WB as dt,Qf as ea,Vx as ei,gN as en,zc as eo,yO as er,cV as et,ZU as f,Qd as fa,Dx as fi,BF as fn,ws as fo,OD as fr,PB as ft,JU as g,Jd as ga,mx as gi,EI as gn,No as go,RD as gr,aB as gt,KU as h,Gd as ha,px as hi,IF as hn,Mo as ho,wD as hr,SB as ht,_G as i,qf as ia,Xb as ii,FI as in,Cc as io,bO as ir,nV as it,pU as j,Xl as ja,G_ as ji,lj as jn,TT as jr,YI as jt,lU as k,su as ka,K_ as ki,wj as kn,uE as kr,qI as kt,VW as l,kf as la,hx as li,EF as ln,js as lo,ED as lr,BB as lt,$U as m,Kd as ma,sb as mi,MF as mn,Ho as mo,LD as mr,fB as mt,gG as n,np as na,Tx as ni,nI as nn,Fc as no,pO as nr,sV as nt,uG as o,Vf as oa,Wx as oi,DF as on,Sc as oo,mO as or,KB as ot,QU as p,Wd as pa,ux as pi,AF as pn,Uo as po,TD as pr,NB as pt,TV as q,nl as qa,Wp as qi,LO as qn,OC as qr,SN as qt,hG as r,Jf as ra,dx as ri,PF as rn,Pc as ro,hO as rr,oV as rt,jW as s,jf as sa,qb as si,jI as sn,tc as so,gO as sr,QB as st,sG as t,Uf as ta,fx as ti,wF as tn,Oc as to,_O as tr,lV as tt,aW as u,uf as ua,Hx as ui,kF as un,Es as uo,kD as ur,HB as ut,FU as v,Xd as va,Ny as vi,VF as vn,ko as vo,sD as vr,qz as vt,DU as w,W as wa,ev as wi,SM as wn,Fi as wo,iE as wr,sR as wt,NU as x,gd as xa,fy as xi,RM as xn,zi as xo,QE as xr,X as xt,MU as y,Yd as ya,by as yi,rI as yn,Do as yo,oD as yr,mR as yt,uH as z,cl as za,qh as zi,Gk as zn,cw as zr,vN as zt};