@openchambery/web 1.19.12 → 1.19.13-beta.2

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 (168) hide show
  1. package/dist/assets/{AgentAvatar-CX0a1rKE.js → AgentAvatar-mbvX7YlW.js} +1 -1
  2. package/dist/assets/AssistantView-D5c557Oe.js +2 -0
  3. package/dist/assets/DiagramView-CjNUrHsU.js +1 -0
  4. package/dist/assets/FadeInOnReveal-moBbL8Ll.js +1 -0
  5. package/dist/assets/{Icon-BYM02QyU.js → Icon-CkzzhaLr.js} +1 -1
  6. package/dist/assets/MarkdownRenderer-BHfbAwVO.js +2 -0
  7. package/dist/assets/MarkdownRendererImpl-CkBoUibc.js +7 -0
  8. package/dist/assets/{MarkstreamRendererImpl-BFdJzxia.js → MarkstreamRendererImpl-BrXUOI9g.js} +1 -1
  9. package/dist/assets/MobileDetailNavigation-aY9-HwBN.js +1 -0
  10. package/dist/assets/MobileShareBridge-CRt_8DmM.js +4 -0
  11. package/dist/assets/MobileSurface-CIhtF-CU.js +2 -0
  12. package/dist/assets/{MultiRunWindow-C3p3lj3U.js → MultiRunWindow-DDq6C8t7.js} +1 -1
  13. package/dist/assets/OnboardingScreen-j0iCyH7f.js +1 -0
  14. package/dist/assets/{OverlayScrollbar-KUpvYHdv.js → OverlayScrollbar-CDC5B3RH.js} +1 -1
  15. package/dist/assets/SettingsView-DFWWMvAj.js +25 -0
  16. package/dist/assets/{SettingsWindow-8IDuPZA5.js → SettingsWindow-CnYfBplB.js} +1 -1
  17. package/dist/assets/TerminalView-D5CQFVVm.js +8 -0
  18. package/dist/assets/ToolOutputDialog-VMI7TQFT.js +10 -0
  19. package/dist/assets/{appThemeRegistry-B87OLIgc.js → appThemeRegistry-UIrP0-5h.js} +1 -1
  20. package/dist/assets/assistant-attachment-cache-C0aRnFkj.js +1 -0
  21. package/dist/assets/{button-C0cth9tl.js → button-xx1UOBA5.js} +1 -1
  22. package/dist/assets/{clipboard-DJ4nQEuY.js → clipboard-CUasgPiF.js} +1 -1
  23. package/dist/assets/{collapsible-DFT9cE80.js → collapsible-CACHBRYZ.js} +1 -1
  24. package/dist/assets/{context-menu-CAp74NfV.js → context-menu-CYbm4wBZ.js} +1 -1
  25. package/dist/assets/desktopHosts-DILvrAok.js +1 -0
  26. package/dist/assets/desktopRelayRestore-t8asCr3m.js +1 -0
  27. package/dist/assets/{diagram-BryzMuta.js → diagram-u0BC9uuY.js} +1 -1
  28. package/dist/assets/{dialog-CgbV5ljg.js → dialog-BwQ3rY_x.js} +1 -1
  29. package/dist/assets/dualLimitLru-D8Sphgua.js +1 -0
  30. package/dist/assets/{es-BHqnSjoZ.js → es-CRjOwvYM.js} +1 -1
  31. package/dist/assets/fileQueries-Bgly-E8f.js +1 -0
  32. package/dist/assets/{fr-BfrlJY9i.js → fr-D9taEN9L.js} +1 -1
  33. package/dist/assets/{gitApi-tTtHQVA3.js → gitApi-Bu4W3bgD.js} +1 -1
  34. package/dist/assets/imageSource-BlAJJUEI.js +1 -0
  35. package/dist/assets/{input-DFLpqjGR.js → input-CI730njs.js} +1 -1
  36. package/dist/assets/insertionBoundaries-B1AqxsBD.js +4 -0
  37. package/dist/assets/{ja-DP-7qt-x.js → ja-CYQ5aoWp.js} +1 -1
  38. package/dist/assets/{ko-E2B5vGQP.js → ko-BwASV0Q0.js} +1 -1
  39. package/dist/assets/main-CqcB6tKc.js +169 -0
  40. package/dist/assets/main-DG-k0j8A.js +2 -0
  41. package/dist/assets/markdown-worker-CptoICmq.js +2 -0
  42. package/dist/assets/markdownHeightCache-DEjGKLv8.js +3 -0
  43. package/dist/assets/markdownTheme-DOfGg-A7.js +1 -0
  44. package/dist/assets/miniChat-BQtYQrsh.js +2 -0
  45. package/dist/assets/mobile-8iyqtXkr.js +2 -0
  46. package/dist/assets/{multirun-B0V3hdnD.js → multirun-CG_FCb_Z.js} +1 -1
  47. package/dist/assets/persistence-YbQKzHUQ.js +3 -0
  48. package/dist/assets/{pl-r8X5gRM5.js → pl-DUI1vPil.js} +1 -1
  49. package/dist/assets/platform-DzsGqlGW.js +2 -0
  50. package/dist/assets/projectMeta-DMpMDWE1.js +3 -0
  51. package/dist/assets/{pt-BR-DcpdXCf5.js → pt-BR-CZQFJllP.js} +1 -1
  52. package/dist/assets/relay-image-stream-DM7atqJs.js +2 -0
  53. package/dist/assets/renderElectronMiniChatApp-DBzRdJl8.js +2 -0
  54. package/dist/assets/renderMobileApp-CIseqCyn.js +28 -0
  55. package/dist/assets/runtime-auth-D66yq6ie.js +1 -0
  56. package/dist/assets/runtime-fetch-zIalUnbb.js +1 -0
  57. package/dist/assets/runtime-switch-LvWDU-SL.js +1 -0
  58. package/dist/assets/runtimeConfig-D8nJYB-e.js +2 -0
  59. package/dist/assets/runtimeEndpointReset-CSub_ecV.js +147 -0
  60. package/dist/assets/{sessionChangeSummary-hVby3sJk.js → sessionChangeSummary-DQDZ5HW-.js} +1 -1
  61. package/dist/assets/{sessionLookup-B6P_aCun.js → sessionLookup-BiBD-4wC.js} +1 -1
  62. package/dist/assets/sortable-tabs-strip-Dom6Sthu.js +1 -0
  63. package/dist/assets/src-AA-5nXsF.css +2 -0
  64. package/dist/assets/{store-BDFdnk6l.js → store-CSnH_QXM.js} +2 -2
  65. package/dist/assets/terminalApi-noa4Cdbh.js +1 -0
  66. package/dist/assets/{textarea-Cgo_nWUU.js → textarea-BfNtUdJE.js} +1 -1
  67. package/dist/assets/{tooltip-BifLJ8o0.js → tooltip-DPxumadF.js} +1 -1
  68. package/dist/assets/{uk-Di0vl9V-.js → uk-C1FYZlmA.js} +1 -1
  69. package/dist/assets/{url-Pk6tQ1EZ.js → url-CVhsI9kR.js} +1 -1
  70. package/dist/assets/{useAppFontEffects-Dmes1chr.js → useAppFontEffects-qHt5uaFN.js} +32 -32
  71. package/dist/assets/useAssistantUIStore-CLPCNoj_.js +1 -0
  72. package/dist/assets/useDesktopWindowControlsLayout-BipyIXiK.js +1 -0
  73. package/dist/assets/{useEffectiveDirectory-CU2ChP0J.js → useEffectiveDirectory-DSNCCbCt.js} +1 -1
  74. package/dist/assets/useFontPreferences-CB-cGo3I.js +1 -0
  75. package/dist/assets/useMobileNavigationStore-C1NJGAik.js +413 -0
  76. package/dist/assets/useSessionAutoCleanup-Dcn6Unvd.js +2 -0
  77. package/dist/assets/useUIStore-CxOoCv7B.js +1 -0
  78. package/dist/assets/useWorkerHighlightedLines-CzpT4M7V.js +7 -0
  79. package/dist/assets/{utils-BiK3tBGM.js → utils-BHTVlVov.js} +1 -1
  80. package/dist/assets/{zh-CN-coFCfeQE.js → zh-CN-C96qP1ip.js} +1 -1
  81. package/dist/assets/{zh-TW-oDRZ1-yb.js → zh-TW-BsRk1Rbb.js} +1 -1
  82. package/dist/index.html +12 -9
  83. package/dist/mini-chat.html +12 -9
  84. package/dist/mobile.html +12 -9
  85. package/package.json +1 -1
  86. package/server/index.js +19 -0
  87. package/server/lib/assistant-delivery-parts.js +19 -1
  88. package/server/lib/assistants/DOCUMENTATION.md +56 -11
  89. package/server/lib/assistants/assign.js +455 -30
  90. package/server/lib/assistants/assign.test.js +351 -0
  91. package/server/lib/assistants/cards.js +16 -2
  92. package/server/lib/assistants/cards.test.js +16 -1
  93. package/server/lib/assistants/contact-active-turn.http.test.js +134 -0
  94. package/server/lib/assistants/contact-attachments.http.test.js +436 -0
  95. package/server/lib/assistants/contact-attachments.js +814 -0
  96. package/server/lib/assistants/contact-attachments.p1.test.js +307 -0
  97. package/server/lib/assistants/contact-attachments.test.js +249 -0
  98. package/server/lib/assistants/contact-store.js +552 -19
  99. package/server/lib/assistants/contact-store.test.js +415 -1
  100. package/server/lib/assistants/contact-tools.js +114 -14
  101. package/server/lib/assistants/contact-tools.test.js +135 -6
  102. package/server/lib/assistants/contracts.js +42 -2
  103. package/server/lib/assistants/harness.js +4 -1
  104. package/server/lib/assistants/harness.test.js +124 -0
  105. package/server/lib/assistants/routes.js +46 -1
  106. package/server/lib/assistants/service.js +569 -84
  107. package/server/lib/assistants/service.test.js +936 -37
  108. package/server/lib/fs/prompt-attachment-store.js +663 -0
  109. package/server/lib/fs/prompt-attachment-store.test.js +263 -0
  110. package/server/lib/fs/routes.js +28 -72
  111. package/server/lib/fs/routes.test.js +15 -30
  112. package/server/lib/llm/catalog.js +91 -16
  113. package/server/lib/llm/catalog.test.js +152 -11
  114. package/server/lib/notifications/APNS.md +20 -4
  115. package/server/lib/notifications/DOCUMENTATION.md +5 -0
  116. package/server/lib/notifications/apns-runtime.js +136 -18
  117. package/server/lib/notifications/apns-runtime.test.js +128 -0
  118. package/server/lib/notifications/apns-titles.js +21 -1
  119. package/server/lib/notifications/live-activity-refresh-runtime.js +185 -0
  120. package/server/lib/notifications/live-activity-refresh-runtime.test.js +242 -0
  121. package/server/lib/notifications/runtime.js +93 -2
  122. package/server/lib/notifications/runtime.test.js +167 -4
  123. package/server/lib/opencode/core-routes.js +2 -1
  124. package/server/lib/opencode/settings-helpers.js +12 -0
  125. package/server/lib/opencode/settings-runtime.js +16 -0
  126. package/server/lib/opencode/settings-runtime.test.js +21 -0
  127. package/server/lib/scheduled-tasks/runtime.js +21 -0
  128. package/server/lib/scheduled-tasks/runtime.test.js +24 -0
  129. package/dist/assets/AssistantView-DxIghtun.js +0 -2
  130. package/dist/assets/DiagramView-BeUgp_Y0.js +0 -1
  131. package/dist/assets/FadeInOnReveal-CTlNE4Hg.js +0 -1
  132. package/dist/assets/MarkdownRenderer-C4MGa_kQ.js +0 -2
  133. package/dist/assets/MarkdownRendererImpl-DB4Q3kGa.js +0 -7
  134. package/dist/assets/MobileDetailNavigation-B_RwWOwv.js +0 -1
  135. package/dist/assets/MobileShareBridge-UiOLx0-2.js +0 -4
  136. package/dist/assets/MobileSurface-CNChj_dX.js +0 -2
  137. package/dist/assets/OnboardingScreen-DS2nugLX.js +0 -1
  138. package/dist/assets/SettingsView-BXfKsz0J.js +0 -25
  139. package/dist/assets/TerminalView-BiKCueth.js +0 -8
  140. package/dist/assets/ToolOutputDialog-BC2F_Fdl.js +0 -10
  141. package/dist/assets/desktopHosts-Dc2PS66M.js +0 -1
  142. package/dist/assets/desktopRelayRestore-T9y0orqa.js +0 -1
  143. package/dist/assets/fileQueries-BY-9OWzp.js +0 -1
  144. package/dist/assets/insertionBoundaries-CCQpZ5zn.js +0 -4
  145. package/dist/assets/main-C_PUoT3E.js +0 -169
  146. package/dist/assets/main-Dkg31fRY.js +0 -2
  147. package/dist/assets/markdown-worker-CTsrtpPh.js +0 -2
  148. package/dist/assets/markdownHeightCache-CYDlisxr.js +0 -3
  149. package/dist/assets/markdownTheme-DyJ4Gfcj.js +0 -2
  150. package/dist/assets/miniChat-C9QMj8T8.js +0 -2
  151. package/dist/assets/mobile-Z_X7CbzB.js +0 -2
  152. package/dist/assets/persistence-DdUac14I.js +0 -3
  153. package/dist/assets/platform-B4KKLnZ5.js +0 -2
  154. package/dist/assets/projectMeta-DRW9MQ4z.js +0 -3
  155. package/dist/assets/renderElectronMiniChatApp-Dn1Su1dd.js +0 -2
  156. package/dist/assets/renderMobileApp-BG1JJt1Q.js +0 -28
  157. package/dist/assets/runtimeConfig-C6matIEB.js +0 -2
  158. package/dist/assets/runtimeEndpointReset-kgwmUJDb.js +0 -147
  159. package/dist/assets/sortable-tabs-strip-C8_9kHqu.js +0 -1
  160. package/dist/assets/src-B-P5qIBc.css +0 -2
  161. package/dist/assets/terminalApi-947l7Ra3.js +0 -1
  162. package/dist/assets/useAssistantUIStore-me6s63b2.js +0 -1
  163. package/dist/assets/useDesktopWindowControlsLayout-DuZ6URPR.js +0 -1
  164. package/dist/assets/useFontPreferences-BCOBlaAd.js +0 -1
  165. package/dist/assets/useMobileNavigationStore-C8_J-qTp.js +0 -413
  166. package/dist/assets/useSessionAutoCleanup-FOQeu1_T.js +0 -1
  167. package/dist/assets/useUIStore-CuaA8-Hp.js +0 -1
  168. package/dist/assets/useWorkerHighlightedLines-GBqKnki1.js +0 -7
@@ -0,0 +1,413 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/store-CSnH_QXM.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-base-ui-CnHfUmDN.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/vendor-sonner-DVzioF3d.js"])))=>i.map(i=>d[i]);
2
+ import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{T as n,i as r,p as i,w as a}from"./runtime-auth-D66yq6ie.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-LvWDU-SL.js";import{n as _,r as v}from"./runtime-fetch-zIalUnbb.js";import{$ as y,$t as b,A as x,At as S,Ct as C,Dt as w,Et as T,F as E,H as D,I as O,L as k,M as A,Mt as j,N as ee,Nt as te,P as ne,Pt as re,Q as M,R as N,St as ie,Tt as ae,X as oe,Xt as se,Yt as ce,_t as le,bt as ue,d as P,dt as de,et as fe,gt as pe,ht as F,i as me,jt as I,nt as he,o as L,ot as ge,q as _e,r as ve,rt as ye,tt as be,u as R,vt as xe,w as Se,wt as Ce,xn as we,xt as Te,yt as z,zt as Ee}from"./persistence-YbQKzHUQ.js";import{a as De,i as Oe,o as ke,r as Ae}from"./vendor-zustand-B4dlGEM2.js";import{nt as je,rt as Me}from"./vendor-base-ui-CnHfUmDN.js";import{Ct as Ne,Ft as Pe,Ht as Fe,Lt as Ie,Nt as B,Ot as Le,Pt as V,R as Re,St as ze,Vt as Be,Xt as Ve,Yt as He,n as Ue,qt as We,r as Ge,t as Ke}from"./platform-DzsGqlGW.js";import{b as qe,t as Je,y as Ye}from"./useUIStore-CxOoCv7B.js";import{i as Xe,n as Ze,r as Qe,t as $e}from"./vendor-pathe-vBmvQE8f.js";import{a as et,n as tt,o as nt}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as rt}from"./vendor-react-DLPElpoQ.js";import{r as it}from"./vendor-tanstack-query-core-BWz0ose6.js";import{a as at,l as ot,n as st,o as ct,s as lt,t as ut}from"./vendor-tanstack-react-query-D7pys_c9.js";import{r as dt}from"./vendor-sonner-DVzioF3d.js";import{n as ft}from"./vendor-reactuses-core-DDoDDyM9.js";import{t as pt}from"./clipboard-CUasgPiF.js";import{i as mt,t as ht}from"./store-CSnH_QXM.js";import{i as gt}from"./useAssistantUIStore-CLPCNoj_.js";import{t as _t}from"./vendor-fuse.js-DB5wDJbI.js";var vt=1048576,yt=new TextEncoder,bt=e=>e instanceof Error&&e.name===`AbortError`,xt=e=>bt(e)?e:new DOMException(`The operation was aborted.`,`AbortError`),St=async e=>{try{await e?.cancel()}catch{}},Ct=async e=>{try{await e.cancel()}catch{}},wt=async(e,t={})=>{let n=t.fetch??_,r;try{r=await n(e,{method:`GET`,headers:{Accept:`text/event-stream`},signal:t.signal})}catch(e){throw t.signal?.aborted||bt(e)?xt(e):Error(`SSE request failed`)}if(!r.ok)throw await St(r.body),Error(`SSE response failed`);if(!/^text\/event-stream(?:\s*;|\s*$)/i.test(r.headers.get(`content-type`)??``))throw await St(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 Ct(i),i.releaseLock(),t.signal?.aborted||bt(e)?xt(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>vt)throw Error(`SSE response exceeds buffer limit`);u=i,l.push(a)}},h=e=>{if(e.length===0)return;o+=e,s+=yt.encode(e).byteLength;let t=o===`data`?4:o.startsWith(`data:`)?5+ +(o.charAt(5)===` `):0;if(u+s-t>vt)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||bt(e)?xt(e):e instanceof Error&&e.message===`SSE response exceeds buffer limit`?e:Error(`SSE response read failed`)}finally{d||await Ct(i),i.releaseLock()}},Tt=null,Et=null,Dt=null,Ot=0,kt=null,At=new Set,jt=new Map,Mt=e=>e===`session-index-changed`||e===`message-queue-changed`||e===`assistants-changed`,Nt=()=>{jt.clear()},Pt=e=>jt.get(e),Ft=(e,t)=>{let n=jt.get(e);(n===void 0||t>n)&&jt.set(e,t)},It=3e4,Lt=45e3,Rt=()=>{Dt&&=(clearTimeout(Dt),null)},zt=()=>{if(Et||At.size===0)return;let e=Math.min(1e3*2**Math.min(Ot,5),It);Et=setTimeout(()=>{Et=null,Ot+=1,Gt()},e)},Bt=()=>{Rt();let e=Tt;Tt=null,e?.controller.abort()},Vt=e=>{if(Rt(),At.size===0||Tt!==e)return;let t=setTimeout(()=>{Tt===e&&Dt===t&&(Dt=null,Bt(),zt())},Lt);Dt=t},Ht=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}},Ut=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,...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: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}:{}}},Wt=e=>{let t=Ut(e);if(t){t.type===`event-stream-ready`&&(Ot=0),Mt(t.type)&&`revision`in t&&Ft(t.type,t.revision);for(let e of At)try{e(t)}catch{}}},Gt=()=>{if(typeof window>`u`||At.size===0||Tt)return;let e={controller:new AbortController};Tt=e,wt(`/api/openchamber/events`,{signal:e.controller.signal,onOpen:()=>{Tt===e&&Vt(e)},onActivity:()=>{Tt===e&&Vt(e)},onMessage:t=>{if(Tt!==e)return;let n=Ht(t);n&&Wt(n)}}).then(()=>{Tt===e&&(Tt=null,Rt(),zt())},()=>{Tt===e&&(Tt=null,Rt(),e.controller.signal.aborted||zt())})},Kt=()=>{kt||typeof window>`u`||(kt=s(()=>{Nt(),Et&&=(clearTimeout(Et),null),Bt(),Ot=0,Gt()}))},qt=()=>{kt?.(),kt=null},Jt=e=>(At.add(e),Kt(),Gt(),()=>{At.delete(e),At.size===0&&(Nt(),Et&&=(clearTimeout(Et),null),Ot=0,Bt(),qt())}),Yt=!1,Xt=Promise.resolve(),Zt=null,Qt=()=>{Yt||(Yt=!0,Xt=new Promise(e=>{Zt=e}))},$t=async()=>Xt,en=()=>{if(!Yt)return;Yt=!1;let e=Zt;Zt=null,e?.()},tn=`openchamber_input_draft_metadata_v1`,nn=`openchamber_input_draft_metadata_migration_v1`,rn=`openchamber_chat_input_draft_`,an=`openchamber_chat_confirmed_mentions_`,on=()=>({ok:!1,error:{code:`unavailable`}}),sn=()=>({ok:!1,error:{code:`cancelled`}}),cn=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),ln=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),un=(e,t)=>Object.keys(e).every(e=>t.includes(e)),dn=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,fn=e=>typeof e==`string`&&e.length>0,pn=e=>({read:async t=>{if(!e)return on();try{return{ok:!0,value:e.getItem(t)}}catch(e){return cn(e)}},write:async(t,n)=>{if(!e)return on();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return cn(e)}},remove:async t=>{if(!e)return on();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return cn(e)}},keys:async()=>{if(!e)return on();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 cn(e)}}}),mn=()=>{try{return pn(typeof window>`u`?null:window.localStorage)}catch{return pn(null)}},hn=(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}},gn=async e=>{let t=await e.keys();if(!t.ok)return t;let n=new Set;for(let e of t.value)e.startsWith(rn)&&n.add(e.slice(29)),e.startsWith(an)&&n.add(e.slice(36));let r=[];for(let i of n){let n=`${rn}${i}`,a=`${an}${i}`,[o,s]=await Promise.all([e.read(n),e.read(a)]);if(!o.ok)return o;if(!s.ok)return s;r.push(hn(i,o.value,s.value,[n,a].filter(e=>t.value.includes(e))))}return{ok:!0,value:r}},_n=e=>{if(!(!ln(e)||!un(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]}},vn=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&fn(t[0])&&(t[1]===`session`||t[1]===`draft`)&&fn(t[2])&&e===JSON.stringify(t)}catch{return!1}},yn=e=>{if(!ln(e)||!un(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)&&!fn(e.claimedTransportIdentity))&&!(r&&!n)&&!(t&&(!n||!r)))return{complete:t,claimedTransportIdentity:e.claimedTransportIdentity,captured:n,markerCommitted:r,cleanupComplete:t}},bn=e=>{if(!ln(e)||!un(e,[`version`,`drafts`,`tombstones`,`migration`,`legacy`])||e.version!==1||!ln(e.drafts)||!ln(e.tombstones)||!ln(e.legacy)||!un(e.legacy,[`new`,`entries`])||!ln(e.legacy.entries))return;let t=yn(e.migration);if(!t)return;let n={};for(let[t,r]of Object.entries(e.drafts)){let e=T(r);if(!e||t!==z(e.key))return;n[t]=e}let r={};for(let[t,n]of Object.entries(e.tombstones)){if(!vn(t)||!dn(n))return;r[t]=n}let i={};for(let[t,n]of Object.entries(e.legacy.entries)){let e=_n(n);if(!e||t!==e.suffix||t===`new`)return;i[t]=e}let a=e.legacy.new===void 0?void 0:_n(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}}},xn=(e=``)=>({version:1,drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:e,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),Sn=e=>{try{return{ok:!0,value:JSON.stringify(e)}}catch{return{ok:!1,error:{code:`serialization`}}}},Cn=async e=>{let t=await e.read(tn);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:null};try{let e=bn(JSON.parse(t.value));return e?{ok:!0,value:e}:{ok:!1,error:{code:`corrupt`}}}catch{return{ok:!1,error:{code:`corrupt`}}}},wn=async(e,t)=>{let n=bn(t);if(!n)return{ok:!1,error:{code:`corrupt`}};let r=Sn(n);return r.ok?e.write(tn,r.value):r},Tn=e=>ln(e)&&un(e,[`version`,`claimedTransportIdentity`])&&e.version===1&&fn(e.claimedTransportIdentity)?{version:1,claimedTransportIdentity:e.claimedTransportIdentity}:void 0,En=e=>Sn({version:1,claimedTransportIdentity:e}),Dn=(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}}},On=e=>[...new Set([e.legacy.new,...Object.values(e.legacy.entries)].flatMap(e=>e?.keys??[]))],kn=new WeakMap,An=e=>{let t=kn.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=bn(t);return n?i?a(async()=>i?wn(e,n):on()):Promise.resolve(on()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},migrate:(t,n={})=>{if(r)return r;let o=a(async()=>{let r=await Cn(e);if(!r.ok)return r;let a=r.value??xn(),o=i&&(n.persistenceEnabled??!0);if(!a.migration.captured){let n=await gn(e);if(!n.ok)return n;if(!o)return{ok:!0,value:Dn(a,n.value,``)};if(a=Dn(a,n.value,t),!i)return{ok:!0,value:a};let r=await wn(e,a);if(!r.ok)return r}if(!i||!(n.persistenceEnabled??!0)){let t=await gn(e);return t.ok?{ok:!0,value:a}:t}let s=await e.read(nn);if(!s.ok)return s;if(s.value!==null)try{let t=Tn(JSON.parse(s.value));if(!t)return{ok:!1,error:{code:`corrupt`}};if(t.claimedTransportIdentity!==a.migration.claimedTransportIdentity){let t=En(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(nn,t.value);if(!n.ok)return n}}catch{return{ok:!1,error:{code:`corrupt`}}}else{let t=En(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(nn,t.value);if(!n.ok)return n}if(a.migration.cleanupComplete)return{ok:!0,value:a};for(let t of On(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 wn(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 kn.set(e,o),o},jn=e=>{let t=An(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=bn(e);return t?n?new Promise(e=>{i.push({snapshot:t,resolve:e}),s()}):Promise.resolve(on()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},cancelPending:()=>{let e=i;i=[],e.forEach(({resolve:e})=>e(sn())),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(sn()))}await(r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve()),await t.setEnabled(e),await t.flush()}}},Mn=`openchamber-input-drafts`,Nn=1,Pn=`blobs`,Fn=`blobRefs`,In=class extends Error{code;constructor(e){super(e),this.code=e}},Ln=e=>({ok:!1,error:{code:e instanceof In?e.code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota-exceeded`:e instanceof DOMException&&e.name===`AbortError`?`transaction-aborted`:`transaction-failed`}}),Rn=e=>{if(!(e instanceof Blob)&&!ie(e))throw new In(`invalid-value`)},zn=e=>{if(!e)throw new In(`invalid-value`)},Bn=(e,t)=>({id:xe(e),blobID:t,transportIdentity:e.transportIdentity,ownerKind:e.owner.kind,ownerID:e.owner.ownerID}),Vn=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}`},Hn=async(e,t)=>(e.fingerprint??await Vn(e.value))===t,Un=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)}},Wn=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}},Gn=(e,t)=>{let n=Wn(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))},Kn=(e=qn())=>{let t=async(t,n)=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=await e.getBlobRef(xe(t));return!r||n!==void 0&&r.blobID!==n?!1:(await e.deleteBlobRef(r.id),await Un(e),(await e.getAllBlobRefs()).some(e=>e.blobID===r.blobID)||await e.deleteBlob(r.blobID),!0)})}}catch(e){return Ln(e)}};return{put:async(t,n)=>{try{zn(t),Rn(n);let r=await Vn(n);return await e.transaction(async e=>{let i=await e.getBlob(t);if(i&&!await Hn(i,r))throw new In(`blob-id-conflict`);i||await e.putBlob({id:t,value:n,refCount:0,fingerprint:r})}),{ok:!0,value:void 0}}catch(e){return Ln(e)}},putAndRetain:async(t,n,r)=>{try{zn(n),Rn(r);let i=await Vn(r);return await e.transaction(async e=>{let a=xe(t),o=await e.getBlobRef(a);if(o&&o.blobID!==n)throw new In(`blob-id-conflict`);let s=await e.getBlob(n);if(s&&!await Hn(s,i))throw new In(`blob-id-conflict`);s||await e.putBlob({id:n,value:r,refCount:0,fingerprint:i}),o||await e.putBlobRef(Bn(t,n)),await Un(e)}),{ok:!0,value:void 0}}catch(e){return Ln(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 Ln(e)}},readReference:async t=>{try{return{ok:!0,value:(await e.transaction(e=>e.getBlobRef(xe(t))))?.blobID}}catch(e){return Ln(e)}},retain:async(t,n)=>{try{return zn(n),await e.transaction(async e=>{let r=await e.getBlobRef(xe(t));if(r&&r.blobID!==n)throw new In(`blob-id-conflict`);if(!await e.getBlob(n))throw new In(`missing-blob`);r||await e.putBlobRef(Bn(t,n)),await Un(e)}),{ok:!0,value:void 0}}catch(e){return Ln(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)Gn(a,n)&&t.get(i)!==a.blobID&&(await e.deleteBlobRef(i),r.push(i));for(let[r,s]of t){let t=Wn(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 Un(e,!0),{released:r,repaired:i,missing:a}})}}catch(e){return Ln(e)}},reconcileOwnerReferences:async(t,n)=>{let r=new Map;for(let[e,i]of n)r.set(xe({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 Un(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 Ln(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 Ln(e)}}}},qn=()=>({transaction:async e=>{let t=await Jn(),n=t.transaction([Pn,Fn],`readwrite`),r=n.objectStore(Pn),i=n.objectStore(Fn),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()}}}),Jn=()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(new In(`database-unavailable`));return}let n=indexedDB.open(Mn,Nn),r=!1,i=()=>{r||(r=!0,t(new In(`database-unavailable`)))};n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(Pn)||e.createObjectStore(Pn,{keyPath:`id`}),e.objectStoreNames.contains(Fn)||e.createObjectStore(Fn,{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}),Yn=()=>({drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:``,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),Xn=e=>({version:1,drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}),Zn=e=>{let t=Xn(e),n=Qn(JSON.parse(JSON.stringify(t)));return{drafts:n.drafts,tombstones:n.tombstones,migration:n.migration,legacy:n.legacy}},Qn=e=>{let t=bn(e);if(!t)throw Error(`invalid draft snapshot`);return t},$n=e=>e instanceof Map?[...e.entries()]:Object.entries(e??{}),er=e=>typeof e==`string`?e:z(e),tr=[`session`,`draft`,`surface`],nr=e=>({transportIdentity:e.transportIdentity,owner:{kind:e.owner.kind,ownerID:e.owner.ownerID},attachmentOccurrenceRefID:e.attachmentOccurrenceRefID}),rr=e=>JSON.parse(JSON.stringify(e)),ir=e=>e.phase===`metadata`?{phase:`metadata`,error:{code:e.error.code}}:{phase:`blob`,error:{...e.error},...e.reference?{reference:nr(e.reference)}:{}},ar=e=>({status:e.status,keys:[...e.keys],errors:e.errors.map(ir),cleanupErrors:e.cleanupErrors.map(ir)}),or=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,sr=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&tr.includes(t[1])&&typeof t[2]==`string`&&t[0].length>0&&t[2].length>0}catch{return!1}},cr=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:rr(t)}]:[]),lr=e=>{let t=new Map;for(let n of Object.values(e))for(let e of cr(n))t.set(xe(e.reference),e);return t},ur=(e,t)=>({phase:`blob`,error:{...e},...t?{reference:nr(t)}:{}}),dr=(e,t=[])=>({status:e,keys:t,errors:[],cleanupErrors:[]}),fr=e=>e?.attachment.locator.kind===`blob`?e.attachment.locator.blobID:``,pr=(e,t,n={})=>{let r=Yn(),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?ar(e):e)},u=async(t=r.drafts)=>{let n=[],i=new Map([...lr(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(nr(r.reference),r.expectedBlobID);a.ok?c.delete(t):n.push(ur(a.error,r.reference))}return n},d=async(t,n,r,i)=>{let o=nr(t),s=await e.releaseIfMatches(o,n);s.ok||(c.set(xe(o),{reference:nr(o),expectedBlobID:n,generation:a,reason:i}),r.push(ur(s.error,o)))},f=async(t,n)=>{let r=t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,i=nr(t.reference),a=rr(t.attachment),o=await e.readReference(i);if(!o.ok)return{acquired:!1,error:ur(o.error,i)};if(o.value&&o.value!==r)return{acquired:!1,error:ur({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:ur(t.error,i)};let o=await n?.(nr(i),rr(a));if(o===void 0)return{acquired:!1,error:ur({code:`runtime-value-missing`},i)};let s=await e.putAndRetain(i,r,o);return s.ok?{acquired:!0}:{acquired:!1,error:ur(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:ur(t.error,i)}}if(s.error.code!==`missing-blob`)return{acquired:!1,error:ur(s.error,i)};let c=await n?.(nr(i),rr(a));if(c===void 0)return{acquired:!1,error:ur({code:`runtime-value-missing`},i)};let l=await e.putAndRetain(i,r,c);return l.ok?{acquired:!0}:{acquired:!1,error:ur(l.error,i)}};return{seed:t=>l(async()=>{if(!i)return dr(`disabled`);if(o)return{...dr(`failed`),errors:[ur({code:`invalid-record`})]};let n;try{if(!t)n=Yn();else{let e=Qn(JSON.parse(JSON.stringify(t)));n={drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}}}catch{return{...dr(`failed`),errors:[ur({code:`invalid-record`})]}}let a=lr(n.drafts),s=await e.reconcileReferences(new Map([...a].map(([e,t])=>[e,fr(t)])),{ownerKinds:tr});return s.ok?(r=n,o=!0,{...dr(`committed`),errors:s.value.missing.map(e=>ur({code:`missing-blob`},a.get(e)?.reference))}):{...dr(`failed`),errors:[ur(s.error)]}}),commit:e=>{let n=[...$n(e.drafts).map(([e])=>e),...(e.delete??[]).map(er)];return i?l(async()=>{if(!o)return dr(`unseeded`,n);if(!i)return dr(`disabled`,n);let s=a,c=[],l=Zn(r),p=$n(e.drafts),m=$n(e.tombstones),h=(e.delete??[]).map(er);if(p.some(([e,t])=>!sr(e)||!or(t.revision))||m.some(([e,t])=>!sr(e)||!or(t))||h.some(e=>!sr(e))||new Set(p.map(([e])=>e)).size!==p.length||m.some(([e])=>p.some(([t])=>t===e)))return{...dr(`failed`,n),errors:[ur({code:`invalid-record`})]};try{for(let[e,t]of p){let n=T(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=Qn(Xn(l));l.drafts=t.drafts,l.tombstones=t.tombstones,l.migration=t.migration,l.legacy=t.legacy}catch{return{...dr(`failed`,n),errors:[ur({code:`invalid-record`})],cleanupErrors:c}}if(!await e.isCurrent())return dr(`stale`,n);let g=lr(r.drafts),_=lr(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,fr(_.get(xe(e))),c,`acquire-failed`);return{...dr(`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,fr(_.get(xe(e))),c,`stale`);return{...dr(`stale`,n),cleanupErrors:c}}if(!i||s!==a){for(let e of v.reverse())await d(e,fr(_.get(xe(e))),c,`disabled`);return{...dr(`disabled`,n),cleanupErrors:c}}let y=await t.persist(Xn(l));if(!y.ok){for(let e of v.reverse())await d(e,fr(_.get(xe(e))),c,`metadata-failed`);return{...dr(`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{...dr(`committed`,n),cleanupErrors:c}}):Promise.resolve(ar(dr(`disabled`,n)))},reconcile:()=>l(async()=>{if(!o)return dr(`unseeded`);if(!i)return dr(`disabled`);let t=await u(),n=new Map([...lr(r.drafts)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``])),a=await e.reconcileReferences(n,{ownerKinds:tr}),s=a.ok?a.value.missing.map(e=>ur({code:`missing-blob`},lr(r.drafts).get(e)?.reference)):[ur(a.error)];return{status:a.ok?`committed`:`failed`,keys:[],errors:s,cleanupErrors:t}}),retryCleanup:()=>l(async()=>({...dr(`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}}},mr=`openchamber-composer-reference-draft`,hr=`openchamber-pasted-text-draft`,gr=e=>Array.from(e).length,_r=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),vr=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,yr=(e,t)=>{let n=[],r=[],i=0;for(let a=0;a<Math.min(t.length,F.referenceCount);a+=1){let o=t[a];if(!(!_r(o)||!vr(o.id,F.idLength)||!vr(o.token,F.displayLength)||typeof o.text!=`string`||o.text.length>F.pastePayloadLength||typeof o.characterCount!=`number`||!Number.isSafeInteger(o.characterCount)||o.characterCount!==gr(o.text)||typeof o.index!=`number`||!Number.isSafeInteger(o.index)||o.index<1))for(let t=e.indexOf(o.token);t>=0&&n.length<F.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>F.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)},br=e=>{try{let t=JSON.parse(e);if(!_r(t)||typeof t.text!=`string`)return{text:e,references:[]};if(t.type===mr)return(t.version===2?Ce(t.text,t.references):void 0)??{text:t.text,references:[]};if(t.type===hr){let e=t.version===1&&Array.isArray(t.references)?yr(t.text,t.references):[];return Ce(t.text,e)??{text:t.text,references:[]}}}catch{}return{text:e,references:[]}},xr=`file://`,Sr=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(`/`)},Cr=e=>{let t=e.replace(/\\/g,`/`).trim();return t.toLowerCase().startsWith(xr)?t:`${xr}${Sr(t)}`},wr=(e,t)=>`${e}\u0000${t}`,Tr=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)}),Er=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)},Dr=(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,Or=e=>({version:1,key:e,revision:1,text:``,attachments:[],syntheticParts:[],mentions:[]}),kr=(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}),Ar=((e={})=>{let t=e.sink??mn(),n=e.repository??An(t),r=e.coordinator??jn(t),i=e.blobStore??Kn(),a=e.durability??pr(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 De()((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=>T(e),k=()=>e.runtimeCapture?.()??{transportIdentity:u(),generation:f()},A=e=>{let t=k();return t.transportIdentity===e.transportIdentity&&t.generation===e.generation},j=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)],ee=e=>new Set(j(e).map(e=>e.attachmentRefID)),te=(e,t,n)=>{let r=ee(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))}}},ne=()=>e.createID?.()??fe(),re=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 Tr(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}:{}}},M=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:M(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:M(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},ae=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}}))},oe=()=>{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()},se=e=>{if(!r().persistenceEnabled){S.add(e);return}m.add(e),ae([e]),!h&&(g=k(),h=setTimeout(()=>{oe()},40))},ce=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)},le=(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`?se(o):ce([o]),c},P=e=>e?pe(e):void 0,de=(e=[])=>JSON.parse(JSON.stringify(e)),F=(e,t,n,r=!1,i=!1)=>({status:e,...P(n)?{record:P(n)}:{},errors:de(t?.errors),cleanupErrors:de(t?.cleanupErrors),current:r,durable:i}),me=(e,t,n,r,i=!1,a=!1)=>({status:e,errors:de(t?.errors),cleanupErrors:de(t?.cleanupErrors),current:i,durable:a,source:P(n),destination:P(r)}),I=e=>e.status,he=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},ge=async(e,t)=>{let n={},i=r().draftAttachmentViews[z(e.key)]??{};for(let r of j(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`&&ie(i[r.attachmentRefID].dataUrl)?i[r.attachmentRefID].dataUrl:void 0);if(r.locator.kind===`url`&&e!==void 0&&(e!==r.locator.url||!ie(e))||r.locator.kind===`blob`&&e!==void 0&&!(e instanceof Blob)&&!(typeof e==`string`&&ie(e)))return;e!==void 0&&(n[r.attachmentRefID]=await re(r,e))}return n},_e=e=>e?z(e):`legacy-unowned`,ve=e=>C.get(e)??0,ye=e=>{C.set(e,ve(e)+1)},be=(e,n,r=!1)=>{r&&ye(e),t(t=>{let r=n(t.attachmentBuckets[e]??[]);return{attachmentBuckets:{...t.attachmentBuckets,[e]:r},..._e(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`&&!he(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(!he(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 ge(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(I(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=pe(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:M(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(!he(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(!he(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(I(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 me(`stale`,void 0,l,u);if(!he(e.expectedSourceRevision))return me(`failed`,void 0,l,u);if(!l||l.revision!==e.expectedSourceRevision||u)return me(`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 me(`failed`,void 0,l,u);let h=Math.max(l.revision+1,m+1);if(!he(h))return me(`failed`,void 0,l,u);let g=O(e.disposition===`preserve`?{...l,key:e.destination,revision:h}:{...Or(e.destination),revision:h});if(!g)return me(`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 me(I(_),_,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=pe(g);if(!x)return me(`failed`,_,l,u);if(b&&!v&&!y)return me(`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:M(_)}:{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 me(S?`committed`:`stale`,_,l,g,S,!0)},flushDraftPersistence:async()=>{for(await oe();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({...Or(e),revision:(r().tombstones[n]??0)+1});if(!a)throw Error(`Invalid empty draft`);return E(n),t(e=>({drafts:{...e.drafts,[n]:a}})),ce([n]),a},getDraft:e=>r().drafts[z(e)],setDraftText:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return le(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 le(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)=>le(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)=>le(e,e=>({...e,revision:e.revision+1,mentions:t})),addDraftMention:(e,t)=>le(e,e=>({...e,revision:e.revision+1,mentions:[...e.mentions,t]})),removeDraftMention:(e,t)=>le(e,e=>({...e,revision:e.revision+1,mentions:e.mentions.filter(e=>e.value!==t)})),setDraftSyntheticParts:(e,t)=>le(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 le(e,e=>({...e,revision:e.revision+1,syntheticParts:a}),n.revision)?i:null},setDraftAttachments:(e,t)=>le(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 Tr(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??ne(),g=i.partID?Te(i.partID,h):ue(h),_=ne(),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??ne(),o=n.partID?Te(n.partID,a):ue(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?j(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:M(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 j(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 re(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&&j(a).find(e=>e.attachmentRefID===n);if(!a||!o)return!1;let s=He(o)?Ve(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&&j(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 Tr(d)}catch{let e=r().drafts[o],i=e&&j(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&&j(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=ne(),_={attachmentID:g,attachmentRefID:h?Te(h.partID,g):ue(g),filename:a?.filename??d.name,mimeType:d.type,size:d.size,locator:{kind:`blob`,blobID:ne()},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=ue(t);if(e.source===`server`&&e.dataUrl&&ie(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&&ie(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=ne();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=ue(t);if(e.source===`server`&&e.dataUrl&&ie(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&&ie(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=ne();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`&&ie(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 he(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=br(n.text),s=O({...Or(r),text:a.text,composerReferences:a.references,mentions:kr(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=br(n.text),s=O({...Or(e),text:o.text,composerReferences:o.references,mentions:kr(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=_e(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=_e(t),i=ve(n),a=await r().addDraftLocalAttachment(t,e);i!==ve(n)&&a&&r().removeDraftAttachment(t,a.attachmentRefID);return}let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,i=_e(null),a=ve(i),o;try{o=await Tr(e)}catch{return}if(a!==ve(i))return;let s={id:n,file:e,dataUrl:o,mimeType:e.type,filename:e.name,size:e.size,source:`local`};be(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}be(_e(null),t=>t.filter(t=>t.id!==e))},setAttachedFiles:e=>{be(_e(r().activeAttachmentDraft),()=>e,!0)},clearAttachedFiles:()=>{let e=r().activeAttachmentDraft;if(e){ye(_e(e)),r().getDraft(e)||r().ensureDraft(e),r().setDraftAttachments(e,[]);return}be(_e(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=Cr(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=ve(i),o=`${i}\u0000${wr(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!==ve(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=_e(null);if((r().attachmentBuckets[o]??[]).some(t=>t.source===`vscode`&&t.vscodeSource===`file`&&(t.vscodePath||``)===e))return;let s=Cr(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`};be(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=_e(null),o=ve(a),s=`${a}\u0000${wr(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 Tr(t)}catch{return}finally{w.delete(s)}if(o!==ve(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`};be(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=>{Dr(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(!ie(e))return;r().addDraftDurableAttachment(i,{filename:n,mimeType:t,size:Er(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:Er(e),source:`local`,serverPath:e};be(_e(null),e=>[...e,a])}}})})(),jr=new Set;function Mr(e){return jr.add(e),()=>{jr.delete(e)}}function Nr(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 jr)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 Pr(e,t){return e.scopes.includes(`all`)||e.scopes.includes(t)}var Fr=`Updating OpenCode configuration...`,Ir=0,Lr=Fr,Rr=new Set;function zr(){let e={isUpdating:Ir>0,message:Lr};Rr.forEach(t=>t(e))}function Br(e){Ir+=1,Ir===1?(Lr=e||Fr,zr()):e&&(Lr=e,zr())}function Vr(){Ir!==0&&(--Ir,Ir===0&&(Lr=Fr,zr()))}function Hr(e){Lr===e&&Ir>0||(Lr=e,Ir>0&&zr())}function Ur(e){return Rr.add(e),e({isUpdating:Ir>0,message:Lr}),()=>{Rr.delete(e)}}function Wr(){return{isUpdating:Ir>0,message:Lr}}var Gr=qe(),Kr=`projects`,qr=`activeProjectId`,Jr=`projects:manualOrder`,Yr=(e,t)=>{let n=e.trim();return!n.startsWith(`~`)||!t?n:n===`~`?t:n.startsWith(`~/`)||n.startsWith(`~\\`)?`${t}${n.slice(1)}`:n},Xr=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,Zr=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},Qr=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t&&Xr.test(t)?t.toLowerCase():null},$r=e=>{let t=e.trim();if(!t)return``;let n=Yr(t,j(`homeDirectory`,{storage:Gr})||Ne.getState().homeDirectory||``).replace(/\\/g,`/`);return n===`/`?`/`:n.length>1?n.replace(/\/+$/,``):n},ei=e=>{let t=$r(e);if(!t||t===`/`)return`Root`;let n=t.split(`/`).filter(Boolean);return n[n.length-1]||t},ti=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}},ni=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},ri=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)}),ii=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=$r(a);if(!o)continue;let s=be(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=ti(e.iconImage);t&&(c.iconImage=t)}typeof e.color==`string`&&e.color.trim().length>0&&(c.color=e.color.trim());let l=Zr(e.defaultModel);if(l&&(c.defaultModel=l),e.iconBackground===null)c.iconBackground=null;else{let t=Qr(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},ai=()=>{try{let e=j(Kr,{storage:Gr});return e?ii(JSON.parse(e)):[]}catch{return[]}},oi=()=>{if(!I())return null;let e=g().trim().replace(/\/+$/,``);return e?Gr.getItem(`${Kr}:${encodeURIComponent(e)}:manualOrder`):null},si=()=>{try{let e=j(Jr,{storage:Gr})||oi();if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}},ci=()=>{try{let e=j(qr,{storage:Gr});if(typeof e==`string`&&e.trim().length>0)return e.trim()}catch{return null}return null},li=(e,t)=>{try{re(Kr,JSON.stringify(e),{storage:Gr})}catch{}try{t?re(qr,t,{storage:Gr}):te(qr,{storage:Gr})}catch{}},ui=(e,t,n)=>{li(e,t),n&&di(n),ve({projects:e,activeProjectId:t??void 0})},di=e=>{try{re(Jr,JSON.stringify(e),{storage:Gr})}catch{}},fi=ai(),pi=(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},mi=e=>{let t=[],n=new Set;for(let r of e){let e=$r(r.path);!e||n.has(e)||(n.add(e),t.push({name:r.name?.trim(),path:e}))}return t},hi=(e,t,n,r)=>{let i=$r(e.path);if(!i)return null;let a=be(i),o=r===i;return{...t,id:a,path:i,label:ei(i),addedAt:t?.addedAt??n,lastOpenedAt:o?n:t?.lastOpenedAt??n}},gi=()=>{if(typeof window>`u`||!we()?.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 mi(t);let n=e?.workspaceFolder;return typeof n!=`string`||n.trim().length===0?null:mi([{path:n}])},_i=(e,t,n)=>{let r=mi(e),i=n?$r(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=>hi(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 Le(),{projects:s,activeProjectId:l,activeProject:c??s[0]??null}},vi=(e,t)=>e===t?!0:!e||!t?e===t:e.mime===t.mime&&e.updatedAt===t.updatedAt&&e.source===t.source,yi=(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&&vi(e.iconImage,r.iconImage):!1}),bi=(()=>{let e=gi();if(!e)return null;let t=_i(e,[]);return t?{projects:t.projects,activeProjectId:t.activeProjectId}:null})(),xi=typeof window>`u`?!1:!!we()?.runtime?.isVSCode,Si=bi?.projects??(xi?[]:fi),Ci=bi?.activeProjectId??(xi?null:ci()),wi=Si.some(e=>e.id===Ci)?Ci:Si[0]?.id??null;bi&&li(Si,wi);var Ti=De()(Ae((e,t)=>({projects:Si,activeProjectId:wi,manualProjectOrder:si(),validateProjectPath:e=>{if(typeof e!=`string`||e.trim().length===0)return{ok:!1,reason:`Provide a directory path.`};let t=$r(e);return t?{ok:!0,normalizedPath:t}:{ok:!1,reason:`Directory path cannot be empty.`}},addProject:(n,r)=>{if(xi)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()||ei(o),u={id:be(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)]}),Le(),t().setActiveProject(u.id),t().discoverProjectIcon(u.id),u},removeProject:n=>{if(xi)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}),ui(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&&(B.setDirectory(e.path),Ne.getState().setDirectory(e.path,{showOverlay:!1}))}else Ne.getState().goHome()},setActiveProject:n=>{if(xi)return;let{projects:r,activeProjectId:i}=t();if(i===n)return;let a=r.find(e=>e.id===n);a&&(e({activeProjectId:n}),ui(r,n,t().manualProjectOrder),B.setDirectory(a.path),Ne.getState().setDirectory(a.path,{showOverlay:!1}))},setActiveProjectIdOnly:n=>{if(xi)return;let{projects:r,activeProjectId:i}=t();i!==n&&r.find(e=>e.id===n)&&(e({activeProjectId:n}),ui(r,n,t().manualProjectOrder))},renameProject:(n,r)=>{if(xi)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}),ui(s,o,t().manualProjectOrder)},updateProjectMeta:(n,r)=>{if(xi)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=Qr(r.iconBackground)),r.defaultModel!==void 0){let e=Zr(r.defaultModel);e?t.defaultModel=e:delete t.defaultModel}return t});e({projects:o}),ui(o,a,t().manualProjectOrder)},uploadProjectIcon:async(e,n)=>{if(xi)return{ok:!1,error:`Custom icons are not supported in this runtime`};let r=ni(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 ri(n)).replace(/^data:[^;]+;/i,`data:${r};`),a=await _(`/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(xi)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let n=await _(`/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(xi)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let r=await _(`/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(xi)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}),ui(o,a,c)},reorderProjectsById:(n,r)=>{if(xi)return;let{projects:i,activeProjectId:a}=t(),o=pi(i,n,r);if(o===i)return;let s=o.map(e=>e.id);e({projects:o,manualProjectOrder:s}),ui(o,a,s)},moveProjectToTop:n=>{if(xi)return;let{projects:r,activeProjectId:i}=t(),a=r.findIndex(e=>e.id===n);if(a<=0)return;let o=[...r],[s]=o.splice(a,1);o.unshift(s),e({projects:o}),ui(o,i)},resetForRuntimeSwitch:()=>{if(xi)return;let t=ai(),n=ci(),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:si().filter(e=>i.has(e))})},synchronizeFromSettings:n=>{if(xi)return;let r=ii(n.projects??[]),i=typeof n.activeProjectId==`string`&&n.activeProjectId.trim()?n.activeProjectId.trim():null,a=t();if(r.length===0&&a.projects.length>0){i!==a.activeProjectId&&(!i||a.projects.some(e=>e.id===i))&&(e({activeProjectId:i}),li(a.projects,i),di(t().manualProjectOrder));return}let o=JSON.stringify(a.projects)!==JSON.stringify(r),s=a.activeProjectId!==i;if(!o&&!s)return;let c=new Set(r.map(e=>e.id)),l=t().manualProjectOrder.filter(e=>c.has(e));if(e({projects:r,activeProjectId:i,manualProjectOrder:l}),li(r,i),di(l),i){let e=r.find(e=>e.id===i);e&&(B.setDirectory(e.path),Ne.getState().setDirectory(e.path,{showOverlay:!1}))}},syncVSCodeWorkspaceFolders:(n,r)=>{if(!xi)return null;let i=t(),a=i.activeProjectId?i.projects.find(e=>e.id===i.activeProjectId)??null:null,o=r??a?.path??null,s=_i(n,i.projects,o);if(!s)return n.length===0&&!r&&i.projects.length>0&&(e({projects:[],activeProjectId:null}),li([],null)),null;let c=!yi(i.projects,s.projects),l=i.activeProjectId!==s.activeProjectId;return(c||l)&&(e({projects:s.projects,activeProjectId:s.activeProjectId}),li(s.projects,s.activeProjectId)),s.activeProject&&(B.setDirectory(s.activeProject.path),Ne.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`&&Ti.getState().synchronizeFromSettings(t)});var H=rt(),Ei=e=>e?.trim()||null,Di=()=>{let e=Ti.getState().getActiveProject?.();return Ei(e?.path)??Ei(B.getDirectory())},Oi=(e,t=u())=>P.commands.list(e,t),ki=(e=Di(),t=u())=>{let n=Ei(e);return{queryKey:Oi(n,t),queryFn:async({signal:e})=>{let t=await _(`/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}},Ai=e=>{let t=(0,H.c)(3),n=e===void 0?{}:e,r=Ti(Ni),i=ki(Ei(n.directory)??Ei(r)??Ei(B.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],lt(a)},ji=(e=Di(),t=u())=>R.getQueryData(Oi(Ei(e),t))??[],Mi=async(e,t,n)=>{let r=Ei(t);if(u()!==n)return e.getQueryData(Oi(r,n))??[];let i=ki(r,n);return e.fetchQuery({...i,staleTime:0})};function Ni(e){return e.getActiveProject?.()?.path??null}var Pi=200,Fi=500,Ii=512,Li=1024,Ri=64,zi=100,Bi=100,Vi=new Set([`__proto__`,`prototype`,`constructor`]),Hi=new Set([`text`,`audio`,`image`,`video`,`pdf`]),Ui=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},Wi=e=>typeof e==`object`&&e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype?e:void 0,Gi=e=>{if(typeof e==`string`)return e.length>0&&e.length<=Ii&&e.trim()===e&&!Ui(e)&&!Vi.has(e)?e:void 0},Ki=e=>typeof e==`string`&&e.length>0&&e.length<=Li&&e.trim()===e&&!Ui(e)?e:void 0,qi=e=>typeof e==`string`&&e.length>0&&e.length<=Ri&&e.trim()===e&&!Ui(e)?e:void 0,Ji=e=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=1e9?e:void 0,Yi=e=>{let t=Wi(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))!Hi.has(e)||typeof r!=`boolean`||(n[e]=r);return Object.keys(n).length?n:void 0},Xi=e=>{let t=Wi(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]);let r=Yi(t.input),i=Yi(t.output);return r&&(n.input=r),i&&(n.output=i),Object.keys(n).length?n:void 0},Zi=e=>{let t=Wi(e),n=Gi(t?.id),r=Ki(t?.name);if(!t||!n||!r)return{partial:!0};let i={id:n,name:r},a=!1,o=Xi(t.capabilities);o&&(i.capabilities=o);let s=Wi(t.cost);if(s){let e={},t=Ji(s.input);t!==void 0&&(e.input=t);let n=Ji(s.output);n!==void 0&&(e.output=n);let r=Wi(s.cache);if(r){let t={},n=Ji(r.read);n!==void 0&&(t.read=n);let i=Ji(r.write);i!==void 0&&(t.write=i),Object.keys(t).length&&(e.cache=t)}Object.keys(e).length&&(i.cost=e)}let c=Wi(t.limit);if(c){let e={},t=Ji(c.context);t!==void 0&&(e.context=t);let n=Ji(c.output);n!==void 0&&(e.output=n),Object.keys(e).length&&(i.limit=e)}let l=qi(t.release_date);l&&(i.release_date=l);let u=Wi(t.variants);if(u){let e={};for(let[t,[n,r]]of Object.entries(u).entries()){if(t>=Bi){a=!0;break}!Gi(n)||!Wi(r)||(e[n]={})}Object.keys(e).length&&(i.variants=e)}return{value:i,partial:a}},Qi=e=>{let t=Wi(e);if(!t||t.schemaVersion!==1||!Array.isArray(t.providers)||!Wi(t.default)||typeof t.partial!=`boolean`)throw Error(`Invalid provider catalog response`);let n=[],r=new Set,i=t.providers.length>Pi;for(let[e,a]of t.providers.entries()){if(e>=Pi)continue;let t=Wi(a),o=Gi(t?.id),s=Ki(t?.name),c=Wi(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>=Fi||!Gi(t)||Object.prototype.hasOwnProperty.call(l,t)){i=!0;continue}let r=Zi(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=Wi(t.default),o={};for(let[e,[t,n]]of Object.entries(a).entries()){let r=Gi(t),a=Gi(n);if(e>=zi||!r||!a){i=!0;continue}o[r]=a}return{schemaVersion:1,providers:n,default:o,partial:t.partial||i}},$i=e=>(t=>e(t.state.data)?1/0:0),ea=e=>{let t=e;return!!(t&&t.providers.length>0)},ta=e=>{if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},na=(e,t=u())=>{let n=ta(e);return{queryKey:P.configCatalog.providers(n,t),queryFn:async({signal:e})=>{let r=await _(`/api/config/catalog/providers`,{method:`GET`,headers:{Accept:`application/json`,...n?{"x-opencode-directory":n}:{}},signal:e}),i;if(r.ok)i=Qi(await r.json());else{if(r.status!==404&&r.status!==501)throw Error(`Provider catalog request failed (${r.status})`);let t=await B.getSdkClient().config.providers(n?{directory:n}:void 0,{signal:e});if(t.error!==void 0||t.data===void 0||t.data===null)throw Error(`Legacy provider catalog request failed`);i=Qi({schemaVersion:1,providers:t.data.providers,default:t.data.default,partial:!1})}let a=R.getQueryData(P.configCatalog.providers(n,t));if(i.partial&&a&&!a.partial)throw Error(`Partial provider catalog refresh retained the complete snapshot`);return i},staleTime:$i(ea),gcTime:1/0,retry:2,retryDelay:100}},ra=(e,t=u())=>{let n=ta(e);return{queryKey:P.agents.raw(n,t),queryFn:({signal:e})=>B.listAgents(n,e),staleTime:$i(e=>Array.isArray(e)&&e.length>0),gcTime:1/0,retry:2,retryDelay:100}},ia=(e,t,n=u())=>{if(t.providerCatalogPartial===!0)return;let r=na(e,n);if(R.getQueryData(r.queryKey)===void 0)try{let e=Qi({schemaVersion:1,providers:Array.isArray(t.providers)?t.providers.map(e=>{if(typeof e!=`object`||!e||Array.isArray(e))return e;let t=e;return{...t,models:Array.isArray(t.models)?Object.fromEntries(t.models.map((e,t)=>[String(t),e])):t.models}}):t.providers,default:t.defaultProviders,partial:!1});if(e.partial||e.providers.length===0)return;R.setQueryData(r.queryKey,e)}catch{}},aa=(e,t=u())=>R.fetchQuery(na(e,t)),oa=(e,t=u())=>R.fetchQuery(ra(e,t)),sa=async(e,t=u())=>{let n=na(e,t);return await R.invalidateQueries({queryKey:n.queryKey,exact:!0}),R.fetchQuery(n)},ca=async(e,t=u())=>{let n=ra(e,t);return await R.invalidateQueries({queryKey:n.queryKey,exact:!0}),R.fetchQuery(n)},la=(e,t=u())=>R.invalidateQueries({queryKey:na(e,t).queryKey,exact:!0}),ua=e=>e?.trim()||null,da=(e,t=u())=>P.agents.list(e,t),fa=(e,t=u())=>P.providers.list(e,t);function pa(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 ma=(e=Di(),t=u())=>{let n=ua(e);return{queryKey:da(n,t),queryFn:async({signal:e})=>{let r=await R.fetchQuery(ra(n,t)),i=await _(`/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();return 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=pa(t.sources?.md?.path);return n===`project`||n===`user`?{...e,scope:n,group:r}:{...e,group:r}})},retry:2,staleTime:(e=>{let t=e.state.data;return t&&t.length>0?1/0:0}),gcTime:1/0}},ha=(e,t=u())=>{let n=ua(e);return{queryKey:fa(n,t),queryFn:async()=>{let e=await B.getProvidersForConfig(n);return(Array.isArray(e.providers)?e.providers:[]).map(e=>({...e,models:Object.values(e.models??{})}))},retry:2}},ga=e=>{let t=(0,H.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=Ti(ba),a;t[2]===i?a=t[3]:(a=ma(ua(i)??ua(B.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],lt(o)},_a=(e,t)=>{let n=(0,H.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=ha(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],lt(o)},va=(e=Di(),t=u())=>R.getQueryData(da(ua(e),t))??[],ya=async(e,t,n)=>{let r=ua(t);if(u()!==n)return e.getQueryData(da(r,n))??[];let i=ma(r,n);return await e.invalidateQueries({queryKey:i.queryKey,exact:!0}),e.fetchQuery(i)};function ba(e){return e.getActiveProject?.()?.path??null}var xa=[{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`}],Sa=e=>e?.trim()||null,Ca=()=>{let e=Ti.getState().getActiveProject?.();return Sa(e?.path)??Sa(B.getDirectory())},wa=(e,t=u())=>P.skillsCatalog.sources(e,t),Ta=(e,t,n=u())=>P.skillsCatalog.source(e,t,n),Ea=new Map,Da=(e=Ca(),t=u(),n=!1)=>{let r=Sa(e);return{queryKey:wa(r,t),queryFn:({signal:e})=>La(r,n,e),staleTime:5e3,retry:2}},Oa=(e,t,n=u(),r=!1)=>{let i=Sa(e);return at({queryKey:Ta(i,t,n),queryFn:({signal:e,pageParam:n})=>Ra(i,t,n,r,e),initialPageParam:null,getNextPageParam:(e,t)=>za(e,t),staleTime:5e3,retry:2})},ka=e=>{let t=(0,H.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=Ti(Ha),a;t[2]===i?a=t[3]:(a=Da(Sa(i)??Sa(B.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],lt(o)},Aa=(e,t)=>{let n=(0,H.c)(8),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a=Ti(Ua),o;n[2]!==a||n[3]!==e?(o=Oa(Sa(a)??Sa(B.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],ut(c)},ja=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())},Ma=(e=R,t=Ca(),n=u())=>e.getQueryData(wa(Sa(t),n))??xa,Na=(e=R,t,n,r=u())=>e.getQueryData(Ta(Sa(t),n,r)),Pa=async(e,t,n)=>{let r=Sa(t);return u()===n?e.fetchQuery({...Da(r,n,!0),staleTime:0}):Ma(e,r,n)},Fa=async(e,t,n,r)=>{let i=Sa(t);if(u()!==r)return Na(e,i,n,r);let a=Ta(i,n,r),o=JSON.stringify(a),s=(Ea.get(o)??0)+1;Ea.set(o,s),await e.cancelQueries({queryKey:a,exact:!0});let c=await Ra(i,n,null,!0,new AbortController().signal);if(u()!==r||Ea.get(o)!==s)return Na(e,i,n,r);let l={pages:[c],pageParams:[null]};return e.setQueryData(a,l),l},Ia=(e,t,n)=>Promise.all([e.invalidateQueries({queryKey:wa(Sa(t),n)}),e.invalidateQueries({queryKey:[n,`skillsCatalog`,`source`,Sa(t)],exact:!1})]);async function La(e,t,n){let r=await Va(Ba(`/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:xa}async function Ra(e,t,n,r,i){let a={directory:e,sourceId:t,cursor:n,refresh:r},o=await Va(Ba(`/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 Va(Ba(`/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 za(e,t){let n=e.nextCursor;if(!(!n||e.items.length===0)&&!t.slice(0,-1).some(e=>e.nextCursor===n))return n}function Ba(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 Va(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),3e3);try{return await _(e,{method:`GET`,headers:{Accept:`application/json`},signal:AbortSignal.any([t,n.signal])})}finally{clearTimeout(r)}}function Ha(e){return e.getActiveProject?.()?.path??null}function Ua(e){return e.getActiveProject?.()?.path??null}var Wa=e=>e?.trim()||null,Ga=()=>{let e=Ti.getState().getActiveProject?.();return Wa(e?.path)??Wa(B.getDirectory())},Ka=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},qa=(e,t=u())=>P.skills.list(e,t),Ja=(e=Ga(),t=u())=>{let n=Wa(e);return{queryKey:qa(n,t),queryFn:async({signal:e})=>{let t=await _(`/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:Ka(e.path)}))},retry:2}},Ya=e=>{let t=(0,H.c)(3),n=e===void 0?{}:e,r=Ti(Qa),i=Ja(Wa(n.directory)??Wa(r)??Wa(B.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],lt(a)},Xa=(e=R,t=Ga(),n=u())=>e.getQueryData(qa(Wa(t),n))??[],Za=async(e,t,n=u())=>{let r=Wa(t);return u()===n?e.fetchQuery({...Ja(r,n),staleTime:0}):Xa(e,r,n)};function Qa(e){return e.getActiveProject?.()?.path??null}var $a=()=>{let e=B.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},eo=Di,to=e=>{let t=e;return t.native===!0||t.builtIn===!0},no=e=>{let t=e;return t.hidden===!0||t.options?.hidden===!0},ro=e=>e.filter(e=>!no(e)),io=`useAgentsStore`,ao=e=>new Promise(t=>setTimeout(t,e)),oo=2e4,so=300,co=4,lo=800,uo=200,fo=2e3,po=e=>e!=null,mo=De()(Ae(Oe(e=>({selectedAgentName:null,agentDraft:null,setSelectedAgent:t=>e({selectedAgentName:t}),setAgentDraft:t=>e({agentDraft:t}),loadAgents:async()=>{let e=eo(),t=u();try{return await ya(R,e,t),!0}catch{return!1}},createAgent:async t=>go(`POST`,t.name,t,e),updateAgent:async(t,n)=>go(`PATCH`,t,n,e),deleteAgent:async(t,n)=>go(`DELETE`,t,{scope:n},e),getAgentByName:e=>va().find(t=>t.name===e),getVisibleAgents:()=>ro(va())}),{name:`agents-store`,storage:Ye(),partialize:e=>({selectedAgentName:e.selectedAgentName})}),{name:`agents-store`}));typeof window<`u`&&(window.__zustand_agents_store__=mo);async function ho(e,t){await ya(R,e,t),u()===t&&Nr(`agents`,{source:io})}async function go(e,t,n,r){Br(`${{POST:`Creating`,PATCH:`Updating`,DELETE:`Deleting`}[e]} agent configuration…`);let i=eo(),a=u();try{let o={};if(e===`POST`&&(o.mode=n?.mode||`subagent`,n?.description&&(o.description=n.description),n?.model&&(o.model=n.model),n?.variant&&(o.variant=n.variant),po(n?.temperature)&&(o.temperature=n.temperature),po(n?.top_p)&&(o.top_p=n.top_p),n?.prompt&&(o.prompt=n.prompt),n?.permission&&(o.permission=n.permission),n?.disable!==void 0&&(o.disable=n.disable),n?.scope&&(o.scope=n.scope)),e===`PATCH`){for(let e of[`mode`,`description`,`model`,`prompt`,`permission`,`disable`])n?.[e]!==void 0&&(o[e]=n[e]);for(let e of[`variant`,`temperature`,`top_p`])e in(n??{})&&(o[e]=n?.[e]??null)}let s=i?`?directory=${encodeURIComponent(i)}`:``,c=await _(`/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}:o)}),l=await c.json().catch(()=>null);if(!c.ok)throw Error(l?.error||`Failed to ${e.toLowerCase()} agent`);return u()===a?(e===`DELETE`&&mo.getState().selectedAgentName===t&&r({selectedAgentName:null}),l?.requiresManualRestart?{ok:!0,requiresManualRestart:!0}:(l?.requiresReload??!0?await bo({message:l?.message,delayMs:l?.reloadDelayMs,scopes:[`agents`],mode:`projects`,transportIdentity:a,queryDirectory:i}):await ho(i,a),{ok:!0})):{ok:!0,...l?.requiresManualRestart?{requiresManualRestart:!0}:{}}}catch(t){return console.error(`[AgentsStore] ${e} agent failed:`,t),{ok:!1}}finally{Vr()}}async function _o(e){let t=typeof e==`number`&&e>0?Math.min(e,so):0;t>0&&await ao(t);let n=Date.now(),r=0,i=null;for(;Date.now()-n<oo;){r+=1,Hr(`Waiting for OpenCode… (attempt ${r})`);try{if(await B.checkHealth())return;i=Error(`OpenCode health check reported not ready`)}catch(e){i=e}let e=Date.now()-n;await ao(r<=co&&e<1200?so:Math.min(lo+Math.max(0,r-co)*uo,fo))}throw i||Error(`OpenCode did not become ready in time`)}var vo=e=>{if(!e||e.length===0)return[`all`];let t=Array.from(new Set(e));return t.includes(`all`)?[`all`]:t};async function yo(e={}){let{message:t,delayMs:n}=e,r=e.transportIdentity??u(),i=e.queryDirectory??eo(),a=vo(e.scopes),o=e.mode??(a.includes(`all`)?`projects`:`active`);try{Hr(t||`Refreshing configuration…`)}catch{}try{if(u()!==r||(await _o(n),u()!==r))return;let e=Uf.getState(),t=a.includes(`all`)||a.includes(`providers`),s=a.includes(`all`)||a.includes(`agents`),c=a.includes(`all`)||a.includes(`agents`),l=a.includes(`all`)||a.includes(`commands`),d=a.includes(`all`)||a.includes(`skills`),f=$a(),p=o===`projects`?Ti.getState().projects:[],m=Array.from(new Set([...f?[f]:[],...p.map(e=>e.path).filter(Boolean)]));a.includes(`all`)&&o===`projects`&&Uf.setState({directoryScoped:{}}),t&&Uf.getState().invalidateProviderCache(o===`active`?f:void 0);let h=[];for(let n of m)t&&h.push(e.loadProviders({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0)),s&&h.push(e.loadAgents({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0));let g=[];c&&g.push(ya(R,i,r).then(()=>void 0)),l&&g.push(Mi(R,i,r).then(()=>void 0)),d&&(g.push(Za(R,i,r).then(()=>void 0)),g.push(Ia(R,i,r).then(()=>void 0))),Hr(`Refreshing configuration…`),await Promise.all([...h,...g])}catch(e){throw Hr(`OpenCode refresh failed. Please retry.`),await ao(1500),e}finally{Vr()}}async function bo(e){await yo(e)}async function xo(e){Br(e?.message||`Reloading OpenCode configuration…`);let t=e?.transportIdentity??u(),n=e?.queryDirectory??eo();try{let r=await _(`/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){Vr();return}let a={...e,transportIdentity:t,queryDirectory:n,scopes:e?.scopes??[`all`],mode:e?.mode??`projects`};i?.requiresReload?await bo({...a,message:i.message,delayMs:i.reloadDelayMs}):await bo(a)}catch(e){throw console.error(`[reloadOpenCodeConfiguration] Failed:`,e),Hr(`Failed to reload configuration. Please try again.`),await ao(2e3),Vr(),e}}var So=null;So||=Mr(e=>{if(e.source!==io&&Pr(e,`agents`)){let{loadAgents:e}=mo.getState();e()}});var Co=e=>typeof e==`string`?e.trim():``,wo=(e,t)=>!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`,To={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`},Eo=e=>e?e[0].toUpperCase()+e.slice(1).toLowerCase():``,Do=e=>{let t=e.startsWith(`~`)?e.slice(1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t},Oo=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)}},ko=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},Ao=e=>{let t=e.toLowerCase(),n=To[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)?Eo(t).replace(/([a-z])(\d)/i,`$1$2`):Eo(e)},jo=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},Mo=e=>{let t=Co(e).toLowerCase();return t?t===`free`||t===`thinking`?t:No(t):``},No=e=>{let t=Co(e);if(!t)return``;let{base:n,suffix:r}=Oo(Do(t)),i=jo(ko(n).map(Ao));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=Mo(r);return s?`${o} (${s})`:o},Po=e=>!/\s/.test(e)&&/[-_]/.test(e),Fo=(e,t,n={})=>{let r=Co(e?.name),i=Co(e?.id)||Co(t);return r&&!Po(r)?wo(r,n.maxLength):i?wo(No(i),n.maxLength):r?wo(No(r.toLowerCase()),n.maxLength):n.fallbackLabel??``},Io=(e,t)=>{let n=e?.models;if(!(!n||!t))return Array.isArray(n)?n.find(e=>Co(e.id)===t):n[t]},Lo=(e,t,n={})=>{let r=Co(t);return Fo(Io(e,r),r,n)},Ro=(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}},zo=e=>e===`primary`||e===`all`||e==null,Bo=e=>e.filter(e=>zo(e.mode)),Vo=(e,t,n=1)=>{let r=Bo(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},Ho=e=>e.charAt(0).toUpperCase()+e.slice(1),Uo=(e,t)=>{if(t){let n=e.find(e=>e.name===t);return Ho(n?n.name:t)}let n=e.filter(e=>zo(e.mode)),r=n.find(e=>e.name===`build`)||n[0]||e[0];return r?Ho(r.name):`Select agent`},Wo=(e,t,n=``)=>Lo(e,t,{fallbackLabel:n}),Go=e=>{if(!e||e.trim().length===0)return`Default`;let t=e.trim();return/^\d+(\.\d+)?$/.test(t)?t:Ho(t)},Ko=e=>typeof e==`object`&&!!e,qo=e=>typeof e==`string`&&e.length>0,Jo=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(!qo(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(!qo(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;!qo(t)||!qo(n)||r.set(t,n)}r.size>0&&i.set(t,r)}i.size>0&&t.set(e,i)}return t},Yo=De()(Oe((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:Ye(),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=Ko(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(!qo(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;!qo(t)||typeof n!=`object`||!n||!qo(n.providerId)||!qo(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:Jo(n?.sessionAgentModelVariantSelections)}},migrate:e=>e})),Xo=y,Zo=(e,t)=>{let n=Xo(t);if(!n)return null;let r=null;for(let t of e){let e=Xo(t.path);e&&(n!==e&&!n.startsWith(`${e}/`)||(!r||e.length>(Xo(r.path)?.length??0))&&(r=t))}return r},Qo=(e,t,n)=>{let r=Xo(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=Xo(t.path);n&&(r!==n&&!r.startsWith(`${n}/`)||n.length>o&&(o=n.length,i=t,a=Xo(e)))}if(!i)return null;let s=[Xo(i.projectDirectory),a].filter(e=>!!e);for(let t of s){let n=e.find(e=>Xo(e.path)===t)??null;if(n)return n;let r=Zo(e,t);if(r)return r}return null},$o=(e,t,n)=>Qo(e,t,n)??Zo(e,n),es=e=>{if(!e)return null;let t=e.indexOf(`/`);return t<=0||t>=e.length-1?null:{providerId:e.slice(0,t),modelId:e.slice(t+1)}},ts=[`concise`,`detailed`,`mentor`,`pushback`,`noFiller`,`matchEnergy`,`warmPeer`],ns=e=>typeof e==`string`&&ts.includes(e),rs=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.`}},is=new Map,as=new Map,os=({enabled:e,preset:t,customInstructions:n})=>e?t===`custom`?(typeof n==`string`?n.trim():``)||null:ns(t)?rs(t):null:null,ss=(e,t=u())=>{is.set(t,{enabled:e.enabled===!0,preset:e.preset,customInstructions:e.customInstructions})},cs=(e=u())=>{let t=is.get(e);if(t)return os(t)},ls=async()=>{let e=u(),t=cs(e);if(t!==void 0)return t;let n=as.get(e);if(n)return n;let r=(async()=>{let t=await me(e);return ss({enabled:t.responseStyleEnabled,preset:t.responseStylePreset,customInstructions:t.responseStyleCustomInstructions},e),cs(e)??null})();as.set(e,r);try{return await r}finally{as.get(e)===r&&as.delete(e)}},us;(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})(us||={});function ds(e,t){return e.findIndex(e=>e.id===t)}function fs(e,t){if(!t)return e.slice();let n=ds(e,t);return n<0?e.slice():e.slice(0,n)}function ps(e,t,n){let r=ds(e,n);return r<0?!1:ds(e,t)>=r}function ms(e,t){if(!t){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}return}let n=ds(e,t);if(!(n<0))for(let t=n-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}}function hs(e,t){let n=ds(e,t);if(!(n<0))for(let t=n+1;t<e.length;t+=1){let n=e[t];if(n?.role===`user`)return n}}var gs=`openchamber:sync:debug`,_s;function vs(){if(_s!==void 0)return _s;try{_s=typeof localStorage<`u`&&localStorage.getItem(gs)===`1`}catch{_s=!1}return _s}function ys(e,...t){vs()&&(`${e}`,[...t])}var bs={pipeline:{coalesced:(e,t)=>ys(`pipeline`,`coalesced`,e,t),flush:e=>ys(`pipeline`,`flush`,`${e} events`)},reducer:{messageUpdatedUnchanged:(e,t,n,r,i)=>ys(`reducer`,`message.updated UNCHANGED (skipped)`,{sessionID:e,messageID:t,role:n,finish:r,completed:i}),partUpdatedNoExistingParts:(e,t,n)=>ys(`reducer`,`message.part.updated NO EXISTING PARTS`,{messageID:e,partID:t,partType:n}),partDeltaNoParts:(e,t)=>ys(`reducer`,`message.part.delta DROPPED (no parts array)`,{messageID:e,partID:t}),partDeltaNotFound:(e,t)=>ys(`reducer`,`message.part.delta DROPPED (partID not found)`,{messageID:e,partID:t}),partSkipped:(e,t,n)=>ys(`reducer`,`message.part.updated SKIPPED (type filtered)`,{messageID:e,partID:t,partType:n})},dispatch:{eventNoChange:(e,t,n)=>ys(`dispatch`,`event → no change`,{eventType:e,sessionID:t,messageID:n}),eventApplied:(e,t,n)=>ys(`dispatch`,`event → applied`,{eventType:e,sessionID:t,messageID:n})},recovery:{materializing:e=>ys(`recovery`,`materializing session`,e)}},xs=new Set([`patch`,`step-start`,`step-finish`]),Ss=[`text`,`output`],Cs=new Set([`completed`,`error`,`aborted`,`failed`,`timeout`,`cancelled`]);function ws(e,t){if(!e||t.length===0)return(e??``)+t;if(e.endsWith(t))return e;let n=Math.min(e.length,t.length);for(let r=n;r>0;r--)if(e.endsWith(t.slice(0,r)))return e+t.slice(r);return e+t}function Ts(e,t){let n=[];for(let r of Ss){let i=e[r],a=t[r];typeof i==`string`&&typeof a==`string`&&i.length!==0&&a.length!==0&&(a===i||a.startsWith(i)||i.startsWith(a))&&n.push(r)}return n}function Es(e){let t=e.state?.time?.end;if(typeof t==`number`)return t;let n=e.time?.end;return typeof n==`number`?n:void 0}function Ds(e){if(e.type!==`tool`)return;let t=e.state?.status;return typeof t==`string`?t:void 0}function Os(e,t){if(e.type!==`tool`||t.type!==`tool`)return!1;let n=Ds(e),r=Ds(t);if(n&&Cs.has(n)&&(!r||!Cs.has(r)))return!0;let i=Es(e),a=Es(t);return typeof i==`number`&&typeof a!=`number`}function ks(e,t){if(e===t)return!0;if(e===void 0||t===void 0)return e===t;try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}}var As=[`agent`,`mode`,`providerID`,`modelID`,`variant`],js=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Ms=[`input`,`output`,`reasoning`];function Ns(e){if(!e||typeof e!=`object`)return!1;let t=e;return Ms.some(e=>typeof t[e]==`number`&&Number.isFinite(t[e])&&t[e]>0)}function Ps(e){if(!e||typeof e!=`object`)return!1;let t=e;return Ms.every(e=>typeof t[e]!=`number`||!Number.isFinite(t[e])||t[e]<=0)}function Fs(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Is(e,t){let n={...e,...t},r=e,i=t,a=n;for(let e of As){let t=Fs(i[e]),n=Fs(r[e]);t?a[e]=t:n?a[e]=n:delete a[e]}let o=i.model,s=r.model;return js(o)?a.model=o:js(s)?a.model=s:delete a.model,(e.time||t.time)&&(n.time={...e.time,...t.time}),Ns(r.tokens)&&Ps(i.tokens)&&(a.tokens=r.tokens),n}function Ls(e,t){if(e.role!==t.role||e.finish!==t.finish||e.time?.completed!==t.time?.completed)return!1;for(let n of[`summary`,`error`,`cost`,`tokens`,`structured`,`model`,`tools`,`format`,`variant`,`agent`,`mode`,`providerID`,`modelID`,`system`])if(!ks(e[n],t[n]))return!1;return!0}function Rs(e,t,n){if(!t)return!1;let r=e.message[t];return r?ds(r,n)>=0:!1}function zs(e,t){switch(t.type){case`message.updated`:{let n=t.properties.info,r=e.message[n.sessionID],i=!!r&&r.every(t=>t.role!==`assistant`||e.part[t.id]!==void 0);if(n.role===`assistant`&&i&&e.part[n.id]===void 0&&(e.part[n.id]=[]),!r)return e.message[n.sessionID]=[n],!0;let a=ds(r,n.id);if(a>=0){let t=r[a],i=Is(t,n);if(Ls(t,i))return bs.reducer.messageUpdatedUnchanged(n.sessionID,n.id,n.role,n.finish,n.time?.completed),!1;let o=[...r];o[a]=i,e.message[n.sessionID]=o}else e.message[n.sessionID]=[...r,n];return!0}case`message.removed`:{let n=t.properties,r=e.message[n.sessionID];if(r){let t=ds(r,n.messageID);if(t>=0){let i=[...r];i.splice(t,1),e.message[n.sessionID]=i}}return delete e.part[n.messageID],!0}case`message.part.updated`:{let n=t.properties,r=n.part;if(xs.has(r.type))return bs.reducer.partSkipped(r.messageID,r.id,r.type),!1;let i=r.messageID,a=n.sessionID??r.sessionID;if(!i)return!1;let o=!Rs(e,a,i),s=e.part[i];if(!s)return bs.reducer.partUpdatedNoExistingParts(i,r.id,r.type),e.part[i]=[r],!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}};let c=[...s],l=us.search(c,r.id,e=>e.id);if(l.found){let e=c[l.index];if(Os(e,r))return!1;let t=Ts(e,r);c[l.index]=t.length>0?{...r,__dedupeNextDeltaFields:t}:r}else{let e=r.type===`text`||r.type===`file`?c.findIndex(e=>e.type===r.type&&e.__openchamberOptimistic===!0):-1;e>=0&&c.splice(e,1);let t=us.search(c,r.id,e=>e.id);c.splice(t.index,0,r)}return e.part[i]=c,!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}}}case`message.part.removed`:{let n=t.properties,r=e.part[n.messageID];if(!r)return!1;let i=us.search(r,n.partID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),t.length===0?delete e.part[n.messageID]:e.part[n.messageID]=t,!0}return!1}case`message.part.delta`:{let n=t.properties,r=e.part[n.messageID];if(!r)return bs.reducer.partDeltaNoParts(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`orphan-delta`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let i=us.search(r,n.partID,e=>e.id);if(!i.found)return bs.reducer.partDeltaNotFound(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`missing-delta-part`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let a=r[i.index],o=a[n.field],s=a.__dedupeNextDeltaFields??[],c=s.includes(n.field),l=[...r];return l[i.index]={...a,[n.field]:c?ws(o,n.delta):(o??``)+n.delta,__dedupeNextDeltaFields:s.filter(e=>e!==n.field)},e.part[n.messageID]=l,!0}default:return!1}}function Bs(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function Vs(e){let t=e.id;return typeof t==`string`&&t.length>0?t:void 0}function Hs(e){return e.slim===!0}function Us(e,t){if(!e||e.length===0||!t.some(e=>Hs(e)))return t;let n=new Map;for(let t of e){let e=Vs(t);e&&!Hs(t)&&n.set(e,t)}if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!Hs(e))return e;let t=Vs(e);if(!t)return e;let i=n.get(t);return i?(r=!0,i):e});return r?i:t}function Ws(e,t){return e===t||e.length===t.length&&e.every((e,n)=>e===t[n])?t:e}function Gs(e){let t=e.clientRole??e.role;return typeof t==`string`?t:``}function Ks(e){return Gs(e)!==`assistant`||!Bs(e)}function qs(e,t,n){if(!e||e.length===0)return t;let r=Us(e,t);if(Ks(n))return Ws(r,e);let i=new Set;for(let e of r){let t=Vs(e);t&&i.add(t)}let a=new Map,o=[],s,c=0;for(let t of e){let e=Vs(t);if(e&&i.has(e)){s=e;continue}if(!e)continue;if(c+=1,!s){o.push(t);continue}let n=a.get(s);if(n){n.push(t);continue}a.set(s,[t])}if(c===0)return Ws(r,e);let l=[...o];for(let e of r){l.push(e);let t=Vs(e);if(!t)continue;let n=a.get(t);n&&l.push(...n)}return Ws(l,e)}var Js=e=>Object.freeze(e),Ys=Object.freeze({initial:Js({id:`initial`,onStale:`drop`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),prepend:Js({id:`history`,onStale:`drop`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),recovery:Js({id:`recovery`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),"reconcile-page":Js({id:`reconcile-page`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`keep-unless-full`}),materialize:Js({id:`materialize`,onStale:`drop`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`})}),Xs=Js({id:`recovery-backfill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),Zs=Js({id:`send-gap-fill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),Qs=Ys.initial;function $s(e){let t=Ys[e.purpose]??Qs;return!e.stale||t.onStale===`drop`?t:Xs}function ec(e,t){return e.preserveStreaming===`none`?!1:e.preserveStreaming===`all`||t===`assistant`}var tc=e=>structuredClone(e),nc=e=>({transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID});function rc(e){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID])}function ic(e,t){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID,t])}function ac(e){return JSON.stringify([e.transport,e.generation])}function oc(e,t){return e.created===t.created?e.messageID<t.messageID?-1:+(e.messageID>t.messageID):e.created-t.created}function sc(e){let t=e.time?.created;return{created:typeof t==`number`&&Number.isFinite(t)?t:0,messageID:e.id}}function cc(e){return Ks(e)}function lc(e){return Hs(e)?`slim`:`full`}function uc(e){return e.some(e=>Hs(e))?`slim`:`full`}var dc=e=>{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(dc);let t=e,n={};for(let e of Object.keys(t).sort()){let r=t[e];r!==void 0&&(n[e]=dc(r))}return n},fc=e=>{let t=new Uint8Array(e),n=``;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n};async function pc(e,t){let n=JSON.stringify(dc({info:e,parts:t})),r=new TextEncoder().encode(n);return{hash:fc(await crypto.subtle.digest(`SHA-256`,r)),byteSize:r.byteLength}}var mc=e=>({scope:nc(e.scope),messageID:e.messageID,info:tc(e.info),parts:tc(e.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}}),hc=e=>{let t=0;return()=>{let n=e();return t=n>t?n:t+1,t}},gc=(e,t)=>{let n=t.slice().sort((e,t)=>oc(e.sortKey,t.sortKey)).map(mc);return{scope:nc(e),records:n,byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},_c=e=>tc(e),vc=e=>nc(e),yc=(e=Date.now)=>hc(e),bc=e=>mc(e),xc=(e,t)=>gc(e,t.slice());function Sc(e){return cc(e.info)?e.existing?.completeness===`full`&&e.incomingCompleteness===`slim`?{status:`skipped`,reason:`slim-downgrade`}:e.incomingHash!==void 0&&e.existing?.contentHash===e.incomingHash?{status:`skipped`,reason:`unchanged`}:{status:`written`}:{status:`skipped`,reason:`not-settled`}}var Cc=(e,t)=>e<t?-1:+(e>t),wc=[`text`,`output`],Tc={pending:1,started:2,running:3,completed:4,error:4};function Ec(e,t){return e.filter(e=>!!e?.id&&!t.has(e.type)).sort((e,t)=>Cc(e.id,t.id))}function Dc(e,t){if(!e||e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||r.id!==i.id||JSON.stringify(r)!==JSON.stringify(i))return!1}return!0}function Oc(e){let t=e.state?.time?.end;if(typeof t==`number`)return t;let n=e.time?.end;return typeof n==`number`?n:void 0}function kc(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Ac(e){return Oc(e)===void 0&&wc.some(t=>{let n=kc(e,t);return typeof n==`string`&&n.length>0})}function jc(e){let t=e.state;if(!(!t||typeof t!=`object`))return t}function Mc(e){let t=jc(e)?.status;return typeof t==`string`?t:void 0}function Nc(e){return e?Tc[e]??0:0}function Pc(e,t){if(Ac(e))return!0;if(Oc(e)===void 0){if(e.type===`tool`){let n=Mc(e);return n===`completed`||n===`error`?t:!0}return!0}return t}function Fc(e){let t=e.state?.time;if(!t||typeof t!=`object`)return;let n=typeof t.start==`number`?t.start:void 0,r=typeof t.end==`number`?t.end:void 0;if(n!==void 0||r!==void 0)return{start:n,end:r}}function Ic(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length>0}function Lc(e,t,n){if(e.type!==`tool`||t.type!==`tool`)return n;let r=jc(e);if(!r)return n;let i=jc(n)??{},a=jc(t)??{},o={...i},s=!1,c=Mc(e),l=Mc(t);Nc(c)>Nc(l)&&c&&(o={...o,status:c},s=!0);let u=r.input,d=a.input;Ic(u)&&!Ic(d)&&(o={...o,input:u},s=!0);let f=r.output,p=a.output;typeof f==`string`&&f.length>0?(typeof p!=`string`||p.length<f.length)&&(typeof p!=`string`||p.length===0||f.startsWith(p))&&(o={...o,output:f},s=!0):f!==void 0&&p===void 0&&(o={...o,output:f},s=!0);let m=r.metadata;return Ic(m)&&!Ic(a.metadata)&&(o={...o,metadata:m},s=!0),s?n===t?{...t,state:o}:{...n,state:o}:n}function Rc(e,t){if(!e||Oc(t)!==void 0)return t;let n=t;for(let r of wc){let i=kc(e,r);if(!i)continue;let a=kc(t,r);if(typeof a==`string`&&a.length>=i.length||typeof a==`string`&&a.length>0&&!i.startsWith(a))continue;n===t&&(n={...t});let o=n;o[r]=i}let r=Fc(e);if(r){let e=Fc(t),i=e?.start??r.start,a=e?.end??r.end;if(i!==e?.start||a!==e?.end){n===t&&(n={...t});let e=n;e.state={...n.state??{},time:{start:i,end:a}}}}return n=Lc(e,t,n),n}function zc(e,t){if(!e||e.length===0||!t.some(e=>Hs(e)))return t;let n=new Map;for(let t of e)t.id&&!Hs(t)&&n.set(t.id,t);if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!Hs(e)||!e.id)return e;let t=n.get(e.id);return t?(r=!0,t):e});return r?i:t}function Bc(e){return e.__openchamberOptimistic===!0}function Vc(e){return!!(e&&e.length>0&&e.some(Bc))}function Hc(e){return e.length===0||e.some(e=>Hs(e))}function Uc(e,t,n,r,i,a){if(a===`keep-unless-full`&&e&&Vc(e)&&Hc(t))return e;let o=zc(e,t);if(!e||e.length===0||!r)return o;let s=new Map(e.map(e=>[e.id,e])),c=o,l=!1;for(let e=0;e<o.length;e+=1){let t=o[e],n=Rc(s.get(t.id),t);n!==t&&(l||(c=[...o]),c[e]=n,l=!0)}let u=new Set(o.map(e=>e.id)),d=o.some(e=>Hs(e)),f=e.filter(e=>!!e?.id&&!u.has(e.id)&&!n.has(e.type)&&(Pc(e,i)||d&&!Hs(e)));return f.length===0?c:[...c,...f].sort((e,t)=>Cc(e.id,t.id))}var Wc=e=>e,Gc=e=>{let t=Wc(e).finish;return typeof t==`string`&&t.length>0},Kc=e=>typeof Wc(e).time?.completed==`number`,qc=e=>!!Wc(e).error;function Jc(e,t){let n=Wc(t),r=n.finish,i=n.time?.completed,a=n.error,o=e.tokens,s=t.tokens,c=!Gc(e)&&typeof r==`string`&&r.length>0,l=!Kc(e)&&typeof i==`number`,u=!qc(e)&&!!a,d=!Ns(o)&&Ns(s);if(!c&&!l&&!u&&!d)return e;let f={...e};return c&&(f.finish=r),l&&(f.time={...Wc(e).time,completed:i}),u&&(f.error=a),d&&(f.tokens=s),f}function Yc(e,t,n,r){if(t.length===0)return e;let i=new Map(t.map(e=>[e.id,e])),a=!1,o=[];for(let t of e){let e=n(t,i.get(t.id));e!==t&&(a=!0),o.push(e)}let s=new Set(e.map(e=>e.id)),c=t.filter(e=>!s.has(e.id));if(c.length===0)return a?o:e;if(!t.some(e=>s.has(e.id)))return r===`prepend`?[...c,...o]:r===`by-created`?Xc(o,c):[...o,...c];let l=-1;for(let e of t){let t=o.findIndex(t=>t.id===e.id);if(t>=0){l=t;continue}l+=1,o.splice(l,0,e)}return o}function Xc(e,t){let n=e.slice();for(let e of t){let t=sc(e),r=n.length;for(let e=0;e<n.length;e+=1)if(oc(t,sc(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function Zc(e,t,n){return Yc(e,t,(e,t)=>t?Jc(e,t):e,n)}function Qc(e,t,n){return Yc(e,t,(e,t)=>!t||JSON.stringify(e)===JSON.stringify(t)?e:Is(e,t),n)}function $c(e,t,n,r={}){let i=r.skipPartTypes??new Set,a=r.merge??Qs,o=r.placeUnanchoredNewMessages??`append`,s=n.filter(e=>!!e?.info?.id),c=s.map(e=>e.info),l=e.message[t],u=l??[],d=a.messages===`upsert`?Qc(u,c,o):Zc(u,c,o),f=d!==u||l===void 0&&s.length===0,p=!1,m={...e.part},h=a.parts===`skip-existing`;for(let e of s){let t=e.info.id;if(h&&m[t])continue;let n=e.info.role===`assistant`,r=m[t],o=Uc(r,Ec(e.parts??[],i),i,ec(a,e.info.role),Bs(e.info),a.protectOptimistic);(r?Dc(r,o):o.length===0&&!n)||o.length===0&&!n||(m[t]=o,p=!0)}return{message:f?{...e.message,[t]:d}:e.message,part:p?m:e.part,messages:d,messagesChanged:f,partsChanged:p}}function el(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function tl(e){let t=e.messages;if(!t)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let n=t.length>0?t[t.length-1]?.id:void 0,r=[];for(let i of t)i.role===`assistant`&&(e.parts[i.id]||i.id===n&&el(i)||r.push(i.id));return{hasMessages:!0,renderable:r.length===0,missingPartMessageIDs:r}}var nl=(e,t)=>e<t?-1:+(e>t);function rl(e){return e.filter(e=>!!e?.id).sort((e,t)=>nl(e.id,t.id))}function il(e,t){if(t.length===0)return{...e,confirmed:[]};let n=[...e.session],r=new Map(e.part.map(e=>[e.id,rl(e.part)])),i=[];for(let e of t){if(n.findIndex(t=>t.id===e.message.id)<0){n.push(e.message),r.set(e.message.id,rl(e.parts));continue}let t=r.get(e.message.id);if(t&&t.length>0){i.push(e.message.id);continue}r.set(e.message.id,rl(e.parts))}return{cursor:e.cursor,complete:e.complete,session:n,part:[...r.entries()].sort((e,t)=>nl(e[0],t[0])).map(([e,t])=>({id:e,part:t})),confirmed:i}}var al={kind:`unknown`,loadedTurns:0},ol=3e4,sl=12e5,cl={project:``,projectMeta:void 0,icon:void 0,provider:{all:[],connected:[],default:{}},config:{},path:{state:``,config:``,worktree:``,directory:``,home:``},status:`loading`,agent:[],command:[],session:[],sessionTotal:0,session_status:{},session_status_observed_at:{},session_status_snapshot_at:void 0,session_error_at:{},session_diff:{},todo:{},permission:{},question:{},mcp:{},lsp:[],vcs:void 0,limit:20},ll={ready:!1,path:{state:``,config:``,worktree:``,directory:``,home:``},projects:[],providers:{all:[],connected:[],default:{}},providerAuth:{},config:{},reload:void 0,sessionTodo:{}};function ul(e,t){return e===void 0||t===void 0?!1:t>e}var dl=class extends Error{};function fl(e,t,n){if(n===`reconcile-page`)return e??al;let r=0;typeof t.turnCount==`number`&&Number.isFinite(t.turnCount)?r=Math.max(0,Math.floor(t.turnCount)):typeof t.requestedTurnLimit==`number`&&Number.isFinite(t.requestedTurnLimit)?r=Math.max(0,Math.floor(t.requestedTurnLimit)):t.records.length>0&&(r=1);let i=e?.loadedTurns??0,a=n===`prepend`?i+r:r;if(t.complete)return{kind:`exhausted`,loadedTurns:a};let o=typeof t.cursor==`string`&&t.cursor.length>0?t.cursor:void 0;if(!o)throw new dl(`session message page: complete=false requires non-empty cursor`);if(t.records.length===0)throw new dl(`session message page: complete=false with zero records makes no progress`);if(n===`prepend`&&e?.kind===`has-more`&&e.cursor===o)throw new dl(`session message page: prepend returned the same cursor without progress`);return{kind:`has-more`,cursor:o,loadedTurns:a}}function pl(e,t){return!e||!t?e===t:e.kind!==t.kind||e.loadedTurns!==t.loadedTurns?!1:e.kind===`has-more`&&t.kind===`has-more`?e.cursor===t.cursor:!0}function ml(e,t,n,r){let i=ul(r.capturedRevision,r.liveRevision),a=$s({purpose:r.purpose,stale:i}),o=e.session_history_boundary?.[t];if(!n.ok)return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:e.message[t]??[],boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[],error:n.error};if(i&&a.onStale===`drop`){let n=e.message[t]??[];if(n.length>0)return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:n,boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[]}}let s=r.optimistic??[],c=il({session:n.records.map(e=>e.info),part:n.records.map(e=>({id:e.info.id,part:e.parts??[]})),cursor:n.cursor,complete:n.complete},s),l=$c(e,t,c.session.map(e=>({info:e,parts:c.part.find(t=>t.id===e.id)?.part??[]})),{skipPartTypes:r.skipPartTypes,merge:a,placeUnanchoredNewMessages:r.purpose===`prepend`?`prepend`:r.purpose===`reconcile-page`?`by-created`:`append`}),u;try{u=fl(o,{ok:!0,records:n.records,cursor:c.cursor,complete:c.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit},r.purpose)}catch(n){if(!(n instanceof dl))throw n;return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:e.message[t]??[],boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[],error:n.message}}let d=!pl(o,u),f=l.messagesChanged,p=l.partsChanged,m=f||p||d,h=[];c.confirmed.length>0&&h.push({type:`clear-optimistic`,messageIDs:c.confirmed});let g=d||!o?u:o;return{applied:!0,merge:a,changed:m,messagesChanged:f,partsChanged:p,boundaryChanged:d,message:l.message,part:l.part,messages:l.messages,boundary:g,meta:{limit:g.loadedTurns,cursor:g.kind===`has-more`?g.cursor:void 0,complete:g.kind===`exhausted`},confirmedOptimisticIDs:c.confirmed,commands:h}}var hl=new Set([`tool`,`reasoning`,`file`,`text`]),gl=new Set([`tool`,`reasoning`,`file`]);function _l(e){return e.some(e=>Hs(e)&&hl.has(e.type))}function vl(e,t){let n=!1,r=!1;for(let t of e)gl.has(t.type)&&(n=!0,Hs(t)&&(r=!0));return n?r?!0:t?Bs(t):!1:!1}var yl=e=>{if(!e)return``;let t=e.clientRole??e.role;return typeof t==`string`?t:``};function bl(e,t){return!e?.id||yl(e)!==`user`?!1:!t||t.length===0||!t.some(e=>e.type===`subtask`||e.type===`compaction`)}function xl(e){let t=0;for(let n of e.messageOrder)bl(e.messagesByID[n],e.partsByMessageID[n])&&(t+=1);return t}var Sl=(e,t)=>{let n=e.messageOrder.lastIndexOf(t);if(n<0)return[];let r=[];for(let i=n+1;i<e.messageOrder.length;i+=1){let n=e.messageOrder[i],a=e.messagesByID[n];if(!a)continue;if(bl(a,e.partsByMessageID[n]))break;if(yl(a)!==`assistant`)continue;let o=a.parentID;typeof o==`string`&&o.length>0&&o!==t||r.push(a)}return r},Cl=(e,t)=>Bs(e)?!0:Array.isArray(t)&&t.length>0;function wl(e){let t;for(let n=e.messageOrder.length-1;n>=0;--n){let r=e.messageOrder[n];if(bl(e.messagesByID[r],e.partsByMessageID[r])){t=r;break}}return t?Sl(e,t).some(t=>Cl(t,e.partsByMessageID[t.id])):!1}function Tl(e){return e.materializeActive?`p2`:e.prependActive||e.earlierHistoryLoaded?`p1`:e.p0Satisfied?`p0`:`idle`}var El=new Set([`stop`,`length`]);function Dl(e){let t=e.messageOrder[e.messageOrder.length-1];if(!t)return!1;let n=e.messagesByID[t];if(!n||yl(n)!==`assistant`||n.error)return!1;let r=n.finish;return typeof r!=`string`||!El.has(r)?!1:typeof n.time?.completed!=`number`||r===`stop`&&!Ns(n.tokens)}function Ol(e,t){return t.kind===`has-more`?{sessionID:e,boundary:t,hasPreviousPage:!0,isComplete:!1,cursor:t.cursor,loadedTurns:t.loadedTurns}:t.kind===`exhausted`?{sessionID:e,boundary:t,hasPreviousPage:!1,isComplete:!0,cursor:null,loadedTurns:t.loadedTurns}:{sessionID:e,boundary:t,hasPreviousPage:!1,isComplete:!1,cursor:null,loadedTurns:t.loadedTurns}}function kl(e){let t={},n={},r=[];for(let i of e.messages){if(!i?.id)continue;r.push(i.id),t[i.id]=i;let a=e.parts[i.id];a&&(n[i.id]=a)}return{sessionID:e.sessionID,messageOrder:r,messagesByID:t,partsByMessageID:n,boundary:e.boundary,liveRevision:e.liveRevision??0}}var Al=[`message.updated`,`message.removed`,`message.part.updated`,`message.part.removed`,`message.part.delta`];function jl(e){return Al.includes(e)}function Ml(e){return e.trim()}function Nl(e){return`${Ml(e.directory)}\n${e.sessionID}`}function Pl(e,t){return e.session_history_boundary?.[t]??al}function Fl(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Il(e,t){return e.kind!==t.kind||e.loadedTurns!==t.loadedTurns?!1:e.kind===`has-more`&&t.kind===`has-more`?e.cursor===t.cursor:!0}function Ll(e,t,n){n.applied&&e.setState(e=>{let r={};if(n.messagesChanged&&(r.message=n.message),n.partsChanged&&(r.part=n.part),n.boundary&&(n.boundaryChanged||!e.session_history_boundary?.[t]))r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary};else if(n.boundary&&n.boundaryChanged===!1){let i=e.session_history_boundary?.[t];(!i||!Il(i,n.boundary))&&(r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary})}return!r.message&&!r.part&&!r.session_history_boundary&&n.boundary&&(r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary}),!r.message&&!r.part&&!r.session_history_boundary?{}:r})}function Rl(e,t,n){let r=e.getState(),i=n.page,a=ml(r,t,{ok:!0,records:i.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:i.cursor,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:i.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?(Ll(e,t,a),{applied:!0,changed:a.changed,boundary:a.boundary,meta:a.meta,confirmedOptimisticIDs:a.confirmedOptimisticIDs}):{applied:!1,changed:!1,error:a.error}}function zl(e,t){if(t.length===0)return{applied:!1,changed:!1};let n=e.getState(),r={message:{...n.message??{}},part:{...n.part??{}}},i=!1,a=!1,o;for(let e of t){if(!jl(e.type))continue;i=!0;let t=zs(r,e),n=typeof t==`boolean`?t:t.changed,s=typeof t==`boolean`?void 0:t.materialization;s&&!o&&(o=s),n&&(a=!0)}return i?a?(e.setState({message:r.message,part:r.part}),{applied:!0,changed:!0,...o?{materialization:o}:{}}):{applied:!0,changed:!1,...o?{materialization:o}:{}}:{applied:!1,changed:!1}}function Bl(e,t){return zl(e,[t.event])}function Vl(e,t){return zl(e,t.events)}function Hl(e,t,n){if(n.records.length===0)return{applied:!1,changed:!1};let r=e.getState(),i=$c({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});return!i.messagesChanged&&!i.partsChanged?{applied:!0,changed:!1}:(e.setState({...i.messagesChanged?{message:i.message}:{},...i.partsChanged?{part:i.part}:{}}),{applied:!0,changed:!0})}function Ul(e,t,n){let r=e.getState(),i=r.message?.[t],a=r.part?.[n]!==void 0;if(!i&&!a)return{applied:!0,changed:!1};let o={...r.message??{}},s=!1;if(i){let e=[...i],r=e.findIndex(e=>e.id===n);r>=0&&(e.splice(r,1),o[t]=e,s=!0)}let c={...r.part??{}},l=!1;return c[n]!==void 0&&(delete c[n],l=!0),!s&&!l?{applied:!0,changed:!1}:(e.setState({...s?{message:o}:{},...l?{part:c}:{}}),{applied:!0,changed:!0})}function Wl(e,t,n,r,i){r.setOptimisticShadow?.({directory:i,sessionID:t,message:n.message,parts:n.parts});let a=e.getState(),o={...a.message??{}},s={...a.part??{}},c=o[t]?[...o[t]]:[];return c.some(e=>e.id===n.message.id)||c.push(n.message),o[t]=c,s[n.message.id]=Fl(n.parts),e.setState({message:o,part:s}),{applied:!0,changed:!0}}function Gl(e,t,n,r,i){r.clearOptimisticShadow?.({directory:i,sessionID:t,messageID:n});let a=e.getState(),o={...a.message??{}},s={...a.part??{}},c=!1,l=o[t];if(l){let e=[...l],r=e.findIndex(e=>e.id===n);r>=0&&(e.splice(r,1),o[t]=e,c=!0)}return s[n]!==void 0&&(delete s[n],c=!0),c&&e.setState({message:o,part:s}),{applied:!0,changed:c}}function Kl(e,t,n,r){return n.clearOptimisticShadow?.({directory:r,sessionID:e,messageID:t}),{applied:!0,changed:!1}}function ql(e,t){let n=e.getState(),r=n.message?.[t],i=n.session_history_boundary?.[t],a=!!(r&&r.length>0),o=i!==void 0,s=new Set;if(r)for(let e of r)e?.id&&s.add(e.id);let c=!1,l={...n.part??{}};for(let e of s)l[e]!==void 0&&(delete l[e],c=!0);for(let[e,n]of Object.entries(l))s.has(e)||n?.some(e=>e.sessionID===t)&&(delete l[e],c=!0);if(!a&&!o&&!c)return!1;let u={...n.message??{}};delete u[t];let d={...n.session_history_boundary??{}};return delete d[t],e.setState({message:u,part:l,session_history_boundary:d}),!0}function Jl(e,t,n){let r=ql(e,t);if(!n.page)return{applied:!0,changed:r};let i=Rl(e,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes});return{...i,changed:r||i.changed,applied:i.applied||r}}function Yl(e){let t=new Map,n=new Map,r=r=>{let i=Nl(r);if(n.has(i))return;let a=Ml(r.directory),o=e.getStore(a),s=r.sessionID,c=o.getState().message?.[s],l=Pl(o.getState(),s),u=new Map;for(let e of c??[])u.set(e.id,o.getState().part?.[e.id]);let d=o.subscribe(e=>{let n=e.message?.[s],a=Pl(e,s),o=!1,d=new Map;for(let t of n??[]){let n=e.part?.[t.id];d.set(t.id,n),u.get(t.id)!==n&&(o=!0)}u.size!==d.size&&(o=!0);let f=n!==c,p=Il(a,l);if(c=n,l=a,u=d,!f&&!o&&p)return;let m=t.get(i);if(!(!m||m.size===0))for(let e of m)e(r)});n.set(i,d)},i=e=>{let r=t.get(e);if(r&&r.size>0)return;let i=n.get(e);i&&(i(),n.delete(e)),t.delete(e)},a={getTranscript(t){let n=Ml(t.directory),r=e.getStore(n).getState(),i=t.sessionID,a=r.message?.[i]??[],o=e.getLiveRevision?.(n,i)??0;return kl({sessionID:i,messages:a,parts:r.part??{},boundary:Pl(r,i),liveRevision:o})},getPagination(t){let n=Ml(t.directory),r=e.getStore(n).getState();return Ol(t.sessionID,Pl(r,t.sessionID))},getRequestState(t){let n=Ml(t.directory);return e.getRequestState?.(n,t.sessionID)??{sessionID:t.sessionID,status:`idle`}},getHydrationState(e){let t=a.getTranscript(e),n=wl(t);return{sessionID:e.sessionID,p0Satisfied:n,phase:Tl({p0Satisfied:n,earlierHistoryLoaded:xl(t)>1})}},getMessage(e,t){return a.getTranscript(e).messagesByID[t]},getParts(t,n){let r=Ml(t.directory);return e.getStore(r).getState().part?.[n]??[]},hasSession(t){let n=Ml(t.directory),r=e.getStore(n).getState().message;return r?Object.prototype.hasOwnProperty.call(r,t.sessionID):!1},apply(t,n){let r=Ml(t.directory),i=e.getStore(r),a=t.sessionID;switch(n.type){case`http-page`:return Rl(i,a,n);case`sse-event`:return Bl(i,n);case`sse-event-batch`:return Vl(i,n);case`optimistic-add`:return Wl(i,a,n,e,r);case`optimistic-confirm`:return Kl(a,n.messageID,e,r);case`optimistic-remove`:return Gl(i,a,n.messageID,e,r);case`reset`:return Jl(i,a,n);case`materialize-snapshots`:return Hl(i,a,n);case`remove-message`:return Ul(i,a,n.messageID);default:return{applied:!1,changed:!1}}},subscribe(e,n){let a=Nl(e),o=t.get(a);return o||(o=new Set,t.set(a,o)),o.add(n),r(e),()=>{let e=t.get(a);e&&(e.delete(n),i(a))}}};return a}var Xl=new Set,Zl=new Set;function Ql(e,t){return`${e}\n${t}`}function $l(){for(let e of Zl)e()}function eu(e,t){!e||!t||(Xl.add(Ql(e,t)),$l())}function tu(e,t){!e||!t||Xl.delete(Ql(e,t))&&$l()}function nu(e,t){if(!e)return!1;if(t)return Xl.has(Ql(t,e));let n=`\n${e}`;for(let e of Xl)if(e.endsWith(n))return!0;return!1}function ru(e){return Zl.add(e),()=>{Zl.delete(e)}}var iu=[],au=new Map,ou=new Map,su=0,cu=()=>{let e=iu.findIndex(e=>e.priority===`user`);if(e>=0){let[t]=iu.splice(e,1);return t}return iu.shift()},lu=()=>{for(;su<4;){let e=cu();if(!e)return;au.delete(e.key),su+=1,Promise.resolve().then(()=>e.run()).then(t=>{e.resolve(t)},t=>{e.reject(t)}).finally(()=>{--su,ou.delete(e.key),lu()})}};function uu(e,t,n){let r=n?.priority??`background`,i=ou.get(e);if(i){let t=au.get(e);return t&&r===`user`&&t.priority!==`user`&&(t.priority=`user`),i}let a,o,s=new Promise((e,t)=>{a=e,o=t}),c={key:e,priority:r,run:()=>t(),resolve:e=>{a(e)},reject:o};return iu.push(c),au.set(e,c),ou.set(e,s),lu(),s}var du=null,fu=0,pu=new Set;function mu(){fu+=1;for(let e of pu)e()}function hu(e){return e}function gu(e){return pu.add(e),()=>{pu.delete(e)}}function _u(){return fu}function vu(e){return du?.repository===e?e:(du={kind:`query`,repository:e},mu(),e)}function yu(){du&&(du=null,mu())}function U(){return du?.repository??null}function bu(){let e=U();if(!e)throw Error(`TranscriptRepository is not bound — SyncProvider must mount first`);return e}function W(e,t){let n=U();if(n)return n;let r=hu(t);return Yl({getStore:e=>r})}function G(e,t,n){return{directory:e.trim(),sessionID:t,...n?.transport===void 0?{}:{transport:n.transport},...n?.generation===void 0?{}:{generation:n.generation}}}function xu(e){try{let t=U(),n=u(),r=f();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>G(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function Su(e,t){let n=U();return n?n.apply(e,t):null}async function Cu(e,t){let n=bu();if(typeof n.fetchPreviousPage!=`function`)throw Error(`TranscriptRepository does not support fetchPreviousPage`);await n.fetchPreviousPage(G(e,t))}async function wu(e,t){let n=bu();if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support ensureInitial`);await n.ensureInitial(G(e,t))}async function Tu(e,t){let n=bu(),r=G(e,t);if(typeof n.destructiveReset==`function`){await n.destructiveReset(r);return}if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support retryInitial`);await n.ensureInitial(r)}async function Eu(e,t){let n=bu();if(typeof n.refreshFromAuthority!=`function`)throw Error(`TranscriptRepository does not support refreshFromAuthority`);eu(e,t);try{await n.refreshFromAuthority(G(e,t))}finally{tu(e,t)}}async function Du(e,t,n,r){let i=bu();if(typeof i.materializeMessage!=`function`)throw Error(`TranscriptRepository does not support materializeMessage`);let a=G(e,t);await uu(`${e}\n${t}\n${n}`,()=>i.materializeMessage(a,n),{priority:r?.priority??`background`})}function Ou(e,t,n){let r=U();return!r||typeof r.getMessageMaterializationState!=`function`?{sessionID:t,messageID:n,status:`idle`}:r.getMessageMaterializationState(G(e,t),n)}function ku(e,t){U()?.purgeSession?.(G(e,t))}var Au=null;function ju(e){Au&&Au!==e&&Au.cancelAll(`reregister`),Au=e}function Mu(e){Au?.captureCheckpoints(e)}function Nu(e){Au?.onCompensation(e)}async function Pu(e){return Au?Au.ensureOnObserve(e):null}function Fu(e){Au?.cancelAll(e)}var K=e(Me(),1),Iu=[],Lu=[],Ru={sessionID:``,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:al,liveRevision:0};Ol(``,al);var zu={sessionID:``,phase:`idle`,p0Satisfied:!1};function Bu(e,t){return W(e,t)}var Vu=new Set;function Hu(e,t){return`${e}\n${t}`}function Uu(e,t){if(!t)return;let n=Hu(e,t);Vu.has(n)||(Vu.add(n),Pu(G(e,t)).catch(()=>{}).finally(()=>{Vu.delete(n)}))}function Wu(e,t){if(e&&t){Vu.delete(Hu(e,t));return}Vu.clear()}function Gu(e,t,n,r,i=Object.is,a){let o=(0,K.useRef)(r);o.current=r;let s=(0,K.useRef)(i);s.current=i;let c=(0,K.useRef)(void 0),l=a?.enabled!==!1,u=(0,K.useCallback)(()=>{if(!e||!l){let e=o.current(Ru);return(c.current===void 0||!s.current(c.current,e))&&(c.current=e),c.current}let r=Bu(t,n).getTranscript(G(t,e)),i=o.current(r);return(c.current===void 0||!s.current(c.current,i))&&(c.current=i),c.current},[t,l,e,n]),d=(0,K.useCallback)(r=>{if(!e||!l)return()=>void 0;Uu(t,e);let i=Bu(t,n).subscribe(G(t,e),()=>{r()}),a=gu(()=>{i(),c.current=void 0,Wu(t,e),Uu(t,e),i=Bu(t,n).subscribe(G(t,e),()=>{r()}),r()});return()=>{a(),i()}},[t,l,e,n]);return K.useSyncExternalStore(d,u,u)}function Ku(e,t){if(e.messageOrder.length===0)return Iu;if(t&&t.length>0){let n=!0,r=0;for(let i of e.messageOrder){let a=e.messagesByID[i];if(a){if(r>=t.length||t[r]!==a){n=!1;break}r+=1}}if(n&&r===t.length)return t}let n=[];for(let t of e.messageOrder){let r=e.messagesByID[t];r&&n.push(r)}return n}function qu(e,t){return e.messageOrder.length===0?t?.resolved===!0?tl({messages:Iu,parts:e.partsByMessageID}):{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]}:tl({messages:Ku(e),parts:e.partsByMessageID})}function Ju(e,t,n,r){let i=(0,H.c)(4),a;return i[0]!==t||i[1]!==e||i[2]!==n?(a=r=>{if(!e)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let i=Bu(t,n).hasSession?.(G(t,e));return qu(r,{resolved:i===!0||void 0})},i[0]=t,i[1]=e,i[2]=n,i[3]=a):a=i[3],Gu(e,t,n,a,Yu,r)}function Yu(e,t){return e.hasMessages===t.hasMessages&&e.renderable===t.renderable&&e.missingPartMessageIDs.length===t.missingPartMessageIDs.length&&e.missingPartMessageIDs.every((e,n)=>e===t.missingPartMessageIDs[n])}function Xu(e,t,n,r){return Gu(e,t,n,Qu,Zu,r)}function Zu(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}function Qu(e){return Ku(e)}function $u(e,t){if(e===t)return!0;if(e.sessionID!==t.sessionID||e.liveRevision!==t.liveRevision||e.boundary.kind!==t.boundary.kind||e.boundary.loadedTurns!==t.boundary.loadedTurns||e.boundary.kind===`has-more`&&t.boundary.kind===`has-more`&&e.boundary.cursor!==t.boundary.cursor||e.messageOrder.length!==t.messageOrder.length)return!1;for(let n=0;n<e.messageOrder.length;n+=1){let r=e.messageOrder[n];if(r!==t.messageOrder[n]||e.messagesByID[r]!==t.messagesByID[r]||e.partsByMessageID[r]!==t.partsByMessageID[r])return!1}return!0}function ed(e,t,n,r){return Gu(e,t,n,td,$u,r)}function td(e){return e}function nd(e,t,n,r){if(e.length===0)return()=>void 0;let i=[],a=()=>{for(let e of i)e();i=[]},o=()=>{let r=new Set;for(let a of e){let e=`${a.directory}\n${a.sessionID}`;if(r.has(e))continue;r.add(e);let o=U();if(o){i.push(o.subscribe(G(a.directory,a.sessionID),t));continue}let s=n?.(a.directory);if(!s)continue;let c=W(a.directory,s);i.push(c.subscribe(G(a.directory,a.sessionID),t))}},s=()=>{a(),o(),t()};o();let c=gu(s),l=r?.subscribeRebuild?.(s);return()=>{l?.(),c(),a()}}function rd(e,t){return e.length===0?``:e.map(e=>{let n=hd(e.directory,e.sessionID,t?.(e.directory)),r=n[n.length-1];return`${e.sessionID}:${r?.id??``}:${r?.role??``}:${r?.time?.completed??``}`}).join(`\0`)}function id(e,t,n){return Gu(e,t,n,ad)}function ad(e){return e.messageOrder.length}function od(e,t,n){let r=(0,H.c)(8),i=(0,K.useRef)(!1),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current=!1,!1;let r=Bu(t,n),a=r.hasSession?.(G(t,e))??r.getTranscript(G(t,e)).messageOrder.length>0;return i.current=a,i.current},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>e?Bu(t,n).subscribe(G(t,e),()=>{r()}):sd,r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return K.useSyncExternalStore(c,o,o)}function sd(){}function cd(e,t,n,r){let i=(0,H.c)(10),a=(0,K.useRef)(void 0),o;i[0]!==t||i[1]!==e||i[2]!==r||i[3]!==n?(o=()=>{if(!e)return a.current=Lu,Lu;let i=Bu(t,n),o=r||e,s=i.getParts(G(t,o),e),c=s.length===0?Lu:s;if(a.current===void 0||a.current!==c){if(a.current&&a.current.length===c.length&&a.current.every((e,t)=>e===c[t]))return a.current;a.current=c}return a.current},i[0]=t,i[1]=e,i[2]=r,i[3]=n,i[4]=o):o=i[4];let s=o,c;i[5]!==t||i[6]!==e||i[7]!==r||i[8]!==n?(c=i=>{if(!e)return ud;let a=Bu(t,n);return r?a.subscribe(G(t,r),()=>{i()}):ld},i[5]=t,i[6]=e,i[7]=r,i[8]=n,i[9]=c):c=i[9];let l=c;return K.useSyncExternalStore(l,s,s)}function ld(){}function ud(){}function dd(e,t,n){let r=(0,H.c)(8),i=(0,K.useRef)(zu),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current!==zu&&(i.current=zu),i.current;let r=Bu(t,n).getHydrationState?.(G(t,e))??{sessionID:e,phase:`idle`,p0Satisfied:!1},a=i.current;return a.sessionID===r.sessionID&&a.phase===r.phase&&a.p0Satisfied===r.p0Satisfied?a:(i.current=r,r)},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>{if(!e)return fd;Uu(t,e);let a=Bu(t,n).subscribe(G(t,e),()=>{r()}),o=gu(()=>{a(),i.current=zu,Wu(t,e),Uu(t,e),a=Bu(t,n).subscribe(G(t,e),()=>{r()}),r()});return()=>{o(),a()}},r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return K.useSyncExternalStore(c,o,o)}function fd(){}function pd(e,t,n){let r=(0,H.c)(2),i;return r[0]===e?i=r[1]:(i=t=>Ol(e,t.boundary),r[0]=e,r[1]=i),Gu(e,t,n,i,md)}function md(e,t){return e.sessionID===t.sessionID&&e.hasPreviousPage===t.hasPreviousPage&&e.isComplete===t.isComplete&&e.cursor===t.cursor&&e.loadedTurns===t.loadedTurns&&e.boundary.kind===t.boundary.kind&&e.boundary.loadedTurns===t.boundary.loadedTurns&&(e.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||e.boundary.cursor===t.boundary.cursor)}function hd(e,t,n){if(!t)return[];let r=U();if(r){let n=r.getTranscript(G(e,t));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}if(!n)return[];let i=W(e,n).getTranscript(G(e,t));return i.messageOrder.map(e=>i.messagesByID[e]).filter(e=>!!e)}var gd=null,_d=``,vd=null,yd=new Set,bd=null,xd=new Map,Sd=new Map;function Cd(e,t,n,r){gd=t,bd!==t&&(bd=null,xd=new Map,Sd=new Map),_d=n,r&&(vd=r)}function wd(e,t){vd?.(e,t)}function Td(){if(!gd)throw Error(`ChildStoreManager not initialized — is SyncProvider mounted?`);return gd}function Ed(e){let t=gd;if(!t)return;let n=e||_d;if(n)return t.getState(n)}function Dd(e){let t=Ed(e)?.config;return t&&Object.keys(t).length>0?t:void 0}function Od(e){return yd.add(e),()=>{yd.delete(e)}}function kd(e,t){if(e)for(let n of yd)n(e,t)}function Ad(e){return Ed(e)?.session??[]}function jd(){return Array.from(Md().values())}function Md(){let e=gd;if(!e)return Sd;let t=bd!==e||xd.size!==e.children.size;for(let[n,r]of e.children)if(xd.get(n)!==r.getState().session){t=!0;break}if(!t)return Sd;let n=new Map,r=new Map;for(let[t,i]of e.children){let e=i.getState().session;n.set(t,e);for(let t of e)t?.id&&r.set(t.id,t)}return bd=e,xd=n,Sd=r,Sd}function Nd(e,t,n){if(n){let r=[];for(let[i,a]of n)if(a.session.some(t=>t.id===e)&&a.hasTranscript===!0){if(i===t)return i;r.push(i)}return r.length===1?r[0]:void 0}let r=[];try{let n=U();if(gd){for(let[i,a]of gd.children)if(a.getState().session.some(t=>t.id===e)&&(n??W(i,a)).hasSession?.(G(i,e))){if(i===t)return i;r.push(i)}}if(r.length===0&&n){let i=n.getCacheBudget?.().listCanonical();if(i){for(let n of i)if(n.scope.sessionID===e){if(n.scope.directory===t)return n.scope.directory;r.push(n.scope.directory)}}}}catch{}let i=[...new Set(r)];return i.length===1?i[0]:void 0}function Pd(e,t){if(!e)return[];try{let n=U(),r=t??_d;if(n){let t=n.getTranscript(G(r,e));return t.messageOrder.map(e=>t.messagesByID[e]).filter(e=>!!e)}if(gd){let t=gd.getChild(r);if(t){let n=W(r,t).getTranscript(G(r,e));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}}}catch{}return[]}function Fd(e,t){if(!e)return[];try{let n=U(),r=t??_d;if(n)return[...n.getParts(G(r,e),e)];if(gd){let t=gd.getChild(r);if(t)return[...W(r,t).getParts(G(r,e),e)]}}catch{}return[]}function Id(e,t){return Ed(t)?.session_status[e]}var Ld=`opencode`,Rd=`big-pickle`,zd=`__add_provider__`,Bd=`zen`,Vd=`big-pickle`,Hd=async(e,t)=>{V(`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 V(`config.defaults:end`,{source:e,durationMs:Math.round(r-n),hasDefaultModel:!!t.defaultModel,hasDefaultAgent:!!t.defaultAgent}),t};try{let t=await me(e);return ss({enabled:t?.responseStyleEnabled,preset:t?.responseStylePreset,customInstructions:t?.responseStyleCustomInstructions},e),r(`settings-bootstrap-query`,t)}catch(n){V(`config.defaults:error`,{error:n instanceof Error?n.message:String(n)});let i=L(e);return i&&ss({enabled:i.responseStyleEnabled,preset:i.responseStylePreset,customInstructions:i.responseStyleCustomInstructions},e),r(i?`retained-settings-bootstrap`:`retained-store-settings`,i??t)}},Ud=e=>es(e),Wd=e=>e===zd?``:e??``,Gd=(e,t)=>e===zd?zd:t,Kd=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},qd=e=>{if(!Array.isArray(e))return[];let t=e.map(e=>{if(!$d(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 Qi({schemaVersion:1,providers:t,default:{},partial:!1}).providers.map(e=>({id:e.id,name:e.name,models:Object.values(e.models)}))}catch{return[]}},Jd=e=>{try{return Qi({schemaVersion:1,providers:[],default:e,partial:!1}).default}catch{return{}}},Yd=(e,t,n)=>{let r=e.find(e=>e.id===t);return r?r.models.some(e=>e.id===n):!1},Xd=({providers:e,currentProviderId:t,currentModelId:n,currentVariant:r,settingsDefaultModel:i,settingsDefaultVariant:a})=>{let o=(t,n,r)=>{if(!r)return;let i=e.find(e=>e.id===t)?.models.find(e=>e.id===n);return i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)?r:void 0};if(t&&n&&Yd(e,t,n))return{providerId:t,modelId:n,variant:o(t,n,r)};if(i){let t=Ud(i);if(t&&Yd(e,t.providerId,t.modelId))return{providerId:t.providerId,modelId:t.modelId,variant:o(t.providerId,t.modelId,a)}}if(Yd(e,Ld,Rd))return{providerId:Ld,modelId:Rd};let s=e[0],c=s?.models[0];return s&&c?{providerId:s.id,modelId:c.id}:null},Zd=({agents:e,providers:t,projectDefaultModel:n,settingsDefaultAgent:r,settingsDefaultModel:i,settingsDefaultVariant:a,opencodeDefaultAgent:o,opencodeDefaultModel:s,projectLastUserSelection:c,globalLastUserSelection:l})=>{if(e.length===0)return{agentName:void 0};let u=(e,n,r)=>{if(!r)return;let i=t.find(t=>t.id===e)?.models.find(e=>e.id===n);return i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)?r:void 0},d=n=>{if(!n)return null;let r=e.find(e=>e.name===n.agentName);return!r||!zo(r.mode)||r.hidden===!0||!Yd(t,n.providerId,n.modelId)?null:{agentName:r.name,providerId:n.providerId,modelId:n.modelId,variant:u(n.providerId,n.modelId,n.variant)}},f=d(c);if(f)return f;let p=d(l);if(p)return p;let m=e.filter(e=>zo(e.mode)),h;if(r&&(h=e.find(e=>e.name===r)),!h&&o){let t=e.find(e=>e.name===o);t&&zo(t.mode)&&t.hidden!==!0&&(h=t)}if(h||=m.find(e=>e.name===`build`)||m[0]||e[0],!h)return{agentName:void 0};let g,_,v,y=n||i;if(y){let e=Ud(y);e&&Yd(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId,v=u(g,_,n?void 0:a))}if(!g&&h.model?.providerID&&h.model?.modelID&&Yd(t,h.model.providerID,h.model.modelID)&&(g=h.model.providerID,_=h.model.modelID,v=u(g,_,h.variant)),!g&&s){let e=Ud(s);e&&Yd(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId)}if(!g)if(Yd(t,Ld,Rd))g=Ld,_=Rd;else{let e=t[0],n=e?.models[0];e&&n&&(g=e.id,_=n.id)}return{agentName:h.name,providerId:g,modelId:_,variant:v}},Qd=({providers:e,settingsZenModel:t})=>{let n=Kd(t);if(!Array.isArray(e)||e.length===0)return n?{providerId:Bd,modelId:n}:null;if(n&&Yd(e,Bd,n))return{providerId:Bd,modelId:n};if(Yd(e,Bd,Vd))return{providerId:Bd,modelId:Vd};let r=e.find(e=>e.id===Bd);if(r?.models.length){let e=Math.floor(Math.random()*r.models.length),t=Kd(r.models[e]?.id);if(t)return{providerId:Bd,modelId:t}}return null},$d=e=>typeof e==`object`&&!!e,ef=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},tf=(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:ef(t.capabilities.input),output:ef(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}),nf=e=>new Promise(t=>setTimeout(t,e)),rf=800,af=async(e=rf)=>Promise.race([B.checkHealth().catch(()=>!1),nf(Math.max(1,e)).then(()=>!1)]),of=`__global__`,sf=e=>{let t=typeof e==`string`?e.trim():``;return t.length>0?t:of},cf=e=>e===of?null:e,lf=()=>typeof window>`u`?of:vf(B.getDirectory()??Ne.getState().currentDirectory),uf=`oc.worktreeProjectMap`,df=null,ff=()=>{if(df===null)try{let e=typeof localStorage<`u`?localStorage.getItem(uf):null;df=e?JSON.parse(e):{}}catch{df={}}return df},pf=(e,t)=>{if(!e||!t||e===t)return;let n=ff();if(n[e]!==t){n[e]=t;try{localStorage.setItem(uf,JSON.stringify(n))}catch{}}},mf=e=>{let t=y(e);return t===null?null:t||`/`},hf=()=>{try{return Ti.getState().projects.map(e=>mf(e.path)).filter(e=>!!e)}catch{return[]}},gf=()=>{try{let{projects:e,activeProjectId:t}=Ti.getState();return mf((t?e.find(e=>e.id===t):null)?.path??e[0]?.path??null)}catch{return null}},_f=e=>{let t=mf(e),n=hf();if(!t)return null;if(n.includes(t))return t;let r=mf(ff()[t]);if(r)return r;try{let e=mf($o(Ti.getState().projects,$.getState().availableWorktreesByProject,t)?.path??null);if(e&&e!==t)return pf(t,e),e}catch{return null}return null},vf=e=>sf(_f(e)),yf=e=>vf(e),bf=1e3,xf=125e4,Sf=100,Cf=256,wf=new Set([`__proto__`,`prototype`,`constructor`]),Tf=/[\u0000-\u001F\u007F]/u,Ef=new TextEncoder,Df=e=>{let t=e.directoryScoped,n=e.activeDirectoryKey;if(!t||!n)return e;let r=t[n];if(!r)return e;let i={...e},a=e.providers&&e.providers.length>0?e.providers:r.providers;return i.providers=a,i.agents=[],i.defaultProviders=e.defaultProviders&&Object.keys(e.defaultProviders).length>0?e.defaultProviders:r.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=r.opencodeDefaultAgent,i.opencodeDefaultModel=r.opencodeDefaultModel,i.selectionSource=r.selectionSource??`auto`,a.length>0&&r.providerCatalogPartial!==!0&&ia(cf(n),{providers:a,defaultProviders:i.defaultProviders??{},providerCatalogPartial:!1}),i},Of=(e,t=!1)=>{if(typeof e!=`string`)return;let n=e.trim();if(!(n.length===0||n.length>Cf||t&&n!==e||Tf.test(n)||wf.has(n)))return n},kf=e=>{if(!$d(e))return{};let t=[];for(let[n,r]of Object.entries(e)){if(t.length>=Sf||!$d(r))continue;let e=Of(n,!0),i=Of(r.providerId),a=Of(r.modelId),o=Of(r.variant);!e||!i||!a||r.variant!==void 0&&!o||t.push([e,{providerId:i,modelId:a,...o?{variant:o}:{}}])}return Object.fromEntries(t)},Af=e=>{if(!$d(e))return;let t=Of(e.agentName,!0),n=Of(e.providerId),r=Of(e.modelId),i=Of(e.variant);if(!(!t||!n||!r||e.variant!==void 0&&!i))return{agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}}},jf=(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}:{}}},Mf=(e,t,n)=>Af(e)??jf(t,n),Nf=(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`}),Pf=e=>{let t={};for(let[n,r]of Object.entries(e)){let e=r.lastUserSelection??jf(r.lastSelectedAgentName,r.agentModelSelections);!e&&!r.lastSelectedAgentName||(t[n]={...Nf(),agentModelSelections:{},lastSelectedAgentName:e?.agentName??r.lastSelectedAgentName,lastUserSelection:e,selectionSource:r.selectionSource===`manual`?`manual`:`auto`})}return t},Ff=e=>{if(!$d(e))return{};let t=Kd(e.catalogTransportIdentity),n={};for(let t of[`activeDirectoryKey`,`settingsDefaultModel`,`settingsDefaultVariant`,`settingsDefaultAgent`,`settingsZenModel`]){let r=Kd(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);for(let t of[`speechRate`,`speechPitch`,`speechVolume`])typeof e[t]==`number`&&Number.isFinite(e[t])&&(n[t]=e[t]);let r={};if($d(e.directoryScoped))for(let[t,n]of Object.entries(e.directoryScoped)){if(!$d(n))continue;let e=n.providerCatalogPartial===!0,i=e?[]:qd(n.providers),a=e?{}:Jd(n.defaultProviders),o=kf(n.agentModelSelections),s=Of(n.lastSelectedAgentName,!0),c=Mf(n.lastUserSelection,s,o);r[t]={...Nf(),providers:i,agents:[],currentProviderId:Kd(n.currentProviderId)??``,currentModelId:Kd(n.currentModelId)??``,currentVariant:Kd(n.currentVariant),currentAgentName:Kd(n.currentAgentName),selectedProviderId:Wd(Kd(n.selectedProviderId)),agentModelSelections:o,lastSelectedAgentName:c?.agentName??s,lastUserSelection:c,defaultProviders:a,providerCatalogPartial:e,opencodeDefaultAgent:Kd(n.opencodeDefaultAgent),opencodeDefaultModel:Kd(n.opencodeDefaultModel),selectionSource:n.selectionSource===`manual`?`manual`:`auto`}}let i=kf(e.agentModelSelections),a=Of(e.lastSelectedAgentName,!0),o=Mf(e.globalLastUserSelection,a,i)??(()=>{let t=Kd(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),s=u();if(t!==s){let t=Pf(r),i=Kd(e.activeDirectoryKey),a=i?t[i]?.lastUserSelection:void 0;return{...n,catalogTransportIdentity:s,directoryScoped:t,providers:[],agents:[],defaultProviders:{},currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:a?.agentName??o?.agentName,lastUserSelection:a,globalLastUserSelection:o,providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{}}}return{...n,catalogTransportIdentity:t,directoryScoped:r,providers:[],agents:[],defaultProviders:{},currentProviderId:Kd(e.currentProviderId)??``,currentModelId:Kd(e.currentModelId)??``,currentVariant:Kd(e.currentVariant),currentAgentName:Kd(e.currentAgentName),selectedProviderId:Wd(Kd(e.selectedProviderId)),agentModelSelections:i,lastSelectedAgentName:o?.agentName??a,lastUserSelection:(()=>{let t=Kd(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),globalLastUserSelection:o}},If=(e,t,n,r)=>{if(!r)return!0;let i=e.find(e=>e.id===t)?.models.find(e=>e.id===n);return!!i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)},Lf=({agents:e,providers:t,currentAgentName:n,currentProviderId:r,currentModelId:i,currentVariant:a,selectionSource:o,resolvedAgentName:s,resolvedProviderId:c,resolvedModelId:l,resolvedVariant:u})=>{let d=n&&e.some(e=>e.name===n)?n:void 0,f=!!r&&!!i&&Yd(t,r,i)&&If(t,r,i,a),p=o===`manual`&&(!!d||f);return{agentName:p?d??s:s,providerId:p&&f?r:c,modelId:p&&f?i:l,variant:p&&f?a:u,selectionSource:p?`manual`:`auto`}},Rf=null,zf=null,Bf=null,Vf={},Hf={},Uf=De()(Ae(Oe((e,t)=>({activeDirectoryKey:lf(),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`,voiceProvider:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`voiceProvider`);if(e===`openai`||e===`browser`||e===`local`||e===`say`||e===`openai-compatible`)return e}return`browser`})(),speechRate:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechRate`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=.5&&t<=2)return t}}return 1})(),speechPitch:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechPitch`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=.5&&t<=2)return t}}return 1})(),speechVolume:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechVolume`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=0&&t<=1)return t}}return 1})(),sayVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sayVoice`);if(e)return e}return`Samantha`})(),localTtsVoiceId:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`localTtsVoiceId`);if(e!==null){let t=Number.parseInt(e,10);if(Number.isInteger(t)&&t>=0)return t}}return 0})(),browserVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`browserVoice`);if(e)return e}return``})(),openaiVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiVoice`);if(e)return e}return`nova`})(),openaiApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiApiKey`);if(e)return e}return``})(),openaiCompatibleUrl:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleUrl`);if(e)return e}return``})(),openaiCompatibleApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleApiKey`);if(e)return e}return``})(),openaiCompatibleVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleVoice`);if(e)return e}return`af_sky`})(),openaiCompatibleTtsModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleTtsModel`);if(e&&e!==`speaches-ai/Kokoro-82M-v1.0-ONNX`)return e}return`kokoro`})(),dictationEnabled:!(typeof window<`u`&&localStorage.getItem(`dictationEnabled`)===`false`),sttProvider:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttProvider`);if(e===`local`||e===`openai-compatible`)return e;if(e===`server`)return`openai-compatible`}return`local`})(),sttServerUrl:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttServerUrl`);if(e)return e}return`http://localhost:8001/v1`})(),sttApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttApiKey`);if(e)return e}return``})(),sttModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttModel`);if(e)return e}return`deepdml/faster-whisper-large-v3-turbo-ct2`})(),sttLocalModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttLocalModel`);if(e)return e}return`parakeet-tdt-0.6b-v2-int8`})(),sttLanguage:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttLanguage`);if(e!==null)return e}return``})(),showMessageTTSButtons:typeof window<`u`&&localStorage.getItem(`showMessageTTSButtons`)===`true`,ttsInputMode:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`ttsInputMode`);if(e===`raw`)return`raw`;if(e===`summarized`)return`summarized`}return`sanitized`})(),summarizeMessageTTS:typeof window<`u`&&localStorage.getItem(`summarizeMessageTTS`)===`true`,summarizeVoiceConversation:typeof window<`u`&&localStorage.getItem(`summarizeVoiceConversation`)===`true`,summarizeCharacterThreshold:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`summarizeCharacterThreshold`);if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>=50&&t<=2e3)return t}}return 200})(),summarizeMaxLength:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`summarizeMaxLength`);if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>=50&&t<=2e3)return t}}return 500})(),activateDirectory:async(n,r)=>{let i=_f(n);if(!i){V(`activateDirectory:skippedUnknownDirectory`,{directory:n});return}let a=sf(i),o=!1,s=!1,c=!1;e(e=>{let t=e.directoryScoped[a],n=e.providers.length>0?e.providers:t?.providers??[],r=Object.keys(e.defaultProviders).length>0?e.defaultProviders:t?.defaultProviders??{},i=e.agents.length>0?e.agents:t?.agents??[];o=n.length>0,s=i.length>0,c=!!t?.agents.length;let l=e.isConnected&&!o,u=e.isConnected&&!s;return t?{activeDirectoryKey:a,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,[a]:l},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[a]:u}}:{activeDirectoryKey:a,providers:n,defaultProviders:r,agents:i,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[a]:l},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[a]:u}}}),s&&o&&!c&&t().applyDefaultModelAgentSelection(),t().isConnected&&((!o||r?.refreshProviders)&&await t().loadProviders({directory:cf(a),source:r?.source??`activateDirectory`,forceRefresh:r?.refreshProviders}),s||await t().loadAgents({directory:cf(a),source:`activateDirectory`}))},invalidateProviderCache:e=>{la(null,u())},loadProviders:async n=>{let r=n?.directory??cf(t().activeDirectoryKey),i=_f(r);if(!i){V(`loadProviders:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`});return}let a=i??B.getDirectory()??null,o=sf(i),s=n?.source??`unknown`,c=u(),l=f(),d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&_f(r)===i,p=(Vf[o]??0)+1;Vf[o]=p,V(`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();V(`loadProviders:start`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let l=t().directoryScoped[o],u=t().providers.length>0?t().providers:l?.providers??[],f=Object.keys(t().defaultProviders).length>0?t().defaultProviders:l?.defaultProviders??{};try{let t=await Pe(`loadProviders:api`,()=>n?.forceRefresh?sa(cf(o),c):aa(cf(o),c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),l=qd(t.providers),f=Jd(t.default);if(!d()||t.partial&&u.length>0||l.length===0||(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=Xd({providers:l,currentProviderId:r,currentModelId:i,currentVariant:a,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant}),u=e.activeDirectoryKey===o?e.selectedProviderId:n.selectedProviderId,p=u===zd||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={providers:l,defaultProviders:f,directoryScoped:{...e.directoryScoped,[o]:m}};return e.activeDirectoryKey===o&&(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();V(`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),V(`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={providers:u,defaultProviders:f,directoryScoped:{...e.directoryScoped,[o]:t}};if(e.activeDirectoryKey===o&&!e.currentProviderId&&!e.currentModelId&&e.settingsDefaultModel){let r=Ud(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(()=>{Vf[o]===p&&e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:!1}}))})},refreshMissingCatalogs:e=>{if(zf)return zf;let n=e?.source??`refreshMissingCatalogs`,r=(async()=>{t().providers.length===0&&await t().loadProviders({source:n,forceRefresh:!0}),t().agents.length===0&&await t().loadAgents({source:n,forceRefresh:!0})})().finally(()=>{zf=null});return zf=r,r},refreshCatalogsOnPickerOpen:e=>{if(Bf)return Bf;let n=e?.source??`refreshCatalogsOnPickerOpen`,r=Promise.all([t().loadProviders({source:n,forceRefresh:!0}),t().loadAgents({source:n,forceRefresh:!0})]).then(()=>void 0).finally(()=>{Bf=null});return Bf=r,r},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??cf(t().activeDirectoryKey),i=_f(r);if(!i)return V(`loadAgents:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`}),!1;let a=i??B.getDirectory()??null,o=sf(i),s=n?.source??`unknown`,c=u(),l=f(),d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&_f(r)===i,p=(Hf[o]??0)+1;Hf[o]=p,V(`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();V(`loadAgents:start`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let l=t().directoryScoped[o],u=t().agents.length>0?t().agents:l?.agents??[];try{let l=cf(o);(Dd(r??void 0)??Dd(l??void 0))&&V(`loadAgents:syncConfigHit`,{directoryKey:o,source:s});let[f,p]=await Promise.all([Pe(`loadAgents:api`,()=>n?.forceRefresh?ca(l,c):oa(l,c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),Hd(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,sttProvider:t().sttProvider,sttServerUrl:t().sttServerUrl,sttModel:t().sttModel,sttLocalModel:t().sttLocalModel,sttLanguage:t().sttLanguage})]),m=Array.isArray(f)?f:[];if(!d())return!1;let h=Dd(r??void 0)??Dd(l??void 0),g=h!==void 0,_=g?Kd(h.default_agent):void 0,v=g?Kd(h.model):void 0,y=t().activeDirectoryKey===o?t().providers:t().directoryScoped[o]?.providers??[],b=Kd(t().settingsZenModel),x=Kd(p.zenModel),S=Qd({providers:y,settingsZenModel:b}),C=Qd({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:u,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`,sttProvider:p.sttProvider??e.sttProvider,sttServerUrl:p.sttServerUrl??e.sttServerUrl,sttModel:p.sttModel??e.sttModel,sttLocalModel:p.sttLocalModel??e.sttLocalModel,sttLanguage:p.sttLanguage??e.sttLanguage,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;if(d()&&k&&w&&ve({zenModel:w,gitProviderId:``,gitModelId:``}).catch(()=>{}),m.length===0){if(u.length>0&&!n?.forceRefresh){if(!d())return!1;let e=typeof performance<`u`?performance.now():Date.now();return V(`loadAgents:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(e-i),agents:u.length,retainedPrevious:!0}),!0}if(e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let t={...e.directoryScoped[o]??{providers:y,agents:[],currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:y,agents:[],currentAgentName:void 0},n={directoryScoped:{...e.directoryScoped,[o]:t}};return e.activeDirectoryKey===o&&(n.currentAgentName=void 0),n}),!d())return!1;let t=typeof performance<`u`?performance.now():Date.now();return V(`loadAgents:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(t-i),agents:m.length}),!0}let A=(e,t)=>{let n=y.find(t=>t.id===e);return n?n.models.some(e=>e.id===t):!1},j={};if(p.defaultAgent&&!m.some(e=>e.name===p.defaultAgent)&&(j.defaultAgent=``),p.defaultModel){let e=Ud(p.defaultModel);if(!e||!A(e.providerId,e.modelId))j.defaultModel=``;else if(p.defaultVariant){let t=y.find(t=>t.id===e.providerId)?.models.find(t=>t.id===e.modelId)?.variants;t&&Object.prototype.hasOwnProperty.call(t,p.defaultVariant)||(j.defaultVariant=``)}}let ee=t(),te=ee.directoryScoped[o]?.lastUserSelection??(ee.activeDirectoryKey===o?ee.lastUserSelection:void 0),ne=Zd({agents:m,providers:y,settingsDefaultAgent:p.defaultAgent,settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,opencodeDefaultAgent:D,opencodeDefaultModel:O,projectLastUserSelection:te,globalLastUserSelection:ee.globalLastUserSelection}),re=ne.agentName??m[0].name,M=ne.providerId,N=ne.modelId,ie=ne.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=Lf({agents:m,providers:y,currentAgentName:r,currentProviderId:i,currentModelId:a,currentVariant:s,selectionSource:l,resolvedAgentName:re,resolvedProviderId:M,resolvedModelId:N,resolvedVariant:ie}),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()&&Object.keys(j).length>0&&(e({settingsDefaultModel:j.defaultModel===void 0?t().settingsDefaultModel:void 0,settingsDefaultVariant:j.defaultVariant===void 0?t().settingsDefaultVariant:void 0,settingsDefaultAgent:j.defaultAgent===void 0?t().settingsDefaultAgent:void 0}),ve(j).catch(()=>{})),!d())return!1;let ae=typeof performance<`u`?performance.now():Date.now();return V(`loadAgents:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(ae-i),agents:m.length}),!0}catch(t){return!d()||(console.error(`Failed to load agents:`,t),V(`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:u},r={directoryScoped:{...e.directoryScoped,[o]:n}};return e.activeDirectoryKey===o&&(r.agents=u),r}),!1}})().finally(()=>{Hf[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();if(e(e=>{let t=e.activeDirectoryKey,r={...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:n,selectionSource:`manual`};return{currentAgentName:n,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:r}}}),n){let{currentSessionId:e}=$.getState(),t=Yo.getState();e&&t.saveSessionAgentSelection(e,n),e&&$.getState().isOpenChamberCreatedSession(e)&&(t.getAgentModelForSession(e,n)||$.getState().initializeNewOpenChamberSession(e,r))}if(n){let{currentSessionId:l}=$.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:Gd(e.selectedProviderId,t),selectionSource:`manual`};return{currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:Gd(e.selectedProviderId,t),selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[i]:a}}})},d=r.find(e=>e.name===n),f=(e,t,r=[])=>{let a=i.find(t=>t.id===e)?.models.find(e=>e.id===t)?.variants;if(!a)return;let s=l?Yo.getState().getAgentModelVariantForSession(l,n,e,t):void 0;for(let e of[s,...r,o])if(e&&Object.prototype.hasOwnProperty.call(a,e))return e};if(l){let e=Yo.getState().getAgentModelForSession(l,n);if(e&&Yd(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=Ud(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}=Zd({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:Gd(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=Gd(e.selectedProviderId,p)),r})},applyOpenCodeConfigDefaults:(n,r=`syncConfig`,i)=>{let a=n??cf(t().activeDirectoryKey),o=vf(a),s=cf(o),c=i??Dd(a??void 0)??Dd(s??void 0);if(!c)return;let l=Kd(c.default_agent),u=Kd(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??Nf(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=Zd({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=Lf({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:Gd(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!==Gd(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=Gd(x,S.providerId))),V(`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 Qd({providers:e.providers,settingsZenModel:e.settingsZenModel})},setVoiceProvider:t=>{e({voiceProvider:t}),typeof window<`u`&&localStorage.setItem(`voiceProvider`,t)},setSpeechRate:t=>{let n=Math.max(.5,Math.min(2,t));e({speechRate:n}),typeof window<`u`&&localStorage.setItem(`speechRate`,String(n))},setSpeechPitch:t=>{let n=Math.max(.5,Math.min(2,t));e({speechPitch:n}),typeof window<`u`&&localStorage.setItem(`speechPitch`,String(n))},setSpeechVolume:t=>{let n=Math.max(0,Math.min(1,t));e({speechVolume:n}),typeof window<`u`&&localStorage.setItem(`speechVolume`,String(n))},setSayVoice:t=>{e({sayVoice:t}),typeof window<`u`&&localStorage.setItem(`sayVoice`,t)},setLocalTtsVoiceId:t=>{e({localTtsVoiceId:t}),typeof window<`u`&&localStorage.setItem(`localTtsVoiceId`,String(t))},setBrowserVoice:t=>{e({browserVoice:t}),typeof window<`u`&&localStorage.setItem(`browserVoice`,t)},setOpenaiVoice:t=>{e({openaiVoice:t}),typeof window<`u`&&localStorage.setItem(`openaiVoice`,t)},setOpenaiApiKey:t=>{e({openaiApiKey:t}),typeof window<`u`&&localStorage.setItem(`openaiApiKey`,t)},setOpenaiCompatibleUrl:t=>{e({openaiCompatibleUrl:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleUrl`,t)},setOpenaiCompatibleApiKey:t=>{e({openaiCompatibleApiKey:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleApiKey`,t)},setOpenaiCompatibleVoice:t=>{e({openaiCompatibleVoice:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleVoice`,t)},setOpenaiCompatibleTtsModel:t=>{e({openaiCompatibleTtsModel:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleTtsModel`,t)},setDictationEnabled:t=>{e({dictationEnabled:t}),typeof window<`u`&&localStorage.setItem(`dictationEnabled`,String(t)),ve({dictationEnabled:t}).catch(()=>{})},setSttProvider:t=>{e({sttProvider:t}),typeof window<`u`&&localStorage.setItem(`sttProvider`,t),ve({sttProvider:t}).catch(()=>{})},setSttServerUrl:t=>{e({sttServerUrl:t}),typeof window<`u`&&localStorage.setItem(`sttServerUrl`,t),ve({sttServerUrl:t}).catch(()=>{})},setSttApiKey:t=>{e({sttApiKey:t}),typeof window<`u`&&localStorage.setItem(`sttApiKey`,t)},setSttModel:t=>{e({sttModel:t}),typeof window<`u`&&localStorage.setItem(`sttModel`,t),ve({sttModel:t}).catch(()=>{})},setSttLocalModel:t=>{e({sttLocalModel:t}),typeof window<`u`&&localStorage.setItem(`sttLocalModel`,t),ve({sttLocalModel:t}).catch(()=>{})},setSttLanguage:t=>{e({sttLanguage:t}),typeof window<`u`&&localStorage.setItem(`sttLanguage`,t),ve({sttLanguage:t}).catch(()=>{})},setShowMessageTTSButtons:t=>{e({showMessageTTSButtons:t}),typeof window<`u`&&localStorage.setItem(`showMessageTTSButtons`,String(t))},setTtsInputMode:t=>{e({ttsInputMode:t}),typeof window<`u`&&localStorage.setItem(`ttsInputMode`,t)},setSummarizeMessageTTS:t=>{e({summarizeMessageTTS:t}),typeof window<`u`&&localStorage.setItem(`summarizeMessageTTS`,String(t))},setSummarizeVoiceConversation:t=>{e({summarizeVoiceConversation:t}),typeof window<`u`&&localStorage.setItem(`summarizeVoiceConversation`,String(t))},setSummarizeCharacterThreshold:t=>{let n=Math.max(50,Math.min(2e3,t));e({summarizeCharacterThreshold:n}),typeof window<`u`&&localStorage.setItem(`summarizeCharacterThreshold`,String(n))},setSummarizeMaxLength:t=>{let n=Math.max(50,Math.min(2e3,t));e({summarizeMaxLength:n}),typeof window<`u`&&localStorage.setItem(`summarizeMaxLength`,String(n))},probeConnection:async n=>{if(await af(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()=>{V(`checkConnection:start`);let n=0,r=null;for(;n<5;)try{V(`checkConnection:attempt`,{attempt:n+1});let r=await Pe(`checkConnection:health`,()=>B.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 nf(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`}),V(`checkConnection:end`,{healthy:r,attempts:n+1}),r}catch(e){r=e,n+=1,await nf(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`}),V(`checkConnection:end`,{healthy:!1,attempts:5}),!1},initializeApp:async()=>{if(Rf)return V(`initializeApp:deduped`),Rf;let n=(async()=>{let n=typeof performance<`u`?performance.now():Date.now();V(`initializeApp:start`);try{if(Le(),!await t().checkConnection()){e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`});return}V(`initApp:skipped`,{reason:`checkConnection already verified health`});let r=B.getDirectory()??Ne.getState().currentDirectory??cf(t().activeDirectoryKey),i=_f($o(Ti.getState().projects,$.getState().availableWorktreesByProject,r??null)?.path??r??null),a=i??gf();if(!a){V(`initializeApp:noProjectConfigDirectory`),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});return}!i&&r!==a&&(V(`initializeApp:normalizedUnknownDirectoryToProject`,{initialDirectory:r,configDirectory:a}),B.setDirectory(a),Ne.getState().setDirectory(a,{showOverlay:!1}));let o=sf(a);t().activeDirectoryKey!==o&&e({activeDirectoryKey:o}),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();V(`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`}),V(`initializeApp:error`,{error:n instanceof Error?n.message:String(n)})}})().finally(()=>{Rf=null});return Rf=n,n},prewarmProjectConfigs:async e=>{if(!t().isConnected)return;let n=vf(e??cf(t().activeDirectoryKey)),r=Ti.getState().projects.map(e=>e.path).filter(e=>typeof e==`string`&&e.trim().length>0),i=new Set([n]),a=[];for(let e of r){let n=vf(e);if(i.has(n))continue;i.add(n);let r=t().directoryScoped[n];if((r?.providers.length||t().providers.length>0)&&(r?.agents.length||t().agents.length>0))continue;let o=cf(n);o&&a.push(o)}for(let e of a){if(await nf(bf),!t().isConnected)return;let n=vf(e),r=t().directoryScoped[n],i=[];!r?.providers.length&&t().providers.length===0&&i.push(t().loadProviders({directory:e,source:`projectConfigPrewarm`})),!r?.agents.length&&t().agents.length===0&&i.push(t().loadAgents({directory:e,source:`projectConfigPrewarm`})),i.length>0&&await Promise.allSettled(i)}},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 e.find(e=>e.name===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 tf(e,i)},getVisibleAgents:()=>{let{agents:e}=t();return ro(e)}}),{name:`config-store`,version:4,storage:Ye(),migrate:e=>Ff(e),merge:(e,t)=>Df({...t,...Ff(e)}),partialize:e=>{let t=e.directoryScoped[e.activeDirectoryKey],n=e.providers.length>0?{providers:qd(e.providers),defaultProviders:Jd(e.defaultProviders),providerCatalogPartial:!1}:t&&t.providerCatalogPartial!==!0?{providers:qd(t.providers),defaultProviders:Jd(t.defaultProviders),providerCatalogPartial:!1}:{providers:[],defaultProviders:{},providerCatalogPartial:!0},r=(t,r)=>{let i=Af(r?.lastUserSelection)??jf(Of(r?.lastSelectedAgentName,!0),kf(r?.agentModelSelections))??(t===e.activeDirectoryKey?Af(e.lastUserSelection):void 0);return{...t===e.activeDirectoryKey?n:{providers:[],defaultProviders:{},providerCatalogPartial:r?.providerCatalogPartial===!0},agents:[],currentProviderId:r?.currentProviderId??(t===e.activeDirectoryKey?e.currentProviderId:``),currentModelId:r?.currentModelId??(t===e.activeDirectoryKey?e.currentModelId:``),currentVariant:r?.currentVariant??(t===e.activeDirectoryKey?e.currentVariant:void 0),currentAgentName:r?.currentAgentName??(t===e.activeDirectoryKey?e.currentAgentName:void 0),selectedProviderId:Wd(r?.selectedProviderId??(t===e.activeDirectoryKey?e.selectedProviderId:``)),agentModelSelections:{},lastSelectedAgentName:i?.agentName??Of(r?.lastSelectedAgentName,!0),lastUserSelection:i,opencodeDefaultAgent:r?.opencodeDefaultAgent,opencodeDefaultModel:r?.opencodeDefaultModel,selectionSource:r?.selectionSource??(t===e.activeDirectoryKey?e.selectionSource:void 0)}},i=Object.fromEntries(Object.entries(e.directoryScoped).map(([e,t])=>[e,r(e,t)]));e.activeDirectoryKey&&!i[e.activeDirectoryKey]&&(i[e.activeDirectoryKey]=r(e.activeDirectoryKey,void 0));let a=JSON.stringify(n);if(Ef.encode(a).byteLength>xf){let t=i[e.activeDirectoryKey];t&&(t.providers=[],t.defaultProviders={},t.providerCatalogPartial=!0)}let o=Af(e.globalLastUserSelection)??Af(e.lastUserSelection);return{activeDirectoryKey:e.activeDirectoryKey,catalogTransportIdentity:u(),directoryScoped:i,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:Wd(e.selectedProviderId),agentModelSelections:{},lastSelectedAgentName:o?.agentName??Of(e.lastSelectedAgentName,!0),lastUserSelection:Af(e.lastUserSelection)??o,globalLastUserSelection:o,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant,settingsDefaultAgent:e.settingsDefaultAgent,settingsAutoCreateWorktree:e.settingsAutoCreateWorktree,settingsGitmojiEnabled:e.settingsGitmojiEnabled,settingsDefaultFileViewerPreview:e.settingsDefaultFileViewerPreview,settingsZenModel:e.settingsZenModel,settingsMessageStreamTransport:e.settingsMessageStreamTransport,speechRate:e.speechRate,speechPitch:e.speechPitch,speechVolume:e.speechVolume}}})));typeof window<`u`&&(window.__zustand_config_store__=Uf);var Wf=async e=>{await Uf.getState().loadProviders({source:e,forceRefresh:!0})},Gf=null;Gf||=Mr(async e=>{let t=[];if(B.clearConfigCache(),Pr(e,`agents`)){let{loadAgents:e}=Uf.getState();t.push(e({source:`configChange:agents`,forceRefresh:!0}).then(()=>{}))}Pr(e,`providers`)&&t.push(Wf(`configChange:providers`)),t.length>0&&await Promise.all(t)});var Kf=null,qf=null;qf||=Od((e,t)=>{Uf.getState().applyOpenCodeConfigDefaults(e,`syncConfig`,t)}),typeof window<`u`&&!Kf&&(Kf=Ne.subscribe((e,t)=>{let n=sf(e.currentDirectory),r=sf(t.currentDirectory);n!==r&&(V(`directoryStore:changed`,{previous:r,next:n}),Uf.getState().activateDirectory(e.currentDirectory))}));var Jf=e=>typeof e==`number`&&Number.isFinite(e)?e:null,Yf=e=>{let t=e.metadata;return Jf(t?.openchamber?.titleRefresh?.activityUpdatedAt)??Jf(e.time?.updated)??Jf(e.time?.created)??0},Xf=[`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 Zf(e){if(!e)return!1;let t=String(e instanceof Error?e.message:e).toLowerCase();if(Xf.some(e=>t.includes(e)))return!0;let n=e?.status;return typeof n==`number`&&n>=500&&n<600}async function Qf(e,t={}){let{attempts:n=3,delay:r=500,factor:i=2,maxDelay:a=1e4,retryIf:o=Zf}=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 $f=[`file`,`status`,`additions`,`deletions`],ep=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},tp=e=>e===void 0?!1:!e||typeof e!=`object`||Array.isArray(e)?!0:Object.keys(e).some(e=>e!==`messageID`&&e!==`partID`),np=e=>typeof e.before==`string`||typeof e.after==`string`||typeof e.from==`string`||typeof e.to==`string`||typeof e.patch==`string`;function rp(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!np(t))return e;let n={};for(let e of $f)e in t&&t[e]!==void 0&&(n[e]=t[e]);return n}function ip(e){if(!Array.isArray(e))return e;let t=!1,n=e.map(e=>{let n=rp(e);return n!==e&&(t=!0),n});return t?n:e}function ap(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=ip(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 op(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=ap(r?n:e);return i===(r?n:e)?n:i}function sp(e){let t=e;if(!(tp(t.revert)||Array.isArray(t.summary?.diffs)||typeof t.summary?.diffCount==`number`||typeof t.summary?.hasDiffs==`boolean`||`permission`in t))return e;let n=op(e),r={...n};delete r.permission;let i=ep(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 cp(e){return ap(e)}var lp=new Set([`smartfetch-secondary`]),up=e=>typeof e==`string`&&e.length>0,dp=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`&&!!(up(r.assistant?.assistantID)||up(r.scheduledTask?.taskID)||up(r.smallModel?.purpose)||up(r.llm?.purpose))},fp=e=>{let t=e.parentID;return typeof t==`string`&&t.trim()?t:null},pp=e=>!(lp.has(e.title)||fp(e)||dp(e)),mp=e=>{if(!e)return null;let t=Number(e);return Number.isFinite(t)?t:null},hp=(e,t)=>{if(!e||typeof e!=`object`)return null;let n=e.headers;if(!n||typeof n!=`object`)return null;let r=n;if(typeof r.get==`function`)return r.get(t);let i=n,a=i[t]??i[t.toLowerCase()];return typeof a==`string`?a:null},gp=e=>{if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`)return e.message;try{return JSON.stringify(e)}catch{return String(e)}},_p=(e,t)=>{if(e.error){let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${gp(e.error)}`);throw n!==void 0&&(r.status=n),r}if(!Array.isArray(e.data)){let e=Error(`${t} returned no data`);throw e.status=503,e}return e.data};async function vp(e,t){let n=[],r=new Set,i=t.cursor;for(;;){let a=t.maxItems===void 0?t.pageSize:Math.max(0,t.maxItems-n.length);if(a===0)break;let o=Math.min(t.pageSize,a),{response:s,payload:c}=await Qf(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,a=await e.experimental.session.list({...t.directory?{directory:t.directory}:{},archived:t.archived,...t.roots===void 0?{}:{roots:t.roots},...t.start===void 0?{}:{start:t.start},limit:o,...i===void 0?{}:{cursor:i}},r?{signal:r}:void 0);return{response:a.response,payload:_p(a,`experimental.session.list`).map(e=>sp(e))}},{attempts:t.retryAttempts??3,delay:500});if(c.length===0)break;let l=c.filter(pp),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||c.length<o)break;let d=mp(hp(s,`x-next-cursor`)),f=c[c.length-1]?.time?.updated,p=d??(typeof f==`number`&&Number.isFinite(f)?f:void 0);if(p===void 0||i!==void 0&&p>=i)break;i=p}return n}var yp=`/api/magic-prompts`,bp=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])),xp={"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`}},Sp=null,Cp=null,wp=(e,t)=>e.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g,(e,n)=>Object.prototype.hasOwnProperty.call(t,n)?t[n]??``:``),Tp=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(xp)){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},Ep=async()=>Sp||(Cp||=_(yp,{method:`GET`,headers:{Accept:`application/json`}}).then(async e=>{if(!e.ok)throw Error(`Failed to load magic prompts`);let t=Tp(await e.json().catch(()=>({})));return Sp=t,t}).finally(()=>{Cp=null}),Cp),Dp=e=>{let t=bp.get(e);if(!t)throw Error(`Unknown magic prompt id: ${e}`);return t},Op=e=>Dp(e).template,kp=async e=>{let t=(await Ep().catch(()=>({})))[e];return typeof t==`string`?t:Op(e)},Ap=async(e,t={})=>wp(await kp(e),t),jp=async(e,t)=>{let n=await _(`${yp}/${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 Sp=Tp(r),{version:typeof r?.version==`number`?r.version:1,overrides:Sp}},Mp=async e=>{let t=await _(`${yp}/${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 Sp=Tp(n),{version:typeof n?.version==`number`?n.version:1,overrides:Sp}},Np=async()=>{let e=await _(yp,{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 Sp=Tp(t),{version:typeof t?.version==`number`?t.version:1,overrides:Sp}},Pp=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
+ `),Fp=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Ip=e=>{let t=e?.metadata;return Fp(t)?t:{}},Lp=e=>{let t=e.openchamber;return Fp(t)?t:{}},Rp=e=>{let t=Lp(Ip(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},zp=e=>{let t=Lp(Ip(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Bp=e=>Lp(Ip(e)).kind===`review`&&!!zp(e),Vp=(e,t)=>{let n=Lp(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Hp=(e,t)=>{let n=Lp(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},Up=(e,t)=>{let n=Lp(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},Wp=De()(Oe((e,t)=>({runsByOriginalSessionID:{},upsertRun:t=>e(e=>({runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t.originalSessionID]:t}})),updateRun:(t,n)=>e(e=>{let r=e.runsByOriginalSessionID[t];return r?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:n(r)}}:e}),stopRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`stopped`}}}:e}),completeRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`completed`}}}:e}),stopRunningRunsForRuntime:t=>e(e=>{let n=!1,r={...e.runsByOriginalSessionID};for(let[e,i]of Object.entries(r))i.runtimeKey===t&&i.status===`running`&&(r[e]={...i,status:`stopped`},n=!0);return n?{runsByOriginalSessionID:r}:e}),isRunningForSession:e=>t().runsByOriginalSessionID[e]?.status===`running`}),{name:`auto-review-store`,storage:Ye(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),Gp=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},Kp=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=Gp(t.parentSessionId),r=Gp(t.sessionId);if(!(!n||!r||n===r))return{parentSessionId:n,sessionId:r}},qp=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=Kp(i);a&&t.push(a)}return t},Jp=[],Yp=(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},Xp=(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},Zp=(e,t,n,r,i)=>{if(!n)return r;let a=Yp(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},Qp=`GitHub issue context (JSON)`,$p=`GitHub pull request context (JSON)`,em=e=>!e||typeof e!=`object`?!1:!!e.synthetic,tm=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>em(e)),nm=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!em(e)),n=e=>{if(!em(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(Qp)||n.startsWith($p)};return t&&e.some(e=>em(e))?e.filter(e=>!em(e)||n(e)):e},rm=new Map,im=new Map,am=new Map,om=e=>{rm.set(e,(rm.get(e)??0)+1)},sm=e=>(rm.get(e)??0)>0,cm=e=>{let t=rm.get(e)??0;return t<=0?!1:(t===1?rm.delete(e):rm.set(e,t-1),!0)},lm=(e,t)=>{im.set(e,t)},um=e=>im.get(e)??null,dm=e=>{im.delete(e)},fm=({sessionId:e,currentUserOrder:t,animatedIds:n})=>{let r=am.get(e),i=null;if(sm(e)){let r=t[t.length-1];r!==void 0&&!n.has(r)&&cm(e)&&(lm(e,r),n.add(r),i=r)}if((!r||t.length>=r.length)&&am.set(e,t),i!==null)return i;let a=um(e);return a===null?null:(t.includes(a)&&n.add(a),a)},pm=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},mm=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,hm=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},gm=e=>e.replace(/\\/g,`/`),_m=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,vm=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}`}`),gm(n)}catch{return null}},ym=(e,t)=>{let n=_m(gm(e)),r=_m(gm(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},bm=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),xm=(e,t)=>{let n=gm(e),r=_m(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=ym(n,t);if(r!==null){let t=_m(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return bm(a)},Sm=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},Cm=(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},wm=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},Tm=async(e,t={})=>{let n=t.createID??fe,r=t.directory??t.root??null,i=e.filter(e=>!em(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(mm).join(`
399
+ `),l=[];for(let e of o){let t=wm(e);t&&l.push(t)}for(let e of[...l].reverse())Cm(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=D(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=Cm(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:`)?vm(t):null;if(o){let e=xm(o,r),t=null;for(let n of e){let e=Cm(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=hm(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=ue(s);if(t.startsWith(`data:`)){let e=await Sm(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(pm(t)){if(!ie(t))throw Error(`composer-restoration-url-too-long`);m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:i,size:0,source:t.startsWith(`file:`)?`server`:`local`,locator:{kind:`url`,url:t},...t.startsWith(`file:`)&&o?{serverPath:o}:{}}),h.set(l,t);continue}throw Error(`composer-restoration-invalid-attachment-url`)}f.sort((e,t)=>e.range.start-t.range.start);let g=ae(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=Ce(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},Em=async(e,t={})=>{let n=t.createID??fe,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=Ce(r,i),o=ae(r,e.composerMentions??[]);if(!a||!o)throw Error(`composer-restoration-invalid-sidecars`);if(e.draftAttachments)return{snapshot:{text:r,composerReferences:a.references,attachments:[...e.draftAttachments],syntheticParts:e.syntheticParts??[],mentions:o},values:e.draftValues??new Map};let s=[],c=new Map;for(let t of e.attachments??[]){let e=t.id||n(),r=ue(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await Sm(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(pm(i)){if(!ie(i)){if(!(t.file instanceof Blob))throw Error(`composer-restoration-url-too-long`);c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType,size:t.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`url`,url:i},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}}),c.set(r,i);continue}if(t.file&&t.file.size>=0){c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}throw Error(`composer-restoration-invalid-attachment`)}return{snapshot:{text:r,composerReferences:a.references,attachments:s,syntheticParts:e.syntheticParts??[],mentions:o},values:c}},Dm=e=>e?JSON.parse(JSON.stringify(e)):null,Om=e=>e?{...e}:{},km=(e,t=Ar.getState())=>{let n=t.getDraft?.(e)??null,r=Om(t.draftAttachmentViews?.[z(e)]);return{record:Dm(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},Am=async e=>{let t=e.input??Ar.getState(),n=km(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}},jm=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}}},Mm=async e=>{let t=e.input??Ar.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?jm({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},Nm=(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},Pm=e=>e?.status===`committed`&&e.current===!0,Fm=new Map,Im=async(e,t)=>{let n=z(e),r=Fm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Fm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Fm.get(n)===o&&Fm.delete(n)}},Lm=(e,t)=>({key:e,addLocal:async n=>{await Im(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Im(e,async()=>{let r=t(),i=Nm(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 Im(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 Im(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:Pm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Im(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Im(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Im(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Rm=4e4,zm=0,Bm=null;function Vm(e=Date.now()){zm=e}function Hm(e){return Bm=e,()=>{Bm===e&&(Bm=null)}}function Um(e){Bm?.(e)}function Wm(e=Date.now(),t=Rm){return zm<=0?!1:e-zm>=t}var Gm=3e4,Km=200,qm=new Map;function Jm(e,t,n){return`${n?.transport??u()}\n${n?.generation??f()}\n${e.trim()}\n${t}`}function Ym(e,t,n){if(!e||!t)return!1;let r=qm.get(Jm(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Gm}function Xm(e,t,n){if(!e||!t)return;let r=Jm(e,t,n);for(qm.has(r)&&qm.delete(r);qm.size>=Km;){let e=qm.keys().next().value;if(typeof e!=`string`)break;qm.delete(e)}qm.set(r,n?.now??Date.now())}var Zm=768,Qm=()=>{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},$m=()=>{if(typeof window>`u`)return`desktop`;let e=window.__OPENCHAMBER_SURFACE__;if(e===`mobile`||e===`desktop`)return e;let t=new URLSearchParams(window.location.search).get(`surface`);if(t===`mobile`||t===`desktop`)return t;if(se())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=Zm&&Qm()?`mobile`:`desktop`},eh=()=>$m()===`mobile`,th=3,nh=2,rh=4,ih=4,ah=100,oh=30;function sh(){return a()?`relay`:`local`}function ch(e=sh()){return e===`relay`?nh:th}function lh(e=sh()){return e===`relay`?ih:rh}function uh(e){return ch(ph(e))}function dh(){return ah}function fh(){return oh}function ph(e){return e===`relay`||e===`local`?e:sh()}var mh=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function hh(){return{pages:[],pageParams:[]}}function gh(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 _h(e){return{pages:Object.freeze(e.pages.map(gh)),pageParams:Object.freeze([...e.pageParams])}}function vh(e,t,n=mh){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 gh({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function yh(e){if(!e||e.pages.length===0)return al;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 bh(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=yh(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function xh(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function Sh(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 gh({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:xh(t)}})}function Ch(e,t,n,r,i,a){let o=n.messages,s=n.part,c=typeof i.turnCount==`number`&&Number.isFinite(i.turnCount)?Math.max(0,Math.floor(i.turnCount)):typeof i.requestedTurnLimit==`number`&&Number.isFinite(i.requestedTurnLimit)?Math.max(0,Math.floor(i.requestedTurnLimit)):+(i.records.length>0),l=i.complete?null:i.cursor??null,u=i.complete;if(!e||e.pages.length===0||r===`initial`)return _h({pages:[Sh(`tail`,o,s,l,u,c,a)],pageParams:[null]});if(r===`prepend`){let r=new Set;for(let t of e.pages)for(let e of t.messageOrder)r.add(e);let d=o.filter(e=>i.records.some(t=>t.info.id===e.id)||!r.has(e.id)).filter(t=>{if(i.records.some(e=>e.info.id===t.id))return!0;if(!r.has(t.id)){let n=e.pages[0]?.messageOrder[0];return!n||t.id<n}return!1}),f=[],p=new Set;for(let e of i.records){let t=o.find(t=>t.id===e.info.id);!t||p.has(t.id)||(p.add(t.id),f.push(t))}for(let e of d)p.has(e.id)||(p.add(e.id),f.push(e));let m=Sh(`history`,f,s,l,u,c,a),h=new Set(p),g=[m],_=[l];for(let r=0;r<e.pages.length;r+=1){let i=e.pages[r],o=[];for(let e of i.messageOrder){if(h.has(e))continue;let r=n.message[t]?.find(t=>t.id===e)??i.messagesByID[e];r&&o.push(r)}g.push(Th(i,o,s,a)),_.push(e.pageParams[r]??null)}return _h({pages:g,pageParams:_})}let d=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)d.has(n)||d.set(n,t)});let f=e.pages.map(()=>[]),p=[];for(let e of o){let t=d.get(e.id);t===void 0?p.push(e):f[t].push(e)}let m=e.pages.map((t,n)=>{let i=f[n]??[];return n===e.pages.length-1&&p.length>0?Th(t,r===`reconcile-page`?wh(i,p):[...i,...p],s,a):Th(t,i,s,a)});if(m.length>0&&n.boundary){let e=m[0],t=n.boundary.kind===`has-more`?n.boundary.cursor:null,r=n.boundary.kind===`exhausted`;(e.cursor!==t||e.complete!==r)&&(m[0]=gh({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return _h({pages:m,pageParams:[...e.pageParams]})}function wh(e,t){let n=e.slice();for(let e of t){let t=sc(e),r=n.length;for(let e=0;e<n.length;e+=1)if(oc(t,sc(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function Th(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&&Eh(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||Oh(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:gh({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:xh(t)}})}function Eh(e,t){return e===t||e.id===t.id&&e===t}function Dh(e,t){return e===t||!(!e||!t||e.id!==t.id||e.type!==t.type||e.text!==t.text||e.state!==t.state||e.output!==t.output||e.metadata!==t.metadata||e.time!==t.time||e.url!==t.url||e.slim!==t.slim)}function Oh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!Dh(e[n],t[n]))return!1;return!0}function kh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Ah(e){let t=e.properties;if(t){if(typeof t.messageID==`string`)return t.messageID;if(typeof t.info?.id==`string`)return t.info.id;if(typeof t.part?.messageID==`string`)return t.part.messageID}}function jh(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=Ch(e??hh(),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&&Oh(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 _h({pages:e.pages.map((t,n)=>Th(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function Mh(e,t){let n=bh(e,t),r=yh(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 Nh(e,t,n,r){if(!jl(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Mh(e,t),o=zs(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=Ah(n),c=new Set;return s&&c.add(s),{data:jh(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function Ph(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 Fh(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 Ih(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Mh(e,t),o=!1,s=0,c,l=new Set,u=Ph(e),d=Fh(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 e of n){if(!jl(e.type))continue;o=!0;let n=zs(i,e),r=typeof n==`boolean`?n:n.changed,a=typeof n==`boolean`?void 0:n.materialization;if(a&&!c&&(c=a),!r)continue;let v=i.message[t]??[];v!==f&&(f=v,g(v));let y=Ah(e),b=h.length!==_.length||h.some((e,t)=>e!==_[t]),x=b;if(y){let e=i.part[y],t=u.get(y);e&&t&&Oh(t,e)?i.part[y]=[...t]:e?(x=!0,u.set(y,e)):t&&(x=!0,u.delete(y));let n=p.get(y),r=d.get(y);if(!(n&&r&&r===n))if(n&&r&&Eh(r,n)){let e=m.get(y);e!==void 0&&f[e]&&(f[e]=r,p.set(y,r))}else n?(x=!0,d.set(y,n)):r&&(x=!0,d.delete(y))}else x=!0;if(b){_=h.slice();for(let e of f)e?.id&&!d.has(e.id)&&d.set(e.id,e)}x&&(s+=1,y&&l.add(y))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:jh(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function Lh(e,t,n,r,i){let a=e&&e.pages.length>0?e:_h({pages:[Sh(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=bh(a,t),s=o.message[t]?[...o.message[t]]:[];s.findIndex(e=>e.id===n.id)<0&&s.push(n);let c={...o.part,[n.id]:kh(r)};return{data:_h({pages:a.pages.map((e,t)=>t===a.pages.length-1?Th(e,s.filter(e=>{for(let t=0;t<a.pages.length-1;t+=1)if(a.pages[t]?.messagesByID[e.id])return!1;return!0}),c,i):e.messagesByID[n.id]?Th(e,e.messageOrder.filter(e=>e!==n.id).map(t=>e.messagesByID[t]).filter(Boolean),c,i):e),pageParams:[...a.pageParams]}),result:{applied:!0,changed:!0}}}function Rh(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:_h({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 Th(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function zh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=bh(e,t),i=$c({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:yh(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=_h({pages:[Sh(`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:yh(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=_h({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?Th(t,wh(r,l),o,a):Th(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:yh(u)}}}function Bh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=ml(bh(e,t),t,{ok:!0,records:n.page.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:n.page.cursor,complete:n.page.complete,turnCount:n.page.turnCount,requestedTurnLimit:n.page.requestedTurnLimit},{purpose:n.purpose,skipPartTypes:n.skipPartTypes,optimistic:n.optimistic?n.optimistic.map(e=>({message:e.message,parts:[...e.parts]})):void 0,capturedRevision:n.capturedLiveRevision,liveRevision:n.liveRevision});return i.applied?{data:Ch(e,t,{message:i.message,part:i.part,messages:i.messages,boundary:i.boundary},n.purpose,n.page,r),result:{applied:!0,changed:i.changed,boundary:i.boundary,meta:i.meta,confirmedOptimisticIDs:i.confirmedOptimisticIDs}}:{data:e,result:{applied:!1,changed:!1,error:i.error}}}case`sse-event`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Nh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Ih(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Lh(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 Rh(e,n.messageID,t)}case`durable-seed`:return zh(e,t,n);case`reset`:return n.page?Bh(void 0,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes}):{data:void 0,result:{applied:!0,changed:!!(e&&e.pages.length>0)}};default:return{data:e,result:{applied:!1,changed:!1}}}}function Vh(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 Hh(e,t,n,r=`materialize`){return Bh(e,n,{type:`http-page`,purpose:r,page:Vh(t),liveRevision:t.sync.liveRevision}).data}function Uh(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return _h(t);if(t.pages.length===e.pages.length){let r=qh(e,t);if(r===e)return e;if(Kh(e,t)||Gh(e,t))return r;let i=t.pages[t.pages.length-1];return Hh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return Bh(e,n,{type:`http-page`,purpose:`prepend`,page:Vh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Hh(e,r,n)??_h(t)}return _h(t)}function Wh(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Gh(e,t){let n=Wh(e),r=Wh(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=Jh(e,``),a=Jh(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Kh(e,t){let n=Wh(e);if(n.size===0)return!1;let r=Wh(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=Jh(t,``);for(let e=1;e<i.messageOrder.length;e+=1){let t=i.messagesByID[i.messageOrder[e-1]],n=i.messagesByID[i.messageOrder[e]];if(!t||!n||oc(sc(t),sc(n))>0)return!1}return!0}function qh(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,gh(t))});return!n&&e.pageParams.length===t.pageParams.length?e:_h({pages:r,pageParams:[...t.pageParams]})}function Jh(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:yh(e),liveRevision:a}}var Yh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Xh=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Zh=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Qh=e=>e.trim(),$h=e=>e?.trim()||`tail`,eg=new Set([502,503,504]),tg=[`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 ng(e){if(!e||e instanceof Yh||e instanceof Xh)return!1;if(e instanceof Zh)return e.status>=400&&e.status<500?!1:eg.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(eg.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(eg.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:tg.some(e=>n.includes(e))}function rg(e,t){return e>=2?!1:ng(t)}var ig=(e,t=u(),n=f())=>[t,n,`sessionMessages`,`page`,Qh(e.directory),e.sessionID,e.limit,$h(e.before)],ag=(e,t=u(),n=f())=>[t,n,`session-transcript`,Qh(e.directory),e.sessionID];function og(e){if(!e||typeof e!=`object`)throw new Xh(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Xh(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Xh(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Xh(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Xh(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Xh(`session message page: cursor must be string when set`);return e}var sg=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}:{}})},cg=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw new Yh},lg=(e,t,n=u(),r={},i=(r.getGeneration??f)())=>{let a=Qh(e.directory),o=e.sessionID,s=e.limit,c=e.before?.trim()||void 0;return{queryKey:ig({directory:a,sessionID:o,limit:s,before:c},n,i),queryFn:async({signal:e})=>{cg(n,i,r);let l=await t({directory:a,sessionID:o,limit:s,before:c,signal:e});return cg(n,i,r),sg(og(l))},staleTime:1/0,gcTime:3e5,retry:rg,retryDelay:e=>Math.min(500*2**e,4e3)}},ug=(e,t,n=R,r=u(),i={},a=(i.getGeneration??f)())=>n.fetchQuery(lg(e,t,r,i,a));function dg(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 fg(e){return sg({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function pg(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function mg(e){let t=Qh(e.directory),n=e.sessionID,r=e.transport??u(),i=e.probe??{},a=e.generation??(i.getGeneration??f)(),o=e.initialLimit??ch(),s=e.historyLimit??lh(),c=e.client??R,l=ag({directory:t,sessionID:n},r,a),d=async t=>fg(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:l,queryFn:async e=>{cg(r,a,i);let l=e.pageParam?.trim()||void 0,u=l?s:o,f=l?`prepend`:`initial`,p=await ug({directory:t,sessionID:n,limit:u,before:l},d,c,r,i,a);cg(r,a,i);let m=dg(p);return vh(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:pg,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:rg,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>Uh(e,t,n)}}function hg(e){let t=e.client??R,n=mg({...e,client:t}),r=new it(t,{...n,structuralSharing:(t,n)=>Uh(t,n,e.sessionID)});return{queryKey:n.queryKey,observer:r,ensureInitial:async()=>{let e=(await r.fetchNextPage()).data;if(e&&e.pages.length>0)return _h(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return _h(t)},fetchPreviousPage:async()=>{let e=r.getCurrentResult().data;try{let t=await r.fetchPreviousPage({cancelRefetch:!1}),n=r.getCurrentResult(),i=t.data??n.data??e;if(t.isError||n.isFetchPreviousPageError){let e=t.error??n.error??Error(`transcript previous page fetch failed`);throw i&&i.pages.length>0?Object.assign(e instanceof Error?e:Error(String(e)),{retainedPages:_h(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return _h(i)}catch(t){let n=r.getCurrentResult().data??e;throw n&&n.pages.length>0?Object.assign(t instanceof Error?t:Error(String(t)),{retainedPages:_h(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function gg(e,t,n,r){let i=e.getQueryData(t),a=Bh(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 _g(e,t=R,n=u(),r=f()){return t.getQueryData(ag(e,n,r))}function vg(){return b()||eh()}function yg(){return b()?4:eh()?12:40}var bg=1048576,xg=4*bg,Sg=12*bg,Cg=40*bg;function wg(){return b()?xg:eh()?Sg:Cg}var Tg=e=>e.trim();function Eg(e){return{transport:e.transport,generation:e.generation,directory:Tg(e.directory),sessionID:e.sessionID}}function Dg(e){let t=Eg(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function Og(e){return`${e.transport}\n${e.generation}\n${Tg(e.directory)}`}var kg={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function Ag(e,t,n){return[t,n,kg.taskRoot,kg.reconcileTaskKind,Tg(e.directory),e.sessionID,e.checkpoint]}function jg(e,t,n){return[t,n,kg.checkpoint,Tg(e.directory),e.sessionID]}function Mg(e){let t=Eg(e);return[{queryKey:ag({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,kg.transportPageRoot,kg.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,kg.taskRoot,kg.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,kg.taskRoot,kg.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:jg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function Ng(){let e=new Map;return{retain(t){let n=Eg(t),r=Dg(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(Dg(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(Dg(t))?.count??0},clear(){e.clear()}}}function Pg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Fg=3e4;function Ig(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function Lg(e){return!Array.isArray(e)||e.length<5||e[2]!==kg.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 Rg(e){let t=e.client,n=e.activeRegistry??Ng(),r=e.counters??Pg(),i=e.getLimit??yg,a=e.now??Date.now,o=e.minResidencyMs??Fg,s=new Map,c=new Map,l=e=>{let t=Eg(e),n=Dg(t),r=c.get(t.sessionID);r||(r=new Map,c.set(t.sessionID,r)),r.set(n,t)},u=e=>{let t=Eg(e),n=Dg(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=Lg(e.queryKey);t&&l(t)}let f=t.getQueryCache().subscribe(e=>{if(e.type===`added`||e.type===`updated`){let t=Lg(e.query.queryKey);t&&l(t);return}if(e.type===`removed`){let t=Lg(e.query.queryKey);t&&u(t)}}),p=e=>{let t=Dg(Eg(e));s.set(t,a())},m=e=>{let t=Dg(Eg(e)),n=s.get(t);return n!==void 0&&a()-n<o},h=e=>{let r=Eg(e);if(n.isRetained(r))return!0;let i=ag({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:Tg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=Lg(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:Ig(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:Tg(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=Eg(e);s.delete(Dg(t)),u(t);for(let t of Mg(e))v(t)},b=(e,t)=>{r.purgeGeneration+=1,d(e,t);let n=[[e,t,kg.canonical],[e,t,kg.transportPageRoot,kg.transportPageKind],[e,t,kg.taskRoot],[e,t,kg.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=>Dg(Eg(e)))),o=g({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=Og(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=Dg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(Dg(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 zg=new Map,Bg=new Set;function Vg(e,t){return`${e}\n${t}`}function Hg(){for(let e of Bg)e()}function Ug(e,t){if(!e||!t)return;let n=Vg(e,t),r=zg.get(n)??0;zg.set(n,r+1),r===0&&Hg()}function Wg(e,t){if(!e||!t)return;let n=Vg(e,t),r=zg.get(n);if(r){if(r<=1){zg.delete(n),Hg();return}zg.set(n,r-1)}}function Gg(e,t){if(!e)return!1;if(t)return zg.has(Vg(t,e));let n=`\n${e}`;for(let e of zg.keys())if(e.endsWith(n))return!0;return!1}function Kg(e){return Bg.add(e),()=>{Bg.delete(e)}}var qg=3e4,Jg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function Yg(e,t=qg){let n;try{return await Promise.race([e,new Promise((e,r)=>{n=setTimeout(()=>{r(Error(`session turn page: timed out after ${t}ms`))},t)})])}finally{n!==void 0&&clearTimeout(n)}}var Xg=e=>e?e.toLowerCase().includes(`application/json`):!1,Zg=e=>e?e.toLowerCase().includes(`text/html`):!1;function Qg(e,t){if(!e||typeof e!=`object`)throw Error(`session turn page: expected JSON object`);let n=e;if(n.partial===!0)throw Error(`session turn page: partial responses are not accepted`);if(!Array.isArray(n.records))throw Error(`session turn page: records must be an array`);if(!(`complete`in n)||typeof n.complete!=`boolean`)throw Error(`session turn page: complete must be a boolean`);if(typeof n.turnCount!=`number`||!Number.isFinite(n.turnCount))throw Error(`session turn page: turnCount must be a number`);if(!Number.isInteger(n.turnCount)||n.turnCount<0||n.turnCount>t)throw Error(`session turn page: turnCount must be an integer in 0..${t}`);if(n.cursor!=null&&typeof n.cursor!=`string`)throw Error(`session turn page: cursor must be string or null`);if(typeof n.cursor==`string`&&n.cursor.length===0)throw Error(`session turn page: cursor must not be empty string`);if(n.complete===!0&&n.cursor!=null)throw Error(`session turn page: complete=true requires cursor=null`);if(n.complete===!1&&(n.cursor==null||typeof n.cursor!=`string`))throw Error(`session turn page: complete=false requires non-empty cursor`);let r=[];for(let e=0;e<n.records.length;e++){let t=n.records[e];if(!t||typeof t!=`object`)throw Error(`session turn page: records[${e}] must be an object`);let i=t,a=i.info;if(!a||typeof a!=`object`)throw Error(`session turn page: records[${e}].info must be an object`);let o=a.id;if(typeof o!=`string`||o.length===0)throw Error(`session turn page: records[${e}].info.id must be a non-empty string`);if(`parts`in i&&i.parts!==void 0&&!Array.isArray(i.parts))throw Error(`session turn page: records[${e}].parts must be an array when present`);r.push({info:a,...i.parts===void 0?{}:{parts:i.parts}})}return{records:r,cursor:n.cursor==null?null:n.cursor,complete:n.complete,turnCount:n.turnCount}}async function $g(e){let t=e.turns??lh(),n=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages`,r={directory:e.directory,turns:String(t)};e.before&&(r.before=e.before),typeof e.scanLimit==`number`&&Number.isFinite(e.scanLimit)&&(r.scanLimit=String(Math.floor(e.scanLimit)));let i=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:qg;return Yg((async()=>{let a=await _(n,{method:`GET`,query:r,signal:Jg(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(Zg(o))throw Error(`session turn page: unexpected HTML response`);Xg(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Qg(s,t)})(),i)}async function e_(e){let t=e.purpose===`prepend`&&e.before?lh():ch();return $g({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var t_=3e4,n_=2,r_=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),i_=e=>e?e.toLowerCase().includes(`text/html`):!1,a_=e=>new Promise(t=>{setTimeout(t,e)});function o_(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Xh(`session transcript reconcile: ${t} must be string or null`);return e}function s_(e){if(!e||typeof e!=`object`)throw new Xh(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Xh(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Xh(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Xh(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Xh(`session transcript reconcile: resetRequired must be a boolean`);if(typeof t.scannedRecords!=`number`||!Number.isFinite(t.scannedRecords)||!Number.isInteger(t.scannedRecords)||t.scannedRecords<0)throw new Xh(`session transcript reconcile: scannedRecords must be a non-negative integer`);if(typeof t.responseBytes!=`number`||!Number.isFinite(t.responseBytes)||!Number.isInteger(t.responseBytes)||t.responseBytes<0)throw new Xh(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=o_(t.capturedHeadMessageID,`capturedHeadMessageID`),r=o_(t.latestHeadMessageID,`latestHeadMessageID`),i=o_(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Xh(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Xh(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Xh(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Xh(`session transcript reconcile: resetRequired=true requires continuation=null`)}let a=[];for(let e=0;e<t.records.length;e+=1){let n=t.records[e];if(!n||typeof n!=`object`)throw new Xh(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Xh(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Xh(`session transcript reconcile: records[${e}].info.id must be a non-empty string`);if(`parts`in r&&r.parts!==void 0&&!Array.isArray(r.parts))throw new Xh(`session transcript reconcile: records[${e}].parts must be an array when present`);a.push({info:i,...r.parts===void 0?{}:{parts:r.parts}})}return{records:Object.freeze(a),anchorFound:t.anchorFound,capturedHeadMessageID:n,latestHeadMessageID:r,continuation:i,complete:t.complete,resetRequired:t.resetRequired,scannedRecords:t.scannedRecords,responseBytes:t.responseBytes}}function c_(e){let t=typeof e.anchor==`string`&&e.anchor.length>0?e.anchor:void 0,n=typeof e.continuation==`string`&&e.continuation.length>0?e.continuation:void 0;if(!!t==!!n)throw new Xh(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function l_(e,t,n){let r=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages/reconcile`,i={directory:e.directory};return t.anchor&&(i.anchor=t.anchor),t.continuation&&(i.continuation=t.continuation),Yg((async()=>{let t;try{t=await _(r,{method:`GET`,query:i,signal:r_(e.signal,n)})}catch(e){throw e instanceof Yh||e instanceof Xh||e instanceof Zh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new Zh(t.status,`session transcript reconcile failed (${t.status})`);if(i_(t.headers.get(`content-type`)))throw new Xh(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Xh(`session transcript reconcile: malformed JSON`)}return s_(a)})(),n)}async function u_(e){let t=c_(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:t_,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):n_,i=e.sleep??a_,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await l_(e,t,n)}catch(t){if(t instanceof Yh||t instanceof Xh||t instanceof Zh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!ng(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var d_=e=>!!(e&&typeof e==`object`&&typeof e.type==`string`),f_=e=>e.filter(d_),p_=e=>{let t=e,n=t.text;return typeof n==`string`?n:t.content||t.value||``},m_=e=>{if(e.type!==`text`)return!1;let t=p_(e);return!t||t.trim().length===0},h_=(e,t={})=>{let{includeReasoning:n=!0}=t,r=f_(e),i=r.some(e=>!e.synthetic);return r.filter(e=>{let t=!!e.synthetic;return t&&e.type===`text`&&p_(e).includes(`<system-reminder>`)||t&&i||!n&&e.type===`reasoning`?!1:e.type!==`patch`})},g_=`GitHub issue context (JSON)`,__=`GitHub pull request context (JSON)`,v_=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,y_=(e,t)=>{let n=e.trimStart();if(!n.startsWith(t))return null;let r=n.indexOf(`{`);if(r<0)return null;try{return JSON.parse(n.slice(r))}catch{return null}},b_=e=>{let t=y_(e,g_);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!v_(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=y_(e,__);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!v_(t)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.pull-request-link`,filename:`PR #${t}: ${r}`,url:i}}return null},x_=e=>!!e.trim().startsWith(`The following tool was executed by the user`),S_=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),C_=e=>e.trim()===`/compact`,w_=e=>e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(S_(t)||C_(t)))return!1}if(e.synthetic!==!0)return!0;if(e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return x_(t)||n.startsWith(g_)||n.startsWith(__)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=b_(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e}),T_=e=>e.some(e=>{if(e.type===`text`)return!m_(e);if(e.type===`file`){let t=e,n=typeof t.mime==`string`?t.mime:``,r=typeof t.url==`string`?t.url:``;return(!!n||!!r)&&!!r&&!Fe(e)}return!0}),E_=e=>e?.length?T_(w_(e)):!1,D_=`oc_asst_session_divider:`,O_=[],k_=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),A_=(e,t=0)=>({info:{id:`${D_}${e}`,role:`system`,time:{created:t}},parts:[]}),j_=(e,t,n=O_)=>{if(!e.length)return O_;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(A_(n.sessionID,Number(n.info.time?.created??0))),r.push({info:n.info,parts:n.parts,sourceSessionID:n.sessionID,sourceDirectory:n.directory}),i=!0,a=n.sessionID);return r.length===0?O_:I_(n,r)?n:r},M_=(e,t)=>{if(t.length===0)return e;if(e.length===0)return t;let n=new Map;for(let e of t)e?.id&&n.set(e.id,e);for(let t of e)t?.id&&n.set(t.id,t);let r=new Set,i=[];for(let e of t){if(!e?.id||r.has(e.id))continue;let t=n.get(e.id);t&&(i.push(t),r.add(e.id))}for(let t of e)!t?.id||r.has(t.id)||(i.push(t),r.add(t.id));return i.length===e.length&&i.every((t,n)=>t===e[n])?e:i},N_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=M_(e.parts,t.parts);return n===e.parts&&e.info===t.info?e:n===t.parts&&e.info===t.info&&e.parts===t.parts?t:{...e,parts:n,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}}return E_(e.parts)?e:E_(t.parts)?e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}:e.parts.length>0||t.parts.length===0?e:e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}},P_=(e,t,n,r=O_)=>{if(!t)return n.length>0?Array.from(n):O_;let i=new Map,a=0;for(let n of e)n.sessionID===t&&i.set(n.info.id,{message:{info:n.info,parts:n.parts},order:a++});for(let e of n){let t=i.get(e.info.id);i.set(e.info.id,{message:N_(e,t?.message),order:t?.order??a++})}if(i.size===0)return O_;let o=[...i.values()].sort((e,t)=>Number(e.message.info.time?.created??0)-Number(t.message.info.time?.created??0)||e.order-t.order).map(({message:e})=>e);return I_(r,o)?r:o},F_=(e,t)=>{if(!k_(e)||!k_(t))return!1;let n=Number(e.info.time?.created??0),r=Number(t.info.time?.created??0);return e.info.id===t.info.id&&n===r},I_=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||!(r===i||F_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},L_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),R_=e=>e.startsWith(D_);function z_(e,t){if(!e?.id||R_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(L_(t,`subtask`)||L_(t,`compaction`)||t.every(e=>em(e))):!1}function B_(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.messagesByID[n],i=e.partsByMessageID[n];if(z_(r,i))return n}return null}function V_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function H_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:B_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:V_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function U_(e,t){return{...e,...t}}function W_(e,t){let n=jg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),r=e.getQueryData(n);if(!r||typeof r!=`object`)return;let i=r;if(i.sessionID===t.sessionID&&i.transport===t.transport&&i.generation===t.generation)return i}function G_(e,t){let n=jg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function K_(e,t){let n=jg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function q_(e){return e.slim===!0}var J_=/bearer|token|authorization|password|secret|cookie/i,Y_=new Set([`message.part.delta`]);function X_(e){return typeof e==`string`&&e.includes(`-`)}var Z_=`openchamber.client-diagnostics.enabled`;function Q_(e){return e===`true`||e!==`false`&&null}function $_(e){return e.preference===!0||e.preference!==!1&&X_(e.version)}function ev(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function tv(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function nv(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 rv(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return J_.test(t)?`redacted-error`:t}function iv(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)q_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function av(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function ov(e){let t=0;for(let n of e.messageOrder)bv(e.messagesByID[n])===!0&&(t+=1);return t}function sv(e){let t=e.transcript?iv(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:av(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:ov(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...rv(e.error??e.request?.error)?{error:rv(e.error??e.request?.error)}:{},...nv(e.error)===void 0?{}:{httpStatus:nv(e.error)}}}function cv(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 lv(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 uv(e){return typeof e==`string`&&Y_.has(e)}function dv(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return uv(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>uv(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function fv(e){if(e.type===`http-page`)return e.purpose}function pv(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function mv(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 hv(e){return e.__openchamberOptimistic===!0}function gv(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(`
400
+ `).trim();if(n)return J_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function _v(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function vv(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var yv=e=>typeof e==`string`&&e.trim().length>0;function bv(e){if(!e||_v(e)!==`assistant`)return;let t=e,n=!yv(t.mode)&&!yv(t.agent),r=!yv(t.modelID)||!yv(t.providerID);return n||r}function xv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function Sv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)q_(e)?r+=1:i+=1,hv(e)&&(a=!0);let o=e.messagesByID[t],s=_v(o),c=bv(o),l=s===`user`?gv(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:vv(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 Cv(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:xv(e),after:xv(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 wv(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:Cv(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 Tv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function Ev(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function Dv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Ov(e){let t=Dv(e.partID),n=Dv(e.messageID),r=Dv(e.directory),i=Dv(e.childSessionID),a=Dv(e.toolStatus),o=Dv(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 kv(e){return[e.sessionID,Dv(e.partID)??``,e.childSessionPresent?`1`:`0`,Dv(e.childSessionID)??``,Dv(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`,Dv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Av(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Ov(e)}}function jv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:Ev(e),...Ov(e)}}var Mv=`openchamber-transcript-diagnostics`,Nv=`events`,Pv=1,Fv=(e,t)=>{try{return e.error??Error(t)}catch{return Error(t)}},Iv=(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`))}}}),Lv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Pv),i=!1,a=()=>{i||(i=!0,n(Fv(r,`IndexedDB open failed`)))};r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Nv)||e.createObjectStore(Nv,{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}),Rv=(e=Mv)=>{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=Lv(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(Nv,e)}catch(e){throw l(),e}let i=r.objectStore(Nv),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 Iv(n.add(t),n.transaction);let r=await Iv(n.getAllKeys(),n.transaction),i=r.length-t;if(i>0)for(let e of r.slice(0,i))await Iv(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=>Iv(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 Iv(e.clear(),e.transaction)})}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})}}};function zv(e={}){let t=e.driver??Rv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Bv=et(`OpenChamberMedia`);function Vv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Hv(){return Ue()&&tt!==void 0&&tt.isPluginAvailable(`OpenChamberMedia`)}function Uv(){return`1.19.13-beta.2`}function Wv(){if(typeof localStorage>`u`)return null;try{return Q_(localStorage.getItem(Z_))}catch{return null}}function Gv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(Z_,e?`true`:`false`)}catch{}}function Kv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var qv;function Jv(e=Uv()){return $_({version:e,preference:Wv()})}function Yv(e={}){return lv({sink:Kv()===`indexeddb`?(e.createIndexedDBSink??zv)():(e.createMemorySink??cv)(),isEnabled:e.isEnabled??Jv})}function Xv(){return qv??=Yv(),qv}function Zv(e){Xv().record(e)}function Qv(e){try{return Jv()?Sv(e()):void 0}catch{return}}function $v(e){try{Zv(wv(e))}catch{}}function ey(e){try{Zv(Av(e))}catch{}}function ty(e){try{Zv(jv(e))}catch{}}function ny(e){if(e!==void 0)return typeof e==`function`?e():e}function ry(e){return!dv(e.command)||e.changed===!1&&(e.command.type===`sse-event`||e.command.type===`sse-event-batch`)?!1:(e.isEnabled??(()=>Xv().isEnabled()))()}function iy(e){if(!ry(e))return;let t=dv(e.command);t&&Zv(sv({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:ny(e.transcript),request:ny(e.request),hydration:ny(e.hydration),command:e.command.type,purpose:fv(e.command),sseType:pv(e.command),source:mv(e.command),error:e.error}))}async function ay(){let e=await Xv().exportReport(),t=we()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function oy(e,t=ev()){if(Hv())return(await Bv.saveFile({dataBase64:Vv(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 sy(){let e=await ay(),t=ev();return{content:e,fileName:t,outcome:await oy(e,t),eventCount:tv(e)}}function cy(e){let t=e.directory.trim(),n=new Set,r=[],i=e=>{!e||n.has(e)||(n.add(e),r.push({directory:t,sessionID:e}))};for(let n of e.viewedSessions??[])n.directory.trim()===t&&i(n.sessionID);e.viewed?.directory.trim()===t&&i(e.viewed.sessionID);for(let t of e.busyOrRetrySessionIDs??[])i(t);for(let n of e.activeScopes)n.directory.trim()===t&&i(n.sessionID);return r}var ly=2,uy=6e4,dy=6e4;function fy(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??u)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??f)()}}function py(e,t){let n=(t.probe?.getTransport??u)(),r=(t.probe?.getGeneration??f)();if(n!==e.transport||r!==e.generation)throw new Yh}function my(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function hy(e,t){return Eg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function gy(e,t){return`${e.trim()}\n${t}`}function _y(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Rg({client:t,activeRegistry:Ng()}),i=Math.max(1,Math.floor(e.directoryConcurrency??ly)),a=e.fetchReconcile??u_,o=e.now??Date.now,s=Math.max(0,e.destructiveResetDedupeMs??uy),c=!1,l=0,d=new Map,p=new Map,m=new Map,h=new Map,g=new Set,_=new Map,v=new Set,y=new Map,b=(e,t)=>{g.add(gy(e,t))},x=(e,t)=>{g.delete(gy(e,t))},S=e=>{let t=p.get(e);t&&(t.abort(),p.delete(e)),d.delete(e)},C=e=>{l+=1;for(let e of[...p.keys()])S(e);m.clear(),h.clear(),y.clear()},w=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(gy(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of r.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&i.set(gy(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(i.values())},T=(t,n)=>{let i=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of r.listCanonical({transport:t.transport,generation:t.generation}))i.add(e.scope.directory);for(let e of r.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&i.add(e.directory);for(let e of n)e.directory&&i.add(e.directory.trim());return i},E=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=gy(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},D=i=>{if(c)return;let a={transport:i.transport??fy(e).transport,generation:i.generation??fy(e).generation},s=o(),l=E(),u=T(a,l),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(gy(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of r.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(gy(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of l)f.set(gy(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(gy(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=my(e,a),o=n.getTranscript(r),c=H_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:o,lastEventID:i.lastEventID,capturedAt:s});G_(t,c)}let p=new Set;for(let t of u){let n=cy({directory:t,activeScopes:w(a,t),viewedSessions:l,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(gy(e.directory,e.sessionID))}for(let e of d){let t=gy(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=Qv(()=>n.getTranscript(e)),a=n.getTranscript(e).liveRevision,o=n.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:t.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:r,liveRevision:a});try{let t=Qv(()=>n.getTranscript(e));i&&t&&$v({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},k=e=>{let t=n.getTranscript(e),r=t.messageOrder[t.messageOrder.length-1];if(!r)return!1;let i=t.messagesByID[r];return!i||i.role!==`assistant`?!1:Bs(i)},A=async(r,i,a)=>{if(py({transport:i.transport,generation:i.generation},e),a!==l)throw new Yh;G_(t,U_(W_(t,i)??H_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let s=Qv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),py({transport:i.transport,generation:i.generation},e),a!==l)throw new Yh;K_(t,i),x(i.directory,i.sessionID),y.set(gy(i.directory,i.sessionID),o());try{let e=Qv(()=>n.getTranscript(r));s&&e&&$v({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:s,after:e})}catch{}}catch(e){throw G_(t,U_(W_(t,i)??H_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},j=async(r,i,a)=>{if(py({transport:i.transport,generation:i.generation},e),a!==l)throw new Yh;G_(t,U_(W_(t,i)??H_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Qv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),py({transport:i.transport,generation:i.generation},e),a!==l)throw new Yh;K_(t,i),x(i.directory,i.sessionID);try{let e=Qv(()=>n.getTranscript(r));o&&e&&$v({trigger:`reconnect-compensation-ensure-tail`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw G_(t,U_(W_(t,i)??H_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},ee=async(r,i,c,u)=>{let d=my(r,i),f=hy(r,i),p=Ag({directory:f.directory,sessionID:f.sessionID,checkpoint:String(W_(t,f)?.capturedAt??o())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:o()});try{if(py(i,e),c!==l||u.aborted)throw new Yh;let m=W_(t,f);if(m||(m=H_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:o()}),G_(t,m)),!m.anchorMessageID){if(await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}m=U_(m,{state:`reconciling`}),G_(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,py(i,e),c!==l||u.aborted)throw new Yh;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,py(i,e),c!==l||u.aborted)throw new Yh;let g=n.getTranscript(d).liveRevision;if(!_&&!h){await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()});return}let x=await a({sessionID:r.sessionID,directory:r.directory.trim(),..._?{continuation:_}:{anchor:h},signal:u});if(py(i,e),c!==l||u.aborted)throw new Yh;if(x.resetRequired){let n=y.get(gy(r.directory,r.sessionID))??-1/0;if(o()-n<s?(await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()})):(await A(d,f,c),t.setQueryData(p,{status:`reset`,finishedAt:o()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}if(S===1&&(v=x.capturedHeadMessageID),b=x.latestHeadMessageID??b,x.records.length>0&&O(d,x,g),m=U_(W_(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),G_(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=U_(W_(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),G_(t,m);continue}if(m=U_(W_(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),G_(t,m),x(r.directory,r.sessionID),t.setQueryData(p,{status:`complete`,finishedAt:o()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}{let n=y.get(gy(r.directory,r.sessionID))??-1/0;if(o()-n<s?(await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()})):(await A(d,f,c),t.setQueryData(p,{status:`reset`,finishedAt:o()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}}}catch(n){if(n instanceof Yh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(p,{status:`cancelled`,finishedAt:o()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(p,{status:`error`,finishedAt:o(),code:n instanceof Error?n.name:`error`}),n}},te=t=>{let n=t.trim(),r=h.get(n)??0;if(r>=i)return;let a=m.get(n);if(!a||a.length===0)return;let o=a.shift();h.set(n,r+1);let s=gy(o.directory,o.sessionID);if(d.has(s)){h.set(n,(h.get(n)??1)-1),te(n);return}let c=fy(e),u=l,f=new AbortController;p.set(s,f);let g=(async()=>{Ug(n,o.sessionID);try{await ee(o,c,u,f.signal)}catch{}finally{Wg(n,o.sessionID),p.delete(s),d.delete(s),h.set(n,Math.max(0,(h.get(n)??1)-1)),te(n)}})();d.set(s,g)},ne=e=>{let t=e.directory.trim(),n=gy(t,e.sessionID);if(d.has(n))return;let r=m.get(t);r||(r=[],m.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),te(t))},re=t=>{let n=E(),i=T(t,n);for(let a of i){let i=cy({directory:a,activeScopes:w(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)ne(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=gy(e.scope.directory,e.scope.sessionID);i.some(e=>gy(e.directory,e.sessionID)===t)||b(e.scope.directory,e.scope.sessionID)}}},M=t=>{if(c||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??u)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??f)(),i=(e.probe?.getTransport??u)();if(r!==n.generation||i!==n.transport){C(`generation_mismatch`);return}re(n)},N=t=>{if(c)return;let r=t.directory.trim(),i=fy(e,t),s=my({directory:r,sessionID:t.sessionID},i),l=Dg(hy({directory:r,sessionID:t.sessionID},i)),u=_.get(l);if(u&&o()-u.checkedAt<dy||v.has(l)||d.has(gy(r,t.sessionID))||!n.hasSession?.(s))return;let f=n.getTranscript(s),p=f.messageOrder[f.messageOrder.length-1];p&&(v.add(l),(async()=>{try{if(py(i,e),c)return;let u=await a({sessionID:t.sessionID,directory:r,anchor:p});if(py(i,e),c||(_.set(l,{checkedAt:o()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(s).liveRevision;O(s,u,d)}catch{}finally{v.delete(l)}})())};return{captureCheckpoints:D,onCompensation:M,ensureOnObserve:async r=>{if(c)return null;let i=r.directory.trim(),a=gy(i,r.sessionID);if(!g.has(a))return N(r),null;x(i,r.sessionID);let o=fy(e,r),s=my({directory:i,sessionID:r.sessionID},o),l=hy({directory:i,sessionID:r.sessionID},o),u=W_(t,l);if(u&&u.state!==`complete`&&u.anchorMessageID){ne({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{py(o,e),Ug(i,r.sessionID);try{let e=await n.ensureInitial(s);return K_(t,l),e}finally{Wg(i,r.sessionID)}}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:C,getCheckpoint:n=>{let r=fy(e,n);return W_(t,hy({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(gy(e,t)),destroy:()=>{c=!0,C(`destroy`)}}}var vy=e=>e.trim(),yy=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session status runtime changed`)},by=(e,t={})=>{let n=vy(e),r=t.transport??u(),i=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),a=t.now??Date.now,o=t.runtimeProbe??{},s=(o.getGeneration??f)();return ct({queryKey:P.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{yy(r,s,o);let t=a(),c=await i(n,e);if(yy(r,s,o),c===null)throw Error(`session status snapshot unavailable`);return{snapshot:c,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},xy=(e,t={})=>{let{client:n=R,...r}=t;return n.fetchQuery(by(e,r))},Sy=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session active runtime changed`)},Cy=(e={})=>{let t=e.transport??u(),n=e.loadActive??(e=>B.getSessionActive(e)),r=e.now??Date.now,i=e.runtimeProbe??{},a=(i.getGeneration??f)();return ct({queryKey:P.sessionActive.snapshot(t,a),queryFn:async({signal:e})=>{Sy(t,a,i);let o=r(),s=await n(e);return Sy(t,a,i),{result:s,requestedAt:o}},staleTime:0,gcTime:3e5,retry:!1})},wy=(e={})=>{let{client:t=R,...n}=e;return t.fetchQuery(Cy(n))},Ty;function Ey(e){Ty=e}function Dy(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 Oy(e,t){return JSON.stringify(e)===JSON.stringify(t)}function ky(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Ay(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(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}}),!0)}function jy(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=Dy(o[e]);if(t){c[e]=n&&ky(n,r)?n:{type:`busy`};continue}if(i?.tailOpenSessionIds?.has(e)){c[e]=n?.type===`retry`?n:{type:`busy`};continue}c[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:c,source:`fused`}}function My(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=Dy(t[o]);if(n&&n.type!==`idle`){Oy(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 Ny(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Py(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 xy(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 wy({client:o,loadActive:r.loadActive,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),[p,m]=await Promise.all([d,f]);if(c=p,m&&(l=m.result,u=m.requestedAt),r.isStale?.())return null;let h=c?.snapshot??null,g=l?.state===`supported`;if(h===null&&!g)return null;let{snapshot:_,source:v}=jy(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=Ny(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),My(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Ty;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 Fy({directory:e,sessionID:t,store:n,statusBeforePull:r,statusObservedAtBeforePull:i,hasMessages:a,isTailPage:o=!0,isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m}){if(!o||!a||!r||r.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:Py(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Iy(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Ly(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 Ry(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 zy(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(rc(e))??Promise.resolve(),r.get(ac(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=rc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=ac(e),i=(r.get(n)??Promise.resolve()).then(t,t);return r.set(n,i.then(()=>void 0,()=>void 0)),i};return{wait:i,persistSettled:(n,r,i)=>a(n,async()=>{if((await e.upsertSettled(n,r,i)).status!==`written`)return;let a=(t.getByteBudget??wg)();await e.evictToBytes(a,{protect:t.getProtectScopes?.()??[]})}),removeMessage:(t,n)=>a(t,()=>e.removeMessage(t,n)),clearSession:t=>a(t,()=>e.clearSession(t)),clearGeneration:t=>o(t,()=>e.clearGeneration(t))}}var By=new Map;function Vy(e,t){let n=By.get(e);if(n)return n;let r=t().finally(()=>{By.get(e)===r&&By.delete(e)});return By.set(e,r),r}var Hy=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Uy(e){return Vy(Hy(e),e.request)}function Wy(e,t){return`${e}\n${t}`}var Gy=new Map;function Ky(e){return Gy.get(e)}async function qy(e){return Uy({runtimeKey:Wy(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 Gy.set(r.id,i),{info:cp(r),parts:i}}})}function Jy(e,t){let n=e.info;return n.role===t||n.clientRole===t}function Yy(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Jy(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 Xy(e){if(e.complete){let t=e.records.some(e=>Jy(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=Yy(e.records);if(t.length===0){let t=e.records.some(e=>Jy(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=>Jy(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Zy(e){return e.trim()}function Qy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??u)(),r=e.generation??t.generation??(t.probe?.getGeneration??f)();return{directory:Zy(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function q(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function $y(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:al,liveRevision:0}}function eb(e,t){if(!e||e.pages.length===0)return $y(t);let n=Jh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function tb(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function nb(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function rb(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=tb(e.info);t!==void 0&&(n===void 0||t<n)&&(n=t)}if(n===void 0)return[];let r=new Set(t.records.map(e=>e.info.id)),i=[];for(let t of e.messageOrder){if(r.has(t))continue;let a=tb(e.messagesByID[t]);a===void 0||a<=n||nb(e.partsByMessageID[t])||i.push(t)}return i}function ib(e={}){let t=e.client??R,n=e.cacheBudget??Rg({client:t,activeRegistry:e.activeRegistry??Ng()}),r=n.activeRegistry,i=new Map,a=new Map,o=new Map,s=new Map,c=new Map,p=e.durableStore?zy(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Iy),getByteBudget:e.getDurableByteBudget}):void 0,m=new Map,h=new Map,g=new Map,_=new Map,v=new Map,y=new Set,b=new Map,x=new Set,S=new Set,C=(e,t)=>{let n=q(t);if(x.has(n))return;let r=M(e);!wl(r)&&!b.has(n)||(x.add(n),Zv(sv({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},w=0,T=e=>{let t=c.get(e);return t||(t={messages:new Map,parts:new Map},c.set(e,t)),t},E=n=>{let r=Qy(n,e);return _g({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},D=t=>{let n=Qy(t,e);return ag({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},O=t=>{let n=Qy(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},k=e=>{let t=O(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},A=n=>{let r=e.probe??{getTransport:u,getGeneration:f},a=Qy(n,{...e,transport:void 0,generation:void 0,probe:r}),o=q(a),s=i.get(o);if(s)return s;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let c=hg({directory:a.directory,sessionID:a.sessionID,fetcher:e.fetcher,transport:a.transport,generation:a.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return i.set(o,c),c},j=t=>{let n=q(Qy(t,e)),r=a.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},ee=n=>{let r=q(Qy(n,e));if(o.has(r))return;let i=D(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]&&j(n)});o.set(r,a)},te=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)},ne=(e,t)=>{let n=T(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},re=(e,t)=>{let n=T(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=t=>{let n=Qy(t,e),r=q(n),i=E(t),a=T(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=eb(i,n.sessionID),s=ne(r,o);return a.cachedFrom=i,a.hasTranscriptCache=!0,s},N=(e,t)=>`${q(e)}\n${t}`,ie=(e,t)=>{let n=q(e),r=v.get(n);r&&(r.delete(t),r.size===0&&v.delete(n))},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t)},oe=e=>{for(let t of g.keys())t.startsWith(e)&&g.delete(t);for(let t of _.keys())t.startsWith(e)&&_.delete(t)},se=e=>{for(let t of b.keys())(t===e||t.startsWith(e))&&b.delete(t);for(let t of[...x])(t===e||t.startsWith(e))&&x.delete(t);for(let t of S)(t===e||t.startsWith(e))&&S.delete(t)},ce=e=>{let t=`${q(e)}\n`;for(let[e,n]of g)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of _.keys())if(e.startsWith(t))return!0;return!1},le=t=>{let n=Qy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ue=(e,t,n)=>{p&&d()&&p.persistSettled(Iy(e),t,n??[])},P=(e,t,n,r)=>{if(!p||w>0||!d()||!r.applied||!r.changed)return;let i=Iy(t);if(n.type===`remove-message`){p.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(p.clearSession(i),n.page){let r=M(e);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;ue(t,n,r.partsByMessageID[e.info.id]??e.parts)}}return}if(n.type!==`optimistic-add`&&n.type!==`optimistic-confirm`&&n.type!==`optimistic-remove`){if(n.type===`sse-event`||n.type===`sse-event-batch`){let r=n.type===`sse-event`?[n.event]:n.events,a=M(e);for(let e of r){let n=Ry(e);if(n.action===`remove`){p.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ue(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=M(e),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ue(t,n,r.partsByMessageID[e.info.id])}}}},de=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let i=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}},a=e.probe??{getTransport:u,getGeneration:f},o={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??ch()};return Ly(r?.fresh?await t.fetchQuery({...lg(o,i,n.transport,a,n.generation),staleTime:0}):await ug(o,i,t,n.transport,a,n.generation))},fe=(e,t)=>{for(let n of t)uu(`${e.directory}\n${e.sessionID}\n${n}`,()=>I.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},pe=(e,t)=>{let r=q(t),i=h.get(r);if(i)return i;let a=l(),o=(async()=>{let i=Date.now();m.set(r,{status:`loading`});try{let i=await de(t);if(!le(t)||l()!==a)return m.delete(r),I.getTranscript(e);I.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Xm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let o=v.get(r);if(o&&o.size>0){let n=[],r=0;for(let a of i.records){let i=a.info.id;if(!(!i||!o.has(i))){if(!vl(I.getParts(e,i),I.getMessage(e,i)??a.info)){ie(t,i),g.set(N(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&j(e),fe(e,n)}return m.delete(r),n.noteScopeObserved(O(e)),k(e),I.getTranscript(e)}catch(n){if(n instanceof Yh||!le(t))return m.delete(r),I.getTranscript(e);throw m.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Zv(sv({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:M(e),request:I.getRequestState?.(e),hydration:I.getHydrationState?.(e),error:n})),n}finally{h.delete(r)}})();return h.set(r,o),o},F=(e,t)=>{let r=q(t),i=h.get(r);if(i)return i;let a=l(),o=(async()=>{let i=Date.now(),o=I.getTranscript(e).liveRevision;m.set(r,{status:`loading`});try{let i=await de(t,{fresh:!0});if(!le(t)||l()!==a)return m.delete(r),I.getTranscript(e);let s=I.getTranscript(e).liveRevision;return s<o||nu(t.sessionID,t.directory)?(m.delete(r),I.getTranscript(e)):(I.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:o,liveRevision:s}),Xm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),m.delete(r),n.noteScopeObserved(O(e)),k(e),I.getTranscript(e))}catch(n){return m.delete(r),n instanceof Yh||!le(t)||Zv(sv({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:M(e),request:I.getRequestState?.(e),hydration:I.getHydrationState?.(e),error:n})),I.getTranscript(e)}finally{h.delete(r)}})();return h.set(r,o),o},me=t=>{let n=E(t);return!n||n.pages.length===0||y.has(q(Qy(t,e)))?!0:yh(n).kind===`unknown`},I={getTranscript(e){return M(e)},getPagination(t){let n=Qy(t,e),r=q(n),i=I.getTranscript(t);return re(r,Ol(n.sessionID,i.boundary))},getRequestState(t){let n=Qy(t,e),r=m.get(q(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(q(n));if(!a){let e=E(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=Qy(t,e),r=q(n),i=I.getTranscript(t);wl(i)&&b.set(r,!0);let a=b.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Tl({p0Satisfied:a,prependActive:S.has(r),materializeActive:ce(n),earlierHistoryLoaded:xl(i)>1})}},hasSession(e){return E(e)!==void 0},getMessage(t,n){let r=q(Qy(t,e)),i=T(r),a=I.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=q(Qy(t,e)),i=T(r),a=I.getTranscript(t).partsByMessageID[n]??ab,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=Qy(t,e),i=g.get(N(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!I.getMessage(t,n)||v.get(q(r))?.has(n)||_l(I.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=Qy(t,e),i=l(),a=N(r,n),o=Qv(()=>I.getTranscript(t)),s=e=>{try{let t=Qv(e);if(!o||!t)return;$v({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:o,after:t})}catch{}},c=_.get(a);if(c)return c.then(e=>s(()=>e)).catch(()=>void 0),c;let u=(async()=>{try{if(!I.getMessage(t,n))return g.set(a,{status:`idle`}),I.getTranscript(t);if(!_l(I.getParts(t,n))&&!v.get(q(r))?.has(n))return g.set(a,{status:`ready`}),I.getTranscript(t);g.set(a,{status:`loading`}),j(t);try{let o=await qy({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return B.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return!le(r)||l()!==i?(g.delete(a),I.getTranscript(t)):(I.apply(t,{type:`materialize-snapshots`,records:[{info:o.info,parts:o.parts??[]}]}),_l(I.getParts(t,n))?g.set(a,{status:`error`,error:`session.message failed: slim parts remain`}):g.set(a,{status:`ready`}),j(t),I.getTranscript(t))}catch(e){if(!le(r)||l()!==i)return g.delete(a),I.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return g.set(a,{status:`error`,error:n}),j(t),I.getTranscript(t)}}finally{ie(r,n)}})();return _.set(a,u),u.then(e=>s(()=>e)).catch(()=>void 0),u.finally(()=>{_.get(a)===u&&_.delete(a)}),u},apply(r,i){let a=Qy(r,e),o=D(r),s=(()=>{switch(i.type){case`http-page`:{let e=gg(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&y.delete(q(a)),e.result.changed&&(j(r),k(r)),e.result}case`sse-event`:{let e=gg(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&y.delete(q(a)),e.result.changed&&j(r),e.result}case`sse-event-batch`:{let e=gg(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&y.delete(q(a)),e.result.changed&&j(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=gg(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&j(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),gg(t,o,a.sessionID,{type:`optimistic-confirm`,messageID:i.messageID}).result;case`optimistic-remove`:{e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID});let n=gg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&j(r),n.result}case`reset`:{if(S.delete(q(a)),v.delete(q(a)),y.delete(q(a)),n.purgeSession(O(r)),!i.page)return j(r),{applied:!0,changed:!0};let e=gg(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(j(r),k(r)),e.result}case`materialize-snapshots`:return ob(t,o,a.sessionID,i,()=>j(r));case`remove-message`:{let e=gg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&j(r),e.result}default:return{applied:!1,changed:!1}}})();return P(r,a,i,s),s.applied&&(iy({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:()=>I.getTranscript(r),request:()=>I.getRequestState?.(r),hydration:()=>I.getHydrationState?.(r),error:s.error,changed:s.changed}),C(r,a)),s},subscribe(t,i){let o=q(Qy(t,e)),c=a.get(o);if(!c){c=new Set,a.set(o,c);let e=O(t);s.set(o,r.retain(e)),n.noteScopeObserved(e)}return c.add(i),ee(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))}te(o)}}},async ensureInitial(t){let a=Qy(t,e),o=l(),s=q(a);if(p&&await p.wait(Iy(a)),l()!==o)return I.getTranscript(t);if(E(t)===void 0&&e.durableStore&&d())try{let n=await e.durableStore.readSession(Iy(a));if(le(a)&&l()===o&&E(t)===void 0&&n.records.length>0){w+=1;try{I.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)vl(t.parts,t.info)&&e.add(t.info.id);e.size>0&&v.set(s,e),y.add(s)}finally{--w}}}catch(e){Zv(sv({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 I.getTranscript(t);if(me(t)&&E(t)!==void 0){let e=Date.now(),n=await pe(t,a);return Zv(sv({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),n}let u=E(t);if(u&&u.pages.length>0&&!me(t)&&e.fetcher&&!r.isRetained(O(t))){let e=Date.now(),n=await F(t,a);return Zv(sv({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),n}let f=A(t),h=Date.now(),g=E(t)!==void 0;m.delete(s);try{await f.ensureInitial()}catch(e){if(l()!==o)return I.getTranscript(t);throw Zv(sv({kind:`request-error`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:g?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-h,transcript:M(t),request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t),error:e})),e}if(l()!==o)return i.get(s)===f&&(n.purgeSession(O(t)),c.delete(s),j(t)),I.getTranscript(t);m.delete(s),g||Xm(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(O(t)),k(t);let _=I.getTranscript(t);return Zv(sv({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:g?`query-cache`:`network`,durationMs:Date.now()-h,transcript:_,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),_},async fetchPreviousPage(t){if(me(t)&&await I.ensureInitial(t),yh(E(t)).kind!==`has-more`)return I.getTranscript(t);let n=Qy(t,e),r=q(n);S.add(r),j(t);let i=Date.now();try{await A(t).fetchPreviousPage(),k(t);let e=I.getTranscript(t);return Zv(sv({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),e}catch(e){throw Zv(sv({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{S.delete(r),j(t)}},getController(t){let n=Qy(t,e);return i.get(q(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=Qy(t,e),i=l(),a=Qv(()=>I.getTranscript(t)),o=I.getTranscript(t).liveRevision,s=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??ch(),signal:new AbortController().signal});if(l()!==i)return I.getTranscript(t);let c=I.getTranscript(t).liveRevision;if(I.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:s.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:o,liveRevision:c}),c<=o){let n=rb(I.getTranscript(t),s);for(let i of n)I.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let u=I.getTranscript(t);n.noteScopeObserved(O(t));try{let e=Qv(()=>u);a&&e&&$v({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:a,after:e})}catch{}return u},async destructiveReset(t){let r=Qv(()=>I.getTranscript(t)),a=O(t);return p&&await p.clearSession(Iy(Qy(t,e))),n.destructiveReset(a,async()=>{let n=Qy(t,e),a=q(n),o=i.get(a);if(o&&(o.destroy(),i.delete(a)),c.delete(a),se(a),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await I.ensureInitial(t);try{let e=Qv(()=>s);r&&e&&$v({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=q(Qy(t,e)),a=i.get(r);a&&(a.destroy(),i.delete(r)),c.delete(r),oe(`${r}\n`),v.delete(r),se(r),n.purgeSession(O(t)),j(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(`
401
+ `);if(r.length>=4){let e={transport:r[0],generation:Number(r[1]),directory:r[2],sessionID:r[3]};n.purgeSession(O(e)),j(e)}}oe(t),ae(t),se(t);for(let e of[...m.keys()])e.startsWith(t)&&m.delete(e);for(let e of[...h.keys()])e.startsWith(t)&&h.delete(e);for(let e of[...y])e.startsWith(t)&&y.delete(e)},purgeGeneration(e,t){for(let[n,r]of i)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),i.delete(n),c.delete(n);let e=s.get(n);e&&(e(),s.delete(n));let t=o.get(n);t&&(t(),o.delete(n)),a.delete(n)}oe(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),se(`${e}\n${t}\n`),n.purgeGeneration(e,t),p&&p.clearGeneration({transport:e,generation:t})},destroy(){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(),m.clear(),h.clear(),g.clear(),_.clear(),v.clear(),b.clear(),x.clear(),S.clear(),n.dispose()}};return I}var ab=Object.freeze([]);function ob(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=gg(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var sb=`/api/openchamber/transcript-cache`,cb=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),lb=e=>typeof e==`object`&&!!e&&!Array.isArray(e),ub=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},db=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},fb=e=>{if(!lb(e))throw Error(`Invalid transcript cache scope`);return{transport:ub(e.transport,`scope`),generation:db(e.generation,`scope`),directory:ub(e.directory,`scope`),sessionID:ub(e.sessionID,`scope`)}},pb=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},mb=e=>{if(!lb(e)||!lb(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!lb(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:fb(e.scope),messageID:ub(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>pb(e,`part completeness`)),completeness:pb(e.completeness,`completeness`),contentHash:ub(e.contentHash,`content hash`),byteSize:db(e.byteSize,`byte size`),lastAccessedAt:db(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:db(e.sortKey.created,`sort key`),messageID:ub(e.sortKey.messageID,`sort key`)}}},hb=(e,t)=>{if(!lb(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(mb);return{scope:e.scope===void 0?vc(t):fb(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},gb=e=>{if(!lb(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:mb(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!cb.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:mb(e.record)}}}throw Error(`Invalid transcript cache upsert`)},_b=e=>{if(!lb(e))throw Error(`Invalid transcript cache evict`);return{evicted:db(e.evicted,`evict`),freedBytes:db(e.freedBytes,`evict`),remainingBytes:db(e.remainingBytes,`evict`)}},vb=e=>({scope:vc(e),records:[],byteSize:0}),yb=(e,t)=>lb(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,bb=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`)}},xb=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 bb(r)};let i=await bb(r).catch(()=>void 0);throw Error(yb(i,`Transcript cache request failed (${r.status})`))},Sb=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Cb=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function wb(e={}){let t=e.fetch??_;return{async readSession(e){let n=await xb(t,`${sb}/session`,{method:`GET`,query:Sb(e)});return n.kind===`disabled`||n.kind===`not-found`?vb(e):hb(n.payload,e)},async readMessage(e,n){let r=await xb(t,`${sb}/message`,{method:`GET`,query:{...Sb(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!lb(r.payload))throw Error(`Invalid transcript cache record`);return mb(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await xb(t,`${sb}/message`,Cb(`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 gb(i.payload)},async removeMessage(e,n){let r=await xb(t,`${sb}/message`,Cb(`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 xb(t,`${sb}/session`,Cb(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await xb(t,`${sb}/generation`,Cb(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await xb(t,`${sb}/evict`,Cb(`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 _b(r.payload)},async clearAll(){let e=await xb(t,`${sb}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Tb=`openchamber-transcript-durable`,Eb=1,Db=`transcriptIndex`,Ob=`transcriptContent`,kb=class extends Error{code;constructor(e){super(e),this.code=e}},Ab=e=>({id:ic(e.scope,e.messageID),scope:vc(e.scope),scopeKey:rc(e.scope),generationKey:ac(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}),jb=(e,t)=>({scope:vc(e.scope),messageID:e.messageID,info:_c(t.info),parts:_c(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}}),Mb=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return jb(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Nb=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},Pb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Fb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new kb(`database-unavailable`));return}let r=indexedDB.open(e,Eb),i=!1,a=()=>{i||(i=!0,n(new kb(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Db)){let t=e.createObjectStore(Db,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Ob)||e.createObjectStore(Ob,{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}),Ib=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new kb(`database-unavailable`)),r.onblocked=()=>void 0}),Lb=(e=Tb)=>({transaction:async t=>{let n=await Fb(e),r=n.transaction([Db,Ob],`readwrite`),i=r.objectStore(Db),a=r.objectStore(Ob),o=e=>Pb(e,r),s=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{console.error(`Transcript durable IndexedDB transaction error`,r.error)}}),c;try{let e=await t({getIndex:e=>o(i.get(e)),getAllIndexes:()=>o(i.getAll()),getIndexesByScope:e=>o(i.index(`scopeKey`).getAll(e)),getIndexesByGeneration:e=>o(i.index(`generationKey`).getAll(e)),putIndex:async e=>{await o(i.put(e))},deleteIndex:async e=>{await o(i.delete(e))},getContent:e=>o(a.get(e)),putContent:async e=>{await o(a.put(e))},deleteContent:async e=>{await o(a.delete(e))},clearAll:async()=>{await o(i.clear()),await o(a.clear())}});return await s,e}catch(e){c=e;try{r.abort()}catch{}try{await s}catch(e){c===void 0&&(c=e)}throw c}finally{n.close()}},destroy:()=>Ib(e)});function Rb(e,t={}){let n=yc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Ab(t)),bc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(rc(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=jb(t,r);a.lastAccessedAt=n(),await e.putIndex(Ab(a)),i.push(a)}return xc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Mb(e,ic(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=Sc({info:i,incomingCompleteness:uc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=_c(a.slice()),c=uc(s),l=await pc(i,s),u=ic(t,i.id);return e.transaction(async e=>{let a=await Mb(e,u),o=Sc({info:i,existing:a,incomingCompleteness:c,incomingHash:l.hash});if(o.status===`skipped`)return o.reason===`slim-downgrade`&&a?{status:`skipped`,reason:`slim-downgrade`,record:bc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:vc(t),messageID:i.id,info:_c(i),parts:s,partCompleteness:s.map(lc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:sc(i)};return await e.putIndex(Ab(d)),await e.putContent({id:u,info:_c(i),parts:s}),{status:`written`,record:bc(d)}})},async removeMessage(t,n){await e.transaction(e=>Nb(e,ic(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(rc(t));for(let t of n)await Nb(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(ac(t));for(let t of n)await Nb(e,t.id)})},async evictToBytes(t,n){return e.transaction(async e=>{let r=Number.isFinite(t)?Math.max(0,t):0,i=new Set((n?.protect??[]).map(rc)),a=await e.getAllIndexes(),o=0;for(let e of a)o+=e.byteSize;if(o<=r)return{evicted:0,freedBytes:0,remainingBytes:o};let s=a.filter(e=>!i.has(e.scopeKey)).sort((e,t)=>e.lastAccessedAt===t.lastAccessedAt?oc(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Nb(e,t.id),o-=t.byteSize,l+=t.byteSize,c+=1}return{evicted:c,freedBytes:l,remainingBytes:o}})},async clearAll(){await e.transaction(async e=>{await e.clearAll()})},async destroy(){await e.destroy()}}}function zb(e={}){return Rb(e.driver??Lb(e.databaseName),e)}function Bb(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??b,i=e.isCapacitorApp??Ue;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Vb=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Hb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??wb)(),t),i=()=>(n??=(e.createIndexedDBStore??zb)(),n),a=()=>Bb(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=>Vb([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Ub(e={}){await Hb(e).clearAll()}var Wb=(e,t)=>e<t?-1:+(e>t);function Gb(e){return e.filter(e=>!!e?.id).sort((e,t)=>Wb(e.id,t.id))}async function Kb(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await e_({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),i=r.records.map(e=>({info:cp(e.info),parts:Gb(e.parts??[])}));if(!e.before&&!r.complete&&Yy(i).length>0){let t=B.getScopedSdkClient(e.directory);i=(await Xy({records:i,complete:r.complete,requestMessage:async n=>{let r=await qy({transport:u(),generation:f(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:Gb(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Gb(e.parts??[])}))}return{records:i,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function qb(e){let t=e.client??R,n=Ng(),r=Rg({client:t,activeRegistry:n}),i=ib({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:u,getGeneration:f},fetcher:e=>Kb({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:ch(),historyLimit:lh(),durableStore:e.durableStore??Hb()}),a=_y({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 Py(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return vu(i),ju(a),{repository:i,destroy:()=>{a.cancelAll(`dispose`),ju(null),i.destroy(),yu()}}}function Jb(e){return bu().apply(G(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 Yb=new Map;function Xb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Zb(e,t,n,r={}){let i=r.getTransportIdentity??u,a=r.getGeneration??f,o=i(),s=a(),c=Xb(e,t,o,s),l=()=>i()===o&&a()===s,d=Yb.get(c)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=d.catch(()=>void 0).then(()=>m);Yb.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(),Yb.get(c)===h&&Yb.delete(c)}}var Qb=new Set,$b=new Set,ex=new Set,tx=new Set,nx={onDeleteRequest(e){return Qb.add(e),()=>{Qb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||Qb.forEach(t=>t(e))},onCreateRequest(e){return $b.add(e),()=>{$b.delete(e)}},requestCreate(e){let t=e??{};$b.forEach(e=>e(t))},onDirectoryRequest(e){return ex.add(e),()=>{ex.delete(e)}},requestDirectoryDialog(){ex.forEach(e=>e())},onGitRefreshHint(e){return tx.add(e),()=>{tx.delete(e)}},requestGitRefresh(e){e.directory.trim()&&tx.forEach(t=>t(e))}},rx=50,ix=e=>{let t=Object.keys(e);if(t.length<=rx)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-rx).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},ax=De()(Ae(Oe((e,t)=>({sessions:{},setSessionTodos:(t,n)=>{t&&e(e=>{let r={...e.sessions};return!n||n.length===0?t in r?(delete r[t],{sessions:r}):e:(r[t]={todos:n,touchedAt:Date.now()},{sessions:ix(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:Ye(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),ox=new Set([`todowrite`,`todoread`]),sx=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),cx=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),lx=(e,t)=>{ax.getState().setSessionTodos(e,t)},ux=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},dx=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},fx=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},px=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=fx(n);e&&t.push(e)}return t},mx=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return px(t);if(t&&typeof t==`object`)return px(t.todos)}catch{}return[]},hx=e=>{if(!ox.has(ux(e)))return[];let t=dx(e);if(t&&sx.has(t))return[];let n=e.state,r=px(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=px(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=px(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?mx(i):[]};function gx(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=hx(r[e]);if(t.length>0)return t}}return[]}function _x(e){if(!e.sessionID||e.isStale?.()||cx(e.store.getState().todo,e.sessionID))return!1;let t=gx(e.transcript);return t.length===0||e.isStale?.()||cx(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function vx(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??U()?.getTranscript(G(e.directory,e.sessionID));return t?_x({sessionID:e.sessionID,store:e.store,transcript:t,persist:lx,isStale:e.isStale}):!1}var yx=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>xC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>bC,SESSION_DELETE_UNDO_MS:()=>GS,abortBusySessionForMessageEdit:()=>FC,abortCurrentOperation:()=>EC,archiveSession:()=>tC,beginOptimisticSend:()=>dC,cancelScheduledSessionDeletes:()=>eC,classifySendFailure:()=>hS,combinedSendConfirmationOptions:()=>SC,commitMessageEdit:()=>LC,createSession:()=>zS,deleteSession:()=>QS,dirStoreForDirectory:()=>tS,dismissOpenQuestionsForSession:()=>AC,ensureSentUserMessagePresence:()=>TC,fetchMessagesForSession:()=>UC,fetchRecentSendConfirmationRecords:()=>vC,forkSession:()=>VC,getSendFailureKind:()=>pS,isQuestionRequestNotFoundError:()=>IS,materializeConfirmedSendRecords:()=>yC,mirrorSessionIntoLiveStores:()=>cS,optimisticInsertUserMessage:()=>gC,optimisticSend:()=>hC,patchSessionMetadata:()=>BS,refetchSessionMessages:()=>zC,rejectQuestion:()=>kC,releaseUnconfirmedQueueSend:()=>Qx,requestSessionSmartTitle:()=>iC,resolveForkMessageId:()=>Ix,respondToPermission:()=>DC,respondToQuestion:()=>OC,revertToMessage:()=>jC,rollbackOptimisticSend:()=>pC,scheduleSessionDeletes:()=>$S,setActionRefs:()=>Xx,setOptimisticRefs:()=>Zx,settleOptimisticSend:()=>mC,shareSession:()=>aC,shouldSuppressForkCopyEvent:()=>Rx,stageMessageEdit:()=>NC,trackForkCopySessionCreated:()=>Ox,unarchiveSession:()=>nC,unrevertSession:()=>BC,unshareSession:()=>oC,updateSessionTitle:()=>rC,waitForConnectionOrThrow:()=>yS,waitForSessionIdleForMessageEdit:()=>IC}),bx=2,xx=150,Sx=new Set([`patch`,`step-start`,`step-finish`]),Cx=3,wx=150,Tx=null,Ex=new Map,Dx=3e4;function Ox(e,t){let n=t?.id;!Tx||Tx.runtimeKey!==m()||Tx.directory!==e||!n||t?.title!==Tx.expectedTargetTitle||n===Tx.sourceSessionID||Tx.targetSessionID||(Tx.targetSessionID=n)}function kx(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function Ax(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function jx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Mx(e){return e?.type===`busy`||e?.type===`retry`}function Nx(e){for(let t=e.length-1;t>=0;--t)if(e[t]?.role===`user`)return t;return-1}function Px(e){let t=e.at(-1);return t?.role===`assistant`&&t.time.completed==null}function Fx(e,t){return Mx(e)||e==null&&Px(t)}function Ix(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!Fx(n,t))return;let r=Nx(t);if(r!==-1)return t[r+1]?.id}async function Lx(e,t){let n=Ip(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return B.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function Rx(e,t,n){if(Tx&&Tx.runtimeKey===m()&&Tx.directory===e&&t&&t===Tx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${m()}:${e}:${t}`,i=Ex.get(r);return i?i.expiresAt<=Date.now()?(Ex.delete(r),!1):n<=i.messageID:!1}var zx=null,Bx=null,Vx=()=>``,Hx=new Map,Ux=null,Wx=null,Gx=null,Kx=e=>new Promise(t=>setTimeout(t,e));function qx(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e.message;if(typeof t==`string`&&t.length>0)return t;let n=e.data;if(n&&typeof n==`object`){let e=n.message;if(typeof e==`string`&&e.length>0)return e}}try{return JSON.stringify(e)}catch{return String(e)}}function Jx(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${qx(e.error)}`);throw n!==void 0&&(r.status=n),r}function Yx(e,t){let n=Jx(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Xx(e,t,n){if(zx=e,Bx=t,Vx=n,Hx.size>0){let e=[...Hx.values()];Hx.clear(),queueMicrotask(()=>{for(let t of e)UC(t.sessionID,t.directory)})}}function Zx(e,t,n){Ux=e,Wx=t,Gx=n??null}function Qx(e){let t=e.directory??null;Wx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function $x(){if(!zx)throw Error(`SDK not initialized — is SyncProvider mounted?`);return zx}function eS(){if(!Bx)throw Error(`Child stores not initialized`);let e=Vx();if(!e)throw Error(`No current directory`);return Bx.ensureChild(e)}function tS(e,t){if(!Bx)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Bx.ensureChild(e,t)}function nS(e,t){let n=t??TS(e);return n?{store:tS(n),directory:n}:{store:eS(),directory:lS()}}function rS(e,t){let{store:n,directory:r}=nS(e,t??void 0),i=r??lS()??``;return{repository:U()??W(i,n),directory:i,store:n}}function iS(e,t){let{repository:n,directory:r,store:i}=rS(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(G(r,e))}}function aS(e,t){return Ku(iS(e,t).data)}function oS(e,t){return iS(e,t).data.messageOrder.length}function sS(e,t){let n=Bx;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]=aD(e,n[r]),t.setState({session:i}),!0}return!1}function cS(e,t){t&&sS(e,t)||sS(e)}function lS(){return Vx()||void 0}function uS(){let{hasEverConnected:e,lastDisconnectReason:t}=Uf.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function dS(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 fS=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 pS(e){return e instanceof fS?e.kind:null}function mS(e){let t=dS(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 hS(e,t){return t?mS(e)||dS(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var gS=2e3,_S=5e3,vS=3e4;async function yS(){let e=Wm();e&&Um(`send_stream_stale`);let t=Date.now()+(e?_S:gS);for(;Date.now()<t;){if(Uf.getState().isConnected&&!Wm()||n()&&!Wm())return;let e=t-Date.now();if(e<=0)break;if(await Uf.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Wm())return;let r=Math.min(100,t-Date.now());r>0&&await new Promise(e=>setTimeout(e,r))}throw uS()}function bS(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Um(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},vS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function xS(e){let t=X.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function SS(e){e&&X.getState().upsertSession(e)}function CS(e,t){let n=op(t),r=[...e.getState().session],i=us.search(r,n.id,e=>e.id);if(i.found){let t=aD(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 wS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=xS(e);if(i)return CS(t,i);try{return CS(t,await B.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 TS(e){return ES(e)||$.getState().getDirectoryForSession(e)||lS()}function ES(e){let t=Bx;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=U()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function DS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):$x()}function OS(e){Ar.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&&Ar.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var kS=()=>new Map(Array.from(Md(),([e,t])=>[e,t.title||e]));function AS(e){return!(e.type!==`file`||em(e))}function jS(e){return AS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function MS(e){return e.some(jS)}async function NS(e){let t=[...e.parts];if(!MS(t))return t;let n=f(),r=e.directory??``;try{await Du(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}=rS(e.sessionID,r);if(t=[...i.getParts(G(a,e.sessionID),e.messageID)],MS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function PS(e){if(MS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await Tm(e.parts,{sessionTitles:kS(),directory:e.directory}),n=Ar.getState(),r=n.getDraft(e.key);return{payload:t,commit:await Am({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function FS(e,t,n){let r=Bx;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 IS(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 LS(e,t){let n=Bx;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 RS(e,t,n){let r=FS(e,t,n);return r?B.getScopedSdkClient(r):DS(t)}async function zS(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??lS()),a=i.directory??null;return a&&wd(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),X.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function BS(e,t,n){let r=t??TS(e),i=n(Ip(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);X.getState().upsertSession(a);let o=a.directory??r;return o&&wd(a.id,o),a}async function VS(e,t){let n;try{n=await B.getSession(e,t??TS(e))}catch{return}if(!Bp(n))return;let r=zp(n);if(r)try{await BS(r,t??TS(r),t=>Up(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 HS(e,t){if(!Bx)return[];let n=[],r=new Set,i=[];if(t){let e=Bx.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Bx.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 US(e){if(Bx)for(let t of e){let e=Bx.children.get(t.directory);e&&e.setState({session:t.sessions})}}function WS(e){$.getState().setWorktreeMetadata(e,null)}var GS=1e4,KS=new Map,qS=0;function JS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function YS(e){X.getState().clearSessionsPendingDeletion([e.sessionId]),US(e.listSnapshots),SS(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function XS(e,t){let n=t??TS(e);X.getState().markSessionsPendingDeletion([e]);let r=HS(e,n),i=xS(e);X.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 ZS(e,t){try{if(await VS(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return HS(e,t),X.getState().removeSessions([e]),WS(e),X.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(HS(e,t),X.getState().removeSessions([e]),WS(e),X.getState().clearSessionsPendingDeletion([e]),!0)}}async function QS(e,t){let n=XS(e);return await ZS(e,n.directory)?!0:(YS(n),!1)}function $S(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>XS(e)),i=`session-delete-${Date.now()}-${qS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=KS.get(i);if(!e)return;KS.delete(i);let t=[],n=[];for(let r of e.entries)await ZS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),YS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return KS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function eC(e){if(!e)return!1;let t=KS.get(e);if(!t)return!1;clearTimeout(t.timer),KS.delete(e);for(let e of[...t.entries].reverse())YS(e);return!0}async function tC(e){let t=TS(e),n=HS(e,t),r=xS(e),i=Date.now();X.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await VS(e,t);let n=await B.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return X.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),US(n),SS(r),!1}}async function nC(e){let t=TS(e),n=xS(e),r=n?JS(n):null;if(r&&(X.getState().upsertSession(r),t&&Bx)){let e=Bx.children.get(t);e&&CS(e,r)}try{let n=await B.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=JS(n);if(X.getState().upsertSession(r),t&&Bx){let e=Bx.children.get(t);e?CS(e,r):cS(r,t)}else cS(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(X.getState().upsertSession(n),n.time?.archived&&HS(e,t)),!1}}async function rC(e,t){let n=TS(e),r=xS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Yf(r):0,c=await B.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);X.getState().upsertSession(c),cS(c,n)}async function iC(e){let t=TS(e),n=xS(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 B.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);X.getState().upsertSession(s),cS(s,t)}async function aC(e){let t=TS(e),n=op(Yx(await $x().session.share({sessionID:e,directory:t}),`session.share`));return X.getState().upsertSession(n),sS(n,t),n}async function oC(e){let t=TS(e),n=op(Yx(await $x().session.unshare({sessionID:e,directory:t}),`session.unshare`));return X.getState().upsertSession(n),sS(n,t),n}function sC(e){let t=Bx,n=e??Vx();if(!t||!n)return{store:e?tS(e):eS(),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 cC(){return{identity:u(),generation:f()}}function lC(e,t){return e.isCurrent()&&u()===t.identity&&f()===t.generation}function uC(e,t){if(!lC(e,t))throw Error(`Send target changed before transport dispatch`)}function dC(e){if(!Ux||!Wx)throw new fS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??lS()??null,n=sC(t),r=cC();uC(n,r),e.beforeOptimisticInsert?.(),uC(n,r);let i=e.messageID??he(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),om(e.sessionId),gC({sessionId:e.sessionId,messageID:i,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.parts}),e.onOptimisticInsert?.(),{messageID:i,sessionId:e.sessionId,directory:t,capture:n,transport:r}}catch(e){throw e instanceof fS?e:new fS(pS(e)??hS(e,!1),e)}}function fC(e){if(!lC(e.capture,e.transport)||!Wx)return;Wx({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 pC(e){fC(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function mC(e){if(!Ux||!Wx)throw new fS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));let{ticket:t}=e,{capture:n,transport:r,messageID:i,sessionId:a,directory:o}=t,s=!1;try{if(await yS(),uC(n,r),s=!0,await bS(e.send(i)),!lC(n,r))throw new fS(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=pS(c)??hS(c,s),u=c instanceof fS?c:new fS(l,c,i);if(!lC(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await vC(a,i,o):null;if(d&&lC(n,r)){yC(n.store,a,i,d,{directory:o??void 0}),Gx?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||fC(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function hC(e){await mC({ticket:e.ticket??dC({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 gC(e){if(!Ux)return!1;let t=e.directory??lS(),n=t?tS(t):eS(),r=t??lS()??``;if(CC(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let i=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:he(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:he(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)i.push({id:he(`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={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:a,completed:0}},s=Qv(()=>iS(e.sessionId,t).data);Ux({sessionID:e.sessionId,directory:t,message:o,parts:i});let c=Qv(()=>iS(e.sessionId,t).data);try{s&&c&&$v({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:u(),generation:f(),before:s,after:c})}catch{}let l=n.getState();return n.setState({session_status:{...l.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...l.session_status_observed_at,[e.sessionId]:a}}),!0}function _C(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function vC(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??bx,c=r?.retryDelayMs??xx;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!_C(r?.isCurrent)||a>0&&(await Kx(c),i?.signal.aborted||!_C(r?.isCurrent)))return null;try{let a=await $x().session.messages({sessionID:e,directory:n??void 0,limit:fh(),...i?{signal:i.signal}:{}});if(!_C(r?.isCurrent))return null;let o=(Jx(a,`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.some(e=>e.info.id===t))return o}catch{}}return null}finally{o&&clearTimeout(o),r?.signal?.removeEventListener(`abort`,a)}}function yC(e,t,n,r,i){if(!r.length)return;let a=i?.directory??TS(t)??Vx(),o=G(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:cp(e.info),parts:e.parts??[]})),skipPartTypes:Sx,merge:i?.gapFillOnly===!0?Zs:$s({purpose:`recovery`})};Su(o,s)||W(a,e).apply(o,s)}var bC=2e3,xC={attempts:12,retryDelayMs:500},SC={presenceGraceMs:bC,recovery:{...xC}};function CC(e,t,n,r){let i=r??TS(t)??Vx()??``,a=U()??W(i,e),o=G(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function wC(e,t,n,r){let i=r?.directory??TS(t)??Vx()??``;if(CC(e,t,n,i))return Promise.resolve(!0);if(!_C(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=U()??W(i,e),f=G(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!_C(r?.isCurrent)){l(!1);return}CC(e,t,n,i)&&l(!0)}),CC(e,t,n,i)&&l(!0)})}async function TC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await wC(t,n,r,{timeoutMs:e.graceMs??SC.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!_C(a))return`cancelled`;let o=await vC(n,r,i,{...SC.recovery,isCurrent:a});return o?_C(a)?(yC(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:_C(a)?`missing`:`cancelled`}async function EC(e){let{store:t,directory:n}=nS(e),r=n?{state:`bound`,transportIdentity:u(),directory:n,sessionID:e}:null,i=r?$.getState().beginQueueAbortBlock(r):null;try{if(Yx(await $x().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&i&&$.getState().clearQueueAbortBlock(r,i),nt(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>JV);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function DC(e,t,n){await yS();let r=FS(`permission`,e,t)||TS(e)||lS();if(Yx(await RS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function OC(e,t,n){await yS();let r=FS(`question`,e,t)||TS(e)||lS();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Yx(await RS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw IS(n)&&LS(e,t),n}}async function kC(e,t){await yS();let n=FS(`question`,e,t)||TS(e)||lS();try{if(Yx(await RS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw IS(n)&&LS(e,t),n}}async function AC(e){if(!e)return!1;let t=Bx;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Yp(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)LS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await kC(e,t)}catch(e){if(IS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function jC(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 Zb(e,r??(()=>{try{return nS(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:a,directory:s}=nS(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 $x().session.abort({sessionID:e,directory:s})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let l=aS(e,s).find(e=>e.id===t),d=aS(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}=rS(e,s),m=[...f.getParts(G(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 NS({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await Tm(m,{sessionTitles:kS(),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=Ar.getState(),r=await Am({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 Mm({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 B.revertSession(e,t,void 0,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 Mm({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]=r,a.setState({session:i})),s&&nx.requestGitRefresh({directory:s}),g}catch(t){let r=[...a.getState().session],i=r.findIndex(t=>t.id===e);throw i>=0&&(r[i]={...r[i],revert:b}),n()?(a.setState({session:r}),h&&v&&_!==void 0&&await Mm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(a.setState({session:r}),h&&v&&_!==void 0&&await Mm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function MC(e,t,n,r){let i=r??TS(t)??Vx(),a=G(i,t),o=Qv(()=>iS(t,i).data),s=[...xu(t)];s.some(e=>e.directory===i&&e.sessionID===t)||s.push(a);let c=!1;for(let e of s)Su(e,{type:`remove-message`,messageID:n})!=null&&(c=!0);c||W(i,e).apply(a,{type:`remove-message`,messageID:n});let l=Qv(()=>iS(t,i).data);try{o&&l&&$v({trigger:`user-delete`,sessionID:t,directory:i,transport:u(),generation:f(),before:o,after:l})}catch{}}async function NC(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=nS(e,o).directory}else{s=nS(e,o).directory;let{data:n}=iS(e,s),r=Ku(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 PS({key:c,parts:await NS({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 Mm({key:c,restoredRevision:d,previous:f})).status})}}function PC(e,t,n,r){let i=t.findIndex(t=>t.id===e),a=i>=0?t[i]:void 0;if(!a||a.role!==`user`||!n.has(e))throw Error(`The selected user message is unavailable`);let o=r?.preserveMessageId,s=o?t.findIndex(e=>e.id===o):-1,c=s>i?s:t.length;return t.slice(i,c).filter(e=>!(!n.has(e.id)||o&&e.id===o))}async function FC(e,t){let n=t?.directory,{store:r,directory:i}=nS(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await $x().session.abort({sessionID:e,directory:i})}catch{}}async function IC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=nS(e,n),o=Date.now()+r;for(;Date.now()<o;){let t=a.getState().session_status[e];if(!t||t.type===`idle`)return;await new Promise(e=>setTimeout(e,i))}let s=a.getState().session_status[e];if(!(!s||s.type===`idle`))throw Error(`Session is still busy after waiting to edit: ${e}`)}async function LC(e,t,n){let r=n?.directory,i=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:a,directory:o}=nS(e,r),s=Qv(()=>iS(e,r).data);try{await FC(e,{directory:r}),await IC(e,{directory:r});let n=new Set((await RC(e,r)).map(e=>e.id)),s=PC(t,aS(e,r),n,{preserveMessageId:i});for(let t of[...s].reverse())await B.deleteSessionMessage(e,t.id,o),MC(a,e,t.id,o)}finally{try{let t=Qv(()=>iS(e,r).data);s&&t&&$v({trigger:`user-edit`,sessionID:e,directory:o,transport:u(),generation:f(),before:s,after:t})}catch{}}}async function RC(e,t){let{directory:n}=nS(e,t);return(Jx(await $x().session.messages({sessionID:e,directory:n,limit:dh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>cp(e.info))}async function zC(e,t){let{store:n,directory:r}=nS(e,t),i=Qv(()=>iS(e,t).data),a=(Jx(await $x().session.messages({sessionID:e,directory:r,limit:dh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(a.length===0){try{let n=Qv(()=>iS(e,t).data);i&&n&&$v({trigger:`materialize`,sessionID:e,directory:r,transport:u(),generation:f(),purpose:`refetch`,before:i,after:n})}catch{}return[]}let o=a.map(e=>({info:cp(e.info),parts:e.parts??[]})),s=G(r??Vx(),e);Su(s,{type:`materialize-snapshots`,records:o,skipPartTypes:Sx})||W(r??Vx(),n).apply(s,{type:`materialize-snapshots`,records:o,skipPartTypes:Sx});try{let n=Qv(()=>iS(e,t).data);i&&n&&$v({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 BC(e,t){return Zb(e,t??(()=>{try{return nS(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=nS(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=oS(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await $x().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await $x().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Yx(c,`session.unrevert`),u=[...r.getState().session],d=u.findIndex(t=>t.id===e);d>=0&&(u[d]=l,r.setState({session:u}));for(let r=0;r<Cx;r+=1){if(r>0&&(await Kx(wx),!n())||(await zC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(oS(e,i)>o)return}if(oS(e,i)<=o){let n=i??Vx(),a=U()??W(n,r),o=G(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await zC(e,t)}})}async function VC(e,t,n,r){let i=m(),{store:a,directory:o}=nS(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await wS(e,a,o);wd(e,o);let c=a.getState(),l=c.session_status[e],u=aS(e,o);l?.type,u.length;let d=Ix(n,u,l);if(!n&&Fx(l,u)&&Nx(u)===-1&&(await zC(e),c=a.getState(),l=c.session_status[e],u=aS(e,o),d=Ix(void 0,u,l)),!n&&Fx(l,u)&&Nx(u)===-1)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:c.session_status[e]?.type??`unknown`,messageCount:oS(e,o)}),Error(`Fork source user message is unavailable`);c.session_status[e]?.type;let{repository:f,data:p}=iS(e,o),h=(n?p.messagesByID[n]??u.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...f.getParts(G(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!em(e)).map(e=>e.text||e.content||``).join(`
402
+ `).trim();let v=g.filter(e=>e.type===`file`&&!em(e));Tx={operationId:t,runtimeKey:i,directory:o,sourceSessionID:e,expectedTargetTitle:kx(s.title)},await Ax(t,`copying`);let y;try{if(y=await B.forkSession(e,d,o),y.id,m()!==i)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),Tx?.operationId===t&&(Tx=null),!1;let n=[...a.getState().session],r=us.search(n,y.id,e=>e.id);r.found||(n.splice(r.index,0,y),a.setState({session:n})),jx(t,y.id);let s=$.getState().currentSessionId;(s===e||s===y.id)&&$.getState().setCurrentSession(y.id,o,{skipMessageFetch:!0}),await Ax(t,`opening`);try{y=await Lx(y,o)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw Tx?.operationId===t&&(Tx=null),e}try{let e=G(o,y.id),r=U();r&&typeof r.destructiveReset==`function`?await r.destructiveReset(e):Su(e,{type:`reset`}),await Ax(t,`loading`),y.id,$.getState().currentSessionId,y.id;let i=U()??W(o,a),s=G(o,y.id),c=i.getRequestState?.(s);(!(i.hasSession?.(s)??!1)||c?.status===`error`)&&await UC(y.id,o);let l=aS(y.id,o).at(-1)?.id;l&&Ex.set(`${m()}:${o}:${y.id}`,{messageID:l,expiresAt:Date.now()+Dx});let u=$.getState().currentSessionId===y.id;u&&h&&_&&Ar.setState({pendingInputText:_,pendingInputMode:`replace`}),u&&h&&n&&OS(v)}finally{Tx?.operationId===t&&(Tx=null)}return y.id,!0}var HC=new Map;async function UC(e,t){let n=t??lS();if(!n)return;let r=m(),i=uh(),a=`${r}:${n}:${e}:${i}`;if(!zx||!Bx){Hx.set(a,{sessionID:e,directory:n});return}let o=HC.get(a);if(o)return o;let s=WC(e,n,r,i).finally(()=>{HC.get(a)===s&&HC.delete(a)});return HC.set(a,s),s}async function WC(e,t,n,r){$x();let i=tS(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=U()??W(t,i),l=G(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(Ym(t,e)){vx({directory:t,sessionID:e,store:i,transcript:u});return}if(U()){try{await wu(t,e)}catch{return}if(y())return;vx({directory:t,sessionID:e,store:i,isStale:y}),await Fy({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}vx({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await Kb({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:Sx}),b=n.records.length,Xm(t,e)}catch{return}y()||(vx({directory:t,sessionID:e,store:i,isStale:y}),await Fy({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var GC=18e4,KC=400,qC=300,JC=15,YC=`FINAL_REVIEW_STATUS: no_remaining_findings`,XC=YC.toLowerCase(),ZC=new Set,QC=new Set,$C=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},ew=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},tw=e=>{let t=e.role;return typeof t==`string`?t:``},nw=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},rw=(e,t)=>Fd(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`}),iw=(e,t,n,r=0,i)=>{let a=Pd(e,t),o=new Set;for(let e of a)rw(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(tw(s)!==`assistant`||!$C(s)||ew(s)<r-1e3)continue;let c=nw(s);if(!fw(s,i)||c&&o.has(c))continue;let l=Pp(Fd(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},aw=(e,t)=>Id(e,t)?.type===`idle`,ow=e=>e===m(),sw=e=>{Wp.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},cw=e=>{if(e&&!ow(e))throw Error(`Auto-review stopped because the runtime changed.`)},lw=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),uw=e=>e.trim().split(`
403
+ `).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===XC,dw=e=>{let t=e.trimEnd().split(`
404
+ `);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===XC&&t.pop(),t.join(`
405
+ `).trim()},fw=(e,t)=>!t||nw(e)===t,pw=(e,t)=>[e.runtimeKey,e.originalSessionID,e.phase,e.expectedAssistantParentID??``,t].join(`:`),mw=(e,t)=>{let n=pw(e,t);return QC.has(n)?null:(QC.add(n),n)},hw=e=>{QC.delete(e)},gw=()=>[{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${YC}\nIf you found issues that require changes, do not include that final status line.`}],_w=async e=>{for(;;){let t=Wp.getState().runsByOriginalSessionID[e];if(!t||t.status!==`running`)return;if(!ow(t.runtimeKey)){sw(t);return}let n=t.phase===`waiting_for_reviewer`?t.reviewSessionID:t.originalSessionID;if(!aw(n,t.directory)){await new Promise(e=>setTimeout(e,qC));continue}let r=iw(n,t.directory,t.lastForwardedMessageID,t.waitAfterCreatedAt,t.expectedAssistantParentID);if(!r){await new Promise(e=>setTimeout(e,qC));continue}if(t.phase===`waiting_for_reviewer`){let e=mw(t,r.id);if(!e){await new Promise(e=>setTimeout(e,qC));continue}if(!ow(t.runtimeKey)){hw(e),sw(t);return}try{let e=Date.now(),n=uw(r.text),i=n?dw(r.text):r.text,a=await kw(t.reviewSessionID,t.directory,i,t.runtimeKey);if(n){Wp.getState().completeRun(t.originalSessionID);return}Wp.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_implementer`,lastForwardedMessageID:r.id,expectedAssistantParentID:a,waitAfterCreatedAt:e}))}finally{hw(e)}}else{if(t.iteration>=t.maxIterations){Wp.getState().stopRun(t.originalSessionID);return}let e=mw(t,r.id);if(!e){await new Promise(e=>setTimeout(e,qC));continue}if(!ow(t.runtimeKey)){hw(e),sw(t);return}try{let e=Date.now(),n=await Aw(t.originalSessionID,t.directory,r.text,!0,t.runtimeKey);Wp.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_reviewer`,iteration:t.iteration+1,lastForwardedMessageID:r.id,expectedAssistantParentID:n,waitAfterCreatedAt:e}))}finally{hw(e)}}}},vw=e=>{Wp.getState().upsertRun(e),yw(e.originalSessionID)},yw=e=>{let t=Wp.getState().runsByOriginalSessionID[e];!t||t.status!==`running`||!ow(t.runtimeKey)||ZC.has(e)||(ZC.add(e),_w(t.originalSessionID).catch(e=>{console.error(`[review-flow] auto-review loop failed`,e),Wp.getState().updateRun(t.originalSessionID,t=>({...t,status:lw(e)?`stopped`:`error`,error:e instanceof Error?e.message:String(e)}))}).finally(()=>{ZC.delete(e)}))},bw=async(e,t,n)=>{let r=Date.now()+GC;for(;Date.now()<r;){let r=Pd(e,t).filter(e=>tw(e)===`assistant`).filter(e=>ew(e)>=n-1e3).filter($C).sort((e,t)=>ew(t)-ew(e));for(let e of r){let n=Pp(Fd(e.id,t)).trim();if(n)return n}await new Promise(e=>setTimeout(e,KC))}throw Error(`Timed out waiting for handoff response`)},xw=e=>{let t=Yo.getState(),n=Uf.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}},Sw=async(e,t,n,r,i,a)=>{cw(a);let o=r??xw(e);if(!o)throw Error(`Select a model before sending review flow messages`);let s=Yo.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)),om(e);let c=null;if(await hC({sessionId:e,content:n,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,onMessageID:e=>{c=e},beforeOptimisticInsert:()=>cw(a),onOptimisticInsert:()=>Cw(e),send:r=>(cw(a),B.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},Cw=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:chat-force-scroll-bottom`,{detail:{sessionId:e}}))},ww=(e,t)=>{Je.getState().openContextPanelTab(e,{mode:`chat`,dedupeKey:`session:${t.id}`,label:t.title??null,sessionTitleFallback:t.title??null})},Tw=async(e,t)=>{try{return await B.getSession(e,t)}catch{return null}},Ew=e=>`Review: ${e.title?.trim()||e.id}`,Dw=async(e,t,n)=>{cw(n);let r=await B.getSession(e,t);cw(n);let i=Rp(r);if(i){let r=await Tw(i,t);if(cw(n),r&&Bp(r))return r;await BS(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})}cw(n);let a=await B.createSession({title:Ew(r),metadata:Hp({},e)},t);cw(n),wd(a.id,t);try{cw(n),await BS(e,t,e=>Vp(e,a.id))}catch(e){throw cw(n),await B.deleteSession(a.id,t).catch(e=>{console.warn(`[review-flow] failed to delete unlinked review session after link failure`,e)}),e}return X.getState().upsertSession(a),a},Ow=async e=>{await yS();let t=e.autoReview?m():void 0,n;if(e.generateHandoff??!0){let n=await Ap(`session.reviewHandoff.visible`),r=await Ap(`session.reviewHandoff.instructions`),i=Date.now();await Sw(e.originalSessionID,e.directory,n,null,[{text:r,synthetic:!0}],t);let a=async()=>{let n=await bw(e.originalSessionID,e.directory,i);cw(t);let r=await Ap(`session.reviewSession.visible`,{handoff:n}),a=await Dw(e.originalSessionID,e.directory,t),o=t??m(),s=Date.now(),c=await Sw(a.id,e.directory,r,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?gw():void 0,e.autoReview?o:void 0);e.autoReview&&vw({originalSessionID:e.originalSessionID,reviewSessionID:a.id,directory:e.directory,runtimeKey:o,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:JC,expectedAssistantParentID:c,waitAfterCreatedAt:s}),e.autoReview||ww(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 Ap(`session.reviewSessionWithoutHandoff.visible`);let r=await Dw(e.originalSessionID,e.directory,t),i=t??m(),a=Date.now(),o=await Sw(r.id,e.directory,n,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?gw():void 0,e.autoReview?i:void 0);e.autoReview&&vw({originalSessionID:e.originalSessionID,reviewSessionID:r.id,directory:e.directory,runtimeKey:i,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:JC,expectedAssistantParentID:o,waitAfterCreatedAt:a}),e.autoReview||ww(e.directory,r)},kw=async(e,t,n,r)=>{cw(r);let i=zp(await B.getSession(e,t));if(!i)throw Error(`Original session is missing`);let a=await Ap(`session.reviewFeedbackToImplementer.visible`,{review_feedback:n});return cw(r),Sw(i,t,a,void 0,void 0,r)},Aw=async(e,t,n,r=!1,i)=>{cw(i);let a=Rp(await B.getSession(e,t));if(!a)throw Error(`Review session is missing`);let o;try{o=await B.getSession(a,t)}catch(n){throw cw(i),await BS(e,t,e=>Up(e,a)),n}let s=await Ap(`session.implementationResponseToReviewer.visible`,{implementation_response:n});cw(i);let c=await Sw(a,t,s,void 0,r?gw():void 0,i);return r||ww(t,o),c},jw=e=>Bp(e)?`review-to-original`:Rp(e)?`original-to-review`:null,Mw=[0,250,500,1e3,2e3,2e3,2e3,2e3],Nw=5e3,Pw=(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??Nw,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??Mw,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:()=>B.checkHealth(),wait:e=>new Promise(t=>setTimeout(t,e))}),Fw=()=>Pw.waitUntilReady(m()),Iw=e=>{Pw.reset(e)},Lw=100,Rw=1500,zw=async e=>{if(!e.ok)throw Error(`session index request failed (${e.status})`)},Bw=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}:{}}},Vw,Hw=async(e,t)=>{if(typeof window>`u`)return null;let n=e.trim();if(!n)return null;try{let e=await _(`/api/openchamber/session-index/session/${encodeURIComponent(n)}`,{signal:t?.signal});if(e.status===404||e.status===501)return null;await zw(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}},Uw=async e=>{if(typeof window>`u`)return null;if(Vw)return Vw;let t=(async()=>{let t=await _(`/api/openchamber/session-index`,{signal:e?.signal});return t.status===501?null:(await zw(t),Bw(await t.json()))})().finally(()=>{Vw===t&&(Vw=void 0)});return Vw=t,t},Ww=async e=>{if(typeof window>`u`)return null;let t=await _(`/api/openchamber/session-index/sync`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:e})});return t.status===501?null:(await zw(t),t.json())},Gw=(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:Rw,a,o,s=e=>{a!==void 0&&clearTimeout(a),u!==void 0&&clearTimeout(u),d(),t.removeEventListener(`abort`,l),r(e)},c=e=>{o=e,a!==void 0&&clearTimeout(a),a=setTimeout(()=>{a=void 0,s(o??e)},Lw)},l=()=>s(`aborted`),u=i===null?void 0:setTimeout(()=>s(`timeout`),i),d=Jt(t=>{if(t.type===`event-stream-ready`){c(`ready`);return}if(t.type===`session-index-changed`&&t.revision>e){c(`tip`);return}});t.addEventListener(`abort`,l,{once:!0})}),Kw=async(e,t)=>{let n=e.trim();if(!n)throw Error(`session index pin requires a session id`);let r=await _(`/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 zw(r)},qw=async(e,t)=>{let n=e.trim();if(!n)throw Error(`session index unpin requires a session id`);let r=await _(`/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 zw(r)},Jw=async e=>{if(typeof window>`u`)return;let t=await _(`/api/openchamber/session-index/directory`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});t.status!==501&&await zw(t)},Yw=async e=>{if(typeof window>`u`||e.length===0)return;let t=await _(`/api/openchamber/session-index/snapshot`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:e})});t.status!==501&&await zw(t)},Xw=1,Zw=`oc.sessionIndexStartupCache`,Qw=1e6,$w=e=>!!e&&typeof e==`object`&&!Array.isArray(e),eT=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),tT=e=>!(!$w(e)||typeof e.active!=`boolean`||typeof e.completed!=`number`||!Number.isFinite(e.completed)||typeof e.total!=`number`||!Number.isFinite(e.total)||!eT(e.pendingDirectories)||!eT(e.completedDirectories)||!eT(e.failedDirectories)||e.enriching!==void 0&&typeof e.enriching!=`boolean`),nT=e=>$w(e)&&typeof e.id==`string`&&e.id.length>0&&typeof e.title==`string`&&typeof e.directory==`string`&&e.directory.length>0&&$w(e.time)&&typeof e.time.created==`number`&&Number.isFinite(e.time.created)&&typeof e.time.updated==`number`&&Number.isFinite(e.time.updated),rT=e=>!$w(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(nT),iT=e=>!$w(e)||typeof e.revision!=`number`||!Number.isFinite(e.revision)||!tT(e.sync)||!Array.isArray(e.directories)||e.pinnedSessionIds!==void 0&&!eT(e.pinnedSessionIds)?!1:e.directories.every(rT),aT=e=>$w(e)&&e.version===Xw&&$w(e.entries),oT=e=>{if(!e)return null;try{let t=JSON.parse(e);return aT(t)?{version:Xw,entries:t.entries}:null}catch{return null}},sT=(e,t)=>{try{let n=JSON.stringify(t);if(n.length>Qw)return;e.setItem(Zw,n)}catch{}},cT=(e,t)=>{if(!e)return null;let n;try{n=t.getItem(Zw)}catch{return null}let r=oT(n);if(!r)return null;let i=r.entries[e];return iT(i)?i:null},lT=(e,t,n)=>{if(!e||!iT(t))return;let r=null;try{r=n.getItem(Zw)}catch{return}let i={...oT(r)?.entries??{},[e]:t},a=Object.keys(i).slice(-8);sT(n,{version:Xw,entries:Object.fromEntries(a.map(e=>[e,i[e]]))})},uT=(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}}},dT=(e,t)=>!e||t,fT=(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}},pT=new Set,mT=()=>pT.size>0,hT=e=>{for(let t of pT)t(e)},gT=e=>(pT.add(e),()=>pT.delete(e)),_T=3e4,vT=3e3,yT=1e3,bT=0,xT=0,ST=0,CT=null;function wT(e){try{if(e===`medium`){xT+=1;return}if(e===`heavy`){ST+=1;return}bT+=1}catch{}}function TT(){return{light:bT,medium:xT,heavy:ST}}function ET(){bT=0,xT=0,ST=0}function DT(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 OT(){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=DT(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 kT(){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 AT(){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 jT(e){let t=kT(),n=AT();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 MT(e={}){if(CT)return CT;let t=e.isEnabled??Jv,n=e.record??Zv,r=e.now??(()=>Date.now()),i=e.getPlatform??(()=>Ke()),a=OT(),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()+vT,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})},vT)},g=()=>{p(()=>{let e=a.snapshotWindow(),o=TT();t()&&n(jT({at:r(),snapshot:e,haptics:o,platform:i()})),ET(),a.reset()})},_=()=>{s=setTimeout(()=>{o||(g(),h(),_())},_T)},v=()=>{let e=r()+yT;c=setTimeout(()=>{o||(p(()=>{let t=Math.max(0,r()-e);a.addLagMs(t)}),v())},yT)};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}CT===y&&(CT=null)}};return CT=y,y}var NT=typeof window<`u`?K.useLayoutEffect:K.useEffect,PT=et(`OpenChamberHaptics`),FT=null,IT=()=>(FT??=tt.isPluginAvailable(`OpenChamberHaptics`),FT);function LT(e){switch(e){case`medium`:return`impactMedium`;case`heavy`:return`impactHeavy`;default:return`impactLight`}}function RT(){return typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0}function zT(){if(!RT())return!1;let e=window.Capacitor?.getPlatform?.();return e===`ios`||e===`android`}function BT(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 VT=20,HT=750;function UT(e,t){return t-e>=VT}function WT(e,t){return t-e>=HT}function GT(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 KT=-1/0;function qT(e=`light`,t){if(!zT()||!IT()||document.visibilityState!==`visible`||!document.documentElement.classList.contains(`oc-native-app-active`))return!1;let n=Date.now();return!t?.bypassCadence&&!UT(KT,n)?!1:(KT=n,PT[LT(e)]().catch(()=>void 0),wT(e),!0)}var JT=`button, [role="button"], [role="menuitem"]`;function YT(){let e=(0,H.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],K.useEffect(XT,t)}function XT(){if(!zT())return;let e=ZT;return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}function ZT(e){if(!e.isTrusted||!(e.target instanceof Element))return;let t=e.target.closest(JT);t&&(t.matches(`:disabled, [aria-disabled="true"], [data-mobile-press-feedback="none"]`)||qT(`light`))}function QT(){let e=(0,H.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],NT($T,t)}function $T(){if(!zT())return;let e=fT(),t=Ke()===`android`,n=-1/0;return gT(r=>{if(!e(r))return;let i=$.getState().currentSessionId,a=document.documentElement.classList.contains(`oc-native-app-active`);if(BT({eventSessionId:r.sessionID,currentSessionId:i,isForeground:a,isVisible:document.visibilityState===`visible`}).shouldTrigger){if(t&&r.kind===`text`){let e=Date.now();if(!WT(n,e))return;qT()&&(n=e);return}qT()}})}var eE=async e=>{let t=await pt(e);t.ok||console.error(`Failed to copy to clipboard:`,t.error)},tE=e=>e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(tE).join(` `).trim():(0,K.isValidElement)(e)?tE(e.props?.children):``,nE=e=>typeof e==`function`?e():e,rE=(e,t)=>{let n=tE(nE(t?.description));return n.length>0?n:tE(e)},iE=Object.assign((...e)=>(qT(),dt(...e)),{...dt,success:(...e)=>{let[t,n]=e;return qT(),dt.success(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},info:(...e)=>{let[t,n]=e;return qT(),dt.info(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},error:(...e)=>{let[t,n]=e;return qT(),dt.error(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>eE(rE(t,n))}})},warning:(...e)=>{let[t,n]=e;return qT(),dt.warning(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>eE(rE(t,n))}})},loading:(...e)=>(qT(),dt.loading(...e)),custom:(...e)=>(qT(),dt.custom(...e)),promise:(...e)=>(qT(),dt.promise(...e))}),aE=new Set,oE,sE=aE,cE=null,lE=(e,t)=>ht(mt.getState().dictionary,e,t),uE=e=>{let t=e?.time?.pinned;return t!=null&&t!==``},dE=e=>{if(!e)return aE;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)uE(e)&&t.add(e.id);return t.size===0?aE:t},fE=(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},pE=(e=R,t=u())=>{let n=wE(e,t);if(n===oE&&t===cE)return sE;let r=dE(n);return oE=n,cE=t,sE=fE(sE,r)?sE:r,sE},mE=(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=dE(e),o=new Set(a);return n==null||n===``?o.delete(t):o.add(t),fE(a,o)||(r=!0),r?{...e,directories:i,pinnedSessionIds:[...o]}:e},hE=(e,t,n,r)=>{let i=wE(e,t);if(!i)return null;let a=mE(i,n,r?new Date().toISOString():null);return a!==i&&EE(a,{client:e,transport:t,persist:!1}),i},gE=e=>R.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()}),_E=()=>pE(),vE=()=>(0,K.useSyncExternalStore)(gE,_E,bE),yE=()=>{let e=(0,H.c)(6),t=ot(),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:xE,onMutate:e=>{let{sessionId:n,nextPinned:r,transport:i}=e;return{previous:hE(t,i,n,r),transport:i}},onError:(e,n,r)=>{r?.previous&&EE(r.previous,{client:t,transport:r.transport,persist:!1}),iE.error(e instanceof Error?e.message:lE(n.nextPinned?`sessions.sidebar.session.pin.error`:`sessions.sidebar.session.unpin.error`))}},e[1]=t,e[2]=r);let i=st(r),a;return e[3]!==t||e[4]!==i?(a=e=>{let n=e.trim();if(!n)return;let r=u(),a=wE(t,r);if(!a)return;let o=dE(a).has(n);i.mutate({sessionId:n,nextPinned:!o,transport:r})},e[3]=t,e[4]=i,e[5]=a):a=e[5],ft(a)};function bE(){return aE}async function xE(e){let{sessionId:t,nextPinned:n}=e;n?await Kw(t):await qw(t)}var SE=(e=u())=>P.sessionIndex.snapshot(e),CE=(e=u(),t=m(),n=qe(),r=Uw)=>{let i=t,a=n,o=r;return{queryKey:SE(e),queryFn:async({signal:e})=>{let t=await o({signal:e});return t&&lT(i,t,a),t},staleTime:0,gcTime:1/0,initialData:()=>cT(i,a)??void 0,initialDataUpdatedAt:0}},wE=(e=R,t=u())=>e.getQueryData(SE(t))??null,TE=(e=R,t=u(),n=m(),r=qe())=>{let i=CE(t,n,r);return e.getQueryCache().build(e,i),e.getQueryData(i.queryKey)??null},EE=(e,t)=>{if(!iT(e))return;let n=t?.client??R,r=t?.transport??u(),i=t?.runtimeKey??m(),a=t?.storage??qe();n.setQueryData(SE(r),e),t?.persist!==!1&&lT(i,e,a)},DE=(e=R,t=u(),n=m(),r=qe(),i=Uw)=>{let a={...CE(t,n,r,i),staleTime:0};return e.getQueryCache().build(e,a),e.fetchQuery(a)},OE=500,kE=20,AE=6e3,jE=7,ME=3,NE=1,PE=2,FE=750,IE=500,LE=1e4,RE=2,zE=(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})}),BE=null,J=0,VE=new Map,HE=new Map,UE=new Map,WE=[],GE=new Set,KE=0,qE=ME,JE=0,YE=null,XE,ZE=new Map,QE=()=>({loadGeneration:J,runtimeGeneration:f(),transportIdentity:u()}),Y=e=>e.loadGeneration===J&&e.runtimeGeneration===f()&&e.transportIdentity===u(),$E=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`)},eD=e=>{JE=0,$E(e)&&(qE=qE>ME?ME:NE)},tD=()=>{JE+=1,!(JE<PE||qE>=jE)&&(qE+=1,JE=0)},nD=()=>{for(;KE<qE&&WE.length>0;){let e=WE.shift();if(!e)return;KE+=1,e()}},rD=e=>new Promise((t,n)=>{WE.push(()=>{e().then(t,n).finally(()=>{--KE,nD()})}),nD()}),iD=e=>{let t=e;return y(t.directory??null)??y(t.project?.worktree??null)},aD=(e,t)=>{if(!t)return e;let n=e,r=t,i=y(n.directory??null),a=y(n.project?.worktree??null),o=y(r.directory??null),s=y(r.project?.worktree??null),c=!1,l={...n};!i&&o&&(l.directory=r.directory,c=!0),!a&&s?(l.project={...r.project??{},...n.project??{},worktree:r.project?.worktree},c=!0):!n.project&&r.project&&(l.project=r.project,c=!0);let u=n.hasChildren,d=r.hasChildren;typeof u!=`boolean`&&typeof d==`boolean`&&(l.hasChildren=d,c=!0);let f=Yf(t);if(f>Yf(e)){let e=n.metadata&&typeof n.metadata==`object`?n.metadata:{},t=e.openchamber&&typeof e.openchamber==`object`?e.openchamber:{},r=t.titleRefresh&&typeof t.titleRefresh==`object`?t.titleRefresh:{};l.metadata={...e,openchamber:{...t,titleRefresh:{...r,activityUpdatedAt:f}}},c=!0}return c?l:e},oD=(e,t)=>{let n=aD(e,t);return n.share===t.share?n:{...n,share:t.share}},sD=e=>{let t=new Map;for(let n of e){let e=iD(n);if(!e)continue;let r=t.get(e);if(r){r.push(n);continue}t.set(e,[n])}return t},cD=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),iD(e)??``].join(`:`),lD=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),iD(e)??``].join(`:`)},uD=(e,t)=>e.time?.updated!==t.time?.updated&&lD(e)===lD(t),dD=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(cD(e[n])!==cD(t[n]))return!1;return!0},fD=e=>!!e.time?.archived,pD=(e,t)=>{let n=new Set,r=!1;for(let t of e){if(!t?.id||n.has(t.id)||fD(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)||!fD(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?aD(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;fD(t)?o.push(t):a.push(t)};return e.forEach(c),t.forEach(c),{activeSessions:a,archivedSessions:o}},mD=(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))},hD=e=>[...e].sort((e,t)=>{let n=Yf(t)-Yf(e);return n===0?t.id.localeCompare(e.id):n}),gD=e=>{let t=new Set;for(let n of e){let e=y(n);e&&t.add(e)}return t},_D=e=>{let t=gD(e);for(let e of t)ZE.set(e,(ZE.get(e)??0)+1);return t},vD=e=>{let t=new Set;for(let n of e){let e=ZE.get(n)??0;if(e<=1){ZE.delete(n),t.add(n);continue}ZE.set(n,e-1)}return t},yD=(e,t)=>{let n=e.loadingDirectories,r=e.refreshingDirectories;for(let i of t)VE.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}},bD=e=>{let t=e[e.length-1]?.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:null},xD=(e,t)=>{let n=bD(e);return{cursor:n,hasMore:e.length===kE&&n!==null&&(t==null||n<t),loadingMore:!1}},SD=(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,aD(e,r.get(e.id)));let a=e.filter(e=>{if(i.has(e.id))return!1;let t=iD(e);return!t||!n.has(t)});return hD([...i.values(),...a])},CD=(e,t)=>e.cursor===null?!e.hasMore&&(t.hasMore||t.cursor!==null):t.cursor===null||e.cursor<t.cursor,wD=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;if(e.length===0)return null;let n=hD(e),r=n[n.length-1];return r?Yf(r):null},TD=(e,t)=>Yf(e)<=t,ED=(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,aD(t,a.get(t.id)));let s=e.filter(e=>{if(o.has(e.id))return!1;let t=iD(e);if(!t||!n.has(t))return!0;if(!i.has(t))return!1;let a=r.get(t);return a!=null&&TD(e,a)});return hD([...o.values(),...s])},DD=(e,t,n)=>{let r=new Set(t.directories.map(e=>e.directory)),i=new Map;for(let n of t.directories)i.set(n.directory,mD(n.sessions,e.pendingDeletionIds));let a=[...i.values()].flat(),o=new Map;if(n)for(let t of e.activeSessions){let e=iD(t);!e||!r.has(e)||o.set(e,(o.get(e)??0)+1)}let s=new Map,c=new Set;if(n)for(let n of t.directories){let t={cursor:n.cursor,hasMore:n.hasMore},r=e.activePaginationByDirectory.get(n.directory),a=(o.get(n.directory)??0)>kE;n.hasMore&&a&&r&&CD(r,t)&&c.add(n.directory),s.set(n.directory,wD(i.get(n.directory)??[],n.cursor))}let l=n?ED(e.activeSessions,i,r,s,c):hD(AD(e.activeSessions,a)),u=new Map(e.activePaginationByDirectory),d=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);u.set(r.directory,n&&c.has(r.directory)&&i?{cursor:i.cursor,hasMore:i.hasMore,loadingMore:!1}:t),d.set(r.directory,{lastSyncedAt:r.lastSyncedAt,lastFullSyncedAt:r.lastFullSyncedAt})}let f=new Set(e.loadedDirectories);for(let e of r)f.add(e);let p=new Set(e.loadingDirectories),m=new Set(e.refreshingDirectories),h=new Set(t.sync.pendingDirectories);for(let e of h)l.some(t=>iD(t)===e)?(m.add(e),p.delete(e)):p.add(e);for(let e of[...t.sync.completedDirectories,...t.sync.failedDirectories])p.delete(e),m.delete(e);if(n)for(let e of ZE.keys())h.has(e)||VE.has(e)||(p.delete(e),m.delete(e));return{activeSessions:l,sessionsByDirectory:sD(l),reviewTransferBySessionId:MD(l),cachedDirectories:r,sessionIndexSyncByDirectory:d,activePaginationByDirectory:u,loadedDirectories:f,loadingDirectories:p,refreshingDirectories:m,hasLoaded:!0,status:e.status===`idle`||e.status===`loading`?`ready`:e.status}},OD=(e,t)=>{let n=mD(t.activeSessions,e.pendingDeletionIds),r=mD(t.fallbackActive??[],e.pendingDeletionIds),i=t.mergeOnly?hD(AD(e.activeSessions,n)):SD(e.activeSessions,n,t.directories);i=AD(i,r);let a=t.archivedSessions===void 0?void 0:mD(t.archivedSessions,e.pendingDeletionIds),o=a===void 0?e.archivedSessions:SD(e.archivedSessions,a,t.directories),s=pD(i,o);i=s.activeSessions,o=s.archivedSessions,dD(e.activeSessions,i)&&(i=e.activeSessions),dD(e.archivedSessions,o)&&(o=e.archivedSessions);let c=i===e.activeSessions?e.sessionsByDirectory:sD(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:MD(i),loadedDirectories:l,loadingDirectories:d,hasLoaded:m,status:p}},kD=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[t,...e];let r=e[n],i=aD(t,r);if(uD(r,i)||cD(r)===cD(i))return e;let a=[...e];return a[n]=i,a},AD=(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,aD(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},jD=(e,t,n,r)=>{let i=pD(t,n),a=mD(i.activeSessions,e.pendingDeletionIds),o=mD(i.archivedSessions,e.pendingDeletionIds),s=dD(e.activeSessions,a)?e.activeSessions:a,c=dD(e.archivedSessions,o)?e.archivedSessions:o,l=s===e.activeSessions?e.sessionsByDirectory:sD(s),u=s===e.activeSessions?e.reviewTransferBySessionId:MD(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}},MD=e=>{let t=new Map,n=new Set(e.map(e=>e.id));for(let r of e){let e=jw(r);if(!e)continue;let i=e===`review-to-original`?zp(r):Rp(r);!i||!n.has(i)||t.set(r.id,e)}return t},X=De((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=>jD(e,t,n,r))},resetForRuntimeSwitch:()=>{J+=1,Iw(),BE=null,VE.clear(),HE.clear(),UE.clear(),GE.forEach(e=>e.abort()),GE.clear(),qE=ME,JE=0,YE?.abort(),YE=null,XE=void 0,ZE.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(XE)return XE;if(t().hasHydratedSessionIndex)return;let n=QE(),r=u(),i=m(),a=TE(void 0,r,i);a&&Y(n)&&e(e=>({...DD(e,a,!1),hasCachedSessionIndex:!0}));let o=(async()=>{try{let t;try{t=await DE(void 0,r,i)}catch(e){if(!Y(n))return;if(a){console.warn(`[GlobalSessions] Failed to refresh runtime session index; keeping stale seed:`,e);return}throw e}if(!Y(n))return;if(!t){e(e=>e.hasHydratedSessionIndex?e:{hasHydratedSessionIndex:!0});return}e(e=>({...DD(e,t,!1),hasCachedSessionIndex:t.directories.length>0,hasHydratedSessionIndex:!0}))}catch(e){console.warn(`[GlobalSessions] Failed to hydrate runtime session index:`,e)}})();return XE=o.finally(()=>{XE===o&&(XE=void 0)}),XE},startSessionIndexStartup:async(n,r)=>{let i=QE();if(e({startupSyncProgress:{active:!0,phase:`restoring`,completed:0,total:0}}),await t().hydrateSessionIndex(),!Y(i))return{activeSessions:[],archivedSessions:[]};t().hasHydratedSessionIndex||e({hasHydratedSessionIndex:!0});let a=gD([...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?gD(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=QE();try{if(f=await Ww([...l]),!Y(i)||!Y(p))return{activeSessions:[],archivedSessions:[]};f&&EE(f)}catch(e){if(!Y(i)||!Y(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=()=>{Y(i)&&t().syncSessionsForDirectories(e,d.activeSessions)};typeof globalThis.setTimeout==`function`?globalThis.setTimeout(n,0):Promise.resolve().then(n)};if(!f){let e=RD(l,d.activeSessions,{retryFailed:!o});if(o)e.then(()=>{m()});else{if(await e,!Y(i))return{activeSessions:[],archivedSessions:[]};m()}return d}YE?.abort();let h=new AbortController;YE=h;let g=_D(l),_=()=>{if(!Y(i))return;let t=vD(g);t.size!==0&&e(e=>yD(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=IE;for(;!h.signal.aborted&&Y(i);){e(e=>({...DD(e,t,!0),startupSyncProgress:v?{active:t.sync.active,phase:t.sync.active?`syncing`:`idle`,completed:t.sync.completed,total:t.sync.total}:e.startupSyncProgress})),t.sync.active||C();let r=QE(),a=await Gw(t.revision,h.signal,{safetyTimeoutMs:t.sync.active?void 0:null});if(!Y(i)||!Y(r)||a===`aborted`)break;let o;for(;!h.signal.aborted&&Y(i);){let e=QE();try{o=await DE()}catch{if(h.signal.aborted||!Y(i)){o=void 0;break}if(await zE(n,h.signal),h.signal.aborted||!Y(i)){o=void 0;break}n=Math.min(n*RE,LE);continue}if(!Y(e)){o=void 0;break}if(!o)break;n=IE;break}if(o===void 0||!o)break;t=o}})().catch(e=>{h.signal.aborted||console.warn(`[GlobalSessions] Session index tip sync failed:`,e)}).finally(()=>{_(),C(),YE===h&&(YE=null),v&&Y(i)&&e(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:e.startupSyncProgress.completed,total:e.startupSyncProgress.total}}))}),v){if(await x,!Y(i))return{activeSessions:[],archivedSessions:[]};m()}else m();return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},loadSessions:async n=>{if(BE)return BE;e(e=>e.status===`loading`?e:{status:`loading`});let r=J,i=Promise.resolve().then(async()=>{let a=t();try{if(await Fw(),r!==J)return{activeSessions:[],archivedSessions:[]};let i=B.getSdkClient(),[o,s]=await Promise.allSettled([vp(i,{archived:!1,pageSize:OE}),vp(i,{archived:!0,pageSize:OE})]),c=AD(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===J?(e(e=>{let t=o.status===`fulfilled`&&s.status===`fulfilled`?`ready`:`error`,n=jD(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!==J)return{activeSessions:[],archivedSessions:[]};let o=AD(a.activeSessions,n),s=a.archivedSessions;return console.warn(`[GlobalSessions] Failed to load sessions, using fallback snapshot:`,i),e(e=>jD(e,o,s,`error`)),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}}finally{BE===i&&(BE=null)}});return BE=i,i},refreshSessionsForDirectories:async(n,r,i)=>{let a=gD(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=J;e(e=>{let t=AD(e.activeSessions,mD(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=>iD(e)===t)||n.add(t);return{...t===e.activeSessions?{}:{activeSessions:t,sessionsByDirectory:sD(t),reviewTransferBySessionId:MD(t)},loadingDirectories:n,refreshingDirectories:i,status:e.status===`idle`?`loading`:e.status}});let s=[...a].map(n=>{let r=VE.get(n);if(r)return r;let a=rD(async()=>{let r=new AbortController;GE.add(r);try{if(o!==J||(await Fw(),o!==J))return!1;let a=await vp(B.getSdkClient(),{directory:n,archived:!1,roots:!0,...i?.incrementalStart===void 0?{}:{start:i.incrementalStart},pageSize:kE,maxItems:kE,timeoutMs:AE,retryAttempts:2,signal:r.signal});if(o!==J)return!1;if(e(e=>{let t=OD(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,xD(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)??xD(a);try{await Jw({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 tD(),!0}catch(t){return eD(t),o===J&&(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{GE.delete(r)}});return VE.set(n,a),a.finally(()=>{VE.get(n)===a&&VE.delete(n)}),a}),c=await Promise.all(s);return o===J?([...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=QE(),a=gD(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=null,s=QE();try{if(o=await Ww([...a]),!Y(i)||!Y(s))return{activeSessions:[],archivedSessions:[]};o&&EE(o)}catch(e){if(!Y(i)||!Y(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;GE.add(c);let l=_D(a),u=()=>{if(!Y(i))return;let t=vD(l);t.size!==0&&e(e=>yD(e,t))};try{let t=o;for(;!c.signal.aborted&&Y(i)&&(e(e=>DD(e,t,!0)),t.sync.active);){let e=QE(),n=await Gw(t.revision,c.signal);if(!Y(i)||!Y(e)||n===`aborted`)break;let r=QE(),a;try{a=await DE()}catch{break}if(!Y(i)||!Y(r)||!a)break;t=a}}catch(e){!c.signal.aborted&&Y(i)&&console.warn(`[GlobalSessions] Session index sync failed:`,e)}finally{u(),GE.delete(c)}return Y(i)?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},loadMoreSessionsForDirectory:async n=>{let r=y(n);if(!r){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=UE.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=J;e(e=>{let t=new Map(e.activePaginationByDirectory);return t.set(r,{...a,loadingMore:!0}),{activePaginationByDirectory:t}});let s=rD(async()=>{let t=new AbortController;GE.add(t);try{if(await Fw(),o!==J)return!1;let n=await vp(B.getSdkClient(),{directory:r,archived:!1,roots:!0,cursor:a.cursor??void 0,pageSize:kE,maxItems:kE,timeoutMs:AE,retryAttempts:2,signal:t.signal});return o===J&&(e(e=>{let t=e.activeSessions.filter(e=>iD(e)===r),i=new Map(t.map(e=>[e.id,e]));mD(n,e.pendingDeletionIds).forEach(e=>{i.set(e.id,aD(e,i.get(e.id)))});let o=hD([...i.values()]),s=SD(e.activeSessions,o,new Set([r])),c=new Map(e.activePaginationByDirectory);return c.set(r,xD(n,a.cursor)),{activeSessions:dD(e.activeSessions,s)?e.activeSessions:s,sessionsByDirectory:sD(s),reviewTransferBySessionId:MD(s),activePaginationByDirectory:c}}),tD(),!0)}catch(t){return eD(t),o===J&&(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{GE.delete(t)}});UE.set(r,s);try{await s}finally{UE.get(r)===s&&UE.delete(r)}return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},refreshArchivedSessionsForDirectories:async n=>{let r=gD(n);if(r.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=J;e(e=>{let t=new Set(e.archivedLoadingDirectories);return r.forEach(e=>t.add(e)),{archivedLoadingDirectories:t}});let a=[...r].map(t=>{let n=HE.get(t);if(n)return n;let r=rD(async()=>{let n=new AbortController;GE.add(n);try{if(i!==J||(await Fw(),i!==J))return!1;let r=await vp(B.getSdkClient(),{directory:t,archived:!0,roots:!0,pageSize:kE,maxItems:kE,timeoutMs:AE,retryAttempts:2,signal:n.signal});return i===J&&(e(e=>{let n=SD(e.archivedSessions,mD(r,e.pendingDeletionIds),new Set([t])),i=pD(e.activeSessions,n),a=dD(e.activeSessions,i.activeSessions)?e.activeSessions:i.activeSessions,o=dD(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:sD(a),reviewTransferBySessionId:a===e.activeSessions?e.reviewTransferBySessionId:MD(a),archivedLoadedDirectories:s,archivedLoadingDirectories:c}}),!0)}catch(n){return i===J&&(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{GE.delete(n)}});return HE.set(t,r),r.finally(()=>{HE.get(t)===r&&HE.delete(t)}),r});return await Promise.all(a),i===J?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},upsertSession:n=>{if(!pp(n)){t().removeSessions([n.id]);return}e(e=>{if(e.pendingDeletionIds.has(n.id))return e;let t=aD(n,e.activeSessions.find(e=>e.id===n.id)??e.archivedSessions.find(e=>e.id===n.id)??null),r=fD(t),i=r?e.activeSessions.filter(e=>e.id!==n.id):kD(e.activeSessions,t),a=r?kD(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:sD(i),reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:MD(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:sD(t),reviewTransferBySessionId:MD(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:sD(i),reviewTransferBySessionId:MD(i)}})}})),ND=async e=>{let t=X.getState();return t.hasLoadedFullCatalog&&t.status!==`error`?{activeSessions:t.activeSessions,archivedSessions:t.archivedSessions}:t.loadSessions(e)},PD=async()=>{await X.getState().hydrateSessionIndex()},FD=async(e,t)=>X.getState().startSessionIndexStartup(e,t),ID=async(e,t)=>X.getState().refreshSessionsForDirectories(e,t),LD=async(e,t)=>X.getState().syncSessionsForDirectories(e,t),RD=async(e,t,n)=>{let r=gD(e),i=J;if(r.size===0){X.setState({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let e=X.getState();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}X.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 X.getState().refreshSessionsForDirectories([e],t,{persist:!1,incrementalStart:n?.incrementalStartByDirectory?.get(e),onDirectoryResult:(e,t)=>{r=t}}),i===J&&r&&!a.has(e)&&(a.add(e),X.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,completed:a.size}})))})),o=new Set([...r].filter(e=>!a.has(e))),o.size>0&&n?.retryFailed===!0&&i===J&&await new Promise(e=>setTimeout(e,FE));while(o.size>0&&n?.retryFailed===!0&&i===J);if(i===J){X.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,phase:`committing`}}));let e=X.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 Yw(t);let e=Date.now();X.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===J&&X.setState(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:a.size,total:e.startupSyncProgress.total}}))}let s=X.getState();return{activeSessions:s.activeSessions,archivedSessions:s.archivedSessions}},zD=async e=>X.getState().refreshArchivedSessionsForDirectories(e),BD=async e=>X.getState().loadMoreSessionsForDirectory(e),VD=(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])},HD=`oc.sessions.folders`,UD=`oc.sessions.folderCollapse`,WD=`oc.sessions.order`,GD=`oc.sessions.orderActivity`,KD=`/api/session-folders`,qD=250,JD=`__archived__:`,YD=S(qe()),XD=null,ZD=!1,QD=!1,$D=0,eO,tO,nO=null,rO=null,iO=()=>typeof window>`u`?!1:b()?!0:window.__VSCODE_CONFIG__!==void 0,aO=(e,t)=>{if(typeof window>`u`||iO())return;XD&&clearTimeout(XD);let n=JSON.parse(JSON.stringify(e)),r=Array.from(t);XD=setTimeout(()=>{XD=null,_(KD,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({version:1,foldersMap:n,collapsedFolderIds:r,updatedAt:Date.now()})}).catch(()=>{})},qD)},oO=()=>{try{let e=YD.getItem(HD);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{}}},sO=()=>{try{let e=YD.getItem(UD);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}},cO=()=>{try{let e=YD.getItem(WD);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{}}},lO=()=>{try{let e=YD.getItem(GD);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{}}},uO=(e,t)=>{try{YD.setItem(WD,JSON.stringify(e)),YD.setItem(GD,JSON.stringify(t))}catch{}},dO=e=>{nO=e,clearTimeout(eO),eO=setTimeout(()=>{try{YD.setItem(HD,JSON.stringify(e)),nO=null}catch{}},300)},fO=e=>{rO=e,clearTimeout(tO),tO=setTimeout(()=>{try{YD.setItem(UD,JSON.stringify(Array.from(e))),rO=null}catch{}},300)};typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{if(nO!==null){clearTimeout(eO);try{YD.setItem(HD,JSON.stringify(nO))}catch{}nO=null}if(rO!==null){clearTimeout(tO);try{YD.setItem(UD,JSON.stringify(Array.from(rO)))}catch{}rO=null}});var pO=(e,t)=>{dO(e),fO(t),aO(e,t)},mO=()=>fe(),hO=(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},gO=(e,t)=>e.startsWith(JD)?t.filter(e=>e.sessionIds.length>0):t,_O=De()(Ae((e,t)=>({foldersMap:oO(),collapsedFolderIds:sO(),sessionOrderByScope:cO(),sessionOrderActivityByScope:lO(),getFoldersForScope:e=>e?t().foldersMap[e]??[]:[],createFolder:(n,r,i)=>{let a=r.trim()||`New folder`,o={id:mO(),name:a,sessionIds:[],createdAt:Date.now(),parentId:i??null},s=t().foldersMap,c=s[n]??[],l={...s,[n]:[...c,o]};return e({foldersMap:l}),pO(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}),pO(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}),pO(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}),pO(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=hO(o,l,t().collapsedFolderIds);e(d?{foldersMap:u,collapsedFolderIds:d}:{foldersMap:u}),pO(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=hO(o,u,t().collapsedFolderIds);e(f?{foldersMap:d,collapsedFolderIds:f}:{foldersMap:d}),pO(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=hO(a,c,t().collapsedFolderIds);e(u?{foldersMap:l,collapsedFolderIds:u}:{foldersMap:l}),pO(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=hO(a,s,t().collapsedFolderIds);e(l?{foldersMap:c,collapsedFolderIds:l}:{foldersMap:c}),pO(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}),pO(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=gO(n,l);u.length!==l.length&&(c=!0);let d=o.filter(e=>r.has(e)),f=d.length!==o.length,p=Object.keys(s).some(e=>!r.has(e));if(!c&&!f&&!p)return;let m={...i,[n]:u},h=hO(a??[],u,t().collapsedFolderIds),g=f?{...t().sessionOrderByScope,[n]:d}:t().sessionOrderByScope,_=f||p?Object.fromEntries(Object.entries(t().sessionOrderActivityByScope).filter(([e])=>e!==n)):t().sessionOrderActivityByScope;e(h?{foldersMap:m,collapsedFolderIds:h,sessionOrderByScope:g,sessionOrderActivityByScope:_}:{foldersMap:m,sessionOrderByScope:g,sessionOrderActivityByScope:_}),pO(m,h??t().collapsedFolderIds),uO(g,_)},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},reorderSessions:(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],f=VD(o,d),p=f?[...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=f?u.filter(e=>!_.has(e)):[],y={...t().sessionOrderByScope,[n]:[...g,...v]},b={...t().sessionOrderActivityByScope,[n]:{...o}};e({sessionOrderByScope:y,sessionOrderActivityByScope:b}),uO(y,b)}}),{name:`session-folders-store`})),vO=async()=>{if(ZD||QD||typeof window>`u`)return;if(iO()){ZD=!0;return}QD=!0;let e=$D;try{let t=await _(KD).catch(()=>null);if(e!==$D||!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!==$D||!(Object.keys(r).length>0||i.size>0))return;_O.setState({foldersMap:r,collapsedFolderIds:i}),dO(r),fO(i)}catch{}finally{e===$D&&(QD=!1,ZD=!0)}},yO=()=>{typeof window>`u`||vO()},bO=()=>{$D+=1,ZD=!1,QD=!1,nO=null,rO=null,eO&&=(clearTimeout(eO),void 0),tO&&=(clearTimeout(tO),void 0),_O.setState({foldersMap:oO(),collapsedFolderIds:sO(),sessionOrderByScope:cO(),sessionOrderActivityByScope:lO()}),vO()};typeof window<`u`&&s(e=>{h(e)&&bO()}),yO();var xO=new Map,SO=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},CO=()=>`worktree_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,wO=()=>{let e=CO();return xO.set(e,SO()),e},TO=(e,t)=>{let n=xO.get(e);n&&(xO.delete(e),n.resolve(t))},EO=(e,t)=>{let n=xO.get(e);n&&(xO.delete(e),n.reject(t))},DO=e=>{let t=xO.get(e);return t?t.promise:Promise.reject(Error(`Pending worktree request not found`))},OO=3e5,kO=5e3,AO=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``)||e,jO=new Map,MO=new Map,NO=new Map,PO=new Map,FO=new Set,IO=null,LO=!1,RO=e=>AO(e),zO=e=>PO.get(e)??0,BO=e=>{let t=zO(e)+1;return PO.set(e,t),t},VO=async e=>{let t=we()?.git;return t?.worktree?.bootstrapStatus?t.worktree.bootstrapStatus(e):t?.getGitWorktreeBootstrapStatus?t.getGitWorktreeBootstrapStatus(e):Re(e)},HO=(e,t)=>{for(let n of FO)try{n(e,t)}catch{}},UO=e=>(FO.add(e),()=>{FO.delete(e)}),WO=(e,t)=>{let n=RO(e);if(!n)return!1;let r=jO.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:(jO.set(n,t),t.status!==`pending`&&MO.delete(n),HO(n,t),!0)},GO=(e,t)=>{let n=RO(e);if(!n)return!1;let r=t.status===`pending`||t.status===`ready`||t.status===`failed`?t.status:null;return r?WO(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},KO=()=>{IO||=Jt(e=>{e.type===`worktree-bootstrap-status`&&GO(e.directory,e)}),!(typeof window>`u`||LO)&&(LO=!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&&GO(r,{status:n.status,error:typeof n.error==`string`?n.error:null,updatedAt:typeof n.updatedAt==`number`?n.updatedAt:Date.now()})})))},qO=e=>{let t=RO(e);t&&(KO(),WO(t,{status:`pending`,error:null,updatedAt:Date.now()}))},JO=e=>{let t=RO(e);if(!t)return;BO(t);let n=NO.get(t);n&&(n.cancelled=!0,n.disposeSettlement?.(),n.disposeSettlement=null,NO.delete(t));let r=MO.get(t);r&&(r.dispose(),MO.delete(t)),jO.delete(t)},YO=e=>{let t=RO(e);return t?jO.get(t)??null:null},XO=(e,t)=>{let n=mt.getState().dictionary;return ht(n,e,t)},ZO=e=>({status:`failed`,error:e,updatedAt:Date.now()}),QO=(e,t,n)=>{let r=ZO(t);return WO(e,r),n?.(r),r},$O=async(e,t=()=>!0)=>{try{let n=await VO(e);return t()?WO(e,n)?n:YO(e):null}catch{return null}},ek=(e,t,n=kO)=>{let r=RO(e),i=zO(r);KO();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,$O(e,()=>!a&&zO(r)===i).finally(()=>{c=!1}))},Number.isFinite(n)?Math.max(1,n):kO))},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=UO((e,t)=>{RO(e)===r&&d(t)}),o=setTimeout(()=>{s(()=>{let t=QO(e,XO(`worktree.bootstrap.toast.timeoutDescription`));i(Error(t.error||`Timed out waiting for worktree bootstrap`))})},Math.max(0,t)),d(jO.get(r))});return h.catch(()=>void 0),{promise:h,startCompensation:p,dispose:()=>m(Error(`Worktree bootstrap wait cancelled`))}},tk=async(e,t,n,r,i,a)=>{let o=RO(e),s=ek(e,n,r);t.disposeSettlement=s.dispose;let c=await $O(e,()=>!t.cancelled&&NO.get(o)===t&&zO(o)===t.epoch);if(t.cancelled||NO.get(o)!==t){s.dispose();return}if(c?.status===`ready`){s.dispose(),a?.(c);return}if(c?.status===`failed`){s.dispose(),i?.(c),iE.error(XO(`worktree.bootstrap.toast.failed`),{description:c.error||XO(`worktree.bootstrap.toast.failedDescription`)});return}s.startCompensation();try{let e=await s.promise;if(t.cancelled||NO.get(o)!==t)return;a?.(e)}catch(n){if(t.cancelled||NO.get(o)!==t)return;let r=YO(e);if(r?.status===`failed`){i?.(r),iE.error(XO(`worktree.bootstrap.toast.failed`),{description:r.error||XO(`worktree.bootstrap.toast.failedDescription`)});return}let a=QO(e,n instanceof Error?n.message:String(n),i);iE.error(XO(`worktree.bootstrap.toast.failed`),{description:a.error||XO(`worktree.bootstrap.toast.failedDescription`)})}},nk=(e,t)=>{let n=RO(e);if(!n||jO.get(n)?.status!==`pending`||NO.has(n))return;let r={cancelled:!1,epoch:zO(n),promise:Promise.resolve(),disposeSettlement:null};r.promise=tk(e,r,t?.timeoutMs??OO,t?.pollIntervalMs??kO,t?.onFailed,t?.onReady).finally(()=>{NO.get(n)===r&&NO.delete(n)}),NO.set(n,r)},rk=async(e,t=OO)=>{let n=RO(e);if(!n)return;let r=jO.get(n);if(!r||r.status===`ready`)return;if(r.status===`failed`)throw Error(r.error||`Worktree bootstrap failed`);let i=MO.get(n);if(i)return i.promise;let a=()=>{},o=zO(n),s=(async()=>{let r=ek(e,t,kO);a=r.dispose;let i=await $O(e,()=>zO(n)===o);if(zO(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(()=>{MO.get(n)?.promise===s&&MO.delete(n)});return MO.set(n,{promise:s,dispose:()=>a()}),s},ik=`openchamber.json`,ak=`.openchamber`,ok=[`.config`,`openchamber`,`projects`];function sk(){let e=we();return e?.files?e.files:null}var ck=80,lk=4e3,uk=2e3,dk=300,fk=new Set([`macos`,`linux`,`windows`]),pk=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)},mk=(e,t)=>{let n=pk(e),r=t.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/\/+$/,``);return!n||n===`/`?`/${r}`:`${n}/${r}`},hk=e=>mk(mk(e,ak),ik),gk=()=>{let e=`/api`;return e.startsWith(`/`),e},_k=async(e,t)=>{try{let n=await _(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}}},vk=async e=>{let t=sk();if(t?.createDirectory)try{if((await t.createDirectory(e))?.success)return!0}catch{}return!!(await _k(`${gk()}/fs/mkdir`,{path:e})).ok},yk=async e=>{let t=sk();if(t?.readFile)try{let n=await t.readFile(e);return typeof n?.content==`string`?n.content:``}catch{return null}try{let t=await _(`${gk()}/fs/read?path=${encodeURIComponent(e)}`,{cache:`no-store`});return t.ok?await t.text():null}catch{return null}},bk=async(e,t)=>{let n=sk();if(n?.writeFile)try{if((await n.writeFile(e,t))?.success)return!0}catch{}return!!(await _k(`${gk()}/fs/write`,{path:e,content:t})).ok},xk=async()=>{try{let e=await _(`${gk()}/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 pk(n)}catch{}if(!b()){let e=await Ee().catch(()=>null);if(e&&e.trim().length>0)return pk(e)}return null},Sk=async()=>{let e=await xk();return e?ok.reduce((e,t)=>mk(e,t),e):null},Ck=e=>{let t=typeof e?.path==`string`?e.path.trim():``,n=t?pk(t):``;return n&&be(n)||null},wk=async e=>{let t=await Sk();if(!t)return null;let n=Ck(e);return n?mk(t,`${n}.json`):null},Tk=(e,t)=>e.length<=t?e:e.slice(0,t),Ek=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();!fk.has(e)||n.has(e)||(n.add(e),t.push(e))}return t},Dk=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=Tk(typeof e.name==`string`?e.name.trim():``,ck),o=Tk(typeof e.command==`string`?e.command.trim():``,lk);if(!i||!a||!o||n.has(i))continue;n.add(i);let s=typeof e.icon==`string`?e.icon.trim():``,c=Ek(e.platforms),l=e.autoOpenUrl===!0,u=Tk(typeof e.openUrl==`string`?e.openUrl.trim():``,uk),d=Tk(typeof e.desktopOpenSshForward==`string`?e.desktopOpenSshForward.trim():``,dk);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},Ok=e=>{let t=Dk(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 kk(e){let t=typeof e?.path==`string`?e.path.trim():``;if(!t)return null;let n=await wk(e),r=async e=>{let t=await yk(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(hk(t)));if(!a)return null;try{await Ak(e,a)&&await Vk(t)}catch{}return a}async function Ak(e,t){let n=typeof e?.path==`string`?e.path.trim():``;if(!n)return!1;let r=await Sk(),i=await wk(e);if(!r||!i)return!1;try{if(!await vk(r))return!1;let e=await yk(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 bk(i,JSON.stringify({...a,...t,...o,projectPath:pk(n)},null,2))}catch(e){return console.error(`Failed to write openchamber config:`,e),!1}}async function jk(e,t){return Ak(e,{...await kk(e)||{},...t})}async function Mk(e){return(await kk(e))?.[`setup-worktree`]??[]}async function Nk(e,t){return jk(e,{"setup-worktree":t.filter(e=>e.trim().length>0)})}async function Pk(e){return(await kk(e))?.[`setup-worktree-wait`]===!0}async function Fk(e,t){return jk(e,{"setup-worktree-wait":t})}async function Ik(e){let t=await kk(e);return Se(t?.draftStarters)}async function Lk(e,t){return jk(e,{draftStarters:Se(t)})}async function Rk(e){let t=await kk(e);return Ok({actions:t?.projectActions,primaryActionId:t?.projectActionsPrimaryId})}async function zk(e,t){let n=Ok({actions:t.actions,primaryActionId:t.primaryActionId});return jk(e,{projectActions:n.actions,projectActionsPrimaryId:n.primaryActionId??void 0})}function Bk(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 Vk(e){let t=hk(e),n=sk();if(n?.delete)try{await n.delete(t);return}catch{}try{await _k(`${gk()}/fs/delete`,{path:t})}catch{}}var Hk=e=>typeof e==`number`&&Number.isFinite(e)?e:0,Uk=e=>Hk(e.input)+Hk(e.output)+Hk(e.reasoning)+Hk(e.cache?.read)+Hk(e.cache?.write),Wk=e=>e?.type===`compaction`,Gk=e=>!!e&&e.some(Wk),Kk=(e,t)=>{for(let n=e.length-1;n>=0;--n){let r=e[n];if(r.role!==`assistant`){if(r.id&&Gk(t(r.id)))return{compacted:!0};continue}let i=r.tokens;if(!i)continue;let a=Uk(i);if(a>0)return{messageId:r.id??``,totalTokens:a,tokens:i}}return null},qk=500,Jk=2592e6;function Yk(e){let t=Date.now()-Jk,n=e.filter(e=>e.time>=t);return n.length<=qk?n:n.slice(n.length-qk)}function Xk(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 Zk=De((e,t)=>({list:[],index:{session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}},append:n=>{let r=t().list,i=Yk([...r,n]);e({list:i,index:Xk(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:Xk(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:Xk(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 Qk(e){Zk.getState().append(e)}function $k(e){Zk.getState().markSessionViewed(e)}function eA(e){let t=(0,H.c)(2),n;return t[0]===e?n=t[1]:(n=t=>t.index.session.unseenCount[e]??0,t[0]=e,t[1]=n),Zk(n)}var tA=/^(.*)\.(\d+)$/,nA=[`session.next.step.`,`session.next.text.`,`session.next.reasoning.`,`session.next.tool.`,`session.next.shell.`,`session.next.compaction.`],rA=new Set([`session.next.step.ended`,`session.next.step.failed`]);function iA(e){return tA.exec(e)?.[1]??e}function aA(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function oA(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 sA(e){let t=aA(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 cA(e){let t=aA(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 lA(e){let t=aA(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`&&!cA(e)?{directory:t.directory}:{}}}return e}function uA(e,t){if(e===`session.status`){let e=oA(t),n=t.status;if(e&&n&&typeof n==`object`)return{sessionID:e,status:n}}return t}function dA(e,t){let n=oA(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`}}:rA.has(e)?{domainActivityHint:{sessionID:n,kind:`terminal`}}:nA.some(t=>e.startsWith(t))||e.startsWith(`session.next.`)?{domainActivityHint:{sessionID:n,kind:`activity`}}:{}:{}}function fA(e){let t=aA(lA(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(sA(t))return{action:`drop`,reason:`sync-duplicate`};let r=iA(n),i=aA(t.data),a=aA(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:cA(t)}}:{action:`drop`,reason:`invalid`};let s=uA(r,o),c=cA(t)??cA(o)??(()=>{let e=aA(s.info);return typeof e?.directory==`string`?e.directory:void 0})(),l=dA(r,s);return{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:s,locationDirectory:c,...l}}}function pA(e){return{...e.id?{id:e.id}:{},type:e.type,properties:e.properties}}var mA=33,hA=200,gA=1e4,_A=8,vA=250,yA=3e4,bA=6e4,xA=2,SA=2e3,CA=8e3,wA=250,TA=5e3,EA=6e4,DA=8,OA=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},kA=e=>{if(!e||typeof e!=`object`)return{status:`unusable`};let t=OA(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=fA(e);return n.action===`drop`?n.reason===`sync-duplicate`?{status:`declined`}:{status:`unusable`}:{status:`event`,event:pA(n.event),normalized:n.event}};function AA(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 jA(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 MA(e){let t=`/api`;try{let e=B;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 NA(e){let t=MA(e);return ze(t)}function PA(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=yA,reconnectDelayMs:y=vA,wsReadyTimeoutMs:b}=e,x=b??(a()?CA:SA),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)},j=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}`}},ee=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(),bs.pipeline.flush(r.length),o?.();try{for(let t of r)n(e,t)}finally{s?.()}t.buffer.length=0},te=()=>{for(let e of k.keys())ee(e)},ne=()=>{for(let e of k.values())e.timer&&=(clearTimeout(e.timer),void 0),e.queue.length=0,e.buffer.length=0,e.coalesced.clear()},re=e=>{let t=A(e);if(t.timer)return;let n=Date.now()-t.last;t.timer=setTimeout(()=>ee(e),Math.max(0,(Date.now()<I?hA:mA)-n))},M=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),ce=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})}),le=e=>{if(e<=0)return 0;if(ie())return EA;let t=ae()?EA:TA,n=Math.min(e-1,DA);return Math.min(t,wA*2**n)},ue=!1,P,de=Date.now(),fe,pe=_===`ws`?`ws`:`sse`,F=null,me=0,I=0,he=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}))},L=e=>{C||(C=!0,he(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:pe,isReconnect:t})},_e=()=>{C=!1,me=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=j(r);if(o){let e=a.coalesced.get(o);if(e!==void 0){if(r.type===`message.part.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;bs.pipeline.coalesced(r.type,o);return}a.coalesced.set(o,a.queue.length)}a.queue.push(r),re(i)},ye=(e,t)=>{let n=jA(t);if(!n)return`unusable`;let r=kA(n);if(r.status!==`event`)return r.status===`declined`?`declined`:`unusable`;let i=AA(e,n,r.event,r.normalized.locationDirectory);return ve(i,r.event,r.normalized),`ingested`},be=()=>{de=Date.now(),fe&&clearTimeout(fe),fe=setTimeout(()=>{F=`${pe}_heartbeat_timeout`,P?.abort()},v)},R=()=>{be(),m?.()},xe=()=>{fe&&=(clearTimeout(fe),void 0)},Se=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)}},Ce=async e=>{be();let n=await Se(t.global.event({signal:e,...w&&w.length>0?{headers:{"Last-Event-ID":w}}:{},onSseEvent:e=>{R(),typeof e.id==`string`&&e.id.length>0&&(w=e.id)},onSseError:e=>{N(e)||ue||(ue=!0,console.error(`[event-pipeline] SSE stream error`,e))}}),e);_e();let r=Date.now();R();for await(let e of n.stream)R(),ue=!1,ye(e,e.payload??e),!(Date.now()-r<_A)&&(r=Date.now(),await M(0));if(!e.aborted){let e=Error(`Global event SSE stream closed`);throw e.reason=`sse_stream_closed`,e}},we=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()+bA,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=NA(w),c=(e,t=!1)=>{(t||!a)&&_===`auto`&&(T=Date.now()+bA,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()+bA);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`){R(),a=!0,o=Date.now(),l&&=(clearTimeout(l),void 0),ue=!1,_e();return}if(t.type===`error`){R();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`){R(),I=Date.now()+gA;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>=xA&&(w=n,E=void 0,D=0)),m(`ws_invalid_frame:event_payload`);return}E=void 0,D=0,R(),ue=!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)}})},Te=()=>typeof WebSocket==`function`?_===`ws`?`ws`:_===`sse`||T>Date.now()?`sse`:`ws`:`sse`;(async()=>{for(;!S.signal.aborted;){P=new AbortController,de=Date.now(),F=null;let e=y,t=Te();pe=t;let n=()=>{F=`pipeline_stopped`,P?.abort()};S.signal.addEventListener(`abort`,n);try{t===`ws`?await we(P.signal):await Ce(P.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)){me+=1,ue||(ue=!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`;L(a);let o=oe(n);e=o!==void 0&&se(o)?EA:le(me)}}finally{S.signal.removeEventListener(`abort`,n),P=void 0,xe()}if(S.signal.aborted)return;F&&F!==`pipeline_stopped`&&(L(F),me+=1,e=y>0?le(me):0,F=null),e>0&&await ce(e)}})().finally(te);let z=()=>{if(!(typeof document>`u`)){if(document.visibilityState===`hidden`){he(`visibility_hidden`);return}document.visibilityState===`visible`&&(Date.now()-de<v||P?.abort())}},Ee=e=>{e.persisted&&(he(`pageshow_persisted`),P?.abort())},De=()=>{he(`system_resume`),P&&(F=`${pe}_system_resume`,P.abort())},Oe=()=>{C&&(he(`online`),P?.abort())},ke=()=>{P?.abort()};return typeof document<`u`&&(document.addEventListener(`visibilitychange`,z),window.addEventListener(`pageshow`,Ee)),globalThis.window!==void 0&&(globalThis.window.addEventListener(`openchamber:system-resume`,De),globalThis.window.addEventListener(`online`,Oe),globalThis.window.addEventListener(`offline`,ke)),{cleanup:()=>{typeof document<`u`&&(document.removeEventListener(`visibilitychange`,z),window.removeEventListener(`pageshow`,Ee)),globalThis.window!==void 0&&(globalThis.window.removeEventListener(`openchamber:system-resume`,De),globalThis.window.removeEventListener(`online`,Oe),globalThis.window.removeEventListener(`offline`,ke)),S.abort(),xe(),te()},reconnect:(e=`manual`)=>{e===`reasoning_projection`&&ne(),F=`${pe}_${e}`,P?.abort()}}}function FA(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 IA(e,t){let n=new Set(Array.from(t).filter(Boolean));if(n.size!==0)for(let t of n)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_error_at&&delete e.session_error_at[t],delete e.permission[t],delete e.question[t]}function LA(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 RA=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},zA=(e,t)=>e?RA(t)<RA(e):!1;function BA(e,t,n){return e.session_error_at?.[t]!==n&&(e.session_error_at={...e.session_error_at,[t]:n},!0)}function VA(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 HA(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 UA(e){return e.type===`global.disposed`||e.type===`server.connected`?{type:`refresh`}:e.type===`project.updated`?{type:`project`,project:e.properties}:null}function WA(e,t){let n=[...e.projects],r=us.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 GA(e,t,n){t&&(n?.(t,void 0),IA(e,[t]))}var KA=e=>e.title===`smartfetch-secondary`;function qA(e,t,n,r){return n.found?(e.session.splice(n.index,1),KA(t)&&GA(e,t.id,r),t.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0):!1}function JA(e,t,n){switch(t.type){case`server.instance.disposed`:return n?.onRefresh?.(``),!1;case`session.created`:{let r=op(t.properties.info),i=e.session,a=us.search(i,r.id,e=>e.id);return pp(r)?a.found&&zA(i[a.index],r)?!1:(a.found?i[a.index]=r:(i.splice(a.index,0,r),YA(e),r.parentID||(e.sessionTotal+=1)),!0):qA(e,r,a,n?.onSetSessionTodo)}case`session.updated`:{let r=op(t.properties.info),i=e.session,a=us.search(i,r.id,e=>e.id);return a.found&&zA(i[a.index],r)?!1:!pp(r)||r.time.archived?qA(e,r,a,n?.onSetSessionTodo):(a.found?i[a.index]=r:(i.splice(a.index,0,r),YA(e)),!0)}case`session.deleted`:{let r=t.properties.info,i=e.session,a=us.search(i,r.id,e=>e.id);return a.found&&i.splice(a.index,1),GA(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]=ip(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;return(r.status.type===`busy`||r.status.type===`retry`)&&(i=VA(e,r.sessionID)),n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),HA(e.session_status[r.sessionID],r.status)?!!n?.now||i:(e.session_status[r.sessionID]=r.status,!0)}case`session.idle`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),HA(e.session_status[r.sessionID],i)?!!n?.now:(e.session_status[r.sessionID]=i,!0)}case`session.error`:{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);return HA(e.session_status[r.sessionID],i)?a!==void 0||o:(e.session_status[r.sessionID]=i,!0)}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=t.properties;return e.vcs?.branch!==n.branch&&(e.vcs={branch:n.branch},!0)}case`permission.asked`:{let n=t.properties,r=[...e.permission[n.sessionID]??[]],i=us.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=us.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=t.properties,r=[...e.question[n.sessionID]??[]],i=us.search(r,n.id,e=>e.id);return i.found?r[i.index]=n:r.splice(i.index,0,n),e.question[n.sessionID]=r,!0}case`question.replied`:case`question.rejected`:{let n=t.properties,r=e.question[n.sessionID];if(!r)return!1;let i=us.search(r,n.requestID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),e.question[n.sessionID]=t,!0}return!1}case`lsp.updated`:return n?.onLoadLsp?.(),!1;default:return!1}}function YA(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 XA=De()(e=>({...ll,actions:{set:t=>e(t),reset:()=>e(ll)}}));function ZA(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 QA(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 $A(e){return!(!e.directory||!e.hasStore||e.pinned||e.booting||e.loadingSessions||e.hasPendingBlockingRequests)}function ej(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 tj(e){let t=e.slice(0,12).replace(/[^a-zA-Z0-9]/g,`_`);return`oc.dir.${ej(m().trim()||`default`)}.${t}.${ej(e)}`}function nj(e,t){return`${tj(e)}.${t}`}function rj(e,t){try{let n=localStorage.getItem(nj(e,t));return n?JSON.parse(n):void 0}catch{return}}function ij(e,t,n){try{let r=nj(e,t);n===void 0?localStorage.removeItem(r):localStorage.setItem(r,JSON.stringify(n))}catch{}}function aj(e){return{vcs:rj(e,`vcs`),projectMeta:rj(e,`projectMeta`),icon:rj(e,`icon`)}}function oj(e){try{localStorage.removeItem(`${tj(e)}.sessions`)}catch{}}function sj(e,t){ij(e,`vcs`,t)}function cj(e,t){ij(e,`projectMeta`,t)}function lj(e,t){ij(e,`icon`,t)}function uj(e){let t=aj(e);oj(e);let n=De()(e=>({...cl,vcs:t.vcs??cl.vcs,projectMeta:t.projectMeta??cl.projectMeta,icon:t.icon??cl.icon,patch:t=>e(t),replace:t=>e(t)}));return n.subscribe((t,n)=>{t.vcs!==n.vcs&&sj(e,t.vcs),t.projectMeta!==n.projectMeta&&cj(e,t.projectMeta),t.icon!==n.icon&&lj(e,t.icon)}),n}var dj=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=M(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=M(e);t&&(this.pins.set(t,(this.pins.get(t)??0)+1),this.mark(t))}unpin(e){let t=M(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(M(e))??0)>0}ensureChild(e,t){let n=M(e);if(!n)throw Error(`No directory provided to ensureChild`);let r=this.children.get(n);return r||(r=uj(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(M(e))}captureChild(e,t){let n=M(e),r=this.ensureChild(n,t);return{directory:n,generation:this.generations.get(n)??0,store:r}}isCurrentChildCapture(e){let t=M(e.directory);return this.children.get(t)===e.store&&this.generations.get(t)===e.generation}disposeDirectory(e){let t=M(e);if(!$A({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=QA({stores:t,state:this.lifecycle,pins:new Set(t.filter(e=>this.pinned(e))),max:30,ttl:sl,graceMs:ol,now:Date.now(),hasPendingBlockingRequests:e=>this.hasPendingBlockingRequestsForDirectory(e)}).filter(t=>t!==e);for(let e of n)this.disposeDirectory(e)}hasPendingBlockingRequestsForDirectory(e){return ZA(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()}}},fj=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},pj=e=>{let t=e.directory??``,n=e.parentID??``;return[e.id,e.title??``,e.time?.created??0,e.time?.archived??0,t,n,e.share?.url??``].join(`|`)},mj=e=>{switch(e?.type){case`retry`:return 4;case`busy`:return 3;case`idle`:return 1;default:return 0}},hj=e=>{let t=e?.message;return typeof t==`string`?t:null},gj=(e,t)=>{let n=e?.[t];return typeof n==`number`?n:null},_j=(e,t)=>e?.type===t?.type&&hj(e)===hj(t)&&gj(e,`attempt`)===gj(t,`attempt`)&&gj(e,`next`)===gj(t,`next`),vj=(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?fj(r):-1}},yj=(e,t)=>e?t.sessionUpdatedAt===e.sessionUpdatedAt?mj(t.status)>=mj(e.status):t.sessionUpdatedAt>e.sessionUpdatedAt:!0,bj=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(pj(e[n])!==pj(t[n]))return!1;return!0},xj=(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(!_j(n,i))return!1}return!0};function Sj(e,t){let n=new Map;for(let r of e)for(let e of r.session){if(!e?.id||t?.has(e.id)||e.parentID||!pp(e))continue;let r=n.get(e.id);(!r||fj(e)>=fj(r))&&n.set(e.id,e)}return Array.from(n.values()).sort((e,t)=>fj(t)-fj(e))}function Cj(e){let t=new Map;for(let n of e)for(let e of Object.keys(n.session_status??{})){let r=vj(n,e);r&&yj(t.get(e),r)&&t.set(e,r)}let n={};for(let[e,r]of t)n[e]=r.status;return n}function wj(e,t){if(!t)return;let n;for(let r of e){let e=r.session.find(e=>e.id===t);e&&(!n||fj(e)>=fj(n))&&(n=e)}return n}function Tj(e,t){if(!t)return;let n;for(let r of e){let e=vj(r,t);e&&yj(n,e)&&(n=e)}return n?.status}var Ej=(e,t)=>e<t?-1:+(e>t);function Dj(e,t){if(e.error){let n=e.error,r=e.response?.status,i=typeof n==`object`&&n&&`message`in n?String(n.message):String(n),a=Error(`${t} failed${r?` (${r})`:``}: ${i}`);throw r!==void 0&&(a.status=r),a}if(e.data===void 0){let e=Error(`${t} returned no data`);throw e.status=503,e}return e.data}var Oj=e=>!e||e.length===0?``:e.map(e=>e.id).sort(Ej).join(`|`);function kj(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 Aj(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 jj(e,t){return t.find(t=>t.worktree===e||t.sandboxes?.includes(e))?.id}async function Mj(e,t){let n=await Promise.allSettled([Qf(()=>e.path.get().then(e=>t({path:Dj(e,`path.get`)}))),Qf(()=>e.global.config.get().then(e=>t({config:Dj(e,`global.config.get`)}))),Qf(()=>e.project.list().then(e=>{t({projects:Dj(e,`project.list`).filter(e=>!!e?.id).filter(e=>!!e.worktree&&!e.worktree.includes(`opencode-test`)).sort((e,t)=>Ej(e.id,t.id))})}))]),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 _(`/health`,{signal:AbortSignal.timeout(4e3)});if(t.ok){let n=await t.json();n.lastOpenCodeError?e=n.lastOpenCodeError: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 Nj(e){let{directory:t,sdk:n,getState:r,set:i,global:a}=e,o=r(),s=o.status!==`complete`,c=jj(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}),kd(t,e)}s&&i({status:`partial`});let l=await Promise.allSettled([c?Promise.resolve():Qf(()=>n.project.current().then(e=>i({project:Dj(e,`project.current`).id}))),Qf(()=>n.config.get().then(e=>{let n=Dj(e,`config.get`);i({config:n}),kd(t,n)})),Qf(()=>n.path.get().then(e=>{let n=Dj(e,`path.get`);i({path:n});let r=jj(n?.directory??t,a.projects);r&&i({project:r})})),Qf(async()=>{let e=Date.now(),a=r().session_status,o=Dj(await n.session.status(t?{directory:t}:void 0),`session.status`),s=r().session_status,c={...r().session_status_observed_at};for(let t of Object.keys(o))s[t]===a[t]&&(c[t]=e);i({session_status:Aj(a,s,o),session_status_observed_at:c,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([Qf(()=>n.mcp.status().then(e=>i({mcp:Dj(e,`mcp.status`)}))),Qf(()=>n.lsp.status().then(e=>i({lsp:Dj(e,`lsp.status`)}))),Qf(()=>n.vcs.get().then(e=>{let t=r();if(e.error)throw Error(`vcs.get failed: ${String(e.error)}`);i({vcs:e.data??t.vcs})})),Qf(async()=>{let e=r(),a=new Map(Object.entries(e.question??{}).map(([e,t])=>[e,Oj(t)])),o=await n.question.list(t?{directory:t}:void 0);if(o.error){let e=o.response?.status,t=Error(`question.list failed${e?` (${e})`:``}: ${String(o.error)}`);throw e!==void 0&&(t.status=e),t}let s=kj((o.data??[]).filter(e=>!!e?.id&&!!e.sessionID)),c=r(),l={...c.question};for(let[e,t]of Object.entries(s))l[e]=t.filter(e=>!!e?.id).sort((e,t)=>Ej(e.id,t.id));for(let e of a.keys()){if(s[e])continue;let t=a.get(e)??``;Oj(c.question[e])===t&&delete l[e]}i({question:l})}),Qf(async()=>{let e=r(),a=new Map(Object.entries(e.permission??{}).map(([e,t])=>[e,Oj(t)])),o=await n.permission.list(t?{directory:t}:void 0);if(o.error){let e=o.response?.status,t=Error(`permission.list failed${e?` (${e})`:``}: ${String(o.error)}`);throw e!==void 0&&(t.status=e),t}let s=kj((o.data??[]).filter(e=>!!e?.id&&!!e?.sessionID)),c=r(),l={...c.permission};for(let[e,t]of Object.entries(s))l[e]=t.filter(e=>!!e?.id).sort((e,t)=>Ej(e.id,t.id));for(let e of a.keys()){if(s[e])continue;let t=a.get(e)??``;Oj(c.permission[e])===t&&delete l[e]}i({permission:l})})]).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])})}var Pj=De()(()=>({streamingMessageIds:new Map,messageStreamStates:new Map}));function Fj(){Pj.setState({streamingMessageIds:new Map,messageStreamStates:new Map})}var Ij=1e3;function Lj(e,t){let n=Date.now(),r=Pj.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=U();t?.store;for(let e of l){let t=[];if(f&&d&&(t=Ku(f.getTranscript(G(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>=Ij&&(s.set(r.id,{...a,lastUpdateAt:n}),c=!0)}for(let[e,t]of i)t&&(l.has(e)||u(e,t));c&&Pj.setState({streamingMessageIds:o,messageStreamStates:s})}function Rj(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 zj(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?{action:`materialize-now`,sessionID:e.idleSessionID}:{action:`defer-until-viewed`,sessionID:e.idleSessionID}}var Bj=new Set,Vj=(e,t)=>`${e}\n${t}`;function Hj(e,t){!e||e===`global`||!t||Bj.add(Vj(e,t))}function Uj(e,t){let n=Vj(e,t);return Bj.has(n)?(Bj.delete(n),!0):!1}var Wj=(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=op(i),o=typeof t==`string`&&t!==`global`?t.trim():``,s=a.directory;return!o||typeof s==`string`&&s.trim()?a:{...a,directory:o}},Gj=e=>{let t=X.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null},Kj=e=>{let t=e;return JSON.stringify([e.title??``,e.time?.archived??0,e.share?.url??``,t.directory??``,t.parentID??``,t.hasChildren??!1])},qj=(e,t)=>{if(e.type===`session.created`||e.type===`session.updated`){let n=Wj(e,t);if(n){let e=Gj(n.id);(!e||Kj(e)!==Kj(n))&&!zA(e,n)&&X.getState().upsertSession(n)}return}if(e.type===`session.deleted`){let t=e.properties?.sessionID??Wj(e)?.id;t&&X.getState().removeSessions([t])}};function Jj(e){return Object.entries(e.session_status??{}).filter(([,e])=>e&&e.type!==`idle`).map(([e])=>e)}function Yj(e,t){let n=t?.viewedSession;return!n?.sessionId||n.directory!==t?.directory?[]:[n.sessionId]}function Xj(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)}var Zj=e=>{let t=new Map;for(let n of e)t.set(n.id,n);return t},Qj=(e,t,n)=>{let r=n??Zj(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},$j=e=>{let{autoAccept:t,sessions:n,sessionById:r,sessionID:i}=e;if(Object.keys(t).length===0)return!1;let a=Qj(i,n,r);for(let e of a)if(Object.prototype.hasOwnProperty.call(t,e))return t[e]===!0;return!1},eM=t({usePermissionStore:()=>iM}),tM=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}},nM=async(e,t)=>tM(await _(e,t)),rM=(e,t,n)=>$j({autoAccept:e,sessions:[],sessionById:t,sessionID:n}),iM=De()(Oe((e,t)=>({autoAccept:{},loaded:!1,saving:!1,hydrate:async()=>{let n=await nM(`/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 nM(`/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&&rM(n,Md(),e)},setSessionAutoAccept:async(t,n)=>{if(t){if(b()){let r=await _(`/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)??B.getDirectory()??void 0;e({autoAccept:(await nM(`/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:Ye(),partialize:e=>({autoAccept:e.autoAccept})})),aM=De(()=>({statusById:new Map})),oM=e=>e===`busy`?`busy`:e===`retry`?`retry`:`idle`,sM=e=>Xo(e)??e,cM=(e,t,n)=>{aM.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}})},lM=(e,t)=>{switch(t.type){case`session.status`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;let r=oM(n.status?.type);cM(n.sessionID,sM(e),r);return}case`session.idle`:case`session.error`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&cM(n.sessionID,sM(e),`idle`);return}default:return}},uM=(e,t,n)=>{let r=sM(e),i=new Set(n??[]);aM.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=oM(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})},dM=e=>typeof e==`string`&&e.trim().length>0;function fM(e){let t=e.trim();return t.length<=18?t:`${t.slice(0,10)}…${t.slice(-4)}`}function pM(e,t){return ht(mt.getState().dictionary,e,t)}function mM(e,t=`missing-directory`){let n=dM(e)?fM(e):null;if(t===`missing-session-id`||!n){iE.error(pM(`sessions.toast.openFailedMissingSessionId`));return}if(t===`missing-directory`){iE.error(pM(`sessions.toast.openFailedMissingDirectory`,{sessionId:n}));return}iE.error(pM(`sessions.toast.openFailed`,{sessionId:n}))}function hM(e,t,n={}){let r=n.notify!==!1;if(!dM(e))return r&&mM(null,`missing-session-id`),{ok:!1,reason:`missing-session-id`,sessionId:null};if(!dM(t))return r&&mM(e,`missing-directory`),{ok:!1,reason:`missing-directory`,sessionId:e.trim()};let i=e.trim(),a=t.trim();return n.phoneShell&&!Ge()?(BW.getState().openSession({sessionId:i,directory:a}),{ok:!0,sessionId:i,directory:a}):n.switchToChat!==!1&&!Je.getState().setActiveMainTab(`chat`)?(r&&mM(i,`tab-switch-blocked`),{ok:!1,reason:`tab-switch-blocked`,sessionId:i}):($.getState().setCurrentSession(i,a),{ok:!0,sessionId:i,directory:a})}var gM=null,_M=e=>{gM=e},vM=(e,t)=>typeof gM==`function`&&typeof e==`string`&&e.trim()&&typeof t==`string`&&t.trim()?(gM(e.trim(),t.trim()),{ok:!0,sessionId:e.trim(),directory:t.trim()}):hM(e,t,{switchToChat:!0}),yM=(e,t)=>!e||!t?null:`${e}:${t}`,bM=({permission:e,directory:t,isViewed:n,pendingIds:r,show:i,openSession:a})=>{let o=yM(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},xM=15e3,SM=new Map,CM=(e,t)=>`${e}\n${t}`;function wM(e){if(!e.runtimeKey||!e.directory||!e.sessionId||!e.status||e.status.type===`idle`)return;let t=Date.now();for(let[e,n]of SM)n.expiresAt<=t&&SM.delete(e);SM.set(CM(e.runtimeKey,e.directory),{runtimeKey:e.runtimeKey,directory:e.directory,sessionId:e.sessionId,status:e.status,expiresAt:Date.now()+xM})}function TM(e,t){let n=SM.get(CM(e,t));return n?n.expiresAt<=Date.now()?(SM.delete(CM(e,t)),null):n:null}var EM=[],DM=[],OM=[],kM={sessionID:``,revertMessageID:void 0,records:DM,history:OM},AM=e=>{if(e?.type!==`text`)return``;let t=e.text;return typeof t==`string`?t:``},jM=e=>{for(let t of e){let e=AM(t);if(e.length>0)return e}return``},MM=(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},NM=(e,t=kM)=>{let n=e.sessionID;if(!n)return kM;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&&ps(r,n.id,i)||a.push({message:n,parts:e.parts[n.id]??EM}))}if(a.length===0)return t.sessionID===n&&t.revertMessageID===i&&t.records.length===0?t:{sessionID:n,revertMessageID:i,records:DM,history:OM};if(t.sessionID===n&&t.revertMessageID===i&&MM(t.records,a))return t;let o=[];for(let e of a){let t=jM(e.parts);t.length>0&&o.push(t)}return{sessionID:n,revertMessageID:i,records:a,history:o}};function PM(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 FM(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 IM(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 LM(e,t,n){if(!e)return null;let r=t?.id===e?t:null,i=n?.id===e?n:null;return r??i}function RM(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 zM=je(),BM=`__openchamber_sync_context__`,VM=globalThis,HM=VM[BM]??(0,K.createContext)(null);VM[BM]=HM;function UM(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function WM(e,t){if(!e.error)return e.data;let n=e.response?.status;throw Error(`${t} failed${n?` (${n})`:``}: ${UM(e.error)}`)}function GM(){let e=(0,K.useContext)(HM);if(!e)throw Error(`useSyncSystem must be used within <SyncProvider>`);return e}function KM(e){return Array.from(e.children.values(),e=>e.getState())}function qM(e,t,n){let r=(0,H.c)(7),i=t===void 0?Object.is:t,{childStores:a}=GM(),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(KM(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 JM(e){let t=(0,H.c)(4),n;t[0]===e?n=t[1]:(n=t=>Tj(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),qM(n,Object.is,r)}function YM(e){let t=(0,H.c)(5),n=JM(e),r;t[0]===e?r=t[1]:(r=t=>t.statusById.get(e)?.status,t[0]=e,t[1]=r);let i=aM(r),a;return t[2]!==i||t[3]!==n?(a=XM(n,i),t[2]=i,t[3]=n,t[4]=a):a=t[4],a}function XM(e,t){if(e)return e;if(t===`busy`)return{type:`busy`};if(t===`retry`)return{type:`retry`,attempt:0,message:``,next:0}}var ZM=[],QM={};function $M(e){let t=(0,H.c)(4),n=e?.enabled??!0,r;t[0]===n?r=t[1]:(r=e=>n?Cj(e):QM,t[0]=n,t[1]=r);let i;return t[2]===n?i=t[3]:(i=(e,t)=>n?e.subscribeAllSelected(eN,t):tN,t[2]=n,t[3]=i),qM(r,xj,i)}function eN(e){return e.session_status}function tN(){}function nN(e){let t=(0,H.c)(5),n=e?.enabled??!0,r=X(aN),i;t[0]!==n||t[1]!==r?(i=e=>n?Sj(e,r):ZM,t[0]=n,t[1]=r,t[2]=i):i=t[2];let a;return t[3]===n?a=t[4]:(a=(e,t)=>n?e.subscribeAllSelected(rN,t):iN,t[3]=n,t[4]=a),qM(i,bj,a)}function rN(e){return e.session}function iN(){}function aN(e){return e.pendingDeletionIds}var oN=!1,sN=0,cN=0,lN=1500,uN=new Set([`patch`,`step-start`,`step-finish`]),dN=5e3,fN=4e4,pN=15e3,mN=6e4,hN=6e4,gN=e=>!e||e.length===0?``:e.map(e=>e.id).sort(_N).join(`|`),_N=(e,t)=>e<t?-1:+(e>t),vN=e=>JSON.stringify(e);function yN(e,t){return vN(e)===vN(t)}var bN=5e3,xN=new Map,SN=(e,t)=>`${e}:${t}`;function CN(e,t){try{let n=U();return n?Dl(n.getTranscript(G(e,t))):!1}catch{return!1}}async function wN(e,t){try{if(!U())return;await Eu(e,t)}catch{}}function TN(e,t,n,r){if(!e||e===`global`||!t)return;let i=SN(e,t),a=xN.get(i);if(a&&Date.now()-a.enqueuedAt<bN){Promise.resolve().then(()=>{CN(e,t)&&wN(e,t)});return}xN.set(i,{sessionID:t,directory:e,enqueuedAt:Date.now(),request:r}),Promise.resolve().then(async()=>{let a=n.getChild(e);if(!a){xN.delete(i);return}try{await DN(e,t,a,r)}catch{}finally{xN.delete(i)}})}function EN(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 t=n.getChild(e);t&&Ay(t,r)}t.domainActivityHint?.kind===`terminal`&&r===kN&&e===ON&&TN(e,r,n,{reason:`session-idle`})}}async function DN(e,t,n,r){let i=n.getState().session_status?.[t];bs.recovery.materializing({reason:r?.reason??`ensure-session-messages`,directory:e,sessionID:t,messageID:r?.messageID,partID:r?.partID});try{let a=()=>{try{return U()?.getTranscript(G(e,t)).liveRevision}catch{return}},o=a(),s=await Kb({directory:e,sessionID:t,limit:ch(),signal:AbortSignal.timeout(3e4),purpose:`materialize`});if(r?.isStale?.())return`skipped`;let c=Jb({directory:e,sessionID:t,purpose:`materialize`,page:s,capturedLiveRevision:o,liveRevision:a(),skipPartTypes:uN});return CN(e,t)&&await wN(e,t),c.applied?(vx({directory:e,sessionID:t,store:n,isStale:r?.isStale}),s.records.length===0||i&&i.type!==`idle`&&!r?.isStale?.()&&await Py(e,n,[t]),`ready`):`skipped`}catch{return`error`}}var ON=``,kN=``,AN=null,jN=``,MN=``,NN=new Map,PN=15e3,FN=(e,t)=>`${e}\n${t}`;function IN(e=Date.now()){for(let[t,n]of NN.entries())n<=e&&NN.delete(t)}var LN=new Set,RN=new Set,zN=(e,t)=>!e||!t?null:`${e}:${t}`,BN=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},VN=(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=we()?.notifications;return i?.notifyAgentCompletion&&i.notifyAgentCompletion({title:BN(r.title),body:BN(r.body),tag:BN(r.tag),kind:BN(r.kind),sessionId:BN(r.sessionId),assistantID:BN(r.assistantID),directory:BN(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 HN(e,t){!e||!t||!AN||Uj(e,t)&&TN(e,t,AN,{reason:`session-idle`})}function UN(e){AN=e,e&&HN(ON,kN)}function WN(e,t){ON=e,kN=t,HN(e,t)}function GN(e,t,n){if(!e||!t)return;let r=FN(e,t);if(!n){NN.delete(r);return}NN.set(r,Date.now()+PN)}function KN(e,t){if(!e||!t){jN=``,MN=``;return}jN=e,MN=t}function qN(){let e=[],t=new Set,n=(n,r)=>{if(!n||!r)return;let i=FN(n,r);t.has(i)||(t.add(i),e.push({directory:n,sessionID:r}))};return n(jN,MN),n(ON,kN),e}function JN(){return typeof document<`u`&&document.hasFocus()}function YN(e,t){return t?ON&&kN&&e===ON&&t===kN&&JN()?!0:(IN(),NN.has(FN(e,t))):!1}function XN(){return oN||Date.now()-sN<lN}function ZN(e){return!ON||!kN||e!==ON?null:{directory:ON,sessionId:kN}}function QN(e,t){return Xj(t,{directory:e,viewedSession:ZN(e)})}function $N(e,t,n,r=fN,i=pN){return!(e<=0||n-e<r||n-t<i)}function eP({isViewed:e,status:t,lastTransportActivityAt:n,lastDomainActivityAt:r,lastFullResyncAt:i,now:a,transportStaleThresholdMs:o=fN,domainStaleThresholdMs:s=mN,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 tP=b(),nP=(e,t)=>{!tP||typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:vscode-notification-event`,{detail:{directory:e,payload:t}}))},rP=()=>({sessionDirectoryById:new Map,messageSessionById:new Map,sessionMessageIdsById:new Map}),iP=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},aP=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===`session.deleted`){let e=n.sessionID;return typeof e==`string`&&e.length>0?e: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}return null},oP=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}return null},sP=(e,t,n)=>{!t||!n||n===`global`||e.sessionDirectoryById.set(t,n)},cP=(e,t,n,r)=>{if(!t)return;sP(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)},lP=(e,t,n,r)=>{if(!t||!n)return;sP(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]))},uP=(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))},dP=(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)},fP=(e,t,n)=>{let r=new Set;for(let i of n.session)i?.id&&(r.add(i.id),sP(e,i.id,t));try{let n=U(),i=n?.getCacheBudget?.().listCanonical({directory:t});if(i)for(let a of i){if(a.scope.directory!==t)continue;r.add(a.scope.sessionID),sP(e,a.scope.sessionID,t);let i=n?.getTranscript?.(G(t,a.scope.sessionID));if(i){let n=Ku(i);cP(e,a.scope.sessionID,t,n)}}}catch{}for(let[n,i]of e.sessionDirectoryById)i===t&&(r.has(n)||dP(e,n))},pP=(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 sP(n,e,r),r}try{let t=U()?.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 sP(n,e,t),t}}catch{}return null},mP=(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(U()??W(t,r)).hasSession?.(G(t,n))??!1}catch{return!1}},hP=(e,t,n)=>{try{let e=U();if(e&&e.getParts(G(t,n),n).length>0)return!0}catch{}return!1},gP=e=>!ON||!kN?null:e.getChild(ON)?ON:null,_P=(e,t,n,r)=>{let i=iP(t),a=aP(n);if(a){if(i&&i!==`global`&&mP(r,i,a))return sP(e,a,i),i;let t=e.sessionDirectoryById.get(a);if(t&&r.getChild(t))return t;let n=pP(a,r,e);if(n)return n}let o=oP(n);if(o){if(i&&i!==`global`&&hP(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(hP(r,i,o))return i;for(let[e]of r.children)if(hP(r,e,o))return e;let n=gP(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},vP=(e,t,n,r)=>{if(e)return e;if(t){let e=r.messageSessionById.get(t);if(e)return e}if(n&&n===ON&&kN)return kN};function yP(e,t){let n=aP(e)??(e.type===`session.deleted`?e.properties.info?.id:void 0);if(n)return n;let r=oP(e);return r?t.get(r):void 0}function bP(e,t){return e===t}var xP=e=>e.type===`session.created`||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`,SP=(e,t,n)=>{if(!t||t===`global`)return;let r=aP(n);switch(r&&sP(e,r,t),n.type){case`session.created`:case`session.updated`:{let r=n.properties.info;r?.id&&sP(e,r.id,t);return}case`session.deleted`:{let t=n.properties.sessionID;t&&dP(e,t);return}case`message.updated`:{let r=n.properties.info;r?.id&&r.sessionID&&lP(e,r.sessionID,r.id,t);return}case`message.removed`:{let t=n.properties;t.messageID&&uP(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&&lP(e,a,o,t);return}default:return}};async function CP(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,gN(r.question[e])])),o=await B.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(!YN(e,t))for(let r of n){if(i.has(r.id))continue;let n=zN(t,r.id);if(!n||LN.has(n))continue;LN.add(n);let a=r.questions?.[0],o=a?.header?.trim()||`Input needed`,s=a?.question?.trim()||`Agent is waiting for your response`;iE.info(o,{id:`question-${n}`,description:s,action:{label:`Open session`,onClick:()=>vM(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)??``;gN(e.question[r])===i&&delete t[r]}return{question:t}})}catch{}try{let n=new Map(a.map(e=>[e,gN(r.permission[e])])),o=await B.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=iM.getState(),l=b()?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 B.fetchPermission(r.sessionID,r.id);if(i.state===`ok`){await DC(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=YN(e,t);if(!a)for(let t of n)i.has(t.id)||bM({permission:t,directory:e,isViewed:a,pendingIds:RN,show:(e,t)=>iE.info(e,t),openSession:vM})}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)??``;gN(e.permission[r])===i&&delete t[r]}return{permission:t}})}catch{}}}function wP(e,t,n){n?.statusOnly}function TP(e){return e.isFirstConnect&&!e.disconnectedBeforeFirstConnect}function EP(e){return{resyncBlockingRequests:!0,ingestRoutingIndex:!e?.statusOnly}}async function DP(e,t,n,r,i,a){let o=QN(e,t.getState());await Py(e,t,o);let s=Yj(QN(e,t.getState()),{directory:e,viewedSession:ZN(e)});if(s.length>0){let a=B.getScopedSdkClient(e);await Promise.all(s.map(async o=>{let s=i(o);bs.recovery.materializing({reason:r,directory:e,sessionID:o});let c=(await Qf(async()=>{let e=await a.session.get({sessionID:o});return WM(e,`session.get`),e}).catch(()=>null))?.data;if(c&&bP(s,i(o))){let r=op(c);t.setState(e=>{let t=e.session.findIndex(e=>e.id===r.id),n=e.session,i=!1,a=e.sessionTotal;return t>=0?yN(n[t],r)||(n=[...e.session],n[t]=r,i=!0):(n=[...e.session],n.push(r),n.sort((e,t)=>_N(e.id,t.id)),r.parentID||(a+=1),i=!0),i?{session:n,sessionTotal:a}:e}),sP(n,r.id,e)}let l=i(o),u=t.getState(),d=u.session_status?.[o],f=u.session_status_observed_at?.[o],p=()=>!bP(l,i(o)),m=l;Ug(e,o);try{let r=await Kb({directory:e,sessionID:o,limit:ch(),signal:AbortSignal.timeout(3e4),purpose:`recovery`});if(p()||!Jb({directory:e,sessionID:o,purpose:`recovery`,page:r,capturedLiveRevision:m,liveRevision:i(o),skipPartTypes:uN}).applied)return;let a=bu().getTranscript(G(e,o));cP(n,o,e,a.messageOrder.map(e=>a.messagesByID[e]).filter(e=>!!e)),vx({directory:e,sessionID:o,store:t,transcript:a,isStale:p}),await Fy({directory:e,sessionID:o,store:t,statusBeforePull:d,statusObservedAtBeforePull:f,hasMessages:a.messageOrder.length>0,isStale:p})}catch{}finally{Wg(e,o)}}))}let c=EP(a);c.resyncBlockingRequests&&await CP(e,t,o),c.ingestRoutingIndex&&fP(n,e,t.getState())}function OP(e){try{let t=U(),n=u(),r=f();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>G(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function kP(e){let t=aP(e)??void 0;if(t)return t;if(e.type===`message.updated`)return e.properties.info?.sessionID??void 0}var AP=null,jP=0;function MP(e){return`${e.directory}\0${e.sessionID}\0${e.transport??``}\0${e.generation??``}`}function NP(){jP===0&&(AP={byScope:new Map,routing:[],debug:[]}),jP+=1}function PP(){if(jP===0||(--jP,jP>0))return;let e=AP;if(AP=null,e)try{for(let t of e.byScope.values()){let n=Su(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=vP(r.sessionID??t.transcriptSessionID,r.messageID??e,t.scope.directory,t.routingIndex);n&&TN(t.scope.directory,n,t.childStores,{reason:r.reason,messageID:r.messageID,partID:r.partID})}}for(let t of e.debug)t.changed?bs.dispatch.eventApplied(t.payloadType,t.transcriptSessionID,t.eventMessageID):bs.dispatch.eventNoChange(t.payloadType,t.transcriptSessionID,t.eventMessageID);for(let t of e.routing)SP(t.routingIndex,t.resolvedDirectory,t.payload)}finally{AP=null,jP=0}}function FP(e,t,n,r,i,a){let o=Rj({sessionID:t,resolvedDirectory:n,transport:u(),generation:f(),listCanonicalScopes:OP});if(AP){for(let n of o){let o=MP(n),s=AP.byScope.get(o);s||(s={scope:n,events:[],transcriptSessionID:t,eventMessageIDs:[],childStores:i,routingIndex:a},AP.byScope.set(o,s)),s.events.push(e),s.eventMessageIDs.push(r)}AP.debug.push({payloadType:e.type,transcriptSessionID:t,eventMessageID:r,changed:!1}),AP.routing.push({routingIndex:a,resolvedDirectory:n,payload:e});return}let s=!1;for(let n of o){let o=Su(n,{type:`sse-event`,event:e})??{applied:!1,changed:!1};o.changed&&(s=!0);let c=o.materialization;if(c){let e=vP(c.sessionID??t,c.messageID??r,n.directory,a);e&&TN(n.directory,e,i,{reason:c.reason,messageID:c.messageID,partID:c.partID})}}s?bs.dispatch.eventApplied(e.type,t,r):bs.dispatch.eventNoChange(e.type,t,r),SP(a,n,e)}function IP(e,t,n,r){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&&GO(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:permission-auto-accept.updated`){let e=t.properties;if(e&&typeof e==`object`){let t=e;t.sessions&&typeof t.sessions==`object`&&iM.getState().applySnapshot({sessions:t.sessions})}return}let i=_P(r,e,t,n);if(VN(t,i))return;if(qj(t,i),lM(i,t),i===`global`||!i){if(jl(t.type)){let e=kP(t);if(e){FP(t,e,i||`global`,oP(t)??void 0,n,r);return}}let e=XN(),a=UA(t);if(!a)return;if(a.type===`refresh`)e||XA.setState({reload:`pending`});else if(a.type===`project`){let e=XA.getState();XA.setState({projects:WA(e,a.project).projects})}if((t.type===`server.connected`||t.type===`global.disposed`)&&!e)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 a=n.getChild(i),o=i;if(!a){let e=aP(t);if(e){let t=pP(e,n,r);t&&(a=n.getChild(t),o=t)}}if(!a){if(jl(t.type)){let e=kP(t);if(e){FP(t,e,o,oP(t)??void 0,n,r);return}}let e=UA(t);if(e?.type===`refresh`)XA.setState({reload:`pending`});else if(e?.type===`project`){let t=XA.getState();XA.setState({projects:WA(t,e.project).projects})}return}if(n.mark(o),t.type===`permission.asked`){let e=t.properties;if(iM.getState().isSessionAutoAccepting(e.sessionID)){SP(r,o,t),b()&&DC(e.sessionID,e.id,`once`).catch(()=>void 0);return}let n=a.getState().session.find(t=>t.id===e.sessionID)??X.getState().activeSessions.find(t=>t.id===e.sessionID);if(n&&!n.parentID){let t=YN(o,e.sessionID);bM({permission:e,directory:o,isViewed:t,pendingIds:RN,show:(e,t)=>iE.info(e,t),openSession:vM})}}if(t.type===`permission.replied`){let e=t.properties,n=yM(e.sessionID,e.requestID);n&&(RN.delete(n),iE.dismiss(`permission-${n}`))}if(t.type===`question.asked`){let e=t.properties,n=e.sessionID,r=a.getState().session.find(e=>e.id===n)??X.getState().activeSessions.find(e=>e.id===n);if(r&&!r.parentID){let t=zN(n,e.id);if(!YN(o,n)&&t&&!LN.has(t)){LN.add(t);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;iE.info(i,{id:`question-${t}`,description:a,action:{label:`Open session`,onClick:()=>vM(n,o)}})}}}if(t.type===`question.replied`||t.type===`question.rejected`){let e=t.properties,n=zN(e.sessionID,e.requestID);n&&(LN.delete(n),iE.dismiss(`question-${n}`))}if(t.type===`session.idle`){let e=t.properties.sessionID,n=a.getState().session.find(t=>t.id===e)??X.getState().activeSessions.find(t=>t.id===e);e&&n&&!n.parentID&&Qk({directory:o,session:e,time:Date.now(),viewed:YN(o,e),type:`turn-complete`})}if(t.type===`session.idle`){let e=aP(t);if(e&&o&&o!==`global`){let t=a.getState().session.find(t=>t.id===e),r=t?t.parentID:null,i=zj({idleSessionID:e,directory:o,parentID:r,activeSessionID:kN,activeDirectory:ON});i.action===`materialize-parent`?TN(o,i.sessionID,n,{reason:`child-session-idle`}):i.action===`materialize-now`?TN(o,i.sessionID,n,{reason:`session-idle`}):i.action===`defer-until-viewed`&&Hj(o,i.sessionID)}}let s=a.getState(),c=aP(t)??void 0,l=oP(t)??void 0;if(t.type===`session.created`){let e=t.properties.info;Ox(o,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`)&&Rx(o,c,l))return;if(jl(t.type)){let e=kP(t);if(!e){SP(r,o,t);return}FP(t,e,o,l,n,r);return}let u={...s};switch(t.type){case`session.created`:case`session.updated`:case`session.deleted`:u.session=[...s.session],u.session_status_observed_at={...s.session_status_observed_at},u.permission={...s.permission},u.todo={...s.todo};break;case`session.diff`:u.session_diff={...s.session_diff};break;case`session.status`:case`session.idle`:case`session.error`:u.session_status={...s.session_status??{}},u.session_status_observed_at={...s.session_status_observed_at},u.session_error_at={...s.session_error_at};break;case`todo.updated`:u.todo={...s.todo};break;case`vcs.branch.updated`:break;case`permission.asked`:case`permission.replied`:u.permission={...s.permission};break;case`question.asked`:case`question.replied`:case`question.rejected`:u.question={...s.question};break;case`lsp.updated`:u.lsp=[...s.lsp]}let d=JA(u,t,{onSetSessionTodo:(e,t)=>{ax.getState().setSessionTodos(e,t)},onServerSessionIdle:e=>{$.getState().releaseQueueAbortBlocksForServerIdle(o,e)},now:Date.now}),f=typeof d==`boolean`?d:d.changed,p=typeof d==`boolean`?void 0:d.materialization;if(f){a.setState(u);let e=aP(t)??void 0,n=oP(t)??void 0;bs.dispatch.eventApplied(t.type,e,n)}else{let e=aP(t)??void 0,n=oP(t)??void 0;bs.dispatch.eventNoChange(t.type,e,n)}if(p){let e=vP(p.sessionID??aP(t)??void 0,p.messageID??oP(t)??void 0,o,r);e&&TN(o,e,n,{reason:p.reason,messageID:p.messageID,partID:p.partID})}SP(r,o,t)}var LP=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:opencode-update-available`,{detail:e}))},RP=null,zP=async()=>{let e=m();return(!RP||RP.runtimeKey!==e)&&(RP={runtimeKey:e,promise:_(`/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 _(`/health`,{signal:AbortSignal.timeout(4e3)});return t.ok?(await t.json()).opencodeBinarySource===`bundled`:!1}).catch(()=>!1)}),RP.promise},BP=e=>{typeof window>`u`||zP().then(t=>{t||LP(e)})};function VP(e,t,n){return e!==t||n!==!1}function HP(e){let t=Uf(e=>e.settingsMessageStreamTransport),n=(0,K.useRef)(null);n.current||=new dj;let r=n.current,i=(0,K.useRef)(null);i.current||=rP();let a=i.current,c=(0,K.useRef)(0),l=(0,K.useRef)(new Map),d=(0,K.useRef)(new Map),p=(0,K.useRef)(new Map),h=(0,K.useRef)(new Set),g=(0,K.useRef)(null),_=(0,K.useRef)(!1),v=(0,K.useRef)(!1),y=(0,K.useRef)({directory:e.directory,enabled:e.bootstrapDirectory});y.current={directory:e.directory,enabled:e.bootstrapDirectory};let x=e=>{let t=y.current;return VP(e,t.directory,t.enabled)},S=(0,K.useMemo)(()=>({childStores:r,sdk:e.sdk,directory:e.directory}),[r,e.sdk,e.directory]);(0,K.useEffect)(()=>(UN(r),()=>{UN(null)}),[r]);let C=(0,K.useCallback)((e,t,n)=>{if(wP(e,r.children.get(e),n),!x(e))return;let i=r.children.get(e);if(!i)return;let o=h.current;o.has(e)||(n?.statusOnly||p.current.set(e,Date.now()),o.add(e),DP(e,i,a,t,t=>d.current.get(FN(e,t))??0,n).catch(()=>{}).finally(()=>{o.delete(e)}))},[r,a]);(0,K.useEffect)(()=>{b()||iM.getState().hydrate().catch(()=>void 0)},[e.sdk]),(0,K.useEffect)(()=>{let t=new Set;r.configure({onBootstrap:n=>{if(!x(n)||t.has(n))return;t.add(n);let i=r.getChild(n);i&&(async()=>{if(await $t(),!x(n))return;let t=XA.getState();await Nj({directory:n,sdk:e.sdk,getState:()=>i.getState(),set:e=>{i.setState(e),e.session&&fP(a,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,a]),(0,K.useEffect)(()=>{let t=++cN;oN=!0;let n=XA.getState().actions;return $t().then(()=>{if(cN===t)return Mj(e.sdk,e=>{cN===t&&n.set(e)})}).then(()=>{cN===t&&(sN=Date.now())}).finally(()=>{cN===t&&(oN=!1)}),()=>{cN===t&&(oN=!1)}},[e.sdk]),(0,K.useEffect)(()=>{let n=PA({sdk:e.sdk,transport:t,routeDirectory:(e,t)=>_P(a,e,t,r),onFlushStart:()=>{NP()},onFlushEnd:()=>{PP()},onNormalizedEvent:(e,t)=>{EN(e,t,r);let n=t.domainActivityHint?.sessionID??t.admissionHint?.sessionID;n&&e===ON&&n===kN&&(t.domainActivityHint||t.admissionHint)&&l.current.set(FN(e,n),Date.now())},onEvent:(e,t)=>{let n=yP(t,a.messageSessionById)??null;if(n&&xP(t)){let t=FN(e,n);d.current.set(t,(d.current.get(t)??0)+1)}if(n&&e===ON&&n===kN&&(t.type===`message.updated`||t.type===`message.removed`||t.type===`message.part.updated`||t.type===`message.part.removed`||t.type===`message.part.delta`)&&l.current.set(FN(e,n),Date.now()),n&&e===ON&&n===kN&&t.type===`session.status`){let r=t.properties.status;if(r?.type===`busy`||r?.type===`retry`){let t=FN(e,n);l.current.has(t)||l.current.set(t,Date.now())}r?.type===`idle`&&l.current.delete(FN(e,n))}if(n&&(t.type===`session.idle`||t.type===`session.deleted`)&&l.current.delete(FN(e,n)),nP(e,t),t.type===`installation.update-available`){let e=typeof t.properties?.version==`string`?t.properties.version:``;e&&BP({version:e})}IP(e,t,r,a)},onTransportActivity:()=>{let e=Date.now();c.current=e,Vm(e)},onReconnect:()=>{Uf.setState({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let e=!_.current;_.current=!0;let t=TP({isFirstConnect:e,disconnectedBeforeFirstConnect:v.current});for(let e of r.children.keys())C(e,`stream-reconnect`,{statusOnly:t})},onDisconnect:e=>{_.current||(v.current=!0);let{hasEverConnected:t}=Uf.getState();Uf.setState({isConnected:!1,connectionPhase:t?`reconnecting`:`connecting`,lastDisconnectReason:e})},onRecoveryContextCaptured:e=>{Mu({lastEventID:e.lastEventId,reason:e.reason,generation:e.runtimeGeneration})},onCompensation:e=>{Nu(e)},onTransportSwitch:()=>{let{hasEverConnected:e}=Uf.getState();Uf.setState({isConnected:!1,connectionPhase:e?`reconnecting`:`connecting`});for(let e of r.children.keys())C(e,`transport-switch`)}});g.current=n.reconnect;let i=Hm(n.reconnect);return()=>{i(),g.current===n.reconnect&&(g.current=null),n.cleanup()}},[e.sdk,r,a,t,C]),(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(Jj(r).length===0){p.current.delete(e);continue}let i=p.current.get(e)??0;$N(c.current,i,t)&&(g.current?.(`active_stream_stale`),C(e,`stale-status-resync`));let a=ZN(e);if(!a)continue;let o=r.session_status?.[a.sessionId],s=FN(e,a.sessionId),u=l.current.get(s);if((o?.type===`busy`||o?.type===`retry`)&&!u){l.current.set(s,t);continue}if(o?.type===`idle`||!o){l.current.delete(s);continue}eP({isViewed:!0,status:o,lastTransportActivityAt:c.current,lastDomainActivityAt:u??0,lastFullResyncAt:i,now:t})&&C(e,`domain-stale-resync`)}}).finally(()=>{t=!1}))},i=setInterval(n,dN);return n(),()=>{e=!0,clearInterval(i)}},[r,C]),(0,K.useEffect)(()=>{let t;if(e.directory){let n=r.ensureChild(e.directory,{bootstrap:VP(e.directory,e.directory,e.bootstrapDirectory)}),i=TM(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)},xM)),fP(a,e.directory,n.getState())}return()=>{t&&clearTimeout(t)}},[e.directory,e.bootstrapDirectory,r,a]);let w=(0,K.useRef)(null),T=(0,K.useRef)({transport:u(),generation:f()});return(0,K.useEffect)(()=>{if(w.current)return;let e=qb({childStores:r,getViewedSession:()=>qN()[0]??null,getViewedSessions:()=>qN()});return w.current=e,T.current={transport:u(),generation:f()},()=>{let e=T.current;Fu(`provider-dispose`);let t=w.current?.repository;t&&t.purgeGeneration(e.transport,e.generation),w.current?.destroy(),w.current=null}},[r]),(0,K.useEffect)(()=>(Cd(e.sdk,r,e.directory,(e,t)=>{sP(a,e,t)}),Xx(e.sdk,r,()=>B.getDirectory()||e.directory),Ey((e,t,n)=>{let r=new Set(n),i=Xo(e)??e,a={...t};for(let[e,t]of aM.getState().statusById)r.has(e)||t.directory===i&&(a[e]={type:t.status});uM(e,a,n)}),()=>{Ey(void 0)}),[e.sdk,e.directory,r,a]),(0,K.useEffect)(()=>s(e=>{if(!e.transportIdentityChanged){T.current={transport:u(),generation:f()};return}let t=T.current;Fu(`runtime-switch`);let n=w.current?.repository;n&&n.purgeGeneration(t.transport,t.generation),T.current={transport:u(),generation:f()}}),[]),(0,K.useEffect)(()=>o(()=>{Um(`reasoning_projection`),(w.current?.repository)?.resetReasoningProjection?.();let e=qN();for(let t of e)wu(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=()=>{Lj(t.getState(),{directory:n,store:t})};i();let a=t.subscribe(()=>{i()}),o=[],s=()=>{for(let e of o)e();o=[];let e=U()??W(n,t),r=t.getState().session_status??{};for(let[t,a]of Object.entries(r))!a||a.type===`idle`||o.push(e.subscribe(G(n,t),i));i()};s();let c=gu(s);return()=>{c(),a();for(let e of o)e()}},[e.directory,r]),(0,zM.jsx)(HM.Provider,{value:S,children:e.children})}function UP(e,t){let n=(0,H.c)(4),r=GM(),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 WP(e,t){let n=UP(t);return ke(n,e)}function GP(e){let{childStores:t}=GM(),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?IM(t,r.current,e):()=>void 0,[t,n]),a=(0,K.useCallback)(()=>n?FM(t,r.current):``,[t,n]);return K.useSyncExternalStore(i,a,a)}function KP(){let e=(0,H.c)(2),{childStores:t}=GM(),n;return e[0]===t?n=e[1]:(n=e=>PM(t,e),e[0]=t,e[1]=n),n}function qP(e,t){let n=GM(),r=t??n.directory;return Xu(e,r,UP(r))}function JP(e,t){let n=GM(),r=t??n.directory;return od(e,r,UP(r))}function YP(e,t){let n=(0,H.c)(8),r=GM(),i=t??r.directory,a=UP(i),o=(0,K.useRef)(void 0),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e){o.current=void 0;return}let t=(U()??W(i,a)).getRequestState?.(G(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 XP;let n=(U()??W(i,a)).subscribe(G(i,e),()=>{t()}),r=gu(()=>{n(),o.current=void 0,n=(U()??W(i,a)).subscribe(G(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 XP(){}function ZP(e,t,n){let r=GM(),i=t??r.directory;return cd(e,i,UP(i),n)}function QP(e,t){let n=(0,H.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=UP(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return i.getState().session_status?.[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):$P,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return K.useSyncExternalStore(c,o,o)}function $P(){}function eF(e,t){let n=(0,H.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=UP(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return i.getState().session_status_observed_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(t):tF,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return K.useSyncExternalStore(c,o,o)}function tF(){}function nF(e,t){let n=(0,H.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=UP(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):rF,n[4]=r,n[5]=a,n[6]=c):c=n[6];let l=c;return K.useSyncExternalStore(l,s,s)}function rF(){}function iF(e,t,n){let r=(0,H.c)(6),i=UP(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):aF,r[3]=e,r[4]=i,r[5]=s):s=r[5];let c=s;return K.useSyncExternalStore(c,o,o)}function aF(){}function oF(e,t,n){let r=(0,H.c)(2),i=UP(t,n),a;return r[0]===e?a=r[1]:(a=t=>e?t.question[e]??iI:iI,r[0]=e,r[1]=a),ke(i,a)}function sF(e){return WP(cF,e)}function cF(e){return e.session}var lF=e=>e.permission,uF=e=>e.question;function dF(e){if(!e)return Jp;let t=[];for(let n of e.messageOrder){let r=e.partsByMessageID[n];if(r)for(let e of qp(r))t.push(e)}return t.length===0?Jp:t}function fF(){let e=null;return t=>{let n=dF(t);if(n.length===0)return Jp;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 pF(e,t){let n=GM(),r=t??n.directory,i=UP(r),a=(0,K.useRef)(fF()).current,o=(0,K.useCallback)(()=>{if(!e)return Jp;try{let t=U()?.getTranscript(G(r,e));return a(t)}catch{return Jp}},[a,e,r]),s=(0,K.useCallback)(t=>{if(!e)return()=>void 0;let n=(U()??W(r,i))?.subscribe(G(r,e),()=>{t()})??(()=>void 0),a=gu(()=>{n(),n=(U()??W(r,i))?.subscribe(G(r,e),()=>{t()})??(()=>void 0),t()});return()=>{a(),n()}},[e,i,r]);return K.useSyncExternalStore(s,o,o)}function mF(e,t,n,r){let i=(0,H.c)(7),a=pF(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=Zp(t.session,i,e,r,a),l=Xp(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],WP(c,t)}function hF(e,t){return mF(e,t,lF,rI)}function gF(e,t){return mF(e,t,uF,iI)}function _F(e,t){let n=(0,H.c)(9),r=vF(e,t),i=vF(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=X(a),s=r??i??o,c=s?.parentID??null,l=vF(c,t),u=vF(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=X(d),p=l??u??f,m;return n[4]!==s||n[5]!==t||n[6]!==p||n[7]!==e?(m=RM(e,s,p,t),n[4]=s,n[5]=t,n[6]=p,n[7]=e,n[8]=m):m=n[8],m}function vF(e,t){let n=(0,H.c)(7),{childStores:r}=GM(),i;n[0]!==r||n[1]!==t||n[2]!==e?(i=()=>t?r.getChild(t)?.getState().session.find(t=>t.id===e):wj(KM(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=>t?r.ensureChild(t).subscribe(e):r.subscribeAllSelected(yF,e),n[4]=r,n[5]=t,n[6]=o):o=n[6];let s=o;return K.useSyncExternalStore(s,a,a)}function yF(e){return e.session}function bF(e){let t=LM(e,vF(e),X((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 xF(e,t){return vF(e,t)?.directory??void 0}function SF(){return GM().directory}function CF(){return GM().childStores}var wF=[],TF=40,EF=4,DF=30,OF=4,kF=30,AF=new WeakMap,jF=(e,t,n)=>`${e}\u0000${+!!t}\u0000${n??``}`,MF=e=>{let t=AF.get(e);return t||(t=new Map,AF.set(e,t)),t},NF=(e,t,n,r)=>{let i=AF.get(e);if(!i)return;let a=jF(t,n,r),o=i.get(a);if(o)return i.delete(a),i.set(a,o),o},PF=(e,t)=>{if(!t.sessionID)return;let n=MF(e),r=jF(t.sessionID,t.suspendPartUpdates,t.suspendedPartUpdatesMessageID),i=b()?DF:eh()?kF:null;if(i!==null&&t.list.length>i){n.delete(r);return}n.delete(r),n.set(r,t);let a=b()?EF:eh()?OF:TF;for(;n.size>a;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}};function FF(e,t){let n=AF.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 IF=`The following tool was executed by the user`,LF=(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(IF)}):!1};function RF(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 zF=(e,t)=>{for(let n of e.list){let r=t.parts[n.info.id]??nI;if(e.suspendPartUpdates){let i=e.suspendedPartUpdatesMessageID;if((!i||n.info.id===i)&&!LF(t.parts,n.info,r)&&!RF(n.parts,r))continue}if(qs(n.parts,r,n.info)!==n.parts)return!1}return!0},BF=(e,t,n,r)=>{let i=NF(e,t.sessionID,n,r);if(i&&i.sourceMessages===t.messages&&i.revertMessageID===t.revertMessageID&&i.suspendPartUpdates===n&&i.suspendedPartUpdatesMessageID===r&&zF(i,t))return i};function VF(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?fs(i,r):n.length===0?tI:i.slice(),revertMessageID:r}}function HF(e,t,n=!1,r){let i=e.sessionID,{sourceMessages:a,visibleMessages:o,revertMessageID:s}=VF(e,t),c=new Map,l=o.map(i=>{let a=t?.byId.get(i.id),o=e.parts[i.id]??nI,s=n&&a&&(!r||i.id===r)&&!LF(e.parts,i,o)&&!RF(a.parts,o)?a.parts:qs(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 UF(e,t){let n=GM(),r=t??n.directory;return id(e,r,UP(r))}function WF(e,t){let n=GM(),r=t??n.directory;return pd(e,r,UP(r))}function GF(e,t){let n=GM(),r=t??n.directory;return dd(e,r,UP(r))}function KF(e,t){let n=(0,H.c)(8),r=GM(),i=t??r.directory,a=UP(i),o=(0,K.useRef)(kM),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e)return o.current=kM,kM.history;let t=(U()??W(i,a)).getTranscript(G(i,e)),n=a.getState().session.find(t=>t.id===e)?.revert?.messageID,r=NM({sessionID:e,messages:Ku(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 qF;let n=(U()??W(i,a)).subscribe(G(i,e),()=>{t()}),r=gu(()=>{n(),n=(U()??W(i,a)).subscribe(G(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 qF(){}var JF=(e,t,n)=>({sessionID:e,directory:t,store:n,bindingRevision:_u(),transportIdentity:u(),generation:f()}),YF=(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 XF(e,t,n){let r=(0,H.c)(23),i=GM(),a=t??i.directory,o=UP(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:tI,visibleMessages:tI,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 wF;let t=(U()??W(a,o)).getTranscript(G(a,e)),r=!!n?.suspendPartUpdates,i=n?.suspendPartUpdatesForMessageId??void 0,s=Ku(t,m.current.sessionID===e?m.current.sourceMessages:NF(o,e,r,i)?.sourceMessages),c=o.getState().session.find(t=>t.id===e)?.revert?.messageID,l={sessionID:e,messages:s,parts:t.partsByMessageID,revertMessageID:c},u=BF(o,l,r,i);if(u)return m.current=u,u.list;let d=HF(l,m.current.sessionID===e?m.current:NF(o,e,r,i),r,i);return m.current=d,PF(o,d),d.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=JF(e,a,o);if(!e)return h.current={scope:t,list:wF},wF;if(!c){let e=h.current;if(e&&YF(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 ZF;if(!c){let e=gu(()=>{t()}),n=s(()=>{t()});return()=>{e(),n()}}Uu(a,e);let n=(U()??W(a,o)).subscribe(G(a,e),()=>{t()}),r=gu(()=>{n(),n=(U()??W(a,o)).subscribe(G(a,e),()=>{t()}),Wu(a,e),Uu(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 ZF(){}var QF=new Set;function $F(e,t){let n=SF(),r=t??n,i=UP(r),a=K.useRef(0);K.useEffect(()=>{if(!e)return;let t=U()??W(r,i),n=G(r,e),o=t.getTranscript(n),s=t.hasSession?.(n);if(qu(o,{resolved:s===!0||void 0}).renderable){vx({directory:r,sessionID:e,store:i});return}if(!i.getState().session.some(t=>t.id===e))return;let c=`${r}:${e}`;if(QF.has(c))return;let l=++a.current,u=()=>l!==a.current;QF.add(c),(async()=>{try{if(U())try{if(await wu(r,e),u())return;vx({directory:r,sessionID:e,store:i,isStale:u})}catch{if(u())return;await DN(r,e,i,{reason:`ensure-session-messages`,isStale:u})}else await DN(r,e,i,{reason:`ensure-session-messages`,isStale:u})}catch{}finally{QF.delete(c)}})()},[e,i,r])}function eI(e,t){let n=GM(),r=t??n.directory;return Ju(e,r,UP(r))}var tI=[],nI=[],rI=[],iI=[],aI=[],oI=()=>({requestID:fe(),queueItemID:fe(),operationID:fe(),messageID:he(`msg`)}),sI=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}:{}}),cI,lI=(e,t)=>{let n=e.establishing;if(!n||t&&n.draftID!==t||n.pending.length===0)return aI;if(cI&&cI.pending===n.pending&&cI.draftID===t)return cI.items;let r=n.pending.map(sI);return cI={pending:n.pending,draftID:t,items:r},r},uI=e=>t=>t.flights[e]??null,dI=e=>t=>!!e&&t.establishing?.draftID===e,fI=e=>t=>lI(t,e),pI=(e,t)=>({flightKind:e,inFlight:e!==null,establishing:t}),mI=De()((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??oI(),o=[...n.attachments??[]],s={kind:`pending-admission`,requestID:a.requestID,queueItemID:a.queueItemID,operationID:a.operationID,messageID:a.messageID||he(`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})),hI=De((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}}})),gI=class extends Error{status;code;constructor(e,t){super(`Message queue server request failed: ${t}`),this.name=`MessageQueueServerError`,this.status=e,this.code=t}},_I=`/api/openchamber/message-queue`,vI=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`]),yI=new Set([`revision`,`scopeID`,`queueItemID`,`rowVersion`,`removedQueueItemID`,`projectDirectory`,`token`,`state`,`scopeCount`,`statusCounts`]),bI=new Set([`scopeID`,`revision`,`directory`,`sessionID`,`worktreeState`,`itemCount`]),xI=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Z=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,SI=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),CI=async e=>{if(e.status===501)return`unavailable`;try{let t=await e.json();if(xI(t)&&typeof t.code==`string`&&vI.has(t.code))return t.code}catch{}return`unavailable`},wI=async(e,t)=>{let n;try{n=await _(e,t)}catch{throw new gI(0,`unavailable`)}if(!n.ok)throw new gI(n.status,await CI(n));try{return await n.json()}catch{throw new gI(n.status,`unavailable`)}},TI=()=>{throw new gI(200,`unavailable`)},EI=e=>xI(e)&&Object.getPrototypeOf(e)===Object.prototype,DI=e=>{if(!(!EI(e)||typeof e.text!=`string`||!Array.isArray(e.references)||e.references.some(e=>!EI(e))))return{text:e.text,references:e.references.map(e=>({...e}))}},OI=e=>Array.isArray(e)&&e.every(EI)?e.map(e=>({...e})):void 0,kI=e=>{if(!(!xI(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}}},AI=e=>xI(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,jI=e=>{if(!Array.isArray(e)||e.length===0||e.length>129)return null;let t=[],n=0;for(let r of e){if(!EI(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},MI=e=>{if(!Array.isArray(e)||e.length>64)return null;let t=new Set,n=[];for(let r of e){if(!EI(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},NI=e=>{if(!EI(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))||!EI(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},PI=e=>Array.isArray(e)&&e.map(NI).every(e=>e!==null)?e.map(NI):null,FI=e=>{if(!xI(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:DI(e.composerDocument),n=e.composerMentions===void 0?void 0:OI(e.composerMentions),r=e.sendConfig===void 0?void 0:kI(e.sendConfig),i=e.deliveryTarget===void 0?{kind:`primary`}:AI(e.deliveryTarget),a=e.deliveryParts===void 0?void 0:jI(e.deliveryParts),o=e.syntheticParts===void 0?void 0:MI(e.syntheticParts),s=e.attachmentIssues===void 0?void 0:OI(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:PI(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}:{}}},II=e=>{if(!xI(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(FI);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},LI=e=>xI(e)&&Object.keys(e).every(e=>bI.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,RI=e=>xI(e)&&typeof e.projectDirectory==`string`&&SI(e.orderedPaths)&&Z(e.revision)?{projectDirectory:e.projectDirectory,orderedPaths:e.orderedPaths,revision:e.revision}:null,zI=e=>{if(!xI(e)||!Z(e.revision)||!Array.isArray(e.scopes)||!Array.isArray(e.worktreeOrders))return TI();let t=e.scopes.map(LI),n=e.worktreeOrders.map(RI);return!t.every(e=>e!==null)||!n.every(e=>e!==null)?TI():{revision:e.revision,scopes:t,worktreeOrders:n}},BI=e=>!xI(e)||!Z(e.revision)||Object.keys(e).some(e=>!yI.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&&(!xI(e.statusCounts)||Object.values(e.statusCounts).some(e=>!Z(e)))?TI():{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}:{},...xI(e.statusCounts)?{statusCounts:e.statusCounts}:{}},VI=(e,t,n)=>({method:e,headers:{"Content-Type":`application/json`},body:JSON.stringify(t),signal:n}),HI=(e,t)=>{let{signal:n,...r}=t;return VI(e,r,n)},UI=async e=>zI(await wI(_I,{signal:e})),WI=new Map,GI=(e,t)=>`${c().api(_I)}\u0000${e}\u0000${t.offset??``}\u0000${t.limit??``}\u0000${t.expectedRevision??``}`,KI=async(e,t={})=>{if(t.signal?.aborted)throw new gI(0,`unavailable`);let n=GI(e,t),r=WI.get(n);if(r){let e=await r;if(t.signal?.aborted)throw new gI(0,`unavailable`);return e}let i=(async()=>II(await wI(`${_I}/scopes/${encodeURIComponent(e)}`,{query:{offset:t.offset,limit:t.limit,expectedRevision:t.expectedRevision},signal:t.signal}))??TI())().finally(()=>{WI.get(n)===i&&WI.delete(n)});return WI.set(n,i),i},qI=15e3,JI=(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:qI,a=!1,o=e=>{a||(a=!0,clearTimeout(l),c(),r?.removeEventListener(`abort`,s),n(e))},s=()=>o(`aborted`),c=Jt(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=Pt(`message-queue-changed`);if(u!==void 0&&u>e){o(`tip`);return}r?.addEventListener(`abort`,s,{once:!0})}),YI=async e=>{let t=await wI(`${_I}/status`,{signal:e}),n=new Set([`capability`,`authority`,`generation`,`activationEpoch`,`activatedAt`,`manifestHash`,`protocol`,`worker`]);return!xI(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&&(!xI(t.worker)||Object.keys(t.worker).some(e=>e!==`paused`&&e!==`active`)||typeof t.worker.paused!=`boolean`||!Z(t.worker.active))?TI():{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}:{},...xI(t.worker)?{worker:{paused:t.worker.paused,active:t.worker.active}}:{}}},XI=(e,t)=>Object.keys(e).length===t.length&&Object.keys(e).every(e=>t.includes(e)),ZI=e=>{let t=[`revision`,`importID`,`state`,`duplicate`,`manifestHash`,`commit`];if(!xI(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 TI();let n=e.commit===void 0?void 0:eL(e.commit);return e.commit!==void 0&&!n?TI():{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}:{}}},QI=e=>!xI(e)||!XI(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`?TI():{revision:e.revision,importID:e.importID,staged:!0,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{}},$I=e=>!xI(e)||!XI(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)?TI():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,state:`sealed`,itemCount:e.itemCount},eL=e=>!xI(e)||!XI(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)?TI():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,generation:e.generation,activationEpoch:e.activationEpoch,added:e.added},tL=e=>eL(e),nL=e=>eL(e),rL=(e,t)=>!xI(e)||!XI(e,[`authority`,`generation`,`revision`])||e.authority!==t||!Z(e.generation)||!Z(e.revision)?TI():{authority:t,generation:e.generation,revision:e.revision},iL=async e=>ZI(await wI(`${_I}/imports`,HI(`POST`,e))),aL=async(e,t)=>{let n=await wI(`${_I}/imports/${encodeURIComponent(e)}`,{signal:t});if(!xI(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 TI();let r=n.staged.map(e=>xI(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:eL(n.commit);return!r.every(e=>e!==null)||n.commit!==void 0&&!i?TI():{state:n.state,...typeof n.manifestHash==`string`?{manifestHash:n.manifestHash}:{},itemCount:n.itemCount,staged:r,...i?{commit:i}:{}}},oL=async(e,t)=>QI(await wI(`${_I}/imports/${encodeURIComponent(e)}/items`,HI(`POST`,t))),sL=async(e,t)=>$I(await wI(`${_I}/imports/${encodeURIComponent(e)}/seal`,HI(`POST`,t))),cL=async(e,t)=>tL(await wI(`${_I}/imports/${encodeURIComponent(e)}/activate`,HI(`POST`,t))),lL=async(e,t)=>nL(await wI(`${_I}/imports/${encodeURIComponent(e)}/late-commit`,HI(`POST`,t))),uL=async e=>rL(await wI(`${_I}/authority/pause`,HI(`POST`,e)),`paused`),dL=async e=>rL(await wI(`${_I}/authority/resume`,HI(`POST`,e)),`active`),fL=async(e={})=>{let t=await wI(`${_I}/attachments/uploads`,HI(`POST`,e));return!xI(t)||typeof t.uploadID!=`string`||typeof t.uploadToken!=`string`||!Z(t.expiresAt)?TI():{uploadID:t.uploadID,uploadToken:t.uploadToken,expiresAt:t.expiresAt}},pL=async(e,t,n,r)=>{let i;try{i=await _(`${_I}/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 gI(0,`unavailable`)}if(!i.ok)throw new gI(i.status,await CI(i))},mL=e=>!xI(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)?TI():{revision:e.revision,scopeID:e.scopeID,queueItemID:e.queueItemID,rowVersion:e.rowVersion,token:e.token,expiresAt:e.expiresAt,generation:e.generation},hL=e=>!xI(e)||typeof e.queueItemID!=`string`||typeof e.token!=`string`||!Z(e.generation)||!Z(e.expiresAt)?TI():{queueItemID:e.queueItemID,token:e.token,generation:e.generation,expiresAt:e.expiresAt},gL=async(e,t)=>mL(await wI(`${_I}/items/${encodeURIComponent(e)}/reserve`,HI(`POST`,t))),_L=async(e,t)=>{await wI(`${_I}/items/${encodeURIComponent(e)}/release`,HI(`POST`,t))},vL=async(e,t)=>hL(await wI(`${_I}/items/${encodeURIComponent(e)}/edit-reservations/${encodeURIComponent(t.token)}/renew`,HI(`POST`,t))),yL=async(e,t)=>BI(await wI(`${_I}/items/${encodeURIComponent(e)}/reserved-remove`,HI(`DELETE`,t))),bL=async(e,t,n)=>{let r;try{r=await _(`${_I}/items/${encodeURIComponent(e)}/attachments/${encodeURIComponent(t.attachmentID)}/content`,{signal:n})}catch{throw new gI(0,`unavailable`)}if(!r.ok)throw new gI(r.status,await CI(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 gI(r.status,`unavailable`);let s;try{s=await r.blob()}catch{throw new gI(r.status,`unavailable`)}if(s.size!==t.size)throw new gI(r.status,`unavailable`);let c=new Blob([s],{type:i});return c.type===i?c:Object.defineProperty(c,"type",{value:i})},xL=async e=>BI(await wI(`${_I}/items`,HI(`POST`,e))),SL=async(e,t)=>BI(await wI(`${_I}/items/${encodeURIComponent(e)}`,HI(`PATCH`,t))),CL=async(e,t)=>BI(await wI(`${_I}/items/${encodeURIComponent(e)}/send`,HI(`POST`,t))),wL=async(e,t)=>BI(await wI(`${_I}/items/${encodeURIComponent(e)}`,HI(`DELETE`,t))),TL=async(e,t)=>BI(await wI(`${_I}/scopes/${encodeURIComponent(e)}/order`,HI(`PUT`,t))),EL=async(e,t)=>RI(await wI(`${_I}/worktrees/order`,{query:{projectDirectory:e},signal:t}))??TI(),DL=async e=>BI(await wI(`${_I}/worktrees/order`,HI(`PUT`,e))),OL=(e=u())=>P.messageQueue.snapshot(e),kL=(e=u())=>P.messageQueue.status(e),AL=(e,t,n=u())=>P.messageQueue.scope(e,t,n),jL=(e=u())=>({queryKey:kL(e),queryFn:({signal:e})=>YI(e),retry:!1,staleTime:3e4}),ML=(e=u())=>({queryKey:OL(e),queryFn:({signal:e})=>UI(e),staleTime:5e3}),NL=(e=R,t=u())=>e.fetchQuery(jL(t)),PL=(e=R,t=u())=>e.fetchQuery(ML(t)),FL=async(e=R,t=u())=>e.fetchQuery({...jL(t),staleTime:0}),IL=async(e=R,t=u())=>e.fetchQuery({...ML(t),staleTime:0}),LL=(e,t,n=u())=>{e.setQueryData(AL(t.scopeID,t.revision,n),{pages:[t],pageParams:[0]})},RL=(e,t,n=u())=>{e.setQueryData(kL(n),t)},zL=(e,t,n=u())=>{e.setQueryData(OL(n),t)},BL=(e,t,n,r=u())=>{let i=e.getQueryData(AL(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},VL=(e,t=u())=>e.removeQueries({queryKey:[t,`messageQueue`,`scope`],exact:!1}),HL=(e,t,n=u())=>e.removeQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),UL=(e,t,n=u())=>e.invalidateQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),WL=`openchamber_message_queue_ledger_v4`,GL=`message-queue-store`,KL={scopes:128,totalItems:2048,attachmentsPerItem:64,issuesPerItem:64,string:8192,content:2e5,dataURL:26214400,bytes:26214400},qL=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,JL=(e,t)=>Object.keys(e).every(e=>t.includes(e)),YL=(e,t=KL.string)=>typeof e==`string`&&e.length>0&&e.length<=t,XL=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,ZL=e=>JSON.parse(JSON.stringify(e)),QL=(e,t,n,r)=>{let i=qL(t)?t:{};return{...e?{scopeKey:e}:{},...YL(i.queueItemID)?{queueItemID:i.queueItemID}:{},...YL(i.operationID)?{operationID:i.operationID}:{},path:n,reason:r}},$L=e=>e.state===`bound`?`bound:${JSON.stringify([e.transportIdentity,e.directory,e.sessionID])}`:`unbound-legacy:${JSON.stringify([e.sessionID])}`,eR=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=nR(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&&$L(n)===e?n:void 0},tR=()=>({version:4,queues:{},migration:{v3State:`pending`}}),nR=e=>!qL(e)||!YL(e.state)?void 0:e.state===`bound`&&JL(e,[`state`,`transportIdentity`,`directory`,`sessionID`])&&YL(e.transportIdentity)&&YL(e.directory)&&YL(e.sessionID)?{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID}:e.state===`unbound-legacy`&&JL(e,[`state`,`sessionID`])&&YL(e.sessionID)?{state:`unbound-legacy`,sessionID:e.sessionID}:void 0,rR=(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}},iR=[`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`serverPath`,`vscodePath`,`vscodeSource`],aR=e=>{if(!YL(e.attachmentID)||!YL(e.occurrenceRefID)||!rR(e.occurrenceRefID,e.attachmentID)||!YL(e.filename)||typeof e.mimeType!=`string`||e.mimeType.length>KL.string||!XL(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`&&YL(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&&YL(e.vscodePath)&&(e.vscodeSource===`file`||e.vscodeSource===`selection`))return{...t,source:`vscode`,vscodePath:e.vscodePath,vscodeSource:e.vscodeSource}},oR=e=>{if(!qL(e)||!JL(e,[...iR,`version`,`locator`])||e.version!==1)return;let t=aR(e);if(!t||!qL(e.locator))return;let n=e.locator.kind===`blob`&&JL(e.locator,[`kind`,`blobID`])&&YL(e.locator.blobID)?{kind:`blob`,blobID:e.locator.blobID}:e.locator.kind===`url`&&JL(e.locator,[`kind`,`url`])&&ie(e.locator.url)?{kind:`url`,url:e.locator.url}:void 0;return n?{version:1,...t,locator:n}:void 0},sR=e=>{if(!qL(e)||!JL(e,[...iR,`reason`]))return;let t=aR(e);return t&&[`legacy-blob-url`,`legacy-bytes-missing`,`legacy-unbound-data`,`missing-blob`].includes(e.reason)?{...t,reason:e.reason}:void 0},cR=(e,t)=>{if(!qL(e)||!JL(e,[`text`,`references`])||typeof e.text!=`string`)return;let n=Ce(e.text,e.references),r=n&&_e(n,`queue-canonical`);return r&&r.ok&&r.text===t?n:void 0},lR=(e,t)=>{if(e===void 0)return[];if(!t)return;let n=ae(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},uR=(e,t)=>{if(!qL(e)||!JL(e,[`version`,`queueItemID`,`operationID`,`messageID`,`owner`,`content`,`composerDocument`,`composerMentions`,`attachments`,`attachmentIssues`,`createdAt`,`sendConfig`,`status`,`attemptCount`,`nextAttemptAt`,`reconciliationStartedAt`,`reconciliationDeadlineAt`,`reconciliationChecks`,`reconciliationNextCheckAt`,`failureKind`])||e.version!==1||!YL(e.queueItemID)||!YL(e.operationID)||!YL(e.messageID)||typeof e.content!=`string`||e.content.length>KL.content||!XL(e.createdAt)||!XL(e.attemptCount)||!Array.isArray(e.attachments)||e.attachments.length>KL.attachmentsPerItem||!Array.isArray(e.attachmentIssues)||e.attachmentIssues.length>KL.issuesPerItem||![`queued`,`sending`,`retrying`,`reconciling`,`unresolved`,`failed`].includes(e.status))return;let n=nR(e.owner),r=e.attachments.map(oR),i=e.attachmentIssues.map(sR),a=e.composerDocument===void 0?void 0:cR(e.composerDocument,e.content),o=lR(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?oe(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&&(!qL(e.sendConfig)||!JL(e.sendConfig,[`providerID`,`modelID`,`agent`,`variant`])||!YL(e.sendConfig.providerID)||!YL(e.sendConfig.modelID)||[e.sendConfig.agent,e.sendConfig.variant].some(e=>e!==void 0&&!YL(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&&!XL(e))||!m)return;let h=e.status===`sending`&&t,g=h?e.createdAt+3e4:e.reconciliationDeadlineAt;if(h&&!XL(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:ZL(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}:{}}},dR=(e,t={})=>{let n=e=>({status:`corrupt`,snapshot:tR(),issues:[QL(void 0,void 0,`$`,e)],degradedScopeKeys:[]});if(!qL(e)||!JL(e,[`version`,`queues`,`migration`])||e.version!==4||!qL(e.queues)||!qL(e.migration)||!JL(e.migration,[`v3State`])||![`pending`,`complete`,`degraded`].includes(e.migration.v3State)||Object.keys(e.queues).length>KL.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(QL(e,t,n,r)),o.add(e)};for(let[a,d]of Object.entries(e.queues)){if(!eR(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>KL.totalItems)return n(`item-limit`);let f=d[i],p=`$.queues.${JSON.stringify(a)}[${i}]`,m=uR(f,t.normalizeSending===!0);if(!m||$L(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:ZL({version:4,queues:i,migration:{v3State:e.migration.v3State}}),issues:a,degradedScopeKeys:[...o]}},fR=e=>{let t=dR(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`}}}},pR=()=>({ok:!1,error:{code:`unavailable`}}),mR=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),hR=e=>({read:async t=>{if(!e)return pR();try{return{ok:!0,value:e.getItem(t)}}catch(e){return mR(e)}},write:async(t,n)=>{if(!e)return pR();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return mR(e)}},remove:async t=>{if(!e)return pR();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return mR(e)}}}),gR=()=>{try{return hR(typeof window>`u`?null:window.localStorage)}catch{return hR(null)}},_R=async e=>{let t=await e.read(WL);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}};try{let e=dR(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:[QL(void 0,void 0,`$`,`json`)],degradedScopeKeys:[]}}}},vR=async e=>{let t=await _R(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},yR=async(e,t)=>{let n=fR(t);return n.ok?e.write(WL,n.value):n},bR=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,yR(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:()=>_R(e),read:()=>vR(e),persist:e=>{if(!t)return Promise.resolve({ok:!1,error:{code:`cancelled`}});let r=dR(e);if(r.status===`corrupt`||r.issues.length)return Promise.resolve({ok:!1,error:{code:`corrupt`}});let i=ZL(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}},xR=KL.string,SR=KL.dataURL,CR=KL.bytes,wR=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,TR=(e,t,n=!1)=>typeof e==`string`&&e.length<=xR&&(n||e.length>0)?e:t,ER=(e,t=0)=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0?e:t,DR=(e,t)=>$L(e)===$L(t),OR=(e,t,n,r)=>({scopeKey:e,queueItemID:t,path:n,reason:r}),kR=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(``)}`},AR=e=>typeof e==`string`&&e.length>0&&e.length<=xR,jR=e=>eR(e)??(AR(e)?{state:`unbound-legacy`,sessionID:e}:void 0),MR=e=>{if(wR(e)){if(e.state===`bound`&&AR(e.transportIdentity)&&AR(e.directory)&&AR(e.sessionID))return{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID};if(e.state===`unbound-legacy`&&AR(e.sessionID))return{state:`unbound-legacy`,sessionID:e.sessionID}}},NR=e=>{if(e.length>SR)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>CR)return;e=Uint8Array.from(t,e=>e.charCodeAt(0))}else if(e=new TextEncoder().encode(decodeURIComponent(a)),e.byteLength>CR)return;let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),new Blob([t],{type:i})}catch{return}},PR=e=>wR(e)&&AR(e.providerID)&&AR(e.modelID)&&(e.agent===void 0||AR(e.agent))&&(e.variant===void 0||AR(e.variant))?{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}:void 0,FR=async(e,t)=>{let n=await _R(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:[OR(``,``,`$.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=>OR(e.scopeKey??``,e.queueItemID??``,e.path,e.reason)),cleanupErrors:[]};let r=await e.read(GL);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={...tR(),migration:{v3State:`complete`}},n=await yR(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:[OR(``,``,`$`,`legacy-json`)],cleanupErrors:a}}let l=wR(c)&&wR(c.state)?c.state.queuedMessages:wR(c)?c.queuedMessages:void 0;if(!wR(l))return{status:`failed`,error:{code:`corrupt`},issues:[OR(``,``,`$.state.queuedMessages`,`legacy-state`)],cleanupErrors:a};let u={...tR(),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>=KL.scopes){i.push(OR(n,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-scope-limit`));break}let c=jR(n),l=c?$L(c):n;if(!c||!Array.isArray(r)){i.push(OR(l,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-queue`));continue}for(let e=0;e<r.length;e++){if(m>=KL.totalItems){i.push(OR(l,``,`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,`legacy-item-limit`));break}m++;let h=`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,g=wR(r[e])?r[e]:void 0;if(!g||typeof g.content!=`string`||g.content.length>131072){i.push(OR(l,``,h,`legacy-item`));continue}let _=MR(g.owner);if(g.owner!==void 0&&(!_||!DR(c,_))){i.push(OR(l,AR(g.queueItemID)?g.queueItemID:``,h,`owner-conflict`));continue}let v=JSON.stringify([n,e,g.content]),y=AR(g.queueItemID)?g.queueItemID:AR(g.id)?g.id:await kR(`queue`,v),b=AR(g.operationID)?g.operationID:await kR(`operation`,`${v}:operation`),x=AR(g.messageID)?g.messageID:await kR(`message`,`${v}:message`);if(d.has(y)||f.has(b)||p.has(x)){i.push(OR(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(OR(l,y,`${h}.attachments`,`legacy-attachments`));for(let e=0;e<T.length&&e<KL.attachmentsPerItem;e++){let n=wR(T[e])?T[e]:void 0,r=`${h}.attachments[${e}]`;if(!n){i.push(OR(l,y,r,`legacy-attachment`));continue}let u=AR(n.id)?n.id:await kR(`attachment`,`${v}:attachment:${e}`),d=ue(u),f=TR(n.filename,u),p=TR(n.mimeType,``,!0),m=ER(n.size);if(w.has(d)){i.push(OR(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`?AR(n.serverPath)&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`vscode`&&AR(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(OR(l,y,r,e))};if(c.state===`unbound-legacy`){O(`legacy-unbound-data`);continue}if(!g){i.push(OR(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(ie(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=NR(k);if(!A){O(`legacy-bytes-missing`);continue}let j=await kR(`legacy-blob`,`${y}:${u}`),ee={transportIdentity:c.transportIdentity,owner:{kind:`queue`,ownerID:y},attachmentOccurrenceRefID:d},te=await t.readReference(ee);if(!te.ok||te.value!==void 0&&te.value!==j||!(await t.putAndRetain(ee,j,A)).ok)return await s(),{status:`failed`,error:{code:`unavailable`},issues:i,cleanupErrors:a};te.value===void 0&&o.push({reference:ee,blobID:j,issue:OR(l,y,r,`blob-retain`)}),S.push({version:1,...D,mimeType:A.type,size:A.size,locator:{kind:`blob`,blobID:j}})}T.length>KL.attachmentsPerItem&&i.push(OR(l,y,`${h}.attachments`,`legacy-attachment-limit`));let E=ER(g.createdAt),D=typeof g.status==`string`?g.status:`queued`,O=wR(g.failure)?g.failure.kind:g.failureKind,k=O===`pre-dispatch`||O===`ambiguous-dispatch`||O===`definitive`?O:void 0,A=D===`retrying`||k===`pre-dispatch`,j=D===`sending`||D===`reconciling`||k===`ambiguous-dispatch`,ee=D===`unresolved`&&C.length===0,te=C.length>0,ne=ER(g.reconciliationStartedAt,E),re=ER(g.reconciliationDeadlineAt,-1),M=ne>2**53-1-3e4?ne:ne+3e4,N=Math.max(ne,re>=0?re:M),oe=ER(g.reconciliationChecks),se=ER(g.reconciliationNextCheckAt,ne);j&&re<0&&ne>2**53-1-3e4&&i.push(OR(l,y,`${h}.reconciliationDeadlineAt`,`reconciliation-deadline-overflow`));let ce=te||ee||c.state===`unbound-legacy`&&j?`unresolved`:A?`retrying`:j?`reconciling`:D===`failed`||k===`definitive`?`failed`:`queued`,le=ce===`reconciling`||ce===`unresolved`&&!te,P=wR(g.composerDocument)&&typeof g.composerDocument.text==`string`?Ce(g.composerDocument.text,g.composerDocument.references):void 0,de=P&&_e(P,`queue-canonical`);g.composerDocument!==void 0&&(!de||!de.ok||de.text!==g.content)&&i.push(OR(l,y,`${h}.composerDocument`,`degraded-composer-document`));let fe=de&&de.ok&&de.text===g.content?P:void 0,pe=fe?ae(fe.text,g.composerMentions):void 0,F=pe&&!pe.some(e=>fe.references.some(t=>e.range.start<t.end&&t.start<e.range.end));g.composerMentions!==void 0&&!F&&i.push(OR(l,y,`${h}.composerMentions`,`degraded-composer-mentions`));let me={version:1,queueItemID:y,operationID:b,messageID:x,owner:c,content:g.content,...fe?{composerDocument:fe}:{},...F&&pe.length?{composerMentions:pe}:{},attachments:S,attachmentIssues:C,createdAt:E,...PR(g.sendConfig)?{sendConfig:PR(g.sendConfig)}:{},status:ce,attemptCount:ER(g.attemptCount),...ce===`retrying`?{nextAttemptAt:ER(g.nextAttemptAt,E),failureKind:`pre-dispatch`}:le?{reconciliationStartedAt:ne,reconciliationDeadlineAt:N,reconciliationChecks:oe,reconciliationNextCheckAt:se,failureKind:`ambiguous-dispatch`}:ce===`failed`?{failureKind:`definitive`}:{}};(u.queues[l]??=[]).push(me)}}i.length&&(u.migration.v3State=`degraded`);let g=await yR(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})},IR=(e,t)=>JSON.stringify(e)===JSON.stringify(t),LR=(e,t=[])=>({status:e,errors:t,cleanupErrors:[]}),RR=e=>e.status===`sending`||e.status===`reconciling`,zR=(e,t,n={})=>{let r={hydration:`idle`,snapshot:tR(),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]=IR(r.snapshot.queues[n],i)?r.snapshot.queues[n]:i;let n=IR(r.snapshot.queues,t)&&IR(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&&$L(t.owner)===e.scopeKey?t:void 0},d=()=>r.hydration===`idle`||r.hydration===`hydrating`?LR(`unseeded`):r.hydration===`recovery-required`?LR(`recovery-required`,[...r.issues]):r.hydration===`failed`?LR(`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=()=>LR(`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)):LR(`stale`))),materializeForEdit:(t,n=p())=>l(async()=>{let r=d(),i=u(t);if(r)return r;if(!i||!m(i,n))return LR(`stale`);if(RR(i))return LR(`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`?LR(`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 LR(`stale`);try{let a=await e.releaseSend(t,n,r);return a.status!==`stale`&&h.delete(i),a}catch{return h.delete(i),LR(`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{...LR(`stale`),durableRemoval:!1};if(RR(f))return{...LR(`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{...LR(`stale`),durableRemoval:!1};if(_(t))return{...v(),durableRemoval:!1};if(RR(a))return{...LR(`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=>RR(e)||!m(e,i))?LR(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.reorder(t,n,i)):LR(`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)?LR(`stale`):_(t)?v():RR(a)?LR(`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||RR(e)||!m(e,r))||n.transportIdentity!==r.transportIdentity?LR(`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)?LR(`stale`):_(t)?LR(`failed`,[{phase:`identity`,code:`reserved`}]):(Array.isArray(n)?n:[n]).includes(o.status)?f(()=>e.transition(t,r,i)):LR(`stale`))}),confirm:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?LR(`stale`):_(t)?LR(`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)?LR(`stale`):_(t)?LR(`failed`,[{phase:`identity`,code:`reserved`}]):e.acquireSendPayload(t,n))}),releaseSend:(t,n,r=p())=>l(async()=>e.releaseSend(t,n,r))}},BR=e=>JSON.parse(JSON.stringify(e)),Q=(e,t=[],n=[],r)=>({status:e,...r===void 0?{}:{current:r},errors:t,cleanupErrors:n}),VR=(e,t)=>e.queueItemID===t.queueItemID&&e.operationID===t.operationID&&e.messageID===t.messageID,HR=(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,UR=e=>JSON.stringify(e),WR=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}),GR=e=>`${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,KR=e=>typeof e==`number`&&Number.isSafeInteger(e),qR=(e,t)=>{if(UR(WR(e))!==UR(WR(t))||!KR(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&&!KR(e))||e.status===`reconciling`&&t.status===`reconciling`&&(t.reconciliationStartedAt!==e.reconciliationStartedAt||t.reconciliationDeadlineAt!==e.reconciliationDeadlineAt||(t.reconciliationChecks??0)<(e.reconciliationChecks??0)))},JR=e=>{if(!e.composerDocument)return!0;let t=new Set(e.composerDocument?oe(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))},YR=(e,t,n={})=>{let r=tR(),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=>VR(t,e)),_=(e,t,n,r,i)=>({phase:e,code:t,...n?{scopeKey:$L(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=HR(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(xe(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(xe(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(xe(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?dR(u,{normalizeSending:!0}):{status:`ok`,snapshot:tR(),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:()=>BR(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=$L(t.owner),l=BR(r);l.queues[s]=[...l.queues[s]??[],t];let d=dR(l);if(!JR(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(xe(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(BR(o)),u=BR(r),d=$L(o.owner);u.queues[d]=u.queues[d].map(t=>VR(t,e)?l:t);let f=dR(u);if(!VR(l,e)||!qR(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=BR(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=$L(o.owner),l=r.queues[s];if(!l||l.length!==1||!VR(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={...BR(o),owner:t},f=dR({version:4,queues:{[$L(t)]:[d]},migration:r.migration});if(f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let p=BR(r),m=s,h=$L(t);p.queues[m]=p.queues[m].filter(t=>!VR(t,e)),p.queues[m].length||delete p.queues[m],p.queues[h]=[d,...p.queues[h]??[]];let v=dR(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[$L(s)];if(!l||l.length!==e.length||o.some(e=>UR(e.owner)!==UR(s)||e.attachments.length)||l.some((t,n)=>!VR(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=>({...BR(e),owner:t})),p=BR(r),m=$L(s),h=$L(t);p.queues[m]=p.queues[m].filter(e=>!d.some(t=>VR(e,t))),p.queues[m].length||delete p.queues[m],p.queues[h]=[...f,...p.queues[h]??[]];let v=dR(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(GR(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(xe(e.reference),e);return f.set(GR(t),{token:m,identity:t,held:u}),{...Q(`committed`,[],[],!0),token:m,values:l}}),releaseSend:(e,t)=>m(async()=>{let n=f.get(GR(e));if(typeof t!=`string`||!n||n.token!==t)return Q(`stale`);f.delete(GR(e));let r=[];for(let e of n.held)d.delete(xe(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=BR(r);for(let[t,n]of Object.entries(s.queues)){let r=n.filter(t=>!VR(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(GR(e));f.delete(GR(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(xe(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}}},XR=()=>{let e=gR(),t=bR(e),n=Kn();return{controller:zR(YR(n,t),()=>{let e=u(),t=f();return{transportIdentity:e,generation:t,isCurrent:()=>u()===e&&f()===t}}),migrate:async()=>FR(e,n)}},ZR=(e=XR)=>{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)}},QR,$R=()=>QR??=ZR(),ez=26214400,tz=52428800,nz=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),rz=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>ez)throw RangeError(`message-queue-attachment-too-large`);n+=e}if(n>tz)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 fL({signal:t});await pL(e,n.value,await nz(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}},iz,az=()=>{let e=`openchamber:message-queue-import-client-id`;try{let t=globalThis.localStorage,n=t.getItem(e);if(n)return n;let r=fe();return t.setItem(e,r),r}catch{return iz??=fe()}},oz={queue:void 0,capture:()=>({transportIdentity:``,generation:0}),current:()=>!0,admit:xL,create:iL,details:aL,stage:oL,seal:sL,upload:rz,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:()=>{}},sz=e=>({scopeKey:$L(e.owner),queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}),cz=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(``)}`,lz=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}}),uz=e=>Array.isArray(e)?`[${e.map(uz).join(`,`)}]`:e&&typeof e==`object`?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${uz(e[t])}`).join(`,`)}}`:JSON.stringify(e),dz=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(uz(e))))].map(e=>e.toString(16).padStart(2,`0`)).join(``),fz=e=>{let t={...oz,...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(sz(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:lz(s)}};n||(p=`admit`,await t.admit({requestID:await cz(s.operationID),..._,signal:o})),e.push({item:s,scopeOrdinal:h,itemOrdinal:g,payload:_,payloadHash:await dz(_)}),f++}finally{await t.queue.releaseSend(sz(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 dz(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=az(),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})}}}},pz=e=>typeof e==`object`&&!!e&&e.kind===`pending-admission`,mz=(e,t)=>e.then(e=>{if(t?.aborted)throw new DOMException(`Aborted`,`AbortError`);return e}),hz={snapshot:e=>mz(IL(R),e),status:e=>mz(NL(R),e),scope:KI,waitInvalidation:JI,admit:xL,edit:SL,remove:wL,reserve:gL,renew:vL,release:_L,removeReserved:yL,reorder:TL,manualSend:CL,upload:rz,client:R,capture:()=>({transportIdentity:u(),generation:f()}),current:e=>e.transportIdentity===u()&&e.generation===f(),legacyManualSend:async()=>{},shadowQueue:$R,admissionUploadTimeoutMs:12e4,admissionRequestTimeoutMs:2e4,admissionReconcileTimeoutMs:2e4},gz=e=>e instanceof gI&&(e.code===`revision_conflict`||e.code===`row_version_conflict`),_z=e=>e instanceof gI&&e.code===`unavailable`,vz=8,yz=(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))]},bz=e=>`${e.transportIdentity}\u0000${M(e.directory)}\u0000${e.sessionID}`,xz=(e,t)=>new Promise(n=>{let r=setTimeout(n,e);t.addEventListener(`abort`,()=>{clearTimeout(r),n()},{once:!0})}),Sz=(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 gI(0,`unavailable`)):r.signal.addEventListener(`abort`,()=>t(new gI(0,`unavailable`)),{once:!0})});return Promise.race([Promise.resolve().then(()=>e(r.signal)),o]).finally(()=>{i!==void 0&&clearTimeout(i),t?.removeEventListener(`abort`,a)})},Cz=(e={})=>{let t={...hz,...e},n={...t,snapshot:e.snapshot??(e=>mz(IL(t.client,t.capture().transportIdentity),e)),status:e.status??(e=>mz(NL(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?bz({transportIdentity:n,directory:a.directory,sessionID:a.sessionID}):r?bz({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)=>{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 gI(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 gI(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}),S=e=>Math.max(n.client.getQueryData([e.transportIdentity,`messageQueue`,`snapshot`])?.revision??0,...[...r.scopes.values()].map(e=>e.revision)),C=(e,t)=>{if(!h(t))return;let i=r.scopes.get(e.scopeID);if(i&&i.revision>e.revision)return;LL(n.client,e,t.transportIdentity);let a=bz({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},w=(e,t,i)=>{if(!h(i)||e.revision<S(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)LL(n.client,e,i.transportIdentity);if(zL(n.client,e,i.transportIdentity),e.scopes.length===0)VL(n.client,i.transportIdentity);else for(let e of o.keys())a.has(e)||HL(n.client,e,i.transportIdentity);y(e.scopes,i);for(let e of t){let t=bz({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},T=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)||(RL(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)));w(a,s,e)&&m({hydration:`ready`})}catch(n){if(!h(e)||t.aborted)return;m({capability:n instanceof gI&&n.status===501?`unsupported`:`error`,hydration:`error`,error:n})}finally{h(e)&&m({isFetching:!1})}},E=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`;w(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`},D=async()=>{await T();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 E(a,r);if(t===`aborted`||t===`stale`)return;let i=S(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 gI&&n.code===`revision_conflict`){e=0;continue}m({error:n,isFetching:!1}),await xz(Math.min(3e4,500*2**e++),r)}}},O=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 C(c,t)??BL(n.client,e,r.scopes.get(e)?.revision??s.revision,t.transportIdentity)},k=async(e,t,i,a)=>{let o=r.scopes.get(e),s=o&&o.revision>=t?BL(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 C(u,i)},A=async(e,t,i)=>{let a=_(),o=t;for(let t=0;t<vz;t++){let s=r.scopes.get(e),c=s?BL(n.client,e,s.revision,a.transportIdentity):void 0,l;try{try{l=(await i(o,c)).revision}catch(e){if(!_z(e)||!h(a))throw e;l=(await i(o,c)).revision}}catch(n){if(gz(n)&&t+1<vz){let t=await O(e,a,n);if(!t)return{status:`stale`};o=t.revision;continue}throw await O(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 O(e,a,new gI(409,`revision_conflict`));if(!t)return u({status:`stale`});await UL(n.client,e,a.transportIdentity);let i=r.scopes.get(e);return u({status:`committed`,scope:i?BL(n.client,e,i.revision,a.transportIdentity):t})}catch(r){if(gz(r)&&!t)continue;return h(a)?(m({error:r}),UL(n.client,e,a.transportIdentity).catch(()=>{}),u({status:`committed`})):u({status:`stale`})}}throw new gI(409,`revision_conflict`)},j,ee=()=>{i?.abort(),i=void 0,o=void 0},te=()=>{j!==void 0&&(clearTimeout(j),j=void 0),!i&&(i=new AbortController,D())},ne=()=>{j!==void 0&&clearTimeout(j),j=setTimeout(()=>{j=void 0,a||ee()},0)};return{subscribe:e=>(s.add(e),()=>s.delete(e)),subscribeScope:(e,t)=>{let n=bz(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=>M(t.directory)===M(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=BL(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(bz(e))??d:d},start:()=>{a++,_(),te()},stop:()=>{a=Math.max(0,a-1),a||ne()},restart:()=>{j!==void 0&&(clearTimeout(j),j=void 0),ee(),g(n.capture()),a&&te()},refresh:T,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 fz({queue:n.shadowQueue(),capture:()=>e,current:h,existing:()=>[...r.scopes.values()].flatMap(t=>BL(n.client,t.scopeID,t.revision,e.transportIdentity)?.items??[]),refresh:T,publish:t=>{h(e)&&m({importState:t})}}).run(i?.signal)})().finally(()=>{o===e&&(o=void 0)});return o=e,e},pause:async e=>{await uL({expectedGeneration:e,signal:i?.signal}),await T()},resume:async e=>{await dL({expectedGeneration:e,signal:i?.signal}),await T()},stageAdmission:({requestID:e,scope:t,item:n})=>{let r=bz({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=bz({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=bz({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 Sz(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 Sz(e=>n.admit({...v,signal:e}),i?.signal,n.admissionRequestTimeoutMs)}catch(e){if(!h(o))return m(),{status:`stale`};if(!(e instanceof gI)||e.code!==`unavailable`)throw m(),e;f({...l,phase:`ambiguous`});try{y=await Sz(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?Sz(e=>k(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})=>A(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})=>A(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 gI)||e.code!==`not_found`)throw e;let n=await O(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<vz;a++){let d=r.scopes.get(t),f=(d?BL(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(!gz(e)||a+1>=vz)throw e;let n=await O(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 T())},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<vz;a++){let d=r.scopes.get(t),f=(d?BL(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 O(t,l,new gI(404,`not_found`)).catch(()=>void 0),await T(),!0):!1}catch(e){if(!gz(e)||a+1>=vz)throw e;let n=await O(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})=>A(t,r,(r,o)=>n.reorder(t,{requestID:e,expectedRevision:r,queueItemIDs:yz(a,o),signal:i?.signal})),manualSend:async({requestID:e,scopeID:t,revision:a,item:o})=>{if(r.authority===`active`||r.authority===`paused`)return A(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 gI(0,`unavailable`)}}},wz,Tz=()=>wz??=Cz(),Ez=new WeakMap,Dz=e=>{let t=e,n=Ez.get(t);if(n)return n.refs++,()=>{n.refs--,n.refs||(n.unsubscribe(),Ez.delete(t))};let r={refs:1,unsubscribe:s(t=>{p(t)&&e.restart()})};return Ez.set(t,r),()=>{r.refs--,r.refs||(r.unsubscribe(),Ez.delete(t))}},Oz=(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:kz(r),semantics:i}},kz=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)})},Az=`The user referenced these OpenCode sessions (id, title, owning directory). 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. To read any referenced session yourself, query the OpenCode SQLite store read-only (replace SESSION_ID): sqlite3 "file:$HOME/.local/share/opencode/opencode.db?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". If that file does not exist, resolve the OpenChamber-hosted store first (ls -d "$HOME/Library/Application Support/OpenChamber"*/openchamber-data/xdg-data/opencode/opencode.db) and use its path in the same file: URI. The database is live — always open it read-only as shown.
406
+ `,jz=e=>{if(!e.startsWith(Az))return[];try{let t=JSON.parse(e.slice(Az.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[]}},Mz=e=>e.length===0?null:e.map(e=>`[skill:${e}]`).join(` `),Nz=(e,t=36e3)=>{if(e.length===0)return null;let n=Az,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(`,`)}]`},Pz=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}},Fz=(e,t)=>{let{sessionIds:n,skillNames:r}=Pz(e),i=n.flatMap(e=>{let n=Nd(e,t);if(!n)return[];let r=Ad(n).find(t=>t.id===e);if(!r)return[];let i=Pd(e,n).flatMap(e=>{let t=Fd(e.id,n).filter(e=>e.type===`text`&&!em(e)).map(e=>`text`in e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(`
407
+ `);return t?[{role:e.role,text:t}]:[]});return[{id:r.id,title:r.title||r.id,directory:n,messages:i}]}),a=[],o=Mz(r);o&&a.push({text:o,synthetic:!0});let s=Nz(i);return s&&a.push({text:s,synthetic:!0}),a},Iz=50,Lz=15e4,Rz=e=>{let t=0;for(let n of Object.values(e.partsByMessageID))for(let e of n){let n=e;n.type===`text`&&!em(n)&&typeof n.text==`string`&&(t+=n.text.length)}return t},zz=async(e,t,n)=>{let{sessionIds:r}=Pz(e);if(r.length===0)return;let i=U();if(!i)return;let a=n?.maxPages??Iz,o=n?.maxChars??Lz;await Promise.all(r.map(async e=>{let n=Nd(e,t);if(!n)return;let r=G(n,e),s=i.getTranscript(r);s.messageOrder.length===0&&(await wu(n,e),s=i.getTranscript(r));let c=0;for(;!i.getPagination(r).isComplete&&c<a&&Rz(s)<o;)await Cu(n,e),s=i.getTranscript(r),c+=1}))},Bz=e=>!e||/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(e),Vz=(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(!Bz(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}},Hz=new Set([`/`,`-`,`_`,`.`,` `,`:`,`\\`]);function Uz(e){return e==null?[]:typeof e==`string`?e?[e]:[]:e.filter(e=>typeof e==`string`&&e.length>0)}function Wz(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(Hz.has(o)?0:.5)+i/1e3+a}function Gz(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=Uz(n(t));if(e.length===0)continue;let r=null,i=e[0].toLowerCase();for(let t of e){let e=t.toLowerCase(),n=Wz(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 _t(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 Kz=/\.[a-z0-9]{1,8}$/i,qz=new Set([`test`,`tests`,`__tests__`,`spec`,`specs`,`e2e`,`__mocks__`]),Jz=/\.(?:test|spec|e2e)\./i,Yz=.85,Xz=3,Zz=3,Qz=1.25,$z=-.35,eB=-.5,tB=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(Kz),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}},nB=e=>{let t=tB(e);return(t.fileIntent||t.directoryIntent)&&t.stem?t.stem:t.search},rB=e=>{let t=e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase();if(!t)return!1;let n=t.split(`/`).filter(Boolean);if(n.some(e=>qz.has(e)))return!0;let r=n.at(-1)??t;return Jz.test(r)},iB=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase(),aB=(e,t)=>(e.name||t.split(`/`).filter(Boolean).pop()||t).toLowerCase(),oB=(e,t)=>e===null&&t===null?null:Math.min(e??1/0,t??1/0),sB=(e,t)=>{let n=iB(e.relativePath),r=aB(e,n),i=e.isDirectory===!0,a=oB(Wz(n,t.search),Wz(r,t.search)),o;if(a!==null)o=a;else if(t.stem&&t.stem!==t.search){let e=oB(Wz(n,t.stem),Wz(r,t.stem));if(e===null)return null;o=e+Yz}else return null;return t.fileIntent&&i&&(o+=Xz),t.directoryIntent&&!i&&(o+=Zz),t.fileIntent&&!i&&t.extension&&e.extension===t.extension&&(o+=$z),t.directoryIntent&&i&&r===t.stem&&(o+=eB),rB(n)&&!rB(t.search)&&(o+=Qz),o},cB=(e,t,n)=>{let r=n?.limit??20,i=tB(t);if(!i.search&&!i.stem)return e.slice(0,r);let a=e.flatMap(e=>{let t=sB(e,i);return t===null?[]:[{item:e,score:t,sortKey:iB(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)},lB=/\.[a-z0-9]{1,8}$/i,uB=/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/,dB=e=>e.includes(`/`)||e.includes(`\\`)||e.includes(`.`),fB=e=>{if(!dB(e))return!1;let t=e.replace(/\\/g,`/`);if(t.endsWith(`/`))return!0;let n=t.split(`/`).filter(Boolean).pop()??t;return lB.test(n)},pB=({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 cB(Array.from(a.values()),n,{limit:i})},mB=6,hB=(e,t,n)=>cB(e,t,{limit:n?.limit??mB}),gB=(e,t)=>e===null&&t===null?null:Math.min(e??1/0,t??1/0),_B=(e,t)=>{let n=t.trim().toLowerCase();if(!n)return[...e].sort((e,t)=>e.name.localeCompare(t.name));let r=e.flatMap(e=>{let t=gB(Wz(e.name,n),Wz(e.description??``,n));return t===null?[]:[{agent:e,score:t}]});return r.sort((e,t)=>e.score===t.score?e.agent.name.localeCompare(t.agent.name):e.score-t.score),r.map(e=>e.agent)},vB=(e,t)=>{let n=e[t];return n!==void 0&&/\s/.test(n)},yB=({mention:e,confirmed:t,terminated:n})=>!e||e.startsWith(`session:`)?!1:t?!0:n&&dB(e),bB=(e,{confirmedValues:t,agentNames:n})=>{if(!e.includes(`@`))return[];let r=[],i=/@([^\s]+)/g,a;for(;(a=i.exec(e))!==null;){let i=a[0],o=String(a[1]||``).trim().replace(/[),.;:!?`"'>]+$/g,``),s=a.index,c=s+i.length,l=s>0?e[s-1]:null;if(!(!l||uB.test(l))||o.length===0||o.startsWith(`session:`))continue;if(n.has(o.toLowerCase())){r.push({start:s,end:c,kind:`agent`});continue}let u=vB(e,s+1+o.length);yB({mention:o,confirmed:t.has(o),terminated:u})&&r.push({start:s,end:c,kind:`file`})}return r},xB=(e,{agentNames:t,includeUnterminatedPastedReferences:n=!1}={})=>{if(!e.includes(`@`))return[];let r=[],i=/@([^\s]+)/g,a;for(;(a=i.exec(e))!==null;){let i=String(a[1]||``).trim().replace(/[),.;:!?`"'>]+$/g,``),o=a.index,s=o>0?e[o-1]:null;if(!(!s||uB.test(s))||!i||i.startsWith(`session:`)||t?.has(i.toLowerCase()))continue;let c=o+1+i.length,l=vB(e,c),u=n&&fB(i);!l&&!u||!dB(i)&&!u||r.push({kind:i.endsWith(`/`)||i.endsWith(`\\`)?`directory`:`file`,value:i,start:o,end:c})}return r},SB=/(^|[\s([{])(@session:([A-Za-z0-9_-]+))(?=$|[\s)\]},.!?;:])/g,CB=e=>{let t=[];SB.lastIndex=0;let n;for(;(n=SB.exec(e))!==null;){let e=n.index+n[1].length;t.push({start:e,end:e+n[2].length,id:n[3]})}return t},wB=e=>{let t=[],n=new Set;for(let{id:r}of CB(e))n.has(r)||(n.add(r),t.push(r));return t},TB=(e,t)=>{let n=e;for(let r of CB(e).reverse()){let e=t.get(r.id)??r.id;n=`${n.slice(0,r.start)}@${e}${n.slice(r.end)}`}return n},EB=({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)-(e.time.updated??e.time.created)).slice(0,r?10:3)},DB=({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(`
408
+ `)?null:s},OB=/(^|\s)\/\u2003?([a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?)/g,kB=e=>Xe(e.trim()),AB=e=>{let t=e.trim();if(t.toLowerCase().startsWith(`file://`))return t;let n=kB(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`file:///${n}`:`file://${n}`},jB=e=>({chunks:[{provenance:`authored`,text:e,start:0,end:e.length}],semantics:[]}),MB=({text:e,root:t,confirmedFilePaths:n,confirmedDirectoryPaths:r=[],agentNames:i})=>{let a=[],o=new Set,s=t?kB(t).replace(/\/+$/,``):``,c=e=>kB(e).replace(/^\.\//,``),l=new Set(n.map(e=>c(e))),u=new Set(r.map(e=>c(e))),d=/@([^\s]+)/g,f;for(;(f=d.exec(e))!==null;){let t=f.index>0?e[f.index-1]:null;if(t&&!/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(t))continue;let n=f[1].trim().replace(/^[`"'<(]+/,``).replace(/[),.;:!?`"'>]+$/g,``);if(!n||i.has(n.toLowerCase()))continue;let r=c(n),d=Ze(n)||Ze(r)?r:r.replace(/^\/+/,``);if(!(l.has(r)||l.has(d)||n.includes(`/`)||n.includes(`\\`)||n.includes(`.`)))continue;let p=Ze(n)||Ze(r)?r:s?Qe(s,d):null;if(!d||!p||o.has(p))continue;o.add(p);let m=$e(p)||d,h=u.has(r)||u.has(d)||/[/\\]$/.test(n)?Ie:`text/plain`;a.push({id:fe(),file:new File([],m,{type:h}),filename:m,mimeType:h,size:0,dataUrl:AB(p),source:`server`,serverPath:p})}return a},NB=(e,t)=>{let n=[],r=new Set;OB.lastIndex=0;let i;for(;(i=OB.exec(e))!==null;){let e=i[2]||``;t.has(e)&&!r.has(e)&&(r.add(e),n.push({type:`skill`,skillName:e}))}return n},PB=(e,t)=>{if(!e.includes(`@`)||t.length===0)return[];let n=[];for(let{id:r,title:i}of t)(e.includes(`@${i}`)||e.includes(`@${ge}${i}`))&&n.push(r);return n},FB=({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(Ad(r).map(e=>[e.id,e.title||e.id])),u=[];for(let e of Md().values()){let t=typeof e.title==`string`?e.title.trim():``;t&&u.push({id:e.id,title:t})}return Oz(e,e=>{let r=Vz(e,t),d=[...new Set([...wB(e),...PB(e,u)])],f=[...NB(e,n),...d.map(e=>({type:`session`,sessionId:e}))],p=MB({text:r.sanitizedText,root:i,confirmedFilePaths:a,confirmedDirectoryPaths:o,agentNames:c});return{text:TB(We(Be(r.sanitizedText,s)),l),agent:r.mention?.name,attachments:p,semantics:f}})},IB=e=>e.map(e=>({text:e.text,...e.attachments?.length?{attachments:kz(e.attachments)}:{},synthetic:!0})),LB=({text:e,attachments:t,semanticParts:n,syntheticParts:r=[]})=>[{type:`text`,text:e},...kz(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},...kz(e.attachments??[]).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id}))])],RB=(e,t)=>{let n=t.map(e=>({...e,attachments:kz(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}})},zB=e=>e?.trim()||void 0,BB=(e,t)=>e!==`assistant`||t===`server`,VB=(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)})},HB=({currentConfig:e,sessionID:t,selection:n})=>{let r=zB(e.currentAgentName),i=t?zB(n.getSessionAgentSelection(t))??r:r,a=t&&i?n.getAgentModelForSession(t,i):null,o=t?n.getSessionModelSelection(t):null,s=zB(a?.providerId)??zB(o?.providerId)??zB(e.currentProviderId),c=zB(a?.modelId)??zB(o?.modelId)??zB(e.currentModelId);if(!s||!c)return;let l=t&&i?zB(n.getAgentModelVariantForSession(t,i,s,c))??zB(e.currentVariant):zB(e.currentVariant);return{providerID:s,modelID:c,...i?{agent:i}:{},...l?{variant:l}:{}}},UB=e=>!!(zB(e?.providerID)&&zB(e?.modelID)),WB=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,GB=(e,t)=>WB(e,t),KB=e=>JSON.stringify([e.text,e.references]),qB=e=>JSON.stringify(e),JB=(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,YB=({draftKey:e,runtime:t,document:n,attachments:r,inlineDrafts:i})=>({draftKey:{transportIdentity:e.transportIdentity,owner:{...e.owner}},draftKeyID:z(e),runtime:{...t},documentFingerprint:KB(n),attachments:new Map(r.map(e=>[e.id,e])),inlineDrafts:new Map(i.map(e=>[e.id,qB(e)]))}),XB=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`||!GB(e.runtime,n())||!d||z(d)!==e.draftKeyID)return{status:`stale`,bodyConsumed:!1,attachmentIDsConsumed:[],inlineDraftIDsConsumed:[]};let f=KB(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||!JB(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||qB(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}},ZB=(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)}}),QB=(e=fe,t=()=>he(`msg`),n=Date.now())=>({requestID:e(),queueItemID:`queued-${e()}`,operationID:`operation-${e()}`,messageID:t(),createdAt:n}),$B=({stage:e,clearComposer:t,postClear:n})=>{let r=e();return t(),n?.(),r},eV=`blocked`,tV=new Set,nV=()=>eV,rV=e=>{if(eV!==e){eV=e;for(let e of tV)e()}},iV=e=>(tV.add(e),()=>tV.delete(e)),aV=()=>eV===`legacy-enabled`,oV=2e3,sV=6e4,cV=5e3,lV=3,uV=e=>Math.min(oV*2**Math.max(e-1,0),sV),dV=new Map,fV=new Map,pV=new Set,mV=new Set,hV=0,gV=()=>{hV+=1;for(let e of mV)e()},_V=(e,t)=>JSON.stringify([O(e),t.queueItemID,t.operationID]),vV=e=>`scope:${O(e)}`,yV=()=>new Set([...dV.keys(),...fV.keys()]),bV=e=>(mV.add(e),()=>mV.delete(e)),xV=e=>{let t=(0,H.c)(2),n;return t[0]===e?n=t[1]:(n=()=>e?fV.has(vV(e)):!1,t[0]=e,t[1]=n),K.useSyncExternalStore(bV,n,HV)},SV=()=>structuredClone(N.getState().queuedMessages),CV=async()=>{for(rV(`blocked`);dV.size||fV.size||pV.size;)await Promise.allSettled([...new Set([...dV.values(),...fV.values(),...pV])]);return x(),SV()},wV=e=>e===`idle`,TV=e=>{if(e===void 0)return`unknown`;let t=e[e.length-1];return!t||t.role===`assistant`?`settled`:`unsettled`},EV=(e,t,n,r,i=!1,a=`settled`)=>e?e.status===`sending`?i?{}:{recover:!0}:e.status===`queued`?wV(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`retrying`?e.nextAttemptAt&&e.nextAttemptAt>r?{nextWakeAt:e.nextAttemptAt}:wV(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`reconciling`?(e.reconciliationChecks??0)>=lV||(e.reconciliationDeadlineAt??1/0)<=r?{resolve:!0}:(e.reconciliationNextCheckAt??0)>r?{nextWakeAt:e.reconciliationNextCheckAt}:i?{}:{query:!0}:{}:{},DV=(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},OV=(e,t)=>{let n;for(let r of Pd(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},kV=(e,t)=>{let n;for(let r of e.values())r.expiresAt>t&&(!n||r.expiresAt<n)&&(n=r.expiresAt);return n},AV=({queuedMessages:e,activeTransportIdentity:t,getStatus:n,getTurnState:r=()=>`settled`,previous:i,inFlight:a,dispatchInFlight:o=yV(),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=_V(m,e),_=vV(m);d.add(h);let v=n(m),y=EV(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},jV=e=>{let t=e[0];if(!t)return null;let n=t.composerDocument&&_e(t.composerDocument,`direct-send-display`),r=t.owner?.state===`bound`?t.owner.directory:``,i=FB({plan:n?.ok?{chunks:n.chunks??[],semantics:n.semantics??[]}:jB(t.content),agents:Uf.getState().getVisibleAgents(),installedSkillNames:new Set(Xa(R,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=Fz(i.semantics,r);return{queuedMessageId:t.id,messageID:t.messageID,operationID:t.operationID,primaryText:i.text,primaryAttachments:kz([...t.attachments??[],...i.attachments]),agentMentionName:i.agent,additionalParts:a,sendConfig:t.sendConfig}},MV=(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}),NV=(e,t)=>t?{...t}:HB({currentConfig:Uf.getState(),sessionID:e,selection:Yo.getState()})??{providerID:``,modelID:``},PV=e=>{let t=$.getState().getDirectoryForSession(e);return t?{state:`bound`,transportIdentity:u(),directory:t,sessionID:e}:null},FV=(e,t)=>!!(e===`queued`||e===`retrying`||t&&(e===`failed`||e===`unresolved`)),IV=e=>e.status===`sending`||e.status===`reconciling`,LV=(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 RV(e,t={}){if(!aV())return Promise.resolve();let n=N.getState(),r=t.scope??PV(e),i=t.manual===!0||t.delivery===`steer`;if(!r||r.transportIdentity!==u())return Promise.resolve();let a=LV(n,e,t.queueItemID,r??void 0);if((i||!t.scope)&&!fV.has(vV(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(IV)&&!o.some(IV)&&(n.bindLegacyQueue({state:`unbound-legacy`,sessionID:e},r),a=LV(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=_V(o,c),d=dV.get(l);if(d)return d;if(fV.has(vV(o))||!FV(s.status,i)||s.status===`retrying`&&!i&&(s.nextAttemptAt??0)>Date.now())return Promise.resolve();let p,m=new Promise(e=>{p=e});return dV.set(l,m),fV.set(vV(o),m),gV(),(async()=>{try{let r=OV(e,o.directory),a=iH(e),l=a?.queueItemID===s.queueItemID?a.messageID:ye(`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(!x()){n.markQueueItemPreDispatchRetry(o,p,Date.now()+uV(d.attemptCount+1));return}let m=f(),h=jV([d]);if(!h)return;let g=NV(e,d.sendConfig);if(!g.providerID||!g.modelID){n.markQueueItemPreDispatchRetry(o,p,Date.now()+uV(d.attemptCount+1));return}if(!aV()){n.markQueueItemPreDispatchRetry(o,p,Date.now()+uV(d.attemptCount+1));return}let _=()=>{let e=N.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=N.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&&(N.getState().confirmQueueItem(o,p),vH(e))};try{await MV(e,h,g,{directory:o.directory,delivery:t.delivery,onSendConfirmed:y}),y(p.messageID)}catch(e){if(!v())return;let t=pS(e);t===`pre-dispatch`?n.markQueueItemPreDispatchRetry(o,p,Date.now()+uV(d.attemptCount+1)):t===`definitive-rejection`?n.markQueueItemDefinitiveFailure(o,p):n.markQueueItemReconciling(o,p)}}finally{let e=!1;dV.get(l)===m&&(dV.delete(l),e=!0),fV.get(vV(o))===m&&(fV.delete(vV(o)),e=!0),e&&gV(),p?.()}})(),m}async function zV(e,t=f()){if(!aV())return;let n=Math.min(e.item.reconciliationDeadlineAt??1/0,Date.now()+cV),r=new AbortController,i=setTimeout(()=>r.abort(),Math.max(0,n-Date.now())),a=null;try{a=await vC(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=N.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)?(IU(e.scope.sessionID,e.item.messageID),N.getState().confirmQueueItem(e.scope,{queueItemID:o.queueItemID,operationID:o.operationID,messageID:o.messageID})):N.getState().recordQueueItemReconciliationCheck(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID}))}var BV=(e,t)=>{Qx({sessionID:e.sessionID,messageID:t.messageID,directory:e.directory}),N.getState().resolveQueueItemReconciliation(e,{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID})};function VV(e){let t=typeof e==`boolean`?e:e?.enabled??!0,n=K.useSyncExternalStore(iV,nV,nV),r=N(e=>e.queuedMessages),i=Wp(e=>e.runsByOriginalSessionID),a=$(e=>e.queueAbortBlocks),o=K.useSyncExternalStore(s,u,u),c=K.useSyncExternalStore(s,m,m),l=K.useSyncExternalStore(bV,()=>hV,()=>hV),d=K.useMemo(()=>Object.values(r).flatMap(e=>{let t=e[0]?.owner;return t?.state===`bound`&&t.transportIdentity===o?[t]:[]}),[o,r]),p=GP(d),h=KP(),g=CF(),_=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=>_?nd(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e,e=>g.getChild(e),{subscribeRebuild:e=>g.subscribeRegistry(e)}):()=>void 0,[g,_]),K.useMemo(()=>()=>_?rd(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e=>g.getChild(e)):``,[g,_]),()=>``),b=K.useCallback(e=>h(e),[h]),x=K.useCallback(e=>TV(hd(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 DV(i,c))s.add(e);let u=AV({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)N.getState().markQueueItemReconciling(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID});for(let e of u.dispatchScopes)N.getState().getQueueForScope(e)[0]&&RV(e.sessionID,{scope:e}).finally(()=>{C(e=>e+1)});for(let e of u.resolveOperations)BV(e.scope,e.item);for(let e of u.queryOperations){T.current.add(e.key);let t=zV(e,f()).finally(()=>{T.current.delete(e.key),pV.delete(t),C(e=>e+1)});pV.add(t)}let d=kV(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 HV(){return!1}var UV={server:Tz(),queue:$R(),status:e=>NL(R).then(t=>{if(e?.aborted)throw new DOMException(`Aborted`,`AbortError`);return t}),activate:cL,lateCommit:lL,capture:()=>({transportIdentity:u(),generation:f()}),current:e=>e.transportIdentity===u()&&e.generation===f(),quiesce:async()=>{await CV()},flush:async()=>{x()},prepare:E,resolveDirectory:e=>$.getState().getDirectoryForSession(e)},WV=()=>({ownership:`probing`,migration:`idle`,frozen:!0,admission:`frozen`,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),GV=(e={})=>{let t={...UV,...e},n=WV(),r=0,i,a,o,c=500,l,u=!1,d=new Set,f=e=>{n={...n,...e};let r=n.ownership===`legacy-unsupported`;rV(r?`legacy-enabled`:`blocked`),k(r?`open`:n.migration===`freezing`||n.ownership===`probing`||n.ownership===`blocked`?`quiescing`:`recovery-read-only`),(n.ownership===`server-active`||n.ownership===`server-paused`)&&ne(t.capture().transportIdentity),d.forEach(e=>e())},m=()=>{clearTimeout(o),o=setTimeout(()=>{y()},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())},_=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)},v=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 _(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 b(e,r,`late`),n):(f({migration:`staging`}),await b(e,r,`activation`),n):n):(h(Error(`capability-unavailable`)),n)}catch(r){return!t.current(e)||i?.signal.aborted?n:r instanceof gI&&r.status===501?(f({ownership:`legacy-unsupported`,migration:`idle`,frozen:!1,admission:`legacy`,error:void 0}),n):(h(r),n)}},y=()=>l?(u=!0,l):(l=v().finally(()=>{l=void 0,u&&(u=!1,y())}),l),b=async(e,n,r)=>{let a=await fz({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 FL(R).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)}}},x,S=()=>{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++,x!==void 0&&(clearTimeout(x),x=void 0),!(r>1)&&(a=s(e=>{p(e)&&(i?.abort(),f(WV()),setTimeout(()=>{y()},0))}),y())},stop:()=>{r=Math.max(0,r-1),!r&&(x!==void 0&&clearTimeout(x),x=setTimeout(()=>{x=void 0,r||S()},0))},refresh:y}},KV,qV=()=>KV??=GV(),JV=t({confirmQueueAbortOptimistic:()=>vH,getQueueAbortOptimisticPresentation:()=>iH,getQueueAbortOptimisticRevision:()=>rH,inspectQueueAbortOptimisticTranscript:()=>mH,isQueueItemSendPendingByAbortOptimistic:()=>aH,planQueueAbortOptimisticReconcile:()=>hH,promoteQueueHeadOnAbort:()=>wH,reconcileQueueAbortOptimistic:()=>CH,rollbackQueueAbortOptimistic:()=>_H,subscribeQueueAbortOptimistic:()=>nH,useQueueAbortOptimisticReconcile:()=>TH}),YV=new Set([`queued`,`retrying`]),XV=new Set([`sending`,`reconciling`]),ZV=new Set([`failed`,`unresolved`]),QV=new Map,$V=new Set,eH=0,tH=()=>{eH+=1;for(let e of $V)e()},nH=e=>($V.add(e),()=>{$V.delete(e)}),rH=()=>eH,iH=e=>QV.get(e),aH=(e,t)=>QV.get(e)?.queueItemID===t,oH=(e,t)=>{let n;for(let r of Pd(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},sH=e=>{let t=e?.[0];if(!(!t||!YV.has(t.status))&&t.deliveryTarget?.kind!==`assistant`)return t},cH=(e,t)=>{let n=N.getState(),r={state:`bound`,transportIdentity:u(),directory:t,sessionID:e};return sH(n.getQueueForScope(r))??sH(n.getQueueForScope(ee(e)))},lH=(e,t)=>{let n=qV().getSnapshot().ownership;return n!==`server-active`&&n!==`server-paused`?void 0:sH(Tz().getScope({transportIdentity:u(),directory:t,sessionID:e})?.items)},uH=e=>{let t=e.sendConfig?.providerID,n=e.sendConfig?.modelID;return!t||!n?null:{providerID:t,modelID:n,agent:e.sendConfig?.agent}},dH=e=>!!e&&typeof e==`object`&&e.__openchamberOptimistic===!0,fH=(e,t,n)=>{try{let r=U();return r?r.getTranscript(G(t,e)).partsByMessageID[n]??[]:[]}catch{return[]}},pH=(e,t,n)=>{let r=typeof e.id==`string`?e.id:``;if(!r||e.role!==`user`)return!1;let i=fH(t,n,r);return i.length!==0&&i.some(e=>!dH(e))},mH=(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}},hH=(e,t,n)=>{let r=e?.messageID;return e&&(YV.has(e.status)||XV.has(e.status))?r&&n&&r!==n?`rebind`:XV.has(e.status)||t.hasPinnedMessage?`confirm`:`keep`:e&&ZV.has(e.status)?`rollback`:t.hasPinnedMessage?`confirm`:t.hasLaterUserMessage?`rollback`:`keep`},gH=e=>{let t=QV.get(e);if(t)return QV.delete(e),tH(),t},_H=e=>{gH(e)},vH=e=>{gH(e)},yH=e=>{if(e.source===`server`){let t=Tz().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=A(N.getState(),t).find(t=>t.queueItemID===e.queueItemID)??A(N.getState(),ee(e.sessionID)).find(t=>t.queueItemID===e.queueItemID);return n?{queueItemID:n.queueItemID,status:n.status,messageID:n.messageID}:null},bH=e=>{let t=Pd(e.sessionID,e.directory).map(t=>({id:typeof t?.id==`string`?t.id:void 0,role:t?.role,optimistic:!pH(t,e.sessionID,e.directory)}));return mH(e.messageID,t)},xH=(e,t)=>{let n=QV.get(e);!n||!t||n.messageID===t||(QV.set(e,{...n,messageID:t}),tH())},SH=(e,t,n)=>{if(t===`confirm`)vH(e.sessionID);else if(t===`rollback`)_H(e.sessionID);else if(t===`rebind`&&n?.messageID){xH(e.sessionID,n.messageID);let t=QV.get(e.sessionID);if(!t)return;let r=hH(yH(t),bH(t),t.messageID);if(r===`rebind`)return;SH(t,r,yH(t))}},CH=e=>{let t=e?[QV.get(e)].filter(e=>!!e):[...QV.values()];for(let e of t){let t=yH(e);SH(e,hH(t,bH(e),e.messageID),t)}},wH=e=>{if(!e||QV.has(e))return QV.get(e)??null;let t=$.getState().getDirectoryForSession(e);if(!t)return null;let n=lH(e,t),r=n?void 0:cH(e,t),i=n??r;if(!i)return null;let a=uH(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)??ye(`msg`,oH(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 QV.set(e,c),tH(),c};function TH(){let e=(0,H.c)(6),t=K.useSyncExternalStore(nH,rH,rH),n=N(NH),r;e[0]!==t||e[1]!==n?(r=[t,n],e[0]=t,e[1]=n,e[2]=r):r=e[2],K.useEffect(MH,r);let i;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[3]=i):i=e[3],K.useEffect(kH,i);let a;e[4]===t?a=e[5]:(a=[t],e[4]=t,e[5]=a),K.useEffect(EH,a)}function EH(){return nd([...QV.values()].map(OH),DH)}function DH(){CH()}function OH(e){return{directory:e.directory,sessionID:e.sessionID}}function kH(){let e=Tz().subscribe(jH),t=s(AH);return()=>{e(),t()}}function AH(){for(let e of[...QV.keys()])_H(e)}function jH(){CH()}function MH(){CH()}function NH(e){return e.queuedMessages}var PH=[`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(`
409
+ `);async function FH(e){try{let{currentProviderId:t,currentModelId:n}=Uf.getState(),r=await _(`/api/small-model/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:e,system:PH,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 IH=[`active`,`paused`,`blocked`,`budgetLimited`,`complete`],LH=5e3,RH=e=>!!e&&typeof e==`object`&&!Array.isArray(e),zH=e=>typeof e==`string`&&IH.includes(e);function BH(e){let t=e?.metadata;if(!RH(t))return null;let n=t.openchamber;if(!RH(n))return null;let r=n.goal;if(!RH(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||!zH(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,LH),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 VH(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 HH(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 UH=e=>!!e&&typeof e==`object`&&!Array.isArray(e),WH=()=>`${Date.now().toString(36)}${Math.random().toString(36).slice(2,8)}`,GH=(e,t,n)=>BS(e,t,e=>{let t=UH(e.openchamber)?e.openchamber:{},r=n(UH(t.goal)?t.goal:null),i={...t};return r?i.goal=r:delete i.goal,{...e,openchamber:i}}),KH=async(e,t)=>{try{return(await _(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({content:t})})).ok}catch{return!1}},qH=e=>{_(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`DELETE`}).catch(()=>void 0)};async function JH(e){try{let t=await _(`/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 YH=`
410
+
411
+ [… objective trimmed for the auditor — the full text was delivered in the chat message …]
412
+
413
+ `,XH=async e=>{if(e.length<=5e3)return e;let t=await FH(e);if(t)return t.slice(0,LH);let n=Math.max(0,Math.floor((LH-93)/2)),r=mt.getState().dictionary;return iE.error(ht(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${YH}${e.slice(-n)}`};async function ZH(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await XH(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await KH(e,a),c=Date.now();await GH(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:WH(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function QH(e,t){await GH(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function $H(e,t,n){n===`paused`&&(wH(e),EC(e)),await GH(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 GH(e,t,e=>(n=e?.status===`active`,null)),qH(e),n&&(wH(e),EC(e))}var tU=`<system-reminder>`,nU=`</system-reminder>`,rU=e=>{let t=e.trim();return t?t.startsWith(tU)&&t.endsWith(nU)?t:`${tU}\n${t}\n${nU}`:``},iU=(e,t=m())=>`${t}\n${e}`,aU=(e,t)=>{let n=oU.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(iU(e))??n.sessionMemoryState.get(e)},oU=De()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??iU(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}})})),sU=De((e,t)=>({attachments:new Map,setAttachment:(t,n)=>e(e=>{let r=new Map(e.attachments);return r.set(t,n),{attachments:r}}),getAttachment:e=>t().attachments.get(e),clearAttachment:t=>e(e=>{let n=new Map(e.attachments);return n.delete(t),{attachments:n}})})),cU=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function lU(e,t){if(e){if(!e.degraded&&e.cwd)return cU(e.cwd);if(e.worktreeRoot)return cU(e.worktreeRoot);if(e.cwd)return cU(e.cwd)}return t?cU(t):null}function uU(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function dU(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?cU(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=cU(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 pU=`openchamber.session-switch.start`,mU=`openchamber.session-switch.highlight-painted`,hU=`openchamber.session-switch.content-committed`,gU=`data-openchamber-session-switch-highlight-ms`,_U=`data-openchamber-session-switch-content-ms`,vU=`openchamber.session-switch.highlight-latency`,yU=`openchamber.session-switch.content-latency`,bU=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,xU=()=>bU()&&performance.getEntriesByName(pU,`mark`).length>0,SU=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},CU=(e=!1)=>{bU()&&(!e&&performance.getEntriesByName(pU,`mark`).length>0&&performance.getEntriesByName(hU,`mark`).length===0||(performance.clearMarks(pU),performance.clearMarks(mU),performance.clearMarks(hU),performance.clearMeasures(vU),performance.clearMeasures(yU),typeof document<`u`&&(document.documentElement.removeAttribute(gU),document.documentElement.removeAttribute(_U)),performance.mark(pU)))},wU=()=>{if(!xU())return;performance.mark(mU),performance.measure(vU,pU,mU);let e=performance.getEntriesByName(vU,`measure`).at(-1);e&&SU(gU,e.duration)},TU=()=>{if(!xU())return;performance.mark(hU),performance.measure(yU,pU,hU);let e=performance.getEntriesByName(yU,`measure`).at(-1);e&&SU(_U,e.duration)},EU={revision:0,sessionId:null},DU=new Set,OU=e=>{EU={revision:EU.revision+1,sessionId:e};for(let e of DU)e(EU);return EU},kU=()=>EU,AU=e=>(DU.add(e),()=>DU.delete(e)),jU=6e3;function MU(e){let t=e.parts?e.parts.map(e=>({...e})):[];if(e.parts)return{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t};e.text!==void 0&&t.push({id:he(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:he(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:he(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:he(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:he(`prt`),type:`agent`,name:e.agentMentionName}),{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t}}function NU(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function PU(e,t){if(!e)return;let n=NU(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 FU(e){let t=e.directory??void 0,n=LU(e.sessionId,e.onSendConfirmed),r=e.content;if(e.inputMode===`shell`){let r=e.messageID??he(`msg`);return B.shellSession({sessionId:e.sessionId,directory:t,agent:e.agent??``,model:{providerID:e.providerID,modelID:e.modelID},command:e.content}).then(()=>{n(r)})}let i=de(e.content);if(i){let a=i.commandName.toLowerCase(),o=i.argumentsText,s=t??Ne.getState().currentDirectory??null,c=u(),l=ki(s,c),d=Ja(s,c),f=R.getQueryState(l.queryKey),p=R.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(ji(s,c)):R.fetchQuery({...l,staleTime:1/0}),h?Promise.resolve(Xa(R,s,c)):R.fetchQuery({...d,staleTime:1/0})]);if(u()!==c)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===a)?void 0:g.find(e=>e.name.toLowerCase()===a);if(v?.isBuiltIn===!1)r=`[command:${v.reference??v.name}]${o?` ${o}`:``}`;else if(v)return hC({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>B.sendCommand({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,command:v.name,arguments:o,agent:e.agent,variant:e.variant,files:e.files,messageId:n,directory:t}).then(()=>{})})}return hC({sessionId:e.sessionId,content:r,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.optimisticParts,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>B.sendMessage({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,text:r,agent:e.agent,agentMentions:e.agentMentionName?[{name:e.agentMentionName}]:void 0,variant:e.variant,files:e.files,additionalParts:e.additionalParts,delivery:e.delivery,messageId:n,directory:t}).then(()=>{})})}function IU(e,t){_(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function LU(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{IU(e,r)}}}}var RU=e=>{let t=e;return y(t.directory??null)??y(t.project?.worktree??null)},zU=qe(),BU=`oc.chatInput.lastDraftTarget`,VU=()=>{try{let e=zU.getItem(BU);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:y(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},HU=e=>{try{zU.setItem(BU,JSON.stringify(e))}catch{}},UU=$o,WU=e=>{if(e)return sU.getState().getAttachment(e)},GU=(e,t,n)=>{if(!e)return null;let r=lU(WU(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return y(i);if(n?.includeRuntimeMemory!==!1){let t=ZU.get(QU());if(t?.sessionId===e&&t.directory)return y(t.directory)}let a=jd().find(t=>t.id===e);return a?RU(a):null},KU=e=>{let t=jd().find(t=>t.id===e);if(t)return t;let n=X.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},qU=async(e,t)=>{await Uf.getState().activateDirectory(y(e),t)},JU={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},YU=new Map,XU=0,ZU=new Map,QU=e=>(e??m()).trim()||`default`,$U=e=>({...e}),eW=(e,t)=>{let n=ZU.get(e);ZU.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?$U(n.draft):{...JU},...t})},tW=(e,t)=>{let n=Ti.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=$o(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},nW=async(e,t)=>{if(!e)return;let n=tW(e,t);n&&await Pk(n)&&await rk(e)},rW=(e,t)=>{let n=Ti.getState(),r=$o(n.projects,t,e);r&&n.moveProjectToTop(r.id)},iW=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,aW=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,oW=(e,t)=>aW(e,t)&&iW(Ar.getState().captureDraftRuntime(),t.runtime);async function sW(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?MU({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return eW(QU(),{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 cW(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return eW(QU(),{draft:n}),{newSessionDraft:n}})}async function lW(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=QU(),t=s.draftID,n=o,eW(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=Ar.getState().captureDraftRuntime(),o=C(a,t),s=Ar.getState().getDraft(o);return{token:n,draftID:t,draft:$U(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function uW(e){$.setState(t=>{let n=t.newSessionDraft;if(oW(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=ZU.get(e.runtimeMemoryKey);return r&&aW(r.draft,e)&&eW(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=ZU.get(e.runtimeMemoryKey);t&&aW(t.draft,e)&&eW(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function dW(e){let t=ZU.get(e.runtimeMemoryKey);t&&aW(t.draft,e)&&eW(e.runtimeMemoryKey,{draft:{...JU}})}async function fW(e,t,n){if(!e.source)return null;let r;try{r=await Ar.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 pW(e,t){let n=t??e.directory??null;n&&wd(e.id,n),X.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function mW(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=y(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!oW(l,r);pW(e,c);let f=Uf.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&_O.getState().addSessionToFolder(t,a,e.id)}return d||(HU({projectId:o??null,directory:c}),qU(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),Yo.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(Yo.getState().saveSessionAgentSelection(e.id,p),Yo.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),Yo.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),rW(c,$.getState().availableWorktreesByProject),u&&nt(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>eM);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&&dW(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function hW(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await DO(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await nW(t,n);let r=t??B.getDirectory();return{directory:y(r),projectId:n}}async function gW(e,t){let n=await lW(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 hW(r),o=a??B.getDirectory(),s=await zS(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&gC({sessionId:s.id,messageID:t.info.id,content:``,providerID:e.providerID,modelID:e.modelID,agent:i,directory:a??s.directory??null,parts:t.parts}),{materialized:await mW(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return uW(n),null}}async function _W(e){let t=await gW(e);return t?(await fW(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var vW=2,yW=300;async function bW(e){let{useI18nStore:t,formatMessage:n}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CSnH_QXM.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:r}=t.getState();return Error(n(r,e))}async function xW(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=Uf.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??he(`msg`),h=MU({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 lW(h);if(!g)throw await bW(`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 hW(_),f=await B.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=we()?.conversations;if(!v?.createWithPrompt)throw await bW(`chat.chatInput.toast.messageSendFailed`);let y=d??B.getDirectory()??``,b=tS(y,{bootstrap:!1}),x=()=>iW(Ar.getState().captureDraftRuntime(),g.runtime),S;for(let e=0;e<=vW;e++){e>0&&await new Promise(e=>setTimeout(e,yW));try{if(S=await v.createWithPrompt({input:{type:`prompt`},directory:y,..._.title?{title:_.title}:{},..._.parentID?{parentID:_.parentID}:{},messageID:m,model:{providerID:n,modelID:r},...p?{agent:p}:{},...o?{variant:o}:{},parts:f}),!S||S.ok||S.phase!==`unavailable`||(S=void 0,e===vW))break}catch{if(e===vW)break}}if(!S)throw uW(g),Ar.getState().setPendingInputText(t,`replace`),await bW(`chat.chatInput.toast.messageSendFailed`);if(S.ok){let e=S.session,t=d??e.directory??null,i=t??y;pW(e,t);let a=i===y?b:tS(i,{bootstrap:!1});PU(e.id,h);let s=await mW(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 fW(g,e.id,`consume`),IU(e.id,m),s.selected&&om(e.id),TC({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:x}).then(t=>{t===`missing`&&console.warn(`[combined] sent user message never materialized`,{sessionId:e.id,messageID:m,directory:i})}).catch(t=>{console.warn(`[combined] sent user message presence check failed`,{sessionId:e.id,messageID:m,directory:i,error:t instanceof Error?t.message:String(t)})}),l?.(e.id,t);return}if(!S.ok){let e=S.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw uW(g),Ar.getState().setPendingInputText(t,`replace`),await bW(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=S,i=e.session,a=d??i.directory??null,s=await mW(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 vC(i.id,m,a,{isCurrent:x});if(e&&x()){await fW(g,i.id,`consume`),IU(i.id,m),s.selected&&om(i.id),yC(tS(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await fW(g,i.id,`preserve`),Ar.getState().setPendingInputText(t,`replace`),await bW(`chat.chatInput.toast.sendStatusUnknown`)}throw await fW(g,i.id,`preserve`),Ar.getState().setPendingInputText(t,`replace`),await bW(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw uW(g),e}}var SW=`oc.worktreeMap`,CW=()=>{try{let e=qe().getItem(SW);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}},wW=e=>{try{qe().setItem(SW,e)}catch{}},TW=e=>{let t=[];for(let n of e.values())t.push(...n);return t},EW=CW(),$=De()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...JU},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:TW(EW),availableWorktreesByProject:EW,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)=>{OU(n),v(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(CU(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Ar.getState().setActiveAttachmentDraft(n?w({transportIdentity:u()},n):null);let s=QU();YU.set(s,n);let c=Ne.getState(),l=GU(n,e=>t().worktreeMetadata.get(e)),d=B.getDirectory()??c.currentDirectory??null,f=(r?y(r):null)??l??d,p=Ti.getState(),m=f?$o(p.projects,t().availableWorktreesByProject,f):null;e({currentSessionId:n,currentSessionDirectory:n?f??null:null}),eW(s,{sessionId:n,directory:f??null}),a!==n&&Je.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?f??null:null}),n&&i?.skipMessageFetch!==!0&&UC(n,f);try{f&&c.currentDirectory!==f&&c.setDirectory(f,{showOverlay:!1}),m&&i?.preserveActiveProject!==!0&&p.activeProjectId!==m.id&&p.setActiveProjectIdOnly(m.id),B.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(!aU(e)?.isStreaming){let t=Pd(e);t.length>0&&oU.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&($k(n),WN(f??``,n))},prepareForRuntimeSwitch:n=>{let r=QU(n),i=Ne.getState().currentDirectory||null,a=t().currentSessionId,o=i?Ed(i):null;wM({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),YU.set(r,t().currentSessionId),eW(r,{sessionId:a,directory:i,draft:$U(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=QU(t),r=ZU.get(n),i=r?.sessionId??YU.get(n)??null;v(i);let a=r?.draft?$U(r.draft):{...JU},o=r?.directory??null;o&&Ne.getState().setDirectory(o,{showOverlay:!1}),e({currentSessionId:i,currentSessionDirectory:i?o:null,newSessionDraft:i?{...JU}: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}),Ar.getState().setActiveAttachmentDraft(i?w({transportIdentity:u()},i):a.open&&a.draftID?C({transportIdentity:u()},a.draftID):null),i?WN(o??B.getDirectory()??``,i):WN(``,``)},openNewSessionDraft:n=>{if(mI.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let i=Ti.getState(),a=i.projects,o=t().availableWorktreesByProject,s=y(t().currentSessionDirectory??null),c=y(Ne.getState().currentDirectory??null),l=VU(),d=n?.directoryOverride===void 0?null:y(n.directoryOverride),f=UU(a,o,d),p=n?.ensureProjectForDirectory&&d&&!f?i.addProject(d):null;p&&(i=Ti.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),b=l?.projectId?m.find(e=>e.id===l.projectId)??null:null,x=UU(m,o,l?.directory??null),S=UU(m,o,s),w=UU(m,o,c),T=g||(d===null?S||(c?w:x??b??_):p??f),E=d===null?g?y(g.path??null):s||c||(l?.directory?l.directory:y(T?.path??null)):d;HU({projectId:T?.id??null,directory:E}),T&&i.activeProjectId!==T.id&&i.setActiveProjectIdOnly(T.id);let D=le({projectId:T?.id??null,directory:E}),O=C({transportIdentity:u()},D),k=Ar.getState().getDraft(O),A={open:!0,draftID:D,selectedProjectId:T?.id??null,directoryOverride:E,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:y(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===D?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},j=t().currentSessionId,ee=t().currentSessionDirectory;e({newSessionDraft:{...A},currentSessionId:null,currentSessionDirectory:null,error:null}),v(null),Je.getState().setActiveMainTab(`chat`),j&&Je.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:j,previousDirectory:ee,nextSessionId:null,nextDirectory:null}),eW(QU(),{sessionId:null,directory:E,draft:A}),Ar.getState().setActiveAttachmentDraft(O),k||Ar.getState().clearAttachedFiles(),n?.initialPrompt&&Ar.getState().setPendingInputText(n.initialPrompt);let te=y(T?.path??null)??E,ne=T?y(te):null,re=A.draftID,M=u();qU(te,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=y(Uf.getState().activeDirectoryKey);!e.open||e.draftID!==re||u()!==M||!ne||n!==ne||Uf.getState().applyDefaultModelAgentSelection({projectDefaultModel:T?.defaultModel})}),E&&E!==Ne.getState().currentDirectory&&Ne.getState().setDirectory(E)},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}),eW(QU(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=y(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}:{}}}}),qU(r,{source:`setNewSessionDraftTarget`}),r&&r!==Ne.getState().currentDirectory&&Ne.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=jU)=>{let r=fe(),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=Pd(r);if(i.length===0)return null;let a=Kk(i,e=>Fd(e));if(!a||`compacted`in a)return null;let o=a.tokens,s=a.totalTokens,c=e>0?e:2e5,l=e>0?Math.round(s/e*100):0,u=n>0?Math.round(Hk(o.output)/n*100):void 0;return{totalTokens:s,percentage:l,contextLimit:e||0,outputLimit:n||void 0,normalizedOutput:u,thresholdLimit:c,lastMessageId:a.messageId}},initializeNewOpenChamberSession:()=>{},setWorktreeMetadata:(t,n)=>{n?sU.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}):sU.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=y(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),qU(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Ne.getState().currentDirectory&&Ne.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:y(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:y(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:y(t)}}:e),setPendingDraftWorktreeRequest:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,pendingWorktreeRequestId:t}}:e),getWorktreeMetadata:e=>t().worktreeMetadata.get(e),dismissPendingChangesBar:(n,r)=>{let i=new Map(t().pendingChangesBarDismissed);r===null?i.delete(n):i.set(n,r),e({pendingChangesBarDismissed:i})},sendMessage:async(n,r,i,a,o,s,c,l,u,d)=>{let f=t().stagedMessageEdit,p=d?.sessionId??t().currentSessionId,m=d?.commitStagedMessageEdit&&f&&f.sessionId===p?f:null,h=d?.sessionId??t().currentSessionId;if(h){let n=new Map(t().pendingChangesBarDismissed);n.delete(h),e({pendingChangesBarDismissed:n})}let g=t().newSessionDraft,_=typeof a==`string`&&a.trim().length>0?a.trim():void 0,v=u!==`shell`&&n.trim().length>0?hI.getState().consume():{armed:!1,objectiveOverride:null},b=v.armed;if(b){let e=Je.getState(),t=rU(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let x=(e,t)=>{if(!b)return;let r=Je.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=v.objectiveOverride?.trim()||n;ZH(e,t??void 0,{objective:a,tokenBudget:i},null).catch(e=>{console.warn(`[session-ui-store] failed to set goal from armed send`,e)})};if(!d?.sessionId&&g?.open){if(u!==`shell`&&!n.trimStart().startsWith(`/`)&&!d?.delivery&&we()?.conversations?.createWithPrompt){await xW({content:n,providerID:r,modelID:i,agent:_,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:d?.messageID,onSessionReady:x});return}let e=d?.messageID??g.pendingUserMessage?.info.id??he(`msg`),a=MU({messageID:e,sessionID:`draft:pending`,providerID:r,modelID:i,agent:_,text:n,attachments:o,additionalParts:g.syntheticParts?.length?[...c||[],...g.syntheticParts]:c,agentMentionName:s}),f=await gW({providerID:r,modelID:i,agent:_,variant:l},a);if(!f)throw Error(`Failed to create session`);let{materialized:p,claim:m}=f,h=p.syntheticParts?.length?[...c||[],...p.syntheticParts]:c;om(p.sessionId);let v=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await FU({sessionId:p.sessionId,directory:p.directory,content:n,providerID:r,modelID:i,agent:p.agent,agentMentionName:s,variant:l,inputMode:u,files:v,delivery:d?.delivery,messageID:e,optimisticParts:a.parts,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:h?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))}),await fW(m,p.sessionId,`consume`)}catch(e){throw await fW(m,p.sessionId,`preserve`),e}rW(p.directory,t().availableWorktreesByProject),x(p.sessionId,p.directory);return}let S=d?.sessionId??t().currentSessionId,C=S?Yo.getState().getSessionAgentSelection(S):null,w=Uf.getState().currentAgentName,T=_||C||w||void 0;if(S&&Yo.getState().saveSessionModelSelection(S,r,i),S&&T&&(Yo.getState().saveSessionAgentSelection(S,T),Yo.getState().saveAgentModelForSession(S,T,r,i),Yo.getState().saveAgentModelVariantForSession(S,T,r,i,l)),S){let e=oU.getState(),t=aU(S);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(iU(S),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),oU.setState({sessionMemoryState:n})}}let E=S?y(d?.directoryHint)??y(t().getDirectoryForSession(S)):null;S&&!d?.ticket&&om(S);let D=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(m)try{await LC(m.sessionId,m.messageId,{directory:E??void 0}),t().stagedMessageEdit===m&&e({stagedMessageEdit:null})}catch(e){throw t().endMessageEditCommit(m.sessionId,m.messageId),e}try{await FU({sessionId:S||``,directory:E,content:n,providerID:r,modelID:i,agent:T,agentMentionName:s,variant:l,inputMode:u,files:D,delivery:d?.delivery,messageID:d?.messageID,ticket:d?.ticket,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:c?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))})}finally{m&&t().endMessageEditCommit(m.sessionId,m.messageId)}rW(E,t().availableWorktreesByProject),S&&x(S,E)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await zS(n,r??B.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),eW(QU(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&_O.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}}),eW(QU(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>QS(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await QS(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>tC(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await tC(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await rC(e,t)},requestSessionSmartTitle:async e=>{await iC(e)},shareSession:async e=>aC(e),unshareSession:async e=>oC(e),revertToMessage:async(e,t,n)=>{await jC(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await NC(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Pd(e),r=Ad().find(t=>t.id===e)?.revert?.messageID,i=ms(n,r);if(!i)return;let a=Fd(i.id).find(e=>e.type===`text`),o=a?.text?String(a.text).slice(0,50)+(a.text.length>50?`...`:``):`[No text]`;await t().revertToMessage(e,i.id);let{toast:s}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:c,formatMessage:l}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CSnH_QXM.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:u}=c.getState();s.success(l(u,`chat.revert.toast.undo`,{preview:o}))},handleSlashRedo:async(e,n)=>{if(n?.fullUnrevert){let{unrevertSession:t}=await nt(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>yx);return{unrevertSession:e}},void 0);await t(e);let{toast:n}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:i}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CSnH_QXM.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:a}=r.getState();n.success(i(a,`chat.revert.toast.restored`));return}let r=Ad().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=hs(Pd(e),r);if(i){await t().revertToMessage(e,i.id,{skipRedoPush:!0});let{toast:n}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:a}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CSnH_QXM.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:o}=r.getState();n.success(a(o,`chat.revert.toast.redo`));return}await BC(e);let{toast:a}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:o,formatMessage:s}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CSnH_QXM.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:c}=o.getState();a.success(s(c,`chat.revert.toast.restored`))},forkFromMessage:async(n,r,i)=>{let a=t().forkTransition;if(a?.operationId,a?.stage,a){console.warn(`[session-fork] forkFromMessage skipped because a transition is active`,{sessionId:n,messageId:r,activeOperationId:a.operationId,activeSourceSessionId:a.sourceSessionId,activeStage:a.stage});return}let o=KU(n),s=++XU;try{let a=i?.directory??t().getDirectoryForSession(n)??B.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:s,sourceSessionId:n,targetSessionId:null,directory:a,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await VC(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));c.success(`Forked from ${o?.title??`session`}`)}catch(e){console.error(`[session-fork] forkFromMessage failed`,{operationId:s,sessionId:n,messageId:r,error:e});let{toast:t}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===s?{forkTransition:null}:e)}},forkCurrentSession:async n=>{let r=t().forkTransition;if(r?.operationId,r?.stage,r){console.warn(`[session-fork] forkCurrentSession skipped because a transition is active`,{sessionId:n,activeOperationId:r.operationId,activeSourceSessionId:r.sourceSessionId,activeStage:r.stage});return}let i=KU(n),a=++XU;try{let r=t().getDirectoryForSession(n)??B.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:a,sourceSessionId:n,targetSessionId:null,directory:r,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await VC(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));o.success(`Forked from ${i?.title??`session`}`)}catch(e){console.error(`[session-fork] forkCurrentSession failed`,{operationId:a,sessionId:n,error:e});let{toast:t}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===a?{forkTransition:null}:e)}},getSessionsByDirectory:e=>{let t=y(e);return t?jd().filter(e=>RU(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=GU(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=X.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?iD(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:GU(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Pd(e,t().getDirectoryForSession(e)??void 0);for(let e=n.length-1;e>=0;--e){let t=n[e];if(t.role!==`user`)continue;let r=typeof t.model?.providerID==`string`&&t.model.providerID.trim().length>0?t.model.providerID:void 0,i=typeof t.model?.modelID==`string`&&t.model.modelID.trim().length>0?t.model.modelID:void 0,a=typeof t.agent==`string`&&t.agent.trim().length>0?t.agent:typeof t.mode==`string`&&t.mode.trim().length>0?t.mode:void 0,o=t.model?.variant??t.variant,s=typeof o==`string`&&o.trim().length>0?o:void 0;return{id:typeof t.id==`string`?t.id:void 0,agent:a,providerID:r,modelID:i,variant:s}}return null},getCurrentAgent:e=>Yo.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Pd(e);Ad().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=y(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),eW(QU(),{sessionId:n,directory:i}))}}));_M((e,t)=>{$.getState().setCurrentSession(e,t)});var DW=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==DW&&(DW=t,wW(t))}});function OW(e){return e.settingsReturnTo?e.settingsReturnTo:e.activeTab===`settings`?null:{tab:e.activeTab,secondary:e.secondary}}function kW(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function AW(e){return e.length>1?e.slice(0,-1):[]}function jW(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function MW(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 NW={activeTab:`projects`,secondary:null,settingsReturnTo:null},PW=0,FW=null,IW=e=>{let t=++PW;return FW={generation:t,sessionId:e.sessionId,directory:y(e.directory)??null},t},LW=e=>{let t=FW;return t&&t.generation===PW&&t.sessionId===e.sessionId&&t.directory===(y(e.directory)??null)?(FW=null,`internal`):(FW=null,`external`)},RW=()=>{PW+=1,FW=null},zW=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&y(n)===y(e.directory)?RW():IW(e),t.setCurrentSession(e.sessionId,e.directory??null,{preserveActiveProject:e.preserveActiveProject})},BW=De((e,t)=>({...NW,setActiveTab:t=>{RW(),e({activeTab:t,secondary:null,settingsReturnTo:null})},openSettingsFromCurrent:()=>{RW(),e(e=>({activeTab:`settings`,secondary:null,settingsReturnTo:OW(e)}))},restoreSettingsReturnTo:()=>{let n=t().settingsReturnTo;return n?(RW(),e({activeTab:n.tab,secondary:n.secondary,settingsReturnTo:null}),n):null},openSession:t=>{e({secondary:{kind:`chat`,routes:[HW(t,`root`)]}}),zW(t)},pushSession:t=>{e(e=>{let n=HW(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?kW(e.secondary.routes,n):[n]}}}),zW(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=AW(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=BW.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&zW(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=MW(e.secondary.routes,HW(t,`parent`));return n===e.secondary.routes?e:{secondary:{kind:`chat`,routes:n}}}),replaceChatSession:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=e.secondary.routes.at(-1);return n?.sessionId===t.sessionId&&n.directory===(t.directory??null)?e:{secondary:{kind:`chat`,routes:jW(e.secondary.routes,HW(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=>{RW(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{RW(),gt.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{RW(),e({secondary:{kind:`instances`}})},closeSecondary:()=>{RW(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{RW(),e({...NW})}})),VW=1,HW=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${VW++}`,sessionId:e.sessionId,directory:e.directory??null}),UW=e=>!Ue()||Ge()?!1:(BW.getState().pushSession(e),!0);export{RB as $,Ya as $a,jd as $i,TO as $n,Fy as $r,xF as $t,VH as A,ss as Aa,Lm as Ai,Zk as An,EC as Ar,fI as At,iV as B,zo as Ba,Ep as Bi,Nk as Bn,DC as Br,nN as Bt,rU as C,qs as Ca,Gg as Ci,Fj as Cn,Mr as Co,dT as Cr,bL as Ct,$H as D,ls as Da,dh as Di,FA as Dn,$t as Do,kw as Dr,hI as Dt,QH as E,ts as Ea,vg as Ei,IA as En,en as Eo,Aw as Er,JI as Et,nH as F,Yo as Fa,nm as Fi,Ik as Fn,zS as Fr,FF as Ft,ZB as G,to as Ga,Mp as Gi,YO as Gn,nC as Gr,WP as Gt,VV as H,Fo as Ha,Dp as Hi,Bk as Hn,pC as Hr,CF as Ht,TH as I,Go as Ia,tm as Ii,Mk as In,AC as Ir,CP as It,QB as J,xo as Ja,Qf as Ji,nk as Jn,vx as Jr,JM as Jt,$B as K,no as Ka,jp as Ki,qO as Kn,rC as Kr,$F as Kt,qV as L,Uo as La,em as Li,Pk as Ln,IS as Lr,WN as Lt,rH as M,Xo as Ma,Em as Mi,Hk as Mn,dC as Mr,mI as Mt,aH as N,Zo as Na,dm as Ni,Kk as Nn,eC as Nr,HP as Nt,LH as O,rs as Oa,eh as Oi,LA as On,Jt as Oo,Ow as Or,pI as Ot,wH as P,$o as Pa,fm as Pi,Rk as Pn,LC as Pr,HF as Pt,LB as Q,Ga as Qa,Md as Qi,EO as Qn,Ky as Qr,vF as Qt,RV as R,Vo as Ra,Wp as Ri,zk as Rn,kC as Rr,KN as Rt,iU as S,ru as Sa,qg as Si,$j as Sn,Pr as So,mT as Sr,gI as St,JH as T,us as Ta,yg as Ti,XA as Tn,Qt as To,yw as Tr,DL as Tt,XB as U,Lo as Ua,Ap as Ui,GO as Un,$S as Ur,bF as Ut,xV as V,Ro as Va,Op as Vi,Fk as Vn,OC as Vr,$M as Vt,BB as W,ro as Wa,Np as Wi,JO as Wn,Zx as Wr,UP as Wt,UB as X,Xa,yf as Xi,rk as Xn,nx as Xr,hF as Xt,VB as Y,mo as Ya,Yf as Yi,UO as Yn,ax as Yr,_F as Yt,WB as Z,Za,Uf as Zi,wO as Zn,Ub as Zr,gF as Zt,dU as _,W as _a,w_ as _i,mM as _n,Wr as _o,YT as _r,Tz as _t,cW as a,Nd as aa,$v as ai,JP as an,Ca as ao,oD as ar,DB as at,aU as b,G as ba,m_ as bi,aM as bn,Hr as bo,hT as br,PL as bt,$ as c,Su as ca,Tv as ci,oF as cn,va as co,iD as cr,_B as ct,AU as d,Ou as da,A_ as di,nF as dn,ji as do,X as dr,nB as dt,Td as ea,sy as ei,eI as en,xa as eo,VD as er,IB as et,CU as f,U as fa,k_ as fi,GF as fn,Mi as fo,vE as fr,Gz as ft,lU as g,Eu as ga,T_ as gi,KF as gn,Vr as go,qT as gr,jz as gt,fU as h,ku as ha,E_ as hi,SF as hn,Ti as ho,GT as hr,zz as ht,sW as i,wd as ia,Zv as ii,qP as in,Pa as io,BD as ir,xB as it,BH as j,es as ja,Am as ji,eA as jn,tC as jr,dI as jt,HH as k,ns as ka,Ym as ki,$k as kn,GS as kr,uI as kt,OU as l,wu as la,sv as li,QP as ln,ga as lo,FD as lr,hB as lt,wU as m,Du as ma,j_ as mi,sF as mn,Ai as mo,iE as mr,kz as mt,UW as n,Fd as na,ty as ni,YP as nn,Ia as no,ND as nr,jB as nt,_W as o,Ku as oa,Gv as oi,ZP as on,Aa as oo,zD as or,EB as ot,TU as p,_u as pa,P_ as pi,WF as pn,Di as po,yE as pr,Fz as pt,YB as q,bo as qa,op as qi,WO as qn,yS as qr,YM as qt,BW as r,Ad as ra,ey as ri,XF as rn,Fa as ro,PD as rr,bB as rt,FU as s,ed as sa,Qv as si,iF as sn,ka as so,ID as sr,pB as st,LW as t,Pd as ta,Jv as ti,UF as tn,ja as to,_O as tr,FB as tt,kU as u,Cu as ua,kv as ui,eF as un,_a as uo,LD as ur,yB as ut,uU as v,Tu as va,p_ as vi,hM as vn,Br as vo,QT as vr,Dz as vt,eU as w,ps as wa,Kg as wi,Pj as wn,Ar as wo,Hw as wr,EL as wt,oU as x,nu as xa,f_ as xi,iM as xn,Nr as xo,uT as xr,IL as xt,sU as y,gu as ya,h_ as yi,uM as yn,Ur as yo,MT as yr,pz as yt,nV as z,Wo as za,Pp as zi,Lk as zn,iC as zr,GN as zt};