@openchambery/web 1.18.2-beta.6 → 1.18.2-beta.61

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 (152) hide show
  1. package/dist/assets/AgentAvatar-BHDDHjJ_.js +1 -0
  2. package/dist/assets/AssistantView-BS13gmYK.js +1 -0
  3. package/dist/assets/{ChatContainer-CNQBw5D7.js → ChatContainer-DRSa2L_0.js} +40 -40
  4. package/dist/assets/{DiagramView-DD5haMGO.js → DiagramView-rwyETOP2.js} +1 -1
  5. package/dist/assets/{FadeInOnReveal-aeWlaqVB.js → FadeInOnReveal-6uwqus2E.js} +1 -1
  6. package/dist/assets/{Icon-AXqa-fYB.js → Icon-BMk2lXcB.js} +1 -1
  7. package/dist/assets/{MarkdownRendererImpl-CY3U2y5M.js → MarkdownRendererImpl-IwJvpGs2.js} +2 -2
  8. package/dist/assets/{MobileDetailNavigation-B8rygQQ7.js → MobileDetailNavigation-CbI1uZo_.js} +1 -1
  9. package/dist/assets/MobileShareBridge-BzAIcGgJ.js +4 -0
  10. package/dist/assets/MobileSurface-Bs8Kk6Fc.js +2 -0
  11. package/dist/assets/{MultiRunWindow-B9WbE8t-.js → MultiRunWindow-aFm9KkPg.js} +1 -1
  12. package/dist/assets/{OnboardingScreen-DiPnIwza.js → OnboardingScreen-CZe_qWQp.js} +1 -1
  13. package/dist/assets/OverlayScrollbar-CEWEM6FQ.js +2 -0
  14. package/dist/assets/SettingsView-B4JikzKR.js +25 -0
  15. package/dist/assets/{SettingsWindow-5vXhJPxQ.js → SettingsWindow-Ddu0yhn1.js} +1 -1
  16. package/dist/assets/{TerminalView-BxbGHB90.js → TerminalView-CGBPkwph.js} +1 -1
  17. package/dist/assets/{ToolOutputDialog-CeNm90zz.js → ToolOutputDialog-BjmmP9u6.js} +1 -1
  18. package/dist/assets/appThemeRegistry-DygKiSZ7.js +2 -0
  19. package/dist/assets/assistant-guide-hero-wide-DiFIThB0.jpg +0 -0
  20. package/dist/assets/{button-CDvMVaiO.js → button-BanO5uHg.js} +1 -1
  21. package/dist/assets/capgoAdapter-DCowZ2ab.js +1 -0
  22. package/dist/assets/{clipboard-CbqhDr1g.js → clipboard-BkuhtCgx.js} +1 -1
  23. package/dist/assets/{collapsible-C2aamDvD.js → collapsible-DV6meblg.js} +1 -1
  24. package/dist/assets/{context-menu-CWpj9MM3.js → context-menu-4c6PRRQV.js} +1 -1
  25. package/dist/assets/{desktopHosts-CBoBpJ1Z.js → desktopHosts-CpJI94J8.js} +1 -1
  26. package/dist/assets/{desktopRelayRestore-l2R9muux.js → desktopRelayRestore-CEZTOvV_.js} +1 -1
  27. package/dist/assets/{diagram-CEon0BQs.js → diagram-RysAqQCN.js} +1 -1
  28. package/dist/assets/{dialog--cf4dygO.js → dialog-Doi3Frvp.js} +1 -1
  29. package/dist/assets/{es-DCoGZljP.js → es-BcI2Ncns.js} +4 -4
  30. package/dist/assets/{fileQueries-CE_DaZWQ.js → fileQueries-DqF_lx8R.js} +1 -1
  31. package/dist/assets/{fr-dkEoZpPz.js → fr-7hajheiT.js} +4 -4
  32. package/dist/assets/gitApi-FWwEBCRL.js +7 -0
  33. package/dist/assets/{input-k9DGGyZ6.js → input-Bl10RIVe.js} +1 -1
  34. package/dist/assets/insertionBoundaries-CqUr0-My.js +1 -0
  35. package/dist/assets/{ja-bQwSsvRr.js → ja-4-pmKNf4.js} +4 -4
  36. package/dist/assets/{ko-Kq5C3hsv.js → ko-C1vfLmUe.js} +4 -4
  37. package/dist/assets/main-BX2LZzPc.js +2 -0
  38. package/dist/assets/main-BYCxak55.js +172 -0
  39. package/dist/assets/{markdown-worker-DkeWiER6.js → markdown-worker-BrjRqS1v.js} +1 -1
  40. package/dist/assets/{markdownTheme-DNT93i5L.js → markdownTheme-AHlAQmMa.js} +1 -1
  41. package/dist/assets/miniChat-D_e_c-A1.js +2 -0
  42. package/dist/assets/mobile-DQ8DrY3P.js +2 -0
  43. package/dist/assets/multirun-CNjE1o4A.js +4 -0
  44. package/dist/assets/{persistence-DPNMIbF5.js → persistence-D4-bvT80.js} +2 -2
  45. package/dist/assets/pl-pFcTalCL.js +15 -0
  46. package/dist/assets/platform-BZBZcM0G.js +2 -0
  47. package/dist/assets/projectMeta-DXt_zi6A.js +3 -0
  48. package/dist/assets/{pt-BR-MSPTLfTm.js → pt-BR-FgHhr2a5.js} +4 -4
  49. package/dist/assets/radio-Ls0T451o.js +1 -0
  50. package/dist/assets/renderElectronMiniChatApp-DcPbXQZV.js +2 -0
  51. package/dist/assets/renderMobileApp-BRxLl15H.js +23 -0
  52. package/dist/assets/runtimeConfig-Fv0KNtf-.js +2 -0
  53. package/dist/assets/runtimeEndpointReset-BB1Tdemk.js +145 -0
  54. package/dist/assets/{sortable-tabs-strip-9_5pMDEx.js → sortable-tabs-strip-CC16Z3gP.js} +1 -1
  55. package/dist/assets/src-D78dTOsO.css +2 -0
  56. package/dist/assets/{store-OURVnLSN.js → store-BScpti6X.js} +4 -4
  57. package/dist/assets/terminalApi-CdqhupHf.js +1 -0
  58. package/dist/assets/{tooltip-DMNR5rN0.js → tooltip-BLTBeSsV.js} +1 -1
  59. package/dist/assets/types-BuiqMmh_.js +1 -0
  60. package/dist/assets/{uk-cSkRAYFY.js → uk-DA7eHGEI.js} +4 -4
  61. package/dist/assets/{url-7MqoLs9X.js → url-DKx_NZ0M.js} +1 -1
  62. package/dist/assets/useAppFontEffects-DvcLyHS0.js +7 -0
  63. package/dist/assets/{useAssistantUIStore-Bq3cPj2x.js → useAssistantUIStore-SPh025NE.js} +1 -1
  64. package/dist/assets/useDesktopWindowControlsLayout-CXQXlqzu.js +1 -0
  65. package/dist/assets/useEffectiveDirectory-BMHzG07p.js +1 -0
  66. package/dist/assets/{useFontPreferences-CIurCeNv.js → useFontPreferences-DLN_uwv-.js} +1 -1
  67. package/dist/assets/useMobileNavigationStore-B4z9iLHt.js +476 -0
  68. package/dist/assets/useSessionAutoCleanup-BLBtWynA.js +1 -0
  69. package/dist/assets/{useUIStore-5agS8bsW.js → useUIStore-BJpkPwky.js} +1 -1
  70. package/dist/assets/{useWorkerHighlightedLines-Dv7-ZKa9.js → useWorkerHighlightedLines-B5dyCcVY.js} +1 -1
  71. package/dist/assets/{utils-Co19EJEL.js → utils-DJiVHqkq.js} +1 -1
  72. package/dist/assets/{zh-CN-BKqeT_uz.js → zh-CN-75zg_Zqk.js} +4 -4
  73. package/dist/assets/{zh-TW-BaNjJ8Y4.js → zh-TW-BpweHn0y.js} +4 -4
  74. package/dist/index.html +13 -11
  75. package/dist/mini-chat.html +11 -9
  76. package/dist/mobile.html +11 -9
  77. package/package.json +1 -1
  78. package/server/index.js +7 -0
  79. package/server/lib/assistants/DOCUMENTATION.md +2 -2
  80. package/server/lib/assistants/history-state.js +23 -0
  81. package/server/lib/assistants/history-state.test.js +57 -0
  82. package/server/lib/assistants/service.js +44 -15
  83. package/server/lib/assistants/service.test.js +120 -5
  84. package/server/lib/event-stream/DOCUMENTATION.md +2 -2
  85. package/server/lib/event-stream/diff-summary.js +39 -11
  86. package/server/lib/event-stream/diff-summary.test.js +73 -6
  87. package/server/lib/event-stream/protocol.test.js +70 -7
  88. package/server/lib/message-queue/DOCUMENTATION.md +1 -1
  89. package/server/lib/notifications/DOCUMENTATION.md +2 -2
  90. package/server/lib/notifications/runtime.js +68 -27
  91. package/server/lib/notifications/runtime.test.js +176 -0
  92. package/server/lib/opencode/DOCUMENTATION.md +2 -2
  93. package/server/lib/opencode/feature-routes-runtime.test.js +10 -1
  94. package/server/lib/opencode/settings-helpers.js +2 -2
  95. package/server/lib/opencode/settings-helpers.test.js +42 -0
  96. package/server/lib/opencode/settings-normalization-runtime.js +7 -2
  97. package/server/lib/session-index/DOCUMENTATION.md +12 -6
  98. package/server/lib/session-index/routes.js +34 -0
  99. package/server/lib/session-index/routes.test.js +76 -0
  100. package/server/lib/session-index/service.js +53 -4
  101. package/server/lib/session-index/service.test.js +72 -2
  102. package/server/lib/session-title/DOCUMENTATION.md +19 -14
  103. package/server/lib/session-title/runtime.js +8 -8
  104. package/server/lib/session-title/runtime.test.js +231 -0
  105. package/server/lib/session-turn-pages/DOCUMENTATION.md +26 -6
  106. package/server/lib/session-turn-pages/changes.service.js +156 -0
  107. package/server/lib/session-turn-pages/changes.service.test.js +188 -0
  108. package/server/lib/session-turn-pages/reconcile.routes.test.js +52 -0
  109. package/server/lib/session-turn-pages/reconcile.service.js +3 -1
  110. package/server/lib/session-turn-pages/reconcile.service.test.js +44 -0
  111. package/server/lib/session-turn-pages/routes.js +273 -12
  112. package/server/lib/session-turn-pages/routes.test.js +387 -0
  113. package/server/lib/session-turn-pages/service.js +31 -7
  114. package/server/lib/session-turn-pages/service.test.js +40 -0
  115. package/server/lib/small-model/DOCUMENTATION.md +93 -38
  116. package/server/lib/small-model/catalog.js +10 -2
  117. package/server/lib/small-model/catalog.test.js +3 -1
  118. package/server/lib/small-model/index.js +52 -28
  119. package/server/lib/small-model/opencode-session.js +339 -0
  120. package/server/lib/small-model/opencode-session.test.js +177 -0
  121. package/server/lib/small-model/resolve.js +116 -5
  122. package/server/lib/small-model/resolve.test.js +76 -10
  123. package/server/lib/small-model/summary-settings.test.js +60 -3
  124. package/dist/assets/AgentAvatar-B2kZjgaf.js +0 -1
  125. package/dist/assets/AssistantView-COiivQyD.js +0 -1
  126. package/dist/assets/MobileShareBridge-D89lMfZL.js +0 -4
  127. package/dist/assets/MobileSurface-3Tv0F4Gr.js +0 -2
  128. package/dist/assets/OverlayScrollbar-B9JI2aL-.js +0 -1
  129. package/dist/assets/SettingsView-CZIFnaZD.js +0 -25
  130. package/dist/assets/appThemeRegistry-CaSmAsn0.js +0 -2
  131. package/dist/assets/gitApi-DOg904nv.js +0 -7
  132. package/dist/assets/gitApiHttp-D8j1qRH4.js +0 -2
  133. package/dist/assets/insertionBoundaries-CVlbmHxP.js +0 -1
  134. package/dist/assets/main-BPqbCeMO.js +0 -172
  135. package/dist/assets/main-Co94kWxG.js +0 -2
  136. package/dist/assets/miniChat-CXKdmXX8.js +0 -2
  137. package/dist/assets/mobile-CTRPt2_t.js +0 -2
  138. package/dist/assets/multirun-CImSf28y.js +0 -4
  139. package/dist/assets/pl-CYpMAgVn.js +0 -15
  140. package/dist/assets/projectMeta-CjjJoGW4.js +0 -3
  141. package/dist/assets/radio-D7GqsVKG.js +0 -1
  142. package/dist/assets/renderElectronMiniChatApp-TowM-DTY.js +0 -2
  143. package/dist/assets/renderMobileApp-BTK6u8V7.js +0 -23
  144. package/dist/assets/runtimeConfig-BtWi74Pm.js +0 -1
  145. package/dist/assets/runtimeEndpointReset-B0Ql9ZN6.js +0 -145
  146. package/dist/assets/src-D5csxl6e.css +0 -2
  147. package/dist/assets/terminalApi-tB3qLcfa.js +0 -1
  148. package/dist/assets/useAppFontEffects-BbPkX7Aa.js +0 -7
  149. package/dist/assets/useDesktopWindowControlsLayout-Ddw59AGl.js +0 -1
  150. package/dist/assets/useEffectiveDirectory-tjzwKLjA.js +0 -1
  151. package/dist/assets/useMobileNavigationStore-BWxbxrxb.js +0 -475
  152. package/dist/assets/useSessionAutoCleanup-Bclq-U-4.js +0 -1
@@ -1,475 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/store-OURVnLSN.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-base-ui-CnHfUmDN.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/vendor-sonner-DVzioF3d.js"])))=>i.map(i=>d[i]);
2
- import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{A as n,D as r,E as i,F as a,Q as o,T as s,W as c,Z as l,b as u,j as d,k as f,t as p,w as m,y as h,z as g}from"./useUIStore-5agS8bsW.js";import{$ as _,$t as v,A as y,An as b,At as x,Ct as S,Dt as C,Et as w,F as T,H as E,I as D,L as O,M as k,Mt as A,N as j,Nt as ee,P as te,Pt as M,Q as ne,R as re,St as ie,Tt as ae,X as oe,Xt as se,Yt as ce,_t as le,bt as ue,d as N,dt as de,et as fe,gt as pe,ht as P,i as me,jt as he,kn as F,nt as ge,o as I,ot as _e,q as ve,r as ye,rt as be,tt as xe,u as L,vt as Se,w as Ce,wt as we,xn as Te,xt as Ee,yt as R,zt as De}from"./persistence-DPNMIbF5.js";import{a as Oe,i as ke,o as Ae,r as je}from"./vendor-zustand-B4dlGEM2.js";import{nt as Me,rt as Ne}from"./vendor-base-ui-CnHfUmDN.js";import{At as z,F as Pe,Gt as Fe,Ht as Ie,Lt as Le,Nt as Re,Wt as ze,jt as Be,kt as B,vt as Ve,wt as He,yt as Ue}from"./gitApiHttp-D8j1qRH4.js";import{i as We,n as Ge,r as Ke,t as qe}from"./vendor-pathe-vBmvQE8f.js";import{a as Je,n as Ye,o as Xe}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as Ze}from"./vendor-react-DLPElpoQ.js";import{r as Qe}from"./vendor-tanstack-query-core-BWz0ose6.js";import{a as $e,o as et,s as tt,t as nt}from"./vendor-tanstack-react-query-D7pys_c9.js";import{r as rt}from"./vendor-sonner-DVzioF3d.js";import{t as it}from"./clipboard-CbqhDr1g.js";import{i as at,t as ot}from"./store-OURVnLSN.js";import{i as st}from"./useAssistantUIStore-Bq3cPj2x.js";import{t as ct}from"./vendor-fuse.js-DB5wDJbI.js";var lt=()=>typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0||window.location.protocol===`capacitor:`,ut=()=>{if(typeof window>`u`||!lt()||dt()!==`ios`)return!1;let e=navigator.userAgent||``,t=navigator.maxTouchPoints??0;return/iPad/i.test(e)||/Macintosh|MacIntel/i.test(e)&&t>1},dt=()=>{if(typeof window<`u`){let e=window.Capacitor?.getPlatform?.();if(e===`ios`||e===`android`)return e}return v()?`vscode`:se()?`desktop`:`web`},ft=1048576,pt=new TextEncoder,mt=e=>e instanceof Error&&e.name===`AbortError`,ht=e=>mt(e)?e:new DOMException(`The operation was aborted.`,`AbortError`),gt=async e=>{try{await e?.cancel()}catch{}},_t=async e=>{try{await e.cancel()}catch{}},vt=async(e,t={})=>{let n=t.fetch??F,r;try{r=await n(e,{method:`GET`,headers:{Accept:`text/event-stream`},signal:t.signal})}catch(e){throw t.signal?.aborted||mt(e)?ht(e):Error(`SSE request failed`)}if(!r.ok)throw await gt(r.body),Error(`SSE response failed`);if(!/^text\/event-stream(?:\s*;|\s*$)/i.test(r.headers.get(`content-type`)??``))throw await gt(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 _t(i),i.releaseLock(),t.signal?.aborted||mt(e)?ht(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>ft)throw Error(`SSE response exceeds buffer limit`);u=i,l.push(a)}},h=e=>{if(e.length===0)return;o+=e,s+=pt.encode(e).byteLength;let t=o===`data`?4:o.startsWith(`data:`)?5+ +(o.charAt(5)===` `):0;if(u+s-t>ft)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||mt(e)?ht(e):e instanceof Error&&e.message===`SSE response exceeds buffer limit`?e:Error(`SSE response read failed`)}finally{d||await _t(i),i.releaseLock()}},yt=null,bt=null,xt=null,St=0,Ct=null,wt=new Set,Tt=new Map,Et=e=>e===`session-index-changed`||e===`message-queue-changed`||e===`assistants-changed`,Dt=()=>{Tt.clear()},Ot=e=>Tt.get(e),kt=(e,t)=>{let n=Tt.get(e);(n===void 0||t>n)&&Tt.set(e,t)},At=3e4,jt=45e3,Mt=()=>{xt&&=(clearTimeout(xt),null)},Nt=()=>{if(bt||wt.size===0)return;let e=Math.min(1e3*2**Math.min(St,5),At);bt=setTimeout(()=>{bt=null,St+=1,zt()},e)},Pt=()=>{Mt();let e=yt;yt=null,e?.controller.abort()},Ft=e=>{if(Mt(),wt.size===0||yt!==e)return;let t=setTimeout(()=>{yt===e&&xt===t&&(xt=null,Pt(),Nt())},jt)},It=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}},Lt=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: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}:{}}},Rt=e=>{let t=Lt(e);if(t){t.type===`event-stream-ready`&&(St=0),Et(t.type)&&`revision`in t&&kt(t.type,t.revision);for(let e of wt)try{e(t)}catch{}}},zt=()=>{if(typeof window>`u`||wt.size===0||yt)return;let e={controller:new AbortController};yt=e,vt(`/api/openchamber/events`,{signal:e.controller.signal,onOpen:()=>{yt===e&&Ft(e)},onActivity:()=>{yt===e&&Ft(e)},onMessage:t=>{if(yt!==e)return;let n=It(t);n&&Rt(n)}}).then(()=>{yt===e&&(yt=null,Mt(),Nt())},()=>{yt===e&&(yt=null,Mt(),e.controller.signal.aborted||Nt())})},Bt=()=>{Ct||typeof window>`u`||(Ct=d(()=>{Dt(),bt&&=(clearTimeout(bt),null),Pt(),St=0,zt()}))},Vt=()=>{Ct?.(),Ct=null},Ht=e=>(wt.add(e),Bt(),zt(),()=>{wt.delete(e),wt.size===0&&(Dt(),bt&&=(clearTimeout(bt),null),St=0,Pt(),Vt())}),Ut=!1,Wt=Promise.resolve(),Gt=null,Kt=()=>{Ut||(Ut=!0,Wt=new Promise(e=>{Gt=e}))},qt=async()=>Wt,Jt=()=>{if(!Ut)return;Ut=!1;let e=Gt;Gt=null,e?.()},Yt=`openchamber_input_draft_metadata_v1`,Xt=`openchamber_input_draft_metadata_migration_v1`,Zt=`openchamber_chat_input_draft_`,Qt=`openchamber_chat_confirmed_mentions_`,$t=()=>({ok:!1,error:{code:`unavailable`}}),en=()=>({ok:!1,error:{code:`cancelled`}}),tn=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),nn=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),rn=(e,t)=>Object.keys(e).every(e=>t.includes(e)),an=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,on=e=>typeof e==`string`&&e.length>0,sn=e=>({read:async t=>{if(!e)return $t();try{return{ok:!0,value:e.getItem(t)}}catch(e){return tn(e)}},write:async(t,n)=>{if(!e)return $t();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return tn(e)}},remove:async t=>{if(!e)return $t();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return tn(e)}},keys:async()=>{if(!e)return $t();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 tn(e)}}}),cn=()=>{try{return sn(typeof window>`u`?null:window.localStorage)}catch{return sn(null)}},ln=(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}},un=async e=>{let t=await e.keys();if(!t.ok)return t;let n=new Set;for(let e of t.value)e.startsWith(Zt)&&n.add(e.slice(29)),e.startsWith(Qt)&&n.add(e.slice(36));let r=[];for(let i of n){let n=`${Zt}${i}`,a=`${Qt}${i}`,[o,s]=await Promise.all([e.read(n),e.read(a)]);if(!o.ok)return o;if(!s.ok)return s;r.push(ln(i,o.value,s.value,[n,a].filter(e=>t.value.includes(e))))}return{ok:!0,value:r}},dn=e=>{if(!(!nn(e)||!rn(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]}},fn=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&on(t[0])&&(t[1]===`session`||t[1]===`draft`)&&on(t[2])&&e===JSON.stringify(t)}catch{return!1}},pn=e=>{if(!nn(e)||!rn(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)&&!on(e.claimedTransportIdentity))&&!(r&&!n)&&!(t&&(!n||!r)))return{complete:t,claimedTransportIdentity:e.claimedTransportIdentity,captured:n,markerCommitted:r,cleanupComplete:t}},mn=e=>{if(!nn(e)||!rn(e,[`version`,`drafts`,`tombstones`,`migration`,`legacy`])||e.version!==1||!nn(e.drafts)||!nn(e.tombstones)||!nn(e.legacy)||!rn(e.legacy,[`new`,`entries`])||!nn(e.legacy.entries))return;let t=pn(e.migration);if(!t)return;let n={};for(let[t,r]of Object.entries(e.drafts)){let e=w(r);if(!e||t!==R(e.key))return;n[t]=e}let r={};for(let[t,n]of Object.entries(e.tombstones)){if(!fn(t)||!an(n))return;r[t]=n}let i={};for(let[t,n]of Object.entries(e.legacy.entries)){let e=dn(n);if(!e||t!==e.suffix||t===`new`)return;i[t]=e}let a=e.legacy.new===void 0?void 0:dn(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}}},hn=(e=``)=>({version:1,drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:e,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),gn=e=>{try{return{ok:!0,value:JSON.stringify(e)}}catch{return{ok:!1,error:{code:`serialization`}}}},_n=async e=>{let t=await e.read(Yt);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:null};try{let e=mn(JSON.parse(t.value));return e?{ok:!0,value:e}:{ok:!1,error:{code:`corrupt`}}}catch{return{ok:!1,error:{code:`corrupt`}}}},vn=async(e,t)=>{let n=mn(t);if(!n)return{ok:!1,error:{code:`corrupt`}};let r=gn(n);return r.ok?e.write(Yt,r.value):r},yn=e=>nn(e)&&rn(e,[`version`,`claimedTransportIdentity`])&&e.version===1&&on(e.claimedTransportIdentity)?{version:1,claimedTransportIdentity:e.claimedTransportIdentity}:void 0,bn=e=>gn({version:1,claimedTransportIdentity:e}),xn=(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}}},Sn=e=>[...new Set([e.legacy.new,...Object.values(e.legacy.entries)].flatMap(e=>e?.keys??[]))],Cn=new WeakMap,wn=e=>{let t=Cn.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=mn(t);return n?i?a(async()=>i?vn(e,n):$t()):Promise.resolve($t()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},migrate:(t,n={})=>{if(r)return r;let o=a(async()=>{let r=await _n(e);if(!r.ok)return r;let a=r.value??hn(),o=i&&(n.persistenceEnabled??!0);if(!a.migration.captured){let n=await un(e);if(!n.ok)return n;if(!o)return{ok:!0,value:xn(a,n.value,``)};if(a=xn(a,n.value,t),!i)return{ok:!0,value:a};let r=await vn(e,a);if(!r.ok)return r}if(!i||!(n.persistenceEnabled??!0)){let t=await un(e);return t.ok?{ok:!0,value:a}:t}let s=await e.read(Xt);if(!s.ok)return s;if(s.value!==null)try{let t=yn(JSON.parse(s.value));if(!t)return{ok:!1,error:{code:`corrupt`}};if(t.claimedTransportIdentity!==a.migration.claimedTransportIdentity){let t=bn(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Xt,t.value);if(!n.ok)return n}}catch{return{ok:!1,error:{code:`corrupt`}}}else{let t=bn(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Xt,t.value);if(!n.ok)return n}if(a.migration.cleanupComplete)return{ok:!0,value:a};for(let t of Sn(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 vn(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 Cn.set(e,o),o},Tn=e=>{let t=wn(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=mn(e);return t?n?new Promise(e=>{i.push({snapshot:t,resolve:e}),s()}):Promise.resolve($t()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},cancelPending:()=>{let e=i;i=[],e.forEach(({resolve:e})=>e(en())),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(en()))}await(r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve()),await t.setEnabled(e),await t.flush()}}},En=`openchamber-input-drafts`,Dn=1,On=`blobs`,kn=`blobRefs`,An=class extends Error{code;constructor(e){super(e),this.code=e}},jn=e=>({ok:!1,error:{code:e instanceof An?e.code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota-exceeded`:e instanceof DOMException&&e.name===`AbortError`?`transaction-aborted`:`transaction-failed`}}),Mn=e=>{if(!(e instanceof Blob)&&!ie(e))throw new An(`invalid-value`)},Nn=e=>{if(!e)throw new An(`invalid-value`)},Pn=(e,t)=>({id:Se(e),blobID:t,transportIdentity:e.transportIdentity,ownerKind:e.owner.kind,ownerID:e.owner.ownerID}),Fn=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}`},In=async(e,t)=>(e.fingerprint??await Fn(e.value))===t,Ln=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)}},Rn=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}},zn=(e,t)=>{let n=Rn(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))},Bn=(e=Vn())=>{let t=async(t,n)=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=await e.getBlobRef(Se(t));return!r||n!==void 0&&r.blobID!==n?!1:(await e.deleteBlobRef(r.id),await Ln(e),(await e.getAllBlobRefs()).some(e=>e.blobID===r.blobID)||await e.deleteBlob(r.blobID),!0)})}}catch(e){return jn(e)}};return{put:async(t,n)=>{try{Nn(t),Mn(n);let r=await Fn(n);return await e.transaction(async e=>{let i=await e.getBlob(t);if(i&&!await In(i,r))throw new An(`blob-id-conflict`);i||await e.putBlob({id:t,value:n,refCount:0,fingerprint:r})}),{ok:!0,value:void 0}}catch(e){return jn(e)}},putAndRetain:async(t,n,r)=>{try{Nn(n),Mn(r);let i=await Fn(r);return await e.transaction(async e=>{let a=Se(t),o=await e.getBlobRef(a);if(o&&o.blobID!==n)throw new An(`blob-id-conflict`);let s=await e.getBlob(n);if(s&&!await In(s,i))throw new An(`blob-id-conflict`);s||await e.putBlob({id:n,value:r,refCount:0,fingerprint:i}),o||await e.putBlobRef(Pn(t,n)),await Ln(e)}),{ok:!0,value:void 0}}catch(e){return jn(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 jn(e)}},readReference:async t=>{try{return{ok:!0,value:(await e.transaction(e=>e.getBlobRef(Se(t))))?.blobID}}catch(e){return jn(e)}},retain:async(t,n)=>{try{return Nn(n),await e.transaction(async e=>{let r=await e.getBlobRef(Se(t));if(r&&r.blobID!==n)throw new An(`blob-id-conflict`);if(!await e.getBlob(n))throw new An(`missing-blob`);r||await e.putBlobRef(Pn(t,n)),await Ln(e)}),{ok:!0,value:void 0}}catch(e){return jn(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)zn(a,n)&&t.get(i)!==a.blobID&&(await e.deleteBlobRef(i),r.push(i));for(let[r,s]of t){let t=Rn(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 Ln(e,!0),{released:r,repaired:i,missing:a}})}}catch(e){return jn(e)}},reconcileOwnerReferences:async(t,n)=>{let r=new Map;for(let[e,i]of n)r.set(Se({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 Ln(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 jn(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 jn(e)}}}},Vn=()=>({transaction:async e=>{let t=await Hn(),n=t.transaction([On,kn],`readwrite`),r=n.objectStore(On),i=n.objectStore(kn),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()}}}),Hn=()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(new An(`database-unavailable`));return}let n=indexedDB.open(En,Dn),r=!1,i=()=>{r||(r=!0,t(new An(`database-unavailable`)))};n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(On)||e.createObjectStore(On,{keyPath:`id`}),e.objectStoreNames.contains(kn)||e.createObjectStore(kn,{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}),Un=()=>({drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:``,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),Wn=e=>({version:1,drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}),Gn=e=>{let t=Wn(e),n=Kn(JSON.parse(JSON.stringify(t)));return{drafts:n.drafts,tombstones:n.tombstones,migration:n.migration,legacy:n.legacy}},Kn=e=>{let t=mn(e);if(!t)throw Error(`invalid draft snapshot`);return t},qn=e=>e instanceof Map?[...e.entries()]:Object.entries(e??{}),Jn=e=>typeof e==`string`?e:R(e),Yn=[`session`,`draft`,`surface`],Xn=e=>({transportIdentity:e.transportIdentity,owner:{kind:e.owner.kind,ownerID:e.owner.ownerID},attachmentOccurrenceRefID:e.attachmentOccurrenceRefID}),Zn=e=>JSON.parse(JSON.stringify(e)),Qn=e=>e.phase===`metadata`?{phase:`metadata`,error:{code:e.error.code}}:{phase:`blob`,error:{...e.error},...e.reference?{reference:Xn(e.reference)}:{}},$n=e=>({status:e.status,keys:[...e.keys],errors:e.errors.map(Qn),cleanupErrors:e.cleanupErrors.map(Qn)}),er=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,tr=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&Yn.includes(t[1])&&typeof t[2]==`string`&&t[0].length>0&&t[2].length>0}catch{return!1}},nr=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:Zn(t)}]:[]),rr=e=>{let t=new Map;for(let n of Object.values(e))for(let e of nr(n))t.set(Se(e.reference),e);return t},ir=(e,t)=>({phase:`blob`,error:{...e},...t?{reference:Xn(t)}:{}}),ar=(e,t=[])=>({status:e,keys:t,errors:[],cleanupErrors:[]}),or=e=>e?.attachment.locator.kind===`blob`?e.attachment.locator.blobID:``,sr=(e,t,n={})=>{let r=Un(),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?$n(e):e)},u=async(t=r.drafts)=>{let n=[],i=new Map([...rr(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(Xn(r.reference),r.expectedBlobID);a.ok?c.delete(t):n.push(ir(a.error,r.reference))}return n},d=async(t,n,r,i)=>{let o=Xn(t),s=await e.releaseIfMatches(o,n);s.ok||(c.set(Se(o),{reference:Xn(o),expectedBlobID:n,generation:a,reason:i}),r.push(ir(s.error,o)))},f=async(t,n)=>{let r=t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,i=Xn(t.reference),a=Zn(t.attachment),o=await e.readReference(i);if(!o.ok)return{acquired:!1,error:ir(o.error,i)};if(o.value&&o.value!==r)return{acquired:!1,error:ir({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:ir(t.error,i)};let o=await n?.(Xn(i),Zn(a));if(o===void 0)return{acquired:!1,error:ir({code:`runtime-value-missing`},i)};let s=await e.putAndRetain(i,r,o);return s.ok?{acquired:!0}:{acquired:!1,error:ir(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:ir(t.error,i)}}if(s.error.code!==`missing-blob`)return{acquired:!1,error:ir(s.error,i)};let c=await n?.(Xn(i),Zn(a));if(c===void 0)return{acquired:!1,error:ir({code:`runtime-value-missing`},i)};let l=await e.putAndRetain(i,r,c);return l.ok?{acquired:!0}:{acquired:!1,error:ir(l.error,i)}};return{seed:t=>l(async()=>{if(!i)return ar(`disabled`);if(o)return{...ar(`failed`),errors:[ir({code:`invalid-record`})]};let n;try{if(!t)n=Un();else{let e=Kn(JSON.parse(JSON.stringify(t)));n={drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}}}catch{return{...ar(`failed`),errors:[ir({code:`invalid-record`})]}}let a=rr(n.drafts),s=await e.reconcileReferences(new Map([...a].map(([e,t])=>[e,or(t)])),{ownerKinds:Yn});return s.ok?(r=n,o=!0,{...ar(`committed`),errors:s.value.missing.map(e=>ir({code:`missing-blob`},a.get(e)?.reference))}):{...ar(`failed`),errors:[ir(s.error)]}}),commit:e=>{let n=[...qn(e.drafts).map(([e])=>e),...(e.delete??[]).map(Jn)];return i?l(async()=>{if(!o)return ar(`unseeded`,n);if(!i)return ar(`disabled`,n);let s=a,c=[],l=Gn(r),p=qn(e.drafts),m=qn(e.tombstones),h=(e.delete??[]).map(Jn);if(p.some(([e,t])=>!tr(e)||!er(t.revision))||m.some(([e,t])=>!tr(e)||!er(t))||h.some(e=>!tr(e))||new Set(p.map(([e])=>e)).size!==p.length||m.some(([e])=>p.some(([t])=>t===e)))return{...ar(`failed`,n),errors:[ir({code:`invalid-record`})]};try{for(let[e,t]of p){let n=w(t);if(!n||e!==R(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=Kn(Wn(l));l.drafts=t.drafts,l.tombstones=t.tombstones,l.migration=t.migration,l.legacy=t.legacy}catch{return{...ar(`failed`,n),errors:[ir({code:`invalid-record`})],cleanupErrors:c}}if(!await e.isCurrent())return ar(`stale`,n);let g=rr(r.drafts),_=rr(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,or(_.get(Se(e))),c,`acquire-failed`);return{...ar(`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,or(_.get(Se(e))),c,`stale`);return{...ar(`stale`,n),cleanupErrors:c}}if(!i||s!==a){for(let e of v.reverse())await d(e,or(_.get(Se(e))),c,`disabled`);return{...ar(`disabled`,n),cleanupErrors:c}}let y=await t.persist(Wn(l));if(!y.ok){for(let e of v.reverse())await d(e,or(_.get(Se(e))),c,`metadata-failed`);return{...ar(`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{...ar(`committed`,n),cleanupErrors:c}}):Promise.resolve($n(ar(`disabled`,n)))},reconcile:()=>l(async()=>{if(!o)return ar(`unseeded`);if(!i)return ar(`disabled`);let t=await u(),n=new Map([...rr(r.drafts)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``])),a=await e.reconcileReferences(n,{ownerKinds:Yn}),s=a.ok?a.value.missing.map(e=>ir({code:`missing-blob`},rr(r.drafts).get(e)?.reference)):[ir(a.error)];return{status:a.ok?`committed`:`failed`,keys:[],errors:s,cleanupErrors:t}}),retryCleanup:()=>l(async()=>({...ar(`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}}},cr=`openchamber-composer-reference-draft`,lr=`openchamber-pasted-text-draft`,ur=e=>Array.from(e).length,dr=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),fr=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,pr=(e,t)=>{let n=[],r=[],i=0;for(let a=0;a<Math.min(t.length,P.referenceCount);a+=1){let o=t[a];if(!(!dr(o)||!fr(o.id,P.idLength)||!fr(o.token,P.displayLength)||typeof o.text!=`string`||o.text.length>P.pastePayloadLength||typeof o.characterCount!=`number`||!Number.isSafeInteger(o.characterCount)||o.characterCount!==ur(o.text)||typeof o.index!=`number`||!Number.isSafeInteger(o.index)||o.index<1))for(let t=e.indexOf(o.token);t>=0&&n.length<P.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>P.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)},mr=e=>{try{let t=JSON.parse(e);if(!dr(t)||typeof t.text!=`string`)return{text:e,references:[]};if(t.type===cr)return(t.version===2?we(t.text,t.references):void 0)??{text:t.text,references:[]};if(t.type===lr){let e=t.version===1&&Array.isArray(t.references)?pr(t.text,t.references):[];return we(t.text,e)??{text:t.text,references:[]}}}catch{}return{text:e,references:[]}},hr=`file://`,gr=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(`/`)},_r=e=>{let t=e.replace(/\\/g,`/`).trim();return t.toLowerCase().startsWith(hr)?t:`${hr}${gr(t)}`},vr=(e,t)=>`${e}\u0000${t}`,yr=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)}),br=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)},xr=(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,Sr=e=>({version:1,key:e,revision:1,text:``,attachments:[],syntheticParts:[],mentions:[]}),Cr=(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}),wr=((e={})=>{let t=e.sink??cn(),n=e.repository??wn(t),i=e.coordinator??Tn(t),a=e.blobStore??Bn(),o=e.durability??sr(a,i,{enabled:e.persistenceEnabled??!0}),c=new Map,l=new Map,u=new Map,d=new Map,f=new Map,p=new Set,m=new Set,h,g,_=0,v=0,y=!1,b=!1,x,S=new Set,C=new Map,T=new Set;return Oe()((t,i)=>{let E=e=>c.set(e,(c.get(e)??0)+1),D=(...e)=>{for(let t of e)u.set(t,(u.get(t)??0)+1),d.delete(t)},O=e=>w(e),k=()=>e.runtimeCapture?.()??{transportIdentity:r(),generation:s()},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))}}},M=()=>e.createID?.()??fe(),ne=async(e,t)=>{let n=t instanceof File?t:new File([t],e.filename,{type:e.mimeType});return{id:e.attachmentID,file:n,dataUrl:typeof t==`string`?t:await yr(n),mimeType:e.mimeType,filename:e.filename,size:e.size,source:e.source,...e.serverPath?{serverPath:e.serverPath}:{},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource?{vscodeSource:e.vscodeSource}:{}}},re=e=>{let t=e.errors[0]??e.cleanupErrors[0];return t?.phase===`metadata`||t?.phase===`blob`&&[`blob-id-conflict`,`database-unavailable`,`invalid-value`,`missing-blob`,`quota-exceeded`,`transaction-aborted`,`transaction-failed`].includes(t.error.code)?t.error.code:`unavailable`},ae=(e,n)=>{let r=i(),a=_,s=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),!r.persistenceEnabled)return l.forEach(e=>S.add(e)),Promise.resolve({status:`disabled`,keys:l,errors:[],cleanupErrors:[]});let u=new Map(l.map(e=>[e,c.get(e)??0])),d=new Map(l.map(e=>[e,r.drafts[e]?.revision??r.tombstones[e]??0])),f=l.filter(e=>r.drafts[e]),v=Object.fromEntries(f.map(e=>[e,r.draftPersistence[e]?.status===`error`?r.draftPersistence[e]:{status:`saving`,revision:d.get(e)}])),y=Object.fromEntries(f.map(e=>[e,r.draftAttachmentPersistence[e]?.status===`error`?r.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=i(),n=await o.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:()=>_===a&&i().persistenceEnabled&&A(s)&&l.every(e=>(c.get(e)??0)===u.get(e)&&(i().drafts[e]?.revision??i().tombstones[e]??0)===d.get(e))}),r=_===a&&i().persistenceEnabled&&A(s);return(!r||n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)&&l.forEach(e=>S.add(e)),r&&t(e=>{let t={...e.draftPersistence};for(let e of f){if((c.get(e)??0)!==u.get(e))continue;let r=d.get(e);if(n.status===`committed`)t[e]={status:`saved`,revision:r};else if(n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)continue;else t[e]={status:`error`,revision:r,errorCode:re(n)}}let r={...e.draftAttachmentPersistence};for(let e of f){if((c.get(e)??0)!==u.get(e))continue;let t=d.get(e);r[e]=n.status===`committed`&&n.cleanupErrors.length===0?{status:`saved`,revision:t}:n.status===`failed`||n.cleanupErrors.length>0?{status:`error`,revision:t,errorCode:re(n)}:r[e]??{status:`idle`,revision:t}}return{draftPersistence:t,draftAttachmentPersistence:r}}),n})();return p.add(x),x.then(()=>p.delete(x),()=>p.delete(x)),x},oe=e=>{let n=i(),r=Object.fromEntries(e.flatMap(e=>{let t=n.drafts[e];return t?[[e,{status:`saving`,revision:t.revision}]]:[]}));Object.keys(r).length&&t(e=>({draftPersistence:{...e.draftPersistence,...r}}))},se=()=>{h&&clearTimeout(h),h=void 0;let e=[...m];m.clear();let t=g;return g=void 0,e.length?ae(e,t).then(()=>void 0):Promise.resolve()},ce=e=>{if(!i().persistenceEnabled){S.add(e);return}m.add(e),oe([e]),!h&&(g=k(),h=setTimeout(()=>{se()},40))},le=e=>{let t=[...e];return t.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),ae(t)},N=(e,n,r,a=`immediate`)=>{let o=R(e),s=i().drafts[o];if(!s||r!==void 0&&s.revision!==r)return;let c=O(n(s));if(!(!c||R(c.key)!==o))return E(o),t(e=>({drafts:{...e.drafts,[o]:c},...te(e,o,c)})),a===`deferred`?ce(o):le([o]),c},de=e=>e?pe(e):void 0,P=(e=[])=>JSON.parse(JSON.stringify(e)),me=(e,t,n,r=!1,i=!1)=>({status:e,...de(n)?{record:de(n)}:{},errors:P(t?.errors),cleanupErrors:P(t?.cleanupErrors),current:r,durable:i}),he=(e,t,n,r,i=!1,a=!1)=>({status:e,errors:P(t?.errors),cleanupErrors:P(t?.cleanupErrors),current:i,durable:a,source:de(n),destination:de(r)}),F=e=>e.status,ge=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,I=(e,...t)=>{let n={...e};for(let e of t)delete n[e];return n},_e=async(e,t)=>{let n={},r=i().draftAttachmentViews[R(e.key)]??{};for(let i of j(e)){let e;if(i.locator.kind===`url`){let n=t?.get(i.attachmentRefID);e=n===void 0?i.locator.url:n}else e=t?.get(i.attachmentRefID)??r[i.attachmentRefID]?.file??(typeof r[i.attachmentRefID]?.dataUrl==`string`&&ie(r[i.attachmentRefID].dataUrl)?r[i.attachmentRefID].dataUrl:void 0);if(i.locator.kind===`url`&&e!==void 0&&(e!==i.locator.url||!ie(e))||i.locator.kind===`blob`&&e!==void 0&&!(e instanceof Blob)&&!(typeof e==`string`&&ie(e)))return;e!==void 0&&(n[i.attachmentRefID]=await ne(i,e))}return n},ve=e=>e?R(e):`legacy-unowned`,ye=e=>C.get(e)??0,be=e=>{C.set(e,ye(e)+1)},xe=(e,n,r=!1)=>{r&&be(e),t(t=>{let r=n(t.attachmentBuckets[e]??[]);return{attachmentBuckets:{...t.attachmentBuckets,[e]:r},...ve(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=R(e.key),r=e.runtime;if(r.transportIdentity!==e.key.transportIdentity||!A(r))return me(`stale`,void 0);let a=i(),s=a.drafts[n],l=a.tombstones[n]??0;if(e.expectedRevision!==`absent`&&!ge(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return me(`failed`,void 0);if(e.expectedRevision===`absent`?s:s?.revision!==e.expectedRevision)return me(`conflict`,void 0,s);let u=e.expectedRevision===`absent`?l+1:e.expectedRevision+1;if(!ge(u))return me(`failed`,void 0);let d=O({version:1,key:e.key,revision:u,...e.snapshot});if(!d)return me(`failed`,void 0);let f=await _e(d,e.values);if(!f)return me(`failed`,void 0);let p=c.get(n)??0,m=s?.revision??l,h=await o.commit({drafts:{[n]:d},isCurrent:()=>A(r)&&(c.get(n)??0)===p&&(i().drafts[n]?.revision??i().tombstones[n]??0)===m,resolveBlobValue:t=>e.values?.get(t.attachmentOccurrenceRefID)});if(h.status!==`committed`)return me(F(h),h,s);let g=(c.get(n)??0)===p&&(i().drafts[n]?.revision??i().tombstones[n]??0)===m,_=A(r);if(!g)return _||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),me(`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}:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:_?{...e.draftMissingAttachmentRefIDs,[n]:[]}:I(e.draftMissingAttachmentRefIDs,n),draftHydration:_?e.draftHydration:I(e.draftHydration,n),draftPersistence:_?{...e.draftPersistence,[n]:{status:`saved`,revision:v.revision}}:I(e.draftPersistence,n),draftAttachmentPersistence:_?{...e.draftAttachmentPersistence,[n]:h.cleanupErrors.length?{status:`error`,revision:v.revision,errorCode:re(h)}:{status:`saved`,revision:v.revision}}:I(e.draftAttachmentPersistence,n)})),me(_?`committed`:`stale`,h,v,_,!0)):me(`failed`,h)},deleteDraftSnapshot:async e=>{let n=R(e.key),r=e.runtime;if(r.transportIdentity!==e.key.transportIdentity||!A(r))return me(`stale`,void 0);let a=i(),s=a.drafts[n],l=a.tombstones[n]??0;if(!ge(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return me(`failed`,void 0);if(!s||s.revision!==e.expectedRevision)return me(`conflict`,void 0);let u=e.expectedRevision+1;if(!ge(u))return me(`failed`,void 0);let d=c.get(n)??0,f=s.revision,p=Math.max(l,u),m=await o.commit({tombstones:{[n]:p},delete:[n],isCurrent:()=>A(r)&&(c.get(n)??0)===d&&i().drafts[n]?.revision===f&&(i().tombstones[n]??0)===l});if(m.status!==`committed`)return me(F(m),m);let h=(c.get(n)??0)===d&&i().drafts[n]?.revision===f&&(i().tombstones[n]??0)===l,g=A(r);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:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)}}),me(g?`committed`:`stale`,m,void 0,g,!0)):(g||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),me(`stale`,m,void 0,!1,!0))},finalizeDraftOwnership:async e=>{let n=R(e.source),r=R(e.destination),a=e.runtime,s=i(),l=s.drafts[n],u=s.drafts[r];if(n===r||e.destination.owner.kind!==`session`||e.source.transportIdentity!==a.transportIdentity||e.destination.transportIdentity!==a.transportIdentity||!A(a))return he(`stale`,void 0,l,u);if(!ge(e.expectedSourceRevision))return he(`failed`,void 0,l,u);if(!l||l.revision!==e.expectedSourceRevision||u)return he(`conflict`,void 0,l,u);let d=c.get(n)??0,f=c.get(r)??0,p=s.tombstones[n]??0,m=s.tombstones[r]??0;if(!Number.isSafeInteger(p)||p<0||!Number.isSafeInteger(m)||m<0)return he(`failed`,void 0,l,u);let h=Math.max(l.revision+1,m+1);if(!ge(h))return he(`failed`,void 0,l,u);let g=O(e.disposition===`preserve`?{...l,key:e.destination,revision:h}:{...Sr(e.destination),revision:h});if(!g)return he(`failed`,void 0,l,u);let _=await o.commit({drafts:{[r]:g},tombstones:{[n]:Math.max(p,h)},delete:[n],isCurrent:()=>A(a)&&(c.get(n)??0)===d&&(c.get(r)??0)===f&&i().drafts[n]?.revision===l.revision&&!i().drafts[r]&&(i().tombstones[n]??0)===p&&(i().tombstones[r]??0)===m,resolveBlobValue:e=>s.draftAttachmentViews[n]?.[e.attachmentOccurrenceRefID]?.file});if(_.status!==`committed`)return he(F(_),_,l,u);let v=(c.get(n)??0)===d&&i().drafts[n]?.revision===l.revision&&(i().tombstones[n]??0)===p,y=(c.get(r)??0)===f&&!i().drafts[r]&&(i().tombstones[r]??0)===m,b=A(a),x=pe(g);if(!x)return he(`failed`,_,l,u);if(b&&!v&&!y)return he(`stale`,_,l,g,!1,!0);v&&(E(n),D(n)),y&&(E(r),D(r)),t(t=>{let i=t.drafts,a=t.tombstones;(v||y)&&(i={...i}),(v||y)&&(a={...a}),v&&(delete i[n],a[n]=Math.max(a[n]??0,h)),y&&(i[r]=x,delete a[r]);let o=t.draftHydration,s=t.draftPersistence,c=t.draftAttachmentViews,l=t.draftMissingAttachmentRefIDs,u=t.draftAttachmentPersistence;return b?(v&&(o=I(o,n),s=I(s,n),c=I(c,n),l=I(l,n),u=I(u,n)),y&&(o=I(o,r),s={...I(s,r),[r]:{status:`saved`,revision:x.revision}},c=I(c,r),l=I(l,r),u={...I(u,r),[r]:_.cleanupErrors.length?{status:`error`,revision:x.revision,errorCode:re(_)}:{status:`saved`,revision:x.revision}},b&&v&&e.disposition===`preserve`&&(c={...c,[r]:t.draftAttachmentViews[n]??{}},l={...l,[r]:t.draftMissingAttachmentRefIDs[n]??[]}))):(o=I(o,n,r),s=I(s,n,r),c=I(c,n,r),l=I(l,n,r),u=I(u,n,r)),{drafts:i,tombstones:a,draftHydration:o,draftPersistence:s,draftAttachmentViews:c,draftMissingAttachmentRefIDs:l,draftAttachmentPersistence:u}});let S=v&&y&&b;return he(S?`committed`:`stale`,_,l,g,S,!0)},flushDraftPersistence:async()=>{for(await se();p.size;)await Promise.all([...p]);await o.flush()},ensureDraft:e=>{let n=R(e),r=i().drafts[n];if(r)return r;let a=O({...Sr(e),revision:(i().tombstones[n]??0)+1});if(!a)throw Error(`Invalid empty draft`);return E(n),t(e=>({drafts:{...e.drafts,[n]:a}})),le([n]),a},getDraft:e=>i().drafts[R(e)],setDraftText:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return N(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=i().getDraft(e)??i().ensureDraft(e);return i().setDraftComposerState(e,{document:t,mentions:n.mentions})},setDraftComposerState:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return N(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)=>N(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)=>N(e,e=>({...e,revision:e.revision+1,mentions:t})),addDraftMention:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:[...e.mentions,t]})),removeDraftMention:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:e.mentions.filter(e=>e.value!==t)})),setDraftSyntheticParts:(e,t)=>N(e,e=>({...e,revision:e.revision+1,syntheticParts:t})),consumeDraftSyntheticParts:(e,t)=>{let n=i().getDraft(e);if(!n)return null;let r=n.syntheticParts.filter(e=>!t?.(e)),a=n.syntheticParts.filter(e=>t?.(e));return N(e,e=>({...e,revision:e.revision+1,syntheticParts:a}),n.revision)?r:null},setDraftAttachments:(e,t)=>N(e,e=>({...e,revision:e.revision+1,attachments:t})),addDraftLocalAttachment:async(e,n,r={})=>{let a=i().getDraft(e);if(r.partID&&!a?.syntheticParts.some(e=>e.partID===r.partID))return;let o=R(e),s=c.get(o)??0,l=i().tombstones[o]??0,u=k(),d=n instanceof File?n:new File([n],r.filename??`attachment`,{type:n.type}),f;try{f=await yr(d)}catch{let e=i().drafts[o];if(A(u)&&(i().tombstones[o]??0)===l&&(e?R(e.key)===o:(c.get(o)??0)===s)&&(!r.partID||e?.syntheticParts.some(e=>e.partID===r.partID))){let n=e?.revision??i().tombstones[o]??0;t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[o]:{status:`error`,revision:n,errorCode:`transaction-failed`}}}))}return}if(!A(u)||(i().tombstones[o]??0)!==l)return;let p=i().drafts[o];if(!p&&(c.get(o)??0)!==s)return;let m=p??i().ensureDraft(e);if(R(m.key)!==o||r.partID&&!m.syntheticParts.some(e=>e.partID===r.partID))return;let h=r.attachmentID??M(),g=r.partID?Ee(r.partID,h):ue(h),_=M(),v={attachmentID:h,attachmentRefID:g,filename:r.filename??(n instanceof File?n.name:`attachment`),mimeType:n.type,size:n.size,locator:{kind:`blob`,blobID:_},source:r.source??`local`,...r.vscodePath?{vscodePath:r.vscodePath}:{},...r.vscodeSource?{vscodeSource:r.vscodeSource}:{}},y=r.partID?{...m,revision:m.revision+1,syntheticParts:m.syntheticParts.map(e=>e.partID===r.partID?{...e,attachments:[...e.attachments,v]}:e)}:{...m,revision:m.revision+1,attachments:[...m.attachments,v]},b=O(y);if(!b)return;E(o);let x={id:h,file:d,dataUrl:f,mimeType:v.mimeType,filename:v.filename,size:v.size,source:v.source,...r.vscodePath?{vscodePath:r.vscodePath}:{},...r.vscodeSource?{vscodeSource:r.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[o]:b},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...e.draftAttachmentViews[o],[g]:x}}})),await ae([o]),v},addDraftDurableAttachment:(e,n)=>{let r=i().getDraft(e)??i().ensureDraft(e);if(n.partID&&!r.syntheticParts.some(e=>e.partID===n.partID))return;let a=n.attachmentID??M(),o=n.partID?Ee(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?{...r,revision:r.revision+1,syntheticParts:r.syntheticParts.map(e=>e.partID===n.partID?{...e,attachments:[...e.attachments,s]}:e)}:{...r,revision:r.revision+1,attachments:[...r.attachments,s]},l=O(c);if(!l)return;let u=R(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}}})),ae([u]),s},getDraftAttachmentViews:e=>{let t=R(e),n=i().drafts[t],r=i().draftAttachmentViews[t]??{};return n?j(n).flatMap(e=>r[e.attachmentRefID]?[r[e.attachmentRefID]]:[]):[]},retryDraftAttachmentPersistence:async e=>{let n=R(e);if(!i().persistenceEnabled||!i().drafts[n]&&!i().tombstones[n])return;let r=await o.retryCleanup();r.cleanupErrors.length&&t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[n]:{status:`error`,revision:e.drafts[n]?.revision??e.tombstones[n],errorCode:re(r)}}})),await ae([n])},hydrateDraftAttachments:async e=>{let n=R(e),r=d.get(n);if(r)return r;let o=i().drafts[n];if(!o)return;let s=(u.get(n)??0)+1;u.set(n,s);let c=k(),l=_,f=(async()=>{t(e=>({draftHydration:{...e.draftHydration,[n]:`loading`}}));let e=()=>{if(u.get(n)!==s)return;let e=i(),r=e.draftAttachmentViews[n],a=e.draftMissingAttachmentRefIDs[n]??[];t(e=>({draftHydration:{...e.draftHydration,[n]:a.length?`degraded`:Object.keys(r??{}).length?`ready`:`idle`}}))},r={},d=[];for(let f of j(o)){let p=f.locator.kind===`url`?{ok:!0,value:f.locator.url}:await a.read(f.locator.blobID);if(!p.ok){if(p.error.code===`missing-blob`)d.push(f.attachmentRefID);else{u.get(n)===s&&_===l&&A(c)&&i().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}continue}try{r[f.attachmentRefID]=await ne(f,p.value)}catch{u.get(n)===s&&_===l&&A(c)&&i().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}}let f=i(),p=f.drafts[n],m=u.get(n);if(m===s&&_===l&&A(c)&&p===o)t(e=>({draftAttachmentViews:{...e.draftAttachmentViews,[n]:r},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[n]:d},draftHydration:{...e.draftHydration,[n]:d.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`}}))}})();d.set(n,f);try{await f}finally{d.get(n)===f&&d.delete(n)}},removeDraftAttachment:async(e,n)=>{let r=R(e),a=i().drafts[r],o=a&&j(a).find(e=>e.attachmentRefID===n);if(!a||!o)return!1;let s=ze(o)?Fe(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(r),t(e=>{let t={...e.draftAttachmentViews[r]};return delete t[n],{drafts:{...e.drafts,[r]:c},draftAttachmentViews:{...e.draftAttachmentViews,[r]:t},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[r]:(e.draftMissingAttachmentRefIDs[r]??[]).filter(e=>e!==n)}}}),(await ae([r])).status===`committed`):!1},replaceDraftAttachment:async(e,n,r,a)=>{let o=R(e),s=i().drafts[o],c=s&&j(s).find(e=>e.attachmentRefID===n);if(!s||!c)return;let l=k(),u=i().tombstones[o]??0,d=r instanceof File?r:new File([r],a?.filename??`attachment`,{type:r.type}),f;try{f=await yr(d)}catch{let e=i().drafts[o],r=e&&j(e).find(e=>e.attachmentRefID===n);A(l)&&(i().tombstones[o]??0)===u&&e&&r?.attachmentID===c.attachmentID&&r.attachmentRefID===c.attachmentRefID&&R(e.key)===o&&t(t=>({draftAttachmentPersistence:{...t.draftAttachmentPersistence,[o]:{status:`error`,revision:e.revision,errorCode:`transaction-failed`}}}));return}let p=i().drafts[o],m=p&&j(p).find(e=>e.attachmentRefID===n);if(!A(l)||(i().tombstones[o]??0)!==u||!p||m?.attachmentID!==c.attachmentID||m.attachmentRefID!==c.attachmentRefID||R(p.key)!==o)return;let h=p.syntheticParts.find(e=>e.attachments.some(e=>e.attachmentRefID===n)),g=M(),_={attachmentID:g,attachmentRefID:h?Ee(h.partID,g):ue(g),filename:a?.filename??d.name,mimeType:d.type,size:d.size,locator:{kind:`blob`,blobID:M()},source:a?.source??`local`,...a?.vscodePath?{vscodePath:a.vscodePath}:{},...a?.vscodeSource?{vscodeSource:a.vscodeSource}:{}},v=O({...p,revision:p.revision+1,attachments:h?p.attachments:p.attachments.map(e=>e.attachmentRefID===n?_:e),syntheticParts:p.syntheticParts.map(e=>e.partID===h?.partID?{...e,attachments:e.attachments.map(e=>e.attachmentRefID===n?_:e)}:e)});if(!v)return;E(o);let y={id:g,file:d,dataUrl:f,mimeType:_.mimeType,filename:_.filename,size:_.size,source:_.source,..._.vscodePath?{vscodePath:_.vscodePath}:{},..._.vscodeSource?{vscodeSource:_.vscodeSource}:{}};return t(e=>{let t={...e.draftAttachmentViews[o]};return delete t[n],{drafts:{...e.drafts,[o]:v},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...t,[_.attachmentRefID]:y}},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[o]:(e.draftMissingAttachmentRefIDs[o]??[]).filter(e=>e!==n)}}}),(await ae([o])).status===`committed`?_:void 0},replaceDraftRootAttachments:async(e,t)=>{let n=R(e),r=k();if(r.transportIdentity!==e.transportIdentity||!A(r))return me(`stale`,void 0);let a=i().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=M();s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),c.set(n,r)}}let l=a?.syntheticParts??[];for(let e of l)for(let t of e.attachments)t.locator.kind===`url`&&!c.has(t.attachmentRefID)&&c.set(t.attachmentRefID,t.locator.url);let u={text:a?.text??``,attachments:s,syntheticParts:l,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return i().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:u,values:c,runtime:r})},restoreDraftRootAttachments:async(e,t)=>{let n=R(e),r=k();if(r.transportIdentity!==e.transportIdentity||!A(r))return me(`stale`,void 0);let a=i().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=M();c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),l.set(n,r)}}let u=i().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 i().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:f,values:l,runtime:r})},deleteDraft:(e,n)=>{let r=R(e),a=i().drafts[r];if(!a||n!==void 0&&a.revision!==n)return!1;let o=a.revision+1;return ge(o)?(E(r),D(r),t(e=>{let t={...e.drafts};delete t[r];let n={...e.draftHydration},i={...e.draftPersistence},a={...e.draftAttachmentViews},s={...e.draftMissingAttachmentRefIDs},c={...e.draftAttachmentPersistence};return delete n[r],delete i[r],delete a[r],delete s[r],delete c[r],{drafts:t,tombstones:{...e.tombstones,[r]:Math.max(e.tombstones[r]??0,o)},draftHydration:n,draftPersistence:i,draftAttachmentViews:a,draftMissingAttachmentRefIDs:s,draftAttachmentPersistence:c}}),ae([r]),!0):!1},moveDraft:(e,n,r)=>{let a=R(e),o=R(n),s=i().drafts[a];if(!s||a===o||r!==void 0&&s.revision!==r||i().drafts[o]||(i().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)}}),ae([a,o]),c},moveDraftWithAttachments:async(e,n,r)=>{let a=R(e),o=R(n),s=i().drafts[a];if(!s||a===o||r!==void 0&&s.revision!==r||i().drafts[o]||(i().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 ae([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 o.setEnabled(!1),await o.flush();return}t({persistenceEnabled:!0}),await o.setEnabled(!0);let n=k();b||await i().hydrateDraftMetadata(n.transportIdentity);let r=new Set([...Object.keys(i().drafts),...Object.keys(i().tombstones),...S]);S.clear(),await ae(r),await o.flush()},hydrateDraftMetadata:e=>{let r=f.get(e);if(r)return r;let a=(async()=>{let r=(l.get(e)??0)+1;l.set(e,r);let a=k();if(a.transportIdentity!==e)return!1;let s=_,u=new Map(c),d=v,f=Object.entries(i().drafts).filter(([,t])=>t.key.transportIdentity===e).map(([e])=>e);t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`loading`]))}}));let p=i().persistenceEnabled,m;try{m=await n.migrate(e,{persistenceEnabled:p})}catch{return!1}if(l.get(e)!==r||_!==s||!A(a))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??=o.seed(h).finally(()=>{x=void 0});let n;try{n=await x}catch{return!1}if(l.get(e)!==r||_!==s||!A(a))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=i(),C={...g.drafts},w={...g.tombstones},T=new Set;for(let[e,t]of Object.entries(h.tombstones))(c.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||(c.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=R(r),a=mr(n.text),o=O({...Sr(r),text:a.text,composerReferences:a.references,mentions:Cr(a.text,n.mentions)});o&&!C[i]&&!w[i]&&(c.get(i)??0)===(u.get(i)??0)&&(C[i]=o),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 ae(T),await o.flush()}catch{return!1}return l.get(e)===r&&_===s&&A(a)})();return f.set(e,a),a.finally(()=>{f.get(e)===a&&f.delete(e)}).catch(()=>void 0),a},claimLegacyNewDraft:async e=>{let n=i().legacyNewDraft;if(!n)return i().getDraft(e);let r=R(e),a=i().drafts[r];if(v+=1,y=!0,a||i().tombstones[r])return t({legacyNewDraft:void 0}),ae([r]),a;let o=mr(n.text),s=O({...Sr(e),text:o.text,composerReferences:o.references,mentions:Cr(o.text,n.mentions)});if(s)return E(r),t(e=>({drafts:{...e.drafts,[r]:s},legacyNewDraft:void 0})),ae([r]),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}=i();return e===null?null:(t({pendingInputText:null,pendingInputMode:`replace`}),{text:e,mode:n})},requestPresetSubmit:e=>t({pendingPresetSubmit:e}),consumePendingPresetSubmit:()=>{let{pendingPresetSubmit:e}=i();return e===null?null:(t({pendingPresetSubmit:null}),e)},setPendingSyntheticParts:e=>t({pendingSyntheticParts:e}),consumePendingSyntheticParts:()=>{let{pendingSyntheticParts:e}=i();return e!==null&&t({pendingSyntheticParts:null}),e},setActiveAttachmentDraft:e=>{let n=ve(e);t(t=>({activeAttachmentDraft:e,attachedFiles:t.attachmentBuckets[n]??[],attachmentBuckets:t.attachmentBuckets[n]?t.attachmentBuckets:{...t.attachmentBuckets,[n]:[]}}))},addAttachedFile:async e=>{let t=i().activeAttachmentDraft;if(t){let n=ve(t),r=ye(n),a=await i().addDraftLocalAttachment(t,e);r!==ye(n)&&a&&i().removeDraftAttachment(t,a.attachmentRefID);return}let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,r=ve(null),a=ye(r),o;try{o=await yr(e)}catch{return}if(a!==ye(r))return;let s={id:n,file:e,dataUrl:o,mimeType:e.type,filename:e.name,size:e.size,source:`local`};xe(r,e=>[...e,s])},removeAttachedFile:e=>{let t=i().activeAttachmentDraft;if(t){let n=i().getDraft(t),r=n?[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)].find(t=>t.attachmentID===e):void 0;r&&i().removeDraftAttachment(t,r.attachmentRefID);return}xe(ve(null),t=>t.filter(t=>t.id!==e))},setAttachedFiles:e=>{xe(ve(i().activeAttachmentDraft),()=>e,!0)},clearAttachedFiles:()=>{let e=i().activeAttachmentDraft;if(e){be(ve(e)),i().getDraft(e)||i().ensureDraft(e),i().setDraftAttachments(e,[]);return}xe(ve(null),()=>[],!0)},addDraftVSCodeFileAttachment:(e,t,n,r)=>{if(i().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)||(i().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)??!1))return;let a=_r(t);i().addDraftDurableAttachment(e,{filename:n,mimeType:`text/plain`,size:r||0,source:`vscode`,vscodePath:t,vscodeSource:`file`,url:a})},addDraftVSCodeSelectionAttachment:async(e,t,n)=>{let r=R(e),a=ye(r),o=`${r}\u0000${vr(t,n.name)}`;if(!(i().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)||(i().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)??!1)||T.has(o))){T.add(o);try{let o=await i().addDraftLocalAttachment(e,n,{source:`vscode`,vscodePath:t,vscodeSource:`selection`});a!==ye(r)&&o&&i().removeDraftAttachment(e,o.attachmentRefID)}finally{T.delete(o)}}},addVSCodeFileAttachment:(e,t,n)=>{let r=i().activeAttachmentDraft;if(r){i().addDraftVSCodeFileAttachment(r,e,t,n);return}let a=`${Date.now()}-${Math.random().toString(36).slice(2)}`,o=ve(null);if((i().attachmentBuckets[o]??[]).some(t=>t.source===`vscode`&&t.vscodeSource===`file`&&(t.vscodePath||``)===e))return;let s=_r(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`};xe(o,e=>[...e,c])},addVSCodeSelectionAttachment:async(e,t)=>{let n=i().activeAttachmentDraft;if(n){await i().addDraftVSCodeSelectionAttachment(n,e,t);return}let r=`${Date.now()}-${Math.random().toString(36).slice(2)}`,a=ve(null),o=ye(a),s=`${a}\u0000${vr(e,t.name)}`;if((i().attachmentBuckets[a]??[]).some(n=>n.source===`vscode`&&n.vscodeSource===`selection`&&n.filename===t.name&&n.vscodePath===e)||T.has(s))return;T.add(s);let c;try{c=await yr(t)}catch{return}finally{T.delete(s)}if(o!==ye(a))return;let l={id:r,file:t,dataUrl:c,mimeType:t.type,filename:t.name,size:t.size,source:`vscode`,vscodePath:e,vscodeSource:`selection`};xe(a,e=>[...e,l])},addCodeSelectionAttachment:async(e,t,n)=>{let r=new File([n],t,{type:`text/plain`});await i().addVSCodeSelectionAttachment(e,r)},setActiveEditorFile:e=>{xr(i().activeEditorFile,e)||t({activeEditorFile:e})},addRestoredAttachment:({url:e,mimeType:t,filename:n})=>{let r=i().activeAttachmentDraft;if(r){if(e.startsWith(`data:`)){let a=R(r);(async()=>{try{let o=await(await fetch(e)).blob(),s=new File([o],n,{type:t||o.type||`application/octet-stream`}),c=i().activeAttachmentDraft;if(!c||R(c)!==a)return;await i().addDraftLocalAttachment(r,s)}catch{}})();return}if(!ie(e))return;i().addDraftDurableAttachment(r,{filename:n,mimeType:t,size:br(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:br(e),source:`local`,serverPath:e};xe(ve(null),e=>[...e,a])}}})})(),Tr=new Set;function Er(e){return Tr.add(e),()=>{Tr.delete(e)}}function Dr(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 Tr)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 Or(e,t){return e.scopes.includes(`all`)||e.scopes.includes(t)}var kr=`Updating OpenCode configuration...`,Ar=0,jr=kr,Mr=new Set;function Nr(){let e={isUpdating:Ar>0,message:jr};Mr.forEach(t=>t(e))}function Pr(e){Ar+=1,Ar===1?(jr=e||kr,Nr()):e&&(jr=e,Nr())}function Fr(){Ar!==0&&(--Ar,Ar===0&&(jr=kr,Nr()))}function Ir(e){jr===e&&Ar>0||(jr=e,Ar>0&&Nr())}function Lr(e){return Mr.add(e),e({isUpdating:Ar>0,message:jr}),()=>{Mr.delete(e)}}function Rr(){return{isUpdating:Ar>0,message:jr}}var zr=u(),Br=`projects`,Vr=`activeProjectId`,Hr=`projects:manualOrder`,Ur=(e,t)=>{let n=e.trim();return!n.startsWith(`~`)||!t?n:n===`~`?t:n.startsWith(`~/`)||n.startsWith(`~\\`)?`${t}${n.slice(1)}`:n},Wr=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,Gr=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},Kr=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t&&Wr.test(t)?t.toLowerCase():null},qr=e=>{let t=e.trim();if(!t)return``;let n=Ur(t,A(`homeDirectory`,{storage:zr})||Ue.getState().homeDirectory||``).replace(/\\/g,`/`);return n===`/`?`/`:n.length>1?n.replace(/\/+$/,``):n},Jr=e=>{let t=qr(e);if(!t||t===`/`)return`Root`;let n=t.split(`/`).filter(Boolean);return n[n.length-1]||t},Yr=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}},Xr=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},Zr=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)}),Qr=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=qr(a);if(!o)continue;let s=xe(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=Yr(e.iconImage);t&&(c.iconImage=t)}typeof e.color==`string`&&e.color.trim().length>0&&(c.color=e.color.trim());let l=Gr(e.defaultModel);if(l&&(c.defaultModel=l),e.iconBackground===null)c.iconBackground=null;else{let t=Kr(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},$r=()=>{try{let e=A(Br,{storage:zr});return e?Qr(JSON.parse(e)):[]}catch{return[]}},ei=()=>{if(!he())return null;let e=m().trim().replace(/\/+$/,``);return e?zr.getItem(`${Br}:${encodeURIComponent(e)}:manualOrder`):null},ti=()=>{try{let e=A(Hr,{storage:zr})||ei();if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}},ni=()=>{try{let e=A(Vr,{storage:zr});if(typeof e==`string`&&e.trim().length>0)return e.trim()}catch{return null}return null},ri=(e,t)=>{try{M(Br,JSON.stringify(e),{storage:zr})}catch{}try{t?M(Vr,t,{storage:zr}):ee(Vr,{storage:zr})}catch{}},ii=(e,t,n)=>{ri(e,t),n&&ai(n),ye({projects:e,activeProjectId:t??void 0})},ai=e=>{try{M(Hr,JSON.stringify(e),{storage:zr})}catch{}},oi=$r(),si=(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},ci=e=>{let t=[],n=new Set;for(let r of e){let e=qr(r.path);!e||n.has(e)||(n.add(e),t.push({name:r.name?.trim(),path:e}))}return t},li=(e,t,n,r)=>{let i=qr(e.path);if(!i)return null;let a=xe(i),o=r===i;return{...t,id:a,path:i,label:Jr(i),addedAt:t?.addedAt??n,lastOpenedAt:o?n:t?.lastOpenedAt??n}},ui=()=>{if(typeof window>`u`||!Te()?.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 ci(t);let n=e?.workspaceFolder;return typeof n!=`string`||n.trim().length===0?null:ci([{path:n}])},di=(e,t,n)=>{let r=ci(e),i=n?qr(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=>li(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 He(),{projects:s,activeProjectId:l,activeProject:c??s[0]??null}},fi=(e,t)=>e===t?!0:!e||!t?e===t:e.mime===t.mime&&e.updatedAt===t.updatedAt&&e.source===t.source,pi=(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&&fi(e.iconImage,r.iconImage):!1}),mi=(()=>{let e=ui();if(!e)return null;let t=di(e,[]);return t?{projects:t.projects,activeProjectId:t.activeProjectId}:null})(),hi=typeof window>`u`?!1:!!Te()?.runtime?.isVSCode,gi=mi?.projects??(hi?[]:oi),_i=mi?.activeProjectId??(hi?null:ni()),vi=gi.some(e=>e.id===_i)?_i:gi[0]?.id??null;mi&&ri(gi,vi);var yi=Oe()(je((e,t)=>({projects:gi,activeProjectId:vi,manualProjectOrder:ti(),validateProjectPath:e=>{if(typeof e!=`string`||e.trim().length===0)return{ok:!1,reason:`Provide a directory path.`};let t=qr(e);return t?{ok:!0,normalizedPath:t}:{ok:!1,reason:`Directory path cannot be empty.`}},addProject:(n,r)=>{if(hi)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()||Jr(o),u={id:xe(o),path:o,label:l,addedAt:c,lastOpenedAt:c};return e({projects:[...t().projects,u]}),He(),t().setActiveProject(u.id),t().discoverProjectIcon(u.id),u},removeProject:n=>{if(hi)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}),ii(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),Ue.getState().setDirectory(e.path,{showOverlay:!1}))}else Ue.getState().goHome()},setActiveProject:n=>{if(hi)return;let{projects:r,activeProjectId:i}=t();if(i===n)return;let a=r.find(e=>e.id===n);a&&(e({activeProjectId:n}),ii(r,n,t().manualProjectOrder),B.setDirectory(a.path),Ue.getState().setDirectory(a.path,{showOverlay:!1}))},setActiveProjectIdOnly:n=>{if(hi)return;let{projects:r,activeProjectId:i}=t();i!==n&&r.find(e=>e.id===n)&&(e({activeProjectId:n}),ii(r,n,t().manualProjectOrder))},renameProject:(n,r)=>{if(hi)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}),ii(s,o,t().manualProjectOrder)},updateProjectMeta:(n,r)=>{if(hi)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=Kr(r.iconBackground)),r.defaultModel!==void 0){let e=Gr(r.defaultModel);e?t.defaultModel=e:delete t.defaultModel}return t});e({projects:o}),ii(o,a,t().manualProjectOrder)},uploadProjectIcon:async(e,n)=>{if(hi)return{ok:!1,error:`Custom icons are not supported in this runtime`};let r=Xr(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 Zr(n)).replace(/^data:[^;]+;/i,`data:${r};`),a=await F(`/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(hi)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let n=await F(`/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(hi)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let r=await F(`/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(hi)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}),ii(o,a,c)},reorderProjectsById:(n,r)=>{if(hi)return;let{projects:i,activeProjectId:a}=t(),o=si(i,n,r);if(o===i)return;let s=o.map(e=>e.id);e({projects:o,manualProjectOrder:s}),ii(o,a,s)},moveProjectToTop:n=>{if(hi)return;let{projects:r,activeProjectId:i,manualProjectOrder:a}=t(),o=r.findIndex(e=>e.id===n);if(o<0)return;let s=o>0,c=a.length>0&&a[0]!==n;if(!s&&!c)return;let l=r;if(s){l=[...r];let[e]=l.splice(o,1);l.unshift(e)}let u=c?[n,...a.filter(e=>e!==n)]:a;e({projects:l,manualProjectOrder:u}),ii(l,i,u)},resetForRuntimeSwitch:()=>{if(hi)return;let t=$r(),n=ni(),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:ti().filter(e=>i.has(e))})},synchronizeFromSettings:n=>{if(hi)return;let r=Qr(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}),ri(a.projects,i),ai(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=o?r.map(e=>e.id):t().manualProjectOrder.filter(e=>c.has(e));if(e({projects:r,activeProjectId:i,manualProjectOrder:l}),ri(r,i),ai(l),i){let e=r.find(e=>e.id===i);e&&(B.setDirectory(e.path),Ue.getState().setDirectory(e.path,{showOverlay:!1}))}},syncVSCodeWorkspaceFolders:(n,r)=>{if(!hi)return null;let i=t(),a=i.activeProjectId?i.projects.find(e=>e.id===i.activeProjectId)??null:null,o=r??a?.path??null,s=di(n,i.projects,o);if(!s)return n.length===0&&!r&&i.projects.length>0&&(e({projects:[],activeProjectId:null}),ri([],null)),null;let c=!pi(i.projects,s.projects),l=i.activeProjectId!==s.activeProjectId;return(c||l)&&(e({projects:s.projects,activeProjectId:s.activeProjectId}),ri(s.projects,s.activeProjectId)),s.activeProject&&(B.setDirectory(s.activeProject.path),Ue.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`&&yi.getState().synchronizeFromSettings(t)});var V=Ze(),bi=e=>e?.trim()||null,xi=()=>{let e=yi.getState().getActiveProject?.();return bi(e?.path)??bi(B.getDirectory())},Si=(e,t=r())=>N.commands.list(e,t),Ci=(e=xi(),t=r())=>{let n=bi(e);return{queryKey:Si(n,t),queryFn:async({signal:e})=>{let t=await F(`/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}},wi=e=>{let t=(0,V.c)(3),n=e===void 0?{}:e,r=yi(Di),i=Ci(bi(n.directory)??bi(r)??bi(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],tt(a)},Ti=(e=xi(),t=r())=>L.getQueryData(Si(bi(e),t))??[],Ei=async(e,t,n)=>{let i=bi(t);if(r()!==n)return e.getQueryData(Si(i,n))??[];let a=Ci(i,n);return e.fetchQuery({...a,staleTime:0})};function Di(e){return e.getActiveProject?.()?.path??null}var Oi=200,ki=500,Ai=512,ji=1024,Mi=64,Ni=100,Pi=100,Fi=new Set([`__proto__`,`prototype`,`constructor`]),Ii=new Set([`text`,`audio`,`image`,`video`,`pdf`]),Li=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},Ri=e=>typeof e==`object`&&e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype?e:void 0,zi=e=>{if(typeof e==`string`)return e.length>0&&e.length<=Ai&&e.trim()===e&&!Li(e)&&!Fi.has(e)?e:void 0},Bi=e=>typeof e==`string`&&e.length>0&&e.length<=ji&&e.trim()===e&&!Li(e)?e:void 0,Vi=e=>typeof e==`string`&&e.length>0&&e.length<=Mi&&e.trim()===e&&!Li(e)?e:void 0,Hi=e=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=1e9?e:void 0,Ui=e=>{let t=Ri(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))!Ii.has(e)||typeof r!=`boolean`||(n[e]=r);return Object.keys(n).length?n:void 0},Wi=e=>{let t=Ri(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=Ui(t.input),i=Ui(t.output);return r&&(n.input=r),i&&(n.output=i),Object.keys(n).length?n:void 0},Gi=e=>{let t=Ri(e),n=zi(t?.id),r=Bi(t?.name);if(!t||!n||!r)return{partial:!0};let i={id:n,name:r},a=!1,o=Wi(t.capabilities);o&&(i.capabilities=o);let s=Ri(t.cost);if(s){let e={},t=Hi(s.input);t!==void 0&&(e.input=t);let n=Hi(s.output);n!==void 0&&(e.output=n);let r=Ri(s.cache);if(r){let t={},n=Hi(r.read);n!==void 0&&(t.read=n);let i=Hi(r.write);i!==void 0&&(t.write=i),Object.keys(t).length&&(e.cache=t)}Object.keys(e).length&&(i.cost=e)}let c=Ri(t.limit);if(c){let e={},t=Hi(c.context);t!==void 0&&(e.context=t);let n=Hi(c.output);n!==void 0&&(e.output=n),Object.keys(e).length&&(i.limit=e)}let l=Vi(t.release_date);l&&(i.release_date=l);let u=Ri(t.variants);if(u){let e={};for(let[t,[n,r]]of Object.entries(u).entries()){if(t>=Pi){a=!0;break}!zi(n)||!Ri(r)||(e[n]={})}Object.keys(e).length&&(i.variants=e)}return{value:i,partial:a}},Ki=e=>{let t=Ri(e);if(!t||t.schemaVersion!==1||!Array.isArray(t.providers)||!Ri(t.default)||typeof t.partial!=`boolean`)throw Error(`Invalid provider catalog response`);let n=[],r=new Set,i=t.providers.length>Oi;for(let[e,a]of t.providers.entries()){if(e>=Oi)continue;let t=Ri(a),o=zi(t?.id),s=Bi(t?.name),c=Ri(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>=ki||!zi(t)||Object.prototype.hasOwnProperty.call(l,t)){i=!0;continue}let r=Gi(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=Ri(t.default),o={};for(let[e,[t,n]]of Object.entries(a).entries()){let r=zi(t),a=zi(n);if(e>=Ni||!r||!a){i=!0;continue}o[r]=a}return{schemaVersion:1,providers:n,default:o,partial:t.partial||i}},qi=e=>(t=>e(t.state.data)?1/0:0),Ji=e=>{if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},Yi=(e,t=r())=>{let n=Ji(e);return{queryKey:N.configCatalog.providers(n,t),queryFn:async({signal:e})=>{let r=await F(`/api/config/catalog/providers`,{method:`GET`,headers:{Accept:`application/json`,...n?{"x-opencode-directory":n}:{}},signal:e}),i;if(r.ok)i=Ki(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=Ki({schemaVersion:1,providers:t.data.providers,default:t.data.default,partial:!1})}let a=L.getQueryData(N.configCatalog.providers(n,t));if(i.partial&&a&&!a.partial)throw Error(`Partial provider catalog refresh retained the complete snapshot`);return i},staleTime:qi(e=>{let t=e;return!!(t&&t.providers.length>0)}),gcTime:1/0,retry:2,retryDelay:100}},Xi=(e,t=r())=>{let n=Ji(e);return{queryKey:N.agents.raw(n,t),queryFn:({signal:e})=>B.listAgents(n,e),staleTime:qi(e=>Array.isArray(e)&&e.length>0),gcTime:1/0,retry:2,retryDelay:100}},Zi=(e,t,n=r())=>{if(t.providerCatalogPartial===!0)return;let i=Yi(e,n);if(L.getQueryData(i.queryKey)===void 0)try{let e=Ki({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)return;L.setQueryData(i.queryKey,e)}catch{}},Qi=(e,t=r())=>L.fetchQuery(Yi(e,t)),$i=(e,t=r())=>L.fetchQuery(Xi(e,t)),ea=async(e,t=r())=>{let n=Yi(e,t);return await L.invalidateQueries({queryKey:n.queryKey,exact:!0}),L.fetchQuery(n)},ta=async(e,t=r())=>{let n=Xi(e,t);return await L.invalidateQueries({queryKey:n.queryKey,exact:!0}),L.fetchQuery(n)},na=(e,t=r())=>L.invalidateQueries({queryKey:Yi(e,t).queryKey,exact:!0}),ra=e=>e?.trim()||null,ia=(e,t=r())=>N.agents.list(e,t),aa=(e,t=r())=>N.providers.list(e,t);function oa(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 sa=(e=xi(),t=r())=>{let n=ra(e);return{queryKey:ia(n,t),queryFn:async({signal:e})=>{let r=await L.fetchQuery(Xi(n,t)),i=await F(`/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=oa(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}},ca=(e,t=r())=>{let n=ra(e);return{queryKey:aa(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}},la=e=>{let t=(0,V.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=yi(ma),a;t[2]===i?a=t[3]:(a=sa(ra(i)??ra(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],tt(o)},ua=(e,t)=>{let n=(0,V.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=sa(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],tt(o)},da=(e,t)=>{let n=(0,V.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=ca(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],tt(o)},fa=(e=xi(),t=r())=>L.getQueryData(ia(ra(e),t))??[],pa=async(e,t,n)=>{let i=ra(t);if(r()!==n)return e.getQueryData(ia(i,n))??[];let a=sa(i,n);return await e.invalidateQueries({queryKey:a.queryKey,exact:!0}),e.fetchQuery(a)};function ma(e){return e.getActiveProject?.()?.path??null}var ha=[{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`}],ga=e=>e?.trim()||null,_a=()=>{let e=yi.getState().getActiveProject?.();return ga(e?.path)??ga(B.getDirectory())},va=(e,t=r())=>N.skillsCatalog.sources(e,t),ya=(e,t,n=r())=>N.skillsCatalog.source(e,t,n),ba=new Map,xa=(e=_a(),t=r(),n=!1)=>{let i=ga(e);return{queryKey:va(i,t),queryFn:({signal:e})=>ja(i,n,e),staleTime:5e3,retry:2}},Sa=(e,t,n=r(),i=!1)=>{let a=ga(e);return $e({queryKey:ya(a,t,n),queryFn:({signal:e,pageParam:n})=>Ma(a,t,n,i,e),initialPageParam:null,getNextPageParam:(e,t)=>Na(e,t),staleTime:5e3,retry:2})},Ca=e=>{let t=(0,V.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=yi(Ia),a;t[2]===i?a=t[3]:(a=xa(ga(i)??ga(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],tt(o)},wa=(e,t)=>{let n=(0,V.c)(8),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a=yi(La),o;n[2]!==a||n[3]!==e?(o=Sa(ga(a)??ga(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],nt(c)},Ta=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())},Ea=(e=L,t=_a(),n=r())=>e.getQueryData(va(ga(t),n))??ha,Da=(e=L,t,n,i=r())=>e.getQueryData(ya(ga(t),n,i)),Oa=async(e,t,n)=>{let i=ga(t);return r()===n?e.fetchQuery({...xa(i,n,!0),staleTime:0}):Ea(e,i,n)},ka=async(e,t,n,i)=>{let a=ga(t);if(r()!==i)return Da(e,a,n,i);let o=ya(a,n,i),s=JSON.stringify(o),c=(ba.get(s)??0)+1;ba.set(s,c),await e.cancelQueries({queryKey:o,exact:!0});let l=await Ma(a,n,null,!0,new AbortController().signal);if(r()!==i||ba.get(s)!==c)return Da(e,a,n,i);let u={pages:[l],pageParams:[null]};return e.setQueryData(o,u),u},Aa=(e,t,n)=>Promise.all([e.invalidateQueries({queryKey:va(ga(t),n)}),e.invalidateQueries({queryKey:[n,`skillsCatalog`,`source`,ga(t)],exact:!1})]);async function ja(e,t,n){let r=await Fa(Pa(`/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:ha}async function Ma(e,t,n,r,i){let a={directory:e,sourceId:t,cursor:n,refresh:r},o=await Fa(Pa(`/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 Fa(Pa(`/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 Na(e,t){let n=e.nextCursor;if(!(!n||e.items.length===0)&&!t.slice(0,-1).some(e=>e.nextCursor===n))return n}function Pa(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 Fa(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),3e3);try{return await F(e,{method:`GET`,headers:{Accept:`application/json`},signal:AbortSignal.any([t,n.signal])})}finally{clearTimeout(r)}}function Ia(e){return e.getActiveProject?.()?.path??null}function La(e){return e.getActiveProject?.()?.path??null}var Ra=e=>e?.trim()||null,za=()=>{let e=yi.getState().getActiveProject?.();return Ra(e?.path)??Ra(B.getDirectory())},Ba=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},Va=(e,t=r())=>N.skills.list(e,t),Ha=(e=za(),t=r())=>{let n=Ra(e);return{queryKey:Va(n,t),queryFn:async({signal:e})=>{let t=await F(`/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:Ba(e.path)}))},retry:2}},Ua=e=>{let t=(0,V.c)(3),n=e===void 0?{}:e,r=yi(Ka),i=Ha(Ra(n.directory)??Ra(r)??Ra(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],tt(a)},Wa=(e=L,t=za(),n=r())=>e.getQueryData(Va(Ra(t),n))??[],Ga=async(e,t,n=r())=>{let i=Ra(t);return r()===n?e.fetchQuery({...Ha(i,n),staleTime:0}):Wa(e,i,n)};function Ka(e){return e.getActiveProject?.()?.path??null}var qa=()=>{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},Ja=xi,Ya=e=>{let t=e;return t.native===!0||t.builtIn===!0},Xa=e=>{let t=e;return t.hidden===!0||t.options?.hidden===!0},Za=e=>e.filter(e=>!Xa(e)),Qa=`useAgentsStore`,$a=e=>new Promise(t=>setTimeout(t,e)),eo=2e4,to=300,no=4,ro=800,io=200,ao=2e3,oo=e=>e!=null,so=Oe()(je(ke(e=>({selectedAgentName:null,agentDraft:null,setSelectedAgent:t=>e({selectedAgentName:t}),setAgentDraft:t=>e({agentDraft:t}),loadAgents:async()=>{let e=Ja(),t=r();try{return await pa(L,e,t),!0}catch{return!1}},createAgent:async t=>lo(`POST`,t.name,t,e),updateAgent:async(t,n)=>lo(`PATCH`,t,n,e),deleteAgent:async(t,n)=>lo(`DELETE`,t,{scope:n},e),getAgentByName:e=>fa().find(t=>t.name===e),getVisibleAgents:()=>Za(fa())}),{name:`agents-store`,storage:h(),partialize:e=>({selectedAgentName:e.selectedAgentName})}),{name:`agents-store`}));typeof window<`u`&&(window.__zustand_agents_store__=so);async function co(e,t){await pa(L,e,t),r()===t&&Dr(`agents`,{source:Qa})}async function lo(e,t,n,i){Pr(`${{POST:`Creating`,PATCH:`Updating`,DELETE:`Deleting`}[e]} agent configuration…`);let a=Ja(),o=r();try{let s={};if(e===`POST`&&(s.mode=n?.mode||`subagent`,n?.description&&(s.description=n.description),n?.model&&(s.model=n.model),n?.variant&&(s.variant=n.variant),oo(n?.temperature)&&(s.temperature=n.temperature),oo(n?.top_p)&&(s.top_p=n.top_p),n?.prompt&&(s.prompt=n.prompt),n?.permission&&(s.permission=n.permission),n?.disable!==void 0&&(s.disable=n.disable),n?.scope&&(s.scope=n.scope)),e===`PATCH`){for(let e of[`mode`,`description`,`model`,`prompt`,`permission`,`disable`])n?.[e]!==void 0&&(s[e]=n[e]);for(let e of[`variant`,`temperature`,`top_p`])e in(n??{})&&(s[e]=n?.[e]??null)}let c=a?`?directory=${encodeURIComponent(a)}`:``,l=await F(`/api/config/agents/${encodeURIComponent(t)}${c}`,{method:e,headers:{"Content-Type":`application/json`,...a?{"x-opencode-directory":a}:{}},body:JSON.stringify(e===`DELETE`?{scope:n?.scope}:s)}),u=await l.json().catch(()=>null);if(!l.ok)throw Error(u?.error||`Failed to ${e.toLowerCase()} agent`);return r()===o?(e===`DELETE`&&so.getState().selectedAgentName===t&&i({selectedAgentName:null}),u?.requiresManualRestart?{ok:!0,requiresManualRestart:!0}:(u?.requiresReload??!0?await mo({message:u?.message,delayMs:u?.reloadDelayMs,scopes:[`agents`],mode:`projects`,transportIdentity:o,queryDirectory:a}):await co(a,o),{ok:!0})):{ok:!0,...u?.requiresManualRestart?{requiresManualRestart:!0}:{}}}catch(t){return console.error(`[AgentsStore] ${e} agent failed:`,t),{ok:!1}}finally{Fr()}}async function uo(e){let t=typeof e==`number`&&e>0?Math.min(e,to):0;t>0&&await $a(t);let n=Date.now(),r=0,i=null;for(;Date.now()-n<eo;){r+=1,Ir(`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 $a(r<=no&&e<1200?to:Math.min(ro+Math.max(0,r-no)*io,ao))}throw i||Error(`OpenCode did not become ready in time`)}var fo=e=>{if(!e||e.length===0)return[`all`];let t=Array.from(new Set(e));return t.includes(`all`)?[`all`]:t};async function po(e={}){let{message:t,delayMs:n}=e,i=e.transportIdentity??r(),a=e.queryDirectory??Ja(),o=fo(e.scopes),s=e.mode??(o.includes(`all`)?`projects`:`active`);try{Ir(t||`Refreshing configuration…`)}catch{}try{if(r()!==i||(await uo(n),r()!==i))return;let e=G.getState(),t=o.includes(`all`)||o.includes(`providers`),c=o.includes(`all`)||o.includes(`agents`),l=o.includes(`all`)||o.includes(`agents`),u=o.includes(`all`)||o.includes(`commands`),d=o.includes(`all`)||o.includes(`skills`),f=qa(),p=s===`projects`?yi.getState().projects:[],m=Array.from(new Set([...f?[f]:[],...p.map(e=>e.path).filter(Boolean)]));o.includes(`all`)&&s===`projects`&&G.setState({directoryScoped:{}}),t&&G.getState().invalidateProviderCache(s===`active`?f:void 0);let h=[];for(let n of m)t&&h.push(e.loadProviders({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0)),c&&h.push(e.loadAgents({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0));let g=[];l&&g.push(pa(L,a,i).then(()=>void 0)),u&&g.push(Ei(L,a,i).then(()=>void 0)),d&&(g.push(Ga(L,a,i).then(()=>void 0)),g.push(Aa(L,a,i).then(()=>void 0))),Ir(`Refreshing configuration…`),await Promise.all([...h,...g])}catch(e){throw Ir(`OpenCode refresh failed. Please retry.`),await $a(1500),e}finally{Fr()}}async function mo(e){await po(e)}async function ho(e){Pr(e?.message||`Reloading OpenCode configuration…`);let t=e?.transportIdentity??r(),n=e?.queryDirectory??Ja();try{let i=await F(`/api/config/reload`,{method:`POST`,headers:{"Content-Type":`application/json`}}),a=await i.json().catch(()=>null);if(!i.ok){let e=a?.error||`Failed to reload configuration`;throw Error(e)}if(r()!==t){Fr();return}let o={...e,transportIdentity:t,queryDirectory:n,scopes:e?.scopes??[`all`],mode:e?.mode??`projects`};a?.requiresReload?await mo({...o,message:a.message,delayMs:a.reloadDelayMs}):await mo(o)}catch(e){throw console.error(`[reloadOpenCodeConfiguration] Failed:`,e),Ir(`Failed to reload configuration. Please try again.`),await $a(2e3),Fr(),e}}var go=null;go||=Er(e=>{if(e.source!==Qa&&Or(e,`agents`)){let{loadAgents:e}=so.getState();e()}});var _o=e=>typeof e==`string`?e.trim():``,vo=(e,t)=>!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`,yo={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`},bo=e=>e?e[0].toUpperCase()+e.slice(1).toLowerCase():``,xo=e=>{let t=e.startsWith(`~`)?e.slice(1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t},So=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)}},Co=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},wo=e=>{let t=e.toLowerCase(),n=yo[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)?bo(t).replace(/([a-z])(\d)/i,`$1$2`):bo(e)},To=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},Eo=e=>{let t=_o(e).toLowerCase();return t?t===`free`||t===`thinking`?t:Do(t):``},Do=e=>{let t=_o(e);if(!t)return``;let{base:n,suffix:r}=So(xo(t)),i=To(Co(n).map(wo));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=Eo(r);return s?`${o} (${s})`:o},Oo=e=>!/\s/.test(e)&&/[-_]/.test(e),ko=(e,t,n={})=>{let r=_o(e?.name),i=_o(e?.id)||_o(t);return r&&!Oo(r)?vo(r,n.maxLength):i?vo(Do(i),n.maxLength):r?vo(Do(r.toLowerCase()),n.maxLength):n.fallbackLabel??``},Ao=(e,t)=>{let n=e?.models;if(!(!n||!t))return Array.isArray(n)?n.find(e=>_o(e.id)===t):n[t]},jo=(e,t,n={})=>{let r=_o(t);return ko(Ao(e,r),r,n)},Mo=(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}},No=e=>e===`primary`||e===`all`||e==null,Po=e=>e.filter(e=>No(e.mode)),Fo=(e,t,n=1)=>{let r=Po(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},Io=e=>e.charAt(0).toUpperCase()+e.slice(1),Lo=(e,t)=>{if(t){let n=e.find(e=>e.name===t);return Io(n?n.name:t)}let n=e.filter(e=>No(e.mode)),r=n.find(e=>e.name===`build`)||n[0]||e[0];return r?Io(r.name):`Select agent`},Ro=(e,t,n=``)=>jo(e,t,{fallbackLabel:n}),zo=e=>{if(!e||e.trim().length===0)return`Default`;let t=e.trim();return/^\d+(\.\d+)?$/.test(t)?t:Io(t)},Bo=e=>typeof e==`object`&&!!e,Vo=e=>typeof e==`string`&&e.length>0,Ho=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(!Vo(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(!Vo(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;!Vo(t)||!Vo(n)||r.set(t,n)}r.size>0&&i.set(t,r)}i.size>0&&t.set(e,i)}return t},Uo=Oe()(ke((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:h(),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=Bo(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(!Vo(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;!Vo(t)||typeof n!=`object`||!n||!Vo(n.providerId)||!Vo(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:Ho(n?.sessionAgentModelVariantSelections)}},migrate:e=>e})),Wo=_,Go=(e,t)=>{let n=Wo(t);if(!n)return null;let r=null;for(let t of e){let e=Wo(t.path);e&&(n!==e&&!n.startsWith(`${e}/`)||(!r||e.length>(Wo(r.path)?.length??0))&&(r=t))}return r},Ko=(e,t,n)=>{let r=Wo(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=Wo(t.path);n&&(r!==n&&!r.startsWith(`${n}/`)||n.length>o&&(o=n.length,i=t,a=Wo(e)))}if(!i)return null;let s=[Wo(i.projectDirectory),a].filter(e=>!!e);for(let t of s){let n=e.find(e=>Wo(e.path)===t)??null;if(n)return n;let r=Go(e,t);if(r)return r}return null},qo=(e,t,n)=>Ko(e,t,n)??Go(e,n),Jo=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)}},Yo=[`concise`,`detailed`,`mentor`,`pushback`,`noFiller`,`matchEnergy`,`warmPeer`],Xo=e=>typeof e==`string`&&Yo.includes(e),Zo=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.`}},Qo=new Map,$o=new Map,es=({enabled:e,preset:t,customInstructions:n})=>e?t===`custom`?(typeof n==`string`?n.trim():``)||null:Xo(t)?Zo(t):null:null,ts=(e,t=r())=>{Qo.set(t,{enabled:e.enabled===!0,preset:e.preset,customInstructions:e.customInstructions})},ns=(e=r())=>{let t=Qo.get(e);if(t)return es(t)},rs=async()=>{let e=r(),t=ns(e);if(t!==void 0)return t;let n=$o.get(e);if(n)return n;let i=(async()=>{let t=await me(e);return ts({enabled:t.responseStyleEnabled,preset:t.responseStylePreset,customInstructions:t.responseStyleCustomInstructions},e),ns(e)??null})();$o.set(e,i);try{return await i}finally{$o.get(e)===i&&$o.delete(e)}},is;(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})(is||={});function as(e,t){return e.findIndex(e=>e.id===t)}function os(e,t){if(!t)return e.slice();let n=as(e,t);return n<0?e.slice():e.slice(0,n)}function ss(e,t,n){let r=as(e,n);return r<0?!1:as(e,t)>=r}function cs(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=as(e,t);if(!(n<0))for(let t=n-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}}function ls(e,t){let n=as(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 us=`openchamber:sync:debug`,ds;function fs(){if(ds!==void 0)return ds;try{ds=typeof localStorage<`u`&&localStorage.getItem(us)===`1`}catch{ds=!1}return ds}function ps(e,...t){fs()&&(`${e}`,[...t])}var ms={pipeline:{coalesced:(e,t)=>ps(`pipeline`,`coalesced`,e,t),flush:e=>ps(`pipeline`,`flush`,`${e} events`)},reducer:{messageUpdatedUnchanged:(e,t,n,r,i)=>ps(`reducer`,`message.updated UNCHANGED (skipped)`,{sessionID:e,messageID:t,role:n,finish:r,completed:i}),partUpdatedNoExistingParts:(e,t,n)=>ps(`reducer`,`message.part.updated NO EXISTING PARTS`,{messageID:e,partID:t,partType:n}),partDeltaNoParts:(e,t)=>ps(`reducer`,`message.part.delta DROPPED (no parts array)`,{messageID:e,partID:t}),partDeltaNotFound:(e,t)=>ps(`reducer`,`message.part.delta DROPPED (partID not found)`,{messageID:e,partID:t}),partSkipped:(e,t,n)=>ps(`reducer`,`message.part.updated SKIPPED (type filtered)`,{messageID:e,partID:t,partType:n})},dispatch:{eventNoChange:(e,t,n)=>ps(`dispatch`,`event → no change`,{eventType:e,sessionID:t,messageID:n}),eventApplied:(e,t,n)=>ps(`dispatch`,`event → applied`,{eventType:e,sessionID:t,messageID:n})},recovery:{materializing:e=>ps(`recovery`,`materializing session`,e)}},hs=new Set([`patch`,`step-start`,`step-finish`]),gs=[`text`,`output`],_s=new Set([`completed`,`error`,`aborted`,`failed`,`timeout`,`cancelled`]);function vs(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 ys(e,t){let n=[];for(let r of gs){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 bs(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 xs(e){if(e.type!==`tool`)return;let t=e.state?.status;return typeof t==`string`?t:void 0}function Ss(e,t){if(e.type!==`tool`||t.type!==`tool`)return!1;let n=xs(e),r=xs(t);if(n&&_s.has(n)&&(!r||!_s.has(r)))return!0;let i=bs(e),a=bs(t);return typeof i==`number`&&typeof a!=`number`}function Cs(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 ws=[`agent`,`mode`,`providerID`,`modelID`,`variant`,`model`],Ts=[`input`,`output`,`reasoning`];function Es(e){if(!e||typeof e!=`object`)return!1;let t=e;return Ts.some(e=>typeof t[e]==`number`&&Number.isFinite(t[e])&&t[e]>0)}function Ds(e){if(!e||typeof e!=`object`)return!1;let t=e;return Ts.every(e=>typeof t[e]!=`number`||!Number.isFinite(t[e])||t[e]<=0)}function Os(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function ks(e,t){let n={...e,...t},r=e,i=t,a=n;for(let e of ws){let t=Os(i[e]),n=Os(r[e]);t?a[e]=t:n?a[e]=n:delete a[e]}return(e.time||t.time)&&(n.time={...e.time,...t.time}),Es(r.tokens)&&Ds(i.tokens)&&(a.tokens=r.tokens),n}function As(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(!Cs(e[n],t[n]))return!1;return!0}function js(e,t,n){if(!t)return!1;let r=e.message[t];return r?as(r,n)>=0:!1}function Ms(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=as(r,n.id);if(a>=0){let t=r[a],i=ks(t,n);if(As(t,i))return ms.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=as(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(hs.has(r.type))return ms.reducer.partSkipped(r.messageID,r.id,r.type),!1;let i=r.messageID,a=n.sessionID??r.sessionID;if(!i)return!1;let o=!js(e,a,i),s=e.part[i];if(!s)return ms.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=is.search(c,r.id,e=>e.id);if(l.found){let e=c[l.index];if(Ss(e,r))return!1;let t=ys(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=is.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=is.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 ms.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=is.search(r,n.partID,e=>e.id);if(!i.found)return ms.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?vs(o,n.delta):(o??``)+n.delta,__dedupeNextDeltaFields:s.filter(e=>e!==n.field)},e.part[n.messageID]=l,!0}default:return!1}}function Ns(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function Ps(e){let t=e.id;return typeof t==`string`&&t.length>0?t:void 0}function Fs(e){return e.slim===!0}function Is(e,t){if(!e||e.length===0||!t.some(e=>Fs(e)))return t;let n=new Map;for(let t of e){let e=Ps(t);e&&!Fs(t)&&n.set(e,t)}if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!Fs(e))return e;let t=Ps(e);if(!t)return e;let i=n.get(t);return i?(r=!0,i):e});return r?i:t}function Ls(e,t){return e===t||e.length===t.length&&e.every((e,n)=>e===t[n])?t:e}function Rs(e){let t=e.clientRole??e.role;return typeof t==`string`?t:``}function zs(e){return Rs(e)!==`assistant`||!Ns(e)}function Bs(e,t,n){if(!e||e.length===0)return t;let r=Is(e,t);if(zs(n))return Ls(r,e);let i=new Set;for(let e of r){let t=Ps(e);t&&i.add(t)}let a=new Map,o=[],s,c=0;for(let t of e){let e=Ps(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 Ls(r,e);let l=[...o];for(let e of r){l.push(e);let t=Ps(e);if(!t)continue;let n=a.get(t);n&&l.push(...n)}return Ls(l,e)}var Vs=e=>Object.freeze(e),Hs=Object.freeze({initial:Vs({id:`initial`,onStale:`drop`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),prepend:Vs({id:`history`,onStale:`drop`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),recovery:Vs({id:`recovery`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),"reconcile-page":Vs({id:`reconcile-page`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`keep-unless-full`}),materialize:Vs({id:`materialize`,onStale:`drop`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`})}),Us=Vs({id:`recovery-backfill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),Ws=Vs({id:`send-gap-fill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),Gs=Hs.initial;function Ks(e){let t=Hs[e.purpose]??Gs;return!e.stale||t.onStale===`drop`?t:Us}function qs(e,t){return e.preserveStreaming===`none`?!1:e.preserveStreaming===`all`||t===`assistant`}var Js=e=>structuredClone(e),Ys=e=>({transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID});function Xs(e){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID])}function Zs(e,t){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID,t])}function Qs(e){return JSON.stringify([e.transport,e.generation])}function $s(e,t){return e.created===t.created?e.messageID<t.messageID?-1:+(e.messageID>t.messageID):e.created-t.created}function ec(e){let t=e.time?.created;return{created:typeof t==`number`&&Number.isFinite(t)?t:0,messageID:e.id}}function tc(e){return zs(e)}function nc(e){return Fs(e)?`slim`:`full`}function rc(e){return e.some(e=>Fs(e))?`slim`:`full`}var ic=e=>{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(ic);let t=e,n={};for(let e of Object.keys(t).sort()){let r=t[e];r!==void 0&&(n[e]=ic(r))}return n},ac=e=>{let t=new Uint8Array(e),n=``;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n};async function oc(e,t){let n=JSON.stringify(ic({info:e,parts:t})),r=new TextEncoder().encode(n);return{hash:ac(await crypto.subtle.digest(`SHA-256`,r)),byteSize:r.byteLength}}var sc=e=>({scope:Ys(e.scope),messageID:e.messageID,info:Js(e.info),parts:Js(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}}),cc=e=>{let t=0;return()=>{let n=e();return t=n>t?n:t+1,t}},lc=(e,t)=>{let n=t.slice().sort((e,t)=>$s(e.sortKey,t.sortKey)).map(sc);return{scope:Ys(e),records:n,byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},uc=e=>Js(e),dc=e=>Ys(e),fc=(e=Date.now)=>cc(e),pc=e=>sc(e),mc=(e,t)=>lc(e,t.slice());function hc(e){return tc(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 gc=(e,t)=>e<t?-1:+(e>t),_c=[`text`,`output`],vc={pending:1,started:2,running:3,completed:4,error:4};function yc(e,t){return e.filter(e=>!!e?.id&&!t.has(e.type)).sort((e,t)=>gc(e.id,t.id))}function bc(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 xc(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 Sc(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Cc(e){return xc(e)===void 0&&_c.some(t=>{let n=Sc(e,t);return typeof n==`string`&&n.length>0})}function wc(e){let t=e.state;if(!(!t||typeof t!=`object`))return t}function Tc(e){let t=wc(e)?.status;return typeof t==`string`?t:void 0}function Ec(e){return e?vc[e]??0:0}function Dc(e,t){if(Cc(e))return!0;if(xc(e)===void 0){if(e.type===`tool`){let n=Tc(e);return n===`completed`||n===`error`?t:!0}return!0}return t}function Oc(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 kc(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length>0}function Ac(e,t,n){if(e.type!==`tool`||t.type!==`tool`)return n;let r=wc(e);if(!r)return n;let i=wc(n)??{},a=wc(t)??{},o={...i},s=!1,c=Tc(e),l=Tc(t);Ec(c)>Ec(l)&&c&&(o={...o,status:c},s=!0);let u=r.input,d=a.input;kc(u)&&!kc(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 kc(m)&&!kc(a.metadata)&&(o={...o,metadata:m},s=!0),s?n===t?{...t,state:o}:{...n,state:o}:n}function jc(e,t){if(!e||xc(t)!==void 0)return t;let n=t;for(let r of _c){let i=Sc(e,r);if(!i)continue;let a=Sc(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=Oc(e);if(r){let e=Oc(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=Ac(e,t,n),n}function Mc(e,t){if(!e||e.length===0||!t.some(e=>Fs(e)))return t;let n=new Map;for(let t of e)t.id&&!Fs(t)&&n.set(t.id,t);if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!Fs(e)||!e.id)return e;let t=n.get(e.id);return t?(r=!0,t):e});return r?i:t}function Nc(e){return e.__openchamberOptimistic===!0}function Pc(e){return!!(e&&e.length>0&&e.some(Nc))}function Fc(e){return e.length===0||e.some(e=>Fs(e))}function Ic(e,t,n,r,i,a){if(a===`keep-unless-full`&&e&&Pc(e)&&Fc(t))return e;let o=Mc(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=jc(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=>Fs(e)),f=e.filter(e=>!!e?.id&&!u.has(e.id)&&!n.has(e.type)&&(Dc(e,i)||d&&!Fs(e)));return f.length===0?c:[...c,...f].sort((e,t)=>gc(e.id,t.id))}var Lc=e=>e,Rc=e=>{let t=Lc(e).finish;return typeof t==`string`&&t.length>0},zc=e=>typeof Lc(e).time?.completed==`number`,Bc=e=>!!Lc(e).error;function Vc(e,t){let n=Lc(t),r=n.finish,i=n.time?.completed,a=n.error,o=!Rc(e)&&typeof r==`string`&&r.length>0,s=!zc(e)&&typeof i==`number`,c=!Bc(e)&&!!a;if(!o&&!s&&!c)return e;let l={...e};return o&&(l.finish=r),s&&(l.time={...Lc(e).time,completed:i}),c&&(l.error=a),l}function Hc(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`?Uc(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 Uc(e,t){let n=e.slice();for(let e of t){let t=ec(e),r=n.length;for(let e=0;e<n.length;e+=1)if($s(t,ec(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function Wc(e,t,n){return Hc(e,t,(e,t)=>t?Vc(e,t):e,n)}function Gc(e,t,n){return Hc(e,t,(e,t)=>!t||JSON.stringify(e)===JSON.stringify(t)?e:ks(e,t),n)}function Kc(e,t,n,r={}){let i=r.skipPartTypes??new Set,a=r.merge??Gs,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`?Gc(u,c,o):Wc(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=Ic(r,yc(e.parts??[],i),i,qs(a,e.info.role),Ns(e.info),a.protectOptimistic);(r?bc(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 qc(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function Jc(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&&qc(i)||r.push(i.id));return{hasMessages:!0,renderable:r.length===0,missingPartMessageIDs:r}}var Yc=(e,t)=>e<t?-1:+(e>t);function Xc(e){return e.filter(e=>!!e?.id).sort((e,t)=>Yc(e.id,t.id))}function Zc(e,t){if(t.length===0)return{...e,confirmed:[]};let n=[...e.session],r=new Map(e.part.map(e=>[e.id,Xc(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,Xc(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,Xc(e.parts))}return{cursor:e.cursor,complete:e.complete,session:n,part:[...r.entries()].sort((e,t)=>Yc(e[0],t[0])).map(([e,t])=>({id:e,part:t})),confirmed:i}}var Qc={kind:`unknown`,loadedTurns:0},$c=3e4,el=12e5,tl={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_diff:{},todo:{},permission:{},question:{},mcp:{},lsp:[],vcs:void 0,limit:20},nl={ready:!1,path:{state:``,config:``,worktree:``,directory:``,home:``},projects:[],providers:{all:[],connected:[],default:{}},providerAuth:{},config:{},reload:void 0,sessionTodo:{}};function rl(e,t){return e===void 0||t===void 0?!1:t>e}var il=class extends Error{};function al(e,t,n){if(n===`reconcile-page`)return e??Qc;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 il(`session message page: complete=false requires non-empty cursor`);if(t.records.length===0)throw new il(`session message page: complete=false with zero records makes no progress`);if(n===`prepend`&&e?.kind===`has-more`&&e.cursor===o)throw new il(`session message page: prepend returned the same cursor without progress`);return{kind:`has-more`,cursor:o,loadedTurns:a}}function ol(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 sl(e,t,n,r){let i=rl(r.capturedRevision,r.liveRevision),a=Ks({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=Zc({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=Kc(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=al(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 il))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=!ol(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 cl=new Set([`tool`,`reasoning`,`file`,`text`]),ll=new Set([`tool`,`reasoning`,`file`]);function ul(e){return e.some(e=>Fs(e)&&cl.has(e.type))}function dl(e,t){let n=!1,r=!1;for(let t of e)ll.has(t.type)&&(n=!0,Fs(t)&&(r=!0));return n?r?!0:t?Ns(t):!1:!1}var fl=e=>{if(!e)return``;let t=e.clientRole??e.role;return typeof t==`string`?t:``};function pl(e,t){return!e?.id||fl(e)!==`user`?!1:!t||t.length===0||!t.some(e=>e.type===`subtask`||e.type===`compaction`)}function ml(e){let t=0;for(let n of e.messageOrder)pl(e.messagesByID[n],e.partsByMessageID[n])&&(t+=1);return t}var hl=(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(pl(a,e.partsByMessageID[n]))break;if(fl(a)!==`assistant`)continue;let o=a.parentID;typeof o==`string`&&o.length>0&&o!==t||r.push(a)}return r},gl=(e,t)=>Ns(e)?!0:Array.isArray(t)&&t.length>0;function _l(e){let t;for(let n=e.messageOrder.length-1;n>=0;--n){let r=e.messageOrder[n];if(pl(e.messagesByID[r],e.partsByMessageID[r])){t=r;break}}return t?hl(e,t).some(t=>gl(t,e.partsByMessageID[t.id])):!1}function vl(e){return e.materializeActive?`p2`:e.prependActive||e.earlierHistoryLoaded?`p1`:e.p0Satisfied?`p0`:`idle`}var yl=new Set([`stop`,`length`]);function bl(e){let t=e.messageOrder[e.messageOrder.length-1];if(!t)return!1;let n=e.messagesByID[t];if(!n||fl(n)!==`assistant`||n.error)return!1;let r=n.finish;return typeof r!=`string`||!yl.has(r)?!1:typeof n.time?.completed!=`number`}function xl(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 Sl(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 Cl=[`message.updated`,`message.removed`,`message.part.updated`,`message.part.removed`,`message.part.delta`];function wl(e){return Cl.includes(e)}function Tl(e){return e.trim()}function El(e){return`${Tl(e.directory)}\n${e.sessionID}`}function Dl(e,t){return e.session_history_boundary?.[t]??Qc}function Ol(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function kl(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 Al(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||!kl(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 jl(e,t,n){let r=e.getState(),i=n.page,a=sl(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?(Al(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 Ml(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(!wl(e.type))continue;i=!0;let t=Ms(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 Nl(e,t){return Ml(e,[t.event])}function Pl(e,t){return Ml(e,t.events)}function Fl(e,t,n){if(n.records.length===0)return{applied:!1,changed:!1};let r=e.getState(),i=Kc({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 Il(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 Ll(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]=Ol(n.parts),e.setState({message:o,part:s}),{applied:!0,changed:!0}}function Rl(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 zl(e,t,n,r){return n.clearOptimisticShadow?.({directory:r,sessionID:e,messageID:t}),{applied:!0,changed:!1}}function Bl(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 Vl(e,t,n){let r=Bl(e,t);if(!n.page)return{applied:!0,changed:r};let i=jl(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 Hl(e){let t=new Map,n=new Map,r=r=>{let i=El(r);if(n.has(i))return;let a=Tl(r.directory),o=e.getStore(a),s=r.sessionID,c=o.getState().message?.[s],l=Dl(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=Dl(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=kl(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=Tl(t.directory),r=e.getStore(n).getState(),i=t.sessionID,a=r.message?.[i]??[],o=e.getLiveRevision?.(n,i)??0;return Sl({sessionID:i,messages:a,parts:r.part??{},boundary:Dl(r,i),liveRevision:o})},getPagination(t){let n=Tl(t.directory),r=e.getStore(n).getState();return xl(t.sessionID,Dl(r,t.sessionID))},getRequestState(t){let n=Tl(t.directory);return e.getRequestState?.(n,t.sessionID)??{sessionID:t.sessionID,status:`idle`}},getHydrationState(e){let t=a.getTranscript(e),n=_l(t);return{sessionID:e.sessionID,p0Satisfied:n,phase:vl({p0Satisfied:n,earlierHistoryLoaded:ml(t)>1})}},getMessage(e,t){return a.getTranscript(e).messagesByID[t]},getParts(t,n){let r=Tl(t.directory);return e.getStore(r).getState().part?.[n]??[]},hasSession(t){let n=Tl(t.directory),r=e.getStore(n).getState().message;return r?Object.prototype.hasOwnProperty.call(r,t.sessionID):!1},apply(t,n){let r=Tl(t.directory),i=e.getStore(r),a=t.sessionID;switch(n.type){case`http-page`:return jl(i,a,n);case`sse-event`:return Nl(i,n);case`sse-event-batch`:return Pl(i,n);case`optimistic-add`:return Ll(i,a,n,e,r);case`optimistic-confirm`:return zl(a,n.messageID,e,r);case`optimistic-remove`:return Rl(i,a,n.messageID,e,r);case`reset`:return Vl(i,a,n);case`materialize-snapshots`:return Fl(i,a,n);case`remove-message`:return Il(i,a,n.messageID);default:return{applied:!1,changed:!1}}},subscribe(e,n){let a=El(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 Ul=new Set,Wl=new Set;function Gl(e,t){return`${e}\n${t}`}function Kl(){for(let e of Wl)e()}function ql(e,t){!e||!t||(Ul.add(Gl(e,t)),Kl())}function Jl(e,t){!e||!t||Ul.delete(Gl(e,t))&&Kl()}function Yl(e,t){if(!e)return!1;if(t)return Ul.has(Gl(t,e));let n=`\n${e}`;for(let e of Ul)if(e.endsWith(n))return!0;return!1}function Xl(e){return Wl.add(e),()=>{Wl.delete(e)}}var Zl=[],Ql=new Map,$l=new Map,eu=0,tu=()=>{let e=Zl.findIndex(e=>e.priority===`user`);if(e>=0){let[t]=Zl.splice(e,1);return t}return Zl.shift()},nu=()=>{for(;eu<4;){let e=tu();if(!e)return;Ql.delete(e.key),eu+=1,Promise.resolve().then(()=>e.run()).then(t=>{e.resolve(t)},t=>{e.reject(t)}).finally(()=>{--eu,$l.delete(e.key),nu()})}};function ru(e,t,n){let r=n?.priority??`background`,i=$l.get(e);if(i){let t=Ql.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 Zl.push(c),Ql.set(e,c),$l.set(e,s),nu(),s}var iu=null,au=0,ou=new Set;function su(){au+=1;for(let e of ou)e()}function cu(e){return e}function lu(e){return ou.add(e),()=>{ou.delete(e)}}function uu(){return au}function du(e){return iu?.repository===e?e:(iu={kind:`query`,repository:e},su(),e)}function fu(){iu&&(iu=null,su())}function H(){return iu?.repository??null}function pu(){let e=H();if(!e)throw Error(`TranscriptRepository is not bound — SyncProvider must mount first`);return e}function mu(e,t){let n=H();if(n)return n;let r=cu(t);return Hl({getStore:e=>r})}function U(e,t,n){return{directory:e.trim(),sessionID:t,...n?.transport===void 0?{}:{transport:n.transport},...n?.generation===void 0?{}:{generation:n.generation}}}function hu(e){try{let t=H(),n=r(),i=s();return t?.getCacheBudget?.().listCanonical({transport:n,generation:i})?.filter(t=>t.scope.sessionID===e).map(e=>U(e.scope.directory,e.scope.sessionID,{transport:e.scope.transport,generation:e.scope.generation}))??[]}catch{return[]}}function gu(e,t){let n=H();return n?n.apply(e,t):null}async function _u(e,t){let n=pu();if(typeof n.fetchPreviousPage!=`function`)throw Error(`TranscriptRepository does not support fetchPreviousPage`);await n.fetchPreviousPage(U(e,t))}async function vu(e,t){let n=pu();if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support ensureInitial`);await n.ensureInitial(U(e,t))}async function yu(e,t){let n=pu(),r=U(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 bu(e,t){let n=pu();if(typeof n.refreshFromAuthority!=`function`)throw Error(`TranscriptRepository does not support refreshFromAuthority`);ql(e,t);try{await n.refreshFromAuthority(U(e,t))}finally{Jl(e,t)}}async function xu(e,t,n,r){let i=pu();if(typeof i.materializeMessage!=`function`)throw Error(`TranscriptRepository does not support materializeMessage`);let a=U(e,t);await ru(`${e}\n${t}\n${n}`,()=>i.materializeMessage(a,n),{priority:r?.priority??`background`})}function Su(e,t,n){let r=H();return!r||typeof r.getMessageMaterializationState!=`function`?{sessionID:t,messageID:n,status:`idle`}:r.getMessageMaterializationState(U(e,t),n)}function Cu(e,t){H()?.purgeSession?.(U(e,t))}var wu=null;function Tu(e){wu&&wu!==e&&wu.cancelAll(`reregister`),wu=e}function Eu(e){wu?.captureCheckpoints(e)}function Du(e){wu?.onCompensation(e)}async function Ou(e){return wu?wu.ensureOnObserve(e):null}function ku(e){wu?.cancelAll(e)}var W=e(Ne(),1),Au=[],ju=[],Mu={sessionID:``,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:Qc,liveRevision:0};xl(``,Qc);var Nu={sessionID:``,phase:`idle`,p0Satisfied:!1};function Pu(e,t){return mu(e,t)}var Fu=new Set;function Iu(e,t){return`${e}\n${t}`}function Lu(e,t){if(!t)return;let n=Iu(e,t);Fu.has(n)||(Fu.add(n),Ou(U(e,t)).catch(()=>{}).finally(()=>{Fu.delete(n)}))}function Ru(e,t){if(e&&t){Fu.delete(Iu(e,t));return}Fu.clear()}function zu(e,t,n,r,i=Object.is,a){let o=(0,W.useRef)(r);o.current=r;let s=(0,W.useRef)(i);s.current=i;let c=(0,W.useRef)(void 0),l=a?.enabled!==!1,u=(0,W.useCallback)(()=>{if(!e||!l){let e=o.current(Mu);return(c.current===void 0||!s.current(c.current,e))&&(c.current=e),c.current}let r=Pu(t,n).getTranscript(U(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,W.useCallback)(r=>{if(!e||!l)return()=>void 0;Lu(t,e);let i=Pu(t,n).subscribe(U(t,e),()=>{r()}),a=lu(()=>{i(),c.current=void 0,Ru(t,e),Lu(t,e),i=Pu(t,n).subscribe(U(t,e),()=>{r()}),r()});return()=>{a(),i()}},[t,l,e,n]);return W.useSyncExternalStore(d,u,u)}function Bu(e,t){if(e.messageOrder.length===0)return Au;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 Vu(e,t){return e.messageOrder.length===0?t?.resolved===!0?Jc({messages:Au,parts:e.partsByMessageID}):{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]}:Jc({messages:Bu(e),parts:e.partsByMessageID})}function Hu(e,t,n,r){let i=(0,V.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=Pu(t,n).hasSession?.(U(t,e));return Vu(r,{resolved:i===!0||void 0})},i[0]=t,i[1]=e,i[2]=n,i[3]=a):a=i[3],zu(e,t,n,a,Uu,r)}function Uu(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 Wu(e,t,n,r){return zu(e,t,n,Ku,Gu,r)}function Gu(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 Ku(e){return Bu(e)}function qu(e,t,n){return zu(e,t,n,Yu,Ju)}function Ju(e,t){return e===t?!0:!e||!t?!1:e.id===t.id&&e.role===t.role&&e.timestamp===t.timestamp}function Yu(e){if(e.messageOrder.length===0)return null;let t=e.messageOrder[e.messageOrder.length-1],n=t?e.messagesByID[t]:void 0;if(!n?.id)return null;let r=n.time;return{id:n.id,role:typeof n.role==`string`?n.role:``,timestamp:r?.completed??r?.created??0}}function Xu(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 Zu(e,t,n,r){return zu(e,t,n,Qu,Xu,r)}function Qu(e){return e}function $u(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=H();if(o){i.push(o.subscribe(U(a.directory,a.sessionID),t));continue}let s=n?.(a.directory);if(!s)continue;let c=mu(a.directory,s);i.push(c.subscribe(U(a.directory,a.sessionID),t))}},s=()=>{a(),o(),t()};o();let c=lu(s),l=r?.subscribeRebuild?.(s);return()=>{l?.(),c(),a()}}function ed(e,t){return e.length===0?``:e.map(e=>{let n=fd(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 td(e,t,n){return zu(e,t,n,nd)}function nd(e){return e.messageOrder.length}function rd(e,t,n){let r=(0,V.c)(8),i=(0,W.useRef)(!1),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current=!1,!1;let r=Pu(t,n),a=r.hasSession?.(U(t,e))??r.getTranscript(U(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?Pu(t,n).subscribe(U(t,e),()=>{r()}):id,r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return W.useSyncExternalStore(c,o,o)}function id(){}function ad(e,t,n,r){let i=(0,V.c)(10),a=(0,W.useRef)(void 0),o;i[0]!==t||i[1]!==e||i[2]!==r||i[3]!==n?(o=()=>{if(!e)return a.current=ju,ju;let i=Pu(t,n),o=r||e,s=i.getParts(U(t,o),e),c=s.length===0?ju: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 sd;let a=Pu(t,n);return r?a.subscribe(U(t,r),()=>{i()}):od},i[5]=t,i[6]=e,i[7]=r,i[8]=n,i[9]=c):c=i[9];let l=c;return W.useSyncExternalStore(l,s,s)}function od(){}function sd(){}function cd(e,t,n){let r=(0,V.c)(8),i=(0,W.useRef)(Nu),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current!==Nu&&(i.current=Nu),i.current;let r=Pu(t,n).getHydrationState?.(U(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 ld;Lu(t,e);let a=Pu(t,n).subscribe(U(t,e),()=>{r()}),o=lu(()=>{a(),i.current=Nu,Ru(t,e),Lu(t,e),a=Pu(t,n).subscribe(U(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 W.useSyncExternalStore(c,o,o)}function ld(){}function ud(e,t,n){let r=(0,V.c)(2),i;return r[0]===e?i=r[1]:(i=t=>xl(e,t.boundary),r[0]=e,r[1]=i),zu(e,t,n,i,dd)}function dd(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 fd(e,t,n){if(!t)return[];let r=H();if(r){let n=r.getTranscript(U(e,t));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}if(!n)return[];let i=mu(e,n).getTranscript(U(e,t));return i.messageOrder.map(e=>i.messagesByID[e]).filter(e=>!!e)}var pd=null,md=``,hd=null,gd=new Set,_d=null,vd=new Map,yd=new Map;function bd(e,t,n,r){pd=t,_d!==t&&(_d=null,vd=new Map,yd=new Map),md=n,r&&(hd=r)}function xd(e,t){hd?.(e,t)}function Sd(){if(!pd)throw Error(`ChildStoreManager not initialized — is SyncProvider mounted?`);return pd}function Cd(e){let t=pd;if(!t)return;let n=e||md;if(n)return t.getState(n)}function wd(e){let t=Cd(e)?.config;return t&&Object.keys(t).length>0?t:void 0}function Td(e){return gd.add(e),()=>{gd.delete(e)}}function Ed(e,t){if(e)for(let n of gd)n(e,t)}function Dd(e){return Cd(e)?.session??[]}function Od(){return Array.from(kd().values())}function kd(){let e=pd;if(!e)return yd;let t=_d!==e||vd.size!==e.children.size;for(let[n,r]of e.children)if(vd.get(n)!==r.getState().session){t=!0;break}if(!t)return yd;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 _d=e,vd=n,yd=r,yd}function Ad(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=H();if(pd){for(let[i,a]of pd.children)if(a.getState().session.some(t=>t.id===e)&&(n??mu(i,a)).hasSession?.(U(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 jd(e,t){if(!e)return[];try{let n=H(),r=t??md;if(n){let t=n.getTranscript(U(r,e));return t.messageOrder.map(e=>t.messagesByID[e]).filter(e=>!!e)}if(pd){let t=pd.getChild(r);if(t){let n=mu(r,t).getTranscript(U(r,e));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}}}catch{}return[]}function Md(e,t){if(!e)return[];try{let n=H(),r=t??md;if(n)return[...n.getParts(U(r,e),e)];if(pd){let t=pd.getChild(r);if(t)return[...mu(r,t).getParts(U(r,e),e)]}}catch{}return[]}function Nd(e,t){return Cd(t)?.session_status[e]}var Pd=`opencode`,Fd=`big-pickle`,Id=`__add_provider__`,Ld=`zen`,Rd=`big-pickle`,zd=async(e,t)=>{z(`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 z(`config.defaults:end`,{source:e,durationMs:Math.round(r-n),hasDefaultModel:!!t.defaultModel,hasDefaultAgent:!!t.defaultAgent}),t};try{let t=await me(e);return ts({enabled:t?.responseStyleEnabled,preset:t?.responseStylePreset,customInstructions:t?.responseStyleCustomInstructions},e),r(`settings-bootstrap-query`,t)}catch(n){z(`config.defaults:error`,{error:n instanceof Error?n.message:String(n)});let i=I(e);return i&&ts({enabled:i.responseStyleEnabled,preset:i.responseStylePreset,customInstructions:i.responseStyleCustomInstructions},e),r(i?`retained-settings-bootstrap`:`retained-store-settings`,i??t)}},Bd=e=>Jo(e),Vd=e=>e===Id?``:e??``,Hd=(e,t)=>e===Id?Id:t,Ud=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},Wd=e=>{if(!Array.isArray(e))return[];let t=e.map(e=>{if(!Xd(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 Ki({schemaVersion:1,providers:t,default:{},partial:!1}).providers.map(e=>({id:e.id,name:e.name,models:Object.values(e.models)}))}catch{return[]}},Gd=e=>{try{return Ki({schemaVersion:1,providers:[],default:e,partial:!1}).default}catch{return{}}},Kd=(e,t,n)=>{let r=e.find(e=>e.id===t);return r?r.models.some(e=>e.id===n):!1},qd=({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&&Kd(e,t,n))return{providerId:t,modelId:n,variant:o(t,n,r)};if(i){let t=Bd(i);if(t&&Kd(e,t.providerId,t.modelId))return{providerId:t.providerId,modelId:t.modelId,variant:o(t.providerId,t.modelId,a)}}if(Kd(e,Pd,Fd))return{providerId:Pd,modelId:Fd};let s=e[0],c=s?.models[0];return s&&c?{providerId:s.id,modelId:c.id}:null},Jd=({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||!No(r.mode)||r.hidden===!0||!Kd(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=>No(e.mode)),h;if(r&&(h=e.find(e=>e.name===r)),!h&&o){let t=e.find(e=>e.name===o);t&&No(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=Bd(y);e&&Kd(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&&Kd(t,h.model.providerID,h.model.modelID)&&(g=h.model.providerID,_=h.model.modelID,v=u(g,_,h.variant)),!g&&s){let e=Bd(s);e&&Kd(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId)}if(!g)if(Kd(t,Pd,Fd))g=Pd,_=Fd;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}},Yd=({providers:e,settingsZenModel:t})=>{let n=Ud(t);if(!Array.isArray(e)||e.length===0)return n?{providerId:Ld,modelId:n}:null;if(n&&Kd(e,Ld,n))return{providerId:Ld,modelId:n};if(Kd(e,Ld,Rd))return{providerId:Ld,modelId:Rd};let r=e.find(e=>e.id===Ld);if(r?.models.length){let e=Math.floor(Math.random()*r.models.length),t=Ud(r.models[e]?.id);if(t)return{providerId:Ld,modelId:t}}return null},Xd=e=>typeof e==`object`&&!!e,Zd=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},Qd=(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:Zd(t.capabilities.input),output:Zd(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}),$d=e=>new Promise(t=>setTimeout(t,e)),ef=800,tf=async(e=ef)=>Promise.race([B.checkHealth().catch(()=>!1),$d(Math.max(1,e)).then(()=>!1)]),nf=`__global__`,rf=e=>{let t=typeof e==`string`?e.trim():``;return t.length>0?t:nf},af=e=>e===nf?null:e,of=()=>typeof window>`u`?nf:hf(B.getDirectory()??Ue.getState().currentDirectory),sf=`oc.worktreeProjectMap`,cf=null,lf=()=>{if(cf===null)try{let e=typeof localStorage<`u`?localStorage.getItem(sf):null;cf=e?JSON.parse(e):{}}catch{cf={}}return cf},uf=(e,t)=>{if(!e||!t||e===t)return;let n=lf();if(n[e]!==t){n[e]=t;try{localStorage.setItem(sf,JSON.stringify(n))}catch{}}},df=e=>{let t=_(e);return t===null?null:t||`/`},ff=()=>{try{return yi.getState().projects.map(e=>df(e.path)).filter(e=>!!e)}catch{return[]}},pf=()=>{try{let{projects:e,activeProjectId:t}=yi.getState();return df((t?e.find(e=>e.id===t):null)?.path??e[0]?.path??null)}catch{return null}},mf=e=>{let t=df(e),n=ff();if(!t)return null;if(n.includes(t))return t;let r=df(lf()[t]);if(r)return r;try{let e=df(qo(yi.getState().projects,$.getState().availableWorktreesByProject,t)?.path??null);if(e&&e!==t)return uf(t,e),e}catch{return null}return null},hf=e=>rf(mf(e)),gf=e=>hf(e),_f=1e3,vf=125e4,yf=100,bf=256,xf=new Set([`__proto__`,`prototype`,`constructor`]),Sf=/[\u0000-\u001F\u007F]/u,Cf=new TextEncoder,wf=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&&Zi(null,{providers:a,defaultProviders:i.defaultProviders??{},providerCatalogPartial:!1}),i},Tf=(e,t=!1)=>{if(typeof e!=`string`)return;let n=e.trim();if(!(n.length===0||n.length>bf||t&&n!==e||Sf.test(n)||xf.has(n)))return n},Ef=e=>{if(!Xd(e))return{};let t=[];for(let[n,r]of Object.entries(e)){if(t.length>=yf||!Xd(r))continue;let e=Tf(n,!0),i=Tf(r.providerId),a=Tf(r.modelId),o=Tf(r.variant);!e||!i||!a||r.variant!==void 0&&!o||t.push([e,{providerId:i,modelId:a,...o?{variant:o}:{}}])}return Object.fromEntries(t)},Df=e=>{if(!Xd(e))return;let t=Tf(e.agentName,!0),n=Tf(e.providerId),r=Tf(e.modelId),i=Tf(e.variant);if(!(!t||!n||!r||e.variant!==void 0&&!i))return{agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}}},Of=(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}:{}}},kf=(e,t,n)=>Df(e)??Of(t,n),Af=(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`}),jf=e=>{let t={};for(let[n,r]of Object.entries(e)){let e=r.lastUserSelection??Of(r.lastSelectedAgentName,r.agentModelSelections);!e&&!r.lastSelectedAgentName||(t[n]={...Af(),agentModelSelections:{},lastSelectedAgentName:e?.agentName??r.lastSelectedAgentName,lastUserSelection:e,selectionSource:r.selectionSource===`manual`?`manual`:`auto`})}return t},Mf=e=>{if(!Xd(e))return{};let t=Ud(e.catalogTransportIdentity),n={};for(let t of[`activeDirectoryKey`,`settingsDefaultModel`,`settingsDefaultVariant`,`settingsDefaultAgent`,`settingsZenModel`]){let r=Ud(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 i={};if(Xd(e.directoryScoped))for(let[t,n]of Object.entries(e.directoryScoped)){if(!Xd(n))continue;let e=n.providerCatalogPartial===!0,r=e?[]:Wd(n.providers),a=e?{}:Gd(n.defaultProviders),o=Ef(n.agentModelSelections),s=Tf(n.lastSelectedAgentName,!0),c=kf(n.lastUserSelection,s,o);i[t]={...Af(),providers:r,agents:[],currentProviderId:Ud(n.currentProviderId)??``,currentModelId:Ud(n.currentModelId)??``,currentVariant:Ud(n.currentVariant),currentAgentName:Ud(n.currentAgentName),selectedProviderId:Vd(Ud(n.selectedProviderId)),agentModelSelections:o,lastSelectedAgentName:c?.agentName??s,lastUserSelection:c,defaultProviders:a,providerCatalogPartial:e,opencodeDefaultAgent:Ud(n.opencodeDefaultAgent),opencodeDefaultModel:Ud(n.opencodeDefaultModel),selectionSource:n.selectionSource===`manual`?`manual`:`auto`}}let a=Ef(e.agentModelSelections),o=Tf(e.lastSelectedAgentName,!0),s=kf(e.globalLastUserSelection,o,a)??(()=>{let t=Ud(e.activeDirectoryKey);return t?i[t]?.lastUserSelection:void 0})(),c=r();if(t!==c){let t=jf(i),r=Ud(e.activeDirectoryKey),a=r?t[r]?.lastUserSelection:void 0;return{...n,catalogTransportIdentity:c,directoryScoped:t,providers:[],agents:[],defaultProviders:{},currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:a?.agentName??s?.agentName,lastUserSelection:a,globalLastUserSelection:s,providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{}}}return{...n,catalogTransportIdentity:t,directoryScoped:i,providers:[],agents:[],defaultProviders:{},currentProviderId:Ud(e.currentProviderId)??``,currentModelId:Ud(e.currentModelId)??``,currentVariant:Ud(e.currentVariant),currentAgentName:Ud(e.currentAgentName),selectedProviderId:Vd(Ud(e.selectedProviderId)),agentModelSelections:a,lastSelectedAgentName:s?.agentName??o,lastUserSelection:(()=>{let t=Ud(e.activeDirectoryKey);return t?i[t]?.lastUserSelection:void 0})(),globalLastUserSelection:s}},Nf=(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)},Pf=({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&&Kd(t,r,i)&&Nf(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`}},Ff=null,If=null,Lf=null,Rf={},zf={},G=Oe()(je(ke((e,t)=>({activeDirectoryKey:of(),catalogTransportIdentity:r(),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=mf(n);if(!i){z(`activateDirectory:skippedUnknownDirectory`,{directory:n});return}let a=rf(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:af(a),source:r?.source??`activateDirectory`,forceRefresh:r?.refreshProviders}),s||await t().loadAgents({directory:af(a),source:`activateDirectory`}))},invalidateProviderCache:e=>{na(null,r())},loadProviders:async n=>{let i=n?.directory??af(t().activeDirectoryKey),a=mf(i);if(!a){z(`loadProviders:skippedUnknownDirectory`,{requestedDirectory:i,source:n?.source??`unknown`});return}let o=a??B.getDirectory()??null,c=rf(a),l=n?.source??`unknown`,u=r(),d=s(),f=()=>s()===d&&r()===u&&t().catalogTransportIdentity===u&&mf(i)===a,p=(Rf[c]??0)+1;Rf[c]=p,z(`loadProviders:called`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let m=t().directoryScoped[c];return t().providers.length>0||m?.providers.length||e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[c]:!0}})),(async()=>{let r=typeof performance<`u`?performance.now():Date.now();z(`loadProviders:start`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let a=t().directoryScoped[c],s=t().providers.length>0?t().providers:a?.providers??[],d=Object.keys(t().defaultProviders).length>0?t().defaultProviders:a?.defaultProviders??{};try{let t=await Be(`loadProviders:api`,()=>n?.forceRefresh?ea(af(c),u):Qi(af(c),u),{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o}),a=Wd(t.providers),d=Gd(t.default);if(!f()||t.partial&&s.length>0||(e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let n=e.directoryScoped[c]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},r=e.activeDirectoryKey===c?e.currentProviderId:n.currentProviderId,i=e.activeDirectoryKey===c?e.currentModelId:n.currentModelId,o=e.activeDirectoryKey===c?e.currentVariant:n.currentVariant,s=qd({providers:a,currentProviderId:r,currentModelId:i,currentVariant:o,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant}),l=e.activeDirectoryKey===c?e.selectedProviderId:n.selectedProviderId,p=l===Id||a.some(e=>e.id===l)?l:s?.providerId??a[0]?.id??``,m={...n,providers:a,defaultProviders:d,providerCatalogPartial:t.partial,currentProviderId:s?.providerId??``,currentModelId:s?.modelId??``,currentVariant:s?.variant,selectedProviderId:p},h={providers:a,defaultProviders:d,directoryScoped:{...e.directoryScoped,[c]:m}};return e.activeDirectoryKey===c&&(h.currentProviderId=m.currentProviderId,h.currentModelId=m.currentModelId,h.currentVariant=m.currentVariant,h.selectedProviderId=p),h}),!f()))return;let p=typeof performance<`u`?performance.now():Date.now();z(`loadProviders:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(p-r),providers:a.length,models:a.reduce((e,t)=>e+t.models.length,0)});return}catch(e){if(!f())return;console.error(`Failed to load providers:`,e),z(`loadProviders:error`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,error:e instanceof Error?e.message:String(e)})}f()&&e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t={...e.directoryScoped[c]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:s,defaultProviders:d},n={providers:s,defaultProviders:d,directoryScoped:{...e.directoryScoped,[c]:t}};if(e.activeDirectoryKey===c&&!e.currentProviderId&&!e.currentModelId&&e.settingsDefaultModel){let r=Bd(e.settingsDefaultModel);if(r){let i=s.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(()=>{Rf[c]===p&&e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[c]:!1}}))})},refreshMissingCatalogs:e=>{if(If)return If;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(()=>{If=null});return If=r,r},refreshCatalogsOnPickerOpen:e=>{if(Lf)return Lf;let n=e?.source??`refreshCatalogsOnPickerOpen`,r=Promise.all([t().loadProviders({source:n,forceRefresh:!0}),t().loadAgents({source:n,forceRefresh:!0})]).then(()=>void 0).finally(()=>{Lf=null});return Lf=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 i=n?.directory??af(t().activeDirectoryKey),a=mf(i);if(!a)return z(`loadAgents:skippedUnknownDirectory`,{requestedDirectory:i,source:n?.source??`unknown`}),!1;let o=a??B.getDirectory()??null,c=rf(a),l=n?.source??`unknown`,u=r(),d=s(),f=()=>s()===d&&r()===u&&t().catalogTransportIdentity===u&&mf(i)===a,p=(zf[c]??0)+1;zf[c]=p,z(`loadAgents:called`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let m=t().directoryScoped[c];return t().agents.length>0||m?.agents.length||e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[c]:!0}})),(async()=>{let r=typeof performance<`u`?performance.now():Date.now();z(`loadAgents:start`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let a=t().directoryScoped[c],s=t().agents.length>0?t().agents:a?.agents??[];try{let a=af(c);(wd(i??void 0)??wd(a??void 0))&&z(`loadAgents:syncConfigHit`,{directoryKey:c,source:l});let[d,p]=await Promise.all([Be(`loadAgents:api`,()=>n?.forceRefresh?ta(a,u):$i(a,u),{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o}),zd(u,{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(d)?d:[];if(!f())return!1;let h=wd(i??void 0)??wd(a??void 0),g=h!==void 0,_=g?Ud(h.default_agent):void 0,v=g?Ud(h.model):void 0,y=t().activeDirectoryKey===c?t().providers:t().directoryScoped[c]?.providers??[],b=Ud(t().settingsZenModel),x=Ud(p.zenModel),S=Yd({providers:y,settingsZenModel:b}),C=Yd({providers:y,settingsZenModel:x}),w=(S||C)?.modelId||x||b;e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t=e.directoryScoped[c]??{providers:y,agents:s,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=g?_:t.opencodeDefaultAgent??(e.activeDirectoryKey===c?e.opencodeDefaultAgent:void 0),r=g?v:t.opencodeDefaultModel??(e.activeDirectoryKey===c?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,[c]:i}};return e.activeDirectoryKey===c&&(a.agents=m,a.opencodeDefaultAgent=n,a.opencodeDefaultModel=r),a});let T=t(),E=T.directoryScoped[c],D=E?.opencodeDefaultAgent??(T.activeDirectoryKey===c?T.opencodeDefaultAgent:void 0),O=E?.opencodeDefaultModel??(T.activeDirectoryKey===c?T.opencodeDefaultModel:void 0),k=!!w&&w!==x;if(f()&&k&&w&&ye({zenModel:w,gitProviderId:``,gitModelId:``}).catch(()=>{}),m.length===0){if(s.length>0&&!n?.forceRefresh){if(!f())return!1;let e=typeof performance<`u`?performance.now():Date.now();return z(`loadAgents:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(e-r),agents:s.length,retainedPrevious:!0}),!0}if(e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t={...e.directoryScoped[c]??{providers:y,agents:[],currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:y,agents:[],currentAgentName:void 0},n={directoryScoped:{...e.directoryScoped,[c]:t}};return e.activeDirectoryKey===c&&(n.currentAgentName=void 0),n}),!f())return!1;let t=typeof performance<`u`?performance.now():Date.now();return z(`loadAgents:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(t-r),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=Bd(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[c]?.lastUserSelection??(ee.activeDirectoryKey===c?ee.lastUserSelection:void 0),M=Jd({agents:m,providers:y,settingsDefaultAgent:p.defaultAgent,settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,opencodeDefaultAgent:D,opencodeDefaultModel:O,projectLastUserSelection:te,globalLastUserSelection:ee.globalLastUserSelection}),ne=M.agentName??m[0].name,re=M.providerId,ie=M.modelId,ae=M.variant;if(e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t=e.directoryScoped[c]??{providers:y,agents:m,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=e.activeDirectoryKey===c,r=n?e.currentAgentName:t.currentAgentName,i=n?e.currentProviderId:t.currentProviderId,a=n?e.currentModelId:t.currentModelId,o=n?e.currentVariant:t.currentVariant,s=n?e.selectionSource:t.selectionSource??`auto`,l=Pf({agents:m,providers:y,currentAgentName:r,currentProviderId:i,currentModelId:a,currentVariant:o,selectionSource:s,resolvedAgentName:ne,resolvedProviderId:re,resolvedModelId:ie,resolvedVariant:ae}),d={...t,providers:y,agents:m,currentAgentName:l.agentName,currentProviderId:l.providerId??t.currentProviderId,currentModelId:l.modelId??t.currentModelId,currentVariant:l.variant,opencodeDefaultAgent:D,opencodeDefaultModel:O,selectionSource:l.selectionSource},p={directoryScoped:{...e.directoryScoped,[c]:d}};return n&&(p.currentAgentName=l.agentName,p.opencodeDefaultAgent=D,p.opencodeDefaultModel=O,l.providerId&&l.modelId&&(p.currentProviderId=l.providerId,p.currentModelId=l.modelId,p.currentVariant=l.variant),p.selectionSource=l.selectionSource),p}),f()&&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}),ye(j).catch(()=>{})),!f())return!1;let oe=typeof performance<`u`?performance.now():Date.now();return z(`loadAgents:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(oe-r),agents:m.length}),!0}catch(t){return!f()||(console.error(`Failed to load agents:`,t),z(`loadAgents:error`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,error:t instanceof Error?t.message:String(t)}),!f())||e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t=e.activeDirectoryKey===c?e.providers:e.directoryScoped[c]?.providers??[],n={...e.directoryScoped[c]??{providers:t,agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:t,agents:s},r={directoryScoped:{...e.directoryScoped,[c]:n}};return e.activeDirectoryKey===c&&(r.agents=s),r}),!1}})().finally(()=>{zf[c]===p&&e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[c]:!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=Uo.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:Hd(e.selectedProviderId,t),selectionSource:`manual`};return{currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:Hd(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?Uo.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=Uo.getState().getAgentModelForSession(l,n);if(e&&Kd(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=Bd(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}=Jd({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:Hd(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=Hd(e.selectedProviderId,p)),r})},applyOpenCodeConfigDefaults:(n,r=`syncConfig`,i)=>{let a=n??af(t().activeDirectoryKey),o=hf(a),s=af(o),c=i??wd(a??void 0)??wd(s??void 0);if(!c)return;let l=Ud(c.default_agent),u=Ud(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??Af(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=Jd({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=Pf({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:Hd(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!==Hd(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=Hd(x,S.providerId))),z(`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 Yd({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)),ye({dictationEnabled:t}).catch(()=>{})},setSttProvider:t=>{e({sttProvider:t}),typeof window<`u`&&localStorage.setItem(`sttProvider`,t),ye({sttProvider:t}).catch(()=>{})},setSttServerUrl:t=>{e({sttServerUrl:t}),typeof window<`u`&&localStorage.setItem(`sttServerUrl`,t),ye({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),ye({sttModel:t}).catch(()=>{})},setSttLocalModel:t=>{e({sttLocalModel:t}),typeof window<`u`&&localStorage.setItem(`sttLocalModel`,t),ye({sttLocalModel:t}).catch(()=>{})},setSttLanguage:t=>{e({sttLanguage:t}),typeof window<`u`&&localStorage.setItem(`sttLanguage`,t),ye({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 tf(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()=>{z(`checkConnection:start`);let n=0,r=null;for(;n<5;)try{z(`checkConnection:attempt`,{attempt:n+1});let r=await Be(`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 $d(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`}),z(`checkConnection:end`,{healthy:r,attempts:n+1}),r}catch(e){r=e,n+=1,await $d(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`}),z(`checkConnection:end`,{healthy:!1,attempts:5}),!1},initializeApp:async()=>{if(Ff)return z(`initializeApp:deduped`),Ff;let n=(async()=>{let n=typeof performance<`u`?performance.now():Date.now();z(`initializeApp:start`);try{if(He(),!await t().checkConnection()){e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`});return}z(`initApp:skipped`,{reason:`checkConnection already verified health`});let r=B.getDirectory()??Ue.getState().currentDirectory??af(t().activeDirectoryKey),i=mf(qo(yi.getState().projects,$.getState().availableWorktreesByProject,r??null)?.path??r??null),a=i??pf();if(!a){z(`initializeApp:noProjectConfigDirectory`),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});return}!i&&r!==a&&(z(`initializeApp:normalizedUnknownDirectoryToProject`,{initialDirectory:r,configDirectory:a}),B.setDirectory(a),Ue.getState().setDirectory(a,{showOverlay:!1}));let o=rf(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();z(`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`}),z(`initializeApp:error`,{error:n instanceof Error?n.message:String(n)})}})().finally(()=>{Ff=null});return Ff=n,n},prewarmProjectConfigs:async e=>{if(!t().isConnected)return;let n=hf(e??af(t().activeDirectoryKey)),r=yi.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=hf(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=af(n);o&&a.push(o)}for(let e of a){if(await $d(_f),!t().isConnected)return;let n=hf(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 Qd(e,i)},getVisibleAgents:()=>{let{agents:e}=t();return Za(e)}}),{name:`config-store`,version:4,storage:h(),migrate:e=>Mf(e),merge:(e,t)=>wf({...t,...Mf(e)}),partialize:e=>{let t=e.directoryScoped[e.activeDirectoryKey],n=e.providers.length>0?{providers:Wd(e.providers),defaultProviders:Gd(e.defaultProviders),providerCatalogPartial:!1}:t&&t.providerCatalogPartial!==!0?{providers:Wd(t.providers),defaultProviders:Gd(t.defaultProviders),providerCatalogPartial:!1}:{providers:[],defaultProviders:{},providerCatalogPartial:t?.providerCatalogPartial===!0},i=(t,r)=>{let i=Df(r?.lastUserSelection)??Of(Tf(r?.lastSelectedAgentName,!0),Ef(r?.agentModelSelections))??(t===e.activeDirectoryKey?Df(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:Vd(r?.selectedProviderId??(t===e.activeDirectoryKey?e.selectedProviderId:``)),agentModelSelections:{},lastSelectedAgentName:i?.agentName??Tf(r?.lastSelectedAgentName,!0),lastUserSelection:i,opencodeDefaultAgent:r?.opencodeDefaultAgent,opencodeDefaultModel:r?.opencodeDefaultModel,selectionSource:r?.selectionSource??(t===e.activeDirectoryKey?e.selectionSource:void 0)}},a=Object.fromEntries(Object.entries(e.directoryScoped).map(([e,t])=>[e,i(e,t)]));e.activeDirectoryKey&&!a[e.activeDirectoryKey]&&(a[e.activeDirectoryKey]=i(e.activeDirectoryKey,void 0));let o=JSON.stringify(n);if(Cf.encode(o).byteLength>vf){let t=a[e.activeDirectoryKey];t&&(t.providers=[],t.defaultProviders={},t.providerCatalogPartial=!0)}let s=Df(e.globalLastUserSelection)??Df(e.lastUserSelection);return{activeDirectoryKey:e.activeDirectoryKey,catalogTransportIdentity:r(),directoryScoped:a,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:Vd(e.selectedProviderId),agentModelSelections:{},lastSelectedAgentName:s?.agentName??Tf(e.lastSelectedAgentName,!0),lastUserSelection:Df(e.lastUserSelection)??s,globalLastUserSelection:s,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__=G);var Bf=async e=>{await G.getState().loadProviders({source:e,forceRefresh:!0})},Vf=null;Vf||=Er(async e=>{let t=[];if(B.clearConfigCache(),Or(e,`agents`)){let{loadAgents:e}=G.getState();t.push(e({source:`configChange:agents`,forceRefresh:!0}).then(()=>{}))}Or(e,`providers`)&&t.push(Bf(`configChange:providers`)),t.length>0&&await Promise.all(t)});var Hf=null,Uf=null;Uf||=Td((e,t)=>{G.getState().applyOpenCodeConfigDefaults(e,`syncConfig`,t)}),typeof window<`u`&&!Hf&&(Hf=Ue.subscribe((e,t)=>{let n=rf(e.currentDirectory),r=rf(t.currentDirectory);n!==r&&(z(`directoryStore:changed`,{previous:r,next:n}),G.getState().activateDirectory(e.currentDirectory))}));var Wf=e=>typeof e==`number`&&Number.isFinite(e)?e:null,Gf=e=>{let t=e.metadata;return Wf(t?.openchamber?.titleRefresh?.activityUpdatedAt)??Wf(e.time?.updated)??Wf(e.time?.created)??0},Kf=[`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 qf(e){if(!e)return!1;let t=String(e instanceof Error?e.message:e).toLowerCase();if(Kf.some(e=>t.includes(e)))return!0;let n=e?.status;return typeof n==`number`&&n>=500&&n<600}async function Jf(e,t={}){let{attempts:n=3,delay:r=500,factor:i=2,maxDelay:a=1e4,retryIf:o=qf}=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 Yf=[`file`,`status`,`additions`,`deletions`],Xf=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},Zf=e=>e===void 0?!1:!e||typeof e!=`object`||Array.isArray(e)?!0:Object.keys(e).some(e=>e!==`messageID`&&e!==`partID`),Qf=e=>typeof e.before==`string`||typeof e.after==`string`||typeof e.from==`string`||typeof e.to==`string`||typeof e.patch==`string`;function $f(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!Qf(t))return e;let n={};for(let e of Yf)e in t&&t[e]!==void 0&&(n[e]=t[e]);return n}function ep(e){if(!Array.isArray(e))return e;let t=!1,n=e.map(e=>{let n=$f(e);return n!==e&&(t=!0),n});return t?n:e}function tp(e){let t=e.summary,n=e.revert,r=e,i=!1;if(n&&(typeof n.snapshot==`string`||typeof n.diff==`string`)){let e={...n};delete e.snapshot,delete e.diff,r={...r,revert:e},i=!0}if(!t?.diffs||!Array.isArray(t.diffs))return r;let a=ep(t.diffs);return a!==t.diffs&&(i=!0),i?{...r,summary:{...t,diffs:a}}:r}function np(e){let t=e;if(!(Zf(t.revert)||Array.isArray(t.summary?.diffs)||`permission`in t))return e;let n=tp(e),r={...n};delete r.permission;let i=Xf(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,r.summary=e}return r}function rp(e){let t=e.summary;if(!t?.diffs||!Array.isArray(t.diffs))return e;let n=ep(t.diffs);return n===t.diffs?e:{...e,summary:{...t,diffs:n}}}var ip=new Set([`smartfetch-secondary`]),ap=e=>typeof e==`string`&&e.length>0,op=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!!(ap(r.assistant?.assistantID)||ap(r.scheduledTask?.taskID))},sp=e=>{let t=e.parentID;return typeof t==`string`&&t.trim()?t:null},cp=e=>!(ip.has(e.title)||sp(e)||op(e)),lp=e=>{if(!e)return null;let t=Number(e);return Number.isFinite(t)?t:null},up=(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},dp=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)}},fp=(e,t)=>{if(e.error){let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${dp(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 pp(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 Jf(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:fp(a,`experimental.session.list`).map(e=>np(e))}},{attempts:t.retryAttempts??3,delay:500});if(c.length===0)break;let l=c.filter(cp),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=lp(up(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 mp=`/api/magic-prompts`,hp=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:`plan.todo.visible`,title:`Todo Planning Visible Prompt`,group:`Planning`,description:`Visible user message when sending a todo into a new planning session.`,placeholders:[{key:`todo_text`,description:`Todo text selected by the user.`}],template:`{{todo_text}}`},{id:`plan.todo.instructions`,title:`Todo Planning Instructions`,group:`Planning`,description:`Hidden instructions for sending a project todo into a new planning session.`,placeholders:[{key:`todo_text`,description:`Todo text selected by the user.`}],template:`You are starting from a project todo item.
173
- Todo: {{todo_text}}
174
- Your job right now is to produce a thorough implementation plan for this todo, not to implement it yet. Optimize for a well-considered plan, not a fast one.
175
-
176
- Work back and forth with me. Do not dump a wall of questions. Do not jump to the full plan.
177
-
178
- Discovery — questions in batches of 3:
179
- 1. First, inspect the repo — relevant files, module docs, existing patterns, nearby code, constraints, dependencies — enough to form informed questions, not enough to guess the plan.
180
- 2. Ask me at most 3 questions per turn. Each batch should be focused on one topic at a time (e.g., scope, architecture, data model, UX, edge cases). Pick the topic that most blocks the plan right now.
181
- 3. Wait for my answers. Use them to refine your understanding, re-read code if needed, and prepare the next batch.
182
- 4. Questions that became irrelevant after my earlier answers — drop them, don't ask.
183
- 5. Repeat until you have no more substantive questions.
184
-
185
- Alignment:
186
- 6. Share a short outline: affected areas, proposed approach, main risks. Wait for my confirmation or corrections. Iterate on the outline until I confirm.
187
-
188
- Final plan:
189
- 7. Once aligned, deliver the concrete implementation plan grounded in the repo context. Make remaining assumptions and missing context explicit.`},{id:`plan.improve.visible`,title:`Improve Plan Visible Prompt`,group:`Planning`,description:`Visible user message when sending a saved plan into an improve flow.`,placeholders:[{key:`plan_title`,description:`Current plan title.`}],template:`Improve this plan: {{plan_title}}`},{id:`plan.improve.instructions`,title:`Improve Plan Instructions`,group:`Planning`,description:`Hidden instructions for improving a saved plan from project context.`,placeholders:[{key:`plan_title`,description:`Current plan title.`},{key:`plan_path`,description:`Absolute path to the saved plan file.`}],template:`You are starting from an existing implementation plan.
190
- Plan title: {{plan_title}}
191
- This plan is stored in the file: {{plan_path}}
192
- Read that file first and treat its current contents as the source of truth for the plan.
193
- Your job right now is to improve this plan so it is better grounded in the actual repo state. Do not implement yet. Optimize for a well-considered improved plan, not a fast one.
194
-
195
- Work back and forth with me. Do not dump a wall of questions. Do not jump to the full improved plan.
196
-
197
- Discovery — questions in batches of 3:
198
- 1. First, inspect the repo and map it against the plan — relevant files, module docs, existing patterns, nearby code, constraints, dependencies. Identify gaps, plan assumptions that don't match the repo, missing context, and risks.
199
- 2. Ask me at most 3 questions per turn. Each batch should be focused on one topic at a time (e.g., scope deltas, architecture assumptions, data model, UX, edge cases, tradeoffs between approaches). Pick the topic that most blocks a confident improvement right now.
200
- 3. Wait for my answers. Use them to refine your understanding, re-read code if needed, and prepare the next batch.
201
- 4. Questions that became irrelevant after my earlier answers — drop them, don't ask.
202
- 5. Repeat until you have no more substantive questions.
203
-
204
- Alignment:
205
- 6. Share a short summary of proposed changes — what sections of the plan change and why, open questions, recommendations. Do not rewrite the whole plan inline and do not return the full plan as a code block. Quote only small targeted snippets or describe the exact sections to change. Wait for my confirmation or corrections. Iterate until I confirm.
206
-
207
- Final step:
208
- 7. Once aligned, explicitly offer to edit this same file ({{plan_path}}) with the agreed changes. Make remaining assumptions and missing context explicit.`},{id:`plan.implement.visible`,title:`Implement Plan Visible Prompt`,group:`Planning`,description:`Visible user message when sending a saved plan into an implement flow.`,placeholders:[{key:`plan_title`,description:`Current plan title.`}],template:`Implement this plan: {{plan_title}}`},{id:`plan.implement.instructions`,title:`Implement Plan Instructions`,group:`Planning`,description:`Hidden instructions for implementing a saved plan from project context.`,placeholders:[{key:`plan_title`,description:`Current plan title.`},{key:`plan_path`,description:`Absolute path to the saved plan file.`}],template:`You are starting from an existing implementation plan.
209
- Plan title: {{plan_title}}
210
- This plan is stored in the file: {{plan_path}}
211
- Read that file first and treat its current contents as the source of truth for the plan. The plan is already agreed; implement it end-to-end without deviating from it.
212
-
213
- Before and during implementation, build a deep understanding of the project — relevant files, module docs, existing patterns, nearby code, conventions — so your choices fit the repo's style.
214
-
215
- Do the implementation work continuously. When a plan step is ambiguous, do not stop to ask — make the best judgment call consistent with the plan's intent and the repo's conventions, and briefly note the decision inline so it is visible on review. Prefer forward progress over interrupting me.
216
-
217
- Do not expand scope beyond the plan. If during implementation you find the plan itself is wrong or genuinely blocks completion (not merely ambiguous), stop, state exactly what is broken and why, and propose a plan adjustment to save back into this same file ({{plan_path}}) before continuing.`},{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.
218
-
219
- Cover the information useful for continuing this work:
220
- - What was done (completed work, in order)
221
- - What is currently in progress
222
- - Files modified — brief what and why per file
223
- - Open questions and next steps
224
- - User requests, constraints, or preferences to carry forward
225
- - Important technical decisions and why they were made
226
-
227
- {{topic_block}}
228
-
229
- Formatting:
230
- - Concise markdown with short sections and bullet lists
231
- - No preamble like "Here is a summary" — jump straight to content
232
- - Do not answer questions found in the conversation — only summarize
233
- - Keep length proportional to session length; do not pad
234
-
235
- 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.
236
-
237
- 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.
238
-
239
- First, understand the intent and whether it was achieved:
240
- - Work out what these changes are trying to do — the intent behind them — from the diff and the surrounding code.
241
- - 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.
242
-
243
- Then look for concrete problems. Report real failure modes, not abstract suspicions, and do not nitpick without impact.
244
-
245
- Correctness focus:
246
- - race conditions, stale async results, event ordering
247
- - data loss or failed writes
248
- - lifecycle and cleanup (listeners, timers, subscriptions, resources)
249
- - non-transitive comparators or unstable sorting
250
- - state/store fanout and render performance
251
- - optimistic state rollback and reconciliation
252
- - accessibility semantics
253
- - regressions introduced by the changes
254
- - missing implementations across affected modules or targets when the diff clearly introduced the gap
255
- - missing targeted tests for risky or regression-prone changes
256
- - clear CLAUDE.md or AGENTS.md violations that apply to the changed files
257
-
258
- Security and supply-chain focus (when the diff touches these):
259
- - dependencies, build/release/CI scripts
260
- - auth, tokens, secrets, credentials
261
- - filesystem boundaries and path traversal
262
- - shell execution
263
- - network calls, telemetry, exfiltration
264
- - IPC, native bridge, updater, desktop shell
265
- - hidden behavior behind small diffs or broad refactors
266
-
267
- Do not report:
268
- - pre-existing issues unrelated to the diff
269
- - pedantic nitpicks a senior engineer would not flag, or issues a linter would catch
270
- - subjective style preferences not required by CLAUDE.md or AGENTS.md
271
- - speculative concerns you cannot tie to a concrete failure
272
- - rules mentioned in CLAUDE.md or AGENTS.md but explicitly silenced in the code
273
-
274
- Validation pass:
275
- - Before reporting an issue, re-check it against the diff plus only the context you actually read.
276
- - For CLAUDE.md or AGENTS.md violations, verify the rule applies to the affected file path and cite the exact rule.
277
- - If you cannot tie a finding to a concrete impact, drop it.
278
-
279
- Classify each finding:
280
- - blocker: likely regression, data loss, security issue, broken invariant, or a serious correctness problem — or the change does not actually achieve its intent
281
- - non-blocker: a real but minor issue, a test gap, or a maintainability concern
282
- - nit: mention only if useful, never treat as blocking
283
-
284
- This is a review only — do not edit, fix, or commit anything unless the user asks you to.
285
-
286
- Output:
287
- - Start with one or two sentences: what the change does and whether it achieves its intent.
288
- - 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).
289
- - If you find nothing real, say so plainly instead of inventing findings.
290
-
291
- 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.
292
-
293
- Include:
294
- - The user's original intent and any later clarifications that changed the intent
295
- - What was implemented and why
296
- - Files changed, with brief purpose per file
297
- - Important design decisions and tradeoffs
298
- - Validation/tests run, if known
299
- - Known gaps, uncertainty, or areas the reviewer should inspect closely
300
-
301
- Formatting:
302
- - Concise markdown with clear sections
303
- - No preamble like "Here is a handoff"
304
- - Do not mention OpenChamber metadata, linked sessions, session IDs, or routing
305
- - 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.
306
-
307
- 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.
308
-
309
- {{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.
310
-
311
- 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.
312
-
313
- 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.
314
-
315
- Please review the feedback, resolve the relevant issues, and explain what you changed.
316
-
317
- {{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.
318
-
319
- Please review the latest state again and report any remaining issues.
320
-
321
- {{implementation_response}}`},{id:`session.plan.visible`,title:`Feature Planning Visible Prompt`,group:`Session`,description:`Visible user message sent by the /plan-feature command.`,template:`I want to start planning a feature.`},{id:`session.plan.instructions`,title:`Feature Planning Instructions`,group:`Session`,description:`Hidden instructions attached to the /plan-feature command. Runs a guided, batched-question dialogue that researches the code before producing an implementation plan.`,template:`The user wants to plan a feature through a guided, back-and-forth conversation. They will describe an idea — often briefly and informally. Your job is to turn that idea into a concrete, validated implementation plan, without guessing.
322
-
323
- Run this as a dialogue, not a one-shot answer.
324
-
325
- 1. Understand before asking. Once the user describes the idea, first investigate the codebase yourself — read the relevant files, existing patterns, data flow, and constraints. Ground every question in what the code actually shows, not in assumptions.
326
-
327
- 2. Ask in small batches. Ask at most 3 clarifying questions at a time — a number a person can comfortably answer in one reply. Prefer concrete, decision-oriented questions (option A/B/C, edge cases, scope boundaries) over vague open-ended ones. Number them.
328
-
329
- 3. Keep going until it is resolved. After each batch of answers, integrate them, do any further code investigation the answers require, then ask the next batch. Continue until there are no unresolved decisions or implementation details left. Do not stop early or start summarizing prematurely.
330
-
331
- 4. Surface what the user has not considered. Proactively raise edge cases, pitfalls, affected modules, migration/backward-compatibility concerns, and trade-offs the user likely did not think about. Fold these into your questions so the user decides — never silently decide for them.
332
-
333
- 5. Do not write code or begin implementing during this phase. Planning is for understanding and deciding only.
334
-
335
- 6. When everything is settled, produce the final implementation plan: a clear, ordered breakdown of the work, the files and areas affected, the decisions that were made (and why), known risks, and any remaining assumptions flagged explicitly. The plan must reflect the user's actual answers — never fill gaps with guesses.
336
-
337
- Respond in the same language the user uses.`},{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.
338
-
339
- 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.
340
-
341
- Run this as a guided dialogue, not a one-shot answer.
342
-
343
- 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.
344
-
345
- 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.
346
-
347
- 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.
348
-
349
- 4. Resolve the Goal contract:
350
- - Outcome: what must be true when the work is complete.
351
- - Verification surface: which tests, benchmarks, commands, artifacts, source material, observations, or other evidence prove completion.
352
- - Constraints: what behavior, quality, compatibility, safety, performance, or scope must remain intact.
353
- - Boundaries: which files, systems, tools, data, repositories, environments, or resources may or may not be used.
354
- - Iteration policy: how the working agent should evaluate evidence and choose the next useful action after each attempt.
355
- - Blocked stop condition: when it should stop, what evidence and attempted paths it should report, and what input would unlock progress.
356
-
357
- 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.
358
-
359
- 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.
360
-
361
- 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.
362
-
363
- 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.
364
-
365
- 9. Once the contract is resolved, respond in exactly this structure:
366
-
367
- ## Proposed Goal
368
-
369
- \`\`\`text
370
- <one self-contained Goal objective ready to paste into the Goal dialog; do not prefix it with /goal>
371
- \`\`\`
372
-
373
- ## Why This Is Verifiable
374
-
375
- - <brief explanation of the outcome and evidence>
376
- - <brief explanation of the preserved constraints>
377
- - <brief explanation of the blocked stop condition>
378
-
379
- ## Assumptions
380
-
381
- - <only assumptions that still matter, or "None">
382
-
383
- 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.
384
-
385
- 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.
386
-
387
- 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.
388
-
389
- 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.
390
-
391
- 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.
392
-
393
- First, get the branch context:
394
- - 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.
395
- - 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.
396
-
397
- Then focus and synthesize:
398
- - 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…".
399
- - If the tree is clean, orient from the branch's own work and PR (feature branch) or the recent commits (default branch).
400
-
401
- 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.
402
-
403
- Hard rules:
404
- - 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.
405
- - 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.
406
- - 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.
407
-
408
- 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.
409
-
410
- 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.
411
-
412
- 2. Form hypotheses. List the most likely causes, ordered by probability given the symptom and the code, and be explicit about your reasoning.
413
-
414
- 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.
415
-
416
- 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.
417
-
418
- 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.
419
-
420
- 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.
421
-
422
- 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.
423
-
424
- 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.
425
-
426
- 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:
427
- - what it involves, in a sentence or two
428
- - how well it actually satisfies the user's goal — does it fully solve it, or only partially?
429
- - how it fits (or fights) the existing patterns in this codebase
430
- - trade-offs and consequences: complexity, risk, blast radius, effort, long-term maintainability
431
- - when it is the right choice
432
-
433
- 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").
434
-
435
- 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.
436
-
437
- 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.
438
-
439
- 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.
440
-
441
- Then give a clear orientation covering:
442
- - The big picture: what this project is and how it is structured at a high level.
443
- - Main parts: the key modules, packages, or directories, what each is responsible for, and where they live.
444
- - How it fits together: the main flow — how a request or action moves through the system, and how the pieces talk to each other.
445
- - Conventions worth knowing: notable patterns, where shared code, types, and config live, and anything non-obvious a newcomer would trip on.
446
- - Where to start: a few concrete pointers for finding your way around or making a first change.
447
-
448
- 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.
449
-
450
- 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.
451
-
452
- Goal: produce the strongest possible final answer by combining complementary information, resolving conflicts, removing duplicates, and preserving useful nuance.
453
-
454
- 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.
455
-
456
- --- FUSION INPUTS START ---`}].map(e=>[e.id,e])),gp={"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`}},_p=null,vp=null,yp=(e,t)=>e.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g,(e,n)=>Object.prototype.hasOwnProperty.call(t,n)?t[n]??``:``),bp=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(gp)){let r=n[e];if(typeof r!=`string`)continue;let i=r.indexOf(`
457
- `),a=(i===-1?r:r.slice(0,i)).trim(),o=(i===-1?``:r.slice(i+1)).trim();!(t.visible in n)&&a.length>0&&(n[t.visible]=a),!(t.instructions in n)&&o.length>0&&(n[t.instructions]=o)}return n},xp=async()=>_p||(vp||=F(mp,{method:`GET`,headers:{Accept:`application/json`}}).then(async e=>{if(!e.ok)throw Error(`Failed to load magic prompts`);let t=bp(await e.json().catch(()=>({})));return _p=t,t}).finally(()=>{vp=null}),vp),Sp=e=>{let t=hp.get(e);if(!t)throw Error(`Unknown magic prompt id: ${e}`);return t},Cp=e=>Sp(e).template,wp=async e=>{let t=(await xp().catch(()=>({})))[e];return typeof t==`string`?t:Cp(e)},Tp=async(e,t={})=>yp(await wp(e),t),Ep=async(e,t)=>{let n=await F(`${mp}/${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 _p=bp(r),{version:typeof r?.version==`number`?r.version:1,overrides:_p}},Dp=async e=>{let t=await F(`${mp}/${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 _p=bp(n),{version:typeof n?.version==`number`?n.version:1,overrides:_p}},Op=async()=>{let e=await F(mp,{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 _p=bp(t),{version:typeof t?.version==`number`?t.version:1,overrides:_p}},kp=e=>e.filter(e=>e?.type===`text`).map(e=>(e.text||e.content||``).trim()).filter(e=>e.length>0).join(`
458
- `).replace(/\n\s*\n+/g,`
459
- `),Ap=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),jp=e=>{let t=e?.metadata;return Ap(t)?t:{}},Mp=e=>{let t=e.openchamber;return Ap(t)?t:{}},Np=e=>{let t=Mp(jp(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Pp=e=>{let t=Mp(jp(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Fp=e=>Mp(jp(e)).kind===`review`&&!!Pp(e),Ip=(e,t)=>{let n=Mp(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Lp=(e,t)=>{let n=Mp(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},Rp=(e,t)=>{let n=Mp(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},zp=Oe()(ke((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:h(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),Bp=(e,t)=>{let n=new Map;for(let t of e){if(!t.parentID)continue;let e=n.get(t.parentID)??[];e.push(t.id),n.set(t.parentID,e)}let r=new Set([t]),i=[t];for(let e of i){let t=n.get(e);if(t)for(let e of t)r.has(e)||(r.add(e),i.push(e))}return r},Vp=(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},Hp=(e,t,n,r)=>{if(!n)return r;let i=Bp(e,n);if(i.size===0)return r;let a=new Set,o=[];for(let e of i){let n=t[e];if(n)for(let e of n)a.has(e.id)||(a.add(e.id),o.push(e))}return o.length===0?r:o},Up=`GitHub issue context (JSON)`,Wp=`GitHub pull request context (JSON)`,Gp=e=>!e||typeof e!=`object`?!1:!!e.synthetic,Kp=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>Gp(e)),qp=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!Gp(e)),n=e=>{if(!Gp(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(Up)||n.startsWith(Wp)};return t&&e.some(e=>Gp(e))?e.filter(e=>!Gp(e)||n(e)):e},Jp=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},Yp=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,Xp=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},Zp=e=>e.replace(/\\/g,`/`),Qp=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,$p=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}`}`),Zp(n)}catch{return null}},em=(e,t)=>{let n=Qp(Zp(e)),r=Qp(Zp(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},tm=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),nm=(e,t)=>{let n=Zp(e),r=Qp(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=em(n,t);if(r!==null){let t=Qp(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return tm(a)},rm=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},im=(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},am=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},om=async(e,t={})=>{let n=t.createID??fe,r=t.directory??t.root??null,i=e.filter(e=>!Gp(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(Yp).join(`
460
- `),l=[];for(let e of o){let t=am(e);t&&l.push(t)}for(let e of[...l].reverse())im(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=E(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=im(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:`)?$p(t):null;if(o){let e=nm(o,r),t=null;for(let n of e){let e=im(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=Xp(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 rm(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(Jp(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 _=we(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},sm=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=we(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 rm(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(Jp(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}},cm=e=>e?JSON.parse(JSON.stringify(e)):null,lm=e=>e?{...e}:{},um=(e,t=wr.getState())=>{let n=t.getDraft?.(e)??null,r=lm(t.draftAttachmentViews?.[R(e)]);return{record:cm(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},dm=async e=>{let t=e.input??wr.getState(),n=um(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}},fm=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}}},pm=async e=>{let t=e.input??wr.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?fm({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},mm=(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},hm=e=>e?.status===`committed`&&e.current===!0,gm=new Map,_m=async(e,t)=>{let n=R(e),r=gm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);gm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),gm.get(n)===o&&gm.delete(n)}},vm=(e,t)=>({key:e,addLocal:async n=>{await _m(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await _m(e,async()=>{let r=t(),i=mm(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 _m(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 _m(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:hm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await _m(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await _m(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await _m(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),ym=4e4,bm=0,xm=null;function Sm(e=Date.now()){bm=e}function Cm(e){return xm=e,()=>{xm===e&&(xm=null)}}function wm(e){xm?.(e)}function Tm(e=Date.now(),t=ym){return bm<=0?!1:e-bm>=t}var Em=3e4,Dm=200,Om=new Map;function km(e,t,n){return`${n?.transport??r()}\n${n?.generation??s()}\n${e.trim()}\n${t}`}function Am(e,t,n){if(!e||!t)return!1;let r=Om.get(km(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Em}function jm(e,t,n){if(!e||!t)return;let r=km(e,t,n);for(Om.has(r)&&Om.delete(r);Om.size>=Dm;){let e=Om.keys().next().value;if(typeof e!=`string`)break;Om.delete(e)}Om.set(r,n?.now??Date.now())}var Mm=768,Nm=()=>{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},Pm=()=>{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<=Mm&&Nm()?`mobile`:`desktop`},Fm=()=>Pm()===`mobile`,Im=3,Lm=2,Rm=4,zm=4,Bm=100,Vm=30;function Hm(){return l()?`relay`:`local`}function Um(e=Hm()){return e===`relay`?Lm:Im}function Wm(e=Hm()){return e===`relay`?zm:Rm}function Gm(e){return Um(Jm(e))}function Km(){return Bm}function qm(){return Vm}function Jm(e){return e===`relay`||e===`local`?e:Hm()}var Ym=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function Xm(){return{pages:[],pageParams:[]}}function Zm(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 Qm(e){return{pages:Object.freeze(e.pages.map(Zm)),pageParams:Object.freeze([...e.pageParams])}}function $m(e,t,n=Ym){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 Zm({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function eh(e){if(!e||e.pages.length===0)return Qc;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 th(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=eh(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function nh(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function rh(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 Zm({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:nh(t)}})}function ih(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 Qm({pages:[rh(`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=rh(`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(oh(i,o,s,a)),_.push(e.pageParams[r]??null)}return Qm({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?oh(t,r===`reconcile-page`?ah(i,p):[...i,...p],s,a):oh(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]=Zm({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return Qm({pages:m,pageParams:[...e.pageParams]})}function ah(e,t){let n=e.slice();for(let e of t){let t=ec(e),r=n.length;for(let e=0;e<n.length;e+=1)if($s(t,ec(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function oh(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&&sh(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||lh(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:Zm({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:nh(t)}})}function sh(e,t){return e===t||e.id===t.id&&e===t}function ch(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 lh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!ch(e[n],t[n]))return!1;return!0}function uh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function dh(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 fh(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=ih(e??Xm(),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&&lh(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 Qm({pages:e.pages.map((t,n)=>oh(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function ph(e,t){let n=th(e,t),r=eh(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 mh(e,t,n,r){if(!wl(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=ph(e,t),o=Ms(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=dh(n),c=new Set;return s&&c.add(s),{data:fh(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function hh(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 gh(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 _h(e){return e?e.map(e=>e.id).filter(e=>typeof e==`string`):[]}function vh(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=ph(e,t),o=!1,s=0,c,l=new Set,u=hh(e),d=gh(e),f=_h(i.message[t]);for(let e of n){if(!wl(e.type))continue;o=!0;let n=Ms(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 p=dh(e),m=_h(i.message[t]),h=m.length!==f.length||m.some((e,t)=>e!==f[t]),g=h;if(p){let e=i.part[p],n=u.get(p);e&&n&&lh(n,e)?i.part[p]=[...n]:e?(g=!0,u.set(p,e)):n&&(g=!0,u.delete(p));let r=i.message[t]?.find(e=>e.id===p),a=d.get(p);if(!(r&&a&&a===r))if(r&&a&&sh(a,r)){let e=i.message[t];if(e){let t=e.findIndex(e=>e.id===p);t>=0&&(e[t]=a)}}else r?(g=!0,d.set(p,r)):a&&(g=!0,d.delete(p))}else g=!0;if(h){f=m;for(let e of i.message[t]??[])e?.id&&!d.has(e.id)&&d.set(e.id,e)}g&&(s+=1,p&&l.add(p))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:fh(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function yh(e,t,n,r,i){let a=e&&e.pages.length>0?e:Qm({pages:[rh(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=th(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]:uh(r)};return{data:Qm({pages:a.pages.map((e,t)=>t===a.pages.length-1?oh(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]?oh(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 bh(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:Qm({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 oh(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function xh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=th(e,t),i=Kc({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:eh(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=Qm({pages:[rh(`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:eh(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=Qm({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?oh(t,ah(r,l),o,a):oh(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:eh(u)}}}function Sh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=sl(th(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:ih(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 mh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return vh(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return yh(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 bh(e,n.messageID,t)}case`durable-seed`:return xh(e,t,n);case`reset`:return n.page?Sh(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 Ch(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 wh(e,t,n,r=`materialize`){return Sh(e,n,{type:`http-page`,purpose:r,page:Ch(t),liveRevision:t.sync.liveRevision}).data}function Th(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return Qm(t);if(t.pages.length===e.pages.length){let r=kh(e,t);if(r===e)return e;if(Oh(e,t)||Dh(e,t))return r;let i=t.pages[t.pages.length-1];return wh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return Sh(e,n,{type:`http-page`,purpose:`prepend`,page:Ch(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return wh(e,r,n)??Qm(t)}return Qm(t)}function Eh(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Dh(e,t){let n=Eh(e),r=Eh(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=Ah(e,``),a=Ah(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Oh(e,t){let n=Eh(e);if(n.size===0)return!1;let r=Eh(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=Ah(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||$s(ec(t),ec(n))>0)return!1}return!0}function kh(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,Zm(t))});return!n&&e.pageParams.length===t.pageParams.length?e:Qm({pages:r,pageParams:[...t.pageParams]})}function Ah(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:eh(e),liveRevision:a}}var jh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Mh=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Nh=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Ph=e=>e.trim(),Fh=e=>e?.trim()||`tail`,Ih=new Set([502,503,504]),Lh=[`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 Rh(e){if(!e||e instanceof jh||e instanceof Mh)return!1;if(e instanceof Nh)return e.status>=400&&e.status<500?!1:Ih.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(Ih.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(Ih.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:Lh.some(e=>n.includes(e))}function zh(e,t){return e>=2?!1:Rh(t)}var Bh=(e,t=r(),n=s())=>[t,n,`sessionMessages`,`page`,Ph(e.directory),e.sessionID,e.limit,Fh(e.before)],Vh=(e,t=r(),n=s())=>[t,n,`session-transcript`,Ph(e.directory),e.sessionID];function Hh(e){if(!e||typeof e!=`object`)throw new Mh(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Mh(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Mh(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Mh(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Mh(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Mh(`session message page: cursor must be string when set`);return e}var Uh=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}:{}})},Wh=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw new jh},Gh=(e,t,n=r(),i={},a=(i.getGeneration??s)())=>{let o=Ph(e.directory),c=e.sessionID,l=e.limit,u=e.before?.trim()||void 0;return{queryKey:Bh({directory:o,sessionID:c,limit:l,before:u},n,a),queryFn:async({signal:e})=>{Wh(n,a,i);let r=await t({directory:o,sessionID:c,limit:l,before:u,signal:e});return Wh(n,a,i),Uh(Hh(r))},staleTime:1/0,gcTime:3e5,retry:zh,retryDelay:e=>Math.min(500*2**e,4e3)}},Kh=(e,t,n=L,i=r(),a={},o=(a.getGeneration??s)())=>n.fetchQuery(Gh(e,t,i,a,o));function qh(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 Jh(e){return Uh({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function Yh(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function Xh(e){let t=Ph(e.directory),n=e.sessionID,i=e.transport??r(),a=e.probe??{},o=e.generation??(a.getGeneration??s)(),c=e.initialLimit??Um(),l=e.historyLimit??Wm(),u=e.client??L,d=Vh({directory:t,sessionID:n},i,o),f=async t=>Jh(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:d,queryFn:async e=>{Wh(i,o,a);let r=e.pageParam?.trim()||void 0,s=r?l:c,d=r?`prepend`:`initial`,p=await Kh({directory:t,sessionID:n,limit:s,before:r},f,u,i,a,o);Wh(i,o,a);let m=qh(p);return $m(m,d===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:Yh,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:zh,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>Th(e,t,n)}}function Zh(e){let t=e.client??L,n=Xh({...e,client:t}),r=new Qe(t,{...n,structuralSharing:(t,n)=>Th(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 Qm(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return Qm(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:Qm(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return Qm(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:Qm(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function Qh(e,t,n,r){let i=e.getQueryData(t),a=Sh(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 $h(e,t=L,n=r(),i=s()){return t.getQueryData(Vh(e,n,i))}function eg(){return v()||Fm()}function tg(){return v()?4:Fm()?12:40}var ng=1048576,rg=4*ng,ig=12*ng,ag=40*ng;function og(){return v()?rg:Fm()?ig:ag}var sg=e=>e.trim();function cg(e){return{transport:e.transport,generation:e.generation,directory:sg(e.directory),sessionID:e.sessionID}}function lg(e){let t=cg(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function ug(e){return`${e.transport}\n${e.generation}\n${sg(e.directory)}`}var dg={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function fg(e,t,n){return[t,n,dg.taskRoot,dg.reconcileTaskKind,sg(e.directory),e.sessionID,e.checkpoint]}function pg(e,t,n){return[t,n,dg.checkpoint,sg(e.directory),e.sessionID]}function mg(e){let t=cg(e);return[{queryKey:Vh({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,dg.transportPageRoot,dg.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,dg.taskRoot,dg.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,dg.taskRoot,dg.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:pg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function hg(){let e=new Map;return{retain(t){let n=cg(t),r=lg(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(lg(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(lg(t))?.count??0},clear(){e.clear()}}}function gg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var _g=3e4;function vg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function yg(e){return!Array.isArray(e)||e.length<5||e[2]!==dg.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 bg(e){let t=e.client,n=e.activeRegistry??hg(),r=e.counters??gg(),i=e.getLimit??tg,a=e.now??Date.now,o=e.minResidencyMs??_g,s=new Map,c=e=>{let t=lg(cg(e));s.set(t,a())},l=e=>{let t=lg(cg(e)),n=s.get(t);return n!==void 0&&a()-n<o},u=e=>{let r=cg(e);if(n.isRetained(r))return!0;let i=Vh({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},d=e=>{let r=e?.directory===void 0?void 0:sg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=yg(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:vg(a.state.data)})}return i},f=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},p=e=>{r.purgeSession+=1,s.delete(lg(cg(e)));for(let t of mg(e))f(t)},m=(e,t)=>{r.purgeGeneration+=1;let n=[[e,t,dg.canonical],[e,t,dg.transportPageRoot,dg.transportPageKind],[e,t,dg.taskRoot],[e,t,dg.checkpoint]];for(let e of n)f({queryKey:e})},h=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>lg(cg(e)))),o=d({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=ug(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let u=[];for(let e of c.values()){for(let t of e){let e=lg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(lg(e.scope))||l(e.scope)));i.sort((e,t)=>e.dataUpdatedAt===t.dataUpdatedAt?e.scope.sessionID<t.scope.sessionID?-1:+(e.scope.sessionID>t.scope.sessionID):e.dataUpdatedAt-t.dataUpdatedAt);let o=e.length-i.length,c=e.length,d=0;for(;c>t&&d<i.length&&!(c-1<o);){let e=i[d];d+=1,p(e.scope),u.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:u}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:u,listCanonical:d,purgeSession:p,purgeGeneration:m,enforce:h,destructiveReset:async(e,t)=>{r.destructiveReset+=1,p(e);try{let n=await t();return h({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw p(e),t}},noteScopeObserved:c}}var xg=3e4,Sg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function Cg(e,t=xg){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 wg=e=>e?e.toLowerCase().includes(`application/json`):!1,Tg=e=>e?e.toLowerCase().includes(`text/html`):!1;function Eg(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 Dg(e){let t=e.turns??Wm(),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:xg;return Cg((async()=>{let a=await F(n,{method:`GET`,query:r,signal:Sg(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(Tg(o))throw Error(`session turn page: unexpected HTML response`);wg(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Eg(s,t)})(),i)}async function Og(e){let t=e.purpose===`prepend`&&e.before?Wm():Um();return Dg({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var kg=3e4,Ag=2,jg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),Mg=e=>e?e.toLowerCase().includes(`text/html`):!1,Ng=e=>new Promise(t=>{setTimeout(t,e)});function Pg(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Mh(`session transcript reconcile: ${t} must be string or null`);return e}function Fg(e){if(!e||typeof e!=`object`)throw new Mh(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Mh(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Mh(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Mh(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Mh(`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 Mh(`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 Mh(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=Pg(t.capturedHeadMessageID,`capturedHeadMessageID`),r=Pg(t.latestHeadMessageID,`latestHeadMessageID`),i=Pg(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Mh(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Mh(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Mh(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Mh(`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 Mh(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Mh(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Mh(`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 Mh(`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 Ig(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 Mh(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function Lg(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),Cg((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:jg(e.signal,n)})}catch(e){throw e instanceof jh||e instanceof Mh||e instanceof Nh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new Nh(t.status,`session transcript reconcile failed (${t.status})`);if(Mg(t.headers.get(`content-type`)))throw new Mh(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Mh(`session transcript reconcile: malformed JSON`)}return Fg(a)})(),n)}async function Rg(e){let t=Ig(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:kg,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):Ag,i=e.sleep??Ng,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await Lg(e,t,n)}catch(t){if(t instanceof jh||t instanceof Mh||t instanceof Nh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!Rh(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var zg=`GitHub issue context (JSON)`,Bg=`GitHub pull request context (JSON)`,Vg=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,Hg=(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}},Ug=e=>{let t=Hg(e,zg);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!Vg(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=Hg(e,Bg);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!Vg(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},Wg=(e,t)=>{let n=e.trim();return!!(t&&n.startsWith(`User has requested to enter plan mode`)||t&&n.startsWith(`The plan at `)||n.startsWith(`The following tool was executed by the user`))},Gg=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),Kg=e=>e.trim()===`/compact`,qg=(e,t)=>{let n=t?.planModeEnabled===!0;return e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(Gg(t)||Kg(t)))return!1}if(e.synthetic!==!0)return!0;if(e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let r=t.trimStart();return Wg(t,n)||r.startsWith(zg)||r.startsWith(Bg)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=Ug(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},Jg=e=>e?.length?qg(e).length>0:!1,Yg=`oc_asst_session_divider:`,Xg=[],Zg=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),Qg=(e,t=0)=>({info:{id:`${Yg}${e}`,role:`system`,time:{created:t}},parts:[]}),$g=e=>e.slice().reverse().flatMap(e=>e.entries),e_=(e,t,n=Xg)=>{if(!e.length)return Xg;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(Qg(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?Xg:a_(n,r)?n:r},t_=(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=t_(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 Jg(e.parts)?e:Jg(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}:{}}},r_=(e,t,n,r=Xg)=>{if(!t)return n.length>0?Array.from(n):Xg;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 Xg;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 a_(r,o)?r:o},i_=(e,t)=>{if(!Zg(e)||!Zg(t))return!1;let n=Number(e.info.time?.created??0),r=Number(t.info.time?.created??0);return e.info.id===t.info.id&&n===r},a_=(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||i_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},o_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),s_=e=>e.startsWith(Yg);function c_(e,t){if(!e?.id||s_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(o_(t,`subtask`)||o_(t,`compaction`)||t.every(e=>Gp(e))):!1}function l_(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(c_(r,i))return n}return null}function u_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function d_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:l_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:u_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function f_(e,t){return{...e,...t}}function p_(e,t){let n=pg({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 m_(e,t){let n=pg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function h_(e,t){let n=pg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function g_(e){return e.slim===!0}var __=/bearer|token|authorization|password|secret|cookie/i;function v_(e){return typeof e==`string`&&e.includes(`-`)}var y_=`openchamber.client-diagnostics.enabled`;function b_(e){return e===`true`||e!==`false`&&null}function x_(e){return e.preference===!0||e.preference!==!1&&v_(e.version)}function S_(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function C_(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function w_(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 T_(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return __.test(t)?`redacted-error`:t}function E_(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)g_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function D_(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function O_(e){let t=0;for(let n of e.messageOrder)B_(e.messagesByID[n])===!0&&(t+=1);return t}function k_(e){let t=e.transcript?E_(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:D_(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:O_(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...T_(e.error??e.request?.error)?{error:T_(e.error??e.request?.error)}:{},...w_(e.error)===void 0?{}:{httpStatus:w_(e.error)}}}function A_(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 j_(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 M_(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return e.event.type===`message.part.delta`?null:`sse-event`;case`sse-event-batch`:return`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function N_(e){if(e.type===`http-page`)return e.purpose}function P_(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function F_(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 I_(e){return e.__openchamberOptimistic===!0}function L_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function R_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var z_=e=>typeof e==`string`&&e.trim().length>0;function B_(e){if(!e||L_(e)!==`assistant`)return;let t=e,n=!z_(t.mode)&&!z_(t.agent),r=!z_(t.modelID)||!z_(t.providerID);return n||r}function V_(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function H_(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)g_(e)?r+=1:i+=1,I_(e)&&(a=!0);let o=e.messagesByID[t],s=L_(o),c=B_(o);return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:R_(o),...s?{role:s}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function U_(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:V_(e),after:V_(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 W_(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:U_(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 G_(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function K_(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function q_(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function J_(e){let t=q_(e.partID),n=q_(e.messageID),r=q_(e.directory),i=q_(e.childSessionID),a=q_(e.toolStatus),o=q_(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 Y_(e){return[e.sessionID,q_(e.partID)??``,e.childSessionPresent?`1`:`0`,q_(e.childSessionID)??``,q_(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`,q_(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function X_(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...J_(e)}}function Z_(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:K_(e),...J_(e)}}var Q_=`openchamber-transcript-diagnostics`,$_=`events`,ev=1,tv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),nv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,ev);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains($_)||e.createObjectStore($_,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),rv=(e=Q_)=>({async append(t,n){let r=await nv(e);try{let e=r.transaction($_,`readwrite`).objectStore($_);await tv(e.add(t));let i=await tv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await tv(e.delete(t))}finally{r.close()}},async read(){let t=await nv(e);try{return await tv(t.transaction($_,`readonly`).objectStore($_).getAll())}finally{t.close()}},async clear(){let t=await nv(e);try{await tv(t.transaction($_,`readwrite`).objectStore($_).clear())}finally{t.close()}}});function iv(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 av=Je(`OpenChamberMedia`);function ov(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function sv(){return lt()&&Ye!==void 0&&Ye.isPluginAvailable(`OpenChamberMedia`)}function cv(){return`1.18.2-beta.6`}function lv(){if(typeof localStorage>`u`)return null;try{return b_(localStorage.getItem(y_))}catch{return null}}function uv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(y_,e?`true`:`false`)}catch{}}function dv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var fv;function pv(e=cv()){return x_({version:e,preference:lv()})}function mv(e={}){return j_({sink:dv()===`indexeddb`?(e.createIndexedDBSink??iv)():(e.createMemorySink??A_)(),isEnabled:e.isEnabled??pv})}function hv(){return fv??=mv(),fv}function gv(e){hv().record(e)}function _v(e){try{return pv()?H_(e()):void 0}catch{return}}function vv(e){try{gv(W_(e))}catch{}}function yv(e){try{gv(X_(e))}catch{}}function bv(e){try{gv(Z_(e))}catch{}}function xv(e){let t=M_(e.command);t&&gv(k_({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:e.transcript,request:e.request,hydration:e.hydration,command:e.command.type,purpose:N_(e.command),sseType:P_(e.command),source:F_(e.command),error:e.error}))}async function Sv(){let e=await hv().exportReport(),t=Te()?.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 Cv(e,t=S_()){if(sv())return(await av.saveFile({dataBase64:ov(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 wv(){let e=await Sv(),t=S_();return{content:e,fileName:t,outcome:await Cv(e,t),eventCount:C_(e)}}function Tv(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 Ev=2,Dv=6e4;function Ov(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??r)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??s)()}}function kv(e,t){let n=(t.probe?.getTransport??r)(),i=(t.probe?.getGeneration??s)();if(n!==e.transport||i!==e.generation)throw new jh}function Av(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function jv(e,t){return cg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function Mv(e,t){return`${e.trim()}\n${t}`}function Nv(e){let t=e.client,n=e.repository,i=e.cacheBudget??n.getCacheBudget?.()??bg({client:t,activeRegistry:hg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??Ev)),o=e.fetchReconcile??Rg,c=e.now??Date.now,l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,h=new Set,g=new Map,_=new Set,v=(e,t)=>{h.add(Mv(e,t))},y=(e,t)=>{h.delete(Mv(e,t))},b=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},x=e=>{u+=1;for(let e of[...f.keys()])b(e);p.clear(),m.clear()},S=(e,t)=>{let n=t===void 0?void 0:t.trim(),r=new Map;for(let t of i.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&r.set(Mv(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of i.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&r.set(Mv(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(r.values())},C=(t,n)=>{let r=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of i.listCanonical({transport:t.transport,generation:t.generation}))r.add(e.scope.directory);for(let e of i.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&r.add(e.directory);for(let e of n)e.directory&&r.add(e.directory.trim());return r},w=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=Mv(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},T=r=>{if(l)return;let a={transport:r.transport??Ov(e).transport,generation:r.generation??Ov(e).generation},o=c(),s=w(),u=C(a,s),d=i.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(Mv(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of i.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(Mv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of s)f.set(Mv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(Mv(t,n),{directory:t,sessionID:n});for(let e of f.values()){let i=Av(e,a),s=n.getTranscript(i),c=d_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:r.lastEventID,capturedAt:o});m_(t,c)}let p=new Set;for(let t of u){let n=Tv({directory:t,activeScopes:S(a,t),viewedSessions:s,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(Mv(e.directory,e.sessionID))}for(let e of d){let t=Mv(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=_v(()=>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=_v(()=>n.getTranscript(e));i&&t&&vv({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},D=async(r,i,a)=>{if(kv({transport:i.transport,generation:i.generation},e),a!==u)throw new jh;m_(t,f_(p_(t,i)??d_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let o=_v(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),kv({transport:i.transport,generation:i.generation},e),a!==u)throw new jh;h_(t,i),y(i.directory,i.sessionID);try{let e=_v(()=>n.getTranscript(r));o&&e&&vv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw m_(t,f_(p_(t,i)??d_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},O=async(r,i,a)=>{if(kv({transport:i.transport,generation:i.generation},e),a!==u)throw new jh;m_(t,f_(p_(t,i)??d_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=_v(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),kv({transport:i.transport,generation:i.generation},e),a!==u)throw new jh;h_(t,i),y(i.directory,i.sessionID);try{let e=_v(()=>n.getTranscript(r));o&&e&&vv({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 m_(t,f_(p_(t,i)??d_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},k=async(r,i,a,s)=>{let l=Av(r,i),d=jv(r,i),f=fg({directory:d.directory,sessionID:d.sessionID,checkpoint:String(p_(t,d)?.capturedAt??c())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:c()});try{if(kv(i,e),a!==u||s.aborted)throw new jh;let p=p_(t,d);if(p||(p=d_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(l),lastEventID:null,capturedAt:c()}),m_(t,p)),!p.anchorMessageID){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}p=f_(p,{state:`reconciling`}),m_(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,kv(i,e),a!==u||s.aborted)throw new jh;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,kv(i,e),a!==u||s.aborted)throw new jh;let h=n.getTranscript(l).liveRevision;if(!g&&!m){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}let y=await o({sessionID:r.sessionID,directory:r.directory.trim(),...g?{continuation:g}:{anchor:m},signal:s});if(kv(i,e),a!==u||s.aborted)throw new jh;if(y.resetRequired){await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()});return}if(b===1&&(_=y.capturedHeadMessageID),v=y.latestHeadMessageID??v,y.records.length>0&&E(l,y,h),p=f_(p_(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),m_(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=f_(p_(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),m_(t,p);continue}p=f_(p_(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),m_(t,p),y(r.directory,r.sessionID),t.setQueryData(f,{status:`complete`,finishedAt:c()});return}await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()})}catch(n){if(n instanceof jh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(f,{status:`cancelled`,finishedAt:c()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(f,{status:`error`,finishedAt:c(),code:n instanceof Error?n.name:`error`}),n}},A=t=>{let n=t.trim(),r=m.get(n)??0;if(r>=a)return;let i=p.get(n);if(!i||i.length===0)return;let o=i.shift();m.set(n,r+1);let s=Mv(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),A(n);return}let c=Ov(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{try{await k(o,c,l,h.signal)}catch{}finally{f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),A(n)}})();d.set(s,g)},j=e=>{let t=e.directory.trim(),n=Mv(t,e.sessionID);if(d.has(n))return;let r=p.get(t);r||(r=[],p.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),A(t))},ee=t=>{let n=w(),r=C(t,n);for(let a of r){let r=Tv({directory:a,activeScopes:S(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of r)j(e);for(let e of i.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=Mv(e.scope.directory,e.scope.sessionID);r.some(e=>Mv(e.directory,e.sessionID)===t)||v(e.scope.directory,e.scope.sessionID)}}},te=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??r)(),generation:t.runtimeGeneration},i=(e.probe?.getGeneration??s)(),a=(e.probe?.getTransport??r)();if(i!==n.generation||a!==n.transport){x(`generation_mismatch`);return}ee(n)},M=t=>{if(l)return;let r=t.directory.trim(),i=Ov(e,t),a=Av({directory:r,sessionID:t.sessionID},i),s=lg(jv({directory:r,sessionID:t.sessionID},i)),u=g.get(s);if(u&&c()-u.checkedAt<Dv||_.has(s)||d.has(Mv(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(_.add(s),(async()=>{try{if(kv(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(kv(i,e),l||(g.set(s,{checkedAt:c()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;E(a,u,d)}catch{}finally{_.delete(s)}})())};return{captureCheckpoints:T,onCompensation:te,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=Mv(i,r.sessionID);if(!h.has(a))return M(r),null;y(i,r.sessionID);let o=Ov(e,r),s=Av({directory:i,sessionID:r.sessionID},o),c=jv({directory:i,sessionID:r.sessionID},o),u=p_(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){j({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{kv(o,e);let r=await n.ensureInitial(s);return h_(t,c),r}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:x,getCheckpoint:n=>{let r=Ov(e,n);return p_(t,jv({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(Mv(e,t)),destroy:()=>{l=!0,x(`destroy`)}}}function Pv(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Fv(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 Iv(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 Lv(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(Xs(e))??Promise.resolve(),r.get(Qs(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=Xs(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=Qs(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??og)();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 Rv=new Map;function zv(e,t){let n=Rv.get(e);if(n)return n;let r=t().finally(()=>{Rv.get(e)===r&&Rv.delete(e)});return Rv.set(e,r),r}var Bv=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Vv(e){return zv(Bv(e),e.request)}function Hv(e,t){return`${e}\n${t}`}var Uv=new Map;function Wv(e){return Uv.get(e)}async function Gv(e){return Vv({runtimeKey:Hv(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 Uv.set(r.id,i),{info:rp(r),parts:i}}})}function Kv(e,t){let n=e.info;return n.role===t||n.clientRole===t}function qv(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Kv(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 Jv(e){if(e.complete){let t=e.records.some(e=>Kv(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=qv(e.records);if(t.length===0){let t=e.records.some(e=>Kv(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=>Kv(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Yv(e){return e.trim()}function Xv(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??r)(),i=e.generation??t.generation??(t.probe?.getGeneration??s)();return{directory:Yv(e.directory),sessionID:e.sessionID,transport:n,generation:i}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function Zv(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:Qc,liveRevision:0}}function Qv(e,t){if(!e||e.pages.length===0)return Zv(t);let n=Ah(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function $v(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function ey(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function ty(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=$v(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=$v(e.messagesByID[t]);a===void 0||a<=n||ey(e.partsByMessageID[t])||i.push(t)}return i}function ny(e={}){let t=e.client??L,n=e.cacheBudget??bg({client:t,activeRegistry:e.activeRegistry??hg()}),i=n.activeRegistry,a=new Map,o=new Map,c=new Map,l=new Map,u=new Map,d=e.durableStore?Lv(e.durableStore,{getProtectScopes:()=>i.listRetained().map(Pv),getByteBudget:e.getDurableByteBudget}):void 0,f=new Map,p=new Map,m=new Map,h=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=Qv(w(e),t.sessionID);!_l(r)&&!v.has(n)||(y.add(n),gv(k_({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=u.get(e);return t||(t={messages:new Map,parts:new Map},u.set(e,t)),t},w=n=>{let r=Xv(n,e);return $h({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=Xv(t,e);return Vh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=Xv(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let i=e.probe??{getTransport:r,getGeneration:s},o=Xv(n,{...e,transport:void 0,generation:void 0,probe:i}),c=K(o),l=a.get(c);if(l)return l;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let u=Zh({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:i,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(c,u),u},k=t=>{let n=K(Xv(t,e));u.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(Xv(n,e));if(c.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});c.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=c.get(e);n&&(n(),c.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of m.keys())t.startsWith(e)&&m.delete(t);for(let t of h.keys())t.startsWith(e)&&h.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of m)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of h.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=Xv({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{d&&d.persistSettled(Pv(e),t,n??[])},le=(e,t,n,r)=>{if(!d||S>0||!r.applied||!r.changed)return;let i=Pv(t);if(n.type===`remove-message`){d.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(d.clearSession(i),n.page){let r=Qv(w(e),t.sessionID);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;ce(t,n,r.partsByMessageID[e.info.id]??e.parts)}}return}if(n.type!==`optimistic-add`&&n.type!==`optimistic-confirm`&&n.type!==`optimistic-remove`){if(n.type===`sse-event`||n.type===`sse-event-batch`){let r=n.type===`sse-event`?[n.event]:n.events,a=Qv(w(e),t.sessionID);for(let e of r){let n=Iv(e);if(n.action===`remove`){d.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=Qv(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,i)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:r,getGeneration:s},c={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??Um()};return Fv(i?.fresh?await t.fetchQuery({...Gh(c,a,n.transport,o,n.generation),staleTime:0}):await Kh(c,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)ru(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now();f.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return f.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),jm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let a=g.get(r);if(a&&a.size>0){let n=[],r=0;for(let o of i.records){let i=o.info.id;if(!(!i||!a.has(i))){if(!dl(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),m.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof jh||!se(t))return f.delete(r),P.getTranscript(e);throw f.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),gv(k_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:Qv(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{p.delete(r)}})();return p.set(r,a),a},fe=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;f.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return f.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||Yl(t.sessionID,t.directory)?(f.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),jm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return f.delete(r),n instanceof jh||!se(t)||gv(k_({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:Qv(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{p.delete(r)}})();return p.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(Xv(t,e)))?!0:eh(n).kind===`unknown`},P={getTranscript(t){let n=Xv(t,e),r=K(n),i=Qv(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=Xv(t,e),r=K(n),i=P.getTranscript(t);return te(r,xl(n.sessionID,i.boundary))},getRequestState(t){let n=Xv(t,e),r=f.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=Xv(t,e),r=K(n),i=P.getTranscript(t);_l(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:vl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:ml(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(Xv(t,e)),i=C(r),a=P.getTranscript(t).messagesByID[n];return i.messages.has(n)&&i.messages.get(n)===a?i.messages.get(n):(i.messages.set(n,a),a)},getParts(t,n){let r=K(Xv(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??ry,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=Xv(t,e),i=m.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||ul(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=Xv(t,e),i=M(r,n),a=_v(()=>P.getTranscript(t)),o=e=>{try{let t=_v(e);if(!a||!t)return;vv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=h.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return m.set(i,{status:`idle`}),P.getTranscript(t);if(!ul(P.getParts(t,n))&&!g.get(K(r))?.has(n))return m.set(i,{status:`ready`}),P.getTranscript(t);m.set(i,{status:`loading`}),k(t);try{let a=await Gv({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 se(r)?(P.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),ul(P.getParts(t,n))?m.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):m.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(m.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return m.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return m.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return h.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{h.get(i)===c&&h.delete(i)}),c},apply(r,i){let a=Xv(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=Qh(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&_.delete(K(a)),e.result.changed&&(k(r),D(r)),e.result}case`sse-event`:{let e=Qh(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`sse-event-batch`:{let e=Qh(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=Qh(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&k(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),Qh(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=Qh(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&k(r),n.result}case`reset`:{if(b.delete(K(a)),g.delete(K(a)),_.delete(K(a)),n.purgeSession(E(r)),!i.page)return k(r),{applied:!0,changed:!0};let e=Qh(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(k(r),D(r)),e.result}case`materialize-snapshots`:return iy(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=Qh(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&k(r),e.result}default:return{applied:!1,changed:!1}}})();return le(r,a,i,s),s.applied&&(xv({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:Qv(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error}),x(r,a)),s},subscribe(t,r){let a=K(Xv(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);l.set(a,i.retain(e)),n.noteScopeObserved(e)}return s.add(r),A(t),()=>{let e=o.get(a);if(e){if(e.delete(r),e.size===0){let e=l.get(a);e&&(e(),l.delete(a))}j(a)}}},async ensureInitial(t){let r=Xv(t,e),a=K(r);if(d&&await d.wait(Pv(r)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Pv(r));if(se(r)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.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)dl(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){gv(k_({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,r);return gv(k_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!i.isRetained(E(t))){let e=Date.now(),n=await fe(t,r);return gv(k_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;f.delete(a);try{await s.ensureInitial()}catch(e){throw gv(k_({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:Qv(w(t),r.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}f.delete(a),l||jm(r.directory,r.sessionID,{transport:r.transport,generation:r.generation}),n.noteScopeObserved(E(t)),D(t);let u=P.getTranscript(t);return gv(k_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:u,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),u},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),eh(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=Xv(t,e),r=K(n);b.add(r),k(t);let i=Date.now();try{await O(t).fetchPreviousPage(),D(t);let e=P.getTranscript(t);return gv(k_({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:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),e}catch(e){throw gv(k_({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{b.delete(r),k(t)}},getController(t){let n=Xv(t,e);return a.get(K(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=Xv(t,e),i=_v(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??Um(),signal:new AbortController().signal}),s=P.getTranscript(t).liveRevision;if(P.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:o.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:s}),s<=a){let n=ty(P.getTranscript(t),o);for(let i of n)P.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let c=P.getTranscript(t);n.noteScopeObserved(E(t));try{let e=_v(()=>c);i&&e&&vv({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:i,after:e})}catch{}return c},async destructiveReset(t){let r=_v(()=>P.getTranscript(t)),i=E(t);return d&&await d.clearSession(Pv(Xv(t,e))),n.destructiveReset(i,async()=>{let n=Xv(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),u.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=_v(()=>s);r&&e&&vv({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=K(Xv(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),u.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),u.delete(n);let e=l.get(n);e&&(e(),l.delete(n));let t=c.get(n);t&&(t(),c.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),d&&d.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of c.values())e();c.clear();for(let e of l.values())e();l.clear(),o.clear(),u.clear(),f.clear(),p.clear(),m.clear(),h.clear(),g.clear(),v.clear(),y.clear(),b.clear()}};return P}var ry=Object.freeze([]);function iy(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=Qh(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var ay=`/api/openchamber/transcript-cache`,oy=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),sy=e=>typeof e==`object`&&!!e&&!Array.isArray(e),cy=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},ly=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},uy=e=>{if(!sy(e))throw Error(`Invalid transcript cache scope`);return{transport:cy(e.transport,`scope`),generation:ly(e.generation,`scope`),directory:cy(e.directory,`scope`),sessionID:cy(e.sessionID,`scope`)}},dy=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},fy=e=>{if(!sy(e)||!sy(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!sy(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:uy(e.scope),messageID:cy(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>dy(e,`part completeness`)),completeness:dy(e.completeness,`completeness`),contentHash:cy(e.contentHash,`content hash`),byteSize:ly(e.byteSize,`byte size`),lastAccessedAt:ly(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:ly(e.sortKey.created,`sort key`),messageID:cy(e.sortKey.messageID,`sort key`)}}},py=(e,t)=>{if(!sy(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(fy);return{scope:e.scope===void 0?dc(t):uy(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},my=e=>{if(!sy(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:fy(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!oy.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:fy(e.record)}}}throw Error(`Invalid transcript cache upsert`)},hy=e=>{if(!sy(e))throw Error(`Invalid transcript cache evict`);return{evicted:ly(e.evicted,`evict`),freedBytes:ly(e.freedBytes,`evict`),remainingBytes:ly(e.remainingBytes,`evict`)}},gy=e=>({scope:dc(e),records:[],byteSize:0}),_y=(e,t)=>sy(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,vy=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`)}},yy=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 vy(r)};let i=await vy(r).catch(()=>void 0);throw Error(_y(i,`Transcript cache request failed (${r.status})`))},by=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),xy=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Sy(e={}){let t=e.fetch??F;return{async readSession(e){let n=await yy(t,`${ay}/session`,{method:`GET`,query:by(e)});return n.kind===`disabled`||n.kind===`not-found`?gy(e):py(n.payload,e)},async readMessage(e,n){let r=await yy(t,`${ay}/message`,{method:`GET`,query:{...by(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!sy(r.payload))throw Error(`Invalid transcript cache record`);return fy(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await yy(t,`${ay}/message`,xy(`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 my(i.payload)},async removeMessage(e,n){let r=await yy(t,`${ay}/message`,xy(`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 yy(t,`${ay}/session`,xy(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await yy(t,`${ay}/generation`,xy(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await yy(t,`${ay}/evict`,xy(`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 hy(r.payload)},async clearAll(){let e=await yy(t,`${ay}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Cy=`openchamber-transcript-durable`,wy=1,Ty=`transcriptIndex`,Ey=`transcriptContent`,Dy=class extends Error{code;constructor(e){super(e),this.code=e}},Oy=e=>({id:Zs(e.scope,e.messageID),scope:dc(e.scope),scopeKey:Xs(e.scope),generationKey:Qs(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}),ky=(e,t)=>({scope:dc(e.scope),messageID:e.messageID,info:uc(t.info),parts:uc(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}}),Ay=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return ky(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},jy=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},My=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Ny=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Dy(`database-unavailable`));return}let r=indexedDB.open(e,wy),i=!1,a=()=>{i||(i=!0,n(new Dy(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Ty)){let t=e.createObjectStore(Ty,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Ey)||e.createObjectStore(Ey,{keyPath:`id`})},r.onsuccess=()=>{let e=r.result;if(e.onversionchange=()=>e.close(),i){e.close();return}i=!0,t(e)},r.onerror=a,r.onblocked=a}),Py=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Dy(`database-unavailable`)),r.onblocked=()=>void 0}),Fy=(e=Cy)=>({transaction:async t=>{let n=await Ny(e),r=n.transaction([Ty,Ey],`readwrite`),i=r.objectStore(Ty),a=r.objectStore(Ey),o=e=>My(e,r),s=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{console.error(`Transcript durable IndexedDB transaction error`,r.error)}}),c;try{let e=await t({getIndex:e=>o(i.get(e)),getAllIndexes:()=>o(i.getAll()),getIndexesByScope:e=>o(i.index(`scopeKey`).getAll(e)),getIndexesByGeneration:e=>o(i.index(`generationKey`).getAll(e)),putIndex:async e=>{await o(i.put(e))},deleteIndex:async e=>{await o(i.delete(e))},getContent:e=>o(a.get(e)),putContent:async e=>{await o(a.put(e))},deleteContent:async e=>{await o(a.delete(e))},clearAll:async()=>{await o(i.clear()),await o(a.clear())}});return await s,e}catch(e){c=e;try{r.abort()}catch{}try{await s}catch(e){c===void 0&&(c=e)}throw c}finally{n.close()}},destroy:()=>Py(e)});function Iy(e,t={}){let n=fc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Oy(t)),pc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(Xs(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=ky(t,r);a.lastAccessedAt=n(),await e.putIndex(Oy(a)),i.push(a)}return mc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Ay(e,Zs(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=hc({info:i,incomingCompleteness:rc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=uc(a.slice()),c=rc(s),l=await oc(i,s),u=Zs(t,i.id);return e.transaction(async e=>{let a=await Ay(e,u),o=hc({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:pc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:dc(t),messageID:i.id,info:uc(i),parts:s,partCompleteness:s.map(nc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:ec(i)};return await e.putIndex(Oy(d)),await e.putContent({id:u,info:uc(i),parts:s}),{status:`written`,record:pc(d)}})},async removeMessage(t,n){await e.transaction(e=>jy(e,Zs(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(Xs(t));for(let t of n)await jy(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(Qs(t));for(let t of n)await jy(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(Xs)),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?$s(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await jy(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 Ly(e={}){return Iy(e.driver??Fy(e.databaseName),e)}function Ry(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??lt;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var zy=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function By(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Sy)(),t),i=()=>(n??=(e.createIndexedDBStore??Ly)(),n),a=()=>Ry(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=>zy([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Vy(e={}){await By(e).clearAll()}var Hy=(e,t)=>e<t?-1:+(e>t);function Uy(e){return e.filter(e=>!!e?.id).sort((e,t)=>Hy(e.id,t.id))}async function Wy(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,i=await Og({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=i.records.map(e=>({info:rp(e.info),parts:Uy(e.parts??[])}));if(!e.before&&!i.complete&&qv(a).length>0){let t=B.getScopedSdkClient(e.directory);a=(await Jv({records:a,complete:i.complete,requestMessage:async n=>{let i=await Gv({transport:r(),generation:s(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:i.info,parts:Uy(i.parts??[])}}})).records.map(e=>({info:e.info,parts:Uy(e.parts??[])}))}return{records:a,cursor:i.cursor??void 0,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:e.limit}}function Gy(e){let t=e.client??L,n=hg(),i=bg({client:t,activeRegistry:n}),a=ny({client:t,cacheBudget:i,activeRegistry:n,probe:{getTransport:r,getGeneration:s},fetcher:e=>Wy({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:Um(),historyLimit:Wm(),durableStore:e.durableStore??By()}),o=Nv({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:i,probe:{getTransport:r,getGeneration:s}});return du(a),Tu(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),Tu(null),a.destroy(),fu()}}}function Ky(e){return pu().apply(U(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 qy=new Map;function Jy(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Yy(e,t,n,i={}){let a=i.getTransportIdentity??r,o=i.getGeneration??s,c=a(),l=o(),u=Jy(e,t,c,l),d=()=>a()===c&&o()===l,f=qy.get(u)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=f.catch(()=>void 0).then(()=>m);qy.set(u,h);try{if(await f.catch(()=>void 0),!d())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:c,generation:l,isCurrent:d})}finally{p(),qy.get(u)===h&&qy.delete(u)}}var Xy=new Set,Zy=new Set,Qy=new Set,$y=new Set,eb={onDeleteRequest(e){return Xy.add(e),()=>{Xy.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||Xy.forEach(t=>t(e))},onCreateRequest(e){return Zy.add(e),()=>{Zy.delete(e)}},requestCreate(e){let t=e??{};Zy.forEach(e=>e(t))},onDirectoryRequest(e){return Qy.add(e),()=>{Qy.delete(e)}},requestDirectoryDialog(){Qy.forEach(e=>e())},onGitRefreshHint(e){return $y.add(e),()=>{$y.delete(e)}},requestGitRefresh(e){e.directory.trim()&&$y.forEach(t=>t(e))}},tb=e=>e.trim(),nb=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session status runtime changed`)},rb=(e,t={})=>{let n=tb(e),i=t.transport??r(),a=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,c=t.runtimeProbe??{},l=(c.getGeneration??s)();return et({queryKey:N.sessionStatus.snapshot(n,i),queryFn:async({signal:e})=>{nb(i,l,c);let t=o(),r=await a(n,e);if(nb(i,l,c),r===null)throw Error(`session status snapshot unavailable`);return{snapshot:r,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},ib=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(rb(e,r))},ab=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session active runtime changed`)},ob=(e={})=>{let t=e.transport??r(),n=e.loadActive??(e=>B.getSessionActive(e)),i=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??s)();return et({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{ab(t,o,a);let r=i(),s=await n(e);return ab(t,o,a),{result:s,requestedAt:r}},staleTime:0,gcTime:3e5,retry:!1})},sb=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(ob(n))},cb;function lb(e){cb=e}function ub(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 db(e,t){return JSON.stringify(e)===JSON.stringify(t)}function fb(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function pb(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>({session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n}})),!0)}function mb(e,t,n,r=Date.now()){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let i=e.membership,a=t??{},o=new Set([...n,...Object.keys(a)]);if(o.size===0)return{snapshot:null,source:`none`};let s={};for(let e of o){let t=Object.prototype.hasOwnProperty.call(i,e),n=ub(a[e]);if(t){s[e]=n&&fb(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function hb(e,t,n,r){if(n.length===0)return!1;let i=!1;return e.setState(e=>{let a=e.session_status??{},o,s,c=()=>o??={...a},l=()=>s??={...e.session_status_observed_at},u=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(l()[t]=r,i=!0)};for(let o of n){if(r!==void 0&&(e.session_status_observed_at[o]??-1/0)>=r)continue;let n=ub(t[o]);if(n&&n.type!==`idle`){db(a[o],n)||(c()[o]=n,i=!0),u(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(c()[o]={type:`idle`},i=!0),u(o)}return!o&&!s?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{}}}),i}function gb(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function _b(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 ib(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 sb({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}=mb(l,h,n);if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=gb(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),hb(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??cb;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 vb({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:_b(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var yb=50,bb=e=>{let t=Object.keys(e);if(t.length<=yb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-yb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},xb=Oe()(je(ke((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:bb(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:h(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),Sb=new Set([`todowrite`,`todoread`]),Cb=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),wb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Tb=(e,t)=>{xb.getState().setSessionTodos(e,t)},Eb=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Db=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Ob=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},kb=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Ob(n);e&&t.push(e)}return t},Ab=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return kb(t);if(t&&typeof t==`object`)return kb(t.todos)}catch{}return[]},jb=e=>{if(!Sb.has(Eb(e)))return[];let t=Db(e);if(t&&Cb.has(t))return[];let n=e.state,r=kb(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=kb(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=kb(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?Ab(i):[]};function Mb(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=jb(r[e]);if(t.length>0)return t}}return[]}function Nb(e){if(!e.sessionID||e.isStale?.()||wb(e.store.getState().todo,e.sessionID))return!1;let t=Mb(e.transcript);return t.length===0||e.isStale?.()||wb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Pb(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(U(e.directory,e.sessionID));return t?Nb({sessionID:e.sessionID,store:e.store,transcript:t,persist:Tb,isStale:e.isStale}):!1}var Fb=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>PS,COMBINED_SEND_PRESENCE_GRACE_MS:()=>NS,SESSION_DELETE_UNDO_MS:()=>iS,abortBusySessionForMessageEdit:()=>JS,abortCurrentOperation:()=>zS,archiveSession:()=>mS,beginOptimisticSend:()=>wS,cancelScheduledSessionDeletes:()=>pS,classifySendFailure:()=>Ox,combinedSendConfirmationOptions:()=>FS,commitMessageEdit:()=>XS,createSession:()=>Qx,deleteSession:()=>dS,dirStoreForDirectory:()=>px,dismissOpenQuestionsForSession:()=>US,ensureSentUserMessagePresence:()=>RS,fetchMessagesForSession:()=>nC,fetchRecentSendConfirmationRecords:()=>jS,forkSession:()=>eC,getSendFailureKind:()=>Ex,getSessionLastAssistantModel:()=>yx,isQuestionRequestNotFoundError:()=>Yx,materializeConfirmedSendRecords:()=>MS,mirrorSessionIntoLiveStores:()=>xx,optimisticInsertUserMessage:()=>kS,optimisticSend:()=>OS,patchSessionMetadata:()=>$x,refetchSessionMessages:()=>QS,rejectQuestion:()=>HS,releaseUnconfirmedQueueSend:()=>ux,requestSessionSmartTitle:()=>_S,resolveForkMessageId:()=>Jb,respondToPermission:()=>BS,respondToQuestion:()=>VS,revertToMessage:()=>WS,rollbackOptimisticSend:()=>ES,scheduleSessionDeletes:()=>fS,setActionRefs:()=>cx,setOptimisticRefs:()=>lx,settleOptimisticSend:()=>DS,shareSession:()=>vS,shouldSuppressForkCopyEvent:()=>Xb,stageMessageEdit:()=>KS,trackForkCopySessionCreated:()=>Wb,unarchiveSession:()=>hS,unrevertSession:()=>$S,unshareSession:()=>yS,updateSessionTitle:()=>gS,waitForConnectionOrThrow:()=>Mx,waitForSessionIdleForMessageEdit:()=>YS}),Ib=2,Lb=150,Rb=new Set([`patch`,`step-start`,`step-finish`]),zb=3,Bb=150,Vb=null,Hb=new Map,Ub=3e4;function Wb(e,t){let n=t?.id;!Vb||Vb.runtimeKey!==i()||Vb.directory!==e||!n||t?.title!==Vb.expectedTargetTitle||n===Vb.sourceSessionID||Vb.targetSessionID||(Vb.targetSessionID=n)}function Gb(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function Kb(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function qb(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Jb(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!n||n.type===`idle`)return e;for(let e=t.length-1;e>=0;--e)if(t[e]?.role===`user`)return t[e].id}async function Yb(e,t){let n=jp(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 Xb(e,t,n){if(Vb&&Vb.runtimeKey===i()&&Vb.directory===e&&t&&t===Vb.targetSessionID)return!0;if(!t||!n)return!1;let r=`${i()}:${e}:${t}`,a=Hb.get(r);return a?a.expiresAt<=Date.now()?(Hb.delete(r),!1):n<=a.messageID:!1}var Zb=null,Qb=null,$b=()=>``,ex=new Map,tx=null,nx=null,rx=null,ix=e=>new Promise(t=>setTimeout(t,e));function ax(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 ox(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${ax(e.error)}`);throw n!==void 0&&(r.status=n),r}function sx(e,t){let n=ox(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function cx(e,t,n){if(Zb=e,Qb=t,$b=n,ex.size>0){let e=[...ex.values()];ex.clear(),queueMicrotask(()=>{for(let t of e)nC(t.sessionID,t.directory)})}}function lx(e,t,n){tx=e,nx=t,rx=n??null}function ux(e){let t=e.directory??null;nx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function dx(){if(!Zb)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Zb}function fx(){if(!Qb)throw Error(`Child stores not initialized`);let e=$b();if(!e)throw Error(`No current directory`);return Qb.ensureChild(e)}function px(e,t){if(!Qb)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Qb.ensureChild(e,t)}function mx(e,t){let n=t??Rx(e);return n?{store:px(n),directory:n}:{store:fx(),directory:Sx()}}function hx(e,t){let{store:n,directory:r}=mx(e,t??void 0),i=r??Sx()??``;return{repository:H()??mu(i,n),directory:i,store:n}}function gx(e,t){let{repository:n,directory:r,store:i}=hx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function _x(e,t){return Bu(gx(e,t).data)}function vx(e,t){return gx(e,t).data.messageOrder.length}function yx(e){try{let t=_x(e);for(let e=t.length-1;e>=0;--e){let n=t[e];if(n?.role===`assistant`&&typeof n.providerID==`string`&&n.providerID&&typeof n.modelID==`string`&&n.modelID)return{providerID:n.providerID,modelID:n.modelID}}return null}catch{return null}}function bx(e,t){let n=Qb;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]=sT(e,n[r]),t.setState({session:i}),!0}return!1}function xx(e,t){t&&bx(e,t)||bx(e)}function Sx(){return $b()||void 0}function Cx(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function wx(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 Tx=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 Ex(e){return e instanceof Tx?e.kind:null}function Dx(e){let t=wx(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 Ox(e,t){return t?Dx(e)||wx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var kx=2e3,Ax=5e3,jx=3e4;async function Mx(){let e=Tm();e&&wm(`send_stream_stale`);let t=Date.now()+(e?Ax:kx);for(;Date.now()<t;){if(G.getState().isConnected&&!Tm()||o()&&!Tm())return;let e=t-Date.now();if(e<=0)break;if(await G.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Tm())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw Cx()}function Nx(e){return new Promise((t,n)=>{let r=setTimeout(()=>{wm(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},jx);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function Px(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Fx(e){e&&Y.getState().upsertSession(e)}function Ix(e,t){let n=tp(t),r=[...e.getState().session],i=is.search(r,n.id,e=>e.id);if(i.found){let t=sT(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 Lx(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=Px(e);if(i)return Ix(t,i);try{return Ix(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 Rx(e){return zx(e)||$.getState().getDirectoryForSession(e)||Sx()}function zx(e){let t=Qb;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=H()?.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 Bx(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):dx()}function Vx(e){wr.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&&wr.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var Hx=()=>new Map(Array.from(kd(),([e,t])=>[e,t.title||e]));function Ux(e){return!(e.type!==`file`||Gp(e))}function Wx(e){return Ux(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function Gx(e){return e.some(Wx)}async function Kx(e){let t=[...e.parts];if(!Gx(t))return t;let n=s(),r=e.directory??``;try{await xu(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()||s()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=hx(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],Gx(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function qx(e){if(Gx(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await om(e.parts,{sessionTitles:Hx(),directory:e.directory}),n=wr.getState(),r=n.getDraft(e.key);return{payload:t,commit:await dm({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function Jx(e,t,n){let r=Qb;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 Yx(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 Xx(e,t){let n=Qb;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 Zx(e,t,n){let r=Jx(e,t,n);return r?B.getScopedSdkClient(r):Bx(t)}async function Qx(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??Sx()),a=i.directory??null;return a&&xd(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),Y.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function $x(e,t,n){let r=t??Rx(e),i=n(jp(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&xd(a.id,o),a}async function eS(e,t){let n;try{n=await B.getSession(e,t??Rx(e))}catch{return}if(!Fp(n))return;let r=Pp(n);if(r)try{await $x(r,t??Rx(r),t=>Rp(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 tS(e,t){if(!Qb)return[];let n=[],r=new Set,i=[];if(t){let e=Qb.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Qb.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 nS(e){if(Qb)for(let t of e){let e=Qb.children.get(t.directory);e&&e.setState({session:t.sessions})}}function rS(e){$.getState().setWorktreeMetadata(e,null)}var iS=1e4,aS=new Map,oS=0;function sS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function cS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),nS(e.listSnapshots),Fx(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function lS(e,t){let n=t??Rx(e);Y.getState().markSessionsPendingDeletion([e]);let r=tS(e,n),i=Px(e);Y.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function uS(e,t){try{if(await eS(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return tS(e,t),Y.getState().removeSessions([e]),rS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(tS(e,t),Y.getState().removeSessions([e]),rS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function dS(e,t){let n=lS(e);return await uS(e,n.directory)?!0:(cS(n),!1)}function fS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>lS(e)),i=`session-delete-${Date.now()}-${oS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=aS.get(i);if(!e)return;aS.delete(i);let t=[],n=[];for(let r of e.entries)await uS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),cS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return aS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function pS(e){if(!e)return!1;let t=aS.get(e);if(!t)return!1;clearTimeout(t.timer),aS.delete(e);for(let e of[...t.entries].reverse())cS(e);return!0}async function mS(e){let t=Rx(e),n=tS(e,t),r=Px(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await eS(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 Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),nS(n),Fx(r),!1}}async function hS(e){let t=Rx(e),n=Px(e),r=n?sS(n):null;if(r&&(Y.getState().upsertSession(r),t&&Qb)){let e=Qb.children.get(t);e&&Ix(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=sS(n);if(Y.getState().upsertSession(r),t&&Qb){let e=Qb.children.get(t);e?Ix(e,r):xx(r,t)}else xx(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&tS(e,t)),!1}}async function gS(e,t){let n=Rx(e),r=Px(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Gf(r):0,c=await B.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),xx(c,n)}async function _S(e){let t=Rx(e),n=Px(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await B.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),xx(s,t)}async function vS(e){let t=Rx(e),n=tp(sx(await dx().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),bx(n,t),n}async function yS(e){let t=Rx(e),n=tp(sx(await dx().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),bx(n,t),n}function bS(e){let t=Qb,n=e??$b();if(!t||!n)return{store:e?px(e):fx(),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 xS(){return{identity:r(),generation:s()}}function SS(e,t){return e.isCurrent()&&r()===t.identity&&s()===t.generation}function CS(e,t){if(!SS(e,t))throw Error(`Send target changed before transport dispatch`)}function wS(e){if(!tx||!nx)throw new Tx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??Sx()??null,n=bS(t),r=xS();CS(n,r),e.beforeOptimisticInsert?.(),CS(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),kS({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 Tx?e:new Tx(Ex(e)??Ox(e,!1),e)}}function TS(e){if(!SS(e.capture,e.transport)||!nx)return;nx({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 ES(e){TS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function DS(e){if(!tx||!nx)throw new Tx(`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 Mx(),CS(n,r),s=!0,await Nx(e.send(i)),!SS(n,r))throw new Tx(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Ex(c)??Ox(c,s),u=c instanceof Tx?c:new Tx(l,c,i);if(!SS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await jS(a,i,o):null;if(d&&SS(n,r)){MS(n.store,a,i,d,{directory:o??void 0}),rx?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||TS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function OS(e){await DS({ticket:e.ticket??wS({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 kS(e){if(!tx)return!1;let t=e.directory??Sx(),n=t?px(t):fx(),i=t??Sx()??``;if(IS(n,e.sessionId,e.messageID,i)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),c={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},l=_v(()=>gx(e.sessionId,t).data);tx({sessionID:e.sessionId,directory:t,message:c,parts:a});let u=_v(()=>gx(e.sessionId,t).data);try{l&&u&&vv({trigger:`user-send`,sessionID:e.sessionId,directory:i,transport:r(),generation:s(),before:l,after:u})}catch{}let d=n.getState();return n.setState({session_status:{...d.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...d.session_status_observed_at,[e.sessionId]:o}}),!0}function AS(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function jS(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??Ib,c=r?.retryDelayMs??Lb;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!AS(r?.isCurrent)||a>0&&(await ix(c),i?.signal.aborted||!AS(r?.isCurrent)))return null;try{let a=await dx().session.messages({sessionID:e,directory:n??void 0,limit:qm(),...i?{signal:i.signal}:{}});if(!AS(r?.isCurrent))return null;let o=(ox(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 MS(e,t,n,r,i){if(!r.length)return;let a=i?.directory??Rx(t)??$b(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:rp(e.info),parts:e.parts??[]})),skipPartTypes:Rb,merge:i?.gapFillOnly===!0?Ws:Ks({purpose:`recovery`})};gu(o,s)||mu(a,e).apply(o,s)}var NS=2e3,PS={attempts:12,retryDelayMs:500},FS={presenceGraceMs:NS,recovery:{...PS}};function IS(e,t,n,r){let i=r??Rx(t)??$b()??``,a=H()??mu(i,e),o=U(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function LS(e,t,n,r){let i=r?.directory??Rx(t)??$b()??``;if(IS(e,t,n,i))return Promise.resolve(!0);if(!AS(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=H()??mu(i,e),f=U(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!AS(r?.isCurrent)){l(!1);return}IS(e,t,n,i)&&l(!0)}),IS(e,t,n,i)&&l(!0)})}async function RS(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await LS(t,n,r,{timeoutMs:e.graceMs??FS.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!AS(a))return`cancelled`;let o=await jS(n,r,i,{...FS.recovery,isCurrent:a});return o?AS(a)?(MS(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:AS(a)?`missing`:`cancelled`}async function zS(e){let{store:t,directory:n}=mx(e),i=n?{state:`bound`,transportIdentity:r(),directory:n,sessionID:e}:null,a=i?$.getState().beginQueueAbortBlock(i):null;try{if(sx(await dx().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){i&&a&&$.getState().clearQueueAbortBlock(i,a),Xe(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>mB);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function BS(e,t,n){await Mx();let r=Jx(`permission`,e,t)||Rx(e)||Sx();if(sx(await Zx(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function VS(e,t,n){await Mx();let r=Jx(`question`,e,t)||Rx(e)||Sx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(sx(await Zx(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw Yx(n)&&Xx(e,t),n}}async function HS(e,t){await Mx();let n=Jx(`question`,e,t)||Rx(e)||Sx();try{if(sx(await Zx(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw Yx(n)&&Xx(e,t),n}}async function US(e){if(!e)return!1;let t=Qb;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Bp(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)Xx(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await HS(e,t)}catch(e){if(Yx(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function WS(e,t,n){let i=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return Yy(e,i??(()=>{try{return mx(e,i).directory}catch{return i}})(),async({isCurrent:n})=>{let{store:o,directory:c}=mx(e,i);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await dx().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=_x(e,c).find(e=>e.id===t),d=_x(e,c).find(e=>e.id===t)??u;if(!d||d.role!==`user`)throw Error(`The selected user message is unavailable`);let{repository:f,directory:p}=hx(e,c),m=[...f.getParts(U(p,e),t)],h=a===void 0?s?C({transportIdentity:r()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await Kx({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await om(m,{sessionTitles:Hx(),directory:c})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=o.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),w={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},w.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(o.setState(w),h){let t=wr.getState(),r=await dm({key:h,expectedRevision:t.getDraft(h)?.revision??`absent`,payload:g,runtime:t.captureDraftRuntime()});if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),r.status===`committed`&&r.current&&r.previous&&r.result?.record?.revision!==void 0&&await pm({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await B.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await pm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}let i=[...o.getState().session],a=i.findIndex(t=>t.id===e);return a>=0&&(i[a]=r,o.setState({session:i})),c&&eb.requestGitRefresh({directory:c}),g}catch(t){let r=[...o.getState().session],i=r.findIndex(t=>t.id===e);throw i>=0&&(r[i]={...r[i],revert:b}),n()?(o.setState({session:r}),h&&v&&_!==void 0&&await pm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await pm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function GS(e,t,n,i){let a=i??Rx(t)??$b(),o=U(a,t),c=_v(()=>gx(t,a).data),l=[...hu(t)];l.some(e=>e.directory===a&&e.sessionID===t)||l.push(o);let u=!1;for(let e of l)gu(e,{type:`remove-message`,messageID:n})!=null&&(u=!0);u||mu(a,e).apply(o,{type:`remove-message`,messageID:n});let d=_v(()=>gx(t,a).data);try{c&&d&&vv({trigger:`user-delete`,sessionID:t,directory:a,transport:r(),generation:s(),before:c,after:d})}catch{}}async function KS(e,t,n,i){let a=n?.info,o=n?.parts,s=i?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=mx(e,s).directory}else{c=mx(e,s).directory;let{data:n}=gx(e,c),r=Bu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=i?.draftKey??C({transportIdentity:r()},e),{commit:u}=await qx({key:l,parts:await Kx({directory:c,sessionID:e,messageID:t,parts:o??[]}),directory:c});if(u.status!==`committed`||!u.current)throw Error(`composer-restoration-commit-${u.status}`);let d=u.result?.record?.revision,f=u.previous;return d===void 0||!f?{rollback:async()=>({status:`skipped`})}:{rollback:async()=>({status:(await pm({key:l,restoredRevision:d,previous:f})).status})}}function qS(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 JS(e,t){let n=t?.directory,{store:r,directory:i}=mx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await dx().session.abort({sessionID:e,directory:i})}catch{}}async function YS(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=mx(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 XS(e,t,n){let i=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:c}=mx(e,i),l=_v(()=>gx(e,i).data);try{await JS(e,{directory:i}),await YS(e,{directory:i});let n=new Set((await ZS(e,i)).map(e=>e.id)),r=qS(t,_x(e,i),n,{preserveMessageId:a});for(let t of[...r].reverse())await B.deleteSessionMessage(e,t.id,c),GS(o,e,t.id,c)}finally{try{let t=_v(()=>gx(e,i).data);l&&t&&vv({trigger:`user-edit`,sessionID:e,directory:c,transport:r(),generation:s(),before:l,after:t})}catch{}}}async function ZS(e,t){let{directory:n}=mx(e,t);return(ox(await dx().session.messages({sessionID:e,directory:n,limit:Km()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>rp(e.info))}async function QS(e,t){let{store:n,directory:i}=mx(e,t),a=_v(()=>gx(e,t).data),o=(ox(await dx().session.messages({sessionID:e,directory:i,limit:Km()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=_v(()=>gx(e,t).data);a&&n&&vv({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let c=o.map(e=>({info:rp(e.info),parts:e.parts??[]})),l=U(i??$b(),e);gu(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Rb})||mu(i??$b(),n).apply(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Rb});try{let n=_v(()=>gx(e,t).data);a&&n&&vv({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return c.map(e=>e.info)}async function $S(e,t){return Yy(e,t??(()=>{try{return mx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=mx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=vx(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await dx().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await dx().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=sx(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<zb;r+=1){if(r>0&&(await ix(Bb),!n())||(await QS(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(vx(e,i)>o)return}if(vx(e,i)<=o){let n=i??$b(),a=H()??mu(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await QS(e,t)}})}async function eC(e,t,n,r){let a=i(),{store:o,directory:s}=mx(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await Lx(e,o,s);xd(e,s);let l=o.getState(),u=l.session_status[e],d=_x(e,s);u?.type,d.length;let f=Jb(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await QS(e),l=o.getState(),u=l.session_status[e],d=_x(e,s),f=Jb(void 0,d,u)),!n&&l.session_status[e]?.type!==`idle`&&!f)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:vx(e,s)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=gx(e,s),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(U(s,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!Gp(e)).map(e=>e.text||e.content||``).join(`
461
- `).trim();let v=g.filter(e=>e.type===`file`&&!Gp(e));Vb={operationId:t,runtimeKey:a,directory:s,sourceSessionID:e,expectedTargetTitle:Gb(c.title)},await Kb(t,`copying`);let y;try{if(y=await B.forkSession(e,f,s),y.id,i()!==a)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),Vb?.operationId===t&&(Vb=null),!1;await Kb(t,`opening`);try{y=await Yb(y,s)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw Vb?.operationId===t&&(Vb=null),e}try{let r=[...o.getState().session],a=is.search(r,y.id,e=>e.id);a.found||(r.splice(a.index,0,y),o.setState({session:r}));let c=U(s,y.id),l=H();l&&typeof l.destructiveReset==`function`?await l.destructiveReset(c):gu(c,{type:`reset`}),qb(t,y.id);let u=$.getState().currentSessionId,d=u===e||u===y.id;d&&$.getState().setCurrentSession(y.id,s),await Kb(t,`loading`),y.id;let f=H()??mu(s,o),p=U(s,y.id),m=f.getRequestState?.(p);(!(f.hasSession?.(p)??!1)||m?.status===`error`)&&await nC(y.id,s);let g=_x(y.id,s).at(-1)?.id;g&&Hb.set(`${i()}:${s}:${y.id}`,{messageID:g,expiresAt:Date.now()+Ub}),d&&h&&_&&wr.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&Vx(v)}finally{Vb?.operationId===t&&(Vb=null)}return y.id,!0}var tC=new Map;async function nC(e,t){let n=t??Sx();if(!n)return;let r=i(),a=Gm(),o=`${r}:${n}:${e}:${a}`;if(!Zb||!Qb){ex.set(o,{sessionID:e,directory:n});return}let s=tC.get(o);if(s)return s;let c=rC(e,n,r,a).finally(()=>{tC.get(o)===c&&tC.delete(o)});return tC.set(o,c),c}async function rC(e,t,n,r){dx();let i=px(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=H()??mu(t,i),l=U(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(Am(t,e)){Pb({directory:t,sessionID:e,store:i,transcript:u});return}if(H()){try{await vu(t,e)}catch{return}if(y())return;Pb({directory:t,sessionID:e,store:i,isStale:y}),await vb({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}Pb({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await Wy({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:Rb}),b=n.records.length,jm(t,e)}catch{return}y()||(Pb({directory:t,sessionID:e,store:i,isStale:y}),await vb({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var iC=new Map,aC=e=>{iC.set(e,(iC.get(e)??0)+1)},oC=e=>(iC.get(e)??0)>0,sC=e=>{let t=iC.get(e)??0;return t<=0?!1:(t===1?iC.delete(e):iC.set(e,t-1),!0)},cC=18e4,lC=400,uC=300,dC=15,fC=`FINAL_REVIEW_STATUS: no_remaining_findings`,pC=fC.toLowerCase(),mC=new Set,hC=new Set,gC=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},_C=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},vC=e=>{let t=e.role;return typeof t==`string`?t:``},yC=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},bC=(e,t)=>Md(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`}),xC=(e,t,n,r=0,i)=>{let a=jd(e,t),o=new Set;for(let e of a)bC(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(vC(s)!==`assistant`||!gC(s)||_C(s)<r-1e3)continue;let c=yC(s);if(!kC(s,i)||c&&o.has(c))continue;let l=kp(Md(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},SC=(e,t)=>Nd(e,t)?.type===`idle`,CC=e=>e===i(),wC=e=>{zp.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},TC=e=>{if(e&&!CC(e))throw Error(`Auto-review stopped because the runtime changed.`)},EC=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),DC=e=>e.trim().split(`
462
- `).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===pC,OC=e=>{let t=e.trimEnd().split(`
463
- `);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===pC&&t.pop(),t.join(`
464
- `).trim()},kC=(e,t)=>!t||yC(e)===t,AC=(e,t)=>[e.runtimeKey,e.originalSessionID,e.phase,e.expectedAssistantParentID??``,t].join(`:`),jC=(e,t)=>{let n=AC(e,t);return hC.has(n)?null:(hC.add(n),n)},MC=e=>{hC.delete(e)},NC=()=>[{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${fC}\nIf you found issues that require changes, do not include that final status line.`}],PC=async e=>{for(;;){let t=zp.getState().runsByOriginalSessionID[e];if(!t||t.status!==`running`)return;if(!CC(t.runtimeKey)){wC(t);return}let n=t.phase===`waiting_for_reviewer`?t.reviewSessionID:t.originalSessionID;if(!SC(n,t.directory)){await new Promise(e=>setTimeout(e,uC));continue}let r=xC(n,t.directory,t.lastForwardedMessageID,t.waitAfterCreatedAt,t.expectedAssistantParentID);if(!r){await new Promise(e=>setTimeout(e,uC));continue}if(t.phase===`waiting_for_reviewer`){let e=jC(t,r.id);if(!e){await new Promise(e=>setTimeout(e,uC));continue}if(!CC(t.runtimeKey)){MC(e),wC(t);return}try{let e=Date.now(),n=DC(r.text),i=n?OC(r.text):r.text,a=await KC(t.reviewSessionID,t.directory,i,t.runtimeKey);if(n){zp.getState().completeRun(t.originalSessionID);return}zp.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_implementer`,lastForwardedMessageID:r.id,expectedAssistantParentID:a,waitAfterCreatedAt:e}))}finally{MC(e)}}else{if(t.iteration>=t.maxIterations){zp.getState().stopRun(t.originalSessionID);return}let e=jC(t,r.id);if(!e){await new Promise(e=>setTimeout(e,uC));continue}if(!CC(t.runtimeKey)){MC(e),wC(t);return}try{let e=Date.now(),n=await qC(t.originalSessionID,t.directory,r.text,!0,t.runtimeKey);zp.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_reviewer`,iteration:t.iteration+1,lastForwardedMessageID:r.id,expectedAssistantParentID:n,waitAfterCreatedAt:e}))}finally{MC(e)}}}},FC=e=>{zp.getState().upsertRun(e),IC(e.originalSessionID)},IC=e=>{let t=zp.getState().runsByOriginalSessionID[e];!t||t.status!==`running`||!CC(t.runtimeKey)||mC.has(e)||(mC.add(e),PC(t.originalSessionID).catch(e=>{console.error(`[review-flow] auto-review loop failed`,e),zp.getState().updateRun(t.originalSessionID,t=>({...t,status:EC(e)?`stopped`:`error`,error:e instanceof Error?e.message:String(e)}))}).finally(()=>{mC.delete(e)}))},LC=async(e,t,n)=>{let r=Date.now()+cC;for(;Date.now()<r;){let r=jd(e,t).filter(e=>vC(e)===`assistant`).filter(e=>_C(e)>=n-1e3).filter(gC).sort((e,t)=>_C(t)-_C(e));for(let e of r){let n=kp(Md(e.id,t)).trim();if(n)return n}await new Promise(e=>setTimeout(e,lC))}throw Error(`Timed out waiting for handoff response`)},RC=e=>{let t=Uo.getState(),n=G.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}},zC=async(e,t,n,r,i,a)=>{TC(a);let o=r??RC(e);if(!o)throw Error(`Select a model before sending review flow messages`);let s=Uo.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)),aC(e);let c=null;if(await OS({sessionId:e,content:n,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,onMessageID:e=>{c=e},beforeOptimisticInsert:()=>TC(a),onOptimisticInsert:()=>BC(e),send:r=>(TC(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},BC=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:chat-force-scroll-bottom`,{detail:{sessionId:e}}))},VC=(e,t)=>{p.getState().openContextPanelTab(e,{mode:`chat`,dedupeKey:`session:${t.id}`,label:t.title??null,sessionTitleFallback:t.title??null})},HC=async(e,t)=>{try{return await B.getSession(e,t)}catch{return null}},UC=e=>`Review: ${e.title?.trim()||e.id}`,WC=async(e,t,n)=>{TC(n);let r=await B.getSession(e,t);TC(n);let i=Np(r);if(i){let r=await HC(i,t);if(TC(n),r&&Fp(r))return r;await $x(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})}TC(n);let a=await B.createSession({title:UC(r),metadata:Lp({},e)},t);TC(n),xd(a.id,t);try{TC(n),await $x(e,t,e=>Ip(e,a.id))}catch(e){throw TC(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 Y.getState().upsertSession(a),a},GC=async e=>{await Mx();let t=e.autoReview?i():void 0,n;if(e.generateHandoff??!0){let n=await Tp(`session.reviewHandoff.visible`),r=await Tp(`session.reviewHandoff.instructions`),a=Date.now();await zC(e.originalSessionID,e.directory,n,null,[{text:r,synthetic:!0}],t);let o=async()=>{let n=await LC(e.originalSessionID,e.directory,a);TC(t);let r=await Tp(`session.reviewSession.visible`,{handoff:n}),o=await WC(e.originalSessionID,e.directory,t),s=t??i(),c=Date.now(),l=await zC(o.id,e.directory,r,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?NC():void 0,e.autoReview?s:void 0);e.autoReview&&FC({originalSessionID:e.originalSessionID,reviewSessionID:o.id,directory:e.directory,runtimeKey:s,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:dC,expectedAssistantParentID:l,waitAfterCreatedAt:c}),e.autoReview||VC(e.directory,o)};if(e.returnAfterHandoffRequest){o().catch(e=>{console.error(`[review-flow] failed to finish background review flow`,e)});return}await o();return}n=await Tp(`session.reviewSessionWithoutHandoff.visible`);let r=await WC(e.originalSessionID,e.directory,t),a=t??i(),o=Date.now(),s=await zC(r.id,e.directory,n,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?NC():void 0,e.autoReview?a:void 0);e.autoReview&&FC({originalSessionID:e.originalSessionID,reviewSessionID:r.id,directory:e.directory,runtimeKey:a,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:dC,expectedAssistantParentID:s,waitAfterCreatedAt:o}),e.autoReview||VC(e.directory,r)},KC=async(e,t,n,r)=>{TC(r);let i=Pp(await B.getSession(e,t));if(!i)throw Error(`Original session is missing`);let a=await Tp(`session.reviewFeedbackToImplementer.visible`,{review_feedback:n});return TC(r),zC(i,t,a,void 0,void 0,r)},qC=async(e,t,n,r=!1,i)=>{TC(i);let a=Np(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 TC(i),await $x(e,t,e=>Rp(e,a)),n}let s=await Tp(`session.implementationResponseToReviewer.visible`,{implementation_response:n});TC(i);let c=await zC(a,t,s,void 0,r?NC():void 0,i);return r||VC(t,o),c},JC=e=>Fp(e)?`review-to-original`:Np(e)?`original-to-review`:null,YC=[0,250,500,1e3,2e3,2e3,2e3,2e3],XC=5e3,ZC=(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??XC,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??YC,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))}),QC=()=>ZC.waitUntilReady(i()),$C=e=>{ZC.reset(e)},ew=100,tw=1500,nw=async e=>{if(!e.ok)throw Error(`session index request failed (${e.status})`)},rw=e=>e.available!==!0||!Array.isArray(e.directories)?null:{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},iw,aw=async(e,t)=>{if(typeof window>`u`)return null;let n=e.trim();if(!n)return null;try{let e=await F(`/api/openchamber/session-index/session/${encodeURIComponent(n)}`,{signal:t?.signal});if(e.status===404||e.status===501)return null;await nw(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}},ow=async e=>{if(typeof window>`u`)return null;if(iw)return iw;let t=(async()=>{let t=await F(`/api/openchamber/session-index`,{signal:e?.signal});return t.status===501?null:(await nw(t),rw(await t.json()))})().finally(()=>{iw===t&&(iw=void 0)});return iw=t,t},sw=async e=>{if(typeof window>`u`)return null;let t=await F(`/api/openchamber/session-index/sync`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:e})});return t.status===501?null:(await nw(t),t.json())},cw=(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:tw,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)},ew)},l=()=>s(`aborted`),u=i===null?void 0:setTimeout(()=>s(`timeout`),i),d=Ht(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})}),lw=async e=>{if(typeof window>`u`)return;let t=await F(`/api/openchamber/session-index/directory`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});t.status!==501&&await nw(t)},uw=async e=>{if(typeof window>`u`||e.length===0)return;let t=await F(`/api/openchamber/session-index/snapshot`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:e})});t.status!==501&&await nw(t)},dw=1,fw=`oc.sessionIndexStartupCache`,pw=1e6,mw=e=>!!e&&typeof e==`object`&&!Array.isArray(e),hw=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),gw=e=>!(!mw(e)||typeof e.active!=`boolean`||typeof e.completed!=`number`||!Number.isFinite(e.completed)||typeof e.total!=`number`||!Number.isFinite(e.total)||!hw(e.pendingDirectories)||!hw(e.completedDirectories)||!hw(e.failedDirectories)||e.enriching!==void 0&&typeof e.enriching!=`boolean`),_w=e=>mw(e)&&typeof e.id==`string`&&e.id.length>0&&typeof e.title==`string`&&typeof e.directory==`string`&&e.directory.length>0&&mw(e.time)&&typeof e.time.created==`number`&&Number.isFinite(e.time.created)&&typeof e.time.updated==`number`&&Number.isFinite(e.time.updated),vw=e=>!mw(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(_w),yw=e=>!mw(e)||typeof e.revision!=`number`||!Number.isFinite(e.revision)||!gw(e.sync)||!Array.isArray(e.directories)?!1:e.directories.every(vw),bw=e=>mw(e)&&e.version===dw&&mw(e.entries),xw=e=>{if(!e)return null;try{let t=JSON.parse(e);return bw(t)?{version:dw,entries:t.entries}:null}catch{return null}},Sw=(e,t)=>{try{let n=JSON.stringify(t);if(n.length>pw)return;e.setItem(fw,n)}catch{}},Cw=(e,t)=>{if(!e)return null;let n;try{n=t.getItem(fw)}catch{return null}let r=xw(n);if(!r)return null;let i=r.entries[e];return yw(i)?i:null},ww=(e,t,n)=>{if(!e||!yw(t))return;let r=null;try{r=n.getItem(fw)}catch{return}let i={...xw(r)?.entries??{},[e]:t},a=Object.keys(i).slice(-8);Sw(n,{version:dw,entries:Object.fromEntries(a.map(e=>[e,i[e]]))})},Tw=(e=r())=>N.sessionIndex.snapshot(e),Ew=(e=r(),t=i(),n=u(),a=ow)=>{let o=t,s=n,c=a;return{queryKey:Tw(e),queryFn:async({signal:e})=>{let t=await c({signal:e});return t&&ww(o,t,s),t},staleTime:0,gcTime:1/0,initialData:()=>Cw(o,s)??void 0,initialDataUpdatedAt:0}},Dw=(e=L,t=r(),n=i(),a=u())=>{let o=Ew(t,n,a);return e.getQueryCache().build(e,o),e.getQueryData(o.queryKey)??null},Ow=(e,t)=>{if(!yw(e))return;let n=t?.client??L,a=t?.transport??r(),o=t?.runtimeKey??i(),s=t?.storage??u();n.setQueryData(Tw(a),e),t?.persist!==!1&&ww(o,e,s)},kw=(e=L,t=r(),n=i(),a=u(),o=ow)=>{let s={...Ew(t,n,a,o),staleTime:0};return e.getQueryCache().build(e,s),e.fetchQuery(s)},Aw=500,jw=20,Mw=6e3,Nw=7,Pw=3,Fw=1,Iw=2,Lw=750,Rw=500,zw=1e4,Bw=2,Vw=(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})}),Hw=null,q=0,Uw=new Map,Ww=new Map,Gw=new Map,Kw=[],qw=new Set,Jw=0,Yw=Pw,Xw=0,Zw=null,Qw,$w=new Map,eT=()=>({loadGeneration:q,runtimeGeneration:s(),transportIdentity:r()}),J=e=>e.loadGeneration===q&&e.runtimeGeneration===s()&&e.transportIdentity===r(),tT=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`)},nT=e=>{Xw=0,tT(e)&&(Yw=Yw>Pw?Pw:Fw)},rT=()=>{Xw+=1,!(Xw<Iw||Yw>=Nw)&&(Yw+=1,Xw=0)},iT=()=>{for(;Jw<Yw&&Kw.length>0;){let e=Kw.shift();if(!e)return;Jw+=1,e()}},aT=e=>new Promise((t,n)=>{Kw.push(()=>{e().then(t,n).finally(()=>{--Jw,iT()})}),iT()}),oT=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},sT=(e,t)=>{if(!t)return e;let n=e,r=t,i=_(n.directory??null),a=_(n.project?.worktree??null),o=_(r.directory??null),s=_(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=Gf(t);if(f>Gf(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},cT=(e,t)=>{let n=sT(e,t);return n.share===t.share?n:{...n,share:t.share}},lT=e=>{let t=new Map;for(let n of e){let e=oT(n);if(!e)continue;let r=t.get(e);if(r){r.push(n);continue}t.set(e,[n])}return t},uT=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),oT(e)??``].join(`:`),dT=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),oT(e)??``].join(`:`)},fT=(e,t)=>e.time?.updated!==t.time?.updated&&dT(e)===dT(t),pT=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(uT(e[n])!==uT(t[n]))return!1;return!0},mT=(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))},hT=e=>[...e].sort((e,t)=>{let n=Gf(t)-Gf(e);return n===0?t.id.localeCompare(e.id):n}),gT=e=>{let t=new Set;for(let n of e){let e=_(n);e&&t.add(e)}return t},_T=e=>{let t=gT(e);for(let e of t)$w.set(e,($w.get(e)??0)+1);return t},vT=e=>{let t=new Set;for(let n of e){let e=$w.get(n)??0;if(e<=1){$w.delete(n),t.add(n);continue}$w.set(n,e-1)}return t},yT=(e,t)=>{let n=e.loadingDirectories,r=e.refreshingDirectories;for(let i of t)Uw.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}},bT=e=>{let t=e[e.length-1]?.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:null},xT=(e,t)=>{let n=bT(e);return{cursor:n,hasMore:e.length===jw&&n!==null&&(t==null||n<t),loadingMore:!1}},ST=(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,sT(e,r.get(e.id)));let a=e.filter(e=>{if(i.has(e.id))return!1;let t=oT(e);return!t||!n.has(t)});return hT([...i.values(),...a])},CT=(e,t)=>e.cursor===null?!e.hasMore&&(t.hasMore||t.cursor!==null):t.cursor===null||e.cursor<t.cursor,wT=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;if(e.length===0)return null;let n=hT(e),r=n[n.length-1];return r?Gf(r):null},TT=(e,t)=>Gf(e)<=t,ET=(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,sT(t,a.get(t.id)));let s=e.filter(e=>{if(o.has(e.id))return!1;let t=oT(e);if(!t||!n.has(t))return!0;if(!i.has(t))return!1;let a=r.get(t);return a!=null&&TT(e,a)});return hT([...o.values(),...s])},DT=(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,mT(n.sessions,e.pendingDeletionIds));let a=[...i.values()].flat(),o=new Map;if(n)for(let t of e.activeSessions){let e=oT(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)>jw;n.hasMore&&a&&r&&CT(r,t)&&c.add(n.directory),s.set(n.directory,wT(i.get(n.directory)??[],n.cursor))}let l=n?ET(e.activeSessions,i,r,s,c):hT(AT(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=>oT(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 $w.keys())h.has(e)||Uw.has(e)||(p.delete(e),m.delete(e));return{activeSessions:l,sessionsByDirectory:lT(l),reviewTransferBySessionId:MT(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}},OT=(e,t)=>{let n=mT(t.activeSessions,e.pendingDeletionIds),r=mT(t.fallbackActive??[],e.pendingDeletionIds),i=t.mergeOnly?hT(AT(e.activeSessions,n)):ST(e.activeSessions,n,t.directories);i=AT(i,r),pT(e.activeSessions,i)&&(i=e.activeSessions);let a=t.archivedSessions===void 0?void 0:mT(t.archivedSessions,e.pendingDeletionIds),o=a===void 0?e.archivedSessions:ST(e.archivedSessions,a,t.directories);pT(e.archivedSessions,o)&&(o=e.archivedSessions);let s=i===e.activeSessions?e.sessionsByDirectory:lT(i),c=e.loadedDirectories,l=!1;for(let n of t.directories)c.has(n)||(l||=(c=new Set(e.loadedDirectories),!0),c.add(n));let u=e.loadingDirectories,d=!1;for(let n of t.directories)u.has(n)&&(d||=(u=new Set(e.loadingDirectories),!0),u.delete(n));let f=t.markReady?`ready`:e.status,p=t.markReady?!0:e.hasLoaded;return i===e.activeSessions&&o===e.archivedSessions&&s===e.sessionsByDirectory&&c===e.loadedDirectories&&u===e.loadingDirectories&&e.status===f&&e.hasLoaded===p?e:{activeSessions:i,archivedSessions:o,sessionsByDirectory:s,reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:MT(i),loadedDirectories:c,loadingDirectories:u,hasLoaded:p,status:f}},kT=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[t,...e];let r=e[n],i=sT(t,r);if(fT(r,i)||uT(r)===uT(i))return e;let a=[...e];return a[n]=i,a},AT=(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,sT(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},jT=(e,t,n,r)=>{let i=mT(t,e.pendingDeletionIds),a=mT(n,e.pendingDeletionIds),o=pT(e.activeSessions,i)?e.activeSessions:i,s=pT(e.archivedSessions,a)?e.archivedSessions:a,c=o===e.activeSessions?e.sessionsByDirectory:lT(o),l=o===e.activeSessions?e.reviewTransferBySessionId:MT(o);return o===e.activeSessions&&s===e.archivedSessions&&c===e.sessionsByDirectory&&l===e.reviewTransferBySessionId&&e.hasLoaded&&e.status===r?e:{activeSessions:o,archivedSessions:s,sessionsByDirectory:c,reviewTransferBySessionId:l,hasLoaded:!0,status:r}},MT=e=>{let t=new Map,n=new Set(e.map(e=>e.id));for(let r of e){let e=JC(r);if(!e)continue;let i=e===`review-to-original`?Pp(r):Np(r);!i||!n.has(i)||t.set(r.id,e)}return t},Y=Oe((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=>jT(e,t,n,r))},resetForRuntimeSwitch:()=>{q+=1,$C(),Hw=null,Uw.clear(),Ww.clear(),Gw.clear(),qw.forEach(e=>e.abort()),qw.clear(),Yw=Pw,Xw=0,Zw?.abort(),Zw=null,Qw=void 0,$w.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(Qw)return Qw;if(t().hasHydratedSessionIndex)return;let n=eT(),a=r(),o=i(),s=Dw(void 0,a,o);s&&J(n)&&e(e=>({...DT(e,s,!1),hasCachedSessionIndex:!0}));let c=(async()=>{try{let t;try{t=await kw(void 0,a,o)}catch(e){if(!J(n))return;if(s){console.warn(`[GlobalSessions] Failed to refresh runtime session index; keeping stale seed:`,e);return}throw e}if(!J(n))return;if(!t){e(e=>e.hasHydratedSessionIndex?e:{hasHydratedSessionIndex:!0});return}e(e=>({...DT(e,t,!1),hasCachedSessionIndex:t.directories.length>0,hasHydratedSessionIndex:!0}))}catch(e){console.warn(`[GlobalSessions] Failed to hydrate runtime session index:`,e)}})();return Qw=c.finally(()=>{Qw===c&&(Qw=void 0)}),Qw},startSessionIndexStartup:async(n,r)=>{let i=eT();if(e({startupSyncProgress:{active:!0,phase:`restoring`,completed:0,total:0}}),await t().hydrateSessionIndex(),!J(i))return{activeSessions:[],archivedSessions:[]};t().hasHydratedSessionIndex||e({hasHydratedSessionIndex:!0});let a=gT([...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?gT(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=eT();try{if(f=await sw([...l]),!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};f&&Ow(f)}catch(e){if(!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}let m=()=>{if(u.size===0)return;let e=[...u],n=()=>{J(i)&&t().syncSessionsForDirectories(e,d.activeSessions)};typeof globalThis.setTimeout==`function`?globalThis.setTimeout(n,0):Promise.resolve().then(n)};if(!f){let e=RT(l,d.activeSessions,{retryFailed:!o});if(o)e.then(()=>{m()});else{if(await e,!J(i))return{activeSessions:[],archivedSessions:[]};m()}return d}Zw?.abort();let h=new AbortController;Zw=h;let g=_T(l),_=()=>{if(!J(i))return;let t=vT(g);t.size!==0&&e(e=>yT(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=Rw;for(;!h.signal.aborted&&J(i);){e(e=>({...DT(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=eT(),a=await cw(t.revision,h.signal,{safetyTimeoutMs:t.sync.active?void 0:null});if(!J(i)||!J(r)||a===`aborted`)break;let o;for(;!h.signal.aborted&&J(i);){let e=eT();try{o=await kw()}catch{if(h.signal.aborted||!J(i)){o=void 0;break}if(await Vw(n,h.signal),h.signal.aborted||!J(i)){o=void 0;break}n=Math.min(n*Bw,zw);continue}if(!J(e)){o=void 0;break}if(!o)break;n=Rw;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(),Zw===h&&(Zw=null),v&&J(i)&&e(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:e.startupSyncProgress.completed,total:e.startupSyncProgress.total}}))}),v){if(await x,!J(i))return{activeSessions:[],archivedSessions:[]};m()}else m();return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},loadSessions:async n=>{if(Hw)return Hw;e(e=>e.status===`loading`?e:{status:`loading`});let r=q,i=Promise.resolve().then(async()=>{let a=t();try{if(await QC(),r!==q)return{activeSessions:[],archivedSessions:[]};let t=B.getSdkClient(),[i,o]=await Promise.allSettled([pp(t,{archived:!1,pageSize:Aw}),pp(t,{archived:!0,pageSize:Aw})]),s=AT(a.activeSessions,n),c=i.status===`fulfilled`?i.value:s,l=o.status===`fulfilled`?o.value:a.archivedSessions;return i.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load active sessions, preserving existing snapshot with fallback merge:`,i.reason),o.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load archived sessions, preserving current snapshot:`,o.reason),r===q?(e(e=>{let t=i.status===`fulfilled`&&o.status===`fulfilled`?`ready`:`error`,n=jT(e,c,l,t);if(i.status!==`fulfilled`||o.status!==`fulfilled`)return n===e?e:n;let r=new Set([...i.value.map(e=>e.id),...o.value.map(e=>e.id)]);return{...n,hasLoadedFullCatalog:!0,fullCatalogSessionIds:r,fullCatalogGeneration:e.fullCatalogGeneration+1}}),{activeSessions:c,archivedSessions:l}):{activeSessions:[],archivedSessions:[]}}catch(t){if(r!==q)return{activeSessions:[],archivedSessions:[]};let i=AT(a.activeSessions,n),o=a.archivedSessions;return console.warn(`[GlobalSessions] Failed to load sessions, using fallback snapshot:`,t),e(e=>jT(e,i,o,`error`)),{activeSessions:i,archivedSessions:o}}finally{Hw===i&&(Hw=null)}});return Hw=i,i},refreshSessionsForDirectories:async(n,r,i)=>{let a=gT(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=q;e(e=>{let t=AT(e.activeSessions,mT(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=>oT(e)===t)||n.add(t);return{...t===e.activeSessions?{}:{activeSessions:t,sessionsByDirectory:lT(t),reviewTransferBySessionId:MT(t)},loadingDirectories:n,refreshingDirectories:i,status:e.status===`idle`?`loading`:e.status}});let s=[...a].map(n=>{let r=Uw.get(n);if(r)return r;let a=aT(async()=>{let r=new AbortController;qw.add(r);try{if(o!==q||(await QC(),o!==q))return!1;let a=await pp(B.getSdkClient(),{directory:n,archived:!1,roots:!0,...i?.incrementalStart===void 0?{}:{start:i.incrementalStart},pageSize:jw,maxItems:jw,timeoutMs:Mw,retryAttempts:2,signal:r.signal});if(o!==q)return!1;if(e(e=>{let t=OT(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,xT(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)??xT(a);try{await lw({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 rT(),!0}catch(t){return nT(t),o===q&&(console.warn(`[GlobalSessions] Failed to refresh active sessions for ${n}:`,t),e(e=>{let t=new Set(e.loadingDirectories),r=new Set(e.refreshingDirectories);return t.delete(n),r.delete(n),{loadingDirectories:t,refreshingDirectories:r}})),!1}finally{qw.delete(r)}});return Uw.set(n,a),a.finally(()=>{Uw.get(n)===a&&Uw.delete(n)}),a}),c=await Promise.all(s);return o===q?([...a].forEach((e,t)=>{i?.onDirectoryResult?.(e,c[t]??!1)}),e(e=>({status:e.status===`loading`?c.some(Boolean)?`ready`:`error`:e.status,hasLoaded:!0})),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}):{activeSessions:[],archivedSessions:[]}},syncSessionsForDirectories:async(n,r)=>{let i=eT(),a=gT(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=null,s=eT();try{if(o=await sw([...a]),!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};o&&Ow(o)}catch(e){if(!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}if(!o)return t().refreshSessionsForDirectories(a,r);let c=new AbortController;qw.add(c);let l=_T(a),u=()=>{if(!J(i))return;let t=vT(l);t.size!==0&&e(e=>yT(e,t))};try{let t=o;for(;!c.signal.aborted&&J(i)&&(e(e=>DT(e,t,!0)),t.sync.active);){let e=eT(),n=await cw(t.revision,c.signal);if(!J(i)||!J(e)||n===`aborted`)break;let r=eT(),a;try{a=await kw()}catch{break}if(!J(i)||!J(r)||!a)break;t=a}}catch(e){!c.signal.aborted&&J(i)&&console.warn(`[GlobalSessions] Session index sync failed:`,e)}finally{u(),qw.delete(c)}return J(i)?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},loadMoreSessionsForDirectory:async n=>{let r=_(n);if(!r){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=Gw.get(r);if(i)return await i,{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions};let a=t().activePaginationByDirectory.get(r);if(!a?.hasMore||a.cursor===null){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=q;e(e=>{let t=new Map(e.activePaginationByDirectory);return t.set(r,{...a,loadingMore:!0}),{activePaginationByDirectory:t}});let s=aT(async()=>{let t=new AbortController;qw.add(t);try{if(await QC(),o!==q)return!1;let n=await pp(B.getSdkClient(),{directory:r,archived:!1,roots:!0,cursor:a.cursor??void 0,pageSize:jw,maxItems:jw,timeoutMs:Mw,retryAttempts:2,signal:t.signal});return o===q&&(e(e=>{let t=e.activeSessions.filter(e=>oT(e)===r),i=new Map(t.map(e=>[e.id,e]));mT(n,e.pendingDeletionIds).forEach(e=>{i.set(e.id,sT(e,i.get(e.id)))});let o=hT([...i.values()]),s=ST(e.activeSessions,o,new Set([r])),c=new Map(e.activePaginationByDirectory);return c.set(r,xT(n,a.cursor)),{activeSessions:pT(e.activeSessions,s)?e.activeSessions:s,sessionsByDirectory:lT(s),reviewTransferBySessionId:MT(s),activePaginationByDirectory:c}}),rT(),!0)}catch(t){return nT(t),o===q&&(console.warn(`[GlobalSessions] Failed to load more sessions for ${r}:`,t),e(e=>{let t=e.activePaginationByDirectory.get(r);if(!t)return e;let n=new Map(e.activePaginationByDirectory);return n.set(r,{...t,loadingMore:!1}),{activePaginationByDirectory:n}})),!1}finally{qw.delete(t)}});Gw.set(r,s);try{await s}finally{Gw.get(r)===s&&Gw.delete(r)}return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},refreshArchivedSessionsForDirectories:async n=>{let r=gT(n);if(r.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=q;e(e=>{let t=new Set(e.archivedLoadingDirectories);return r.forEach(e=>t.add(e)),{archivedLoadingDirectories:t}});let a=[...r].map(t=>{let n=Ww.get(t);if(n)return n;let r=aT(async()=>{let n=new AbortController;qw.add(n);try{if(i!==q||(await QC(),i!==q))return!1;let r=await pp(B.getSdkClient(),{directory:t,archived:!0,roots:!0,pageSize:jw,maxItems:jw,timeoutMs:Mw,retryAttempts:2,signal:n.signal});return i===q&&(e(e=>{let n=ST(e.archivedSessions,mT(r,e.pendingDeletionIds),new Set([t])),i=new Set(e.archivedLoadedDirectories),a=new Set(e.archivedLoadingDirectories);return i.add(t),a.delete(t),{archivedSessions:pT(e.archivedSessions,n)?e.archivedSessions:n,archivedLoadedDirectories:i,archivedLoadingDirectories:a}}),!0)}catch(n){return i===q&&(console.warn(`[GlobalSessions] Failed to refresh archived sessions for ${t}:`,n),e(e=>{let n=new Set(e.archivedLoadingDirectories);return n.delete(t),{archivedLoadingDirectories:n}})),!1}finally{qw.delete(n)}});return Ww.set(t,r),r.finally(()=>{Ww.get(t)===r&&Ww.delete(t)}),r});return await Promise.all(a),i===q?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},upsertSession:n=>{if(!cp(n)){t().removeSessions([n.id]);return}e(e=>{if(e.pendingDeletionIds.has(n.id))return e;let t=sT(n,e.activeSessions.find(e=>e.id===n.id)??e.archivedSessions.find(e=>e.id===n.id)??null),r=!!t.time?.archived,i=r?e.activeSessions.filter(e=>e.id!==n.id):kT(e.activeSessions,t),a=r?kT(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:lT(i),reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:MT(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:lT(t),reviewTransferBySessionId:MT(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:lT(i),reviewTransferBySessionId:MT(i)}})}})),NT=async e=>{let t=Y.getState();return t.hasLoadedFullCatalog&&t.status!==`error`?{activeSessions:t.activeSessions,archivedSessions:t.archivedSessions}:t.loadSessions(e)},PT=async()=>{await Y.getState().hydrateSessionIndex()},FT=async(e,t)=>Y.getState().startSessionIndexStartup(e,t),IT=async(e,t)=>Y.getState().refreshSessionsForDirectories(e,t),LT=async(e,t)=>Y.getState().syncSessionsForDirectories(e,t),RT=async(e,t,n)=>{let r=gT(e),i=q;if(r.size===0){Y.setState({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let e=Y.getState();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}Y.setState({startupSyncProgress:{active:!0,phase:`syncing`,completed:0,total:r.size}});let a=new Set,o=new Set(r);try{do await Promise.all([...o].map(async e=>{let r=!1;await Y.getState().refreshSessionsForDirectories([e],t,{persist:!1,incrementalStart:n?.incrementalStartByDirectory?.get(e),onDirectoryResult:(e,t)=>{r=t}}),i===q&&r&&!a.has(e)&&(a.add(e),Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,completed:a.size}})))})),o=new Set([...r].filter(e=>!a.has(e))),o.size>0&&n?.retryFailed===!0&&i===q&&await new Promise(e=>setTimeout(e,Lw));while(o.size>0&&n?.retryFailed===!0&&i===q);if(i===q){Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,phase:`committing`}}));let e=Y.getState(),t=[...a].flatMap(t=>{let r=e.sessionsByDirectory.get(t)??[],i=e.activePaginationByDirectory.get(t);return[{directory:t,sessions:r,cursor:i?.cursor??null,hasMore:i?.hasMore??!1,fullSync:!n?.incrementalStartByDirectory?.has(t)}]});try{await uw(t);let e=Date.now();Y.setState(n=>{let r=new Map(n.sessionIndexSyncByDirectory);for(let n of t){let t=r.get(n.directory);r.set(n.directory,{lastSyncedAt:e,lastFullSyncedAt:n.fullSync?e:t?.lastFullSyncedAt??0})}return{sessionIndexSyncByDirectory:r}})}catch(e){console.warn(`[GlobalSessions] Failed to persist cold-start session index batch:`,e)}}}finally{i===q&&Y.setState(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:a.size,total:e.startupSyncProgress.total}}))}let s=Y.getState();return{activeSessions:s.activeSessions,archivedSessions:s.archivedSessions}},zT=async e=>Y.getState().refreshArchivedSessionsForDirectories(e),BT=async e=>Y.getState().loadMoreSessionsForDirectory(e),VT=(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])},HT=`oc.sessions.folders`,UT=`oc.sessions.folderCollapse`,WT=`oc.sessions.order`,GT=`oc.sessions.orderActivity`,KT=`/api/session-folders`,qT=250,JT=`__archived__:`,YT=x(u()),XT=null,ZT=!1,QT=!1,$T=0,eE,tE,nE=null,rE=null,iE=()=>typeof window>`u`?!1:v()?!0:window.__VSCODE_CONFIG__!==void 0,aE=(e,t)=>{if(typeof window>`u`||iE())return;XT&&clearTimeout(XT);let n=JSON.parse(JSON.stringify(e)),r=Array.from(t);XT=setTimeout(()=>{XT=null,F(KT,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({version:1,foldersMap:n,collapsedFolderIds:r,updatedAt:Date.now()})}).catch(()=>{})},qT)},oE=()=>{try{let e=YT.getItem(HT);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{}}},sE=()=>{try{let e=YT.getItem(UT);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}},cE=()=>{try{let e=YT.getItem(WT);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{}}},lE=()=>{try{let e=YT.getItem(GT);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{}}},uE=(e,t)=>{try{YT.setItem(WT,JSON.stringify(e)),YT.setItem(GT,JSON.stringify(t))}catch{}},dE=e=>{nE=e,clearTimeout(eE),eE=setTimeout(()=>{try{YT.setItem(HT,JSON.stringify(e)),nE=null}catch{}},300)},fE=e=>{rE=e,clearTimeout(tE),tE=setTimeout(()=>{try{YT.setItem(UT,JSON.stringify(Array.from(e))),rE=null}catch{}},300)};typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{if(nE!==null){clearTimeout(eE);try{YT.setItem(HT,JSON.stringify(nE))}catch{}nE=null}if(rE!==null){clearTimeout(tE);try{YT.setItem(UT,JSON.stringify(Array.from(rE)))}catch{}rE=null}});var pE=(e,t)=>{dE(e),fE(t),aE(e,t)},mE=()=>fe(),hE=(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},gE=(e,t)=>e.startsWith(JT)?t.filter(e=>e.sessionIds.length>0):t,_E=Oe()(je((e,t)=>({foldersMap:oE(),collapsedFolderIds:sE(),sessionOrderByScope:cE(),sessionOrderActivityByScope:lE(),getFoldersForScope:e=>e?t().foldersMap[e]??[]:[],createFolder:(n,r,i)=>{let a=r.trim()||`New folder`,o={id:mE(),name:a,sessionIds:[],createdAt:Date.now(),parentId:i??null},s=t().foldersMap,c=s[n]??[],l={...s,[n]:[...c,o]};return e({foldersMap:l}),pE(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}),pE(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}),pE(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}),pE(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=hE(o,l,t().collapsedFolderIds);e(d?{foldersMap:u,collapsedFolderIds:d}:{foldersMap:u}),pE(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=hE(o,u,t().collapsedFolderIds);e(f?{foldersMap:d,collapsedFolderIds:f}:{foldersMap:d}),pE(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=hE(a,c,t().collapsedFolderIds);e(u?{foldersMap:l,collapsedFolderIds:u}:{foldersMap:l}),pE(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=hE(a,s,t().collapsedFolderIds);e(l?{foldersMap:c,collapsedFolderIds:l}:{foldersMap:c}),pE(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}),pE(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=gE(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=hE(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:_}),pE(m,h??t().collapsedFolderIds),uE(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=VT(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}),uE(y,b)}}),{name:`session-folders-store`})),vE=async()=>{if(ZT||QT||typeof window>`u`)return;if(iE()){ZT=!0;return}QT=!0;let e=$T;try{let t=await F(KT).catch(()=>null);if(e!==$T||!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!==$T||!(Object.keys(r).length>0||i.size>0))return;_E.setState({foldersMap:r,collapsedFolderIds:i}),dE(r),fE(i)}catch{}finally{e===$T&&(QT=!1,ZT=!0)}},yE=()=>{typeof window>`u`||vE()},bE=()=>{$T+=1,ZT=!1,QT=!1,nE=null,rE=null,eE&&=(clearTimeout(eE),void 0),tE&&=(clearTimeout(tE),void 0),_E.setState({foldersMap:oE(),collapsedFolderIds:sE(),sessionOrderByScope:cE(),sessionOrderActivityByScope:lE()}),vE()};typeof window<`u`&&d(e=>{n(e)&&bE()}),yE();var xE=new Map,SE=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},CE=()=>`worktree_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,wE=()=>{let e=CE();return xE.set(e,SE()),e},TE=(e,t)=>{let n=xE.get(e);n&&(xE.delete(e),n.resolve(t))},EE=(e,t)=>{let n=xE.get(e);n&&(xE.delete(e),n.reject(t))},DE=e=>{let t=xE.get(e);return t?t.promise:Promise.reject(Error(`Pending worktree request not found`))},OE=(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}}},kE=(e,t)=>!e||t,AE=(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}},jE=new Set,ME=()=>jE.size>0,NE=e=>{for(let t of jE)t(e)},PE=e=>(jE.add(e),()=>jE.delete(e)),FE=typeof window<`u`?W.useLayoutEffect:W.useEffect,IE=Je(`OpenChamberHaptics`),LE=null,RE=()=>(LE??=Ye.isPluginAvailable(`OpenChamberHaptics`),LE);function zE(e){switch(e){case`medium`:return`impactMedium`;case`heavy`:return`impactHeavy`;default:return`impactLight`}}function BE(){return typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0}function VE(){if(!BE())return!1;let e=window.Capacitor?.getPlatform?.();return e===`ios`||e===`android`}function HE(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 UE=20,WE=750;function GE(e,t){return t-e>=UE}function KE(e,t){return t-e>=WE}function qE(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 JE=-1/0;function YE(e=`light`,t){if(!VE()||!RE()||document.visibilityState!==`visible`||!document.documentElement.classList.contains(`oc-native-app-active`))return!1;let n=Date.now();return!t?.bypassCadence&&!GE(JE,n)?!1:(JE=n,IE[zE(e)]().catch(()=>void 0),!0)}var XE=`button, [role="button"]`;function ZE(){let e=(0,V.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],W.useEffect(QE,t)}function QE(){if(!VE())return;let e=$E;return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}function $E(e){if(!e.isTrusted||!(e.target instanceof Element))return;let t=e.target.closest(XE);t&&(t.matches(`:disabled, [aria-disabled="true"], [data-mobile-press-feedback="none"]`)||YE(`light`))}function eD(){let e=(0,V.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],FE(tD,t)}function tD(){if(!VE())return;let e=AE(),t=dt()===`android`,n=-1/0;return PE(r=>{if(!e(r))return;let i=$.getState().currentSessionId,a=document.documentElement.classList.contains(`oc-native-app-active`);if(HE({eventSessionId:r.sessionID,currentSessionId:i,isForeground:a,isVisible:document.visibilityState===`visible`}).shouldTrigger){if(t&&r.kind===`text`){let e=Date.now();if(!KE(n,e))return;YE()&&(n=e);return}YE()}})}var nD=async e=>{let t=await it(e);t.ok||console.error(`Failed to copy to clipboard:`,t.error)},rD=e=>e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(rD).join(` `).trim():(0,W.isValidElement)(e)?rD(e.props?.children):``,iD=e=>typeof e==`function`?e():e,aD=(e,t)=>{let n=rD(iD(t?.description));return n.length>0?n:rD(e)},oD=Object.assign((...e)=>(YE(),rt(...e)),{...rt,success:(...e)=>{let[t,n]=e;return YE(),rt.success(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},info:(...e)=>{let[t,n]=e;return YE(),rt.info(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},error:(...e)=>{let[t,n]=e;return YE(),rt.error(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>nD(aD(t,n))}})},warning:(...e)=>{let[t,n]=e;return YE(),rt.warning(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>nD(aD(t,n))}})},loading:(...e)=>(YE(),rt.loading(...e)),custom:(...e)=>(YE(),rt.custom(...e)),promise:(...e)=>(YE(),rt.promise(...e))}),sD=3e5,cD=5e3,lD=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``)||e,uD=new Map,dD=new Map,fD=new Map,pD=new Map,mD=new Set,hD=null,gD=!1,_D=e=>lD(e),vD=e=>pD.get(e)??0,yD=e=>{let t=vD(e)+1;return pD.set(e,t),t},bD=async e=>{let t=Te()?.git;return t?.worktree?.bootstrapStatus?t.worktree.bootstrapStatus(e):t?.getGitWorktreeBootstrapStatus?t.getGitWorktreeBootstrapStatus(e):Pe(e)},xD=(e,t)=>{for(let n of mD)try{n(e,t)}catch{}},SD=e=>(mD.add(e),()=>{mD.delete(e)}),CD=(e,t)=>{let n=_D(e);if(!n)return!1;let r=uD.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:(uD.set(n,t),t.status!==`pending`&&dD.delete(n),xD(n,t),!0)},wD=(e,t)=>{let n=_D(e);if(!n)return!1;let r=t.status===`pending`||t.status===`ready`||t.status===`failed`?t.status:null;return r?CD(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},TD=()=>{hD||=Ht(e=>{e.type===`worktree-bootstrap-status`&&wD(e.directory,e)}),!(typeof window>`u`||gD)&&(gD=!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&&wD(r,{status:n.status,error:typeof n.error==`string`?n.error:null,updatedAt:typeof n.updatedAt==`number`?n.updatedAt:Date.now()})})))},ED=e=>{let t=_D(e);t&&(TD(),CD(t,{status:`pending`,error:null,updatedAt:Date.now()}))},DD=e=>{let t=_D(e);if(!t)return;yD(t);let n=fD.get(t);n&&(n.cancelled=!0,n.disposeSettlement?.(),n.disposeSettlement=null,fD.delete(t));let r=dD.get(t);r&&(r.dispose(),dD.delete(t)),uD.delete(t)},OD=e=>{let t=_D(e);return t?uD.get(t)??null:null},kD=(e,t)=>{let n=at.getState().dictionary;return ot(n,e,t)},AD=e=>({status:`failed`,error:e,updatedAt:Date.now()}),jD=(e,t,n)=>{let r=AD(t);return CD(e,r),n?.(r),r},MD=async(e,t=()=>!0)=>{try{let n=await bD(e);return t()?CD(e,n)?n:OD(e):null}catch{return null}},ND=(e,t,n=cD)=>{let r=_D(e),i=vD(r);TD();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,MD(e,()=>!a&&vD(r)===i).finally(()=>{c=!1}))},Number.isFinite(n)?Math.max(1,n):cD))},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=SD((e,t)=>{_D(e)===r&&d(t)}),o=setTimeout(()=>{s(()=>{let t=jD(e,kD(`worktree.bootstrap.toast.timeoutDescription`));i(Error(t.error||`Timed out waiting for worktree bootstrap`))})},Math.max(0,t)),d(uD.get(r))});return h.catch(()=>void 0),{promise:h,startCompensation:p,dispose:()=>m(Error(`Worktree bootstrap wait cancelled`))}},PD=async(e,t,n,r,i,a)=>{let o=_D(e),s=ND(e,n,r);t.disposeSettlement=s.dispose;let c=await MD(e,()=>!t.cancelled&&fD.get(o)===t&&vD(o)===t.epoch);if(t.cancelled||fD.get(o)!==t){s.dispose();return}if(c?.status===`ready`){s.dispose(),a?.(c);return}if(c?.status===`failed`){s.dispose(),i?.(c),oD.error(kD(`worktree.bootstrap.toast.failed`),{description:c.error||kD(`worktree.bootstrap.toast.failedDescription`)});return}s.startCompensation();try{let e=await s.promise;if(t.cancelled||fD.get(o)!==t)return;a?.(e)}catch(n){if(t.cancelled||fD.get(o)!==t)return;let r=OD(e);if(r?.status===`failed`){i?.(r),oD.error(kD(`worktree.bootstrap.toast.failed`),{description:r.error||kD(`worktree.bootstrap.toast.failedDescription`)});return}let a=jD(e,n instanceof Error?n.message:String(n),i);oD.error(kD(`worktree.bootstrap.toast.failed`),{description:a.error||kD(`worktree.bootstrap.toast.failedDescription`)})}},FD=(e,t)=>{let n=_D(e);if(!n||uD.get(n)?.status!==`pending`||fD.has(n))return;let r={cancelled:!1,epoch:vD(n),promise:Promise.resolve(),disposeSettlement:null};r.promise=PD(e,r,t?.timeoutMs??sD,t?.pollIntervalMs??cD,t?.onFailed,t?.onReady).finally(()=>{fD.get(n)===r&&fD.delete(n)}),fD.set(n,r)},ID=async(e,t=sD)=>{let n=_D(e);if(!n)return;let r=uD.get(n);if(!r||r.status===`ready`)return;if(r.status===`failed`)throw Error(r.error||`Worktree bootstrap failed`);let i=dD.get(n);if(i)return i.promise;let a=()=>{},o=vD(n),s=(async()=>{let r=ND(e,t,cD);a=r.dispose;let i=await MD(e,()=>vD(n)===o);if(vD(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(()=>{dD.get(n)?.promise===s&&dD.delete(n)});return dD.set(n,{promise:s,dispose:()=>a()}),s},LD=`openchamber.json`,RD=`.openchamber`,zD=[`.config`,`openchamber`,`projects`];function BD(){let e=Te();return e?.files?e.files:null}var VD=3e3,HD=80,UD=4e3,WD=2e3,GD=300,KD=160,qD=new Set([`macos`,`linux`,`windows`]),JD=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)},YD=(e,t)=>{let n=JD(e),r=t.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/\/+$/,``);return!n||n===`/`?`/${r}`:`${n}/${r}`},XD=e=>YD(YD(e,RD),LD),ZD=()=>{let e=`/api`;return e.startsWith(`/`),e},QD=async(e,t)=>{try{let n=await F(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});return n.ok?{ok:!0,data:await n.json().catch(()=>null)}:{ok:!1,data:null}}catch{return{ok:!1,data:null}}},$D=async e=>{let t=BD();if(t?.createDirectory)try{if((await t.createDirectory(e))?.success)return!0}catch{}return!!(await QD(`${ZD()}/fs/mkdir`,{path:e})).ok},eO=async e=>{let t=BD();if(t?.readFile)try{let n=await t.readFile(e);return typeof n?.content==`string`?n.content:``}catch{return null}try{let t=await F(`${ZD()}/fs/read?path=${encodeURIComponent(e)}`,{cache:`no-store`});return t.ok?await t.text():null}catch{return null}},tO=async(e,t)=>{let n=BD();if(n?.writeFile)try{if((await n.writeFile(e,t))?.success)return!0}catch{}return!!(await QD(`${ZD()}/fs/write`,{path:e,content:t})).ok},nO=async()=>{try{let e=await F(`${ZD()}/fs/home`,{cache:`no-store`});if(!e.ok)throw Error(`Failed to resolve home directory from API`);let t=await e.json().catch(()=>null),n=typeof t?.home==`string`?t.home.trim():``;if(n)return JD(n)}catch{}if(!v()){let e=await De().catch(()=>null);if(e&&e.trim().length>0)return JD(e)}return null},rO=async()=>{let e=await nO();return e?zD.reduce((e,t)=>YD(e,t),e):null},iO=e=>{let t=typeof e?.path==`string`?e.path.trim():``,n=t?JD(t):``;return n&&xe(n)||null},aO=async e=>{let t=await rO();if(!t)return null;let n=iO(e);return n?YD(t,`${n}.json`):null},oO=(e,t)=>e.length<=t?e:e.slice(0,t),sO=e=>typeof e==`string`?oO(e,VD):``,cO=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!n||typeof n!=`object`)continue;let e=n,r=typeof e.id==`string`?e.id.trim():``,i=oO((typeof e.text==`string`?e.text:``).trim(),120);if(!r||!i)continue;let a=!!e.completed,o=typeof e.createdAt==`number`&&Number.isFinite(e.createdAt)&&e.createdAt>=0?e.createdAt:Date.now();t.push({id:r,text:i,completed:a,createdAt:o})}return t},lO=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=typeof e.path==`string`?e.path.trim():``,o=typeof e.createdAt==`number`&&Number.isFinite(e.createdAt)&&e.createdAt>=0?e.createdAt:Date.now();!i||!a||n.has(i)||(n.add(i),t.push({id:i,path:a,createdAt:o}))}return t.sort((e,t)=>t.createdAt-e.createdAt)},uO=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(typeof r!=`string`)continue;let e=r.trim().toLowerCase();!qD.has(e)||n.has(e)||(n.add(e),t.push(e))}return t},dO=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(!r||typeof r!=`object`)continue;let e=r,i=typeof e.id==`string`?e.id.trim():``,a=oO(typeof e.name==`string`?e.name.trim():``,HD),o=oO(typeof e.command==`string`?e.command.trim():``,UD);if(!i||!a||!o||n.has(i))continue;n.add(i);let s=typeof e.icon==`string`?e.icon.trim():``,c=uO(e.platforms),l=e.autoOpenUrl===!0,u=oO(typeof e.openUrl==`string`?e.openUrl.trim():``,WD),d=oO(typeof e.desktopOpenSshForward==`string`?e.desktopOpenSshForward.trim():``,GD);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},fO=e=>{let t=dO(e?.actions),n=typeof e?.primaryActionId==`string`?e.primaryActionId.trim():``;return{actions:t,primaryActionId:n&&t.some(e=>e.id===n)?n:null}},pO=e=>({notes:sO(e?.notes),todos:cO(e?.todos)}),mO=e=>({...pO(e),plans:lO(e?.plans)}),hO=e=>e.trim().toLowerCase().replace(/[`*_#>[\](){}.!?,:;"']/g,``).replace(/\s+/g,`-`).replace(/[^a-z0-9-]/g,`-`).replace(/-+/g,`-`).replace(/^-+|-+$/g,``)||`plan`,gO=e=>oO(e.trim(),KD),_O=()=>fe(),vO=async e=>{let t=await rO(),n=iO(e);return!t||!n?null:YD(t,n)},yO=async e=>{let t=await vO(e);return t?YD(t,`plans`):null},bO=(e,t)=>{let n=gO(e)||`Plan`,r=t.trim();return r?`# ${n}\n\n${r}`:`# ${n}\n`},xO=e=>{let t=(typeof e==`string`?e:``).replace(/\r\n?/g,`
465
- `),n=t.match(/^\s*#\s+(.+?)\s*(?:\n+|$)/);if(n){let e=gO(n[1]),r=t.slice(n[0].length).replace(/^\n+/,``);return{title:e||`Plan`,body:r}}return{title:gO((t.split(`
466
- `).map(e=>e.trim()).find(Boolean)||`Plan`).replace(/^#+\s*/,``))||`Plan`,body:t.trim()}};async function SO(e){let t=typeof e?.path==`string`?e.path.trim():``;if(!t)return null;let n=await aO(e),r=async e=>{let t=await eO(e);return t===null?null:t},i=e=>{if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;try{let e=JSON.parse(t);return!e||typeof e!=`object`?null:e}catch{return null}};if(n){let e=i(await r(n));if(e)return e}let a=i(await r(XD(t)));if(!a)return null;try{await CO(e,a)&&await WO(t)}catch{}return a}async function CO(e,t){let n=typeof e?.path==`string`?e.path.trim():``;if(!n)return!1;let r=await rO(),i=await aO(e);if(!r||!i)return!1;try{if(!await $D(r))return!1;let e=await eO(i),a={};if(typeof e==`string`&&e.trim())try{let t=JSON.parse(e);t&&typeof t==`object`&&!Array.isArray(t)&&(a=t)}catch{a={}}let o={};return a.version!==void 0&&(o.version=a.version),a.scheduledTasks!==void 0&&(o.scheduledTasks=a.scheduledTasks),await tO(i,JSON.stringify({...a,...t,...o,projectPath:JD(n)},null,2))}catch(e){return console.error(`Failed to write openchamber config:`,e),!1}}async function wO(e,t){return CO(e,{...await SO(e)||{},...t})}async function TO(e){return(await SO(e))?.[`setup-worktree`]??[]}async function EO(e,t){return wO(e,{"setup-worktree":t.filter(e=>e.trim().length>0)})}async function DO(e){return(await SO(e))?.[`setup-worktree-wait`]===!0}async function OO(e,t){return wO(e,{"setup-worktree-wait":t})}async function kO(e){let t=await SO(e);return Ce(t?.draftStarters)}async function AO(e,t){return wO(e,{draftStarters:Ce(t)})}async function jO(e){let t=await SO(e);return pO({notes:t?.projectNotes,todos:t?.projectTodos})}async function MO(e,t){let n=pO({notes:t.notes,todos:t.todos});return wO(e,{projectNotes:n.notes,projectTodos:n.todos})}async function NO(e){let t=await SO(e);return mO({notes:t?.projectNotes,todos:t?.projectTodos,plans:t?.projectPlanFiles})}async function PO(e){return lO((await SO(e))?.projectPlanFiles)}async function FO(e,t){return wO(e,{projectPlanFiles:lO(t)})}async function IO(e){let t=typeof e==`string`?e.trim():``;if(!t)return null;let n=await eO(t);if(n===null)return null;let r=xO(n);return{title:r.title,body:r.body,raw:n,path:t}}var LO=async e=>{let t=BD();if(t?.delete)try{if((await t.delete(e))?.success!==!1)return!0}catch{}return!!(await QD(`${ZD()}/fs/delete`,{path:e})).ok};async function RO(e,t){let n=typeof t==`string`?t.trim():``;if(!n)return!1;let r=await PO(e),i=r.find(e=>e.id===n);return!i||!await FO(e,r.filter(e=>e.id!==n))?!1:(await LO(i.path).catch(()=>!1),!0)}async function zO(e,t,n){let r=typeof t==`string`?t:``;if(!r.trim())return null;let i=xO(r);return BO(e,{title:i.title||gO(n??``)||`Plan`,body:i.body})}async function BO(e,t){let n=await yO(e);if(!n)return null;let r=gO(t.title)||`Plan`,i=Date.now(),a=_O(),o=YD(n,`${i}-${hO(r)}.md`),s=await vO(e);if(!s)return null;let c=await $D(s),l=c?await $D(n):!1;if(!c||!l||!await tO(o,bO(r,t.body)))return null;let u=await PO(e),d={id:a,path:o,createdAt:i};return await FO(e,[d,...u])?d:null}async function VO(e){let t=await SO(e);return fO({actions:t?.projectActions,primaryActionId:t?.projectActionsPrimaryId})}async function HO(e,t){let n=fO({actions:t.actions,primaryActionId:t.primaryActionId});return wO(e,{projectActions:n.actions,projectActionsPrimaryId:n.primaryActionId??void 0})}function UO(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 WO(e){let t=XD(e),n=BD();if(n?.delete)try{await n.delete(t);return}catch{}try{await QD(`${ZD()}/fs/delete`,{path:t})}catch{}}var GO=e=>typeof e==`number`&&Number.isFinite(e)?e:0,KO=e=>GO(e.input)+GO(e.output)+GO(e.reasoning)+GO(e.cache?.read)+GO(e.cache?.write),qO=e=>e?.type===`compaction`,JO=e=>!!e&&e.some(qO),YO=(e,t)=>{for(let n=e.length-1;n>=0;--n){let r=e[n];if(r.role!==`assistant`){if(r.id&&JO(t(r.id)))return{compacted:!0};continue}let i=r.tokens;if(!i)continue;let a=KO(i);if(a>0)return{messageId:r.id??``,totalTokens:a,tokens:i}}return null},XO=500,ZO=2592e6;function QO(e){let t=Date.now()-ZO,n=e.filter(e=>e.time>=t);return n.length<=XO?n:n.slice(n.length-XO)}function $O(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 ek=Oe((e,t)=>({list:[],index:{session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}},append:n=>{let r=t().list,i=QO([...r,n]);e({list:i,index:$O(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:$O(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:$O(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 tk(e){ek.getState().append(e)}function nk(e){ek.getState().markSessionViewed(e)}function rk(e){let t=(0,V.c)(2),n;return t[0]===e?n=t[1]:(n=t=>t.index.session.unseenCount[e]??0,t[0]=e,t[1]=n),ek(n)}var ik=/^(.*)\.(\d+)$/,ak=[`session.next.step.`,`session.next.text.`,`session.next.reasoning.`,`session.next.tool.`,`session.next.shell.`,`session.next.compaction.`],ok=new Set([`session.next.step.ended`,`session.next.step.failed`]);function sk(e){return ik.exec(e)?.[1]??e}function ck(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function lk(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 uk(e){let t=ck(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 dk(e){let t=ck(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 fk(e){let t=ck(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`&&!dk(e)?{directory:t.directory}:{}}}return e}function pk(e,t){if(e===`session.status`){let e=lk(t),n=t.status;if(e&&n&&typeof n==`object`)return{sessionID:e,status:n}}return t}function mk(e,t){let n=lk(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`}}:ok.has(e)?{domainActivityHint:{sessionID:n,kind:`terminal`}}:ak.some(t=>e.startsWith(t))||e.startsWith(`session.next.`)?{domainActivityHint:{sessionID:n,kind:`activity`}}:{}:{}}function hk(e){let t=ck(fk(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(uk(t))return{action:`drop`,reason:`sync-duplicate`};let r=sk(n),i=ck(t.data),a=ck(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:dk(t)}}:{action:`drop`,reason:`invalid`};let s=pk(r,o),c=dk(t)??dk(o)??(()=>{let e=ck(s.info);return typeof e?.directory==`string`?e.directory:void 0})(),l=mk(r,s);return{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:s,locationDirectory:c,...l}}}function gk(e){return{...e.id?{id:e.id}:{},type:e.type,properties:e.properties}}var _k=33,vk=200,yk=1e4,bk=8,xk=250,Sk=3e4,Ck=6e4,wk=2,Tk=2e3,Ek=8e3,Dk=250,Ok=5e3,kk=6e4,Ak=8,jk=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},Mk=e=>{if(!e||typeof e!=`object`)return{status:`unusable`};let t=jk(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=hk(e);return n.action===`drop`?n.reason===`sync-duplicate`?{status:`declined`}:{status:`unusable`}:{status:`event`,event:gk(n.event),normalized:n.event}};function Nk(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 Pk(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 Fk(e){let t=`/api`;try{let e=B;typeof e.getBaseUrl==`function`&&(t=e.getBaseUrl())}catch{t=`/api`}let n=t.endsWith(`/`)?t:`${t}/`;return a().websocket(`${n}global/event/ws`,e&&e.length>0?{lastEventId:e}:void 0)}function Ik(e){let t=Fk(e);return Ve(t)}function Lk(e){let{sdk:t,onEvent:n,onFlushStart:r,onFlushEnd:i,onNormalizedEvent:a,onReconnect:o,onCompensation:u,onRecoveryContextCaptured:d,onDisconnect:f,onTransportActivity:p,onTransportSwitch:m,routeDirectory:h,transport:_=`auto`,heartbeatTimeoutMs:v=Sk,reconnectDelayMs:y=xk,wsReadyTimeoutMs:b}=e,x=b??(l()?Ek:Tk),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 a=t.queue;t.queue=t.buffer,t.buffer=a,t.queue.length=0,t.coalesced.clear(),t.last=Date.now(),ms.pipeline.flush(a.length),r?.();try{for(let t of a)n(e,t)}finally{i?.()}t.buffer.length=0},te=()=>{for(let e of k.keys())ee(e)},M=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()<he?vk:_k)-n))},ne=e=>new Promise(t=>setTimeout(t,e)),re=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 kk;let t=ae()?kk:Ok,n=Math.min(e-1,Ak);return Math.min(t,Dk*2**n)},ue=!1,N,de=Date.now(),fe,pe=_===`ws`?`ws`:`sse`,P=null,me=0,he=0,F=e=>{O||(O={lastEventId:w&&w.length>0?w:null,disconnectedAt:Date.now(),runtimeGeneration:s(),reason:e},d?.({lastEventId:O.lastEventId,disconnectedAt:O.disconnectedAt,runtimeGeneration:O.runtimeGeneration,reason:O.reason}))},ge=e=>{C||(C=!0,F(e),f?.(e))},I=()=>{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??s(),reason:e?.reason??`ready`,transport:pe,isReconnect:t})},_e=()=>{C=!1,me=0,te(),o?.(),I()},ve=(e,t,n)=>{if(n&&typeof n.type==`string`&&n.type.startsWith(`session.next.`)){a?.(e,n);return}n&&a?.(e,n);let r=t,i=h?.(e,r)||e,o=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 o.coalesced.keys())t.startsWith(e)&&o.coalesced.delete(t)}}let s=j(r);if(s){let e=o.coalesced.get(s);if(e!==void 0){if(r.type===`message.part.delta`){let t=o.queue[e],n=r.properties;o.queue[e]={...r,properties:{...r.properties,delta:t.properties.delta+n.delta}}}else o.queue[e]=r;ms.pipeline.coalesced(r.type,s);return}o.coalesced.set(s,o.queue.length)}o.queue.push(r),M(i)},ye=(e,t)=>{let n=Pk(t);if(!n)return`unusable`;let r=Mk(n);if(r.status!==`event`)return r.status===`declined`?`declined`:`unusable`;let i=Nk(e,n,r.event,r.normalized.locationDirectory);return ve(i,r.event,r.normalized),`ingested`},be=()=>{de=Date.now(),fe&&clearTimeout(fe),fe=setTimeout(()=>{P=`${pe}_heartbeat_timeout`,N?.abort()},v)},xe=()=>{be(),p?.()},L=()=>{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=>{xe(),typeof e.id==`string`&&e.id.length>0&&(w=e.id)},onSseError:e=>{re(e)||ue||(ue=!0,console.error(`[event-pipeline] SSE stream error`,e))}}),e);_e();let r=Date.now();xe();for await(let e of n.stream)xe(),ue=!1,ye(e,e.payload??e),!(Date.now()-r<bk)&&(r=Date.now(),await ne(0));if(!e.aborted){let e=Error(`Global event SSE stream closed`);throw e.reason=`sse_stream_closed`,e}},we=async e=>{try{await c()}catch(e){let t=e instanceof Error?e:Error(`Message stream WebSocket auth token unavailable`);throw _===`auto`&&(T=Date.now()+Ck,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 r=!1,i=!1,a=0,o=Ik(w),s=(e,t=!1)=>{(t||!i)&&_===`auto`&&(T=Date.now()+Ck,e.code=`WS_FALLBACK`)},c=setTimeout(()=>{c=void 0;let e=Error(`Message stream WebSocket ready timeout`);s(e),d(e);try{o.close()}catch{}},x),l=()=>{c&&=(clearTimeout(c),void 0),o.onopen=null,o.onmessage=null,o.onerror=null,o.onclose=null},u=()=>{r||(r=!0,e.removeEventListener(`abort`,f),l(),t())},d=t=>{r||(r=!0,e.removeEventListener(`abort`,f),l(),n(t))},f=()=>{try{o.close()}catch{}u()};e.addEventListener(`abort`,f,{once:!0}),o.onopen=()=>{};let p=e=>{_===`auto`&&(T=Date.now()+Ck);let t=Error(`Message stream WebSocket invalid frame`);t.reason=e,d(t);try{o.close()}catch{}};o.onmessage=e=>{let t=null;try{t=JSON.parse(String(e.data))}catch{p(`ws_invalid_frame:json`);return}if(!t||typeof t.type!=`string`){p(`ws_invalid_frame:type`);return}if(t.type===`ready`){xe(),i=!0,a=Date.now(),c&&=(clearTimeout(c),void 0),ue=!1,_e();return}if(t.type===`error`){xe();let e=Error(t.message||`Message stream WebSocket error`);e.reason=`ws_error_frame:${t.message||`unknown`}`,s(e),d(e);try{o.close()}catch{}return}if(t.type===`backpressure`){xe(),he=Date.now()+yk;return}if(t.type!==`event`){p(`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>=wk&&(w=n,E=void 0,D=0)),p(`ws_invalid_frame:event_payload`);return}E=void 0,D=0,xe(),ue=!1,n&&(w=n)},o.onerror=()=>{},o.onclose=t=>{if(e.aborted){u();return}let n=Error(`Global message stream WebSocket closed`);n.reason=i?`ws_closed:code=${t?.code??`?`}`:`ws_closed_before_ready`,i||g();let r=a>0?Date.now()-a:0;s(n,i&&r>0&&r<2e3),d(n)}})},Te=()=>typeof WebSocket==`function`?_===`ws`?`ws`:_===`sse`||T>Date.now()?`sse`:`ws`:`sse`;(async()=>{for(;!S.signal.aborted;){N=new AbortController,de=Date.now(),P=null;let e=y,t=Te();pe=t;let n=()=>{P=`pipeline_stopped`,N?.abort()};S.signal.addEventListener(`abort`,n);try{t===`ws`?await we(N.signal):await Ce(N.signal)}catch(n){let r=typeof n==`object`&&n?n.code:void 0;if(t===`ws`&&r===`WS_FALLBACK`)e=0,m?.();else if(!re(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`;ge(a);let o=oe(n);e=o!==void 0&&se(o)?kk:le(me)}}finally{S.signal.removeEventListener(`abort`,n),N=void 0,L()}if(S.signal.aborted)return;P&&P!==`pipeline_stopped`&&(ge(P),me+=1,e=y>0?le(me):0,P=null),e>0&&await ce(e)}})().finally(te);let Ee=()=>{if(!(typeof document>`u`)){if(document.visibilityState===`hidden`){F(`visibility_hidden`);return}document.visibilityState===`visible`&&(Date.now()-de<v||N?.abort())}},R=e=>{e.persisted&&(F(`pageshow_persisted`),N?.abort())},De=()=>{F(`system_resume`),N&&(P=`${pe}_system_resume`,N.abort())},Oe=()=>{C&&(F(`online`),N?.abort())},ke=()=>{N?.abort()};return typeof document<`u`&&(document.addEventListener(`visibilitychange`,Ee),window.addEventListener(`pageshow`,R)),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`,Ee),window.removeEventListener(`pageshow`,R)),globalThis.window!==void 0&&(globalThis.window.removeEventListener(`openchamber:system-resume`,De),globalThis.window.removeEventListener(`online`,Oe),globalThis.window.removeEventListener(`offline`,ke)),S.abort(),L(),te()},reconnect:(e=`manual`)=>{P=`${pe}_${e}`,N?.abort()}}}function Rk(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 zk(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],delete e.permission[t],delete e.question[t]}function Bk(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 Vk=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},Hk=(e,t)=>e?Vk(t)<Vk(e):!1;function Uk(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 Wk(e){return e.type===`global.disposed`||e.type===`server.connected`?{type:`refresh`}:e.type===`project.updated`?{type:`project`,project:e.properties}:null}function Gk(e,t){let n=[...e.projects],r=is.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 Kk(e,t,n){t&&(n?.(t,void 0),zk(e,[t]))}var qk=e=>e.title===`smartfetch-secondary`;function Jk(e,t,n,r){return n.found?(e.session.splice(n.index,1),qk(t)&&Kk(e,t.id,r),t.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0):!1}function Yk(e,t,n){switch(t.type){case`server.instance.disposed`:return n?.onRefresh?.(``),!1;case`session.created`:{let r=tp(t.properties.info),i=e.session,a=is.search(i,r.id,e=>e.id);return cp(r)?a.found&&Hk(i[a.index],r)?!1:(a.found?i[a.index]=r:(i.splice(a.index,0,r),Xk(e),r.parentID||(e.sessionTotal+=1)),!0):Jk(e,r,a,n?.onSetSessionTodo)}case`session.updated`:{let r=tp(t.properties.info),i=e.session,a=is.search(i,r.id,e=>e.id);return a.found&&Hk(i[a.index],r)?!1:!cp(r)||r.time.archived?Jk(e,r,a,n?.onSetSessionTodo):(a.found?i[a.index]=r:(i.splice(a.index,0,r),Xk(e)),!0)}case`session.deleted`:{let r=t.properties.info,i=e.session,a=is.search(i,r.id,e=>e.id);return a.found&&i.splice(a.index,1),Kk(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]=ep(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;return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),Uk(e.session_status[r.sessionID],r.status)?!!n?.now:(e.session_status[r.sessionID]=r.status,!0)}case`session.idle`:{let r=t.properties,i={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),Uk(e.session_status[r.sessionID],i)?!!n?.now:(e.session_status[r.sessionID]=i,!0)}case`session.error`:{let r=t.properties,i={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),Uk(e.session_status[r.sessionID],i)?!!n?.now:(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=is.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=is.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=is.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=is.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 Xk(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 Zk=Oe()(e=>({...nl,actions:{set:t=>e(t),reset:()=>e(nl)}}));function Qk(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 $k(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 eA(e){return!(!e.directory||!e.hasStore||e.pinned||e.booting||e.loadingSessions||e.hasPendingBlockingRequests)}function tA(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 nA(e){let t=e.slice(0,12).replace(/[^a-zA-Z0-9]/g,`_`);return`oc.dir.${tA(i().trim()||`default`)}.${t}.${tA(e)}`}function rA(e,t){return`${nA(e)}.${t}`}function iA(e,t){try{let n=localStorage.getItem(rA(e,t));return n?JSON.parse(n):void 0}catch{return}}function aA(e,t,n){try{let r=rA(e,t);n===void 0?localStorage.removeItem(r):localStorage.setItem(r,JSON.stringify(n))}catch{}}function oA(e){return{vcs:iA(e,`vcs`),projectMeta:iA(e,`projectMeta`),icon:iA(e,`icon`)}}function sA(e){try{localStorage.removeItem(`${nA(e)}.sessions`)}catch{}}function cA(e,t){aA(e,`vcs`,t)}function lA(e,t){aA(e,`projectMeta`,t)}function uA(e,t){aA(e,`icon`,t)}function dA(e){let t=oA(e);sA(e);let n=Oe()(e=>({...tl,vcs:t.vcs??tl.vcs,projectMeta:t.projectMeta??tl.projectMeta,icon:t.icon??tl.icon,patch:t=>e(t),replace:t=>e(t)}));return n.subscribe((t,n)=>{t.vcs!==n.vcs&&cA(e,t.vcs),t.projectMeta!==n.projectMeta&&lA(e,t.projectMeta),t.icon!==n.icon&&uA(e,t.icon)}),n}var fA=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=ne(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=ne(e);t&&(this.pins.set(t,(this.pins.get(t)??0)+1),this.mark(t))}unpin(e){let t=ne(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(ne(e))??0)>0}ensureChild(e,t){let n=ne(e);if(!n)throw Error(`No directory provided to ensureChild`);let r=this.children.get(n);return r||(r=dA(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(ne(e))}captureChild(e,t){let n=ne(e),r=this.ensureChild(n,t);return{directory:n,generation:this.generations.get(n)??0,store:r}}isCurrentChildCapture(e){let t=ne(e.directory);return this.children.get(t)===e.store&&this.generations.get(t)===e.generation}disposeDirectory(e){let t=ne(e);if(!eA({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=$k({stores:t,state:this.lifecycle,pins:new Set(t.filter(e=>this.pinned(e))),max:30,ttl:el,graceMs:$c,now:Date.now(),hasPendingBlockingRequests:e=>this.hasPendingBlockingRequestsForDirectory(e)}).filter(t=>t!==e);for(let e of n)this.disposeDirectory(e)}hasPendingBlockingRequestsForDirectory(e){return Qk(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()}}},pA=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},mA=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(`|`)},hA=e=>{switch(e?.type){case`retry`:return 4;case`busy`:return 3;case`idle`:return 1;default:return 0}},gA=e=>{let t=e?.message;return typeof t==`string`?t:null},_A=(e,t)=>{let n=e?.[t];return typeof n==`number`?n:null},vA=(e,t)=>e?.type===t?.type&&gA(e)===gA(t)&&_A(e,`attempt`)===_A(t,`attempt`)&&_A(e,`next`)===_A(t,`next`),yA=(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?pA(r):-1}},bA=(e,t)=>e?t.sessionUpdatedAt===e.sessionUpdatedAt?hA(t.status)>=hA(e.status):t.sessionUpdatedAt>e.sessionUpdatedAt:!0,xA=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(mA(e[n])!==mA(t[n]))return!1;return!0},SA=(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(!vA(n,i))return!1}return!0};function CA(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||!cp(e))continue;let r=n.get(e.id);(!r||pA(e)>=pA(r))&&n.set(e.id,e)}return Array.from(n.values()).sort((e,t)=>pA(t)-pA(e))}function wA(e){let t=new Map;for(let n of e)for(let e of Object.keys(n.session_status??{})){let r=yA(n,e);r&&bA(t.get(e),r)&&t.set(e,r)}let n={};for(let[e,r]of t)n[e]=r.status;return n}function TA(e,t){if(!t)return;let n;for(let r of e){let e=r.session.find(e=>e.id===t);e&&(!n||pA(e)>=pA(n))&&(n=e)}return n}function EA(e,t){if(!t)return;let n;for(let r of e){let e=yA(r,t);e&&bA(n,e)&&(n=e)}return n?.status}var DA=(e,t)=>e<t?-1:+(e>t);function OA(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 kA=e=>!e||e.length===0?``:e.map(e=>e.id).sort(DA).join(`|`);function AA(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 jA(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 MA(e,t){return t.find(t=>t.worktree===e||t.sandboxes?.includes(e))?.id}async function NA(e,t){let n=await Promise.allSettled([Jf(()=>e.path.get().then(e=>t({path:OA(e,`path.get`)}))),Jf(()=>e.global.config.get().then(e=>t({config:OA(e,`global.config.get`)}))),Jf(()=>e.project.list().then(e=>{t({projects:OA(e,`project.list`).filter(e=>!!e?.id).filter(e=>!!e.worktree&&!e.worktree.includes(`opencode-test`)).sort((e,t)=>DA(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 F(`/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 PA(e){let{directory:t,sdk:n,getState:r,set:i,global:a}=e,o=r(),s=o.status!==`complete`,c=MA(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}),Ed(t,e)}s&&i({status:`partial`});let l=await Promise.allSettled([c?Promise.resolve():Jf(()=>n.project.current().then(e=>i({project:OA(e,`project.current`).id}))),Jf(()=>n.config.get().then(e=>{let n=OA(e,`config.get`);i({config:n}),Ed(t,n)})),Jf(()=>n.path.get().then(e=>{let n=OA(e,`path.get`);i({path:n});let r=MA(n?.directory??t,a.projects);r&&i({project:r})})),Jf(async()=>{let e=Date.now(),a=r().session_status,o=OA(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:jA(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([Jf(()=>n.mcp.status().then(e=>i({mcp:OA(e,`mcp.status`)}))),Jf(()=>n.lsp.status().then(e=>i({lsp:OA(e,`lsp.status`)}))),Jf(()=>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})})),Jf(async()=>{let e=r(),a=new Map(Object.entries(e.question??{}).map(([e,t])=>[e,kA(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=AA((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)=>DA(e.id,t.id));for(let e of a.keys()){if(s[e])continue;let t=a.get(e)??``;kA(c.question[e])===t&&delete l[e]}i({question:l})}),Jf(async()=>{let e=r(),a=new Map(Object.entries(e.permission??{}).map(([e,t])=>[e,kA(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=AA((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)=>DA(e.id,t.id));for(let e of a.keys()){if(s[e])continue;let t=a.get(e)??``;kA(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 FA=Oe()(()=>({streamingMessageIds:new Map,messageStreamStates:new Map}));function IA(){FA.setState({streamingMessageIds:new Map,messageStreamStates:new Map})}var LA=1e3;function RA(e,t){let n=Date.now(),r=FA.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=H();t?.store;for(let e of l){let t=[];if(f&&d&&(t=Bu(f.getTranscript(U(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>=LA&&(s.set(r.id,{...a,lastUpdateAt:n}),c=!0)}for(let[e,t]of i)t&&(l.has(e)||u(e,t));c&&FA.setState({streamingMessageIds:o,messageStreamStates:s})}function zA(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 BA(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 VA=new Set,HA=(e,t)=>`${e}\n${t}`;function UA(e,t){!e||e===`global`||!t||VA.add(HA(e,t))}function WA(e,t){let n=HA(e,t);return VA.has(n)?(VA.delete(n),!0):!1}var GA=(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=tp(i),o=typeof t==`string`&&t!==`global`?t.trim():``,s=a.directory;return!o||typeof s==`string`&&s.trim()?a:{...a,directory:o}},KA=e=>{let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null},qA=e=>{let t=e;return JSON.stringify([e.title??``,e.time?.archived??0,e.share?.url??``,t.directory??``,t.parentID??``,t.hasChildren??!1])},JA=(e,t)=>{if(e.type===`session.created`||e.type===`session.updated`){let n=GA(e,t);if(n){let e=KA(n.id);(!e||qA(e)!==qA(n))&&!Hk(e,n)&&Y.getState().upsertSession(n)}return}if(e.type===`session.deleted`){let t=e.properties?.sessionID??GA(e)?.id;t&&Y.getState().removeSessions([t])}};function YA(e){return Object.entries(e.session_status??{}).filter(([,e])=>e&&e.type!==`idle`).map(([e])=>e)}function XA(e,t){let n=t?.viewedSession;return!n?.sessionId||n.directory!==t?.directory?[]:[n.sessionId]}function ZA(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 QA=e=>{let t=new Map;for(let n of e)t.set(n.id,n);return t},$A=(e,t,n)=>{let r=n??QA(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},ej=e=>{let{autoAccept:t,sessions:n,sessionById:r,sessionID:i}=e;if(Object.keys(t).length===0)return!1;let a=$A(i,n,r);for(let e of a)if(Object.prototype.hasOwnProperty.call(t,e))return t[e]===!0;return!1},tj=t({usePermissionStore:()=>aj}),nj=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}},rj=async(e,t)=>nj(await F(e,t)),ij=(e,t,n)=>ej({autoAccept:e,sessions:[],sessionById:t,sessionID:n}),aj=Oe()(ke((e,t)=>({autoAccept:{},loaded:!1,saving:!1,hydrate:async()=>{let n=await rj(`/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 rj(`/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&&ij(n,kd(),e)},setSessionAutoAccept:async(t,n)=>{if(t){if(v()){let r=await F(`/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 rj(`/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:h(),partialize:e=>({autoAccept:e.autoAccept})})),oj=Oe(()=>({statusById:new Map})),sj=e=>e===`busy`?`busy`:e===`retry`?`retry`:`idle`,cj=e=>Wo(e)??e,lj=(e,t,n)=>{oj.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}})},uj=(e,t)=>{switch(t.type){case`session.status`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;let r=sj(n.status?.type);lj(n.sessionID,cj(e),r);return}case`session.idle`:case`session.error`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&lj(n.sessionID,cj(e),`idle`);return}default:return}},dj=(e,t,n)=>{let r=cj(e),i=new Set(n??[]);oj.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=sj(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})},fj=e=>typeof e==`string`&&e.trim().length>0;function pj(e){let t=e.trim();return t.length<=18?t:`${t.slice(0,10)}…${t.slice(-4)}`}function mj(e,t){return ot(at.getState().dictionary,e,t)}function hj(e,t=`missing-directory`){let n=fj(e)?pj(e):null;if(t===`missing-session-id`||!n){oD.error(mj(`sessions.toast.openFailedMissingSessionId`));return}if(t===`missing-directory`){oD.error(mj(`sessions.toast.openFailedMissingDirectory`,{sessionId:n}));return}oD.error(mj(`sessions.toast.openFailed`,{sessionId:n}))}function gj(e,t,n={}){let r=n.notify!==!1;if(!fj(e))return r&&hj(null,`missing-session-id`),{ok:!1,reason:`missing-session-id`,sessionId:null};if(!fj(t))return r&&hj(e,`missing-directory`),{ok:!1,reason:`missing-directory`,sessionId:e.trim()};let i=e.trim(),a=t.trim();return n.phoneShell&&!ut()?(QH.getState().openSession({sessionId:i,directory:a}),{ok:!0,sessionId:i,directory:a}):n.switchToChat!==!1&&!p.getState().setActiveMainTab(`chat`)?(r&&hj(i,`tab-switch-blocked`),{ok:!1,reason:`tab-switch-blocked`,sessionId:i}):($.getState().setCurrentSession(i,a),{ok:!0,sessionId:i,directory:a})}var _j=null,vj=e=>{_j=e},yj=(e,t)=>typeof _j==`function`&&typeof e==`string`&&e.trim()&&typeof t==`string`&&t.trim()?(_j(e.trim(),t.trim()),{ok:!0,sessionId:e.trim(),directory:t.trim()}):gj(e,t,{switchToChat:!0}),bj=(e,t)=>!e||!t?null:`${e}:${t}`,xj=({permission:e,directory:t,isViewed:n,pendingIds:r,show:i,openSession:a})=>{let o=bj(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},Sj=15e3,Cj=new Map,wj=(e,t)=>`${e}\n${t}`;function Tj(e){if(!e.runtimeKey||!e.directory||!e.sessionId||!e.status||e.status.type===`idle`)return;let t=Date.now();for(let[e,n]of Cj)n.expiresAt<=t&&Cj.delete(e);Cj.set(wj(e.runtimeKey,e.directory),{runtimeKey:e.runtimeKey,directory:e.directory,sessionId:e.sessionId,status:e.status,expiresAt:Date.now()+Sj})}function Ej(e,t){let n=Cj.get(wj(e,t));return n?n.expiresAt<=Date.now()?(Cj.delete(wj(e,t)),null):n:null}var Dj=[],Oj=[],kj=[],Aj={sessionID:``,revertMessageID:void 0,records:Oj,history:kj},jj=e=>{if(e?.type!==`text`)return``;let t=e.text;return typeof t==`string`?t:``},Mj=e=>{for(let t of e){let e=jj(t);if(e.length>0)return e}return``},Nj=(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},Pj=(e,t=Aj)=>{let n=e.sessionID;if(!n)return Aj;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&&ss(r,n.id,i)||a.push({message:n,parts:e.parts[n.id]??Dj}))}if(a.length===0)return t.sessionID===n&&t.revertMessageID===i&&t.records.length===0?t:{sessionID:n,revertMessageID:i,records:Oj,history:kj};if(t.sessionID===n&&t.revertMessageID===i&&Nj(t.records,a))return t;let o=[];for(let e of a){let t=Mj(e.parts);t.length>0&&o.push(t)}return{sessionID:n,revertMessageID:i,records:a,history:o}};function Fj(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 Ij(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 Lj(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 Rj(e,t,n){if(!e)return null;let r=t?.id===e?t:null,i=n?.id===e?n:null;return r??i}function zj(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 Bj=Me(),Vj=`__openchamber_sync_context__`,Hj=globalThis,Uj=Hj[Vj]??(0,W.createContext)(null);Hj[Vj]=Uj;function Wj(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 Gj(e,t){if(!e.error)return e.data;let n=e.response?.status;throw Error(`${t} failed${n?` (${n})`:``}: ${Wj(e.error)}`)}function Kj(){let e=(0,W.useContext)(Uj);if(!e)throw Error(`useSyncSystem must be used within <SyncProvider>`);return e}function qj(e){return Array.from(e.children.values(),e=>e.getState())}function Jj(e,t,n){let r=(0,V.c)(7),i=t===void 0?Object.is:t,{childStores:a}=Kj(),o=(0,W.useRef)(void 0),s=(0,W.useRef)(!1),c;r[0]!==a||r[1]!==i||r[2]!==e?(c=()=>{let t=e(qj(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],W.useSyncExternalStore(u,l,l)}function Yj(e){let t=(0,V.c)(4),n;t[0]===e?n=t[1]:(n=t=>EA(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),Jj(n,Object.is,r)}function Xj(e){let t=(0,V.c)(5),n=Yj(e),r;t[0]===e?r=t[1]:(r=t=>t.statusById.get(e)?.status,t[0]=e,t[1]=r);let i=oj(r),a;return t[2]!==i||t[3]!==n?(a=Zj(n,i),t[2]=i,t[3]=n,t[4]=a):a=t[4],a}function Zj(e,t){if(e)return e;if(t===`busy`)return{type:`busy`};if(t===`retry`)return{type:`retry`,attempt:0,message:``,next:0}}var Qj=[],$j={};function eM(e){let t=(0,V.c)(4),n=e?.enabled??!0,r;t[0]===n?r=t[1]:(r=e=>n?wA(e):$j,t[0]=n,t[1]=r);let i;return t[2]===n?i=t[3]:(i=(e,t)=>n?e.subscribeAllSelected(tM,t):nM,t[2]=n,t[3]=i),Jj(r,SA,i)}function tM(e){return e.session_status}function nM(){}function rM(e){let t=(0,V.c)(5),n=e?.enabled??!0,r=Y(oM),i;t[0]!==n||t[1]!==r?(i=e=>n?CA(e,r):Qj,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(iM,t):aM,t[3]=n,t[4]=a),Jj(i,xA,a)}function iM(e){return e.session}function aM(){}function oM(e){return e.pendingDeletionIds}var sM=!1,cM=0,lM=0,uM=1500,dM=new Set([`patch`,`step-start`,`step-finish`]),fM=5e3,pM=4e4,mM=15e3,hM=6e4,gM=6e4,_M=e=>!e||e.length===0?``:e.map(e=>e.id).sort(vM).join(`|`),vM=(e,t)=>e<t?-1:+(e>t),yM=e=>JSON.stringify(e);function bM(e,t){return yM(e)===yM(t)}var xM=5e3,SM=new Map,CM=(e,t)=>`${e}:${t}`;function wM(e,t){try{let n=H();return n?bl(n.getTranscript(U(e,t))):!1}catch{return!1}}async function TM(e,t){try{if(!H())return;await bu(e,t)}catch{}}function EM(e,t,n,r){if(!e||e===`global`||!t)return;let i=CM(e,t),a=SM.get(i);if(a&&Date.now()-a.enqueuedAt<xM){Promise.resolve().then(()=>{wM(e,t)&&TM(e,t)});return}SM.set(i,{sessionID:t,directory:e,enqueuedAt:Date.now(),request:r}),Promise.resolve().then(async()=>{let a=n.getChild(e);if(!a){SM.delete(i);return}try{await OM(e,t,a,r)}catch{}finally{SM.delete(i)}})}function DM(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&&pb(t,r)}t.domainActivityHint?.kind===`terminal`&&r===AM&&e===kM&&EM(e,r,n,{reason:`session-idle`})}}async function OM(e,t,n,r){let i=n.getState().session_status?.[t];ms.recovery.materializing({reason:r?.reason??`ensure-session-messages`,directory:e,sessionID:t,messageID:r?.messageID,partID:r?.partID});try{let a=()=>{try{return H()?.getTranscript(U(e,t)).liveRevision}catch{return}},o=a(),s=await Wy({directory:e,sessionID:t,limit:Um(),signal:AbortSignal.timeout(3e4),purpose:`materialize`});if(r?.isStale?.())return`skipped`;let c=Ky({directory:e,sessionID:t,purpose:`materialize`,page:s,capturedLiveRevision:o,liveRevision:a(),skipPartTypes:dM});return wM(e,t)&&await TM(e,t),c.applied?(Pb({directory:e,sessionID:t,store:n,isStale:r?.isStale}),s.records.length===0||i&&i.type!==`idle`&&!r?.isStale?.()&&await _b(e,n,[t]),`ready`):`skipped`}catch{return`error`}}var kM=``,AM=``,jM=null,MM=``,NM=``,PM=new Map,FM=15e3,IM=(e,t)=>`${e}\n${t}`;function LM(e=Date.now()){for(let[t,n]of PM.entries())n<=e&&PM.delete(t)}var RM=new Set,zM=new Set,BM=(e,t)=>!e||!t?null:`${e}:${t}`,VM=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},HM=(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)&&i()===`local`)return!0;let a=Te()?.notifications;return a?.notifyAgentCompletion&&a.notifyAgentCompletion({title:VM(r.title),body:VM(r.body),tag:VM(r.tag),kind:VM(r.kind),sessionId:VM(r.sessionId),directory:VM(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 UM(e,t){!e||!t||!jM||WA(e,t)&&EM(e,t,jM,{reason:`session-idle`})}function WM(e){jM=e,e&&UM(kM,AM)}function GM(e,t){kM=e,AM=t,UM(e,t)}function KM(e,t,n){if(!e||!t)return;let r=IM(e,t);if(!n){PM.delete(r);return}PM.set(r,Date.now()+FM)}function qM(e,t){if(!e||!t){MM=``,NM=``;return}MM=e,NM=t}function JM(){let e=[],t=new Set,n=(n,r)=>{if(!n||!r)return;let i=IM(n,r);t.has(i)||(t.add(i),e.push({directory:n,sessionID:r}))};return n(MM,NM),n(kM,AM),e}function YM(){return typeof document<`u`&&document.hasFocus()}function XM(e,t){return t?kM&&AM&&e===kM&&t===AM&&YM()?!0:(LM(),PM.has(IM(e,t))):!1}function ZM(){return sM||Date.now()-cM<uM}function QM(e){return!kM||!AM||e!==kM?null:{directory:kM,sessionId:AM}}function $M(e,t){return ZA(t,{directory:e,viewedSession:QM(e)})}function eN(e,t,n,r=pM,i=mM){return!(e<=0||n-e<r||n-t<i)}function tN({isViewed:e,status:t,lastTransportActivityAt:n,lastDomainActivityAt:r,lastFullResyncAt:i,now:a,transportStaleThresholdMs:o=pM,domainStaleThresholdMs:s=hM,recoveryCooldownMs:c=gM}){return!(!e||t?.type!==`busy`&&t?.type!==`retry`||n<=0||a-n>=o||r<=0||a-r<s||a-i<c)}var nN=v(),rN=(e,t)=>{!nN||typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:vscode-notification-event`,{detail:{directory:e,payload:t}}))},iN=()=>({sessionDirectoryById:new Map,messageSessionById:new Map,sessionMessageIdsById:new Map}),aN=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},oN=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},sN=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},cN=(e,t,n)=>{!t||!n||n===`global`||e.sessionDirectoryById.set(t,n)},lN=(e,t,n,r)=>{if(!t)return;cN(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)},uN=(e,t,n,r)=>{if(!t||!n)return;cN(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]))},dN=(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))},fN=(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)},pN=(e,t,n)=>{let r=new Set;for(let i of n.session)i?.id&&(r.add(i.id),cN(e,i.id,t));try{let n=H(),i=n?.getCacheBudget?.().listCanonical({directory:t});if(i)for(let a of i){if(a.scope.directory!==t)continue;r.add(a.scope.sessionID),cN(e,a.scope.sessionID,t);let i=n?.getTranscript?.(U(t,a.scope.sessionID));if(i){let n=Bu(i);lN(e,a.scope.sessionID,t,n)}}}catch{}for(let[n,i]of e.sessionDirectoryById)i===t&&(r.has(n)||fN(e,n))},mN=(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 cN(n,e,r),r}try{let t=H()?.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 cN(n,e,t),t}}catch{}return null},hN=(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(H()??mu(t,r)).hasSession?.(U(t,n))??!1}catch{return!1}},gN=(e,t,n)=>{try{let e=H();if(e&&e.getParts(U(t,n),n).length>0)return!0}catch{}return!1},_N=e=>!kM||!AM?null:e.getChild(kM)?kM:null,vN=(e,t,n,r)=>{let i=aN(t),a=oN(n);if(a){if(i&&i!==`global`&&hN(r,i,a))return cN(e,a,i),i;let t=e.sessionDirectoryById.get(a);if(t&&r.getChild(t))return t;let n=mN(a,r,e);if(n)return n}let o=sN(n);if(o){if(i&&i!==`global`&&gN(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(gN(r,i,o))return i;for(let[e]of r.children)if(gN(r,e,o))return e;let n=_N(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},yN=(e,t,n,r)=>{if(e)return e;if(t){let e=r.messageSessionById.get(t);if(e)return e}if(n&&n===kM&&AM)return AM};function bN(e,t){let n=oN(e)??(e.type===`session.deleted`?e.properties.info?.id:void 0);if(n)return n;let r=sN(e);return r?t.get(r):void 0}function xN(e,t){return e===t}var SN=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`,CN=(e,t,n)=>{if(!t||t===`global`)return;let r=oN(n);switch(r&&cN(e,r,t),n.type){case`session.created`:case`session.updated`:{let r=n.properties.info;r?.id&&cN(e,r.id,t);return}case`session.deleted`:{let t=n.properties.sessionID;t&&fN(e,t);return}case`message.updated`:{let r=n.properties.info;r?.id&&r.sessionID&&uN(e,r.sessionID,r.id,t);return}case`message.removed`:{let t=n.properties;t.messageID&&dN(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&&uN(e,a,o,t);return}default:return}};async function wN(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,_M(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(!XM(e,t))for(let r of n){if(i.has(r.id))continue;let n=BM(t,r.id);if(!n||RM.has(n))continue;RM.add(n);let a=r.questions?.[0],o=a?.header?.trim()||`Input needed`,s=a?.question?.trim()||`Agent is waiting for your response`;oD.info(o,{id:`question-${n}`,description:s,action:{label:`Open session`,onClick:()=>yj(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)??``;_M(e.question[r])===i&&delete t[r]}return{question:t}})}catch{}try{let n=new Map(a.map(e=>[e,_M(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=aj.getState(),l=v()?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 BS(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=XM(e,t);if(!a)for(let t of n)i.has(t.id)||xj({permission:t,directory:e,isViewed:a,pendingIds:zM,show:(e,t)=>oD.info(e,t),openSession:yj})}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)??``;_M(e.permission[r])===i&&delete t[r]}return{permission:t}})}catch{}}}function TN(e,t,n){n?.statusOnly}function EN(e){return e.isFirstConnect&&!e.disconnectedBeforeFirstConnect}function DN(e){return{resyncBlockingRequests:!0,ingestRoutingIndex:!e?.statusOnly}}async function ON(e,t,n,r,i,a){let o=$M(e,t.getState());await _b(e,t,o);let s=XA($M(e,t.getState()),{directory:e,viewedSession:QM(e)});if(s.length>0){let a=B.getScopedSdkClient(e);await Promise.all(s.map(async o=>{let s=i(o);ms.recovery.materializing({reason:r,directory:e,sessionID:o});let c=(await Jf(async()=>{let e=await a.session.get({sessionID:o});return Gj(e,`session.get`),e}).catch(()=>null))?.data;if(c&&xN(s,i(o))){let r=tp(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?bM(n[t],r)||(n=[...e.session],n[t]=r,i=!0):(n=[...e.session],n.push(r),n.sort((e,t)=>vM(e.id,t.id)),r.parentID||(a+=1),i=!0),i?{session:n,sessionTotal:a}:e}),cN(n,r.id,e)}let l=i(o),u=t.getState(),d=u.session_status?.[o],f=u.session_status_observed_at?.[o],p=()=>!xN(l,i(o)),m=l;try{let r=await Wy({directory:e,sessionID:o,limit:Um(),signal:AbortSignal.timeout(3e4),purpose:`recovery`});if(p()||!Ky({directory:e,sessionID:o,purpose:`recovery`,page:r,capturedLiveRevision:m,liveRevision:i(o),skipPartTypes:dM}).applied)return;let a=pu().getTranscript(U(e,o));lN(n,o,e,a.messageOrder.map(e=>a.messagesByID[e]).filter(e=>!!e)),Pb({directory:e,sessionID:o,store:t,transcript:a,isStale:p}),await vb({directory:e,sessionID:o,store:t,statusBeforePull:d,statusObservedAtBeforePull:f,hasMessages:a.messageOrder.length>0,isStale:p})}catch{}}))}let c=DN(a);c.resyncBlockingRequests&&await wN(e,t,o),c.ingestRoutingIndex&&pN(n,e,t.getState())}function kN(e){try{let t=H(),n=r(),i=s();return t?.getCacheBudget?.().listCanonical({transport:n,generation:i})?.filter(t=>t.scope.sessionID===e).map(e=>U(e.scope.directory,e.scope.sessionID,{transport:e.scope.transport,generation:e.scope.generation}))??[]}catch{return[]}}function AN(e){let t=oN(e)??void 0;if(t)return t;if(e.type===`message.updated`)return e.properties.info?.sessionID??void 0}var jN=null,MN=0;function NN(e){return`${e.directory}\0${e.sessionID}\0${e.transport??``}\0${e.generation??``}`}function PN(){MN===0&&(jN={byScope:new Map,routing:[],debug:[]}),MN+=1}function FN(){if(MN===0||(--MN,MN>0))return;let e=jN;if(jN=null,e)try{for(let t of e.byScope.values()){let n=gu(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=yN(r.sessionID??t.transcriptSessionID,r.messageID??e,t.scope.directory,t.routingIndex);n&&EM(t.scope.directory,n,t.childStores,{reason:r.reason,messageID:r.messageID,partID:r.partID})}}for(let t of e.debug)t.changed?ms.dispatch.eventApplied(t.payloadType,t.transcriptSessionID,t.eventMessageID):ms.dispatch.eventNoChange(t.payloadType,t.transcriptSessionID,t.eventMessageID);for(let t of e.routing)CN(t.routingIndex,t.resolvedDirectory,t.payload)}finally{jN=null,MN=0}}function IN(e,t,n,i,a,o){let c=zA({sessionID:t,resolvedDirectory:n,transport:r(),generation:s(),listCanonicalScopes:kN});if(jN){for(let n of c){let r=NN(n),s=jN.byScope.get(r);s||(s={scope:n,events:[],transcriptSessionID:t,eventMessageIDs:[],childStores:a,routingIndex:o},jN.byScope.set(r,s)),s.events.push(e),s.eventMessageIDs.push(i)}jN.debug.push({payloadType:e.type,transcriptSessionID:t,eventMessageID:i,changed:!1}),jN.routing.push({routingIndex:o,resolvedDirectory:n,payload:e});return}let l=!1;for(let n of c){let r=gu(n,{type:`sse-event`,event:e})??{applied:!1,changed:!1};r.changed&&(l=!0);let s=r.materialization;if(s){let e=yN(s.sessionID??t,s.messageID??i,n.directory,o);e&&EM(n.directory,e,a,{reason:s.reason,messageID:s.messageID,partID:s.partID})}}l?ms.dispatch.eventApplied(e.type,t,i):ms.dispatch.eventNoChange(e.type,t,i),CN(o,n,e)}function LN(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&&wD(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`&&aj.getState().applySnapshot({sessions:t.sessions})}return}let i=vN(r,e,t,n);if(HM(t,i))return;if(JA(t,i),uj(i,t),i===`global`||!i){if(wl(t.type)){let e=AN(t);if(e){IN(t,e,i||`global`,sN(t)??void 0,n,r);return}}let e=ZM(),a=Wk(t);if(!a)return;if(a.type===`refresh`)e||Zk.setState({reload:`pending`});else if(a.type===`project`){let e=Zk.getState();Zk.setState({projects:Gk(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=oN(t);if(e){let t=mN(e,n,r);t&&(a=n.getChild(t),o=t)}}if(!a){if(wl(t.type)){let e=AN(t);if(e){IN(t,e,o,sN(t)??void 0,n,r);return}}let e=Wk(t);if(e?.type===`refresh`)Zk.setState({reload:`pending`});else if(e?.type===`project`){let t=Zk.getState();Zk.setState({projects:Gk(t,e.project).projects})}return}if(n.mark(o),t.type===`permission.asked`){let e=t.properties;if(aj.getState().isSessionAutoAccepting(e.sessionID)){CN(r,o,t),v()&&BS(e.sessionID,e.id,`once`).catch(()=>void 0);return}let n=a.getState().session.find(t=>t.id===e.sessionID)??Y.getState().activeSessions.find(t=>t.id===e.sessionID);if(n&&!n.parentID){let t=XM(o,e.sessionID);xj({permission:e,directory:o,isViewed:t,pendingIds:zM,show:(e,t)=>oD.info(e,t),openSession:yj})}}if(t.type===`permission.replied`){let e=t.properties,n=bj(e.sessionID,e.requestID);n&&(zM.delete(n),oD.dismiss(`permission-${n}`))}if(t.type===`question.asked`){let e=t.properties,n=e.sessionID,r=a.getState().session.find(e=>e.id===n)??Y.getState().activeSessions.find(e=>e.id===n);if(r&&!r.parentID){let t=BM(n,e.id);if(!XM(o,n)&&t&&!RM.has(t)){RM.add(t);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;oD.info(i,{id:`question-${t}`,description:a,action:{label:`Open session`,onClick:()=>yj(n,o)}})}}}if(t.type===`question.replied`||t.type===`question.rejected`){let e=t.properties,n=BM(e.sessionID,e.requestID);n&&(RM.delete(n),oD.dismiss(`question-${n}`))}if(t.type===`session.idle`){let e=t.properties.sessionID,n=a.getState().session.find(t=>t.id===e)??Y.getState().activeSessions.find(t=>t.id===e);e&&n&&!n.parentID&&tk({directory:o,session:e,time:Date.now(),viewed:XM(o,e),type:`turn-complete`})}if(t.type===`session.idle`){let e=oN(t);if(e&&o&&o!==`global`){let t=a.getState().session.find(t=>t.id===e),r=t?t.parentID:null,i=BA({idleSessionID:e,directory:o,parentID:r,activeSessionID:AM,activeDirectory:kM});i.action===`materialize-parent`?EM(o,i.sessionID,n,{reason:`child-session-idle`}):i.action===`materialize-now`?EM(o,i.sessionID,n,{reason:`session-idle`}):i.action===`defer-until-viewed`&&UA(o,i.sessionID)}}let s=a.getState(),c=oN(t)??void 0,l=sN(t)??void 0;if(t.type===`session.created`){let e=t.properties.info;Wb(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`)&&Xb(o,c,l))return;if(wl(t.type)){let e=AN(t);if(!e){CN(r,o,t);return}IN(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};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=Yk(u,t,{onSetSessionTodo:(e,t)=>{xb.getState().setSessionTodos(e,t)},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=oN(t)??void 0,n=sN(t)??void 0;ms.dispatch.eventApplied(t.type,e,n)}else{let e=oN(t)??void 0,n=sN(t)??void 0;ms.dispatch.eventNoChange(t.type,e,n)}if(p){let e=yN(p.sessionID??oN(t)??void 0,p.messageID??sN(t)??void 0,o,r);e&&EM(o,e,n,{reason:p.reason,messageID:p.messageID,partID:p.partID})}CN(r,o,t)}var RN=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:opencode-update-available`,{detail:e}))},zN=null,BN=async()=>{let e=i();return(!zN||zN.runtimeKey!==e)&&(zN={runtimeKey:e,promise:F(`/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 F(`/health`,{signal:AbortSignal.timeout(4e3)});return t.ok?(await t.json()).opencodeBinarySource===`bundled`:!1}).catch(()=>!1)}),zN.promise},VN=e=>{typeof window>`u`||BN().then(t=>{t||RN(e)})};function HN(e,t,n){return e!==t||n!==!1}function UN(e){let t=G(e=>e.settingsMessageStreamTransport),n=(0,W.useRef)(null);n.current||=new fA;let a=n.current,o=(0,W.useRef)(null);o.current||=iN();let c=o.current,l=(0,W.useRef)(0),u=(0,W.useRef)(new Map),f=(0,W.useRef)(new Map),p=(0,W.useRef)(new Map),m=(0,W.useRef)(new Set),h=(0,W.useRef)(null),g=(0,W.useRef)(!1),_=(0,W.useRef)(!1),y=(0,W.useRef)({directory:e.directory,enabled:e.bootstrapDirectory});y.current={directory:e.directory,enabled:e.bootstrapDirectory};let b=e=>{let t=y.current;return HN(e,t.directory,t.enabled)},x=(0,W.useMemo)(()=>({childStores:a,sdk:e.sdk,directory:e.directory}),[a,e.sdk,e.directory]);(0,W.useEffect)(()=>(WM(a),()=>{WM(null)}),[a]);let S=(0,W.useCallback)((e,t,n)=>{if(TN(e,a.children.get(e),n),!b(e))return;let r=a.children.get(e);if(!r)return;let i=m.current;i.has(e)||(n?.statusOnly||p.current.set(e,Date.now()),i.add(e),ON(e,r,c,t,t=>f.current.get(IM(e,t))??0,n).catch(()=>{}).finally(()=>{i.delete(e)}))},[a,c]);(0,W.useEffect)(()=>{v()||aj.getState().hydrate().catch(()=>void 0)},[e.sdk]),(0,W.useEffect)(()=>{let t=new Set;a.configure({onBootstrap:n=>{if(!b(n)||t.has(n))return;t.add(n);let r=a.getChild(n);r&&(async()=>{if(await qt(),!b(n))return;let t=Zk.getState();await PA({directory:n,sdk:e.sdk,getState:()=>r.getState(),set:e=>{r.setState(e),e.session&&pN(c,n,r.getState())},global:{config:t.config,projects:t.projects}})})().finally(()=>{t.delete(n)})},onDispose:e=>{t.delete(e)},isBooting:e=>t.has(e),isLoadingSessions:()=>!1})},[a,e.sdk,c]),(0,W.useEffect)(()=>{let t=++lM;sM=!0;let n=Zk.getState().actions;return qt().then(()=>{if(lM===t)return NA(e.sdk,e=>{lM===t&&n.set(e)})}).then(()=>{lM===t&&(cM=Date.now())}).finally(()=>{lM===t&&(sM=!1)}),()=>{lM===t&&(sM=!1)}},[e.sdk]),(0,W.useEffect)(()=>{let n=Lk({sdk:e.sdk,transport:t,routeDirectory:(e,t)=>vN(c,e,t,a),onFlushStart:()=>{PN()},onFlushEnd:()=>{FN()},onNormalizedEvent:(e,t)=>{DM(e,t,a);let n=t.domainActivityHint?.sessionID??t.admissionHint?.sessionID;n&&e===kM&&n===AM&&(t.domainActivityHint||t.admissionHint)&&u.current.set(IM(e,n),Date.now())},onEvent:(e,t)=>{let n=bN(t,c.messageSessionById)??null;if(n&&SN(t)){let t=IM(e,n);f.current.set(t,(f.current.get(t)??0)+1)}if(n&&e===kM&&n===AM&&(t.type===`message.updated`||t.type===`message.removed`||t.type===`message.part.updated`||t.type===`message.part.removed`||t.type===`message.part.delta`)&&u.current.set(IM(e,n),Date.now()),n&&e===kM&&n===AM&&t.type===`session.status`){let r=t.properties.status;if(r?.type===`busy`||r?.type===`retry`){let t=IM(e,n);u.current.has(t)||u.current.set(t,Date.now())}r?.type===`idle`&&u.current.delete(IM(e,n))}if(n&&(t.type===`session.idle`||t.type===`session.deleted`)&&u.current.delete(IM(e,n)),rN(e,t),t.type===`installation.update-available`){let e=typeof t.properties?.version==`string`?t.properties.version:``;e&&VN({version:e})}LN(e,t,a,c)},onTransportActivity:()=>{let e=Date.now();l.current=e,Sm(e)},onReconnect:()=>{G.setState({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let e=!g.current;g.current=!0;let t=EN({isFirstConnect:e,disconnectedBeforeFirstConnect:_.current});for(let e of a.children.keys())S(e,`stream-reconnect`,{statusOnly:t})},onDisconnect:e=>{g.current||(_.current=!0);let{hasEverConnected:t}=G.getState();G.setState({isConnected:!1,connectionPhase:t?`reconnecting`:`connecting`,lastDisconnectReason:e})},onRecoveryContextCaptured:e=>{Eu({lastEventID:e.lastEventId,reason:e.reason,generation:e.runtimeGeneration})},onCompensation:e=>{Du(e)},onTransportSwitch:()=>{let{hasEverConnected:e}=G.getState();G.setState({isConnected:!1,connectionPhase:e?`reconnecting`:`connecting`});for(let e of a.children.keys())S(e,`transport-switch`)}});h.current=n.reconnect;let r=Cm(n.reconnect);return()=>{r(),h.current===n.reconnect&&(h.current=null),n.cleanup()}},[e.sdk,a,c,t,S]),(0,W.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 a.children.entries()){let r=n.getState();if(YA(r).length===0){p.current.delete(e);continue}let i=p.current.get(e)??0;eN(l.current,i,t)&&(h.current?.(`active_stream_stale`),S(e,`stale-status-resync`));let a=QM(e);if(!a)continue;let o=r.session_status?.[a.sessionId],s=IM(e,a.sessionId),c=u.current.get(s);if((o?.type===`busy`||o?.type===`retry`)&&!c){u.current.set(s,t);continue}if(o?.type===`idle`||!o){u.current.delete(s);continue}tN({isViewed:!0,status:o,lastTransportActivityAt:l.current,lastDomainActivityAt:c??0,lastFullResyncAt:i,now:t})&&S(e,`domain-stale-resync`)}}).finally(()=>{t=!1}))},r=setInterval(n,fM);return n(),()=>{e=!0,clearInterval(r)}},[a,S]),(0,W.useEffect)(()=>{let t;if(e.directory){let n=a.ensureChild(e.directory,{bootstrap:HN(e.directory,e.directory,e.bootstrapDirectory)}),r=Ej(i(),e.directory);r&&(n.setState(e=>({session_status:{...e.session_status,[r.sessionId]:e.session_status[r.sessionId]??r.status}})),t=setTimeout(()=>{n.setState(e=>e.session_status[r.sessionId]===r.status?{session_status:{...e.session_status,[r.sessionId]:{type:`idle`}}}:e)},Sj)),pN(c,e.directory,n.getState())}return()=>{t&&clearTimeout(t)}},[e.directory,e.bootstrapDirectory,a,c]);let C=(0,W.useRef)(null),w=(0,W.useRef)({transport:r(),generation:s()});return(0,W.useEffect)(()=>{if(C.current)return;let e=Gy({childStores:a,getViewedSession:()=>JM()[0]??null,getViewedSessions:()=>JM()});return C.current=e,w.current={transport:r(),generation:s()},()=>{let e=w.current;ku(`provider-dispose`);let t=C.current?.repository;t&&t.purgeGeneration(e.transport,e.generation),C.current?.destroy(),C.current=null}},[a]),(0,W.useEffect)(()=>(bd(e.sdk,a,e.directory,(e,t)=>{cN(c,e,t)}),cx(e.sdk,a,()=>B.getDirectory()||e.directory),lb((e,t,n)=>{let r=new Set(n),i=Wo(e)??e,a={...t};for(let[e,t]of oj.getState().statusById)r.has(e)||t.directory===i&&(a[e]={type:t.status});dj(e,a,n)}),()=>{lb(void 0)}),[e.sdk,e.directory,a,c]),(0,W.useEffect)(()=>d(e=>{if(!e.transportIdentityChanged){w.current={transport:r(),generation:s()};return}let t=w.current;ku(`runtime-switch`);let n=C.current?.repository;n&&n.purgeGeneration(t.transport,t.generation),w.current={transport:r(),generation:s()}}),[]),(0,W.useEffect)(()=>{if(!e.directory)return;let t=a.getChild(e.directory);if(!t)return;let n=e.directory,r=()=>{RA(t.getState(),{directory:n,store:t})};r();let i=t.subscribe(()=>{r()}),o=[],s=()=>{for(let e of o)e();o=[];let e=H()??mu(n,t),i=t.getState().session_status??{};for(let[t,a]of Object.entries(i))!a||a.type===`idle`||o.push(e.subscribe(U(n,t),r));r()};s();let c=lu(s);return()=>{c(),i();for(let e of o)e()}},[e.directory,a]),(0,Bj.jsx)(Uj.Provider,{value:x,children:e.children})}function WN(e,t){let n=(0,V.c)(4),r=Kj(),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 GN(e,t){let n=WN(t);return Ae(n,e)}function KN(e){let{childStores:t}=Kj(),n=e.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),r=(0,W.useRef)(e);r.current=e;let i=(0,W.useCallback)(e=>n?Lj(t,r.current,e):()=>void 0,[t,n]),a=(0,W.useCallback)(()=>n?Ij(t,r.current):``,[t,n]);return W.useSyncExternalStore(i,a,a)}function qN(){let e=(0,V.c)(2),{childStores:t}=Kj(),n;return e[0]===t?n=e[1]:(n=e=>Fj(t,e),e[0]=t,e[1]=n),n}function JN(e,t){let n=Kj(),r=t??n.directory;return Wu(e,r,WN(r))}function YN(e,t){let n=Kj(),r=t??n.directory;return rd(e,r,WN(r))}function XN(e,t){let n=(0,V.c)(8),r=Kj(),i=t??r.directory,a=WN(i),o=(0,W.useRef)(void 0),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e){o.current=void 0;return}let t=(H()??mu(i,a)).getRequestState?.(U(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 ZN;let n=(H()??mu(i,a)).subscribe(U(i,e),()=>{t()}),r=lu(()=>{n(),o.current=void 0,n=(H()??mu(i,a)).subscribe(U(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 W.useSyncExternalStore(u,c,c)}function ZN(){}function QN(e,t,n){let r=Kj(),i=t??r.directory;return ad(e,i,WN(i),n)}function $N(e,t){let n=(0,V.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=WN(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):eP,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return W.useSyncExternalStore(c,o,o)}function eP(){}function tP(e,t){let n=(0,V.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=WN(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):nP,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return W.useSyncExternalStore(c,o,o)}function nP(){}function rP(e,t){let n=(0,V.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=WN(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):iP,n[4]=r,n[5]=a,n[6]=c):c=n[6];let l=c;return W.useSyncExternalStore(l,s,s)}function iP(){}function aP(e,t,n){let r=(0,V.c)(6),i=WN(t,n),a;r[0]!==e||r[1]!==i?(a=()=>e?i.getState().permission[e]??$P:$P,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):oP,r[3]=e,r[4]=i,r[5]=s):s=r[5];let c=s;return W.useSyncExternalStore(c,o,o)}function oP(){}function sP(e,t,n){let r=(0,V.c)(2),i=WN(t,n),a;return r[0]===e?a=r[1]:(a=t=>e?t.question[e]??eF:eF,r[0]=e,r[1]=a),Ae(i,a)}function cP(e){return GN(lP,e)}function lP(e){return e.session}var uP=e=>e.permission,dP=e=>e.question;function fP(e,t,n,r){let i=(0,V.c)(6),a;i[0]===r?a=i[1]:(a={sessionID:null,sessions:null,requestsBySession:null,result:r},i[0]=r,i[1]=a);let o=(0,W.useRef)(a),s;return i[2]!==r||i[3]!==n||i[4]!==e?(s=t=>{let i=n(t),a=o.current;if(a.sessionID===e&&a.sessions===t.session&&a.requestsBySession===i)return a.result;let s=Hp(t.session,i,e,r),c=Vp(a.result,s)?a.result:s;return o.current={sessionID:e,sessions:t.session,requestsBySession:i,result:c},c},i[2]=r,i[3]=n,i[4]=e,i[5]=s):s=i[5],GN(s,t)}function pP(e,t){return fP(e,t,uP,$P)}function mP(e,t){return fP(e,t,dP,eF)}function hP(e,t){let n=(0,V.c)(9),r=gP(e,t),i=gP(e),a;n[0]===e?a=n[1]:(a=t=>t.activeSessions.find(t=>t.id===e)??t.archivedSessions.find(t=>t.id===e)??null,n[0]=e,n[1]=a);let o=Y(a),s=r??i??o,c=s?.parentID??null,l=gP(c,t),u=gP(c),d;n[2]===c?d=n[3]:(d=e=>e.activeSessions.find(e=>e.id===c)??e.archivedSessions.find(e=>e.id===c)??null,n[2]=c,n[3]=d);let f=Y(d),p=l??u??f,m;return n[4]!==s||n[5]!==t||n[6]!==p||n[7]!==e?(m=zj(e,s,p,t),n[4]=s,n[5]=t,n[6]=p,n[7]=e,n[8]=m):m=n[8],m}function gP(e,t){let n=(0,V.c)(7),{childStores:r}=Kj(),i;n[0]!==r||n[1]!==t||n[2]!==e?(i=()=>t?r.getChild(t)?.getState().session.find(t=>t.id===e):TA(qj(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(_P,e),n[4]=r,n[5]=t,n[6]=o):o=n[6];let s=o;return W.useSyncExternalStore(s,a,a)}function _P(e){return e.session}function vP(e){let t=Rj(e,gP(e),Y((0,W.useCallback)(t=>e?t.activeSessions.find(t=>t.id===e)??null:null,[e]))),n=(0,W.useRef)(null),[,r]=W.useState(0);if((0,W.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 yP(e,t){return gP(e,t)?.directory??void 0}function bP(){return Kj().directory}function xP(){return Kj().childStores}var SP=[],CP=40,wP=4,TP=30,EP=4,DP=30,OP=new WeakMap,kP=(e,t,n)=>`${e}\u0000${+!!t}\u0000${n??``}`,AP=e=>{let t=OP.get(e);return t||(t=new Map,OP.set(e,t)),t},jP=(e,t,n,r)=>{let i=OP.get(e);if(!i)return;let a=kP(t,n,r),o=i.get(a);if(o)return i.delete(a),i.set(a,o),o},MP=(e,t)=>{if(!t.sessionID)return;let n=AP(e),r=kP(t.sessionID,t.suspendPartUpdates,t.suspendedPartUpdatesMessageID),i=v()?TP:Fm()?DP:null;if(i!==null&&t.list.length>i){n.delete(r);return}n.delete(r),n.set(r,t);let a=v()?wP:Fm()?EP:CP;for(;n.size>a;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}};function NP(e,t){let n=OP.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 PP=`The following tool was executed by the user`,FP=(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(PP)}):!1};function IP(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 LP=(e,t)=>{for(let n of e.list){let r=t.parts[n.info.id]??QP;if(e.suspendPartUpdates){let i=e.suspendedPartUpdatesMessageID;if((!i||n.info.id===i)&&!FP(t.parts,n.info,r)&&!IP(n.parts,r))continue}if(Bs(n.parts,r,n.info)!==n.parts)return!1}return!0},RP=(e,t,n,r)=>{let i=jP(e,t.sessionID,n,r);if(i&&i.sourceMessages===t.messages&&i.revertMessageID===t.revertMessageID&&i.suspendPartUpdates===n&&i.suspendedPartUpdatesMessageID===r&&LP(i,t))return i};function zP(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?os(i,r):n.length===0?ZP:i.slice(),revertMessageID:r}}function BP(e,t,n=!1,r){let i=e.sessionID,{sourceMessages:a,visibleMessages:o,revertMessageID:s}=zP(e,t),c=new Map,l=o.map(i=>{let a=t?.byId.get(i.id),o=e.parts[i.id]??QP,s=n&&a&&(!r||i.id===r)&&!FP(e.parts,i,o)&&!IP(a.parts,o)?a.parts:Bs(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 VP(e,t){let n=Kj(),r=t??n.directory;return td(e,r,WN(r))}function HP(e,t){let n=Kj(),r=t??n.directory;return ud(e,r,WN(r))}function UP(e,t){let n=Kj(),r=t??n.directory;return cd(e,r,WN(r))}function WP(e,t){let n=(0,V.c)(8),r=Kj(),i=t??r.directory,a=WN(i),o=(0,W.useRef)(Aj),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e)return o.current=Aj,Aj.history;let t=(H()??mu(i,a)).getTranscript(U(i,e)),n=a.getState().session.find(t=>t.id===e)?.revert?.messageID,r=Pj({sessionID:e,messages:Bu(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 GP;let n=(H()??mu(i,a)).subscribe(U(i,e),()=>{t()}),r=lu(()=>{n(),n=(H()??mu(i,a)).subscribe(U(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 W.useSyncExternalStore(u,c,c)}function GP(){}function KP(e,t,n){let r=(0,V.c)(16),i=Kj(),a=t??i.directory,o=WN(a),s=!!n?.suspendPartUpdates,c=n?.suspendPartUpdatesForMessageId??void 0,l,u;r[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=[],u=new Map,r[0]=l,r[1]=u):(l=r[0],u=r[1]);let d;r[2]!==e||r[3]!==s||r[4]!==c?(d={sessionID:e,sourceMessages:ZP,visibleMessages:ZP,revertMessageID:void 0,suspendPartUpdates:s,suspendedPartUpdatesMessageID:c,list:l,byId:u},r[2]=e,r[3]=s,r[4]=c,r[5]=d):d=r[5];let f=(0,W.useRef)(d),p;r[6]!==n?.suspendPartUpdates||r[7]!==n?.suspendPartUpdatesForMessageId||r[8]!==e||r[9]!==o||r[10]!==a?(p=()=>{if(!e)return SP;let t=(H()??mu(a,o)).getTranscript(U(a,e)),r=!!n?.suspendPartUpdates,i=n?.suspendPartUpdatesForMessageId??void 0,s=Bu(t,f.current.sessionID===e?f.current.sourceMessages:jP(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=RP(o,l,r,i);if(u)return f.current=u,u.list;let d=BP(l,f.current.sessionID===e?f.current:jP(o,e,r,i),r,i);return f.current=d,MP(o,d),d.list},r[6]=n?.suspendPartUpdates,r[7]=n?.suspendPartUpdatesForMessageId,r[8]=e,r[9]=o,r[10]=a,r[11]=p):p=r[11],n?.suspendPartUpdates,n?.suspendPartUpdatesForMessageId;let m=p,h;r[12]!==e||r[13]!==o||r[14]!==a?(h=t=>{if(!e)return qP;Lu(a,e);let n=(H()??mu(a,o)).subscribe(U(a,e),()=>{t()}),r=lu(()=>{n(),n=(H()??mu(a,o)).subscribe(U(a,e),()=>{t()}),Ru(a,e),Lu(a,e),t()}),i=o.subscribe(()=>{t()});return()=>{r(),n(),i()}},r[12]=e,r[13]=o,r[14]=a,r[15]=h):h=r[15];let g=h;return W.useSyncExternalStore(g,m,m)}function qP(){}var JP=new Set;function YP(e,t){let n=bP(),r=t??n,i=WN(r),a=W.useRef(0);W.useEffect(()=>{if(!e)return;let t=H()??mu(r,i),n=U(r,e),o=t.getTranscript(n),s=t.hasSession?.(n);if(Vu(o,{resolved:s===!0||void 0}).renderable){Pb({directory:r,sessionID:e,store:i});return}if(!i.getState().session.some(t=>t.id===e))return;let c=`${r}:${e}`;if(JP.has(c))return;let l=++a.current,u=()=>l!==a.current;JP.add(c),(async()=>{try{if(H())try{if(await vu(r,e),u())return;Pb({directory:r,sessionID:e,store:i,isStale:u})}catch{if(u())return;await OM(r,e,i,{reason:`ensure-session-messages`,isStale:u})}else await OM(r,e,i,{reason:`ensure-session-messages`,isStale:u})}catch{}finally{JP.delete(c)}})()},[e,i,r])}function XP(e,t){let n=Kj(),r=t??n.directory;return Hu(e,r,WN(r))}var ZP=[],QP=[],$P=[],eF=[],tF=[],nF=()=>({requestID:fe(),queueItemID:fe(),operationID:fe(),messageID:ge(`msg`)}),rF=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}:{}}),iF,aF=(e,t)=>{let n=e.establishing;if(!n||t&&n.draftID!==t||n.pending.length===0)return tF;if(iF&&iF.pending===n.pending&&iF.draftID===t)return iF.items;let r=n.pending.map(rF);return iF={pending:n.pending,draftID:t,items:r},r},oF=e=>t=>t.flights[e]??null,sF=e=>t=>!!e&&t.establishing?.draftID===e,cF=e=>t=>aF(t,e),lF=(e,t)=>({flightKind:e,inFlight:e!==null,establishing:t}),uF=Oe()((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??nF(),o=[...n.attachments??[]],s={kind:`pending-admission`,requestID:a.requestID,queueItemID:a.queueItemID,operationID:a.operationID,messageID:a.messageID||ge(`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})),dF=Oe((e,t)=>({armed:!1,objectiveOverride:null,setArmed:(t,n=null)=>e({armed:t,objectiveOverride:t?n:null}),consume:()=>{let{armed:n,objectiveOverride:r}=t();return n&&e({armed:!1,objectiveOverride:null}),{armed:n,objectiveOverride:r}}})),X=class extends Error{status;code;constructor(e,t){super(`Message queue server request failed: ${t}`),this.name=`MessageQueueServerError`,this.status=e,this.code=t}},fF=`/api/openchamber/message-queue`,pF=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`]),mF=new Set([`revision`,`scopeID`,`queueItemID`,`rowVersion`,`removedQueueItemID`,`projectDirectory`,`token`,`state`,`scopeCount`,`statusCounts`]),hF=new Set([`scopeID`,`revision`,`directory`,`sessionID`,`worktreeState`,`itemCount`]),gF=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Z=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,_F=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),vF=async e=>{if(e.status===501)return`unavailable`;try{let t=await e.json();if(gF(t)&&typeof t.code==`string`&&pF.has(t.code))return t.code}catch{}return`unavailable`},yF=async(e,t)=>{let n;try{n=await F(e,t)}catch{throw new X(0,`unavailable`)}if(!n.ok)throw new X(n.status,await vF(n));try{return await n.json()}catch{throw new X(n.status,`unavailable`)}},bF=()=>{throw new X(200,`unavailable`)},xF=e=>gF(e)&&Object.getPrototypeOf(e)===Object.prototype,SF=e=>{if(!(!xF(e)||typeof e.text!=`string`||!Array.isArray(e.references)||e.references.some(e=>!xF(e))))return{text:e.text,references:e.references.map(e=>({...e}))}},CF=e=>Array.isArray(e)&&e.every(xF)?e.map(e=>({...e})):void 0,wF=e=>{if(!(!gF(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}}},TF=e=>gF(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,EF=e=>{if(!Array.isArray(e)||e.length===0||e.length>129)return null;let t=[],n=0;for(let r of e){if(!xF(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},DF=e=>{if(!Array.isArray(e)||e.length>64)return null;let t=new Set,n=[];for(let r of e){if(!xF(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},OF=e=>{if(!xF(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))||!xF(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},kF=e=>Array.isArray(e)&&e.map(OF).every(e=>e!==null)?e.map(OF):null,AF=e=>{if(!gF(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:SF(e.composerDocument),n=e.composerMentions===void 0?void 0:CF(e.composerMentions),r=e.sendConfig===void 0?void 0:wF(e.sendConfig),i=e.deliveryTarget===void 0?{kind:`primary`}:TF(e.deliveryTarget),a=e.deliveryParts===void 0?void 0:EF(e.deliveryParts),o=e.syntheticParts===void 0?void 0:DF(e.syntheticParts),s=e.attachmentIssues===void 0?void 0:CF(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:kF(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}:{}}},jF=e=>{if(!gF(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(AF);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},MF=e=>gF(e)&&Object.keys(e).every(e=>hF.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,NF=e=>gF(e)&&typeof e.projectDirectory==`string`&&_F(e.orderedPaths)&&Z(e.revision)?{projectDirectory:e.projectDirectory,orderedPaths:e.orderedPaths,revision:e.revision}:null,PF=e=>{if(!gF(e)||!Z(e.revision)||!Array.isArray(e.scopes)||!Array.isArray(e.worktreeOrders))return bF();let t=e.scopes.map(MF),n=e.worktreeOrders.map(NF);return!t.every(e=>e!==null)||!n.every(e=>e!==null)?bF():{revision:e.revision,scopes:t,worktreeOrders:n}},FF=e=>!gF(e)||!Z(e.revision)||Object.keys(e).some(e=>!mF.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&&(!gF(e.statusCounts)||Object.values(e.statusCounts).some(e=>!Z(e)))?bF():{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}:{},...gF(e.statusCounts)?{statusCounts:e.statusCounts}:{}},IF=(e,t,n)=>({method:e,headers:{"Content-Type":`application/json`},body:JSON.stringify(t),signal:n}),LF=(e,t)=>{let{signal:n,...r}=t;return IF(e,r,n)},RF=async e=>PF(await yF(fF,{signal:e})),zF=new Map,BF=(e,t)=>`${a().api(fF)}\u0000${e}\u0000${t.offset??``}\u0000${t.limit??``}\u0000${t.expectedRevision??``}`,VF=async(e,t={})=>{if(t.signal?.aborted)throw new X(0,`unavailable`);let n=BF(e,t),r=zF.get(n);if(r){let e=await r;if(t.signal?.aborted)throw new X(0,`unavailable`);return e}let i=(async()=>jF(await yF(`${fF}/scopes/${encodeURIComponent(e)}`,{query:{offset:t.offset,limit:t.limit,expectedRevision:t.expectedRevision},signal:t.signal}))??bF())().finally(()=>{zF.get(n)===i&&zF.delete(n)});return zF.set(n,i),i},HF=15e3,UF=(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:HF,a=!1,o=e=>{a||(a=!0,clearTimeout(l),c(),r?.removeEventListener(`abort`,s),n(e))},s=()=>o(`aborted`),c=Ht(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=Ot(`message-queue-changed`);if(u!==void 0&&u>e){o(`tip`);return}r?.addEventListener(`abort`,s,{once:!0})}),WF=async e=>{let t=await yF(`${fF}/status`,{signal:e}),n=new Set([`capability`,`authority`,`generation`,`activationEpoch`,`activatedAt`,`manifestHash`,`protocol`,`worker`]);return!gF(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&&(!gF(t.worker)||Object.keys(t.worker).some(e=>e!==`paused`&&e!==`active`)||typeof t.worker.paused!=`boolean`||!Z(t.worker.active))?bF():{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}:{},...gF(t.worker)?{worker:{paused:t.worker.paused,active:t.worker.active}}:{}}},GF=(e,t)=>Object.keys(e).length===t.length&&Object.keys(e).every(e=>t.includes(e)),KF=e=>{let t=[`revision`,`importID`,`state`,`duplicate`,`manifestHash`,`commit`];if(!gF(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 bF();let n=e.commit===void 0?void 0:YF(e.commit);return e.commit!==void 0&&!n?bF():{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}:{}}},qF=e=>!gF(e)||!GF(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`?bF():{revision:e.revision,importID:e.importID,staged:!0,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{}},JF=e=>!gF(e)||!GF(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)?bF():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,state:`sealed`,itemCount:e.itemCount},YF=e=>!gF(e)||!GF(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)?bF():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,generation:e.generation,activationEpoch:e.activationEpoch,added:e.added},XF=e=>YF(e),ZF=e=>YF(e),QF=(e,t)=>!gF(e)||!GF(e,[`authority`,`generation`,`revision`])||e.authority!==t||!Z(e.generation)||!Z(e.revision)?bF():{authority:t,generation:e.generation,revision:e.revision},$F=async e=>KF(await yF(`${fF}/imports`,LF(`POST`,e))),eI=async(e,t)=>{let n=await yF(`${fF}/imports/${encodeURIComponent(e)}`,{signal:t});if(!gF(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 bF();let r=n.staged.map(e=>gF(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:YF(n.commit);return!r.every(e=>e!==null)||n.commit!==void 0&&!i?bF():{state:n.state,...typeof n.manifestHash==`string`?{manifestHash:n.manifestHash}:{},itemCount:n.itemCount,staged:r,...i?{commit:i}:{}}},tI=async(e,t)=>qF(await yF(`${fF}/imports/${encodeURIComponent(e)}/items`,LF(`POST`,t))),nI=async(e,t)=>JF(await yF(`${fF}/imports/${encodeURIComponent(e)}/seal`,LF(`POST`,t))),rI=async(e,t)=>XF(await yF(`${fF}/imports/${encodeURIComponent(e)}/activate`,LF(`POST`,t))),iI=async(e,t)=>ZF(await yF(`${fF}/imports/${encodeURIComponent(e)}/late-commit`,LF(`POST`,t))),aI=async e=>QF(await yF(`${fF}/authority/pause`,LF(`POST`,e)),`paused`),oI=async e=>QF(await yF(`${fF}/authority/resume`,LF(`POST`,e)),`active`),sI=async(e={})=>{let t=await yF(`${fF}/attachments/uploads`,LF(`POST`,e));return!gF(t)||typeof t.uploadID!=`string`||typeof t.uploadToken!=`string`||!Z(t.expiresAt)?bF():{uploadID:t.uploadID,uploadToken:t.uploadToken,expiresAt:t.expiresAt}},cI=async(e,t,n,r)=>{let i;try{i=await F(`${fF}/attachments/uploads/${encodeURIComponent(e.uploadID)}`,{method:`PUT`,headers:{"Content-Length":String(t.size),"X-Message-Queue-Content-Length":String(t.size),"X-Message-Queue-Upload-Token":e.uploadToken,"X-Message-Queue-Sha256":n},body:t,signal:r})}catch{throw new X(0,`unavailable`)}if(!i.ok)throw new X(i.status,await vF(i))},lI=e=>!gF(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)?bF():{revision:e.revision,scopeID:e.scopeID,queueItemID:e.queueItemID,rowVersion:e.rowVersion,token:e.token,expiresAt:e.expiresAt,generation:e.generation},uI=e=>!gF(e)||typeof e.queueItemID!=`string`||typeof e.token!=`string`||!Z(e.generation)||!Z(e.expiresAt)?bF():{queueItemID:e.queueItemID,token:e.token,generation:e.generation,expiresAt:e.expiresAt},dI=async(e,t)=>lI(await yF(`${fF}/items/${encodeURIComponent(e)}/reserve`,LF(`POST`,t))),fI=async(e,t)=>{await yF(`${fF}/items/${encodeURIComponent(e)}/release`,LF(`POST`,t))},pI=async(e,t)=>uI(await yF(`${fF}/items/${encodeURIComponent(e)}/edit-reservations/${encodeURIComponent(t.token)}/renew`,LF(`POST`,t))),mI=async(e,t)=>FF(await yF(`${fF}/items/${encodeURIComponent(e)}/reserved-remove`,LF(`DELETE`,t))),hI=async(e,t,n)=>{let r;try{r=await F(`${fF}/items/${encodeURIComponent(e)}/attachments/${encodeURIComponent(t.attachmentID)}/content`,{signal:n})}catch{throw new X(0,`unavailable`)}if(!r.ok)throw new X(r.status,await vF(r));let i=t.mimeType.trim().toLowerCase(),a=r.headers.get(`Content-Length`),o=r.headers.get(`Content-Type`)?.split(`;`,1)[0]?.trim().toLowerCase();if(a!==null&&a!==String(t.size)||o!==i)throw new X(r.status,`unavailable`);let s;try{s=await r.blob()}catch{throw new X(r.status,`unavailable`)}if(s.size!==t.size)throw new X(r.status,`unavailable`);let c=new Blob([s],{type:i});return c.type===i?c:Object.defineProperty(c,"type",{value:i})},gI=async e=>FF(await yF(`${fF}/items`,LF(`POST`,e))),_I=async(e,t)=>FF(await yF(`${fF}/items/${encodeURIComponent(e)}`,LF(`PATCH`,t))),vI=async(e,t)=>FF(await yF(`${fF}/items/${encodeURIComponent(e)}/send`,LF(`POST`,t))),yI=async(e,t)=>FF(await yF(`${fF}/items/${encodeURIComponent(e)}`,LF(`DELETE`,t))),bI=async(e,t)=>FF(await yF(`${fF}/scopes/${encodeURIComponent(e)}/order`,LF(`PUT`,t))),xI=async(e,t)=>NF(await yF(`${fF}/worktrees/order`,{query:{projectDirectory:e},signal:t}))??bF(),SI=async e=>FF(await yF(`${fF}/worktrees/order`,LF(`PUT`,e))),CI=(e=r())=>N.messageQueue.snapshot(e),wI=(e=r())=>N.messageQueue.status(e),TI=(e,t,n=r())=>N.messageQueue.scope(e,t,n),EI=(e=r())=>({queryKey:wI(e),queryFn:({signal:e})=>WF(e),retry:!1,staleTime:3e4}),DI=(e=r())=>({queryKey:CI(e),queryFn:({signal:e})=>RF(e),staleTime:5e3}),OI=(e=L,t=r())=>e.fetchQuery(EI(t)),kI=(e=L,t=r())=>e.fetchQuery(DI(t)),AI=async(e=L,t=r())=>e.fetchQuery({...EI(t),staleTime:0}),jI=async(e=L,t=r())=>e.fetchQuery({...DI(t),staleTime:0}),MI=(e,t,n=r())=>{e.setQueryData(TI(t.scopeID,t.revision,n),{pages:[t],pageParams:[0]})},NI=(e,t,n=r())=>{e.setQueryData(wI(n),t)},PI=(e,t,n=r())=>{e.setQueryData(CI(n),t)},FI=(e,t,n,i=r())=>{let a=e.getQueryData(TI(t,n,i));if(!a?.pages.length)return;let o=a.pages[0];if(!o)return;let s=a.pages.flatMap(e=>e.items);return s.length===o.itemCount&&a.pages.every(e=>e.revision===o.revision)?{...o,items:s,nextOffset:void 0}:void 0},II=(e,t=r())=>e.removeQueries({queryKey:[t,`messageQueue`,`scope`],exact:!1}),LI=(e,t,n=r())=>e.removeQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),RI=(e,t,n=r())=>e.invalidateQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),zI=`openchamber_message_queue_ledger_v4`,BI=`message-queue-store`,VI={scopes:128,totalItems:2048,attachmentsPerItem:64,issuesPerItem:64,string:8192,content:2e5,dataURL:26214400,bytes:26214400},HI=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,UI=(e,t)=>Object.keys(e).every(e=>t.includes(e)),WI=(e,t=VI.string)=>typeof e==`string`&&e.length>0&&e.length<=t,GI=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,KI=e=>JSON.parse(JSON.stringify(e)),qI=(e,t,n,r)=>{let i=HI(t)?t:{};return{...e?{scopeKey:e}:{},...WI(i.queueItemID)?{queueItemID:i.queueItemID}:{},...WI(i.operationID)?{operationID:i.operationID}:{},path:n,reason:r}},JI=e=>e.state===`bound`?`bound:${JSON.stringify([e.transportIdentity,e.directory,e.sessionID])}`:`unbound-legacy:${JSON.stringify([e.sessionID])}`,YI=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=ZI(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&&JI(n)===e?n:void 0},XI=()=>({version:4,queues:{},migration:{v3State:`pending`}}),ZI=e=>!HI(e)||!WI(e.state)?void 0:e.state===`bound`&&UI(e,[`state`,`transportIdentity`,`directory`,`sessionID`])&&WI(e.transportIdentity)&&WI(e.directory)&&WI(e.sessionID)?{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID}:e.state===`unbound-legacy`&&UI(e,[`state`,`sessionID`])&&WI(e.sessionID)?{state:`unbound-legacy`,sessionID:e.sessionID}:void 0,QI=(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}},$I=[`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`serverPath`,`vscodePath`,`vscodeSource`],eL=e=>{if(!WI(e.attachmentID)||!WI(e.occurrenceRefID)||!QI(e.occurrenceRefID,e.attachmentID)||!WI(e.filename)||typeof e.mimeType!=`string`||e.mimeType.length>VI.string||!GI(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`&&WI(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&&WI(e.vscodePath)&&(e.vscodeSource===`file`||e.vscodeSource===`selection`))return{...t,source:`vscode`,vscodePath:e.vscodePath,vscodeSource:e.vscodeSource}},tL=e=>{if(!HI(e)||!UI(e,[...$I,`version`,`locator`])||e.version!==1)return;let t=eL(e);if(!t||!HI(e.locator))return;let n=e.locator.kind===`blob`&&UI(e.locator,[`kind`,`blobID`])&&WI(e.locator.blobID)?{kind:`blob`,blobID:e.locator.blobID}:e.locator.kind===`url`&&UI(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},nL=e=>{if(!HI(e)||!UI(e,[...$I,`reason`]))return;let t=eL(e);return t&&[`legacy-blob-url`,`legacy-bytes-missing`,`legacy-unbound-data`,`missing-blob`].includes(e.reason)?{...t,reason:e.reason}:void 0},rL=(e,t)=>{if(!HI(e)||!UI(e,[`text`,`references`])||typeof e.text!=`string`)return;let n=we(e.text,e.references),r=n&&ve(n,`queue-canonical`);return r&&r.ok&&r.text===t?n:void 0},iL=(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},aL=(e,t)=>{if(!HI(e)||!UI(e,[`version`,`queueItemID`,`operationID`,`messageID`,`owner`,`content`,`composerDocument`,`composerMentions`,`attachments`,`attachmentIssues`,`createdAt`,`sendConfig`,`status`,`attemptCount`,`nextAttemptAt`,`reconciliationStartedAt`,`reconciliationDeadlineAt`,`reconciliationChecks`,`reconciliationNextCheckAt`,`failureKind`])||e.version!==1||!WI(e.queueItemID)||!WI(e.operationID)||!WI(e.messageID)||typeof e.content!=`string`||e.content.length>VI.content||!GI(e.createdAt)||!GI(e.attemptCount)||!Array.isArray(e.attachments)||e.attachments.length>VI.attachmentsPerItem||!Array.isArray(e.attachmentIssues)||e.attachmentIssues.length>VI.issuesPerItem||![`queued`,`sending`,`retrying`,`reconciling`,`unresolved`,`failed`].includes(e.status))return;let n=ZI(e.owner),r=e.attachments.map(tL),i=e.attachmentIssues.map(nL),a=e.composerDocument===void 0?void 0:rL(e.composerDocument,e.content),o=iL(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&&(!HI(e.sendConfig)||!UI(e.sendConfig,[`providerID`,`modelID`,`agent`,`variant`])||!WI(e.sendConfig.providerID)||!WI(e.sendConfig.modelID)||[e.sendConfig.agent,e.sendConfig.variant].some(e=>e!==void 0&&!WI(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&&!GI(e))||!m)return;let h=e.status===`sending`&&t,g=h?e.createdAt+3e4:e.reconciliationDeadlineAt;if(h&&!GI(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:KI(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}:{}}},oL=(e,t={})=>{let n=e=>({status:`corrupt`,snapshot:XI(),issues:[qI(void 0,void 0,`$`,e)],degradedScopeKeys:[]});if(!HI(e)||!UI(e,[`version`,`queues`,`migration`])||e.version!==4||!HI(e.queues)||!HI(e.migration)||!UI(e.migration,[`v3State`])||![`pending`,`complete`,`degraded`].includes(e.migration.v3State)||Object.keys(e.queues).length>VI.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(qI(e,t,n,r)),o.add(e)};for(let[a,d]of Object.entries(e.queues)){if(!YI(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>VI.totalItems)return n(`item-limit`);let f=d[i],p=`$.queues.${JSON.stringify(a)}[${i}]`,m=aL(f,t.normalizeSending===!0);if(!m||JI(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:KI({version:4,queues:i,migration:{v3State:e.migration.v3State}}),issues:a,degradedScopeKeys:[...o]}},sL=e=>{let t=oL(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`}}}},cL=()=>({ok:!1,error:{code:`unavailable`}}),lL=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),uL=e=>({read:async t=>{if(!e)return cL();try{return{ok:!0,value:e.getItem(t)}}catch(e){return lL(e)}},write:async(t,n)=>{if(!e)return cL();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return lL(e)}},remove:async t=>{if(!e)return cL();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return lL(e)}}}),dL=()=>{try{return uL(typeof window>`u`?null:window.localStorage)}catch{return uL(null)}},fL=async e=>{let t=await e.read(zI);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}};try{let e=oL(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:[qI(void 0,void 0,`$`,`json`)],degradedScopeKeys:[]}}}},pL=async e=>{let t=await fL(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},mL=async(e,t)=>{let n=sL(t);return n.ok?e.write(zI,n.value):n},hL=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,mL(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:()=>fL(e),read:()=>pL(e),persist:e=>{if(!t)return Promise.resolve({ok:!1,error:{code:`cancelled`}});let r=oL(e);if(r.status===`corrupt`||r.issues.length)return Promise.resolve({ok:!1,error:{code:`corrupt`}});let i=KI(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}},gL=VI.string,_L=VI.dataURL,vL=VI.bytes,yL=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,bL=(e,t,n=!1)=>typeof e==`string`&&e.length<=gL&&(n||e.length>0)?e:t,xL=(e,t=0)=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0?e:t,SL=(e,t)=>JI(e)===JI(t),CL=(e,t,n,r)=>({scopeKey:e,queueItemID:t,path:n,reason:r}),wL=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(``)}`},TL=e=>typeof e==`string`&&e.length>0&&e.length<=gL,EL=e=>YI(e)??(TL(e)?{state:`unbound-legacy`,sessionID:e}:void 0),DL=e=>{if(yL(e)){if(e.state===`bound`&&TL(e.transportIdentity)&&TL(e.directory)&&TL(e.sessionID))return{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID};if(e.state===`unbound-legacy`&&TL(e.sessionID))return{state:`unbound-legacy`,sessionID:e.sessionID}}},OL=e=>{if(e.length>_L)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>vL)return;e=Uint8Array.from(t,e=>e.charCodeAt(0))}else if(e=new TextEncoder().encode(decodeURIComponent(a)),e.byteLength>vL)return;let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),new Blob([t],{type:i})}catch{return}},kL=e=>yL(e)&&TL(e.providerID)&&TL(e.modelID)&&(e.agent===void 0||TL(e.agent))&&(e.variant===void 0||TL(e.variant))?{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}:void 0,AL=async(e,t)=>{let n=await fL(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:[CL(``,``,`$.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=>CL(e.scopeKey??``,e.queueItemID??``,e.path,e.reason)),cleanupErrors:[]};let r=await e.read(BI);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={...XI(),migration:{v3State:`complete`}},n=await mL(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:[CL(``,``,`$`,`legacy-json`)],cleanupErrors:a}}let l=yL(c)&&yL(c.state)?c.state.queuedMessages:yL(c)?c.queuedMessages:void 0;if(!yL(l))return{status:`failed`,error:{code:`corrupt`},issues:[CL(``,``,`$.state.queuedMessages`,`legacy-state`)],cleanupErrors:a};let u={...XI(),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>=VI.scopes){i.push(CL(n,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-scope-limit`));break}let c=EL(n),l=c?JI(c):n;if(!c||!Array.isArray(r)){i.push(CL(l,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-queue`));continue}for(let e=0;e<r.length;e++){if(m>=VI.totalItems){i.push(CL(l,``,`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,`legacy-item-limit`));break}m++;let h=`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,g=yL(r[e])?r[e]:void 0;if(!g||typeof g.content!=`string`||g.content.length>131072){i.push(CL(l,``,h,`legacy-item`));continue}let _=DL(g.owner);if(g.owner!==void 0&&(!_||!SL(c,_))){i.push(CL(l,TL(g.queueItemID)?g.queueItemID:``,h,`owner-conflict`));continue}let v=JSON.stringify([n,e,g.content]),y=TL(g.queueItemID)?g.queueItemID:TL(g.id)?g.id:await wL(`queue`,v),b=TL(g.operationID)?g.operationID:await wL(`operation`,`${v}:operation`),x=TL(g.messageID)?g.messageID:await wL(`message`,`${v}:message`);if(d.has(y)||f.has(b)||p.has(x)){i.push(CL(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(CL(l,y,`${h}.attachments`,`legacy-attachments`));for(let e=0;e<T.length&&e<VI.attachmentsPerItem;e++){let n=yL(T[e])?T[e]:void 0,r=`${h}.attachments[${e}]`;if(!n){i.push(CL(l,y,r,`legacy-attachment`));continue}let u=TL(n.id)?n.id:await wL(`attachment`,`${v}:attachment:${e}`),d=ue(u),f=bL(n.filename,u),p=bL(n.mimeType,``,!0),m=xL(n.size);if(w.has(d)){i.push(CL(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`?TL(n.serverPath)&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`vscode`&&TL(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(CL(l,y,r,e))};if(c.state===`unbound-legacy`){O(`legacy-unbound-data`);continue}if(!g){i.push(CL(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=OL(k);if(!A){O(`legacy-bytes-missing`);continue}let j=await wL(`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:CL(l,y,r,`blob-retain`)}),S.push({version:1,...D,mimeType:A.type,size:A.size,locator:{kind:`blob`,blobID:j}})}T.length>VI.attachmentsPerItem&&i.push(CL(l,y,`${h}.attachments`,`legacy-attachment-limit`));let E=xL(g.createdAt),D=typeof g.status==`string`?g.status:`queued`,O=yL(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,M=xL(g.reconciliationStartedAt,E),ne=xL(g.reconciliationDeadlineAt,-1),re=M>2**53-1-3e4?M:M+3e4,oe=Math.max(M,ne>=0?ne:re),se=xL(g.reconciliationChecks),ce=xL(g.reconciliationNextCheckAt,M);j&&ne<0&&M>2**53-1-3e4&&i.push(CL(l,y,`${h}.reconciliationDeadlineAt`,`reconciliation-deadline-overflow`));let le=te||ee||c.state===`unbound-legacy`&&j?`unresolved`:A?`retrying`:j?`reconciling`:D===`failed`||k===`definitive`?`failed`:`queued`,N=le===`reconciling`||le===`unresolved`&&!te,de=yL(g.composerDocument)&&typeof g.composerDocument.text==`string`?we(g.composerDocument.text,g.composerDocument.references):void 0,fe=de&&ve(de,`queue-canonical`);g.composerDocument!==void 0&&(!fe||!fe.ok||fe.text!==g.content)&&i.push(CL(l,y,`${h}.composerDocument`,`degraded-composer-document`));let pe=fe&&fe.ok&&fe.text===g.content?de:void 0,P=pe?ae(pe.text,g.composerMentions):void 0,me=P&&!P.some(e=>pe.references.some(t=>e.range.start<t.end&&t.start<e.range.end));g.composerMentions!==void 0&&!me&&i.push(CL(l,y,`${h}.composerMentions`,`degraded-composer-mentions`));let he={version:1,queueItemID:y,operationID:b,messageID:x,owner:c,content:g.content,...pe?{composerDocument:pe}:{},...me&&P.length?{composerMentions:P}:{},attachments:S,attachmentIssues:C,createdAt:E,...kL(g.sendConfig)?{sendConfig:kL(g.sendConfig)}:{},status:le,attemptCount:xL(g.attemptCount),...le===`retrying`?{nextAttemptAt:xL(g.nextAttemptAt,E),failureKind:`pre-dispatch`}:N?{reconciliationStartedAt:M,reconciliationDeadlineAt:oe,reconciliationChecks:se,reconciliationNextCheckAt:ce,failureKind:`ambiguous-dispatch`}:le===`failed`?{failureKind:`definitive`}:{}};(u.queues[l]??=[]).push(he)}}i.length&&(u.migration.v3State=`degraded`);let g=await mL(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})},jL=(e,t)=>JSON.stringify(e)===JSON.stringify(t),ML=(e,t=[])=>({status:e,errors:t,cleanupErrors:[]}),NL=e=>e.status===`sending`||e.status===`reconciling`,PL=(e,t,n={})=>{let r={hydration:`idle`,snapshot:XI(),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]=jL(r.snapshot.queues[n],i)?r.snapshot.queues[n]:i;let n=jL(r.snapshot.queues,t)&&jL(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&&JI(t.owner)===e.scopeKey?t:void 0},d=()=>r.hydration===`idle`||r.hydration===`hydrating`?ML(`unseeded`):r.hydration===`recovery-required`?ML(`recovery-required`,[...r.issues]):r.hydration===`failed`?ML(`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=()=>ML(`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)):ML(`stale`))),materializeForEdit:(t,n=p())=>l(async()=>{let r=d(),i=u(t);if(r)return r;if(!i||!m(i,n))return ML(`stale`);if(NL(i))return ML(`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`?ML(`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 ML(`stale`);try{let a=await e.releaseSend(t,n,r);return a.status!==`stale`&&h.delete(i),a}catch{return h.delete(i),ML(`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{...ML(`stale`),durableRemoval:!1};if(NL(f))return{...ML(`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{...ML(`stale`),durableRemoval:!1};if(_(t))return{...v(),durableRemoval:!1};if(NL(a))return{...ML(`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=>NL(e)||!m(e,i))?ML(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.reorder(t,n,i)):ML(`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)?ML(`stale`):_(t)?v():NL(a)?ML(`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||NL(e)||!m(e,r))||n.transportIdentity!==r.transportIdentity?ML(`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)?ML(`stale`):_(t)?ML(`failed`,[{phase:`identity`,code:`reserved`}]):(Array.isArray(n)?n:[n]).includes(o.status)?f(()=>e.transition(t,r,i)):ML(`stale`))}),confirm:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?ML(`stale`):_(t)?ML(`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)?ML(`stale`):_(t)?ML(`failed`,[{phase:`identity`,code:`reserved`}]):e.acquireSendPayload(t,n))}),releaseSend:(t,n,r=p())=>l(async()=>e.releaseSend(t,n,r))}},FL=e=>JSON.parse(JSON.stringify(e)),Q=(e,t=[],n=[],r)=>({status:e,...r===void 0?{}:{current:r},errors:t,cleanupErrors:n}),IL=(e,t)=>e.queueItemID===t.queueItemID&&e.operationID===t.operationID&&e.messageID===t.messageID,LL=(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,RL=e=>JSON.stringify(e),zL=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}),BL=e=>`${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,VL=e=>typeof e==`number`&&Number.isSafeInteger(e),HL=(e,t)=>{if(RL(zL(e))!==RL(zL(t))||!VL(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&&!VL(e))||e.status===`reconciling`&&t.status===`reconciling`&&(t.reconciliationStartedAt!==e.reconciliationStartedAt||t.reconciliationDeadlineAt!==e.reconciliationDeadlineAt||(t.reconciliationChecks??0)<(e.reconciliationChecks??0)))},UL=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))},WL=(e,t,n={})=>{let r=XI(),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=>IL(t,e)),_=(e,t,n,r,i)=>({phase:e,code:t,...n?{scopeKey:JI(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=LL(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(Se(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(Se(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(Se(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?oL(u,{normalizeSending:!0}):{status:`ok`,snapshot:XI(),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:()=>FL(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=JI(t.owner),l=FL(r);l.queues[s]=[...l.queues[s]??[],t];let d=oL(l);if(!UL(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(Se(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(FL(o)),u=FL(r),d=JI(o.owner);u.queues[d]=u.queues[d].map(t=>IL(t,e)?l:t);let f=oL(u);if(!IL(l,e)||!HL(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=FL(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=JI(o.owner),l=r.queues[s];if(!l||l.length!==1||!IL(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={...FL(o),owner:t},f=oL({version:4,queues:{[JI(t)]:[d]},migration:r.migration});if(f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let p=FL(r),m=s,h=JI(t);p.queues[m]=p.queues[m].filter(t=>!IL(t,e)),p.queues[m].length||delete p.queues[m],p.queues[h]=[d,...p.queues[h]??[]];let v=oL(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[JI(s)];if(!l||l.length!==e.length||o.some(e=>RL(e.owner)!==RL(s)||e.attachments.length)||l.some((t,n)=>!IL(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=>({...FL(e),owner:t})),p=FL(r),m=JI(s),h=JI(t);p.queues[m]=p.queues[m].filter(e=>!d.some(t=>IL(e,t))),p.queues[m].length||delete p.queues[m],p.queues[h]=[...f,...p.queues[h]??[]];let v=oL(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(BL(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(Se(e.reference),e);return f.set(BL(t),{token:m,identity:t,held:u}),{...Q(`committed`,[],[],!0),token:m,values:l}}),releaseSend:(e,t)=>m(async()=>{let n=f.get(BL(e));if(typeof t!=`string`||!n||n.token!==t)return Q(`stale`);f.delete(BL(e));let r=[];for(let e of n.held)d.delete(Se(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=FL(r);for(let[t,n]of Object.entries(s.queues)){let r=n.filter(t=>!IL(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(BL(e));f.delete(BL(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(Se(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}}},GL=()=>{let e=dL(),t=hL(e),n=Bn();return{controller:PL(WL(n,t),()=>{let e=r(),t=s();return{transportIdentity:e,generation:t,isCurrent:()=>r()===e&&s()===t}}),migrate:async()=>AL(e,n)}},KL=(e=GL)=>{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)}},qL,JL=()=>qL??=KL(),YL=26214400,XL=52428800,ZL=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),QL=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>YL)throw RangeError(`message-queue-attachment-too-large`);n+=e}if(n>XL)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 sI({signal:t});await cI(e,n.value,await ZL(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}},$L,eR=()=>{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 $L??=fe()}},tR={queue:void 0,capture:()=>({transportIdentity:``,generation:0}),current:()=>!0,admit:gI,create:$F,details:eI,stage:tI,seal:nI,upload:QL,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:()=>{}},nR=e=>({scopeKey:JI(e.owner),queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}),rR=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(``)}`,iR=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}}),aR=e=>Array.isArray(e)?`[${e.map(aR).join(`,`)}]`:e&&typeof e==`object`?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${aR(e[t])}`).join(`,`)}}`:JSON.stringify(e),oR=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(aR(e))))].map(e=>e.toString(16).padStart(2,`0`)).join(``),sR=e=>{let t={...tR,...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(nR(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:iR(s)}};n||(p=`admit`,await t.admit({requestID:await rR(s.operationID),..._,signal:o})),e.push({item:s,scopeOrdinal:h,itemOrdinal:g,payload:_,payloadHash:await oR(_)}),f++}finally{await t.queue.releaseSend(nR(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 oR(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=eR(),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})}}}},cR=e=>typeof e==`object`&&!!e&&e.kind===`pending-admission`,lR=(e,t)=>e.then(e=>{if(t?.aborted)throw new DOMException(`Aborted`,`AbortError`);return e}),uR={snapshot:e=>lR(jI(L),e),status:e=>lR(OI(L),e),scope:VF,waitInvalidation:UF,admit:gI,edit:_I,remove:yI,reserve:dI,renew:pI,release:fI,removeReserved:mI,reorder:bI,manualSend:vI,upload:QL,client:L,capture:()=>({transportIdentity:r(),generation:s()}),current:e=>e.transportIdentity===r()&&e.generation===s(),legacyManualSend:async()=>{},shadowQueue:JL,admissionUploadTimeoutMs:12e4,admissionRequestTimeoutMs:2e4,admissionReconcileTimeoutMs:2e4},dR=e=>e instanceof X&&(e.code===`revision_conflict`||e.code===`row_version_conflict`),fR=e=>e instanceof X&&e.code===`unavailable`,pR=8,mR=(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))]},hR=e=>`${e.transportIdentity}\u0000${ne(e.directory)}\u0000${e.sessionID}`,gR=(e,t)=>new Promise(n=>{let r=setTimeout(n,e);t.addEventListener(`abort`,()=>{clearTimeout(r),n()},{once:!0})}),_R=(e,t,n)=>{let r=new AbortController,i,a=()=>r.abort();t?.aborted?a():t?.addEventListener(`abort`,a,{once:!0}),r.signal.aborted||(i=setTimeout(a,n));let o=new Promise((e,t)=>{r.signal.aborted?t(new X(0,`unavailable`)):r.signal.addEventListener(`abort`,()=>t(new X(0,`unavailable`)),{once:!0})});return Promise.race([Promise.resolve().then(()=>e(r.signal)),o]).finally(()=>{i!==void 0&&clearTimeout(i),t?.removeEventListener(`abort`,a)})},vR=(e={})=>{let t={...uR,...e},n={...t,snapshot:e.snapshot??(e=>lR(jI(t.client,t.capture().transportIdentity),e)),status:e.status??(e=>lR(OI(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?hR({transportIdentity:n,directory:a.directory,sessionID:a.sessionID}):r?hR({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 X(409,`revision_conflict`);c.push(...t.items),o=t.revision,a=t.nextOffset??-1}while(a>=0);if(!s||c.length!==s.itemCount)throw new X(200,`unavailable`);return{...s,items:c}},x=e=>({scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount}),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;MI(n.client,e,t.transportIdentity);let a=hR({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)MI(n.client,e,i.transportIdentity);if(PI(n.client,e,i.transportIdentity),e.scopes.length===0)II(n.client,i.transportIdentity);else for(let e of o.keys())a.has(e)||LI(n.client,e,i.transportIdentity);y(e.scopes,i);for(let e of t){let t=hR({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)||(NI(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 X&&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 X&&n.code===`revision_conflict`){e=0;continue}m({error:n,isFetching:!1}),await gR(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)??FI(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?FI(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<pR;t++){let s=r.scopes.get(e),c=s?FI(n.client,e,s.revision,a.transportIdentity):void 0,l;try{try{l=(await i(o,c)).revision}catch(e){if(!fR(e)||!h(a))throw e;l=(await i(o,c)).revision}}catch(n){if(dR(n)&&t+1<pR){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 X(409,`revision_conflict`));if(!t)return u({status:`stale`});await RI(n.client,e,a.transportIdentity);let i=r.scopes.get(e);return u({status:`committed`,scope:i?FI(n.client,e,i.revision,a.transportIdentity):t})}catch(r){if(dR(r)&&!t)continue;return h(a)?(m({error:r}),RI(n.client,e,a.transportIdentity).catch(()=>{}),u({status:`committed`})):u({status:`stale`})}}throw new X(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())},M=()=>{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=hR(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=>ne(t.directory)===ne(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=FI(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(hR(e))??d:d},start:()=>{a++,_(),te()},stop:()=>{a=Math.max(0,a-1),a||M()},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 sR({queue:n.shadowQueue(),capture:()=>e,current:h,existing:()=>[...r.scopes.values()].flatMap(t=>FI(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 aI({expectedGeneration:e,signal:i?.signal}),await T()},resume:async e=>{await oI({expectedGeneration:e,signal:i?.signal}),await T()},stageAdmission:({requestID:e,scope:t,item:n})=>{let r=hR({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=hR({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=hR({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 _R(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 _R(e=>n.admit({...v,signal:e}),i?.signal,n.admissionRequestTimeoutMs)}catch(e){if(!h(o))return m(),{status:`stale`};if(!(e instanceof X)||e.code!==`unavailable`)throw m(),e;f({...l,phase:`ambiguous`});try{y=await _R(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?_R(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 X)||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<pR;a++){let d=r.scopes.get(t),f=(d?FI(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(!dR(e)||a+1>=pR)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<pR;a++){let d=r.scopes.get(t),f=(d?FI(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 X(404,`not_found`)).catch(()=>void 0),await T(),!0):!1}catch(e){if(!dR(e)||a+1>=pR)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:mR(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 X(0,`unavailable`)}}},yR,bR=()=>yR??=vR(),xR=new WeakMap,SR=e=>{let t=e,n=xR.get(t);if(n)return n.refs++,()=>{n.refs--,n.refs||(n.unsubscribe(),xR.delete(t))};let r={refs:1,unsubscribe:d(t=>{f(t)&&e.restart()})};return xR.set(t,r),()=>{r.refs--,r.refs||(r.unsubscribe(),xR.delete(t))}},CR=(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:wR(r),semantics:i}},wR=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)})},TR=`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.
467
- `,ER=e=>{if(!e.startsWith(TR))return[];try{let t=JSON.parse(e.slice(TR.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[]}},DR=e=>e.length===0?null:e.map(e=>`[skill:${e}]`).join(` `),OR=(e,t=36e3)=>{if(e.length===0)return null;let n=TR,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(`,`)}]`},kR=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}},AR=(e,t)=>{let{sessionIds:n,skillNames:r}=kR(e),i=n.flatMap(e=>{let n=Ad(e,t);if(!n)return[];let r=Dd(n).find(t=>t.id===e);if(!r)return[];let i=jd(e,n).flatMap(e=>{let t=Md(e.id,n).filter(e=>e.type===`text`&&!Gp(e)).map(e=>`text`in e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(`
468
- `);return t?[{role:e.role,text:t}]:[]});return[{id:r.id,title:r.title||r.id,directory:n,messages:i}]}),a=[],o=DR(r);o&&a.push({text:o,synthetic:!0});let s=OR(i);return s&&a.push({text:s,synthetic:!0}),a},jR=50,MR=15e4,NR=e=>{let t=0;for(let n of Object.values(e.partsByMessageID))for(let e of n){let n=e;n.type===`text`&&!Gp(n)&&typeof n.text==`string`&&(t+=n.text.length)}return t},PR=async(e,t,n)=>{let{sessionIds:r}=kR(e);if(r.length===0)return;let i=H();if(!i)return;let a=n?.maxPages??jR,o=n?.maxChars??MR;await Promise.all(r.map(async e=>{let n=Ad(e,t);if(!n)return;let r=U(n,e),s=i.getTranscript(r);s.messageOrder.length===0&&(await vu(n,e),s=i.getTranscript(r));let c=0;for(;!i.getPagination(r).isComplete&&c<a&&NR(s)<o;)await _u(n,e),s=i.getTranscript(r),c+=1}))},FR=e=>!e||/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(e),IR=(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(!FR(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}},LR=new Set([`/`,`-`,`_`,`.`,` `,`:`,`\\`]);function RR(e){return e==null?[]:typeof e==`string`?e?[e]:[]:e.filter(e=>typeof e==`string`&&e.length>0)}function zR(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(LR.has(o)?0:.5)+i/1e3+a}function BR(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=RR(n(t));if(e.length===0)continue;let r=null,i=e[0].toLowerCase();for(let t of e){let e=t.toLowerCase(),n=zR(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 ct(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 VR=({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});let o=n.trim().toLowerCase(),s=Array.from(a.values());if(!o)return s.slice(0,i);let c=s.map(e=>{let t=(e.relativePath||e.name||``).toLowerCase(),n=(e.name||``).toLowerCase(),r=zR(t,o),i=zR(n,o),a;return a=r===null&&i===null?10+t.length/1e4:Math.min(r??1/0,i??1/0),{item:e,score:a,sortKey:t}});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})=>e)},HR=/(^|[\s([{])(@session:([A-Za-z0-9_-]+))(?=$|[\s)\]},.!?;:])/g,UR=e=>{let t=[];HR.lastIndex=0;let n;for(;(n=HR.exec(e))!==null;){let e=n.index+n[1].length;t.push({start:e,end:e+n[2].length,id:n[3]})}return t},WR=e=>{let t=[],n=new Set;for(let{id:r}of UR(e))n.has(r)||(n.add(r),t.push(r));return t},GR=(e,t)=>{let n=e;for(let r of UR(e).reverse()){let e=t.get(r.id)??r.id;n=`${n.slice(0,r.start)}@${e}${n.slice(r.end)}`}return n},KR=({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)},qR=({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(`
469
- `)?null:s},JR=/(^|\s)\/\u2003?([a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?)/g,YR=e=>We(e.trim()),XR=e=>{let t=e.trim();if(t.toLowerCase().startsWith(`file://`))return t;let n=YR(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`file:///${n}`:`file://${n}`},ZR=e=>({chunks:[{provenance:`authored`,text:e,start:0,end:e.length}],semantics:[]}),QR=({text:e,root:t,confirmedFilePaths:n,confirmedDirectoryPaths:r=[],agentNames:i})=>{let a=[],o=new Set,s=t?YR(t).replace(/\/+$/,``):``,c=e=>YR(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=Ge(n)||Ge(r)?r:r.replace(/^\/+/,``);if(!(l.has(r)||l.has(d)||n.includes(`/`)||n.includes(`\\`)||n.includes(`.`)))continue;let p=Ge(n)||Ge(r)?r:s?Ke(s,d):null;if(!d||!p||o.has(p))continue;o.add(p);let m=qe(p)||d,h=u.has(r)||u.has(d)||/[/\\]$/.test(n)?Re:`text/plain`;a.push({id:fe(),file:new File([],m,{type:h}),filename:m,mimeType:h,size:0,dataUrl:XR(p),source:`server`,serverPath:p})}return a},$R=(e,t)=>{let n=[],r=new Set;JR.lastIndex=0;let i;for(;(i=JR.exec(e))!==null;){let e=i[2]||``;t.has(e)&&!r.has(e)&&(r.add(e),n.push({type:`skill`,skillName:e}))}return n},ez=(e,t)=>{if(!e.includes(`@`)||t.length===0)return[];let n=[];for(let{id:r,title:i}of t)(e.includes(`@${i}`)||e.includes(`@${_e}${i}`))&&n.push(r);return n},tz=({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(Dd(r).map(e=>[e.id,e.title||e.id])),u=[];for(let e of kd().values()){let t=typeof e.title==`string`?e.title.trim():``;t&&u.push({id:e.id,title:t})}return CR(e,e=>{let r=IR(e,t),d=[...new Set([...WR(e),...ez(e,u)])],f=[...$R(e,n),...d.map(e=>({type:`session`,sessionId:e}))],p=QR({text:r.sanitizedText,root:i,confirmedFilePaths:a,confirmedDirectoryPaths:o,agentNames:c});return{text:GR(Ie(Le(r.sanitizedText,s)),l),agent:r.mention?.name,attachments:p,semantics:f}})},nz=e=>e.map(e=>({text:e.text,...e.attachments?.length?{attachments:wR(e.attachments)}:{},synthetic:!0})),rz=({text:e,attachments:t,semanticParts:n,syntheticParts:r=[]})=>[{type:`text`,text:e},...wR(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},...wR(e.attachments??[]).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id}))])],iz=(e,t)=>{let n=t.map(e=>({...e,attachments:wR(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}})},az=e=>e?.trim()||void 0,oz=(e,t)=>e!==`assistant`||t===`server`,sz=(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)})},cz=({currentConfig:e,sessionID:t,selection:n})=>{let r=az(e.currentAgentName),i=t?az(n.getSessionAgentSelection(t))??r:r,a=t&&i?n.getAgentModelForSession(t,i):null,o=t?n.getSessionModelSelection(t):null,s=az(a?.providerId)??az(o?.providerId)??az(e.currentProviderId),c=az(a?.modelId)??az(o?.modelId)??az(e.currentModelId);if(!s||!c)return;let l=t&&i?az(n.getAgentModelVariantForSession(t,i,s,c))??az(e.currentVariant):az(e.currentVariant);return{providerID:s,modelID:c,...i?{agent:i}:{},...l?{variant:l}:{}}},lz=e=>!!(az(e?.providerID)&&az(e?.modelID)),uz=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,dz=(e,t)=>uz(e,t),fz=e=>JSON.stringify([e.text,e.references]),pz=e=>JSON.stringify(e),mz=(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,hz=({draftKey:e,runtime:t,document:n,attachments:r,inlineDrafts:i})=>({draftKey:{transportIdentity:e.transportIdentity,owner:{...e.owner}},draftKeyID:R(e),runtime:{...t},documentFingerprint:fz(n),attachments:new Map(r.map(e=>[e.id,e])),inlineDrafts:new Map(i.map(e=>[e.id,pz(e)]))}),gz=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`||!dz(e.runtime,n())||!d||R(d)!==e.draftKeyID)return{status:`stale`,bodyConsumed:!1,attachmentIDsConsumed:[],inlineDraftIDsConsumed:[]};let f=fz(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||!mz(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||pz(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}},_z=(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)}}),vz=(e=fe,t=()=>ge(`msg`),n=Date.now())=>({requestID:e(),queueItemID:`queued-${e()}`,operationID:`operation-${e()}`,messageID:t(),createdAt:n}),yz=({stage:e,clearComposer:t,postClear:n})=>{let r=e();return t(),n?.(),r},bz=`blocked`,xz=new Set,Sz=()=>bz,Cz=e=>{if(bz!==e){bz=e;for(let e of xz)e()}},wz=e=>(xz.add(e),()=>xz.delete(e)),Tz=()=>bz===`legacy-enabled`,Ez=2e3,Dz=6e4,Oz=5e3,kz=3,Az=e=>Math.min(Ez*2**Math.max(e-1,0),Dz),jz=new Map,Mz=new Map,Nz=new Set,Pz=new Set,Fz=0,Iz=()=>{Fz+=1;for(let e of Pz)e()},Lz=(e,t)=>JSON.stringify([D(e),t.queueItemID,t.operationID]),Rz=e=>`scope:${D(e)}`,zz=()=>new Set([...jz.keys(),...Mz.keys()]),Bz=e=>(Pz.add(e),()=>Pz.delete(e)),Vz=e=>{let t=(0,V.c)(2),n;return t[0]===e?n=t[1]:(n=()=>e?Mz.has(Rz(e)):!1,t[0]=e,t[1]=n),W.useSyncExternalStore(Bz,n,cB)},Hz=()=>structuredClone(re.getState().queuedMessages),Uz=async()=>{for(Cz(`blocked`);jz.size||Mz.size||Nz.size;)await Promise.allSettled([...new Set([...jz.values(),...Mz.values(),...Nz])]);return y(),Hz()},Wz=e=>e===`idle`,Gz=e=>{if(e===void 0)return`unknown`;let t=e[e.length-1];return!t||t.role===`assistant`?`settled`:`unsettled`},Kz=(e,t,n,r,i=!1,a=`settled`)=>e?e.status===`sending`?i?{}:{recover:!0}:e.status===`queued`?Wz(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`retrying`?e.nextAttemptAt&&e.nextAttemptAt>r?{nextWakeAt:e.nextAttemptAt}:Wz(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`reconciling`?(e.reconciliationChecks??0)>=kz||(e.reconciliationDeadlineAt??1/0)<=r?{resolve:!0}:(e.reconciliationNextCheckAt??0)>r?{nextWakeAt:e.reconciliationNextCheckAt}:i?{}:{query:!0}:{}:{},qz=(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},Jz=(e,t)=>{let n;for(let r of jd(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},Yz=(e,t)=>{let n;for(let r of e.values())r.expiresAt>t&&(!n||r.expiresAt<n)&&(n=r.expiresAt);return n},Xz=({queuedMessages:e,activeTransportIdentity:t,getStatus:n,getTurnState:r=()=>`settled`,previous:i,inFlight:a,dispatchInFlight:o=zz(),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=Lz(m,e),_=Rz(m);d.add(h);let v=n(m),y=Kz(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(D(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},Zz=e=>{let t=e[0];if(!t)return null;let n=t.composerDocument&&ve(t.composerDocument,`direct-send-display`),r=t.owner?.state===`bound`?t.owner.directory:``,i=tz({plan:n?.ok?{chunks:n.chunks??[],semantics:n.semantics??[]}:ZR(t.content),agents:G.getState().getVisibleAgents(),installedSkillNames:new Set(Wa(L,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=AR(i.semantics,r);return{queuedMessageId:t.id,messageID:t.messageID,operationID:t.operationID,primaryText:i.text,primaryAttachments:wR([...t.attachments??[],...i.attachments]),agentMentionName:i.agent,additionalParts:a,sendConfig:t.sendConfig}},Qz=(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}),$z=(e,t)=>t?{...t}:cz({currentConfig:G.getState(),sessionID:e,selection:Uo.getState()})??{providerID:``,modelID:``},eB=e=>{let t=$.getState().getDirectoryForSession(e);return t?{state:`bound`,transportIdentity:r(),directory:t,sessionID:e}:null},tB=(e,t)=>!!(e===`queued`||e===`retrying`||t&&(e===`failed`||e===`unresolved`)),nB=e=>e.status===`sending`||e.status===`reconciling`,rB=(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`||D(a.owner)!==D(r)?null:{scope:r,item:a}};function iB(e,t={}){if(!Tz())return Promise.resolve();let n=re.getState(),i=t.scope??eB(e),a=t.manual===!0||t.delivery===`steer`;if(!i||i.transportIdentity!==r())return Promise.resolve();let o=rB(n,e,t.queueItemID,i??void 0);if((a||!t.scope)&&!Mz.has(Rz(i))){let r=n.getQueueForScope({state:`unbound-legacy`,sessionID:e}),a=n.getQueueForScope(i),s=t.queueItemID?r.find(e=>e.queueItemID===t.queueItemID||e.id===t.queueItemID):r[0];(o||s)&&!r.some(nB)&&!a.some(nB)&&(n.bindLegacyQueue({state:`unbound-legacy`,sessionID:e},i),o=rB(n,e,t.queueItemID,i))}if(!o||o.scope.transportIdentity!==r())return Promise.resolve();let c=o.scope;if(c.deliveryTarget?.kind===`assistant`)return Promise.resolve();let l=o.item,u={queueItemID:l.queueItemID,operationID:l.operationID,messageID:l.messageID},d=Lz(c,u),f=jz.get(d);if(f)return f;if(Mz.has(Rz(c))||!tB(l.status,a)||l.status===`retrying`&&!a&&(l.nextAttemptAt??0)>Date.now())return Promise.resolve();let p,m=new Promise(e=>{p=e});return jz.set(d,m),Mz.set(Rz(c),m),Iz(),(async()=>{try{let i=Jz(e,c.directory),o=wB(e),d=o?.queueItemID===l.queueItemID?o.messageID:be(`msg`,i),f=n.beginQueueItemDispatch(c,u,d,a);if(!f)return;l=f;let p={queueItemID:f.queueItemID,operationID:f.operationID,messageID:f.messageID};if(!y()){n.markQueueItemPreDispatchRetry(c,p,Date.now()+Az(f.attemptCount+1));return}let m=s(),h=Zz([f]);if(!h)return;let g=$z(e,f.sendConfig);if(!g.providerID||!g.modelID){n.markQueueItemPreDispatchRetry(c,p,Date.now()+Az(f.attemptCount+1));return}if(!Tz()){n.markQueueItemPreDispatchRetry(c,p,Date.now()+Az(f.attemptCount+1));return}let _=()=>{let e=re.getState().getQueueForScope(c)[0];return r()===c.transportIdentity&&s()===m&&e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&D(e.owner)===D(c)},v=()=>{let e=re.getState().getQueueForScope(c)[0];return e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&D(e.owner)===D(c)},b=t=>{_()&&t===p.messageID&&(re.getState().confirmQueueItem(c,p),PB(e))};try{await Qz(e,h,g,{directory:c.directory,delivery:t.delivery,ticket:o?.queueItemID===f.queueItemID?o.ticket:void 0,onSendConfirmed:b}),b(p.messageID)}catch(e){if(!v())return;let t=Ex(e);t===`pre-dispatch`?n.markQueueItemPreDispatchRetry(c,p,Date.now()+Az(f.attemptCount+1)):t===`definitive-rejection`?n.markQueueItemDefinitiveFailure(c,p):n.markQueueItemReconciling(c,p)}}finally{let e=!1;jz.get(d)===m&&(jz.delete(d),e=!0),Mz.get(Rz(c))===m&&(Mz.delete(Rz(c)),e=!0),e&&Iz(),p?.()}})(),m}async function aB(e,t=s()){if(!Tz())return;let n=Math.min(e.item.reconciliationDeadlineAt??1/0,Date.now()+Oz),i=new AbortController,a=setTimeout(()=>i.abort(),Math.max(0,n-Date.now())),o=null;try{o=await jS(e.scope.sessionID,e.item.messageID,e.scope.directory,{signal:i.signal,timeoutMs:Math.max(0,n-Date.now())})}catch{o=null}finally{clearTimeout(a)}let c=re.getState().getQueueForScope(e.scope)[0];c?.queueItemID===e.item.queueItemID&&c.operationID===e.item.operationID&&c.messageID===e.item.messageID&&D(c.owner)===D(e.scope)&&r()===e.scope.transportIdentity&&s()===t&&(o?.some(t=>t.info.id===e.item.messageID)?(YV(e.scope.sessionID,e.item.messageID),re.getState().confirmQueueItem(e.scope,{queueItemID:c.queueItemID,operationID:c.operationID,messageID:c.messageID})):re.getState().recordQueueItemReconciliationCheck(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID}))}var oB=(e,t)=>{ux({sessionID:e.sessionID,messageID:t.messageID,directory:e.directory}),re.getState().resolveQueueItemReconciliation(e,{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID})};function sB(e){let t=typeof e==`boolean`?e:e?.enabled??!0,n=W.useSyncExternalStore(wz,Sz,Sz),a=re(e=>e.queuedMessages),o=zp(e=>e.runsByOriginalSessionID),c=$(e=>e.queueAbortBlocks),l=W.useSyncExternalStore(d,r,r),u=W.useSyncExternalStore(d,i,i),f=W.useSyncExternalStore(Bz,()=>Fz,()=>Fz),p=W.useMemo(()=>Object.values(a).flatMap(e=>{let t=e[0]?.owner;return t?.state===`bound`&&t.transportIdentity===l?[t]:[]}),[l,a]),m=KN(p),h=qN(),g=xP(),_=W.useMemo(()=>p.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),[p]),v=W.useRef(p);v.current=p;let y=W.useSyncExternalStore(W.useMemo(()=>e=>_?$u(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e,e=>g.getChild(e),{subscribeRebuild:e=>g.subscribeRegistry(e)}):()=>void 0,[g,_]),W.useMemo(()=>()=>_?ed(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e=>g.getChild(e)):``,[g,_]),()=>``),b=W.useCallback(e=>h(e),[h]),x=W.useCallback(e=>Gz(fd(e.directory,e.sessionID,g.getChild(e.directory))),[g]),[S,C]=W.useState(0),w=W.useRef(new Map),T=W.useRef(new Set);W.useEffect(()=>{if(!t||n!==`legacy-enabled`)return;let e=Date.now();$.getState().pruneQueueAbortBlocks(e);let r=new Set,i=new Set;for(let[t,n]of c)n.expiresAt>e&&i.add(t);for(let e of qz(o,u))r.add(e);let d=Xz({queuedMessages:a,activeTransportIdentity:l,getStatus:b,getTurnState:x,previous:w.current,inFlight:T.current,blockedSessions:r,blockedScopeKeys:i,now:e});for(let e of d.recoverOperations)re.getState().markQueueItemReconciling(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID});for(let e of d.dispatchScopes)re.getState().getQueueForScope(e)[0]&&iB(e.sessionID,{scope:e}).finally(()=>{C(e=>e+1)});for(let e of d.resolveOperations)oB(e.scope,e.item);for(let e of d.queryOperations){T.current.add(e.key);let t=aB(e,s()).finally(()=>{T.current.delete(e.key),Nz.delete(t),C(e=>e+1)});Nz.add(t)}let f=Yz(c,e),p=d.nextWakeAt?f?Math.min(d.nextWakeAt,f):d.nextWakeAt:f,m;return p&&(m=setTimeout(()=>{$.getState().pruneQueueAbortBlocks(),C(e=>e+1)},Math.max(0,p-Date.now()))),()=>{m&&clearTimeout(m)}},[u,l,g,f,t,n,a,c,o,m,y,b,x,S])}function cB(){return!1}var lB={server:bR(),queue:JL(),status:e=>OI(L).then(t=>{if(e?.aborted)throw new DOMException(`Aborted`,`AbortError`);return t}),activate:rI,lateCommit:iI,capture:()=>({transportIdentity:r(),generation:s()}),current:e=>e.transportIdentity===r()&&e.generation===s(),quiesce:async()=>{await Uz()},flush:async()=>{y()},prepare:T,resolveDirectory:e=>$.getState().getDirectoryForSession(e)},uB=()=>({ownership:`probing`,migration:`idle`,frozen:!0,admission:`frozen`,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),dB=(e={})=>{let t={...lB,...e},n=uB(),r=0,i,a,o,s=500,c,l=!1,u=new Set,p=e=>{n={...n,...e};let r=n.ownership===`legacy-unsupported`;Cz(r?`legacy-enabled`:`blocked`),O(r?`open`:n.migration===`freezing`||n.ownership===`probing`||n.ownership===`blocked`?`quiescing`:`recovery-read-only`),(n.ownership===`server-active`||n.ownership===`server-paused`)&&te(t.capture().transportIdentity),u.forEach(e=>e())},m=()=>{clearTimeout(o),o=setTimeout(()=>{y()},s),s=Math.min(3e4,s*2)},h=e=>{p({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`?p({ownership:n.authority===`paused`?`server-paused`:`server-active`,migration:`late-importing`,frozen:!1,admission:`server`,status:n,importState:i,error:a}):p({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):(p({ownership:`probing`,migration:`freezing`,frozen:!0,admission:`frozen`,status:r,error:void 0}),await _(e)?r.authority===`active`||r.authority===`paused`?(p({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):(p({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 X&&r.status===501?(p({ownership:`legacy-unsupported`,migration:`idle`,frozen:!1,admission:`legacy`,error:void 0}),n):(h(r),n)}},y=()=>c?(l=!0,c):(c=v().finally(()=>{c=void 0,l&&(l=!1,y())}),c),b=async(e,n,r)=>{let a=await sR({queue:t.queue,capture:()=>e,current:t.current,kind:r,authorityGeneration:()=>n.generation??0,publish:e=>p({importState:e})}).run(i?.signal);if(t.current(e)){if(p({importState:a}),!a.canActivate||!a.importID||!a.manifestHash){g(e,n,r,a);return}p({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;s=500,p({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 AI(L).catch(()=>void 0);if(o?.manifestHash===a.manifestHash&&o.activationEpoch!==void 0&&(o.authority===`active`||o.authority===`paused`)){s=500,p({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=>(u.add(e),()=>u.delete(e)),getSnapshot:()=>n,start:()=>{r++,x!==void 0&&(clearTimeout(x),x=void 0),!(r>1)&&(a=d(e=>{f(e)&&(i?.abort(),p(uB()),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}},fB,pB=()=>fB??=dB(),mB=t({confirmQueueAbortOptimistic:()=>PB,getQueueAbortOptimisticPresentation:()=>wB,getQueueAbortOptimisticRevision:()=>CB,isQueueItemHiddenByAbortOptimistic:()=>TB,planQueueAbortOptimisticReconcile:()=>jB,promoteQueueHeadOnAbort:()=>RB,reconcileQueueAbortOptimistic:()=>LB,rollbackQueueAbortOptimistic:()=>NB,subscribeQueueAbortOptimistic:()=>SB,useQueueAbortOptimisticReconcile:()=>zB}),hB=new Set([`queued`,`retrying`]),gB=new Set([`sending`,`reconciling`]),_B=new Set([`failed`,`unresolved`]),vB=new Map,yB=new Set,bB=0,xB=()=>{bB+=1;for(let e of yB)e()},SB=e=>(yB.add(e),()=>{yB.delete(e)}),CB=()=>bB,wB=e=>vB.get(e),TB=(e,t)=>vB.get(e)?.queueItemID===t,EB=(e,t)=>{let n;for(let r of jd(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},DB=e=>{let t=e?.[0];if(!(!t||!hB.has(t.status))&&t.deliveryTarget?.kind!==`assistant`)return t},OB=(e,t)=>{let n=re.getState(),i={state:`bound`,transportIdentity:r(),directory:t,sessionID:e};return DB(n.getQueueForScope(i))??DB(n.getQueueForScope(j(e)))},kB=(e,t)=>{let n=pB().getSnapshot().ownership;return n!==`server-active`&&n!==`server-paused`?void 0:DB(bR().getScope({transportIdentity:r(),directory:t,sessionID:e})?.items)},AB=e=>{let t=e.sendConfig?.providerID,n=e.sendConfig?.modelID;return!t||!n?null:{providerID:t,modelID:n,agent:e.sendConfig?.agent}},jB=(e,t)=>e&&(hB.has(e.status)||gB.has(e.status))?t.hasPinnedMessage?`confirm`:`keep`:e&&_B.has(e.status)?`rollback`:t.hasPinnedMessage?`confirm`:t.hasLaterUserMessage?`rollback`:`keep`,MB=e=>{let t=vB.get(e);if(t)return vB.delete(e),xB(),t},NB=e=>{let t=MB(e);t&&ES(t.ticket)},PB=e=>{let t=MB(e);t&&$.getState().clearMessageSending?.(e,t.messageID)},FB=e=>{if(e.source===`server`){let t=bR().getScope({transportIdentity:r(),directory:e.directory,sessionID:e.sessionID})?.items.find(t=>t.queueItemID===e.queueItemID);return t?{queueItemID:t.queueItemID,status:t.status}:null}let t={state:`bound`,transportIdentity:r(),directory:e.directory,sessionID:e.sessionID},n=k(re.getState(),t).find(t=>t.queueItemID===e.queueItemID)??k(re.getState(),j(e.sessionID)).find(t=>t.queueItemID===e.queueItemID);return n?{queueItemID:n.queueItemID,status:n.status}:null},IB=e=>{let t=jd(e.sessionID,e.directory),n=!1,r=!1;for(let i of t){let t=typeof i?.id==`string`?i.id:``;t===e.messageID&&(n=!0),i?.role===`user`&&t&&t>e.messageID&&(r=!0)}return{hasPinnedMessage:n,hasLaterUserMessage:r}},LB=e=>{let t=e?[vB.get(e)].filter(e=>!!e):[...vB.values()];for(let e of t){let t=jB(FB(e),IB(e));t===`confirm`?PB(e.sessionID):t===`rollback`&&NB(e.sessionID)}},RB=e=>{if(!e||vB.has(e))return vB.get(e)??null;let t=$.getState().getDirectoryForSession(e);if(!t)return null;let n=kB(e,t),r=n?void 0:OB(e,t),i=n??r;if(!i)return null;let a=AB(i);if(!a)return null;let o=typeof i.content==`string`?i.content:``,s=be(`msg`,EB(e,t));try{let r=wS({sessionId:e,content:o,providerID:a.providerID,modelID:a.modelID,agent:a.agent,directory:t,messageID:s}),c={sessionID:e,directory:t,queueItemID:i.queueItemID,operationID:`operationID`in i?i.operationID:void 0,messageID:r.messageID,ticket:r,source:n?`server`:`legacy`};return vB.set(e,c),xB(),c}catch{return null}};function zB(){let e=(0,V.c)(4),t=W.useSyncExternalStore(SB,CB,CB),n=re(WB),r;e[0]!==t||e[1]!==n?(r=[t,n],e[0]=t,e[1]=n,e[2]=r):r=e[2],W.useEffect(UB,r);let i;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[3]=i):i=e[3],W.useEffect(BB,i)}function BB(){let e=bR().subscribe(HB),t=d(VB);return()=>{e(),t()}}function VB(){for(let e of[...vB.keys()])NB(e)}function HB(){LB()}function UB(){LB()}function WB(e){return e.queuedMessages}var GB=280,KB=[`You distill a text selection from a coding-agent conversation into a project note.`,`Return ONLY the note text — no preamble, no surrounding quotes, no headers.`,`Write 1-3 tight sentences that capture the essence worth remembering later: facts, decisions, constraints, root causes, gotchas, next steps.`,`Preserve exact identifiers verbatim — file paths, function names, commands, flags, versions — in backticks.`,`Drop filler, hedging, greetings, and step-by-step narration.`,`Write the note in the same language as the selection. Ignore any other language preferences or personalization — only the selection text decides the language.`].join(`
470
- `);async function qB(e,t){let n=e.trim();if(n.length<GB)return n;try{let e=t?yx(t):null,{currentProviderId:r,currentModelId:i}=G.getState(),a=e?.providerID||r||``,o=e?.modelID||i||``,s=await F(`/api/small-model/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:n,system:KB,restrictToPreferredProvider:!0,...a?{preferredProviderID:a}:{},...o?{preferredModelID:o}:{}})});if(!s.ok)return n;let c=await s.json().catch(()=>null);return(typeof c?.text==`string`?c.text.trim():``)||n}catch{return n}}var JB=[`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(`
471
- `);async function YB(e){try{let{currentProviderId:t,currentModelId:n}=G.getState(),r=await F(`/api/small-model/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:e,system:JB,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 XB=[`active`,`paused`,`blocked`,`budgetLimited`,`complete`],ZB=5e3,QB=e=>!!e&&typeof e==`object`&&!Array.isArray(e),$B=e=>typeof e==`string`&&XB.includes(e);function eV(e){let t=e?.metadata;if(!QB(t))return null;let n=t.openchamber;if(!QB(n))return null;let r=n.goal;if(!QB(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||!$B(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,ZB),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 tV(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 nV(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 rV=e=>!!e&&typeof e==`object`&&!Array.isArray(e),iV=()=>`${Date.now().toString(36)}${Math.random().toString(36).slice(2,8)}`,aV=(e,t,n)=>$x(e,t,e=>{let t=rV(e.openchamber)?e.openchamber:{},r=n(rV(t.goal)?t.goal:null),i={...t};return r?i.goal=r:delete i.goal,{...e,openchamber:i}}),oV=async(e,t)=>{try{return(await F(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({content:t})})).ok}catch{return!1}},sV=e=>{F(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`DELETE`}).catch(()=>void 0)};async function cV(e){try{let t=await F(`/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 lV=`
472
-
473
- [… objective trimmed for the auditor — the full text was delivered in the chat message …]
474
-
475
- `,uV=async e=>{if(e.length<=5e3)return e;let t=await YB(e);if(t)return t.slice(0,ZB);let n=Math.max(0,Math.floor((ZB-93)/2)),r=at.getState().dictionary;return oD.error(ot(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${lV}${e.slice(-n)}`};async function dV(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await uV(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await oV(e,a),c=Date.now();await aV(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:iV(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function fV(e,t){await aV(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function pV(e,t,n){n===`paused`&&(RB(e),zS(e)),await aV(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 mV(e,t){let n=!1;await aV(e,t,e=>(n=e?.status===`active`,null)),sV(e),n&&(RB(e),zS(e))}var hV=`<system-reminder>`,gV=`</system-reminder>`,_V=e=>{let t=e.trim();return t?t.startsWith(hV)&&t.endsWith(gV)?t:`${hV}\n${t}\n${gV}`:``},vV=(e,t=i())=>`${t}\n${e}`,yV=(e,t)=>{let n=bV.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(vV(e))??n.sessionMemoryState.get(e)},bV=Oe()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??vV(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}})})),xV=Oe((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}})})),SV=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function CV(e,t){if(e){if(!e.degraded&&e.cwd)return SV(e.cwd);if(e.worktreeRoot)return SV(e.worktreeRoot);if(e.cwd)return SV(e.cwd)}return t?SV(t):null}function wV(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function TV(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 EV(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?SV(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=SV(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 DV=`openchamber.session-switch.start`,OV=`openchamber.session-switch.highlight-painted`,kV=`openchamber.session-switch.content-committed`,AV=`data-openchamber-session-switch-highlight-ms`,jV=`data-openchamber-session-switch-content-ms`,MV=`openchamber.session-switch.highlight-latency`,NV=`openchamber.session-switch.content-latency`,PV=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,FV=()=>PV()&&performance.getEntriesByName(DV,`mark`).length>0,IV=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},LV=(e=!1)=>{PV()&&(!e&&performance.getEntriesByName(DV,`mark`).length>0&&performance.getEntriesByName(kV,`mark`).length===0||(performance.clearMarks(DV),performance.clearMarks(OV),performance.clearMarks(kV),performance.clearMeasures(MV),performance.clearMeasures(NV),typeof document<`u`&&(document.documentElement.removeAttribute(AV),document.documentElement.removeAttribute(jV)),performance.mark(DV)))},RV=()=>{if(!FV())return;performance.mark(OV),performance.measure(MV,DV,OV);let e=performance.getEntriesByName(MV,`measure`).at(-1);e&&IV(AV,e.duration)},zV=()=>{if(!FV())return;performance.mark(kV),performance.measure(NV,DV,kV);let e=performance.getEntriesByName(NV,`measure`).at(-1);e&&IV(jV,e.duration)},BV={revision:0,sessionId:null},VV=new Set,HV=e=>{BV={revision:BV.revision+1,sessionId:e};for(let e of VV)e(BV);return BV},UV=()=>BV,WV=e=>(VV.add(e),()=>VV.delete(e));function GV(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:ge(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:ge(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:ge(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:ge(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:ge(`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 KV(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function qV(e,t){if(!e)return;let n=KV(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 JV(e){let t=e.directory??void 0,n=XV(e.sessionId,e.onSendConfirmed),i=e.content;if(e.inputMode===`shell`){let r=e.messageID??ge(`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 a=de(e.content);if(a){let o=a.commandName.toLowerCase(),s=a.argumentsText,c=t??Ue.getState().currentDirectory??null,l=r(),u=Ci(c,l),d=Ha(c,l),f=L.getQueryState(u.queryKey),p=L.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(Ti(c,l)):L.fetchQuery({...u,staleTime:1/0}),h?Promise.resolve(Wa(L,c,l)):L.fetchQuery({...d,staleTime:1/0})]);if(r()!==l)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===o)?void 0:g.find(e=>e.name.toLowerCase()===o);if(v?.isBuiltIn===!1)i=`[command:${v.reference??v.name}]${s?` ${s}`:``}`;else if(v)return OS({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:s,agent:e.agent,variant:e.variant,files:e.files,messageId:n,directory:t}).then(()=>{})})}return OS({sessionId:e.sessionId,content:i,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:i,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 YV(e,t){F(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function XV(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{YV(e,r)}}}}var ZV=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},QV=u(),$V=`oc.chatInput.lastDraftTarget`,eH=()=>{try{let e=QV.getItem($V);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:_(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},tH=e=>{try{QV.setItem($V,JSON.stringify(e))}catch{}},nH=qo,rH=e=>{if(e)return xV.getState().getAttachment(e)},iH=(e,t,n)=>{if(!e)return null;let r=CV(rH(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return _(i);if(n?.includeRuntimeMemory!==!1){let t=uH.get(dH());if(t?.sessionId===e&&t.directory)return _(t.directory)}let a=Od().find(t=>t.id===e);return a?ZV(a):null},aH=e=>{let t=Od().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},oH=async(e,t)=>{await G.getState().activateDirectory(_(e),t)},sH={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},cH=new Map,lH=0,uH=new Map,dH=e=>(e??i()).trim()||`default`,fH=e=>({...e}),pH=(e,t)=>{let n=uH.get(e);uH.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?fH(n.draft):{...sH},...t})},mH=(e,t)=>{let n=yi.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=qo(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},hH=async(e,t)=>{if(!e)return;let n=mH(e,t);n&&await DO(n)&&await ID(e)},gH=(e,t)=>{let n=yi.getState(),r=qo(n.projects,t,e);r&&n.moveProjectToTop(r.id)},_H=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,vH=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,yH=(e,t)=>vH(e,t)&&_H(wr.getState().captureDraftRuntime(),t.runtime);async function bH(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?GV({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return pH(dH(),{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 xH(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return pH(dH(),{draft:n}),{newSessionDraft:n}})}async function SH(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=dH(),t=s.draftID,n=o,pH(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=wr.getState().captureDraftRuntime(),o=S(a,t),s=wr.getState().getDraft(o);return{token:n,draftID:t,draft:fH(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function CH(e){$.setState(t=>{let n=t.newSessionDraft;if(yH(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=uH.get(e.runtimeMemoryKey);return r&&vH(r.draft,e)&&pH(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=uH.get(e.runtimeMemoryKey);t&&vH(t.draft,e)&&pH(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function wH(e){let t=uH.get(e.runtimeMemoryKey);t&&vH(t.draft,e)&&pH(e.runtimeMemoryKey,{draft:{...sH}})}async function TH(e,t,n){if(!e.source)return null;let r;try{r=await wr.getState().finalizeDraftOwnership({source:e.source.key,destination:C(e.runtime,t),expectedSourceRevision:e.source.revision,disposition:n,runtime:e.runtime})}catch{return console.warn(`[session-ui-store] draft ownership finalization rejected`,{disposition:n,sessionID:t,draftID:e.draftID}),null}return r.status!==`committed`&&console.warn(`[session-ui-store] draft ownership finalization did not commit`,{status:r.status,disposition:n,sessionID:t,draftID:e.draftID}),r}function EH(e,t){let n=t??e.directory??null;n&&xd(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function DH(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=_(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!yH(l,r);EH(e,c);let f=G.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&_E.getState().addSessionToFolder(t,a,e.id)}return d||(tH({projectId:o??null,directory:c}),oH(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),Uo.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(Uo.getState().saveSessionAgentSelection(e.id,p),Uo.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),Uo.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),gH(c,$.getState().availableWorktreesByProject),u&&Xe(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>tj);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&&wH(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function OH(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await DE(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await hH(t,n);let r=t??B.getDirectory();return{directory:_(r),projectId:n}}async function kH(e,t){let n=await SH(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 OH(r),o=a??B.getDirectory(),s=await Qx(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&kS({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 DH(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return CH(n),null}}async function AH(e){let t=await kH(e);return t?(await TH(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var jH=2,MH=300;async function NH(e){let{useI18nStore:t,formatMessage:n}=await Xe(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-OURVnLSN.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 PH(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=G.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??ge(`msg`),h=GV({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 SH(h);if(!g)throw await NH(`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 OH(_),f=await B.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=Te()?.conversations;if(!v?.createWithPrompt)throw await NH(`chat.chatInput.toast.messageSendFailed`);let y=d??B.getDirectory()??``,b=px(y,{bootstrap:!1}),x=()=>_H(wr.getState().captureDraftRuntime(),g.runtime),S;for(let e=0;e<=jH;e++){e>0&&await new Promise(e=>setTimeout(e,MH));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===jH))break}catch{if(e===jH)break}}if(!S)throw CH(g),wr.getState().setPendingInputText(t,`replace`),await NH(`chat.chatInput.toast.messageSendFailed`);if(S.ok){let e=S.session,t=d??e.directory??null,i=t??y;EH(e,t);let a=i===y?b:px(i,{bootstrap:!1});qV(e.id,h);let s=await DH(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 TH(g,e.id,`consume`),YV(e.id,m),s.selected&&aC(e.id),RS({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 CH(g),wr.getState().setPendingInputText(t,`replace`),await NH(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=S,i=e.session,a=d??i.directory??null,s=await DH(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 jS(i.id,m,a,{isCurrent:x});if(e&&x()){await TH(g,i.id,`consume`),YV(i.id,m),s.selected&&aC(i.id),MS(px(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await TH(g,i.id,`preserve`),wr.getState().setPendingInputText(t,`replace`),await NH(`chat.chatInput.toast.sendStatusUnknown`)}throw await TH(g,i.id,`preserve`),wr.getState().setPendingInputText(t,`replace`),await NH(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw CH(g),e}}var FH=`oc.worktreeMap`,IH=()=>{try{let e=u().getItem(FH);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}},LH=e=>{try{u().setItem(FH,e)}catch{}},RH=e=>{let t=[];for(let n of e.values())t.push(...n);return t},zH=IH(),$=Oe()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...sH},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:RH(zH),availableWorktreesByProject:zH,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,sessionPlanAvailable:new Map,pendingChangesBarDismissed:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map,clearRetainedPendingUserMessages:(t,n)=>{!t||n.length===0||e(e=>{let r=e.retainedPendingUserMessages.get(t);if(!r?.length)return e;let i=new Set(n),a=r.filter(e=>!i.has(e.info.id));if(a.length===r.length)return e;let o=new Map(e.retainedPendingUserMessages);return a.length===0?o.delete(t):o.set(t,a),{retainedPendingUserMessages:o}})},clearStagedMessageEdit:t=>{e(e=>!e.stagedMessageEdit||t&&e.stagedMessageEdit.sessionId!==t?e:{stagedMessageEdit:null})},beginMessageEditCommit:(t,n)=>{e({messageEditCommitting:{sessionId:t,messageId:n}})},endMessageEditCommit:(t,n)=>{e(e=>{let r=e.messageEditCommitting;return!r||r.sessionId!==t||r.messageId!==n?e:{messageEditCommitting:null}})},markMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)===n)return e;let r=new Map(e.pendingSendMessageIDs);return r.set(t,n),{pendingSendMessageIDs:r}})},clearMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)!==n)return e;let r=new Map(e.pendingSendMessageIDs);return r.delete(t),{pendingSendMessageIDs:r}})},setCurrentSession:(n,i)=>{HV(n),b(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(LV(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),wr.getState().setActiveAttachmentDraft(n?C({transportIdentity:r()},n):null);let s=dH();cH.set(s,n);let c=Ue.getState(),l=iH(n,e=>t().worktreeMetadata.get(e)),u=B.getDirectory()??c.currentDirectory??null,d=(i?_(i):null)??l??u,f=yi.getState(),m=d?qo(f.projects,t().availableWorktreesByProject,d):null;e({currentSessionId:n,currentSessionDirectory:n?d??null:null}),pH(s,{sessionId:n,directory:d??null}),a!==n&&p.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?d??null:null}),n&&nC(n,d);try{d&&c.currentDirectory!==d&&c.setDirectory(d,{showOverlay:!1}),m&&f.activeProjectId!==m.id&&f.setActiveProjectIdOnly(m.id),B.setDirectory(d??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!yV(e)?.isStreaming){let t=jd(e);t.length>0&&bV.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(nk(n),GM(d??``,n))},prepareForRuntimeSwitch:n=>{let r=dH(n),i=Ue.getState().currentDirectory||null,a=t().currentSessionId,o=i?Cd(i):null;Tj({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),cH.set(r,t().currentSessionId),pH(r,{sessionId:a,directory:i,draft:fH(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=dH(t),i=uH.get(n),a=i?.sessionId??cH.get(n)??null;b(a);let o=i?.draft?fH(i.draft):{...sH},s=i?.directory??null;s&&Ue.getState().setDirectory(s,{showOverlay:!1}),e({currentSessionId:a,currentSessionDirectory:a?s:null,newSessionDraft:a?{...sH}:o,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,sessionAbortFlags:new Map,queueAbortBlocks:new Map,pendingChangesBarDismissed:new Map,retainedPendingUserMessages:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map}),wr.getState().setActiveAttachmentDraft(a?C({transportIdentity:r()},a):o.open&&o.draftID?S({transportIdentity:r()},o.draftID):null),a?GM(s??B.getDirectory()??``,a):GM(``,``)},openNewSessionDraft:n=>{if(uF.getState().shouldBlockNewSessionDraftOpen())return;let i=t().newSessionDraft;if(i.draftSubmitting||i.draftEstablishing)return;t().clearStagedMessageEdit();let a=yi.getState(),o=a.projects,s=t().availableWorktreesByProject,c=_(t().currentSessionDirectory??null),l=_(Ue.getState().currentDirectory??null),u=eH(),d=n?.directoryOverride===void 0?null:_(n.directoryOverride),f=nH(o,s,d),m=n?.ensureProjectForDirectory&&d&&!f?a.addProject(d):null;m&&(a=yi.getState());let h=a.projects,g=a.getActiveProject(),v=n?.selectedProjectId?h.find(e=>e.id===n.selectedProjectId)??null:null,y=g||(a.activeProjectId?h.find(e=>e.id===a.activeProjectId)??null:h[0]??null),x=u?.projectId?h.find(e=>e.id===u.projectId)??null:null,C=nH(h,s,u?.directory??null),w=nH(h,s,c),T=nH(h,s,l),E=v||(d===null?w||(l?T:C??x??y):m??f),D=d===null?v?_(v.path??null):c||l||(u?.directory?u.directory:_(E?.path??null)):d;tH({projectId:E?.id??null,directory:D}),E&&a.activeProjectId!==E.id&&a.setActiveProjectIdOnly(E.id);let O=le({projectId:E?.id??null,directory:D}),k=S({transportIdentity:r()},O),A=wr.getState().getDraft(k),j={open:!0,draftID:O,selectedProjectId:E?.id??null,directoryOverride:D,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:_(n?.bootstrapPendingDirectory??null),preserveDirectoryOverride:n?.preserveDirectoryOverride===!0,parentID:n?.parentID??null,title:n?.title,initialPrompt:n?.initialPrompt,syntheticParts:n?.syntheticParts,targetFolderId:n?.targetFolderId,submissionToken:i.open&&i.draftID===O?i.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},ee=t().currentSessionId,te=t().currentSessionDirectory;e({newSessionDraft:{...j},currentSessionId:null,currentSessionDirectory:null,error:null}),b(null),p.getState().setActiveMainTab(`chat`),ee&&p.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:ee,previousDirectory:te,nextSessionId:null,nextDirectory:null}),pH(dH(),{sessionId:null,directory:D,draft:j}),wr.getState().setActiveAttachmentDraft(k),A||wr.getState().clearAttachedFiles(),n?.initialPrompt&&wr.getState().setPendingInputText(n.initialPrompt);let M=_(E?.path??null)??D,ne=E?_(M):null,re=j.draftID,ie=r();oH(M,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=_(G.getState().activeDirectoryKey);!e.open||e.draftID!==re||r()!==ie||!ne||n!==ne||G.getState().applyDefaultModelAgentSelection({projectDefaultModel:E?.defaultModel})}),D&&D!==Ue.getState().currentDirectory&&Ue.getState().setDirectory(D)},closeNewSessionDraft:()=>{let t={open:!1,draftID:null,selectedProjectId:null,directoryOverride:null,pendingWorktreeRequestId:null,bootstrapPendingDirectory:null,preserveDirectoryOverride:!1,parentID:null,title:void 0,initialPrompt:void 0,syntheticParts:void 0,targetFolderId:void 0,draftSubmitting:!1,draftEstablishing:!1};e({newSessionDraft:t}),pH(dH(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=_(t.directoryOverride??e.newSessionDraft.directoryOverride);let i=n?.force===!0;return{newSessionDraft:{...e.newSessionDraft,selectedProjectId:t.projectId??t.selectedProjectId??e.newSessionDraft.selectedProjectId,directoryOverride:t.directoryOverride??e.newSessionDraft.directoryOverride,...i?{bootstrapPendingDirectory:null,preserveDirectoryOverride:!1}:{}}}}),oH(r,{source:`setNewSessionDraftTarget`}),r&&r!==Ue.getState().currentDirectory&&Ue.getState().setDirectory(r)},setDraftPreserveDirectoryOverride:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,preserveDirectoryOverride:t}}:e),setDraftPermissionAutoAcceptEnabled:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,permissionAutoAcceptEnabled:t}}:e),acknowledgeSessionAbort:t=>e(e=>{let n=new Map(e.sessionAbortFlags),r=n.get(t);return r&&n.set(t,{...r,acknowledged:!0}),{sessionAbortFlags:n}}),beginQueueAbortBlock:(t,n=2e3)=>{let r=fe(),i=D(t);return e(e=>{let t=new Map(e.queueAbortBlocks);return t.set(i,{token:r,expiresAt:Date.now()+n}),{queueAbortBlocks:t}}),r},clearQueueAbortBlock:(t,n)=>e(e=>{let r=D(t);if(e.queueAbortBlocks.get(r)?.token!==n)return e;let i=new Map(e.queueAbortBlocks);return i.delete(r),{queueAbortBlocks:i}}),pruneQueueAbortBlocks:(t=Date.now())=>e(e=>{let n;for(let[r,i]of e.queueAbortBlocks)i.expiresAt>t||(n||=new Map(e.queueAbortBlocks),n.delete(r));return n?{queueAbortBlocks:n}:e}),clearAbortPrompt:()=>e({abortPromptSessionId:null,abortPromptExpiresAt:null}),armAbortPrompt:(n=5e3)=>{let{currentSessionId:r}=t();if(!r)return null;let i=Date.now()+n;return e({abortPromptSessionId:r,abortPromptExpiresAt:i}),i},clearError:()=>e({error:null}),markSessionAsOpenChamberCreated:t=>e(e=>{let n=new Set(e.webUICreatedSessions);return n.add(t),{webUICreatedSessions:n}}),isOpenChamberCreatedSession:e=>t().webUICreatedSessions.has(e),getContextUsage:(e,n)=>{if(t().newSessionDraft?.open)return null;let r=t().currentSessionId;if(!r)return null;let i=jd(r);if(i.length===0)return null;let a=YO(i,e=>Md(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(GO(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?xV.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}):xV.getState().clearAttachment(t),e(e=>{let r=new Map(e.worktreeMetadata);return n?r.set(t,n):r.delete(t),{worktreeMetadata:r}})},overrideNewSessionDraftTarget:t=>{let n=null;e(e=>{let r={...e.newSessionDraft,...t};return n=_(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),oH(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Ue.getState().currentDirectory&&Ue.getState().setDirectory(n)},resolvePendingDraftWorktreeTarget:(t,n,r)=>e(e=>!e.newSessionDraft?.open||e.newSessionDraft.pendingWorktreeRequestId!==t?e:{newSessionDraft:{...e.newSessionDraft,selectedProjectId:r?.projectId??e.newSessionDraft.selectedProjectId??null,directoryOverride:_(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:_(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:_(t)}}:e),setPendingDraftWorktreeRequest:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,pendingWorktreeRequestId:t}}:e),getWorktreeMetadata:e=>t().worktreeMetadata.get(e),dismissPendingChangesBar:(n,r)=>{let i=new Map(t().pendingChangesBarDismissed);r===null?i.delete(n):i.set(n,r),e({pendingChangesBarDismissed:i})},sendMessage:async(n,r,i,a,o,s,c,l,u,d)=>{let f=t().stagedMessageEdit,m=d?.sessionId??t().currentSessionId,h=d?.commitStagedMessageEdit&&f&&f.sessionId===m?f:null,g=d?.sessionId??t().currentSessionId;if(g){let n=new Map(t().pendingChangesBarDismissed);n.delete(g),e({pendingChangesBarDismissed:n})}let v=t().newSessionDraft,y=typeof a==`string`&&a.trim().length>0?a.trim():void 0,b=u!==`shell`&&n.trim().length>0?dF.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=p.getState(),t=_V(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let S=(e,t)=>{if(!x)return;let r=p.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;dV(e,t??void 0,{objective:a,tokenBudget:i},null).catch(e=>{console.warn(`[session-ui-store] failed to set goal from armed send`,e)})};if(!d?.sessionId&&v?.open){if(u!==`shell`&&!n.trimStart().startsWith(`/`)&&!d?.delivery&&Te()?.conversations?.createWithPrompt){await PH({content:n,providerID:r,modelID:i,agent:y,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:d?.messageID,onSessionReady:S});return}let e=d?.messageID??v.pendingUserMessage?.info.id??ge(`msg`),a=GV({messageID:e,sessionID:`draft:pending`,providerID:r,modelID:i,agent:y,text:n,attachments:o,additionalParts:v.syntheticParts?.length?[...c||[],...v.syntheticParts]:c,agentMentionName:s}),f=await kH({providerID:r,modelID:i,agent:y,variant:l},a);if(!f)throw Error(`Failed to create session`);let{materialized:p,claim:m}=f,h=p.syntheticParts?.length?[...c||[],...p.syntheticParts]:c;aC(p.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await JV({sessionId:p.sessionId,directory:p.directory,content:n,providerID:r,modelID:i,agent:p.agent,agentMentionName:s,variant:l,inputMode:u,files:g,delivery:d?.delivery,messageID:e,optimisticParts:a.parts,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:h?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))}),await TH(m,p.sessionId,`consume`)}catch(e){throw await TH(m,p.sessionId,`preserve`),e}gH(p.directory,t().availableWorktreesByProject),S(p.sessionId,p.directory);return}let C=d?.sessionId??t().currentSessionId,w=C?Uo.getState().getSessionAgentSelection(C):null,T=G.getState().currentAgentName,E=y||w||T||void 0;if(C&&Uo.getState().saveSessionModelSelection(C,r,i),C&&E&&(Uo.getState().saveSessionAgentSelection(C,E),Uo.getState().saveAgentModelForSession(C,E,r,i),Uo.getState().saveAgentModelVariantForSession(C,E,r,i,l)),C){let e=bV.getState(),t=yV(C);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(vV(C),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),bV.setState({sessionMemoryState:n})}}let D=C?_(d?.directoryHint)??_(t().getDirectoryForSession(C)):null;C&&aC(C);let O=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(h)try{await XS(h.sessionId,h.messageId,{directory:D??void 0}),t().stagedMessageEdit===h&&e({stagedMessageEdit:null})}catch(e){throw t().endMessageEditCommit(h.sessionId,h.messageId),e}try{await JV({sessionId:C||``,directory:D,content:n,providerID:r,modelID:i,agent:E,agentMentionName:s,variant:l,inputMode:u,files:O,delivery:d?.delivery,messageID:d?.messageID,ticket:d?.ticket,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:c?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))})}finally{h&&t().endMessageEditCommit(h.sessionId,h.messageId)}gH(D,t().availableWorktreesByProject),C&&S(C,D)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await Qx(n,r??B.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),pH(dH(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&_E.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}}),pH(dH(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>dS(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await dS(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>mS(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await mS(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await gS(e,t)},requestSessionSmartTitle:async e=>{await _S(e)},shareSession:async e=>vS(e),unshareSession:async e=>yS(e),revertToMessage:async(e,t,n)=>{await WS(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await KS(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=jd(e),r=Dd().find(t=>t.id===e)?.revert?.messageID,i=cs(n,r);if(!i)return;let a=Md(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 Xe(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 Xe(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-OURVnLSN.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 Xe(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>Fb);return{unrevertSession:e}},void 0);await t(e);let{toast:n}=await Xe(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 Xe(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-OURVnLSN.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=Dd().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=ls(jd(e),r);if(i){await t().revertToMessage(e,i.id,{skipRedoPush:!0});let{toast:n}=await Xe(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 Xe(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-OURVnLSN.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 $S(e);let{toast:a}=await Xe(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 Xe(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-OURVnLSN.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=aH(n),s=++lH;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 Xe(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 eC(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await Xe(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 Xe(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=aH(n),a=++lH;try{let r=t().getDirectoryForSession(n)??B.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await Xe(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 eC(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await Xe(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 Xe(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===a?{forkTransition:null}:e)}},getSessionsByDirectory:e=>{let t=_(e);return t?Od().filter(e=>ZV(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=iH(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=Y.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?oT(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:iH(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=jd(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=>Uo.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=jd(e);Dd().find(t=>t.id===e),`${e}`,t.length,t.map(e=>({id:e.id,role:e.role,tokens:e.role===`assistant`?e.tokens:void 0}))},pollForTokenUpdates:()=>{},setSessionDirectory:(n,r)=>{let i=_(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),pH(dH(),{sessionId:n,directory:i}))},markSessionPlanAvailable:t=>{e(e=>{if(e.sessionPlanAvailable.get(t)===!0)return e;let n=new Map(e.sessionPlanAvailable);return n.set(t,!0),{sessionPlanAvailable:n}})},isSessionPlanAvailable:e=>t().sessionPlanAvailable.get(e)??!1}));vj((e,t)=>{$.getState().setCurrentSession(e,t)});var BH=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==BH&&(BH=t,LH(t))}});function VH(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function HH(e){return e.length>1?e.slice(0,-1):[]}function UH(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function WH(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 GH={activeTab:`projects`,secondary:null},KH=0,qH=null,JH=e=>{let t=++KH;return qH={generation:t,sessionId:e.sessionId,directory:_(e.directory)??null},t},YH=e=>{let t=qH;return t&&t.generation===KH&&t.sessionId===e.sessionId&&t.directory===(_(e.directory)??null)?(qH=null,`internal`):(qH=null,`external`)},XH=()=>{KH+=1,qH=null},ZH=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&_(n)===_(e.directory)?XH():JH(e),t.setCurrentSession(e.sessionId,e.directory??null)},QH=Oe(e=>({...GH,setActiveTab:t=>{XH(),e({activeTab:t,secondary:null})},openSession:t=>{e({secondary:{kind:`chat`,routes:[eU(t,`root`)]}}),ZH(t)},pushSession:t=>{e(e=>{let n=eU(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?VH(e.secondary.routes,n):[n]}}}),ZH(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=HH(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=QH.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&ZH(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=WH(e.secondary.routes,eU(t,`parent`));return n===e.secondary.routes?e:{secondary:{kind:`chat`,routes:n}}}),replaceChatSession:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=e.secondary.routes.at(-1);return n?.sessionId===t.sessionId&&n.directory===(t.directory??null)?e:{secondary:{kind:`chat`,routes:UH(e.secondary.routes,eU(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=>{XH(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{XH(),st.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},closeSecondary:()=>{XH(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{XH(),e({...GH})}})),$H=1,eU=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${$H++}`,sessionId:e.sessionId,directory:e.directory??null}),tU=e=>!lt()||ut()?!1:(QH.getState().pushSession(e),!0);export{uz as $,Ta as $a,Md as $i,SD as $n,Pb as $r,KP as $t,nV as A,Wo as Aa,dm as Ai,VD as An,ut as Ao,sC as Ar,BP as At,iB as B,ko as Ba,Tp as Bi,IO as Bn,Yx as Br,WN as Bt,vV as C,is as Ca,xg as Ci,Rk as Cn,wr as Co,LT as Cr,dF as Ct,fV as D,Xo as Da,Fm as Di,rk as Dn,Ht as Do,qC as Dr,sF as Dt,cV as E,Zo as Ea,Km as Ei,ek as En,qt as Eo,IC as Er,cF as Et,TB as F,Lo as Fa,zp as Fi,jO as Fn,wS as Fr,KM as Ft,gz as G,mo as Ga,Jf as Gi,OO as Gn,WS as Gr,hP as Gt,wz as H,Za as Ha,Dp as Hi,AO as Hn,_S as Hr,YP as Ht,RB as I,Fo as Ia,kp as Ii,TO as In,pS as Ir,rM as It,yz as J,Wa as Ja,G as Ji,DD as Jn,lx as Jr,gP as Jt,oz as K,ho as Ka,Gf as Ki,UO as Kn,ES as Kr,pP as Kt,SB as L,Ro as La,xp as Li,DO as Ln,XS as Lr,eM as Lt,eV as M,qo as Ma,qp as Mi,VO as Mn,iS as Mr,wN as Mt,qB as N,Uo as Na,Kp as Ni,NO as Nn,zS as Nr,GM as Nt,pV as O,ts as Oa,Am as Oi,GO as On,dt as Oo,KC as Or,uF as Ot,CB as P,zo as Pa,Gp as Pi,kO as Pn,mS as Pr,qM as Pt,lz as Q,ha as Qa,jd as Qi,FD as Qn,Mx as Qr,XN as Qt,zB as R,No as Ra,Cp as Ri,zO as Rn,Qx as Rr,xP as Rt,bV as S,ss as Sa,qg as Si,zk as Sn,Er as So,FT as Sr,UF as St,mV as T,rs as Ta,eg as Ti,nk as Tn,Jt as To,aw as Tr,oF as Tt,Vz as U,Ya as Ua,Ep as Ui,MO as Un,BS as Ur,Xj as Ut,Sz as V,jo as Va,Op as Vi,HO as Vn,HS as Vr,GN as Vt,sB as W,Xa as Wa,tp as Wi,EO as Wn,VS as Wr,Yj as Wt,vz as X,za as Xa,Od as Xi,ED as Xn,hS as Xr,XP as Xt,hz as Y,Ga as Ya,kd as Yi,OD as Yn,KS as Yr,yP as Yt,sz as Z,Ua as Za,Sd as Zi,CD as Zn,gS as Zr,VP as Zt,CV as _,lu as _a,$g as _i,aj as _n,Pr as _o,BT as _r,jI as _t,xH as a,qu as aa,wv as ai,$N as an,Ca as ao,eD as ar,qR as at,xV as b,Xl as ba,e_ as bi,FA as bn,Dr as bo,IT as br,xI as bt,JV as c,_u as ca,yv as ci,UP as cn,ua as co,ME as cr,BR as ct,UV as d,uu as da,uv as di,bP as dn,Ei as do,EE as dr,PR as dt,Dd as ea,xb as ei,JN as en,Aa as eo,ID as er,rz as et,WV as f,xu as fa,_v as fi,WP as fn,xi as fo,TE as fr,ER as ft,EV as g,yu as ga,Qg as gi,oj as gn,Rr as go,PT as gr,kI as gt,RV as h,mu as ha,Y_ as hi,dj as hn,Fr as ho,NT as hr,cR as ht,bH as i,Zu as ia,Wv as ii,sP as in,wa as io,ZE as ir,ZR as it,tV as j,Go as ja,sm as ji,RO as jn,oC as jr,NP as jt,ZB as k,Jo as ka,vm as ki,YO as kn,lt as ko,GC as kr,UN as kt,$ as l,Su as la,gv as li,HP as ln,da as lo,kE as lr,AR as lt,zV as m,bu as ma,k_ as mi,gj as mn,yi as mo,_E as mr,SR as mt,tU as n,Ad as na,eb as ni,QN as nn,Oa as no,qE as nr,nz as nt,GV as o,gu as oa,pv as oi,tP as on,fa as oo,NE as or,KR as ot,LV as p,Cu as pa,G_ as pi,hj as pn,wi as po,VT as pr,bR as pt,_z as q,so as qa,gf as qi,wD as qn,fS as qr,mP as qt,QH as r,Bu as ra,Vy as ri,aP as rn,_a as ro,YE as rr,tz as rt,AH as s,vu as sa,bv as si,rP as sn,la as so,OE as sr,VR as st,YH as t,xd as ta,vb as ti,YN as tn,ka as to,oD as tr,iz as tt,HV as u,H as ua,vv as ui,cP as un,Ti as uo,wE as ur,wR as ut,TV as v,U as va,Zg as vi,ej as vn,Lr as vo,cT as vr,X as vt,_V as w,Yo as wa,tg as wi,Bk as wn,Kt as wo,Y as wr,lF as wt,yV as x,Bs as xa,Jg as xi,Zk as xn,Or as xo,oT as xr,SI as xt,wV as y,Yl as ya,r_ as yi,IA as yn,Ir as yo,zT as yr,hI as yt,pB as z,Mo as za,Sp as zi,xO as zn,US as zr,vP as zt};