@openchambery/web 1.18.2-beta.20 → 1.18.2-beta.21
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-jor2F784.js → AssistantView-C00aiEHK.js} +1 -1
- package/dist/assets/{ChatContainer-kAjNWp0J.js → ChatContainer-BDFeDKu-.js} +4 -4
- package/dist/assets/{DiagramView-xqQkVajk.js → DiagramView-CUfSFI3e.js} +1 -1
- package/dist/assets/{MarkdownRendererImpl-BGbBVFvd.js → MarkdownRendererImpl-Cen6E9Lj.js} +1 -1
- package/dist/assets/{MobileDetailNavigation-nYIOxZNX.js → MobileDetailNavigation-DILi0tN7.js} +1 -1
- package/dist/assets/{MobileShareBridge-Bj9OwJOx.js → MobileShareBridge-PZMRiieI.js} +1 -1
- package/dist/assets/{MobileSurface-BJsCql1z.js → MobileSurface-BLYcR0tO.js} +1 -1
- package/dist/assets/{MultiRunWindow-DFsj73LO.js → MultiRunWindow-D_2mWZyv.js} +1 -1
- package/dist/assets/{OverlayScrollbar-DIh9OBfs.js → OverlayScrollbar-BgMLtMIq.js} +1 -1
- package/dist/assets/{SettingsView-Cz-_xMOe.js → SettingsView-CbDBfQp1.js} +2 -2
- package/dist/assets/{SettingsWindow-VmyjtjbE.js → SettingsWindow-Br7XLcSd.js} +1 -1
- package/dist/assets/{TerminalView-DN-UwtDW.js → TerminalView-CM5jRKlj.js} +1 -1
- package/dist/assets/{ToolOutputDialog-DbGqTBAv.js → ToolOutputDialog-D3U6aTZ4.js} +1 -1
- package/dist/assets/{appThemeRegistry-YCorxJo5.js → appThemeRegistry-CDxBJNNB.js} +2 -2
- package/dist/assets/assistant-guide-hero-BeUHQcxE.jpg +0 -0
- package/dist/assets/{context-menu-zOjeSPTX.js → context-menu-DBOMervd.js} +1 -1
- package/dist/assets/{gitApi-DL3hq5Ws.js → gitApi-BQT3QXD2.js} +1 -1
- package/dist/assets/{insertionBoundaries-BCZCQMuq.js → insertionBoundaries-9a0RuIDc.js} +1 -1
- package/dist/assets/{main-BcmXID6N.js → main-BGfX81Y9.js} +4 -4
- package/dist/assets/{main-CUchemJs.js → main-CEqSDnE2.js} +2 -2
- package/dist/assets/{miniChat-DGptMQDN.js → miniChat-CKucSAhg.js} +2 -2
- package/dist/assets/{mobile-DvdNEWzm.js → mobile-C4bTWKry.js} +2 -2
- package/dist/assets/{multirun-s3Oe9naw.js → multirun-DeNtSkgb.js} +1 -1
- package/dist/assets/{projectMeta-h3ye4Yni.js → projectMeta-BunN9pH5.js} +1 -1
- package/dist/assets/{radio-fWiAn_0K.js → radio-Bziafaje.js} +1 -1
- package/dist/assets/{renderElectronMiniChatApp-CB9AAVCJ.js → renderElectronMiniChatApp-D8-FDgWE.js} +2 -2
- package/dist/assets/renderMobileApp-CdU0aJ-e.js +23 -0
- package/dist/assets/{runtimeEndpointReset-tRFkW9mZ.js → runtimeEndpointReset-CK1GhIsm.js} +1 -1
- package/dist/assets/{sortable-tabs-strip-D02IHEb3.js → sortable-tabs-strip-pWlBorwQ.js} +1 -1
- package/dist/assets/{src-BcdldUpo.css → src-8kQFmtjw.css} +1 -1
- package/dist/assets/{useAppFontEffects-CRzCncy9.js → useAppFontEffects-IEUQDvE8.js} +2 -2
- package/dist/assets/{useDesktopWindowControlsLayout-BQ51qCr5.js → useDesktopWindowControlsLayout-MlqJX89k.js} +1 -1
- package/dist/assets/{useEffectiveDirectory-BrViRGhP.js → useEffectiveDirectory-GbhkdO6m.js} +1 -1
- package/dist/assets/{useMobileNavigationStore-BnUHaNQn.js → useMobileNavigationStore-DQHF_ETu.js} +1 -1
- package/dist/assets/{useSessionAutoCleanup-BvNCS3X9.js → useSessionAutoCleanup-BuU_S_Sh.js} +1 -1
- package/dist/assets/{useWorkerHighlightedLines-Cd2I3Kzz.js → useWorkerHighlightedLines-Ca6OgNHF.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/renderMobileApp-1Q3wMOr4.js +0 -23
package/dist/assets/{useMobileNavigationStore-BnUHaNQn.js → useMobileNavigationStore-DQHF_ETu.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
|
`),Pp=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Fp=e=>{let t=e?.metadata;return Pp(t)?t:{}},Ip=e=>{let t=e.openchamber;return Pp(t)?t:{}},Lp=e=>{let t=Ip(Fp(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Rp=e=>{let t=Ip(Fp(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},zp=e=>Ip(Fp(e)).kind===`review`&&!!Rp(e),Bp=(e,t)=>{let n=Ip(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Vp=(e,t)=>{let n=Ip(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},Hp=(e,t)=>{let n=Ip(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},Up=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})})),Wp=(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},Gp=(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},Kp=(e,t,n,r)=>{if(!n)return r;let i=Wp(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},qp=`GitHub issue context (JSON)`,Jp=`GitHub pull request context (JSON)`,Yp=e=>!e||typeof e!=`object`?!1:!!e.synthetic,Xp=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>Yp(e)),Zp=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!Yp(e)),n=e=>{if(!Yp(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(qp)||n.startsWith(Jp)};return t&&e.some(e=>Yp(e))?e.filter(e=>!Yp(e)||n(e)):e},Qp=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},$p=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,em=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},tm=e=>e.replace(/\\/g,`/`),nm=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,rm=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}`}`),tm(n)}catch{return null}},im=(e,t)=>{let n=nm(tm(e)),r=nm(tm(t));if(!r||!n)return null;let i=/^[A-Za-z]:/.test(n)?n[0].toLowerCase()+n.slice(1):n,a=/^[A-Za-z]:/.test(r)?r[0].toLowerCase()+r.slice(1):r;return i===a?``:i.startsWith(`${a}/`)?i.slice(a.length+1):null},am=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),om=(e,t)=>{let n=tm(e),r=nm(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=im(n,t);if(r!==null){let t=nm(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return am(a)},sm=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},cm=(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},lm=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},um=async(e,t={})=>{let n=t.createID??fe,r=t.directory??t.root??null,i=e.filter(e=>!Yp(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($p).join(`
|
|
460
460
|
`),l=[];for(let e of o){let t=lm(e);t&&l.push(t)}for(let e of[...l].reverse())cm(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=cm(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:`)?rm(t):null;if(o){let e=om(o,r),t=null;for(let n of e){let e=cm(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=em(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 sm(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(Qp(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}},dm=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 sm(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(Qp(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}},fm=e=>e?JSON.parse(JSON.stringify(e)):null,pm=e=>e?{...e}:{},mm=(e,t=Dr.getState())=>{let n=t.getDraft?.(e)??null,r=pm(t.draftAttachmentViews?.[R(e)]);return{record:fm(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},hm=async e=>{let t=e.input??Dr.getState(),n=mm(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}},gm=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}}},_m=async e=>{let t=e.input??Dr.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?gm({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},vm=(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},ym=e=>e?.status===`committed`&&e.current===!0,bm=new Map,xm=async(e,t)=>{let n=R(e),r=bm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);bm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),bm.get(n)===o&&bm.delete(n)}},Sm=(e,t)=>({key:e,addLocal:async n=>{await xm(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await xm(e,async()=>{let r=t(),i=vm(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 xm(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 xm(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:ym(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await xm(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await xm(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await xm(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Cm=4e4,wm=0,Tm=null;function Em(e=Date.now()){wm=e}function Dm(e){return Tm=e,()=>{Tm===e&&(Tm=null)}}function Om(e){Tm?.(e)}function km(e=Date.now(),t=Cm){return wm<=0?!1:e-wm>=t}var Am=3e4,jm=200,Mm=new Map;function Nm(e,t,n){return`${n?.transport??r()}\n${n?.generation??s()}\n${e.trim()}\n${t}`}function Pm(e,t,n){if(!e||!t)return!1;let r=Mm.get(Nm(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Am}function Fm(e,t,n){if(!e||!t)return;let r=Nm(e,t,n);for(Mm.has(r)&&Mm.delete(r);Mm.size>=jm;){let e=Mm.keys().next().value;if(typeof e!=`string`)break;Mm.delete(e)}Mm.set(r,n?.now??Date.now())}var Im=768,Lm=()=>{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},Rm=()=>{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<=Im&&Lm()?`mobile`:`desktop`},zm=()=>Rm()===`mobile`,Bm=3,Vm=2,Hm=4,Um=4,Wm=100,Gm=30;function Km(){return l()?`relay`:`local`}function qm(e=Km()){return e===`relay`?Vm:Bm}function Jm(e=Km()){return e===`relay`?Um:Hm}function Ym(e){return qm(Qm(e))}function Xm(){return Wm}function Zm(){return Gm}function Qm(e){return e===`relay`||e===`local`?e:Km()}var $m=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function eh(){return{pages:[],pageParams:[]}}function th(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 nh(e){return{pages:Object.freeze(e.pages.map(th)),pageParams:Object.freeze([...e.pageParams])}}function rh(e,t,n=$m){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 th({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function ih(e){if(!e||e.pages.length===0)return tl;let t=e.pages[0],n=e.pages.reduce((e,t)=>e+t.turnCount,0);return t.complete?{kind:`exhausted`,loadedTurns:n}:typeof t.cursor==`string`&&t.cursor.length>0?{kind:`has-more`,cursor:t.cursor,loadedTurns:n}:{kind:`unknown`,loadedTurns:n}}function ah(e,t){let n={},r={},i=[],a=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder){if(a.has(e))continue;let n=t.messagesByID[e];if(!n)continue;a.add(e),i.push(n);let o=t.partsByMessageID[e];o&&(r[e]=[...o])}n[t]=i;let o=ih(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function oh(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function sh(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 th({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:oh(t)}})}function ch(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 nh({pages:[sh(`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=sh(`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(uh(i,o,s,a)),_.push(e.pageParams[r]??null)}return nh({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?uh(t,r===`reconcile-page`?lh(i,p):[...i,...p],s,a):uh(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]=th({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return nh({pages:m,pageParams:[...e.pageParams]})}function lh(e,t){let n=e.slice();for(let e of t){let t=rc(e),r=n.length;for(let e=0;e<n.length;e+=1)if(nc(t,rc(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function uh(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&&dh(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||ph(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:th({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:oh(t)}})}function dh(e,t){return e===t||e.id===t.id&&e===t}function fh(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 ph(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!fh(e[n],t[n]))return!1;return!0}function mh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function hh(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 gh(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=ch(e??eh(),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&&ph(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 nh({pages:e.pages.map((t,n)=>uh(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function _h(e,t){let n=ah(e,t),r=ih(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 vh(e,t,n,r){if(!Dl(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=_h(e,t),o=Fs(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=hh(n),c=new Set;return s&&c.add(s),{data:gh(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function yh(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 bh(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 xh(e){return e?e.map(e=>e.id).filter(e=>typeof e==`string`):[]}function Sh(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=_h(e,t),o=!1,s=0,c,l=new Set,u=yh(e),d=bh(e),f=xh(i.message[t]);for(let e of n){if(!Dl(e.type))continue;o=!0;let n=Fs(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=hh(e),m=xh(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&&ph(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&&dh(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:gh(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function Ch(e,t,n,r,i){let a=e&&e.pages.length>0?e:nh({pages:[sh(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=ah(a,t),s=o.message[t]?[...o.message[t]]:[];s.findIndex(e=>e.id===n.id)<0&&s.push(n);let c={...o.part,[n.id]:mh(r)};return{data:nh({pages:a.pages.map((e,t)=>t===a.pages.length-1?uh(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]?uh(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 wh(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:nh({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 uh(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Th(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=ah(e,t),i=Yc({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:ih(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=nh({pages:[sh(`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:ih(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=nh({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?uh(t,lh(r,l),o,a):uh(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:ih(u)}}}function Eh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=ul(ah(e,t),t,{ok:!0,records:n.page.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:n.page.cursor,complete:n.page.complete,turnCount:n.page.turnCount,requestedTurnLimit:n.page.requestedTurnLimit},{purpose:n.purpose,skipPartTypes:n.skipPartTypes,optimistic:n.optimistic?n.optimistic.map(e=>({message:e.message,parts:[...e.parts]})):void 0,capturedRevision:n.capturedLiveRevision,liveRevision:n.liveRevision});return i.applied?{data:ch(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 vh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Sh(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Ch(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 wh(e,n.messageID,t)}case`durable-seed`:return Th(e,t,n);case`reset`:return n.page?Eh(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 Dh(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 Oh(e,t,n,r=`materialize`){return Eh(e,n,{type:`http-page`,purpose:r,page:Dh(t),liveRevision:t.sync.liveRevision}).data}function kh(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return nh(t);if(t.pages.length===e.pages.length){let r=Nh(e,t);if(r===e)return e;if(Mh(e,t)||jh(e,t))return r;let i=t.pages[t.pages.length-1];return Oh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return Eh(e,n,{type:`http-page`,purpose:`prepend`,page:Dh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Oh(e,r,n)??nh(t)}return nh(t)}function Ah(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function jh(e,t){let n=Ah(e),r=Ah(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=Ph(e,``),a=Ph(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Mh(e,t){let n=Ah(e);if(n.size===0)return!1;let r=Ah(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=Ph(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||nc(rc(t),rc(n))>0)return!1}return!0}function Nh(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,th(t))});return!n&&e.pageParams.length===t.pageParams.length?e:nh({pages:r,pageParams:[...t.pageParams]})}function Ph(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:ih(e),liveRevision:a}}var Fh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Ih=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Lh=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Rh=e=>e.trim(),zh=e=>e?.trim()||`tail`,Bh=new Set([502,503,504]),Vh=[`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 Hh(e){if(!e||e instanceof Fh||e instanceof Ih)return!1;if(e instanceof Lh)return e.status>=400&&e.status<500?!1:Bh.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(Bh.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(Bh.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:Vh.some(e=>n.includes(e))}function Uh(e,t){return e>=2?!1:Hh(t)}var Wh=(e,t=r(),n=s())=>[t,n,`sessionMessages`,`page`,Rh(e.directory),e.sessionID,e.limit,zh(e.before)],Gh=(e,t=r(),n=s())=>[t,n,`session-transcript`,Rh(e.directory),e.sessionID];function Kh(e){if(!e||typeof e!=`object`)throw new Ih(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Ih(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Ih(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Ih(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Ih(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Ih(`session message page: cursor must be string when set`);return e}var qh=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}:{}})},Jh=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw new Fh},Yh=(e,t,n=r(),i={},a=(i.getGeneration??s)())=>{let o=Rh(e.directory),c=e.sessionID,l=e.limit,u=e.before?.trim()||void 0;return{queryKey:Wh({directory:o,sessionID:c,limit:l,before:u},n,a),queryFn:async({signal:e})=>{Jh(n,a,i);let r=await t({directory:o,sessionID:c,limit:l,before:u,signal:e});return Jh(n,a,i),qh(Kh(r))},staleTime:1/0,gcTime:3e5,retry:Uh,retryDelay:e=>Math.min(500*2**e,4e3)}},Xh=(e,t,n=L,i=r(),a={},o=(a.getGeneration??s)())=>n.fetchQuery(Yh(e,t,i,a,o));function Zh(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 Qh(e){return qh({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function $h(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function eg(e){let t=Rh(e.directory),n=e.sessionID,i=e.transport??r(),a=e.probe??{},o=e.generation??(a.getGeneration??s)(),c=e.initialLimit??qm(),l=e.historyLimit??Jm(),u=e.client??L,d=Gh({directory:t,sessionID:n},i,o),f=async t=>Qh(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:d,queryFn:async e=>{Jh(i,o,a);let r=e.pageParam?.trim()||void 0,s=r?l:c,d=r?`prepend`:`initial`,p=await Xh({directory:t,sessionID:n,limit:s,before:r},f,u,i,a,o);Jh(i,o,a);let m=Zh(p);return rh(m,d===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:$h,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:Uh,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>kh(e,t,n)}}function tg(e){let t=e.client??L,n=eg({...e,client:t}),r=new Qe(t,{...n,structuralSharing:(t,n)=>kh(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 nh(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return nh(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:nh(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return nh(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:nh(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function ng(e,t,n,r){let i=e.getQueryData(t),a=Eh(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 rg(e,t=L,n=r(),i=s()){return t.getQueryData(Gh(e,n,i))}function ig(){return v()||zm()}function ag(){return v()?4:zm()?12:40}var og=1048576,sg=4*og,cg=12*og,lg=40*og;function ug(){return v()?sg:zm()?cg:lg}var dg=e=>e.trim();function fg(e){return{transport:e.transport,generation:e.generation,directory:dg(e.directory),sessionID:e.sessionID}}function pg(e){let t=fg(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function mg(e){return`${e.transport}\n${e.generation}\n${dg(e.directory)}`}var hg={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function gg(e,t,n){return[t,n,hg.taskRoot,hg.reconcileTaskKind,dg(e.directory),e.sessionID,e.checkpoint]}function _g(e,t,n){return[t,n,hg.checkpoint,dg(e.directory),e.sessionID]}function vg(e){let t=fg(e);return[{queryKey:Gh({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,hg.transportPageRoot,hg.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,hg.taskRoot,hg.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,hg.taskRoot,hg.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:_g({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function yg(){let e=new Map;return{retain(t){let n=fg(t),r=pg(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(pg(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(pg(t))?.count??0},clear(){e.clear()}}}function bg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var xg=3e4;function Sg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function Cg(e){return!Array.isArray(e)||e.length<5||e[2]!==hg.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 wg(e){let t=e.client,n=e.activeRegistry??yg(),r=e.counters??bg(),i=e.getLimit??ag,a=e.now??Date.now,o=e.minResidencyMs??xg,s=new Map,c=e=>{let t=pg(fg(e));s.set(t,a())},l=e=>{let t=pg(fg(e)),n=s.get(t);return n!==void 0&&a()-n<o},u=e=>{let r=fg(e);if(n.isRetained(r))return!0;let i=Gh({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:dg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=Cg(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:Sg(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(pg(fg(e)));for(let t of vg(e))f(t)},m=(e,t)=>{r.purgeGeneration+=1;let n=[[e,t,hg.canonical],[e,t,hg.transportPageRoot,hg.transportPageKind],[e,t,hg.taskRoot],[e,t,hg.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=>pg(fg(e)))),o=d({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=mg(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=pg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(pg(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 Tg=3e4,Eg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function Dg(e,t=Tg){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 Og=e=>e?e.toLowerCase().includes(`application/json`):!1,kg=e=>e?e.toLowerCase().includes(`text/html`):!1;function Ag(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 jg(e){let t=e.turns??Jm(),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:Tg;return Dg((async()=>{let a=await F(n,{method:`GET`,query:r,signal:Eg(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(kg(o))throw Error(`session turn page: unexpected HTML response`);Og(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Ag(s,t)})(),i)}async function Mg(e){let t=e.purpose===`prepend`&&e.before?Jm():qm();return jg({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var Ng=3e4,Pg=2,Fg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),Ig=e=>e?e.toLowerCase().includes(`text/html`):!1,Lg=e=>new Promise(t=>{setTimeout(t,e)});function Rg(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Ih(`session transcript reconcile: ${t} must be string or null`);return e}function zg(e){if(!e||typeof e!=`object`)throw new Ih(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Ih(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Ih(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Ih(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Ih(`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 Ih(`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 Ih(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=Rg(t.capturedHeadMessageID,`capturedHeadMessageID`),r=Rg(t.latestHeadMessageID,`latestHeadMessageID`),i=Rg(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Ih(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Ih(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Ih(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Ih(`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 Ih(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Ih(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Ih(`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 Ih(`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 Bg(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 Ih(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function Vg(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),Dg((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:Fg(e.signal,n)})}catch(e){throw e instanceof Fh||e instanceof Ih||e instanceof Lh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new Lh(t.status,`session transcript reconcile failed (${t.status})`);if(Ig(t.headers.get(`content-type`)))throw new Ih(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Ih(`session transcript reconcile: malformed JSON`)}return zg(a)})(),n)}async function Hg(e){let t=Bg(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:Ng,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):Pg,i=e.sleep??Lg,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await Vg(e,t,n)}catch(t){if(t instanceof Fh||t instanceof Ih||t instanceof Lh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!Hh(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var Ug=`GitHub issue context (JSON)`,Wg=`GitHub pull request context (JSON)`,Gg=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,Kg=(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}},qg=e=>{let t=Kg(e,Ug);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!Gg(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=Kg(e,Wg);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!Gg(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},Jg=(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`))},Yg=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),Xg=e=>e.trim()===`/compact`,Zg=(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`&&(Yg(t)||Xg(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 Jg(t,n)||r.startsWith(Ug)||r.startsWith(Wg)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=qg(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},Qg=e=>e?.length?Zg(e).length>0:!1,$g=`oc_asst_session_divider:`,e_=[],t_=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),n_=(e,t=0)=>({info:{id:`${$g}${e}`,role:`system`,time:{created:t}},parts:[]}),r_=e=>e.slice().reverse().flatMap(e=>e.entries),i_=(e,t,n=e_)=>{if(!e.length)return e_;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(n_(n.sessionID,Number(n.info.time?.created??0))),r.push({info:n.info,parts:n.parts,sourceSessionID:n.sessionID,sourceDirectory:n.directory}),i=!0,a=n.sessionID);return r.length===0?e_:l_(n,r)?n:r},a_=(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},o_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=a_(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 Qg(e.parts)?e:Qg(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}:{}}},s_=(e,t,n,r=e_)=>{if(!t)return n.length>0?Array.from(n):e_;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:o_(e,t?.message),order:t?.order??a++})}if(i.size===0)return e_;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 l_(r,o)?r:o},c_=(e,t)=>{if(!t_(e)||!t_(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},l_=(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||c_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},u_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),d_=e=>e.startsWith($g);function f_(e,t){if(!e?.id||d_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(u_(t,`subtask`)||u_(t,`compaction`)||t.every(e=>Yp(e))):!1}function p_(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(f_(r,i))return n}return null}function m_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function h_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:p_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:m_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function g_(e,t){return{...e,...t}}function __(e,t){let n=_g({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 v_(e,t){let n=_g({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function y_(e,t){let n=_g({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function b_(e){return e.slim===!0}var x_=/bearer|token|authorization|password|secret|cookie/i,S_=new Set([`message.part.delta`]);function C_(e){return typeof e==`string`&&e.includes(`-`)}var w_=`openchamber.client-diagnostics.enabled`;function T_(e){return e===`true`||e!==`false`&&null}function E_(e){return e.preference===!0||e.preference!==!1&&C_(e.version)}function D_(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function O_(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function k_(e){if(e&&typeof e==`object`&&`status`in e){let t=e.status;if(typeof t==`number`&&Number.isFinite(t)&&t>=100&&t<=599)return t}let t=(e instanceof Error?e.message:typeof e==`string`?e:``).match(/\((\d{3})\)/);if(!t)return;let n=Number(t[1]);return n>=100&&n<=599?n:void 0}function A_(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return x_.test(t)?`redacted-error`:t}function j_(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)b_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function M_(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function N_(e){let t=0;for(let n of e.messageOrder)q_(e.messagesByID[n])===!0&&(t+=1);return t}function P_(e){let t=e.transcript?j_(e.transcript.partsByMessageID):void 0;return{at:(e.now??Date.now)(),feat:`transcript`,kind:e.kind,sessionID:e.sessionID,...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.source?{source:e.source}:{},...e.durationMs===void 0?{}:{durationMs:e.durationMs},...e.request?{requestStatus:e.request.status}:{},...e.hydration?{hydrationPhase:e.hydration.phase,p0Satisfied:e.hydration.p0Satisfied}:{},...e.transcript?{messageCount:e.transcript.messageOrder.length,lastMessageIDs:M_(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:N_(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...A_(e.error??e.request?.error)?{error:A_(e.error??e.request?.error)}:{},...k_(e.error)===void 0?{}:{httpStatus:k_(e.error)}}}function F_(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 I_(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 L_(e){return typeof e==`string`&&S_.has(e)}function R_(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return L_(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>L_(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function z_(e){if(e.type===`http-page`)return e.purpose}function B_(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function V_(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 H_(e){return e.__openchamberOptimistic===!0}function U_(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 x_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function W_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function G_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var K_=e=>typeof e==`string`&&e.trim().length>0;function q_(e){if(!e||W_(e)!==`assistant`)return;let t=e,n=!K_(t.mode)&&!K_(t.agent),r=!K_(t.modelID)||!K_(t.providerID);return n||r}function J_(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function Y_(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)b_(e)?r+=1:i+=1,H_(e)&&(a=!0);let o=e.messagesByID[t],s=W_(o),c=q_(o),l=s===`user`?U_(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:G_(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 X_(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:J_(e),after:J_(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 Z_(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:X_(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 Q_(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function $_(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function ev(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function tv(e){let t=ev(e.partID),n=ev(e.messageID),r=ev(e.directory),i=ev(e.childSessionID),a=ev(e.toolStatus),o=ev(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 nv(e){return[e.sessionID,ev(e.partID)??``,e.childSessionPresent?`1`:`0`,ev(e.childSessionID)??``,ev(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`,ev(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function rv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...tv(e)}}function iv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:$_(e),...tv(e)}}var av=`openchamber-transcript-diagnostics`,ov=`events`,sv=1,cv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),lv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,sv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(ov)||e.createObjectStore(ov,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),uv=(e=av)=>({async append(t,n){let r=await lv(e);try{let e=r.transaction(ov,`readwrite`).objectStore(ov);await cv(e.add(t));let i=await cv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await cv(e.delete(t))}finally{r.close()}},async read(){let t=await lv(e);try{return await cv(t.transaction(ov,`readonly`).objectStore(ov).getAll())}finally{t.close()}},async clear(){let t=await lv(e);try{await cv(t.transaction(ov,`readwrite`).objectStore(ov).clear())}finally{t.close()}}});function dv(e={}){let t=e.driver??uv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var fv=Je(`OpenChamberMedia`);function pv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function mv(){return ft()&&Ye!==void 0&&Ye.isPluginAvailable(`OpenChamberMedia`)}function hv(){return`1.18.2-beta.20`}function gv(){if(typeof localStorage>`u`)return null;try{return T_(localStorage.getItem(w_))}catch{return null}}function _v(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(w_,e?`true`:`false`)}catch{}}function vv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var yv;function bv(e=hv()){return E_({version:e,preference:gv()})}function xv(e={}){return I_({sink:vv()===`indexeddb`?(e.createIndexedDBSink??dv)():(e.createMemorySink??F_)(),isEnabled:e.isEnabled??bv})}function Sv(){return yv??=xv(),yv}function Cv(e){Sv().record(e)}function wv(e){try{return bv()?Y_(e()):void 0}catch{return}}function Tv(e){try{Cv(Z_(e))}catch{}}function Ev(e){try{Cv(rv(e))}catch{}}function Dv(e){try{Cv(iv(e))}catch{}}function Ov(e){let t=R_(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&Cv(P_({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:z_(e.command),sseType:B_(e.command),source:V_(e.command),error:e.error}))}async function kv(){let e=await Sv().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 Av(e,t=D_()){if(mv())return(await fv.saveFile({dataBase64:pv(e),mimeType:`application/json`,filename:t}))?.cancelled?`cancelled`:`saved`;if(typeof document>`u`)return`failed`;let n=new Blob([e],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);return i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),`downloaded`}async function jv(){let e=await kv(),t=D_();return{content:e,fileName:t,outcome:await Av(e,t),eventCount:O_(e)}}function Mv(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 Nv=2,Pv=6e4;function Fv(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??r)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??s)()}}function Iv(e,t){let n=(t.probe?.getTransport??r)(),i=(t.probe?.getGeneration??s)();if(n!==e.transport||i!==e.generation)throw new Fh}function Lv(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function Rv(e,t){return fg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function zv(e,t){return`${e.trim()}\n${t}`}function Bv(e){let t=e.client,n=e.repository,i=e.cacheBudget??n.getCacheBudget?.()??wg({client:t,activeRegistry:yg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??Nv)),o=e.fetchReconcile??Hg,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(zv(e,t))},y=(e,t)=>{h.delete(zv(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(zv(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(zv(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=zv(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??Fv(e).transport,generation:r.generation??Fv(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(zv(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(zv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of s)f.set(zv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(zv(t,n),{directory:t,sessionID:n});for(let e of f.values()){let i=Lv(e,a),s=n.getTranscript(i),c=h_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:r.lastEventID,capturedAt:o});v_(t,c)}let p=new Set;for(let t of u){let n=Mv({directory:t,activeScopes:S(a,t),viewedSessions:s,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(zv(e.directory,e.sessionID))}for(let e of d){let t=zv(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=wv(()=>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=wv(()=>n.getTranscript(e));i&&t&&Tv({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(Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;v_(t,g_(__(t,i)??h_({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=wv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;y_(t,i),y(i.directory,i.sessionID);try{let e=wv(()=>n.getTranscript(r));o&&e&&Tv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw v_(t,g_(__(t,i)??h_({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(Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;v_(t,g_(__(t,i)??h_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=wv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;y_(t,i),y(i.directory,i.sessionID);try{let e=wv(()=>n.getTranscript(r));o&&e&&Tv({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 v_(t,g_(__(t,i)??h_({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=Lv(r,i),d=Rv(r,i),f=gg({directory:d.directory,sessionID:d.sessionID,checkpoint:String(__(t,d)?.capturedAt??c())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:c()});try{if(Iv(i,e),a!==u||s.aborted)throw new Fh;let p=__(t,d);if(p||(p=h_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(l),lastEventID:null,capturedAt:c()}),v_(t,p)),!p.anchorMessageID){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}p=g_(p,{state:`reconciling`}),v_(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,Iv(i,e),a!==u||s.aborted)throw new Fh;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,Iv(i,e),a!==u||s.aborted)throw new Fh;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(Iv(i,e),a!==u||s.aborted)throw new Fh;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=g_(__(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),v_(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=g_(__(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),v_(t,p);continue}p=g_(__(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),v_(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 Fh||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=zv(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),A(n);return}let c=Fv(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=zv(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=Mv({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=zv(e.scope.directory,e.scope.sessionID);r.some(e=>zv(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=Fv(e,t),a=Lv({directory:r,sessionID:t.sessionID},i),s=pg(Rv({directory:r,sessionID:t.sessionID},i)),u=g.get(s);if(u&&c()-u.checkedAt<Pv||_.has(s)||d.has(zv(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(Iv(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(Iv(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=zv(i,r.sessionID);if(!h.has(a))return M(r),null;y(i,r.sessionID);let o=Fv(e,r),s=Lv({directory:i,sessionID:r.sessionID},o),c=Rv({directory:i,sessionID:r.sessionID},o),u=__(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{Iv(o,e);let r=await n.ensureInitial(s);return y_(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=Fv(e,n);return __(t,Rv({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(zv(e,t)),destroy:()=>{l=!0,x(`destroy`)}}}function Vv(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Hv(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 Uv(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 Wv(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get($s(e))??Promise.resolve(),r.get(tc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=$s(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=tc(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??ug)();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 Gv=new Map;function Kv(e,t){let n=Gv.get(e);if(n)return n;let r=t().finally(()=>{Gv.get(e)===r&&Gv.delete(e)});return Gv.set(e,r),r}var qv=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Jv(e){return Kv(qv(e),e.request)}function Yv(e,t){return`${e}\n${t}`}var Xv=new Map;function Zv(e){return Xv.get(e)}async function Qv(e){return Jv({runtimeKey:Yv(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 Xv.set(r.id,i),{info:sp(r),parts:i}}})}function $v(e,t){let n=e.info;return n.role===t||n.clientRole===t}function ey(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!$v(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 ty(e){if(e.complete){let t=e.records.some(e=>$v(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=ey(e.records);if(t.length===0){let t=e.records.some(e=>$v(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=>$v(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function ny(e){return e.trim()}function ry(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??r)(),i=e.generation??t.generation??(t.probe?.getGeneration??s)();return{directory:ny(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 iy(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:tl,liveRevision:0}}function ay(e,t){if(!e||e.pages.length===0)return iy(t);let n=Ph(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function oy(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function sy(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function cy(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=oy(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=oy(e.messagesByID[t]);a===void 0||a<=n||sy(e.partsByMessageID[t])||i.push(t)}return i}function ly(e={}){let t=e.client??L,n=e.cacheBudget??wg({client:t,activeRegistry:e.activeRegistry??yg()}),i=n.activeRegistry,a=new Map,o=new Map,c=new Map,l=new Map,u=new Map,d=e.durableStore?Wv(e.durableStore,{getProtectScopes:()=>i.listRetained().map(Vv),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=ay(w(e),t.sessionID);!bl(r)&&!v.has(n)||(y.add(n),Cv(P_({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=ry(n,e);return rg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=ry(t,e);return Gh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=ry(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=ry(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=tg({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(ry(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(ry(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=ry({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{d&&d.persistSettled(Vv(e),t,n??[])},le=(e,t,n,r)=>{if(!d||S>0||!r.applied||!r.changed)return;let i=Vv(t);if(n.type===`remove-message`){d.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(d.clearSession(i),n.page){let r=ay(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=ay(w(e),t.sessionID);for(let e of r){let n=Uv(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=ay(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??qm()};return Hv(i?.fresh?await t.fetchQuery({...Yh(c,a,n.transport,o,n.generation),staleTime:0}):await Xh(c,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)ou(`${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}),Fm(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(!ml(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 Fh||!se(t))return f.delete(r),P.getTranscript(e);throw f.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Cv(P_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:ay(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||Ql(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}),Fm(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 Fh||!se(t)||Cv(P_({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:ay(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(ry(t,e)))?!0:ih(n).kind===`unknown`},P={getTranscript(t){let n=ry(t,e),r=K(n),i=ay(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=ry(t,e),r=K(n),i=P.getTranscript(t);return te(r,wl(n.sessionID,i.boundary))},getRequestState(t){let n=ry(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=ry(t,e),r=K(n),i=P.getTranscript(t);bl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:xl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:_l(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(ry(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(ry(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??uy,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=ry(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)||pl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=ry(t,e),i=M(r,n),a=wv(()=>P.getTranscript(t)),o=e=>{try{let t=wv(e);if(!a||!t)return;Tv({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(!pl(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 Qv({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return B.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return se(r)?(P.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),pl(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=ry(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=ng(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=ng(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=ng(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=ng(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}),ng(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=ng(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=ng(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(k(r),D(r)),e.result}case`materialize-snapshots`:return dy(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=ng(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&&(Ov({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:ay(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(ry(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=ry(t,e),a=K(r);if(d&&await d.wait(Vv(r)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Vv(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)ml(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Cv(P_({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 Cv(P_({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 Cv(P_({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 Cv(P_({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:ay(w(t),r.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}f.delete(a),l||Fm(r.directory,r.sessionID,{transport:r.transport,generation:r.generation}),n.noteScopeObserved(E(t)),D(t);let u=P.getTranscript(t);return Cv(P_({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),ih(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=ry(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 Cv(P_({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 Cv(P_({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=ry(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=ry(t,e),i=wv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??qm(),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=cy(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=wv(()=>c);i&&e&&Tv({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=wv(()=>P.getTranscript(t)),i=E(t);return d&&await d.clearSession(Vv(ry(t,e))),n.destructiveReset(i,async()=>{let n=ry(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=wv(()=>s);r&&e&&Tv({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(ry(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 uy=Object.freeze([]);function dy(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=ng(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var fy=`/api/openchamber/transcript-cache`,py=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),my=e=>typeof e==`object`&&!!e&&!Array.isArray(e),hy=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},gy=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},_y=e=>{if(!my(e))throw Error(`Invalid transcript cache scope`);return{transport:hy(e.transport,`scope`),generation:gy(e.generation,`scope`),directory:hy(e.directory,`scope`),sessionID:hy(e.sessionID,`scope`)}},vy=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},yy=e=>{if(!my(e)||!my(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!my(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:_y(e.scope),messageID:hy(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>vy(e,`part completeness`)),completeness:vy(e.completeness,`completeness`),contentHash:hy(e.contentHash,`content hash`),byteSize:gy(e.byteSize,`byte size`),lastAccessedAt:gy(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:gy(e.sortKey.created,`sort key`),messageID:hy(e.sortKey.messageID,`sort key`)}}},by=(e,t)=>{if(!my(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(yy);return{scope:e.scope===void 0?mc(t):_y(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},xy=e=>{if(!my(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:yy(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!py.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:yy(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Sy=e=>{if(!my(e))throw Error(`Invalid transcript cache evict`);return{evicted:gy(e.evicted,`evict`),freedBytes:gy(e.freedBytes,`evict`),remainingBytes:gy(e.remainingBytes,`evict`)}},Cy=e=>({scope:mc(e),records:[],byteSize:0}),wy=(e,t)=>my(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Ty=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`)}},Ey=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 Ty(r)};let i=await Ty(r).catch(()=>void 0);throw Error(wy(i,`Transcript cache request failed (${r.status})`))},Dy=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Oy=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function ky(e={}){let t=e.fetch??F;return{async readSession(e){let n=await Ey(t,`${fy}/session`,{method:`GET`,query:Dy(e)});return n.kind===`disabled`||n.kind===`not-found`?Cy(e):by(n.payload,e)},async readMessage(e,n){let r=await Ey(t,`${fy}/message`,{method:`GET`,query:{...Dy(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!my(r.payload))throw Error(`Invalid transcript cache record`);return yy(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Ey(t,`${fy}/message`,Oy(`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 xy(i.payload)},async removeMessage(e,n){let r=await Ey(t,`${fy}/message`,Oy(`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 Ey(t,`${fy}/session`,Oy(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Ey(t,`${fy}/generation`,Oy(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Ey(t,`${fy}/evict`,Oy(`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 Sy(r.payload)},async clearAll(){let e=await Ey(t,`${fy}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Ay=`openchamber-transcript-durable`,jy=1,My=`transcriptIndex`,Ny=`transcriptContent`,Py=class extends Error{code;constructor(e){super(e),this.code=e}},Fy=e=>({id:ec(e.scope,e.messageID),scope:mc(e.scope),scopeKey:$s(e.scope),generationKey:tc(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}),Iy=(e,t)=>({scope:mc(e.scope),messageID:e.messageID,info:pc(t.info),parts:pc(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}}),Ly=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Iy(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Ry=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},zy=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),By=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Py(`database-unavailable`));return}let r=indexedDB.open(e,jy),i=!1,a=()=>{i||(i=!0,n(new Py(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(My)){let t=e.createObjectStore(My,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Ny)||e.createObjectStore(Ny,{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}),Vy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Py(`database-unavailable`)),r.onblocked=()=>void 0}),Hy=(e=Ay)=>({transaction:async t=>{let n=await By(e),r=n.transaction([My,Ny],`readwrite`),i=r.objectStore(My),a=r.objectStore(Ny),o=e=>zy(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:()=>Vy(e)});function Uy(e,t={}){let n=hc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Fy(t)),gc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope($s(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Iy(t,r);a.lastAccessedAt=n(),await e.putIndex(Fy(a)),i.push(a)}return _c(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Ly(e,ec(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=vc({info:i,incomingCompleteness:oc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=pc(a.slice()),c=oc(s),l=await lc(i,s),u=ec(t,i.id);return e.transaction(async e=>{let a=await Ly(e,u),o=vc({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:gc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:mc(t),messageID:i.id,info:pc(i),parts:s,partCompleteness:s.map(ac),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:rc(i)};return await e.putIndex(Fy(d)),await e.putContent({id:u,info:pc(i),parts:s}),{status:`written`,record:gc(d)}})},async removeMessage(t,n){await e.transaction(e=>Ry(e,ec(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope($s(t));for(let t of n)await Ry(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(tc(t));for(let t of n)await Ry(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($s)),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?nc(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Ry(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 Wy(e={}){return Uy(e.driver??Hy(e.databaseName),e)}function Gy(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??ft;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Ky=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function qy(e={}){let t,n,r=()=>(t??=(e.createHttpStore??ky)(),t),i=()=>(n??=(e.createIndexedDBStore??Wy)(),n),a=()=>Gy(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=>Ky([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Jy(e={}){await qy(e).clearAll()}var Yy=(e,t)=>e<t?-1:+(e>t);function Xy(e){return e.filter(e=>!!e?.id).sort((e,t)=>Yy(e.id,t.id))}async function Zy(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,i=await Mg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=i.records.map(e=>({info:sp(e.info),parts:Xy(e.parts??[])}));if(!e.before&&!i.complete&&ey(a).length>0){let t=B.getScopedSdkClient(e.directory);a=(await ty({records:a,complete:i.complete,requestMessage:async n=>{let i=await Qv({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:Xy(i.parts??[])}}})).records.map(e=>({info:e.info,parts:Xy(e.parts??[])}))}return{records:a,cursor:i.cursor??void 0,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:e.limit}}function Qy(e){let t=e.client??L,n=yg(),i=wg({client:t,activeRegistry:n}),a=ly({client:t,cacheBudget:i,activeRegistry:n,probe:{getTransport:r,getGeneration:s},fetcher:e=>Zy({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:qm(),historyLimit:Jm(),durableStore:e.durableStore??qy()}),o=Bv({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 mu(a),Ou(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),Ou(null),a.destroy(),hu()}}}function $y(e){return gu().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 eb=new Map;function tb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function nb(e,t,n,i={}){let a=i.getTransportIdentity??r,o=i.getGeneration??s,c=a(),l=o(),u=tb(e,t,c,l),d=()=>a()===c&&o()===l,f=eb.get(u)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=f.catch(()=>void 0).then(()=>m);eb.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(),eb.get(u)===h&&eb.delete(u)}}var rb=new Set,ib=new Set,ab=new Set,ob=new Set,sb={onDeleteRequest(e){return rb.add(e),()=>{rb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||rb.forEach(t=>t(e))},onCreateRequest(e){return ib.add(e),()=>{ib.delete(e)}},requestCreate(e){let t=e??{};ib.forEach(e=>e(t))},onDirectoryRequest(e){return ab.add(e),()=>{ab.delete(e)}},requestDirectoryDialog(){ab.forEach(e=>e())},onGitRefreshHint(e){return ob.add(e),()=>{ob.delete(e)}},requestGitRefresh(e){e.directory.trim()&&ob.forEach(t=>t(e))}},cb=e=>e.trim(),lb=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session status runtime changed`)},ub=(e,t={})=>{let n=cb(e),i=t.transport??r(),a=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,c=t.runtimeProbe??{},l=(c.getGeneration??s)();return nt({queryKey:N.sessionStatus.snapshot(n,i),queryFn:async({signal:e})=>{lb(i,l,c);let t=o(),r=await a(n,e);if(lb(i,l,c),r===null)throw Error(`session status snapshot unavailable`);return{snapshot:r,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},db=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(ub(e,r))},fb=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session active runtime changed`)},pb=(e={})=>{let t=e.transport??r(),n=e.loadActive??(e=>B.getSessionActive(e)),i=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??s)();return nt({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{fb(t,o,a);let r=i(),s=await n(e);return fb(t,o,a),{result:s,requestedAt:r}},staleTime:0,gcTime:3e5,retry:!1})},mb=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(pb(n))},hb;function gb(e){hb=e}function _b(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 vb(e,t){return JSON.stringify(e)===JSON.stringify(t)}function yb(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function bb(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 xb(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=_b(a[e]);if(t){s[e]=n&&yb(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function Sb(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=_b(t[o]);if(n&&n.type!==`idle`){vb(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 Cb(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function wb(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await db(e,{client:o,loadSnapshot:r.loadSnapshot,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),f=r.skipActive?Promise.resolve(null):(async()=>{try{return await mb({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}=xb(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=Cb(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Sb(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??hb;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 Tb({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:wb(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var Eb=50,Db=e=>{let t=Object.keys(e);if(t.length<=Eb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Eb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},Ob=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:Db(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`})),kb=new Set([`todowrite`,`todoread`]),Ab=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),jb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Mb=(e,t)=>{Ob.getState().setSessionTodos(e,t)},Nb=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Pb=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Fb=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},Ib=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Fb(n);e&&t.push(e)}return t},Lb=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Ib(t);if(t&&typeof t==`object`)return Ib(t.todos)}catch{}return[]},Rb=e=>{if(!kb.has(Nb(e)))return[];let t=Pb(e);if(t&&Ab.has(t))return[];let n=e.state,r=Ib(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Ib(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Ib(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?Lb(i):[]};function zb(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=Rb(r[e]);if(t.length>0)return t}}return[]}function Bb(e){if(!e.sessionID||e.isStale?.()||jb(e.store.getState().todo,e.sessionID))return!1;let t=zb(e.transcript);return t.length===0||e.isStale?.()||jb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Vb(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(U(e.directory,e.sessionID));return t?Bb({sessionID:e.sessionID,store:e.store,transcript:t,persist:Mb,isStale:e.isStale}):!1}var Hb=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>VS,COMBINED_SEND_PRESENCE_GRACE_MS:()=>BS,SESSION_DELETE_UNDO_MS:()=>dS,abortBusySessionForMessageEdit:()=>tC,abortCurrentOperation:()=>KS,archiveSession:()=>xS,beginOptimisticSend:()=>jS,cancelScheduledSessionDeletes:()=>bS,classifySendFailure:()=>Fx,combinedSendConfirmationOptions:()=>HS,commitMessageEdit:()=>rC,createSession:()=>aS,deleteSession:()=>vS,dirStoreForDirectory:()=>bx,dismissOpenQuestionsForSession:()=>XS,ensureSentUserMessagePresence:()=>GS,fetchMessagesForSession:()=>lC,fetchRecentSendConfirmationRecords:()=>RS,forkSession:()=>sC,getSendFailureKind:()=>Nx,getSessionLastAssistantModel:()=>Ex,isQuestionRequestNotFoundError:()=>nS,materializeConfirmedSendRecords:()=>zS,mirrorSessionIntoLiveStores:()=>Ox,optimisticInsertUserMessage:()=>IS,optimisticSend:()=>FS,patchSessionMetadata:()=>oS,refetchSessionMessages:()=>aC,rejectQuestion:()=>YS,releaseUnconfirmedQueueSend:()=>_x,requestSessionSmartTitle:()=>wS,resolveForkMessageId:()=>tx,respondToPermission:()=>qS,respondToQuestion:()=>JS,revertToMessage:()=>ZS,rollbackOptimisticSend:()=>NS,scheduleSessionDeletes:()=>yS,setActionRefs:()=>hx,setOptimisticRefs:()=>gx,settleOptimisticSend:()=>PS,shareSession:()=>TS,shouldSuppressForkCopyEvent:()=>rx,stageMessageEdit:()=>$S,trackForkCopySessionCreated:()=>Zb,unarchiveSession:()=>SS,unrevertSession:()=>oC,unshareSession:()=>ES,updateSessionTitle:()=>CS,waitForConnectionOrThrow:()=>zx,waitForSessionIdleForMessageEdit:()=>nC}),Ub=2,Wb=150,Gb=new Set([`patch`,`step-start`,`step-finish`]),Kb=3,qb=150,Jb=null,Yb=new Map,Xb=3e4;function Zb(e,t){let n=t?.id;!Jb||Jb.runtimeKey!==i()||Jb.directory!==e||!n||t?.title!==Jb.expectedTargetTitle||n===Jb.sourceSessionID||Jb.targetSessionID||(Jb.targetSessionID=n)}function Qb(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function $b(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function ex(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function tx(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 nx(e,t){let n=Fp(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return B.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function rx(e,t,n){if(Jb&&Jb.runtimeKey===i()&&Jb.directory===e&&t&&t===Jb.targetSessionID)return!0;if(!t||!n)return!1;let r=`${i()}:${e}:${t}`,a=Yb.get(r);return a?a.expiresAt<=Date.now()?(Yb.delete(r),!1):n<=a.messageID:!1}var ix=null,ax=null,ox=()=>``,sx=new Map,cx=null,lx=null,ux=null,dx=e=>new Promise(t=>setTimeout(t,e));function fx(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 px(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${fx(e.error)}`);throw n!==void 0&&(r.status=n),r}function mx(e,t){let n=px(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function hx(e,t,n){if(ix=e,ax=t,ox=n,sx.size>0){let e=[...sx.values()];sx.clear(),queueMicrotask(()=>{for(let t of e)lC(t.sessionID,t.directory)})}}function gx(e,t,n){cx=e,lx=t,ux=n??null}function _x(e){let t=e.directory??null;lx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function vx(){if(!ix)throw Error(`SDK not initialized — is SyncProvider mounted?`);return ix}function yx(){if(!ax)throw Error(`Child stores not initialized`);let e=ox();if(!e)throw Error(`No current directory`);return ax.ensureChild(e)}function bx(e,t){if(!ax)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return ax.ensureChild(e,t)}function xx(e,t){let n=t??Gx(e);return n?{store:bx(n),directory:n}:{store:yx(),directory:kx()}}function Sx(e,t){let{store:n,directory:r}=xx(e,t??void 0),i=r??kx()??``;return{repository:H()??_u(i,n),directory:i,store:n}}function Cx(e,t){let{repository:n,directory:r,store:i}=Sx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function wx(e,t){return Uu(Cx(e,t).data)}function Tx(e,t){return Cx(e,t).data.messageOrder.length}function Ex(e){try{let t=wx(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 Dx(e,t){let n=ax;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]=pE(e,n[r]),t.setState({session:i}),!0}return!1}function Ox(e,t){t&&Dx(e,t)||Dx(e)}function kx(){return ox()||void 0}function Ax(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function jx(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 Mx=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 Nx(e){return e instanceof Mx?e.kind:null}function Px(e){let t=jx(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 Fx(e,t){return t?Px(e)||jx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var Ix=2e3,Lx=5e3,Rx=3e4;async function zx(){let e=km();e&&Om(`send_stream_stale`);let t=Date.now()+(e?Lx:Ix);for(;Date.now()<t;){if(G.getState().isConnected&&!km()||o()&&!km())return;let e=t-Date.now();if(e<=0)break;if(await G.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!km())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw Ax()}function Bx(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Om(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},Rx);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function Vx(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Hx(e){e&&Y.getState().upsertSession(e)}function Ux(e,t){let n=ap(t),r=[...e.getState().session],i=ss.search(r,n.id,e=>e.id);if(i.found){let t=pE(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 Wx(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=Vx(e);if(i)return Ux(t,i);try{return Ux(t,await B.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function Gx(e){return Kx(e)||$.getState().getDirectoryForSession(e)||kx()}function Kx(e){let t=ax;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 qx(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):vx()}function Jx(e){Dr.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&&Dr.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var Yx=()=>new Map(Array.from(Md(),([e,t])=>[e,t.title||e]));function Xx(e){return!(e.type!==`file`||Yp(e))}function Zx(e){return Xx(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function Qx(e){return e.some(Zx)}async function $x(e){let t=[...e.parts];if(!Qx(t))return t;let n=s(),r=e.directory??``;try{await wu(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}=Sx(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],Qx(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function eS(e){if(Qx(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await um(e.parts,{sessionTitles:Yx(),directory:e.directory}),n=Dr.getState(),r=n.getDraft(e.key);return{payload:t,commit:await hm({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function tS(e,t,n){let r=ax;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 nS(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 rS(e,t){let n=ax;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 iS(e,t,n){let r=tS(e,t,n);return r?B.getScopedSdkClient(r):qx(t)}async function aS(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??kx()),a=i.directory??null;return a&&wd(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 oS(e,t,n){let r=t??Gx(e),i=n(Fp(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&wd(a.id,o),a}async function sS(e,t){let n;try{n=await B.getSession(e,t??Gx(e))}catch{return}if(!zp(n))return;let r=Rp(n);if(r)try{await oS(r,t??Gx(r),t=>Hp(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 cS(e,t){if(!ax)return[];let n=[],r=new Set,i=[];if(t){let e=ax.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of ax.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 lS(e){if(ax)for(let t of e){let e=ax.children.get(t.directory);e&&e.setState({session:t.sessions})}}function uS(e){$.getState().setWorktreeMetadata(e,null)}var dS=1e4,fS=new Map,pS=0;function mS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function hS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),lS(e.listSnapshots),Hx(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function gS(e,t){let n=t??Gx(e);Y.getState().markSessionsPendingDeletion([e]);let r=cS(e,n),i=Vx(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 _S(e,t){try{if(await sS(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return cS(e,t),Y.getState().removeSessions([e]),uS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(cS(e,t),Y.getState().removeSessions([e]),uS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function vS(e,t){let n=gS(e);return await _S(e,n.directory)?!0:(hS(n),!1)}function yS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>gS(e)),i=`session-delete-${Date.now()}-${pS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=fS.get(i);if(!e)return;fS.delete(i);let t=[],n=[];for(let r of e.entries)await _S(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),hS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return fS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function bS(e){if(!e)return!1;let t=fS.get(e);if(!t)return!1;clearTimeout(t.timer),fS.delete(e);for(let e of[...t.entries].reverse())hS(e);return!0}async function xS(e){let t=Gx(e),n=cS(e,t),r=Vx(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await sS(e,t);let n=await B.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),lS(n),Hx(r),!1}}async function SS(e){let t=Gx(e),n=Vx(e),r=n?mS(n):null;if(r&&(Y.getState().upsertSession(r),t&&ax)){let e=ax.children.get(t);e&&Ux(e,r)}try{let n=await B.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=mS(n);if(Y.getState().upsertSession(r),t&&ax){let e=ax.children.get(t);e?Ux(e,r):Ox(r,t)}else Ox(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&cS(e,t)),!1}}async function CS(e,t){let n=Gx(e),r=Vx(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Jf(r):0,c=await B.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),Ox(c,n)}async function wS(e){let t=Gx(e),n=Vx(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await B.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),Ox(s,t)}async function TS(e){let t=Gx(e),n=ap(mx(await vx().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),Dx(n,t),n}async function ES(e){let t=Gx(e),n=ap(mx(await vx().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),Dx(n,t),n}function DS(e){let t=ax,n=e??ox();if(!t||!n)return{store:e?bx(e):yx(),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 OS(){return{identity:r(),generation:s()}}function kS(e,t){return e.isCurrent()&&r()===t.identity&&s()===t.generation}function AS(e,t){if(!kS(e,t))throw Error(`Send target changed before transport dispatch`)}function jS(e){if(!cx||!lx)throw new Mx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??kx()??null,n=DS(t),r=OS();AS(n,r),e.beforeOptimisticInsert?.(),AS(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),IS({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 Mx?e:new Mx(Nx(e)??Fx(e,!1),e)}}function MS(e){if(!kS(e.capture,e.transport)||!lx)return;lx({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 NS(e){MS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function PS(e){if(!cx||!lx)throw new Mx(`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 zx(),AS(n,r),s=!0,await Bx(e.send(i)),!kS(n,r))throw new Mx(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Nx(c)??Fx(c,s),u=c instanceof Mx?c:new Mx(l,c,i);if(!kS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await RS(a,i,o):null;if(d&&kS(n,r)){zS(n.store,a,i,d,{directory:o??void 0}),ux?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||MS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function FS(e){await PS({ticket:e.ticket??jS({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 IS(e){if(!cx)return!1;let t=e.directory??kx(),n=t?bx(t):yx(),i=t??kx()??``;if(US(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=wv(()=>Cx(e.sessionId,t).data);cx({sessionID:e.sessionId,directory:t,message:c,parts:a});let u=wv(()=>Cx(e.sessionId,t).data);try{l&&u&&Tv({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 LS(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function RS(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??Ub,c=r?.retryDelayMs??Wb;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!LS(r?.isCurrent)||a>0&&(await dx(c),i?.signal.aborted||!LS(r?.isCurrent)))return null;try{let a=await vx().session.messages({sessionID:e,directory:n??void 0,limit:Zm(),...i?{signal:i.signal}:{}});if(!LS(r?.isCurrent))return null;let o=(px(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 zS(e,t,n,r,i){if(!r.length)return;let a=i?.directory??Gx(t)??ox(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:sp(e.info),parts:e.parts??[]})),skipPartTypes:Gb,merge:i?.gapFillOnly===!0?qs:Ys({purpose:`recovery`})};yu(o,s)||_u(a,e).apply(o,s)}var BS=2e3,VS={attempts:12,retryDelayMs:500},HS={presenceGraceMs:BS,recovery:{...VS}};function US(e,t,n,r){let i=r??Gx(t)??ox()??``,a=H()??_u(i,e),o=U(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function WS(e,t,n,r){let i=r?.directory??Gx(t)??ox()??``;if(US(e,t,n,i))return Promise.resolve(!0);if(!LS(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()??_u(i,e),f=U(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!LS(r?.isCurrent)){l(!1);return}US(e,t,n,i)&&l(!0)}),US(e,t,n,i)&&l(!0)})}async function GS(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await WS(t,n,r,{timeoutMs:e.graceMs??HS.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!LS(a))return`cancelled`;let o=await RS(n,r,i,{...HS.recovery,isCurrent:a});return o?LS(a)?(zS(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:LS(a)?`missing`:`cancelled`}async function KS(e){let{store:t,directory:n}=xx(e),i=n?{state:`bound`,transportIdentity:r(),directory:n,sessionID:e}:null,a=i?$.getState().beginQueueAbortBlock(i):null;try{if(mx(await vx().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){i&&a&&$.getState().clearQueueAbortBlock(i,a),Xe(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>VB);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function qS(e,t,n){await zx();let r=tS(`permission`,e,t)||Gx(e)||kx();if(mx(await iS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function JS(e,t,n){await zx();let r=tS(`question`,e,t)||Gx(e)||kx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(mx(await iS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw nS(n)&&rS(e,t),n}}async function YS(e,t){await zx();let n=tS(`question`,e,t)||Gx(e)||kx();try{if(mx(await iS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw nS(n)&&rS(e,t),n}}async function XS(e){if(!e)return!1;let t=ax;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Wp(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)rS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await YS(e,t)}catch(e){if(nS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function ZS(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 nb(e,i??(()=>{try{return xx(e,i).directory}catch{return i}})(),async({isCurrent:n})=>{let{store:o,directory:c}=xx(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 vx().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=wx(e,c).find(e=>e.id===t),d=wx(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}=Sx(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 $x({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await um(m,{sessionTitles:Yx(),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=Dr.getState(),r=await hm({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 _m({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await B.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await _m({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&&sb.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 _m({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await _m({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function QS(e,t,n,i){let a=i??Gx(t)??ox(),o=U(a,t),c=wv(()=>Cx(t,a).data),l=[...vu(t)];l.some(e=>e.directory===a&&e.sessionID===t)||l.push(o);let u=!1;for(let e of l)yu(e,{type:`remove-message`,messageID:n})!=null&&(u=!0);u||_u(a,e).apply(o,{type:`remove-message`,messageID:n});let d=wv(()=>Cx(t,a).data);try{c&&d&&Tv({trigger:`user-delete`,sessionID:t,directory:a,transport:r(),generation:s(),before:c,after:d})}catch{}}async function $S(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=xx(e,s).directory}else{c=xx(e,s).directory;let{data:n}=Cx(e,c),r=Uu(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 eS({key:l,parts:await $x({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 _m({key:l,restoredRevision:d,previous:f})).status})}}function eC(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 tC(e,t){let n=t?.directory,{store:r,directory:i}=xx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await vx().session.abort({sessionID:e,directory:i})}catch{}}async function nC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=xx(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 rC(e,t,n){let i=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:c}=xx(e,i),l=wv(()=>Cx(e,i).data);try{await tC(e,{directory:i}),await nC(e,{directory:i});let n=new Set((await iC(e,i)).map(e=>e.id)),r=eC(t,wx(e,i),n,{preserveMessageId:a});for(let t of[...r].reverse())await B.deleteSessionMessage(e,t.id,c),QS(o,e,t.id,c)}finally{try{let t=wv(()=>Cx(e,i).data);l&&t&&Tv({trigger:`user-edit`,sessionID:e,directory:c,transport:r(),generation:s(),before:l,after:t})}catch{}}}async function iC(e,t){let{directory:n}=xx(e,t);return(px(await vx().session.messages({sessionID:e,directory:n,limit:Xm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>sp(e.info))}async function aC(e,t){let{store:n,directory:i}=xx(e,t),a=wv(()=>Cx(e,t).data),o=(px(await vx().session.messages({sessionID:e,directory:i,limit:Xm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=wv(()=>Cx(e,t).data);a&&n&&Tv({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let c=o.map(e=>({info:sp(e.info),parts:e.parts??[]})),l=U(i??ox(),e);yu(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Gb})||_u(i??ox(),n).apply(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Gb});try{let n=wv(()=>Cx(e,t).data);a&&n&&Tv({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 oC(e,t){return nb(e,t??(()=>{try{return xx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=xx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Tx(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await vx().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await vx().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=mx(c,`session.unrevert`),u=[...r.getState().session],d=u.findIndex(t=>t.id===e);d>=0&&(u[d]=l,r.setState({session:u}));for(let r=0;r<Kb;r+=1){if(r>0&&(await dx(qb),!n())||(await aC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Tx(e,i)>o)return}if(Tx(e,i)<=o){let n=i??ox(),a=H()??_u(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await aC(e,t)}})}async function sC(e,t,n,r){let a=i(),{store:o,directory:s}=xx(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await Wx(e,o,s);wd(e,s);let l=o.getState(),u=l.session_status[e],d=wx(e,s);u?.type,d.length;let f=tx(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await aC(e),l=o.getState(),u=l.session_status[e],d=wx(e,s),f=tx(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:Tx(e,s)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=Cx(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`&&!Yp(e)).map(e=>e.text||e.content||``).join(`
|
|
461
|
+
`).trim();if(n)return x_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function W_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function G_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var K_=e=>typeof e==`string`&&e.trim().length>0;function q_(e){if(!e||W_(e)!==`assistant`)return;let t=e,n=!K_(t.mode)&&!K_(t.agent),r=!K_(t.modelID)||!K_(t.providerID);return n||r}function J_(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function Y_(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)b_(e)?r+=1:i+=1,H_(e)&&(a=!0);let o=e.messagesByID[t],s=W_(o),c=q_(o),l=s===`user`?U_(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:G_(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 X_(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:J_(e),after:J_(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 Z_(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:X_(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 Q_(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function $_(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function ev(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function tv(e){let t=ev(e.partID),n=ev(e.messageID),r=ev(e.directory),i=ev(e.childSessionID),a=ev(e.toolStatus),o=ev(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 nv(e){return[e.sessionID,ev(e.partID)??``,e.childSessionPresent?`1`:`0`,ev(e.childSessionID)??``,ev(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`,ev(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function rv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...tv(e)}}function iv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:$_(e),...tv(e)}}var av=`openchamber-transcript-diagnostics`,ov=`events`,sv=1,cv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),lv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,sv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(ov)||e.createObjectStore(ov,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),uv=(e=av)=>({async append(t,n){let r=await lv(e);try{let e=r.transaction(ov,`readwrite`).objectStore(ov);await cv(e.add(t));let i=await cv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await cv(e.delete(t))}finally{r.close()}},async read(){let t=await lv(e);try{return await cv(t.transaction(ov,`readonly`).objectStore(ov).getAll())}finally{t.close()}},async clear(){let t=await lv(e);try{await cv(t.transaction(ov,`readwrite`).objectStore(ov).clear())}finally{t.close()}}});function dv(e={}){let t=e.driver??uv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var fv=Je(`OpenChamberMedia`);function pv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function mv(){return ft()&&Ye!==void 0&&Ye.isPluginAvailable(`OpenChamberMedia`)}function hv(){return`1.18.2-beta.21`}function gv(){if(typeof localStorage>`u`)return null;try{return T_(localStorage.getItem(w_))}catch{return null}}function _v(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(w_,e?`true`:`false`)}catch{}}function vv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var yv;function bv(e=hv()){return E_({version:e,preference:gv()})}function xv(e={}){return I_({sink:vv()===`indexeddb`?(e.createIndexedDBSink??dv)():(e.createMemorySink??F_)(),isEnabled:e.isEnabled??bv})}function Sv(){return yv??=xv(),yv}function Cv(e){Sv().record(e)}function wv(e){try{return bv()?Y_(e()):void 0}catch{return}}function Tv(e){try{Cv(Z_(e))}catch{}}function Ev(e){try{Cv(rv(e))}catch{}}function Dv(e){try{Cv(iv(e))}catch{}}function Ov(e){let t=R_(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&Cv(P_({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:z_(e.command),sseType:B_(e.command),source:V_(e.command),error:e.error}))}async function kv(){let e=await Sv().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 Av(e,t=D_()){if(mv())return(await fv.saveFile({dataBase64:pv(e),mimeType:`application/json`,filename:t}))?.cancelled?`cancelled`:`saved`;if(typeof document>`u`)return`failed`;let n=new Blob([e],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);return i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),`downloaded`}async function jv(){let e=await kv(),t=D_();return{content:e,fileName:t,outcome:await Av(e,t),eventCount:O_(e)}}function Mv(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 Nv=2,Pv=6e4;function Fv(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??r)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??s)()}}function Iv(e,t){let n=(t.probe?.getTransport??r)(),i=(t.probe?.getGeneration??s)();if(n!==e.transport||i!==e.generation)throw new Fh}function Lv(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function Rv(e,t){return fg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function zv(e,t){return`${e.trim()}\n${t}`}function Bv(e){let t=e.client,n=e.repository,i=e.cacheBudget??n.getCacheBudget?.()??wg({client:t,activeRegistry:yg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??Nv)),o=e.fetchReconcile??Hg,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(zv(e,t))},y=(e,t)=>{h.delete(zv(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(zv(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(zv(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=zv(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??Fv(e).transport,generation:r.generation??Fv(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(zv(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(zv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of s)f.set(zv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(zv(t,n),{directory:t,sessionID:n});for(let e of f.values()){let i=Lv(e,a),s=n.getTranscript(i),c=h_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:r.lastEventID,capturedAt:o});v_(t,c)}let p=new Set;for(let t of u){let n=Mv({directory:t,activeScopes:S(a,t),viewedSessions:s,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(zv(e.directory,e.sessionID))}for(let e of d){let t=zv(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=wv(()=>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=wv(()=>n.getTranscript(e));i&&t&&Tv({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(Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;v_(t,g_(__(t,i)??h_({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=wv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;y_(t,i),y(i.directory,i.sessionID);try{let e=wv(()=>n.getTranscript(r));o&&e&&Tv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw v_(t,g_(__(t,i)??h_({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(Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;v_(t,g_(__(t,i)??h_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=wv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;y_(t,i),y(i.directory,i.sessionID);try{let e=wv(()=>n.getTranscript(r));o&&e&&Tv({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 v_(t,g_(__(t,i)??h_({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=Lv(r,i),d=Rv(r,i),f=gg({directory:d.directory,sessionID:d.sessionID,checkpoint:String(__(t,d)?.capturedAt??c())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:c()});try{if(Iv(i,e),a!==u||s.aborted)throw new Fh;let p=__(t,d);if(p||(p=h_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(l),lastEventID:null,capturedAt:c()}),v_(t,p)),!p.anchorMessageID){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}p=g_(p,{state:`reconciling`}),v_(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,Iv(i,e),a!==u||s.aborted)throw new Fh;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,Iv(i,e),a!==u||s.aborted)throw new Fh;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(Iv(i,e),a!==u||s.aborted)throw new Fh;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=g_(__(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),v_(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=g_(__(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),v_(t,p);continue}p=g_(__(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),v_(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 Fh||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=zv(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),A(n);return}let c=Fv(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=zv(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=Mv({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=zv(e.scope.directory,e.scope.sessionID);r.some(e=>zv(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=Fv(e,t),a=Lv({directory:r,sessionID:t.sessionID},i),s=pg(Rv({directory:r,sessionID:t.sessionID},i)),u=g.get(s);if(u&&c()-u.checkedAt<Pv||_.has(s)||d.has(zv(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(Iv(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(Iv(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=zv(i,r.sessionID);if(!h.has(a))return M(r),null;y(i,r.sessionID);let o=Fv(e,r),s=Lv({directory:i,sessionID:r.sessionID},o),c=Rv({directory:i,sessionID:r.sessionID},o),u=__(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{Iv(o,e);let r=await n.ensureInitial(s);return y_(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=Fv(e,n);return __(t,Rv({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(zv(e,t)),destroy:()=>{l=!0,x(`destroy`)}}}function Vv(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Hv(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 Uv(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 Wv(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get($s(e))??Promise.resolve(),r.get(tc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=$s(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=tc(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??ug)();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 Gv=new Map;function Kv(e,t){let n=Gv.get(e);if(n)return n;let r=t().finally(()=>{Gv.get(e)===r&&Gv.delete(e)});return Gv.set(e,r),r}var qv=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Jv(e){return Kv(qv(e),e.request)}function Yv(e,t){return`${e}\n${t}`}var Xv=new Map;function Zv(e){return Xv.get(e)}async function Qv(e){return Jv({runtimeKey:Yv(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 Xv.set(r.id,i),{info:sp(r),parts:i}}})}function $v(e,t){let n=e.info;return n.role===t||n.clientRole===t}function ey(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!$v(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 ty(e){if(e.complete){let t=e.records.some(e=>$v(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=ey(e.records);if(t.length===0){let t=e.records.some(e=>$v(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=>$v(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function ny(e){return e.trim()}function ry(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??r)(),i=e.generation??t.generation??(t.probe?.getGeneration??s)();return{directory:ny(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 iy(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:tl,liveRevision:0}}function ay(e,t){if(!e||e.pages.length===0)return iy(t);let n=Ph(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function oy(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function sy(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function cy(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=oy(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=oy(e.messagesByID[t]);a===void 0||a<=n||sy(e.partsByMessageID[t])||i.push(t)}return i}function ly(e={}){let t=e.client??L,n=e.cacheBudget??wg({client:t,activeRegistry:e.activeRegistry??yg()}),i=n.activeRegistry,a=new Map,o=new Map,c=new Map,l=new Map,u=new Map,d=e.durableStore?Wv(e.durableStore,{getProtectScopes:()=>i.listRetained().map(Vv),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=ay(w(e),t.sessionID);!bl(r)&&!v.has(n)||(y.add(n),Cv(P_({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=ry(n,e);return rg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=ry(t,e);return Gh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=ry(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=ry(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=tg({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(ry(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(ry(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=ry({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{d&&d.persistSettled(Vv(e),t,n??[])},le=(e,t,n,r)=>{if(!d||S>0||!r.applied||!r.changed)return;let i=Vv(t);if(n.type===`remove-message`){d.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(d.clearSession(i),n.page){let r=ay(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=ay(w(e),t.sessionID);for(let e of r){let n=Uv(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=ay(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??qm()};return Hv(i?.fresh?await t.fetchQuery({...Yh(c,a,n.transport,o,n.generation),staleTime:0}):await Xh(c,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)ou(`${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}),Fm(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(!ml(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 Fh||!se(t))return f.delete(r),P.getTranscript(e);throw f.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Cv(P_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:ay(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||Ql(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}),Fm(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 Fh||!se(t)||Cv(P_({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:ay(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(ry(t,e)))?!0:ih(n).kind===`unknown`},P={getTranscript(t){let n=ry(t,e),r=K(n),i=ay(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=ry(t,e),r=K(n),i=P.getTranscript(t);return te(r,wl(n.sessionID,i.boundary))},getRequestState(t){let n=ry(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=ry(t,e),r=K(n),i=P.getTranscript(t);bl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:xl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:_l(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(ry(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(ry(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??uy,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=ry(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)||pl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=ry(t,e),i=M(r,n),a=wv(()=>P.getTranscript(t)),o=e=>{try{let t=wv(e);if(!a||!t)return;Tv({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(!pl(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 Qv({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return B.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return se(r)?(P.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),pl(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=ry(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=ng(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=ng(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=ng(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=ng(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}),ng(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=ng(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=ng(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(k(r),D(r)),e.result}case`materialize-snapshots`:return dy(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=ng(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&&(Ov({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:ay(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(ry(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=ry(t,e),a=K(r);if(d&&await d.wait(Vv(r)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Vv(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)ml(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Cv(P_({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 Cv(P_({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 Cv(P_({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 Cv(P_({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:ay(w(t),r.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}f.delete(a),l||Fm(r.directory,r.sessionID,{transport:r.transport,generation:r.generation}),n.noteScopeObserved(E(t)),D(t);let u=P.getTranscript(t);return Cv(P_({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),ih(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=ry(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 Cv(P_({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 Cv(P_({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=ry(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=ry(t,e),i=wv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??qm(),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=cy(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=wv(()=>c);i&&e&&Tv({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=wv(()=>P.getTranscript(t)),i=E(t);return d&&await d.clearSession(Vv(ry(t,e))),n.destructiveReset(i,async()=>{let n=ry(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=wv(()=>s);r&&e&&Tv({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(ry(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 uy=Object.freeze([]);function dy(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=ng(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var fy=`/api/openchamber/transcript-cache`,py=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),my=e=>typeof e==`object`&&!!e&&!Array.isArray(e),hy=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},gy=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},_y=e=>{if(!my(e))throw Error(`Invalid transcript cache scope`);return{transport:hy(e.transport,`scope`),generation:gy(e.generation,`scope`),directory:hy(e.directory,`scope`),sessionID:hy(e.sessionID,`scope`)}},vy=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},yy=e=>{if(!my(e)||!my(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!my(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:_y(e.scope),messageID:hy(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>vy(e,`part completeness`)),completeness:vy(e.completeness,`completeness`),contentHash:hy(e.contentHash,`content hash`),byteSize:gy(e.byteSize,`byte size`),lastAccessedAt:gy(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:gy(e.sortKey.created,`sort key`),messageID:hy(e.sortKey.messageID,`sort key`)}}},by=(e,t)=>{if(!my(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(yy);return{scope:e.scope===void 0?mc(t):_y(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},xy=e=>{if(!my(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:yy(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!py.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:yy(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Sy=e=>{if(!my(e))throw Error(`Invalid transcript cache evict`);return{evicted:gy(e.evicted,`evict`),freedBytes:gy(e.freedBytes,`evict`),remainingBytes:gy(e.remainingBytes,`evict`)}},Cy=e=>({scope:mc(e),records:[],byteSize:0}),wy=(e,t)=>my(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Ty=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`)}},Ey=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 Ty(r)};let i=await Ty(r).catch(()=>void 0);throw Error(wy(i,`Transcript cache request failed (${r.status})`))},Dy=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Oy=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function ky(e={}){let t=e.fetch??F;return{async readSession(e){let n=await Ey(t,`${fy}/session`,{method:`GET`,query:Dy(e)});return n.kind===`disabled`||n.kind===`not-found`?Cy(e):by(n.payload,e)},async readMessage(e,n){let r=await Ey(t,`${fy}/message`,{method:`GET`,query:{...Dy(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!my(r.payload))throw Error(`Invalid transcript cache record`);return yy(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Ey(t,`${fy}/message`,Oy(`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 xy(i.payload)},async removeMessage(e,n){let r=await Ey(t,`${fy}/message`,Oy(`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 Ey(t,`${fy}/session`,Oy(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Ey(t,`${fy}/generation`,Oy(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Ey(t,`${fy}/evict`,Oy(`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 Sy(r.payload)},async clearAll(){let e=await Ey(t,`${fy}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Ay=`openchamber-transcript-durable`,jy=1,My=`transcriptIndex`,Ny=`transcriptContent`,Py=class extends Error{code;constructor(e){super(e),this.code=e}},Fy=e=>({id:ec(e.scope,e.messageID),scope:mc(e.scope),scopeKey:$s(e.scope),generationKey:tc(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}),Iy=(e,t)=>({scope:mc(e.scope),messageID:e.messageID,info:pc(t.info),parts:pc(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}}),Ly=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Iy(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Ry=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},zy=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),By=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Py(`database-unavailable`));return}let r=indexedDB.open(e,jy),i=!1,a=()=>{i||(i=!0,n(new Py(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(My)){let t=e.createObjectStore(My,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Ny)||e.createObjectStore(Ny,{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}),Vy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Py(`database-unavailable`)),r.onblocked=()=>void 0}),Hy=(e=Ay)=>({transaction:async t=>{let n=await By(e),r=n.transaction([My,Ny],`readwrite`),i=r.objectStore(My),a=r.objectStore(Ny),o=e=>zy(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:()=>Vy(e)});function Uy(e,t={}){let n=hc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Fy(t)),gc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope($s(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Iy(t,r);a.lastAccessedAt=n(),await e.putIndex(Fy(a)),i.push(a)}return _c(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Ly(e,ec(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=vc({info:i,incomingCompleteness:oc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=pc(a.slice()),c=oc(s),l=await lc(i,s),u=ec(t,i.id);return e.transaction(async e=>{let a=await Ly(e,u),o=vc({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:gc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:mc(t),messageID:i.id,info:pc(i),parts:s,partCompleteness:s.map(ac),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:rc(i)};return await e.putIndex(Fy(d)),await e.putContent({id:u,info:pc(i),parts:s}),{status:`written`,record:gc(d)}})},async removeMessage(t,n){await e.transaction(e=>Ry(e,ec(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope($s(t));for(let t of n)await Ry(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(tc(t));for(let t of n)await Ry(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($s)),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?nc(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Ry(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 Wy(e={}){return Uy(e.driver??Hy(e.databaseName),e)}function Gy(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??ft;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Ky=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function qy(e={}){let t,n,r=()=>(t??=(e.createHttpStore??ky)(),t),i=()=>(n??=(e.createIndexedDBStore??Wy)(),n),a=()=>Gy(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=>Ky([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Jy(e={}){await qy(e).clearAll()}var Yy=(e,t)=>e<t?-1:+(e>t);function Xy(e){return e.filter(e=>!!e?.id).sort((e,t)=>Yy(e.id,t.id))}async function Zy(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,i=await Mg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=i.records.map(e=>({info:sp(e.info),parts:Xy(e.parts??[])}));if(!e.before&&!i.complete&&ey(a).length>0){let t=B.getScopedSdkClient(e.directory);a=(await ty({records:a,complete:i.complete,requestMessage:async n=>{let i=await Qv({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:Xy(i.parts??[])}}})).records.map(e=>({info:e.info,parts:Xy(e.parts??[])}))}return{records:a,cursor:i.cursor??void 0,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:e.limit}}function Qy(e){let t=e.client??L,n=yg(),i=wg({client:t,activeRegistry:n}),a=ly({client:t,cacheBudget:i,activeRegistry:n,probe:{getTransport:r,getGeneration:s},fetcher:e=>Zy({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:qm(),historyLimit:Jm(),durableStore:e.durableStore??qy()}),o=Bv({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 mu(a),Ou(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),Ou(null),a.destroy(),hu()}}}function $y(e){return gu().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 eb=new Map;function tb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function nb(e,t,n,i={}){let a=i.getTransportIdentity??r,o=i.getGeneration??s,c=a(),l=o(),u=tb(e,t,c,l),d=()=>a()===c&&o()===l,f=eb.get(u)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=f.catch(()=>void 0).then(()=>m);eb.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(),eb.get(u)===h&&eb.delete(u)}}var rb=new Set,ib=new Set,ab=new Set,ob=new Set,sb={onDeleteRequest(e){return rb.add(e),()=>{rb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||rb.forEach(t=>t(e))},onCreateRequest(e){return ib.add(e),()=>{ib.delete(e)}},requestCreate(e){let t=e??{};ib.forEach(e=>e(t))},onDirectoryRequest(e){return ab.add(e),()=>{ab.delete(e)}},requestDirectoryDialog(){ab.forEach(e=>e())},onGitRefreshHint(e){return ob.add(e),()=>{ob.delete(e)}},requestGitRefresh(e){e.directory.trim()&&ob.forEach(t=>t(e))}},cb=e=>e.trim(),lb=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session status runtime changed`)},ub=(e,t={})=>{let n=cb(e),i=t.transport??r(),a=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,c=t.runtimeProbe??{},l=(c.getGeneration??s)();return nt({queryKey:N.sessionStatus.snapshot(n,i),queryFn:async({signal:e})=>{lb(i,l,c);let t=o(),r=await a(n,e);if(lb(i,l,c),r===null)throw Error(`session status snapshot unavailable`);return{snapshot:r,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},db=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(ub(e,r))},fb=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session active runtime changed`)},pb=(e={})=>{let t=e.transport??r(),n=e.loadActive??(e=>B.getSessionActive(e)),i=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??s)();return nt({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{fb(t,o,a);let r=i(),s=await n(e);return fb(t,o,a),{result:s,requestedAt:r}},staleTime:0,gcTime:3e5,retry:!1})},mb=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(pb(n))},hb;function gb(e){hb=e}function _b(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 vb(e,t){return JSON.stringify(e)===JSON.stringify(t)}function yb(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function bb(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 xb(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=_b(a[e]);if(t){s[e]=n&&yb(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function Sb(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=_b(t[o]);if(n&&n.type!==`idle`){vb(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 Cb(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function wb(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await db(e,{client:o,loadSnapshot:r.loadSnapshot,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),f=r.skipActive?Promise.resolve(null):(async()=>{try{return await mb({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}=xb(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=Cb(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Sb(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??hb;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 Tb({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:wb(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var Eb=50,Db=e=>{let t=Object.keys(e);if(t.length<=Eb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Eb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},Ob=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:Db(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`})),kb=new Set([`todowrite`,`todoread`]),Ab=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),jb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Mb=(e,t)=>{Ob.getState().setSessionTodos(e,t)},Nb=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Pb=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Fb=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},Ib=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Fb(n);e&&t.push(e)}return t},Lb=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Ib(t);if(t&&typeof t==`object`)return Ib(t.todos)}catch{}return[]},Rb=e=>{if(!kb.has(Nb(e)))return[];let t=Pb(e);if(t&&Ab.has(t))return[];let n=e.state,r=Ib(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Ib(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Ib(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?Lb(i):[]};function zb(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=Rb(r[e]);if(t.length>0)return t}}return[]}function Bb(e){if(!e.sessionID||e.isStale?.()||jb(e.store.getState().todo,e.sessionID))return!1;let t=zb(e.transcript);return t.length===0||e.isStale?.()||jb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Vb(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(U(e.directory,e.sessionID));return t?Bb({sessionID:e.sessionID,store:e.store,transcript:t,persist:Mb,isStale:e.isStale}):!1}var Hb=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>VS,COMBINED_SEND_PRESENCE_GRACE_MS:()=>BS,SESSION_DELETE_UNDO_MS:()=>dS,abortBusySessionForMessageEdit:()=>tC,abortCurrentOperation:()=>KS,archiveSession:()=>xS,beginOptimisticSend:()=>jS,cancelScheduledSessionDeletes:()=>bS,classifySendFailure:()=>Fx,combinedSendConfirmationOptions:()=>HS,commitMessageEdit:()=>rC,createSession:()=>aS,deleteSession:()=>vS,dirStoreForDirectory:()=>bx,dismissOpenQuestionsForSession:()=>XS,ensureSentUserMessagePresence:()=>GS,fetchMessagesForSession:()=>lC,fetchRecentSendConfirmationRecords:()=>RS,forkSession:()=>sC,getSendFailureKind:()=>Nx,getSessionLastAssistantModel:()=>Ex,isQuestionRequestNotFoundError:()=>nS,materializeConfirmedSendRecords:()=>zS,mirrorSessionIntoLiveStores:()=>Ox,optimisticInsertUserMessage:()=>IS,optimisticSend:()=>FS,patchSessionMetadata:()=>oS,refetchSessionMessages:()=>aC,rejectQuestion:()=>YS,releaseUnconfirmedQueueSend:()=>_x,requestSessionSmartTitle:()=>wS,resolveForkMessageId:()=>tx,respondToPermission:()=>qS,respondToQuestion:()=>JS,revertToMessage:()=>ZS,rollbackOptimisticSend:()=>NS,scheduleSessionDeletes:()=>yS,setActionRefs:()=>hx,setOptimisticRefs:()=>gx,settleOptimisticSend:()=>PS,shareSession:()=>TS,shouldSuppressForkCopyEvent:()=>rx,stageMessageEdit:()=>$S,trackForkCopySessionCreated:()=>Zb,unarchiveSession:()=>SS,unrevertSession:()=>oC,unshareSession:()=>ES,updateSessionTitle:()=>CS,waitForConnectionOrThrow:()=>zx,waitForSessionIdleForMessageEdit:()=>nC}),Ub=2,Wb=150,Gb=new Set([`patch`,`step-start`,`step-finish`]),Kb=3,qb=150,Jb=null,Yb=new Map,Xb=3e4;function Zb(e,t){let n=t?.id;!Jb||Jb.runtimeKey!==i()||Jb.directory!==e||!n||t?.title!==Jb.expectedTargetTitle||n===Jb.sourceSessionID||Jb.targetSessionID||(Jb.targetSessionID=n)}function Qb(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function $b(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function ex(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function tx(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 nx(e,t){let n=Fp(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return B.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function rx(e,t,n){if(Jb&&Jb.runtimeKey===i()&&Jb.directory===e&&t&&t===Jb.targetSessionID)return!0;if(!t||!n)return!1;let r=`${i()}:${e}:${t}`,a=Yb.get(r);return a?a.expiresAt<=Date.now()?(Yb.delete(r),!1):n<=a.messageID:!1}var ix=null,ax=null,ox=()=>``,sx=new Map,cx=null,lx=null,ux=null,dx=e=>new Promise(t=>setTimeout(t,e));function fx(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 px(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${fx(e.error)}`);throw n!==void 0&&(r.status=n),r}function mx(e,t){let n=px(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function hx(e,t,n){if(ix=e,ax=t,ox=n,sx.size>0){let e=[...sx.values()];sx.clear(),queueMicrotask(()=>{for(let t of e)lC(t.sessionID,t.directory)})}}function gx(e,t,n){cx=e,lx=t,ux=n??null}function _x(e){let t=e.directory??null;lx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function vx(){if(!ix)throw Error(`SDK not initialized — is SyncProvider mounted?`);return ix}function yx(){if(!ax)throw Error(`Child stores not initialized`);let e=ox();if(!e)throw Error(`No current directory`);return ax.ensureChild(e)}function bx(e,t){if(!ax)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return ax.ensureChild(e,t)}function xx(e,t){let n=t??Gx(e);return n?{store:bx(n),directory:n}:{store:yx(),directory:kx()}}function Sx(e,t){let{store:n,directory:r}=xx(e,t??void 0),i=r??kx()??``;return{repository:H()??_u(i,n),directory:i,store:n}}function Cx(e,t){let{repository:n,directory:r,store:i}=Sx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function wx(e,t){return Uu(Cx(e,t).data)}function Tx(e,t){return Cx(e,t).data.messageOrder.length}function Ex(e){try{let t=wx(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 Dx(e,t){let n=ax;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]=pE(e,n[r]),t.setState({session:i}),!0}return!1}function Ox(e,t){t&&Dx(e,t)||Dx(e)}function kx(){return ox()||void 0}function Ax(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function jx(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 Mx=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 Nx(e){return e instanceof Mx?e.kind:null}function Px(e){let t=jx(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 Fx(e,t){return t?Px(e)||jx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var Ix=2e3,Lx=5e3,Rx=3e4;async function zx(){let e=km();e&&Om(`send_stream_stale`);let t=Date.now()+(e?Lx:Ix);for(;Date.now()<t;){if(G.getState().isConnected&&!km()||o()&&!km())return;let e=t-Date.now();if(e<=0)break;if(await G.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!km())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw Ax()}function Bx(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Om(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},Rx);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function Vx(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Hx(e){e&&Y.getState().upsertSession(e)}function Ux(e,t){let n=ap(t),r=[...e.getState().session],i=ss.search(r,n.id,e=>e.id);if(i.found){let t=pE(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 Wx(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=Vx(e);if(i)return Ux(t,i);try{return Ux(t,await B.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function Gx(e){return Kx(e)||$.getState().getDirectoryForSession(e)||kx()}function Kx(e){let t=ax;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 qx(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):vx()}function Jx(e){Dr.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&&Dr.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var Yx=()=>new Map(Array.from(Md(),([e,t])=>[e,t.title||e]));function Xx(e){return!(e.type!==`file`||Yp(e))}function Zx(e){return Xx(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function Qx(e){return e.some(Zx)}async function $x(e){let t=[...e.parts];if(!Qx(t))return t;let n=s(),r=e.directory??``;try{await wu(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}=Sx(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],Qx(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function eS(e){if(Qx(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await um(e.parts,{sessionTitles:Yx(),directory:e.directory}),n=Dr.getState(),r=n.getDraft(e.key);return{payload:t,commit:await hm({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function tS(e,t,n){let r=ax;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 nS(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 rS(e,t){let n=ax;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 iS(e,t,n){let r=tS(e,t,n);return r?B.getScopedSdkClient(r):qx(t)}async function aS(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??kx()),a=i.directory??null;return a&&wd(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 oS(e,t,n){let r=t??Gx(e),i=n(Fp(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&wd(a.id,o),a}async function sS(e,t){let n;try{n=await B.getSession(e,t??Gx(e))}catch{return}if(!zp(n))return;let r=Rp(n);if(r)try{await oS(r,t??Gx(r),t=>Hp(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 cS(e,t){if(!ax)return[];let n=[],r=new Set,i=[];if(t){let e=ax.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of ax.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 lS(e){if(ax)for(let t of e){let e=ax.children.get(t.directory);e&&e.setState({session:t.sessions})}}function uS(e){$.getState().setWorktreeMetadata(e,null)}var dS=1e4,fS=new Map,pS=0;function mS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function hS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),lS(e.listSnapshots),Hx(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function gS(e,t){let n=t??Gx(e);Y.getState().markSessionsPendingDeletion([e]);let r=cS(e,n),i=Vx(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 _S(e,t){try{if(await sS(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return cS(e,t),Y.getState().removeSessions([e]),uS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(cS(e,t),Y.getState().removeSessions([e]),uS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function vS(e,t){let n=gS(e);return await _S(e,n.directory)?!0:(hS(n),!1)}function yS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>gS(e)),i=`session-delete-${Date.now()}-${pS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=fS.get(i);if(!e)return;fS.delete(i);let t=[],n=[];for(let r of e.entries)await _S(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),hS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return fS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function bS(e){if(!e)return!1;let t=fS.get(e);if(!t)return!1;clearTimeout(t.timer),fS.delete(e);for(let e of[...t.entries].reverse())hS(e);return!0}async function xS(e){let t=Gx(e),n=cS(e,t),r=Vx(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await sS(e,t);let n=await B.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),lS(n),Hx(r),!1}}async function SS(e){let t=Gx(e),n=Vx(e),r=n?mS(n):null;if(r&&(Y.getState().upsertSession(r),t&&ax)){let e=ax.children.get(t);e&&Ux(e,r)}try{let n=await B.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=mS(n);if(Y.getState().upsertSession(r),t&&ax){let e=ax.children.get(t);e?Ux(e,r):Ox(r,t)}else Ox(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&cS(e,t)),!1}}async function CS(e,t){let n=Gx(e),r=Vx(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Jf(r):0,c=await B.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),Ox(c,n)}async function wS(e){let t=Gx(e),n=Vx(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await B.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),Ox(s,t)}async function TS(e){let t=Gx(e),n=ap(mx(await vx().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),Dx(n,t),n}async function ES(e){let t=Gx(e),n=ap(mx(await vx().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),Dx(n,t),n}function DS(e){let t=ax,n=e??ox();if(!t||!n)return{store:e?bx(e):yx(),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 OS(){return{identity:r(),generation:s()}}function kS(e,t){return e.isCurrent()&&r()===t.identity&&s()===t.generation}function AS(e,t){if(!kS(e,t))throw Error(`Send target changed before transport dispatch`)}function jS(e){if(!cx||!lx)throw new Mx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??kx()??null,n=DS(t),r=OS();AS(n,r),e.beforeOptimisticInsert?.(),AS(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),IS({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 Mx?e:new Mx(Nx(e)??Fx(e,!1),e)}}function MS(e){if(!kS(e.capture,e.transport)||!lx)return;lx({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 NS(e){MS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function PS(e){if(!cx||!lx)throw new Mx(`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 zx(),AS(n,r),s=!0,await Bx(e.send(i)),!kS(n,r))throw new Mx(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Nx(c)??Fx(c,s),u=c instanceof Mx?c:new Mx(l,c,i);if(!kS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await RS(a,i,o):null;if(d&&kS(n,r)){zS(n.store,a,i,d,{directory:o??void 0}),ux?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||MS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function FS(e){await PS({ticket:e.ticket??jS({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 IS(e){if(!cx)return!1;let t=e.directory??kx(),n=t?bx(t):yx(),i=t??kx()??``;if(US(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=wv(()=>Cx(e.sessionId,t).data);cx({sessionID:e.sessionId,directory:t,message:c,parts:a});let u=wv(()=>Cx(e.sessionId,t).data);try{l&&u&&Tv({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 LS(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function RS(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??Ub,c=r?.retryDelayMs??Wb;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!LS(r?.isCurrent)||a>0&&(await dx(c),i?.signal.aborted||!LS(r?.isCurrent)))return null;try{let a=await vx().session.messages({sessionID:e,directory:n??void 0,limit:Zm(),...i?{signal:i.signal}:{}});if(!LS(r?.isCurrent))return null;let o=(px(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 zS(e,t,n,r,i){if(!r.length)return;let a=i?.directory??Gx(t)??ox(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:sp(e.info),parts:e.parts??[]})),skipPartTypes:Gb,merge:i?.gapFillOnly===!0?qs:Ys({purpose:`recovery`})};yu(o,s)||_u(a,e).apply(o,s)}var BS=2e3,VS={attempts:12,retryDelayMs:500},HS={presenceGraceMs:BS,recovery:{...VS}};function US(e,t,n,r){let i=r??Gx(t)??ox()??``,a=H()??_u(i,e),o=U(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function WS(e,t,n,r){let i=r?.directory??Gx(t)??ox()??``;if(US(e,t,n,i))return Promise.resolve(!0);if(!LS(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()??_u(i,e),f=U(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!LS(r?.isCurrent)){l(!1);return}US(e,t,n,i)&&l(!0)}),US(e,t,n,i)&&l(!0)})}async function GS(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await WS(t,n,r,{timeoutMs:e.graceMs??HS.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!LS(a))return`cancelled`;let o=await RS(n,r,i,{...HS.recovery,isCurrent:a});return o?LS(a)?(zS(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:LS(a)?`missing`:`cancelled`}async function KS(e){let{store:t,directory:n}=xx(e),i=n?{state:`bound`,transportIdentity:r(),directory:n,sessionID:e}:null,a=i?$.getState().beginQueueAbortBlock(i):null;try{if(mx(await vx().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){i&&a&&$.getState().clearQueueAbortBlock(i,a),Xe(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>VB);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function qS(e,t,n){await zx();let r=tS(`permission`,e,t)||Gx(e)||kx();if(mx(await iS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function JS(e,t,n){await zx();let r=tS(`question`,e,t)||Gx(e)||kx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(mx(await iS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw nS(n)&&rS(e,t),n}}async function YS(e,t){await zx();let n=tS(`question`,e,t)||Gx(e)||kx();try{if(mx(await iS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw nS(n)&&rS(e,t),n}}async function XS(e){if(!e)return!1;let t=ax;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Wp(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)rS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await YS(e,t)}catch(e){if(nS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function ZS(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 nb(e,i??(()=>{try{return xx(e,i).directory}catch{return i}})(),async({isCurrent:n})=>{let{store:o,directory:c}=xx(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 vx().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=wx(e,c).find(e=>e.id===t),d=wx(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}=Sx(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 $x({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await um(m,{sessionTitles:Yx(),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=Dr.getState(),r=await hm({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 _m({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await B.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await _m({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&&sb.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 _m({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await _m({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function QS(e,t,n,i){let a=i??Gx(t)??ox(),o=U(a,t),c=wv(()=>Cx(t,a).data),l=[...vu(t)];l.some(e=>e.directory===a&&e.sessionID===t)||l.push(o);let u=!1;for(let e of l)yu(e,{type:`remove-message`,messageID:n})!=null&&(u=!0);u||_u(a,e).apply(o,{type:`remove-message`,messageID:n});let d=wv(()=>Cx(t,a).data);try{c&&d&&Tv({trigger:`user-delete`,sessionID:t,directory:a,transport:r(),generation:s(),before:c,after:d})}catch{}}async function $S(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=xx(e,s).directory}else{c=xx(e,s).directory;let{data:n}=Cx(e,c),r=Uu(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 eS({key:l,parts:await $x({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 _m({key:l,restoredRevision:d,previous:f})).status})}}function eC(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 tC(e,t){let n=t?.directory,{store:r,directory:i}=xx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await vx().session.abort({sessionID:e,directory:i})}catch{}}async function nC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=xx(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 rC(e,t,n){let i=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:c}=xx(e,i),l=wv(()=>Cx(e,i).data);try{await tC(e,{directory:i}),await nC(e,{directory:i});let n=new Set((await iC(e,i)).map(e=>e.id)),r=eC(t,wx(e,i),n,{preserveMessageId:a});for(let t of[...r].reverse())await B.deleteSessionMessage(e,t.id,c),QS(o,e,t.id,c)}finally{try{let t=wv(()=>Cx(e,i).data);l&&t&&Tv({trigger:`user-edit`,sessionID:e,directory:c,transport:r(),generation:s(),before:l,after:t})}catch{}}}async function iC(e,t){let{directory:n}=xx(e,t);return(px(await vx().session.messages({sessionID:e,directory:n,limit:Xm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>sp(e.info))}async function aC(e,t){let{store:n,directory:i}=xx(e,t),a=wv(()=>Cx(e,t).data),o=(px(await vx().session.messages({sessionID:e,directory:i,limit:Xm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=wv(()=>Cx(e,t).data);a&&n&&Tv({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let c=o.map(e=>({info:sp(e.info),parts:e.parts??[]})),l=U(i??ox(),e);yu(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Gb})||_u(i??ox(),n).apply(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Gb});try{let n=wv(()=>Cx(e,t).data);a&&n&&Tv({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 oC(e,t){return nb(e,t??(()=>{try{return xx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=xx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Tx(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await vx().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await vx().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=mx(c,`session.unrevert`),u=[...r.getState().session],d=u.findIndex(t=>t.id===e);d>=0&&(u[d]=l,r.setState({session:u}));for(let r=0;r<Kb;r+=1){if(r>0&&(await dx(qb),!n())||(await aC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Tx(e,i)>o)return}if(Tx(e,i)<=o){let n=i??ox(),a=H()??_u(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await aC(e,t)}})}async function sC(e,t,n,r){let a=i(),{store:o,directory:s}=xx(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await Wx(e,o,s);wd(e,s);let l=o.getState(),u=l.session_status[e],d=wx(e,s);u?.type,d.length;let f=tx(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await aC(e),l=o.getState(),u=l.session_status[e],d=wx(e,s),f=tx(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:Tx(e,s)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=Cx(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`&&!Yp(e)).map(e=>e.text||e.content||``).join(`
|
|
462
462
|
`).trim();let v=g.filter(e=>e.type===`file`&&!Yp(e));Jb={operationId:t,runtimeKey:a,directory:s,sourceSessionID:e,expectedTargetTitle:Qb(c.title)},await $b(t,`copying`);let y;try{if(y=await B.forkSession(e,f,s),y.id,i()!==a)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),Jb?.operationId===t&&(Jb=null),!1;await $b(t,`opening`);try{y=await nx(y,s)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw Jb?.operationId===t&&(Jb=null),e}try{let r=[...o.getState().session],a=ss.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):yu(c,{type:`reset`}),ex(t,y.id);let u=$.getState().currentSessionId,d=u===e||u===y.id;d&&$.getState().setCurrentSession(y.id,s),await $b(t,`loading`),y.id;let f=H()??_u(s,o),p=U(s,y.id),m=f.getRequestState?.(p);(!(f.hasSession?.(p)??!1)||m?.status===`error`)&&await lC(y.id,s);let g=wx(y.id,s).at(-1)?.id;g&&Yb.set(`${i()}:${s}:${y.id}`,{messageID:g,expiresAt:Date.now()+Xb}),d&&h&&_&&Dr.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&Jx(v)}finally{Jb?.operationId===t&&(Jb=null)}return y.id,!0}var cC=new Map;async function lC(e,t){let n=t??kx();if(!n)return;let r=i(),a=Ym(),o=`${r}:${n}:${e}:${a}`;if(!ix||!ax){sx.set(o,{sessionID:e,directory:n});return}let s=cC.get(o);if(s)return s;let c=uC(e,n,r,a).finally(()=>{cC.get(o)===c&&cC.delete(o)});return cC.set(o,c),c}async function uC(e,t,n,r){vx();let i=bx(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=H()??_u(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(Pm(t,e)){Vb({directory:t,sessionID:e,store:i,transcript:u});return}if(H()){try{await xu(t,e)}catch{return}if(y())return;Vb({directory:t,sessionID:e,store:i,isStale:y}),await Tb({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}Vb({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await Zy({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:Gb}),b=n.records.length,Fm(t,e)}catch{return}y()||(Vb({directory:t,sessionID:e,store:i,isStale:y}),await Tb({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var dC=new Map,fC=e=>{dC.set(e,(dC.get(e)??0)+1)},pC=e=>(dC.get(e)??0)>0,mC=e=>{let t=dC.get(e)??0;return t<=0?!1:(t===1?dC.delete(e):dC.set(e,t-1),!0)},hC=18e4,gC=400,_C=300,vC=15,yC=`FINAL_REVIEW_STATUS: no_remaining_findings`,bC=yC.toLowerCase(),xC=new Set,SC=new Set,CC=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},wC=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},TC=e=>{let t=e.role;return typeof t==`string`?t:``},EC=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},DC=(e,t)=>Fd(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`}),OC=(e,t,n,r=0,i)=>{let a=Pd(e,t),o=new Set;for(let e of a)DC(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(TC(s)!==`assistant`||!CC(s)||wC(s)<r-1e3)continue;let c=EC(s);if(!IC(s,i)||c&&o.has(c))continue;let l=Np(Fd(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},kC=(e,t)=>Id(e,t)?.type===`idle`,AC=e=>e===i(),jC=e=>{Up.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},MC=e=>{if(e&&!AC(e))throw Error(`Auto-review stopped because the runtime changed.`)},NC=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),PC=e=>e.trim().split(`
|
|
463
463
|
`).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===bC,FC=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()===bC&&t.pop(),t.join(`
|