@openchambery/web 1.18.4-beta.8 → 1.18.4-beta.9

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 (51) hide show
  1. package/dist/assets/{AssistantView-gAiFMDUJ.js → AssistantView-CbCe7NJG.js} +1 -1
  2. package/dist/assets/{ChatContainer--pExLV0s.js → ChatContainer-CSHDg3oS.js} +4 -4
  3. package/dist/assets/{DiagramView-DVPEFJ-e.js → DiagramView-DUciKofo.js} +1 -1
  4. package/dist/assets/{MarkdownRendererImpl-BRHbul8Z.js → MarkdownRendererImpl-BjAOpViW.js} +1 -1
  5. package/dist/assets/{MobileDetailNavigation-QdKhV7QI.js → MobileDetailNavigation-EXZlPK6E.js} +1 -1
  6. package/dist/assets/{MobileShareBridge-BZQU25sk.js → MobileShareBridge-CevrYlt3.js} +1 -1
  7. package/dist/assets/{MobileSurface-D8lS-QI-.js → MobileSurface-cYYd428z.js} +1 -1
  8. package/dist/assets/{MultiRunWindow-CFkkK54L.js → MultiRunWindow-CNWuOY4y.js} +1 -1
  9. package/dist/assets/{OnboardingScreen-BIhY1_hf.js → OnboardingScreen-BhSzVmYo.js} +1 -1
  10. package/dist/assets/{SettingsView-BK_KyEGa.js → SettingsView-YyQ-C-qq.js} +10 -10
  11. package/dist/assets/{SettingsWindow-Jh9KQuAX.js → SettingsWindow-uUezVVwi.js} +1 -1
  12. package/dist/assets/{TerminalView-CsJ_5RIn.js → TerminalView-DPto-DoO.js} +1 -1
  13. package/dist/assets/{ToolOutputDialog-DVCDFHSZ.js → ToolOutputDialog-CgPYRmDX.js} +1 -1
  14. package/dist/assets/{appThemeRegistry-BD3shSNM.js → appThemeRegistry-CPVFQqR9.js} +2 -2
  15. package/dist/assets/{clipboard-DKpuHEKi.js → clipboard-DhOMUCwT.js} +1 -1
  16. package/dist/assets/{context-menu-g6mcnBM7.js → context-menu-BPxTMlbo.js} +1 -1
  17. package/dist/assets/{dialog-BUMPZfVo.js → dialog-BoAAoL5Z.js} +1 -1
  18. package/dist/assets/{es-BXwKr_ZN.js → es-BXQb1dPR.js} +1 -1
  19. package/dist/assets/{fr-DwB802Hk.js → fr-BTyDIvxw.js} +1 -1
  20. package/dist/assets/{gitApi-jtNyXM2i.js → gitApi-BktvSPdR.js} +1 -1
  21. package/dist/assets/{insertionBoundaries-PCEg03bu.js → insertionBoundaries-Cqk1aLwK.js} +1 -1
  22. package/dist/assets/{ja-Bi58i710.js → ja-fcQgtBFy.js} +1 -1
  23. package/dist/assets/{ko-Bpdqclbh.js → ko-CgoVt1eb.js} +1 -1
  24. package/dist/assets/{main-BYR7oXuI.js → main-DOGudNxM.js} +2 -2
  25. package/dist/assets/{main-BhfSJeRs.js → main-UJICKUVV.js} +4 -4
  26. package/dist/assets/{miniChat-DJn_UXg4.js → miniChat-C465ME90.js} +2 -2
  27. package/dist/assets/{mobile-DLhipvmN.js → mobile-BHRw1m5c.js} +2 -2
  28. package/dist/assets/{multirun-C2pAuOrf.js → multirun-BCvIqAk-.js} +1 -1
  29. package/dist/assets/{pl-Du2feKpf.js → pl-DVDnk2fT.js} +1 -1
  30. package/dist/assets/{projectMeta-Cn9CpPEo.js → projectMeta-Wxow1DQz.js} +1 -1
  31. package/dist/assets/{pt-BR-BWH_Buhv.js → pt-BR-ofV_Qcd_.js} +1 -1
  32. package/dist/assets/{radio-DVYb5sTr.js → radio-CS9DITGQ.js} +1 -1
  33. package/dist/assets/{renderElectronMiniChatApp-xKOT0Nvl.js → renderElectronMiniChatApp-DAIgdBk9.js} +2 -2
  34. package/dist/assets/{renderMobileApp-BGDuJARi.js → renderMobileApp-BXOtgQHy.js} +4 -4
  35. package/dist/assets/{runtimeConfig-Cldsj4A8.js → runtimeConfig-Dofg9S27.js} +1 -1
  36. package/dist/assets/{runtimeEndpointReset-CSgU2-12.js → runtimeEndpointReset-Cc3yypUQ.js} +1 -1
  37. package/dist/assets/{sortable-tabs-strip-yILKXhUh.js → sortable-tabs-strip-N3j5So4j.js} +1 -1
  38. package/dist/assets/{store-Dd7SwiXs.js → store-Hr-xvtDJ.js} +2 -2
  39. package/dist/assets/{uk-DLdEJOBL.js → uk-Dzob0yMx.js} +1 -1
  40. package/dist/assets/{useAppFontEffects-CXQZ4yy-.js → useAppFontEffects-BpT_sNyZ.js} +2 -2
  41. package/dist/assets/{useDesktopWindowControlsLayout-C1jjLChc.js → useDesktopWindowControlsLayout-CGYSjr_T.js} +1 -1
  42. package/dist/assets/{useEffectiveDirectory-Bkoa0uuw.js → useEffectiveDirectory-BtkZPQZ2.js} +1 -1
  43. package/dist/assets/{useMobileNavigationStore-B34Winlp.js → useMobileNavigationStore-BNnnW08z.js} +4 -4
  44. package/dist/assets/{useSessionAutoCleanup-C9bcDyFO.js → useSessionAutoCleanup-C5V-GCiC.js} +1 -1
  45. package/dist/assets/{useWorkerHighlightedLines-wbAA15f3.js → useWorkerHighlightedLines-Bo9meAHp.js} +1 -1
  46. package/dist/assets/{zh-CN-D_ZMA-QZ.js → zh-CN-Sndj2nhS.js} +1 -1
  47. package/dist/assets/{zh-TW-CBJ2QB4M.js → zh-TW-S24a8EMD.js} +1 -1
  48. package/dist/index.html +2 -2
  49. package/dist/mini-chat.html +2 -2
  50. package/dist/mobile.html +2 -2
  51. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/store-Dd7SwiXs.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-base-ui-CnHfUmDN.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/vendor-sonner-DVzioF3d.js"])))=>i.map(i=>d[i]);
2
- import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{A as n,C as r,E as i,O as a,P as o,R as s,T as c,U as l,X as u,Y as d,b as f,k as p,t as m,w as h,y as g}from"./useUIStore-NfqK-HA7.js";import{$ as _,$t as v,A as y,An as b,At as x,Ct as S,Dt as C,Et as w,F as T,H as E,I as D,L as O,M as k,Mt as A,N as j,Nt as ee,P as te,Pt as M,Q as ne,R as re,St as ie,Tt as ae,X as oe,Xt as se,Yt as ce,_t as le,bt as ue,d as N,dt as de,et as fe,gt as pe,ht as P,i as me,jt as he,kn as F,nt as ge,o as I,ot as _e,q as ve,r as ye,rt as be,tt as xe,u as L,vt as Se,w as Ce,wt as we,xn as Te,xt as Ee,yt as R,zt as De}from"./persistence-vZ7H8WKh.js";import{a as Oe,i as ke,o as Ae,r as je}from"./vendor-zustand-B4dlGEM2.js";import{nt as Me,rt as Ne}from"./vendor-base-ui-CnHfUmDN.js";import{Ct as Pe,Ft as Fe,Ht as Ie,Jt as Le,Kt as Re,Lt as ze,Nt as z,Ot as Be,Pt as B,R as Ve,St as He,Vt as Ue,Yt as We,n as Ge,r as Ke,t as qe}from"./platform-CTaznShj.js";import{i as Je,n as Ye,r as Xe,t as Ze}from"./vendor-pathe-vBmvQE8f.js";import{a as Qe,n as $e,o as et}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as tt}from"./vendor-react-DLPElpoQ.js";import{r as nt}from"./vendor-tanstack-query-core-BWz0ose6.js";import{a as rt,l as it,n as at,o as ot,s as st,t as ct}from"./vendor-tanstack-react-query-D7pys_c9.js";import{r as lt}from"./vendor-sonner-DVzioF3d.js";import{n as ut}from"./vendor-reactuses-core-DDoDDyM9.js";import{t as dt}from"./clipboard-DKpuHEKi.js";import{i as ft,t as pt}from"./store-Dd7SwiXs.js";import{i as mt}from"./useAssistantUIStore-ifqNyja4.js";import{t as ht}from"./vendor-fuse.js-DB5wDJbI.js";var gt=1048576,_t=new TextEncoder,vt=e=>e instanceof Error&&e.name===`AbortError`,yt=e=>vt(e)?e:new DOMException(`The operation was aborted.`,`AbortError`),bt=async e=>{try{await e?.cancel()}catch{}},xt=async e=>{try{await e.cancel()}catch{}},St=async(e,t={})=>{let n=t.fetch??F,r;try{r=await n(e,{method:`GET`,headers:{Accept:`text/event-stream`},signal:t.signal})}catch(e){throw t.signal?.aborted||vt(e)?yt(e):Error(`SSE request failed`)}if(!r.ok)throw await bt(r.body),Error(`SSE response failed`);if(!/^text\/event-stream(?:\s*;|\s*$)/i.test(r.headers.get(`content-type`)??``))throw await bt(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 xt(i),i.releaseLock(),t.signal?.aborted||vt(e)?yt(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-Hr-xvtDJ.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-base-ui-CnHfUmDN.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/vendor-sonner-DVzioF3d.js"])))=>i.map(i=>d[i]);
2
+ import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{A as n,C as r,E as i,O as a,P as o,R as s,T as c,U as l,X as u,Y as d,b as f,k as p,t as m,w as h,y as g}from"./useUIStore-NfqK-HA7.js";import{$ as _,$t as v,A as y,An as b,At as x,Ct as S,Dt as C,Et as w,F as T,H as E,I as D,L as O,M as k,Mt as A,N as j,Nt as ee,P as te,Pt as M,Q as ne,R as re,St as ie,Tt as ae,X as oe,Xt as se,Yt as ce,_t as le,bt as ue,d as N,dt as de,et as fe,gt as pe,ht as P,i as me,jt as he,kn as F,nt as ge,o as I,ot as _e,q as ve,r as ye,rt as be,tt as xe,u as L,vt as Se,w as Ce,wt as we,xn as Te,xt as Ee,yt as R,zt as De}from"./persistence-vZ7H8WKh.js";import{a as Oe,i as ke,o as Ae,r as je}from"./vendor-zustand-B4dlGEM2.js";import{nt as Me,rt as Ne}from"./vendor-base-ui-CnHfUmDN.js";import{Ct as Pe,Ft as Fe,Ht as Ie,Jt as Le,Kt as Re,Lt as ze,Nt as z,Ot as Be,Pt as B,R as Ve,St as He,Vt as Ue,Yt as We,n as Ge,r as Ke,t as qe}from"./platform-CTaznShj.js";import{i as Je,n as Ye,r as Xe,t as Ze}from"./vendor-pathe-vBmvQE8f.js";import{a as Qe,n as $e,o as et}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as tt}from"./vendor-react-DLPElpoQ.js";import{r as nt}from"./vendor-tanstack-query-core-BWz0ose6.js";import{a as rt,l as it,n as at,o as ot,s as st,t as ct}from"./vendor-tanstack-react-query-D7pys_c9.js";import{r as lt}from"./vendor-sonner-DVzioF3d.js";import{n as ut}from"./vendor-reactuses-core-DDoDDyM9.js";import{t as dt}from"./clipboard-DhOMUCwT.js";import{i as ft,t as pt}from"./store-Hr-xvtDJ.js";import{i as mt}from"./useAssistantUIStore-ifqNyja4.js";import{t as ht}from"./vendor-fuse.js-DB5wDJbI.js";var gt=1048576,_t=new TextEncoder,vt=e=>e instanceof Error&&e.name===`AbortError`,yt=e=>vt(e)?e:new DOMException(`The operation was aborted.`,`AbortError`),bt=async e=>{try{await e?.cancel()}catch{}},xt=async e=>{try{await e.cancel()}catch{}},St=async(e,t={})=>{let n=t.fetch??F,r;try{r=await n(e,{method:`GET`,headers:{Accept:`text/event-stream`},signal:t.signal})}catch(e){throw t.signal?.aborted||vt(e)?yt(e):Error(`SSE request failed`)}if(!r.ok)throw await bt(r.body),Error(`SSE response failed`);if(!/^text\/event-stream(?:\s*;|\s*$)/i.test(r.headers.get(`content-type`)??``))throw await bt(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 xt(i),i.releaseLock(),t.signal?.aborted||vt(e)?yt(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>gt)throw Error(`SSE response exceeds buffer limit`);u=i,l.push(a)}},h=e=>{if(e.length===0)return;o+=e,s+=_t.encode(e).byteLength;let t=o===`data`?4:o.startsWith(`data:`)?5+ +(o.charAt(5)===` `):0;if(u+s-t>gt)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)===`
@@ -458,7 +458,7 @@ Use the results below as source material. Do not mention that the inputs were hi
458
458
  `).replace(/\n\s*\n+/g,`
459
459
  `),Lp=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Rp=e=>{let t=e?.metadata;return Lp(t)?t:{}},zp=e=>{let t=e.openchamber;return Lp(t)?t:{}},Bp=e=>{let t=zp(Rp(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Vp=e=>{let t=zp(Rp(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Hp=e=>zp(Rp(e)).kind===`review`&&!!Vp(e),Up=(e,t)=>{let n=zp(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Wp=(e,t)=>{let n=zp(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},Gp=(e,t)=>{let n=zp(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},Kp=Oe()(ke((e,t)=>({runsByOriginalSessionID:{},upsertRun:t=>e(e=>({runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t.originalSessionID]:t}})),updateRun:(t,n)=>e(e=>{let r=e.runsByOriginalSessionID[t];return r?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:n(r)}}:e}),stopRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`stopped`}}}:e}),completeRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`completed`}}}:e}),stopRunningRunsForRuntime:t=>e(e=>{let n=!1,r={...e.runsByOriginalSessionID};for(let[e,i]of Object.entries(r))i.runtimeKey===t&&i.status===`running`&&(r[e]={...i,status:`stopped`},n=!0);return n?{runsByOriginalSessionID:r}:e}),isRunningForSession:e=>t().runsByOriginalSessionID[e]?.status===`running`}),{name:`auto-review-store`,storage:g(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),qp=(e,t)=>{let n=new Map;for(let t of e){if(!t.parentID)continue;let e=n.get(t.parentID)??[];e.push(t.id),n.set(t.parentID,e)}let r=new Set([t]),i=[t];for(let e of i){let t=n.get(e);if(t)for(let e of t)r.has(e)||(r.add(e),i.push(e))}return r},Jp=(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},Yp=(e,t,n,r)=>{if(!n)return r;let i=qp(e,n);if(i.size===0)return r;let a=new Set,o=[];for(let e of i){let n=t[e];if(n)for(let e of n)a.has(e.id)||(a.add(e.id),o.push(e))}return o.length===0?r:o},Xp=`GitHub issue context (JSON)`,Zp=`GitHub pull request context (JSON)`,Qp=e=>!e||typeof e!=`object`?!1:!!e.synthetic,$p=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>Qp(e)),em=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!Qp(e)),n=e=>{if(!Qp(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(Xp)||n.startsWith(Zp)};return t&&e.some(e=>Qp(e))?e.filter(e=>!Qp(e)||n(e)):e},tm=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},nm=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,rm=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},im=e=>e.replace(/\\/g,`/`),am=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}`}`),im(n)}catch{return null}},sm=(e,t)=>{let n=am(im(e)),r=am(im(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},cm=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),lm=(e,t)=>{let n=im(e),r=am(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=sm(n,t);if(r!==null){let t=am(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return cm(a)},um=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},dm=(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},fm=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},pm=async(e,t={})=>{let n=t.createID??fe,r=t.directory??t.root??null,i=e.filter(e=>!Qp(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(nm).join(`
460
460
  `),l=[];for(let e of o){let t=fm(e);t&&l.push(t)}for(let e of[...l].reverse())dm(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=E(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=dm(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=lm(o,r),t=null;for(let n of e){let e=dm(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=rm(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=ue(s);if(t.startsWith(`data:`)){let e=await um(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(tm(t)){if(!ie(t))throw Error(`composer-restoration-url-too-long`);m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:i,size:0,source:t.startsWith(`file:`)?`server`:`local`,locator:{kind:`url`,url:t},...t.startsWith(`file:`)&&o?{serverPath:o}:{}}),h.set(l,t);continue}throw Error(`composer-restoration-invalid-attachment-url`)}f.sort((e,t)=>e.range.start-t.range.start);let g=ae(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=we(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},mm=async(e,t={})=>{let n=t.createID??fe,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=we(r,i),o=ae(r,e.composerMentions??[]);if(!a||!o)throw Error(`composer-restoration-invalid-sidecars`);if(e.draftAttachments)return{snapshot:{text:r,composerReferences:a.references,attachments:[...e.draftAttachments],syntheticParts:e.syntheticParts??[],mentions:o},values:e.draftValues??new Map};let s=[],c=new Map;for(let t of e.attachments??[]){let e=t.id||n(),r=ue(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await um(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(tm(i)){if(!ie(i)){if(!(t.file instanceof Blob))throw Error(`composer-restoration-url-too-long`);c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType,size:t.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`url`,url:i},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}}),c.set(r,i);continue}if(t.file&&t.file.size>=0){c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}throw Error(`composer-restoration-invalid-attachment`)}return{snapshot:{text:r,composerReferences:a.references,attachments:s,syntheticParts:e.syntheticParts??[],mentions:o},values:c}},hm=e=>e?JSON.parse(JSON.stringify(e)):null,gm=e=>e?{...e}:{},_m=(e,t=Or.getState())=>{let n=t.getDraft?.(e)??null,r=gm(t.draftAttachmentViews?.[R(e)]);return{record:hm(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},vm=async e=>{let t=e.input??Or.getState(),n=_m(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}},ym=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}}},bm=async e=>{let t=e.input??Or.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?ym({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},xm=(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},Sm=e=>e?.status===`committed`&&e.current===!0,Cm=new Map,wm=async(e,t)=>{let n=R(e),r=Cm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Cm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Cm.get(n)===o&&Cm.delete(n)}},Tm=(e,t)=>({key:e,addLocal:async n=>{await wm(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await wm(e,async()=>{let r=t(),i=xm(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 wm(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 wm(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:Sm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await wm(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await wm(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await wm(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Em=4e4,Dm=0,Om=null;function km(e=Date.now()){Dm=e}function Am(e){return Om=e,()=>{Om===e&&(Om=null)}}function jm(e){Om?.(e)}function Mm(e=Date.now(),t=Em){return Dm<=0?!1:e-Dm>=t}var Nm=3e4,Pm=200,Fm=new Map;function Im(e,t,n){return`${n?.transport??i()}\n${n?.generation??h()}\n${e.trim()}\n${t}`}function Lm(e,t,n){if(!e||!t)return!1;let r=Fm.get(Im(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Nm}function Rm(e,t,n){if(!e||!t)return;let r=Im(e,t,n);for(Fm.has(r)&&Fm.delete(r);Fm.size>=Pm;){let e=Fm.keys().next().value;if(typeof e!=`string`)break;Fm.delete(e)}Fm.set(r,n?.now??Date.now())}var zm=768,Bm=()=>{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},Vm=()=>{if(typeof window>`u`)return`desktop`;let e=window.__OPENCHAMBER_SURFACE__;if(e===`mobile`||e===`desktop`)return e;let t=new URLSearchParams(window.location.search).get(`surface`);if(t===`mobile`||t===`desktop`)return t;if(se())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=zm&&Bm()?`mobile`:`desktop`},Hm=()=>Vm()===`mobile`,Um=3,Wm=2,Gm=4,Km=4,qm=100,Jm=30;function Ym(){return d()?`relay`:`local`}function Xm(e=Ym()){return e===`relay`?Wm:Um}function Zm(e=Ym()){return e===`relay`?Km:Gm}function Qm(e){return Xm(th(e))}function $m(){return qm}function eh(){return Jm}function th(e){return e===`relay`||e===`local`?e:Ym()}var nh=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function rh(){return{pages:[],pageParams:[]}}function ih(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 ah(e){return{pages:Object.freeze(e.pages.map(ih)),pageParams:Object.freeze([...e.pageParams])}}function oh(e,t,n=nh){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 ih({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function sh(e){if(!e||e.pages.length===0)return il;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 ch(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=sh(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function lh(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function uh(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 ih({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:lh(t)}})}function dh(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 ah({pages:[uh(`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=uh(`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(ph(i,o,s,a)),_.push(e.pageParams[r]??null)}return ah({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?ph(t,r===`reconcile-page`?fh(i,p):[...i,...p],s,a):ph(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]=ih({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return ah({pages:m,pageParams:[...e.pageParams]})}function fh(e,t){let n=e.slice();for(let e of t){let t=oc(e),r=n.length;for(let e=0;e<n.length;e+=1)if(ac(t,oc(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function ph(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&&mh(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||gh(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:ih({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:lh(t)}})}function mh(e,t){return e===t||e.id===t.id&&e===t}function hh(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 gh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!hh(e[n],t[n]))return!1;return!0}function _h(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function vh(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 yh(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=dh(e??rh(),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&&gh(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 ah({pages:e.pages.map((t,n)=>ph(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function bh(e,t){let n=ch(e,t),r=sh(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 xh(e,t,n,r){if(!Al(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=bh(e,t),o=Rs(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=vh(n),c=new Set;return s&&c.add(s),{data:yh(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function Sh(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 Ch(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 wh(e){return e?e.map(e=>e.id).filter(e=>typeof e==`string`):[]}function Th(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=bh(e,t),o=!1,s=0,c,l=new Set,u=Sh(e),d=Ch(e),f=wh(i.message[t]);for(let e of n){if(!Al(e.type))continue;o=!0;let n=Rs(i,e),r=typeof n==`boolean`?n:n.changed,a=typeof n==`boolean`?void 0:n.materialization;if(a&&!c&&(c=a),!r)continue;let p=vh(e),m=wh(i.message[t]),h=m.length!==f.length||m.some((e,t)=>e!==f[t]),g=h;if(p){let e=i.part[p],n=u.get(p);e&&n&&gh(n,e)?i.part[p]=[...n]:e?(g=!0,u.set(p,e)):n&&(g=!0,u.delete(p));let r=i.message[t]?.find(e=>e.id===p),a=d.get(p);if(!(r&&a&&a===r))if(r&&a&&mh(a,r)){let e=i.message[t];if(e){let t=e.findIndex(e=>e.id===p);t>=0&&(e[t]=a)}}else r?(g=!0,d.set(p,r)):a&&(g=!0,d.delete(p))}else g=!0;if(h){f=m;for(let e of i.message[t]??[])e?.id&&!d.has(e.id)&&d.set(e.id,e)}g&&(s+=1,p&&l.add(p))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:yh(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function Eh(e,t,n,r,i){let a=e&&e.pages.length>0?e:ah({pages:[uh(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=ch(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]:_h(r)};return{data:ah({pages:a.pages.map((e,t)=>t===a.pages.length-1?ph(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]?ph(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 Dh(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:ah({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 ph(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Oh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=ch(e,t),i=Qc({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:sh(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=ah({pages:[uh(`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:sh(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=ah({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?ph(t,fh(r,l),o,a):ph(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:sh(u)}}}function kh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=pl(ch(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:dh(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 xh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Th(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Eh(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 Dh(e,n.messageID,t)}case`durable-seed`:return Oh(e,t,n);case`reset`:return n.page?kh(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 Ah(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 jh(e,t,n,r=`materialize`){return kh(e,n,{type:`http-page`,purpose:r,page:Ah(t),liveRevision:t.sync.liveRevision}).data}function Mh(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return ah(t);if(t.pages.length===e.pages.length){let r=Ih(e,t);if(r===e)return e;if(Fh(e,t)||Ph(e,t))return r;let i=t.pages[t.pages.length-1];return jh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return kh(e,n,{type:`http-page`,purpose:`prepend`,page:Ah(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return jh(e,r,n)??ah(t)}return ah(t)}function Nh(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Ph(e,t){let n=Nh(e),r=Nh(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=Lh(e,``),a=Lh(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Fh(e,t){let n=Nh(e);if(n.size===0)return!1;let r=Nh(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=Lh(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||ac(oc(t),oc(n))>0)return!1}return!0}function Ih(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,ih(t))});return!n&&e.pageParams.length===t.pageParams.length?e:ah({pages:r,pageParams:[...t.pageParams]})}function Lh(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:sh(e),liveRevision:a}}var Rh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},zh=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Bh=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Vh=e=>e.trim(),Hh=e=>e?.trim()||`tail`,Uh=new Set([502,503,504]),Wh=[`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 Gh(e){if(!e||e instanceof Rh||e instanceof zh)return!1;if(e instanceof Bh)return e.status>=400&&e.status<500?!1:Uh.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(Uh.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(Uh.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:Wh.some(e=>n.includes(e))}function Kh(e,t){return e>=2?!1:Gh(t)}var qh=(e,t=i(),n=h())=>[t,n,`sessionMessages`,`page`,Vh(e.directory),e.sessionID,e.limit,Hh(e.before)],Jh=(e,t=i(),n=h())=>[t,n,`session-transcript`,Vh(e.directory),e.sessionID];function Yh(e){if(!e||typeof e!=`object`)throw new zh(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new zh(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new zh(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new zh(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new zh(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new zh(`session message page: cursor must be string when set`);return e}var Xh=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}:{}})},Zh=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw new Rh},Qh=(e,t,n=i(),r={},a=(r.getGeneration??h)())=>{let o=Vh(e.directory),s=e.sessionID,c=e.limit,l=e.before?.trim()||void 0;return{queryKey:qh({directory:o,sessionID:s,limit:c,before:l},n,a),queryFn:async({signal:e})=>{Zh(n,a,r);let i=await t({directory:o,sessionID:s,limit:c,before:l,signal:e});return Zh(n,a,r),Xh(Yh(i))},staleTime:1/0,gcTime:3e5,retry:Kh,retryDelay:e=>Math.min(500*2**e,4e3)}},$h=(e,t,n=L,r=i(),a={},o=(a.getGeneration??h)())=>n.fetchQuery(Qh(e,t,r,a,o));function eg(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 tg(e){return Xh({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function ng(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function rg(e){let t=Vh(e.directory),n=e.sessionID,r=e.transport??i(),a=e.probe??{},o=e.generation??(a.getGeneration??h)(),s=e.initialLimit??Xm(),c=e.historyLimit??Zm(),l=e.client??L,u=Jh({directory:t,sessionID:n},r,o),d=async t=>tg(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:u,queryFn:async e=>{Zh(r,o,a);let i=e.pageParam?.trim()||void 0,u=i?c:s,f=i?`prepend`:`initial`,p=await $h({directory:t,sessionID:n,limit:u,before:i},d,l,r,a,o);Zh(r,o,a);let m=eg(p);return oh(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:ng,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:Kh,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>Mh(e,t,n)}}function ig(e){let t=e.client??L,n=rg({...e,client:t}),r=new nt(t,{...n,structuralSharing:(t,n)=>Mh(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 ah(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return ah(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:ah(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return ah(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:ah(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function ag(e,t,n,r){let i=e.getQueryData(t),a=kh(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 og(e,t=L,n=i(),r=h()){return t.getQueryData(Jh(e,n,r))}function sg(){return v()||Hm()}function cg(){return v()?4:Hm()?12:40}var lg=1048576,ug=4*lg,dg=12*lg,fg=40*lg;function pg(){return v()?ug:Hm()?dg:fg}var mg=e=>e.trim();function hg(e){return{transport:e.transport,generation:e.generation,directory:mg(e.directory),sessionID:e.sessionID}}function gg(e){let t=hg(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function _g(e){return`${e.transport}\n${e.generation}\n${mg(e.directory)}`}var vg={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function yg(e,t,n){return[t,n,vg.taskRoot,vg.reconcileTaskKind,mg(e.directory),e.sessionID,e.checkpoint]}function bg(e,t,n){return[t,n,vg.checkpoint,mg(e.directory),e.sessionID]}function xg(e){let t=hg(e);return[{queryKey:Jh({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,vg.transportPageRoot,vg.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,vg.taskRoot,vg.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,vg.taskRoot,vg.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:bg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function Sg(){let e=new Map;return{retain(t){let n=hg(t),r=gg(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(gg(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(gg(t))?.count??0},clear(){e.clear()}}}function Cg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var wg=3e4;function Tg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function Eg(e){return!Array.isArray(e)||e.length<5||e[2]!==vg.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 Dg(e){let t=e.client,n=e.activeRegistry??Sg(),r=e.counters??Cg(),i=e.getLimit??cg,a=e.now??Date.now,o=e.minResidencyMs??wg,s=new Map,c=e=>{let t=gg(hg(e));s.set(t,a())},l=e=>{let t=gg(hg(e)),n=s.get(t);return n!==void 0&&a()-n<o},u=e=>{let r=hg(e);if(n.isRetained(r))return!0;let i=Jh({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},d=e=>{let r=e?.directory===void 0?void 0:mg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=Eg(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:Tg(a.state.data)})}return i},f=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},p=e=>{r.purgeSession+=1,s.delete(gg(hg(e)));for(let t of xg(e))f(t)},m=(e,t)=>{r.purgeGeneration+=1;let n=[[e,t,vg.canonical],[e,t,vg.transportPageRoot,vg.transportPageKind],[e,t,vg.taskRoot],[e,t,vg.checkpoint]];for(let e of n)f({queryKey:e})},h=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>gg(hg(e)))),o=d({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=_g(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let u=[];for(let e of c.values()){for(let t of e){let e=gg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(gg(e.scope))||l(e.scope)));i.sort((e,t)=>e.dataUpdatedAt===t.dataUpdatedAt?e.scope.sessionID<t.scope.sessionID?-1:+(e.scope.sessionID>t.scope.sessionID):e.dataUpdatedAt-t.dataUpdatedAt);let o=e.length-i.length,c=e.length,d=0;for(;c>t&&d<i.length&&!(c-1<o);){let e=i[d];d+=1,p(e.scope),u.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:u}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:u,listCanonical:d,purgeSession:p,purgeGeneration:m,enforce:h,destructiveReset:async(e,t)=>{r.destructiveReset+=1,p(e);try{let n=await t();return h({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw p(e),t}},noteScopeObserved:c}}var Og=new Map,kg=new Set;function Ag(e,t){return`${e}\n${t}`}function jg(){for(let e of kg)e()}function Mg(e,t){if(!e||!t)return;let n=Ag(e,t),r=Og.get(n)??0;Og.set(n,r+1),r===0&&jg()}function Ng(e,t){if(!e||!t)return;let n=Ag(e,t),r=Og.get(n);if(r){if(r<=1){Og.delete(n),jg();return}Og.set(n,r-1)}}function Pg(e,t){if(!e)return!1;if(t)return Og.has(Ag(t,e));let n=`\n${e}`;for(let e of Og.keys())if(e.endsWith(n))return!0;return!1}function Fg(e){return kg.add(e),()=>{kg.delete(e)}}var Ig=3e4,Lg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function Rg(e,t=Ig){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 zg=e=>e?e.toLowerCase().includes(`application/json`):!1,Bg=e=>e?e.toLowerCase().includes(`text/html`):!1;function Vg(e,t){if(!e||typeof e!=`object`)throw Error(`session turn page: expected JSON object`);let n=e;if(n.partial===!0)throw Error(`session turn page: partial responses are not accepted`);if(!Array.isArray(n.records))throw Error(`session turn page: records must be an array`);if(!(`complete`in n)||typeof n.complete!=`boolean`)throw Error(`session turn page: complete must be a boolean`);if(typeof n.turnCount!=`number`||!Number.isFinite(n.turnCount))throw Error(`session turn page: turnCount must be a number`);if(!Number.isInteger(n.turnCount)||n.turnCount<0||n.turnCount>t)throw Error(`session turn page: turnCount must be an integer in 0..${t}`);if(n.cursor!=null&&typeof n.cursor!=`string`)throw Error(`session turn page: cursor must be string or null`);if(typeof n.cursor==`string`&&n.cursor.length===0)throw Error(`session turn page: cursor must not be empty string`);if(n.complete===!0&&n.cursor!=null)throw Error(`session turn page: complete=true requires cursor=null`);if(n.complete===!1&&(n.cursor==null||typeof n.cursor!=`string`))throw Error(`session turn page: complete=false requires non-empty cursor`);let r=[];for(let e=0;e<n.records.length;e++){let t=n.records[e];if(!t||typeof t!=`object`)throw Error(`session turn page: records[${e}] must be an object`);let i=t,a=i.info;if(!a||typeof a!=`object`)throw Error(`session turn page: records[${e}].info must be an object`);let o=a.id;if(typeof o!=`string`||o.length===0)throw Error(`session turn page: records[${e}].info.id must be a non-empty string`);if(`parts`in i&&i.parts!==void 0&&!Array.isArray(i.parts))throw Error(`session turn page: records[${e}].parts must be an array when present`);r.push({info:a,...i.parts===void 0?{}:{parts:i.parts}})}return{records:r,cursor:n.cursor==null?null:n.cursor,complete:n.complete,turnCount:n.turnCount}}async function Hg(e){let t=e.turns??Zm(),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:Ig;return Rg((async()=>{let a=await F(n,{method:`GET`,query:r,signal:Lg(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(Bg(o))throw Error(`session turn page: unexpected HTML response`);zg(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Vg(s,t)})(),i)}async function Ug(e){let t=e.purpose===`prepend`&&e.before?Zm():Xm();return Hg({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var Wg=3e4,Gg=2,Kg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),qg=e=>e?e.toLowerCase().includes(`text/html`):!1,Jg=e=>new Promise(t=>{setTimeout(t,e)});function Yg(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new zh(`session transcript reconcile: ${t} must be string or null`);return e}function Xg(e){if(!e||typeof e!=`object`)throw new zh(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new zh(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new zh(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new zh(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new zh(`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 zh(`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 zh(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=Yg(t.capturedHeadMessageID,`capturedHeadMessageID`),r=Yg(t.latestHeadMessageID,`latestHeadMessageID`),i=Yg(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new zh(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new zh(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new zh(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new zh(`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 zh(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new zh(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new zh(`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 zh(`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 Zg(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 zh(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function Qg(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),Rg((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:Kg(e.signal,n)})}catch(e){throw e instanceof Rh||e instanceof zh||e instanceof Bh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new Bh(t.status,`session transcript reconcile failed (${t.status})`);if(qg(t.headers.get(`content-type`)))throw new zh(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new zh(`session transcript reconcile: malformed JSON`)}return Xg(a)})(),n)}async function $g(e){let t=Zg(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:Wg,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):Gg,i=e.sleep??Jg,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await Qg(e,t,n)}catch(t){if(t instanceof Rh||t instanceof zh||t instanceof Bh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!Gh(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var e_=e=>!!(e&&typeof e==`object`&&typeof e.type==`string`),t_=e=>e.filter(e_),n_=e=>{let t=e,n=t.text;return typeof n==`string`?n:t.content||t.value||``},r_=e=>{if(e.type!==`text`)return!1;let t=n_(e);return!t||t.trim().length===0},i_=(e,t={})=>{let{includeReasoning:n=!0}=t,r=t_(e),i=r.some(e=>!e.synthetic);return r.filter(e=>{let t=!!e.synthetic;return t&&e.type===`text`&&n_(e).includes(`<system-reminder>`)||t&&i||!n&&e.type===`reasoning`?!1:e.type!==`patch`})},a_=`GitHub issue context (JSON)`,o_=`GitHub pull request context (JSON)`,s_=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,c_=(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}},l_=e=>{let t=c_(e,a_);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!s_(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=c_(e,o_);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!s_(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},u_=(e,t)=>{let n=e.trim();return!!(t&&n.startsWith(`User has requested to enter plan mode`)||t&&n.startsWith(`The plan at `)||n.startsWith(`The following tool was executed by the user`))},d_=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),f_=e=>e.trim()===`/compact`,p_=(e,t)=>{let n=t?.planModeEnabled===!0;return e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(d_(t)||f_(t)))return!1}if(e.synthetic!==!0)return!0;if(e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let r=t.trimStart();return u_(t,n)||r.startsWith(a_)||r.startsWith(o_)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=l_(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},m_=e=>e.some(e=>{if(e.type===`text`)return!r_(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&&!Ie(e)}return!0}),h_=e=>e?.length?m_(p_(e)):!1,g_=`oc_asst_session_divider:`,__=[],v_=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),y_=(e,t=0)=>({info:{id:`${g_}${e}`,role:`system`,time:{created:t}},parts:[]}),b_=e=>e.slice().reverse().flatMap(e=>e.entries),x_=(e,t,n=__)=>{if(!e.length)return __;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(y_(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?__:E_(n,r)?n:r},S_=(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},C_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=S_(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 h_(e.parts)?e:h_(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=__)=>{if(!t)return n.length>0?Array.from(n):__;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:C_(e,t?.message),order:t?.order??a++})}if(i.size===0)return __;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 E_(r,o)?r:o},T_=(e,t)=>{if(!v_(e)||!v_(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},E_=(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||T_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},D_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),O_=e=>e.startsWith(g_);function k_(e,t){if(!e?.id||O_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(D_(t,`subtask`)||D_(t,`compaction`)||t.every(e=>Qp(e))):!1}function A_(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(k_(r,i))return n}return null}function j_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function M_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:A_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:j_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function N_(e,t){return{...e,...t}}function P_(e,t){let n=bg({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 F_(e,t){let n=bg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function I_(e,t){let n=bg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function L_(e){return e.slim===!0}var R_=/bearer|token|authorization|password|secret|cookie/i,z_=new Set([`message.part.delta`]);function B_(e){return typeof e==`string`&&e.includes(`-`)}var V_=`openchamber.client-diagnostics.enabled`;function H_(e){return e===`true`||e!==`false`&&null}function U_(e){return e.preference===!0||e.preference!==!1&&B_(e.version)}function W_(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function G_(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function K_(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 q_(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return R_.test(t)?`redacted-error`:t}function J_(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)L_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function Y_(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function X_(e){let t=0;for(let n of e.messageOrder)uv(e.messagesByID[n])===!0&&(t+=1);return t}function Z_(e){let t=e.transcript?J_(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:Y_(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:X_(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...q_(e.error??e.request?.error)?{error:q_(e.error??e.request?.error)}:{},...K_(e.error)===void 0?{}:{httpStatus:K_(e.error)}}}function Q_(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 $_(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 ev(e){return typeof e==`string`&&z_.has(e)}function tv(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return ev(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>ev(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function nv(e){if(e.type===`http-page`)return e.purpose}function rv(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function iv(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 av(e){return e.__openchamberOptimistic===!0}function ov(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(`
461
- `).trim();if(n)return R_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function sv(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function cv(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var lv=e=>typeof e==`string`&&e.trim().length>0;function uv(e){if(!e||sv(e)!==`assistant`)return;let t=e,n=!lv(t.mode)&&!lv(t.agent),r=!lv(t.modelID)||!lv(t.providerID);return n||r}function dv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function fv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)L_(e)?r+=1:i+=1,av(e)&&(a=!0);let o=e.messagesByID[t],s=sv(o),c=uv(o),l=s===`user`?ov(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:cv(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 pv(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:dv(e),after:dv(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 mv(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:pv(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 hv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function gv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function _v(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function vv(e){let t=_v(e.partID),n=_v(e.messageID),r=_v(e.directory),i=_v(e.childSessionID),a=_v(e.toolStatus),o=_v(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 yv(e){return[e.sessionID,_v(e.partID)??``,e.childSessionPresent?`1`:`0`,_v(e.childSessionID)??``,_v(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`,_v(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,...vv(e)}}function xv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:gv(e),...vv(e)}}var Sv=`openchamber-transcript-diagnostics`,Cv=`events`,wv=1,Tv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),Ev=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,wv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Cv)||e.createObjectStore(Cv,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),Dv=(e=Sv)=>({async append(t,n){let r=await Ev(e);try{let e=r.transaction(Cv,`readwrite`).objectStore(Cv);await Tv(e.add(t));let i=await Tv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await Tv(e.delete(t))}finally{r.close()}},async read(){let t=await Ev(e);try{return await Tv(t.transaction(Cv,`readonly`).objectStore(Cv).getAll())}finally{t.close()}},async clear(){let t=await Ev(e);try{await Tv(t.transaction(Cv,`readwrite`).objectStore(Cv).clear())}finally{t.close()}}});function Ov(e={}){let t=e.driver??Dv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var kv=Qe(`OpenChamberMedia`);function Av(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function jv(){return Ge()&&$e!==void 0&&$e.isPluginAvailable(`OpenChamberMedia`)}function Mv(){return`1.18.4-beta.8`}function Nv(){if(typeof localStorage>`u`)return null;try{return H_(localStorage.getItem(V_))}catch{return null}}function Pv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(V_,e?`true`:`false`)}catch{}}function Fv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var Iv;function Lv(e=Mv()){return U_({version:e,preference:Nv()})}function Rv(e={}){return $_({sink:Fv()===`indexeddb`?(e.createIndexedDBSink??Ov)():(e.createMemorySink??Q_)(),isEnabled:e.isEnabled??Lv})}function zv(){return Iv??=Rv(),Iv}function Bv(e){zv().record(e)}function Vv(e){try{return Lv()?fv(e()):void 0}catch{return}}function Hv(e){try{Bv(mv(e))}catch{}}function Uv(e){try{Bv(bv(e))}catch{}}function Wv(e){try{Bv(xv(e))}catch{}}function Gv(e){let t=tv(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&Bv(Z_({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:e.transcript,request:e.request,hydration:e.hydration,command:e.command.type,purpose:nv(e.command),sseType:rv(e.command),source:iv(e.command),error:e.error}))}async function Kv(){let e=await zv().exportReport(),t=Te()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function qv(e,t=W_()){if(jv())return(await kv.saveFile({dataBase64:Av(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 Jv(){let e=await Kv(),t=W_();return{content:e,fileName:t,outcome:await qv(e,t),eventCount:G_(e)}}function Yv(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 Xv=2,Zv=6e4,Qv=6e4;function $v(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??i)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??h)()}}function ey(e,t){let n=(t.probe?.getTransport??i)(),r=(t.probe?.getGeneration??h)();if(n!==e.transport||r!==e.generation)throw new Rh}function ty(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function ny(e,t){return hg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function ry(e,t){return`${e.trim()}\n${t}`}function iy(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Dg({client:t,activeRegistry:Sg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??Xv)),o=e.fetchReconcile??$g,s=e.now??Date.now,c=Math.max(0,e.destructiveResetDedupeMs??Zv),l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Set,_=new Map,v=new Set,y=new Map,b=(e,t)=>{g.add(ry(e,t))},x=(e,t)=>{g.delete(ry(e,t))},S=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},C=e=>{u+=1;for(let e of[...f.keys()])S(e);p.clear(),m.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(ry(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(ry(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=ry(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(l)return;let a={transport:i.transport??$v(e).transport,generation:i.generation??$v(e).generation},o=s(),c=E(),u=T(a,c),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(ry(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(ry(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of c)f.set(ry(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(ry(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=ty(e,a),s=n.getTranscript(r),c=M_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:i.lastEventID,capturedAt:o});F_(t,c)}let p=new Set;for(let t of u){let n=Yv({directory:t,activeScopes:w(a,t),viewedSessions:c,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(ry(e.directory,e.sessionID))}for(let e of d){let t=ry(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=Vv(()=>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=Vv(()=>n.getTranscript(e));i&&t&&Hv({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:zs(i)},A=async(r,i,a)=>{if(ey({transport:i.transport,generation:i.generation},e),a!==u)throw new Rh;F_(t,N_(P_(t,i)??M_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let o=Vv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),ey({transport:i.transport,generation:i.generation},e),a!==u)throw new Rh;I_(t,i),x(i.directory,i.sessionID),y.set(ry(i.directory,i.sessionID),s());try{let e=Vv(()=>n.getTranscript(r));o&&e&&Hv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw F_(t,N_(P_(t,i)??M_({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(ey({transport:i.transport,generation:i.generation},e),a!==u)throw new Rh;F_(t,N_(P_(t,i)??M_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Vv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),ey({transport:i.transport,generation:i.generation},e),a!==u)throw new Rh;I_(t,i),x(i.directory,i.sessionID);try{let e=Vv(()=>n.getTranscript(r));o&&e&&Hv({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 F_(t,N_(P_(t,i)??M_({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,a,l)=>{let d=ty(r,i),f=ny(r,i),p=yg({directory:f.directory,sessionID:f.sessionID,checkpoint:String(P_(t,f)?.capturedAt??s())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:s()});try{if(ey(i,e),a!==u||l.aborted)throw new Rh;let m=P_(t,f);if(m||(m=M_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:s()}),F_(t,m)),!m.anchorMessageID){if(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}m=N_(m,{state:`reconciling`}),F_(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,ey(i,e),a!==u||l.aborted)throw new Rh;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,ey(i,e),a!==u||l.aborted)throw new Rh;let g=n.getTranscript(d).liveRevision;if(!_&&!h){await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()});return}let x=await o({sessionID:r.sessionID,directory:r.directory.trim(),..._?{continuation:_}:{anchor:h},signal:l});if(ey(i,e),a!==u||l.aborted)throw new Rh;if(x.resetRequired){let n=y.get(ry(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),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=N_(P_(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),F_(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=N_(P_(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),F_(t,m);continue}if(m=N_(P_(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),F_(t,m),x(r.directory,r.sessionID),t.setQueryData(p,{status:`complete`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}{let n=y.get(ry(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}}}catch(n){if(n instanceof Rh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(p,{status:`cancelled`,finishedAt:s()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(p,{status:`error`,finishedAt:s(),code:n instanceof Error?n.name:`error`}),n}},te=t=>{let n=t.trim(),r=m.get(n)??0;if(r>=a)return;let i=p.get(n);if(!i||i.length===0)return;let o=i.shift();m.set(n,r+1);let s=ry(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),te(n);return}let c=$v(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{Mg(n,o.sessionID);try{await ee(o,c,l,h.signal)}catch{}finally{Ng(n,o.sessionID),f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),te(n)}})();d.set(s,g)},M=e=>{let t=e.directory.trim(),n=ry(t,e.sessionID);if(d.has(n))return;let r=p.get(t);r||(r=[],p.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),te(t))},ne=t=>{let n=E(),i=T(t,n);for(let a of i){let i=Yv({directory:a,activeScopes:w(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)M(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=ry(e.scope.directory,e.scope.sessionID);i.some(e=>ry(e.directory,e.sessionID)===t)||b(e.scope.directory,e.scope.sessionID)}}},re=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??i)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??h)(),a=(e.probe?.getTransport??i)();if(r!==n.generation||a!==n.transport){C(`generation_mismatch`);return}ne(n)},ie=t=>{if(l)return;let r=t.directory.trim(),i=$v(e,t),a=ty({directory:r,sessionID:t.sessionID},i),c=gg(ny({directory:r,sessionID:t.sessionID},i)),u=_.get(c);if(u&&s()-u.checkedAt<Qv||v.has(c)||d.has(ry(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(v.add(c),(async()=>{try{if(ey(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(ey(i,e),l||(_.set(c,{checkedAt:s()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;O(a,u,d)}catch{}finally{v.delete(c)}})())};return{captureCheckpoints:D,onCompensation:re,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=ry(i,r.sessionID);if(!g.has(a))return ie(r),null;x(i,r.sessionID);let o=$v(e,r),s=ty({directory:i,sessionID:r.sessionID},o),c=ny({directory:i,sessionID:r.sessionID},o),u=P_(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){M({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{ey(o,e),Mg(i,r.sessionID);try{let e=await n.ensureInitial(s);return I_(t,c),e}finally{Ng(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=$v(e,n);return P_(t,ny({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(ry(e,t)),destroy:()=>{l=!0,C(`destroy`)}}}var ay=e=>e.trim(),oy=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session status runtime changed`)},sy=(e,t={})=>{let n=ay(e),r=t.transport??i(),a=t.loadSnapshot??((e,t)=>z.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,s=t.runtimeProbe??{},c=(s.getGeneration??h)();return ot({queryKey:N.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{oy(r,c,s);let t=o(),i=await a(n,e);if(oy(r,c,s),i===null)throw Error(`session status snapshot unavailable`);return{snapshot:i,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},cy=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(sy(e,r))},ly=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session active runtime changed`)},uy=(e={})=>{let t=e.transport??i(),n=e.loadActive??(e=>z.getSessionActive(e)),r=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??h)();return ot({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{ly(t,o,a);let i=r(),s=await n(e);return ly(t,o,a),{result:s,requestedAt:i}},staleTime:0,gcTime:3e5,retry:!1})},dy=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(uy(n))},fy;function py(e){fy=e}function my(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 hy(e,t){return JSON.stringify(e)===JSON.stringify(t)}function gy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function _y(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>({session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n}})),!0)}function 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=my(o[e]);if(t){c[e]=n&&gy(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 yy(e,t,n,r){if(n.length===0)return!1;let i=!1;return e.setState(e=>{let a=e.session_status??{},o,s,c=()=>o??={...a},l=()=>s??={...e.session_status_observed_at},u=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(l()[t]=r,i=!0)};for(let o of n){if(r!==void 0&&(e.session_status_observed_at[o]??-1/0)>=r)continue;let n=my(t[o]);if(n&&n.type!==`idle`){hy(a[o],n)||(c()[o]=n,i=!0),u(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(c()[o]={type:`idle`},i=!0),u(o)}return!o&&!s?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{}}}),i}function by(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function xy(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await cy(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 dy({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=by(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),yy(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 Sy({directory:e,sessionID:t,store:n,statusBeforePull:r,statusObservedAtBeforePull:i,hasMessages:a,isTailPage:o=!0,isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m}){if(!o||!a||!r||r.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:xy(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Cy(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function wy(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 Ty(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 Ey(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(nc(e))??Promise.resolve(),r.get(ic(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=nc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=ic(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 Dy=new Map;function Oy(e,t){let n=Dy.get(e);if(n)return n;let r=t().finally(()=>{Dy.get(e)===r&&Dy.delete(e)});return Dy.set(e,r),r}var ky=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Ay(e){return Oy(ky(e),e.request)}function jy(e,t){return`${e}\n${t}`}var My=new Map;function Ny(e){return My.get(e)}async function Py(e){return Ay({runtimeKey:jy(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 My.set(r.id,i),{info:up(r),parts:i}}})}function Fy(e,t){let n=e.info;return n.role===t||n.clientRole===t}function Iy(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Fy(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 Ly(e){if(e.complete){let t=e.records.some(e=>Fy(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=Iy(e.records);if(t.length===0){let t=e.records.some(e=>Fy(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=>Fy(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Ry(e){return e.trim()}function zy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??i)(),r=e.generation??t.generation??(t.probe?.getGeneration??h)();return{directory:Ry(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function By(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:il,liveRevision:0}}function Vy(e,t){if(!e||e.pages.length===0)return By(t);let n=Lh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function Hy(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function Uy(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function Wy(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=Hy(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=Hy(e.messagesByID[t]);a===void 0||a<=n||Uy(e.partsByMessageID[t])||i.push(t)}return i}function Gy(e={}){let t=e.client??L,n=e.cacheBudget??Dg({client:t,activeRegistry:e.activeRegistry??Sg()}),r=n.activeRegistry,a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=e.durableStore?Ey(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Cy),getByteBudget:e.getDurableByteBudget}):void 0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=Vy(w(e),t.sessionID);!Cl(r)&&!v.has(n)||(y.add(n),Bv(Z_({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=l.get(e);return t||(t={messages:new Map,parts:new Map},l.set(e,t)),t},w=n=>{let r=zy(n,e);return og({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=zy(t,e);return Jh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=zy(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let r=e.probe??{getTransport:i,getGeneration:h},o=zy(n,{...e,transport:void 0,generation:void 0,probe:r}),s=K(o),c=a.get(s);if(c)return c;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=ig({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(s,l),l},k=t=>{let n=K(zy(t,e));l.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(zy(n,e));if(s.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});s.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=s.get(e);n&&(n(),s.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of p.keys())t.startsWith(e)&&p.delete(t);for(let t of m.keys())t.startsWith(e)&&m.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of p)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of m.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=zy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{u&&u.persistSettled(Cy(e),t,n??[])},le=(e,t,n,r)=>{if(!u||S>0||!r.applied||!r.changed)return;let i=Cy(t);if(n.type===`remove-message`){u.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(u.clearSession(i),n.page){let r=Vy(w(e),t.sessionID);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;ce(t,n,r.partsByMessageID[e.info.id]??e.parts)}}return}if(n.type!==`optimistic-add`&&n.type!==`optimistic-confirm`&&n.type!==`optimistic-remove`){if(n.type===`sse-event`||n.type===`sse-event-batch`){let r=n.type===`sse-event`?[n.event]:n.events,a=Vy(w(e),t.sessionID);for(let e of r){let n=Ty(e);if(n.action===`remove`){u.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=Vy(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:i,getGeneration:h},s={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??Xm()};return wy(r?.fresh?await t.fetchQuery({...Qh(s,a,n.transport,o,n.generation),staleTime:0}):await $h(s,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)lu(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now();d.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return d.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Rm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let a=g.get(r);if(a&&a.size>0){let n=[],r=0;for(let o of i.records){let i=o.info.id;if(!(!i||!a.has(i))){if(!_l(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),p.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Rh||!se(t))return d.delete(r),P.getTranscript(e);throw d.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Bv(Z_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:Vy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{f.delete(r)}})();return f.set(r,a),a},fe=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;d.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return d.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||tu(t.sessionID,t.directory)?(d.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Rm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return d.delete(r),n instanceof Rh||!se(t)||Bv(Z_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`reconcile-page`,durationMs:Date.now()-i,transcript:Vy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{f.delete(r)}})();return f.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(zy(t,e)))?!0:sh(n).kind===`unknown`},P={getTranscript(t){let n=zy(t,e),r=K(n),i=Vy(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=zy(t,e),r=K(n),i=P.getTranscript(t);return te(r,Dl(n.sessionID,i.boundary))},getRequestState(t){let n=zy(t,e),r=d.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=zy(t,e),r=K(n),i=P.getTranscript(t);Cl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:wl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:bl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(zy(t,e)),i=C(r),a=P.getTranscript(t).messagesByID[n];return i.messages.has(n)&&i.messages.get(n)===a?i.messages.get(n):(i.messages.set(n,a),a)},getParts(t,n){let r=K(zy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??Ky,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=zy(t,e),i=p.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||gl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=zy(t,e),i=M(r,n),a=Vv(()=>P.getTranscript(t)),o=e=>{try{let t=Vv(e);if(!a||!t)return;Hv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=m.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return p.set(i,{status:`idle`}),P.getTranscript(t);if(!gl(P.getParts(t,n))&&!g.get(K(r))?.has(n))return p.set(i,{status:`ready`}),P.getTranscript(t);p.set(i,{status:`loading`}),k(t);try{let a=await Py({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 z.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return se(r)?(P.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),gl(P.getParts(t,n))?p.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):p.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(p.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return p.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return p.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return m.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{m.get(i)===c&&m.delete(i)}),c},apply(r,i){let a=zy(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=ag(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&_.delete(K(a)),e.result.changed&&(k(r),D(r)),e.result}case`sse-event`:{let e=ag(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`sse-event-batch`:{let e=ag(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=ag(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&k(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),ag(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=ag(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&k(r),n.result}case`reset`:{if(b.delete(K(a)),g.delete(K(a)),_.delete(K(a)),n.purgeSession(E(r)),!i.page)return k(r),{applied:!0,changed:!0};let e=ag(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(k(r),D(r)),e.result}case`materialize-snapshots`:return qy(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=ag(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&k(r),e.result}default:return{applied:!1,changed:!1}}})();return le(r,a,i,s),s.applied&&(Gv({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:Vy(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,i){let a=K(zy(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);c.set(a,r.retain(e)),n.noteScopeObserved(e)}return s.add(i),A(t),()=>{let e=o.get(a);if(e){if(e.delete(i),e.size===0){let e=c.get(a);e&&(e(),c.delete(a))}j(a)}}},async ensureInitial(t){let i=zy(t,e),a=K(i);if(u&&await u.wait(Cy(i)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Cy(i));if(se(i)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)_l(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Bv(Z_({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,i);return Bv(Z_({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!r.isRetained(E(t))){let e=Date.now(),n=await fe(t,i);return Bv(Z_({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;d.delete(a);try{await s.ensureInitial()}catch(e){throw Bv(Z_({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:Vy(w(t),i.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}d.delete(a),l||Rm(i.directory,i.sessionID,{transport:i.transport,generation:i.generation}),n.noteScopeObserved(E(t)),D(t);let f=P.getTranscript(t);return Bv(Z_({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:f,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),f},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),sh(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=zy(t,e),r=K(n);b.add(r),k(t);let i=Date.now();try{await O(t).fetchPreviousPage(),D(t);let e=P.getTranscript(t);return Bv(Z_({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),e}catch(e){throw Bv(Z_({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{b.delete(r),k(t)}},getController(t){let n=zy(t,e);return a.get(K(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=zy(t,e),i=Vv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??Xm(),signal:new AbortController().signal}),s=P.getTranscript(t).liveRevision;if(P.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:o.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:s}),s<=a){let n=Wy(P.getTranscript(t),o);for(let i of n)P.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let c=P.getTranscript(t);n.noteScopeObserved(E(t));try{let e=Vv(()=>c);i&&e&&Hv({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:i,after:e})}catch{}return c},async destructiveReset(t){let r=Vv(()=>P.getTranscript(t)),i=E(t);return u&&await u.clearSession(Cy(zy(t,e))),n.destructiveReset(i,async()=>{let n=zy(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),l.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=Vv(()=>s);r&&e&&Hv({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=K(zy(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),l.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),l.delete(n);let e=c.get(n);e&&(e(),c.delete(n));let t=s.get(n);t&&(t(),s.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),u&&u.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of s.values())e();s.clear();for(let e of c.values())e();c.clear(),o.clear(),l.clear(),d.clear(),f.clear(),p.clear(),m.clear(),g.clear(),v.clear(),y.clear(),b.clear()}};return P}var Ky=Object.freeze([]);function qy(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=ag(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var Jy=`/api/openchamber/transcript-cache`,Yy=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),Xy=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Zy=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},Qy=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},$y=e=>{if(!Xy(e))throw Error(`Invalid transcript cache scope`);return{transport:Zy(e.transport,`scope`),generation:Qy(e.generation,`scope`),directory:Zy(e.directory,`scope`),sessionID:Zy(e.sessionID,`scope`)}},eb=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},tb=e=>{if(!Xy(e)||!Xy(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!Xy(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:$y(e.scope),messageID:Zy(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>eb(e,`part completeness`)),completeness:eb(e.completeness,`completeness`),contentHash:Zy(e.contentHash,`content hash`),byteSize:Qy(e.byteSize,`byte size`),lastAccessedAt:Qy(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:Qy(e.sortKey.created,`sort key`),messageID:Zy(e.sortKey.messageID,`sort key`)}}},nb=(e,t)=>{if(!Xy(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(tb);return{scope:e.scope===void 0?_c(t):$y(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},rb=e=>{if(!Xy(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:tb(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!Yy.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:tb(e.record)}}}throw Error(`Invalid transcript cache upsert`)},ib=e=>{if(!Xy(e))throw Error(`Invalid transcript cache evict`);return{evicted:Qy(e.evicted,`evict`),freedBytes:Qy(e.freedBytes,`evict`),remainingBytes:Qy(e.remainingBytes,`evict`)}},ab=e=>({scope:_c(e),records:[],byteSize:0}),ob=(e,t)=>Xy(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,sb=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`)}},cb=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 sb(r)};let i=await sb(r).catch(()=>void 0);throw Error(ob(i,`Transcript cache request failed (${r.status})`))},lb=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),ub=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function db(e={}){let t=e.fetch??F;return{async readSession(e){let n=await cb(t,`${Jy}/session`,{method:`GET`,query:lb(e)});return n.kind===`disabled`||n.kind===`not-found`?ab(e):nb(n.payload,e)},async readMessage(e,n){let r=await cb(t,`${Jy}/message`,{method:`GET`,query:{...lb(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!Xy(r.payload))throw Error(`Invalid transcript cache record`);return tb(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await cb(t,`${Jy}/message`,ub(`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 rb(i.payload)},async removeMessage(e,n){let r=await cb(t,`${Jy}/message`,ub(`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 cb(t,`${Jy}/session`,ub(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await cb(t,`${Jy}/generation`,ub(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await cb(t,`${Jy}/evict`,ub(`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 ib(r.payload)},async clearAll(){let e=await cb(t,`${Jy}/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`,pb=1,mb=`transcriptIndex`,hb=`transcriptContent`,gb=class extends Error{code;constructor(e){super(e),this.code=e}},_b=e=>({id:rc(e.scope,e.messageID),scope:_c(e.scope),scopeKey:nc(e.scope),generationKey:ic(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:_c(e.scope),messageID:e.messageID,info:gc(t.info),parts:gc(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}}),yb=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)},bb=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},xb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Sb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new gb(`database-unavailable`));return}let r=indexedDB.open(e,pb),i=!1,a=()=>{i||(i=!0,n(new gb(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(mb)){let t=e.createObjectStore(mb,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(hb)||e.createObjectStore(hb,{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}),Cb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new gb(`database-unavailable`)),r.onblocked=()=>void 0}),wb=(e=fb)=>({transaction:async t=>{let n=await Sb(e),r=n.transaction([mb,hb],`readwrite`),i=r.objectStore(mb),a=r.objectStore(hb),o=e=>xb(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:()=>Cb(e)});function Tb(e,t={}){let n=vc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(_b(t)),yc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(nc(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(_b(a)),i.push(a)}return bc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await yb(e,rc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=xc({info:i,incomingCompleteness:lc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=gc(a.slice()),c=lc(s),l=await fc(i,s),u=rc(t,i.id);return e.transaction(async e=>{let a=await yb(e,u),o=xc({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:yc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:_c(t),messageID:i.id,info:gc(i),parts:s,partCompleteness:s.map(cc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:oc(i)};return await e.putIndex(_b(d)),await e.putContent({id:u,info:gc(i),parts:s}),{status:`written`,record:yc(d)}})},async removeMessage(t,n){await e.transaction(e=>bb(e,rc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(nc(t));for(let t of n)await bb(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(ic(t));for(let t of n)await bb(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(nc)),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?ac(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await bb(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 Eb(e={}){return Tb(e.driver??wb(e.databaseName),e)}function Db(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??Ge;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Ob=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function kb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??db)(),t),i=()=>(n??=(e.createIndexedDBStore??Eb)(),n),a=()=>Db(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=>Ob([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Ab(e={}){await kb(e).clearAll()}var jb=(e,t)=>e<t?-1:+(e>t);function Mb(e){return e.filter(e=>!!e?.id).sort((e,t)=>jb(e.id,t.id))}async function Nb(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await Ug({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=r.records.map(e=>({info:up(e.info),parts:Mb(e.parts??[])}));if(!e.before&&!r.complete&&Iy(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await Ly({records:a,complete:r.complete,requestMessage:async n=>{let r=await Py({transport:i(),generation:h(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:Mb(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Mb(e.parts??[])}))}return{records:a,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function Pb(e){let t=e.client??L,n=Sg(),r=Dg({client:t,activeRegistry:n}),a=Gy({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:i,getGeneration:h},fetcher:e=>Nb({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:Xm(),historyLimit:Zm(),durableStore:e.durableStore??kb()}),o=iy({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:r,probe:{getTransport:i,getGeneration:h},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 xy(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return _u(a),ju(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),ju(null),a.destroy(),vu()}}}function Fb(e){return yu().apply(U(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var Ib=new Map;function Lb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Rb(e,t,n,r={}){let a=r.getTransportIdentity??i,o=r.getGeneration??h,s=a(),c=o(),l=Lb(e,t,s,c),u=()=>a()===s&&o()===c,d=Ib.get(l)??Promise.resolve(),f,p=new Promise(e=>{f=e}),m=d.catch(()=>void 0).then(()=>p);Ib.set(l,m);try{if(await d.catch(()=>void 0),!u())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:s,generation:c,isCurrent:u})}finally{f(),Ib.get(l)===m&&Ib.delete(l)}}var zb=new Set,Bb=new Set,Vb=new Set,Hb=new Set,Ub={onDeleteRequest(e){return zb.add(e),()=>{zb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||zb.forEach(t=>t(e))},onCreateRequest(e){return Bb.add(e),()=>{Bb.delete(e)}},requestCreate(e){let t=e??{};Bb.forEach(e=>e(t))},onDirectoryRequest(e){return Vb.add(e),()=>{Vb.delete(e)}},requestDirectoryDialog(){Vb.forEach(e=>e())},onGitRefreshHint(e){return Hb.add(e),()=>{Hb.delete(e)}},requestGitRefresh(e){e.directory.trim()&&Hb.forEach(t=>t(e))}},Wb=50,Gb=e=>{let t=Object.keys(e);if(t.length<=Wb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Wb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},Kb=Oe()(je(ke((e,t)=>({sessions:{},setSessionTodos:(t,n)=>{t&&e(e=>{let r={...e.sessions};return!n||n.length===0?t in r?(delete r[t],{sessions:r}):e:(r[t]={todos:n,touchedAt:Date.now()},{sessions:Gb(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:g(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),qb=new Set([`todowrite`,`todoread`]),Jb=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),Yb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Xb=(e,t)=>{Kb.getState().setSessionTodos(e,t)},Zb=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Qb=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},$b=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},ex=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=$b(n);e&&t.push(e)}return t},tx=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return ex(t);if(t&&typeof t==`object`)return ex(t.todos)}catch{}return[]},nx=e=>{if(!qb.has(Zb(e)))return[];let t=Qb(e);if(t&&Jb.has(t))return[];let n=e.state,r=ex(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=ex(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=ex(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?tx(i):[]};function rx(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=nx(r[e]);if(t.length>0)return t}}return[]}function ix(e){if(!e.sessionID||e.isStale?.()||Yb(e.store.getState().todo,e.sessionID))return!1;let t=rx(e.transcript);return t.length===0||e.isStale?.()||Yb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function ax(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(U(e.directory,e.sessionID));return t?ix({sessionID:e.sessionID,store:e.store,transcript:t,persist:Xb,isStale:e.isStale}):!1}var ox=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>aC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>iC,SESSION_DELETE_UNDO_MS:()=>kS,abortBusySessionForMessageEdit:()=>yC,abortCurrentOperation:()=>uC,archiveSession:()=>zS,beginOptimisticSend:()=>YS,cancelScheduledSessionDeletes:()=>RS,classifySendFailure:()=>$x,combinedSendConfirmationOptions:()=>oC,commitMessageEdit:()=>xC,createSession:()=>CS,deleteSession:()=>IS,dirStoreForDirectory:()=>Rx,dismissOpenQuestionsForSession:()=>mC,ensureSentUserMessagePresence:()=>lC,fetchMessagesForSession:()=>DC,fetchRecentSendConfirmationRecords:()=>nC,forkSession:()=>TC,getSendFailureKind:()=>Zx,getSessionLastAssistantModel:()=>Wx,isQuestionRequestNotFoundError:()=>bS,materializeConfirmedSendRecords:()=>rC,mirrorSessionIntoLiveStores:()=>Kx,optimisticInsertUserMessage:()=>eC,optimisticSend:()=>$S,patchSessionMetadata:()=>wS,refetchSessionMessages:()=>CC,rejectQuestion:()=>pC,releaseUnconfirmedQueueSend:()=>Fx,requestSessionSmartTitle:()=>HS,resolveForkMessageId:()=>yx,respondToPermission:()=>dC,respondToQuestion:()=>fC,revertToMessage:()=>hC,rollbackOptimisticSend:()=>ZS,scheduleSessionDeletes:()=>LS,setActionRefs:()=>Nx,setOptimisticRefs:()=>Px,settleOptimisticSend:()=>QS,shareSession:()=>US,shouldSuppressForkCopyEvent:()=>xx,stageMessageEdit:()=>_C,trackForkCopySessionCreated:()=>hx,unarchiveSession:()=>BS,unrevertSession:()=>wC,unshareSession:()=>WS,updateSessionTitle:()=>VS,waitForConnectionOrThrow:()=>rS,waitForSessionIdleForMessageEdit:()=>bC}),sx=2,cx=150,lx=new Set([`patch`,`step-start`,`step-finish`]),ux=3,dx=150,fx=null,px=new Map,mx=3e4;function hx(e,t){let n=t?.id;!fx||fx.runtimeKey!==c()||fx.directory!==e||!n||t?.title!==fx.expectedTargetTitle||n===fx.sourceSessionID||fx.targetSessionID||(fx.targetSessionID=n)}function gx(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function _x(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 yx(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(n?.type===`idle`)return e;for(let e=t.length-1;e>=0;--e)if(t[e]?.role===`user`)return t[e].id}async function bx(e,t){let n=Rp(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return z.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function xx(e,t,n){if(fx&&fx.runtimeKey===c()&&fx.directory===e&&t&&t===fx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${c()}:${e}:${t}`,i=px.get(r);return i?i.expiresAt<=Date.now()?(px.delete(r),!1):n<=i.messageID:!1}var Sx=null,Cx=null,wx=()=>``,Tx=new Map,Ex=null,Dx=null,Ox=null,kx=e=>new Promise(t=>setTimeout(t,e));function Ax(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e.message;if(typeof t==`string`&&t.length>0)return t;let n=e.data;if(n&&typeof n==`object`){let e=n.message;if(typeof e==`string`&&e.length>0)return e}}try{return JSON.stringify(e)}catch{return String(e)}}function jx(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Ax(e.error)}`);throw n!==void 0&&(r.status=n),r}function Mx(e,t){let n=jx(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Nx(e,t,n){if(Sx=e,Cx=t,wx=n,Tx.size>0){let e=[...Tx.values()];Tx.clear(),queueMicrotask(()=>{for(let t of e)DC(t.sessionID,t.directory)})}}function Px(e,t,n){Ex=e,Dx=t,Ox=n??null}function Fx(e){let t=e.directory??null;Dx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Ix(){if(!Sx)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Sx}function Lx(){if(!Cx)throw Error(`Child stores not initialized`);let e=wx();if(!e)throw Error(`No current directory`);return Cx.ensureChild(e)}function Rx(e,t){if(!Cx)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Cx.ensureChild(e,t)}function zx(e,t){let n=t??lS(e);return n?{store:Rx(n),directory:n}:{store:Lx(),directory:qx()}}function Bx(e,t){let{store:n,directory:r}=zx(e,t??void 0),i=r??qx()??``;return{repository:H()??bu(i,n),directory:i,store:n}}function Vx(e,t){let{repository:n,directory:r,store:i}=Bx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function Hx(e,t){return Ku(Vx(e,t).data)}function Ux(e,t){return Vx(e,t).data.messageOrder.length}function Wx(e){try{let t=Hx(e);for(let e=t.length-1;e>=0;--e){let n=t[e];if(n?.role===`assistant`&&typeof n.providerID==`string`&&n.providerID&&typeof n.modelID==`string`&&n.modelID)return{providerID:n.providerID,modelID:n.modelID}}return null}catch{return null}}function Gx(e,t){let n=Cx;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]=qE(e,n[r]),t.setState({session:i}),!0}return!1}function Kx(e,t){t&&Gx(e,t)||Gx(e)}function qx(){return wx()||void 0}function Jx(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function Yx(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 Xx=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 Zx(e){return e instanceof Xx?e.kind:null}function Qx(e){let t=Yx(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 $x(e,t){return t?Qx(e)||Yx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var eS=2e3,tS=5e3,nS=3e4;async function rS(){let e=Mm();e&&jm(`send_stream_stale`);let t=Date.now()+(e?tS:eS);for(;Date.now()<t;){if(G.getState().isConnected&&!Mm()||u()&&!Mm())return;let e=t-Date.now();if(e<=0)break;if(await G.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Mm())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw Jx()}function iS(e){return new Promise((t,n)=>{let r=setTimeout(()=>{jm(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},nS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function aS(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function oS(e){e&&Y.getState().upsertSession(e)}function sS(e,t){let n=cp(t),r=[...e.getState().session],i=ls.search(r,n.id,e=>e.id);if(i.found){let t=qE(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 cS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=aS(e);if(i)return sS(t,i);try{return sS(t,await z.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 lS(e){return uS(e)||$.getState().getDirectoryForSession(e)||qx()}function uS(e){let t=Cx;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=H()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function dS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):Ix()}function fS(e){Or.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&&Or.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var pS=()=>new Map(Array.from(Fd(),([e,t])=>[e,t.title||e]));function mS(e){return!(e.type!==`file`||Qp(e))}function hS(e){return mS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function gS(e){return e.some(hS)}async function _S(e){let t=[...e.parts];if(!gS(t))return t;let n=h(),r=e.directory??``;try{await Du(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||h()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=Bx(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],gS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function vS(e){if(gS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await pm(e.parts,{sessionTitles:pS(),directory:e.directory}),n=Or.getState(),r=n.getDraft(e.key);return{payload:t,commit:await vm({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function yS(e,t,n){let r=Cx;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 bS(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 xS(e,t){let n=Cx;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 SS(e,t,n){let r=yS(e,t,n);return r?z.getScopedSdkClient(r):dS(t)}async function CS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??qx()),a=i.directory??null;return a&&Dd(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),Y.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function wS(e,t,n){let r=t??lS(e),i=n(Rp(await z.getSession(e,r))),a=await z.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Dd(a.id,o),a}async function TS(e,t){let n;try{n=await z.getSession(e,t??lS(e))}catch{return}if(!Hp(n))return;let r=Vp(n);if(r)try{await wS(r,t??lS(r),t=>Gp(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 ES(e,t){if(!Cx)return[];let n=[],r=new Set,i=[];if(t){let e=Cx.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Cx.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 DS(e){if(Cx)for(let t of e){let e=Cx.children.get(t.directory);e&&e.setState({session:t.sessions})}}function OS(e){$.getState().setWorktreeMetadata(e,null)}var kS=1e4,AS=new Map,jS=0;function MS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function NS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),DS(e.listSnapshots),oS(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function PS(e,t){let n=t??lS(e);Y.getState().markSessionsPendingDeletion([e]);let r=ES(e,n),i=aS(e);Y.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function FS(e,t){try{if(await TS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return ES(e,t),Y.getState().removeSessions([e]),OS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(ES(e,t),Y.getState().removeSessions([e]),OS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function IS(e,t){let n=PS(e);return await FS(e,n.directory)?!0:(NS(n),!1)}function LS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>PS(e)),i=`session-delete-${Date.now()}-${jS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=AS.get(i);if(!e)return;AS.delete(i);let t=[],n=[];for(let r of e.entries)await FS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),NS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return AS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function RS(e){if(!e)return!1;let t=AS.get(e);if(!t)return!1;clearTimeout(t.timer),AS.delete(e);for(let e of[...t.entries].reverse())NS(e);return!0}async function zS(e){let t=lS(e),n=ES(e,t),r=aS(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await TS(e,t);let n=await z.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),DS(n),oS(r),!1}}async function BS(e){let t=lS(e),n=aS(e),r=n?MS(n):null;if(r&&(Y.getState().upsertSession(r),t&&Cx)){let e=Cx.children.get(t);e&&sS(e,r)}try{let n=await z.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=MS(n);if(Y.getState().upsertSession(r),t&&Cx){let e=Cx.children.get(t);e?sS(e,r):Kx(r,t)}else Kx(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&ES(e,t)),!1}}async function VS(e,t){let n=lS(e),r=aS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Zf(r):0,c=await z.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),Kx(c,n)}async function HS(e){let t=lS(e),n=aS(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 z.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),Kx(s,t)}async function US(e){let t=lS(e),n=cp(Mx(await Ix().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),Gx(n,t),n}async function WS(e){let t=lS(e),n=cp(Mx(await Ix().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),Gx(n,t),n}function GS(e){let t=Cx,n=e??wx();if(!t||!n)return{store:e?Rx(e):Lx(),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 KS(){return{identity:i(),generation:h()}}function qS(e,t){return e.isCurrent()&&i()===t.identity&&h()===t.generation}function JS(e,t){if(!qS(e,t))throw Error(`Send target changed before transport dispatch`)}function YS(e){if(!Ex||!Dx)throw new Xx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??qx()??null,n=GS(t),r=KS();JS(n,r),e.beforeOptimisticInsert?.(),JS(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),eC({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 Xx?e:new Xx(Zx(e)??$x(e,!1),e)}}function XS(e){if(!qS(e.capture,e.transport)||!Dx)return;Dx({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 ZS(e){XS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function QS(e){if(!Ex||!Dx)throw new Xx(`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 rS(),JS(n,r),s=!0,await iS(e.send(i)),!qS(n,r))throw new Xx(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Zx(c)??$x(c,s),u=c instanceof Xx?c:new Xx(l,c,i);if(!qS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await nC(a,i,o):null;if(d&&qS(n,r)){rC(n.store,a,i,d,{directory:o??void 0}),Ox?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||XS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function $S(e){await QS({ticket:e.ticket??YS({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 eC(e){if(!Ex)return!1;let t=e.directory??qx(),n=t?Rx(t):Lx(),r=t??qx()??``;if(sC(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),s={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},c=Vv(()=>Vx(e.sessionId,t).data);Ex({sessionID:e.sessionId,directory:t,message:s,parts:a});let l=Vv(()=>Vx(e.sessionId,t).data);try{c&&l&&Hv({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:i(),generation:h(),before:c,after:l})}catch{}let u=n.getState();return n.setState({session_status:{...u.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...u.session_status_observed_at,[e.sessionId]:o}}),!0}function tC(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function nC(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??sx,c=r?.retryDelayMs??cx;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!tC(r?.isCurrent)||a>0&&(await kx(c),i?.signal.aborted||!tC(r?.isCurrent)))return null;try{let a=await Ix().session.messages({sessionID:e,directory:n??void 0,limit:eh(),...i?{signal:i.signal}:{}});if(!tC(r?.isCurrent))return null;let o=(jx(a,`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.some(e=>e.info.id===t))return o}catch{}}return null}finally{o&&clearTimeout(o),r?.signal?.removeEventListener(`abort`,a)}}function rC(e,t,n,r,i){if(!r.length)return;let a=i?.directory??lS(t)??wx(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:up(e.info),parts:e.parts??[]})),skipPartTypes:lx,merge:i?.gapFillOnly===!0?Xs:Qs({purpose:`recovery`})};Su(o,s)||bu(a,e).apply(o,s)}var iC=2e3,aC={attempts:12,retryDelayMs:500},oC={presenceGraceMs:iC,recovery:{...aC}};function sC(e,t,n,r){let i=r??lS(t)??wx()??``,a=H()??bu(i,e),o=U(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function cC(e,t,n,r){let i=r?.directory??lS(t)??wx()??``;if(sC(e,t,n,i))return Promise.resolve(!0);if(!tC(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=H()??bu(i,e),f=U(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!tC(r?.isCurrent)){l(!1);return}sC(e,t,n,i)&&l(!0)}),sC(e,t,n,i)&&l(!0)})}async function lC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await cC(t,n,r,{timeoutMs:e.graceMs??oC.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!tC(a))return`cancelled`;let o=await nC(n,r,i,{...oC.recovery,isCurrent:a});return o?tC(a)?(rC(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:tC(a)?`missing`:`cancelled`}async function uC(e){let{store:t,directory:n}=zx(e),r=n?{state:`bound`,transportIdentity:i(),directory:n,sessionID:e}:null,a=r?$.getState().beginQueueAbortBlock(r):null;try{if(Mx(await Ix().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&a&&$.getState().clearQueueAbortBlock(r,a),et(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>xV);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function dC(e,t,n){await rS();let r=yS(`permission`,e,t)||lS(e)||qx();if(Mx(await SS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function fC(e,t,n){await rS();let r=yS(`question`,e,t)||lS(e)||qx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Mx(await SS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw bS(n)&&xS(e,t),n}}async function pC(e,t){await rS();let n=yS(`question`,e,t)||lS(e)||qx();try{if(Mx(await SS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw bS(n)&&xS(e,t),n}}async function mC(e){if(!e)return!1;let t=Cx;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=qp(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)xS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await pC(e,t)}catch(e){if(bS(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,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return Rb(e,r??(()=>{try{return zx(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:o,directory:c}=zx(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Ix().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=Hx(e,c).find(e=>e.id===t),d=Hx(e,c).find(e=>e.id===t)??u;if(!d||d.role!==`user`)throw Error(`The selected user message is unavailable`);let{repository:f,directory:p}=Bx(e,c),m=[...f.getParts(U(p,e),t)],h=a===void 0?s?C({transportIdentity:i()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await _S({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await pm(m,{sessionTitles:pS(),directory:c})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=o.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),w={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},w.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(o.setState(w),h){let t=Or.getState(),r=await vm({key:h,expectedRevision:t.getDraft(h)?.revision??`absent`,payload:g,runtime:t.captureDraftRuntime()});if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),r.status===`committed`&&r.current&&r.previous&&r.result?.record?.revision!==void 0&&await bm({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await z.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await bm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}let i=[...o.getState().session],a=i.findIndex(t=>t.id===e);return a>=0&&(i[a]=r,o.setState({session:i})),c&&Ub.requestGitRefresh({directory:c}),g}catch(t){let r=[...o.getState().session],i=r.findIndex(t=>t.id===e);throw i>=0&&(r[i]={...r[i],revert:b}),n()?(o.setState({session:r}),h&&v&&_!==void 0&&await bm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await bm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function gC(e,t,n,r){let a=r??lS(t)??wx(),o=U(a,t),s=Vv(()=>Vx(t,a).data),c=[...xu(t)];c.some(e=>e.directory===a&&e.sessionID===t)||c.push(o);let l=!1;for(let e of c)Su(e,{type:`remove-message`,messageID:n})!=null&&(l=!0);l||bu(a,e).apply(o,{type:`remove-message`,messageID:n});let u=Vv(()=>Vx(t,a).data);try{s&&u&&Hv({trigger:`user-delete`,sessionID:t,directory:a,transport:i(),generation:h(),before:s,after:u})}catch{}}async function _C(e,t,n,r){let a=n?.info,o=n?.parts,s=r?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=zx(e,s).directory}else{c=zx(e,s).directory;let{data:n}=Vx(e,c),r=Ku(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=r?.draftKey??C({transportIdentity:i()},e),{commit:u}=await vS({key:l,parts:await _S({directory:c,sessionID:e,messageID:t,parts:o??[]}),directory:c});if(u.status!==`committed`||!u.current)throw Error(`composer-restoration-commit-${u.status}`);let d=u.result?.record?.revision,f=u.previous;return d===void 0||!f?{rollback:async()=>({status:`skipped`})}:{rollback:async()=>({status:(await bm({key:l,restoredRevision:d,previous:f})).status})}}function vC(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 yC(e,t){let n=t?.directory,{store:r,directory:i}=zx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Ix().session.abort({sessionID:e,directory:i})}catch{}}async function bC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=zx(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 xC(e,t,n){let r=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:s}=zx(e,r),c=Vv(()=>Vx(e,r).data);try{await yC(e,{directory:r}),await bC(e,{directory:r});let n=new Set((await SC(e,r)).map(e=>e.id)),i=vC(t,Hx(e,r),n,{preserveMessageId:a});for(let t of[...i].reverse())await z.deleteSessionMessage(e,t.id,s),gC(o,e,t.id,s)}finally{try{let t=Vv(()=>Vx(e,r).data);c&&t&&Hv({trigger:`user-edit`,sessionID:e,directory:s,transport:i(),generation:h(),before:c,after:t})}catch{}}}async function SC(e,t){let{directory:n}=zx(e,t);return(jx(await Ix().session.messages({sessionID:e,directory:n,limit:$m()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>up(e.info))}async function CC(e,t){let{store:n,directory:r}=zx(e,t),a=Vv(()=>Vx(e,t).data),o=(jx(await Ix().session.messages({sessionID:e,directory:r,limit:$m()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Vv(()=>Vx(e,t).data);a&&n&&Hv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let s=o.map(e=>({info:up(e.info),parts:e.parts??[]})),c=U(r??wx(),e);Su(c,{type:`materialize-snapshots`,records:s,skipPartTypes:lx})||bu(r??wx(),n).apply(c,{type:`materialize-snapshots`,records:s,skipPartTypes:lx});try{let n=Vv(()=>Vx(e,t).data);a&&n&&Hv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return s.map(e=>e.info)}async function wC(e,t){return Rb(e,t??(()=>{try{return zx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=zx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Ux(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Ix().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Ix().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Mx(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<ux;r+=1){if(r>0&&(await kx(dx),!n())||(await CC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Ux(e,i)>o)return}if(Ux(e,i)<=o){let n=i??wx(),a=H()??bu(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await CC(e,t)}})}async function TC(e,t,n,r){let i=c(),{store:a,directory:o}=zx(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await cS(e,a,o);Dd(e,o);let l=a.getState(),u=l.session_status[e],d=Hx(e,o);u?.type,d.length;let f=yx(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await CC(e),l=a.getState(),u=l.session_status[e],d=Hx(e,o),f=yx(void 0,d,u)),!n&&l.session_status[e]?.type!==`idle`&&!f)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:Ux(e,o)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=Vx(e,o),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(U(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!Qp(e)).map(e=>e.text||e.content||``).join(`
461
+ `).trim();if(n)return R_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function sv(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function cv(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var lv=e=>typeof e==`string`&&e.trim().length>0;function uv(e){if(!e||sv(e)!==`assistant`)return;let t=e,n=!lv(t.mode)&&!lv(t.agent),r=!lv(t.modelID)||!lv(t.providerID);return n||r}function dv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function fv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)L_(e)?r+=1:i+=1,av(e)&&(a=!0);let o=e.messagesByID[t],s=sv(o),c=uv(o),l=s===`user`?ov(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:cv(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 pv(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:dv(e),after:dv(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 mv(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:pv(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 hv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function gv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function _v(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function vv(e){let t=_v(e.partID),n=_v(e.messageID),r=_v(e.directory),i=_v(e.childSessionID),a=_v(e.toolStatus),o=_v(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 yv(e){return[e.sessionID,_v(e.partID)??``,e.childSessionPresent?`1`:`0`,_v(e.childSessionID)??``,_v(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`,_v(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,...vv(e)}}function xv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:gv(e),...vv(e)}}var Sv=`openchamber-transcript-diagnostics`,Cv=`events`,wv=1,Tv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),Ev=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,wv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Cv)||e.createObjectStore(Cv,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),Dv=(e=Sv)=>({async append(t,n){let r=await Ev(e);try{let e=r.transaction(Cv,`readwrite`).objectStore(Cv);await Tv(e.add(t));let i=await Tv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await Tv(e.delete(t))}finally{r.close()}},async read(){let t=await Ev(e);try{return await Tv(t.transaction(Cv,`readonly`).objectStore(Cv).getAll())}finally{t.close()}},async clear(){let t=await Ev(e);try{await Tv(t.transaction(Cv,`readwrite`).objectStore(Cv).clear())}finally{t.close()}}});function Ov(e={}){let t=e.driver??Dv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var kv=Qe(`OpenChamberMedia`);function Av(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function jv(){return Ge()&&$e!==void 0&&$e.isPluginAvailable(`OpenChamberMedia`)}function Mv(){return`1.18.4-beta.9`}function Nv(){if(typeof localStorage>`u`)return null;try{return H_(localStorage.getItem(V_))}catch{return null}}function Pv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(V_,e?`true`:`false`)}catch{}}function Fv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var Iv;function Lv(e=Mv()){return U_({version:e,preference:Nv()})}function Rv(e={}){return $_({sink:Fv()===`indexeddb`?(e.createIndexedDBSink??Ov)():(e.createMemorySink??Q_)(),isEnabled:e.isEnabled??Lv})}function zv(){return Iv??=Rv(),Iv}function Bv(e){zv().record(e)}function Vv(e){try{return Lv()?fv(e()):void 0}catch{return}}function Hv(e){try{Bv(mv(e))}catch{}}function Uv(e){try{Bv(bv(e))}catch{}}function Wv(e){try{Bv(xv(e))}catch{}}function Gv(e){let t=tv(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&Bv(Z_({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:e.transcript,request:e.request,hydration:e.hydration,command:e.command.type,purpose:nv(e.command),sseType:rv(e.command),source:iv(e.command),error:e.error}))}async function Kv(){let e=await zv().exportReport(),t=Te()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function qv(e,t=W_()){if(jv())return(await kv.saveFile({dataBase64:Av(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 Jv(){let e=await Kv(),t=W_();return{content:e,fileName:t,outcome:await qv(e,t),eventCount:G_(e)}}function Yv(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 Xv=2,Zv=6e4,Qv=6e4;function $v(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??i)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??h)()}}function ey(e,t){let n=(t.probe?.getTransport??i)(),r=(t.probe?.getGeneration??h)();if(n!==e.transport||r!==e.generation)throw new Rh}function ty(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function ny(e,t){return hg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function ry(e,t){return`${e.trim()}\n${t}`}function iy(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Dg({client:t,activeRegistry:Sg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??Xv)),o=e.fetchReconcile??$g,s=e.now??Date.now,c=Math.max(0,e.destructiveResetDedupeMs??Zv),l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Set,_=new Map,v=new Set,y=new Map,b=(e,t)=>{g.add(ry(e,t))},x=(e,t)=>{g.delete(ry(e,t))},S=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},C=e=>{u+=1;for(let e of[...f.keys()])S(e);p.clear(),m.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(ry(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(ry(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=ry(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(l)return;let a={transport:i.transport??$v(e).transport,generation:i.generation??$v(e).generation},o=s(),c=E(),u=T(a,c),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(ry(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(ry(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of c)f.set(ry(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(ry(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=ty(e,a),s=n.getTranscript(r),c=M_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:i.lastEventID,capturedAt:o});F_(t,c)}let p=new Set;for(let t of u){let n=Yv({directory:t,activeScopes:w(a,t),viewedSessions:c,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(ry(e.directory,e.sessionID))}for(let e of d){let t=ry(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=Vv(()=>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=Vv(()=>n.getTranscript(e));i&&t&&Hv({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:zs(i)},A=async(r,i,a)=>{if(ey({transport:i.transport,generation:i.generation},e),a!==u)throw new Rh;F_(t,N_(P_(t,i)??M_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let o=Vv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),ey({transport:i.transport,generation:i.generation},e),a!==u)throw new Rh;I_(t,i),x(i.directory,i.sessionID),y.set(ry(i.directory,i.sessionID),s());try{let e=Vv(()=>n.getTranscript(r));o&&e&&Hv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw F_(t,N_(P_(t,i)??M_({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(ey({transport:i.transport,generation:i.generation},e),a!==u)throw new Rh;F_(t,N_(P_(t,i)??M_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Vv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),ey({transport:i.transport,generation:i.generation},e),a!==u)throw new Rh;I_(t,i),x(i.directory,i.sessionID);try{let e=Vv(()=>n.getTranscript(r));o&&e&&Hv({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 F_(t,N_(P_(t,i)??M_({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,a,l)=>{let d=ty(r,i),f=ny(r,i),p=yg({directory:f.directory,sessionID:f.sessionID,checkpoint:String(P_(t,f)?.capturedAt??s())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:s()});try{if(ey(i,e),a!==u||l.aborted)throw new Rh;let m=P_(t,f);if(m||(m=M_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:s()}),F_(t,m)),!m.anchorMessageID){if(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}m=N_(m,{state:`reconciling`}),F_(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,ey(i,e),a!==u||l.aborted)throw new Rh;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,ey(i,e),a!==u||l.aborted)throw new Rh;let g=n.getTranscript(d).liveRevision;if(!_&&!h){await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()});return}let x=await o({sessionID:r.sessionID,directory:r.directory.trim(),..._?{continuation:_}:{anchor:h},signal:l});if(ey(i,e),a!==u||l.aborted)throw new Rh;if(x.resetRequired){let n=y.get(ry(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),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=N_(P_(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),F_(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=N_(P_(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),F_(t,m);continue}if(m=N_(P_(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),F_(t,m),x(r.directory,r.sessionID),t.setQueryData(p,{status:`complete`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}{let n=y.get(ry(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}}}catch(n){if(n instanceof Rh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(p,{status:`cancelled`,finishedAt:s()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(p,{status:`error`,finishedAt:s(),code:n instanceof Error?n.name:`error`}),n}},te=t=>{let n=t.trim(),r=m.get(n)??0;if(r>=a)return;let i=p.get(n);if(!i||i.length===0)return;let o=i.shift();m.set(n,r+1);let s=ry(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),te(n);return}let c=$v(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{Mg(n,o.sessionID);try{await ee(o,c,l,h.signal)}catch{}finally{Ng(n,o.sessionID),f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),te(n)}})();d.set(s,g)},M=e=>{let t=e.directory.trim(),n=ry(t,e.sessionID);if(d.has(n))return;let r=p.get(t);r||(r=[],p.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),te(t))},ne=t=>{let n=E(),i=T(t,n);for(let a of i){let i=Yv({directory:a,activeScopes:w(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)M(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=ry(e.scope.directory,e.scope.sessionID);i.some(e=>ry(e.directory,e.sessionID)===t)||b(e.scope.directory,e.scope.sessionID)}}},re=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??i)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??h)(),a=(e.probe?.getTransport??i)();if(r!==n.generation||a!==n.transport){C(`generation_mismatch`);return}ne(n)},ie=t=>{if(l)return;let r=t.directory.trim(),i=$v(e,t),a=ty({directory:r,sessionID:t.sessionID},i),c=gg(ny({directory:r,sessionID:t.sessionID},i)),u=_.get(c);if(u&&s()-u.checkedAt<Qv||v.has(c)||d.has(ry(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(v.add(c),(async()=>{try{if(ey(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(ey(i,e),l||(_.set(c,{checkedAt:s()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;O(a,u,d)}catch{}finally{v.delete(c)}})())};return{captureCheckpoints:D,onCompensation:re,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=ry(i,r.sessionID);if(!g.has(a))return ie(r),null;x(i,r.sessionID);let o=$v(e,r),s=ty({directory:i,sessionID:r.sessionID},o),c=ny({directory:i,sessionID:r.sessionID},o),u=P_(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){M({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{ey(o,e),Mg(i,r.sessionID);try{let e=await n.ensureInitial(s);return I_(t,c),e}finally{Ng(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=$v(e,n);return P_(t,ny({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(ry(e,t)),destroy:()=>{l=!0,C(`destroy`)}}}var ay=e=>e.trim(),oy=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session status runtime changed`)},sy=(e,t={})=>{let n=ay(e),r=t.transport??i(),a=t.loadSnapshot??((e,t)=>z.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,s=t.runtimeProbe??{},c=(s.getGeneration??h)();return ot({queryKey:N.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{oy(r,c,s);let t=o(),i=await a(n,e);if(oy(r,c,s),i===null)throw Error(`session status snapshot unavailable`);return{snapshot:i,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},cy=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(sy(e,r))},ly=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session active runtime changed`)},uy=(e={})=>{let t=e.transport??i(),n=e.loadActive??(e=>z.getSessionActive(e)),r=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??h)();return ot({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{ly(t,o,a);let i=r(),s=await n(e);return ly(t,o,a),{result:s,requestedAt:i}},staleTime:0,gcTime:3e5,retry:!1})},dy=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(uy(n))},fy;function py(e){fy=e}function my(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 hy(e,t){return JSON.stringify(e)===JSON.stringify(t)}function gy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function _y(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>({session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n}})),!0)}function 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=my(o[e]);if(t){c[e]=n&&gy(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 yy(e,t,n,r){if(n.length===0)return!1;let i=!1;return e.setState(e=>{let a=e.session_status??{},o,s,c=()=>o??={...a},l=()=>s??={...e.session_status_observed_at},u=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(l()[t]=r,i=!0)};for(let o of n){if(r!==void 0&&(e.session_status_observed_at[o]??-1/0)>=r)continue;let n=my(t[o]);if(n&&n.type!==`idle`){hy(a[o],n)||(c()[o]=n,i=!0),u(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(c()[o]={type:`idle`},i=!0),u(o)}return!o&&!s?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{}}}),i}function by(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function xy(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await cy(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 dy({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=by(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),yy(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 Sy({directory:e,sessionID:t,store:n,statusBeforePull:r,statusObservedAtBeforePull:i,hasMessages:a,isTailPage:o=!0,isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m}){if(!o||!a||!r||r.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:xy(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Cy(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function wy(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 Ty(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 Ey(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(nc(e))??Promise.resolve(),r.get(ic(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=nc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=ic(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 Dy=new Map;function Oy(e,t){let n=Dy.get(e);if(n)return n;let r=t().finally(()=>{Dy.get(e)===r&&Dy.delete(e)});return Dy.set(e,r),r}var ky=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Ay(e){return Oy(ky(e),e.request)}function jy(e,t){return`${e}\n${t}`}var My=new Map;function Ny(e){return My.get(e)}async function Py(e){return Ay({runtimeKey:jy(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 My.set(r.id,i),{info:up(r),parts:i}}})}function Fy(e,t){let n=e.info;return n.role===t||n.clientRole===t}function Iy(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Fy(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 Ly(e){if(e.complete){let t=e.records.some(e=>Fy(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=Iy(e.records);if(t.length===0){let t=e.records.some(e=>Fy(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=>Fy(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Ry(e){return e.trim()}function zy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??i)(),r=e.generation??t.generation??(t.probe?.getGeneration??h)();return{directory:Ry(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function By(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:il,liveRevision:0}}function Vy(e,t){if(!e||e.pages.length===0)return By(t);let n=Lh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function Hy(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function Uy(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function Wy(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=Hy(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=Hy(e.messagesByID[t]);a===void 0||a<=n||Uy(e.partsByMessageID[t])||i.push(t)}return i}function Gy(e={}){let t=e.client??L,n=e.cacheBudget??Dg({client:t,activeRegistry:e.activeRegistry??Sg()}),r=n.activeRegistry,a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=e.durableStore?Ey(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Cy),getByteBudget:e.getDurableByteBudget}):void 0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=Vy(w(e),t.sessionID);!Cl(r)&&!v.has(n)||(y.add(n),Bv(Z_({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=l.get(e);return t||(t={messages:new Map,parts:new Map},l.set(e,t)),t},w=n=>{let r=zy(n,e);return og({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=zy(t,e);return Jh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=zy(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let r=e.probe??{getTransport:i,getGeneration:h},o=zy(n,{...e,transport:void 0,generation:void 0,probe:r}),s=K(o),c=a.get(s);if(c)return c;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=ig({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(s,l),l},k=t=>{let n=K(zy(t,e));l.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(zy(n,e));if(s.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});s.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=s.get(e);n&&(n(),s.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of p.keys())t.startsWith(e)&&p.delete(t);for(let t of m.keys())t.startsWith(e)&&m.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of p)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of m.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=zy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{u&&u.persistSettled(Cy(e),t,n??[])},le=(e,t,n,r)=>{if(!u||S>0||!r.applied||!r.changed)return;let i=Cy(t);if(n.type===`remove-message`){u.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(u.clearSession(i),n.page){let r=Vy(w(e),t.sessionID);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;ce(t,n,r.partsByMessageID[e.info.id]??e.parts)}}return}if(n.type!==`optimistic-add`&&n.type!==`optimistic-confirm`&&n.type!==`optimistic-remove`){if(n.type===`sse-event`||n.type===`sse-event-batch`){let r=n.type===`sse-event`?[n.event]:n.events,a=Vy(w(e),t.sessionID);for(let e of r){let n=Ty(e);if(n.action===`remove`){u.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=Vy(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:i,getGeneration:h},s={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??Xm()};return wy(r?.fresh?await t.fetchQuery({...Qh(s,a,n.transport,o,n.generation),staleTime:0}):await $h(s,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)lu(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now();d.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return d.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Rm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let a=g.get(r);if(a&&a.size>0){let n=[],r=0;for(let o of i.records){let i=o.info.id;if(!(!i||!a.has(i))){if(!_l(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),p.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Rh||!se(t))return d.delete(r),P.getTranscript(e);throw d.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Bv(Z_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:Vy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{f.delete(r)}})();return f.set(r,a),a},fe=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;d.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return d.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||tu(t.sessionID,t.directory)?(d.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Rm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return d.delete(r),n instanceof Rh||!se(t)||Bv(Z_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`reconcile-page`,durationMs:Date.now()-i,transcript:Vy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{f.delete(r)}})();return f.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(zy(t,e)))?!0:sh(n).kind===`unknown`},P={getTranscript(t){let n=zy(t,e),r=K(n),i=Vy(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=zy(t,e),r=K(n),i=P.getTranscript(t);return te(r,Dl(n.sessionID,i.boundary))},getRequestState(t){let n=zy(t,e),r=d.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=zy(t,e),r=K(n),i=P.getTranscript(t);Cl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:wl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:bl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(zy(t,e)),i=C(r),a=P.getTranscript(t).messagesByID[n];return i.messages.has(n)&&i.messages.get(n)===a?i.messages.get(n):(i.messages.set(n,a),a)},getParts(t,n){let r=K(zy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??Ky,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=zy(t,e),i=p.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||gl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=zy(t,e),i=M(r,n),a=Vv(()=>P.getTranscript(t)),o=e=>{try{let t=Vv(e);if(!a||!t)return;Hv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=m.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return p.set(i,{status:`idle`}),P.getTranscript(t);if(!gl(P.getParts(t,n))&&!g.get(K(r))?.has(n))return p.set(i,{status:`ready`}),P.getTranscript(t);p.set(i,{status:`loading`}),k(t);try{let a=await Py({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 z.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return se(r)?(P.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),gl(P.getParts(t,n))?p.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):p.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(p.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return p.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return p.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return m.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{m.get(i)===c&&m.delete(i)}),c},apply(r,i){let a=zy(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=ag(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&_.delete(K(a)),e.result.changed&&(k(r),D(r)),e.result}case`sse-event`:{let e=ag(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`sse-event-batch`:{let e=ag(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=ag(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&k(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),ag(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=ag(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&k(r),n.result}case`reset`:{if(b.delete(K(a)),g.delete(K(a)),_.delete(K(a)),n.purgeSession(E(r)),!i.page)return k(r),{applied:!0,changed:!0};let e=ag(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(k(r),D(r)),e.result}case`materialize-snapshots`:return qy(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=ag(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&k(r),e.result}default:return{applied:!1,changed:!1}}})();return le(r,a,i,s),s.applied&&(Gv({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:Vy(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,i){let a=K(zy(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);c.set(a,r.retain(e)),n.noteScopeObserved(e)}return s.add(i),A(t),()=>{let e=o.get(a);if(e){if(e.delete(i),e.size===0){let e=c.get(a);e&&(e(),c.delete(a))}j(a)}}},async ensureInitial(t){let i=zy(t,e),a=K(i);if(u&&await u.wait(Cy(i)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Cy(i));if(se(i)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)_l(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Bv(Z_({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,i);return Bv(Z_({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!r.isRetained(E(t))){let e=Date.now(),n=await fe(t,i);return Bv(Z_({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;d.delete(a);try{await s.ensureInitial()}catch(e){throw Bv(Z_({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:Vy(w(t),i.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}d.delete(a),l||Rm(i.directory,i.sessionID,{transport:i.transport,generation:i.generation}),n.noteScopeObserved(E(t)),D(t);let f=P.getTranscript(t);return Bv(Z_({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:f,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),f},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),sh(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=zy(t,e),r=K(n);b.add(r),k(t);let i=Date.now();try{await O(t).fetchPreviousPage(),D(t);let e=P.getTranscript(t);return Bv(Z_({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),e}catch(e){throw Bv(Z_({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{b.delete(r),k(t)}},getController(t){let n=zy(t,e);return a.get(K(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=zy(t,e),i=Vv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??Xm(),signal:new AbortController().signal}),s=P.getTranscript(t).liveRevision;if(P.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:o.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:s}),s<=a){let n=Wy(P.getTranscript(t),o);for(let i of n)P.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let c=P.getTranscript(t);n.noteScopeObserved(E(t));try{let e=Vv(()=>c);i&&e&&Hv({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:i,after:e})}catch{}return c},async destructiveReset(t){let r=Vv(()=>P.getTranscript(t)),i=E(t);return u&&await u.clearSession(Cy(zy(t,e))),n.destructiveReset(i,async()=>{let n=zy(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),l.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=Vv(()=>s);r&&e&&Hv({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=K(zy(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),l.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),l.delete(n);let e=c.get(n);e&&(e(),c.delete(n));let t=s.get(n);t&&(t(),s.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),u&&u.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of s.values())e();s.clear();for(let e of c.values())e();c.clear(),o.clear(),l.clear(),d.clear(),f.clear(),p.clear(),m.clear(),g.clear(),v.clear(),y.clear(),b.clear()}};return P}var Ky=Object.freeze([]);function qy(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=ag(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var Jy=`/api/openchamber/transcript-cache`,Yy=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),Xy=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Zy=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},Qy=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},$y=e=>{if(!Xy(e))throw Error(`Invalid transcript cache scope`);return{transport:Zy(e.transport,`scope`),generation:Qy(e.generation,`scope`),directory:Zy(e.directory,`scope`),sessionID:Zy(e.sessionID,`scope`)}},eb=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},tb=e=>{if(!Xy(e)||!Xy(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!Xy(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:$y(e.scope),messageID:Zy(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>eb(e,`part completeness`)),completeness:eb(e.completeness,`completeness`),contentHash:Zy(e.contentHash,`content hash`),byteSize:Qy(e.byteSize,`byte size`),lastAccessedAt:Qy(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:Qy(e.sortKey.created,`sort key`),messageID:Zy(e.sortKey.messageID,`sort key`)}}},nb=(e,t)=>{if(!Xy(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(tb);return{scope:e.scope===void 0?_c(t):$y(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},rb=e=>{if(!Xy(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:tb(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!Yy.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:tb(e.record)}}}throw Error(`Invalid transcript cache upsert`)},ib=e=>{if(!Xy(e))throw Error(`Invalid transcript cache evict`);return{evicted:Qy(e.evicted,`evict`),freedBytes:Qy(e.freedBytes,`evict`),remainingBytes:Qy(e.remainingBytes,`evict`)}},ab=e=>({scope:_c(e),records:[],byteSize:0}),ob=(e,t)=>Xy(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,sb=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`)}},cb=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 sb(r)};let i=await sb(r).catch(()=>void 0);throw Error(ob(i,`Transcript cache request failed (${r.status})`))},lb=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),ub=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function db(e={}){let t=e.fetch??F;return{async readSession(e){let n=await cb(t,`${Jy}/session`,{method:`GET`,query:lb(e)});return n.kind===`disabled`||n.kind===`not-found`?ab(e):nb(n.payload,e)},async readMessage(e,n){let r=await cb(t,`${Jy}/message`,{method:`GET`,query:{...lb(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!Xy(r.payload))throw Error(`Invalid transcript cache record`);return tb(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await cb(t,`${Jy}/message`,ub(`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 rb(i.payload)},async removeMessage(e,n){let r=await cb(t,`${Jy}/message`,ub(`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 cb(t,`${Jy}/session`,ub(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await cb(t,`${Jy}/generation`,ub(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await cb(t,`${Jy}/evict`,ub(`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 ib(r.payload)},async clearAll(){let e=await cb(t,`${Jy}/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`,pb=1,mb=`transcriptIndex`,hb=`transcriptContent`,gb=class extends Error{code;constructor(e){super(e),this.code=e}},_b=e=>({id:rc(e.scope,e.messageID),scope:_c(e.scope),scopeKey:nc(e.scope),generationKey:ic(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:_c(e.scope),messageID:e.messageID,info:gc(t.info),parts:gc(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}}),yb=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)},bb=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},xb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Sb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new gb(`database-unavailable`));return}let r=indexedDB.open(e,pb),i=!1,a=()=>{i||(i=!0,n(new gb(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(mb)){let t=e.createObjectStore(mb,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(hb)||e.createObjectStore(hb,{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}),Cb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new gb(`database-unavailable`)),r.onblocked=()=>void 0}),wb=(e=fb)=>({transaction:async t=>{let n=await Sb(e),r=n.transaction([mb,hb],`readwrite`),i=r.objectStore(mb),a=r.objectStore(hb),o=e=>xb(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:()=>Cb(e)});function Tb(e,t={}){let n=vc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(_b(t)),yc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(nc(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(_b(a)),i.push(a)}return bc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await yb(e,rc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=xc({info:i,incomingCompleteness:lc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=gc(a.slice()),c=lc(s),l=await fc(i,s),u=rc(t,i.id);return e.transaction(async e=>{let a=await yb(e,u),o=xc({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:yc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:_c(t),messageID:i.id,info:gc(i),parts:s,partCompleteness:s.map(cc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:oc(i)};return await e.putIndex(_b(d)),await e.putContent({id:u,info:gc(i),parts:s}),{status:`written`,record:yc(d)}})},async removeMessage(t,n){await e.transaction(e=>bb(e,rc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(nc(t));for(let t of n)await bb(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(ic(t));for(let t of n)await bb(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(nc)),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?ac(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await bb(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 Eb(e={}){return Tb(e.driver??wb(e.databaseName),e)}function Db(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??Ge;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Ob=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function kb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??db)(),t),i=()=>(n??=(e.createIndexedDBStore??Eb)(),n),a=()=>Db(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=>Ob([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Ab(e={}){await kb(e).clearAll()}var jb=(e,t)=>e<t?-1:+(e>t);function Mb(e){return e.filter(e=>!!e?.id).sort((e,t)=>jb(e.id,t.id))}async function Nb(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await Ug({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=r.records.map(e=>({info:up(e.info),parts:Mb(e.parts??[])}));if(!e.before&&!r.complete&&Iy(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await Ly({records:a,complete:r.complete,requestMessage:async n=>{let r=await Py({transport:i(),generation:h(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:Mb(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Mb(e.parts??[])}))}return{records:a,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function Pb(e){let t=e.client??L,n=Sg(),r=Dg({client:t,activeRegistry:n}),a=Gy({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:i,getGeneration:h},fetcher:e=>Nb({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:Xm(),historyLimit:Zm(),durableStore:e.durableStore??kb()}),o=iy({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:r,probe:{getTransport:i,getGeneration:h},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 xy(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return _u(a),ju(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),ju(null),a.destroy(),vu()}}}function Fb(e){return yu().apply(U(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var Ib=new Map;function Lb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Rb(e,t,n,r={}){let a=r.getTransportIdentity??i,o=r.getGeneration??h,s=a(),c=o(),l=Lb(e,t,s,c),u=()=>a()===s&&o()===c,d=Ib.get(l)??Promise.resolve(),f,p=new Promise(e=>{f=e}),m=d.catch(()=>void 0).then(()=>p);Ib.set(l,m);try{if(await d.catch(()=>void 0),!u())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:s,generation:c,isCurrent:u})}finally{f(),Ib.get(l)===m&&Ib.delete(l)}}var zb=new Set,Bb=new Set,Vb=new Set,Hb=new Set,Ub={onDeleteRequest(e){return zb.add(e),()=>{zb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||zb.forEach(t=>t(e))},onCreateRequest(e){return Bb.add(e),()=>{Bb.delete(e)}},requestCreate(e){let t=e??{};Bb.forEach(e=>e(t))},onDirectoryRequest(e){return Vb.add(e),()=>{Vb.delete(e)}},requestDirectoryDialog(){Vb.forEach(e=>e())},onGitRefreshHint(e){return Hb.add(e),()=>{Hb.delete(e)}},requestGitRefresh(e){e.directory.trim()&&Hb.forEach(t=>t(e))}},Wb=50,Gb=e=>{let t=Object.keys(e);if(t.length<=Wb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Wb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},Kb=Oe()(je(ke((e,t)=>({sessions:{},setSessionTodos:(t,n)=>{t&&e(e=>{let r={...e.sessions};return!n||n.length===0?t in r?(delete r[t],{sessions:r}):e:(r[t]={todos:n,touchedAt:Date.now()},{sessions:Gb(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:g(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),qb=new Set([`todowrite`,`todoread`]),Jb=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),Yb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Xb=(e,t)=>{Kb.getState().setSessionTodos(e,t)},Zb=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Qb=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},$b=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},ex=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=$b(n);e&&t.push(e)}return t},tx=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return ex(t);if(t&&typeof t==`object`)return ex(t.todos)}catch{}return[]},nx=e=>{if(!qb.has(Zb(e)))return[];let t=Qb(e);if(t&&Jb.has(t))return[];let n=e.state,r=ex(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=ex(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=ex(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?tx(i):[]};function rx(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=nx(r[e]);if(t.length>0)return t}}return[]}function ix(e){if(!e.sessionID||e.isStale?.()||Yb(e.store.getState().todo,e.sessionID))return!1;let t=rx(e.transcript);return t.length===0||e.isStale?.()||Yb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function ax(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(U(e.directory,e.sessionID));return t?ix({sessionID:e.sessionID,store:e.store,transcript:t,persist:Xb,isStale:e.isStale}):!1}var ox=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>aC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>iC,SESSION_DELETE_UNDO_MS:()=>kS,abortBusySessionForMessageEdit:()=>yC,abortCurrentOperation:()=>uC,archiveSession:()=>zS,beginOptimisticSend:()=>YS,cancelScheduledSessionDeletes:()=>RS,classifySendFailure:()=>$x,combinedSendConfirmationOptions:()=>oC,commitMessageEdit:()=>xC,createSession:()=>CS,deleteSession:()=>IS,dirStoreForDirectory:()=>Rx,dismissOpenQuestionsForSession:()=>mC,ensureSentUserMessagePresence:()=>lC,fetchMessagesForSession:()=>DC,fetchRecentSendConfirmationRecords:()=>nC,forkSession:()=>TC,getSendFailureKind:()=>Zx,getSessionLastAssistantModel:()=>Wx,isQuestionRequestNotFoundError:()=>bS,materializeConfirmedSendRecords:()=>rC,mirrorSessionIntoLiveStores:()=>Kx,optimisticInsertUserMessage:()=>eC,optimisticSend:()=>$S,patchSessionMetadata:()=>wS,refetchSessionMessages:()=>CC,rejectQuestion:()=>pC,releaseUnconfirmedQueueSend:()=>Fx,requestSessionSmartTitle:()=>HS,resolveForkMessageId:()=>yx,respondToPermission:()=>dC,respondToQuestion:()=>fC,revertToMessage:()=>hC,rollbackOptimisticSend:()=>ZS,scheduleSessionDeletes:()=>LS,setActionRefs:()=>Nx,setOptimisticRefs:()=>Px,settleOptimisticSend:()=>QS,shareSession:()=>US,shouldSuppressForkCopyEvent:()=>xx,stageMessageEdit:()=>_C,trackForkCopySessionCreated:()=>hx,unarchiveSession:()=>BS,unrevertSession:()=>wC,unshareSession:()=>WS,updateSessionTitle:()=>VS,waitForConnectionOrThrow:()=>rS,waitForSessionIdleForMessageEdit:()=>bC}),sx=2,cx=150,lx=new Set([`patch`,`step-start`,`step-finish`]),ux=3,dx=150,fx=null,px=new Map,mx=3e4;function hx(e,t){let n=t?.id;!fx||fx.runtimeKey!==c()||fx.directory!==e||!n||t?.title!==fx.expectedTargetTitle||n===fx.sourceSessionID||fx.targetSessionID||(fx.targetSessionID=n)}function gx(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function _x(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 yx(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(n?.type===`idle`)return e;for(let e=t.length-1;e>=0;--e)if(t[e]?.role===`user`)return t[e].id}async function bx(e,t){let n=Rp(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return z.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function xx(e,t,n){if(fx&&fx.runtimeKey===c()&&fx.directory===e&&t&&t===fx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${c()}:${e}:${t}`,i=px.get(r);return i?i.expiresAt<=Date.now()?(px.delete(r),!1):n<=i.messageID:!1}var Sx=null,Cx=null,wx=()=>``,Tx=new Map,Ex=null,Dx=null,Ox=null,kx=e=>new Promise(t=>setTimeout(t,e));function Ax(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e.message;if(typeof t==`string`&&t.length>0)return t;let n=e.data;if(n&&typeof n==`object`){let e=n.message;if(typeof e==`string`&&e.length>0)return e}}try{return JSON.stringify(e)}catch{return String(e)}}function jx(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Ax(e.error)}`);throw n!==void 0&&(r.status=n),r}function Mx(e,t){let n=jx(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Nx(e,t,n){if(Sx=e,Cx=t,wx=n,Tx.size>0){let e=[...Tx.values()];Tx.clear(),queueMicrotask(()=>{for(let t of e)DC(t.sessionID,t.directory)})}}function Px(e,t,n){Ex=e,Dx=t,Ox=n??null}function Fx(e){let t=e.directory??null;Dx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Ix(){if(!Sx)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Sx}function Lx(){if(!Cx)throw Error(`Child stores not initialized`);let e=wx();if(!e)throw Error(`No current directory`);return Cx.ensureChild(e)}function Rx(e,t){if(!Cx)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Cx.ensureChild(e,t)}function zx(e,t){let n=t??lS(e);return n?{store:Rx(n),directory:n}:{store:Lx(),directory:qx()}}function Bx(e,t){let{store:n,directory:r}=zx(e,t??void 0),i=r??qx()??``;return{repository:H()??bu(i,n),directory:i,store:n}}function Vx(e,t){let{repository:n,directory:r,store:i}=Bx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function Hx(e,t){return Ku(Vx(e,t).data)}function Ux(e,t){return Vx(e,t).data.messageOrder.length}function Wx(e){try{let t=Hx(e);for(let e=t.length-1;e>=0;--e){let n=t[e];if(n?.role===`assistant`&&typeof n.providerID==`string`&&n.providerID&&typeof n.modelID==`string`&&n.modelID)return{providerID:n.providerID,modelID:n.modelID}}return null}catch{return null}}function Gx(e,t){let n=Cx;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]=qE(e,n[r]),t.setState({session:i}),!0}return!1}function Kx(e,t){t&&Gx(e,t)||Gx(e)}function qx(){return wx()||void 0}function Jx(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function Yx(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 Xx=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 Zx(e){return e instanceof Xx?e.kind:null}function Qx(e){let t=Yx(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 $x(e,t){return t?Qx(e)||Yx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var eS=2e3,tS=5e3,nS=3e4;async function rS(){let e=Mm();e&&jm(`send_stream_stale`);let t=Date.now()+(e?tS:eS);for(;Date.now()<t;){if(G.getState().isConnected&&!Mm()||u()&&!Mm())return;let e=t-Date.now();if(e<=0)break;if(await G.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Mm())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw Jx()}function iS(e){return new Promise((t,n)=>{let r=setTimeout(()=>{jm(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},nS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function aS(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function oS(e){e&&Y.getState().upsertSession(e)}function sS(e,t){let n=cp(t),r=[...e.getState().session],i=ls.search(r,n.id,e=>e.id);if(i.found){let t=qE(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 cS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=aS(e);if(i)return sS(t,i);try{return sS(t,await z.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 lS(e){return uS(e)||$.getState().getDirectoryForSession(e)||qx()}function uS(e){let t=Cx;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=H()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function dS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):Ix()}function fS(e){Or.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&&Or.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var pS=()=>new Map(Array.from(Fd(),([e,t])=>[e,t.title||e]));function mS(e){return!(e.type!==`file`||Qp(e))}function hS(e){return mS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function gS(e){return e.some(hS)}async function _S(e){let t=[...e.parts];if(!gS(t))return t;let n=h(),r=e.directory??``;try{await Du(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||h()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=Bx(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],gS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function vS(e){if(gS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await pm(e.parts,{sessionTitles:pS(),directory:e.directory}),n=Or.getState(),r=n.getDraft(e.key);return{payload:t,commit:await vm({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function yS(e,t,n){let r=Cx;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 bS(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 xS(e,t){let n=Cx;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 SS(e,t,n){let r=yS(e,t,n);return r?z.getScopedSdkClient(r):dS(t)}async function CS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??qx()),a=i.directory??null;return a&&Dd(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),Y.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function wS(e,t,n){let r=t??lS(e),i=n(Rp(await z.getSession(e,r))),a=await z.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Dd(a.id,o),a}async function TS(e,t){let n;try{n=await z.getSession(e,t??lS(e))}catch{return}if(!Hp(n))return;let r=Vp(n);if(r)try{await wS(r,t??lS(r),t=>Gp(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 ES(e,t){if(!Cx)return[];let n=[],r=new Set,i=[];if(t){let e=Cx.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Cx.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 DS(e){if(Cx)for(let t of e){let e=Cx.children.get(t.directory);e&&e.setState({session:t.sessions})}}function OS(e){$.getState().setWorktreeMetadata(e,null)}var kS=1e4,AS=new Map,jS=0;function MS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function NS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),DS(e.listSnapshots),oS(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function PS(e,t){let n=t??lS(e);Y.getState().markSessionsPendingDeletion([e]);let r=ES(e,n),i=aS(e);Y.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function FS(e,t){try{if(await TS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return ES(e,t),Y.getState().removeSessions([e]),OS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(ES(e,t),Y.getState().removeSessions([e]),OS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function IS(e,t){let n=PS(e);return await FS(e,n.directory)?!0:(NS(n),!1)}function LS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>PS(e)),i=`session-delete-${Date.now()}-${jS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=AS.get(i);if(!e)return;AS.delete(i);let t=[],n=[];for(let r of e.entries)await FS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),NS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return AS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function RS(e){if(!e)return!1;let t=AS.get(e);if(!t)return!1;clearTimeout(t.timer),AS.delete(e);for(let e of[...t.entries].reverse())NS(e);return!0}async function zS(e){let t=lS(e),n=ES(e,t),r=aS(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await TS(e,t);let n=await z.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),DS(n),oS(r),!1}}async function BS(e){let t=lS(e),n=aS(e),r=n?MS(n):null;if(r&&(Y.getState().upsertSession(r),t&&Cx)){let e=Cx.children.get(t);e&&sS(e,r)}try{let n=await z.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=MS(n);if(Y.getState().upsertSession(r),t&&Cx){let e=Cx.children.get(t);e?sS(e,r):Kx(r,t)}else Kx(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&ES(e,t)),!1}}async function VS(e,t){let n=lS(e),r=aS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Zf(r):0,c=await z.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),Kx(c,n)}async function HS(e){let t=lS(e),n=aS(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 z.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),Kx(s,t)}async function US(e){let t=lS(e),n=cp(Mx(await Ix().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),Gx(n,t),n}async function WS(e){let t=lS(e),n=cp(Mx(await Ix().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),Gx(n,t),n}function GS(e){let t=Cx,n=e??wx();if(!t||!n)return{store:e?Rx(e):Lx(),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 KS(){return{identity:i(),generation:h()}}function qS(e,t){return e.isCurrent()&&i()===t.identity&&h()===t.generation}function JS(e,t){if(!qS(e,t))throw Error(`Send target changed before transport dispatch`)}function YS(e){if(!Ex||!Dx)throw new Xx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??qx()??null,n=GS(t),r=KS();JS(n,r),e.beforeOptimisticInsert?.(),JS(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),eC({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 Xx?e:new Xx(Zx(e)??$x(e,!1),e)}}function XS(e){if(!qS(e.capture,e.transport)||!Dx)return;Dx({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 ZS(e){XS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function QS(e){if(!Ex||!Dx)throw new Xx(`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 rS(),JS(n,r),s=!0,await iS(e.send(i)),!qS(n,r))throw new Xx(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Zx(c)??$x(c,s),u=c instanceof Xx?c:new Xx(l,c,i);if(!qS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await nC(a,i,o):null;if(d&&qS(n,r)){rC(n.store,a,i,d,{directory:o??void 0}),Ox?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||XS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function $S(e){await QS({ticket:e.ticket??YS({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 eC(e){if(!Ex)return!1;let t=e.directory??qx(),n=t?Rx(t):Lx(),r=t??qx()??``;if(sC(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),s={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},c=Vv(()=>Vx(e.sessionId,t).data);Ex({sessionID:e.sessionId,directory:t,message:s,parts:a});let l=Vv(()=>Vx(e.sessionId,t).data);try{c&&l&&Hv({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:i(),generation:h(),before:c,after:l})}catch{}let u=n.getState();return n.setState({session_status:{...u.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...u.session_status_observed_at,[e.sessionId]:o}}),!0}function tC(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function nC(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??sx,c=r?.retryDelayMs??cx;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!tC(r?.isCurrent)||a>0&&(await kx(c),i?.signal.aborted||!tC(r?.isCurrent)))return null;try{let a=await Ix().session.messages({sessionID:e,directory:n??void 0,limit:eh(),...i?{signal:i.signal}:{}});if(!tC(r?.isCurrent))return null;let o=(jx(a,`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.some(e=>e.info.id===t))return o}catch{}}return null}finally{o&&clearTimeout(o),r?.signal?.removeEventListener(`abort`,a)}}function rC(e,t,n,r,i){if(!r.length)return;let a=i?.directory??lS(t)??wx(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:up(e.info),parts:e.parts??[]})),skipPartTypes:lx,merge:i?.gapFillOnly===!0?Xs:Qs({purpose:`recovery`})};Su(o,s)||bu(a,e).apply(o,s)}var iC=2e3,aC={attempts:12,retryDelayMs:500},oC={presenceGraceMs:iC,recovery:{...aC}};function sC(e,t,n,r){let i=r??lS(t)??wx()??``,a=H()??bu(i,e),o=U(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function cC(e,t,n,r){let i=r?.directory??lS(t)??wx()??``;if(sC(e,t,n,i))return Promise.resolve(!0);if(!tC(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=H()??bu(i,e),f=U(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!tC(r?.isCurrent)){l(!1);return}sC(e,t,n,i)&&l(!0)}),sC(e,t,n,i)&&l(!0)})}async function lC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await cC(t,n,r,{timeoutMs:e.graceMs??oC.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!tC(a))return`cancelled`;let o=await nC(n,r,i,{...oC.recovery,isCurrent:a});return o?tC(a)?(rC(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:tC(a)?`missing`:`cancelled`}async function uC(e){let{store:t,directory:n}=zx(e),r=n?{state:`bound`,transportIdentity:i(),directory:n,sessionID:e}:null,a=r?$.getState().beginQueueAbortBlock(r):null;try{if(Mx(await Ix().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&a&&$.getState().clearQueueAbortBlock(r,a),et(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>xV);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function dC(e,t,n){await rS();let r=yS(`permission`,e,t)||lS(e)||qx();if(Mx(await SS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function fC(e,t,n){await rS();let r=yS(`question`,e,t)||lS(e)||qx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Mx(await SS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw bS(n)&&xS(e,t),n}}async function pC(e,t){await rS();let n=yS(`question`,e,t)||lS(e)||qx();try{if(Mx(await SS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw bS(n)&&xS(e,t),n}}async function mC(e){if(!e)return!1;let t=Cx;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=qp(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)xS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await pC(e,t)}catch(e){if(bS(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,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return Rb(e,r??(()=>{try{return zx(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:o,directory:c}=zx(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Ix().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=Hx(e,c).find(e=>e.id===t),d=Hx(e,c).find(e=>e.id===t)??u;if(!d||d.role!==`user`)throw Error(`The selected user message is unavailable`);let{repository:f,directory:p}=Bx(e,c),m=[...f.getParts(U(p,e),t)],h=a===void 0?s?C({transportIdentity:i()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await _S({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await pm(m,{sessionTitles:pS(),directory:c})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=o.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),w={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},w.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(o.setState(w),h){let t=Or.getState(),r=await vm({key:h,expectedRevision:t.getDraft(h)?.revision??`absent`,payload:g,runtime:t.captureDraftRuntime()});if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),r.status===`committed`&&r.current&&r.previous&&r.result?.record?.revision!==void 0&&await bm({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await z.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await bm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}let i=[...o.getState().session],a=i.findIndex(t=>t.id===e);return a>=0&&(i[a]=r,o.setState({session:i})),c&&Ub.requestGitRefresh({directory:c}),g}catch(t){let r=[...o.getState().session],i=r.findIndex(t=>t.id===e);throw i>=0&&(r[i]={...r[i],revert:b}),n()?(o.setState({session:r}),h&&v&&_!==void 0&&await bm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await bm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function gC(e,t,n,r){let a=r??lS(t)??wx(),o=U(a,t),s=Vv(()=>Vx(t,a).data),c=[...xu(t)];c.some(e=>e.directory===a&&e.sessionID===t)||c.push(o);let l=!1;for(let e of c)Su(e,{type:`remove-message`,messageID:n})!=null&&(l=!0);l||bu(a,e).apply(o,{type:`remove-message`,messageID:n});let u=Vv(()=>Vx(t,a).data);try{s&&u&&Hv({trigger:`user-delete`,sessionID:t,directory:a,transport:i(),generation:h(),before:s,after:u})}catch{}}async function _C(e,t,n,r){let a=n?.info,o=n?.parts,s=r?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=zx(e,s).directory}else{c=zx(e,s).directory;let{data:n}=Vx(e,c),r=Ku(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=r?.draftKey??C({transportIdentity:i()},e),{commit:u}=await vS({key:l,parts:await _S({directory:c,sessionID:e,messageID:t,parts:o??[]}),directory:c});if(u.status!==`committed`||!u.current)throw Error(`composer-restoration-commit-${u.status}`);let d=u.result?.record?.revision,f=u.previous;return d===void 0||!f?{rollback:async()=>({status:`skipped`})}:{rollback:async()=>({status:(await bm({key:l,restoredRevision:d,previous:f})).status})}}function vC(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 yC(e,t){let n=t?.directory,{store:r,directory:i}=zx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Ix().session.abort({sessionID:e,directory:i})}catch{}}async function bC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=zx(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 xC(e,t,n){let r=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:s}=zx(e,r),c=Vv(()=>Vx(e,r).data);try{await yC(e,{directory:r}),await bC(e,{directory:r});let n=new Set((await SC(e,r)).map(e=>e.id)),i=vC(t,Hx(e,r),n,{preserveMessageId:a});for(let t of[...i].reverse())await z.deleteSessionMessage(e,t.id,s),gC(o,e,t.id,s)}finally{try{let t=Vv(()=>Vx(e,r).data);c&&t&&Hv({trigger:`user-edit`,sessionID:e,directory:s,transport:i(),generation:h(),before:c,after:t})}catch{}}}async function SC(e,t){let{directory:n}=zx(e,t);return(jx(await Ix().session.messages({sessionID:e,directory:n,limit:$m()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>up(e.info))}async function CC(e,t){let{store:n,directory:r}=zx(e,t),a=Vv(()=>Vx(e,t).data),o=(jx(await Ix().session.messages({sessionID:e,directory:r,limit:$m()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Vv(()=>Vx(e,t).data);a&&n&&Hv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let s=o.map(e=>({info:up(e.info),parts:e.parts??[]})),c=U(r??wx(),e);Su(c,{type:`materialize-snapshots`,records:s,skipPartTypes:lx})||bu(r??wx(),n).apply(c,{type:`materialize-snapshots`,records:s,skipPartTypes:lx});try{let n=Vv(()=>Vx(e,t).data);a&&n&&Hv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return s.map(e=>e.info)}async function wC(e,t){return Rb(e,t??(()=>{try{return zx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=zx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Ux(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Ix().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Ix().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Mx(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<ux;r+=1){if(r>0&&(await kx(dx),!n())||(await CC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Ux(e,i)>o)return}if(Ux(e,i)<=o){let n=i??wx(),a=H()??bu(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await CC(e,t)}})}async function TC(e,t,n,r){let i=c(),{store:a,directory:o}=zx(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await cS(e,a,o);Dd(e,o);let l=a.getState(),u=l.session_status[e],d=Hx(e,o);u?.type,d.length;let f=yx(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await CC(e),l=a.getState(),u=l.session_status[e],d=Hx(e,o),f=yx(void 0,d,u)),!n&&l.session_status[e]?.type!==`idle`&&!f)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:Ux(e,o)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=Vx(e,o),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(U(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!Qp(e)).map(e=>e.text||e.content||``).join(`
462
462
  `).trim();let v=g.filter(e=>e.type===`file`&&!Qp(e));fx={operationId:t,runtimeKey:i,directory:o,sourceSessionID:e,expectedTargetTitle:gx(s.title)},await _x(t,`copying`);let y;try{if(y=await z.forkSession(e,f,o),y.id,c()!==i)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),fx?.operationId===t&&(fx=null),!1;await _x(t,`opening`);try{y=await bx(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 r=[...a.getState().session],i=ls.search(r,y.id,e=>e.id);i.found||(r.splice(i.index,0,y),a.setState({session:r}));let s=U(o,y.id),l=H();l&&typeof l.destructiveReset==`function`?await l.destructiveReset(s):Su(s,{type:`reset`}),vx(t,y.id);let u=$.getState().currentSessionId,d=u===e||u===y.id;d&&$.getState().setCurrentSession(y.id,o),await _x(t,`loading`),y.id;let f=H()??bu(o,a),p=U(o,y.id),m=f.getRequestState?.(p);(!(f.hasSession?.(p)??!1)||m?.status===`error`)&&await DC(y.id,o);let g=Hx(y.id,o).at(-1)?.id;g&&px.set(`${c()}:${o}:${y.id}`,{messageID:g,expiresAt:Date.now()+mx}),d&&h&&_&&Or.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&fS(v)}finally{fx?.operationId===t&&(fx=null)}return y.id,!0}var EC=new Map;async function DC(e,t){let n=t??qx();if(!n)return;let r=c(),i=Qm(),a=`${r}:${n}:${e}:${i}`;if(!Sx||!Cx){Tx.set(a,{sessionID:e,directory:n});return}let o=EC.get(a);if(o)return o;let s=OC(e,n,r,i).finally(()=>{EC.get(a)===s&&EC.delete(a)});return EC.set(a,s),s}async function OC(e,t,n,r){Ix();let i=Rx(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=H()??bu(t,i),l=U(t,e),u=c.getTranscript(l),d=c.getPagination(l),f=c.getRequestState?.(l),p=e=>e.role===`user`||e.clientRole===`user`,m=u.messageOrder.map(e=>u.messagesByID[e]).filter(e=>!!e),h=m.some(p),g=d.boundary,_=g.kind===`has-more`||g.kind===`exhausted`,v=(c.hasSession?.(l)??m.length>0)&&(h||g.kind===`exhausted`)&&_&&f?.status!==`error`,y=()=>$.getState().currentSessionId!==e;if(v){if(Lm(t,e)){ax({directory:t,sessionID:e,store:i,transcript:u});return}if(H()){try{await wu(t,e)}catch{return}if(y())return;ax({directory:t,sessionID:e,store:i,isStale:y}),await Sy({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}ax({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await Nb({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:lx}),b=n.records.length,Rm(t,e)}catch{return}y()||(ax({directory:t,sessionID:e,store:i,isStale:y}),await Sy({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var kC=new Map,AC=e=>{kC.set(e,(kC.get(e)??0)+1)},jC=e=>(kC.get(e)??0)>0,MC=e=>{let t=kC.get(e)??0;return t<=0?!1:(t===1?kC.delete(e):kC.set(e,t-1),!0)},NC=18e4,PC=400,FC=300,IC=15,LC=`FINAL_REVIEW_STATUS: no_remaining_findings`,RC=LC.toLowerCase(),zC=new Set,BC=new Set,VC=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},HC=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},UC=e=>{let t=e.role;return typeof t==`string`?t:``},WC=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},GC=(e,t)=>Rd(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`}),KC=(e,t,n,r=0,i)=>{let a=Ld(e,t),o=new Set;for(let e of a)GC(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(UC(s)!==`assistant`||!VC(s)||HC(s)<r-1e3)continue;let c=WC(s);if(!ew(s,i)||c&&o.has(c))continue;let l=Ip(Rd(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},qC=(e,t)=>zd(e,t)?.type===`idle`,JC=e=>e===c(),YC=e=>{Kp.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},XC=e=>{if(e&&!JC(e))throw Error(`Auto-review stopped because the runtime changed.`)},ZC=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),QC=e=>e.trim().split(`
463
463
  `).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===RC,$C=e=>{let t=e.trimEnd().split(`
464
464
  `);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===RC&&t.pop(),t.join(`
@@ -473,4 +473,4 @@ Use the results below as source material. Do not mention that the inputs were hi
473
473
 
474
474
  [… objective trimmed for the auditor — the full text was delivered in the chat message …]
475
475
 
476
- `,EH=async e=>{if(e.length<=5e3)return e;let t=await dH(e);if(t)return t.slice(0,pH);let n=Math.max(0,Math.floor((pH-93)/2)),r=ft.getState().dictionary;return KT.error(pt(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${TH}${e.slice(-n)}`};async function DH(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await EH(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await SH(e,a),c=Date.now();await xH(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:bH(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function OH(e,t){await xH(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function kH(e,t,n){n===`paused`&&(ZV(e),uC(e)),await xH(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 AH(e,t){let n=!1;await xH(e,t,e=>(n=e?.status===`active`,null)),CH(e),n&&(ZV(e),uC(e))}var jH=`<system-reminder>`,MH=`</system-reminder>`,NH=e=>{let t=e.trim();return t?t.startsWith(jH)&&t.endsWith(MH)?t:`${jH}\n${t}\n${MH}`:``},PH=(e,t=c())=>`${t}\n${e}`,FH=(e,t)=>{let n=IH.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(PH(e))??n.sessionMemoryState.get(e)},IH=Oe()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??PH(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}})})),LH=Oe((e,t)=>({attachments:new Map,setAttachment:(t,n)=>e(e=>{let r=new Map(e.attachments);return r.set(t,n),{attachments:r}}),getAttachment:e=>t().attachments.get(e),clearAttachment:t=>e(e=>{let n=new Map(e.attachments);return n.delete(t),{attachments:n}})})),RH=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function zH(e,t){if(e){if(!e.degraded&&e.cwd)return RH(e.cwd);if(e.worktreeRoot)return RH(e.worktreeRoot);if(e.cwd)return RH(e.cwd)}return t?RH(t):null}function BH(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function VH(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 HH(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?RH(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=RH(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 UH=`openchamber.session-switch.start`,WH=`openchamber.session-switch.highlight-painted`,GH=`openchamber.session-switch.content-committed`,KH=`data-openchamber-session-switch-highlight-ms`,qH=`data-openchamber-session-switch-content-ms`,JH=`openchamber.session-switch.highlight-latency`,YH=`openchamber.session-switch.content-latency`,XH=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,ZH=()=>XH()&&performance.getEntriesByName(UH,`mark`).length>0,QH=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},$H=(e=!1)=>{XH()&&(!e&&performance.getEntriesByName(UH,`mark`).length>0&&performance.getEntriesByName(GH,`mark`).length===0||(performance.clearMarks(UH),performance.clearMarks(WH),performance.clearMarks(GH),performance.clearMeasures(JH),performance.clearMeasures(YH),typeof document<`u`&&(document.documentElement.removeAttribute(KH),document.documentElement.removeAttribute(qH)),performance.mark(UH)))},eU=()=>{if(!ZH())return;performance.mark(WH),performance.measure(JH,UH,WH);let e=performance.getEntriesByName(JH,`measure`).at(-1);e&&QH(KH,e.duration)},tU=()=>{if(!ZH())return;performance.mark(GH),performance.measure(YH,UH,GH);let e=performance.getEntriesByName(YH,`measure`).at(-1);e&&QH(qH,e.duration)},nU={revision:0,sessionId:null},rU=new Set,iU=e=>{nU={revision:nU.revision+1,sessionId:e};for(let e of rU)e(nU);return nU},aU=()=>nU,oU=e=>(rU.add(e),()=>rU.delete(e)),sU=6e3;function cU(e){let t=e.parts?e.parts.map(e=>({...e})):[];if(e.parts)return{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t};e.text!==void 0&&t.push({id:ge(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:ge(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:ge(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:ge(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:ge(`prt`),type:`agent`,name:e.agentMentionName}),{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t}}function lU(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function uU(e,t){if(!e)return;let n=lU(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 dU(e){let t=e.directory??void 0,n=pU(e.sessionId,e.onSendConfirmed),r=e.content;if(e.inputMode===`shell`){let r=e.messageID??ge(`msg`);return z.shellSession({sessionId:e.sessionId,directory:t,agent:e.agent??``,model:{providerID:e.providerID,modelID:e.modelID},command:e.content}).then(()=>{n(r)})}let a=de(e.content);if(a){let o=a.commandName.toLowerCase(),s=a.argumentsText,c=t??Pe.getState().currentDirectory??null,l=i(),u=Di(c,l),d=qa(c,l),f=L.getQueryState(u.queryKey),p=L.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(ki(c,l)):L.fetchQuery({...u,staleTime:1/0}),h?Promise.resolve(Ya(L,c,l)):L.fetchQuery({...d,staleTime:1/0})]);if(i()!==l)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===o)?void 0:g.find(e=>e.name.toLowerCase()===o);if(v?.isBuiltIn===!1)r=`[command:${v.reference??v.name}]${s?` ${s}`:``}`;else if(v)return $S({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=>z.sendCommand({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,command:v.name,arguments:s,agent:e.agent,variant:e.variant,files:e.files,messageId:n,directory:t}).then(()=>{})})}return $S({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=>z.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 fU(e,t){F(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function pU(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{fU(e,r)}}}}var mU=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},hU=f(),gU=`oc.chatInput.lastDraftTarget`,_U=()=>{try{let e=hU.getItem(gU);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:_(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},vU=e=>{try{hU.setItem(gU,JSON.stringify(e))}catch{}},yU=Qo,bU=e=>{if(e)return LH.getState().getAttachment(e)},xU=(e,t,n)=>{if(!e)return null;let r=zH(bU(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return _(i);if(n?.includeRuntimeMemory!==!1){let t=DU.get(OU());if(t?.sessionId===e&&t.directory)return _(t.directory)}let a=Pd().find(t=>t.id===e);return a?mU(a):null},SU=e=>{let t=Pd().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},CU=async(e,t)=>{await G.getState().activateDirectory(_(e),t)},wU={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},TU=new Map,EU=0,DU=new Map,OU=e=>(e??c()).trim()||`default`,kU=e=>({...e}),AU=(e,t)=>{let n=DU.get(e);DU.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?kU(n.draft):{...wU},...t})},jU=(e,t)=>{let n=Ci.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=Qo(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},MU=async(e,t)=>{if(!e)return;let n=jU(e,t);n&&await Pk(n)&&await UO(e)},NU=(e,t)=>{let n=Ci.getState(),r=Qo(n.projects,t,e);r&&n.moveProjectToTop(r.id)},PU=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,FU=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,IU=(e,t)=>FU(e,t)&&PU(Or.getState().captureDraftRuntime(),t.runtime);async function LU(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?cU({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return AU(OU(),{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 RU(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return AU(OU(),{draft:n}),{newSessionDraft:n}})}async function zU(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=OU(),t=s.draftID,n=o,AU(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=Or.getState().captureDraftRuntime(),o=S(a,t),s=Or.getState().getDraft(o);return{token:n,draftID:t,draft:kU(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function BU(e){$.setState(t=>{let n=t.newSessionDraft;if(IU(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=DU.get(e.runtimeMemoryKey);return r&&FU(r.draft,e)&&AU(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=DU.get(e.runtimeMemoryKey);t&&FU(t.draft,e)&&AU(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function VU(e){let t=DU.get(e.runtimeMemoryKey);t&&FU(t.draft,e)&&AU(e.runtimeMemoryKey,{draft:{...wU}})}async function HU(e,t,n){if(!e.source)return null;let r;try{r=await Or.getState().finalizeDraftOwnership({source:e.source.key,destination:C(e.runtime,t),expectedSourceRevision:e.source.revision,disposition:n,runtime:e.runtime})}catch{return console.warn(`[session-ui-store] draft ownership finalization rejected`,{disposition:n,sessionID:t,draftID:e.draftID}),null}return r.status!==`committed`&&console.warn(`[session-ui-store] draft ownership finalization did not commit`,{status:r.status,disposition:n,sessionID:t,draftID:e.draftID}),r}function UU(e,t){let n=t??e.directory??null;n&&Dd(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function WU(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=_(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!IU(l,r);UU(e,c);let f=G.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&rO.getState().addSessionToFolder(t,a,e.id)}return d||(vU({projectId:o??null,directory:c}),CU(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),Jo.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(Jo.getState().saveSessionAgentSelection(e.id,p),Jo.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),Jo.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),NU(c,$.getState().availableWorktreesByProject),u&&et(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>cM);return{usePermissionStore:e}},void 0).then(({usePermissionStore:t})=>t.getState().setSessionAutoAccept(e.id,!0)).catch(e=>{console.warn(`Failed to apply draft permission auto-accept to new session:`,e)})),d&&r&&VU(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function GU(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await pO(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await MU(t,n);let r=t??z.getDirectory();return{directory:_(r),projectId:n}}async function KU(e,t){let n=await zU(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 GU(r),o=a??z.getDirectory(),s=await CS(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&eC({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 WU(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return BU(n),null}}async function qU(e){let t=await KU(e);return t?(await HU(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var JU=2,YU=300;async function XU(e){let{useI18nStore:t,formatMessage:n}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-Dd7SwiXs.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 ZU(e){let{content:t,providerID:n,modelID:r,agent:i,agentMentionName:a,variant:o,attachments:s,additionalParts:c,onSessionReady:l}=e,u=$.getState().newSessionDraft,d=typeof i==`string`&&i.trim().length>0?i.trim():void 0,f=G.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??ge(`msg`),h=cU({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 zU(h);if(!g)throw await XU(`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 GU(_),f=await z.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=Te()?.conversations;if(!v?.createWithPrompt)throw await XU(`chat.chatInput.toast.messageSendFailed`);let y=d??z.getDirectory()??``,b=Rx(y,{bootstrap:!1}),x=()=>PU(Or.getState().captureDraftRuntime(),g.runtime),S;for(let e=0;e<=JU;e++){e>0&&await new Promise(e=>setTimeout(e,YU));try{if(S=await v.createWithPrompt({input:{type:`prompt`},directory:y,..._.title?{title:_.title}:{},..._.parentID?{parentID:_.parentID}:{},messageID:m,model:{providerID:n,modelID:r},...p?{agent:p}:{},...o?{variant:o}:{},parts:f}),!S||S.ok||S.phase!==`unavailable`||(S=void 0,e===JU))break}catch{if(e===JU)break}}if(!S)throw BU(g),Or.getState().setPendingInputText(t,`replace`),await XU(`chat.chatInput.toast.messageSendFailed`);if(S.ok){let e=S.session,t=d??e.directory??null,i=t??y;UU(e,t);let a=i===y?b:Rx(i,{bootstrap:!1});uU(e.id,h);let s=await WU(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 HU(g,e.id,`consume`),fU(e.id,m),s.selected&&AC(e.id),lC({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:x}).then(t=>{t===`missing`&&console.warn(`[combined] sent user message never materialized`,{sessionId:e.id,messageID:m,directory:i})}).catch(t=>{console.warn(`[combined] sent user message presence check failed`,{sessionId:e.id,messageID:m,directory:i,error:t instanceof Error?t.message:String(t)})}),l?.(e.id,t);return}if(!S.ok){let e=S.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw BU(g),Or.getState().setPendingInputText(t,`replace`),await XU(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=S,i=e.session,a=d??i.directory??null,s=await WU(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 nC(i.id,m,a,{isCurrent:x});if(e&&x()){await HU(g,i.id,`consume`),fU(i.id,m),s.selected&&AC(i.id),rC(Rx(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await HU(g,i.id,`preserve`),Or.getState().setPendingInputText(t,`replace`),await XU(`chat.chatInput.toast.sendStatusUnknown`)}throw await HU(g,i.id,`preserve`),Or.getState().setPendingInputText(t,`replace`),await XU(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw BU(g),e}}var QU=`oc.worktreeMap`,$U=()=>{try{let e=f().getItem(QU);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}},eW=e=>{try{f().setItem(QU,e)}catch{}},tW=e=>{let t=[];for(let n of e.values())t.push(...n);return t},nW=$U(),$=Oe()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...wU},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:tW(nW),availableWorktreesByProject:nW,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,sessionPlanAvailable:new Map,pendingChangesBarDismissed:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map,clearRetainedPendingUserMessages:(t,n)=>{!t||n.length===0||e(e=>{let r=e.retainedPendingUserMessages.get(t);if(!r?.length)return e;let i=new Set(n),a=r.filter(e=>!i.has(e.info.id));if(a.length===r.length)return e;let o=new Map(e.retainedPendingUserMessages);return a.length===0?o.delete(t):o.set(t,a),{retainedPendingUserMessages:o}})},clearStagedMessageEdit:t=>{e(e=>!e.stagedMessageEdit||t&&e.stagedMessageEdit.sessionId!==t?e:{stagedMessageEdit:null})},beginMessageEditCommit:(t,n)=>{e({messageEditCommitting:{sessionId:t,messageId:n}})},endMessageEditCommit:(t,n)=>{e(e=>{let r=e.messageEditCommitting;return!r||r.sessionId!==t||r.messageId!==n?e:{messageEditCommitting:null}})},markMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)===n)return e;let r=new Map(e.pendingSendMessageIDs);return r.set(t,n),{pendingSendMessageIDs:r}})},clearMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)!==n)return e;let r=new Map(e.pendingSendMessageIDs);return r.delete(t),{pendingSendMessageIDs:r}})},setCurrentSession:(n,r)=>{iU(n),b(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&($H(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Or.getState().setActiveAttachmentDraft(n?C({transportIdentity:i()},n):null);let s=OU();TU.set(s,n);let c=Pe.getState(),l=xU(n,e=>t().worktreeMetadata.get(e)),u=z.getDirectory()??c.currentDirectory??null,d=(r?_(r):null)??l??u,f=Ci.getState(),p=d?Qo(f.projects,t().availableWorktreesByProject,d):null;e({currentSessionId:n,currentSessionDirectory:n?d??null:null}),AU(s,{sessionId:n,directory:d??null}),a!==n&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?d??null:null}),n&&DC(n,d);try{d&&c.currentDirectory!==d&&c.setDirectory(d,{showOverlay:!1}),p&&f.activeProjectId!==p.id&&f.setActiveProjectIdOnly(p.id),z.setDirectory(d??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!FH(e)?.isStreaming){let t=Ld(e);t.length>0&&IH.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(lA(n),QN(d??``,n))},prepareForRuntimeSwitch:n=>{let r=OU(n),i=Pe.getState().currentDirectory||null,a=t().currentSessionId,o=i?kd(i):null;MM({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),TU.set(r,t().currentSessionId),AU(r,{sessionId:a,directory:i,draft:kU(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=OU(t),r=DU.get(n),a=r?.sessionId??TU.get(n)??null;b(a);let o=r?.draft?kU(r.draft):{...wU},s=r?.directory??null;s&&Pe.getState().setDirectory(s,{showOverlay:!1}),e({currentSessionId:a,currentSessionDirectory:a?s:null,newSessionDraft:a?{...wU}:o,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,sessionAbortFlags:new Map,queueAbortBlocks:new Map,pendingChangesBarDismissed:new Map,retainedPendingUserMessages:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map}),Or.getState().setActiveAttachmentDraft(a?C({transportIdentity:i()},a):o.open&&o.draftID?S({transportIdentity:i()},o.draftID):null),a?QN(s??z.getDirectory()??``,a):QN(``,``)},openNewSessionDraft:n=>{if(_I.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let a=Ci.getState(),o=a.projects,s=t().availableWorktreesByProject,c=_(t().currentSessionDirectory??null),l=_(Pe.getState().currentDirectory??null),u=_U(),d=n?.directoryOverride===void 0?null:_(n.directoryOverride),f=yU(o,s,d),p=n?.ensureProjectForDirectory&&d&&!f?a.addProject(d):null;p&&(a=Ci.getState());let h=a.projects,g=a.getActiveProject(),v=n?.selectedProjectId?h.find(e=>e.id===n.selectedProjectId)??null:null,y=g||(a.activeProjectId?h.find(e=>e.id===a.activeProjectId)??null:h[0]??null),x=u?.projectId?h.find(e=>e.id===u.projectId)??null:null,C=yU(h,s,u?.directory??null),w=yU(h,s,c),T=yU(h,s,l),E=v||(d===null?w||(l?T:C??x??y):p??f),D=d===null?v?_(v.path??null):c||l||(u?.directory?u.directory:_(E?.path??null)):d;vU({projectId:E?.id??null,directory:D}),E&&a.activeProjectId!==E.id&&a.setActiveProjectIdOnly(E.id);let O=le({projectId:E?.id??null,directory:D}),k=S({transportIdentity:i()},O),A=Or.getState().getDraft(k),j={open:!0,draftID:O,selectedProjectId:E?.id??null,directoryOverride:D,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:_(n?.bootstrapPendingDirectory??null),preserveDirectoryOverride:n?.preserveDirectoryOverride===!0,parentID:n?.parentID??null,title:n?.title,initialPrompt:n?.initialPrompt,syntheticParts:n?.syntheticParts,targetFolderId:n?.targetFolderId,submissionToken:r.open&&r.draftID===O?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},ee=t().currentSessionId,te=t().currentSessionDirectory;e({newSessionDraft:{...j},currentSessionId:null,currentSessionDirectory:null,error:null}),b(null),m.getState().setActiveMainTab(`chat`),ee&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:ee,previousDirectory:te,nextSessionId:null,nextDirectory:null}),AU(OU(),{sessionId:null,directory:D,draft:j}),Or.getState().setActiveAttachmentDraft(k),A||Or.getState().clearAttachedFiles(),n?.initialPrompt&&Or.getState().setPendingInputText(n.initialPrompt);let M=_(E?.path??null)??D,ne=E?_(M):null,re=j.draftID,ie=i();CU(M,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=_(G.getState().activeDirectoryKey);!e.open||e.draftID!==re||i()!==ie||!ne||n!==ne||G.getState().applyDefaultModelAgentSelection({projectDefaultModel:E?.defaultModel})}),D&&D!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(D)},closeNewSessionDraft:()=>{let t={open:!1,draftID:null,selectedProjectId:null,directoryOverride:null,pendingWorktreeRequestId:null,bootstrapPendingDirectory:null,preserveDirectoryOverride:!1,parentID:null,title:void 0,initialPrompt:void 0,syntheticParts:void 0,targetFolderId:void 0,draftSubmitting:!1,draftEstablishing:!1};e({newSessionDraft:t}),AU(OU(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=_(t.directoryOverride??e.newSessionDraft.directoryOverride);let i=n?.force===!0;return{newSessionDraft:{...e.newSessionDraft,selectedProjectId:t.projectId??t.selectedProjectId??e.newSessionDraft.selectedProjectId,directoryOverride:t.directoryOverride??e.newSessionDraft.directoryOverride,...i?{bootstrapPendingDirectory:null,preserveDirectoryOverride:!1}:{}}}}),CU(r,{source:`setNewSessionDraftTarget`}),r&&r!==Pe.getState().currentDirectory&&Pe.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=sU)=>{let r=fe(),i=D(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=D(t);if(e.queueAbortBlocks.get(r)?.token!==n)return e;let i=new Map(e.queueAbortBlocks);return i.delete(r),{queueAbortBlocks:i}}),pruneQueueAbortBlocks:(t=Date.now())=>e(e=>{let n;for(let[r,i]of e.queueAbortBlocks)i.expiresAt>t||(n||=new Map(e.queueAbortBlocks),n.delete(r));return n?{queueAbortBlocks:n}:e}),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=Ld(r);if(i.length===0)return null;let a=nA(i,e=>Rd(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(Qk(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?LH.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}):LH.getState().clearAttachment(t),e(e=>{let r=new Map(e.worktreeMetadata);return n?r.set(t,n):r.delete(t),{worktreeMetadata:r}})},overrideNewSessionDraftTarget:t=>{let n=null;e(e=>{let r={...e.newSessionDraft,...t};return n=_(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),CU(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(n)},resolvePendingDraftWorktreeTarget:(t,n,r)=>e(e=>!e.newSessionDraft?.open||e.newSessionDraft.pendingWorktreeRequestId!==t?e:{newSessionDraft:{...e.newSessionDraft,selectedProjectId:r?.projectId??e.newSessionDraft.selectedProjectId??null,directoryOverride:_(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:_(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:_(t)}}:e),setPendingDraftWorktreeRequest:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,pendingWorktreeRequestId:t}}:e),getWorktreeMetadata:e=>t().worktreeMetadata.get(e),dismissPendingChangesBar:(n,r)=>{let i=new Map(t().pendingChangesBarDismissed);r===null?i.delete(n):i.set(n,r),e({pendingChangesBarDismissed:i})},sendMessage:async(n,r,i,a,o,s,c,l,u,d)=>{let f=t().stagedMessageEdit,p=d?.sessionId??t().currentSessionId,h=d?.commitStagedMessageEdit&&f&&f.sessionId===p?f:null,g=d?.sessionId??t().currentSessionId;if(g){let n=new Map(t().pendingChangesBarDismissed);n.delete(g),e({pendingChangesBarDismissed:n})}let v=t().newSessionDraft,y=typeof a==`string`&&a.trim().length>0?a.trim():void 0,b=u!==`shell`&&n.trim().length>0?vI.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=m.getState(),t=NH(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let S=(e,t)=>{if(!x)return;let r=m.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;DH(e,t??void 0,{objective:a,tokenBudget:i},null).catch(e=>{console.warn(`[session-ui-store] failed to set goal from armed send`,e)})};if(!d?.sessionId&&v?.open){if(u!==`shell`&&!n.trimStart().startsWith(`/`)&&!d?.delivery&&Te()?.conversations?.createWithPrompt){await ZU({content:n,providerID:r,modelID:i,agent:y,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:d?.messageID,onSessionReady:S});return}let e=d?.messageID??v.pendingUserMessage?.info.id??ge(`msg`),a=cU({messageID:e,sessionID:`draft:pending`,providerID:r,modelID:i,agent:y,text:n,attachments:o,additionalParts:v.syntheticParts?.length?[...c||[],...v.syntheticParts]:c,agentMentionName:s}),f=await KU({providerID:r,modelID:i,agent:y,variant:l},a);if(!f)throw Error(`Failed to create session`);let{materialized:p,claim:m}=f,h=p.syntheticParts?.length?[...c||[],...p.syntheticParts]:c;AC(p.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await dU({sessionId:p.sessionId,directory:p.directory,content:n,providerID:r,modelID:i,agent:p.agent,agentMentionName:s,variant:l,inputMode:u,files:g,delivery:d?.delivery,messageID:e,optimisticParts:a.parts,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:h?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))}),await HU(m,p.sessionId,`consume`)}catch(e){throw await HU(m,p.sessionId,`preserve`),e}NU(p.directory,t().availableWorktreesByProject),S(p.sessionId,p.directory);return}let C=d?.sessionId??t().currentSessionId,w=C?Jo.getState().getSessionAgentSelection(C):null,T=G.getState().currentAgentName,E=y||w||T||void 0;if(C&&Jo.getState().saveSessionModelSelection(C,r,i),C&&E&&(Jo.getState().saveSessionAgentSelection(C,E),Jo.getState().saveAgentModelForSession(C,E,r,i),Jo.getState().saveAgentModelVariantForSession(C,E,r,i,l)),C){let e=IH.getState(),t=FH(C);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(PH(C),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),IH.setState({sessionMemoryState:n})}}let D=C?_(d?.directoryHint)??_(t().getDirectoryForSession(C)):null;C&&AC(C);let O=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(h)try{await xC(h.sessionId,h.messageId,{directory:D??void 0}),t().stagedMessageEdit===h&&e({stagedMessageEdit:null})}catch(e){throw t().endMessageEditCommit(h.sessionId,h.messageId),e}try{await dU({sessionId:C||``,directory:D,content:n,providerID:r,modelID:i,agent:E,agentMentionName:s,variant:l,inputMode:u,files:O,delivery:d?.delivery,messageID:d?.messageID,ticket:d?.ticket,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:c?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))})}finally{h&&t().endMessageEditCommit(h.sessionId,h.messageId)}NU(D,t().availableWorktreesByProject),C&&S(C,D)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await CS(n,r??z.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),AU(OU(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&rO.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}}),AU(OU(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>IS(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await IS(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>zS(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await zS(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await VS(e,t)},requestSessionSmartTitle:async e=>{await HS(e)},shareSession:async e=>US(e),unshareSession:async e=>WS(e),revertToMessage:async(e,t,n)=>{await hC(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await _C(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Ld(e),r=Nd().find(t=>t.id===e)?.revert?.messageID,i=ps(n,r);if(!i)return;let a=Rd(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 et(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 et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-Dd7SwiXs.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 et(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>ox);return{unrevertSession:e}},void 0);await t(e);let{toast:n}=await et(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 et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-Dd7SwiXs.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=Nd().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=ms(Ld(e),r);if(i){await t().revertToMessage(e,i.id,{skipRedoPush:!0});let{toast:n}=await et(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 et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-Dd7SwiXs.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 wC(e);let{toast:a}=await et(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 et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-Dd7SwiXs.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=SU(n),s=++EU;try{let a=i?.directory??t().getDirectoryForSession(n)??z.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await et(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 TC(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await et(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 et(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=SU(n),a=++EU;try{let r=t().getDirectoryForSession(n)??z.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await et(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 TC(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await et(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 et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===a?{forkTransition:null}:e)}},getSessionsByDirectory:e=>{let t=_(e);return t?Pd().filter(e=>mU(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=xU(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=Y.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?KE(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:xU(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Ld(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=>Jo.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Ld(e);Nd().find(t=>t.id===e),`${e}`,t.length,t.map(e=>({id:e.id,role:e.role,tokens:e.role===`assistant`?e.tokens:void 0}))},pollForTokenUpdates:()=>{},setSessionDirectory:(n,r)=>{let i=_(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),AU(OU(),{sessionId:n,directory:i}))},markSessionPlanAvailable:t=>{e(e=>{if(e.sessionPlanAvailable.get(t)===!0)return e;let n=new Map(e.sessionPlanAvailable);return n.set(t,!0),{sessionPlanAvailable:n}})},isSessionPlanAvailable:e=>t().sessionPlanAvailable.get(e)??!1}));TM((e,t)=>{$.getState().setCurrentSession(e,t)});var rW=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==rW&&(rW=t,eW(t))}});function iW(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function aW(e){return e.length>1?e.slice(0,-1):[]}function oW(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function sW(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 cW={activeTab:`projects`,secondary:null},lW=0,uW=null,dW=e=>{let t=++lW;return uW={generation:t,sessionId:e.sessionId,directory:_(e.directory)??null},t},fW=e=>{let t=uW;return t&&t.generation===lW&&t.sessionId===e.sessionId&&t.directory===(_(e.directory)??null)?(uW=null,`internal`):(uW=null,`external`)},pW=()=>{lW+=1,uW=null},mW=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&_(n)===_(e.directory)?pW():dW(e),t.setCurrentSession(e.sessionId,e.directory??null)},hW=Oe(e=>({...cW,setActiveTab:t=>{pW(),e({activeTab:t,secondary:null})},openSession:t=>{e({secondary:{kind:`chat`,routes:[_W(t,`root`)]}}),mW(t)},pushSession:t=>{e(e=>{let n=_W(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?iW(e.secondary.routes,n):[n]}}}),mW(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=aW(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=hW.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&mW(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=sW(e.secondary.routes,_W(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:oW(e.secondary.routes,_W(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=>{pW(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{pW(),mt.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{pW(),e({secondary:{kind:`instances`}})},closeSecondary:()=>{pW(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{pW(),e({...cW})}})),gW=1,_W=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${gW++}`,sessionId:e.sessionId,directory:e.directory??null}),vW=e=>!Ge()||Ke()?!1:(hW.getState().pushSession(e),!0);export{_B as $,eo as $a,Np as $i,kO as $n,BS as $r,$F as $t,vH as A,nu as Aa,t_ as Ai,JO as An,jr as Ao,vw as Ar,qF as At,dV as B,Yo as Ba,vm as Bi,Uk as Bn,xC as Br,ZP as Bt,PH as C,ku as Ca,x_ as Ci,GA as Cn,Oi as Co,bT as Cr,vI as Ct,OH as D,hu as Da,n_ as Di,uA as Dn,Rr as Do,$w as Dr,mI as Dt,wH as E,Tu as Ea,p_ as Ei,sA as En,Hr as Eo,nT as Er,hI as Et,MV as F,cs as Fa,sg as Fi,Rk as Fn,Qt as Fo,kS as Fr,$N as Ft,CB as G,Ho as Ga,Kp as Gi,Fk as Gn,HS as Gr,SF as Gt,jB as H,Qo as Ha,em as Hi,Lk as Hn,mC as Hr,nI as Ht,ZV as I,ns as Ia,$m as Ii,Mk as In,Zt as Io,uC as Ir,uN as It,EB as J,Ro as Ja,Ap as Ji,PO as Jn,hC as Jr,CF as Jt,pB as K,Bo as Ka,Ip as Ki,Xk as Kn,dC as Kr,bF as Kt,kV as L,ts as La,Hm as Li,Pk as Ln,Kt as Lo,zS as Lr,sN as Lt,gH as M,fs as Ma,Pg as Mi,Jk as Mn,Ar as Mo,gw as Mr,jP as Mt,lH as N,ls as Na,Fg as Ni,Bk as Nn,Or as No,MC as Nr,QN as Nt,kH as O,U as Oa,i_ as Oi,Qk as On,Vr as Oo,Aw as Or,_I as Ot,AV as P,es as Pa,cg as Pi,Ik as Pn,Xt as Po,jC as Pr,eP as Pt,gB as Q,no as Qa,Pp as Qi,HO as Qn,_C as Qr,rF as Qt,QV as R,os as Ra,Lm as Ri,Kk as Rn,YS as Rr,OF as Rt,IH as S,Du as Sa,w_ as Si,KA as Sn,Ti as So,BT as Sr,XI as St,AH as T,bu as Ta,m_ as Ti,lA as Tn,zr as To,Qw as Tr,pI as Tt,JB as U,Jo as Ua,$p as Ui,zk as Un,bS as Ur,rN as Ut,kB as V,Xo as Va,mm as Vi,Yk as Vn,CS as Vr,QP as Vt,mV as W,Wo as Wa,Qp as Wi,Nk as Wn,pC as Wr,nN as Wt,TB as X,Po as Xa,Mp as Xi,NO as Xn,LS as Xr,rI as Xt,SB as Y,Lo as Ya,kp as Yi,FO as Yn,ZS as Yr,EF as Yt,mB as Z,Io as Za,Fp as Zi,AO as Zn,Px as Zr,JF as Zt,zH as _,wu as _a,Z_ as _i,fM as _n,ma as _o,sE as _r,RL as _t,RU as a,Fd as aa,Ab as ai,oF as an,Xa as ao,rO as ar,eB as at,LH as b,H as ba,b_ as bi,Hj as bn,ki as bo,FT as br,OL as bt,dU as c,Ld as ca,Jv as ci,XF as cn,ba as co,ED as cr,qz as ct,aU as d,Dd as da,Uv as di,DF as dn,Pa as do,SD as dr,Vz as dt,cp as ea,VS as ei,tF as en,to as eo,UO as er,uB as et,oU as f,Id as fa,Bv as fi,ZF as fn,Na as fo,KE as fr,Nz as ft,HH as g,Su as ga,hv as gi,pM as gn,_a as go,oE as gr,IL as gt,eU as h,$u as ha,Vv as hi,vM as hn,Oa as ho,Y as hr,hz as ht,LU as i,G as ia,Ub as ii,mF as in,Ya as io,DD as ir,iB as it,_H as j,Ks as ja,Ig as ji,Gk as jn,Mr as jo,_w as jr,BF as jt,pH as k,tu as ka,r_ as ki,nA as kn,Br as ko,sw as kr,XP as kt,$ as l,Rd as la,Lv as li,YF as ln,Aa as lo,JE as lr,Lz as lt,tU as m,rd as ma,Pv as mi,CM as mn,ka as mo,CD as mr,kz as mt,vW as n,Zf as na,ax as ni,aF as nn,bo as no,fO as nr,lB as nt,cU as o,Pd as oa,Ny as oi,cF as on,Wa as oo,yD as or,$z as ot,$H as p,Ku as pa,Hv as pi,SM as pn,Sa as po,xD as pr,Dz as pt,wB as q,Uo as qa,Op as qi,jO as qn,fC as qr,xF as qt,hW as r,Sf as ra,Kb as ri,fF as rn,po as ro,dO as rr,cB as rt,qU as s,Od as sa,Sy as si,uF as sn,Ja as so,bD as sr,Jz as st,fW as t,ep as ta,rS as ti,nF as tn,yo as to,uO as tr,dB as tt,iU as u,Nd as ua,Wv as ui,hF as un,Fa as uo,TD as ur,jz as ut,VH as v,Cu as va,yv as vi,sM as vn,ha as vo,KT as vr,X as vt,NH as w,Eu as wa,h_ as wi,qA as wn,Ci as wo,rT as wr,gI as wt,FH as x,gu as xa,v_ as xi,ij as xn,Ai as xo,LT as xr,kL as xt,BH as y,Ou as ya,y_ as yi,Uj as yn,ga as yo,NT as yr,SL as yt,bV as z,$o as za,Tm as zi,Ok as zn,RS as zr,TF as zt};
476
+ `,EH=async e=>{if(e.length<=5e3)return e;let t=await dH(e);if(t)return t.slice(0,pH);let n=Math.max(0,Math.floor((pH-93)/2)),r=ft.getState().dictionary;return KT.error(pt(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${TH}${e.slice(-n)}`};async function DH(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await EH(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await SH(e,a),c=Date.now();await xH(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:bH(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function OH(e,t){await xH(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function kH(e,t,n){n===`paused`&&(ZV(e),uC(e)),await xH(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 AH(e,t){let n=!1;await xH(e,t,e=>(n=e?.status===`active`,null)),CH(e),n&&(ZV(e),uC(e))}var jH=`<system-reminder>`,MH=`</system-reminder>`,NH=e=>{let t=e.trim();return t?t.startsWith(jH)&&t.endsWith(MH)?t:`${jH}\n${t}\n${MH}`:``},PH=(e,t=c())=>`${t}\n${e}`,FH=(e,t)=>{let n=IH.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(PH(e))??n.sessionMemoryState.get(e)},IH=Oe()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??PH(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}})})),LH=Oe((e,t)=>({attachments:new Map,setAttachment:(t,n)=>e(e=>{let r=new Map(e.attachments);return r.set(t,n),{attachments:r}}),getAttachment:e=>t().attachments.get(e),clearAttachment:t=>e(e=>{let n=new Map(e.attachments);return n.delete(t),{attachments:n}})})),RH=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function zH(e,t){if(e){if(!e.degraded&&e.cwd)return RH(e.cwd);if(e.worktreeRoot)return RH(e.worktreeRoot);if(e.cwd)return RH(e.cwd)}return t?RH(t):null}function BH(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function VH(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 HH(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?RH(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=RH(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 UH=`openchamber.session-switch.start`,WH=`openchamber.session-switch.highlight-painted`,GH=`openchamber.session-switch.content-committed`,KH=`data-openchamber-session-switch-highlight-ms`,qH=`data-openchamber-session-switch-content-ms`,JH=`openchamber.session-switch.highlight-latency`,YH=`openchamber.session-switch.content-latency`,XH=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,ZH=()=>XH()&&performance.getEntriesByName(UH,`mark`).length>0,QH=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},$H=(e=!1)=>{XH()&&(!e&&performance.getEntriesByName(UH,`mark`).length>0&&performance.getEntriesByName(GH,`mark`).length===0||(performance.clearMarks(UH),performance.clearMarks(WH),performance.clearMarks(GH),performance.clearMeasures(JH),performance.clearMeasures(YH),typeof document<`u`&&(document.documentElement.removeAttribute(KH),document.documentElement.removeAttribute(qH)),performance.mark(UH)))},eU=()=>{if(!ZH())return;performance.mark(WH),performance.measure(JH,UH,WH);let e=performance.getEntriesByName(JH,`measure`).at(-1);e&&QH(KH,e.duration)},tU=()=>{if(!ZH())return;performance.mark(GH),performance.measure(YH,UH,GH);let e=performance.getEntriesByName(YH,`measure`).at(-1);e&&QH(qH,e.duration)},nU={revision:0,sessionId:null},rU=new Set,iU=e=>{nU={revision:nU.revision+1,sessionId:e};for(let e of rU)e(nU);return nU},aU=()=>nU,oU=e=>(rU.add(e),()=>rU.delete(e)),sU=6e3;function cU(e){let t=e.parts?e.parts.map(e=>({...e})):[];if(e.parts)return{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t};e.text!==void 0&&t.push({id:ge(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:ge(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:ge(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:ge(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:ge(`prt`),type:`agent`,name:e.agentMentionName}),{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t}}function lU(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function uU(e,t){if(!e)return;let n=lU(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 dU(e){let t=e.directory??void 0,n=pU(e.sessionId,e.onSendConfirmed),r=e.content;if(e.inputMode===`shell`){let r=e.messageID??ge(`msg`);return z.shellSession({sessionId:e.sessionId,directory:t,agent:e.agent??``,model:{providerID:e.providerID,modelID:e.modelID},command:e.content}).then(()=>{n(r)})}let a=de(e.content);if(a){let o=a.commandName.toLowerCase(),s=a.argumentsText,c=t??Pe.getState().currentDirectory??null,l=i(),u=Di(c,l),d=qa(c,l),f=L.getQueryState(u.queryKey),p=L.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(ki(c,l)):L.fetchQuery({...u,staleTime:1/0}),h?Promise.resolve(Ya(L,c,l)):L.fetchQuery({...d,staleTime:1/0})]);if(i()!==l)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===o)?void 0:g.find(e=>e.name.toLowerCase()===o);if(v?.isBuiltIn===!1)r=`[command:${v.reference??v.name}]${s?` ${s}`:``}`;else if(v)return $S({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=>z.sendCommand({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,command:v.name,arguments:s,agent:e.agent,variant:e.variant,files:e.files,messageId:n,directory:t}).then(()=>{})})}return $S({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=>z.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 fU(e,t){F(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function pU(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{fU(e,r)}}}}var mU=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},hU=f(),gU=`oc.chatInput.lastDraftTarget`,_U=()=>{try{let e=hU.getItem(gU);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:_(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},vU=e=>{try{hU.setItem(gU,JSON.stringify(e))}catch{}},yU=Qo,bU=e=>{if(e)return LH.getState().getAttachment(e)},xU=(e,t,n)=>{if(!e)return null;let r=zH(bU(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return _(i);if(n?.includeRuntimeMemory!==!1){let t=DU.get(OU());if(t?.sessionId===e&&t.directory)return _(t.directory)}let a=Pd().find(t=>t.id===e);return a?mU(a):null},SU=e=>{let t=Pd().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},CU=async(e,t)=>{await G.getState().activateDirectory(_(e),t)},wU={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},TU=new Map,EU=0,DU=new Map,OU=e=>(e??c()).trim()||`default`,kU=e=>({...e}),AU=(e,t)=>{let n=DU.get(e);DU.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?kU(n.draft):{...wU},...t})},jU=(e,t)=>{let n=Ci.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=Qo(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},MU=async(e,t)=>{if(!e)return;let n=jU(e,t);n&&await Pk(n)&&await UO(e)},NU=(e,t)=>{let n=Ci.getState(),r=Qo(n.projects,t,e);r&&n.moveProjectToTop(r.id)},PU=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,FU=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,IU=(e,t)=>FU(e,t)&&PU(Or.getState().captureDraftRuntime(),t.runtime);async function LU(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?cU({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return AU(OU(),{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 RU(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return AU(OU(),{draft:n}),{newSessionDraft:n}})}async function zU(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=OU(),t=s.draftID,n=o,AU(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=Or.getState().captureDraftRuntime(),o=S(a,t),s=Or.getState().getDraft(o);return{token:n,draftID:t,draft:kU(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function BU(e){$.setState(t=>{let n=t.newSessionDraft;if(IU(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=DU.get(e.runtimeMemoryKey);return r&&FU(r.draft,e)&&AU(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=DU.get(e.runtimeMemoryKey);t&&FU(t.draft,e)&&AU(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function VU(e){let t=DU.get(e.runtimeMemoryKey);t&&FU(t.draft,e)&&AU(e.runtimeMemoryKey,{draft:{...wU}})}async function HU(e,t,n){if(!e.source)return null;let r;try{r=await Or.getState().finalizeDraftOwnership({source:e.source.key,destination:C(e.runtime,t),expectedSourceRevision:e.source.revision,disposition:n,runtime:e.runtime})}catch{return console.warn(`[session-ui-store] draft ownership finalization rejected`,{disposition:n,sessionID:t,draftID:e.draftID}),null}return r.status!==`committed`&&console.warn(`[session-ui-store] draft ownership finalization did not commit`,{status:r.status,disposition:n,sessionID:t,draftID:e.draftID}),r}function UU(e,t){let n=t??e.directory??null;n&&Dd(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function WU(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=_(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!IU(l,r);UU(e,c);let f=G.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&rO.getState().addSessionToFolder(t,a,e.id)}return d||(vU({projectId:o??null,directory:c}),CU(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),Jo.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(Jo.getState().saveSessionAgentSelection(e.id,p),Jo.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),Jo.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),NU(c,$.getState().availableWorktreesByProject),u&&et(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>cM);return{usePermissionStore:e}},void 0).then(({usePermissionStore:t})=>t.getState().setSessionAutoAccept(e.id,!0)).catch(e=>{console.warn(`Failed to apply draft permission auto-accept to new session:`,e)})),d&&r&&VU(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function GU(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await pO(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await MU(t,n);let r=t??z.getDirectory();return{directory:_(r),projectId:n}}async function KU(e,t){let n=await zU(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 GU(r),o=a??z.getDirectory(),s=await CS(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&eC({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 WU(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return BU(n),null}}async function qU(e){let t=await KU(e);return t?(await HU(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var JU=2,YU=300;async function XU(e){let{useI18nStore:t,formatMessage:n}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-Hr-xvtDJ.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 ZU(e){let{content:t,providerID:n,modelID:r,agent:i,agentMentionName:a,variant:o,attachments:s,additionalParts:c,onSessionReady:l}=e,u=$.getState().newSessionDraft,d=typeof i==`string`&&i.trim().length>0?i.trim():void 0,f=G.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??ge(`msg`),h=cU({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 zU(h);if(!g)throw await XU(`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 GU(_),f=await z.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=Te()?.conversations;if(!v?.createWithPrompt)throw await XU(`chat.chatInput.toast.messageSendFailed`);let y=d??z.getDirectory()??``,b=Rx(y,{bootstrap:!1}),x=()=>PU(Or.getState().captureDraftRuntime(),g.runtime),S;for(let e=0;e<=JU;e++){e>0&&await new Promise(e=>setTimeout(e,YU));try{if(S=await v.createWithPrompt({input:{type:`prompt`},directory:y,..._.title?{title:_.title}:{},..._.parentID?{parentID:_.parentID}:{},messageID:m,model:{providerID:n,modelID:r},...p?{agent:p}:{},...o?{variant:o}:{},parts:f}),!S||S.ok||S.phase!==`unavailable`||(S=void 0,e===JU))break}catch{if(e===JU)break}}if(!S)throw BU(g),Or.getState().setPendingInputText(t,`replace`),await XU(`chat.chatInput.toast.messageSendFailed`);if(S.ok){let e=S.session,t=d??e.directory??null,i=t??y;UU(e,t);let a=i===y?b:Rx(i,{bootstrap:!1});uU(e.id,h);let s=await WU(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 HU(g,e.id,`consume`),fU(e.id,m),s.selected&&AC(e.id),lC({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:x}).then(t=>{t===`missing`&&console.warn(`[combined] sent user message never materialized`,{sessionId:e.id,messageID:m,directory:i})}).catch(t=>{console.warn(`[combined] sent user message presence check failed`,{sessionId:e.id,messageID:m,directory:i,error:t instanceof Error?t.message:String(t)})}),l?.(e.id,t);return}if(!S.ok){let e=S.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw BU(g),Or.getState().setPendingInputText(t,`replace`),await XU(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=S,i=e.session,a=d??i.directory??null,s=await WU(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 nC(i.id,m,a,{isCurrent:x});if(e&&x()){await HU(g,i.id,`consume`),fU(i.id,m),s.selected&&AC(i.id),rC(Rx(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await HU(g,i.id,`preserve`),Or.getState().setPendingInputText(t,`replace`),await XU(`chat.chatInput.toast.sendStatusUnknown`)}throw await HU(g,i.id,`preserve`),Or.getState().setPendingInputText(t,`replace`),await XU(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw BU(g),e}}var QU=`oc.worktreeMap`,$U=()=>{try{let e=f().getItem(QU);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}},eW=e=>{try{f().setItem(QU,e)}catch{}},tW=e=>{let t=[];for(let n of e.values())t.push(...n);return t},nW=$U(),$=Oe()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...wU},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:tW(nW),availableWorktreesByProject:nW,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,sessionPlanAvailable:new Map,pendingChangesBarDismissed:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map,clearRetainedPendingUserMessages:(t,n)=>{!t||n.length===0||e(e=>{let r=e.retainedPendingUserMessages.get(t);if(!r?.length)return e;let i=new Set(n),a=r.filter(e=>!i.has(e.info.id));if(a.length===r.length)return e;let o=new Map(e.retainedPendingUserMessages);return a.length===0?o.delete(t):o.set(t,a),{retainedPendingUserMessages:o}})},clearStagedMessageEdit:t=>{e(e=>!e.stagedMessageEdit||t&&e.stagedMessageEdit.sessionId!==t?e:{stagedMessageEdit:null})},beginMessageEditCommit:(t,n)=>{e({messageEditCommitting:{sessionId:t,messageId:n}})},endMessageEditCommit:(t,n)=>{e(e=>{let r=e.messageEditCommitting;return!r||r.sessionId!==t||r.messageId!==n?e:{messageEditCommitting:null}})},markMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)===n)return e;let r=new Map(e.pendingSendMessageIDs);return r.set(t,n),{pendingSendMessageIDs:r}})},clearMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)!==n)return e;let r=new Map(e.pendingSendMessageIDs);return r.delete(t),{pendingSendMessageIDs:r}})},setCurrentSession:(n,r)=>{iU(n),b(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&($H(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Or.getState().setActiveAttachmentDraft(n?C({transportIdentity:i()},n):null);let s=OU();TU.set(s,n);let c=Pe.getState(),l=xU(n,e=>t().worktreeMetadata.get(e)),u=z.getDirectory()??c.currentDirectory??null,d=(r?_(r):null)??l??u,f=Ci.getState(),p=d?Qo(f.projects,t().availableWorktreesByProject,d):null;e({currentSessionId:n,currentSessionDirectory:n?d??null:null}),AU(s,{sessionId:n,directory:d??null}),a!==n&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?d??null:null}),n&&DC(n,d);try{d&&c.currentDirectory!==d&&c.setDirectory(d,{showOverlay:!1}),p&&f.activeProjectId!==p.id&&f.setActiveProjectIdOnly(p.id),z.setDirectory(d??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!FH(e)?.isStreaming){let t=Ld(e);t.length>0&&IH.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(lA(n),QN(d??``,n))},prepareForRuntimeSwitch:n=>{let r=OU(n),i=Pe.getState().currentDirectory||null,a=t().currentSessionId,o=i?kd(i):null;MM({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),TU.set(r,t().currentSessionId),AU(r,{sessionId:a,directory:i,draft:kU(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=OU(t),r=DU.get(n),a=r?.sessionId??TU.get(n)??null;b(a);let o=r?.draft?kU(r.draft):{...wU},s=r?.directory??null;s&&Pe.getState().setDirectory(s,{showOverlay:!1}),e({currentSessionId:a,currentSessionDirectory:a?s:null,newSessionDraft:a?{...wU}:o,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,sessionAbortFlags:new Map,queueAbortBlocks:new Map,pendingChangesBarDismissed:new Map,retainedPendingUserMessages:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map}),Or.getState().setActiveAttachmentDraft(a?C({transportIdentity:i()},a):o.open&&o.draftID?S({transportIdentity:i()},o.draftID):null),a?QN(s??z.getDirectory()??``,a):QN(``,``)},openNewSessionDraft:n=>{if(_I.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let a=Ci.getState(),o=a.projects,s=t().availableWorktreesByProject,c=_(t().currentSessionDirectory??null),l=_(Pe.getState().currentDirectory??null),u=_U(),d=n?.directoryOverride===void 0?null:_(n.directoryOverride),f=yU(o,s,d),p=n?.ensureProjectForDirectory&&d&&!f?a.addProject(d):null;p&&(a=Ci.getState());let h=a.projects,g=a.getActiveProject(),v=n?.selectedProjectId?h.find(e=>e.id===n.selectedProjectId)??null:null,y=g||(a.activeProjectId?h.find(e=>e.id===a.activeProjectId)??null:h[0]??null),x=u?.projectId?h.find(e=>e.id===u.projectId)??null:null,C=yU(h,s,u?.directory??null),w=yU(h,s,c),T=yU(h,s,l),E=v||(d===null?w||(l?T:C??x??y):p??f),D=d===null?v?_(v.path??null):c||l||(u?.directory?u.directory:_(E?.path??null)):d;vU({projectId:E?.id??null,directory:D}),E&&a.activeProjectId!==E.id&&a.setActiveProjectIdOnly(E.id);let O=le({projectId:E?.id??null,directory:D}),k=S({transportIdentity:i()},O),A=Or.getState().getDraft(k),j={open:!0,draftID:O,selectedProjectId:E?.id??null,directoryOverride:D,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:_(n?.bootstrapPendingDirectory??null),preserveDirectoryOverride:n?.preserveDirectoryOverride===!0,parentID:n?.parentID??null,title:n?.title,initialPrompt:n?.initialPrompt,syntheticParts:n?.syntheticParts,targetFolderId:n?.targetFolderId,submissionToken:r.open&&r.draftID===O?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},ee=t().currentSessionId,te=t().currentSessionDirectory;e({newSessionDraft:{...j},currentSessionId:null,currentSessionDirectory:null,error:null}),b(null),m.getState().setActiveMainTab(`chat`),ee&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:ee,previousDirectory:te,nextSessionId:null,nextDirectory:null}),AU(OU(),{sessionId:null,directory:D,draft:j}),Or.getState().setActiveAttachmentDraft(k),A||Or.getState().clearAttachedFiles(),n?.initialPrompt&&Or.getState().setPendingInputText(n.initialPrompt);let M=_(E?.path??null)??D,ne=E?_(M):null,re=j.draftID,ie=i();CU(M,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=_(G.getState().activeDirectoryKey);!e.open||e.draftID!==re||i()!==ie||!ne||n!==ne||G.getState().applyDefaultModelAgentSelection({projectDefaultModel:E?.defaultModel})}),D&&D!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(D)},closeNewSessionDraft:()=>{let t={open:!1,draftID:null,selectedProjectId:null,directoryOverride:null,pendingWorktreeRequestId:null,bootstrapPendingDirectory:null,preserveDirectoryOverride:!1,parentID:null,title:void 0,initialPrompt:void 0,syntheticParts:void 0,targetFolderId:void 0,draftSubmitting:!1,draftEstablishing:!1};e({newSessionDraft:t}),AU(OU(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=_(t.directoryOverride??e.newSessionDraft.directoryOverride);let i=n?.force===!0;return{newSessionDraft:{...e.newSessionDraft,selectedProjectId:t.projectId??t.selectedProjectId??e.newSessionDraft.selectedProjectId,directoryOverride:t.directoryOverride??e.newSessionDraft.directoryOverride,...i?{bootstrapPendingDirectory:null,preserveDirectoryOverride:!1}:{}}}}),CU(r,{source:`setNewSessionDraftTarget`}),r&&r!==Pe.getState().currentDirectory&&Pe.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=sU)=>{let r=fe(),i=D(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=D(t);if(e.queueAbortBlocks.get(r)?.token!==n)return e;let i=new Map(e.queueAbortBlocks);return i.delete(r),{queueAbortBlocks:i}}),pruneQueueAbortBlocks:(t=Date.now())=>e(e=>{let n;for(let[r,i]of e.queueAbortBlocks)i.expiresAt>t||(n||=new Map(e.queueAbortBlocks),n.delete(r));return n?{queueAbortBlocks:n}:e}),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=Ld(r);if(i.length===0)return null;let a=nA(i,e=>Rd(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(Qk(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?LH.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}):LH.getState().clearAttachment(t),e(e=>{let r=new Map(e.worktreeMetadata);return n?r.set(t,n):r.delete(t),{worktreeMetadata:r}})},overrideNewSessionDraftTarget:t=>{let n=null;e(e=>{let r={...e.newSessionDraft,...t};return n=_(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),CU(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(n)},resolvePendingDraftWorktreeTarget:(t,n,r)=>e(e=>!e.newSessionDraft?.open||e.newSessionDraft.pendingWorktreeRequestId!==t?e:{newSessionDraft:{...e.newSessionDraft,selectedProjectId:r?.projectId??e.newSessionDraft.selectedProjectId??null,directoryOverride:_(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:_(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:_(t)}}:e),setPendingDraftWorktreeRequest:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,pendingWorktreeRequestId:t}}:e),getWorktreeMetadata:e=>t().worktreeMetadata.get(e),dismissPendingChangesBar:(n,r)=>{let i=new Map(t().pendingChangesBarDismissed);r===null?i.delete(n):i.set(n,r),e({pendingChangesBarDismissed:i})},sendMessage:async(n,r,i,a,o,s,c,l,u,d)=>{let f=t().stagedMessageEdit,p=d?.sessionId??t().currentSessionId,h=d?.commitStagedMessageEdit&&f&&f.sessionId===p?f:null,g=d?.sessionId??t().currentSessionId;if(g){let n=new Map(t().pendingChangesBarDismissed);n.delete(g),e({pendingChangesBarDismissed:n})}let v=t().newSessionDraft,y=typeof a==`string`&&a.trim().length>0?a.trim():void 0,b=u!==`shell`&&n.trim().length>0?vI.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=m.getState(),t=NH(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let S=(e,t)=>{if(!x)return;let r=m.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;DH(e,t??void 0,{objective:a,tokenBudget:i},null).catch(e=>{console.warn(`[session-ui-store] failed to set goal from armed send`,e)})};if(!d?.sessionId&&v?.open){if(u!==`shell`&&!n.trimStart().startsWith(`/`)&&!d?.delivery&&Te()?.conversations?.createWithPrompt){await ZU({content:n,providerID:r,modelID:i,agent:y,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:d?.messageID,onSessionReady:S});return}let e=d?.messageID??v.pendingUserMessage?.info.id??ge(`msg`),a=cU({messageID:e,sessionID:`draft:pending`,providerID:r,modelID:i,agent:y,text:n,attachments:o,additionalParts:v.syntheticParts?.length?[...c||[],...v.syntheticParts]:c,agentMentionName:s}),f=await KU({providerID:r,modelID:i,agent:y,variant:l},a);if(!f)throw Error(`Failed to create session`);let{materialized:p,claim:m}=f,h=p.syntheticParts?.length?[...c||[],...p.syntheticParts]:c;AC(p.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await dU({sessionId:p.sessionId,directory:p.directory,content:n,providerID:r,modelID:i,agent:p.agent,agentMentionName:s,variant:l,inputMode:u,files:g,delivery:d?.delivery,messageID:e,optimisticParts:a.parts,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:h?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))}),await HU(m,p.sessionId,`consume`)}catch(e){throw await HU(m,p.sessionId,`preserve`),e}NU(p.directory,t().availableWorktreesByProject),S(p.sessionId,p.directory);return}let C=d?.sessionId??t().currentSessionId,w=C?Jo.getState().getSessionAgentSelection(C):null,T=G.getState().currentAgentName,E=y||w||T||void 0;if(C&&Jo.getState().saveSessionModelSelection(C,r,i),C&&E&&(Jo.getState().saveSessionAgentSelection(C,E),Jo.getState().saveAgentModelForSession(C,E,r,i),Jo.getState().saveAgentModelVariantForSession(C,E,r,i,l)),C){let e=IH.getState(),t=FH(C);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(PH(C),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),IH.setState({sessionMemoryState:n})}}let D=C?_(d?.directoryHint)??_(t().getDirectoryForSession(C)):null;C&&AC(C);let O=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(h)try{await xC(h.sessionId,h.messageId,{directory:D??void 0}),t().stagedMessageEdit===h&&e({stagedMessageEdit:null})}catch(e){throw t().endMessageEditCommit(h.sessionId,h.messageId),e}try{await dU({sessionId:C||``,directory:D,content:n,providerID:r,modelID:i,agent:E,agentMentionName:s,variant:l,inputMode:u,files:O,delivery:d?.delivery,messageID:d?.messageID,ticket:d?.ticket,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:c?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))})}finally{h&&t().endMessageEditCommit(h.sessionId,h.messageId)}NU(D,t().availableWorktreesByProject),C&&S(C,D)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await CS(n,r??z.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),AU(OU(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&rO.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}}),AU(OU(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>IS(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await IS(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>zS(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await zS(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await VS(e,t)},requestSessionSmartTitle:async e=>{await HS(e)},shareSession:async e=>US(e),unshareSession:async e=>WS(e),revertToMessage:async(e,t,n)=>{await hC(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await _C(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Ld(e),r=Nd().find(t=>t.id===e)?.revert?.messageID,i=ps(n,r);if(!i)return;let a=Rd(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 et(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 et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-Hr-xvtDJ.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 et(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>ox);return{unrevertSession:e}},void 0);await t(e);let{toast:n}=await et(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 et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-Hr-xvtDJ.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=Nd().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=ms(Ld(e),r);if(i){await t().revertToMessage(e,i.id,{skipRedoPush:!0});let{toast:n}=await et(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 et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-Hr-xvtDJ.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 wC(e);let{toast:a}=await et(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 et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-Hr-xvtDJ.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=SU(n),s=++EU;try{let a=i?.directory??t().getDirectoryForSession(n)??z.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await et(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 TC(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await et(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 et(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=SU(n),a=++EU;try{let r=t().getDirectoryForSession(n)??z.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await et(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 TC(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await et(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 et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===a?{forkTransition:null}:e)}},getSessionsByDirectory:e=>{let t=_(e);return t?Pd().filter(e=>mU(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=xU(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=Y.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?KE(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:xU(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Ld(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=>Jo.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Ld(e);Nd().find(t=>t.id===e),`${e}`,t.length,t.map(e=>({id:e.id,role:e.role,tokens:e.role===`assistant`?e.tokens:void 0}))},pollForTokenUpdates:()=>{},setSessionDirectory:(n,r)=>{let i=_(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),AU(OU(),{sessionId:n,directory:i}))},markSessionPlanAvailable:t=>{e(e=>{if(e.sessionPlanAvailable.get(t)===!0)return e;let n=new Map(e.sessionPlanAvailable);return n.set(t,!0),{sessionPlanAvailable:n}})},isSessionPlanAvailable:e=>t().sessionPlanAvailable.get(e)??!1}));TM((e,t)=>{$.getState().setCurrentSession(e,t)});var rW=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==rW&&(rW=t,eW(t))}});function iW(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function aW(e){return e.length>1?e.slice(0,-1):[]}function oW(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function sW(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 cW={activeTab:`projects`,secondary:null},lW=0,uW=null,dW=e=>{let t=++lW;return uW={generation:t,sessionId:e.sessionId,directory:_(e.directory)??null},t},fW=e=>{let t=uW;return t&&t.generation===lW&&t.sessionId===e.sessionId&&t.directory===(_(e.directory)??null)?(uW=null,`internal`):(uW=null,`external`)},pW=()=>{lW+=1,uW=null},mW=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&_(n)===_(e.directory)?pW():dW(e),t.setCurrentSession(e.sessionId,e.directory??null)},hW=Oe(e=>({...cW,setActiveTab:t=>{pW(),e({activeTab:t,secondary:null})},openSession:t=>{e({secondary:{kind:`chat`,routes:[_W(t,`root`)]}}),mW(t)},pushSession:t=>{e(e=>{let n=_W(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?iW(e.secondary.routes,n):[n]}}}),mW(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=aW(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=hW.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&mW(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=sW(e.secondary.routes,_W(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:oW(e.secondary.routes,_W(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=>{pW(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{pW(),mt.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{pW(),e({secondary:{kind:`instances`}})},closeSecondary:()=>{pW(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{pW(),e({...cW})}})),gW=1,_W=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${gW++}`,sessionId:e.sessionId,directory:e.directory??null}),vW=e=>!Ge()||Ke()?!1:(hW.getState().pushSession(e),!0);export{_B as $,eo as $a,Np as $i,kO as $n,BS as $r,$F as $t,vH as A,nu as Aa,t_ as Ai,JO as An,jr as Ao,vw as Ar,qF as At,dV as B,Yo as Ba,vm as Bi,Uk as Bn,xC as Br,ZP as Bt,PH as C,ku as Ca,x_ as Ci,GA as Cn,Oi as Co,bT as Cr,vI as Ct,OH as D,hu as Da,n_ as Di,uA as Dn,Rr as Do,$w as Dr,mI as Dt,wH as E,Tu as Ea,p_ as Ei,sA as En,Hr as Eo,nT as Er,hI as Et,MV as F,cs as Fa,sg as Fi,Rk as Fn,Qt as Fo,kS as Fr,$N as Ft,CB as G,Ho as Ga,Kp as Gi,Fk as Gn,HS as Gr,SF as Gt,jB as H,Qo as Ha,em as Hi,Lk as Hn,mC as Hr,nI as Ht,ZV as I,ns as Ia,$m as Ii,Mk as In,Zt as Io,uC as Ir,uN as It,EB as J,Ro as Ja,Ap as Ji,PO as Jn,hC as Jr,CF as Jt,pB as K,Bo as Ka,Ip as Ki,Xk as Kn,dC as Kr,bF as Kt,kV as L,ts as La,Hm as Li,Pk as Ln,Kt as Lo,zS as Lr,sN as Lt,gH as M,fs as Ma,Pg as Mi,Jk as Mn,Ar as Mo,gw as Mr,jP as Mt,lH as N,ls as Na,Fg as Ni,Bk as Nn,Or as No,MC as Nr,QN as Nt,kH as O,U as Oa,i_ as Oi,Qk as On,Vr as Oo,Aw as Or,_I as Ot,AV as P,es as Pa,cg as Pi,Ik as Pn,Xt as Po,jC as Pr,eP as Pt,gB as Q,no as Qa,Pp as Qi,HO as Qn,_C as Qr,rF as Qt,QV as R,os as Ra,Lm as Ri,Kk as Rn,YS as Rr,OF as Rt,IH as S,Du as Sa,w_ as Si,KA as Sn,Ti as So,BT as Sr,XI as St,AH as T,bu as Ta,m_ as Ti,lA as Tn,zr as To,Qw as Tr,pI as Tt,JB as U,Jo as Ua,$p as Ui,zk as Un,bS as Ur,rN as Ut,kB as V,Xo as Va,mm as Vi,Yk as Vn,CS as Vr,QP as Vt,mV as W,Wo as Wa,Qp as Wi,Nk as Wn,pC as Wr,nN as Wt,TB as X,Po as Xa,Mp as Xi,NO as Xn,LS as Xr,rI as Xt,SB as Y,Lo as Ya,kp as Yi,FO as Yn,ZS as Yr,EF as Yt,mB as Z,Io as Za,Fp as Zi,AO as Zn,Px as Zr,JF as Zt,zH as _,wu as _a,Z_ as _i,fM as _n,ma as _o,sE as _r,RL as _t,RU as a,Fd as aa,Ab as ai,oF as an,Xa as ao,rO as ar,eB as at,LH as b,H as ba,b_ as bi,Hj as bn,ki as bo,FT as br,OL as bt,dU as c,Ld as ca,Jv as ci,XF as cn,ba as co,ED as cr,qz as ct,aU as d,Dd as da,Uv as di,DF as dn,Pa as do,SD as dr,Vz as dt,cp as ea,VS as ei,tF as en,to as eo,UO as er,uB as et,oU as f,Id as fa,Bv as fi,ZF as fn,Na as fo,KE as fr,Nz as ft,HH as g,Su as ga,hv as gi,pM as gn,_a as go,oE as gr,IL as gt,eU as h,$u as ha,Vv as hi,vM as hn,Oa as ho,Y as hr,hz as ht,LU as i,G as ia,Ub as ii,mF as in,Ya as io,DD as ir,iB as it,_H as j,Ks as ja,Ig as ji,Gk as jn,Mr as jo,_w as jr,BF as jt,pH as k,tu as ka,r_ as ki,nA as kn,Br as ko,sw as kr,XP as kt,$ as l,Rd as la,Lv as li,YF as ln,Aa as lo,JE as lr,Lz as lt,tU as m,rd as ma,Pv as mi,CM as mn,ka as mo,CD as mr,kz as mt,vW as n,Zf as na,ax as ni,aF as nn,bo as no,fO as nr,lB as nt,cU as o,Pd as oa,Ny as oi,cF as on,Wa as oo,yD as or,$z as ot,$H as p,Ku as pa,Hv as pi,SM as pn,Sa as po,xD as pr,Dz as pt,wB as q,Uo as qa,Op as qi,jO as qn,fC as qr,xF as qt,hW as r,Sf as ra,Kb as ri,fF as rn,po as ro,dO as rr,cB as rt,qU as s,Od as sa,Sy as si,uF as sn,Ja as so,bD as sr,Jz as st,fW as t,ep as ta,rS as ti,nF as tn,yo as to,uO as tr,dB as tt,iU as u,Nd as ua,Wv as ui,hF as un,Fa as uo,TD as ur,jz as ut,VH as v,Cu as va,yv as vi,sM as vn,ha as vo,KT as vr,X as vt,NH as w,Eu as wa,h_ as wi,qA as wn,Ci as wo,rT as wr,gI as wt,FH as x,gu as xa,v_ as xi,ij as xn,Ai as xo,LT as xr,kL as xt,BH as y,Ou as ya,y_ as yi,Uj as yn,ga as yo,NT as yr,SL as yt,bV as z,$o as za,Tm as zi,Ok as zn,RS as zr,TF as zt};