@openchambery/web 1.18.3-beta.8 → 1.18.3-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 (39) hide show
  1. package/dist/assets/{AssistantView-BzSz3r1W.js → AssistantView-w0x-HUVj.js} +1 -1
  2. package/dist/assets/{ChatContainer-BQs9oYpy.js → ChatContainer-Hot06aRR.js} +4 -4
  3. package/dist/assets/{DiagramView-BgjCkap8.js → DiagramView-DouGx7qm.js} +1 -1
  4. package/dist/assets/{MarkdownRendererImpl-DOIMceBg.js → MarkdownRendererImpl-B0o16kp-.js} +1 -1
  5. package/dist/assets/{MobileDetailNavigation-mPHK1w8A.js → MobileDetailNavigation-DC-RHbQa.js} +1 -1
  6. package/dist/assets/{MobileShareBridge-BX1SZQ6o.js → MobileShareBridge-CbXZG3SB.js} +1 -1
  7. package/dist/assets/{MobileSurface-BRtCnEMF.js → MobileSurface-DLfmrFxQ.js} +1 -1
  8. package/dist/assets/{MultiRunWindow-BtS8cfhP.js → MultiRunWindow-CjWIbnKV.js} +1 -1
  9. package/dist/assets/{SettingsView-CeraGstO.js → SettingsView-HQyIsHbW.js} +1 -1
  10. package/dist/assets/{SettingsWindow-CXkbewtl.js → SettingsWindow-BGNRVgWA.js} +1 -1
  11. package/dist/assets/{TerminalView-8jCVdmAo.js → TerminalView-CxdDWY9I.js} +1 -1
  12. package/dist/assets/{ToolOutputDialog-BGB_-6s8.js → ToolOutputDialog-CNqGyI36.js} +1 -1
  13. package/dist/assets/{appThemeRegistry-DSYB5a7U.js → appThemeRegistry-CIVCjh6t.js} +2 -2
  14. package/dist/assets/{context-menu-CKXTQ9Pz.js → context-menu-CfKc41T6.js} +1 -1
  15. package/dist/assets/{gitApi-Wpf4vlOo.js → gitApi-Cl9rwweM.js} +1 -1
  16. package/dist/assets/{insertionBoundaries-DO-w-Dfm.js → insertionBoundaries-eKGv4qrx.js} +1 -1
  17. package/dist/assets/{main-C4hf9lX2.js → main-Bk6DBKck.js} +4 -4
  18. package/dist/assets/{main-DRPSbIbl.js → main-BpFyVJd-.js} +2 -2
  19. package/dist/assets/{miniChat-CWwacAqo.js → miniChat-DSXKbXA6.js} +2 -2
  20. package/dist/assets/{mobile-BDeRVoGr.js → mobile-P9o_5-Di.js} +2 -2
  21. package/dist/assets/{multirun-CFz2P6KQ.js → multirun-Ba8PbsYl.js} +1 -1
  22. package/dist/assets/{projectMeta-u_scgMJV.js → projectMeta-5pbSdoqO.js} +1 -1
  23. package/dist/assets/{radio-CtLP0Fj-.js → radio-B8HrWlYg.js} +1 -1
  24. package/dist/assets/{renderElectronMiniChatApp-dVjpmbl1.js → renderElectronMiniChatApp-CP-sc5V2.js} +2 -2
  25. package/dist/assets/{renderMobileApp-Cs_kxcw9.js → renderMobileApp-BO1O2Hvd.js} +4 -4
  26. package/dist/assets/{runtimeConfig-IZ8w09FA.js → runtimeConfig-Dsve6xR9.js} +1 -1
  27. package/dist/assets/{runtimeEndpointReset-CvT-BOXZ.js → runtimeEndpointReset-Drq4RwMh.js} +1 -1
  28. package/dist/assets/src-DkvOpECa.css +2 -0
  29. package/dist/assets/{useAppFontEffects-BD2j9xS7.js → useAppFontEffects-DPoLOW3R.js} +2 -2
  30. package/dist/assets/{useDesktopWindowControlsLayout-C0WeVrmR.js → useDesktopWindowControlsLayout-DaIIz7S-.js} +1 -1
  31. package/dist/assets/{useEffectiveDirectory-CiclLKWq.js → useEffectiveDirectory-CkxzJmgr.js} +1 -1
  32. package/dist/assets/{useMobileNavigationStore-CramlSF3.js → useMobileNavigationStore-Cy40fo8i.js} +1 -1
  33. package/dist/assets/{useSessionAutoCleanup-CIxDk0GC.js → useSessionAutoCleanup-61bXKYZf.js} +1 -1
  34. package/dist/assets/{useWorkerHighlightedLines-h7a-QHCq.js → useWorkerHighlightedLines-B772DAVR.js} +1 -1
  35. package/dist/index.html +3 -3
  36. package/dist/mini-chat.html +3 -3
  37. package/dist/mobile.html +3 -3
  38. package/package.json +1 -1
  39. package/dist/assets/src-msfMR4Uf.css +0 -2
@@ -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
  `),Ip=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Lp=e=>{let t=e?.metadata;return Ip(t)?t:{}},Rp=e=>{let t=e.openchamber;return Ip(t)?t:{}},zp=e=>{let t=Rp(Lp(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Bp=e=>{let t=Rp(Lp(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Vp=e=>Rp(Lp(e)).kind===`review`&&!!Bp(e),Hp=(e,t)=>{let n=Rp(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Up=(e,t)=>{let n=Rp(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},Wp=(e,t)=>{let n=Rp(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},Gp=Oe()(ke((e,t)=>({runsByOriginalSessionID:{},upsertRun:t=>e(e=>({runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t.originalSessionID]:t}})),updateRun:(t,n)=>e(e=>{let r=e.runsByOriginalSessionID[t];return r?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:n(r)}}:e}),stopRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`stopped`}}}:e}),completeRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`completed`}}}:e}),stopRunningRunsForRuntime:t=>e(e=>{let n=!1,r={...e.runsByOriginalSessionID};for(let[e,i]of Object.entries(r))i.runtimeKey===t&&i.status===`running`&&(r[e]={...i,status:`stopped`},n=!0);return n?{runsByOriginalSessionID:r}:e}),isRunningForSession:e=>t().runsByOriginalSessionID[e]?.status===`running`}),{name:`auto-review-store`,storage:h(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),Kp=(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},qp=(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},Jp=(e,t,n,r)=>{if(!n)return r;let i=Kp(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},Yp=`GitHub issue context (JSON)`,Xp=`GitHub pull request context (JSON)`,Zp=e=>!e||typeof e!=`object`?!1:!!e.synthetic,Qp=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>Zp(e)),$p=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!Zp(e)),n=e=>{if(!Zp(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(Yp)||n.startsWith(Xp)};return t&&e.some(e=>Zp(e))?e.filter(e=>!Zp(e)||n(e)):e},em=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},tm=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,nm=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},rm=e=>e.replace(/\\/g,`/`),im=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,am=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}`}`),rm(n)}catch{return null}},om=(e,t)=>{let n=im(rm(e)),r=im(rm(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},sm=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),cm=(e,t)=>{let n=rm(e),r=im(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=om(n,t);if(r!==null){let t=im(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return sm(a)},lm=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},um=(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},dm=e=>{let t=e.source&&typeof e.source==`object`?e.source:null,n=typeof t?.value==`string`?t.value.trim():``;if(n){let e=n.startsWith(`@`)?n:`@${n}`,t=e.slice(1);if(t)return{token:e,name:t}}let r=typeof e.name==`string`?e.name.trim():``;if(!r)return null;let i=r.startsWith(`@`)?r.slice(1):r;return i?{token:`@${i}`,name:i}:null},fm=async(e,t={})=>{let n=t.createID??fe,r=t.directory??t.root??null,i=e.filter(e=>!Zp(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(tm).join(`
460
460
  `),l=[];for(let e of o){let t=dm(e);t&&l.push(t)}for(let e of[...l].reverse())um(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=um(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:`)?am(t):null;if(o){let e=cm(o,r),t=null;for(let n of e){let e=um(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=nm(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 lm(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(em(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}},pm=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 lm(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(em(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}},mm=e=>e?JSON.parse(JSON.stringify(e)):null,hm=e=>e?{...e}:{},gm=(e,t=Or.getState())=>{let n=t.getDraft?.(e)??null,r=hm(t.draftAttachmentViews?.[R(e)]);return{record:mm(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},_m=async e=>{let t=e.input??Or.getState(),n=gm(e.key,{getDraft:t.getDraft?.bind(t),draftAttachmentViews:t.draftAttachmentViews}),r;try{r=await t.commitDraftSnapshot({key:e.key,expectedRevision:e.expectedRevision,runtime:e.runtime??t.captureDraftRuntime(),snapshot:e.payload.snapshot,values:e.payload.values})}catch{return{status:`failed`,current:!1,durable:!1,previous:n}}return{status:r.status,current:r.current,durable:r.durable,result:r,previous:n}},vm=async e=>{let t=e.store.getDraft(e.key);if(!t||t.revision!==e.restoredRevision)return{status:`conflict`,current:!0};if(!e.previous.record)try{let t=await e.store.deleteDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}let n=e.previous.record,r=new Map;for(let t of[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)]){let n=e.previous.views[t.attachmentRefID];t.locator.kind===`url`?r.set(t.attachmentRefID,t.locator.url):n?.file?r.set(t.attachmentRefID,n.file):n?.dataUrl&&r.set(t.attachmentRefID,n.dataUrl)}try{let t=await e.store.commitDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime,snapshot:{text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}},values:r});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}},ym=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?vm({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},bm=(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},xm=e=>e?.status===`committed`&&e.current===!0,Sm=new Map,Cm=async(e,t)=>{let n=R(e),r=Sm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Sm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Sm.get(n)===o&&Sm.delete(n)}},wm=(e,t)=>({key:e,addLocal:async n=>{await Cm(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Cm(e,async()=>{let r=t(),i=bm(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 Cm(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 Cm(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:xm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Cm(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Cm(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Cm(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Tm=4e4,Em=0,Dm=null;function Om(e=Date.now()){Em=e}function km(e){return Dm=e,()=>{Dm===e&&(Dm=null)}}function Am(e){Dm?.(e)}function jm(e=Date.now(),t=Tm){return Em<=0?!1:e-Em>=t}var Mm=3e4,Nm=200,Pm=new Map;function Fm(e,t,n){return`${n?.transport??r()}\n${n?.generation??s()}\n${e.trim()}\n${t}`}function Im(e,t,n){if(!e||!t)return!1;let r=Pm.get(Fm(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Mm}function Lm(e,t,n){if(!e||!t)return;let r=Fm(e,t,n);for(Pm.has(r)&&Pm.delete(r);Pm.size>=Nm;){let e=Pm.keys().next().value;if(typeof e!=`string`)break;Pm.delete(e)}Pm.set(r,n?.now??Date.now())}var Rm=768,zm=()=>{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},Bm=()=>{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<=Rm&&zm()?`mobile`:`desktop`},Vm=()=>Bm()===`mobile`,Hm=3,Um=2,Wm=4,Gm=4,Km=100,qm=30;function Jm(){return l()?`relay`:`local`}function Ym(e=Jm()){return e===`relay`?Um:Hm}function Xm(e=Jm()){return e===`relay`?Gm:Wm}function Zm(e){return Ym(eh(e))}function Qm(){return Km}function $m(){return qm}function eh(e){return e===`relay`||e===`local`?e:Jm()}var th=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function nh(){return{pages:[],pageParams:[]}}function rh(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 ih(e){return{pages:Object.freeze(e.pages.map(rh)),pageParams:Object.freeze([...e.pageParams])}}function ah(e,t,n=th){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 rh({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function oh(e){if(!e||e.pages.length===0)return rl;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 sh(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=oh(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function ch(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function lh(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 rh({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:ch(t)}})}function uh(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 ih({pages:[lh(`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=lh(`history`,f,s,l,u,c,a),h=new Set(p),g=[m],_=[l];for(let r=0;r<e.pages.length;r+=1){let i=e.pages[r],o=[];for(let e of i.messageOrder){if(h.has(e))continue;let r=n.message[t]?.find(t=>t.id===e)??i.messagesByID[e];r&&o.push(r)}g.push(fh(i,o,s,a)),_.push(e.pageParams[r]??null)}return ih({pages:g,pageParams:_})}let d=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)d.has(n)||d.set(n,t)});let f=e.pages.map(()=>[]),p=[];for(let e of o){let t=d.get(e.id);t===void 0?p.push(e):f[t].push(e)}let m=e.pages.map((t,n)=>{let i=f[n]??[];return n===e.pages.length-1&&p.length>0?fh(t,r===`reconcile-page`?dh(i,p):[...i,...p],s,a):fh(t,i,s,a)});if(m.length>0&&n.boundary){let e=m[0],t=n.boundary.kind===`has-more`?n.boundary.cursor:null,r=n.boundary.kind===`exhausted`;(e.cursor!==t||e.complete!==r)&&(m[0]=rh({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return ih({pages:m,pageParams:[...e.pageParams]})}function dh(e,t){let n=e.slice();for(let e of t){let t=ac(e),r=n.length;for(let e=0;e<n.length;e+=1)if(ic(t,ac(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function fh(e,t,n,r){let i=[],a={},o={},s=t.length!==e.messageOrder.length,c=!1,l=!1;for(let r=0;r<t.length;r+=1){let u=t[r];if(!u?.id)continue;i.push(u.id),e.messageOrder[r]!==u.id&&(s=!0);let d=e.messagesByID[u.id];d===u?a[u.id]=u:d&&ph(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||hh(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:rh({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:ch(t)}})}function ph(e,t){return e===t||e.id===t.id&&e===t}function mh(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 hh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!mh(e[n],t[n]))return!1;return!0}function gh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function _h(e){let t=e.properties;if(t){if(typeof t.messageID==`string`)return t.messageID;if(typeof t.info?.id==`string`)return t.info.id;if(typeof t.part?.messageID==`string`)return t.part.messageID}}function vh(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=uh(e??nh(),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&&hh(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 ih({pages:e.pages.map((t,n)=>fh(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function yh(e,t){let n=sh(e,t),r=oh(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 bh(e,t,n,r){if(!kl(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=yh(e,t),o=Ls(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=_h(n),c=new Set;return s&&c.add(s),{data:vh(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function xh(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 Sh(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 Ch(e){return e?e.map(e=>e.id).filter(e=>typeof e==`string`):[]}function wh(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=yh(e,t),o=!1,s=0,c,l=new Set,u=xh(e),d=Sh(e),f=Ch(i.message[t]);for(let e of n){if(!kl(e.type))continue;o=!0;let n=Ls(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=_h(e),m=Ch(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&&hh(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&&ph(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:vh(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function Th(e,t,n,r,i){let a=e&&e.pages.length>0?e:ih({pages:[lh(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=sh(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]:gh(r)};return{data:ih({pages:a.pages.map((e,t)=>t===a.pages.length-1?fh(e,s.filter(e=>{for(let t=0;t<a.pages.length-1;t+=1)if(a.pages[t]?.messagesByID[e.id])return!1;return!0}),c,i):e.messagesByID[n.id]?fh(e,e.messageOrder.filter(e=>e!==n.id).map(t=>e.messagesByID[t]).filter(Boolean),c,i):e),pageParams:[...a.pageParams]}),result:{applied:!0,changed:!0}}}function Eh(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:ih({pages:e.pages.map(e=>{if(!e.messagesByID[t]&&!e.partsByMessageID[t])return e;r=!0;let i=e.messageOrder.filter(e=>e!==t).map(t=>e.messagesByID[t]).filter(Boolean),a={};for(let[n,r]of Object.entries(e.partsByMessageID))n!==t&&(a[n]=[...r]);return fh(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Dh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=sh(e,t),i=Zc({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:oh(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=ih({pages:[lh(`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:oh(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=ih({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?fh(t,dh(r,l),o,a):fh(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:oh(u)}}}function Oh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=fl(sh(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:uh(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 bh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return wh(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Th(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 Eh(e,n.messageID,t)}case`durable-seed`:return Dh(e,t,n);case`reset`:return n.page?Oh(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 kh(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 Ah(e,t,n,r=`materialize`){return Oh(e,n,{type:`http-page`,purpose:r,page:kh(t),liveRevision:t.sync.liveRevision}).data}function jh(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return ih(t);if(t.pages.length===e.pages.length){let r=Fh(e,t);if(r===e)return e;if(Ph(e,t)||Nh(e,t))return r;let i=t.pages[t.pages.length-1];return Ah(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return Oh(e,n,{type:`http-page`,purpose:`prepend`,page:kh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Ah(e,r,n)??ih(t)}return ih(t)}function Mh(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Nh(e,t){let n=Mh(e),r=Mh(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=Ih(e,``),a=Ih(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Ph(e,t){let n=Mh(e);if(n.size===0)return!1;let r=Mh(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=Ih(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||ic(ac(t),ac(n))>0)return!1}return!0}function Fh(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,rh(t))});return!n&&e.pageParams.length===t.pageParams.length?e:ih({pages:r,pageParams:[...t.pageParams]})}function Ih(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:oh(e),liveRevision:a}}var Lh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Rh=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},zh=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Bh=e=>e.trim(),Vh=e=>e?.trim()||`tail`,Hh=new Set([502,503,504]),Uh=[`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 Wh(e){if(!e||e instanceof Lh||e instanceof Rh)return!1;if(e instanceof zh)return e.status>=400&&e.status<500?!1:Hh.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(Hh.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(Hh.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:Uh.some(e=>n.includes(e))}function Gh(e,t){return e>=2?!1:Wh(t)}var Kh=(e,t=r(),n=s())=>[t,n,`sessionMessages`,`page`,Bh(e.directory),e.sessionID,e.limit,Vh(e.before)],qh=(e,t=r(),n=s())=>[t,n,`session-transcript`,Bh(e.directory),e.sessionID];function Jh(e){if(!e||typeof e!=`object`)throw new Rh(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Rh(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Rh(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Rh(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Rh(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Rh(`session message page: cursor must be string when set`);return e}var Yh=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}:{}})},Xh=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw new Lh},Zh=(e,t,n=r(),i={},a=(i.getGeneration??s)())=>{let o=Bh(e.directory),c=e.sessionID,l=e.limit,u=e.before?.trim()||void 0;return{queryKey:Kh({directory:o,sessionID:c,limit:l,before:u},n,a),queryFn:async({signal:e})=>{Xh(n,a,i);let r=await t({directory:o,sessionID:c,limit:l,before:u,signal:e});return Xh(n,a,i),Yh(Jh(r))},staleTime:1/0,gcTime:3e5,retry:Gh,retryDelay:e=>Math.min(500*2**e,4e3)}},Qh=(e,t,n=L,i=r(),a={},o=(a.getGeneration??s)())=>n.fetchQuery(Zh(e,t,i,a,o));function $h(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 eg(e){return Yh({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){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function ng(e){let t=Bh(e.directory),n=e.sessionID,i=e.transport??r(),a=e.probe??{},o=e.generation??(a.getGeneration??s)(),c=e.initialLimit??Ym(),l=e.historyLimit??Xm(),u=e.client??L,d=qh({directory:t,sessionID:n},i,o),f=async t=>eg(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:d,queryFn:async e=>{Xh(i,o,a);let r=e.pageParam?.trim()||void 0,s=r?l:c,d=r?`prepend`:`initial`,p=await Qh({directory:t,sessionID:n,limit:s,before:r},f,u,i,a,o);Xh(i,o,a);let m=$h(p);return ah(m,d===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:tg,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:Gh,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>jh(e,t,n)}}function rg(e){let t=e.client??L,n=ng({...e,client:t}),r=new nt(t,{...n,structuralSharing:(t,n)=>jh(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 ih(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return ih(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:ih(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return ih(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:ih(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function ig(e,t,n,r){let i=e.getQueryData(t),a=Oh(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 ag(e,t=L,n=r(),i=s()){return t.getQueryData(qh(e,n,i))}function og(){return v()||Vm()}function sg(){return v()?4:Vm()?12:40}var cg=1048576,lg=4*cg,ug=12*cg,dg=40*cg;function fg(){return v()?lg:Vm()?ug:dg}var pg=e=>e.trim();function mg(e){return{transport:e.transport,generation:e.generation,directory:pg(e.directory),sessionID:e.sessionID}}function hg(e){let t=mg(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function gg(e){return`${e.transport}\n${e.generation}\n${pg(e.directory)}`}var _g={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function vg(e,t,n){return[t,n,_g.taskRoot,_g.reconcileTaskKind,pg(e.directory),e.sessionID,e.checkpoint]}function yg(e,t,n){return[t,n,_g.checkpoint,pg(e.directory),e.sessionID]}function bg(e){let t=mg(e);return[{queryKey:qh({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,_g.transportPageRoot,_g.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,_g.taskRoot,_g.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,_g.taskRoot,_g.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:yg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function xg(){let e=new Map;return{retain(t){let n=mg(t),r=hg(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(hg(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(hg(t))?.count??0},clear(){e.clear()}}}function Sg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Cg=3e4;function wg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function Tg(e){return!Array.isArray(e)||e.length<5||e[2]!==_g.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 Eg(e){let t=e.client,n=e.activeRegistry??xg(),r=e.counters??Sg(),i=e.getLimit??sg,a=e.now??Date.now,o=e.minResidencyMs??Cg,s=new Map,c=e=>{let t=hg(mg(e));s.set(t,a())},l=e=>{let t=hg(mg(e)),n=s.get(t);return n!==void 0&&a()-n<o},u=e=>{let r=mg(e);if(n.isRetained(r))return!0;let i=qh({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:pg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=Tg(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:wg(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(hg(mg(e)));for(let t of bg(e))f(t)},m=(e,t)=>{r.purgeGeneration+=1;let n=[[e,t,_g.canonical],[e,t,_g.transportPageRoot,_g.transportPageKind],[e,t,_g.taskRoot],[e,t,_g.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=>hg(mg(e)))),o=d({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=gg(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=hg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(hg(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 Dg=new Map,Og=new Set;function kg(e,t){return`${e}\n${t}`}function Ag(){for(let e of Og)e()}function jg(e,t){if(!e||!t)return;let n=kg(e,t),r=Dg.get(n)??0;Dg.set(n,r+1),r===0&&Ag()}function Mg(e,t){if(!e||!t)return;let n=kg(e,t),r=Dg.get(n);if(r){if(r<=1){Dg.delete(n),Ag();return}Dg.set(n,r-1)}}function Ng(e,t){if(!e)return!1;if(t)return Dg.has(kg(t,e));let n=`\n${e}`;for(let e of Dg.keys())if(e.endsWith(n))return!0;return!1}function Pg(e){return Og.add(e),()=>{Og.delete(e)}}var Fg=3e4,Ig=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function Lg(e,t=Fg){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 Rg=e=>e?e.toLowerCase().includes(`application/json`):!1,zg=e=>e?e.toLowerCase().includes(`text/html`):!1;function Bg(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 Vg(e){let t=e.turns??Xm(),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:Fg;return Lg((async()=>{let a=await F(n,{method:`GET`,query:r,signal:Ig(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(zg(o))throw Error(`session turn page: unexpected HTML response`);Rg(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Bg(s,t)})(),i)}async function Hg(e){let t=e.purpose===`prepend`&&e.before?Xm():Ym();return Vg({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var Ug=3e4,Wg=2,Gg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),Kg=e=>e?e.toLowerCase().includes(`text/html`):!1,qg=e=>new Promise(t=>{setTimeout(t,e)});function Jg(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Rh(`session transcript reconcile: ${t} must be string or null`);return e}function Yg(e){if(!e||typeof e!=`object`)throw new Rh(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Rh(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Rh(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Rh(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Rh(`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 Rh(`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 Rh(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=Jg(t.capturedHeadMessageID,`capturedHeadMessageID`),r=Jg(t.latestHeadMessageID,`latestHeadMessageID`),i=Jg(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Rh(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Rh(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Rh(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Rh(`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 Rh(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Rh(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Rh(`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 Rh(`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 Xg(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 Rh(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function Zg(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),Lg((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:Gg(e.signal,n)})}catch(e){throw e instanceof Lh||e instanceof Rh||e instanceof zh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new zh(t.status,`session transcript reconcile failed (${t.status})`);if(Kg(t.headers.get(`content-type`)))throw new Rh(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Rh(`session transcript reconcile: malformed JSON`)}return Yg(a)})(),n)}async function Qg(e){let t=Xg(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:Ug,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):Wg,i=e.sleep??qg,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await Zg(e,t,n)}catch(t){if(t instanceof Lh||t instanceof Rh||t instanceof zh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!Wh(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var $g=e=>!!(e&&typeof e==`object`&&typeof e.type==`string`),e_=e=>e.filter($g),t_=e=>{let t=e,n=t.text;return typeof n==`string`?n:t.content||t.value||``},n_=e=>{if(e.type!==`text`)return!1;let t=t_(e);return!t||t.trim().length===0},r_=(e,t={})=>{let{includeReasoning:n=!0}=t,r=e_(e),i=r.some(e=>!e.synthetic);return r.filter(e=>{let t=!!e.synthetic;return t&&e.type===`text`&&t_(e).includes(`<system-reminder>`)||t&&i||!n&&e.type===`reasoning`?!1:e.type!==`patch`})},i_=`GitHub issue context (JSON)`,a_=`GitHub pull request context (JSON)`,o_=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,s_=(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}},c_=e=>{let t=s_(e,i_);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!o_(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=s_(e,a_);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!o_(t)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.pull-request-link`,filename:`PR #${t}: ${r}`,url:i}}return null},l_=(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`))},u_=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),d_=e=>e.trim()===`/compact`,f_=(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`&&(u_(t)||d_(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 l_(t,n)||r.startsWith(i_)||r.startsWith(a_)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=c_(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},p_=e=>e.some(e=>{if(e.type===`text`)return!n_(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}),m_=e=>e?.length?p_(f_(e)):!1,h_=`oc_asst_session_divider:`,g_=[],__=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),v_=(e,t=0)=>({info:{id:`${h_}${e}`,role:`system`,time:{created:t}},parts:[]}),y_=e=>e.slice().reverse().flatMap(e=>e.entries),b_=(e,t,n=g_)=>{if(!e.length)return g_;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(v_(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?g_:T_(n,r)?n:r},x_=(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},S_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=x_(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 m_(e.parts)?e:m_(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}:{}}},C_=(e,t,n,r=g_)=>{if(!t)return n.length>0?Array.from(n):g_;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:S_(e,t?.message),order:t?.order??a++})}if(i.size===0)return g_;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 T_(r,o)?r:o},w_=(e,t)=>{if(!__(e)||!__(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},T_=(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||w_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},E_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),D_=e=>e.startsWith(h_);function O_(e,t){if(!e?.id||D_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(E_(t,`subtask`)||E_(t,`compaction`)||t.every(e=>Zp(e))):!1}function k_(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(O_(r,i))return n}return null}function A_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function j_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:k_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:A_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function M_(e,t){return{...e,...t}}function N_(e,t){let n=yg({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 P_(e,t){let n=yg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function F_(e,t){let n=yg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function I_(e){return e.slim===!0}var L_=/bearer|token|authorization|password|secret|cookie/i,R_=new Set([`message.part.delta`]);function z_(e){return typeof e==`string`&&e.includes(`-`)}var B_=`openchamber.client-diagnostics.enabled`;function V_(e){return e===`true`||e!==`false`&&null}function H_(e){return e.preference===!0||e.preference!==!1&&z_(e.version)}function U_(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function W_(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function G_(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 K_(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return L_.test(t)?`redacted-error`:t}function q_(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)I_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function J_(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function Y_(e){let t=0;for(let n of e.messageOrder)lv(e.messagesByID[n])===!0&&(t+=1);return t}function X_(e){let t=e.transcript?q_(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:J_(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:Y_(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...K_(e.error??e.request?.error)?{error:K_(e.error??e.request?.error)}:{},...G_(e.error)===void 0?{}:{httpStatus:G_(e.error)}}}function Z_(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 Q_(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 $_(e){return typeof e==`string`&&R_.has(e)}function ev(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return $_(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>$_(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function tv(e){if(e.type===`http-page`)return e.purpose}function nv(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function rv(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 iv(e){return e.__openchamberOptimistic===!0}function av(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 L_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function ov(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function sv(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var cv=e=>typeof e==`string`&&e.trim().length>0;function lv(e){if(!e||ov(e)!==`assistant`)return;let t=e,n=!cv(t.mode)&&!cv(t.agent),r=!cv(t.modelID)||!cv(t.providerID);return n||r}function uv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function dv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)I_(e)?r+=1:i+=1,iv(e)&&(a=!0);let o=e.messagesByID[t],s=ov(o),c=lv(o),l=s===`user`?av(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:sv(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 fv(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:uv(e),after:uv(i)}),e.fullCount>0&&i.fullCount===0&&i.slimCount>0&&l.push(t),e.optimistic&&!i.optimistic&&!i.completed&&u.push(t),e.identityMissing!==!0&&i.identityMissing===!0&&d.push(t)}return{addedMessageIDs:o,removedMessageIDs:s,partsChanged:c,downgraded:l,optimisticLost:u,identityLost:d}}function pv(e){return{at:(e.now??Date.now)(),feat:`transcript`,kind:`transcript-diff`,sessionID:e.sessionID,trigger:e.trigger,before:e.before,after:e.after,diff:fv(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 mv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function hv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function gv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function _v(e){let t=gv(e.partID),n=gv(e.messageID),r=gv(e.directory),i=gv(e.childSessionID),a=gv(e.toolStatus),o=gv(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 vv(e){return[e.sessionID,gv(e.partID)??``,e.childSessionPresent?`1`:`0`,gv(e.childSessionID)??``,gv(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`,gv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function yv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,..._v(e)}}function bv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:hv(e),..._v(e)}}var xv=`openchamber-transcript-diagnostics`,Sv=`events`,Cv=1,wv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),Tv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Cv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Sv)||e.createObjectStore(Sv,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),Ev=(e=xv)=>({async append(t,n){let r=await Tv(e);try{let e=r.transaction(Sv,`readwrite`).objectStore(Sv);await wv(e.add(t));let i=await wv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await wv(e.delete(t))}finally{r.close()}},async read(){let t=await Tv(e);try{return await wv(t.transaction(Sv,`readonly`).objectStore(Sv).getAll())}finally{t.close()}},async clear(){let t=await Tv(e);try{await wv(t.transaction(Sv,`readwrite`).objectStore(Sv).clear())}finally{t.close()}}});function Dv(e={}){let t=e.driver??Ev(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Ov=Qe(`OpenChamberMedia`);function kv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Av(){return Ge()&&$e!==void 0&&$e.isPluginAvailable(`OpenChamberMedia`)}function jv(){return`1.18.3-beta.8`}function Mv(){if(typeof localStorage>`u`)return null;try{return V_(localStorage.getItem(B_))}catch{return null}}function Nv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(B_,e?`true`:`false`)}catch{}}function Pv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var Fv;function Iv(e=jv()){return H_({version:e,preference:Mv()})}function Lv(e={}){return Q_({sink:Pv()===`indexeddb`?(e.createIndexedDBSink??Dv)():(e.createMemorySink??Z_)(),isEnabled:e.isEnabled??Iv})}function Rv(){return Fv??=Lv(),Fv}function zv(e){Rv().record(e)}function Bv(e){try{return Iv()?dv(e()):void 0}catch{return}}function Vv(e){try{zv(pv(e))}catch{}}function Hv(e){try{zv(yv(e))}catch{}}function Uv(e){try{zv(bv(e))}catch{}}function Wv(e){let t=ev(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&zv(X_({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:tv(e.command),sseType:nv(e.command),source:rv(e.command),error:e.error}))}async function Gv(){let e=await Rv().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 Kv(e,t=U_()){if(Av())return(await Ov.saveFile({dataBase64:kv(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 qv(){let e=await Gv(),t=U_();return{content:e,fileName:t,outcome:await Kv(e,t),eventCount:W_(e)}}function Jv(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 Yv=2,Xv=6e4;function Zv(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??r)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??s)()}}function Qv(e,t){let n=(t.probe?.getTransport??r)(),i=(t.probe?.getGeneration??s)();if(n!==e.transport||i!==e.generation)throw new Lh}function $v(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function ey(e,t){return mg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function ty(e,t){return`${e.trim()}\n${t}`}function ny(e){let t=e.client,n=e.repository,i=e.cacheBudget??n.getCacheBudget?.()??Eg({client:t,activeRegistry:xg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??Yv)),o=e.fetchReconcile??Qg,c=e.now??Date.now,l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,h=new Set,g=new Map,_=new Set,v=(e,t)=>{h.add(ty(e,t))},y=(e,t)=>{h.delete(ty(e,t))},b=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},x=e=>{u+=1;for(let e of[...f.keys()])b(e);p.clear(),m.clear()},S=(e,t)=>{let n=t===void 0?void 0:t.trim(),r=new Map;for(let t of i.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&r.set(ty(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of i.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&r.set(ty(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(r.values())},C=(t,n)=>{let r=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of i.listCanonical({transport:t.transport,generation:t.generation}))r.add(e.scope.directory);for(let e of i.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&r.add(e.directory);for(let e of n)e.directory&&r.add(e.directory.trim());return r},w=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=ty(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},T=r=>{if(l)return;let a={transport:r.transport??Zv(e).transport,generation:r.generation??Zv(e).generation},o=c(),s=w(),u=C(a,s),d=i.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(ty(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of i.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(ty(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of s)f.set(ty(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(ty(t,n),{directory:t,sessionID:n});for(let e of f.values()){let i=$v(e,a),s=n.getTranscript(i),c=j_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:r.lastEventID,capturedAt:o});P_(t,c)}let p=new Set;for(let t of u){let n=Jv({directory:t,activeScopes:S(a,t),viewedSessions:s,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(ty(e.directory,e.sessionID))}for(let e of d){let t=ty(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=Bv(()=>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=Bv(()=>n.getTranscript(e));i&&t&&Vv({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},D=async(r,i,a)=>{if(Qv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;P_(t,M_(N_(t,i)??j_({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=Bv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),Qv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;F_(t,i),y(i.directory,i.sessionID);try{let e=Bv(()=>n.getTranscript(r));o&&e&&Vv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw P_(t,M_(N_(t,i)??j_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},O=async(r,i,a)=>{if(Qv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;P_(t,M_(N_(t,i)??j_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Bv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),Qv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;F_(t,i),y(i.directory,i.sessionID);try{let e=Bv(()=>n.getTranscript(r));o&&e&&Vv({trigger:`reconnect-compensation-ensure-tail`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw P_(t,M_(N_(t,i)??j_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},k=async(r,i,a,s)=>{let l=$v(r,i),d=ey(r,i),f=vg({directory:d.directory,sessionID:d.sessionID,checkpoint:String(N_(t,d)?.capturedAt??c())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:c()});try{if(Qv(i,e),a!==u||s.aborted)throw new Lh;let p=N_(t,d);if(p||(p=j_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(l),lastEventID:null,capturedAt:c()}),P_(t,p)),!p.anchorMessageID){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}p=M_(p,{state:`reconciling`}),P_(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,Qv(i,e),a!==u||s.aborted)throw new Lh;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,Qv(i,e),a!==u||s.aborted)throw new Lh;let h=n.getTranscript(l).liveRevision;if(!g&&!m){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}let y=await o({sessionID:r.sessionID,directory:r.directory.trim(),...g?{continuation:g}:{anchor:m},signal:s});if(Qv(i,e),a!==u||s.aborted)throw new Lh;if(y.resetRequired){await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()});return}if(b===1&&(_=y.capturedHeadMessageID),v=y.latestHeadMessageID??v,y.records.length>0&&E(l,y,h),p=M_(N_(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),P_(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=M_(N_(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),P_(t,p);continue}p=M_(N_(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),P_(t,p),y(r.directory,r.sessionID),t.setQueryData(f,{status:`complete`,finishedAt:c()});return}await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()})}catch(n){if(n instanceof Lh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(f,{status:`cancelled`,finishedAt:c()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(f,{status:`error`,finishedAt:c(),code:n instanceof Error?n.name:`error`}),n}},A=t=>{let n=t.trim(),r=m.get(n)??0;if(r>=a)return;let i=p.get(n);if(!i||i.length===0)return;let o=i.shift();m.set(n,r+1);let s=ty(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),A(n);return}let c=Zv(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{jg(n,o.sessionID);try{await k(o,c,l,h.signal)}catch{}finally{Mg(n,o.sessionID),f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),A(n)}})();d.set(s,g)},j=e=>{let t=e.directory.trim(),n=ty(t,e.sessionID);if(d.has(n))return;let r=p.get(t);r||(r=[],p.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),A(t))},ee=t=>{let n=w(),r=C(t,n);for(let a of r){let r=Jv({directory:a,activeScopes:S(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of r)j(e);for(let e of i.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=ty(e.scope.directory,e.scope.sessionID);r.some(e=>ty(e.directory,e.sessionID)===t)||v(e.scope.directory,e.scope.sessionID)}}},te=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??r)(),generation:t.runtimeGeneration},i=(e.probe?.getGeneration??s)(),a=(e.probe?.getTransport??r)();if(i!==n.generation||a!==n.transport){x(`generation_mismatch`);return}ee(n)},M=t=>{if(l)return;let r=t.directory.trim(),i=Zv(e,t),a=$v({directory:r,sessionID:t.sessionID},i),s=hg(ey({directory:r,sessionID:t.sessionID},i)),u=g.get(s);if(u&&c()-u.checkedAt<Xv||_.has(s)||d.has(ty(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(_.add(s),(async()=>{try{if(Qv(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(Qv(i,e),l||(g.set(s,{checkedAt:c()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;E(a,u,d)}catch{}finally{_.delete(s)}})())};return{captureCheckpoints:T,onCompensation:te,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=ty(i,r.sessionID);if(!h.has(a))return M(r),null;y(i,r.sessionID);let o=Zv(e,r),s=$v({directory:i,sessionID:r.sessionID},o),c=ey({directory:i,sessionID:r.sessionID},o),u=N_(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){j({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{Qv(o,e),jg(i,r.sessionID);try{let e=await n.ensureInitial(s);return F_(t,c),e}finally{Mg(i,r.sessionID)}}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:x,getCheckpoint:n=>{let r=Zv(e,n);return N_(t,ey({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(ty(e,t)),destroy:()=>{l=!0,x(`destroy`)}}}function ry(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function iy(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 ay(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 oy(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(tc(e))??Promise.resolve(),r.get(rc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=tc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=rc(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??fg)();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 sy=new Map;function cy(e,t){let n=sy.get(e);if(n)return n;let r=t().finally(()=>{sy.get(e)===r&&sy.delete(e)});return sy.set(e,r),r}var ly=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function uy(e){return cy(ly(e),e.request)}function dy(e,t){return`${e}\n${t}`}var fy=new Map;function py(e){return fy.get(e)}async function my(e){return uy({runtimeKey:dy(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 fy.set(r.id,i),{info:lp(r),parts:i}}})}function hy(e,t){let n=e.info;return n.role===t||n.clientRole===t}function gy(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!hy(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 _y(e){if(e.complete){let t=e.records.some(e=>hy(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=gy(e.records);if(t.length===0){let t=e.records.some(e=>hy(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=>hy(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function vy(e){return e.trim()}function yy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??r)(),i=e.generation??t.generation??(t.probe?.getGeneration??s)();return{directory:vy(e.directory),sessionID:e.sessionID,transport:n,generation:i}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function by(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:rl,liveRevision:0}}function xy(e,t){if(!e||e.pages.length===0)return by(t);let n=Ih(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function Sy(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function Cy(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=Sy(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=Sy(e.messagesByID[t]);a===void 0||a<=n||Cy(e.partsByMessageID[t])||i.push(t)}return i}function Ty(e={}){let t=e.client??L,n=e.cacheBudget??Eg({client:t,activeRegistry:e.activeRegistry??xg()}),i=n.activeRegistry,a=new Map,o=new Map,c=new Map,l=new Map,u=new Map,d=e.durableStore?oy(e.durableStore,{getProtectScopes:()=>i.listRetained().map(ry),getByteBudget:e.getDurableByteBudget}):void 0,f=new Map,p=new Map,m=new Map,h=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=xy(w(e),t.sessionID);!Sl(r)&&!v.has(n)||(y.add(n),zv(X_({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=u.get(e);return t||(t={messages:new Map,parts:new Map},u.set(e,t)),t},w=n=>{let r=yy(n,e);return ag({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=yy(t,e);return qh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=yy(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let i=e.probe??{getTransport:r,getGeneration:s},o=yy(n,{...e,transport:void 0,generation:void 0,probe:i}),c=K(o),l=a.get(c);if(l)return l;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let u=rg({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:i,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(c,u),u},k=t=>{let n=K(yy(t,e));u.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(yy(n,e));if(c.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});c.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=c.get(e);n&&(n(),c.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of m.keys())t.startsWith(e)&&m.delete(t);for(let t of h.keys())t.startsWith(e)&&h.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of m)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of h.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=yy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{d&&d.persistSettled(ry(e),t,n??[])},le=(e,t,n,r)=>{if(!d||S>0||!r.applied||!r.changed)return;let i=ry(t);if(n.type===`remove-message`){d.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(d.clearSession(i),n.page){let r=xy(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=xy(w(e),t.sessionID);for(let e of r){let n=ay(e);if(n.action===`remove`){d.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=xy(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,i)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:r,getGeneration:s},c={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??Ym()};return iy(i?.fresh?await t.fetchQuery({...Zh(c,a,n.transport,o,n.generation),staleTime:0}):await Qh(c,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)cu(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now();f.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return f.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Lm(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(!gl(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),m.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Lh||!se(t))return f.delete(r),P.getTranscript(e);throw f.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),zv(X_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:xy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{p.delete(r)}})();return p.set(r,a),a},fe=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;f.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return f.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||eu(t.sessionID,t.directory)?(f.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Lm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return f.delete(r),n instanceof Lh||!se(t)||zv(X_({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:xy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{p.delete(r)}})();return p.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(yy(t,e)))?!0:oh(n).kind===`unknown`},P={getTranscript(t){let n=yy(t,e),r=K(n),i=xy(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=yy(t,e),r=K(n),i=P.getTranscript(t);return te(r,El(n.sessionID,i.boundary))},getRequestState(t){let n=yy(t,e),r=f.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=yy(t,e),r=K(n),i=P.getTranscript(t);Sl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Cl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:yl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(yy(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(yy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??Ey,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=yy(t,e),i=m.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||hl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=yy(t,e),i=M(r,n),a=Bv(()=>P.getTranscript(t)),o=e=>{try{let t=Bv(e);if(!a||!t)return;Vv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=h.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return m.set(i,{status:`idle`}),P.getTranscript(t);if(!hl(P.getParts(t,n))&&!g.get(K(r))?.has(n))return m.set(i,{status:`ready`}),P.getTranscript(t);m.set(i,{status:`loading`}),k(t);try{let a=await my({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??[]}]}),hl(P.getParts(t,n))?m.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):m.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(m.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return m.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return m.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return h.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{h.get(i)===c&&h.delete(i)}),c},apply(r,i){let a=yy(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=ig(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=ig(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=ig(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=ig(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}),ig(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=ig(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=ig(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 Dy(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=ig(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&&(Wv({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:xy(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,r){let a=K(yy(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);l.set(a,i.retain(e)),n.noteScopeObserved(e)}return s.add(r),A(t),()=>{let e=o.get(a);if(e){if(e.delete(r),e.size===0){let e=l.get(a);e&&(e(),l.delete(a))}j(a)}}},async ensureInitial(t){let r=yy(t,e),a=K(r);if(d&&await d.wait(ry(r)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(ry(r));if(se(r)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)gl(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){zv(X_({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,r);return zv(X_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!i.isRetained(E(t))){let e=Date.now(),n=await fe(t,r);return zv(X_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;f.delete(a);try{await s.ensureInitial()}catch(e){throw zv(X_({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:xy(w(t),r.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}f.delete(a),l||Lm(r.directory,r.sessionID,{transport:r.transport,generation:r.generation}),n.noteScopeObserved(E(t)),D(t);let u=P.getTranscript(t);return zv(X_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:u,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),u},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),oh(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=yy(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 zv(X_({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 zv(X_({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=yy(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=yy(t,e),i=Bv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??Ym(),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=Bv(()=>c);i&&e&&Vv({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:i,after:e})}catch{}return c},async destructiveReset(t){let r=Bv(()=>P.getTranscript(t)),i=E(t);return d&&await d.clearSession(ry(yy(t,e))),n.destructiveReset(i,async()=>{let n=yy(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),u.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=Bv(()=>s);r&&e&&Vv({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=K(yy(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),u.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),u.delete(n);let e=l.get(n);e&&(e(),l.delete(n));let t=c.get(n);t&&(t(),c.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),d&&d.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of c.values())e();c.clear();for(let e of l.values())e();l.clear(),o.clear(),u.clear(),f.clear(),p.clear(),m.clear(),h.clear(),g.clear(),v.clear(),y.clear(),b.clear()}};return P}var Ey=Object.freeze([]);function Dy(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=ig(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var Oy=`/api/openchamber/transcript-cache`,ky=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),Ay=e=>typeof e==`object`&&!!e&&!Array.isArray(e),jy=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},My=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},Ny=e=>{if(!Ay(e))throw Error(`Invalid transcript cache scope`);return{transport:jy(e.transport,`scope`),generation:My(e.generation,`scope`),directory:jy(e.directory,`scope`),sessionID:jy(e.sessionID,`scope`)}},Py=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},Fy=e=>{if(!Ay(e)||!Ay(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!Ay(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:Ny(e.scope),messageID:jy(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>Py(e,`part completeness`)),completeness:Py(e.completeness,`completeness`),contentHash:jy(e.contentHash,`content hash`),byteSize:My(e.byteSize,`byte size`),lastAccessedAt:My(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:My(e.sortKey.created,`sort key`),messageID:jy(e.sortKey.messageID,`sort key`)}}},Iy=(e,t)=>{if(!Ay(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(Fy);return{scope:e.scope===void 0?gc(t):Ny(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},Ly=e=>{if(!Ay(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:Fy(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!ky.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:Fy(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Ry=e=>{if(!Ay(e))throw Error(`Invalid transcript cache evict`);return{evicted:My(e.evicted,`evict`),freedBytes:My(e.freedBytes,`evict`),remainingBytes:My(e.remainingBytes,`evict`)}},zy=e=>({scope:gc(e),records:[],byteSize:0}),By=(e,t)=>Ay(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Vy=async e=>{if(e.status===204)return;let t=await e.text();if(t)try{return JSON.parse(t)}catch{throw Error(`Invalid transcript cache payload`)}},Hy=async(e,t,n)=>{let r=await e(t,n);if(r.status===501)return{kind:`disabled`};if(r.status===404)return{kind:`not-found`};if(r.ok)return{kind:`ok`,payload:await Vy(r)};let i=await Vy(r).catch(()=>void 0);throw Error(By(i,`Transcript cache request failed (${r.status})`))},Uy=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Wy=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Gy(e={}){let t=e.fetch??F;return{async readSession(e){let n=await Hy(t,`${Oy}/session`,{method:`GET`,query:Uy(e)});return n.kind===`disabled`||n.kind===`not-found`?zy(e):Iy(n.payload,e)},async readMessage(e,n){let r=await Hy(t,`${Oy}/message`,{method:`GET`,query:{...Uy(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!Ay(r.payload))throw Error(`Invalid transcript cache record`);return Fy(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Hy(t,`${Oy}/message`,Wy(`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 Ly(i.payload)},async removeMessage(e,n){let r=await Hy(t,`${Oy}/message`,Wy(`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 Hy(t,`${Oy}/session`,Wy(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Hy(t,`${Oy}/generation`,Wy(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Hy(t,`${Oy}/evict`,Wy(`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 Ry(r.payload)},async clearAll(){let e=await Hy(t,`${Oy}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Ky=`openchamber-transcript-durable`,qy=1,Jy=`transcriptIndex`,Yy=`transcriptContent`,Xy=class extends Error{code;constructor(e){super(e),this.code=e}},Zy=e=>({id:nc(e.scope,e.messageID),scope:gc(e.scope),scopeKey:tc(e.scope),generationKey:rc(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}),Qy=(e,t)=>({scope:gc(e.scope),messageID:e.messageID,info:hc(t.info),parts:hc(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}}),$y=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Qy(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},eb=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},tb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),nb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Xy(`database-unavailable`));return}let r=indexedDB.open(e,qy),i=!1,a=()=>{i||(i=!0,n(new Xy(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Jy)){let t=e.createObjectStore(Jy,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Yy)||e.createObjectStore(Yy,{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}),rb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Xy(`database-unavailable`)),r.onblocked=()=>void 0}),ib=(e=Ky)=>({transaction:async t=>{let n=await nb(e),r=n.transaction([Jy,Yy],`readwrite`),i=r.objectStore(Jy),a=r.objectStore(Yy),o=e=>tb(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:()=>rb(e)});function ab(e,t={}){let n=_c(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Zy(t)),vc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(tc(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Qy(t,r);a.lastAccessedAt=n(),await e.putIndex(Zy(a)),i.push(a)}return yc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await $y(e,nc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=bc({info:i,incomingCompleteness:cc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=hc(a.slice()),c=cc(s),l=await dc(i,s),u=nc(t,i.id);return e.transaction(async e=>{let a=await $y(e,u),o=bc({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:vc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:gc(t),messageID:i.id,info:hc(i),parts:s,partCompleteness:s.map(sc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:ac(i)};return await e.putIndex(Zy(d)),await e.putContent({id:u,info:hc(i),parts:s}),{status:`written`,record:vc(d)}})},async removeMessage(t,n){await e.transaction(e=>eb(e,nc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(tc(t));for(let t of n)await eb(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(rc(t));for(let t of n)await eb(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(tc)),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?ic(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await eb(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 ob(e={}){return ab(e.driver??ib(e.databaseName),e)}function sb(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 cb=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function lb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Gy)(),t),i=()=>(n??=(e.createIndexedDBStore??ob)(),n),a=()=>sb(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=>cb([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function ub(e={}){await lb(e).clearAll()}var db=(e,t)=>e<t?-1:+(e>t);function fb(e){return e.filter(e=>!!e?.id).sort((e,t)=>db(e.id,t.id))}async function pb(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,i=await Hg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=i.records.map(e=>({info:lp(e.info),parts:fb(e.parts??[])}));if(!e.before&&!i.complete&&gy(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await _y({records:a,complete:i.complete,requestMessage:async n=>{let i=await my({transport:r(),generation:s(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:i.info,parts:fb(i.parts??[])}}})).records.map(e=>({info:e.info,parts:fb(e.parts??[])}))}return{records:a,cursor:i.cursor??void 0,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:e.limit}}function mb(e){let t=e.client??L,n=xg(),i=Eg({client:t,activeRegistry:n}),a=Ty({client:t,cacheBudget:i,activeRegistry:n,probe:{getTransport:r,getGeneration:s},fetcher:e=>pb({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:Ym(),historyLimit:Xm(),durableStore:e.durableStore??lb()}),o=ny({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:i,probe:{getTransport:r,getGeneration:s}});return gu(a),Au(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),Au(null),a.destroy(),_u()}}}function hb(e){return vu().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 gb=new Map;function _b(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function vb(e,t,n,i={}){let a=i.getTransportIdentity??r,o=i.getGeneration??s,c=a(),l=o(),u=_b(e,t,c,l),d=()=>a()===c&&o()===l,f=gb.get(u)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=f.catch(()=>void 0).then(()=>m);gb.set(u,h);try{if(await f.catch(()=>void 0),!d())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:c,generation:l,isCurrent:d})}finally{p(),gb.get(u)===h&&gb.delete(u)}}var yb=new Set,bb=new Set,xb=new Set,Sb=new Set,Cb={onDeleteRequest(e){return yb.add(e),()=>{yb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||yb.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 xb.add(e),()=>{xb.delete(e)}},requestDirectoryDialog(){xb.forEach(e=>e())},onGitRefreshHint(e){return Sb.add(e),()=>{Sb.delete(e)}},requestGitRefresh(e){e.directory.trim()&&Sb.forEach(t=>t(e))}},wb=e=>e.trim(),Tb=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session status runtime changed`)},Eb=(e,t={})=>{let n=wb(e),i=t.transport??r(),a=t.loadSnapshot??((e,t)=>z.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,c=t.runtimeProbe??{},l=(c.getGeneration??s)();return ot({queryKey:N.sessionStatus.snapshot(n,i),queryFn:async({signal:e})=>{Tb(i,l,c);let t=o(),r=await a(n,e);if(Tb(i,l,c),r===null)throw Error(`session status snapshot unavailable`);return{snapshot:r,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},Db=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(Eb(e,r))},Ob=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session active runtime changed`)},kb=(e={})=>{let t=e.transport??r(),n=e.loadActive??(e=>z.getSessionActive(e)),i=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??s)();return ot({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{Ob(t,o,a);let r=i(),s=await n(e);return Ob(t,o,a),{result:s,requestedAt:r}},staleTime:0,gcTime:3e5,retry:!1})},Ab=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(kb(n))},jb;function Mb(e){jb=e}function Nb(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 Pb(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Fb(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Ib(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 Lb(e,t,n,r=Date.now()){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let i=e.membership,a=t??{},o=new Set([...n,...Object.keys(a)]);if(o.size===0)return{snapshot:null,source:`none`};let s={};for(let e of o){let t=Object.prototype.hasOwnProperty.call(i,e),n=Nb(a[e]);if(t){s[e]=n&&Fb(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function Rb(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=Nb(t[o]);if(n&&n.type!==`idle`){Pb(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 zb(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Bb(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 Db(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 Ab({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}=Lb(l,h,n);if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=zb(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Rb(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??jb;if(S){let n=t.getState().session_status??{},r={};for(let e of x){let t=n[e];t&&t.type!==`idle`&&(r[e]={type:t.type})}S(e,r,x)}return _}async function Vb({directory:e,sessionID:t,store:n,statusBeforePull:r,statusObservedAtBeforePull:i,hasMessages:a,isTailPage:o=!0,isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m}){if(!o||!a||!r||r.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:Bb(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var Hb=50,Ub=e=>{let t=Object.keys(e);if(t.length<=Hb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Hb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},Wb=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:Ub(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:h(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),Gb=new Set([`todowrite`,`todoread`]),Kb=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),qb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Jb=(e,t)=>{Wb.getState().setSessionTodos(e,t)},Yb=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Xb=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Zb=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},Qb=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Zb(n);e&&t.push(e)}return t},$b=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Qb(t);if(t&&typeof t==`object`)return Qb(t.todos)}catch{}return[]},ex=e=>{if(!Gb.has(Yb(e)))return[];let t=Xb(e);if(t&&Kb.has(t))return[];let n=e.state,r=Qb(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Qb(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Qb(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?$b(i):[]};function tx(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=ex(r[e]);if(t.length>0)return t}}return[]}function nx(e){if(!e.sessionID||e.isStale?.()||qb(e.store.getState().todo,e.sessionID))return!1;let t=tx(e.transcript);return t.length===0||e.isStale?.()||qb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function rx(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(U(e.directory,e.sessionID));return t?nx({sessionID:e.sessionID,store:e.store,transcript:t,persist:Jb,isStale:e.isStale}):!1}var ix=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>rC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>nC,SESSION_DELETE_UNDO_MS:()=>DS,abortBusySessionForMessageEdit:()=>_C,abortCurrentOperation:()=>cC,archiveSession:()=>LS,beginOptimisticSend:()=>qS,cancelScheduledSessionDeletes:()=>IS,classifySendFailure:()=>Zx,combinedSendConfirmationOptions:()=>iC,commitMessageEdit:()=>yC,createSession:()=>xS,deleteSession:()=>PS,dirStoreForDirectory:()=>Ix,dismissOpenQuestionsForSession:()=>fC,ensureSentUserMessagePresence:()=>sC,fetchMessagesForSession:()=>TC,fetchRecentSendConfirmationRecords:()=>eC,forkSession:()=>CC,getSendFailureKind:()=>Yx,getSessionLastAssistantModel:()=>Hx,isQuestionRequestNotFoundError:()=>vS,materializeConfirmedSendRecords:()=>tC,mirrorSessionIntoLiveStores:()=>Wx,optimisticInsertUserMessage:()=>QS,optimisticSend:()=>ZS,patchSessionMetadata:()=>SS,refetchSessionMessages:()=>xC,rejectQuestion:()=>dC,releaseUnconfirmedQueueSend:()=>Nx,requestSessionSmartTitle:()=>BS,resolveForkMessageId:()=>_x,respondToPermission:()=>lC,respondToQuestion:()=>uC,revertToMessage:()=>pC,rollbackOptimisticSend:()=>YS,scheduleSessionDeletes:()=>FS,setActionRefs:()=>jx,setOptimisticRefs:()=>Mx,settleOptimisticSend:()=>XS,shareSession:()=>VS,shouldSuppressForkCopyEvent:()=>yx,stageMessageEdit:()=>hC,trackForkCopySessionCreated:()=>px,unarchiveSession:()=>RS,unrevertSession:()=>SC,unshareSession:()=>HS,updateSessionTitle:()=>zS,waitForConnectionOrThrow:()=>tS,waitForSessionIdleForMessageEdit:()=>vC}),ax=2,ox=150,sx=new Set([`patch`,`step-start`,`step-finish`]),cx=3,lx=150,ux=null,dx=new Map,fx=3e4;function px(e,t){let n=t?.id;!ux||ux.runtimeKey!==i()||ux.directory!==e||!n||t?.title!==ux.expectedTargetTitle||n===ux.sourceSessionID||ux.targetSessionID||(ux.targetSessionID=n)}function mx(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function hx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function gx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function _x(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!n||n.type===`idle`)return e;for(let e=t.length-1;e>=0;--e)if(t[e]?.role===`user`)return t[e].id}async function vx(e,t){let n=Lp(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 yx(e,t,n){if(ux&&ux.runtimeKey===i()&&ux.directory===e&&t&&t===ux.targetSessionID)return!0;if(!t||!n)return!1;let r=`${i()}:${e}:${t}`,a=dx.get(r);return a?a.expiresAt<=Date.now()?(dx.delete(r),!1):n<=a.messageID:!1}var bx=null,xx=null,Sx=()=>``,Cx=new Map,wx=null,Tx=null,Ex=null,Dx=e=>new Promise(t=>setTimeout(t,e));function Ox(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 kx(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Ox(e.error)}`);throw n!==void 0&&(r.status=n),r}function Ax(e,t){let n=kx(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function jx(e,t,n){if(bx=e,xx=t,Sx=n,Cx.size>0){let e=[...Cx.values()];Cx.clear(),queueMicrotask(()=>{for(let t of e)TC(t.sessionID,t.directory)})}}function Mx(e,t,n){wx=e,Tx=t,Ex=n??null}function Nx(e){let t=e.directory??null;Tx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Px(){if(!bx)throw Error(`SDK not initialized — is SyncProvider mounted?`);return bx}function Fx(){if(!xx)throw Error(`Child stores not initialized`);let e=Sx();if(!e)throw Error(`No current directory`);return xx.ensureChild(e)}function Ix(e,t){if(!xx)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return xx.ensureChild(e,t)}function Lx(e,t){let n=t??sS(e);return n?{store:Ix(n),directory:n}:{store:Fx(),directory:Gx()}}function Rx(e,t){let{store:n,directory:r}=Lx(e,t??void 0),i=r??Gx()??``;return{repository:H()??yu(i,n),directory:i,store:n}}function zx(e,t){let{repository:n,directory:r,store:i}=Rx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function Bx(e,t){return Gu(zx(e,t).data)}function Vx(e,t){return zx(e,t).data.messageOrder.length}function Hx(e){try{let t=Bx(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 Ux(e,t){let n=xx;if(!n)return!1;let r=t?[[t,n.getChild(t)]]:n.children;for(let[,t]of r){if(!t)continue;let n=t.getState().session,r=n.findIndex(t=>t.id===e.id);if(r===-1)continue;let i=[...n];return i[r]=GE(e,n[r]),t.setState({session:i}),!0}return!1}function Wx(e,t){t&&Ux(e,t)||Ux(e)}function Gx(){return Sx()||void 0}function Kx(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function qx(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 Jx=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 Yx(e){return e instanceof Jx?e.kind:null}function Xx(e){let t=qx(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 Zx(e,t){return t?Xx(e)||qx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var Qx=2e3,$x=5e3,eS=3e4;async function tS(){let e=jm();e&&Am(`send_stream_stale`);let t=Date.now()+(e?$x:Qx);for(;Date.now()<t;){if(G.getState().isConnected&&!jm()||o()&&!jm())return;let e=t-Date.now();if(e<=0)break;if(await G.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!jm())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw Kx()}function nS(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Am(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},eS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function rS(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function iS(e){e&&Y.getState().upsertSession(e)}function aS(e,t){let n=sp(t),r=[...e.getState().session],i=ls.search(r,n.id,e=>e.id);if(i.found){let t=GE(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 oS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=rS(e);if(i)return aS(t,i);try{return aS(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 sS(e){return cS(e)||$.getState().getDirectoryForSession(e)||Gx()}function cS(e){let t=xx;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=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 lS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):Px()}function uS(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 dS=()=>new Map(Array.from(Pd(),([e,t])=>[e,t.title||e]));function fS(e){return!(e.type!==`file`||Zp(e))}function pS(e){return fS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function mS(e){return e.some(pS)}async function hS(e){let t=[...e.parts];if(!mS(t))return t;let n=s(),r=e.directory??``;try{await Eu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||s()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=Rx(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],mS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function gS(e){if(mS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await fm(e.parts,{sessionTitles:dS(),directory:e.directory}),n=Or.getState(),r=n.getDraft(e.key);return{payload:t,commit:await _m({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function _S(e,t,n){let r=xx;if(!r||!n)return null;for(let[t,i]of r.children){let r=i.getState(),a=e===`permission`?r.permission:r.question;for(let e of Object.values(a))if(e?.some(e=>e.id===n))return t}let i=$.getState().getDirectoryForSession(t);if(i)return i;for(let[e,n]of r.children){let r=n.getState();if(r.session.some(e=>e.id===t)||Object.prototype.hasOwnProperty.call(r.session_status??{},t)||Object.prototype.hasOwnProperty.call(r.permission??{},t)||Object.prototype.hasOwnProperty.call(r.question??{},t))return e}return null}function vS(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 yS(e,t){let n=xx;if(!n||!t)return!1;let r=!1;for(let[,i]of n.children){let n=i.getState().question??{},a=null,o=new Set([e,...Object.keys(n)].filter(Boolean));for(let e of o){let i=n[e];if(!i?.length)continue;let o=i.filter(e=>e.id!==t);o.length!==i.length&&(a??={...n},o.length>0?a[e]=o:delete a[e],r=!0)}a&&i.setState({question:a})}return r}function bS(e,t,n){let r=_S(e,t,n);return r?z.getScopedSdkClient(r):lS(t)}async function xS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??Gx()),a=i.directory??null;return a&&Ed(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 SS(e,t,n){let r=t??sS(e),i=n(Lp(await z.getSession(e,r))),a=await z.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Ed(a.id,o),a}async function CS(e,t){let n;try{n=await z.getSession(e,t??sS(e))}catch{return}if(!Vp(n))return;let r=Bp(n);if(r)try{await SS(r,t??sS(r),t=>Wp(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 wS(e,t){if(!xx)return[];let n=[],r=new Set,i=[];if(t){let e=xx.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of xx.children.entries())r.has(e[0])||i.push(e);for(let[t,r]of i){let i=r.getState();i.session.some(t=>t.id===e)&&(n.push({directory:t,sessions:i.session}),r.setState({session:i.session.filter(t=>t.id!==e)}))}return n}function TS(e){if(xx)for(let t of e){let e=xx.children.get(t.directory);e&&e.setState({session:t.sessions})}}function ES(e){$.getState().setWorktreeMetadata(e,null)}var DS=1e4,OS=new Map,kS=0;function AS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function jS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),TS(e.listSnapshots),iS(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function MS(e,t){let n=t??sS(e);Y.getState().markSessionsPendingDeletion([e]);let r=wS(e,n),i=rS(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 NS(e,t){try{if(await CS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return wS(e,t),Y.getState().removeSessions([e]),ES(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(wS(e,t),Y.getState().removeSessions([e]),ES(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function PS(e,t){let n=MS(e);return await NS(e,n.directory)?!0:(jS(n),!1)}function FS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>MS(e)),i=`session-delete-${Date.now()}-${kS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=OS.get(i);if(!e)return;OS.delete(i);let t=[],n=[];for(let r of e.entries)await NS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),jS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return OS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function IS(e){if(!e)return!1;let t=OS.get(e);if(!t)return!1;clearTimeout(t.timer),OS.delete(e);for(let e of[...t.entries].reverse())jS(e);return!0}async function LS(e){let t=sS(e),n=wS(e,t),r=rS(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await CS(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),TS(n),iS(r),!1}}async function RS(e){let t=sS(e),n=rS(e),r=n?AS(n):null;if(r&&(Y.getState().upsertSession(r),t&&xx)){let e=xx.children.get(t);e&&aS(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=AS(n);if(Y.getState().upsertSession(r),t&&xx){let e=xx.children.get(t);e?aS(e,r):Wx(r,t)}else Wx(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&wS(e,t)),!1}}async function zS(e,t){let n=sS(e),r=rS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Xf(r):0,c=await z.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),Wx(c,n)}async function BS(e){let t=sS(e),n=rS(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),Wx(s,t)}async function VS(e){let t=sS(e),n=sp(Ax(await Px().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),Ux(n,t),n}async function HS(e){let t=sS(e),n=sp(Ax(await Px().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),Ux(n,t),n}function US(e){let t=xx,n=e??Sx();if(!t||!n)return{store:e?Ix(e):Fx(),isCurrent:()=>!0};let r=t,i=r.captureChild?.(n);if(i&&r.isCurrentChildCapture)return{store:i.store,isCurrent:()=>r.isCurrentChildCapture?.(i)===!0};let a=t.ensureChild(n);return{store:a,isCurrent:()=>t.getChild(n)===a}}function WS(){return{identity:r(),generation:s()}}function GS(e,t){return e.isCurrent()&&r()===t.identity&&s()===t.generation}function KS(e,t){if(!GS(e,t))throw Error(`Send target changed before transport dispatch`)}function qS(e){if(!wx||!Tx)throw new Jx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??Gx()??null,n=US(t),r=WS();KS(n,r),e.beforeOptimisticInsert?.(),KS(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),QS({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 Jx?e:new Jx(Yx(e)??Zx(e,!1),e)}}function JS(e){if(!GS(e.capture,e.transport)||!Tx)return;Tx({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 YS(e){JS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function XS(e){if(!wx||!Tx)throw new Jx(`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 tS(),KS(n,r),s=!0,await nS(e.send(i)),!GS(n,r))throw new Jx(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Yx(c)??Zx(c,s),u=c instanceof Jx?c:new Jx(l,c,i);if(!GS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await eC(a,i,o):null;if(d&&GS(n,r)){tC(n.store,a,i,d,{directory:o??void 0}),Ex?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||JS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function ZS(e){await XS({ticket:e.ticket??qS({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 QS(e){if(!wx)return!1;let t=e.directory??Gx(),n=t?Ix(t):Fx(),i=t??Gx()??``;if(aC(n,e.sessionId,e.messageID,i)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),c={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},l=Bv(()=>zx(e.sessionId,t).data);wx({sessionID:e.sessionId,directory:t,message:c,parts:a});let u=Bv(()=>zx(e.sessionId,t).data);try{l&&u&&Vv({trigger:`user-send`,sessionID:e.sessionId,directory:i,transport:r(),generation:s(),before:l,after:u})}catch{}let d=n.getState();return n.setState({session_status:{...d.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...d.session_status_observed_at,[e.sessionId]:o}}),!0}function $S(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function eC(e,t,n,r){let i=r?.signal||r?.timeoutMs!==void 0?new AbortController:null,a=()=>i?.abort();r?.signal?.addEventListener(`abort`,a,{once:!0}),r?.signal?.aborted&&i?.abort();let o=r?.timeoutMs===void 0?void 0:setTimeout(()=>i?.abort(),Math.max(0,r.timeoutMs)),s=r?.attempts??ax,c=r?.retryDelayMs??ox;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!$S(r?.isCurrent)||a>0&&(await Dx(c),i?.signal.aborted||!$S(r?.isCurrent)))return null;try{let a=await Px().session.messages({sessionID:e,directory:n??void 0,limit:$m(),...i?{signal:i.signal}:{}});if(!$S(r?.isCurrent))return null;let o=(kx(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 tC(e,t,n,r,i){if(!r.length)return;let a=i?.directory??sS(t)??Sx(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:lp(e.info),parts:e.parts??[]})),skipPartTypes:sx,merge:i?.gapFillOnly===!0?Ys:Zs({purpose:`recovery`})};xu(o,s)||yu(a,e).apply(o,s)}var nC=2e3,rC={attempts:12,retryDelayMs:500},iC={presenceGraceMs:nC,recovery:{...rC}};function aC(e,t,n,r){let i=r??sS(t)??Sx()??``,a=H()??yu(i,e),o=U(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function oC(e,t,n,r){let i=r?.directory??sS(t)??Sx()??``;if(aC(e,t,n,i))return Promise.resolve(!0);if(!$S(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()??yu(i,e),f=U(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!$S(r?.isCurrent)){l(!1);return}aC(e,t,n,i)&&l(!0)}),aC(e,t,n,i)&&l(!0)})}async function sC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await oC(t,n,r,{timeoutMs:e.graceMs??iC.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!$S(a))return`cancelled`;let o=await eC(n,r,i,{...iC.recovery,isCurrent:a});return o?$S(a)?(tC(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:$S(a)?`missing`:`cancelled`}async function cC(e){let{store:t,directory:n}=Lx(e),i=n?{state:`bound`,transportIdentity:r(),directory:n,sessionID:e}:null,a=i?$.getState().beginQueueAbortBlock(i):null;try{if(Ax(await Px().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){i&&a&&$.getState().clearQueueAbortBlock(i,a),et(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>yV);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function lC(e,t,n){await tS();let r=_S(`permission`,e,t)||sS(e)||Gx();if(Ax(await bS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function uC(e,t,n){await tS();let r=_S(`question`,e,t)||sS(e)||Gx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Ax(await bS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw vS(n)&&yS(e,t),n}}async function dC(e,t){await tS();let n=_S(`question`,e,t)||sS(e)||Gx();try{if(Ax(await bS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw vS(n)&&yS(e,t),n}}async function fC(e){if(!e)return!1;let t=xx;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Kp(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)yS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await dC(e,t)}catch(e){if(vS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function pC(e,t,n){let i=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return vb(e,i??(()=>{try{return Lx(e,i).directory}catch{return i}})(),async({isCurrent:n})=>{let{store:o,directory:c}=Lx(e,i);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Px().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=Bx(e,c).find(e=>e.id===t),d=Bx(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}=Rx(e,c),m=[...f.getParts(U(p,e),t)],h=a===void 0?s?C({transportIdentity:r()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await hS({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await fm(m,{sessionTitles:dS(),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 _m({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 ym({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 ym({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&&Cb.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 ym({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await ym({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function mC(e,t,n,i){let a=i??sS(t)??Sx(),o=U(a,t),c=Bv(()=>zx(t,a).data),l=[...bu(t)];l.some(e=>e.directory===a&&e.sessionID===t)||l.push(o);let u=!1;for(let e of l)xu(e,{type:`remove-message`,messageID:n})!=null&&(u=!0);u||yu(a,e).apply(o,{type:`remove-message`,messageID:n});let d=Bv(()=>zx(t,a).data);try{c&&d&&Vv({trigger:`user-delete`,sessionID:t,directory:a,transport:r(),generation:s(),before:c,after:d})}catch{}}async function hC(e,t,n,i){let a=n?.info,o=n?.parts,s=i?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=Lx(e,s).directory}else{c=Lx(e,s).directory;let{data:n}=zx(e,c),r=Gu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=i?.draftKey??C({transportIdentity:r()},e),{commit:u}=await gS({key:l,parts:await hS({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 ym({key:l,restoredRevision:d,previous:f})).status})}}function gC(e,t,n,r){let i=t.findIndex(t=>t.id===e),a=i>=0?t[i]:void 0;if(!a||a.role!==`user`||!n.has(e))throw Error(`The selected user message is unavailable`);let o=r?.preserveMessageId,s=o?t.findIndex(e=>e.id===o):-1,c=s>i?s:t.length;return t.slice(i,c).filter(e=>!(!n.has(e.id)||o&&e.id===o))}async function _C(e,t){let n=t?.directory,{store:r,directory:i}=Lx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Px().session.abort({sessionID:e,directory:i})}catch{}}async function vC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=Lx(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 yC(e,t,n){let i=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:c}=Lx(e,i),l=Bv(()=>zx(e,i).data);try{await _C(e,{directory:i}),await vC(e,{directory:i});let n=new Set((await bC(e,i)).map(e=>e.id)),r=gC(t,Bx(e,i),n,{preserveMessageId:a});for(let t of[...r].reverse())await z.deleteSessionMessage(e,t.id,c),mC(o,e,t.id,c)}finally{try{let t=Bv(()=>zx(e,i).data);l&&t&&Vv({trigger:`user-edit`,sessionID:e,directory:c,transport:r(),generation:s(),before:l,after:t})}catch{}}}async function bC(e,t){let{directory:n}=Lx(e,t);return(kx(await Px().session.messages({sessionID:e,directory:n,limit:Qm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>lp(e.info))}async function xC(e,t){let{store:n,directory:i}=Lx(e,t),a=Bv(()=>zx(e,t).data),o=(kx(await Px().session.messages({sessionID:e,directory:i,limit:Qm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Bv(()=>zx(e,t).data);a&&n&&Vv({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let c=o.map(e=>({info:lp(e.info),parts:e.parts??[]})),l=U(i??Sx(),e);xu(l,{type:`materialize-snapshots`,records:c,skipPartTypes:sx})||yu(i??Sx(),n).apply(l,{type:`materialize-snapshots`,records:c,skipPartTypes:sx});try{let n=Bv(()=>zx(e,t).data);a&&n&&Vv({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return c.map(e=>e.info)}async function SC(e,t){return vb(e,t??(()=>{try{return Lx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=Lx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Vx(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Px().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Px().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Ax(c,`session.unrevert`),u=[...r.getState().session],d=u.findIndex(t=>t.id===e);d>=0&&(u[d]=l,r.setState({session:u}));for(let r=0;r<cx;r+=1){if(r>0&&(await Dx(lx),!n())||(await xC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Vx(e,i)>o)return}if(Vx(e,i)<=o){let n=i??Sx(),a=H()??yu(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await xC(e,t)}})}async function CC(e,t,n,r){let a=i(),{store:o,directory:s}=Lx(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await oS(e,o,s);Ed(e,s);let l=o.getState(),u=l.session_status[e],d=Bx(e,s);u?.type,d.length;let f=_x(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await xC(e),l=o.getState(),u=l.session_status[e],d=Bx(e,s),f=_x(void 0,d,u)),!n&&l.session_status[e]?.type!==`idle`&&!f)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:Vx(e,s)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=zx(e,s),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(U(s,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!Zp(e)).map(e=>e.text||e.content||``).join(`
461
+ `).trim();if(n)return L_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function ov(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function sv(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var cv=e=>typeof e==`string`&&e.trim().length>0;function lv(e){if(!e||ov(e)!==`assistant`)return;let t=e,n=!cv(t.mode)&&!cv(t.agent),r=!cv(t.modelID)||!cv(t.providerID);return n||r}function uv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function dv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)I_(e)?r+=1:i+=1,iv(e)&&(a=!0);let o=e.messagesByID[t],s=ov(o),c=lv(o),l=s===`user`?av(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:sv(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 fv(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:uv(e),after:uv(i)}),e.fullCount>0&&i.fullCount===0&&i.slimCount>0&&l.push(t),e.optimistic&&!i.optimistic&&!i.completed&&u.push(t),e.identityMissing!==!0&&i.identityMissing===!0&&d.push(t)}return{addedMessageIDs:o,removedMessageIDs:s,partsChanged:c,downgraded:l,optimisticLost:u,identityLost:d}}function pv(e){return{at:(e.now??Date.now)(),feat:`transcript`,kind:`transcript-diff`,sessionID:e.sessionID,trigger:e.trigger,before:e.before,after:e.after,diff:fv(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 mv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function hv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function gv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function _v(e){let t=gv(e.partID),n=gv(e.messageID),r=gv(e.directory),i=gv(e.childSessionID),a=gv(e.toolStatus),o=gv(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 vv(e){return[e.sessionID,gv(e.partID)??``,e.childSessionPresent?`1`:`0`,gv(e.childSessionID)??``,gv(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`,gv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function yv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,..._v(e)}}function bv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:hv(e),..._v(e)}}var xv=`openchamber-transcript-diagnostics`,Sv=`events`,Cv=1,wv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),Tv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Cv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Sv)||e.createObjectStore(Sv,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),Ev=(e=xv)=>({async append(t,n){let r=await Tv(e);try{let e=r.transaction(Sv,`readwrite`).objectStore(Sv);await wv(e.add(t));let i=await wv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await wv(e.delete(t))}finally{r.close()}},async read(){let t=await Tv(e);try{return await wv(t.transaction(Sv,`readonly`).objectStore(Sv).getAll())}finally{t.close()}},async clear(){let t=await Tv(e);try{await wv(t.transaction(Sv,`readwrite`).objectStore(Sv).clear())}finally{t.close()}}});function Dv(e={}){let t=e.driver??Ev(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Ov=Qe(`OpenChamberMedia`);function kv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Av(){return Ge()&&$e!==void 0&&$e.isPluginAvailable(`OpenChamberMedia`)}function jv(){return`1.18.3-beta.9`}function Mv(){if(typeof localStorage>`u`)return null;try{return V_(localStorage.getItem(B_))}catch{return null}}function Nv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(B_,e?`true`:`false`)}catch{}}function Pv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var Fv;function Iv(e=jv()){return H_({version:e,preference:Mv()})}function Lv(e={}){return Q_({sink:Pv()===`indexeddb`?(e.createIndexedDBSink??Dv)():(e.createMemorySink??Z_)(),isEnabled:e.isEnabled??Iv})}function Rv(){return Fv??=Lv(),Fv}function zv(e){Rv().record(e)}function Bv(e){try{return Iv()?dv(e()):void 0}catch{return}}function Vv(e){try{zv(pv(e))}catch{}}function Hv(e){try{zv(yv(e))}catch{}}function Uv(e){try{zv(bv(e))}catch{}}function Wv(e){let t=ev(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&zv(X_({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:tv(e.command),sseType:nv(e.command),source:rv(e.command),error:e.error}))}async function Gv(){let e=await Rv().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 Kv(e,t=U_()){if(Av())return(await Ov.saveFile({dataBase64:kv(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 qv(){let e=await Gv(),t=U_();return{content:e,fileName:t,outcome:await Kv(e,t),eventCount:W_(e)}}function Jv(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 Yv=2,Xv=6e4;function Zv(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??r)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??s)()}}function Qv(e,t){let n=(t.probe?.getTransport??r)(),i=(t.probe?.getGeneration??s)();if(n!==e.transport||i!==e.generation)throw new Lh}function $v(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function ey(e,t){return mg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function ty(e,t){return`${e.trim()}\n${t}`}function ny(e){let t=e.client,n=e.repository,i=e.cacheBudget??n.getCacheBudget?.()??Eg({client:t,activeRegistry:xg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??Yv)),o=e.fetchReconcile??Qg,c=e.now??Date.now,l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,h=new Set,g=new Map,_=new Set,v=(e,t)=>{h.add(ty(e,t))},y=(e,t)=>{h.delete(ty(e,t))},b=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},x=e=>{u+=1;for(let e of[...f.keys()])b(e);p.clear(),m.clear()},S=(e,t)=>{let n=t===void 0?void 0:t.trim(),r=new Map;for(let t of i.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&r.set(ty(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of i.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&r.set(ty(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(r.values())},C=(t,n)=>{let r=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of i.listCanonical({transport:t.transport,generation:t.generation}))r.add(e.scope.directory);for(let e of i.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&r.add(e.directory);for(let e of n)e.directory&&r.add(e.directory.trim());return r},w=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=ty(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},T=r=>{if(l)return;let a={transport:r.transport??Zv(e).transport,generation:r.generation??Zv(e).generation},o=c(),s=w(),u=C(a,s),d=i.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(ty(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of i.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(ty(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of s)f.set(ty(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(ty(t,n),{directory:t,sessionID:n});for(let e of f.values()){let i=$v(e,a),s=n.getTranscript(i),c=j_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:r.lastEventID,capturedAt:o});P_(t,c)}let p=new Set;for(let t of u){let n=Jv({directory:t,activeScopes:S(a,t),viewedSessions:s,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(ty(e.directory,e.sessionID))}for(let e of d){let t=ty(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=Bv(()=>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=Bv(()=>n.getTranscript(e));i&&t&&Vv({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},D=async(r,i,a)=>{if(Qv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;P_(t,M_(N_(t,i)??j_({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=Bv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),Qv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;F_(t,i),y(i.directory,i.sessionID);try{let e=Bv(()=>n.getTranscript(r));o&&e&&Vv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw P_(t,M_(N_(t,i)??j_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},O=async(r,i,a)=>{if(Qv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;P_(t,M_(N_(t,i)??j_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Bv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),Qv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;F_(t,i),y(i.directory,i.sessionID);try{let e=Bv(()=>n.getTranscript(r));o&&e&&Vv({trigger:`reconnect-compensation-ensure-tail`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw P_(t,M_(N_(t,i)??j_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},k=async(r,i,a,s)=>{let l=$v(r,i),d=ey(r,i),f=vg({directory:d.directory,sessionID:d.sessionID,checkpoint:String(N_(t,d)?.capturedAt??c())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:c()});try{if(Qv(i,e),a!==u||s.aborted)throw new Lh;let p=N_(t,d);if(p||(p=j_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(l),lastEventID:null,capturedAt:c()}),P_(t,p)),!p.anchorMessageID){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}p=M_(p,{state:`reconciling`}),P_(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,Qv(i,e),a!==u||s.aborted)throw new Lh;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,Qv(i,e),a!==u||s.aborted)throw new Lh;let h=n.getTranscript(l).liveRevision;if(!g&&!m){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}let y=await o({sessionID:r.sessionID,directory:r.directory.trim(),...g?{continuation:g}:{anchor:m},signal:s});if(Qv(i,e),a!==u||s.aborted)throw new Lh;if(y.resetRequired){await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()});return}if(b===1&&(_=y.capturedHeadMessageID),v=y.latestHeadMessageID??v,y.records.length>0&&E(l,y,h),p=M_(N_(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),P_(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=M_(N_(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),P_(t,p);continue}p=M_(N_(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),P_(t,p),y(r.directory,r.sessionID),t.setQueryData(f,{status:`complete`,finishedAt:c()});return}await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()})}catch(n){if(n instanceof Lh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(f,{status:`cancelled`,finishedAt:c()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(f,{status:`error`,finishedAt:c(),code:n instanceof Error?n.name:`error`}),n}},A=t=>{let n=t.trim(),r=m.get(n)??0;if(r>=a)return;let i=p.get(n);if(!i||i.length===0)return;let o=i.shift();m.set(n,r+1);let s=ty(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),A(n);return}let c=Zv(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{jg(n,o.sessionID);try{await k(o,c,l,h.signal)}catch{}finally{Mg(n,o.sessionID),f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),A(n)}})();d.set(s,g)},j=e=>{let t=e.directory.trim(),n=ty(t,e.sessionID);if(d.has(n))return;let r=p.get(t);r||(r=[],p.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),A(t))},ee=t=>{let n=w(),r=C(t,n);for(let a of r){let r=Jv({directory:a,activeScopes:S(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of r)j(e);for(let e of i.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=ty(e.scope.directory,e.scope.sessionID);r.some(e=>ty(e.directory,e.sessionID)===t)||v(e.scope.directory,e.scope.sessionID)}}},te=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??r)(),generation:t.runtimeGeneration},i=(e.probe?.getGeneration??s)(),a=(e.probe?.getTransport??r)();if(i!==n.generation||a!==n.transport){x(`generation_mismatch`);return}ee(n)},M=t=>{if(l)return;let r=t.directory.trim(),i=Zv(e,t),a=$v({directory:r,sessionID:t.sessionID},i),s=hg(ey({directory:r,sessionID:t.sessionID},i)),u=g.get(s);if(u&&c()-u.checkedAt<Xv||_.has(s)||d.has(ty(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(_.add(s),(async()=>{try{if(Qv(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(Qv(i,e),l||(g.set(s,{checkedAt:c()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;E(a,u,d)}catch{}finally{_.delete(s)}})())};return{captureCheckpoints:T,onCompensation:te,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=ty(i,r.sessionID);if(!h.has(a))return M(r),null;y(i,r.sessionID);let o=Zv(e,r),s=$v({directory:i,sessionID:r.sessionID},o),c=ey({directory:i,sessionID:r.sessionID},o),u=N_(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){j({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{Qv(o,e),jg(i,r.sessionID);try{let e=await n.ensureInitial(s);return F_(t,c),e}finally{Mg(i,r.sessionID)}}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:x,getCheckpoint:n=>{let r=Zv(e,n);return N_(t,ey({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(ty(e,t)),destroy:()=>{l=!0,x(`destroy`)}}}function ry(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function iy(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 ay(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 oy(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(tc(e))??Promise.resolve(),r.get(rc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=tc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=rc(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??fg)();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 sy=new Map;function cy(e,t){let n=sy.get(e);if(n)return n;let r=t().finally(()=>{sy.get(e)===r&&sy.delete(e)});return sy.set(e,r),r}var ly=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function uy(e){return cy(ly(e),e.request)}function dy(e,t){return`${e}\n${t}`}var fy=new Map;function py(e){return fy.get(e)}async function my(e){return uy({runtimeKey:dy(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 fy.set(r.id,i),{info:lp(r),parts:i}}})}function hy(e,t){let n=e.info;return n.role===t||n.clientRole===t}function gy(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!hy(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 _y(e){if(e.complete){let t=e.records.some(e=>hy(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=gy(e.records);if(t.length===0){let t=e.records.some(e=>hy(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=>hy(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function vy(e){return e.trim()}function yy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??r)(),i=e.generation??t.generation??(t.probe?.getGeneration??s)();return{directory:vy(e.directory),sessionID:e.sessionID,transport:n,generation:i}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function by(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:rl,liveRevision:0}}function xy(e,t){if(!e||e.pages.length===0)return by(t);let n=Ih(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function Sy(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function Cy(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=Sy(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=Sy(e.messagesByID[t]);a===void 0||a<=n||Cy(e.partsByMessageID[t])||i.push(t)}return i}function Ty(e={}){let t=e.client??L,n=e.cacheBudget??Eg({client:t,activeRegistry:e.activeRegistry??xg()}),i=n.activeRegistry,a=new Map,o=new Map,c=new Map,l=new Map,u=new Map,d=e.durableStore?oy(e.durableStore,{getProtectScopes:()=>i.listRetained().map(ry),getByteBudget:e.getDurableByteBudget}):void 0,f=new Map,p=new Map,m=new Map,h=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=xy(w(e),t.sessionID);!Sl(r)&&!v.has(n)||(y.add(n),zv(X_({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=u.get(e);return t||(t={messages:new Map,parts:new Map},u.set(e,t)),t},w=n=>{let r=yy(n,e);return ag({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=yy(t,e);return qh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=yy(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let i=e.probe??{getTransport:r,getGeneration:s},o=yy(n,{...e,transport:void 0,generation:void 0,probe:i}),c=K(o),l=a.get(c);if(l)return l;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let u=rg({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:i,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(c,u),u},k=t=>{let n=K(yy(t,e));u.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(yy(n,e));if(c.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});c.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=c.get(e);n&&(n(),c.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of m.keys())t.startsWith(e)&&m.delete(t);for(let t of h.keys())t.startsWith(e)&&h.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of m)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of h.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=yy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{d&&d.persistSettled(ry(e),t,n??[])},le=(e,t,n,r)=>{if(!d||S>0||!r.applied||!r.changed)return;let i=ry(t);if(n.type===`remove-message`){d.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(d.clearSession(i),n.page){let r=xy(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=xy(w(e),t.sessionID);for(let e of r){let n=ay(e);if(n.action===`remove`){d.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=xy(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,i)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:r,getGeneration:s},c={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??Ym()};return iy(i?.fresh?await t.fetchQuery({...Zh(c,a,n.transport,o,n.generation),staleTime:0}):await Qh(c,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)cu(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now();f.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return f.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Lm(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(!gl(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),m.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Lh||!se(t))return f.delete(r),P.getTranscript(e);throw f.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),zv(X_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:xy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{p.delete(r)}})();return p.set(r,a),a},fe=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;f.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return f.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||eu(t.sessionID,t.directory)?(f.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Lm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return f.delete(r),n instanceof Lh||!se(t)||zv(X_({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:xy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{p.delete(r)}})();return p.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(yy(t,e)))?!0:oh(n).kind===`unknown`},P={getTranscript(t){let n=yy(t,e),r=K(n),i=xy(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=yy(t,e),r=K(n),i=P.getTranscript(t);return te(r,El(n.sessionID,i.boundary))},getRequestState(t){let n=yy(t,e),r=f.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=yy(t,e),r=K(n),i=P.getTranscript(t);Sl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Cl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:yl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(yy(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(yy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??Ey,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=yy(t,e),i=m.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||hl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=yy(t,e),i=M(r,n),a=Bv(()=>P.getTranscript(t)),o=e=>{try{let t=Bv(e);if(!a||!t)return;Vv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=h.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return m.set(i,{status:`idle`}),P.getTranscript(t);if(!hl(P.getParts(t,n))&&!g.get(K(r))?.has(n))return m.set(i,{status:`ready`}),P.getTranscript(t);m.set(i,{status:`loading`}),k(t);try{let a=await my({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??[]}]}),hl(P.getParts(t,n))?m.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):m.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(m.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return m.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return m.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return h.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{h.get(i)===c&&h.delete(i)}),c},apply(r,i){let a=yy(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=ig(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=ig(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=ig(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=ig(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}),ig(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=ig(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=ig(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 Dy(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=ig(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&&(Wv({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:xy(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,r){let a=K(yy(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);l.set(a,i.retain(e)),n.noteScopeObserved(e)}return s.add(r),A(t),()=>{let e=o.get(a);if(e){if(e.delete(r),e.size===0){let e=l.get(a);e&&(e(),l.delete(a))}j(a)}}},async ensureInitial(t){let r=yy(t,e),a=K(r);if(d&&await d.wait(ry(r)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(ry(r));if(se(r)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)gl(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){zv(X_({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,r);return zv(X_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!i.isRetained(E(t))){let e=Date.now(),n=await fe(t,r);return zv(X_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;f.delete(a);try{await s.ensureInitial()}catch(e){throw zv(X_({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:xy(w(t),r.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}f.delete(a),l||Lm(r.directory,r.sessionID,{transport:r.transport,generation:r.generation}),n.noteScopeObserved(E(t)),D(t);let u=P.getTranscript(t);return zv(X_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:u,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),u},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),oh(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=yy(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 zv(X_({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 zv(X_({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=yy(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=yy(t,e),i=Bv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??Ym(),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=Bv(()=>c);i&&e&&Vv({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:i,after:e})}catch{}return c},async destructiveReset(t){let r=Bv(()=>P.getTranscript(t)),i=E(t);return d&&await d.clearSession(ry(yy(t,e))),n.destructiveReset(i,async()=>{let n=yy(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),u.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=Bv(()=>s);r&&e&&Vv({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=K(yy(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),u.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),u.delete(n);let e=l.get(n);e&&(e(),l.delete(n));let t=c.get(n);t&&(t(),c.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),d&&d.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of c.values())e();c.clear();for(let e of l.values())e();l.clear(),o.clear(),u.clear(),f.clear(),p.clear(),m.clear(),h.clear(),g.clear(),v.clear(),y.clear(),b.clear()}};return P}var Ey=Object.freeze([]);function Dy(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=ig(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var Oy=`/api/openchamber/transcript-cache`,ky=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),Ay=e=>typeof e==`object`&&!!e&&!Array.isArray(e),jy=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},My=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},Ny=e=>{if(!Ay(e))throw Error(`Invalid transcript cache scope`);return{transport:jy(e.transport,`scope`),generation:My(e.generation,`scope`),directory:jy(e.directory,`scope`),sessionID:jy(e.sessionID,`scope`)}},Py=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},Fy=e=>{if(!Ay(e)||!Ay(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!Ay(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:Ny(e.scope),messageID:jy(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>Py(e,`part completeness`)),completeness:Py(e.completeness,`completeness`),contentHash:jy(e.contentHash,`content hash`),byteSize:My(e.byteSize,`byte size`),lastAccessedAt:My(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:My(e.sortKey.created,`sort key`),messageID:jy(e.sortKey.messageID,`sort key`)}}},Iy=(e,t)=>{if(!Ay(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(Fy);return{scope:e.scope===void 0?gc(t):Ny(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},Ly=e=>{if(!Ay(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:Fy(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!ky.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:Fy(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Ry=e=>{if(!Ay(e))throw Error(`Invalid transcript cache evict`);return{evicted:My(e.evicted,`evict`),freedBytes:My(e.freedBytes,`evict`),remainingBytes:My(e.remainingBytes,`evict`)}},zy=e=>({scope:gc(e),records:[],byteSize:0}),By=(e,t)=>Ay(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Vy=async e=>{if(e.status===204)return;let t=await e.text();if(t)try{return JSON.parse(t)}catch{throw Error(`Invalid transcript cache payload`)}},Hy=async(e,t,n)=>{let r=await e(t,n);if(r.status===501)return{kind:`disabled`};if(r.status===404)return{kind:`not-found`};if(r.ok)return{kind:`ok`,payload:await Vy(r)};let i=await Vy(r).catch(()=>void 0);throw Error(By(i,`Transcript cache request failed (${r.status})`))},Uy=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Wy=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Gy(e={}){let t=e.fetch??F;return{async readSession(e){let n=await Hy(t,`${Oy}/session`,{method:`GET`,query:Uy(e)});return n.kind===`disabled`||n.kind===`not-found`?zy(e):Iy(n.payload,e)},async readMessage(e,n){let r=await Hy(t,`${Oy}/message`,{method:`GET`,query:{...Uy(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!Ay(r.payload))throw Error(`Invalid transcript cache record`);return Fy(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Hy(t,`${Oy}/message`,Wy(`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 Ly(i.payload)},async removeMessage(e,n){let r=await Hy(t,`${Oy}/message`,Wy(`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 Hy(t,`${Oy}/session`,Wy(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Hy(t,`${Oy}/generation`,Wy(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Hy(t,`${Oy}/evict`,Wy(`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 Ry(r.payload)},async clearAll(){let e=await Hy(t,`${Oy}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Ky=`openchamber-transcript-durable`,qy=1,Jy=`transcriptIndex`,Yy=`transcriptContent`,Xy=class extends Error{code;constructor(e){super(e),this.code=e}},Zy=e=>({id:nc(e.scope,e.messageID),scope:gc(e.scope),scopeKey:tc(e.scope),generationKey:rc(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}),Qy=(e,t)=>({scope:gc(e.scope),messageID:e.messageID,info:hc(t.info),parts:hc(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}}),$y=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Qy(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},eb=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},tb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),nb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Xy(`database-unavailable`));return}let r=indexedDB.open(e,qy),i=!1,a=()=>{i||(i=!0,n(new Xy(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Jy)){let t=e.createObjectStore(Jy,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Yy)||e.createObjectStore(Yy,{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}),rb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Xy(`database-unavailable`)),r.onblocked=()=>void 0}),ib=(e=Ky)=>({transaction:async t=>{let n=await nb(e),r=n.transaction([Jy,Yy],`readwrite`),i=r.objectStore(Jy),a=r.objectStore(Yy),o=e=>tb(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:()=>rb(e)});function ab(e,t={}){let n=_c(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Zy(t)),vc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(tc(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Qy(t,r);a.lastAccessedAt=n(),await e.putIndex(Zy(a)),i.push(a)}return yc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await $y(e,nc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=bc({info:i,incomingCompleteness:cc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=hc(a.slice()),c=cc(s),l=await dc(i,s),u=nc(t,i.id);return e.transaction(async e=>{let a=await $y(e,u),o=bc({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:vc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:gc(t),messageID:i.id,info:hc(i),parts:s,partCompleteness:s.map(sc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:ac(i)};return await e.putIndex(Zy(d)),await e.putContent({id:u,info:hc(i),parts:s}),{status:`written`,record:vc(d)}})},async removeMessage(t,n){await e.transaction(e=>eb(e,nc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(tc(t));for(let t of n)await eb(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(rc(t));for(let t of n)await eb(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(tc)),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?ic(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await eb(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 ob(e={}){return ab(e.driver??ib(e.databaseName),e)}function sb(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 cb=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function lb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Gy)(),t),i=()=>(n??=(e.createIndexedDBStore??ob)(),n),a=()=>sb(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=>cb([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function ub(e={}){await lb(e).clearAll()}var db=(e,t)=>e<t?-1:+(e>t);function fb(e){return e.filter(e=>!!e?.id).sort((e,t)=>db(e.id,t.id))}async function pb(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,i=await Hg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=i.records.map(e=>({info:lp(e.info),parts:fb(e.parts??[])}));if(!e.before&&!i.complete&&gy(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await _y({records:a,complete:i.complete,requestMessage:async n=>{let i=await my({transport:r(),generation:s(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:i.info,parts:fb(i.parts??[])}}})).records.map(e=>({info:e.info,parts:fb(e.parts??[])}))}return{records:a,cursor:i.cursor??void 0,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:e.limit}}function mb(e){let t=e.client??L,n=xg(),i=Eg({client:t,activeRegistry:n}),a=Ty({client:t,cacheBudget:i,activeRegistry:n,probe:{getTransport:r,getGeneration:s},fetcher:e=>pb({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:Ym(),historyLimit:Xm(),durableStore:e.durableStore??lb()}),o=ny({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:i,probe:{getTransport:r,getGeneration:s}});return gu(a),Au(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),Au(null),a.destroy(),_u()}}}function hb(e){return vu().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 gb=new Map;function _b(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function vb(e,t,n,i={}){let a=i.getTransportIdentity??r,o=i.getGeneration??s,c=a(),l=o(),u=_b(e,t,c,l),d=()=>a()===c&&o()===l,f=gb.get(u)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=f.catch(()=>void 0).then(()=>m);gb.set(u,h);try{if(await f.catch(()=>void 0),!d())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:c,generation:l,isCurrent:d})}finally{p(),gb.get(u)===h&&gb.delete(u)}}var yb=new Set,bb=new Set,xb=new Set,Sb=new Set,Cb={onDeleteRequest(e){return yb.add(e),()=>{yb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||yb.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 xb.add(e),()=>{xb.delete(e)}},requestDirectoryDialog(){xb.forEach(e=>e())},onGitRefreshHint(e){return Sb.add(e),()=>{Sb.delete(e)}},requestGitRefresh(e){e.directory.trim()&&Sb.forEach(t=>t(e))}},wb=e=>e.trim(),Tb=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session status runtime changed`)},Eb=(e,t={})=>{let n=wb(e),i=t.transport??r(),a=t.loadSnapshot??((e,t)=>z.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,c=t.runtimeProbe??{},l=(c.getGeneration??s)();return ot({queryKey:N.sessionStatus.snapshot(n,i),queryFn:async({signal:e})=>{Tb(i,l,c);let t=o(),r=await a(n,e);if(Tb(i,l,c),r===null)throw Error(`session status snapshot unavailable`);return{snapshot:r,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},Db=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(Eb(e,r))},Ob=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session active runtime changed`)},kb=(e={})=>{let t=e.transport??r(),n=e.loadActive??(e=>z.getSessionActive(e)),i=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??s)();return ot({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{Ob(t,o,a);let r=i(),s=await n(e);return Ob(t,o,a),{result:s,requestedAt:r}},staleTime:0,gcTime:3e5,retry:!1})},Ab=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(kb(n))},jb;function Mb(e){jb=e}function Nb(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 Pb(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Fb(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Ib(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 Lb(e,t,n,r=Date.now()){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let i=e.membership,a=t??{},o=new Set([...n,...Object.keys(a)]);if(o.size===0)return{snapshot:null,source:`none`};let s={};for(let e of o){let t=Object.prototype.hasOwnProperty.call(i,e),n=Nb(a[e]);if(t){s[e]=n&&Fb(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function Rb(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=Nb(t[o]);if(n&&n.type!==`idle`){Pb(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 zb(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Bb(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 Db(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 Ab({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}=Lb(l,h,n);if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=zb(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Rb(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??jb;if(S){let n=t.getState().session_status??{},r={};for(let e of x){let t=n[e];t&&t.type!==`idle`&&(r[e]={type:t.type})}S(e,r,x)}return _}async function Vb({directory:e,sessionID:t,store:n,statusBeforePull:r,statusObservedAtBeforePull:i,hasMessages:a,isTailPage:o=!0,isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m}){if(!o||!a||!r||r.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:Bb(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var Hb=50,Ub=e=>{let t=Object.keys(e);if(t.length<=Hb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Hb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},Wb=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:Ub(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:h(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),Gb=new Set([`todowrite`,`todoread`]),Kb=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),qb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Jb=(e,t)=>{Wb.getState().setSessionTodos(e,t)},Yb=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Xb=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Zb=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},Qb=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Zb(n);e&&t.push(e)}return t},$b=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Qb(t);if(t&&typeof t==`object`)return Qb(t.todos)}catch{}return[]},ex=e=>{if(!Gb.has(Yb(e)))return[];let t=Xb(e);if(t&&Kb.has(t))return[];let n=e.state,r=Qb(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Qb(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Qb(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?$b(i):[]};function tx(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=ex(r[e]);if(t.length>0)return t}}return[]}function nx(e){if(!e.sessionID||e.isStale?.()||qb(e.store.getState().todo,e.sessionID))return!1;let t=tx(e.transcript);return t.length===0||e.isStale?.()||qb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function rx(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(U(e.directory,e.sessionID));return t?nx({sessionID:e.sessionID,store:e.store,transcript:t,persist:Jb,isStale:e.isStale}):!1}var ix=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>rC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>nC,SESSION_DELETE_UNDO_MS:()=>DS,abortBusySessionForMessageEdit:()=>_C,abortCurrentOperation:()=>cC,archiveSession:()=>LS,beginOptimisticSend:()=>qS,cancelScheduledSessionDeletes:()=>IS,classifySendFailure:()=>Zx,combinedSendConfirmationOptions:()=>iC,commitMessageEdit:()=>yC,createSession:()=>xS,deleteSession:()=>PS,dirStoreForDirectory:()=>Ix,dismissOpenQuestionsForSession:()=>fC,ensureSentUserMessagePresence:()=>sC,fetchMessagesForSession:()=>TC,fetchRecentSendConfirmationRecords:()=>eC,forkSession:()=>CC,getSendFailureKind:()=>Yx,getSessionLastAssistantModel:()=>Hx,isQuestionRequestNotFoundError:()=>vS,materializeConfirmedSendRecords:()=>tC,mirrorSessionIntoLiveStores:()=>Wx,optimisticInsertUserMessage:()=>QS,optimisticSend:()=>ZS,patchSessionMetadata:()=>SS,refetchSessionMessages:()=>xC,rejectQuestion:()=>dC,releaseUnconfirmedQueueSend:()=>Nx,requestSessionSmartTitle:()=>BS,resolveForkMessageId:()=>_x,respondToPermission:()=>lC,respondToQuestion:()=>uC,revertToMessage:()=>pC,rollbackOptimisticSend:()=>YS,scheduleSessionDeletes:()=>FS,setActionRefs:()=>jx,setOptimisticRefs:()=>Mx,settleOptimisticSend:()=>XS,shareSession:()=>VS,shouldSuppressForkCopyEvent:()=>yx,stageMessageEdit:()=>hC,trackForkCopySessionCreated:()=>px,unarchiveSession:()=>RS,unrevertSession:()=>SC,unshareSession:()=>HS,updateSessionTitle:()=>zS,waitForConnectionOrThrow:()=>tS,waitForSessionIdleForMessageEdit:()=>vC}),ax=2,ox=150,sx=new Set([`patch`,`step-start`,`step-finish`]),cx=3,lx=150,ux=null,dx=new Map,fx=3e4;function px(e,t){let n=t?.id;!ux||ux.runtimeKey!==i()||ux.directory!==e||!n||t?.title!==ux.expectedTargetTitle||n===ux.sourceSessionID||ux.targetSessionID||(ux.targetSessionID=n)}function mx(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function hx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function gx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function _x(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!n||n.type===`idle`)return e;for(let e=t.length-1;e>=0;--e)if(t[e]?.role===`user`)return t[e].id}async function vx(e,t){let n=Lp(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 yx(e,t,n){if(ux&&ux.runtimeKey===i()&&ux.directory===e&&t&&t===ux.targetSessionID)return!0;if(!t||!n)return!1;let r=`${i()}:${e}:${t}`,a=dx.get(r);return a?a.expiresAt<=Date.now()?(dx.delete(r),!1):n<=a.messageID:!1}var bx=null,xx=null,Sx=()=>``,Cx=new Map,wx=null,Tx=null,Ex=null,Dx=e=>new Promise(t=>setTimeout(t,e));function Ox(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 kx(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Ox(e.error)}`);throw n!==void 0&&(r.status=n),r}function Ax(e,t){let n=kx(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function jx(e,t,n){if(bx=e,xx=t,Sx=n,Cx.size>0){let e=[...Cx.values()];Cx.clear(),queueMicrotask(()=>{for(let t of e)TC(t.sessionID,t.directory)})}}function Mx(e,t,n){wx=e,Tx=t,Ex=n??null}function Nx(e){let t=e.directory??null;Tx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Px(){if(!bx)throw Error(`SDK not initialized — is SyncProvider mounted?`);return bx}function Fx(){if(!xx)throw Error(`Child stores not initialized`);let e=Sx();if(!e)throw Error(`No current directory`);return xx.ensureChild(e)}function Ix(e,t){if(!xx)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return xx.ensureChild(e,t)}function Lx(e,t){let n=t??sS(e);return n?{store:Ix(n),directory:n}:{store:Fx(),directory:Gx()}}function Rx(e,t){let{store:n,directory:r}=Lx(e,t??void 0),i=r??Gx()??``;return{repository:H()??yu(i,n),directory:i,store:n}}function zx(e,t){let{repository:n,directory:r,store:i}=Rx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function Bx(e,t){return Gu(zx(e,t).data)}function Vx(e,t){return zx(e,t).data.messageOrder.length}function Hx(e){try{let t=Bx(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 Ux(e,t){let n=xx;if(!n)return!1;let r=t?[[t,n.getChild(t)]]:n.children;for(let[,t]of r){if(!t)continue;let n=t.getState().session,r=n.findIndex(t=>t.id===e.id);if(r===-1)continue;let i=[...n];return i[r]=GE(e,n[r]),t.setState({session:i}),!0}return!1}function Wx(e,t){t&&Ux(e,t)||Ux(e)}function Gx(){return Sx()||void 0}function Kx(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function qx(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 Jx=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 Yx(e){return e instanceof Jx?e.kind:null}function Xx(e){let t=qx(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 Zx(e,t){return t?Xx(e)||qx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var Qx=2e3,$x=5e3,eS=3e4;async function tS(){let e=jm();e&&Am(`send_stream_stale`);let t=Date.now()+(e?$x:Qx);for(;Date.now()<t;){if(G.getState().isConnected&&!jm()||o()&&!jm())return;let e=t-Date.now();if(e<=0)break;if(await G.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!jm())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw Kx()}function nS(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Am(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},eS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function rS(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function iS(e){e&&Y.getState().upsertSession(e)}function aS(e,t){let n=sp(t),r=[...e.getState().session],i=ls.search(r,n.id,e=>e.id);if(i.found){let t=GE(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 oS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=rS(e);if(i)return aS(t,i);try{return aS(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 sS(e){return cS(e)||$.getState().getDirectoryForSession(e)||Gx()}function cS(e){let t=xx;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=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 lS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):Px()}function uS(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 dS=()=>new Map(Array.from(Pd(),([e,t])=>[e,t.title||e]));function fS(e){return!(e.type!==`file`||Zp(e))}function pS(e){return fS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function mS(e){return e.some(pS)}async function hS(e){let t=[...e.parts];if(!mS(t))return t;let n=s(),r=e.directory??``;try{await Eu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||s()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=Rx(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],mS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function gS(e){if(mS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await fm(e.parts,{sessionTitles:dS(),directory:e.directory}),n=Or.getState(),r=n.getDraft(e.key);return{payload:t,commit:await _m({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function _S(e,t,n){let r=xx;if(!r||!n)return null;for(let[t,i]of r.children){let r=i.getState(),a=e===`permission`?r.permission:r.question;for(let e of Object.values(a))if(e?.some(e=>e.id===n))return t}let i=$.getState().getDirectoryForSession(t);if(i)return i;for(let[e,n]of r.children){let r=n.getState();if(r.session.some(e=>e.id===t)||Object.prototype.hasOwnProperty.call(r.session_status??{},t)||Object.prototype.hasOwnProperty.call(r.permission??{},t)||Object.prototype.hasOwnProperty.call(r.question??{},t))return e}return null}function vS(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 yS(e,t){let n=xx;if(!n||!t)return!1;let r=!1;for(let[,i]of n.children){let n=i.getState().question??{},a=null,o=new Set([e,...Object.keys(n)].filter(Boolean));for(let e of o){let i=n[e];if(!i?.length)continue;let o=i.filter(e=>e.id!==t);o.length!==i.length&&(a??={...n},o.length>0?a[e]=o:delete a[e],r=!0)}a&&i.setState({question:a})}return r}function bS(e,t,n){let r=_S(e,t,n);return r?z.getScopedSdkClient(r):lS(t)}async function xS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??Gx()),a=i.directory??null;return a&&Ed(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 SS(e,t,n){let r=t??sS(e),i=n(Lp(await z.getSession(e,r))),a=await z.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Ed(a.id,o),a}async function CS(e,t){let n;try{n=await z.getSession(e,t??sS(e))}catch{return}if(!Vp(n))return;let r=Bp(n);if(r)try{await SS(r,t??sS(r),t=>Wp(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 wS(e,t){if(!xx)return[];let n=[],r=new Set,i=[];if(t){let e=xx.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of xx.children.entries())r.has(e[0])||i.push(e);for(let[t,r]of i){let i=r.getState();i.session.some(t=>t.id===e)&&(n.push({directory:t,sessions:i.session}),r.setState({session:i.session.filter(t=>t.id!==e)}))}return n}function TS(e){if(xx)for(let t of e){let e=xx.children.get(t.directory);e&&e.setState({session:t.sessions})}}function ES(e){$.getState().setWorktreeMetadata(e,null)}var DS=1e4,OS=new Map,kS=0;function AS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function jS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),TS(e.listSnapshots),iS(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function MS(e,t){let n=t??sS(e);Y.getState().markSessionsPendingDeletion([e]);let r=wS(e,n),i=rS(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 NS(e,t){try{if(await CS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return wS(e,t),Y.getState().removeSessions([e]),ES(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(wS(e,t),Y.getState().removeSessions([e]),ES(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function PS(e,t){let n=MS(e);return await NS(e,n.directory)?!0:(jS(n),!1)}function FS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>MS(e)),i=`session-delete-${Date.now()}-${kS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=OS.get(i);if(!e)return;OS.delete(i);let t=[],n=[];for(let r of e.entries)await NS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),jS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return OS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function IS(e){if(!e)return!1;let t=OS.get(e);if(!t)return!1;clearTimeout(t.timer),OS.delete(e);for(let e of[...t.entries].reverse())jS(e);return!0}async function LS(e){let t=sS(e),n=wS(e,t),r=rS(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await CS(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),TS(n),iS(r),!1}}async function RS(e){let t=sS(e),n=rS(e),r=n?AS(n):null;if(r&&(Y.getState().upsertSession(r),t&&xx)){let e=xx.children.get(t);e&&aS(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=AS(n);if(Y.getState().upsertSession(r),t&&xx){let e=xx.children.get(t);e?aS(e,r):Wx(r,t)}else Wx(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&wS(e,t)),!1}}async function zS(e,t){let n=sS(e),r=rS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Xf(r):0,c=await z.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),Wx(c,n)}async function BS(e){let t=sS(e),n=rS(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),Wx(s,t)}async function VS(e){let t=sS(e),n=sp(Ax(await Px().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),Ux(n,t),n}async function HS(e){let t=sS(e),n=sp(Ax(await Px().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),Ux(n,t),n}function US(e){let t=xx,n=e??Sx();if(!t||!n)return{store:e?Ix(e):Fx(),isCurrent:()=>!0};let r=t,i=r.captureChild?.(n);if(i&&r.isCurrentChildCapture)return{store:i.store,isCurrent:()=>r.isCurrentChildCapture?.(i)===!0};let a=t.ensureChild(n);return{store:a,isCurrent:()=>t.getChild(n)===a}}function WS(){return{identity:r(),generation:s()}}function GS(e,t){return e.isCurrent()&&r()===t.identity&&s()===t.generation}function KS(e,t){if(!GS(e,t))throw Error(`Send target changed before transport dispatch`)}function qS(e){if(!wx||!Tx)throw new Jx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??Gx()??null,n=US(t),r=WS();KS(n,r),e.beforeOptimisticInsert?.(),KS(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),QS({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 Jx?e:new Jx(Yx(e)??Zx(e,!1),e)}}function JS(e){if(!GS(e.capture,e.transport)||!Tx)return;Tx({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 YS(e){JS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function XS(e){if(!wx||!Tx)throw new Jx(`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 tS(),KS(n,r),s=!0,await nS(e.send(i)),!GS(n,r))throw new Jx(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Yx(c)??Zx(c,s),u=c instanceof Jx?c:new Jx(l,c,i);if(!GS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await eC(a,i,o):null;if(d&&GS(n,r)){tC(n.store,a,i,d,{directory:o??void 0}),Ex?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||JS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function ZS(e){await XS({ticket:e.ticket??qS({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 QS(e){if(!wx)return!1;let t=e.directory??Gx(),n=t?Ix(t):Fx(),i=t??Gx()??``;if(aC(n,e.sessionId,e.messageID,i)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),c={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},l=Bv(()=>zx(e.sessionId,t).data);wx({sessionID:e.sessionId,directory:t,message:c,parts:a});let u=Bv(()=>zx(e.sessionId,t).data);try{l&&u&&Vv({trigger:`user-send`,sessionID:e.sessionId,directory:i,transport:r(),generation:s(),before:l,after:u})}catch{}let d=n.getState();return n.setState({session_status:{...d.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...d.session_status_observed_at,[e.sessionId]:o}}),!0}function $S(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function eC(e,t,n,r){let i=r?.signal||r?.timeoutMs!==void 0?new AbortController:null,a=()=>i?.abort();r?.signal?.addEventListener(`abort`,a,{once:!0}),r?.signal?.aborted&&i?.abort();let o=r?.timeoutMs===void 0?void 0:setTimeout(()=>i?.abort(),Math.max(0,r.timeoutMs)),s=r?.attempts??ax,c=r?.retryDelayMs??ox;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!$S(r?.isCurrent)||a>0&&(await Dx(c),i?.signal.aborted||!$S(r?.isCurrent)))return null;try{let a=await Px().session.messages({sessionID:e,directory:n??void 0,limit:$m(),...i?{signal:i.signal}:{}});if(!$S(r?.isCurrent))return null;let o=(kx(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 tC(e,t,n,r,i){if(!r.length)return;let a=i?.directory??sS(t)??Sx(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:lp(e.info),parts:e.parts??[]})),skipPartTypes:sx,merge:i?.gapFillOnly===!0?Ys:Zs({purpose:`recovery`})};xu(o,s)||yu(a,e).apply(o,s)}var nC=2e3,rC={attempts:12,retryDelayMs:500},iC={presenceGraceMs:nC,recovery:{...rC}};function aC(e,t,n,r){let i=r??sS(t)??Sx()??``,a=H()??yu(i,e),o=U(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function oC(e,t,n,r){let i=r?.directory??sS(t)??Sx()??``;if(aC(e,t,n,i))return Promise.resolve(!0);if(!$S(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()??yu(i,e),f=U(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!$S(r?.isCurrent)){l(!1);return}aC(e,t,n,i)&&l(!0)}),aC(e,t,n,i)&&l(!0)})}async function sC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await oC(t,n,r,{timeoutMs:e.graceMs??iC.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!$S(a))return`cancelled`;let o=await eC(n,r,i,{...iC.recovery,isCurrent:a});return o?$S(a)?(tC(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:$S(a)?`missing`:`cancelled`}async function cC(e){let{store:t,directory:n}=Lx(e),i=n?{state:`bound`,transportIdentity:r(),directory:n,sessionID:e}:null,a=i?$.getState().beginQueueAbortBlock(i):null;try{if(Ax(await Px().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){i&&a&&$.getState().clearQueueAbortBlock(i,a),et(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>yV);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function lC(e,t,n){await tS();let r=_S(`permission`,e,t)||sS(e)||Gx();if(Ax(await bS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function uC(e,t,n){await tS();let r=_S(`question`,e,t)||sS(e)||Gx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Ax(await bS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw vS(n)&&yS(e,t),n}}async function dC(e,t){await tS();let n=_S(`question`,e,t)||sS(e)||Gx();try{if(Ax(await bS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw vS(n)&&yS(e,t),n}}async function fC(e){if(!e)return!1;let t=xx;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Kp(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)yS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await dC(e,t)}catch(e){if(vS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function pC(e,t,n){let i=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return vb(e,i??(()=>{try{return Lx(e,i).directory}catch{return i}})(),async({isCurrent:n})=>{let{store:o,directory:c}=Lx(e,i);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Px().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=Bx(e,c).find(e=>e.id===t),d=Bx(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}=Rx(e,c),m=[...f.getParts(U(p,e),t)],h=a===void 0?s?C({transportIdentity:r()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await hS({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await fm(m,{sessionTitles:dS(),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 _m({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 ym({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 ym({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&&Cb.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 ym({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await ym({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function mC(e,t,n,i){let a=i??sS(t)??Sx(),o=U(a,t),c=Bv(()=>zx(t,a).data),l=[...bu(t)];l.some(e=>e.directory===a&&e.sessionID===t)||l.push(o);let u=!1;for(let e of l)xu(e,{type:`remove-message`,messageID:n})!=null&&(u=!0);u||yu(a,e).apply(o,{type:`remove-message`,messageID:n});let d=Bv(()=>zx(t,a).data);try{c&&d&&Vv({trigger:`user-delete`,sessionID:t,directory:a,transport:r(),generation:s(),before:c,after:d})}catch{}}async function hC(e,t,n,i){let a=n?.info,o=n?.parts,s=i?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=Lx(e,s).directory}else{c=Lx(e,s).directory;let{data:n}=zx(e,c),r=Gu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=i?.draftKey??C({transportIdentity:r()},e),{commit:u}=await gS({key:l,parts:await hS({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 ym({key:l,restoredRevision:d,previous:f})).status})}}function gC(e,t,n,r){let i=t.findIndex(t=>t.id===e),a=i>=0?t[i]:void 0;if(!a||a.role!==`user`||!n.has(e))throw Error(`The selected user message is unavailable`);let o=r?.preserveMessageId,s=o?t.findIndex(e=>e.id===o):-1,c=s>i?s:t.length;return t.slice(i,c).filter(e=>!(!n.has(e.id)||o&&e.id===o))}async function _C(e,t){let n=t?.directory,{store:r,directory:i}=Lx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Px().session.abort({sessionID:e,directory:i})}catch{}}async function vC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=Lx(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 yC(e,t,n){let i=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:c}=Lx(e,i),l=Bv(()=>zx(e,i).data);try{await _C(e,{directory:i}),await vC(e,{directory:i});let n=new Set((await bC(e,i)).map(e=>e.id)),r=gC(t,Bx(e,i),n,{preserveMessageId:a});for(let t of[...r].reverse())await z.deleteSessionMessage(e,t.id,c),mC(o,e,t.id,c)}finally{try{let t=Bv(()=>zx(e,i).data);l&&t&&Vv({trigger:`user-edit`,sessionID:e,directory:c,transport:r(),generation:s(),before:l,after:t})}catch{}}}async function bC(e,t){let{directory:n}=Lx(e,t);return(kx(await Px().session.messages({sessionID:e,directory:n,limit:Qm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>lp(e.info))}async function xC(e,t){let{store:n,directory:i}=Lx(e,t),a=Bv(()=>zx(e,t).data),o=(kx(await Px().session.messages({sessionID:e,directory:i,limit:Qm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Bv(()=>zx(e,t).data);a&&n&&Vv({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let c=o.map(e=>({info:lp(e.info),parts:e.parts??[]})),l=U(i??Sx(),e);xu(l,{type:`materialize-snapshots`,records:c,skipPartTypes:sx})||yu(i??Sx(),n).apply(l,{type:`materialize-snapshots`,records:c,skipPartTypes:sx});try{let n=Bv(()=>zx(e,t).data);a&&n&&Vv({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return c.map(e=>e.info)}async function SC(e,t){return vb(e,t??(()=>{try{return Lx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=Lx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Vx(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Px().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Px().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Ax(c,`session.unrevert`),u=[...r.getState().session],d=u.findIndex(t=>t.id===e);d>=0&&(u[d]=l,r.setState({session:u}));for(let r=0;r<cx;r+=1){if(r>0&&(await Dx(lx),!n())||(await xC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Vx(e,i)>o)return}if(Vx(e,i)<=o){let n=i??Sx(),a=H()??yu(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await xC(e,t)}})}async function CC(e,t,n,r){let a=i(),{store:o,directory:s}=Lx(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await oS(e,o,s);Ed(e,s);let l=o.getState(),u=l.session_status[e],d=Bx(e,s);u?.type,d.length;let f=_x(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await xC(e),l=o.getState(),u=l.session_status[e],d=Bx(e,s),f=_x(void 0,d,u)),!n&&l.session_status[e]?.type!==`idle`&&!f)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:Vx(e,s)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=zx(e,s),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(U(s,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!Zp(e)).map(e=>e.text||e.content||``).join(`
462
462
  `).trim();let v=g.filter(e=>e.type===`file`&&!Zp(e));ux={operationId:t,runtimeKey:a,directory:s,sourceSessionID:e,expectedTargetTitle:mx(c.title)},await hx(t,`copying`);let y;try{if(y=await z.forkSession(e,f,s),y.id,i()!==a)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),ux?.operationId===t&&(ux=null),!1;await hx(t,`opening`);try{y=await vx(y,s)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw ux?.operationId===t&&(ux=null),e}try{let r=[...o.getState().session],a=ls.search(r,y.id,e=>e.id);a.found||(r.splice(a.index,0,y),o.setState({session:r}));let c=U(s,y.id),l=H();l&&typeof l.destructiveReset==`function`?await l.destructiveReset(c):xu(c,{type:`reset`}),gx(t,y.id);let u=$.getState().currentSessionId,d=u===e||u===y.id;d&&$.getState().setCurrentSession(y.id,s),await hx(t,`loading`),y.id;let f=H()??yu(s,o),p=U(s,y.id),m=f.getRequestState?.(p);(!(f.hasSession?.(p)??!1)||m?.status===`error`)&&await TC(y.id,s);let g=Bx(y.id,s).at(-1)?.id;g&&dx.set(`${i()}:${s}:${y.id}`,{messageID:g,expiresAt:Date.now()+fx}),d&&h&&_&&Or.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&uS(v)}finally{ux?.operationId===t&&(ux=null)}return y.id,!0}var wC=new Map;async function TC(e,t){let n=t??Gx();if(!n)return;let r=i(),a=Zm(),o=`${r}:${n}:${e}:${a}`;if(!bx||!xx){Cx.set(o,{sessionID:e,directory:n});return}let s=wC.get(o);if(s)return s;let c=EC(e,n,r,a).finally(()=>{wC.get(o)===c&&wC.delete(o)});return wC.set(o,c),c}async function EC(e,t,n,r){Px();let i=Ix(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=H()??yu(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(Im(t,e)){rx({directory:t,sessionID:e,store:i,transcript:u});return}if(H()){try{await Cu(t,e)}catch{return}if(y())return;rx({directory:t,sessionID:e,store:i,isStale:y}),await Vb({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}rx({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await pb({directory:t,sessionID:e,limit:r,signal:AbortSignal.timeout(3e4),purpose:`initial`});if(y())return;c.apply(l,{type:`http-page`,purpose:`initial`,page:n,skipPartTypes:sx}),b=n.records.length,Lm(t,e)}catch{return}y()||(rx({directory:t,sessionID:e,store:i,isStale:y}),await Vb({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var DC=new Map,OC=e=>{DC.set(e,(DC.get(e)??0)+1)},kC=e=>(DC.get(e)??0)>0,AC=e=>{let t=DC.get(e)??0;return t<=0?!1:(t===1?DC.delete(e):DC.set(e,t-1),!0)},jC=18e4,MC=400,NC=300,PC=15,FC=`FINAL_REVIEW_STATUS: no_remaining_findings`,IC=FC.toLowerCase(),LC=new Set,RC=new Set,zC=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},BC=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},VC=e=>{let t=e.role;return typeof t==`string`?t:``},HC=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},UC=(e,t)=>Ld(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`}),WC=(e,t,n,r=0,i)=>{let a=Id(e,t),o=new Set;for(let e of a)UC(e,t)&&o.add(e.id);for(let e=a.length-1;e>=0;--e){let s=a[e];if(s.id===n)return null;if(VC(s)!==`assistant`||!zC(s)||BC(s)<r-1e3)continue;let c=HC(s);if(!QC(s,i)||c&&o.has(c))continue;let l=Fp(Ld(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},GC=(e,t)=>Rd(e,t)?.type===`idle`,KC=e=>e===i(),qC=e=>{Gp.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},JC=e=>{if(e&&!KC(e))throw Error(`Auto-review stopped because the runtime changed.`)},YC=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),XC=e=>e.trim().split(`
463
463
  `).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===IC,ZC=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()===IC&&t.pop(),t.join(`