@openchambery/web 1.18.2-beta.37 → 1.18.2-beta.39
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.
- package/dist/assets/{AssistantView-DRM3YzGs.js → AssistantView-CvYXAhVR.js} +1 -1
- package/dist/assets/{ChatContainer-BLaEjj6P.js → ChatContainer-Be1DHzgc.js} +4 -4
- package/dist/assets/{DiagramView-BHYtRBpt.js → DiagramView-D0COpV7w.js} +1 -1
- package/dist/assets/{MarkdownRendererImpl-CxGkaDWd.js → MarkdownRendererImpl-DzZY5lYZ.js} +1 -1
- package/dist/assets/{MobileDetailNavigation-CEYa3eoa.js → MobileDetailNavigation-DnkLVrVy.js} +1 -1
- package/dist/assets/{MobileShareBridge-BjVpO3IE.js → MobileShareBridge-C_m49-E6.js} +1 -1
- package/dist/assets/MobileSurface-DPBYd_9L.js +2 -0
- package/dist/assets/{MultiRunWindow-CArSrxmR.js → MultiRunWindow-DPm1lQmo.js} +1 -1
- package/dist/assets/{SettingsView-CPShUWDq.js → SettingsView-jKwiCthd.js} +1 -1
- package/dist/assets/{SettingsWindow-BMJ5drZL.js → SettingsWindow-YVW1K0vh.js} +1 -1
- package/dist/assets/{TerminalView-DIr5uVrS.js → TerminalView-CiyuM0im.js} +1 -1
- package/dist/assets/{ToolOutputDialog-DrL17xGT.js → ToolOutputDialog-DMHFrQtf.js} +1 -1
- package/dist/assets/{appThemeRegistry-sEkoIEmQ.js → appThemeRegistry-CBs9rFM0.js} +2 -2
- package/dist/assets/{context-menu-LPe6aHBX.js → context-menu-ZC-7T9D6.js} +1 -1
- package/dist/assets/{gitApi-jYwj9Pmo.js → gitApi-CdLpItUF.js} +1 -1
- package/dist/assets/{insertionBoundaries-CnE47ivQ.js → insertionBoundaries-Dx-FimZn.js} +1 -1
- package/dist/assets/{main-DA37A-DL.js → main-B2Qp731c.js} +2 -2
- package/dist/assets/{main-pTXCGnhH.js → main-Dq04PAJw.js} +4 -4
- package/dist/assets/{miniChat-rpPUGVLU.js → miniChat-XD8besP9.js} +2 -2
- package/dist/assets/{mobile-kR3xCfNZ.js → mobile-B-urUzQ2.js} +2 -2
- package/dist/assets/{multirun-BdRzdAE8.js → multirun-CgKdqjlp.js} +1 -1
- package/dist/assets/{projectMeta-BEc6g4LJ.js → projectMeta-jWxWbDkQ.js} +1 -1
- package/dist/assets/{radio-DXuX8YHs.js → radio-BArg8rN7.js} +1 -1
- package/dist/assets/{renderElectronMiniChatApp-CDKoFEa4.js → renderElectronMiniChatApp-CcHll5HJ.js} +2 -2
- package/dist/assets/{renderMobileApp-DBXJgk3F.js → renderMobileApp-z9BLmg-1.js} +4 -4
- package/dist/assets/{runtimeConfig-Bv0JsoTx.js → runtimeConfig-o7VOqbIv.js} +1 -1
- package/dist/assets/{runtimeEndpointReset-DzWI5afv.js → runtimeEndpointReset-ZQl4KUPA.js} +1 -1
- package/dist/assets/{useAppFontEffects-BKF3oKS-.js → useAppFontEffects-BnAqVzvs.js} +2 -2
- package/dist/assets/{useDesktopWindowControlsLayout-2NiNxh0H.js → useDesktopWindowControlsLayout-DW06JgtH.js} +1 -1
- package/dist/assets/{useEffectiveDirectory-ZRlMczTj.js → useEffectiveDirectory-Cxk960zS.js} +1 -1
- package/dist/assets/{useMobileNavigationStore-DymiSQmp.js → useMobileNavigationStore-7SQlIaRN.js} +1 -1
- package/dist/assets/{useSessionAutoCleanup-nfYSy0an.js → useSessionAutoCleanup-fCB4vS1c.js} +1 -1
- package/dist/assets/{useWorkerHighlightedLines-Btmp2uFY.js → useWorkerHighlightedLines-Dur8-7lm.js} +1 -1
- package/dist/index.html +2 -2
- package/dist/mini-chat.html +2 -2
- package/dist/mobile.html +2 -2
- package/package.json +1 -1
- package/dist/assets/MobileSurface-u4BADjv7.js +0 -2
package/dist/assets/{useMobileNavigationStore-DymiSQmp.js → useMobileNavigationStore-7SQlIaRN.js}
RENAMED
|
@@ -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=3e4,Og=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function kg(e,t=Dg){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 Ag=e=>e?e.toLowerCase().includes(`application/json`):!1,jg=e=>e?e.toLowerCase().includes(`text/html`):!1;function Mg(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 Ng(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:Dg;return kg((async()=>{let a=await F(n,{method:`GET`,query:r,signal:Og(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(jg(o))throw Error(`session turn page: unexpected HTML response`);Ag(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Mg(s,t)})(),i)}async function Pg(e){let t=e.purpose===`prepend`&&e.before?Xm():Ym();return Ng({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var Fg=3e4,Ig=2,Lg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),Rg=e=>e?e.toLowerCase().includes(`text/html`):!1,zg=e=>new Promise(t=>{setTimeout(t,e)});function Bg(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 Vg(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=Bg(t.capturedHeadMessageID,`capturedHeadMessageID`),r=Bg(t.latestHeadMessageID,`latestHeadMessageID`),i=Bg(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 Hg(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 Ug(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),kg((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:Lg(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(Rg(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 Vg(a)})(),n)}async function Wg(e){let t=Hg(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:Fg,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):Ig,i=e.sleep??zg,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await Ug(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 Gg=e=>!!(e&&typeof e==`object`&&typeof e.type==`string`),Kg=e=>e.filter(Gg),qg=e=>{let t=e,n=t.text;return typeof n==`string`?n:t.content||t.value||``},Jg=e=>{if(e.type!==`text`)return!1;let t=qg(e);return!t||t.trim().length===0},Yg=(e,t={})=>{let{includeReasoning:n=!0}=t,r=Kg(e),i=r.some(e=>!e.synthetic);return r.filter(e=>{let t=!!e.synthetic;return t&&e.type===`text`&&qg(e).includes(`<system-reminder>`)||t&&i||!n&&e.type===`reasoning`?!1:e.type!==`patch`})},Xg=`GitHub issue context (JSON)`,Zg=`GitHub pull request context (JSON)`,Qg=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,$g=(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}},e_=e=>{let t=$g(e,Xg);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!Qg(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=$g(e,Zg);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!Qg(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},t_=(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`))},n_=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),r_=e=>e.trim()===`/compact`,i_=(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`&&(n_(t)||r_(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 t_(t,n)||r.startsWith(Xg)||r.startsWith(Zg)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=e_(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},a_=e=>e.some(e=>{if(e.type===`text`)return!Jg(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}),o_=e=>e?.length?a_(i_(e)):!1,s_=`oc_asst_session_divider:`,c_=[],l_=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),u_=(e,t=0)=>({info:{id:`${s_}${e}`,role:`system`,time:{created:t}},parts:[]}),d_=e=>e.slice().reverse().flatMap(e=>e.entries),f_=(e,t,n=c_)=>{if(!e.length)return c_;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(u_(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?c_:__(n,r)?n:r},p_=(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},m_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=p_(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 o_(e.parts)?e:o_(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}:{}}},h_=(e,t,n,r=c_)=>{if(!t)return n.length>0?Array.from(n):c_;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:m_(e,t?.message),order:t?.order??a++})}if(i.size===0)return c_;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 __(r,o)?r:o},g_=(e,t)=>{if(!l_(e)||!l_(t))return!1;let n=Number(e.info.time?.created??0),r=Number(t.info.time?.created??0);return e.info.id===t.info.id&&n===r},__=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||!(r===i||g_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},v_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),y_=e=>e.startsWith(s_);function b_(e,t){if(!e?.id||y_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(v_(t,`subtask`)||v_(t,`compaction`)||t.every(e=>Zp(e))):!1}function x_(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.messagesByID[n],i=e.partsByMessageID[n];if(b_(r,i))return n}return null}function S_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function C_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:x_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:S_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function w_(e,t){return{...e,...t}}function T_(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 E_(e,t){let n=yg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function D_(e,t){let n=yg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function O_(e){return e.slim===!0}var k_=/bearer|token|authorization|password|secret|cookie/i,A_=new Set([`message.part.delta`]);function j_(e){return typeof e==`string`&&e.includes(`-`)}var M_=`openchamber.client-diagnostics.enabled`;function N_(e){return e===`true`||e!==`false`&&null}function P_(e){return e.preference===!0||e.preference!==!1&&j_(e.version)}function F_(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function I_(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function L_(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 R_(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return k_.test(t)?`redacted-error`:t}function z_(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)O_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function B_(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function V_(e){let t=0;for(let n of e.messageOrder)tv(e.messagesByID[n])===!0&&(t+=1);return t}function H_(e){let t=e.transcript?z_(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:B_(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:V_(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...R_(e.error??e.request?.error)?{error:R_(e.error??e.request?.error)}:{},...L_(e.error)===void 0?{}:{httpStatus:L_(e.error)}}}function U_(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 W_(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 G_(e){return typeof e==`string`&&A_.has(e)}function K_(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return G_(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>G_(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function q_(e){if(e.type===`http-page`)return e.purpose}function J_(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function Y_(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 X_(e){return e.__openchamberOptimistic===!0}function Z_(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 k_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function Q_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function $_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var ev=e=>typeof e==`string`&&e.trim().length>0;function tv(e){if(!e||Q_(e)!==`assistant`)return;let t=e,n=!ev(t.mode)&&!ev(t.agent),r=!ev(t.modelID)||!ev(t.providerID);return n||r}function nv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function rv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)O_(e)?r+=1:i+=1,X_(e)&&(a=!0);let o=e.messagesByID[t],s=Q_(o),c=tv(o),l=s===`user`?Z_(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:$_(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 iv(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:nv(e),after:nv(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 av(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:iv(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 ov(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function sv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function cv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function lv(e){let t=cv(e.partID),n=cv(e.messageID),r=cv(e.directory),i=cv(e.childSessionID),a=cv(e.toolStatus),o=cv(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 uv(e){return[e.sessionID,cv(e.partID)??``,e.childSessionPresent?`1`:`0`,cv(e.childSessionID)??``,cv(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`,cv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function dv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...lv(e)}}function fv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:sv(e),...lv(e)}}var pv=`openchamber-transcript-diagnostics`,mv=`events`,hv=1,gv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),_v=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,hv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(mv)||e.createObjectStore(mv,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),vv=(e=pv)=>({async append(t,n){let r=await _v(e);try{let e=r.transaction(mv,`readwrite`).objectStore(mv);await gv(e.add(t));let i=await gv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await gv(e.delete(t))}finally{r.close()}},async read(){let t=await _v(e);try{return await gv(t.transaction(mv,`readonly`).objectStore(mv).getAll())}finally{t.close()}},async clear(){let t=await _v(e);try{await gv(t.transaction(mv,`readwrite`).objectStore(mv).clear())}finally{t.close()}}});function yv(e={}){let t=e.driver??vv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var bv=Qe(`OpenChamberMedia`);function xv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Sv(){return Ge()&&$e!==void 0&&$e.isPluginAvailable(`OpenChamberMedia`)}function Cv(){return`1.18.2-beta.37`}function wv(){if(typeof localStorage>`u`)return null;try{return N_(localStorage.getItem(M_))}catch{return null}}function Tv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(M_,e?`true`:`false`)}catch{}}function Ev(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var Dv;function Ov(e=Cv()){return P_({version:e,preference:wv()})}function kv(e={}){return W_({sink:Ev()===`indexeddb`?(e.createIndexedDBSink??yv)():(e.createMemorySink??U_)(),isEnabled:e.isEnabled??Ov})}function Av(){return Dv??=kv(),Dv}function jv(e){Av().record(e)}function Mv(e){try{return Ov()?rv(e()):void 0}catch{return}}function Nv(e){try{jv(av(e))}catch{}}function Pv(e){try{jv(dv(e))}catch{}}function Fv(e){try{jv(fv(e))}catch{}}function Iv(e){let t=K_(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&jv(H_({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:q_(e.command),sseType:J_(e.command),source:Y_(e.command),error:e.error}))}async function Lv(){let e=await Av().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 Rv(e,t=F_()){if(Sv())return(await bv.saveFile({dataBase64:xv(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 zv(){let e=await Lv(),t=F_();return{content:e,fileName:t,outcome:await Rv(e,t),eventCount:I_(e)}}function Bv(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 Vv=2,Hv=6e4;function Uv(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??r)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??s)()}}function Wv(e,t){let n=(t.probe?.getTransport??r)(),i=(t.probe?.getGeneration??s)();if(n!==e.transport||i!==e.generation)throw new Lh}function Gv(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function Kv(e,t){return mg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function qv(e,t){return`${e.trim()}\n${t}`}function Jv(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??Vv)),o=e.fetchReconcile??Wg,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(qv(e,t))},y=(e,t)=>{h.delete(qv(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(qv(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(qv(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=qv(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??Uv(e).transport,generation:r.generation??Uv(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(qv(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(qv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of s)f.set(qv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(qv(t,n),{directory:t,sessionID:n});for(let e of f.values()){let i=Gv(e,a),s=n.getTranscript(i),c=C_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:r.lastEventID,capturedAt:o});E_(t,c)}let p=new Set;for(let t of u){let n=Bv({directory:t,activeScopes:S(a,t),viewedSessions:s,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(qv(e.directory,e.sessionID))}for(let e of d){let t=qv(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=Mv(()=>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=Mv(()=>n.getTranscript(e));i&&t&&Nv({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(Wv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;E_(t,w_(T_(t,i)??C_({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=Mv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),Wv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;D_(t,i),y(i.directory,i.sessionID);try{let e=Mv(()=>n.getTranscript(r));o&&e&&Nv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw E_(t,w_(T_(t,i)??C_({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(Wv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;E_(t,w_(T_(t,i)??C_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Mv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),Wv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;D_(t,i),y(i.directory,i.sessionID);try{let e=Mv(()=>n.getTranscript(r));o&&e&&Nv({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 E_(t,w_(T_(t,i)??C_({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=Gv(r,i),d=Kv(r,i),f=vg({directory:d.directory,sessionID:d.sessionID,checkpoint:String(T_(t,d)?.capturedAt??c())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:c()});try{if(Wv(i,e),a!==u||s.aborted)throw new Lh;let p=T_(t,d);if(p||(p=C_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(l),lastEventID:null,capturedAt:c()}),E_(t,p)),!p.anchorMessageID){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}p=w_(p,{state:`reconciling`}),E_(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,Wv(i,e),a!==u||s.aborted)throw new Lh;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,Wv(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(Wv(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=w_(T_(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),E_(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=w_(T_(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),E_(t,p);continue}p=w_(T_(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),E_(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=qv(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),A(n);return}let c=Uv(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{try{await k(o,c,l,h.signal)}catch{}finally{f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),A(n)}})();d.set(s,g)},j=e=>{let t=e.directory.trim(),n=qv(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=Bv({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=qv(e.scope.directory,e.scope.sessionID);r.some(e=>qv(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=Uv(e,t),a=Gv({directory:r,sessionID:t.sessionID},i),s=hg(Kv({directory:r,sessionID:t.sessionID},i)),u=g.get(s);if(u&&c()-u.checkedAt<Hv||_.has(s)||d.has(qv(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(Wv(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(Wv(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=qv(i,r.sessionID);if(!h.has(a))return M(r),null;y(i,r.sessionID);let o=Uv(e,r),s=Gv({directory:i,sessionID:r.sessionID},o),c=Kv({directory:i,sessionID:r.sessionID},o),u=T_(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{Wv(o,e);let r=await n.ensureInitial(s);return D_(t,c),r}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:x,getCheckpoint:n=>{let r=Uv(e,n);return T_(t,Kv({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(qv(e,t)),destroy:()=>{l=!0,x(`destroy`)}}}function Yv(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Xv(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 Zv(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 Qv(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 $v=new Map;function ey(e,t){let n=$v.get(e);if(n)return n;let r=t().finally(()=>{$v.get(e)===r&&$v.delete(e)});return $v.set(e,r),r}var ty=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function ny(e){return ey(ty(e),e.request)}function ry(e,t){return`${e}\n${t}`}var iy=new Map;function ay(e){return iy.get(e)}async function oy(e){return ny({runtimeKey:ry(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 iy.set(r.id,i),{info:lp(r),parts:i}}})}function sy(e,t){let n=e.info;return n.role===t||n.clientRole===t}function cy(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!sy(i,`assistant`))continue;let e=i.info.parentID;if(!(!e||t.has(e)||r.has(e))&&(r.add(e),n.push(e),n.length===8))break}return n}async function ly(e){if(e.complete){let t=e.records.some(e=>sy(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=cy(e.records);if(t.length===0){let t=e.records.some(e=>sy(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=>sy(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function uy(e){return e.trim()}function dy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??r)(),i=e.generation??t.generation??(t.probe?.getGeneration??s)();return{directory:uy(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 fy(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:rl,liveRevision:0}}function py(e,t){if(!e||e.pages.length===0)return fy(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 my(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function hy(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function gy(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=my(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=my(e.messagesByID[t]);a===void 0||a<=n||hy(e.partsByMessageID[t])||i.push(t)}return i}function _y(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?Qv(e.durableStore,{getProtectScopes:()=>i.listRetained().map(Yv),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=py(w(e),t.sessionID);!Sl(r)&&!v.has(n)||(y.add(n),jv(H_({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=dy(n,e);return ag({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=dy(t,e);return qh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=dy(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=dy(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(dy(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(dy(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=dy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{d&&d.persistSettled(Yv(e),t,n??[])},le=(e,t,n,r)=>{if(!d||S>0||!r.applied||!r.changed)return;let i=Yv(t);if(n.type===`remove-message`){d.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(d.clearSession(i),n.page){let r=py(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=py(w(e),t.sessionID);for(let e of r){let n=Zv(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=py(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 Xv(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)}),jv(H_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:py(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)||jv(H_({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:py(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(dy(t,e)))?!0:oh(n).kind===`unknown`},P={getTranscript(t){let n=dy(t,e),r=K(n),i=py(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=dy(t,e),r=K(n),i=P.getTranscript(t);return te(r,El(n.sessionID,i.boundary))},getRequestState(t){let n=dy(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=dy(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(dy(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(dy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??vy,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=dy(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=dy(t,e),i=M(r,n),a=Mv(()=>P.getTranscript(t)),o=e=>{try{let t=Mv(e);if(!a||!t)return;Nv({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 oy({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=dy(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 yy(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&&(Iv({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:py(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(dy(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=dy(t,e),a=K(r);if(d&&await d.wait(Yv(r)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Yv(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){jv(H_({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 jv(H_({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 jv(H_({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 jv(H_({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:py(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 jv(H_({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=dy(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 jv(H_({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 jv(H_({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=dy(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=dy(t,e),i=Mv(()=>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=gy(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=Mv(()=>c);i&&e&&Nv({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=Mv(()=>P.getTranscript(t)),i=E(t);return d&&await d.clearSession(Yv(dy(t,e))),n.destructiveReset(i,async()=>{let n=dy(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=Mv(()=>s);r&&e&&Nv({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(dy(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 vy=Object.freeze([]);function yy(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 by=`/api/openchamber/transcript-cache`,xy=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),Sy=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Cy=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},wy=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},Ty=e=>{if(!Sy(e))throw Error(`Invalid transcript cache scope`);return{transport:Cy(e.transport,`scope`),generation:wy(e.generation,`scope`),directory:Cy(e.directory,`scope`),sessionID:Cy(e.sessionID,`scope`)}},Ey=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},Dy=e=>{if(!Sy(e)||!Sy(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!Sy(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:Ty(e.scope),messageID:Cy(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>Ey(e,`part completeness`)),completeness:Ey(e.completeness,`completeness`),contentHash:Cy(e.contentHash,`content hash`),byteSize:wy(e.byteSize,`byte size`),lastAccessedAt:wy(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:wy(e.sortKey.created,`sort key`),messageID:Cy(e.sortKey.messageID,`sort key`)}}},Oy=(e,t)=>{if(!Sy(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(Dy);return{scope:e.scope===void 0?gc(t):Ty(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},ky=e=>{if(!Sy(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:Dy(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!xy.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:Dy(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Ay=e=>{if(!Sy(e))throw Error(`Invalid transcript cache evict`);return{evicted:wy(e.evicted,`evict`),freedBytes:wy(e.freedBytes,`evict`),remainingBytes:wy(e.remainingBytes,`evict`)}},jy=e=>({scope:gc(e),records:[],byteSize:0}),My=(e,t)=>Sy(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Ny=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`)}},Py=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 Ny(r)};let i=await Ny(r).catch(()=>void 0);throw Error(My(i,`Transcript cache request failed (${r.status})`))},Fy=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Iy=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Ly(e={}){let t=e.fetch??F;return{async readSession(e){let n=await Py(t,`${by}/session`,{method:`GET`,query:Fy(e)});return n.kind===`disabled`||n.kind===`not-found`?jy(e):Oy(n.payload,e)},async readMessage(e,n){let r=await Py(t,`${by}/message`,{method:`GET`,query:{...Fy(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!Sy(r.payload))throw Error(`Invalid transcript cache record`);return Dy(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Py(t,`${by}/message`,Iy(`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 ky(i.payload)},async removeMessage(e,n){let r=await Py(t,`${by}/message`,Iy(`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 Py(t,`${by}/session`,Iy(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Py(t,`${by}/generation`,Iy(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Py(t,`${by}/evict`,Iy(`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 Ay(r.payload)},async clearAll(){let e=await Py(t,`${by}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Ry=`openchamber-transcript-durable`,zy=1,By=`transcriptIndex`,Vy=`transcriptContent`,Hy=class extends Error{code;constructor(e){super(e),this.code=e}},Uy=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}),Wy=(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}}),Gy=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Wy(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Ky=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},qy=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Jy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Hy(`database-unavailable`));return}let r=indexedDB.open(e,zy),i=!1,a=()=>{i||(i=!0,n(new Hy(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(By)){let t=e.createObjectStore(By,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Vy)||e.createObjectStore(Vy,{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}),Yy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Hy(`database-unavailable`)),r.onblocked=()=>void 0}),Xy=(e=Ry)=>({transaction:async t=>{let n=await Jy(e),r=n.transaction([By,Vy],`readwrite`),i=r.objectStore(By),a=r.objectStore(Vy),o=e=>qy(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:()=>Yy(e)});function Zy(e,t={}){let n=_c(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Uy(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=Wy(t,r);a.lastAccessedAt=n(),await e.putIndex(Uy(a)),i.push(a)}return yc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Gy(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 Gy(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(Uy(d)),await e.putContent({id:u,info:hc(i),parts:s}),{status:`written`,record:vc(d)}})},async removeMessage(t,n){await e.transaction(e=>Ky(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 Ky(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(rc(t));for(let t of n)await Ky(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 Ky(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 Qy(e={}){return Zy(e.driver??Xy(e.databaseName),e)}function $y(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 eb=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function tb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Ly)(),t),i=()=>(n??=(e.createIndexedDBStore??Qy)(),n),a=()=>$y(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=>eb([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function nb(e={}){await tb(e).clearAll()}var rb=(e,t)=>e<t?-1:+(e>t);function ib(e){return e.filter(e=>!!e?.id).sort((e,t)=>rb(e.id,t.id))}async function ab(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,i=await Pg({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:ib(e.parts??[])}));if(!e.before&&!i.complete&&cy(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await ly({records:a,complete:i.complete,requestMessage:async n=>{let i=await oy({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:ib(i.parts??[])}}})).records.map(e=>({info:e.info,parts:ib(e.parts??[])}))}return{records:a,cursor:i.cursor??void 0,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:e.limit}}function ob(e){let t=e.client??L,n=xg(),i=Eg({client:t,activeRegistry:n}),a=_y({client:t,cacheBudget:i,activeRegistry:n,probe:{getTransport:r,getGeneration:s},fetcher:e=>ab({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:Ym(),historyLimit:Xm(),durableStore:e.durableStore??tb()}),o=Jv({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 sb(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 cb=new Map;function lb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function ub(e,t,n,i={}){let a=i.getTransportIdentity??r,o=i.getGeneration??s,c=a(),l=o(),u=lb(e,t,c,l),d=()=>a()===c&&o()===l,f=cb.get(u)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=f.catch(()=>void 0).then(()=>m);cb.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(),cb.get(u)===h&&cb.delete(u)}}var db=new Set,fb=new Set,pb=new Set,mb=new Set,hb={onDeleteRequest(e){return db.add(e),()=>{db.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||db.forEach(t=>t(e))},onCreateRequest(e){return fb.add(e),()=>{fb.delete(e)}},requestCreate(e){let t=e??{};fb.forEach(e=>e(t))},onDirectoryRequest(e){return pb.add(e),()=>{pb.delete(e)}},requestDirectoryDialog(){pb.forEach(e=>e())},onGitRefreshHint(e){return mb.add(e),()=>{mb.delete(e)}},requestGitRefresh(e){e.directory.trim()&&mb.forEach(t=>t(e))}},gb=e=>e.trim(),_b=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session status runtime changed`)},vb=(e,t={})=>{let n=gb(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})=>{_b(i,l,c);let t=o(),r=await a(n,e);if(_b(i,l,c),r===null)throw Error(`session status snapshot unavailable`);return{snapshot:r,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},yb=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(vb(e,r))},bb=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session active runtime changed`)},xb=(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})=>{bb(t,o,a);let r=i(),s=await n(e);return bb(t,o,a),{result:s,requestedAt:r}},staleTime:0,gcTime:3e5,retry:!1})},Sb=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(xb(n))},Cb;function wb(e){Cb=e}function Tb(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 Eb(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Db(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Ob(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 kb(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=Tb(a[e]);if(t){s[e]=n&&Db(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function Ab(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=Tb(t[o]);if(n&&n.type!==`idle`){Eb(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 jb(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Mb(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 yb(e,{client:o,loadSnapshot:r.loadSnapshot,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),f=r.skipActive?Promise.resolve(null):(async()=>{try{return await Sb({client:o,loadActive:r.loadActive,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),[p,m]=await Promise.all([d,f]);if(c=p,m&&(l=m.result,u=m.requestedAt),r.isStale?.())return null;let h=c?.snapshot??null,g=l?.state===`supported`;if(h===null&&!g)return null;let{snapshot:_,source:v}=kb(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=jb(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Ab(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Cb;if(S){let n=t.getState().session_status??{},r={};for(let e of x){let t=n[e];t&&t.type!==`idle`&&(r[e]={type:t.type})}S(e,r,x)}return _}async function Nb({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:Mb(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var Pb=50,Fb=e=>{let t=Object.keys(e);if(t.length<=Pb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Pb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},Ib=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:Fb(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`})),Lb=new Set([`todowrite`,`todoread`]),Rb=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),zb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Bb=(e,t)=>{Ib.getState().setSessionTodos(e,t)},Vb=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Hb=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Ub=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},Wb=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Ub(n);e&&t.push(e)}return t},Gb=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Wb(t);if(t&&typeof t==`object`)return Wb(t.todos)}catch{}return[]},Kb=e=>{if(!Lb.has(Vb(e)))return[];let t=Hb(e);if(t&&Rb.has(t))return[];let n=e.state,r=Wb(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Wb(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Wb(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?Gb(i):[]};function qb(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=Kb(r[e]);if(t.length>0)return t}}return[]}function Jb(e){if(!e.sessionID||e.isStale?.()||zb(e.store.getState().todo,e.sessionID))return!1;let t=qb(e.transcript);return t.length===0||e.isStale?.()||zb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Yb(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(U(e.directory,e.sessionID));return t?Jb({sessionID:e.sessionID,store:e.store,transcript:t,persist:Bb,isStale:e.isStale}):!1}var Xb=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>YS,COMBINED_SEND_PRESENCE_GRACE_MS:()=>JS,SESSION_DELETE_UNDO_MS:()=>yS,abortBusySessionForMessageEdit:()=>lC,abortCurrentOperation:()=>eC,archiveSession:()=>kS,beginOptimisticSend:()=>zS,cancelScheduledSessionDeletes:()=>OS,classifySendFailure:()=>Ux,combinedSendConfirmationOptions:()=>XS,commitMessageEdit:()=>dC,createSession:()=>pS,deleteSession:()=>ES,dirStoreForDirectory:()=>Ox,dismissOpenQuestionsForSession:()=>iC,ensureSentUserMessagePresence:()=>$S,fetchMessagesForSession:()=>_C,fetchRecentSendConfirmationRecords:()=>KS,forkSession:()=>hC,getSendFailureKind:()=>Vx,getSessionLastAssistantModel:()=>Px,isQuestionRequestNotFoundError:()=>uS,materializeConfirmedSendRecords:()=>qS,mirrorSessionIntoLiveStores:()=>Ix,optimisticInsertUserMessage:()=>WS,optimisticSend:()=>US,patchSessionMetadata:()=>mS,refetchSessionMessages:()=>pC,rejectQuestion:()=>rC,releaseUnconfirmedQueueSend:()=>Tx,requestSessionSmartTitle:()=>MS,resolveForkMessageId:()=>lx,respondToPermission:()=>tC,respondToQuestion:()=>nC,revertToMessage:()=>aC,rollbackOptimisticSend:()=>VS,scheduleSessionDeletes:()=>DS,setActionRefs:()=>Cx,setOptimisticRefs:()=>wx,settleOptimisticSend:()=>HS,shareSession:()=>NS,shouldSuppressForkCopyEvent:()=>dx,stageMessageEdit:()=>sC,trackForkCopySessionCreated:()=>ax,unarchiveSession:()=>AS,unrevertSession:()=>mC,unshareSession:()=>PS,updateSessionTitle:()=>jS,waitForConnectionOrThrow:()=>qx,waitForSessionIdleForMessageEdit:()=>uC}),Zb=2,Qb=150,$b=new Set([`patch`,`step-start`,`step-finish`]),ex=3,tx=150,nx=null,rx=new Map,ix=3e4;function ax(e,t){let n=t?.id;!nx||nx.runtimeKey!==i()||nx.directory!==e||!n||t?.title!==nx.expectedTargetTitle||n===nx.sourceSessionID||nx.targetSessionID||(nx.targetSessionID=n)}function ox(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function sx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function cx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function lx(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 ux(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 dx(e,t,n){if(nx&&nx.runtimeKey===i()&&nx.directory===e&&t&&t===nx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${i()}:${e}:${t}`,a=rx.get(r);return a?a.expiresAt<=Date.now()?(rx.delete(r),!1):n<=a.messageID:!1}var fx=null,px=null,mx=()=>``,hx=new Map,gx=null,_x=null,vx=null,yx=e=>new Promise(t=>setTimeout(t,e));function bx(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 xx(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${bx(e.error)}`);throw n!==void 0&&(r.status=n),r}function Sx(e,t){let n=xx(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Cx(e,t,n){if(fx=e,px=t,mx=n,hx.size>0){let e=[...hx.values()];hx.clear(),queueMicrotask(()=>{for(let t of e)_C(t.sessionID,t.directory)})}}function wx(e,t,n){gx=e,_x=t,vx=n??null}function Tx(e){let t=e.directory??null;_x?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Ex(){if(!fx)throw Error(`SDK not initialized — is SyncProvider mounted?`);return fx}function Dx(){if(!px)throw Error(`Child stores not initialized`);let e=mx();if(!e)throw Error(`No current directory`);return px.ensureChild(e)}function Ox(e,t){if(!px)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return px.ensureChild(e,t)}function kx(e,t){let n=t??$x(e);return n?{store:Ox(n),directory:n}:{store:Dx(),directory:Lx()}}function Ax(e,t){let{store:n,directory:r}=kx(e,t??void 0),i=r??Lx()??``;return{repository:H()??yu(i,n),directory:i,store:n}}function jx(e,t){let{repository:n,directory:r,store:i}=Ax(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function Mx(e,t){return Gu(jx(e,t).data)}function Nx(e,t){return jx(e,t).data.messageOrder.length}function Px(e){try{let t=Mx(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 Fx(e,t){let n=px;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]=xE(e,n[r]),t.setState({session:i}),!0}return!1}function Ix(e,t){t&&Fx(e,t)||Fx(e)}function Lx(){return mx()||void 0}function Rx(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function zx(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 Bx=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 Vx(e){return e instanceof Bx?e.kind:null}function Hx(e){let t=zx(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 Ux(e,t){return t?Hx(e)||zx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var Wx=2e3,Gx=5e3,Kx=3e4;async function qx(){let e=jm();e&&Am(`send_stream_stale`);let t=Date.now()+(e?Gx:Wx);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 Rx()}function Jx(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Am(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},Kx);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function Yx(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Xx(e){e&&Y.getState().upsertSession(e)}function Zx(e,t){let n=sp(t),r=[...e.getState().session],i=ls.search(r,n.id,e=>e.id);if(i.found){let t=xE(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 Qx(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=Yx(e);if(i)return Zx(t,i);try{return Zx(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 $x(e){return eS(e)||$.getState().getDirectoryForSession(e)||Lx()}function eS(e){let t=px;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 tS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):Ex()}function nS(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 rS=()=>new Map(Array.from(Pd(),([e,t])=>[e,t.title||e]));function iS(e){return!(e.type!==`file`||Zp(e))}function aS(e){return iS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function oS(e){return e.some(aS)}async function sS(e){let t=[...e.parts];if(!oS(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}=Ax(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],oS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function cS(e){if(oS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await fm(e.parts,{sessionTitles:rS(),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 lS(e,t,n){let r=px;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 uS(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 dS(e,t){let n=px;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 fS(e,t,n){let r=lS(e,t,n);return r?z.getScopedSdkClient(r):tS(t)}async function pS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??Lx()),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 mS(e,t,n){let r=t??$x(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 hS(e,t){let n;try{n=await z.getSession(e,t??$x(e))}catch{return}if(!Vp(n))return;let r=Bp(n);if(r)try{await mS(r,t??$x(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 gS(e,t){if(!px)return[];let n=[],r=new Set,i=[];if(t){let e=px.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of px.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 _S(e){if(px)for(let t of e){let e=px.children.get(t.directory);e&&e.setState({session:t.sessions})}}function vS(e){$.getState().setWorktreeMetadata(e,null)}var yS=1e4,bS=new Map,xS=0;function SS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function CS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),_S(e.listSnapshots),Xx(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function wS(e,t){let n=t??$x(e);Y.getState().markSessionsPendingDeletion([e]);let r=gS(e,n),i=Yx(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 TS(e,t){try{if(await hS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return gS(e,t),Y.getState().removeSessions([e]),vS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(gS(e,t),Y.getState().removeSessions([e]),vS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function ES(e,t){let n=wS(e);return await TS(e,n.directory)?!0:(CS(n),!1)}function DS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>wS(e)),i=`session-delete-${Date.now()}-${xS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=bS.get(i);if(!e)return;bS.delete(i);let t=[],n=[];for(let r of e.entries)await TS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),CS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return bS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function OS(e){if(!e)return!1;let t=bS.get(e);if(!t)return!1;clearTimeout(t.timer),bS.delete(e);for(let e of[...t.entries].reverse())CS(e);return!0}async function kS(e){let t=$x(e),n=gS(e,t),r=Yx(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await hS(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),_S(n),Xx(r),!1}}async function AS(e){let t=$x(e),n=Yx(e),r=n?SS(n):null;if(r&&(Y.getState().upsertSession(r),t&&px)){let e=px.children.get(t);e&&Zx(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=SS(n);if(Y.getState().upsertSession(r),t&&px){let e=px.children.get(t);e?Zx(e,r):Ix(r,t)}else Ix(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&gS(e,t)),!1}}async function jS(e,t){let n=$x(e),r=Yx(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),Ix(c,n)}async function MS(e){let t=$x(e),n=Yx(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),Ix(s,t)}async function NS(e){let t=$x(e),n=sp(Sx(await Ex().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),Fx(n,t),n}async function PS(e){let t=$x(e),n=sp(Sx(await Ex().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),Fx(n,t),n}function FS(e){let t=px,n=e??mx();if(!t||!n)return{store:e?Ox(e):Dx(),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 IS(){return{identity:r(),generation:s()}}function LS(e,t){return e.isCurrent()&&r()===t.identity&&s()===t.generation}function RS(e,t){if(!LS(e,t))throw Error(`Send target changed before transport dispatch`)}function zS(e){if(!gx||!_x)throw new Bx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??Lx()??null,n=FS(t),r=IS();RS(n,r),e.beforeOptimisticInsert?.(),RS(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),WS({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 Bx?e:new Bx(Vx(e)??Ux(e,!1),e)}}function BS(e){if(!LS(e.capture,e.transport)||!_x)return;_x({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 VS(e){BS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function HS(e){if(!gx||!_x)throw new Bx(`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 qx(),RS(n,r),s=!0,await Jx(e.send(i)),!LS(n,r))throw new Bx(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Vx(c)??Ux(c,s),u=c instanceof Bx?c:new Bx(l,c,i);if(!LS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await KS(a,i,o):null;if(d&&LS(n,r)){qS(n.store,a,i,d,{directory:o??void 0}),vx?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||BS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function US(e){await HS({ticket:e.ticket??zS({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 WS(e){if(!gx)return!1;let t=e.directory??Lx(),n=t?Ox(t):Dx(),i=t??Lx()??``;if(ZS(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=Mv(()=>jx(e.sessionId,t).data);gx({sessionID:e.sessionId,directory:t,message:c,parts:a});let u=Mv(()=>jx(e.sessionId,t).data);try{l&&u&&Nv({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 GS(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function KS(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??Zb,c=r?.retryDelayMs??Qb;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!GS(r?.isCurrent)||a>0&&(await yx(c),i?.signal.aborted||!GS(r?.isCurrent)))return null;try{let a=await Ex().session.messages({sessionID:e,directory:n??void 0,limit:$m(),...i?{signal:i.signal}:{}});if(!GS(r?.isCurrent))return null;let o=(xx(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 qS(e,t,n,r,i){if(!r.length)return;let a=i?.directory??$x(t)??mx(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:lp(e.info),parts:e.parts??[]})),skipPartTypes:$b,merge:i?.gapFillOnly===!0?Ys:Zs({purpose:`recovery`})};xu(o,s)||yu(a,e).apply(o,s)}var JS=2e3,YS={attempts:12,retryDelayMs:500},XS={presenceGraceMs:JS,recovery:{...YS}};function ZS(e,t,n,r){let i=r??$x(t)??mx()??``,a=H()??yu(i,e),o=U(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function QS(e,t,n,r){let i=r?.directory??$x(t)??mx()??``;if(ZS(e,t,n,i))return Promise.resolve(!0);if(!GS(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(!GS(r?.isCurrent)){l(!1);return}ZS(e,t,n,i)&&l(!0)}),ZS(e,t,n,i)&&l(!0)})}async function $S(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await QS(t,n,r,{timeoutMs:e.graceMs??XS.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!GS(a))return`cancelled`;let o=await KS(n,r,i,{...XS.recovery,isCurrent:a});return o?GS(a)?(qS(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:GS(a)?`missing`:`cancelled`}async function eC(e){let{store:t,directory:n}=kx(e),i=n?{state:`bound`,transportIdentity:r(),directory:n,sessionID:e}:null,a=i?$.getState().beginQueueAbortBlock(i):null;try{if(Sx(await Ex().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(()=>YB);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function tC(e,t,n){await qx();let r=lS(`permission`,e,t)||$x(e)||Lx();if(Sx(await fS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function nC(e,t,n){await qx();let r=lS(`question`,e,t)||$x(e)||Lx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Sx(await fS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw uS(n)&&dS(e,t),n}}async function rC(e,t){await qx();let n=lS(`question`,e,t)||$x(e)||Lx();try{if(Sx(await fS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw uS(n)&&dS(e,t),n}}async function iC(e){if(!e)return!1;let t=px;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)dS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await rC(e,t)}catch(e){if(uS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function aC(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 ub(e,i??(()=>{try{return kx(e,i).directory}catch{return i}})(),async({isCurrent:n})=>{let{store:o,directory:c}=kx(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 Ex().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=Mx(e,c).find(e=>e.id===t),d=Mx(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}=Ax(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 sS({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await fm(m,{sessionTitles:rS(),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&&hb.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 oC(e,t,n,i){let a=i??$x(t)??mx(),o=U(a,t),c=Mv(()=>jx(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=Mv(()=>jx(t,a).data);try{c&&d&&Nv({trigger:`user-delete`,sessionID:t,directory:a,transport:r(),generation:s(),before:c,after:d})}catch{}}async function sC(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=kx(e,s).directory}else{c=kx(e,s).directory;let{data:n}=jx(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 cS({key:l,parts:await sS({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 cC(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 lC(e,t){let n=t?.directory,{store:r,directory:i}=kx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Ex().session.abort({sessionID:e,directory:i})}catch{}}async function uC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=kx(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 dC(e,t,n){let i=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:c}=kx(e,i),l=Mv(()=>jx(e,i).data);try{await lC(e,{directory:i}),await uC(e,{directory:i});let n=new Set((await fC(e,i)).map(e=>e.id)),r=cC(t,Mx(e,i),n,{preserveMessageId:a});for(let t of[...r].reverse())await z.deleteSessionMessage(e,t.id,c),oC(o,e,t.id,c)}finally{try{let t=Mv(()=>jx(e,i).data);l&&t&&Nv({trigger:`user-edit`,sessionID:e,directory:c,transport:r(),generation:s(),before:l,after:t})}catch{}}}async function fC(e,t){let{directory:n}=kx(e,t);return(xx(await Ex().session.messages({sessionID:e,directory:n,limit:Qm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>lp(e.info))}async function pC(e,t){let{store:n,directory:i}=kx(e,t),a=Mv(()=>jx(e,t).data),o=(xx(await Ex().session.messages({sessionID:e,directory:i,limit:Qm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Mv(()=>jx(e,t).data);a&&n&&Nv({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??mx(),e);xu(l,{type:`materialize-snapshots`,records:c,skipPartTypes:$b})||yu(i??mx(),n).apply(l,{type:`materialize-snapshots`,records:c,skipPartTypes:$b});try{let n=Mv(()=>jx(e,t).data);a&&n&&Nv({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 mC(e,t){return ub(e,t??(()=>{try{return kx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=kx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Nx(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Ex().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Ex().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Sx(c,`session.unrevert`),u=[...r.getState().session],d=u.findIndex(t=>t.id===e);d>=0&&(u[d]=l,r.setState({session:u}));for(let r=0;r<ex;r+=1){if(r>0&&(await yx(tx),!n())||(await pC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Nx(e,i)>o)return}if(Nx(e,i)<=o){let n=i??mx(),a=H()??yu(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await pC(e,t)}})}async function hC(e,t,n,r){let a=i(),{store:o,directory:s}=kx(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await Qx(e,o,s);Ed(e,s);let l=o.getState(),u=l.session_status[e],d=Mx(e,s);u?.type,d.length;let f=lx(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await pC(e),l=o.getState(),u=l.session_status[e],d=Mx(e,s),f=lx(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:Nx(e,s)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=jx(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 k_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function Q_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function $_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var ev=e=>typeof e==`string`&&e.trim().length>0;function tv(e){if(!e||Q_(e)!==`assistant`)return;let t=e,n=!ev(t.mode)&&!ev(t.agent),r=!ev(t.modelID)||!ev(t.providerID);return n||r}function nv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function rv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)O_(e)?r+=1:i+=1,X_(e)&&(a=!0);let o=e.messagesByID[t],s=Q_(o),c=tv(o),l=s===`user`?Z_(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:$_(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 iv(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:nv(e),after:nv(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 av(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:iv(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 ov(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function sv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function cv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function lv(e){let t=cv(e.partID),n=cv(e.messageID),r=cv(e.directory),i=cv(e.childSessionID),a=cv(e.toolStatus),o=cv(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 uv(e){return[e.sessionID,cv(e.partID)??``,e.childSessionPresent?`1`:`0`,cv(e.childSessionID)??``,cv(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`,cv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function dv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...lv(e)}}function fv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:sv(e),...lv(e)}}var pv=`openchamber-transcript-diagnostics`,mv=`events`,hv=1,gv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),_v=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,hv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(mv)||e.createObjectStore(mv,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),vv=(e=pv)=>({async append(t,n){let r=await _v(e);try{let e=r.transaction(mv,`readwrite`).objectStore(mv);await gv(e.add(t));let i=await gv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await gv(e.delete(t))}finally{r.close()}},async read(){let t=await _v(e);try{return await gv(t.transaction(mv,`readonly`).objectStore(mv).getAll())}finally{t.close()}},async clear(){let t=await _v(e);try{await gv(t.transaction(mv,`readwrite`).objectStore(mv).clear())}finally{t.close()}}});function yv(e={}){let t=e.driver??vv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var bv=Qe(`OpenChamberMedia`);function xv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Sv(){return Ge()&&$e!==void 0&&$e.isPluginAvailable(`OpenChamberMedia`)}function Cv(){return`1.18.2-beta.39`}function wv(){if(typeof localStorage>`u`)return null;try{return N_(localStorage.getItem(M_))}catch{return null}}function Tv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(M_,e?`true`:`false`)}catch{}}function Ev(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var Dv;function Ov(e=Cv()){return P_({version:e,preference:wv()})}function kv(e={}){return W_({sink:Ev()===`indexeddb`?(e.createIndexedDBSink??yv)():(e.createMemorySink??U_)(),isEnabled:e.isEnabled??Ov})}function Av(){return Dv??=kv(),Dv}function jv(e){Av().record(e)}function Mv(e){try{return Ov()?rv(e()):void 0}catch{return}}function Nv(e){try{jv(av(e))}catch{}}function Pv(e){try{jv(dv(e))}catch{}}function Fv(e){try{jv(fv(e))}catch{}}function Iv(e){let t=K_(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&jv(H_({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:q_(e.command),sseType:J_(e.command),source:Y_(e.command),error:e.error}))}async function Lv(){let e=await Av().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 Rv(e,t=F_()){if(Sv())return(await bv.saveFile({dataBase64:xv(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 zv(){let e=await Lv(),t=F_();return{content:e,fileName:t,outcome:await Rv(e,t),eventCount:I_(e)}}function Bv(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 Vv=2,Hv=6e4;function Uv(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??r)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??s)()}}function Wv(e,t){let n=(t.probe?.getTransport??r)(),i=(t.probe?.getGeneration??s)();if(n!==e.transport||i!==e.generation)throw new Lh}function Gv(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function Kv(e,t){return mg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function qv(e,t){return`${e.trim()}\n${t}`}function Jv(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??Vv)),o=e.fetchReconcile??Wg,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(qv(e,t))},y=(e,t)=>{h.delete(qv(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(qv(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(qv(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=qv(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??Uv(e).transport,generation:r.generation??Uv(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(qv(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(qv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of s)f.set(qv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(qv(t,n),{directory:t,sessionID:n});for(let e of f.values()){let i=Gv(e,a),s=n.getTranscript(i),c=C_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:r.lastEventID,capturedAt:o});E_(t,c)}let p=new Set;for(let t of u){let n=Bv({directory:t,activeScopes:S(a,t),viewedSessions:s,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(qv(e.directory,e.sessionID))}for(let e of d){let t=qv(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=Mv(()=>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=Mv(()=>n.getTranscript(e));i&&t&&Nv({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(Wv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;E_(t,w_(T_(t,i)??C_({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=Mv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),Wv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;D_(t,i),y(i.directory,i.sessionID);try{let e=Mv(()=>n.getTranscript(r));o&&e&&Nv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw E_(t,w_(T_(t,i)??C_({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(Wv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;E_(t,w_(T_(t,i)??C_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Mv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),Wv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;D_(t,i),y(i.directory,i.sessionID);try{let e=Mv(()=>n.getTranscript(r));o&&e&&Nv({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 E_(t,w_(T_(t,i)??C_({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=Gv(r,i),d=Kv(r,i),f=vg({directory:d.directory,sessionID:d.sessionID,checkpoint:String(T_(t,d)?.capturedAt??c())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:c()});try{if(Wv(i,e),a!==u||s.aborted)throw new Lh;let p=T_(t,d);if(p||(p=C_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(l),lastEventID:null,capturedAt:c()}),E_(t,p)),!p.anchorMessageID){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}p=w_(p,{state:`reconciling`}),E_(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,Wv(i,e),a!==u||s.aborted)throw new Lh;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,Wv(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(Wv(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=w_(T_(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),E_(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=w_(T_(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),E_(t,p);continue}p=w_(T_(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),E_(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=qv(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),A(n);return}let c=Uv(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{try{await k(o,c,l,h.signal)}catch{}finally{f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),A(n)}})();d.set(s,g)},j=e=>{let t=e.directory.trim(),n=qv(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=Bv({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=qv(e.scope.directory,e.scope.sessionID);r.some(e=>qv(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=Uv(e,t),a=Gv({directory:r,sessionID:t.sessionID},i),s=hg(Kv({directory:r,sessionID:t.sessionID},i)),u=g.get(s);if(u&&c()-u.checkedAt<Hv||_.has(s)||d.has(qv(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(Wv(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(Wv(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=qv(i,r.sessionID);if(!h.has(a))return M(r),null;y(i,r.sessionID);let o=Uv(e,r),s=Gv({directory:i,sessionID:r.sessionID},o),c=Kv({directory:i,sessionID:r.sessionID},o),u=T_(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{Wv(o,e);let r=await n.ensureInitial(s);return D_(t,c),r}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:x,getCheckpoint:n=>{let r=Uv(e,n);return T_(t,Kv({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(qv(e,t)),destroy:()=>{l=!0,x(`destroy`)}}}function Yv(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Xv(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 Zv(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 Qv(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 $v=new Map;function ey(e,t){let n=$v.get(e);if(n)return n;let r=t().finally(()=>{$v.get(e)===r&&$v.delete(e)});return $v.set(e,r),r}var ty=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function ny(e){return ey(ty(e),e.request)}function ry(e,t){return`${e}\n${t}`}var iy=new Map;function ay(e){return iy.get(e)}async function oy(e){return ny({runtimeKey:ry(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 iy.set(r.id,i),{info:lp(r),parts:i}}})}function sy(e,t){let n=e.info;return n.role===t||n.clientRole===t}function cy(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!sy(i,`assistant`))continue;let e=i.info.parentID;if(!(!e||t.has(e)||r.has(e))&&(r.add(e),n.push(e),n.length===8))break}return n}async function ly(e){if(e.complete){let t=e.records.some(e=>sy(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=cy(e.records);if(t.length===0){let t=e.records.some(e=>sy(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=>sy(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function uy(e){return e.trim()}function dy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??r)(),i=e.generation??t.generation??(t.probe?.getGeneration??s)();return{directory:uy(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 fy(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:rl,liveRevision:0}}function py(e,t){if(!e||e.pages.length===0)return fy(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 my(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function hy(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function gy(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=my(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=my(e.messagesByID[t]);a===void 0||a<=n||hy(e.partsByMessageID[t])||i.push(t)}return i}function _y(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?Qv(e.durableStore,{getProtectScopes:()=>i.listRetained().map(Yv),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=py(w(e),t.sessionID);!Sl(r)&&!v.has(n)||(y.add(n),jv(H_({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=dy(n,e);return ag({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=dy(t,e);return qh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=dy(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=dy(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(dy(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(dy(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=dy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{d&&d.persistSettled(Yv(e),t,n??[])},le=(e,t,n,r)=>{if(!d||S>0||!r.applied||!r.changed)return;let i=Yv(t);if(n.type===`remove-message`){d.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(d.clearSession(i),n.page){let r=py(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=py(w(e),t.sessionID);for(let e of r){let n=Zv(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=py(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 Xv(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)}),jv(H_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:py(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)||jv(H_({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:py(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(dy(t,e)))?!0:oh(n).kind===`unknown`},P={getTranscript(t){let n=dy(t,e),r=K(n),i=py(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=dy(t,e),r=K(n),i=P.getTranscript(t);return te(r,El(n.sessionID,i.boundary))},getRequestState(t){let n=dy(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=dy(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(dy(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(dy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??vy,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=dy(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=dy(t,e),i=M(r,n),a=Mv(()=>P.getTranscript(t)),o=e=>{try{let t=Mv(e);if(!a||!t)return;Nv({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 oy({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=dy(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 yy(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&&(Iv({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:py(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(dy(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=dy(t,e),a=K(r);if(d&&await d.wait(Yv(r)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Yv(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){jv(H_({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 jv(H_({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 jv(H_({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 jv(H_({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:py(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 jv(H_({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=dy(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 jv(H_({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 jv(H_({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=dy(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=dy(t,e),i=Mv(()=>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=gy(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=Mv(()=>c);i&&e&&Nv({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=Mv(()=>P.getTranscript(t)),i=E(t);return d&&await d.clearSession(Yv(dy(t,e))),n.destructiveReset(i,async()=>{let n=dy(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=Mv(()=>s);r&&e&&Nv({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(dy(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 vy=Object.freeze([]);function yy(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 by=`/api/openchamber/transcript-cache`,xy=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),Sy=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Cy=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},wy=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},Ty=e=>{if(!Sy(e))throw Error(`Invalid transcript cache scope`);return{transport:Cy(e.transport,`scope`),generation:wy(e.generation,`scope`),directory:Cy(e.directory,`scope`),sessionID:Cy(e.sessionID,`scope`)}},Ey=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},Dy=e=>{if(!Sy(e)||!Sy(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!Sy(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:Ty(e.scope),messageID:Cy(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>Ey(e,`part completeness`)),completeness:Ey(e.completeness,`completeness`),contentHash:Cy(e.contentHash,`content hash`),byteSize:wy(e.byteSize,`byte size`),lastAccessedAt:wy(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:wy(e.sortKey.created,`sort key`),messageID:Cy(e.sortKey.messageID,`sort key`)}}},Oy=(e,t)=>{if(!Sy(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(Dy);return{scope:e.scope===void 0?gc(t):Ty(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},ky=e=>{if(!Sy(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:Dy(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!xy.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:Dy(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Ay=e=>{if(!Sy(e))throw Error(`Invalid transcript cache evict`);return{evicted:wy(e.evicted,`evict`),freedBytes:wy(e.freedBytes,`evict`),remainingBytes:wy(e.remainingBytes,`evict`)}},jy=e=>({scope:gc(e),records:[],byteSize:0}),My=(e,t)=>Sy(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Ny=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`)}},Py=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 Ny(r)};let i=await Ny(r).catch(()=>void 0);throw Error(My(i,`Transcript cache request failed (${r.status})`))},Fy=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Iy=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Ly(e={}){let t=e.fetch??F;return{async readSession(e){let n=await Py(t,`${by}/session`,{method:`GET`,query:Fy(e)});return n.kind===`disabled`||n.kind===`not-found`?jy(e):Oy(n.payload,e)},async readMessage(e,n){let r=await Py(t,`${by}/message`,{method:`GET`,query:{...Fy(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!Sy(r.payload))throw Error(`Invalid transcript cache record`);return Dy(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Py(t,`${by}/message`,Iy(`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 ky(i.payload)},async removeMessage(e,n){let r=await Py(t,`${by}/message`,Iy(`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 Py(t,`${by}/session`,Iy(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Py(t,`${by}/generation`,Iy(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Py(t,`${by}/evict`,Iy(`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 Ay(r.payload)},async clearAll(){let e=await Py(t,`${by}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Ry=`openchamber-transcript-durable`,zy=1,By=`transcriptIndex`,Vy=`transcriptContent`,Hy=class extends Error{code;constructor(e){super(e),this.code=e}},Uy=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}),Wy=(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}}),Gy=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Wy(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Ky=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},qy=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Jy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Hy(`database-unavailable`));return}let r=indexedDB.open(e,zy),i=!1,a=()=>{i||(i=!0,n(new Hy(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(By)){let t=e.createObjectStore(By,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Vy)||e.createObjectStore(Vy,{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}),Yy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Hy(`database-unavailable`)),r.onblocked=()=>void 0}),Xy=(e=Ry)=>({transaction:async t=>{let n=await Jy(e),r=n.transaction([By,Vy],`readwrite`),i=r.objectStore(By),a=r.objectStore(Vy),o=e=>qy(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:()=>Yy(e)});function Zy(e,t={}){let n=_c(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Uy(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=Wy(t,r);a.lastAccessedAt=n(),await e.putIndex(Uy(a)),i.push(a)}return yc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Gy(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 Gy(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(Uy(d)),await e.putContent({id:u,info:hc(i),parts:s}),{status:`written`,record:vc(d)}})},async removeMessage(t,n){await e.transaction(e=>Ky(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 Ky(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(rc(t));for(let t of n)await Ky(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 Ky(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 Qy(e={}){return Zy(e.driver??Xy(e.databaseName),e)}function $y(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 eb=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function tb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Ly)(),t),i=()=>(n??=(e.createIndexedDBStore??Qy)(),n),a=()=>$y(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=>eb([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function nb(e={}){await tb(e).clearAll()}var rb=(e,t)=>e<t?-1:+(e>t);function ib(e){return e.filter(e=>!!e?.id).sort((e,t)=>rb(e.id,t.id))}async function ab(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,i=await Pg({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:ib(e.parts??[])}));if(!e.before&&!i.complete&&cy(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await ly({records:a,complete:i.complete,requestMessage:async n=>{let i=await oy({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:ib(i.parts??[])}}})).records.map(e=>({info:e.info,parts:ib(e.parts??[])}))}return{records:a,cursor:i.cursor??void 0,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:e.limit}}function ob(e){let t=e.client??L,n=xg(),i=Eg({client:t,activeRegistry:n}),a=_y({client:t,cacheBudget:i,activeRegistry:n,probe:{getTransport:r,getGeneration:s},fetcher:e=>ab({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:Ym(),historyLimit:Xm(),durableStore:e.durableStore??tb()}),o=Jv({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 sb(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 cb=new Map;function lb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function ub(e,t,n,i={}){let a=i.getTransportIdentity??r,o=i.getGeneration??s,c=a(),l=o(),u=lb(e,t,c,l),d=()=>a()===c&&o()===l,f=cb.get(u)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=f.catch(()=>void 0).then(()=>m);cb.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(),cb.get(u)===h&&cb.delete(u)}}var db=new Set,fb=new Set,pb=new Set,mb=new Set,hb={onDeleteRequest(e){return db.add(e),()=>{db.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||db.forEach(t=>t(e))},onCreateRequest(e){return fb.add(e),()=>{fb.delete(e)}},requestCreate(e){let t=e??{};fb.forEach(e=>e(t))},onDirectoryRequest(e){return pb.add(e),()=>{pb.delete(e)}},requestDirectoryDialog(){pb.forEach(e=>e())},onGitRefreshHint(e){return mb.add(e),()=>{mb.delete(e)}},requestGitRefresh(e){e.directory.trim()&&mb.forEach(t=>t(e))}},gb=e=>e.trim(),_b=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session status runtime changed`)},vb=(e,t={})=>{let n=gb(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})=>{_b(i,l,c);let t=o(),r=await a(n,e);if(_b(i,l,c),r===null)throw Error(`session status snapshot unavailable`);return{snapshot:r,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},yb=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(vb(e,r))},bb=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session active runtime changed`)},xb=(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})=>{bb(t,o,a);let r=i(),s=await n(e);return bb(t,o,a),{result:s,requestedAt:r}},staleTime:0,gcTime:3e5,retry:!1})},Sb=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(xb(n))},Cb;function wb(e){Cb=e}function Tb(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 Eb(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Db(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Ob(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 kb(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=Tb(a[e]);if(t){s[e]=n&&Db(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function Ab(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=Tb(t[o]);if(n&&n.type!==`idle`){Eb(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 jb(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Mb(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 yb(e,{client:o,loadSnapshot:r.loadSnapshot,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),f=r.skipActive?Promise.resolve(null):(async()=>{try{return await Sb({client:o,loadActive:r.loadActive,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),[p,m]=await Promise.all([d,f]);if(c=p,m&&(l=m.result,u=m.requestedAt),r.isStale?.())return null;let h=c?.snapshot??null,g=l?.state===`supported`;if(h===null&&!g)return null;let{snapshot:_,source:v}=kb(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=jb(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Ab(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Cb;if(S){let n=t.getState().session_status??{},r={};for(let e of x){let t=n[e];t&&t.type!==`idle`&&(r[e]={type:t.type})}S(e,r,x)}return _}async function Nb({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:Mb(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var Pb=50,Fb=e=>{let t=Object.keys(e);if(t.length<=Pb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Pb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},Ib=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:Fb(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`})),Lb=new Set([`todowrite`,`todoread`]),Rb=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),zb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Bb=(e,t)=>{Ib.getState().setSessionTodos(e,t)},Vb=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Hb=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Ub=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},Wb=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Ub(n);e&&t.push(e)}return t},Gb=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Wb(t);if(t&&typeof t==`object`)return Wb(t.todos)}catch{}return[]},Kb=e=>{if(!Lb.has(Vb(e)))return[];let t=Hb(e);if(t&&Rb.has(t))return[];let n=e.state,r=Wb(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Wb(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Wb(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?Gb(i):[]};function qb(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=Kb(r[e]);if(t.length>0)return t}}return[]}function Jb(e){if(!e.sessionID||e.isStale?.()||zb(e.store.getState().todo,e.sessionID))return!1;let t=qb(e.transcript);return t.length===0||e.isStale?.()||zb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Yb(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(U(e.directory,e.sessionID));return t?Jb({sessionID:e.sessionID,store:e.store,transcript:t,persist:Bb,isStale:e.isStale}):!1}var Xb=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>YS,COMBINED_SEND_PRESENCE_GRACE_MS:()=>JS,SESSION_DELETE_UNDO_MS:()=>yS,abortBusySessionForMessageEdit:()=>lC,abortCurrentOperation:()=>eC,archiveSession:()=>kS,beginOptimisticSend:()=>zS,cancelScheduledSessionDeletes:()=>OS,classifySendFailure:()=>Ux,combinedSendConfirmationOptions:()=>XS,commitMessageEdit:()=>dC,createSession:()=>pS,deleteSession:()=>ES,dirStoreForDirectory:()=>Ox,dismissOpenQuestionsForSession:()=>iC,ensureSentUserMessagePresence:()=>$S,fetchMessagesForSession:()=>_C,fetchRecentSendConfirmationRecords:()=>KS,forkSession:()=>hC,getSendFailureKind:()=>Vx,getSessionLastAssistantModel:()=>Px,isQuestionRequestNotFoundError:()=>uS,materializeConfirmedSendRecords:()=>qS,mirrorSessionIntoLiveStores:()=>Ix,optimisticInsertUserMessage:()=>WS,optimisticSend:()=>US,patchSessionMetadata:()=>mS,refetchSessionMessages:()=>pC,rejectQuestion:()=>rC,releaseUnconfirmedQueueSend:()=>Tx,requestSessionSmartTitle:()=>MS,resolveForkMessageId:()=>lx,respondToPermission:()=>tC,respondToQuestion:()=>nC,revertToMessage:()=>aC,rollbackOptimisticSend:()=>VS,scheduleSessionDeletes:()=>DS,setActionRefs:()=>Cx,setOptimisticRefs:()=>wx,settleOptimisticSend:()=>HS,shareSession:()=>NS,shouldSuppressForkCopyEvent:()=>dx,stageMessageEdit:()=>sC,trackForkCopySessionCreated:()=>ax,unarchiveSession:()=>AS,unrevertSession:()=>mC,unshareSession:()=>PS,updateSessionTitle:()=>jS,waitForConnectionOrThrow:()=>qx,waitForSessionIdleForMessageEdit:()=>uC}),Zb=2,Qb=150,$b=new Set([`patch`,`step-start`,`step-finish`]),ex=3,tx=150,nx=null,rx=new Map,ix=3e4;function ax(e,t){let n=t?.id;!nx||nx.runtimeKey!==i()||nx.directory!==e||!n||t?.title!==nx.expectedTargetTitle||n===nx.sourceSessionID||nx.targetSessionID||(nx.targetSessionID=n)}function ox(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function sx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function cx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function lx(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 ux(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 dx(e,t,n){if(nx&&nx.runtimeKey===i()&&nx.directory===e&&t&&t===nx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${i()}:${e}:${t}`,a=rx.get(r);return a?a.expiresAt<=Date.now()?(rx.delete(r),!1):n<=a.messageID:!1}var fx=null,px=null,mx=()=>``,hx=new Map,gx=null,_x=null,vx=null,yx=e=>new Promise(t=>setTimeout(t,e));function bx(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 xx(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${bx(e.error)}`);throw n!==void 0&&(r.status=n),r}function Sx(e,t){let n=xx(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Cx(e,t,n){if(fx=e,px=t,mx=n,hx.size>0){let e=[...hx.values()];hx.clear(),queueMicrotask(()=>{for(let t of e)_C(t.sessionID,t.directory)})}}function wx(e,t,n){gx=e,_x=t,vx=n??null}function Tx(e){let t=e.directory??null;_x?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Ex(){if(!fx)throw Error(`SDK not initialized — is SyncProvider mounted?`);return fx}function Dx(){if(!px)throw Error(`Child stores not initialized`);let e=mx();if(!e)throw Error(`No current directory`);return px.ensureChild(e)}function Ox(e,t){if(!px)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return px.ensureChild(e,t)}function kx(e,t){let n=t??$x(e);return n?{store:Ox(n),directory:n}:{store:Dx(),directory:Lx()}}function Ax(e,t){let{store:n,directory:r}=kx(e,t??void 0),i=r??Lx()??``;return{repository:H()??yu(i,n),directory:i,store:n}}function jx(e,t){let{repository:n,directory:r,store:i}=Ax(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function Mx(e,t){return Gu(jx(e,t).data)}function Nx(e,t){return jx(e,t).data.messageOrder.length}function Px(e){try{let t=Mx(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 Fx(e,t){let n=px;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]=xE(e,n[r]),t.setState({session:i}),!0}return!1}function Ix(e,t){t&&Fx(e,t)||Fx(e)}function Lx(){return mx()||void 0}function Rx(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function zx(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 Bx=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 Vx(e){return e instanceof Bx?e.kind:null}function Hx(e){let t=zx(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 Ux(e,t){return t?Hx(e)||zx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var Wx=2e3,Gx=5e3,Kx=3e4;async function qx(){let e=jm();e&&Am(`send_stream_stale`);let t=Date.now()+(e?Gx:Wx);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 Rx()}function Jx(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Am(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},Kx);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function Yx(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Xx(e){e&&Y.getState().upsertSession(e)}function Zx(e,t){let n=sp(t),r=[...e.getState().session],i=ls.search(r,n.id,e=>e.id);if(i.found){let t=xE(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 Qx(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=Yx(e);if(i)return Zx(t,i);try{return Zx(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 $x(e){return eS(e)||$.getState().getDirectoryForSession(e)||Lx()}function eS(e){let t=px;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 tS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):Ex()}function nS(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 rS=()=>new Map(Array.from(Pd(),([e,t])=>[e,t.title||e]));function iS(e){return!(e.type!==`file`||Zp(e))}function aS(e){return iS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function oS(e){return e.some(aS)}async function sS(e){let t=[...e.parts];if(!oS(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}=Ax(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],oS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function cS(e){if(oS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await fm(e.parts,{sessionTitles:rS(),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 lS(e,t,n){let r=px;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 uS(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 dS(e,t){let n=px;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 fS(e,t,n){let r=lS(e,t,n);return r?z.getScopedSdkClient(r):tS(t)}async function pS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??Lx()),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 mS(e,t,n){let r=t??$x(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 hS(e,t){let n;try{n=await z.getSession(e,t??$x(e))}catch{return}if(!Vp(n))return;let r=Bp(n);if(r)try{await mS(r,t??$x(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 gS(e,t){if(!px)return[];let n=[],r=new Set,i=[];if(t){let e=px.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of px.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 _S(e){if(px)for(let t of e){let e=px.children.get(t.directory);e&&e.setState({session:t.sessions})}}function vS(e){$.getState().setWorktreeMetadata(e,null)}var yS=1e4,bS=new Map,xS=0;function SS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function CS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),_S(e.listSnapshots),Xx(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function wS(e,t){let n=t??$x(e);Y.getState().markSessionsPendingDeletion([e]);let r=gS(e,n),i=Yx(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 TS(e,t){try{if(await hS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return gS(e,t),Y.getState().removeSessions([e]),vS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(gS(e,t),Y.getState().removeSessions([e]),vS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function ES(e,t){let n=wS(e);return await TS(e,n.directory)?!0:(CS(n),!1)}function DS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>wS(e)),i=`session-delete-${Date.now()}-${xS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=bS.get(i);if(!e)return;bS.delete(i);let t=[],n=[];for(let r of e.entries)await TS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),CS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return bS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function OS(e){if(!e)return!1;let t=bS.get(e);if(!t)return!1;clearTimeout(t.timer),bS.delete(e);for(let e of[...t.entries].reverse())CS(e);return!0}async function kS(e){let t=$x(e),n=gS(e,t),r=Yx(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await hS(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),_S(n),Xx(r),!1}}async function AS(e){let t=$x(e),n=Yx(e),r=n?SS(n):null;if(r&&(Y.getState().upsertSession(r),t&&px)){let e=px.children.get(t);e&&Zx(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=SS(n);if(Y.getState().upsertSession(r),t&&px){let e=px.children.get(t);e?Zx(e,r):Ix(r,t)}else Ix(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&gS(e,t)),!1}}async function jS(e,t){let n=$x(e),r=Yx(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),Ix(c,n)}async function MS(e){let t=$x(e),n=Yx(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),Ix(s,t)}async function NS(e){let t=$x(e),n=sp(Sx(await Ex().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),Fx(n,t),n}async function PS(e){let t=$x(e),n=sp(Sx(await Ex().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),Fx(n,t),n}function FS(e){let t=px,n=e??mx();if(!t||!n)return{store:e?Ox(e):Dx(),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 IS(){return{identity:r(),generation:s()}}function LS(e,t){return e.isCurrent()&&r()===t.identity&&s()===t.generation}function RS(e,t){if(!LS(e,t))throw Error(`Send target changed before transport dispatch`)}function zS(e){if(!gx||!_x)throw new Bx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??Lx()??null,n=FS(t),r=IS();RS(n,r),e.beforeOptimisticInsert?.(),RS(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),WS({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 Bx?e:new Bx(Vx(e)??Ux(e,!1),e)}}function BS(e){if(!LS(e.capture,e.transport)||!_x)return;_x({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 VS(e){BS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function HS(e){if(!gx||!_x)throw new Bx(`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 qx(),RS(n,r),s=!0,await Jx(e.send(i)),!LS(n,r))throw new Bx(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Vx(c)??Ux(c,s),u=c instanceof Bx?c:new Bx(l,c,i);if(!LS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await KS(a,i,o):null;if(d&&LS(n,r)){qS(n.store,a,i,d,{directory:o??void 0}),vx?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||BS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function US(e){await HS({ticket:e.ticket??zS({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 WS(e){if(!gx)return!1;let t=e.directory??Lx(),n=t?Ox(t):Dx(),i=t??Lx()??``;if(ZS(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=Mv(()=>jx(e.sessionId,t).data);gx({sessionID:e.sessionId,directory:t,message:c,parts:a});let u=Mv(()=>jx(e.sessionId,t).data);try{l&&u&&Nv({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 GS(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function KS(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??Zb,c=r?.retryDelayMs??Qb;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!GS(r?.isCurrent)||a>0&&(await yx(c),i?.signal.aborted||!GS(r?.isCurrent)))return null;try{let a=await Ex().session.messages({sessionID:e,directory:n??void 0,limit:$m(),...i?{signal:i.signal}:{}});if(!GS(r?.isCurrent))return null;let o=(xx(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 qS(e,t,n,r,i){if(!r.length)return;let a=i?.directory??$x(t)??mx(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:lp(e.info),parts:e.parts??[]})),skipPartTypes:$b,merge:i?.gapFillOnly===!0?Ys:Zs({purpose:`recovery`})};xu(o,s)||yu(a,e).apply(o,s)}var JS=2e3,YS={attempts:12,retryDelayMs:500},XS={presenceGraceMs:JS,recovery:{...YS}};function ZS(e,t,n,r){let i=r??$x(t)??mx()??``,a=H()??yu(i,e),o=U(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function QS(e,t,n,r){let i=r?.directory??$x(t)??mx()??``;if(ZS(e,t,n,i))return Promise.resolve(!0);if(!GS(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(!GS(r?.isCurrent)){l(!1);return}ZS(e,t,n,i)&&l(!0)}),ZS(e,t,n,i)&&l(!0)})}async function $S(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await QS(t,n,r,{timeoutMs:e.graceMs??XS.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!GS(a))return`cancelled`;let o=await KS(n,r,i,{...XS.recovery,isCurrent:a});return o?GS(a)?(qS(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:GS(a)?`missing`:`cancelled`}async function eC(e){let{store:t,directory:n}=kx(e),i=n?{state:`bound`,transportIdentity:r(),directory:n,sessionID:e}:null,a=i?$.getState().beginQueueAbortBlock(i):null;try{if(Sx(await Ex().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(()=>YB);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function tC(e,t,n){await qx();let r=lS(`permission`,e,t)||$x(e)||Lx();if(Sx(await fS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function nC(e,t,n){await qx();let r=lS(`question`,e,t)||$x(e)||Lx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Sx(await fS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw uS(n)&&dS(e,t),n}}async function rC(e,t){await qx();let n=lS(`question`,e,t)||$x(e)||Lx();try{if(Sx(await fS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw uS(n)&&dS(e,t),n}}async function iC(e){if(!e)return!1;let t=px;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)dS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await rC(e,t)}catch(e){if(uS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function aC(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 ub(e,i??(()=>{try{return kx(e,i).directory}catch{return i}})(),async({isCurrent:n})=>{let{store:o,directory:c}=kx(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 Ex().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=Mx(e,c).find(e=>e.id===t),d=Mx(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}=Ax(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 sS({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await fm(m,{sessionTitles:rS(),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&&hb.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 oC(e,t,n,i){let a=i??$x(t)??mx(),o=U(a,t),c=Mv(()=>jx(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=Mv(()=>jx(t,a).data);try{c&&d&&Nv({trigger:`user-delete`,sessionID:t,directory:a,transport:r(),generation:s(),before:c,after:d})}catch{}}async function sC(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=kx(e,s).directory}else{c=kx(e,s).directory;let{data:n}=jx(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 cS({key:l,parts:await sS({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 cC(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 lC(e,t){let n=t?.directory,{store:r,directory:i}=kx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Ex().session.abort({sessionID:e,directory:i})}catch{}}async function uC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=kx(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 dC(e,t,n){let i=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:c}=kx(e,i),l=Mv(()=>jx(e,i).data);try{await lC(e,{directory:i}),await uC(e,{directory:i});let n=new Set((await fC(e,i)).map(e=>e.id)),r=cC(t,Mx(e,i),n,{preserveMessageId:a});for(let t of[...r].reverse())await z.deleteSessionMessage(e,t.id,c),oC(o,e,t.id,c)}finally{try{let t=Mv(()=>jx(e,i).data);l&&t&&Nv({trigger:`user-edit`,sessionID:e,directory:c,transport:r(),generation:s(),before:l,after:t})}catch{}}}async function fC(e,t){let{directory:n}=kx(e,t);return(xx(await Ex().session.messages({sessionID:e,directory:n,limit:Qm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>lp(e.info))}async function pC(e,t){let{store:n,directory:i}=kx(e,t),a=Mv(()=>jx(e,t).data),o=(xx(await Ex().session.messages({sessionID:e,directory:i,limit:Qm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Mv(()=>jx(e,t).data);a&&n&&Nv({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??mx(),e);xu(l,{type:`materialize-snapshots`,records:c,skipPartTypes:$b})||yu(i??mx(),n).apply(l,{type:`materialize-snapshots`,records:c,skipPartTypes:$b});try{let n=Mv(()=>jx(e,t).data);a&&n&&Nv({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 mC(e,t){return ub(e,t??(()=>{try{return kx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=kx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Nx(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Ex().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Ex().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Sx(c,`session.unrevert`),u=[...r.getState().session],d=u.findIndex(t=>t.id===e);d>=0&&(u[d]=l,r.setState({session:u}));for(let r=0;r<ex;r+=1){if(r>0&&(await yx(tx),!n())||(await pC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Nx(e,i)>o)return}if(Nx(e,i)<=o){let n=i??mx(),a=H()??yu(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await pC(e,t)}})}async function hC(e,t,n,r){let a=i(),{store:o,directory:s}=kx(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await Qx(e,o,s);Ed(e,s);let l=o.getState(),u=l.session_status[e],d=Mx(e,s);u?.type,d.length;let f=lx(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await pC(e),l=o.getState(),u=l.session_status[e],d=Mx(e,s),f=lx(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:Nx(e,s)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=jx(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));nx={operationId:t,runtimeKey:a,directory:s,sourceSessionID:e,expectedTargetTitle:ox(c.title)},await sx(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}),nx?.operationId===t&&(nx=null),!1;await sx(t,`opening`);try{y=await ux(y,s)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw nx?.operationId===t&&(nx=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`}),cx(t,y.id);let u=$.getState().currentSessionId,d=u===e||u===y.id;d&&$.getState().setCurrentSession(y.id,s),await sx(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 _C(y.id,s);let g=Mx(y.id,s).at(-1)?.id;g&&rx.set(`${i()}:${s}:${y.id}`,{messageID:g,expiresAt:Date.now()+ix}),d&&h&&_&&Or.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&nS(v)}finally{nx?.operationId===t&&(nx=null)}return y.id,!0}var gC=new Map;async function _C(e,t){let n=t??Lx();if(!n)return;let r=i(),a=Zm(),o=`${r}:${n}:${e}:${a}`;if(!fx||!px){hx.set(o,{sessionID:e,directory:n});return}let s=gC.get(o);if(s)return s;let c=vC(e,n,r,a).finally(()=>{gC.get(o)===c&&gC.delete(o)});return gC.set(o,c),c}async function vC(e,t,n,r){Ex();let i=Ox(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)){Yb({directory:t,sessionID:e,store:i,transcript:u});return}if(H()){try{await Cu(t,e)}catch{return}if(y())return;Yb({directory:t,sessionID:e,store:i,isStale:y}),await Nb({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}Yb({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await ab({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:$b}),b=n.records.length,Lm(t,e)}catch{return}y()||(Yb({directory:t,sessionID:e,store:i,isStale:y}),await Nb({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var yC=new Map,bC=e=>{yC.set(e,(yC.get(e)??0)+1)},xC=e=>(yC.get(e)??0)>0,SC=e=>{let t=yC.get(e)??0;return t<=0?!1:(t===1?yC.delete(e):yC.set(e,t-1),!0)},CC=18e4,wC=400,TC=300,EC=15,DC=`FINAL_REVIEW_STATUS: no_remaining_findings`,OC=DC.toLowerCase(),kC=new Set,AC=new Set,jC=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},MC=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},NC=e=>{let t=e.role;return typeof t==`string`?t:``},PC=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},FC=(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`}),IC=(e,t,n,r=0,i)=>{let a=Id(e,t),o=new Set;for(let e of a)FC(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(NC(s)!==`assistant`||!jC(s)||MC(s)<r-1e3)continue;let c=PC(s);if(!WC(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},LC=(e,t)=>Rd(e,t)?.type===`idle`,RC=e=>e===i(),zC=e=>{Gp.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},BC=e=>{if(e&&!RC(e))throw Error(`Auto-review stopped because the runtime changed.`)},VC=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),HC=e=>e.trim().split(`
|
|
463
463
|
`).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===OC,UC=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()===OC&&t.pop(),t.join(`
|