@openchambery/web 1.19.20-beta.1 → 1.19.20

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 (59) hide show
  1. package/dist/assets/{AgentAvatar-B6-RdwKY.js → AgentAvatar-NT957MuI.js} +1 -1
  2. package/dist/assets/{AssistantView-DMTsVKM3.js → AssistantView-BjvfkSRS.js} +3 -3
  3. package/dist/assets/{DiagramView-BBL9oI1k.js → DiagramView-C_JfbxNl.js} +1 -1
  4. package/dist/assets/{FadeInOnReveal-BbBpeOth.js → FadeInOnReveal-CilRl4gc.js} +1 -1
  5. package/dist/assets/{Icon-CCkKTz-u.js → Icon-i5GiQRLq.js} +1 -1
  6. package/dist/assets/MarkdownRenderer-Cg82L3fN.js +2 -0
  7. package/dist/assets/{MarkdownRendererImpl-oe15Jjl0.js → MarkdownRendererImpl-B1iUwzOz.js} +1 -1
  8. package/dist/assets/{MarkstreamRendererImpl-C8d0NDM_.js → MarkstreamRendererImpl-BPtMj3-X.js} +1 -1
  9. package/dist/assets/{MobileDetailNavigation-DaOH9vG9.js → MobileDetailNavigation-s_vvUD_F.js} +1 -1
  10. package/dist/assets/{MobileShareBridge-B5EEs8Dl.js → MobileShareBridge-CKClHsWN.js} +1 -1
  11. package/dist/assets/MobileSurface-DHpXHbJp.js +2 -0
  12. package/dist/assets/{MultiRunWindow-DQkpVpO5.js → MultiRunWindow-DiA24bnN.js} +1 -1
  13. package/dist/assets/{OnboardingScreen-DMXidDTr.js → OnboardingScreen-BGRLk4Wi.js} +1 -1
  14. package/dist/assets/{OverlayScrollbar-CrlChx-Y.js → OverlayScrollbar-NuQI58XD.js} +1 -1
  15. package/dist/assets/{SettingsView-BFSKcf2Z.js → SettingsView-l0J7pfYo.js} +1 -1
  16. package/dist/assets/{SettingsWindow-DjZQR7lN.js → SettingsWindow-XlzRSS7E.js} +1 -1
  17. package/dist/assets/{TerminalView-CK50XlAX.js → TerminalView-DdIaaLba.js} +1 -1
  18. package/dist/assets/{ToolOutputDialog-BUQeVPtR.js → ToolOutputDialog-BbwuLdXU.js} +1 -1
  19. package/dist/assets/{appThemeRegistry-BqqyByZY.js → appThemeRegistry-ChzfD7mc.js} +1 -1
  20. package/dist/assets/{button-BS1ba7R-.js → button-DtzFDvij.js} +1 -1
  21. package/dist/assets/{collapsible-DfCfMPYL.js → collapsible-D-nzhcyF.js} +1 -1
  22. package/dist/assets/{context-menu-CtSnP8-Q.js → context-menu-BzVSzHLG.js} +1 -1
  23. package/dist/assets/{diagram-CTd-5KxX.js → diagram-2YWalSb5.js} +1 -1
  24. package/dist/assets/{dialog-CnoVLRpn.js → dialog-DGV7DsZC.js} +1 -1
  25. package/dist/assets/{fileMentionTouchSelection-EP-6eAzk.js → fileMentionTouchSelection-DyjmxUEN.js} +1 -1
  26. package/dist/assets/{gitApi-BYPtCCvV.js → gitApi-CHpibtno.js} +1 -1
  27. package/dist/assets/{input-CPygKZwH.js → input-CbB2HdLg.js} +1 -1
  28. package/dist/assets/{insertionBoundaries-BLQTgGzH.js → insertionBoundaries-Yd1Lorjw.js} +1 -1
  29. package/dist/assets/{main-CFAEmyuW.js → main-BoRXxmB3.js} +2 -2
  30. package/dist/assets/{main-DDg5K0wL.js → main-DCDcdV5o.js} +4 -4
  31. package/dist/assets/{markdownHeightCache-i3SmzGmZ.js → markdownHeightCache-C9ym9Tsb.js} +1 -1
  32. package/dist/assets/{miniChat-CcpkS8Vo.js → miniChat-12fxk5KR.js} +2 -2
  33. package/dist/assets/{mobile-DiFR05ZK.js → mobile-CkZem9Ad.js} +2 -2
  34. package/dist/assets/{multirun-YRfDzmpg.js → multirun-8fkF0Ji_.js} +1 -1
  35. package/dist/assets/{projectMeta-DCyCHsMx.js → projectMeta--y6tyjrv.js} +1 -1
  36. package/dist/assets/{renderElectronMiniChatApp-B3Mk5Lrm.js → renderElectronMiniChatApp-COFc0ZDJ.js} +2 -2
  37. package/dist/assets/{renderMobileApp-1kjmaG5P.js → renderMobileApp-BKzx7JL3.js} +4 -4
  38. package/dist/assets/{runtimeConfig-C4CpRLk-.js → runtimeConfig-DYWtBrkW.js} +1 -1
  39. package/dist/assets/{runtimeEndpointReset-CAycS8QL.js → runtimeEndpointReset-BSWg99jc.js} +1 -1
  40. package/dist/assets/{sessionChangeSummary-BIBjNW1j.js → sessionChangeSummary-BwupJF-Q.js} +1 -1
  41. package/dist/assets/{sessionLookup-BMfwaIF2.js → sessionLookup-DP2X1qRR.js} +1 -1
  42. package/dist/assets/{sortable-tabs-strip-D3ZwNg1m.js → sortable-tabs-strip-CfgEJfB0.js} +1 -1
  43. package/dist/assets/{store-CIwMPVXR.js → store-B6dImdlY.js} +1 -1
  44. package/dist/assets/{textarea-KQwYSuvU.js → textarea-BnD799LW.js} +1 -1
  45. package/dist/assets/{tooltip-BkfF78IS.js → tooltip-Djn7MSOX.js} +1 -1
  46. package/dist/assets/{useAppFontEffects-B25qIF_R.js → useAppFontEffects-DWLxpWlS.js} +5 -5
  47. package/dist/assets/{useDesktopWindowControlsLayout-DzC1-UAo.js → useDesktopWindowControlsLayout-BGPR_rq6.js} +1 -1
  48. package/dist/assets/{useEffectiveDirectory-CGHtjqdu.js → useEffectiveDirectory-CbV9_r1s.js} +1 -1
  49. package/dist/assets/{useMobileNavigationStore-CgkuSW74.js → useMobileNavigationStore-DrB_awgk.js} +4 -4
  50. package/dist/assets/{useSessionAutoCleanup-v1zEP2Id.js → useSessionAutoCleanup-Dnors7hB.js} +1 -1
  51. package/dist/assets/{useWorkerHighlightedLines-C_zH7AcW.js → useWorkerHighlightedLines-DQqqrOBU.js} +1 -1
  52. package/dist/assets/{zh-CN-IWKl_PjK.js → zh-CN-R8-mDcIp.js} +1 -1
  53. package/dist/assets/{zh-TW-Doq-iQ7V.js → zh-TW-BsOQbrwT.js} +1 -1
  54. package/dist/index.html +2 -2
  55. package/dist/mini-chat.html +2 -2
  56. package/dist/mobile.html +2 -2
  57. package/package.json +1 -1
  58. package/dist/assets/MarkdownRenderer-DgBpy0ML.js +0 -2
  59. package/dist/assets/MobileSurface-DN_xSpOw.js +0 -2
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/store-CIwMPVXR.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-base-ui-CnHfUmDN.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/vendor-sonner-DVzioF3d.js"])))=>i.map(i=>d[i]);
2
- import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{T as n,i as r,p as i,w as a}from"./runtime-auth-D66yq6ie.js";import{_ as o,c as s,f as c,h as l,i as u,m as d,n as f,o as p,r as m,s as h,t as g}from"./runtime-switch-LvWDU-SL.js";import{n as _,r as v}from"./runtime-fetch-zIalUnbb.js";import{A as y,Cn as b,Ct as x,Dt as S,Et as C,F as w,Ft as T,I as E,It as D,L as O,M as k,Mt as A,N as j,Nt as ee,Ot as te,P as ne,Pt as re,Q as ie,Qt as ae,R as M,St as oe,Tt as se,U as ce,Vt as le,Y as ue,Zt as de,_t as fe,at as pe,bt as N,ct as me,d as P,et as F,i as I,it as he,kt as ge,nt as _e,o as ve,pt as ye,r as be,rt as xe,tn as Se,tt as L,u as R,vt as Ce,w as we,wt as Te,xt as z,yt as Ee}from"./persistence-Ce3AnpEr.js";import{a as De,i as Oe,o as ke,r as Ae}from"./vendor-zustand-B4dlGEM2.js";import{nt as je,rt as Me}from"./vendor-base-ui-CnHfUmDN.js";import{Ct as Ne,Ft as Pe,Ht as Fe,Lt as Ie,Nt as B,Ot as Le,Pt as V,R as Re,St as ze,Vt as Be,Xt as Ve,Yt as He,n as Ue,qt as We,r as Ge,t as Ke}from"./platform-0w_Q9_ji.js";import{b as qe,t as Je,y as Ye}from"./useUIStore-Bxv3f23A.js";import{i as Xe,n as Ze,r as Qe,t as $e}from"./vendor-pathe-vBmvQE8f.js";import{a as et,n as tt,o as nt}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as rt}from"./vendor-react-DLPElpoQ.js";import{r as it}from"./vendor-tanstack-query-core-BWz0ose6.js";import{a as at,l as ot,n as st,o as ct,s as lt,t as ut}from"./vendor-tanstack-react-query-D7pys_c9.js";import{r as dt}from"./vendor-sonner-DVzioF3d.js";import{a as ft,n as pt}from"./vendor-reactuses-core-BnW6GxJt.js";import{d as mt,f as ht,t as gt}from"./button-BS1ba7R-.js";import{i as _t,t as vt}from"./store-CIwMPVXR.js";import{i as yt}from"./useAssistantUIStore-CMutVh9B.js";import{a as bt,i as xt,n as St,o as Ct,r as wt,s as Tt,t as Et}from"./vendor-zod-Dzk5kdUU.js";import{t as Dt}from"./vendor-fuse.js-DB5wDJbI.js";var Ot=1048576,kt=new TextEncoder,At=e=>e instanceof Error&&e.name===`AbortError`,jt=e=>At(e)?e:new DOMException(`The operation was aborted.`,`AbortError`),Mt=async e=>{try{await e?.cancel()}catch{}},Nt=async e=>{try{await e.cancel()}catch{}},Pt=async(e,t={})=>{let n=t.fetch??_,r;try{r=await n(e,{method:`GET`,headers:{Accept:`text/event-stream`},signal:t.signal})}catch(e){throw t.signal?.aborted||At(e)?jt(e):Error(`SSE request failed`)}if(!r.ok)throw await Mt(r.body),Error(`SSE response failed`);if(!/^text\/event-stream(?:\s*;|\s*$)/i.test(r.headers.get(`content-type`)??``))throw await Mt(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 Nt(i),i.releaseLock(),t.signal?.aborted||At(e)?jt(e):Error(`SSE response read failed`)}let a=new TextDecoder,o=``,s=0,c=!1,l=[],u=0,d=!1,f=()=>{l=[],u=0},p=()=>{l.length!==0&&(t.onActivity?.(),t.onMessage?.(l.join(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/store-B6dImdlY.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-base-ui-CnHfUmDN.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/vendor-sonner-DVzioF3d.js"])))=>i.map(i=>d[i]);
2
+ import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{T as n,i as r,p as i,w as a}from"./runtime-auth-D66yq6ie.js";import{_ as o,c as s,f as c,h as l,i as u,m as d,n as f,o as p,r as m,s as h,t as g}from"./runtime-switch-LvWDU-SL.js";import{n as _,r as v}from"./runtime-fetch-zIalUnbb.js";import{A as y,Cn as b,Ct as x,Dt as S,Et as C,F as w,Ft as T,I as E,It as D,L as O,M as k,Mt as A,N as j,Nt as ee,Ot as te,P as ne,Pt as re,Q as ie,Qt as ae,R as M,St as oe,Tt as se,U as ce,Vt as le,Y as ue,Zt as de,_t as fe,at as pe,bt as N,ct as me,d as P,et as F,i as I,it as he,kt as ge,nt as _e,o as ve,pt as ye,r as be,rt as xe,tn as Se,tt as L,u as R,vt as Ce,w as we,wt as Te,xt as z,yt as Ee}from"./persistence-Ce3AnpEr.js";import{a as De,i as Oe,o as ke,r as Ae}from"./vendor-zustand-B4dlGEM2.js";import{nt as je,rt as Me}from"./vendor-base-ui-CnHfUmDN.js";import{Ct as Ne,Ft as Pe,Ht as Fe,Lt as Ie,Nt as B,Ot as Le,Pt as V,R as Re,St as ze,Vt as Be,Xt as Ve,Yt as He,n as Ue,qt as We,r as Ge,t as Ke}from"./platform-0w_Q9_ji.js";import{b as qe,t as Je,y as Ye}from"./useUIStore-Bxv3f23A.js";import{i as Xe,n as Ze,r as Qe,t as $e}from"./vendor-pathe-vBmvQE8f.js";import{a as et,n as tt,o as nt}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as rt}from"./vendor-react-DLPElpoQ.js";import{r as it}from"./vendor-tanstack-query-core-BWz0ose6.js";import{a as at,l as ot,n as st,o as ct,s as lt,t as ut}from"./vendor-tanstack-react-query-D7pys_c9.js";import{r as dt}from"./vendor-sonner-DVzioF3d.js";import{a as ft,n as pt}from"./vendor-reactuses-core-BnW6GxJt.js";import{d as mt,f as ht,t as gt}from"./button-DtzFDvij.js";import{i as _t,t as vt}from"./store-B6dImdlY.js";import{i as yt}from"./useAssistantUIStore-CMutVh9B.js";import{a as bt,i as xt,n as St,o as Ct,r as wt,s as Tt,t as Et}from"./vendor-zod-Dzk5kdUU.js";import{t as Dt}from"./vendor-fuse.js-DB5wDJbI.js";var Ot=1048576,kt=new TextEncoder,At=e=>e instanceof Error&&e.name===`AbortError`,jt=e=>At(e)?e:new DOMException(`The operation was aborted.`,`AbortError`),Mt=async e=>{try{await e?.cancel()}catch{}},Nt=async e=>{try{await e.cancel()}catch{}},Pt=async(e,t={})=>{let n=t.fetch??_,r;try{r=await n(e,{method:`GET`,headers:{Accept:`text/event-stream`},signal:t.signal})}catch(e){throw t.signal?.aborted||At(e)?jt(e):Error(`SSE request failed`)}if(!r.ok)throw await Mt(r.body),Error(`SSE response failed`);if(!/^text\/event-stream(?:\s*;|\s*$)/i.test(r.headers.get(`content-type`)??``))throw await Mt(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 Nt(i),i.releaseLock(),t.signal?.aborted||At(e)?jt(e):Error(`SSE response read failed`)}let a=new TextDecoder,o=``,s=0,c=!1,l=[],u=0,d=!1,f=()=>{l=[],u=0},p=()=>{l.length!==0&&(t.onActivity?.(),t.onMessage?.(l.join(`
3
3
  `)),f())},m=()=>{let e=o,n=s;if(o=``,s=0,e.length===0){p();return}if(e.startsWith(`:`)){t.onActivity?.();return}let r=e.indexOf(`:`),i=r===-1?e:e.slice(0,r),a=r===-1?``:e.slice(r+1);if(a.startsWith(` `)&&(a=a.slice(1)),i===`data`){let t=n-(r===-1?n:r+1+ +(e.charAt(r+1)===` `)),i=u+t+ +(l.length>0);if(i>Ot)throw Error(`SSE response exceeds buffer limit`);u=i,l.push(a)}},h=e=>{if(e.length===0)return;o+=e,s+=kt.encode(e).byteLength;let t=o===`data`?4:o.startsWith(`data:`)?5+ +(o.charAt(5)===` `):0;if(u+s-t>Ot)throw Error(`SSE response exceeds buffer limit`)},g=e=>{let t=0;c&&(c=!1,e.charAt(0)===`
4
4
  `&&(t=1));for(let n=t;n<e.length;n+=1){let r=e.charAt(n);(r===`\r`||r===`
5
5
  `)&&(h(e.slice(t,n)),m(),r===`\r`&&n+1<e.length&&e.charAt(n+1)===`
@@ -397,7 +397,7 @@ Use the results below as source material. Do not mention that the inputs were hi
397
397
  `).replace(/\n\s*\n+/g,`
398
398
  `),Gp=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Kp=e=>{let t=e?.metadata;return Gp(t)?t:{}},qp=e=>{let t=e.openchamber;return Gp(t)?t:{}},Jp=e=>{let t=qp(Kp(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Yp=e=>{let t=qp(Kp(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Xp=e=>qp(Kp(e)).kind===`review`&&!!Yp(e),Zp=(e,t)=>{let n=qp(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Qp=(e,t)=>{let n=qp(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},$p=(e,t)=>{let n=qp(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},em=De()(Oe((e,t)=>({runsByOriginalSessionID:{},upsertRun:t=>e(e=>({runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t.originalSessionID]:t}})),updateRun:(t,n)=>e(e=>{let r=e.runsByOriginalSessionID[t];return r?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:n(r)}}:e}),stopRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`stopped`}}}:e}),completeRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`completed`}}}:e}),stopRunningRunsForRuntime:t=>e(e=>{let n=!1,r={...e.runsByOriginalSessionID};for(let[e,i]of Object.entries(r))i.runtimeKey===t&&i.status===`running`&&(r[e]={...i,status:`stopped`},n=!0);return n?{runsByOriginalSessionID:r}:e}),isRunningForSession:e=>t().runsByOriginalSessionID[e]?.status===`running`}),{name:`auto-review-store`,storage:Ye(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),tm=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},nm=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=tm(t.parentSessionId),r=tm(t.sessionId);if(!(!n||!r||n===r))return{parentSessionId:n,sessionId:r}},rm=e=>{let t=[];for(let n of e){if(n?.type!==`tool`||n.tool!==`task`)continue;let e=n.state;if(!e||typeof e!=`object`||Array.isArray(e))continue;let r=e;if(r.status!==`running`)continue;let i=r.metadata,a=nm(i);a&&t.push(a)}return t},im=[],am=(e,t,n)=>{let r=new Map;for(let t of e){if(!t.parentID)continue;let e=r.get(t.parentID)??[];e.push(t.id),r.set(t.parentID,e)}if(n)for(let e of n){let t=r.get(e.parentSessionId)??[];t.push(e.sessionId),r.set(e.parentSessionId,t)}let i=new Set([t]),a=[t];for(let e of a){let t=r.get(e);if(t)for(let e of t)i.has(e)||(i.add(e),a.push(e))}return i},om=(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},sm=(e,t,n,r,i)=>{if(!n)return r;let a=am(e,n,i);if(a.size===0)return r;let o=new Set,s=[];for(let e of a){let n=t[e];if(n)for(let e of n)o.has(e.id)||(o.add(e.id),s.push(e))}return s.length===0?r:s},cm=`GitHub issue context (JSON)`,lm=`GitHub pull request context (JSON)`,um=e=>!e||typeof e!=`object`?!1:!!e.synthetic,dm=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>um(e)),fm=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!um(e)),n=e=>{if(!um(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(cm)||n.startsWith(lm)};return t&&e.some(e=>um(e))?e.filter(e=>!um(e)||n(e)):e},pm=new Map,mm=new Map,hm=new Map,gm=e=>{pm.set(e,(pm.get(e)??0)+1)},_m=e=>(pm.get(e)??0)>0,vm=e=>{let t=pm.get(e)??0;return t<=0?!1:(t===1?pm.delete(e):pm.set(e,t-1),!0)},ym=(e,t)=>{mm.set(e,t)},bm=e=>mm.get(e)??null,xm=e=>{mm.delete(e)},Sm=({sessionId:e,currentUserOrder:t,animatedIds:n})=>{let r=hm.get(e),i=null;if(_m(e)){let r=t[t.length-1];r!==void 0&&!n.has(r)&&vm(e)&&(ym(e,r),n.add(r),i=r)}if((!r||t.length>=r.length)&&hm.set(e,t),i!==null)return i;let a=bm(e);return a===null?null:(t.includes(a)&&n.add(a),a)},Cm=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},wm=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,Tm=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},Em=e=>e.replace(/\\/g,`/`),Dm=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,Om=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}`}`),Em(n)}catch{return null}},km=(e,t)=>{let n=Dm(Em(e)),r=Dm(Em(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},Am=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),jm=(e,t)=>{let n=Em(e),r=Dm(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=km(n,t);if(r!==null){let t=Dm(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return Am(a)},Mm=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},Nm=(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},Pm=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},Fm=async(e,t={})=>{let n=t.createID??_e,r=t.directory??t.root??null,i=e.filter(e=>!um(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(wm).join(`
399
399
  `),l=[];for(let e of o){let t=Pm(e);t&&l.push(t)}for(let e of[...l].reverse())Nm(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=ce(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=Nm(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:`)?Om(t):null;if(o){let e=jm(o,r),t=null;for(let n of e){let e=Nm(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=Tm(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=oe(s);if(t.startsWith(`data:`)){let e=await Mm(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(Cm(t)){if(!Te(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=S(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=C(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},Im=async(e,t={})=>{let n=t.createID??_e,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=C(r,i),o=S(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=oe(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await Mm(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(Cm(i)){if(!Te(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}},Lm=e=>e?JSON.parse(JSON.stringify(e)):null,Rm=e=>e?{...e}:{},zm=(e,t=Br.getState())=>{let n=t.getDraft?.(e)??null,r=Rm(t.draftAttachmentViews?.[z(e)]);return{record:Lm(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},Bm=async e=>{let t=e.input??Br.getState(),n=zm(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}},Vm=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}}},Hm=async e=>{let t=e.input??Br.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?Vm({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},Um=(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},Wm=e=>e?.status===`committed`&&e.current===!0,Gm=new Map,Km=async(e,t)=>{let n=z(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)}},qm=(e,t)=>({key:e,addLocal:async n=>{await Km(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Km(e,async()=>{let r=t(),i=Um(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 Km(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 Km(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:Wm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Km(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Km(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Km(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Jm=4e4,Ym=0,Xm=null;function Zm(e=Date.now()){Ym=e}function Qm(e){return Xm=e,()=>{Xm===e&&(Xm=null)}}function $m(e){Xm?.(e)}function eh(e=Date.now(),t=Jm){return Ym<=0?!1:e-Ym>=t}var th=3e4,nh=200,rh=new Map;function ih(e,t,n){return`${n?.transport??u()}\n${n?.generation??f()}\n${e.trim()}\n${t}`}function ah(e,t,n){if(!e||!t)return!1;let r=rh.get(ih(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<th}function oh(e,t,n){if(!e||!t)return;let r=ih(e,t,n);for(rh.has(r)&&rh.delete(r);rh.size>=nh;){let e=rh.keys().next().value;if(typeof e!=`string`)break;rh.delete(e)}rh.set(r,n?.now??Date.now())}var sh=768,ch=()=>{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},lh=()=>{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(ae())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=sh&&ch()?`mobile`:`desktop`},uh=()=>lh()===`mobile`,dh=3,fh=2,ph=4,mh=4,hh=100,gh=30;function _h(){return a()?`relay`:`local`}function vh(e=_h()){return e===`relay`?fh:dh}function yh(e=_h()){return e===`relay`?mh:ph}function bh(e){return vh(Ch(e))}function xh(){return hh}function Sh(){return gh}function Ch(e){return e===`relay`||e===`local`?e:_h()}var wh=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function Th(){return{pages:[],pageParams:[]}}function Eh(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 Dh(e){return{pages:Object.freeze(e.pages.map(Eh)),pageParams:Object.freeze([...e.pageParams])}}function Oh(e,t,n=wh){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 Eh({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function kh(e){if(!e||e.pages.length===0)return hl;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 Ah(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=kh(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function jh(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function Mh(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 Eh({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:jh(t)}})}function Nh(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 Dh({pages:[Mh(`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=Mh(`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(Fh(i,o,s,a)),_.push(e.pageParams[r]??null)}return Dh({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?Fh(t,r===`reconcile-page`?Ph(i,p):[...i,...p],s,a):Fh(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]=Eh({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return Dh({pages:m,pageParams:[...e.pageParams]})}function Ph(e,t){let n=e.slice();for(let e of t){let t=_c(e),r=n.length;for(let e=0;e<n.length;e+=1)if(gc(t,_c(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function Fh(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&&Ih(d,u)?a[u.id]=d:(a[u.id]=u,c=!0);let f=n[u.id],p=e.partsByMessageID[u.id];f===void 0?p!==void 0&&(l=!0):p&&(p===f||Rh(p,f))?o[u.id]=p:Object.isFrozen(f)&&f===p?o[u.id]=f:p&&f===p?o[u.id]=p:(o[u.id]=Object.freeze([...f]),l=!0)}return!s&&!c&&!l&&e.sync.liveRevision===r||!s&&!c&&!l?e:Eh({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:jh(t)}})}function Ih(e,t){return e===t||e.id===t.id&&e===t}function Lh(e,t){return e===t||!(!e||!t||e.id!==t.id||e.type!==t.type||e.text!==t.text||e.state!==t.state||e.output!==t.output||e.metadata!==t.metadata||e.time!==t.time||e.url!==t.url||e.slim!==t.slim)}function Rh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!Lh(e[n],t[n]))return!1;return!0}function zh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Bh(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 Vh(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=Nh(e??Th(),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&&Rh(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 Dh({pages:e.pages.map((t,n)=>Fh(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function Hh(e,t){let n=Ah(e,t),r=kh(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 Uh(e,t,n,r){if(!Vl(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Hh(e,t),o=Ys(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=Bh(n),c=new Set;return s&&c.add(s),{data:Vh(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function Wh(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 Kh(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Hh(e,t),o=!1,s=0,c,l=new Set,u=Wh(e),d=Gh(e),f=i.message[t]??[],p=new Map,m=new Map,h=[],g=e=>{if(p.clear(),m.clear(),h=[],e)for(let t=0;t<e.length;t+=1){let n=e[t];n?.id&&(p.set(n.id,n),m.set(n.id,t),h.push(n.id))}};g(f);let _=h.slice();for(let e of n){if(!Vl(e.type))continue;o=!0;let n=Ys(i,e),r=typeof n==`boolean`?n:n.changed,a=typeof n==`boolean`?void 0:n.materialization;if(a&&!c&&(c=a),!r)continue;let v=i.message[t]??[];v!==f&&(f=v,g(v));let y=Bh(e),b=h.length!==_.length||h.some((e,t)=>e!==_[t]),x=b;if(y){let e=i.part[y],t=u.get(y);e&&t&&Rh(t,e)?i.part[y]=[...t]:e?(x=!0,u.set(y,e)):t&&(x=!0,u.delete(y));let n=p.get(y),r=d.get(y);if(!(n&&r&&r===n))if(n&&r&&Ih(r,n)){let e=m.get(y);e!==void 0&&f[e]&&(f[e]=r,p.set(y,r))}else n?(x=!0,d.set(y,n)):r&&(x=!0,d.delete(y))}else x=!0;if(b){_=h.slice();for(let e of f)e?.id&&!d.has(e.id)&&d.set(e.id,e)}x&&(s+=1,y&&l.add(y))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:Vh(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function qh(e,t,n,r,i){let a=e&&e.pages.length>0?e:Dh({pages:[Mh(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=Ah(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]:zh(r)};return{data:Dh({pages:a.pages.map((e,t)=>t===a.pages.length-1?Fh(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]?Fh(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 Jh(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:Dh({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 Fh(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Yh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=Ah(e,t),i=ll({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:kh(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=Dh({pages:[Mh(`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:kh(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=Dh({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?Fh(t,Ph(r,l),o,a):Fh(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:kh(u)}}}function Xh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=wl(Ah(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:Nh(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 Uh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Kh(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return qh(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 Jh(e,n.messageID,t)}case`durable-seed`:return Yh(e,t,n);case`reset`:return n.page?Xh(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 Zh(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 Qh(e,t,n,r=`materialize`){return Xh(e,n,{type:`http-page`,purpose:r,page:Zh(t),liveRevision:t.sync.liveRevision}).data}function $h(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return Dh(t);if(t.pages.length===e.pages.length){let r=rg(e,t);if(r===e)return e;if(ng(e,t)||tg(e,t))return r;let i=t.pages[t.pages.length-1];return Qh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return Xh(e,n,{type:`http-page`,purpose:`prepend`,page:Zh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Qh(e,r,n)??Dh(t)}return Dh(t)}function eg(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function tg(e,t){let n=eg(e),r=eg(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=ig(e,``),a=ig(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function ng(e,t){let n=eg(e);if(n.size===0)return!1;let r=eg(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=ig(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||gc(_c(t),_c(n))>0)return!1}return!0}function rg(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,Eh(t))});return!n&&e.pageParams.length===t.pageParams.length?e:Dh({pages:r,pageParams:[...t.pageParams]})}function ig(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:kh(e),liveRevision:a}}var ag=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},og=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},sg=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},cg=e=>e.trim(),lg=e=>e?.trim()||`tail`,ug=new Set([502,503,504]),dg=[`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 fg(e){if(!e||e instanceof ag||e instanceof og)return!1;if(e instanceof sg)return e.status>=400&&e.status<500?!1:ug.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(ug.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(ug.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:dg.some(e=>n.includes(e))}function pg(e,t){return e>=2?!1:fg(t)}var mg=(e,t=u(),n=f())=>[t,n,`sessionMessages`,`page`,cg(e.directory),e.sessionID,e.limit,lg(e.before)],hg=(e,t=u(),n=f())=>[t,n,`session-transcript`,cg(e.directory),e.sessionID];function gg(e){if(!e||typeof e!=`object`)throw new og(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new og(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new og(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new og(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new og(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new og(`session message page: cursor must be string when set`);return e}var _g=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}:{}})},vg=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw new ag},yg=(e,t,n=u(),r={},i=(r.getGeneration??f)())=>{let a=cg(e.directory),o=e.sessionID,s=e.limit,c=e.before?.trim()||void 0;return{queryKey:mg({directory:a,sessionID:o,limit:s,before:c},n,i),queryFn:async({signal:e})=>{vg(n,i,r);let l=await t({directory:a,sessionID:o,limit:s,before:c,signal:e});return vg(n,i,r),_g(gg(l))},staleTime:1/0,gcTime:3e5,retry:pg,retryDelay:e=>Math.min(500*2**e,4e3)}},bg=(e,t,n=R,r=u(),i={},a=(i.getGeneration??f)())=>n.fetchQuery(yg(e,t,r,i,a));function xg(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 Sg(e){return _g({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function Cg(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function wg(e){let t=cg(e.directory),n=e.sessionID,r=e.transport??u(),i=e.probe??{},a=e.generation??(i.getGeneration??f)(),o=e.initialLimit??vh(),s=e.historyLimit??yh(),c=e.client??R,l=hg({directory:t,sessionID:n},r,a),d=async t=>Sg(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:l,queryFn:async e=>{vg(r,a,i);let l=e.pageParam?.trim()||void 0,u=l?s:o,f=l?`prepend`:`initial`,p=await bg({directory:t,sessionID:n,limit:u,before:l},d,c,r,i,a);vg(r,a,i);let m=xg(p);return Oh(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:Cg,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:pg,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>$h(e,t,n)}}function Tg(e){let t=e.client??R,n=wg({...e,client:t}),r=new it(t,{...n,structuralSharing:(t,n)=>$h(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 Dh(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return Dh(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:Dh(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return Dh(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:Dh(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function Eg(e,t,n,r){let i=e.getQueryData(t),a=Xh(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 Dg(e,t=R,n=u(),r=f()){return t.getQueryData(hg(e,n,r))}function Og(){return Se()||uh()}function kg(){return Se()?4:uh()?12:40}var Ag=1048576,jg=4*Ag,Mg=12*Ag,Ng=40*Ag;function Pg(){return Se()?jg:uh()?Mg:Ng}var Fg=e=>e.trim();function Ig(e){return{transport:e.transport,generation:e.generation,directory:Fg(e.directory),sessionID:e.sessionID}}function Lg(e){let t=Ig(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function Rg(e){return`${e.transport}\n${e.generation}\n${Fg(e.directory)}`}var zg={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function Bg(e,t,n){return[t,n,zg.taskRoot,zg.reconcileTaskKind,Fg(e.directory),e.sessionID,e.checkpoint]}function Vg(e,t,n){return[t,n,zg.checkpoint,Fg(e.directory),e.sessionID]}function Hg(e){let t=Ig(e);return[{queryKey:hg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,zg.transportPageRoot,zg.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,zg.taskRoot,zg.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,zg.taskRoot,zg.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:Vg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function Ug(){let e=new Map;return{retain(t){let n=Ig(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 Wg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Gg=3e4;function Kg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function qg(e){return!Array.isArray(e)||e.length<5||e[2]!==zg.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 Jg(e){let t=e.client,n=e.activeRegistry??Ug(),r=e.counters??Wg(),i=e.getLimit??kg,a=e.now??Date.now,o=e.minResidencyMs??Gg,s=new Map,c=new Map,l=e=>{let t=Ig(e),n=Lg(t),r=c.get(t.sessionID);r||(r=new Map,c.set(t.sessionID,r)),r.set(n,t)},u=e=>{let t=Ig(e),n=Lg(t),r=c.get(t.sessionID);r&&(r.delete(n),r.size===0&&c.delete(t.sessionID))},d=(e,t)=>{for(let[n,r]of c){for(let[n,i]of r)i.transport===e&&i.generation===t&&r.delete(n);r.size===0&&c.delete(n)}let n=`${e}\n${t}\n`;for(let e of s.keys())e.startsWith(n)&&s.delete(e)};for(let e of t.getQueryCache().getAll()){let t=qg(e.queryKey);t&&l(t)}let f=t.getQueryCache().subscribe(e=>{if(e.type===`added`||e.type===`updated`){let t=qg(e.query.queryKey);t&&l(t);return}if(e.type===`removed`){let t=qg(e.query.queryKey);t&&u(t)}}),p=e=>{let t=Lg(Ig(e));s.set(t,a())},m=e=>{let t=Lg(Ig(e)),n=s.get(t);return n!==void 0&&a()-n<o},h=e=>{let r=Ig(e);if(n.isRetained(r))return!0;let i=hg({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},g=e=>{let r=e?.directory===void 0?void 0:Fg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=qg(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:Kg(a.state.data)})}return i},_=(e,t)=>{let n=c.get(e);if(!n||n.size===0)return[];let r=t?.directory===void 0?void 0:Fg(t.directory),i=[];for(let e of n.values())(t?.transport===void 0||e.transport===t.transport)&&(t?.generation===void 0||e.generation===t.generation)&&(r===void 0||e.directory===r)&&i.push(e);return i},v=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},y=e=>{r.purgeSession+=1;let t=Ig(e);s.delete(Lg(t)),u(t);for(let t of Hg(e))v(t)},b=(e,t)=>{r.purgeGeneration+=1,d(e,t);let n=[[e,t,zg.canonical],[e,t,zg.transportPageRoot,zg.transportPageKind],[e,t,zg.taskRoot],[e,t,zg.checkpoint]];for(let e of n)v({queryKey:e})},x=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>Lg(Ig(e)))),o=g({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=Rg(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let l=[];for(let e of c.values()){for(let t of e){let e=Lg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(Lg(e.scope))||m(e.scope)));i.sort((e,t)=>e.dataUpdatedAt===t.dataUpdatedAt?e.scope.sessionID<t.scope.sessionID?-1:+(e.scope.sessionID>t.scope.sessionID):e.dataUpdatedAt-t.dataUpdatedAt);let o=e.length-i.length,c=e.length,u=0;for(;c>t&&u<i.length&&!(c-1<o);){let e=i[u];u+=1,y(e.scope),l.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:l}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:h,listCanonical:g,listCanonicalScopesForSession:_,purgeSession:y,purgeGeneration:b,enforce:x,destructiveReset:async(e,t)=>{r.destructiveReset+=1,y(e);try{let n=await t();return x({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw y(e),t}},noteScopeObserved:p,dispose:()=>{f(),c.clear(),s.clear()}}}var Yg=new Map,Xg=new Set;function Zg(e,t){return`${e}\n${t}`}function Qg(){for(let e of Xg)e()}function $g(e,t){if(!e||!t)return;let n=Zg(e,t),r=Yg.get(n)??0;Yg.set(n,r+1),r===0&&Qg()}function e_(e,t){if(!e||!t)return;let n=Zg(e,t),r=Yg.get(n);if(r){if(r<=1){Yg.delete(n),Qg();return}Yg.set(n,r-1)}}function t_(e,t){if(!e)return!1;if(t)return Yg.has(Zg(t,e));let n=`\n${e}`;for(let e of Yg.keys())if(e.endsWith(n))return!0;return!1}function n_(e){return Xg.add(e),()=>{Xg.delete(e)}}var r_=3e4,i_=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function a_(e,t=r_){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 o_=e=>e?e.toLowerCase().includes(`application/json`):!1,s_=e=>e?e.toLowerCase().includes(`text/html`):!1;function c_(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 l_(e){let t=e.turns??yh(),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:r_;return a_((async()=>{let a=await _(n,{method:`GET`,query:r,signal:i_(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(s_(o))throw Error(`session turn page: unexpected HTML response`);o_(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return c_(s,t)})(),i)}async function u_(e){let t=e.purpose===`prepend`&&e.before?yh():vh();return l_({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var d_=3e4,f_=2,p_=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),m_=e=>e?e.toLowerCase().includes(`text/html`):!1,h_=e=>new Promise(t=>{setTimeout(t,e)});function g_(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new og(`session transcript reconcile: ${t} must be string or null`);return e}function __(e){if(!e||typeof e!=`object`)throw new og(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new og(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new og(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new og(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new og(`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 og(`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 og(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=g_(t.capturedHeadMessageID,`capturedHeadMessageID`),r=g_(t.latestHeadMessageID,`latestHeadMessageID`),i=g_(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new og(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new og(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new og(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new og(`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 og(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new og(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new og(`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 og(`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 v_(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 og(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function y_(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),a_((async()=>{let t;try{t=await _(r,{method:`GET`,query:i,signal:p_(e.signal,n)})}catch(e){throw e instanceof ag||e instanceof og||e instanceof sg||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new sg(t.status,`session transcript reconcile failed (${t.status})`);if(m_(t.headers.get(`content-type`)))throw new og(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new og(`session transcript reconcile: malformed JSON`)}return __(a)})(),n)}async function b_(e){let t=v_(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:d_,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):f_,i=e.sleep??h_,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await y_(e,t,n)}catch(t){if(t instanceof ag||t instanceof og||t instanceof sg&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!fg(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var x_=e=>!!(e&&typeof e==`object`&&typeof e.type==`string`),S_=e=>e.filter(x_),C_=e=>{let t=e,n=t.text;return typeof n==`string`?n:t.content||t.value||``},w_=e=>{if(e.type!==`text`)return!1;let t=C_(e);return!t||t.trim().length===0},T_=(e,t={})=>{let{includeReasoning:n=!0}=t,r=S_(e),i=r.some(e=>!e.synthetic);return r.filter(e=>{let t=!!e.synthetic;return t&&e.type===`text`&&C_(e).includes(`<system-reminder>`)||t&&i||!n&&e.type===`reasoning`?!1:e.type!==`patch`})},E_=`GitHub issue context (JSON)`,D_=`GitHub pull request context (JSON)`,O_=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,k_=(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}},A_=e=>{let t=k_(e,E_);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!O_(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=k_(e,D_);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!O_(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},j_=e=>!!e.trim().startsWith(`The following tool was executed by the user`),M_=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),N_=e=>e.trim()===`/compact`,P_=e=>e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(M_(t)||N_(t)))return!1}if(e.synthetic!==!0)return!0;if(e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return j_(t)||n.startsWith(E_)||n.startsWith(D_)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=A_(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e}),F_=e=>e.some(e=>{if(e.type===`text`)return!w_(e);if(e.type===`file`){let t=e,n=typeof t.mime==`string`?t.mime:``,r=typeof t.url==`string`?t.url:``;return(!!n||!!r)&&!!r&&!Fe(e)}return!0}),I_=e=>e?.length?F_(P_(e)):!1,L_=`oc_asst_session_divider:`,R_=[],z_=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),B_=(e,t=0)=>({info:{id:`${L_}${e}`,role:`system`,time:{created:t}},parts:[]}),V_=(e,t,n=R_)=>{if(!e.length)return R_;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(B_(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?R_:K_(n,r)?n:r},H_=(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},U_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=H_(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 I_(e.parts)?e:I_(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}:{}}},W_=(e,t,n,r=R_)=>{if(!t)return n.length>0?Array.from(n):R_;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:U_(e,t?.message),order:t?.order??a++})}if(i.size===0)return R_;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 K_(r,o)?r:o},G_=(e,t)=>{if(!z_(e)||!z_(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},K_=(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||G_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},q_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),J_=e=>e.startsWith(L_);function Y_(e,t){if(!e?.id||J_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(q_(t,`subtask`)||q_(t,`compaction`)||t.every(e=>um(e))):!1}function X_(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(Y_(r,i))return n}return null}function Z_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function Q_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:X_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:Z_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function $_(e,t){return{...e,...t}}function ev(e,t){let n=Vg({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 tv(e,t){let n=Vg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function nv(e,t){let n=Vg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function rv(e){return e.slim===!0}var iv=/bearer|token|authorization|password|secret|cookie/i,av=new Set([`message.part.delta`]);function ov(e){return typeof e==`string`&&e.includes(`-`)}var sv=`openchamber.client-diagnostics.enabled`;function cv(e){return e===`true`||e!==`false`&&null}function lv(e){return e.preference===!0||e.preference!==!1&&ov(e.version)}function uv(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function dv(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function fv(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 pv(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return iv.test(t)?`redacted-error`:t}function mv(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)rv(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function hv(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function gv(e){let t=0;for(let n of e.messageOrder)Av(e.messagesByID[n])===!0&&(t+=1);return t}function _v(e){let t=e.transcript?mv(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:hv(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:gv(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...pv(e.error??e.request?.error)?{error:pv(e.error??e.request?.error)}:{},...fv(e.error)===void 0?{}:{httpStatus:fv(e.error)}}}function vv(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 yv(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 bv(e){return typeof e==`string`&&av.has(e)}function xv(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return bv(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>bv(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function Sv(e){if(e.type===`http-page`)return e.purpose}function Cv(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function wv(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 Tv(e){return e.__openchamberOptimistic===!0}function Ev(e){let t=[];for(let n of e){if(n.type!==`text`)continue;let e=typeof n.text==`string`?n.text.trim():``;e&&t.push(e)}let n=t.join(`
400
- `).trim();if(n)return iv.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function Dv(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function Ov(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var kv=e=>typeof e==`string`&&e.trim().length>0;function Av(e){if(!e||Dv(e)!==`assistant`)return;let t=e,n=!kv(t.mode)&&!kv(t.agent),r=!kv(t.modelID)||!kv(t.providerID);return n||r}function jv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function Mv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)rv(e)?r+=1:i+=1,Tv(e)&&(a=!0);let o=e.messagesByID[t],s=Dv(o),c=Av(o),l=s===`user`?Ev(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:Ov(o),...s?{role:s}:{},...l?{text:l}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function Nv(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:jv(e),after:jv(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 Pv(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:Nv(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 Fv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function Iv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function Lv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Rv(e){let t=Lv(e.partID),n=Lv(e.messageID),r=Lv(e.directory),i=Lv(e.childSessionID),a=Lv(e.toolStatus),o=Lv(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 zv(e){return[e.sessionID,Lv(e.partID)??``,e.childSessionPresent?`1`:`0`,Lv(e.childSessionID)??``,Lv(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`,Lv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Bv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Rv(e)}}function Vv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:Iv(e),...Rv(e)}}var Hv=`openchamber-transcript-diagnostics`,Uv=`events`,Wv=1,Gv=(e,t)=>{try{return e.error??Error(t)}catch{return Error(t)}},Kv=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>{try{r(e.error??t?.error??Error(`IndexedDB request failed`))}catch{r(t?.error??Error(`IndexedDB request failed`))}}}),qv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Wv),i=!1,a=()=>{i||(i=!0,n(Gv(r,`IndexedDB open failed`)))};r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Uv)||e.createObjectStore(Uv,{autoIncrement:!0})},r.onsuccess=()=>{let e=r.result;if(i){try{e.close()}catch{}return}i=!0,t(e)},r.onerror=a,r.onblocked=a}),Jv=(e=Hv)=>{let t=null,n=null,r=Promise.resolve(),i=[],a=500,o=0,s=null,c=[],l=()=>{let e=t;if(t=null,n=null,e)try{e.onversionchange=null,e.onclose=null,e.close()}catch{}},u=e=>(e.onversionchange=()=>{l()},e.onclose=()=>{t===e&&(t=null,n=null)},t=e,e),d=()=>t?Promise.resolve(t):n||(n=qv(e).then(e=>(n=null,u(e))).catch(e=>{throw n=null,e}),n),f=e=>{let t=r.then(e,e);return r=t.then(()=>void 0,()=>void 0),t},p=async(e,t)=>{let n=await d(),r;try{r=n.transaction(Uv,e)}catch(e){throw l(),e}let i=r.objectStore(Uv),a=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{}}),o;try{let e=await t(i);return await a,e}catch(e){o=e;try{r.abort()}catch{}try{await a}catch(e){o===void 0&&(o=e)}throw l(),o}},m=e=>{for(let t of e)t.resolve()},h=(e,t)=>{for(let n of e)n.reject(t)},g=e=>{if(i.length<=e)return;let t=i.splice(0,i.length-e);m(t)},_=async(e,t)=>{e.length!==0&&await p(`readwrite`,async n=>{for(let t of e)await Kv(n.add(t),n.transaction);let r=await Kv(n.getAllKeys(),n.transaction),i=r.length-t;if(i>0)for(let e of r.slice(0,i))await Kv(n.delete(e),n.transaction)})},v=()=>c.length===0?1/0:Math.min(...c),y=async()=>{if(i.length===0)return!1;let e=v(),t=i.filter(t=>t.seq<=e);if(t.length===0)return!1;i=i.filter(t=>t.seq>e);let n=a;try{return await _(t.map(e=>e.event),n),m(t),!0}catch(e){throw i=t.map(e=>({seq:e.seq,event:e.event,resolve:()=>{},reject:()=>{}})).concat(i),g(n),h(t,e),e}},b=async e=>{if(i.length===0)return;let t=i.filter(t=>t.seq<=e);if(t.length===0)return;i=i.filter(t=>t.seq>e);let n=a;try{await _(t.map(e=>e.event),n),m(t)}catch(e){throw i=t.map(e=>({seq:e.seq,event:e.event,resolve:()=>{},reject:()=>{}})).concat(i),g(n),h(t,e),e}},x=()=>{s||=f(async()=>{let e=!1;try{e=await y()}finally{s=null}e&&i.length>0&&x()}).then(()=>void 0,()=>{s=null})};return{append(e,t){return a=t,new Promise((n,r)=>{i.push({seq:++o,event:e,resolve:n,reject:r}),g(t),x()})},read(){let e=o;return c.push(e),f(async()=>{try{return await b(e),await p(`readonly`,e=>Kv(e.getAll(),e.transaction))}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})},clear(){let e=o;return c.push(e),f(async()=>{try{let t=[],n=[];for(let r of i)r.seq<=e?n.push(r):t.push(r);i=t,m(n),await p(`readwrite`,async e=>{await Kv(e.clear(),e.transaction)})}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})}}};function Yv(e={}){let t=e.driver??Jv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Xv=et(`OpenChamberMedia`);function Zv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Qv(){return Ue()&&tt!==void 0&&tt.isPluginAvailable(`OpenChamberMedia`)}function $v(){return`1.19.20-beta.1`}function ey(){if(typeof localStorage>`u`)return null;try{return cv(localStorage.getItem(sv))}catch{return null}}function ty(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(sv,e?`true`:`false`)}catch{}}function ny(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var ry;function iy(e=$v()){return lv({version:e,preference:ey()})}function ay(e={}){return yv({sink:ny()===`indexeddb`?(e.createIndexedDBSink??Yv)():(e.createMemorySink??vv)(),isEnabled:e.isEnabled??iy})}function oy(){return ry??=ay(),ry}function sy(e){oy().record(e)}function cy(e){try{return iy()?Mv(e()):void 0}catch{return}}function ly(e){try{sy(Pv(e))}catch{}}function uy(e){try{sy(Bv(e))}catch{}}function dy(e){try{sy(Vv(e))}catch{}}function fy(e){if(e!==void 0)return typeof e==`function`?e():e}function py(e){return!xv(e.command)||e.changed===!1&&(e.command.type===`sse-event`||e.command.type===`sse-event-batch`)?!1:(e.isEnabled??(()=>oy().isEnabled()))()}function my(e){if(!py(e))return;let t=xv(e.command);t&&sy(_v({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:fy(e.transcript),request:fy(e.request),hydration:fy(e.hydration),command:e.command.type,purpose:Sv(e.command),sseType:Cv(e.command),source:wv(e.command),error:e.error}))}async function hy(){let e=await oy().exportReport(),t=b()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function gy(e,t=uv()){if(Qv())return(await Xv.saveFile({dataBase64:Zv(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 _y(){let e=await hy(),t=uv();return{content:e,fileName:t,outcome:await gy(e,t),eventCount:dv(e)}}function vy(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 yy=2,by=6e4,xy=6e4;function Sy(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??u)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??f)()}}function Cy(e,t){let n=(t.probe?.getTransport??u)(),r=(t.probe?.getGeneration??f)();if(n!==e.transport||r!==e.generation)throw new ag}function wy(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function Ty(e,t){return Ig({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function Ey(e,t){return`${e.trim()}\n${t}`}function Dy(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Jg({client:t,activeRegistry:Ug()}),i=Math.max(1,Math.floor(e.directoryConcurrency??yy)),a=e.fetchReconcile??b_,o=e.now??Date.now,s=Math.max(0,e.destructiveResetDedupeMs??by),c=!1,l=0,d=new Map,p=new Map,m=new Map,h=new Map,g=new Set,_=new Map,v=new Set,y=new Map,b=(e,t)=>{g.add(Ey(e,t))},x=(e,t)=>{g.delete(Ey(e,t))},S=e=>{let t=p.get(e);t&&(t.abort(),p.delete(e)),d.delete(e)},C=e=>{l+=1;for(let e of[...p.keys()])S(e);m.clear(),h.clear(),y.clear()},w=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(Ey(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of r.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&i.set(Ey(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(i.values())},T=(t,n)=>{let i=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of r.listCanonical({transport:t.transport,generation:t.generation}))i.add(e.scope.directory);for(let e of r.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&i.add(e.directory);for(let e of n)e.directory&&i.add(e.directory.trim());return i},E=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=Ey(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},D=i=>{if(c)return;let a={transport:i.transport??Sy(e).transport,generation:i.generation??Sy(e).generation},s=o(),l=E(),u=T(a,l),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(Ey(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of r.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(Ey(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of l)f.set(Ey(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(Ey(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=wy(e,a),o=n.getTranscript(r),c=Q_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:o,lastEventID:i.lastEventID,capturedAt:s});tv(t,c)}let p=new Set;for(let t of u){let n=vy({directory:t,activeScopes:w(a,t),viewedSessions:l,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(Ey(e.directory,e.sessionID))}for(let e of d){let t=Ey(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=cy(()=>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=cy(()=>n.getTranscript(e));i&&t&&ly({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},k=e=>{let t=n.getTranscript(e),r=t.messageOrder[t.messageOrder.length-1];if(!r)return!1;let i=t.messagesByID[r];return!i||i.role!==`assistant`?!1:Xs(i)},A=async(r,i,a)=>{if(Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;tv(t,$_(ev(t,i)??Q_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let s=cy(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;nv(t,i),x(i.directory,i.sessionID),y.set(Ey(i.directory,i.sessionID),o());try{let e=cy(()=>n.getTranscript(r));s&&e&&ly({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:s,after:e})}catch{}}catch(e){throw tv(t,$_(ev(t,i)??Q_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},j=async(r,i,a)=>{if(Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;tv(t,$_(ev(t,i)??Q_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=cy(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;nv(t,i),x(i.directory,i.sessionID);try{let e=cy(()=>n.getTranscript(r));o&&e&&ly({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 tv(t,$_(ev(t,i)??Q_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},ee=async(r,i,c,u)=>{let d=wy(r,i),f=Ty(r,i),p=Bg({directory:f.directory,sessionID:f.sessionID,checkpoint:String(ev(t,f)?.capturedAt??o())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:o()});try{if(Cy(i,e),c!==l||u.aborted)throw new ag;let m=ev(t,f);if(m||(m=Q_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:o()}),tv(t,m)),!m.anchorMessageID){if(await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}m=$_(m,{state:`reconciling`}),tv(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,Cy(i,e),c!==l||u.aborted)throw new ag;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,Cy(i,e),c!==l||u.aborted)throw new ag;let g=n.getTranscript(d).liveRevision;if(!_&&!h){await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()});return}let x=await a({sessionID:r.sessionID,directory:r.directory.trim(),..._?{continuation:_}:{anchor:h},signal:u});if(Cy(i,e),c!==l||u.aborted)throw new ag;if(x.resetRequired){let n=y.get(Ey(r.directory,r.sessionID))??-1/0;if(o()-n<s?(await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()})):(await A(d,f,c),t.setQueryData(p,{status:`reset`,finishedAt:o()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}if(S===1&&(v=x.capturedHeadMessageID),b=x.latestHeadMessageID??b,x.records.length>0&&O(d,x,g),m=$_(ev(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),tv(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=$_(ev(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),tv(t,m);continue}if(m=$_(ev(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),tv(t,m),x(r.directory,r.sessionID),t.setQueryData(p,{status:`complete`,finishedAt:o()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}{let n=y.get(Ey(r.directory,r.sessionID))??-1/0;if(o()-n<s?(await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()})):(await A(d,f,c),t.setQueryData(p,{status:`reset`,finishedAt:o()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}}}catch(n){if(n instanceof ag||n instanceof Error&&n.name===`AbortError`){t.setQueryData(p,{status:`cancelled`,finishedAt:o()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(p,{status:`error`,finishedAt:o(),code:n instanceof Error?n.name:`error`}),n}},te=t=>{let n=t.trim(),r=h.get(n)??0;if(r>=i)return;let a=m.get(n);if(!a||a.length===0)return;let o=a.shift();h.set(n,r+1);let s=Ey(o.directory,o.sessionID);if(d.has(s)){h.set(n,(h.get(n)??1)-1),te(n);return}let c=Sy(e),u=l,f=new AbortController;p.set(s,f);let g=(async()=>{$g(n,o.sessionID);try{await ee(o,c,u,f.signal)}catch{}finally{e_(n,o.sessionID),p.delete(s),d.delete(s),h.set(n,Math.max(0,(h.get(n)??1)-1)),te(n)}})();d.set(s,g)},ne=e=>{let t=e.directory.trim(),n=Ey(t,e.sessionID);if(d.has(n))return;let r=m.get(t);r||(r=[],m.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),te(t))},re=t=>{let n=E(),i=T(t,n);for(let a of i){let i=vy({directory:a,activeScopes:w(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)ne(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=Ey(e.scope.directory,e.scope.sessionID);i.some(e=>Ey(e.directory,e.sessionID)===t)||b(e.scope.directory,e.scope.sessionID)}}},ie=t=>{if(c||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??u)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??f)(),i=(e.probe?.getTransport??u)();if(r!==n.generation||i!==n.transport){C(`generation_mismatch`);return}re(n)},ae=t=>{if(c)return;let r=t.directory.trim(),i=Sy(e,t),s=wy({directory:r,sessionID:t.sessionID},i),l=Lg(Ty({directory:r,sessionID:t.sessionID},i)),u=_.get(l);if(u&&o()-u.checkedAt<xy||v.has(l)||d.has(Ey(r,t.sessionID))||!n.hasSession?.(s))return;let f=n.getTranscript(s),p=f.messageOrder[f.messageOrder.length-1];p&&(v.add(l),(async()=>{try{if(Cy(i,e),c)return;let u=await a({sessionID:t.sessionID,directory:r,anchor:p});if(Cy(i,e),c||(_.set(l,{checkedAt:o()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(s).liveRevision;O(s,u,d)}catch{}finally{v.delete(l)}})())};return{captureCheckpoints:D,onCompensation:ie,ensureOnObserve:async r=>{if(c)return null;let i=r.directory.trim(),a=Ey(i,r.sessionID);if(!g.has(a))return ae(r),null;x(i,r.sessionID);let o=Sy(e,r),s=wy({directory:i,sessionID:r.sessionID},o),l=Ty({directory:i,sessionID:r.sessionID},o),u=ev(t,l);if(u&&u.state!==`complete`&&u.anchorMessageID){ne({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{Cy(o,e),$g(i,r.sessionID);try{let e=await n.ensureInitial(s);return nv(t,l),e}finally{e_(i,r.sessionID)}}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:C,getCheckpoint:n=>{let r=Sy(e,n);return ev(t,Ty({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(Ey(e,t)),destroy:()=>{c=!0,C(`destroy`)}}}var Oy=e=>e.trim(),ky=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session status runtime changed`)},Ay=(e,t={})=>{let n=Oy(e),r=t.transport??u(),i=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),a=t.now??Date.now,o=t.runtimeProbe??{},s=(o.getGeneration??f)();return ct({queryKey:P.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{ky(r,s,o);let t=a(),c=await i(n,e);if(ky(r,s,o),c===null)throw Error(`session status snapshot unavailable`);return{snapshot:c,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},jy=(e,t={})=>{let{client:n=R,...r}=t;return n.fetchQuery(Ay(e,r))},My=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session active runtime changed`)},Ny=(e={})=>{let t=e.transport??u(),n=e.loadActive??(e=>B.getSessionActive(e)),r=e.now??Date.now,i=e.runtimeProbe??{},a=(i.getGeneration??f)();return ct({queryKey:P.sessionActive.snapshot(t,a),queryFn:async({signal:e})=>{My(t,a,i);let o=r(),s=await n(e);return My(t,a,i),{result:s,requestedAt:o}},staleTime:0,gcTime:3e5,retry:!1})},Py=(e={})=>{let{client:t=R,...n}=e;return t.fetchQuery(Ny(n))},Fy;function Iy(e){Fy=e}function Ly(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 Ry(e,t){return JSON.stringify(e)===JSON.stringify(t)}function zy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function By(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>{let r={...e.session_error_at};return delete r[t],{session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n},session_error_at:r}}),!0)}function Vy(e,t,n,r=Date.now(),i){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let a=e.membership,o=t??{},s=new Set([...n,...Object.keys(o)]);if(s.size===0)return{snapshot:null,source:`none`};let c={};for(let e of s){let t=Object.prototype.hasOwnProperty.call(a,e),n=Ly(o[e]);if(t){c[e]=n&&zy(n,r)?n:{type:`busy`};continue}if(i?.tailOpenSessionIds?.has(e)){c[e]=n?.type===`retry`?n:{type:`busy`};continue}c[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:c,source:`fused`}}function Hy(e,t,n,r){if(n.length===0)return!1;let i=!1;return e.setState(e=>{let a=e.session_status??{},o,s,c,l=()=>o??={...a},u=()=>s??={...e.session_status_observed_at},d=()=>c??={...e.session_error_at},f=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(u()[t]=r,i=!0)};for(let o of n){if(r!==void 0&&(e.session_status_observed_at[o]??-1/0)>=r)continue;let n=Ly(t[o]);if(n&&n.type!==`idle`){Ry(a[o],n)||(l()[o]=n,i=!0),(n.type===`busy`||n.type===`retry`)&&e.session_error_at?.[o]!==void 0&&(delete d()[o],i=!0),f(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(l()[o]={type:`idle`},i=!0),f(o)}return!o&&!s&&!c?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{},...c?{session_error_at:c}:{}}}),i}function Uy(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Wy(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 jy(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 Py({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}=Vy(l,h,n,Date.now(),{tailOpenSessionIds:r.tailOpenSessionIds});if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=Uy(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Hy(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Fy;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 Gy({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:Wy(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Ky(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function qy(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 Jy(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 Yy(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(pc(e))??Promise.resolve(),r.get(hc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=pc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=hc(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??Pg)();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 Xy=new Map;function Zy(e,t){let n=Xy.get(e);if(n)return n;let r=t().finally(()=>{Xy.get(e)===r&&Xy.delete(e)});return Xy.set(e,r),r}var Qy=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function $y(e){return Zy(Qy(e),e.request)}function eb(e,t){return`${e}\n${t}`}var tb=new Map;function nb(e){return tb.get(e)}async function rb(e){return $y({runtimeKey:eb(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 tb.set(r.id,i),{info:vp(r),parts:i}}})}function ib(e,t){let n=e.info;return n.role===t||n.clientRole===t}function ab(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!ib(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 ob(e){if(e.complete){let t=e.records.some(e=>ib(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=ab(e.records);if(t.length===0){let t=e.records.some(e=>ib(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=>ib(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function sb(e){return e.trim()}function cb(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??u)(),r=e.generation??t.generation??(t.probe?.getGeneration??f)();return{directory:sb(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function q(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function lb(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:hl,liveRevision:0}}function ub(e,t){if(!e||e.pages.length===0)return lb(t);let n=ig(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function db(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function fb(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function pb(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=db(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=db(e.messagesByID[t]);a===void 0||a<=n||fb(e.partsByMessageID[t])||i.push(t)}return i}function mb(e={}){let t=e.client??R,n=e.cacheBudget??Jg({client:t,activeRegistry:e.activeRegistry??Ug()}),r=n.activeRegistry,i=new Map,a=new Map,o=new Map,s=new Map,c=new Map,p=e.durableStore?Yy(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Ky),getByteBudget:e.getDurableByteBudget}):void 0,m=new Map,h=new Map,g=new Map,_=new Map,v=new Map,y=new Set,b=new Map,x=new Set,S=new Set,C=(e,t)=>{let n=q(t);if(x.has(n))return;let r=ie(e);!Pl(r)&&!b.has(n)||(x.add(n),sy(_v({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},w=0,T=e=>{let t=c.get(e);return t||(t={messages:new Map,parts:new Map},c.set(e,t)),t},E=n=>{let r=cb(n,e);return Dg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},D=t=>{let n=cb(t,e);return hg({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},O=t=>{let n=cb(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},k=e=>{let t=O(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},A=n=>{let r=e.probe??{getTransport:u,getGeneration:f},a=cb(n,{...e,transport:void 0,generation:void 0,probe:r}),o=q(a),s=i.get(o);if(s)return s;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let c=Tg({directory:a.directory,sessionID:a.sessionID,fetcher:e.fetcher,transport:a.transport,generation:a.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return i.set(o,c),c},j=t=>{let n=q(cb(t,e)),r=a.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},ee=n=>{let r=q(cb(n,e));if(o.has(r))return;let i=D(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&j(n)});o.set(r,a)},te=e=>{let t=a.get(e);if(t&&t.size>0)return;let n=o.get(e);n&&(n(),o.delete(e)),a.delete(e)},ne=(e,t)=>{let n=T(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},re=(e,t)=>{let n=T(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},ie=t=>{let n=cb(t,e),r=q(n),i=E(t),a=T(r);if(a.hasTranscriptCache&&a.cachedFrom===i&&a.transcript)return a.transcript;a.cachedFrom!==i&&(a.messages.clear(),a.parts.clear(),a.pagination=void 0);let o=ub(i,n.sessionID),s=ne(r,o);return a.cachedFrom=i,a.hasTranscriptCache=!0,s},ae=(e,t)=>`${q(e)}\n${t}`,M=(e,t)=>{let n=q(e),r=v.get(n);r&&(r.delete(t),r.size===0&&v.delete(n))},oe=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t)},se=e=>{for(let t of g.keys())t.startsWith(e)&&g.delete(t);for(let t of _.keys())t.startsWith(e)&&_.delete(t)},ce=e=>{for(let t of b.keys())(t===e||t.startsWith(e))&&b.delete(t);for(let t of[...x])(t===e||t.startsWith(e))&&x.delete(t);for(let t of S)(t===e||t.startsWith(e))&&S.delete(t)},le=e=>{let t=`${q(e)}\n`;for(let[e,n]of g)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of _.keys())if(e.startsWith(t))return!0;return!1},ue=t=>{let n=cb({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},de=(e,t,n)=>{p&&d()&&p.persistSettled(Ky(e),t,n??[])},fe=(e,t,n,r)=>{if(!p||w>0||!d()||!r.applied||!r.changed)return;let i=Ky(t);if(n.type===`remove-message`){p.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(p.clearSession(i),n.page){let r=ie(e);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;de(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=ie(e);for(let e of r){let n=Jy(e);if(n.action===`remove`){p.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&de(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=ie(e),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&de(t,n,r.partsByMessageID[e.info.id])}}}},pe=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let i=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},a=e.probe??{getTransport:u,getGeneration:f},o={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??vh()};return qy(r?.fresh?await t.fetchQuery({...yg(o,i,n.transport,a,n.generation),staleTime:0}):await bg(o,i,t,n.transport,a,n.generation))},N=(e,t)=>{for(let n of t)bu(`${e.directory}\n${e.sessionID}\n${n}`,()=>I.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},me=(e,t)=>{let r=q(t),i=h.get(r);if(i)return i;let a=l(),o=(async()=>{let i=Date.now();m.set(r,{status:`loading`});try{let i=await pe(t);if(!ue(t)||l()!==a)return m.delete(r),I.getTranscript(e);I.apply(e,{type:`http-page`,purpose:`initial`,page:i}),oh(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let o=v.get(r);if(o&&o.size>0){let n=[],r=0;for(let a of i.records){let i=a.info.id;if(!(!i||!o.has(i))){if(!Ol(I.getParts(e,i),I.getMessage(e,i)??a.info)){M(t,i),g.set(ae(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&j(e),N(e,n)}return m.delete(r),n.noteScopeObserved(O(e)),k(e),I.getTranscript(e)}catch(n){if(n instanceof ag||!ue(t))return m.delete(r),I.getTranscript(e);throw m.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),sy(_v({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:ie(e),request:I.getRequestState?.(e),hydration:I.getHydrationState?.(e),error:n})),n}finally{h.delete(r)}})();return h.set(r,o),o},P=(e,t)=>{let r=q(t),i=h.get(r);if(i)return i;let a=l(),o=(async()=>{let i=Date.now(),o=I.getTranscript(e).liveRevision;m.set(r,{status:`loading`});try{let i=await pe(t,{fresh:!0});if(!ue(t)||l()!==a)return m.delete(r),I.getTranscript(e);let s=I.getTranscript(e).liveRevision;return s<o||fu(t.sessionID,t.directory)?(m.delete(r),I.getTranscript(e)):(I.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:o,liveRevision:s}),oh(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),m.delete(r),n.noteScopeObserved(O(e)),k(e),I.getTranscript(e))}catch(n){return m.delete(r),n instanceof ag||!ue(t)||sy(_v({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:ie(e),request:I.getRequestState?.(e),hydration:I.getHydrationState?.(e),error:n})),I.getTranscript(e)}finally{h.delete(r)}})();return h.set(r,o),o},F=t=>{let n=E(t);return!n||n.pages.length===0||y.has(q(cb(t,e)))?!0:kh(n).kind===`unknown`},I={getTranscript(e){return ie(e)},getPagination(t){let n=cb(t,e),r=q(n),i=I.getTranscript(t);return re(r,Rl(n.sessionID,i.boundary))},getRequestState(t){let n=cb(t,e),r=m.get(q(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let a=i.get(q(n));if(!a){let e=E(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=a.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=cb(t,e),r=q(n),i=I.getTranscript(t);Pl(i)&&b.set(r,!0);let a=b.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Fl({p0Satisfied:a,prependActive:S.has(r),materializeActive:le(n),earlierHistoryLoaded:jl(i)>1})}},hasSession(e){return E(e)!==void 0},getMessage(t,n){let r=q(cb(t,e)),i=T(r),a=I.getTranscript(t).messagesByID[n];return i.messages.has(n)&&i.messages.get(n)===a?i.messages.get(n):(i.messages.set(n,a),a)},getParts(t,n){let r=q(cb(t,e)),i=T(r),a=I.getTranscript(t).partsByMessageID[n]??hb,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=cb(t,e),i=g.get(ae(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!I.getMessage(t,n)||v.get(q(r))?.has(n)||Dl(I.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=cb(t,e),i=l(),a=ae(r,n),o=cy(()=>I.getTranscript(t)),s=e=>{try{let t=cy(e);if(!o||!t)return;ly({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:o,after:t})}catch{}},c=_.get(a);if(c)return c.then(e=>s(()=>e)).catch(()=>void 0),c;let u=(async()=>{try{if(!I.getMessage(t,n))return g.set(a,{status:`idle`}),I.getTranscript(t);if(!Dl(I.getParts(t,n))&&!v.get(q(r))?.has(n))return g.set(a,{status:`ready`}),I.getTranscript(t);g.set(a,{status:`loading`}),j(t);try{let o=await rb({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!ue(r)||l()!==i?(g.delete(a),I.getTranscript(t)):(I.apply(t,{type:`materialize-snapshots`,records:[{info:o.info,parts:o.parts??[]}]}),Dl(I.getParts(t,n))?g.set(a,{status:`error`,error:`session.message failed: slim parts remain`}):g.set(a,{status:`ready`}),j(t),I.getTranscript(t))}catch(e){if(!ue(r)||l()!==i)return g.delete(a),I.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return g.set(a,{status:`error`,error:n}),j(t),I.getTranscript(t)}}finally{M(r,n)}})();return _.set(a,u),u.then(e=>s(()=>e)).catch(()=>void 0),u.finally(()=>{_.get(a)===u&&_.delete(a)}),u},apply(r,i){let a=cb(r,e),o=D(r),s=(()=>{switch(i.type){case`http-page`:{let e=Eg(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&y.delete(q(a)),e.result.changed&&(j(r),k(r)),e.result}case`sse-event`:{let e=Eg(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&y.delete(q(a)),e.result.changed&&j(r),e.result}case`sse-event-batch`:{let e=Eg(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&y.delete(q(a)),e.result.changed&&j(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=Eg(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&j(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),Eg(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=Eg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&j(r),n.result}case`reset`:{if(S.delete(q(a)),v.delete(q(a)),y.delete(q(a)),n.purgeSession(O(r)),!i.page)return j(r),{applied:!0,changed:!0};let e=Eg(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(j(r),k(r)),e.result}case`materialize-snapshots`:return gb(t,o,a.sessionID,i,()=>j(r));case`remove-message`:{let e=Eg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&j(r),e.result}default:return{applied:!1,changed:!1}}})();return fe(r,a,i,s),s.applied&&(my({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:()=>I.getTranscript(r),request:()=>I.getRequestState?.(r),hydration:()=>I.getHydrationState?.(r),error:s.error,changed:s.changed}),C(r,a)),s},subscribe(t,i){let o=q(cb(t,e)),c=a.get(o);if(!c){c=new Set,a.set(o,c);let e=O(t);s.set(o,r.retain(e)),n.noteScopeObserved(e)}return c.add(i),ee(t),()=>{let e=a.get(o);if(e){if(e.delete(i),e.size===0){let e=s.get(o);e&&(e(),s.delete(o))}te(o)}}},async ensureInitial(t){let a=cb(t,e),o=l(),s=q(a);if(p&&await p.wait(Ky(a)),l()!==o)return I.getTranscript(t);if(E(t)===void 0&&e.durableStore&&d())try{let n=await e.durableStore.readSession(Ky(a));if(ue(a)&&l()===o&&E(t)===void 0&&n.records.length>0){w+=1;try{I.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)Ol(t.parts,t.info)&&e.add(t.info.id);e.size>0&&v.set(s,e),y.add(s)}finally{--w}}}catch(e){sy(_v({kind:`request-error`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(l()!==o)return I.getTranscript(t);if(F(t)&&E(t)!==void 0){let e=Date.now(),n=await me(t,a);return sy(_v({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),n}let u=E(t);if(u&&u.pages.length>0&&!F(t)&&e.fetcher&&!r.isRetained(O(t))){let e=Date.now(),n=await P(t,a);return sy(_v({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),n}let f=A(t),h=Date.now(),g=E(t)!==void 0;m.delete(s);try{await f.ensureInitial()}catch(e){if(l()!==o)return I.getTranscript(t);throw sy(_v({kind:`request-error`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:g?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-h,transcript:ie(t),request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t),error:e})),e}if(l()!==o)return i.get(s)===f&&(n.purgeSession(O(t)),c.delete(s),j(t)),I.getTranscript(t);m.delete(s),g||oh(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(O(t)),k(t);let _=I.getTranscript(t);return sy(_v({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:g?`query-cache`:`network`,durationMs:Date.now()-h,transcript:_,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),_},async fetchPreviousPage(t){if(F(t)&&await I.ensureInitial(t),kh(E(t)).kind!==`has-more`)return I.getTranscript(t);let n=cb(t,e),r=q(n);S.add(r),j(t);let i=Date.now();try{await A(t).fetchPreviousPage(),k(t);let e=I.getTranscript(t);return sy(_v({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),e}catch(e){throw sy(_v({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{S.delete(r),j(t)}},getController(t){let n=cb(t,e);return i.get(q(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=cb(t,e),i=l(),a=cy(()=>I.getTranscript(t)),o=I.getTranscript(t).liveRevision,s=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??vh(),signal:new AbortController().signal});if(l()!==i)return I.getTranscript(t);let c=I.getTranscript(t).liveRevision;if(I.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:s.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:o,liveRevision:c}),c<=o){let n=pb(I.getTranscript(t),s);for(let i of n)I.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let u=I.getTranscript(t);n.noteScopeObserved(O(t));try{let e=cy(()=>u);a&&e&&ly({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:a,after:e})}catch{}return u},async destructiveReset(t){let r=cy(()=>I.getTranscript(t)),a=O(t);return p&&await p.clearSession(Ky(cb(t,e))),n.destructiveReset(a,async()=>{let n=cb(t,e),a=q(n),o=i.get(a);if(o&&(o.destroy(),i.delete(a)),c.delete(a),ce(a),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await I.ensureInitial(t);try{let e=cy(()=>s);r&&e&&ly({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=q(cb(t,e)),a=i.get(r);a&&(a.destroy(),i.delete(r)),c.delete(r),se(`${r}\n`),v.delete(r),ce(r),n.purgeSession(O(t)),j(t)},resetReasoningProjection(){let t=`${(e.probe?.getTransport??u)()}\n${(e.probe?.getGeneration??f)()}\n`,r=new Set;for(let e of i.keys())e.startsWith(t)&&r.add(e);for(let e of c.keys())e.startsWith(t)&&r.add(e);for(let e of a.keys())e.startsWith(t)&&r.add(e);for(let e of r){let t=i.get(e);t&&(t.destroy(),i.delete(e)),c.delete(e);let r=e.split(`
400
+ `).trim();if(n)return iv.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function Dv(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function Ov(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var kv=e=>typeof e==`string`&&e.trim().length>0;function Av(e){if(!e||Dv(e)!==`assistant`)return;let t=e,n=!kv(t.mode)&&!kv(t.agent),r=!kv(t.modelID)||!kv(t.providerID);return n||r}function jv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function Mv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)rv(e)?r+=1:i+=1,Tv(e)&&(a=!0);let o=e.messagesByID[t],s=Dv(o),c=Av(o),l=s===`user`?Ev(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:Ov(o),...s?{role:s}:{},...l?{text:l}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function Nv(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:jv(e),after:jv(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 Pv(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:Nv(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 Fv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function Iv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function Lv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Rv(e){let t=Lv(e.partID),n=Lv(e.messageID),r=Lv(e.directory),i=Lv(e.childSessionID),a=Lv(e.toolStatus),o=Lv(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 zv(e){return[e.sessionID,Lv(e.partID)??``,e.childSessionPresent?`1`:`0`,Lv(e.childSessionID)??``,Lv(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`,Lv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Bv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Rv(e)}}function Vv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:Iv(e),...Rv(e)}}var Hv=`openchamber-transcript-diagnostics`,Uv=`events`,Wv=1,Gv=(e,t)=>{try{return e.error??Error(t)}catch{return Error(t)}},Kv=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>{try{r(e.error??t?.error??Error(`IndexedDB request failed`))}catch{r(t?.error??Error(`IndexedDB request failed`))}}}),qv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Wv),i=!1,a=()=>{i||(i=!0,n(Gv(r,`IndexedDB open failed`)))};r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Uv)||e.createObjectStore(Uv,{autoIncrement:!0})},r.onsuccess=()=>{let e=r.result;if(i){try{e.close()}catch{}return}i=!0,t(e)},r.onerror=a,r.onblocked=a}),Jv=(e=Hv)=>{let t=null,n=null,r=Promise.resolve(),i=[],a=500,o=0,s=null,c=[],l=()=>{let e=t;if(t=null,n=null,e)try{e.onversionchange=null,e.onclose=null,e.close()}catch{}},u=e=>(e.onversionchange=()=>{l()},e.onclose=()=>{t===e&&(t=null,n=null)},t=e,e),d=()=>t?Promise.resolve(t):n||(n=qv(e).then(e=>(n=null,u(e))).catch(e=>{throw n=null,e}),n),f=e=>{let t=r.then(e,e);return r=t.then(()=>void 0,()=>void 0),t},p=async(e,t)=>{let n=await d(),r;try{r=n.transaction(Uv,e)}catch(e){throw l(),e}let i=r.objectStore(Uv),a=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{}}),o;try{let e=await t(i);return await a,e}catch(e){o=e;try{r.abort()}catch{}try{await a}catch(e){o===void 0&&(o=e)}throw l(),o}},m=e=>{for(let t of e)t.resolve()},h=(e,t)=>{for(let n of e)n.reject(t)},g=e=>{if(i.length<=e)return;let t=i.splice(0,i.length-e);m(t)},_=async(e,t)=>{e.length!==0&&await p(`readwrite`,async n=>{for(let t of e)await Kv(n.add(t),n.transaction);let r=await Kv(n.getAllKeys(),n.transaction),i=r.length-t;if(i>0)for(let e of r.slice(0,i))await Kv(n.delete(e),n.transaction)})},v=()=>c.length===0?1/0:Math.min(...c),y=async()=>{if(i.length===0)return!1;let e=v(),t=i.filter(t=>t.seq<=e);if(t.length===0)return!1;i=i.filter(t=>t.seq>e);let n=a;try{return await _(t.map(e=>e.event),n),m(t),!0}catch(e){throw i=t.map(e=>({seq:e.seq,event:e.event,resolve:()=>{},reject:()=>{}})).concat(i),g(n),h(t,e),e}},b=async e=>{if(i.length===0)return;let t=i.filter(t=>t.seq<=e);if(t.length===0)return;i=i.filter(t=>t.seq>e);let n=a;try{await _(t.map(e=>e.event),n),m(t)}catch(e){throw i=t.map(e=>({seq:e.seq,event:e.event,resolve:()=>{},reject:()=>{}})).concat(i),g(n),h(t,e),e}},x=()=>{s||=f(async()=>{let e=!1;try{e=await y()}finally{s=null}e&&i.length>0&&x()}).then(()=>void 0,()=>{s=null})};return{append(e,t){return a=t,new Promise((n,r)=>{i.push({seq:++o,event:e,resolve:n,reject:r}),g(t),x()})},read(){let e=o;return c.push(e),f(async()=>{try{return await b(e),await p(`readonly`,e=>Kv(e.getAll(),e.transaction))}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})},clear(){let e=o;return c.push(e),f(async()=>{try{let t=[],n=[];for(let r of i)r.seq<=e?n.push(r):t.push(r);i=t,m(n),await p(`readwrite`,async e=>{await Kv(e.clear(),e.transaction)})}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})}}};function Yv(e={}){let t=e.driver??Jv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Xv=et(`OpenChamberMedia`);function Zv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Qv(){return Ue()&&tt!==void 0&&tt.isPluginAvailable(`OpenChamberMedia`)}function $v(){return`1.19.20`}function ey(){if(typeof localStorage>`u`)return null;try{return cv(localStorage.getItem(sv))}catch{return null}}function ty(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(sv,e?`true`:`false`)}catch{}}function ny(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var ry;function iy(e=$v()){return lv({version:e,preference:ey()})}function ay(e={}){return yv({sink:ny()===`indexeddb`?(e.createIndexedDBSink??Yv)():(e.createMemorySink??vv)(),isEnabled:e.isEnabled??iy})}function oy(){return ry??=ay(),ry}function sy(e){oy().record(e)}function cy(e){try{return iy()?Mv(e()):void 0}catch{return}}function ly(e){try{sy(Pv(e))}catch{}}function uy(e){try{sy(Bv(e))}catch{}}function dy(e){try{sy(Vv(e))}catch{}}function fy(e){if(e!==void 0)return typeof e==`function`?e():e}function py(e){return!xv(e.command)||e.changed===!1&&(e.command.type===`sse-event`||e.command.type===`sse-event-batch`)?!1:(e.isEnabled??(()=>oy().isEnabled()))()}function my(e){if(!py(e))return;let t=xv(e.command);t&&sy(_v({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:fy(e.transcript),request:fy(e.request),hydration:fy(e.hydration),command:e.command.type,purpose:Sv(e.command),sseType:Cv(e.command),source:wv(e.command),error:e.error}))}async function hy(){let e=await oy().exportReport(),t=b()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function gy(e,t=uv()){if(Qv())return(await Xv.saveFile({dataBase64:Zv(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 _y(){let e=await hy(),t=uv();return{content:e,fileName:t,outcome:await gy(e,t),eventCount:dv(e)}}function vy(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 yy=2,by=6e4,xy=6e4;function Sy(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??u)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??f)()}}function Cy(e,t){let n=(t.probe?.getTransport??u)(),r=(t.probe?.getGeneration??f)();if(n!==e.transport||r!==e.generation)throw new ag}function wy(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function Ty(e,t){return Ig({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function Ey(e,t){return`${e.trim()}\n${t}`}function Dy(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Jg({client:t,activeRegistry:Ug()}),i=Math.max(1,Math.floor(e.directoryConcurrency??yy)),a=e.fetchReconcile??b_,o=e.now??Date.now,s=Math.max(0,e.destructiveResetDedupeMs??by),c=!1,l=0,d=new Map,p=new Map,m=new Map,h=new Map,g=new Set,_=new Map,v=new Set,y=new Map,b=(e,t)=>{g.add(Ey(e,t))},x=(e,t)=>{g.delete(Ey(e,t))},S=e=>{let t=p.get(e);t&&(t.abort(),p.delete(e)),d.delete(e)},C=e=>{l+=1;for(let e of[...p.keys()])S(e);m.clear(),h.clear(),y.clear()},w=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(Ey(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of r.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&i.set(Ey(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(i.values())},T=(t,n)=>{let i=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of r.listCanonical({transport:t.transport,generation:t.generation}))i.add(e.scope.directory);for(let e of r.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&i.add(e.directory);for(let e of n)e.directory&&i.add(e.directory.trim());return i},E=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=Ey(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},D=i=>{if(c)return;let a={transport:i.transport??Sy(e).transport,generation:i.generation??Sy(e).generation},s=o(),l=E(),u=T(a,l),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(Ey(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of r.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(Ey(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of l)f.set(Ey(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(Ey(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=wy(e,a),o=n.getTranscript(r),c=Q_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:o,lastEventID:i.lastEventID,capturedAt:s});tv(t,c)}let p=new Set;for(let t of u){let n=vy({directory:t,activeScopes:w(a,t),viewedSessions:l,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(Ey(e.directory,e.sessionID))}for(let e of d){let t=Ey(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=cy(()=>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=cy(()=>n.getTranscript(e));i&&t&&ly({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},k=e=>{let t=n.getTranscript(e),r=t.messageOrder[t.messageOrder.length-1];if(!r)return!1;let i=t.messagesByID[r];return!i||i.role!==`assistant`?!1:Xs(i)},A=async(r,i,a)=>{if(Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;tv(t,$_(ev(t,i)??Q_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let s=cy(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;nv(t,i),x(i.directory,i.sessionID),y.set(Ey(i.directory,i.sessionID),o());try{let e=cy(()=>n.getTranscript(r));s&&e&&ly({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:s,after:e})}catch{}}catch(e){throw tv(t,$_(ev(t,i)??Q_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},j=async(r,i,a)=>{if(Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;tv(t,$_(ev(t,i)??Q_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=cy(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;nv(t,i),x(i.directory,i.sessionID);try{let e=cy(()=>n.getTranscript(r));o&&e&&ly({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 tv(t,$_(ev(t,i)??Q_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},ee=async(r,i,c,u)=>{let d=wy(r,i),f=Ty(r,i),p=Bg({directory:f.directory,sessionID:f.sessionID,checkpoint:String(ev(t,f)?.capturedAt??o())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:o()});try{if(Cy(i,e),c!==l||u.aborted)throw new ag;let m=ev(t,f);if(m||(m=Q_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:o()}),tv(t,m)),!m.anchorMessageID){if(await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}m=$_(m,{state:`reconciling`}),tv(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,Cy(i,e),c!==l||u.aborted)throw new ag;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,Cy(i,e),c!==l||u.aborted)throw new ag;let g=n.getTranscript(d).liveRevision;if(!_&&!h){await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()});return}let x=await a({sessionID:r.sessionID,directory:r.directory.trim(),..._?{continuation:_}:{anchor:h},signal:u});if(Cy(i,e),c!==l||u.aborted)throw new ag;if(x.resetRequired){let n=y.get(Ey(r.directory,r.sessionID))??-1/0;if(o()-n<s?(await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()})):(await A(d,f,c),t.setQueryData(p,{status:`reset`,finishedAt:o()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}if(S===1&&(v=x.capturedHeadMessageID),b=x.latestHeadMessageID??b,x.records.length>0&&O(d,x,g),m=$_(ev(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),tv(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=$_(ev(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),tv(t,m);continue}if(m=$_(ev(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),tv(t,m),x(r.directory,r.sessionID),t.setQueryData(p,{status:`complete`,finishedAt:o()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}{let n=y.get(Ey(r.directory,r.sessionID))??-1/0;if(o()-n<s?(await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()})):(await A(d,f,c),t.setQueryData(p,{status:`reset`,finishedAt:o()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}}}catch(n){if(n instanceof ag||n instanceof Error&&n.name===`AbortError`){t.setQueryData(p,{status:`cancelled`,finishedAt:o()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(p,{status:`error`,finishedAt:o(),code:n instanceof Error?n.name:`error`}),n}},te=t=>{let n=t.trim(),r=h.get(n)??0;if(r>=i)return;let a=m.get(n);if(!a||a.length===0)return;let o=a.shift();h.set(n,r+1);let s=Ey(o.directory,o.sessionID);if(d.has(s)){h.set(n,(h.get(n)??1)-1),te(n);return}let c=Sy(e),u=l,f=new AbortController;p.set(s,f);let g=(async()=>{$g(n,o.sessionID);try{await ee(o,c,u,f.signal)}catch{}finally{e_(n,o.sessionID),p.delete(s),d.delete(s),h.set(n,Math.max(0,(h.get(n)??1)-1)),te(n)}})();d.set(s,g)},ne=e=>{let t=e.directory.trim(),n=Ey(t,e.sessionID);if(d.has(n))return;let r=m.get(t);r||(r=[],m.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),te(t))},re=t=>{let n=E(),i=T(t,n);for(let a of i){let i=vy({directory:a,activeScopes:w(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)ne(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=Ey(e.scope.directory,e.scope.sessionID);i.some(e=>Ey(e.directory,e.sessionID)===t)||b(e.scope.directory,e.scope.sessionID)}}},ie=t=>{if(c||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??u)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??f)(),i=(e.probe?.getTransport??u)();if(r!==n.generation||i!==n.transport){C(`generation_mismatch`);return}re(n)},ae=t=>{if(c)return;let r=t.directory.trim(),i=Sy(e,t),s=wy({directory:r,sessionID:t.sessionID},i),l=Lg(Ty({directory:r,sessionID:t.sessionID},i)),u=_.get(l);if(u&&o()-u.checkedAt<xy||v.has(l)||d.has(Ey(r,t.sessionID))||!n.hasSession?.(s))return;let f=n.getTranscript(s),p=f.messageOrder[f.messageOrder.length-1];p&&(v.add(l),(async()=>{try{if(Cy(i,e),c)return;let u=await a({sessionID:t.sessionID,directory:r,anchor:p});if(Cy(i,e),c||(_.set(l,{checkedAt:o()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(s).liveRevision;O(s,u,d)}catch{}finally{v.delete(l)}})())};return{captureCheckpoints:D,onCompensation:ie,ensureOnObserve:async r=>{if(c)return null;let i=r.directory.trim(),a=Ey(i,r.sessionID);if(!g.has(a))return ae(r),null;x(i,r.sessionID);let o=Sy(e,r),s=wy({directory:i,sessionID:r.sessionID},o),l=Ty({directory:i,sessionID:r.sessionID},o),u=ev(t,l);if(u&&u.state!==`complete`&&u.anchorMessageID){ne({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{Cy(o,e),$g(i,r.sessionID);try{let e=await n.ensureInitial(s);return nv(t,l),e}finally{e_(i,r.sessionID)}}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:C,getCheckpoint:n=>{let r=Sy(e,n);return ev(t,Ty({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(Ey(e,t)),destroy:()=>{c=!0,C(`destroy`)}}}var Oy=e=>e.trim(),ky=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session status runtime changed`)},Ay=(e,t={})=>{let n=Oy(e),r=t.transport??u(),i=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),a=t.now??Date.now,o=t.runtimeProbe??{},s=(o.getGeneration??f)();return ct({queryKey:P.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{ky(r,s,o);let t=a(),c=await i(n,e);if(ky(r,s,o),c===null)throw Error(`session status snapshot unavailable`);return{snapshot:c,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},jy=(e,t={})=>{let{client:n=R,...r}=t;return n.fetchQuery(Ay(e,r))},My=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session active runtime changed`)},Ny=(e={})=>{let t=e.transport??u(),n=e.loadActive??(e=>B.getSessionActive(e)),r=e.now??Date.now,i=e.runtimeProbe??{},a=(i.getGeneration??f)();return ct({queryKey:P.sessionActive.snapshot(t,a),queryFn:async({signal:e})=>{My(t,a,i);let o=r(),s=await n(e);return My(t,a,i),{result:s,requestedAt:o}},staleTime:0,gcTime:3e5,retry:!1})},Py=(e={})=>{let{client:t=R,...n}=e;return t.fetchQuery(Ny(n))},Fy;function Iy(e){Fy=e}function Ly(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 Ry(e,t){return JSON.stringify(e)===JSON.stringify(t)}function zy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function By(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>{let r={...e.session_error_at};return delete r[t],{session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n},session_error_at:r}}),!0)}function Vy(e,t,n,r=Date.now(),i){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let a=e.membership,o=t??{},s=new Set([...n,...Object.keys(o)]);if(s.size===0)return{snapshot:null,source:`none`};let c={};for(let e of s){let t=Object.prototype.hasOwnProperty.call(a,e),n=Ly(o[e]);if(t){c[e]=n&&zy(n,r)?n:{type:`busy`};continue}if(i?.tailOpenSessionIds?.has(e)){c[e]=n?.type===`retry`?n:{type:`busy`};continue}c[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:c,source:`fused`}}function Hy(e,t,n,r){if(n.length===0)return!1;let i=!1;return e.setState(e=>{let a=e.session_status??{},o,s,c,l=()=>o??={...a},u=()=>s??={...e.session_status_observed_at},d=()=>c??={...e.session_error_at},f=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(u()[t]=r,i=!0)};for(let o of n){if(r!==void 0&&(e.session_status_observed_at[o]??-1/0)>=r)continue;let n=Ly(t[o]);if(n&&n.type!==`idle`){Ry(a[o],n)||(l()[o]=n,i=!0),(n.type===`busy`||n.type===`retry`)&&e.session_error_at?.[o]!==void 0&&(delete d()[o],i=!0),f(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(l()[o]={type:`idle`},i=!0),f(o)}return!o&&!s&&!c?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{},...c?{session_error_at:c}:{}}}),i}function Uy(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Wy(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 jy(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 Py({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}=Vy(l,h,n,Date.now(),{tailOpenSessionIds:r.tailOpenSessionIds});if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=Uy(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Hy(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Fy;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 Gy({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:Wy(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Ky(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function qy(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 Jy(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 Yy(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(pc(e))??Promise.resolve(),r.get(hc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=pc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=hc(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??Pg)();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 Xy=new Map;function Zy(e,t){let n=Xy.get(e);if(n)return n;let r=t().finally(()=>{Xy.get(e)===r&&Xy.delete(e)});return Xy.set(e,r),r}var Qy=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function $y(e){return Zy(Qy(e),e.request)}function eb(e,t){return`${e}\n${t}`}var tb=new Map;function nb(e){return tb.get(e)}async function rb(e){return $y({runtimeKey:eb(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 tb.set(r.id,i),{info:vp(r),parts:i}}})}function ib(e,t){let n=e.info;return n.role===t||n.clientRole===t}function ab(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!ib(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 ob(e){if(e.complete){let t=e.records.some(e=>ib(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=ab(e.records);if(t.length===0){let t=e.records.some(e=>ib(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=>ib(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function sb(e){return e.trim()}function cb(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??u)(),r=e.generation??t.generation??(t.probe?.getGeneration??f)();return{directory:sb(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function q(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function lb(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:hl,liveRevision:0}}function ub(e,t){if(!e||e.pages.length===0)return lb(t);let n=ig(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function db(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function fb(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function pb(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=db(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=db(e.messagesByID[t]);a===void 0||a<=n||fb(e.partsByMessageID[t])||i.push(t)}return i}function mb(e={}){let t=e.client??R,n=e.cacheBudget??Jg({client:t,activeRegistry:e.activeRegistry??Ug()}),r=n.activeRegistry,i=new Map,a=new Map,o=new Map,s=new Map,c=new Map,p=e.durableStore?Yy(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Ky),getByteBudget:e.getDurableByteBudget}):void 0,m=new Map,h=new Map,g=new Map,_=new Map,v=new Map,y=new Set,b=new Map,x=new Set,S=new Set,C=(e,t)=>{let n=q(t);if(x.has(n))return;let r=ie(e);!Pl(r)&&!b.has(n)||(x.add(n),sy(_v({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},w=0,T=e=>{let t=c.get(e);return t||(t={messages:new Map,parts:new Map},c.set(e,t)),t},E=n=>{let r=cb(n,e);return Dg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},D=t=>{let n=cb(t,e);return hg({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},O=t=>{let n=cb(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},k=e=>{let t=O(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},A=n=>{let r=e.probe??{getTransport:u,getGeneration:f},a=cb(n,{...e,transport:void 0,generation:void 0,probe:r}),o=q(a),s=i.get(o);if(s)return s;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let c=Tg({directory:a.directory,sessionID:a.sessionID,fetcher:e.fetcher,transport:a.transport,generation:a.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return i.set(o,c),c},j=t=>{let n=q(cb(t,e)),r=a.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},ee=n=>{let r=q(cb(n,e));if(o.has(r))return;let i=D(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&j(n)});o.set(r,a)},te=e=>{let t=a.get(e);if(t&&t.size>0)return;let n=o.get(e);n&&(n(),o.delete(e)),a.delete(e)},ne=(e,t)=>{let n=T(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},re=(e,t)=>{let n=T(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},ie=t=>{let n=cb(t,e),r=q(n),i=E(t),a=T(r);if(a.hasTranscriptCache&&a.cachedFrom===i&&a.transcript)return a.transcript;a.cachedFrom!==i&&(a.messages.clear(),a.parts.clear(),a.pagination=void 0);let o=ub(i,n.sessionID),s=ne(r,o);return a.cachedFrom=i,a.hasTranscriptCache=!0,s},ae=(e,t)=>`${q(e)}\n${t}`,M=(e,t)=>{let n=q(e),r=v.get(n);r&&(r.delete(t),r.size===0&&v.delete(n))},oe=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t)},se=e=>{for(let t of g.keys())t.startsWith(e)&&g.delete(t);for(let t of _.keys())t.startsWith(e)&&_.delete(t)},ce=e=>{for(let t of b.keys())(t===e||t.startsWith(e))&&b.delete(t);for(let t of[...x])(t===e||t.startsWith(e))&&x.delete(t);for(let t of S)(t===e||t.startsWith(e))&&S.delete(t)},le=e=>{let t=`${q(e)}\n`;for(let[e,n]of g)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of _.keys())if(e.startsWith(t))return!0;return!1},ue=t=>{let n=cb({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},de=(e,t,n)=>{p&&d()&&p.persistSettled(Ky(e),t,n??[])},fe=(e,t,n,r)=>{if(!p||w>0||!d()||!r.applied||!r.changed)return;let i=Ky(t);if(n.type===`remove-message`){p.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(p.clearSession(i),n.page){let r=ie(e);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;de(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=ie(e);for(let e of r){let n=Jy(e);if(n.action===`remove`){p.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&de(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=ie(e),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&de(t,n,r.partsByMessageID[e.info.id])}}}},pe=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let i=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},a=e.probe??{getTransport:u,getGeneration:f},o={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??vh()};return qy(r?.fresh?await t.fetchQuery({...yg(o,i,n.transport,a,n.generation),staleTime:0}):await bg(o,i,t,n.transport,a,n.generation))},N=(e,t)=>{for(let n of t)bu(`${e.directory}\n${e.sessionID}\n${n}`,()=>I.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},me=(e,t)=>{let r=q(t),i=h.get(r);if(i)return i;let a=l(),o=(async()=>{let i=Date.now();m.set(r,{status:`loading`});try{let i=await pe(t);if(!ue(t)||l()!==a)return m.delete(r),I.getTranscript(e);I.apply(e,{type:`http-page`,purpose:`initial`,page:i}),oh(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let o=v.get(r);if(o&&o.size>0){let n=[],r=0;for(let a of i.records){let i=a.info.id;if(!(!i||!o.has(i))){if(!Ol(I.getParts(e,i),I.getMessage(e,i)??a.info)){M(t,i),g.set(ae(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&j(e),N(e,n)}return m.delete(r),n.noteScopeObserved(O(e)),k(e),I.getTranscript(e)}catch(n){if(n instanceof ag||!ue(t))return m.delete(r),I.getTranscript(e);throw m.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),sy(_v({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:ie(e),request:I.getRequestState?.(e),hydration:I.getHydrationState?.(e),error:n})),n}finally{h.delete(r)}})();return h.set(r,o),o},P=(e,t)=>{let r=q(t),i=h.get(r);if(i)return i;let a=l(),o=(async()=>{let i=Date.now(),o=I.getTranscript(e).liveRevision;m.set(r,{status:`loading`});try{let i=await pe(t,{fresh:!0});if(!ue(t)||l()!==a)return m.delete(r),I.getTranscript(e);let s=I.getTranscript(e).liveRevision;return s<o||fu(t.sessionID,t.directory)?(m.delete(r),I.getTranscript(e)):(I.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:o,liveRevision:s}),oh(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),m.delete(r),n.noteScopeObserved(O(e)),k(e),I.getTranscript(e))}catch(n){return m.delete(r),n instanceof ag||!ue(t)||sy(_v({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:ie(e),request:I.getRequestState?.(e),hydration:I.getHydrationState?.(e),error:n})),I.getTranscript(e)}finally{h.delete(r)}})();return h.set(r,o),o},F=t=>{let n=E(t);return!n||n.pages.length===0||y.has(q(cb(t,e)))?!0:kh(n).kind===`unknown`},I={getTranscript(e){return ie(e)},getPagination(t){let n=cb(t,e),r=q(n),i=I.getTranscript(t);return re(r,Rl(n.sessionID,i.boundary))},getRequestState(t){let n=cb(t,e),r=m.get(q(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let a=i.get(q(n));if(!a){let e=E(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=a.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=cb(t,e),r=q(n),i=I.getTranscript(t);Pl(i)&&b.set(r,!0);let a=b.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Fl({p0Satisfied:a,prependActive:S.has(r),materializeActive:le(n),earlierHistoryLoaded:jl(i)>1})}},hasSession(e){return E(e)!==void 0},getMessage(t,n){let r=q(cb(t,e)),i=T(r),a=I.getTranscript(t).messagesByID[n];return i.messages.has(n)&&i.messages.get(n)===a?i.messages.get(n):(i.messages.set(n,a),a)},getParts(t,n){let r=q(cb(t,e)),i=T(r),a=I.getTranscript(t).partsByMessageID[n]??hb,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=cb(t,e),i=g.get(ae(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!I.getMessage(t,n)||v.get(q(r))?.has(n)||Dl(I.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=cb(t,e),i=l(),a=ae(r,n),o=cy(()=>I.getTranscript(t)),s=e=>{try{let t=cy(e);if(!o||!t)return;ly({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:o,after:t})}catch{}},c=_.get(a);if(c)return c.then(e=>s(()=>e)).catch(()=>void 0),c;let u=(async()=>{try{if(!I.getMessage(t,n))return g.set(a,{status:`idle`}),I.getTranscript(t);if(!Dl(I.getParts(t,n))&&!v.get(q(r))?.has(n))return g.set(a,{status:`ready`}),I.getTranscript(t);g.set(a,{status:`loading`}),j(t);try{let o=await rb({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!ue(r)||l()!==i?(g.delete(a),I.getTranscript(t)):(I.apply(t,{type:`materialize-snapshots`,records:[{info:o.info,parts:o.parts??[]}]}),Dl(I.getParts(t,n))?g.set(a,{status:`error`,error:`session.message failed: slim parts remain`}):g.set(a,{status:`ready`}),j(t),I.getTranscript(t))}catch(e){if(!ue(r)||l()!==i)return g.delete(a),I.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return g.set(a,{status:`error`,error:n}),j(t),I.getTranscript(t)}}finally{M(r,n)}})();return _.set(a,u),u.then(e=>s(()=>e)).catch(()=>void 0),u.finally(()=>{_.get(a)===u&&_.delete(a)}),u},apply(r,i){let a=cb(r,e),o=D(r),s=(()=>{switch(i.type){case`http-page`:{let e=Eg(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&y.delete(q(a)),e.result.changed&&(j(r),k(r)),e.result}case`sse-event`:{let e=Eg(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&y.delete(q(a)),e.result.changed&&j(r),e.result}case`sse-event-batch`:{let e=Eg(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&y.delete(q(a)),e.result.changed&&j(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=Eg(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&j(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),Eg(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=Eg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&j(r),n.result}case`reset`:{if(S.delete(q(a)),v.delete(q(a)),y.delete(q(a)),n.purgeSession(O(r)),!i.page)return j(r),{applied:!0,changed:!0};let e=Eg(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(j(r),k(r)),e.result}case`materialize-snapshots`:return gb(t,o,a.sessionID,i,()=>j(r));case`remove-message`:{let e=Eg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&j(r),e.result}default:return{applied:!1,changed:!1}}})();return fe(r,a,i,s),s.applied&&(my({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:()=>I.getTranscript(r),request:()=>I.getRequestState?.(r),hydration:()=>I.getHydrationState?.(r),error:s.error,changed:s.changed}),C(r,a)),s},subscribe(t,i){let o=q(cb(t,e)),c=a.get(o);if(!c){c=new Set,a.set(o,c);let e=O(t);s.set(o,r.retain(e)),n.noteScopeObserved(e)}return c.add(i),ee(t),()=>{let e=a.get(o);if(e){if(e.delete(i),e.size===0){let e=s.get(o);e&&(e(),s.delete(o))}te(o)}}},async ensureInitial(t){let a=cb(t,e),o=l(),s=q(a);if(p&&await p.wait(Ky(a)),l()!==o)return I.getTranscript(t);if(E(t)===void 0&&e.durableStore&&d())try{let n=await e.durableStore.readSession(Ky(a));if(ue(a)&&l()===o&&E(t)===void 0&&n.records.length>0){w+=1;try{I.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)Ol(t.parts,t.info)&&e.add(t.info.id);e.size>0&&v.set(s,e),y.add(s)}finally{--w}}}catch(e){sy(_v({kind:`request-error`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(l()!==o)return I.getTranscript(t);if(F(t)&&E(t)!==void 0){let e=Date.now(),n=await me(t,a);return sy(_v({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),n}let u=E(t);if(u&&u.pages.length>0&&!F(t)&&e.fetcher&&!r.isRetained(O(t))){let e=Date.now(),n=await P(t,a);return sy(_v({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),n}let f=A(t),h=Date.now(),g=E(t)!==void 0;m.delete(s);try{await f.ensureInitial()}catch(e){if(l()!==o)return I.getTranscript(t);throw sy(_v({kind:`request-error`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:g?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-h,transcript:ie(t),request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t),error:e})),e}if(l()!==o)return i.get(s)===f&&(n.purgeSession(O(t)),c.delete(s),j(t)),I.getTranscript(t);m.delete(s),g||oh(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(O(t)),k(t);let _=I.getTranscript(t);return sy(_v({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:g?`query-cache`:`network`,durationMs:Date.now()-h,transcript:_,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),_},async fetchPreviousPage(t){if(F(t)&&await I.ensureInitial(t),kh(E(t)).kind!==`has-more`)return I.getTranscript(t);let n=cb(t,e),r=q(n);S.add(r),j(t);let i=Date.now();try{await A(t).fetchPreviousPage(),k(t);let e=I.getTranscript(t);return sy(_v({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),e}catch(e){throw sy(_v({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{S.delete(r),j(t)}},getController(t){let n=cb(t,e);return i.get(q(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=cb(t,e),i=l(),a=cy(()=>I.getTranscript(t)),o=I.getTranscript(t).liveRevision,s=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??vh(),signal:new AbortController().signal});if(l()!==i)return I.getTranscript(t);let c=I.getTranscript(t).liveRevision;if(I.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:s.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:o,liveRevision:c}),c<=o){let n=pb(I.getTranscript(t),s);for(let i of n)I.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let u=I.getTranscript(t);n.noteScopeObserved(O(t));try{let e=cy(()=>u);a&&e&&ly({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:a,after:e})}catch{}return u},async destructiveReset(t){let r=cy(()=>I.getTranscript(t)),a=O(t);return p&&await p.clearSession(Ky(cb(t,e))),n.destructiveReset(a,async()=>{let n=cb(t,e),a=q(n),o=i.get(a);if(o&&(o.destroy(),i.delete(a)),c.delete(a),ce(a),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await I.ensureInitial(t);try{let e=cy(()=>s);r&&e&&ly({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=q(cb(t,e)),a=i.get(r);a&&(a.destroy(),i.delete(r)),c.delete(r),se(`${r}\n`),v.delete(r),ce(r),n.purgeSession(O(t)),j(t)},resetReasoningProjection(){let t=`${(e.probe?.getTransport??u)()}\n${(e.probe?.getGeneration??f)()}\n`,r=new Set;for(let e of i.keys())e.startsWith(t)&&r.add(e);for(let e of c.keys())e.startsWith(t)&&r.add(e);for(let e of a.keys())e.startsWith(t)&&r.add(e);for(let e of r){let t=i.get(e);t&&(t.destroy(),i.delete(e)),c.delete(e);let r=e.split(`
401
401
  `);if(r.length>=4){let e={transport:r[0],generation:Number(r[1]),directory:r[2],sessionID:r[3]};n.purgeSession(O(e)),j(e)}}se(t),oe(t),ce(t);for(let e of[...m.keys()])e.startsWith(t)&&m.delete(e);for(let e of[...h.keys()])e.startsWith(t)&&h.delete(e);for(let e of[...y])e.startsWith(t)&&y.delete(e)},purgeGeneration(e,t){for(let[n,r]of i)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),i.delete(n),c.delete(n);let e=s.get(n);e&&(e(),s.delete(n));let t=o.get(n);t&&(t(),o.delete(n)),a.delete(n)}se(`${e}\n${t}\n`),oe(`${e}\n${t}\n`),ce(`${e}\n${t}\n`),n.purgeGeneration(e,t),p&&p.clearGeneration({transport:e,generation:t})},destroy(){for(let e of i.values())e.destroy();i.clear();for(let e of o.values())e();o.clear();for(let e of s.values())e();s.clear(),a.clear(),c.clear(),m.clear(),h.clear(),g.clear(),_.clear(),v.clear(),b.clear(),x.clear(),S.clear(),n.dispose()}};return I}var hb=Object.freeze([]);function gb(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=Eg(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var _b=`/api/openchamber/transcript-cache`,vb=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),yb=e=>typeof e==`object`&&!!e&&!Array.isArray(e),bb=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},xb=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},Sb=e=>{if(!yb(e))throw Error(`Invalid transcript cache scope`);return{transport:bb(e.transport,`scope`),generation:xb(e.generation,`scope`),directory:bb(e.directory,`scope`),sessionID:bb(e.sessionID,`scope`)}},Cb=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},wb=e=>{if(!yb(e)||!yb(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!yb(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:Sb(e.scope),messageID:bb(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>Cb(e,`part completeness`)),completeness:Cb(e.completeness,`completeness`),contentHash:bb(e.contentHash,`content hash`),byteSize:xb(e.byteSize,`byte size`),lastAccessedAt:xb(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:xb(e.sortKey.created,`sort key`),messageID:bb(e.sortKey.messageID,`sort key`)}}},Tb=(e,t)=>{if(!yb(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(wb);return{scope:e.scope===void 0?Oc(t):Sb(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},Eb=e=>{if(!yb(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:wb(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!vb.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:wb(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Db=e=>{if(!yb(e))throw Error(`Invalid transcript cache evict`);return{evicted:xb(e.evicted,`evict`),freedBytes:xb(e.freedBytes,`evict`),remainingBytes:xb(e.remainingBytes,`evict`)}},Ob=e=>({scope:Oc(e),records:[],byteSize:0}),kb=(e,t)=>yb(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Ab=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`)}},jb=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 Ab(r)};let i=await Ab(r).catch(()=>void 0);throw Error(kb(i,`Transcript cache request failed (${r.status})`))},Mb=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Nb=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Pb(e={}){let t=e.fetch??_;return{async readSession(e){let n=await jb(t,`${_b}/session`,{method:`GET`,query:Mb(e)});return n.kind===`disabled`||n.kind===`not-found`?Ob(e):Tb(n.payload,e)},async readMessage(e,n){let r=await jb(t,`${_b}/message`,{method:`GET`,query:{...Mb(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!yb(r.payload))throw Error(`Invalid transcript cache record`);return wb(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await jb(t,`${_b}/message`,Nb(`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 Eb(i.payload)},async removeMessage(e,n){let r=await jb(t,`${_b}/message`,Nb(`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 jb(t,`${_b}/session`,Nb(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await jb(t,`${_b}/generation`,Nb(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await jb(t,`${_b}/evict`,Nb(`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 Db(r.payload)},async clearAll(){let e=await jb(t,`${_b}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Fb=`openchamber-transcript-durable`,Ib=1,Lb=`transcriptIndex`,Rb=`transcriptContent`,zb=class extends Error{code;constructor(e){super(e),this.code=e}},Bb=e=>({id:mc(e.scope,e.messageID),scope:Oc(e.scope),scopeKey:pc(e.scope),generationKey:hc(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}),Vb=(e,t)=>({scope:Oc(e.scope),messageID:e.messageID,info:Dc(t.info),parts:Dc(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}}),Hb=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Vb(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Ub=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},Wb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Gb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new zb(`database-unavailable`));return}let r=indexedDB.open(e,Ib),i=!1,a=()=>{i||(i=!0,n(new zb(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Lb)){let t=e.createObjectStore(Lb,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Rb)||e.createObjectStore(Rb,{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}),Kb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new zb(`database-unavailable`)),r.onblocked=()=>void 0}),qb=(e=Fb)=>({transaction:async t=>{let n=await Gb(e),r=n.transaction([Lb,Rb],`readwrite`),i=r.objectStore(Lb),a=r.objectStore(Rb),o=e=>Wb(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:()=>Kb(e)});function Jb(e,t={}){let n=kc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Bb(t)),Ac(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(pc(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Vb(t,r);a.lastAccessedAt=n(),await e.putIndex(Bb(a)),i.push(a)}return jc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Hb(e,mc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=Mc({info:i,incomingCompleteness:bc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=Dc(a.slice()),c=bc(s),l=await Cc(i,s),u=mc(t,i.id);return e.transaction(async e=>{let a=await Hb(e,u),o=Mc({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:Ac(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:Oc(t),messageID:i.id,info:Dc(i),parts:s,partCompleteness:s.map(yc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:_c(i)};return await e.putIndex(Bb(d)),await e.putContent({id:u,info:Dc(i),parts:s}),{status:`written`,record:Ac(d)}})},async removeMessage(t,n){await e.transaction(e=>Ub(e,mc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(pc(t));for(let t of n)await Ub(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(hc(t));for(let t of n)await Ub(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(pc)),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?gc(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Ub(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 Yb(e={}){return Jb(e.driver??qb(e.databaseName),e)}function Xb(e={}){let t=e.isDesktopShell??ae,n=e.isDesktopLocalOriginActive??de,r=e.isVSCodeRuntime??Se,i=e.isCapacitorApp??Ue;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Zb=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Qb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Pb)(),t),i=()=>(n??=(e.createIndexedDBStore??Yb)(),n),a=()=>Xb(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=>Zb([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function $b(e={}){await Qb(e).clearAll()}var ex=(e,t)=>e<t?-1:+(e>t);function tx(e){return e.filter(e=>!!e?.id).sort((e,t)=>ex(e.id,t.id))}async function nx(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await u_({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),i=r.records.map(e=>({info:vp(e.info),parts:tx(e.parts??[])}));if(!e.before&&!r.complete&&ab(i).length>0){let t=B.getScopedSdkClient(e.directory);i=(await ob({records:i,complete:r.complete,requestMessage:async n=>{let r=await rb({transport:u(),generation:f(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:tx(r.parts??[])}}})).records.map(e=>({info:e.info,parts:tx(e.parts??[])}))}return{records:i,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function rx(e){let t=e.client??R,n=Ug(),r=Jg({client:t,activeRegistry:n}),i=mb({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:u,getGeneration:f},fetcher:e=>nx({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:vh(),historyLimit:yh(),durableStore:e.durableStore??Qb()}),a=Dy({client:t,repository:i,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:r,probe:{getTransport:u,getGeneration:f},confirmSessionStatus:async(t,n)=>{let r=e.childStores.getChild(t.directory);if(!r)return;let i=r.getState().session_status?.[t.sessionID];!n.tailOpen&&i?.type!==`busy`&&i?.type!==`retry`||await Wy(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return Ou(i),Vu(a),{repository:i,destroy:()=>{a.cancelAll(`dispose`),Vu(null),i.destroy(),ku()}}}function ix(e){return Au().apply(G(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var ax=new Map;function ox(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function sx(e,t,n,r={}){let i=r.getTransportIdentity??u,a=r.getGeneration??f,o=i(),s=a(),c=ox(e,t,o,s),l=()=>i()===o&&a()===s,d=ax.get(c)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=d.catch(()=>void 0).then(()=>m);ax.set(c,h);try{if(await d.catch(()=>void 0),!l())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:o,generation:s,isCurrent:l})}finally{p(),ax.get(c)===h&&ax.delete(c)}}var cx=new Set,lx=new Set,ux=new Set,dx=new Set,fx={onDeleteRequest(e){return cx.add(e),()=>{cx.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||cx.forEach(t=>t(e))},onCreateRequest(e){return lx.add(e),()=>{lx.delete(e)}},requestCreate(e){let t=e??{};lx.forEach(e=>e(t))},onDirectoryRequest(e){return ux.add(e),()=>{ux.delete(e)}},requestDirectoryDialog(){ux.forEach(e=>e())},onGitRefreshHint(e){return dx.add(e),()=>{dx.delete(e)}},requestGitRefresh(e){e.directory.trim()&&dx.forEach(t=>t(e))}},px=50,mx=e=>{let t=Object.keys(e);if(t.length<=px)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-px).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},hx=De()(Ae(Oe((e,t)=>({sessions:{},setSessionTodos:(t,n)=>{t&&e(e=>{let r={...e.sessions};return!n||n.length===0?t in r?(delete r[t],{sessions:r}):e:(r[t]={todos:n,touchedAt:Date.now()},{sessions:mx(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:Ye(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),gx=new Set([`todowrite`,`todoread`]),_x=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),vx=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),yx=(e,t)=>{hx.getState().setSessionTodos(e,t)},bx=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},xx=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Sx=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},Cx=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Sx(n);e&&t.push(e)}return t},wx=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Cx(t);if(t&&typeof t==`object`)return Cx(t.todos)}catch{}return[]},Tx=e=>{if(!gx.has(bx(e)))return[];let t=xx(e);if(t&&_x.has(t))return[];let n=e.state,r=Cx(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Cx(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Cx(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?wx(i):[]};function Ex(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=Tx(r[e]);if(t.length>0)return t}}return[]}function Dx(e){if(!e.sessionID||e.isStale?.()||vx(e.store.getState().todo,e.sessionID))return!1;let t=Ex(e.transcript);return t.length===0||e.isStale?.()||vx(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Ox(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??U()?.getTranscript(G(e.directory,e.sessionID));return t?Dx({sessionID:e.sessionID,store:e.store,transcript:t,persist:yx,isStale:e.isStale}):!1}var kx=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>MC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>jC,SESSION_DELETE_UNDO_MS:()=>nC,abortBusySessionForMessageEdit:()=>KC,abortCurrentOperation:()=>LC,archiveSession:()=>fC,beginOptimisticSend:()=>SC,cancelScheduledSessionDeletes:()=>dC,classifySendFailure:()=>TS,combinedSendConfirmationOptions:()=>NC,commitMessageEdit:()=>JC,createSession:()=>XS,deleteSession:()=>lC,dirStoreForDirectory:()=>dS,dismissOpenQuestionsForSession:()=>VC,ensureSentUserMessagePresence:()=>IC,fetchMessagesForSession:()=>ew,fetchRecentSendConfirmationRecords:()=>kC,forkSession:()=>QC,getSendFailureKind:()=>CS,isQuestionRequestNotFoundError:()=>qS,isQuestionSubmissionClaimedError:()=>KS,materializeConfirmedSendRecords:()=>AC,mirrorSessionIntoLiveStores:()=>vS,optimisticInsertUserMessage:()=>DC,optimisticSend:()=>EC,patchSessionMetadata:()=>ZS,refetchSessionMessages:()=>XC,rejectQuestion:()=>BC,releaseUnconfirmedQueueSend:()=>cS,requestSessionSmartTitle:()=>hC,resolveForkMessageId:()=>Kx,respondToPermission:()=>RC,respondToQuestion:()=>zC,revertToMessage:()=>HC,rollbackOptimisticSend:()=>wC,scheduleSessionDeletes:()=>uC,setActionRefs:()=>oS,setOptimisticRefs:()=>sS,settleOptimisticSend:()=>TC,shareSession:()=>gC,shouldSuppressForkCopyEvent:()=>Jx,stageMessageEdit:()=>WC,trackForkCopySessionCreated:()=>Rx,unarchiveSession:()=>pC,unrevertSession:()=>ZC,unshareSession:()=>_C,updateSessionTitle:()=>mC,waitForConnectionOrThrow:()=>kS,waitForSessionIdleForMessageEdit:()=>qC}),Ax=2,jx=150,Mx=new Set([`patch`,`step-start`,`step-finish`]),Nx=3,Px=150,Fx=null,Ix=new Map,Lx=3e4;function Rx(e,t){let n=t?.id;!Fx||Fx.runtimeKey!==m()||Fx.directory!==e||!n||t?.title!==Fx.expectedTargetTitle||n===Fx.sourceSessionID||Fx.targetSessionID||(Fx.targetSessionID=n)}function zx(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function Bx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function Vx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Hx(e){return e?.type===`busy`||e?.type===`retry`}function Ux(e){for(let t=e.length-1;t>=0;--t)if(e[t]?.role===`user`)return t;return-1}function Wx(e){let t=e.at(-1);return t?.role===`assistant`&&t.time.completed==null}function Gx(e,t){return Hx(e)||e==null&&Wx(t)}function Kx(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(!Gx(n,t))return;let r=Ux(t);if(r!==-1)return t[r+1]?.id}async function qx(e,t){let n=Kp(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 Jx(e,t,n){if(Fx&&Fx.runtimeKey===m()&&Fx.directory===e&&t&&t===Fx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${m()}:${e}:${t}`,i=Ix.get(r);return i?i.expiresAt<=Date.now()?(Ix.delete(r),!1):n<=i.messageID:!1}var Yx=null,Xx=null,Zx=()=>``,Qx=new Map,$x=null,eS=null,tS=null,nS=e=>new Promise(t=>setTimeout(t,e));function rS(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 iS(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${rS(e.error)}`);throw n!==void 0&&(r.status=n),typeof e.error==`object`&&e.error!==null&&`code`in e.error&&typeof e.error.code==`string`&&(r.code=e.error.code),r}function aS(e,t){let n=iS(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function oS(e,t,n){if(Yx=e,Xx=t,Zx=n,Qx.size>0){let e=[...Qx.values()];Qx.clear(),queueMicrotask(()=>{for(let t of e)ew(t.sessionID,t.directory)})}}function sS(e,t,n){$x=e,eS=t,tS=n??null}function cS(e){let t=e.directory??null;eS?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function lS(){if(!Yx)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Yx}function uS(){if(!Xx)throw Error(`Child stores not initialized`);let e=Zx();if(!e)throw Error(`No current directory`);return Xx.ensureChild(e)}function dS(e,t){if(!Xx)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Xx.ensureChild(e,t)}function fS(e,t){let n=t??FS(e);return n?{store:dS(n),directory:n}:{store:uS(),directory:yS()}}function pS(e,t){let{store:n,directory:r}=fS(e,t??void 0),i=r??yS()??``;return{repository:U()??W(i,n),directory:i,store:n}}function mS(e,t){let{repository:n,directory:r,store:i}=pS(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(G(r,e))}}function hS(e,t){return nd(mS(e,t).data)}function gS(e,t){return mS(e,t).data.messageOrder.length}function _S(e,t){let n=Xx;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]=gD(e,n[r]),t.setState({session:i}),!0}return!1}function vS(e,t){t&&_S(e,t)||_S(e)}function yS(){return Zx()||void 0}function bS(){let{hasEverConnected:e,lastDisconnectReason:t}=$f.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function xS(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 SS=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 CS(e){return e instanceof SS?e.kind:null}function wS(e){let t=xS(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 TS(e,t){return t?wS(e)||xS(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var ES=2e3,DS=5e3,OS=3e4;async function kS(){let e=eh();e&&$m(`send_stream_stale`);let t=Date.now()+(e?DS:ES);for(;Date.now()<t;){if($f.getState().isConnected&&!eh()||n()&&!eh())return;let e=t-Date.now();if(e<=0)break;if(await $f.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!eh())return;let r=Math.min(100,t-Date.now());r>0&&await new Promise(e=>setTimeout(e,r))}throw bS()}function AS(e){return new Promise((t,n)=>{let r=setTimeout(()=>{$m(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},OS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function jS(e){let t=X.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function MS(e){e&&X.getState().upsertSession(e)}function NS(e,t){let n=gp(t),r=[...e.getState().session],i=bs.search(r,n.id,e=>e.id);if(i.found){let t=gD(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 PS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=jS(e);if(i)return NS(t,i);try{return NS(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 FS(e){return IS(e)||$.getState().getDirectoryForSession(e)||yS()}function IS(e){let t=Xx;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=U()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function LS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):lS()}function RS(e){Br.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&&Br.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var zS=()=>new Map(Array.from(Hd(),([e,t])=>[e,t.title||e]));function BS(e){return!(e.type!==`file`||um(e))}function VS(e){return BS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function HS(e){return e.some(VS)}async function US(e){let t=[...e.parts];if(!HS(t))return t;let n=f(),r=e.directory??``;try{await Lu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||f()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=pS(e.sessionID,r);if(t=[...i.getParts(G(a,e.sessionID),e.messageID)],HS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function WS(e){if(HS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await Fm(e.parts,{sessionTitles:zS(),directory:e.directory}),n=Br.getState(),r=n.getDraft(e.key);return{payload:t,commit:await Bm({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function GS(e,t,n){let r=Xx;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 KS(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.status===409&&t.code===`question_submission_claimed`}function qS(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 JS(e,t){let n=Xx;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 YS(e,t,n){let r=GS(e,t,n);return r?B.getScopedSdkClient(r):LS(t)}async function XS(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??yS()),a=i.directory??null;return a&&Pd(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),X.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function ZS(e,t,n){let r=t??FS(e),i=n(Kp(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);X.getState().upsertSession(a);let o=a.directory??r;return o&&Pd(a.id,o),a}async function QS(e,t){let n;try{n=await B.getSession(e,t??FS(e))}catch{return}if(!Xp(n))return;let r=Yp(n);if(r)try{await ZS(r,t??FS(r),t=>$p(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 $S(e,t){if(!Xx)return[];let n=[],r=new Set,i=[];if(t){let e=Xx.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Xx.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 eC(e){if(Xx)for(let t of e){let e=Xx.children.get(t.directory);e&&e.setState({session:t.sessions})}}function tC(e){$.getState().setWorktreeMetadata(e,null)}var nC=1e4,rC=new Map,iC=0;function aC(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function oC(e){X.getState().clearSessionsPendingDeletion([e.sessionId]),eC(e.listSnapshots),MS(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function sC(e,t){let n=t??FS(e);X.getState().markSessionsPendingDeletion([e]);let r=$S(e,n),i=jS(e);X.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function cC(e,t){try{if(await QS(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return $S(e,t),X.getState().removeSessions([e]),tC(e),X.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&($S(e,t),X.getState().removeSessions([e]),tC(e),X.getState().clearSessionsPendingDeletion([e]),!0)}}async function lC(e,t){let n=sC(e);return await cC(e,n.directory)?!0:(oC(n),!1)}function uC(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>sC(e)),i=`session-delete-${Date.now()}-${iC+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=rC.get(i);if(!e)return;rC.delete(i);let t=[],n=[];for(let r of e.entries)await cC(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),oC(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return rC.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function dC(e){if(!e)return!1;let t=rC.get(e);if(!t)return!1;clearTimeout(t.timer),rC.delete(e);for(let e of[...t.entries].reverse())oC(e);return!0}async function fC(e){let t=FS(e),n=$S(e,t),r=jS(e),i=Date.now();X.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await QS(e,t);let n=await B.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return X.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),eC(n),MS(r),!1}}async function pC(e){let t=FS(e),n=jS(e),r=n?aC(n):null;if(r&&(X.getState().upsertSession(r),t&&Xx)){let e=Xx.children.get(t);e&&NS(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=aC(n);if(X.getState().upsertSession(r),t&&Xx){let e=Xx.children.get(t);e?NS(e,r):vS(r,t)}else vS(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(X.getState().upsertSession(n),n.time?.archived&&$S(e,t)),!1}}async function mC(e,t){let n=FS(e),r=jS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?ap(r):0,c=await B.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);X.getState().upsertSession(c),vS(c,n)}async function hC(e){let t=FS(e),n=jS(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await B.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);X.getState().upsertSession(s),vS(s,t)}async function gC(e){let t=FS(e),n=gp(aS(await lS().session.share({sessionID:e,directory:t}),`session.share`));return X.getState().upsertSession(n),_S(n,t),n}async function _C(e){let t=FS(e),n=gp(aS(await lS().session.unshare({sessionID:e,directory:t}),`session.unshare`));return X.getState().upsertSession(n),_S(n,t),n}function vC(e){let t=Xx,n=e??Zx();if(!t||!n)return{store:e?dS(e):uS(),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 yC(){return{identity:u(),generation:f()}}function bC(e,t){return e.isCurrent()&&u()===t.identity&&f()===t.generation}function xC(e,t){if(!bC(e,t))throw Error(`Send target changed before transport dispatch`)}function SC(e){if(!$x||!eS)throw new SS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??yS()??null,n=vC(t),r=yC();xC(n,r),e.beforeOptimisticInsert?.(),xC(n,r);let i=e.messageID??he(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),gm(e.sessionId),DC({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 SS?e:new SS(CS(e)??TS(e,!1),e)}}function CC(e){if(!bC(e.capture,e.transport)||!eS)return;eS({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 wC(e){CC(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function TC(e){if(!$x||!eS)throw new SS(`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 kS(),xC(n,r),s=!0,await AS(e.send(i)),!bC(n,r))throw new SS(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=CS(c)??TS(c,s),u=c instanceof SS?c:new SS(l,c,i);if(!bC(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await kC(a,i,o):null;if(d&&bC(n,r)){AC(n.store,a,i,d,{directory:o??void 0}),tS?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||CC(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function EC(e){await TC({ticket:e.ticket??SC({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 DC(e){if(!$x)return!1;let t=e.directory??yS(),n=t?dS(t):uS(),r=t??yS()??``;if(PC(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let i=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:he(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:he(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)i.push({id:he(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let a=Date.now(),o={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:a,completed:0}},s=cy(()=>mS(e.sessionId,t).data);$x({sessionID:e.sessionId,directory:t,message:o,parts:i});let c=cy(()=>mS(e.sessionId,t).data);try{s&&c&&ly({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:u(),generation:f(),before:s,after:c})}catch{}let l=n.getState();return n.setState({session_status:{...l.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...l.session_status_observed_at,[e.sessionId]:a}}),!0}function OC(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function kC(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??Ax,c=r?.retryDelayMs??jx;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!OC(r?.isCurrent)||a>0&&(await nS(c),i?.signal.aborted||!OC(r?.isCurrent)))return null;try{let a=await lS().session.messages({sessionID:e,directory:n??void 0,limit:Sh(),...i?{signal:i.signal}:{}});if(!OC(r?.isCurrent))return null;let o=(iS(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 AC(e,t,n,r,i){if(!r.length)return;let a=i?.directory??FS(t)??Zx(),o=G(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:vp(e.info),parts:e.parts??[]})),skipPartTypes:Mx,merge:i?.gapFillOnly===!0?sc:lc({purpose:`recovery`})};Mu(o,s)||W(a,e).apply(o,s)}var jC=2e3,MC={attempts:12,retryDelayMs:500},NC={presenceGraceMs:jC,recovery:{...MC}};function PC(e,t,n,r){let i=r??FS(t)??Zx()??``,a=U()??W(i,e),o=G(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function FC(e,t,n,r){let i=r?.directory??FS(t)??Zx()??``;if(PC(e,t,n,i))return Promise.resolve(!0);if(!OC(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=U()??W(i,e),f=G(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!OC(r?.isCurrent)){l(!1);return}PC(e,t,n,i)&&l(!0)}),PC(e,t,n,i)&&l(!0)})}async function IC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await FC(t,n,r,{timeoutMs:e.graceMs??NC.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!OC(a))return`cancelled`;let o=await kC(n,r,i,{...NC.recovery,isCurrent:a});return o?OC(a)?(AC(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:OC(a)?`missing`:`cancelled`}async function LC(e){let{store:t,directory:n}=fS(e),r=n?{state:`bound`,transportIdentity:u(),directory:n,sessionID:e}:null,i=r?$.getState().beginQueueAbortBlock(r):null;try{if(aS(await lS().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&i&&$.getState().clearQueueAbortBlock(r,i),nt(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>OH);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function RC(e,t,n){await kS();let r=GS(`permission`,e,t)||FS(e)||yS();if(aS(await YS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function zC(e,t,n,r){await kS();let i=r||GS(`question`,e,t)||FS(e)||yS();try{let r=n.length===0?[]:Array.isArray(n[0])?n:[n];if(aS(await YS(`question`,e,t).question.reply({requestID:t,answers:r,...i?{directory:i}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw qS(n)&&JS(e,t),n}}async function BC(e,t,n){await kS();let r=n||GS(`question`,e,t)||FS(e)||yS();try{if(aS(await YS(`question`,e,t).question.reject({requestID:t,...r?{directory:r}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw qS(n)&&JS(e,t),n}}async function VC(e){if(!e)return!1;let t=Xx;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=am(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)JS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await BC(e,t)}catch(e){if(qS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function HC(e,t,n){let r=typeof n==`string`?n:n?.directory,i=typeof n==`string`?void 0:n?.draftKey,a=typeof n==`string`||n?.restorePrimaryInput!==!1,o=i!==null&&(i!==void 0||a);return sx(e,r??(()=>{try{return fS(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:a,directory:s}=fS(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let c=a.getState().session_status[e];if(c&&c.type!==`idle`){try{await lS().session.abort({sessionID:e,directory:s})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let l=hS(e,s).find(e=>e.id===t),d=hS(e,s).find(e=>e.id===t)??l;if(!d||d.role!==`user`)throw Error(`The selected user message is unavailable`);let{repository:f,directory:p}=pS(e,s),m=[...f.getParts(G(p,e),t)],h=i===void 0?o?ge({transportIdentity:u()},e):null:i,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await US({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await Fm(m,{sessionTitles:zS(),directory:s})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=a.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),C={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},C.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(a.setState(C),h){let t=Br.getState(),r=await Bm({key:h,expectedRevision:t.getDraft(h)?.revision??`absent`,payload:g,runtime:t.captureDraftRuntime()});if(!n()){let t=[...a.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),a.setState({session:t}),r.status===`committed`&&r.current&&r.previous&&r.result?.record?.revision!==void 0&&await Hm({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...a.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),a.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await B.revertSession(e,t,void 0,s);if(!n()){let t=[...a.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),a.setState({session:t}),h&&v&&_!==void 0&&await Hm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}let i=[...a.getState().session],o=i.findIndex(t=>t.id===e);return o>=0&&(i[o]=r,a.setState({session:i})),s&&fx.requestGitRefresh({directory:s}),g}catch(t){let r=[...a.getState().session],i=r.findIndex(t=>t.id===e);throw i>=0&&(r[i]={...r[i],revert:b}),n()?(a.setState({session:r}),h&&v&&_!==void 0&&await Hm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(a.setState({session:r}),h&&v&&_!==void 0&&await Hm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function UC(e,t,n,r){let i=r??FS(t)??Zx(),a=G(i,t),o=cy(()=>mS(t,i).data),s=[...ju(t)];s.some(e=>e.directory===i&&e.sessionID===t)||s.push(a);let c=!1;for(let e of s)Mu(e,{type:`remove-message`,messageID:n})!=null&&(c=!0);c||W(i,e).apply(a,{type:`remove-message`,messageID:n});let l=cy(()=>mS(t,i).data);try{o&&l&&ly({trigger:`user-delete`,sessionID:t,directory:i,transport:u(),generation:f(),before:o,after:l})}catch{}}async function WC(e,t,n,r){let i=n?.info,a=n?.parts,o=r?.directory,s;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);s=fS(e,o).directory}else{s=fS(e,o).directory;let{data:n}=mS(e,s),r=nd(n),c=r.findIndex(e=>e.id===t),l=c>=0?r[c]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);i=l,a=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!i||n&&a===void 0)throw Error(`The selected user message is unavailable`);let c=r?.draftKey??ge({transportIdentity:u()},e),{commit:l}=await WS({key:c,parts:await US({directory:s,sessionID:e,messageID:t,parts:a??[]}),directory:s});if(l.status!==`committed`||!l.current)throw Error(`composer-restoration-commit-${l.status}`);let d=l.result?.record?.revision,f=l.previous;return d===void 0||!f?{rollback:async()=>({status:`skipped`})}:{rollback:async()=>({status:(await Hm({key:c,restoredRevision:d,previous:f})).status})}}function GC(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 KC(e,t){let n=t?.directory,{store:r,directory:i}=fS(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await lS().session.abort({sessionID:e,directory:i})}catch{}}async function qC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=fS(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 JC(e,t,n){let r=n?.directory,i=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:a,directory:o}=fS(e,r),s=cy(()=>mS(e,r).data);try{await KC(e,{directory:r}),await qC(e,{directory:r});let n=new Set((await YC(e,r)).map(e=>e.id)),s=GC(t,hS(e,r),n,{preserveMessageId:i});for(let t of[...s].reverse())await B.deleteSessionMessage(e,t.id,o),UC(a,e,t.id,o)}finally{try{let t=cy(()=>mS(e,r).data);s&&t&&ly({trigger:`user-edit`,sessionID:e,directory:o,transport:u(),generation:f(),before:s,after:t})}catch{}}}async function YC(e,t){let{directory:n}=fS(e,t);return(iS(await lS().session.messages({sessionID:e,directory:n,limit:xh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>vp(e.info))}async function XC(e,t){let{store:n,directory:r}=fS(e,t),i=cy(()=>mS(e,t).data),a=(iS(await lS().session.messages({sessionID:e,directory:r,limit:xh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(a.length===0){try{let n=cy(()=>mS(e,t).data);i&&n&&ly({trigger:`materialize`,sessionID:e,directory:r,transport:u(),generation:f(),purpose:`refetch`,before:i,after:n})}catch{}return[]}let o=a.map(e=>({info:vp(e.info),parts:e.parts??[]})),s=G(r??Zx(),e);Mu(s,{type:`materialize-snapshots`,records:o,skipPartTypes:Mx})||W(r??Zx(),n).apply(s,{type:`materialize-snapshots`,records:o,skipPartTypes:Mx});try{let n=cy(()=>mS(e,t).data);i&&n&&ly({trigger:`materialize`,sessionID:e,directory:r,transport:u(),generation:f(),purpose:`refetch`,before:i,after:n})}catch{}return o.map(e=>e.info)}async function ZC(e,t){return sx(e,t??(()=>{try{return fS(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=fS(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=gS(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await lS().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await lS().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=aS(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<Nx;r+=1){if(r>0&&(await nS(Px),!n())||(await XC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(gS(e,i)>o)return}if(gS(e,i)<=o){let n=i??Zx(),a=U()??W(n,r),o=G(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await XC(e,t)}})}async function QC(e,t,n,r){let i=m(),{store:a,directory:o}=fS(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await PS(e,a,o);Pd(e,o);let c=a.getState(),l=c.session_status[e],u=hS(e,o);l?.type,u.length;let d=Kx(n,u,l);if(!n&&Gx(l,u)&&Ux(u)===-1&&(await XC(e),c=a.getState(),l=c.session_status[e],u=hS(e,o),d=Kx(void 0,u,l)),!n&&Gx(l,u)&&Ux(u)===-1)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:c.session_status[e]?.type??`unknown`,messageCount:gS(e,o)}),Error(`Fork source user message is unavailable`);c.session_status[e]?.type;let{repository:f,data:p}=mS(e,o),h=(n?p.messagesByID[n]??u.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...f.getParts(G(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!um(e)).map(e=>e.text||e.content||``).join(`
402
402
  `).trim();let v=g.filter(e=>e.type===`file`&&!um(e));Fx={operationId:t,runtimeKey:i,directory:o,sourceSessionID:e,expectedTargetTitle:zx(s.title)},await Bx(t,`copying`);let y;try{if(y=await B.forkSession(e,d,o),y.id,m()!==i)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),Fx?.operationId===t&&(Fx=null),!1;let n=[...a.getState().session],r=bs.search(n,y.id,e=>e.id);r.found||(n.splice(r.index,0,y),a.setState({session:n})),Vx(t,y.id);let s=$.getState().currentSessionId;(s===e||s===y.id)&&$.getState().setCurrentSession(y.id,o,{skipMessageFetch:!0}),await Bx(t,`opening`);try{y=await qx(y,o)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw Fx?.operationId===t&&(Fx=null),e}try{let e=G(o,y.id),r=U();r&&typeof r.destructiveReset==`function`?await r.destructiveReset(e):Mu(e,{type:`reset`}),await Bx(t,`loading`),y.id,$.getState().currentSessionId,y.id;let i=U()??W(o,a),s=G(o,y.id),c=i.getRequestState?.(s);(!(i.hasSession?.(s)??!1)||c?.status===`error`)&&await ew(y.id,o);let l=hS(y.id,o).at(-1)?.id;l&&Ix.set(`${m()}:${o}:${y.id}`,{messageID:l,expiresAt:Date.now()+Lx});let u=$.getState().currentSessionId===y.id;u&&h&&_&&Br.setState({pendingInputText:_,pendingInputMode:`replace`}),u&&h&&n&&RS(v)}finally{Fx?.operationId===t&&(Fx=null)}return y.id,!0}var $C=new Map;async function ew(e,t){let n=t??yS();if(!n)return;let r=m(),i=bh(),a=`${r}:${n}:${e}:${i}`;if(!Yx||!Xx){Qx.set(a,{sessionID:e,directory:n});return}let o=$C.get(a);if(o)return o;let s=tw(e,n,r,i).finally(()=>{$C.get(a)===s&&$C.delete(a)});return $C.set(a,s),s}async function tw(e,t,n,r){lS();let i=dS(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=U()??W(t,i),l=G(t,e),u=c.getTranscript(l),d=c.getPagination(l),f=c.getRequestState?.(l),p=e=>e.role===`user`||e.clientRole===`user`,m=u.messageOrder.map(e=>u.messagesByID[e]).filter(e=>!!e),h=m.some(p),g=d.boundary,_=g.kind===`has-more`||g.kind===`exhausted`,v=(c.hasSession?.(l)??m.length>0)&&(h||g.kind===`exhausted`)&&_&&f?.status!==`error`,y=()=>$.getState().currentSessionId!==e;if(v){if(ah(t,e)){Ox({directory:t,sessionID:e,store:i,transcript:u});return}if(U()){try{await Pu(t,e)}catch{return}if(y())return;Ox({directory:t,sessionID:e,store:i,isStale:y}),await Gy({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}Ox({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await nx({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:Mx}),b=n.records.length,oh(t,e)}catch{return}y()||(Ox({directory:t,sessionID:e,store:i,isStale:y}),await Gy({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var nw=18e4,rw=400,iw=300,aw=15,ow=`FINAL_REVIEW_STATUS: no_remaining_findings`,sw=ow.toLowerCase(),cw=new Set,lw=new Set,uw=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},dw=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},fw=e=>{let t=e.role;return typeof t==`string`?t:``},pw=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},mw=(e,t)=>Gd(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`}),hw=(e,t,n,r=0,i)=>{let a=Wd(e,t),o=new Set;for(let e of a)mw(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(fw(s)!==`assistant`||!uw(s)||dw(s)<r-1e3)continue;let c=pw(s);if(!Cw(s,i)||c&&o.has(c))continue;let l=Wp(Gd(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},gw=(e,t)=>Kd(e,t)?.type===`idle`,_w=e=>e===m(),vw=e=>{em.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},yw=e=>{if(e&&!_w(e))throw Error(`Auto-review stopped because the runtime changed.`)},bw=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),xw=e=>e.trim().split(`
403
403
  `).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===sw,Sw=e=>{let t=e.trimEnd().split(`
@@ -410,4 +410,4 @@ Use the results below as source material. Do not mention that the inputs were hi
410
410
 
411
411
  [… objective trimmed for the auditor — the full text was delivered in the chat message …]
412
412
 
413
- `,AU=async e=>{if(e.length<=5e3)return e;let t=await hU(e);if(t)return t.slice(0,_U);let n=Math.max(0,Math.floor((_U-93)/2)),r=_t.getState().dictionary;return hE.error(vt(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${kU}${e.slice(-n)}`};async function jU(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await AU(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await EU(e,a),c=Date.now();await TU(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:wU(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function MU(e,t){await TU(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function NU(e,t,n){n===`paused`&&(iU(e),LC(e)),await TU(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 PU(e,t){let n=!1;await TU(e,t,e=>(n=e?.status===`active`,null)),DU(e),n&&(iU(e),LC(e))}var FU=`<system-reminder>`,IU=`</system-reminder>`,LU=e=>{let t=e.trim();return t?t.startsWith(FU)&&t.endsWith(IU)?t:`${FU}\n${t}\n${IU}`:``},RU=(e,t=m())=>`${t}\n${e}`,zU=(e,t)=>{let n=BU.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(RU(e))??n.sessionMemoryState.get(e)},BU=De()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??RU(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}})})),VU=De((e,t)=>({attachments:new Map,setAttachment:(t,n)=>e(e=>{let r=new Map(e.attachments);return r.set(t,n),{attachments:r}}),getAttachment:e=>t().attachments.get(e),clearAttachment:t=>e(e=>{let n=new Map(e.attachments);return n.delete(t),{attachments:n}})})),HU=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function UU(e,t){if(e){if(!e.degraded&&e.cwd)return HU(e.cwd);if(e.worktreeRoot)return HU(e.worktreeRoot);if(e.cwd)return HU(e.cwd)}return t?HU(t):null}function WU(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function GU(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 KU(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?HU(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=HU(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 qU=`openchamber.session-switch.start`,JU=`openchamber.session-switch.highlight-painted`,YU=`openchamber.session-switch.content-committed`,XU=`data-openchamber-session-switch-highlight-ms`,ZU=`data-openchamber-session-switch-content-ms`,QU=`openchamber.session-switch.highlight-latency`,$U=`openchamber.session-switch.content-latency`,eW=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,tW=()=>eW()&&performance.getEntriesByName(qU,`mark`).length>0,nW=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},rW=(e=!1)=>{eW()&&(!e&&performance.getEntriesByName(qU,`mark`).length>0&&performance.getEntriesByName(YU,`mark`).length===0||(performance.clearMarks(qU),performance.clearMarks(JU),performance.clearMarks(YU),performance.clearMeasures(QU),performance.clearMeasures($U),typeof document<`u`&&(document.documentElement.removeAttribute(XU),document.documentElement.removeAttribute(ZU)),performance.mark(qU)))},iW=()=>{if(!tW())return;performance.mark(JU),performance.measure(QU,qU,JU);let e=performance.getEntriesByName(QU,`measure`).at(-1);e&&nW(XU,e.duration)},aW=()=>{if(!tW())return;performance.mark(YU),performance.measure($U,qU,YU);let e=performance.getEntriesByName($U,`measure`).at(-1);e&&nW(ZU,e.duration)},oW={revision:0,sessionId:null},sW=new Set,cW=e=>{oW={revision:oW.revision+1,sessionId:e};for(let e of sW)e(oW);return oW},lW=()=>oW,uW=e=>(sW.add(e),()=>sW.delete(e)),dW=6e3;function fW(e){let t=e.parts?e.parts.map(e=>({...e})):[];if(e.parts)return{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t};e.text!==void 0&&t.push({id:he(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:he(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:he(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:he(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:he(`prt`),type:`agent`,name:e.agentMentionName}),{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t}}function pW(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function mW(e,t){if(!e)return;let n=pW(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 hW(e){let t=e.directory??void 0,n=_W(e.sessionId,e.onSendConfirmed),r=e.content;if(e.inputMode===`shell`){let r=e.messageID??he(`msg`);return B.shellSession({sessionId:e.sessionId,directory:t,agent:e.agent??``,model:{providerID:e.providerID,modelID:e.modelID},command:e.content}).then(()=>{n(r)})}let i=ye(e.content);if(i){let a=i.commandName.toLowerCase(),o=i.argumentsText,s=t??Ne.getState().currentDirectory??null,c=u(),l=zi(s,c),d=io(s,c),f=R.getQueryState(l.queryKey),p=R.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(Vi(s,c)):R.fetchQuery({...l,staleTime:1/0}),h?Promise.resolve(oo(R,s,c)):R.fetchQuery({...d,staleTime:1/0})]);if(u()!==c)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===a)?void 0:g.find(e=>e.name.toLowerCase()===a);if(v?.isBuiltIn===!1)r=`[command:${v.reference??v.name}]${o?` ${o}`:``}`;else if(v)return EC({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>B.sendCommand({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,command:v.name,arguments:o,agent:e.agent,variant:e.variant,files:e.files,messageId:n,directory:t}).then(()=>{})})}return EC({sessionId:e.sessionId,content:r,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.optimisticParts,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>B.sendMessage({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,text:r,agent:e.agent,agentMentions:e.agentMentionName?[{name:e.agentMentionName}]:void 0,variant:e.variant,files:e.files,additionalParts:e.additionalParts,delivery:e.delivery,messageId:n,directory:t}).then(()=>{})})}function gW(e,t){_(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function _W(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{gW(e,r)}}}}var vW=e=>{let t=e;return L(t.directory??null)??L(t.project?.worktree??null)},yW=qe(),bW=`oc.chatInput.lastDraftTarget`,xW=()=>{try{let e=yW.getItem(bW);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:L(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},SW=e=>{try{yW.setItem(bW,JSON.stringify(e))}catch{}},CW=ls,wW=e=>{if(e)return VU.getState().getAttachment(e)},TW=(e,t,n)=>{if(!e)return null;let r=UU(wW(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return L(i);if(n?.includeRuntimeMemory!==!1){let t=jW.get(MW());if(t?.sessionId===e&&t.directory)return L(t.directory)}let a=Vd().find(t=>t.id===e);return a?vW(a):null},EW=e=>{let t=Vd().find(t=>t.id===e);if(t)return t;let n=X.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},DW=async(e,t)=>{await $f.getState().activateDirectory(L(e),t)},OW={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},kW=new Map,AW=0,jW=new Map,MW=e=>(e??m()).trim()||`default`,NW=e=>({...e}),PW=(e,t)=>{let n=jW.get(e);jW.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?NW(n.draft):{...OW},...t})},FW=(e,t)=>{let n=Fi.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=ls(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},IW=async(e,t)=>{if(!e)return;let n=FW(e,t);n&&await Gk(n)&&await mk(e)},LW=(e,t)=>{let n=Fi.getState(),r=ls(n.projects,t,e);r&&n.moveProjectToTop(r.id)},RW=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,zW=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,BW=(e,t)=>zW(e,t)&&RW(Br.getState().captureDraftRuntime(),t.runtime);async function VW(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?fW({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return PW(MW(),{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 HW(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return PW(MW(),{draft:n}),{newSessionDraft:n}})}async function UW(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=MW(),t=s.draftID,n=o,PW(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=Br.getState().captureDraftRuntime(),o=se(a,t),s=Br.getState().getDraft(o);return{token:n,draftID:t,draft:NW(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function WW(e){$.setState(t=>{let n=t.newSessionDraft;if(BW(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=jW.get(e.runtimeMemoryKey);return r&&zW(r.draft,e)&&PW(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=jW.get(e.runtimeMemoryKey);t&&zW(t.draft,e)&&PW(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function GW(e){let t=jW.get(e.runtimeMemoryKey);t&&zW(t.draft,e)&&PW(e.runtimeMemoryKey,{draft:{...OW}})}async function KW(e,t,n){if(!e.source)return null;let r;try{r=await Br.getState().finalizeDraftOwnership({source:e.source.key,destination:ge(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 qW(e,t){let n=t??e.directory??null;n&&Pd(e.id,n),X.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function JW(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=L(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!BW(l,r);qW(e,c);let f=$f.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&OO.getState().addSessionToFolder(t,a,e.id)}return d||(SW({projectId:o??null,directory:c}),DW(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),as.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(as.getState().saveSessionAgentSelection(e.id,p),as.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),as.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),LW(c,$.getState().availableWorktreesByProject),u&&nt(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>zM);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&&GW(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function YW(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await RO(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await IW(t,n);let r=t??B.getDirectory();return{directory:L(r),projectId:n}}async function XW(e,t){let n=await UW(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 YW(r),o=a??B.getDirectory(),s=await XS(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&DC({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 JW(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return WW(n),null}}async function ZW(e){let t=await XW(e);return t?(await KW(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var QW=2,$W=300;async function eG(e){let{useI18nStore:t,formatMessage:n}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CIwMPVXR.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 tG(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=$f.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??he(`msg`),h=fW({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 UW(h);if(!g)throw await eG(`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 YW(_),f=await B.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=b()?.conversations;if(!v?.createWithPrompt)throw await eG(`chat.chatInput.toast.messageSendFailed`);let y=d??B.getDirectory()??``,x=dS(y,{bootstrap:!1}),S=()=>RW(Br.getState().captureDraftRuntime(),g.runtime),C;for(let e=0;e<=QW;e++){e>0&&await new Promise(e=>setTimeout(e,$W));try{if(C=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}),!C||C.ok||C.phase!==`unavailable`||(C=void 0,e===QW))break}catch{if(e===QW)break}}if(!C)throw WW(g),Br.getState().setPendingInputText(t,`replace`),await eG(`chat.chatInput.toast.messageSendFailed`);if(C.ok){let e=C.session,t=d??e.directory??null,i=t??y;qW(e,t);let a=i===y?x:dS(i,{bootstrap:!1});mW(e.id,h);let s=await JW(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 KW(g,e.id,`consume`),gW(e.id,m),s.selected&&gm(e.id),IC({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:S}).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(!C.ok){let e=C.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw WW(g),Br.getState().setPendingInputText(t,`replace`),await eG(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=C,i=e.session,a=d??i.directory??null,s=await JW(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 kC(i.id,m,a,{isCurrent:S});if(e&&S()){await KW(g,i.id,`consume`),gW(i.id,m),s.selected&&gm(i.id),AC(dS(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await KW(g,i.id,`preserve`),Br.getState().setPendingInputText(t,`replace`),await eG(`chat.chatInput.toast.sendStatusUnknown`)}throw await KW(g,i.id,`preserve`),Br.getState().setPendingInputText(t,`replace`),await eG(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw WW(g),e}}var nG=`oc.worktreeMap`,rG=()=>{try{let e=qe().getItem(nG);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}},iG=e=>{try{qe().setItem(nG,e)}catch{}},aG=e=>{let t=[];for(let n of e.values())t.push(...n);return t},oG=rG(),$=De()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...OW},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:aG(oG),availableWorktreesByProject:oG,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,pendingChangesBarDismissed:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map,clearRetainedPendingUserMessages:(t,n)=>{!t||n.length===0||e(e=>{let r=e.retainedPendingUserMessages.get(t);if(!r?.length)return e;let i=new Set(n),a=r.filter(e=>!i.has(e.info.id));if(a.length===r.length)return e;let o=new Map(e.retainedPendingUserMessages);return a.length===0?o.delete(t):o.set(t,a),{retainedPendingUserMessages:o}})},clearStagedMessageEdit:t=>{e(e=>!e.stagedMessageEdit||t&&e.stagedMessageEdit.sessionId!==t?e:{stagedMessageEdit:null})},beginMessageEditCommit:(t,n)=>{e({messageEditCommitting:{sessionId:t,messageId:n}})},endMessageEditCommit:(t,n)=>{e(e=>{let r=e.messageEditCommitting;return!r||r.sessionId!==t||r.messageId!==n?e:{messageEditCommitting:null}})},markMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)===n)return e;let r=new Map(e.pendingSendMessageIDs);return r.set(t,n),{pendingSendMessageIDs:r}})},clearMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)!==n)return e;let r=new Map(e.pendingSendMessageIDs);return r.delete(t),{pendingSendMessageIDs:r}})},setCurrentSession:(n,r,i)=>{cW(n),v(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(rW(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Br.getState().setActiveAttachmentDraft(n?ge({transportIdentity:u()},n):null);let s=MW();kW.set(s,n);let c=Ne.getState(),l=TW(n,e=>t().worktreeMetadata.get(e)),d=B.getDirectory()??c.currentDirectory??null,f=(r?L(r):null)??l??d,p=Fi.getState(),m=f?ls(p.projects,t().availableWorktreesByProject,f):null;e({currentSessionId:n,currentSessionDirectory:n?f??null:null}),PW(s,{sessionId:n,directory:f??null}),a!==n&&Je.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?f??null:null}),n&&i?.skipMessageFetch!==!0&&ew(n,f);try{f&&c.currentDirectory!==f&&c.setDirectory(f,{showOverlay:!1}),m&&i?.preserveActiveProject!==!0&&p.activeProjectId!==m.id&&p.setActiveProjectIdOnly(m.id),B.setDirectory(f??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!zU(e)?.isStreaming){let t=Wd(e);t.length>0&&BU.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(uA(n),OP(f??``,n))},prepareForRuntimeSwitch:n=>{let r=MW(n),i=Ne.getState().currentDirectory||null,a=t().currentSessionId,o=i?Id(i):null;lN({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),kW.set(r,t().currentSessionId),PW(r,{sessionId:a,directory:i,draft:NW(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=MW(t),r=jW.get(n),i=r?.sessionId??kW.get(n)??null;v(i);let a=r?.draft?NW(r.draft):{...OW},o=r?.directory??null;o&&Ne.getState().setDirectory(o,{showOverlay:!1}),e({currentSessionId:i,currentSessionDirectory:i?o:null,newSessionDraft:i?{...OW}:a,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,sessionAbortFlags:new Map,queueAbortBlocks:new Map,pendingChangesBarDismissed:new Map,retainedPendingUserMessages:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map}),Br.getState().setActiveAttachmentDraft(i?ge({transportIdentity:u()},i):a.open&&a.draftID?se({transportIdentity:u()},a.draftID):null),i?OP(o??B.getDirectory()??``,i):OP(``,``)},openNewSessionDraft:n=>{if(QI.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let i=Fi.getState(),a=i.projects,o=t().availableWorktreesByProject,s=L(t().currentSessionDirectory??null),c=L(Ne.getState().currentDirectory??null),l=xW(),d=n?.directoryOverride===void 0?null:L(n.directoryOverride),f=CW(a,o,d),p=n?.ensureProjectForDirectory&&d&&!f?i.addProject(d):null;p&&(i=Fi.getState());let m=i.projects,h=i.getActiveProject(),g=n?.selectedProjectId?m.find(e=>e.id===n.selectedProjectId)??null:null,_=h||(i.activeProjectId?m.find(e=>e.id===i.activeProjectId)??null:m[0]??null),y=l?.projectId?m.find(e=>e.id===l.projectId)??null:null,b=CW(m,o,l?.directory??null),x=CW(m,o,s),S=CW(m,o,c),C=g||(d===null?x||(c?S:b??y??_):p??f),w=d===null?g?L(g.path??null):s||c||(l?.directory?l.directory:L(C?.path??null)):d;SW({projectId:C?.id??null,directory:w}),C&&i.activeProjectId!==C.id&&i.setActiveProjectIdOnly(C.id);let T=Ee({projectId:C?.id??null,directory:w}),E=se({transportIdentity:u()},T),D=Br.getState().getDraft(E),O={open:!0,draftID:T,selectedProjectId:C?.id??null,directoryOverride:w,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:L(n?.bootstrapPendingDirectory??null),preserveDirectoryOverride:n?.preserveDirectoryOverride===!0,parentID:n?.parentID??null,title:n?.title,initialPrompt:n?.initialPrompt,syntheticParts:n?.syntheticParts,targetFolderId:n?.targetFolderId,submissionToken:r.open&&r.draftID===T?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},k=t().currentSessionId,A=t().currentSessionDirectory;e({newSessionDraft:{...O},currentSessionId:null,currentSessionDirectory:null,error:null}),v(null),Je.getState().setActiveMainTab(`chat`),k&&Je.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:k,previousDirectory:A,nextSessionId:null,nextDirectory:null}),PW(MW(),{sessionId:null,directory:w,draft:O}),Br.getState().setActiveAttachmentDraft(E),D||Br.getState().clearAttachedFiles(),n?.initialPrompt&&Br.getState().setPendingInputText(n.initialPrompt);let j=L(C?.path??null)??w,ee=C?L(j):null,te=O.draftID,ne=u();DW(j,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=L($f.getState().activeDirectoryKey);!e.open||e.draftID!==te||u()!==ne||!ee||n!==ee||$f.getState().applyDefaultModelAgentSelection({projectDefaultModel:C?.defaultModel})}),w&&w!==Ne.getState().currentDirectory&&Ne.getState().setDirectory(w)},closeNewSessionDraft:()=>{let t={open:!1,draftID:null,selectedProjectId:null,directoryOverride:null,pendingWorktreeRequestId:null,bootstrapPendingDirectory:null,preserveDirectoryOverride:!1,parentID:null,title:void 0,initialPrompt:void 0,syntheticParts:void 0,targetFolderId:void 0,draftSubmitting:!1,draftEstablishing:!1};e({newSessionDraft:t}),PW(MW(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=L(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}:{}}}}),DW(r,{source:`setNewSessionDraftTarget`}),r&&r!==Ne.getState().currentDirectory&&Ne.getState().setDirectory(r)},setDraftPreserveDirectoryOverride:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,preserveDirectoryOverride:t}}:e),setDraftPermissionAutoAcceptEnabled:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,permissionAutoAcceptEnabled:t}}:e),acknowledgeSessionAbort:t=>e(e=>{let n=new Map(e.sessionAbortFlags),r=n.get(t);return r&&n.set(t,{...r,acknowledged:!0}),{sessionAbortFlags:n}}),beginQueueAbortBlock:(t,n=dW)=>{let r=_e(),i=E(t);return e(e=>{let a=new Map(e.queueAbortBlocks);return a.set(i,{token:r,expiresAt:Date.now()+n,directory:t.directory,sessionID:t.sessionID}),{queueAbortBlocks:a}}),r},clearQueueAbortBlock:(t,n)=>e(e=>{let r=E(t);if(e.queueAbortBlocks.get(r)?.token!==n)return e;let i=new Map(e.queueAbortBlocks);return i.delete(r),{queueAbortBlocks:i}}),pruneQueueAbortBlocks:(t=Date.now())=>e(e=>{let n;for(let[r,i]of e.queueAbortBlocks)i.expiresAt>t||(n||=new Map(e.queueAbortBlocks),n.delete(r));return n?{queueAbortBlocks:n}:e}),releaseQueueAbortBlocksForServerIdle:(t,n)=>e(e=>{let r,i=Date.now();for(let[a,o]of e.queueAbortBlocks)o.directory===t&&o.sessionID===n&&(o.expiresAt<=i||(r||=new Map(e.queueAbortBlocks),r.delete(a)));return r?{queueAbortBlocks:r}:e}),clearAbortPrompt:()=>e({abortPromptSessionId:null,abortPromptExpiresAt:null}),armAbortPrompt:(n=5e3)=>{let{currentSessionId:r}=t();if(!r)return null;let i=Date.now()+n;return e({abortPromptSessionId:r,abortPromptExpiresAt:i}),i},clearError:()=>e({error:null}),markSessionAsOpenChamberCreated:t=>e(e=>{let n=new Set(e.webUICreatedSessions);return n.add(t),{webUICreatedSessions:n}}),isOpenChamberCreatedSession:e=>t().webUICreatedSessions.has(e),getContextUsage:(e,n)=>{if(t().newSessionDraft?.open)return null;let r=t().currentSessionId;if(!r)return null;let i=Wd(r);if(i.length===0)return null;let a=rA(i,e=>Gd(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($k(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?VU.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}):VU.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=L(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),DW(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Ne.getState().currentDirectory&&Ne.getState().setDirectory(n)},resolvePendingDraftWorktreeTarget:(t,n,r)=>e(e=>!e.newSessionDraft?.open||e.newSessionDraft.pendingWorktreeRequestId!==t?e:{newSessionDraft:{...e.newSessionDraft,selectedProjectId:r?.projectId??e.newSessionDraft.selectedProjectId??null,directoryOverride:L(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:L(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:L(t)}}:e),setPendingDraftWorktreeRequest:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,pendingWorktreeRequestId:t}}:e),getWorktreeMetadata:e=>t().worktreeMetadata.get(e),dismissPendingChangesBar:(n,r)=>{let i=new Map(t().pendingChangesBarDismissed);r===null?i.delete(n):i.set(n,r),e({pendingChangesBarDismissed:i})},sendMessage:async(n,r,i,a,o,s,c,l,u,d)=>{let f=t().stagedMessageEdit,p=d?.sessionId??t().currentSessionId,m=d?.commitStagedMessageEdit&&f&&f.sessionId===p?f:null,h=d?.sessionId??t().currentSessionId;if(h){let n=new Map(t().pendingChangesBarDismissed);n.delete(h),e({pendingChangesBarDismissed:n})}let g=t().newSessionDraft,_=typeof a==`string`&&a.trim().length>0?a.trim():void 0,v=u!==`shell`&&n.trim().length>0?$I.getState().consume():{armed:!1,objectiveOverride:null},y=v.armed;if(y){let e=Je.getState(),t=LU(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let x=(e,t)=>{if(!y)return;let r=Je.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=v.objectiveOverride?.trim()||n;jU(e,t??void 0,{objective:a,tokenBudget:i},null).catch(e=>{console.warn(`[session-ui-store] failed to set goal from armed send`,e)})};if(!d?.sessionId&&g?.open){if(u!==`shell`&&!n.trimStart().startsWith(`/`)&&!d?.delivery&&b()?.conversations?.createWithPrompt){await tG({content:n,providerID:r,modelID:i,agent:_,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:d?.messageID,onSessionReady:x});return}let e=d?.messageID??g.pendingUserMessage?.info.id??he(`msg`),a=fW({messageID:e,sessionID:`draft:pending`,providerID:r,modelID:i,agent:_,text:n,attachments:o,additionalParts:g.syntheticParts?.length?[...c||[],...g.syntheticParts]:c,agentMentionName:s}),f=await XW({providerID:r,modelID:i,agent:_,variant:l},a);if(!f)throw Error(`Failed to create session`);let{materialized:p,claim:m}=f,h=p.syntheticParts?.length?[...c||[],...p.syntheticParts]:c;gm(p.sessionId);let v=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await hW({sessionId:p.sessionId,directory:p.directory,content:n,providerID:r,modelID:i,agent:p.agent,agentMentionName:s,variant:l,inputMode:u,files:v,delivery:d?.delivery,messageID:e,optimisticParts:a.parts,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:h?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))}),await KW(m,p.sessionId,`consume`)}catch(e){throw await KW(m,p.sessionId,`preserve`),e}LW(p.directory,t().availableWorktreesByProject),x(p.sessionId,p.directory);return}let S=d?.sessionId??t().currentSessionId,C=S?as.getState().getSessionAgentSelection(S):null,w=$f.getState().currentAgentName,T=_||C||w||void 0;if(S&&as.getState().saveSessionModelSelection(S,r,i),S&&T&&(as.getState().saveSessionAgentSelection(S,T),as.getState().saveAgentModelForSession(S,T,r,i),as.getState().saveAgentModelVariantForSession(S,T,r,i,l)),S){let e=BU.getState(),t=zU(S);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(RU(S),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),BU.setState({sessionMemoryState:n})}}let E=S?L(d?.directoryHint)??L(t().getDirectoryForSession(S)):null;S&&!d?.ticket&&gm(S);let D=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(m)try{await JC(m.sessionId,m.messageId,{directory:E??void 0}),t().stagedMessageEdit===m&&e({stagedMessageEdit:null})}catch(e){throw t().endMessageEditCommit(m.sessionId,m.messageId),e}try{await hW({sessionId:S||``,directory:E,content:n,providerID:r,modelID:i,agent:T,agentMentionName:s,variant:l,inputMode:u,files:D,delivery:d?.delivery,messageID:d?.messageID,ticket:d?.ticket,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:c?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))})}finally{m&&t().endMessageEditCommit(m.sessionId,m.messageId)}LW(E,t().availableWorktreesByProject),S&&x(S,E)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await XS(n,r??B.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),PW(MW(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&OO.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}}),PW(MW(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>lC(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await lC(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>fC(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await fC(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await mC(e,t)},requestSessionSmartTitle:async e=>{await hC(e)},shareSession:async e=>gC(e),unshareSession:async e=>_C(e),revertToMessage:async(e,t,n)=>{await HC(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await WC(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Wd(e),r=Bd().find(t=>t.id===e)?.revert?.messageID,i=ws(n,r);if(!i)return;let a=Gd(i.id).find(e=>e.type===`text`),o=a?.text?String(a.text).slice(0,50)+(a.text.length>50?`...`:``):`[No text]`;await t().revertToMessage(e,i.id);let{toast:s}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:c,formatMessage:l}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CIwMPVXR.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:u}=c.getState();s.success(l(u,`chat.revert.toast.undo`,{preview:o}))},handleSlashRedo:async(e,n)=>{if(n?.fullUnrevert){let{unrevertSession:t}=await nt(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>kx);return{unrevertSession:e}},void 0);await t(e);let{toast:n}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:i}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CIwMPVXR.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=Bd().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=Ts(Wd(e),r);if(i){await t().revertToMessage(e,i.id,{skipRedoPush:!0});let{toast:n}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:a}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CIwMPVXR.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 ZC(e);let{toast:a}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:o,formatMessage:s}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CIwMPVXR.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=EW(n),s=++AW;try{let a=i?.directory??t().getDirectoryForSession(n)??B.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:s,sourceSessionId:n,targetSessionId:null,directory:a,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await QC(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));c.success(`Forked from ${o?.title??`session`}`)}catch(e){console.error(`[session-fork] forkFromMessage failed`,{operationId:s,sessionId:n,messageId:r,error:e});let{toast:t}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===s?{forkTransition:null}:e)}},forkCurrentSession:async n=>{let r=t().forkTransition;if(r?.operationId,r?.stage,r){console.warn(`[session-fork] forkCurrentSession skipped because a transition is active`,{sessionId:n,activeOperationId:r.operationId,activeSourceSessionId:r.sourceSessionId,activeStage:r.stage});return}let i=EW(n),a=++AW;try{let r=t().getDirectoryForSession(n)??B.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:a,sourceSessionId:n,targetSessionId:null,directory:r,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await QC(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));o.success(`Forked from ${i?.title??`session`}`)}catch(e){console.error(`[session-fork] forkCurrentSession failed`,{operationId:a,sessionId:n,error:e});let{toast:t}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===a?{forkTransition:null}:e)}},getSessionsByDirectory:e=>{let t=L(e);return t?Vd().filter(e=>vW(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=TW(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=X.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?hD(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:TW(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Wd(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=>as.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Wd(e);Bd().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=L(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),PW(MW(),{sessionId:n,directory:i}))}}));nN((e,t)=>{$.getState().setCurrentSession(e,t)});var sG=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==sG&&(sG=t,iG(t))}});function cG(e){return e.settingsReturnTo?e.settingsReturnTo:e.activeTab===`settings`?null:{tab:e.activeTab,secondary:e.secondary}}function lG(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function uG(e){return e.length>1?e.slice(0,-1):[]}function dG(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function fG(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 pG={activeTab:`projects`,secondary:null,settingsReturnTo:null},mG=0,hG=null,gG=e=>{let t=++mG;return hG={generation:t,sessionId:e.sessionId,directory:L(e.directory)??null},t},_G=e=>{let t=hG;return t&&t.generation===mG&&t.sessionId===e.sessionId&&t.directory===(L(e.directory)??null)?(hG=null,`internal`):(hG=null,`external`)},vG=()=>{mG+=1,hG=null},yG=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&L(n)===L(e.directory)?vG():gG(e),t.setCurrentSession(e.sessionId,e.directory??null,{preserveActiveProject:e.preserveActiveProject})},bG=De((e,t)=>({...pG,setActiveTab:t=>{vG(),e({activeTab:t,secondary:null,settingsReturnTo:null})},openSettingsFromCurrent:()=>{vG(),e(e=>({activeTab:`settings`,secondary:null,settingsReturnTo:cG(e)}))},restoreSettingsReturnTo:()=>{let n=t().settingsReturnTo;return n?(vG(),e({activeTab:n.tab,secondary:n.secondary,settingsReturnTo:null}),n):null},openSession:t=>{e({secondary:{kind:`chat`,routes:[SG(t,`root`)]}}),yG(t)},pushSession:t=>{e(e=>{let n=SG(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?lG(e.secondary.routes,n):[n]}}}),yG(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=uG(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=bG.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&yG(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=fG(e.secondary.routes,SG(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:dG(e.secondary.routes,SG(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=>{vG(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{vG(),yt.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{vG(),e({secondary:{kind:`instances`}})},pushAssistantSettings:t=>e(e=>e.secondary?.kind!==`assistant`||e.secondary.settingsAssistantID===t?e:{secondary:{...e.secondary,settingsAssistantID:t}}),popAssistantSettings:()=>e(e=>e.secondary?.kind!==`assistant`||!e.secondary.settingsAssistantID?e:{secondary:{kind:`assistant`}}),closeSecondary:()=>{vG(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{vG(),e({...pG})}})),xG=1,SG=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${xG++}`,sessionId:e.sessionId,directory:e.directory??null}),CG=e=>!Ue()||Ge()?!1:(bG.getState().pushSession(e),!0);export{vV as $,Ao as $a,gp as $i,ek as $n,kS as $r,RI as $t,xU as A,Cs as Aa,n_ as Ai,lj as An,Br as Ao,Aw as Ar,YI as At,RV as B,ls as Ba,Sm as Bi,Uk as Bn,XS as Br,LN as Bt,LU as C,W as Ca,P_ as Ci,yM as Cn,ei as Co,lE as Cr,uR as Ct,NU as D,fu as Da,S_ as Di,Sj as Dn,Ur as Do,TT as Dr,ZI as Dt,MU as E,G as Ea,w_ as Ei,bj as En,Qr as Eo,xT as Er,$I as Et,IH as F,fs as Fa,ah as Fi,dA as Fn,LC as Fr,sF as Ft,jV as G,es as Ga,Wp as Gi,Kk as Gn,hC as Gr,LI as Gt,xH as H,ts as Ha,dm as Hi,Xk as Hn,qS as Hr,iI as Ht,aU as I,_s as Ia,qm as Ii,$k as In,fC as Ir,OP as It,MV as J,Go as Ja,Lp as Ji,ak as Jn,wC as Jr,tI as Jt,NV as K,Yo as Ka,Ip as Ki,Zk as Kn,RC as Kr,NN as Kt,DH as L,us as La,Bm as Li,rA as Ln,SC as Lr,AP as Lt,LH as M,ds as Ma,Og as Mi,tj as Mn,dn as Mo,Bw as Mr,EF as Mt,zH as N,ys as Na,xh as Ni,uA as Nn,un as No,zw as Nr,EI as Nt,_U as O,pu as Oa,r_ as Oi,_j as On,Wr as Oo,ST as Or,JI as Ot,iU as P,ps as Pa,uh as Pi,cA as Pn,an as Po,nC as Pr,yI as Pt,_V as Q,po as Qa,Vp as Qi,pk as Qn,mC as Qr,aI as Qt,vH as R,os as Ra,Im as Ri,Yk as Rn,dC as Rr,kP as Rt,RU as S,Iu as Sa,F_ as Si,bM as Sn,Zr as So,oE as Sr,iR as St,OU as T,Eu as Ta,T_ as Ti,xj as Tn,$r as To,ET as Tr,ML as Tt,AV as U,$o as Ua,um as Ui,Jk as Un,KS as Ur,DF as Ut,tH as V,as as Va,fm as Vi,Gk as Vn,VC as Vr,sI as Vt,bV as W,Zo as Wa,em as Wi,Wk as Wn,BC as Wr,OF as Wt,CV as X,mo as Xa,Up as Xi,ik as Xn,sS as Xr,eI as Xt,xV as Y,qo as Ya,Bp as Yi,ok as Yn,uC as Yr,$F as Yt,wV as Z,fo as Za,Hp as Zi,tk as Zn,pC as Zr,nI as Zt,GU as _,Ru as _a,B_ as _i,eN as _n,Vi as _o,kE as _r,dB as _t,HW as a,Vd as aa,Gy as ai,FF as an,ao,OO as ar,sV as at,zU as b,Lu as ba,V_ as bi,UM as bn,Bi as bo,nE as br,bR as bt,$ as c,Gd as ca,dy as ci,IF as cn,Ka as co,ZD as cr,ZB as ct,uW as d,Ud as da,ly as di,kI as dn,Na as do,qD as dr,IB as dt,cp as ea,Ox as ei,DI as en,jo as eo,mk as er,gV as et,rW as f,nd as fa,ty as fi,OI as fn,Ba as fo,hD as fr,yB as ft,UU as g,Nu as ga,zv as gi,$M as gn,Da as go,PE as gr,lB as gt,KU as h,Pu as ha,_v as hi,AI as hn,Ea as ho,X as hr,hB as ht,VW as i,Hd as ia,nb as ii,MF as in,to as io,QD as ir,tV as it,bU as j,bs as ja,kg as ji,ij as jn,ln as jo,Vw as jr,QI as jt,SU as k,rc as ka,t_ as ki,pj as kn,Hr as ko,$w as kr,XI as kt,cW as l,Bd as la,uy as li,RF as ln,Ga as lo,_D as lr,YB as lt,iW as m,Mu as ma,Fv as mi,oI as mn,Oa as mo,JD as mr,CB as mt,CG as n,kf as na,fx as ni,PI as nn,oo as no,LO as nr,dV as nt,ZW as o,Fd as oa,_y as oi,HF as on,ja as oo,WD as or,oV as ot,aW as p,ud as pa,cy as pi,GF as pn,za as po,KD as pr,pB as pt,kV as q,Jo as qa,Rp as qi,nk as qn,zC as qr,MN as qt,bG as r,$f as ra,$b as ri,jF as rn,so as ro,IO as rr,eV as rt,hW as s,Wd as sa,iy as si,WF as sn,Va as so,GD as sr,qB as st,_G as t,ap as ta,hx as ti,NF as tn,wo as to,FO as tr,hV as tt,lW as u,Pd as ua,sy as ui,BF as un,Wa as uo,XD as ur,$B as ut,WU as v,U as va,z_ as vi,YM as vn,Hi as vo,AE as vr,Zz as vt,PU as w,Fu as wa,C_ as wi,Fj as wn,Xr as wo,UT as wr,dR as wt,BU as x,zu as xa,I_ as xi,RM as xn,Fi as xo,iE as xr,eL as xt,VU as y,Du as ya,W_ as yi,WM as yn,Li as yo,hE as yr,vR as yt,IV as z,ss as za,xm as zi,qk as zn,JC as zr,BN as zt};
413
+ `,AU=async e=>{if(e.length<=5e3)return e;let t=await hU(e);if(t)return t.slice(0,_U);let n=Math.max(0,Math.floor((_U-93)/2)),r=_t.getState().dictionary;return hE.error(vt(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${kU}${e.slice(-n)}`};async function jU(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await AU(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await EU(e,a),c=Date.now();await TU(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:wU(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function MU(e,t){await TU(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function NU(e,t,n){n===`paused`&&(iU(e),LC(e)),await TU(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 PU(e,t){let n=!1;await TU(e,t,e=>(n=e?.status===`active`,null)),DU(e),n&&(iU(e),LC(e))}var FU=`<system-reminder>`,IU=`</system-reminder>`,LU=e=>{let t=e.trim();return t?t.startsWith(FU)&&t.endsWith(IU)?t:`${FU}\n${t}\n${IU}`:``},RU=(e,t=m())=>`${t}\n${e}`,zU=(e,t)=>{let n=BU.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(RU(e))??n.sessionMemoryState.get(e)},BU=De()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??RU(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}})})),VU=De((e,t)=>({attachments:new Map,setAttachment:(t,n)=>e(e=>{let r=new Map(e.attachments);return r.set(t,n),{attachments:r}}),getAttachment:e=>t().attachments.get(e),clearAttachment:t=>e(e=>{let n=new Map(e.attachments);return n.delete(t),{attachments:n}})})),HU=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function UU(e,t){if(e){if(!e.degraded&&e.cwd)return HU(e.cwd);if(e.worktreeRoot)return HU(e.worktreeRoot);if(e.cwd)return HU(e.cwd)}return t?HU(t):null}function WU(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function GU(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 KU(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?HU(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=HU(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 qU=`openchamber.session-switch.start`,JU=`openchamber.session-switch.highlight-painted`,YU=`openchamber.session-switch.content-committed`,XU=`data-openchamber-session-switch-highlight-ms`,ZU=`data-openchamber-session-switch-content-ms`,QU=`openchamber.session-switch.highlight-latency`,$U=`openchamber.session-switch.content-latency`,eW=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,tW=()=>eW()&&performance.getEntriesByName(qU,`mark`).length>0,nW=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},rW=(e=!1)=>{eW()&&(!e&&performance.getEntriesByName(qU,`mark`).length>0&&performance.getEntriesByName(YU,`mark`).length===0||(performance.clearMarks(qU),performance.clearMarks(JU),performance.clearMarks(YU),performance.clearMeasures(QU),performance.clearMeasures($U),typeof document<`u`&&(document.documentElement.removeAttribute(XU),document.documentElement.removeAttribute(ZU)),performance.mark(qU)))},iW=()=>{if(!tW())return;performance.mark(JU),performance.measure(QU,qU,JU);let e=performance.getEntriesByName(QU,`measure`).at(-1);e&&nW(XU,e.duration)},aW=()=>{if(!tW())return;performance.mark(YU),performance.measure($U,qU,YU);let e=performance.getEntriesByName($U,`measure`).at(-1);e&&nW(ZU,e.duration)},oW={revision:0,sessionId:null},sW=new Set,cW=e=>{oW={revision:oW.revision+1,sessionId:e};for(let e of sW)e(oW);return oW},lW=()=>oW,uW=e=>(sW.add(e),()=>sW.delete(e)),dW=6e3;function fW(e){let t=e.parts?e.parts.map(e=>({...e})):[];if(e.parts)return{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t};e.text!==void 0&&t.push({id:he(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:he(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:he(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:he(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:he(`prt`),type:`agent`,name:e.agentMentionName}),{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t}}function pW(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function mW(e,t){if(!e)return;let n=pW(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 hW(e){let t=e.directory??void 0,n=_W(e.sessionId,e.onSendConfirmed),r=e.content;if(e.inputMode===`shell`){let r=e.messageID??he(`msg`);return B.shellSession({sessionId:e.sessionId,directory:t,agent:e.agent??``,model:{providerID:e.providerID,modelID:e.modelID},command:e.content}).then(()=>{n(r)})}let i=ye(e.content);if(i){let a=i.commandName.toLowerCase(),o=i.argumentsText,s=t??Ne.getState().currentDirectory??null,c=u(),l=zi(s,c),d=io(s,c),f=R.getQueryState(l.queryKey),p=R.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(Vi(s,c)):R.fetchQuery({...l,staleTime:1/0}),h?Promise.resolve(oo(R,s,c)):R.fetchQuery({...d,staleTime:1/0})]);if(u()!==c)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===a)?void 0:g.find(e=>e.name.toLowerCase()===a);if(v?.isBuiltIn===!1)r=`[command:${v.reference??v.name}]${o?` ${o}`:``}`;else if(v)return EC({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>B.sendCommand({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,command:v.name,arguments:o,agent:e.agent,variant:e.variant,files:e.files,messageId:n,directory:t}).then(()=>{})})}return EC({sessionId:e.sessionId,content:r,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.optimisticParts,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>B.sendMessage({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,text:r,agent:e.agent,agentMentions:e.agentMentionName?[{name:e.agentMentionName}]:void 0,variant:e.variant,files:e.files,additionalParts:e.additionalParts,delivery:e.delivery,messageId:n,directory:t}).then(()=>{})})}function gW(e,t){_(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function _W(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{gW(e,r)}}}}var vW=e=>{let t=e;return L(t.directory??null)??L(t.project?.worktree??null)},yW=qe(),bW=`oc.chatInput.lastDraftTarget`,xW=()=>{try{let e=yW.getItem(bW);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:L(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},SW=e=>{try{yW.setItem(bW,JSON.stringify(e))}catch{}},CW=ls,wW=e=>{if(e)return VU.getState().getAttachment(e)},TW=(e,t,n)=>{if(!e)return null;let r=UU(wW(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return L(i);if(n?.includeRuntimeMemory!==!1){let t=jW.get(MW());if(t?.sessionId===e&&t.directory)return L(t.directory)}let a=Vd().find(t=>t.id===e);return a?vW(a):null},EW=e=>{let t=Vd().find(t=>t.id===e);if(t)return t;let n=X.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},DW=async(e,t)=>{await $f.getState().activateDirectory(L(e),t)},OW={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},kW=new Map,AW=0,jW=new Map,MW=e=>(e??m()).trim()||`default`,NW=e=>({...e}),PW=(e,t)=>{let n=jW.get(e);jW.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?NW(n.draft):{...OW},...t})},FW=(e,t)=>{let n=Fi.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=ls(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},IW=async(e,t)=>{if(!e)return;let n=FW(e,t);n&&await Gk(n)&&await mk(e)},LW=(e,t)=>{let n=Fi.getState(),r=ls(n.projects,t,e);r&&n.moveProjectToTop(r.id)},RW=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,zW=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,BW=(e,t)=>zW(e,t)&&RW(Br.getState().captureDraftRuntime(),t.runtime);async function VW(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?fW({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return PW(MW(),{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 HW(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return PW(MW(),{draft:n}),{newSessionDraft:n}})}async function UW(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=MW(),t=s.draftID,n=o,PW(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=Br.getState().captureDraftRuntime(),o=se(a,t),s=Br.getState().getDraft(o);return{token:n,draftID:t,draft:NW(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function WW(e){$.setState(t=>{let n=t.newSessionDraft;if(BW(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=jW.get(e.runtimeMemoryKey);return r&&zW(r.draft,e)&&PW(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=jW.get(e.runtimeMemoryKey);t&&zW(t.draft,e)&&PW(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function GW(e){let t=jW.get(e.runtimeMemoryKey);t&&zW(t.draft,e)&&PW(e.runtimeMemoryKey,{draft:{...OW}})}async function KW(e,t,n){if(!e.source)return null;let r;try{r=await Br.getState().finalizeDraftOwnership({source:e.source.key,destination:ge(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 qW(e,t){let n=t??e.directory??null;n&&Pd(e.id,n),X.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function JW(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=L(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!BW(l,r);qW(e,c);let f=$f.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&OO.getState().addSessionToFolder(t,a,e.id)}return d||(SW({projectId:o??null,directory:c}),DW(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),as.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(as.getState().saveSessionAgentSelection(e.id,p),as.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),as.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),LW(c,$.getState().availableWorktreesByProject),u&&nt(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>zM);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&&GW(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function YW(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await RO(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await IW(t,n);let r=t??B.getDirectory();return{directory:L(r),projectId:n}}async function XW(e,t){let n=await UW(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 YW(r),o=a??B.getDirectory(),s=await XS(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&DC({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 JW(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return WW(n),null}}async function ZW(e){let t=await XW(e);return t?(await KW(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var QW=2,$W=300;async function eG(e){let{useI18nStore:t,formatMessage:n}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-B6dImdlY.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 tG(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=$f.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??he(`msg`),h=fW({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 UW(h);if(!g)throw await eG(`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 YW(_),f=await B.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=b()?.conversations;if(!v?.createWithPrompt)throw await eG(`chat.chatInput.toast.messageSendFailed`);let y=d??B.getDirectory()??``,x=dS(y,{bootstrap:!1}),S=()=>RW(Br.getState().captureDraftRuntime(),g.runtime),C;for(let e=0;e<=QW;e++){e>0&&await new Promise(e=>setTimeout(e,$W));try{if(C=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}),!C||C.ok||C.phase!==`unavailable`||(C=void 0,e===QW))break}catch{if(e===QW)break}}if(!C)throw WW(g),Br.getState().setPendingInputText(t,`replace`),await eG(`chat.chatInput.toast.messageSendFailed`);if(C.ok){let e=C.session,t=d??e.directory??null,i=t??y;qW(e,t);let a=i===y?x:dS(i,{bootstrap:!1});mW(e.id,h);let s=await JW(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 KW(g,e.id,`consume`),gW(e.id,m),s.selected&&gm(e.id),IC({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:S}).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(!C.ok){let e=C.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw WW(g),Br.getState().setPendingInputText(t,`replace`),await eG(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=C,i=e.session,a=d??i.directory??null,s=await JW(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 kC(i.id,m,a,{isCurrent:S});if(e&&S()){await KW(g,i.id,`consume`),gW(i.id,m),s.selected&&gm(i.id),AC(dS(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await KW(g,i.id,`preserve`),Br.getState().setPendingInputText(t,`replace`),await eG(`chat.chatInput.toast.sendStatusUnknown`)}throw await KW(g,i.id,`preserve`),Br.getState().setPendingInputText(t,`replace`),await eG(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw WW(g),e}}var nG=`oc.worktreeMap`,rG=()=>{try{let e=qe().getItem(nG);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}},iG=e=>{try{qe().setItem(nG,e)}catch{}},aG=e=>{let t=[];for(let n of e.values())t.push(...n);return t},oG=rG(),$=De()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...OW},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:aG(oG),availableWorktreesByProject:oG,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,pendingChangesBarDismissed:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map,clearRetainedPendingUserMessages:(t,n)=>{!t||n.length===0||e(e=>{let r=e.retainedPendingUserMessages.get(t);if(!r?.length)return e;let i=new Set(n),a=r.filter(e=>!i.has(e.info.id));if(a.length===r.length)return e;let o=new Map(e.retainedPendingUserMessages);return a.length===0?o.delete(t):o.set(t,a),{retainedPendingUserMessages:o}})},clearStagedMessageEdit:t=>{e(e=>!e.stagedMessageEdit||t&&e.stagedMessageEdit.sessionId!==t?e:{stagedMessageEdit:null})},beginMessageEditCommit:(t,n)=>{e({messageEditCommitting:{sessionId:t,messageId:n}})},endMessageEditCommit:(t,n)=>{e(e=>{let r=e.messageEditCommitting;return!r||r.sessionId!==t||r.messageId!==n?e:{messageEditCommitting:null}})},markMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)===n)return e;let r=new Map(e.pendingSendMessageIDs);return r.set(t,n),{pendingSendMessageIDs:r}})},clearMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)!==n)return e;let r=new Map(e.pendingSendMessageIDs);return r.delete(t),{pendingSendMessageIDs:r}})},setCurrentSession:(n,r,i)=>{cW(n),v(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(rW(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Br.getState().setActiveAttachmentDraft(n?ge({transportIdentity:u()},n):null);let s=MW();kW.set(s,n);let c=Ne.getState(),l=TW(n,e=>t().worktreeMetadata.get(e)),d=B.getDirectory()??c.currentDirectory??null,f=(r?L(r):null)??l??d,p=Fi.getState(),m=f?ls(p.projects,t().availableWorktreesByProject,f):null;e({currentSessionId:n,currentSessionDirectory:n?f??null:null}),PW(s,{sessionId:n,directory:f??null}),a!==n&&Je.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?f??null:null}),n&&i?.skipMessageFetch!==!0&&ew(n,f);try{f&&c.currentDirectory!==f&&c.setDirectory(f,{showOverlay:!1}),m&&i?.preserveActiveProject!==!0&&p.activeProjectId!==m.id&&p.setActiveProjectIdOnly(m.id),B.setDirectory(f??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!zU(e)?.isStreaming){let t=Wd(e);t.length>0&&BU.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(uA(n),OP(f??``,n))},prepareForRuntimeSwitch:n=>{let r=MW(n),i=Ne.getState().currentDirectory||null,a=t().currentSessionId,o=i?Id(i):null;lN({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),kW.set(r,t().currentSessionId),PW(r,{sessionId:a,directory:i,draft:NW(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=MW(t),r=jW.get(n),i=r?.sessionId??kW.get(n)??null;v(i);let a=r?.draft?NW(r.draft):{...OW},o=r?.directory??null;o&&Ne.getState().setDirectory(o,{showOverlay:!1}),e({currentSessionId:i,currentSessionDirectory:i?o:null,newSessionDraft:i?{...OW}:a,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,sessionAbortFlags:new Map,queueAbortBlocks:new Map,pendingChangesBarDismissed:new Map,retainedPendingUserMessages:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map}),Br.getState().setActiveAttachmentDraft(i?ge({transportIdentity:u()},i):a.open&&a.draftID?se({transportIdentity:u()},a.draftID):null),i?OP(o??B.getDirectory()??``,i):OP(``,``)},openNewSessionDraft:n=>{if(QI.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let i=Fi.getState(),a=i.projects,o=t().availableWorktreesByProject,s=L(t().currentSessionDirectory??null),c=L(Ne.getState().currentDirectory??null),l=xW(),d=n?.directoryOverride===void 0?null:L(n.directoryOverride),f=CW(a,o,d),p=n?.ensureProjectForDirectory&&d&&!f?i.addProject(d):null;p&&(i=Fi.getState());let m=i.projects,h=i.getActiveProject(),g=n?.selectedProjectId?m.find(e=>e.id===n.selectedProjectId)??null:null,_=h||(i.activeProjectId?m.find(e=>e.id===i.activeProjectId)??null:m[0]??null),y=l?.projectId?m.find(e=>e.id===l.projectId)??null:null,b=CW(m,o,l?.directory??null),x=CW(m,o,s),S=CW(m,o,c),C=g||(d===null?x||(c?S:b??y??_):p??f),w=d===null?g?L(g.path??null):s||c||(l?.directory?l.directory:L(C?.path??null)):d;SW({projectId:C?.id??null,directory:w}),C&&i.activeProjectId!==C.id&&i.setActiveProjectIdOnly(C.id);let T=Ee({projectId:C?.id??null,directory:w}),E=se({transportIdentity:u()},T),D=Br.getState().getDraft(E),O={open:!0,draftID:T,selectedProjectId:C?.id??null,directoryOverride:w,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:L(n?.bootstrapPendingDirectory??null),preserveDirectoryOverride:n?.preserveDirectoryOverride===!0,parentID:n?.parentID??null,title:n?.title,initialPrompt:n?.initialPrompt,syntheticParts:n?.syntheticParts,targetFolderId:n?.targetFolderId,submissionToken:r.open&&r.draftID===T?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},k=t().currentSessionId,A=t().currentSessionDirectory;e({newSessionDraft:{...O},currentSessionId:null,currentSessionDirectory:null,error:null}),v(null),Je.getState().setActiveMainTab(`chat`),k&&Je.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:k,previousDirectory:A,nextSessionId:null,nextDirectory:null}),PW(MW(),{sessionId:null,directory:w,draft:O}),Br.getState().setActiveAttachmentDraft(E),D||Br.getState().clearAttachedFiles(),n?.initialPrompt&&Br.getState().setPendingInputText(n.initialPrompt);let j=L(C?.path??null)??w,ee=C?L(j):null,te=O.draftID,ne=u();DW(j,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=L($f.getState().activeDirectoryKey);!e.open||e.draftID!==te||u()!==ne||!ee||n!==ee||$f.getState().applyDefaultModelAgentSelection({projectDefaultModel:C?.defaultModel})}),w&&w!==Ne.getState().currentDirectory&&Ne.getState().setDirectory(w)},closeNewSessionDraft:()=>{let t={open:!1,draftID:null,selectedProjectId:null,directoryOverride:null,pendingWorktreeRequestId:null,bootstrapPendingDirectory:null,preserveDirectoryOverride:!1,parentID:null,title:void 0,initialPrompt:void 0,syntheticParts:void 0,targetFolderId:void 0,draftSubmitting:!1,draftEstablishing:!1};e({newSessionDraft:t}),PW(MW(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=L(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}:{}}}}),DW(r,{source:`setNewSessionDraftTarget`}),r&&r!==Ne.getState().currentDirectory&&Ne.getState().setDirectory(r)},setDraftPreserveDirectoryOverride:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,preserveDirectoryOverride:t}}:e),setDraftPermissionAutoAcceptEnabled:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,permissionAutoAcceptEnabled:t}}:e),acknowledgeSessionAbort:t=>e(e=>{let n=new Map(e.sessionAbortFlags),r=n.get(t);return r&&n.set(t,{...r,acknowledged:!0}),{sessionAbortFlags:n}}),beginQueueAbortBlock:(t,n=dW)=>{let r=_e(),i=E(t);return e(e=>{let a=new Map(e.queueAbortBlocks);return a.set(i,{token:r,expiresAt:Date.now()+n,directory:t.directory,sessionID:t.sessionID}),{queueAbortBlocks:a}}),r},clearQueueAbortBlock:(t,n)=>e(e=>{let r=E(t);if(e.queueAbortBlocks.get(r)?.token!==n)return e;let i=new Map(e.queueAbortBlocks);return i.delete(r),{queueAbortBlocks:i}}),pruneQueueAbortBlocks:(t=Date.now())=>e(e=>{let n;for(let[r,i]of e.queueAbortBlocks)i.expiresAt>t||(n||=new Map(e.queueAbortBlocks),n.delete(r));return n?{queueAbortBlocks:n}:e}),releaseQueueAbortBlocksForServerIdle:(t,n)=>e(e=>{let r,i=Date.now();for(let[a,o]of e.queueAbortBlocks)o.directory===t&&o.sessionID===n&&(o.expiresAt<=i||(r||=new Map(e.queueAbortBlocks),r.delete(a)));return r?{queueAbortBlocks:r}:e}),clearAbortPrompt:()=>e({abortPromptSessionId:null,abortPromptExpiresAt:null}),armAbortPrompt:(n=5e3)=>{let{currentSessionId:r}=t();if(!r)return null;let i=Date.now()+n;return e({abortPromptSessionId:r,abortPromptExpiresAt:i}),i},clearError:()=>e({error:null}),markSessionAsOpenChamberCreated:t=>e(e=>{let n=new Set(e.webUICreatedSessions);return n.add(t),{webUICreatedSessions:n}}),isOpenChamberCreatedSession:e=>t().webUICreatedSessions.has(e),getContextUsage:(e,n)=>{if(t().newSessionDraft?.open)return null;let r=t().currentSessionId;if(!r)return null;let i=Wd(r);if(i.length===0)return null;let a=rA(i,e=>Gd(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($k(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?VU.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}):VU.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=L(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),DW(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Ne.getState().currentDirectory&&Ne.getState().setDirectory(n)},resolvePendingDraftWorktreeTarget:(t,n,r)=>e(e=>!e.newSessionDraft?.open||e.newSessionDraft.pendingWorktreeRequestId!==t?e:{newSessionDraft:{...e.newSessionDraft,selectedProjectId:r?.projectId??e.newSessionDraft.selectedProjectId??null,directoryOverride:L(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:L(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:L(t)}}:e),setPendingDraftWorktreeRequest:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,pendingWorktreeRequestId:t}}:e),getWorktreeMetadata:e=>t().worktreeMetadata.get(e),dismissPendingChangesBar:(n,r)=>{let i=new Map(t().pendingChangesBarDismissed);r===null?i.delete(n):i.set(n,r),e({pendingChangesBarDismissed:i})},sendMessage:async(n,r,i,a,o,s,c,l,u,d)=>{let f=t().stagedMessageEdit,p=d?.sessionId??t().currentSessionId,m=d?.commitStagedMessageEdit&&f&&f.sessionId===p?f:null,h=d?.sessionId??t().currentSessionId;if(h){let n=new Map(t().pendingChangesBarDismissed);n.delete(h),e({pendingChangesBarDismissed:n})}let g=t().newSessionDraft,_=typeof a==`string`&&a.trim().length>0?a.trim():void 0,v=u!==`shell`&&n.trim().length>0?$I.getState().consume():{armed:!1,objectiveOverride:null},y=v.armed;if(y){let e=Je.getState(),t=LU(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let x=(e,t)=>{if(!y)return;let r=Je.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=v.objectiveOverride?.trim()||n;jU(e,t??void 0,{objective:a,tokenBudget:i},null).catch(e=>{console.warn(`[session-ui-store] failed to set goal from armed send`,e)})};if(!d?.sessionId&&g?.open){if(u!==`shell`&&!n.trimStart().startsWith(`/`)&&!d?.delivery&&b()?.conversations?.createWithPrompt){await tG({content:n,providerID:r,modelID:i,agent:_,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:d?.messageID,onSessionReady:x});return}let e=d?.messageID??g.pendingUserMessage?.info.id??he(`msg`),a=fW({messageID:e,sessionID:`draft:pending`,providerID:r,modelID:i,agent:_,text:n,attachments:o,additionalParts:g.syntheticParts?.length?[...c||[],...g.syntheticParts]:c,agentMentionName:s}),f=await XW({providerID:r,modelID:i,agent:_,variant:l},a);if(!f)throw Error(`Failed to create session`);let{materialized:p,claim:m}=f,h=p.syntheticParts?.length?[...c||[],...p.syntheticParts]:c;gm(p.sessionId);let v=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await hW({sessionId:p.sessionId,directory:p.directory,content:n,providerID:r,modelID:i,agent:p.agent,agentMentionName:s,variant:l,inputMode:u,files:v,delivery:d?.delivery,messageID:e,optimisticParts:a.parts,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:h?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))}),await KW(m,p.sessionId,`consume`)}catch(e){throw await KW(m,p.sessionId,`preserve`),e}LW(p.directory,t().availableWorktreesByProject),x(p.sessionId,p.directory);return}let S=d?.sessionId??t().currentSessionId,C=S?as.getState().getSessionAgentSelection(S):null,w=$f.getState().currentAgentName,T=_||C||w||void 0;if(S&&as.getState().saveSessionModelSelection(S,r,i),S&&T&&(as.getState().saveSessionAgentSelection(S,T),as.getState().saveAgentModelForSession(S,T,r,i),as.getState().saveAgentModelVariantForSession(S,T,r,i,l)),S){let e=BU.getState(),t=zU(S);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(RU(S),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),BU.setState({sessionMemoryState:n})}}let E=S?L(d?.directoryHint)??L(t().getDirectoryForSession(S)):null;S&&!d?.ticket&&gm(S);let D=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(m)try{await JC(m.sessionId,m.messageId,{directory:E??void 0}),t().stagedMessageEdit===m&&e({stagedMessageEdit:null})}catch(e){throw t().endMessageEditCommit(m.sessionId,m.messageId),e}try{await hW({sessionId:S||``,directory:E,content:n,providerID:r,modelID:i,agent:T,agentMentionName:s,variant:l,inputMode:u,files:D,delivery:d?.delivery,messageID:d?.messageID,ticket:d?.ticket,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:c?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))})}finally{m&&t().endMessageEditCommit(m.sessionId,m.messageId)}LW(E,t().availableWorktreesByProject),S&&x(S,E)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await XS(n,r??B.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),PW(MW(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&OO.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}}),PW(MW(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>lC(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await lC(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>fC(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await fC(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await mC(e,t)},requestSessionSmartTitle:async e=>{await hC(e)},shareSession:async e=>gC(e),unshareSession:async e=>_C(e),revertToMessage:async(e,t,n)=>{await HC(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await WC(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Wd(e),r=Bd().find(t=>t.id===e)?.revert?.messageID,i=ws(n,r);if(!i)return;let a=Gd(i.id).find(e=>e.type===`text`),o=a?.text?String(a.text).slice(0,50)+(a.text.length>50?`...`:``):`[No text]`;await t().revertToMessage(e,i.id);let{toast:s}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:c,formatMessage:l}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-B6dImdlY.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:u}=c.getState();s.success(l(u,`chat.revert.toast.undo`,{preview:o}))},handleSlashRedo:async(e,n)=>{if(n?.fullUnrevert){let{unrevertSession:t}=await nt(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>kx);return{unrevertSession:e}},void 0);await t(e);let{toast:n}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:i}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-B6dImdlY.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=Bd().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=Ts(Wd(e),r);if(i){await t().revertToMessage(e,i.id,{skipRedoPush:!0});let{toast:n}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:a}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-B6dImdlY.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 ZC(e);let{toast:a}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:o,formatMessage:s}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-B6dImdlY.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=EW(n),s=++AW;try{let a=i?.directory??t().getDirectoryForSession(n)??B.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:s,sourceSessionId:n,targetSessionId:null,directory:a,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await QC(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));c.success(`Forked from ${o?.title??`session`}`)}catch(e){console.error(`[session-fork] forkFromMessage failed`,{operationId:s,sessionId:n,messageId:r,error:e});let{toast:t}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===s?{forkTransition:null}:e)}},forkCurrentSession:async n=>{let r=t().forkTransition;if(r?.operationId,r?.stage,r){console.warn(`[session-fork] forkCurrentSession skipped because a transition is active`,{sessionId:n,activeOperationId:r.operationId,activeSourceSessionId:r.sourceSessionId,activeStage:r.stage});return}let i=EW(n),a=++AW;try{let r=t().getDirectoryForSession(n)??B.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:a,sourceSessionId:n,targetSessionId:null,directory:r,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await QC(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));o.success(`Forked from ${i?.title??`session`}`)}catch(e){console.error(`[session-fork] forkCurrentSession failed`,{operationId:a,sessionId:n,error:e});let{toast:t}=await nt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===a?{forkTransition:null}:e)}},getSessionsByDirectory:e=>{let t=L(e);return t?Vd().filter(e=>vW(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=TW(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=X.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?hD(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:TW(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Wd(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=>as.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Wd(e);Bd().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=L(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),PW(MW(),{sessionId:n,directory:i}))}}));nN((e,t)=>{$.getState().setCurrentSession(e,t)});var sG=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==sG&&(sG=t,iG(t))}});function cG(e){return e.settingsReturnTo?e.settingsReturnTo:e.activeTab===`settings`?null:{tab:e.activeTab,secondary:e.secondary}}function lG(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function uG(e){return e.length>1?e.slice(0,-1):[]}function dG(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function fG(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 pG={activeTab:`projects`,secondary:null,settingsReturnTo:null},mG=0,hG=null,gG=e=>{let t=++mG;return hG={generation:t,sessionId:e.sessionId,directory:L(e.directory)??null},t},_G=e=>{let t=hG;return t&&t.generation===mG&&t.sessionId===e.sessionId&&t.directory===(L(e.directory)??null)?(hG=null,`internal`):(hG=null,`external`)},vG=()=>{mG+=1,hG=null},yG=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&L(n)===L(e.directory)?vG():gG(e),t.setCurrentSession(e.sessionId,e.directory??null,{preserveActiveProject:e.preserveActiveProject})},bG=De((e,t)=>({...pG,setActiveTab:t=>{vG(),e({activeTab:t,secondary:null,settingsReturnTo:null})},openSettingsFromCurrent:()=>{vG(),e(e=>({activeTab:`settings`,secondary:null,settingsReturnTo:cG(e)}))},restoreSettingsReturnTo:()=>{let n=t().settingsReturnTo;return n?(vG(),e({activeTab:n.tab,secondary:n.secondary,settingsReturnTo:null}),n):null},openSession:t=>{e({secondary:{kind:`chat`,routes:[SG(t,`root`)]}}),yG(t)},pushSession:t=>{e(e=>{let n=SG(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?lG(e.secondary.routes,n):[n]}}}),yG(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=uG(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=bG.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&yG(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=fG(e.secondary.routes,SG(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:dG(e.secondary.routes,SG(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=>{vG(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{vG(),yt.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{vG(),e({secondary:{kind:`instances`}})},pushAssistantSettings:t=>e(e=>e.secondary?.kind!==`assistant`||e.secondary.settingsAssistantID===t?e:{secondary:{...e.secondary,settingsAssistantID:t}}),popAssistantSettings:()=>e(e=>e.secondary?.kind!==`assistant`||!e.secondary.settingsAssistantID?e:{secondary:{kind:`assistant`}}),closeSecondary:()=>{vG(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{vG(),e({...pG})}})),xG=1,SG=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${xG++}`,sessionId:e.sessionId,directory:e.directory??null}),CG=e=>!Ue()||Ge()?!1:(bG.getState().pushSession(e),!0);export{vV as $,Ao as $a,gp as $i,ek as $n,kS as $r,RI as $t,xU as A,Cs as Aa,n_ as Ai,lj as An,Br as Ao,Aw as Ar,YI as At,RV as B,ls as Ba,Sm as Bi,Uk as Bn,XS as Br,LN as Bt,LU as C,W as Ca,P_ as Ci,yM as Cn,ei as Co,lE as Cr,uR as Ct,NU as D,fu as Da,S_ as Di,Sj as Dn,Ur as Do,TT as Dr,ZI as Dt,MU as E,G as Ea,w_ as Ei,bj as En,Qr as Eo,xT as Er,$I as Et,IH as F,fs as Fa,ah as Fi,dA as Fn,LC as Fr,sF as Ft,jV as G,es as Ga,Wp as Gi,Kk as Gn,hC as Gr,LI as Gt,xH as H,ts as Ha,dm as Hi,Xk as Hn,qS as Hr,iI as Ht,aU as I,_s as Ia,qm as Ii,$k as In,fC as Ir,OP as It,MV as J,Go as Ja,Lp as Ji,ak as Jn,wC as Jr,tI as Jt,NV as K,Yo as Ka,Ip as Ki,Zk as Kn,RC as Kr,NN as Kt,DH as L,us as La,Bm as Li,rA as Ln,SC as Lr,AP as Lt,LH as M,ds as Ma,Og as Mi,tj as Mn,dn as Mo,Bw as Mr,EF as Mt,zH as N,ys as Na,xh as Ni,uA as Nn,un as No,zw as Nr,EI as Nt,_U as O,pu as Oa,r_ as Oi,_j as On,Wr as Oo,ST as Or,JI as Ot,iU as P,ps as Pa,uh as Pi,cA as Pn,an as Po,nC as Pr,yI as Pt,_V as Q,po as Qa,Vp as Qi,pk as Qn,mC as Qr,aI as Qt,vH as R,os as Ra,Im as Ri,Yk as Rn,dC as Rr,kP as Rt,RU as S,Iu as Sa,F_ as Si,bM as Sn,Zr as So,oE as Sr,iR as St,OU as T,Eu as Ta,T_ as Ti,xj as Tn,$r as To,ET as Tr,ML as Tt,AV as U,$o as Ua,um as Ui,Jk as Un,KS as Ur,DF as Ut,tH as V,as as Va,fm as Vi,Gk as Vn,VC as Vr,sI as Vt,bV as W,Zo as Wa,em as Wi,Wk as Wn,BC as Wr,OF as Wt,CV as X,mo as Xa,Up as Xi,ik as Xn,sS as Xr,eI as Xt,xV as Y,qo as Ya,Bp as Yi,ok as Yn,uC as Yr,$F as Yt,wV as Z,fo as Za,Hp as Zi,tk as Zn,pC as Zr,nI as Zt,GU as _,Ru as _a,B_ as _i,eN as _n,Vi as _o,kE as _r,dB as _t,HW as a,Vd as aa,Gy as ai,FF as an,ao,OO as ar,sV as at,zU as b,Lu as ba,V_ as bi,UM as bn,Bi as bo,nE as br,bR as bt,$ as c,Gd as ca,dy as ci,IF as cn,Ka as co,ZD as cr,ZB as ct,uW as d,Ud as da,ly as di,kI as dn,Na as do,qD as dr,IB as dt,cp as ea,Ox as ei,DI as en,jo as eo,mk as er,gV as et,rW as f,nd as fa,ty as fi,OI as fn,Ba as fo,hD as fr,yB as ft,UU as g,Nu as ga,zv as gi,$M as gn,Da as go,PE as gr,lB as gt,KU as h,Pu as ha,_v as hi,AI as hn,Ea as ho,X as hr,hB as ht,VW as i,Hd as ia,nb as ii,MF as in,to as io,QD as ir,tV as it,bU as j,bs as ja,kg as ji,ij as jn,ln as jo,Vw as jr,QI as jt,SU as k,rc as ka,t_ as ki,pj as kn,Hr as ko,$w as kr,XI as kt,cW as l,Bd as la,uy as li,RF as ln,Ga as lo,_D as lr,YB as lt,iW as m,Mu as ma,Fv as mi,oI as mn,Oa as mo,JD as mr,CB as mt,CG as n,kf as na,fx as ni,PI as nn,oo as no,LO as nr,dV as nt,ZW as o,Fd as oa,_y as oi,HF as on,ja as oo,WD as or,oV as ot,aW as p,ud as pa,cy as pi,GF as pn,za as po,KD as pr,pB as pt,kV as q,Jo as qa,Rp as qi,nk as qn,zC as qr,MN as qt,bG as r,$f as ra,$b as ri,jF as rn,so as ro,IO as rr,eV as rt,hW as s,Wd as sa,iy as si,WF as sn,Va as so,GD as sr,qB as st,_G as t,ap as ta,hx as ti,NF as tn,wo as to,FO as tr,hV as tt,lW as u,Pd as ua,sy as ui,BF as un,Wa as uo,XD as ur,$B as ut,WU as v,U as va,z_ as vi,YM as vn,Hi as vo,AE as vr,Zz as vt,PU as w,Fu as wa,C_ as wi,Fj as wn,Xr as wo,UT as wr,dR as wt,BU as x,zu as xa,I_ as xi,RM as xn,Fi as xo,iE as xr,eL as xt,VU as y,Du as ya,W_ as yi,WM as yn,Li as yo,hE as yr,vR as yt,IV as z,ss as za,xm as zi,qk as zn,JC as zr,BN as zt};