@openchambery/web 1.17.1-beta.9 → 1.17.1
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-BKg8KK5a.js → AssistantView-CbnxMZU0.js} +1 -1
- package/dist/assets/{ChatContainer-CuxynsBz.js → ChatContainer-DEDGosbz.js} +36 -36
- package/dist/assets/{DiagramView-CjMblW4W.js → DiagramView-Byxhaduz.js} +1 -1
- package/dist/assets/{MarkdownRendererImpl--oy9PEaq.js → MarkdownRendererImpl-Cv8V-Q5l.js} +1 -1
- package/dist/assets/{MobileDetailNavigation-j5XTy0wI.js → MobileDetailNavigation-lVtCe-5P.js} +1 -1
- package/dist/assets/{MobileShareBridge-BnF86wui.js → MobileShareBridge-DAlvgjo1.js} +1 -1
- package/dist/assets/MobileSurface-Bde8yLWo.js +2 -0
- package/dist/assets/{MultiRunWindow-BTTFYUzI.js → MultiRunWindow-1kkKTh4h.js} +1 -1
- package/dist/assets/{OverlayScrollbar-DyP73J3X.js → OverlayScrollbar-Dqk1zGJB.js} +1 -1
- package/dist/assets/{SettingsView-JQxnmG9X.js → SettingsView-D0dhTIur.js} +1 -1
- package/dist/assets/{SettingsWindow-Ddr1B6Hc.js → SettingsWindow-DMQMRgc3.js} +1 -1
- package/dist/assets/{TerminalView-bHOuUIxH.js → TerminalView-jYq0JQPc.js} +1 -1
- package/dist/assets/{ToolOutputDialog-CbGv7HQ5.js → ToolOutputDialog-DJefd2N6.js} +1 -1
- package/dist/assets/appThemeRegistry-BXeIggYO.js +2 -0
- package/dist/assets/{context-menu-B-8pAqjS.js → context-menu-BbRpMBQh.js} +1 -1
- package/dist/assets/{gitApi-BuTpcy5P.js → gitApi-Bs_2iBAm.js} +1 -1
- package/dist/assets/{insertionBoundaries-D8FUCksc.js → insertionBoundaries-BAFtAotq.js} +1 -1
- package/dist/assets/{main-Bz2igSmw.js → main-CT0DuuLm.js} +2 -2
- package/dist/assets/{main-C3JiVxSp.js → main-G8tKFcTV.js} +3 -3
- package/dist/assets/{miniChat-6EMGKhlG.js → miniChat-BP3OHqNF.js} +2 -2
- package/dist/assets/{mobile-DP5GfqmN.js → mobile-BtwuDs-C.js} +2 -2
- package/dist/assets/{multirun-9f6WZ3Jd.js → multirun-B-L3JH60.js} +1 -1
- package/dist/assets/{projectMeta-Dsa2wr8n.js → projectMeta-Cp74cItv.js} +1 -1
- package/dist/assets/{radio-CrWrJ2b-.js → radio-Bs4mdPv5.js} +1 -1
- package/dist/assets/{renderElectronMiniChatApp-4adD-9dD.js → renderElectronMiniChatApp-dgirEOtR.js} +2 -2
- package/dist/assets/{renderMobileApp-bSjLTDsy.js → renderMobileApp-DK9qzy0P.js} +3 -3
- package/dist/assets/{runtimeEndpointReset-DW-MKG59.js → runtimeEndpointReset-C0eCWIE6.js} +1 -1
- package/dist/assets/{sortable-tabs-strip-NTPx-T_l.js → sortable-tabs-strip-oKJ700WG.js} +1 -1
- package/dist/assets/src-8zziWB78.css +2 -0
- package/dist/assets/{useAppFontEffects-BIO3lPVM.js → useAppFontEffects-BhLcUfRB.js} +2 -2
- package/dist/assets/{useDesktopWindowControlsLayout-Df2h_cM_.js → useDesktopWindowControlsLayout-Cq5a2gcJ.js} +1 -1
- package/dist/assets/{useEffectiveDirectory-D0vaM832.js → useEffectiveDirectory-DG6uPzBG.js} +1 -1
- package/dist/assets/{useMobileNavigationStore-7HNp5YHY.js → useMobileNavigationStore-1xHjnAsg.js} +1 -1
- package/dist/assets/{useSessionAutoCleanup-BPNLtDRJ.js → useSessionAutoCleanup-BFletAeV.js} +1 -1
- package/dist/assets/{useWorkerHighlightedLines-DYfBlGb-.js → useWorkerHighlightedLines-ADgu9578.js} +1 -1
- package/dist/index.html +2 -2
- package/dist/mini-chat.html +2 -2
- package/dist/mobile.html +2 -2
- package/package.json +1 -1
- package/dist/assets/MobileSurface-D0LTFt1w.js +0 -2
- package/dist/assets/appThemeRegistry-DIDGDdQq.js +0 -2
- package/dist/assets/src-B8mzksNL.css +0 -2
package/dist/assets/{useMobileNavigationStore-7HNp5YHY.js → useMobileNavigationStore-1xHjnAsg.js}
RENAMED
|
@@ -457,7 +457,7 @@ Use the results below as source material. Do not mention that the inputs were hi
|
|
|
457
457
|
`),a=(i===-1?r:r.slice(0,i)).trim(),o=(i===-1?``:r.slice(i+1)).trim();!(t.visible in n)&&a.length>0&&(n[t.visible]=a),!(t.instructions in n)&&o.length>0&&(n[t.instructions]=o)}return n},_p=async()=>pp||(mp||=F(up,{method:`GET`,headers:{Accept:`application/json`}}).then(async e=>{if(!e.ok)throw Error(`Failed to load magic prompts`);let t=gp(await e.json().catch(()=>({})));return pp=t,t}).finally(()=>{mp=null}),mp),vp=e=>{let t=dp.get(e);if(!t)throw Error(`Unknown magic prompt id: ${e}`);return t},yp=e=>vp(e).template,bp=async e=>{let t=(await _p().catch(()=>({})))[e];return typeof t==`string`?t:yp(e)},xp=async(e,t={})=>hp(await bp(e),t),Sp=async(e,t)=>{let n=await F(`${up}/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({text:t})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e?.error||`Failed to save magic prompt`)}let r=await n.json();return pp=gp(r),{version:typeof r?.version==`number`?r.version:1,overrides:pp}},Cp=async e=>{let t=await F(`${up}/${encodeURIComponent(e)}`,{method:`DELETE`,headers:{Accept:`application/json`}});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e?.error||`Failed to reset magic prompt`)}let n=await t.json();return pp=gp(n),{version:typeof n?.version==`number`?n.version:1,overrides:pp}},wp=async()=>{let e=await F(up,{method:`DELETE`,headers:{Accept:`application/json`}});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t?.error||`Failed to reset all magic prompts`)}let t=await e.json();return pp=gp(t),{version:typeof t?.version==`number`?t.version:1,overrides:pp}},Tp=e=>e.filter(e=>e?.type===`text`).map(e=>(e.text||e.content||``).trim()).filter(e=>e.length>0).join(`
|
|
458
458
|
`).replace(/\n\s*\n+/g,`
|
|
459
459
|
`),Ep=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Dp=e=>{let t=e?.metadata;return Ep(t)?t:{}},Op=e=>{let t=e.openchamber;return Ep(t)?t:{}},kp=e=>{let t=Op(Dp(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Ap=e=>{let t=Op(Dp(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},jp=e=>Op(Dp(e)).kind===`review`&&!!Ap(e),Mp=(e,t)=>{let n=Op(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Np=(e,t)=>{let n=Op(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},Pp=(e,t)=>{let n=Op(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},Fp=Oe()(ke((e,t)=>({runsByOriginalSessionID:{},upsertRun:t=>e(e=>({runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t.originalSessionID]:t}})),updateRun:(t,n)=>e(e=>{let r=e.runsByOriginalSessionID[t];return r?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:n(r)}}:e}),stopRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`stopped`}}}:e}),completeRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`completed`}}}:e}),stopRunningRunsForRuntime:t=>e(e=>{let n=!1,r={...e.runsByOriginalSessionID};for(let[e,i]of Object.entries(r))i.runtimeKey===t&&i.status===`running`&&(r[e]={...i,status:`stopped`},n=!0);return n?{runsByOriginalSessionID:r}:e}),isRunningForSession:e=>t().runsByOriginalSessionID[e]?.status===`running`}),{name:`auto-review-store`,storage:g(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),Ip=(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},Lp=(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},Rp=(e,t,n,r)=>{if(!n)return r;let i=Ip(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},zp=`GitHub issue context (JSON)`,Bp=`GitHub pull request context (JSON)`,Vp=e=>!e||typeof e!=`object`?!1:!!e.synthetic,Hp=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>Vp(e)),Up=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!Vp(e)),n=e=>{if(!Vp(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(zp)||n.startsWith(Bp)};return t&&e.some(e=>Vp(e))?e.filter(e=>!Vp(e)||n(e)):e},Wp=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},Gp=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,Kp=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},qp=e=>e.replace(/\\/g,`/`),Jp=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,Yp=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}`}`),qp(n)}catch{return null}},Xp=(e,t)=>{let n=Jp(qp(e)),r=Jp(qp(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},Zp=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),Qp=(e,t)=>{let n=qp(e),r=Jp(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=Xp(n,t);if(r!==null){let t=Jp(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return Zp(a)},$p=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},em=(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},tm=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},nm=async(e,t={})=>{let n=t.createID??fe,r=t.directory??t.root??null,i=e.filter(e=>!Vp(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(Gp).join(`
|
|
460
|
-
`),l=[];for(let e of o){let t=tm(e);t&&l.push(t)}for(let e of[...l].reverse())em(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=em(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:`)?Yp(t):null;if(o){let e=Qp(o,r),t=null;for(let n of e){let e=em(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=Kp(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 $p(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(Wp(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}},rm=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 $p(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(Wp(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}},im=e=>e?JSON.parse(JSON.stringify(e)):null,am=e=>e?{...e}:{},om=(e,t=wr.getState())=>{let n=t.getDraft?.(e)??null,r=am(t.draftAttachmentViews?.[R(e)]);return{record:im(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},sm=async e=>{let t=e.input??wr.getState(),n=om(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}},cm=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}}},lm=async e=>{let t=e.input??wr.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?cm({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},um=(e,t,n)=>{let r=n.getDraft(e);if(r)return[...r.attachments,...r.syntheticParts.flatMap(e=>e.attachments)].find(e=>e.attachmentID===t)?.attachmentRefID},dm=e=>e?.status===`committed`&&e.current===!0,fm=new Map,pm=async(e,t)=>{let n=R(e),r=fm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);fm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),fm.get(n)===o&&fm.delete(n)}},mm=(e,t)=>({key:e,addLocal:async n=>{await pm(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await pm(e,async()=>{let r=t(),i=um(e,n,r);if(!i)return!(r.getDraft(e)&&[...r.getDraft(e)?.attachments??[],...r.getDraft(e)?.syntheticParts.flatMap(e=>e.attachments)??[]].some(e=>e.attachmentID===n));try{await r.removeDraftAttachment(e,i)}catch{}let a=r.getDraft(e);return!a||![...a.attachments,...a.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.attachmentID===n)})}catch{return!1}},clearRootAttachments:async()=>{try{return await pm(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 pm(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:dm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await pm(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await pm(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await pm(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),hm=4e4,gm=0,_m=null;function vm(e=Date.now()){gm=e}function ym(e){return _m=e,()=>{_m===e&&(_m=null)}}function bm(e){_m?.(e)}function xm(e=Date.now(),t=hm){return gm<=0?!1:e-gm>=t}var Sm=3e4,Cm=200,wm=new Map;function Tm(e,t,n){return`${n?.transport??i()}\n${n?.generation??h()}\n${e.trim()}\n${t}`}function Em(e,t,n){if(!e||!t)return!1;let r=wm.get(Tm(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Sm}function Dm(e,t,n){if(!e||!t)return;let r=Tm(e,t,n);for(wm.has(r)&&wm.delete(r);wm.size>=Cm;){let e=wm.keys().next().value;if(typeof e!=`string`)break;wm.delete(e)}wm.set(r,n?.now??Date.now())}var Om=768,km=()=>{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},Am=()=>{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<=Om&&km()?`mobile`:`desktop`},jm=()=>Am()===`mobile`,Mm=3,Nm=2,Pm=4,Fm=4,Im=100,Lm=30;function Rm(){return d()?`relay`:`local`}function zm(e=Rm()){return e===`relay`?Nm:Mm}function Bm(e=Rm()){return e===`relay`?Fm:Pm}function Vm(e){return zm(Wm(e))}function Hm(){return Im}function Um(){return Lm}function Wm(e){return e===`relay`||e===`local`?e:Rm()}var Gm=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function Km(){return{pages:[],pageParams:[]}}function qm(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 Jm(e){return{pages:Object.freeze(e.pages.map(qm)),pageParams:Object.freeze([...e.pageParams])}}function Ym(e,t,n=Gm){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 qm({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function Xm(e){if(!e||e.pages.length===0)return Zc;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 Zm(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=Xm(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function Qm(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function $m(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 qm({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:Qm(t)}})}function eh(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 Jm({pages:[$m(`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=$m(`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(nh(i,o,s,a)),_.push(e.pageParams[r]??null)}return Jm({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?nh(t,r===`reconcile-page`?th(i,p):[...i,...p],s,a):nh(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]=qm({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return Jm({pages:m,pageParams:[...e.pageParams]})}function th(e,t){let n=e.slice();for(let e of t){let t=$s(e),r=n.length;for(let e=0;e<n.length;e+=1)if(Qs(t,$s(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function nh(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&&rh(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||ah(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:qm({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:Qm(t)}})}function rh(e,t){return e===t||e.id===t.id&&e===t}function ih(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 ah(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!ih(e[n],t[n]))return!1;return!0}function oh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function sh(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 ch(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=eh(e??Km(),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&&ah(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 Jm({pages:e.pages.map((t,n)=>nh(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function lh(e,t){let n=Zm(e,t),r=Xm(e),i={message:{...n.message,[t]:[...n.message[t]??[]]},part:{...n.part}};for(let[e,t]of Object.entries(i.part))t&&(i.part[e]=[...t]);return{draft:i,previousBoundary:r}}function uh(e,t,n,r){if(!xl(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=lh(e,t),o=js(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=sh(n),c=new Set;return s&&c.add(s),{data:ch(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function dh(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 fh(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 ph(e){return e?e.map(e=>e.id).filter(e=>typeof e==`string`):[]}function mh(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=lh(e,t),o=!1,s=0,c,l=new Set,u=dh(e),d=fh(e),f=ph(i.message[t]);for(let e of n){if(!xl(e.type))continue;o=!0;let n=js(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=sh(e),m=ph(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&&ah(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&&rh(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:ch(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function hh(e,t,n,r,i){let a=e&&e.pages.length>0?e:Jm({pages:[$m(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=Zm(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]:oh(r)};return{data:Jm({pages:a.pages.map((e,t)=>t===a.pages.length-1?nh(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]?nh(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 gh(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:Jm({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 nh(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function _h(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=Zm(e,t),i=Gc({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:Xm(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=Jm({pages:[$m(`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:Xm(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=Jm({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?nh(t,th(r,l),o,a):nh(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:Xm(u)}}}function vh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=ol(Zm(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:eh(e,t,{message:i.message,part:i.part,messages:i.messages,boundary:i.boundary},n.purpose,n.page,r),result:{applied:!0,changed:i.changed,boundary:i.boundary,meta:i.meta,confirmedOptimisticIDs:i.confirmedOptimisticIDs}}:{data:e,result:{applied:!1,changed:!1,error:i.error}}}case`sse-event`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return uh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return mh(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return hh(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 gh(e,n.messageID,t)}case`durable-seed`:return _h(e,t,n);case`reset`:return n.page?vh(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 yh(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 bh(e,t,n,r=`materialize`){return vh(e,n,{type:`http-page`,purpose:r,page:yh(t),liveRevision:t.sync.liveRevision}).data}function xh(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return Jm(t);if(t.pages.length===e.pages.length){let r=Th(e,t);if(r===e)return e;if(wh(e,t)||Ch(e,t))return r;let i=t.pages[t.pages.length-1];return bh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return vh(e,n,{type:`http-page`,purpose:`prepend`,page:yh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return bh(e,r,n)??Jm(t)}return Jm(t)}function Sh(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Ch(e,t){let n=Sh(e),r=Sh(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=Eh(e,``),a=Eh(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function wh(e,t){let n=Sh(e);if(n.size===0)return!1;let r=Sh(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=Eh(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||Qs($s(t),$s(n))>0)return!1}return!0}function Th(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,qm(t))});return!n&&e.pageParams.length===t.pageParams.length?e:Jm({pages:r,pageParams:[...t.pageParams]})}function Eh(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:Xm(e),liveRevision:a}}var Dh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Oh=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},kh=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Ah=e=>e.trim(),jh=e=>e?.trim()||`tail`,Mh=new Set([502,503,504]),Nh=[`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 Ph(e){if(!e||e instanceof Dh||e instanceof Oh)return!1;if(e instanceof kh)return e.status>=400&&e.status<500?!1:Mh.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(Mh.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(Mh.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:Nh.some(e=>n.includes(e))}function Fh(e,t){return e>=2?!1:Ph(t)}var Ih=(e,t=i(),n=h())=>[t,n,`sessionMessages`,`page`,Ah(e.directory),e.sessionID,e.limit,jh(e.before)],Lh=(e,t=i(),n=h())=>[t,n,`session-transcript`,Ah(e.directory),e.sessionID];function Rh(e){if(!e||typeof e!=`object`)throw new Oh(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Oh(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Oh(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Oh(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Oh(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Oh(`session message page: cursor must be string when set`);return e}var zh=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}:{}})},Bh=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw new Dh},Vh=(e,t,n=i(),r={},a=(r.getGeneration??h)())=>{let o=Ah(e.directory),s=e.sessionID,c=e.limit,l=e.before?.trim()||void 0;return{queryKey:Ih({directory:o,sessionID:s,limit:c,before:l},n,a),queryFn:async({signal:e})=>{Bh(n,a,r);let i=await t({directory:o,sessionID:s,limit:c,before:l,signal:e});return Bh(n,a,r),zh(Rh(i))},staleTime:1/0,gcTime:3e5,retry:Fh,retryDelay:e=>Math.min(500*2**e,4e3)}},Hh=(e,t,n=L,r=i(),a={},o=(a.getGeneration??h)())=>n.fetchQuery(Vh(e,t,r,a,o));function Uh(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 Wh(e){return zh({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function Gh(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function Kh(e){let t=Ah(e.directory),n=e.sessionID,r=e.transport??i(),a=e.probe??{},o=e.generation??(a.getGeneration??h)(),s=e.initialLimit??zm(),c=e.historyLimit??Bm(),l=e.client??L,u=Lh({directory:t,sessionID:n},r,o),d=async t=>Wh(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:u,queryFn:async e=>{Bh(r,o,a);let i=e.pageParam?.trim()||void 0,u=i?c:s,f=i?`prepend`:`initial`,p=await Hh({directory:t,sessionID:n,limit:u,before:i},d,l,r,a,o);Bh(r,o,a);let m=Uh(p);return Ym(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:Gh,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:Fh,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>xh(e,t,n)}}function qh(e){let t=e.client??L,n=Kh({...e,client:t}),r=new Qe(t,{...n,structuralSharing:(t,n)=>xh(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 Jm(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return Jm(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:Jm(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return Jm(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:Jm(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function Jh(e,t,n,r){let i=e.getQueryData(t),a=vh(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 Yh(e,t=L,n=i(),r=h()){return t.getQueryData(Lh(e,n,r))}function Xh(){return v()||jm()}function Zh(){return v()?4:jm()?12:40}var Qh=1048576,$h=4*Qh,eg=12*Qh,tg=40*Qh;function ng(){return v()?$h:jm()?eg:tg}var rg=e=>e.trim();function ig(e){return{transport:e.transport,generation:e.generation,directory:rg(e.directory),sessionID:e.sessionID}}function ag(e){let t=ig(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function og(e){return`${e.transport}\n${e.generation}\n${rg(e.directory)}`}var sg={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function cg(e,t,n){return[t,n,sg.taskRoot,sg.reconcileTaskKind,rg(e.directory),e.sessionID,e.checkpoint]}function lg(e,t,n){return[t,n,sg.checkpoint,rg(e.directory),e.sessionID]}function ug(e){let t=ig(e);return[{queryKey:Lh({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,sg.transportPageRoot,sg.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,sg.taskRoot,sg.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,sg.taskRoot,sg.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:lg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function dg(){let e=new Map;return{retain(t){let n=ig(t),r=ag(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(ag(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(ag(t))?.count??0},clear(){e.clear()}}}function fg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var pg=3e4;function mg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function hg(e){return!Array.isArray(e)||e.length<5||e[2]!==sg.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 gg(e){let t=e.client,n=e.activeRegistry??dg(),r=e.counters??fg(),i=e.getLimit??Zh,a=e.now??Date.now,o=e.minResidencyMs??pg,s=new Map,c=e=>{let t=ag(ig(e));s.set(t,a())},l=e=>{let t=ag(ig(e)),n=s.get(t);return n!==void 0&&a()-n<o},u=e=>{let r=ig(e);if(n.isRetained(r))return!0;let i=Lh({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:rg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=hg(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:mg(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(ag(ig(e)));for(let t of ug(e))f(t)},m=(e,t)=>{r.purgeGeneration+=1;let n=[[e,t,sg.canonical],[e,t,sg.transportPageRoot,sg.transportPageKind],[e,t,sg.taskRoot],[e,t,sg.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=>ag(ig(e)))),o=d({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=og(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=ag(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(ag(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 _g=3e4,vg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function yg(e,t=_g){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 bg=e=>e?e.toLowerCase().includes(`application/json`):!1,xg=e=>e?e.toLowerCase().includes(`text/html`):!1;function Sg(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 Cg(e){let t=e.turns??Bm(),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:_g;return yg((async()=>{let a=await F(n,{method:`GET`,query:r,signal:vg(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(xg(o))throw Error(`session turn page: unexpected HTML response`);bg(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Sg(s,t)})(),i)}async function wg(e){let t=e.purpose===`prepend`&&e.before?Bm():zm();return Cg({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var Tg=3e4,Eg=2,Dg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),Og=e=>e?e.toLowerCase().includes(`text/html`):!1,kg=e=>new Promise(t=>{setTimeout(t,e)});function Ag(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Oh(`session transcript reconcile: ${t} must be string or null`);return e}function jg(e){if(!e||typeof e!=`object`)throw new Oh(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Oh(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Oh(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Oh(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Oh(`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 Oh(`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 Oh(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=Ag(t.capturedHeadMessageID,`capturedHeadMessageID`),r=Ag(t.latestHeadMessageID,`latestHeadMessageID`),i=Ag(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Oh(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Oh(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Oh(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Oh(`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 Oh(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Oh(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Oh(`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 Oh(`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 Mg(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 Oh(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function Ng(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),yg((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:Dg(e.signal,n)})}catch(e){throw e instanceof Dh||e instanceof Oh||e instanceof kh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new kh(t.status,`session transcript reconcile failed (${t.status})`);if(Og(t.headers.get(`content-type`)))throw new Oh(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Oh(`session transcript reconcile: malformed JSON`)}return jg(a)})(),n)}async function Pg(e){let t=Mg(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:Tg,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):Eg,i=e.sleep??kg,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await Ng(e,t,n)}catch(t){if(t instanceof Dh||t instanceof Oh||t instanceof kh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!Ph(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var Fg=`GitHub issue context (JSON)`,Ig=`GitHub pull request context (JSON)`,Lg=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,Rg=(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}},zg=e=>{let t=Rg(e,Fg);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!Lg(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=Rg(e,Ig);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!Lg(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},Bg=(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`))},Vg=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),Hg=e=>e.trim()===`/compact`,Ug=(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`&&(Vg(t)||Hg(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 Bg(t,n)||r.startsWith(Fg)||r.startsWith(Ig)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=zg(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},Wg=e=>e?.length?Ug(e).length>0:!1,Gg=`oc_asst_session_divider:`,Kg=[],qg=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),Jg=(e,t=0)=>({info:{id:`${Gg}${e}`,role:`system`,time:{created:t}},parts:[]}),Yg=e=>e.slice().reverse().flatMap(e=>e.entries),Xg=(e,t,n=Kg)=>{if(!e.length)return Kg;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(Jg(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?Kg:t_(n,r)?n:r},Zg=(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},Qg=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=Zg(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 Wg(e.parts)?e:Wg(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}:{}}},$g=(e,t,n,r=Kg)=>{if(!t)return n.length>0?Array.from(n):Kg;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:Qg(e,t?.message),order:t?.order??a++})}if(i.size===0)return Kg;let o=[...i.values()].sort((e,t)=>Number(e.message.info.time?.created??0)-Number(t.message.info.time?.created??0)||e.order-t.order).map(({message:e})=>e);return t_(r,o)?r:o},e_=(e,t)=>{if(!qg(e)||!qg(t))return!1;let n=Number(e.info.time?.created??0),r=Number(t.info.time?.created??0);return e.info.id===t.info.id&&n===r},t_=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||!(r===i||e_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},n_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),r_=e=>e.startsWith(Gg);function i_(e,t){if(!e?.id||r_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(n_(t,`subtask`)||n_(t,`compaction`)||t.every(e=>Vp(e))):!1}function a_(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.messagesByID[n],i=e.partsByMessageID[n];if(i_(r,i))return n}return null}function o_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function s_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:a_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:o_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function c_(e,t){return{...e,...t}}function l_(e,t){let n=lg({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 u_(e,t){let n=lg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function d_(e,t){let n=lg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function f_(e){return e.slim===!0}var p_=/bearer|token|authorization|password|secret|cookie/i;function m_(e){return typeof e==`string`&&e.includes(`-`)}var h_=`openchamber.client-diagnostics.enabled`;function g_(e){return e===`true`||e!==`false`&&null}function __(e){return e.preference===!0||e.preference!==!1&&m_(e.version)}function v_(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function y_(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function b_(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 x_(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return p_.test(t)?`redacted-error`:t}function S_(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)f_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function C_(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function w_(e){let t=0;for(let n of e.messageOrder)I_(e.messagesByID[n])===!0&&(t+=1);return t}function T_(e){let t=e.transcript?S_(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:C_(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:w_(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...x_(e.error??e.request?.error)?{error:x_(e.error??e.request?.error)}:{},...b_(e.error)===void 0?{}:{httpStatus:b_(e.error)}}}function E_(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 D_(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 O_(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return e.event.type===`message.part.delta`?null:`sse-event`;case`sse-event-batch`:return`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function k_(e){if(e.type===`http-page`)return e.purpose}function A_(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function j_(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 M_(e){return e.__openchamberOptimistic===!0}function N_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function P_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var F_=e=>typeof e==`string`&&e.trim().length>0;function I_(e){if(!e||N_(e)!==`assistant`)return;let t=e,n=!F_(t.mode)&&!F_(t.agent),r=!F_(t.modelID)||!F_(t.providerID);return n||r}function L_(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function R_(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)f_(e)?r+=1:i+=1,M_(e)&&(a=!0);let o=e.messagesByID[t],s=N_(o),c=I_(o);return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:P_(o),...s?{role:s}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function z_(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:L_(e),after:L_(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 B_(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:z_(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}:{}}}var V_=`openchamber-transcript-diagnostics`,H_=`events`,U_=1,W_=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),G_=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,U_);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(H_)||e.createObjectStore(H_,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),K_=(e=V_)=>({async append(t,n){let r=await G_(e);try{let e=r.transaction(H_,`readwrite`).objectStore(H_);await W_(e.add(t));let i=await W_(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await W_(e.delete(t))}finally{r.close()}},async read(){let t=await G_(e);try{return await W_(t.transaction(H_,`readonly`).objectStore(H_).getAll())}finally{t.close()}},async clear(){let t=await G_(e);try{await W_(t.transaction(H_,`readwrite`).objectStore(H_).clear())}finally{t.close()}}});function q_(e={}){let t=e.driver??K_(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var J_=Je(`OpenChamberMedia`);function Y_(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function X_(){return lt()&&Ye!==void 0&&Ye.isPluginAvailable(`OpenChamberMedia`)}function Z_(){return`1.17.1-beta.9`}function Q_(){if(typeof localStorage>`u`)return null;try{return g_(localStorage.getItem(h_))}catch{return null}}function $_(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(h_,e?`true`:`false`)}catch{}}function ev(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var tv;function nv(e=Z_()){return __({version:e,preference:Q_()})}function rv(e={}){return D_({sink:ev()===`indexeddb`?(e.createIndexedDBSink??q_)():(e.createMemorySink??E_)(),isEnabled:e.isEnabled??nv})}function iv(){return tv??=rv(),tv}function av(e){iv().record(e)}function ov(e){try{return nv()?R_(e()):void 0}catch{return}}function sv(e){try{av(B_(e))}catch{}}function cv(e){let t=O_(e.command);t&&av(T_({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:k_(e.command),sseType:A_(e.command),source:j_(e.command),error:e.error}))}async function lv(){let e=await iv().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 uv(e,t=v_()){if(X_())return(await J_.saveFile({dataBase64:Y_(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 dv(){let e=await lv(),t=v_();return{content:e,fileName:t,outcome:await uv(e,t),eventCount:y_(e)}}function fv(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 pv=2,mv=6e4;function hv(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??i)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??h)()}}function gv(e,t){let n=(t.probe?.getTransport??i)(),r=(t.probe?.getGeneration??h)();if(n!==e.transport||r!==e.generation)throw new Dh}function _v(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function vv(e,t){return ig({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function yv(e,t){return`${e.trim()}\n${t}`}function bv(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??gg({client:t,activeRegistry:dg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??pv)),o=e.fetchReconcile??Pg,s=e.now??Date.now,c=!1,l=0,u=new Map,d=new Map,f=new Map,p=new Map,m=new Set,g=new Map,_=new Set,v=(e,t)=>{m.add(yv(e,t))},y=(e,t)=>{m.delete(yv(e,t))},b=e=>{let t=d.get(e);t&&(t.abort(),d.delete(e)),u.delete(e)},x=e=>{l+=1;for(let e of[...d.keys()])b(e);f.clear(),p.clear()},S=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(yv(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of r.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&i.set(yv(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(i.values())},C=(t,n)=>{let i=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of r.listCanonical({transport:t.transport,generation:t.generation}))i.add(e.scope.directory);for(let e of r.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&i.add(e.directory);for(let e of n)e.directory&&i.add(e.directory.trim());return i},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=yv(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=i=>{if(c)return;let a={transport:i.transport??hv(e).transport,generation:i.generation??hv(e).generation},o=s(),l=w(),u=C(a,l),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(yv(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of r.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(yv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of l)f.set(yv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(yv(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=_v(e,a),s=n.getTranscript(r),c=s_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:i.lastEventID,capturedAt:o});u_(t,c)}let p=new Set;for(let t of u){let n=fv({directory:t,activeScopes:S(a,t),viewedSessions:l,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(yv(e.directory,e.sessionID))}for(let e of d){let t=yv(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=ov(()=>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=ov(()=>n.getTranscript(e));i&&t&&sv({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(gv({transport:i.transport,generation:i.generation},e),a!==l)throw new Dh;u_(t,c_(l_(t,i)??s_({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=ov(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),gv({transport:i.transport,generation:i.generation},e),a!==l)throw new Dh;d_(t,i),y(i.directory,i.sessionID);try{let e=ov(()=>n.getTranscript(r));o&&e&&sv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw u_(t,c_(l_(t,i)??s_({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(gv({transport:i.transport,generation:i.generation},e),a!==l)throw new Dh;u_(t,c_(l_(t,i)??s_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=ov(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),gv({transport:i.transport,generation:i.generation},e),a!==l)throw new Dh;d_(t,i),y(i.directory,i.sessionID);try{let e=ov(()=>n.getTranscript(r));o&&e&&sv({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 u_(t,c_(l_(t,i)??s_({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,c)=>{let u=_v(r,i),d=vv(r,i),f=cg({directory:d.directory,sessionID:d.sessionID,checkpoint:String(l_(t,d)?.capturedAt??s())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:s()});try{if(gv(i,e),a!==l||c.aborted)throw new Dh;let p=l_(t,d);if(p||(p=s_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(u),lastEventID:null,capturedAt:s()}),u_(t,p)),!p.anchorMessageID){await O(u,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:s()});return}p=c_(p,{state:`reconciling`}),u_(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,gv(i,e),a!==l||c.aborted)throw new Dh;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,gv(i,e),a!==l||c.aborted)throw new Dh;let h=n.getTranscript(u).liveRevision;if(!g&&!m){await O(u,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:s()});return}let y=await o({sessionID:r.sessionID,directory:r.directory.trim(),...g?{continuation:g}:{anchor:m},signal:c});if(gv(i,e),a!==l||c.aborted)throw new Dh;if(y.resetRequired){await D(u,d,a),t.setQueryData(f,{status:`reset`,finishedAt:s()});return}if(b===1&&(_=y.capturedHeadMessageID),v=y.latestHeadMessageID??v,y.records.length>0&&E(u,y,h),p=c_(l_(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),u_(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=c_(l_(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),u_(t,p);continue}p=c_(l_(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),u_(t,p),y(r.directory,r.sessionID),t.setQueryData(f,{status:`complete`,finishedAt:s()});return}await D(u,d,a),t.setQueryData(f,{status:`reset`,finishedAt:s()})}catch(n){if(n instanceof Dh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(f,{status:`cancelled`,finishedAt:s()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(f,{status:`error`,finishedAt:s(),code:n instanceof Error?n.name:`error`}),n}},A=t=>{let n=t.trim(),r=p.get(n)??0;if(r>=a)return;let i=f.get(n);if(!i||i.length===0)return;let o=i.shift();p.set(n,r+1);let s=yv(o.directory,o.sessionID);if(u.has(s)){p.set(n,(p.get(n)??1)-1),A(n);return}let c=hv(e),m=l,h=new AbortController;d.set(s,h);let g=(async()=>{try{await k(o,c,m,h.signal)}catch{}finally{d.delete(s),u.delete(s),p.set(n,Math.max(0,(p.get(n)??1)-1)),A(n)}})();u.set(s,g)},j=e=>{let t=e.directory.trim(),n=yv(t,e.sessionID);if(u.has(n))return;let r=f.get(t);r||(r=[],f.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),A(t))},ee=t=>{let n=w(),i=C(t,n);for(let a of i){let i=fv({directory:a,activeScopes:S(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)j(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=yv(e.scope.directory,e.scope.sessionID);i.some(e=>yv(e.directory,e.sessionID)===t)||v(e.scope.directory,e.scope.sessionID)}}},te=t=>{if(c||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??i)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??h)(),a=(e.probe?.getTransport??i)();if(r!==n.generation||a!==n.transport){x(`generation_mismatch`);return}ee(n)},M=t=>{if(c)return;let r=t.directory.trim(),i=hv(e,t),a=_v({directory:r,sessionID:t.sessionID},i),l=ag(vv({directory:r,sessionID:t.sessionID},i)),d=g.get(l);if(d&&s()-d.checkedAt<mv||_.has(l)||u.has(yv(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(_.add(l),(async()=>{try{if(gv(i,e),c)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(gv(i,e),c||(g.set(l,{checkedAt:s()}),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(l)}})())};return{captureCheckpoints:T,onCompensation:te,ensureOnObserve:async r=>{if(c)return null;let i=r.directory.trim(),a=yv(i,r.sessionID);if(!m.has(a))return M(r),null;y(i,r.sessionID);let o=hv(e,r),s=_v({directory:i,sessionID:r.sessionID},o),l=vv({directory:i,sessionID:r.sessionID},o),d=l_(t,l);if(d&&d.state!==`complete`&&d.anchorMessageID){j({directory:i,sessionID:r.sessionID});let e=u.get(a);return e&&await e,n.getTranscript(s)}try{gv(o,e);let r=await n.ensureInitial(s);return d_(t,l),r}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:x,getCheckpoint:n=>{let r=hv(e,n);return l_(t,vv({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>u.has(yv(e,t)),destroy:()=>{c=!0,x(`destroy`)}}}function xv(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Sv(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 Cv(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(Ys(e))??Promise.resolve(),r.get(Zs(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=Ys(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=Zs(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??ng)();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 Tv=new Map;function Ev(e,t){let n=Tv.get(e);if(n)return n;let r=t().finally(()=>{Tv.get(e)===r&&Tv.delete(e)});return Tv.set(e,r),r}var Dv=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Ov(e){return Ev(Dv(e),e.request)}function kv(e,t){return`${e}\n${t}`}var Av=new Map;function jv(e){return Av.get(e)}async function Mv(e){return Ov({runtimeKey:kv(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 Av.set(r.id,i),{info:$f(r),parts:i}}})}function Nv(e,t){let n=e.info;return n.role===t||n.clientRole===t}function Pv(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Nv(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 Fv(e){if(e.complete){let t=e.records.some(e=>Nv(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=Pv(e.records);if(t.length===0){let t=e.records.some(e=>Nv(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=>Nv(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Iv(e){return e.trim()}function Lv(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??i)(),r=e.generation??t.generation??(t.probe?.getGeneration??h)();return{directory:Iv(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function Rv(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:Zc,liveRevision:0}}function zv(e,t){if(!e||e.pages.length===0)return Rv(t);let n=Eh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function Bv(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function Vv(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function Hv(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=Bv(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=Bv(e.messagesByID[t]);a===void 0||a<=n||Vv(e.partsByMessageID[t])||i.push(t)}return i}function Uv(e={}){let t=e.client??L,n=e.cacheBudget??gg({client:t,activeRegistry:e.activeRegistry??dg()}),r=n.activeRegistry,a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=e.durableStore?wv(e.durableStore,{getProtectScopes:()=>r.listRetained().map(xv),getByteBudget:e.getDurableByteBudget}):void 0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=zv(w(e),t.sessionID);!gl(r)&&!v.has(n)||(y.add(n),av(T_({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=l.get(e);return t||(t={messages:new Map,parts:new Map},l.set(e,t)),t},w=n=>{let r=Lv(n,e);return Yh({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=Lv(t,e);return Lh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=Lv(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let r=e.probe??{getTransport:i,getGeneration:h},o=Lv(n,{...e,transport:void 0,generation:void 0,probe:r}),s=K(o),c=a.get(s);if(c)return c;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=qh({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(s,l),l},k=t=>{let n=K(Lv(t,e));l.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(Lv(n,e));if(s.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});s.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=s.get(e);n&&(n(),s.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of p.keys())t.startsWith(e)&&p.delete(t);for(let t of m.keys())t.startsWith(e)&&m.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of p)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of m.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=Lv({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{u&&u.persistSettled(xv(e),t,n??[])},le=(e,t,n,r)=>{if(!u||S>0||!r.applied||!r.changed)return;let i=xv(t);if(n.type===`remove-message`){u.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(u.clearSession(i),n.page){let r=zv(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=zv(w(e),t.sessionID);for(let e of r){let n=Cv(e);if(n.action===`remove`){u.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=zv(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:i,getGeneration:h},s={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??zm()};return Sv(r?.fresh?await t.fetchQuery({...Vh(s,a,n.transport,o,n.generation),staleTime:0}):await Hh(s,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)eu(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now();d.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return d.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Dm(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(!ul(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),p.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Dh||!se(t))return d.delete(r),P.getTranscript(e);throw d.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),av(T_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:zv(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{f.delete(r)}})();return f.set(r,a),a},fe=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;d.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return d.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||Kl(t.sessionID,t.directory)?(d.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Dm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return d.delete(r),n instanceof Dh||!se(t)||av(T_({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:zv(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{f.delete(r)}})();return f.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(Lv(t,e)))?!0:Xm(n).kind===`unknown`},P={getTranscript(t){let n=Lv(t,e),r=K(n),i=zv(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=Lv(t,e),r=K(n),i=P.getTranscript(t);return te(r,vl(n.sessionID,i.boundary))},getRequestState(t){let n=Lv(t,e),r=d.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=Lv(t,e),r=K(n),i=P.getTranscript(t);gl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:_l({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:pl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(Lv(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(Lv(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??Wv,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=Lv(t,e),i=p.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||ll(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=Lv(t,e),i=M(r,n),a=ov(()=>P.getTranscript(t)),o=e=>{try{let t=ov(e);if(!a||!t)return;sv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=m.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return p.set(i,{status:`idle`}),P.getTranscript(t);if(!ll(P.getParts(t,n))&&!g.get(K(r))?.has(n))return p.set(i,{status:`ready`}),P.getTranscript(t);p.set(i,{status:`loading`}),k(t);try{let a=await Mv({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??[]}]}),ll(P.getParts(t,n))?p.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):p.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(p.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return p.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return p.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return m.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{m.get(i)===c&&m.delete(i)}),c},apply(r,i){let a=Lv(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=Jh(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=Jh(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=Jh(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=Jh(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}),Jh(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=Jh(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=Jh(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 Gv(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=Jh(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&&(cv({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:zv(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error}),x(r,a)),s},subscribe(t,i){let a=K(Lv(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);c.set(a,r.retain(e)),n.noteScopeObserved(e)}return s.add(i),A(t),()=>{let e=o.get(a);if(e){if(e.delete(i),e.size===0){let e=c.get(a);e&&(e(),c.delete(a))}j(a)}}},async ensureInitial(t){let i=Lv(t,e),a=K(i);if(u&&await u.wait(xv(i)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(xv(i));if(se(i)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)ul(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){av(T_({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,i);return av(T_({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!r.isRetained(E(t))){let e=Date.now(),n=await fe(t,i);return av(T_({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;d.delete(a);try{await s.ensureInitial()}catch(e){throw av(T_({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:zv(w(t),i.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}d.delete(a),l||Dm(i.directory,i.sessionID,{transport:i.transport,generation:i.generation}),n.noteScopeObserved(E(t)),D(t);let f=P.getTranscript(t);return av(T_({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:f,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),f},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),Xm(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=Lv(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 av(T_({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 av(T_({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=Lv(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=Lv(t,e),i=ov(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??zm(),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=Hv(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=ov(()=>c);i&&e&&sv({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=ov(()=>P.getTranscript(t)),i=E(t);return u&&await u.clearSession(xv(Lv(t,e))),n.destructiveReset(i,async()=>{let n=Lv(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),l.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=ov(()=>s);r&&e&&sv({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(Lv(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),l.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),l.delete(n);let e=c.get(n);e&&(e(),c.delete(n));let t=s.get(n);t&&(t(),s.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),u&&u.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of s.values())e();s.clear();for(let e of c.values())e();c.clear(),o.clear(),l.clear(),d.clear(),f.clear(),p.clear(),m.clear(),g.clear(),v.clear(),y.clear(),b.clear()}};return P}var Wv=Object.freeze([]);function Gv(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=Jh(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var Kv=`/api/openchamber/transcript-cache`,qv=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),Jv=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Yv=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},Xv=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},Zv=e=>{if(!Jv(e))throw Error(`Invalid transcript cache scope`);return{transport:Yv(e.transport,`scope`),generation:Xv(e.generation,`scope`),directory:Yv(e.directory,`scope`),sessionID:Yv(e.sessionID,`scope`)}},Qv=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},$v=e=>{if(!Jv(e)||!Jv(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!Jv(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:Zv(e.scope),messageID:Yv(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>Qv(e,`part completeness`)),completeness:Qv(e.completeness,`completeness`),contentHash:Yv(e.contentHash,`content hash`),byteSize:Xv(e.byteSize,`byte size`),lastAccessedAt:Xv(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:Xv(e.sortKey.created,`sort key`),messageID:Yv(e.sortKey.messageID,`sort key`)}}},ey=(e,t)=>{if(!Jv(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map($v);return{scope:e.scope===void 0?uc(t):Zv(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},ty=e=>{if(!Jv(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:$v(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!qv.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:$v(e.record)}}}throw Error(`Invalid transcript cache upsert`)},ny=e=>{if(!Jv(e))throw Error(`Invalid transcript cache evict`);return{evicted:Xv(e.evicted,`evict`),freedBytes:Xv(e.freedBytes,`evict`),remainingBytes:Xv(e.remainingBytes,`evict`)}},ry=e=>({scope:uc(e),records:[],byteSize:0}),iy=(e,t)=>Jv(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,ay=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`)}},oy=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 ay(r)};let i=await ay(r).catch(()=>void 0);throw Error(iy(i,`Transcript cache request failed (${r.status})`))},sy=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),cy=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function ly(e={}){let t=e.fetch??F;return{async readSession(e){let n=await oy(t,`${Kv}/session`,{method:`GET`,query:sy(e)});return n.kind===`disabled`||n.kind===`not-found`?ry(e):ey(n.payload,e)},async readMessage(e,n){let r=await oy(t,`${Kv}/message`,{method:`GET`,query:{...sy(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!Jv(r.payload))throw Error(`Invalid transcript cache record`);return $v(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await oy(t,`${Kv}/message`,cy(`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 ty(i.payload)},async removeMessage(e,n){let r=await oy(t,`${Kv}/message`,cy(`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 oy(t,`${Kv}/session`,cy(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await oy(t,`${Kv}/generation`,cy(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await oy(t,`${Kv}/evict`,cy(`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 ny(r.payload)},async clearAll(){let e=await oy(t,`${Kv}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var uy=`openchamber-transcript-durable`,dy=1,fy=`transcriptIndex`,py=`transcriptContent`,my=class extends Error{code;constructor(e){super(e),this.code=e}},hy=e=>({id:Xs(e.scope,e.messageID),scope:uc(e.scope),scopeKey:Ys(e.scope),generationKey:Zs(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}),gy=(e,t)=>({scope:uc(e.scope),messageID:e.messageID,info:lc(t.info),parts:lc(t.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),_y=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return gy(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},vy=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},yy=(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 my(`database-unavailable`));return}let r=indexedDB.open(e,dy),i=!1,a=()=>{i||(i=!0,n(new my(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(fy)){let t=e.createObjectStore(fy,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(py)||e.createObjectStore(py,{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}),xy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new my(`database-unavailable`)),r.onblocked=()=>void 0}),Sy=(e=uy)=>({transaction:async t=>{let n=await by(e),r=n.transaction([fy,py],`readwrite`),i=r.objectStore(fy),a=r.objectStore(py),o=e=>yy(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:()=>xy(e)});function Cy(e,t={}){let n=dc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(hy(t)),fc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(Ys(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=gy(t,r);a.lastAccessedAt=n(),await e.putIndex(hy(a)),i.push(a)}return pc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await _y(e,Xs(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=mc({info:i,incomingCompleteness:nc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=lc(a.slice()),c=nc(s),l=await ac(i,s),u=Xs(t,i.id);return e.transaction(async e=>{let a=await _y(e,u),o=mc({info:i,existing:a,incomingCompleteness:c,incomingHash:l.hash});if(o.status===`skipped`)return o.reason===`slim-downgrade`&&a?{status:`skipped`,reason:`slim-downgrade`,record:fc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:uc(t),messageID:i.id,info:lc(i),parts:s,partCompleteness:s.map(tc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:$s(i)};return await e.putIndex(hy(d)),await e.putContent({id:u,info:lc(i),parts:s}),{status:`written`,record:fc(d)}})},async removeMessage(t,n){await e.transaction(e=>vy(e,Xs(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(Ys(t));for(let t of n)await vy(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(Zs(t));for(let t of n)await vy(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(Ys)),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?Qs(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await vy(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 Cy(e.driver??Sy(e.databaseName),e)}function Ty(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??lt;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Ey=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Dy(e={}){let t,n,r=()=>(t??=(e.createHttpStore??ly)(),t),i=()=>(n??=(e.createIndexedDBStore??wy)(),n),a=()=>Ty(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=>Ey([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Oy(e={}){await Dy(e).clearAll()}var ky=(e,t)=>e<t?-1:+(e>t);function Ay(e){return e.filter(e=>!!e?.id).sort((e,t)=>ky(e.id,t.id))}async function jy(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await wg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=r.records.map(e=>({info:$f(e.info),parts:Ay(e.parts??[])}));if(!e.before&&!r.complete&&Pv(a).length>0){let t=B.getScopedSdkClient(e.directory);a=(await Fv({records:a,complete:r.complete,requestMessage:async n=>{let r=await Mv({transport:i(),generation:h(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:Ay(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Ay(e.parts??[])}))}return{records:a,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function My(e){let t=e.client??L,n=dg(),r=gg({client:t,activeRegistry:n}),a=Uv({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:i,getGeneration:h},fetcher:e=>jy({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:zm(),historyLimit:Bm(),durableStore:e.durableStore??Dy()}),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:r,probe:{getTransport:i,getGeneration:h}});return cu(a),Su(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),Su(null),a.destroy(),lu()}}}function Ny(e){return uu().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 Py=new Map;function Fy(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Iy(e,t,n,r={}){let a=r.getTransportIdentity??i,o=r.getGeneration??h,s=a(),c=o(),l=Fy(e,t,s,c),u=()=>a()===s&&o()===c,d=Py.get(l)??Promise.resolve(),f,p=new Promise(e=>{f=e}),m=d.catch(()=>void 0).then(()=>p);Py.set(l,m);try{if(await d.catch(()=>void 0),!u())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:s,generation:c,isCurrent:u})}finally{f(),Py.get(l)===m&&Py.delete(l)}}var Ly=new Set,Ry=new Set,zy=new Set,By=new Set,Vy={onDeleteRequest(e){return Ly.add(e),()=>{Ly.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||Ly.forEach(t=>t(e))},onCreateRequest(e){return Ry.add(e),()=>{Ry.delete(e)}},requestCreate(e){let t=e??{};Ry.forEach(e=>e(t))},onDirectoryRequest(e){return zy.add(e),()=>{zy.delete(e)}},requestDirectoryDialog(){zy.forEach(e=>e())},onGitRefreshHint(e){return By.add(e),()=>{By.delete(e)}},requestGitRefresh(e){e.directory.trim()&&By.forEach(t=>t(e))}},Hy=e=>e.trim(),Uy=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session status runtime changed`)},Wy=(e,t={})=>{let n=Hy(e),r=t.transport??i(),a=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,s=t.runtimeProbe??{},c=(s.getGeneration??h)();return et({queryKey:N.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{Uy(r,c,s);let t=o(),i=await a(n,e);if(Uy(r,c,s),i===null)throw Error(`session status snapshot unavailable`);return{snapshot:i,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},Gy=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(Wy(e,r))},Ky=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session active runtime changed`)},qy=(e={})=>{let t=e.transport??i(),n=e.loadActive??(e=>B.getSessionActive(e)),r=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??h)();return et({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{Ky(t,o,a);let i=r(),s=await n(e);return Ky(t,o,a),{result:s,requestedAt:i}},staleTime:0,gcTime:3e5,retry:!1})},Jy=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(qy(n))},Yy;function Xy(e){Yy=e}function Zy(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 Qy(e,t){return JSON.stringify(e)===JSON.stringify(t)}function $y(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function eb(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 tb(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=Zy(a[e]);if(t){s[e]=n&&$y(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function nb(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=Zy(t[o]);if(n&&n.type!==`idle`){Qy(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 rb(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function ib(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 Gy(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 Jy({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}=tb(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=rb(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),nb(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Yy;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 ab({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:ib(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var ob=50,sb=e=>{let t=Object.keys(e);if(t.length<=ob)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-ob).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},cb=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:sb(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:g(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),lb=new Set([`todowrite`,`todoread`]),ub=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),db=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),fb=(e,t)=>{cb.getState().setSessionTodos(e,t)},pb=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},mb=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},hb=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},gb=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=hb(n);e&&t.push(e)}return t},_b=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return gb(t);if(t&&typeof t==`object`)return gb(t.todos)}catch{}return[]},vb=e=>{if(!lb.has(pb(e)))return[];let t=mb(e);if(t&&ub.has(t))return[];let n=e.state,r=gb(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=gb(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=gb(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?_b(i):[]};function yb(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=vb(r[e]);if(t.length>0)return t}}return[]}function bb(e){if(!e.sessionID||e.isStale?.()||db(e.store.getState().todo,e.sessionID))return!1;let t=yb(e.transcript);return t.length===0||e.isStale?.()||db(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function xb(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:fb,isStale:e.isStale}):!1}var Sb=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>xS,COMBINED_SEND_PRESENCE_GRACE_MS:()=>bS,SESSION_DELETE_UNDO_MS:()=>Gx,abortBusySessionForMessageEdit:()=>FS,abortCurrentOperation:()=>ES,archiveSession:()=>tS,beginOptimisticSend:()=>dS,cancelScheduledSessionDeletes:()=>eS,classifySendFailure:()=>hx,combinedSendConfirmationOptions:()=>SS,commitMessageEdit:()=>LS,createSession:()=>zx,deleteSession:()=>Qx,dirStoreForDirectory:()=>ex,dismissOpenQuestionsForSession:()=>AS,ensureSentUserMessagePresence:()=>TS,fetchMessagesForSession:()=>US,fetchRecentSendConfirmationRecords:()=>vS,forkSession:()=>VS,getSendFailureKind:()=>px,getSessionLastAssistantModel:()=>ox,isQuestionRequestNotFoundError:()=>Ix,materializeConfirmedSendRecords:()=>yS,mirrorSessionIntoLiveStores:()=>cx,optimisticInsertUserMessage:()=>gS,optimisticSend:()=>hS,patchSessionMetadata:()=>Bx,refetchSessionMessages:()=>zS,rejectQuestion:()=>kS,releaseUnconfirmedQueueSend:()=>Zb,requestSessionSmartTitle:()=>iS,resolveForkMessageId:()=>Fb,respondToPermission:()=>DS,respondToQuestion:()=>OS,revertToMessage:()=>jS,rollbackOptimisticSend:()=>pS,scheduleSessionDeletes:()=>$x,setActionRefs:()=>Yb,setOptimisticRefs:()=>Xb,settleOptimisticSend:()=>mS,shareSession:()=>aS,shouldSuppressForkCopyEvent:()=>Lb,stageMessageEdit:()=>NS,trackForkCopySessionCreated:()=>jb,unarchiveSession:()=>nS,unrevertSession:()=>BS,unshareSession:()=>oS,updateSessionTitle:()=>rS,waitForConnectionOrThrow:()=>yx,waitForSessionIdleForMessageEdit:()=>IS}),Cb=2,wb=150,Tb=new Set([`patch`,`step-start`,`step-finish`]),Eb=3,Db=150,Ob=null,kb=new Map,Ab=3e4;function jb(e,t){let n=t?.id;!Ob||Ob.runtimeKey!==c()||Ob.directory!==e||!n||t?.title!==Ob.expectedTargetTitle||n===Ob.sourceSessionID||Ob.targetSessionID||(Ob.targetSessionID=n)}function Mb(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function Nb(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function Pb(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Fb(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 Ib(e,t){let n=Dp(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 Lb(e,t,n){if(Ob&&Ob.runtimeKey===c()&&Ob.directory===e&&t&&t===Ob.targetSessionID)return!0;if(!t||!n)return!1;let r=`${c()}:${e}:${t}`,i=kb.get(r);return i?i.expiresAt<=Date.now()?(kb.delete(r),!1):n<=i.messageID:!1}var Rb=null,zb=null,Bb=()=>``,Vb=new Map,Hb=null,Ub=null,Wb=null,Gb=e=>new Promise(t=>setTimeout(t,e));function Kb(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 qb(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Kb(e.error)}`);throw n!==void 0&&(r.status=n),r}function Jb(e,t){let n=qb(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Yb(e,t,n){if(Rb=e,zb=t,Bb=n,Vb.size>0){let e=[...Vb.values()];Vb.clear(),queueMicrotask(()=>{for(let t of e)US(t.sessionID,t.directory)})}}function Xb(e,t,n){Hb=e,Ub=t,Wb=n??null}function Zb(e){let t=e.directory??null;Ub?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Qb(){if(!Rb)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Rb}function $b(){if(!zb)throw Error(`Child stores not initialized`);let e=Bb();if(!e)throw Error(`No current directory`);return zb.ensureChild(e)}function ex(e,t){if(!zb)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return zb.ensureChild(e,t)}function tx(e,t){let n=t??Tx(e);return n?{store:ex(n),directory:n}:{store:$b(),directory:lx()}}function nx(e,t){let{store:n,directory:r}=tx(e,t??void 0),i=r??lx()??``;return{repository:H()??du(i,n),directory:i,store:n}}function rx(e,t){let{repository:n,directory:r,store:i}=nx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function ix(e,t){return Lu(rx(e,t).data)}function ax(e,t){return rx(e,t).data.messageOrder.length}function ox(e){try{let t=ix(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 sx(e,t){let n=zb;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]=Jw(e,n[r]),t.setState({session:i}),!0}return!1}function cx(e,t){t&&sx(e,t)||sx(e)}function lx(){return Bb()||void 0}function ux(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function dx(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 fx=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 px(e){return e instanceof fx?e.kind:null}function mx(e){let t=dx(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 hx(e,t){return t?mx(e)||dx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var gx=2e3,_x=5e3,vx=3e4;async function yx(){let e=xm();e&&bm(`send_stream_stale`);let t=Date.now()+(e?_x:gx);for(;Date.now()<t;){if(G.getState().isConnected&&!xm()||u()&&!xm())return;let e=t-Date.now();if(e<=0)break;if(await G.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!xm())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw ux()}function bx(e){return new Promise((t,n)=>{let r=setTimeout(()=>{bm(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},vx);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function xx(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Sx(e){e&&Y.getState().upsertSession(e)}function Cx(e,t){let n=Zf(t),r=[...e.getState().session],i=rs.search(r,n.id,e=>e.id);if(i.found){let t=Jw(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=xx(e);if(i)return Cx(t,i);try{return Cx(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 Tx(e){return Ex(e)||$.getState().getDirectoryForSession(e)||lx()}function Ex(e){let t=zb;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 Dx(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):Qb()}function Ox(e){wr.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&&wr.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var kx=()=>new Map(Array.from(Ed(),([e,t])=>[e,t.title||e]));function Ax(e){return!(e.type!==`file`||Vp(e))}function jx(e){return Ax(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function Mx(e){return e.some(jx)}async function Nx(e){let t=[...e.parts];if(!Mx(t))return t;let n=h(),r=e.directory??``;try{await vu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||h()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=nx(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],Mx(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function Px(e){if(Mx(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await nm(e.parts,{sessionTitles:kx(),directory:e.directory}),n=wr.getState(),r=n.getDraft(e.key);return{payload:t,commit:await sm({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function Fx(e,t,n){let r=zb;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 Ix(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 Lx(e,t){let n=zb;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 Rx(e,t,n){let r=Fx(e,t,n);return r?B.getScopedSdkClient(r):Dx(t)}async function zx(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??lx()),a=i.directory??null;return a&&vd(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 Bx(e,t,n){let r=t??Tx(e),i=n(Dp(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&vd(a.id,o),a}async function Vx(e,t){let n;try{n=await B.getSession(e,t??Tx(e))}catch{return}if(!jp(n))return;let r=Ap(n);if(r)try{await Bx(r,t??Tx(r),t=>Pp(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 Hx(e,t){if(!zb)return[];let n=[],r=new Set,i=[];if(t){let e=zb.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of zb.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 Ux(e){if(zb)for(let t of e){let e=zb.children.get(t.directory);e&&e.setState({session:t.sessions})}}function Wx(e){$.getState().setWorktreeMetadata(e,null)}var Gx=1e4,Kx=new Map,qx=0;function Jx(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function Yx(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),Ux(e.listSnapshots),Sx(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function Xx(e,t){let n=t??Tx(e);Y.getState().markSessionsPendingDeletion([e]);let r=Hx(e,n),i=xx(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 Zx(e,t){try{if(await Vx(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return Hx(e,t),Y.getState().removeSessions([e]),Wx(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(Hx(e,t),Y.getState().removeSessions([e]),Wx(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function Qx(e,t){let n=Xx(e);return await Zx(e,n.directory)?!0:(Yx(n),!1)}function $x(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>Xx(e)),i=`session-delete-${Date.now()}-${qx+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=Kx.get(i);if(!e)return;Kx.delete(i);let t=[],n=[];for(let r of e.entries)await Zx(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),Yx(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return Kx.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function eS(e){if(!e)return!1;let t=Kx.get(e);if(!t)return!1;clearTimeout(t.timer),Kx.delete(e);for(let e of[...t.entries].reverse())Yx(e);return!0}async function tS(e){let t=Tx(e),n=Hx(e,t),r=xx(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await Vx(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),Ux(n),Sx(r),!1}}async function nS(e){let t=Tx(e),n=xx(e),r=n?Jx(n):null;if(r&&(Y.getState().upsertSession(r),t&&zb)){let e=zb.children.get(t);e&&Cx(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=Jx(n);if(Y.getState().upsertSession(r),t&&zb){let e=zb.children.get(t);e?Cx(e,r):cx(r,t)}else cx(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&Hx(e,t)),!1}}async function rS(e,t){let n=Tx(e),r=xx(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Vf(r):0,c=await B.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),cx(c,n)}async function iS(e){let t=Tx(e),n=xx(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),cx(s,t)}async function aS(e){let t=Tx(e),n=Zf(Jb(await Qb().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),sx(n,t),n}async function oS(e){let t=Tx(e),n=Zf(Jb(await Qb().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),sx(n,t),n}function sS(e){let t=zb,n=e??Bb();if(!t||!n)return{store:e?ex(e):$b(),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 cS(){return{identity:i(),generation:h()}}function lS(e,t){return e.isCurrent()&&i()===t.identity&&h()===t.generation}function uS(e,t){if(!lS(e,t))throw Error(`Send target changed before transport dispatch`)}function dS(e){if(!Hb||!Ub)throw new fx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??lx()??null,n=sS(t),r=cS();uS(n,r),e.beforeOptimisticInsert?.(),uS(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),gS({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 fx?e:new fx(px(e)??hx(e,!1),e)}}function fS(e){if(!lS(e.capture,e.transport)||!Ub)return;Ub({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 pS(e){fS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function mS(e){if(!Hb||!Ub)throw new fx(`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 yx(),uS(n,r),s=!0,await bx(e.send(i)),!lS(n,r))throw new fx(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=px(c)??hx(c,s),u=c instanceof fx?c:new fx(l,c,i);if(!lS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await vS(a,i,o):null;if(d&&lS(n,r)){yS(n.store,a,i,d,{directory:o??void 0}),Wb?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||fS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function hS(e){await mS({ticket:e.ticket??dS({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 gS(e){if(!Hb)return!1;let t=e.directory??lx(),n=t?ex(t):$b(),r=t??lx()??``;if(CS(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),s={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},c=ov(()=>rx(e.sessionId,t).data);Hb({sessionID:e.sessionId,directory:t,message:s,parts:a});let l=ov(()=>rx(e.sessionId,t).data);try{c&&l&&sv({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:i(),generation:h(),before:c,after:l})}catch{}let u=n.getState();return n.setState({session_status:{...u.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...u.session_status_observed_at,[e.sessionId]:o}}),!0}function _S(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function vS(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??Cb,c=r?.retryDelayMs??wb;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!_S(r?.isCurrent)||a>0&&(await Gb(c),i?.signal.aborted||!_S(r?.isCurrent)))return null;try{let a=await Qb().session.messages({sessionID:e,directory:n??void 0,limit:Um(),...i?{signal:i.signal}:{}});if(!_S(r?.isCurrent))return null;let o=(qb(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 yS(e,t,n,r,i){if(!r.length)return;let a=i?.directory??Tx(t)??Bb(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:$f(e.info),parts:e.parts??[]})),skipPartTypes:Tb,merge:i?.gapFillOnly===!0?Us:Gs({purpose:`recovery`})};pu(o,s)||du(a,e).apply(o,s)}var bS=2e3,xS={attempts:12,retryDelayMs:500},SS={presenceGraceMs:bS,recovery:{...xS}};function CS(e,t,n,r){let i=r??Tx(t)??Bb()??``,a=H()??du(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??Tx(t)??Bb()??``;if(CS(e,t,n,i))return Promise.resolve(!0);if(!_S(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=H()??du(i,e),f=U(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!_S(r?.isCurrent)){l(!1);return}CS(e,t,n,i)&&l(!0)}),CS(e,t,n,i)&&l(!0)})}async function TS(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await wS(t,n,r,{timeoutMs:e.graceMs??SS.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!_S(a))return`cancelled`;let o=await vS(n,r,i,{...SS.recovery,isCurrent:a});return o?_S(a)?(yS(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:_S(a)?`missing`:`cancelled`}async function ES(e){let{store:t,directory:n}=tx(e),r=n?{state:`bound`,transportIdentity:i(),directory:n,sessionID:e}:null,a=r?$.getState().beginQueueAbortBlock(r):null;try{if(Jb(await Qb().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&a&&$.getState().clearQueueAbortBlock(r,a),Xe(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>Jz);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function DS(e,t,n){await yx();let r=Fx(`permission`,e,t)||Tx(e)||lx();if(Jb(await Rx(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function OS(e,t,n){await yx();let r=Fx(`question`,e,t)||Tx(e)||lx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Jb(await Rx(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw Ix(n)&&Lx(e,t),n}}async function kS(e,t){await yx();let n=Fx(`question`,e,t)||Tx(e)||lx();try{if(Jb(await Rx(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw Ix(n)&&Lx(e,t),n}}async function AS(e){if(!e)return!1;let t=zb;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Ip(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)Lx(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await kS(e,t)}catch(e){if(Ix(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function jS(e,t,n){let r=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return Iy(e,r??(()=>{try{return tx(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:o,directory:c}=tx(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Qb().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=ix(e,c).find(e=>e.id===t),d=ix(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}=nx(e,c),m=[...f.getParts(U(p,e),t)],h=a===void 0?s?C({transportIdentity:i()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await Nx({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await nm(m,{sessionTitles:kx(),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=wr.getState(),r=await sm({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 lm({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 lm({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&&Vy.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 lm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await lm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function MS(e,t,n,r){let a=r??Tx(t)??Bb(),o=U(a,t),s=ov(()=>rx(t,a).data),c=[...fu(t)];c.some(e=>e.directory===a&&e.sessionID===t)||c.push(o);let l=!1;for(let e of c)pu(e,{type:`remove-message`,messageID:n})!=null&&(l=!0);l||du(a,e).apply(o,{type:`remove-message`,messageID:n});let u=ov(()=>rx(t,a).data);try{s&&u&&sv({trigger:`user-delete`,sessionID:t,directory:a,transport:i(),generation:h(),before:s,after:u})}catch{}}async function NS(e,t,n,r){let a=n?.info,o=n?.parts,s=r?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=tx(e,s).directory}else{c=tx(e,s).directory;let{data:n}=rx(e,c),r=Lu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=r?.draftKey??C({transportIdentity:i()},e),{commit:u}=await Px({key:l,parts:await Nx({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 lm({key:l,restoredRevision:d,previous:f})).status})}}function PS(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 FS(e,t){let n=t?.directory,{store:r,directory:i}=tx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Qb().session.abort({sessionID:e,directory:i})}catch{}}async function IS(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=tx(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 LS(e,t,n){let r=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:s}=tx(e,r),c=ov(()=>rx(e,r).data);try{await FS(e,{directory:r}),await IS(e,{directory:r});let n=new Set((await RS(e,r)).map(e=>e.id)),i=PS(t,ix(e,r),n,{preserveMessageId:a});for(let t of[...i].reverse())await B.deleteSessionMessage(e,t.id,s),MS(o,e,t.id,s)}finally{try{let t=ov(()=>rx(e,r).data);c&&t&&sv({trigger:`user-edit`,sessionID:e,directory:s,transport:i(),generation:h(),before:c,after:t})}catch{}}}async function RS(e,t){let{directory:n}=tx(e,t);return(qb(await Qb().session.messages({sessionID:e,directory:n,limit:Hm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>$f(e.info))}async function zS(e,t){let{store:n,directory:r}=tx(e,t),a=ov(()=>rx(e,t).data),o=(qb(await Qb().session.messages({sessionID:e,directory:r,limit:Hm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=ov(()=>rx(e,t).data);a&&n&&sv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let s=o.map(e=>({info:$f(e.info),parts:e.parts??[]})),c=U(r??Bb(),e);pu(c,{type:`materialize-snapshots`,records:s,skipPartTypes:Tb})||du(r??Bb(),n).apply(c,{type:`materialize-snapshots`,records:s,skipPartTypes:Tb});try{let n=ov(()=>rx(e,t).data);a&&n&&sv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return s.map(e=>e.info)}async function BS(e,t){return Iy(e,t??(()=>{try{return tx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=tx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=ax(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Qb().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Qb().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Jb(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<Eb;r+=1){if(r>0&&(await Gb(Db),!n())||(await zS(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(ax(e,i)>o)return}if(ax(e,i)<=o){let n=i??Bb(),a=H()??du(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await zS(e,t)}})}async function VS(e,t,n,r){let i=c(),{store:a,directory:o}=tx(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await wx(e,a,o);vd(e,o);let l=a.getState(),u=l.session_status[e],d=ix(e,o);u?.type,d.length;let f=Fb(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await zS(e),l=a.getState(),u=l.session_status[e],d=ix(e,o),f=Fb(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:ax(e,o)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=rx(e,o),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(U(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!Vp(e)).map(e=>e.text||e.content||``).join(`
|
|
460
|
+
`),l=[];for(let e of o){let t=tm(e);t&&l.push(t)}for(let e of[...l].reverse())em(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=em(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:`)?Yp(t):null;if(o){let e=Qp(o,r),t=null;for(let n of e){let e=em(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=Kp(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 $p(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(Wp(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}},rm=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 $p(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(Wp(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}},im=e=>e?JSON.parse(JSON.stringify(e)):null,am=e=>e?{...e}:{},om=(e,t=wr.getState())=>{let n=t.getDraft?.(e)??null,r=am(t.draftAttachmentViews?.[R(e)]);return{record:im(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},sm=async e=>{let t=e.input??wr.getState(),n=om(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}},cm=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}}},lm=async e=>{let t=e.input??wr.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?cm({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},um=(e,t,n)=>{let r=n.getDraft(e);if(r)return[...r.attachments,...r.syntheticParts.flatMap(e=>e.attachments)].find(e=>e.attachmentID===t)?.attachmentRefID},dm=e=>e?.status===`committed`&&e.current===!0,fm=new Map,pm=async(e,t)=>{let n=R(e),r=fm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);fm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),fm.get(n)===o&&fm.delete(n)}},mm=(e,t)=>({key:e,addLocal:async n=>{await pm(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await pm(e,async()=>{let r=t(),i=um(e,n,r);if(!i)return!(r.getDraft(e)&&[...r.getDraft(e)?.attachments??[],...r.getDraft(e)?.syntheticParts.flatMap(e=>e.attachments)??[]].some(e=>e.attachmentID===n));try{await r.removeDraftAttachment(e,i)}catch{}let a=r.getDraft(e);return!a||![...a.attachments,...a.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.attachmentID===n)})}catch{return!1}},clearRootAttachments:async()=>{try{return await pm(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 pm(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:dm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await pm(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await pm(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await pm(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),hm=4e4,gm=0,_m=null;function vm(e=Date.now()){gm=e}function ym(e){return _m=e,()=>{_m===e&&(_m=null)}}function bm(e){_m?.(e)}function xm(e=Date.now(),t=hm){return gm<=0?!1:e-gm>=t}var Sm=3e4,Cm=200,wm=new Map;function Tm(e,t,n){return`${n?.transport??i()}\n${n?.generation??h()}\n${e.trim()}\n${t}`}function Em(e,t,n){if(!e||!t)return!1;let r=wm.get(Tm(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Sm}function Dm(e,t,n){if(!e||!t)return;let r=Tm(e,t,n);for(wm.has(r)&&wm.delete(r);wm.size>=Cm;){let e=wm.keys().next().value;if(typeof e!=`string`)break;wm.delete(e)}wm.set(r,n?.now??Date.now())}var Om=768,km=()=>{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},Am=()=>{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<=Om&&km()?`mobile`:`desktop`},jm=()=>Am()===`mobile`,Mm=3,Nm=2,Pm=4,Fm=4,Im=100,Lm=30;function Rm(){return d()?`relay`:`local`}function zm(e=Rm()){return e===`relay`?Nm:Mm}function Bm(e=Rm()){return e===`relay`?Fm:Pm}function Vm(e){return zm(Wm(e))}function Hm(){return Im}function Um(){return Lm}function Wm(e){return e===`relay`||e===`local`?e:Rm()}var Gm=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function Km(){return{pages:[],pageParams:[]}}function qm(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 Jm(e){return{pages:Object.freeze(e.pages.map(qm)),pageParams:Object.freeze([...e.pageParams])}}function Ym(e,t,n=Gm){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 qm({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function Xm(e){if(!e||e.pages.length===0)return Zc;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 Zm(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=Xm(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function Qm(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function $m(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 qm({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:Qm(t)}})}function eh(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 Jm({pages:[$m(`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=$m(`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(nh(i,o,s,a)),_.push(e.pageParams[r]??null)}return Jm({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?nh(t,r===`reconcile-page`?th(i,p):[...i,...p],s,a):nh(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]=qm({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return Jm({pages:m,pageParams:[...e.pageParams]})}function th(e,t){let n=e.slice();for(let e of t){let t=$s(e),r=n.length;for(let e=0;e<n.length;e+=1)if(Qs(t,$s(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function nh(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&&rh(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||ah(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:qm({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:Qm(t)}})}function rh(e,t){return e===t||e.id===t.id&&e===t}function ih(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 ah(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!ih(e[n],t[n]))return!1;return!0}function oh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function sh(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 ch(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=eh(e??Km(),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&&ah(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 Jm({pages:e.pages.map((t,n)=>nh(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function lh(e,t){let n=Zm(e,t),r=Xm(e),i={message:{...n.message,[t]:[...n.message[t]??[]]},part:{...n.part}};for(let[e,t]of Object.entries(i.part))t&&(i.part[e]=[...t]);return{draft:i,previousBoundary:r}}function uh(e,t,n,r){if(!xl(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=lh(e,t),o=js(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=sh(n),c=new Set;return s&&c.add(s),{data:ch(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function dh(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 fh(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 ph(e){return e?e.map(e=>e.id).filter(e=>typeof e==`string`):[]}function mh(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=lh(e,t),o=!1,s=0,c,l=new Set,u=dh(e),d=fh(e),f=ph(i.message[t]);for(let e of n){if(!xl(e.type))continue;o=!0;let n=js(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=sh(e),m=ph(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&&ah(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&&rh(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:ch(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function hh(e,t,n,r,i){let a=e&&e.pages.length>0?e:Jm({pages:[$m(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=Zm(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]:oh(r)};return{data:Jm({pages:a.pages.map((e,t)=>t===a.pages.length-1?nh(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]?nh(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 gh(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:Jm({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 nh(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function _h(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=Zm(e,t),i=Gc({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:Xm(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=Jm({pages:[$m(`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:Xm(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=Jm({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?nh(t,th(r,l),o,a):nh(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:Xm(u)}}}function vh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=ol(Zm(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:eh(e,t,{message:i.message,part:i.part,messages:i.messages,boundary:i.boundary},n.purpose,n.page,r),result:{applied:!0,changed:i.changed,boundary:i.boundary,meta:i.meta,confirmedOptimisticIDs:i.confirmedOptimisticIDs}}:{data:e,result:{applied:!1,changed:!1,error:i.error}}}case`sse-event`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return uh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return mh(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return hh(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 gh(e,n.messageID,t)}case`durable-seed`:return _h(e,t,n);case`reset`:return n.page?vh(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 yh(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 bh(e,t,n,r=`materialize`){return vh(e,n,{type:`http-page`,purpose:r,page:yh(t),liveRevision:t.sync.liveRevision}).data}function xh(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return Jm(t);if(t.pages.length===e.pages.length){let r=Th(e,t);if(r===e)return e;if(wh(e,t)||Ch(e,t))return r;let i=t.pages[t.pages.length-1];return bh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return vh(e,n,{type:`http-page`,purpose:`prepend`,page:yh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return bh(e,r,n)??Jm(t)}return Jm(t)}function Sh(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Ch(e,t){let n=Sh(e),r=Sh(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=Eh(e,``),a=Eh(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function wh(e,t){let n=Sh(e);if(n.size===0)return!1;let r=Sh(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=Eh(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||Qs($s(t),$s(n))>0)return!1}return!0}function Th(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,qm(t))});return!n&&e.pageParams.length===t.pageParams.length?e:Jm({pages:r,pageParams:[...t.pageParams]})}function Eh(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:Xm(e),liveRevision:a}}var Dh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Oh=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},kh=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Ah=e=>e.trim(),jh=e=>e?.trim()||`tail`,Mh=new Set([502,503,504]),Nh=[`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 Ph(e){if(!e||e instanceof Dh||e instanceof Oh)return!1;if(e instanceof kh)return e.status>=400&&e.status<500?!1:Mh.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(Mh.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(Mh.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:Nh.some(e=>n.includes(e))}function Fh(e,t){return e>=2?!1:Ph(t)}var Ih=(e,t=i(),n=h())=>[t,n,`sessionMessages`,`page`,Ah(e.directory),e.sessionID,e.limit,jh(e.before)],Lh=(e,t=i(),n=h())=>[t,n,`session-transcript`,Ah(e.directory),e.sessionID];function Rh(e){if(!e||typeof e!=`object`)throw new Oh(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Oh(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Oh(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Oh(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Oh(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Oh(`session message page: cursor must be string when set`);return e}var zh=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}:{}})},Bh=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw new Dh},Vh=(e,t,n=i(),r={},a=(r.getGeneration??h)())=>{let o=Ah(e.directory),s=e.sessionID,c=e.limit,l=e.before?.trim()||void 0;return{queryKey:Ih({directory:o,sessionID:s,limit:c,before:l},n,a),queryFn:async({signal:e})=>{Bh(n,a,r);let i=await t({directory:o,sessionID:s,limit:c,before:l,signal:e});return Bh(n,a,r),zh(Rh(i))},staleTime:1/0,gcTime:3e5,retry:Fh,retryDelay:e=>Math.min(500*2**e,4e3)}},Hh=(e,t,n=L,r=i(),a={},o=(a.getGeneration??h)())=>n.fetchQuery(Vh(e,t,r,a,o));function Uh(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 Wh(e){return zh({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function Gh(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function Kh(e){let t=Ah(e.directory),n=e.sessionID,r=e.transport??i(),a=e.probe??{},o=e.generation??(a.getGeneration??h)(),s=e.initialLimit??zm(),c=e.historyLimit??Bm(),l=e.client??L,u=Lh({directory:t,sessionID:n},r,o),d=async t=>Wh(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:u,queryFn:async e=>{Bh(r,o,a);let i=e.pageParam?.trim()||void 0,u=i?c:s,f=i?`prepend`:`initial`,p=await Hh({directory:t,sessionID:n,limit:u,before:i},d,l,r,a,o);Bh(r,o,a);let m=Uh(p);return Ym(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:Gh,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:Fh,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>xh(e,t,n)}}function qh(e){let t=e.client??L,n=Kh({...e,client:t}),r=new Qe(t,{...n,structuralSharing:(t,n)=>xh(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 Jm(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return Jm(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:Jm(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return Jm(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:Jm(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function Jh(e,t,n,r){let i=e.getQueryData(t),a=vh(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 Yh(e,t=L,n=i(),r=h()){return t.getQueryData(Lh(e,n,r))}function Xh(){return v()||jm()}function Zh(){return v()?4:jm()?12:40}var Qh=1048576,$h=4*Qh,eg=12*Qh,tg=40*Qh;function ng(){return v()?$h:jm()?eg:tg}var rg=e=>e.trim();function ig(e){return{transport:e.transport,generation:e.generation,directory:rg(e.directory),sessionID:e.sessionID}}function ag(e){let t=ig(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function og(e){return`${e.transport}\n${e.generation}\n${rg(e.directory)}`}var sg={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function cg(e,t,n){return[t,n,sg.taskRoot,sg.reconcileTaskKind,rg(e.directory),e.sessionID,e.checkpoint]}function lg(e,t,n){return[t,n,sg.checkpoint,rg(e.directory),e.sessionID]}function ug(e){let t=ig(e);return[{queryKey:Lh({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,sg.transportPageRoot,sg.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,sg.taskRoot,sg.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,sg.taskRoot,sg.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:lg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function dg(){let e=new Map;return{retain(t){let n=ig(t),r=ag(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(ag(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(ag(t))?.count??0},clear(){e.clear()}}}function fg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var pg=3e4;function mg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function hg(e){return!Array.isArray(e)||e.length<5||e[2]!==sg.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 gg(e){let t=e.client,n=e.activeRegistry??dg(),r=e.counters??fg(),i=e.getLimit??Zh,a=e.now??Date.now,o=e.minResidencyMs??pg,s=new Map,c=e=>{let t=ag(ig(e));s.set(t,a())},l=e=>{let t=ag(ig(e)),n=s.get(t);return n!==void 0&&a()-n<o},u=e=>{let r=ig(e);if(n.isRetained(r))return!0;let i=Lh({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:rg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=hg(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:mg(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(ag(ig(e)));for(let t of ug(e))f(t)},m=(e,t)=>{r.purgeGeneration+=1;let n=[[e,t,sg.canonical],[e,t,sg.transportPageRoot,sg.transportPageKind],[e,t,sg.taskRoot],[e,t,sg.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=>ag(ig(e)))),o=d({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=og(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=ag(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(ag(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 _g=3e4,vg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function yg(e,t=_g){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 bg=e=>e?e.toLowerCase().includes(`application/json`):!1,xg=e=>e?e.toLowerCase().includes(`text/html`):!1;function Sg(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 Cg(e){let t=e.turns??Bm(),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:_g;return yg((async()=>{let a=await F(n,{method:`GET`,query:r,signal:vg(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(xg(o))throw Error(`session turn page: unexpected HTML response`);bg(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Sg(s,t)})(),i)}async function wg(e){let t=e.purpose===`prepend`&&e.before?Bm():zm();return Cg({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var Tg=3e4,Eg=2,Dg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),Og=e=>e?e.toLowerCase().includes(`text/html`):!1,kg=e=>new Promise(t=>{setTimeout(t,e)});function Ag(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Oh(`session transcript reconcile: ${t} must be string or null`);return e}function jg(e){if(!e||typeof e!=`object`)throw new Oh(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Oh(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Oh(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Oh(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Oh(`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 Oh(`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 Oh(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=Ag(t.capturedHeadMessageID,`capturedHeadMessageID`),r=Ag(t.latestHeadMessageID,`latestHeadMessageID`),i=Ag(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Oh(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Oh(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Oh(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Oh(`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 Oh(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Oh(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Oh(`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 Oh(`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 Mg(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 Oh(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function Ng(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),yg((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:Dg(e.signal,n)})}catch(e){throw e instanceof Dh||e instanceof Oh||e instanceof kh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new kh(t.status,`session transcript reconcile failed (${t.status})`);if(Og(t.headers.get(`content-type`)))throw new Oh(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Oh(`session transcript reconcile: malformed JSON`)}return jg(a)})(),n)}async function Pg(e){let t=Mg(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:Tg,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):Eg,i=e.sleep??kg,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await Ng(e,t,n)}catch(t){if(t instanceof Dh||t instanceof Oh||t instanceof kh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!Ph(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var Fg=`GitHub issue context (JSON)`,Ig=`GitHub pull request context (JSON)`,Lg=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,Rg=(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}},zg=e=>{let t=Rg(e,Fg);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!Lg(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=Rg(e,Ig);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!Lg(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},Bg=(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`))},Vg=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),Hg=e=>e.trim()===`/compact`,Ug=(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`&&(Vg(t)||Hg(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 Bg(t,n)||r.startsWith(Fg)||r.startsWith(Ig)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=zg(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},Wg=e=>e?.length?Ug(e).length>0:!1,Gg=`oc_asst_session_divider:`,Kg=[],qg=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),Jg=(e,t=0)=>({info:{id:`${Gg}${e}`,role:`system`,time:{created:t}},parts:[]}),Yg=e=>e.slice().reverse().flatMap(e=>e.entries),Xg=(e,t,n=Kg)=>{if(!e.length)return Kg;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(Jg(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?Kg:t_(n,r)?n:r},Zg=(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},Qg=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=Zg(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 Wg(e.parts)?e:Wg(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}:{}}},$g=(e,t,n,r=Kg)=>{if(!t)return n.length>0?Array.from(n):Kg;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:Qg(e,t?.message),order:t?.order??a++})}if(i.size===0)return Kg;let o=[...i.values()].sort((e,t)=>Number(e.message.info.time?.created??0)-Number(t.message.info.time?.created??0)||e.order-t.order).map(({message:e})=>e);return t_(r,o)?r:o},e_=(e,t)=>{if(!qg(e)||!qg(t))return!1;let n=Number(e.info.time?.created??0),r=Number(t.info.time?.created??0);return e.info.id===t.info.id&&n===r},t_=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||!(r===i||e_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},n_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),r_=e=>e.startsWith(Gg);function i_(e,t){if(!e?.id||r_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(n_(t,`subtask`)||n_(t,`compaction`)||t.every(e=>Vp(e))):!1}function a_(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.messagesByID[n],i=e.partsByMessageID[n];if(i_(r,i))return n}return null}function o_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function s_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:a_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:o_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function c_(e,t){return{...e,...t}}function l_(e,t){let n=lg({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 u_(e,t){let n=lg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function d_(e,t){let n=lg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function f_(e){return e.slim===!0}var p_=/bearer|token|authorization|password|secret|cookie/i;function m_(e){return typeof e==`string`&&e.includes(`-`)}var h_=`openchamber.client-diagnostics.enabled`;function g_(e){return e===`true`||e!==`false`&&null}function __(e){return e.preference===!0||e.preference!==!1&&m_(e.version)}function v_(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function y_(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function b_(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 x_(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return p_.test(t)?`redacted-error`:t}function S_(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)f_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function C_(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function w_(e){let t=0;for(let n of e.messageOrder)I_(e.messagesByID[n])===!0&&(t+=1);return t}function T_(e){let t=e.transcript?S_(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:C_(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:w_(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...x_(e.error??e.request?.error)?{error:x_(e.error??e.request?.error)}:{},...b_(e.error)===void 0?{}:{httpStatus:b_(e.error)}}}function E_(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 D_(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 O_(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return e.event.type===`message.part.delta`?null:`sse-event`;case`sse-event-batch`:return`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function k_(e){if(e.type===`http-page`)return e.purpose}function A_(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function j_(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 M_(e){return e.__openchamberOptimistic===!0}function N_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function P_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var F_=e=>typeof e==`string`&&e.trim().length>0;function I_(e){if(!e||N_(e)!==`assistant`)return;let t=e,n=!F_(t.mode)&&!F_(t.agent),r=!F_(t.modelID)||!F_(t.providerID);return n||r}function L_(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function R_(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)f_(e)?r+=1:i+=1,M_(e)&&(a=!0);let o=e.messagesByID[t],s=N_(o),c=I_(o);return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:P_(o),...s?{role:s}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function z_(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:L_(e),after:L_(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 B_(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:z_(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}:{}}}var V_=`openchamber-transcript-diagnostics`,H_=`events`,U_=1,W_=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),G_=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,U_);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(H_)||e.createObjectStore(H_,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),K_=(e=V_)=>({async append(t,n){let r=await G_(e);try{let e=r.transaction(H_,`readwrite`).objectStore(H_);await W_(e.add(t));let i=await W_(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await W_(e.delete(t))}finally{r.close()}},async read(){let t=await G_(e);try{return await W_(t.transaction(H_,`readonly`).objectStore(H_).getAll())}finally{t.close()}},async clear(){let t=await G_(e);try{await W_(t.transaction(H_,`readwrite`).objectStore(H_).clear())}finally{t.close()}}});function q_(e={}){let t=e.driver??K_(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var J_=Je(`OpenChamberMedia`);function Y_(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function X_(){return lt()&&Ye!==void 0&&Ye.isPluginAvailable(`OpenChamberMedia`)}function Z_(){return`1.17.1`}function Q_(){if(typeof localStorage>`u`)return null;try{return g_(localStorage.getItem(h_))}catch{return null}}function $_(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(h_,e?`true`:`false`)}catch{}}function ev(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var tv;function nv(e=Z_()){return __({version:e,preference:Q_()})}function rv(e={}){return D_({sink:ev()===`indexeddb`?(e.createIndexedDBSink??q_)():(e.createMemorySink??E_)(),isEnabled:e.isEnabled??nv})}function iv(){return tv??=rv(),tv}function av(e){iv().record(e)}function ov(e){try{return nv()?R_(e()):void 0}catch{return}}function sv(e){try{av(B_(e))}catch{}}function cv(e){let t=O_(e.command);t&&av(T_({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:k_(e.command),sseType:A_(e.command),source:j_(e.command),error:e.error}))}async function lv(){let e=await iv().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 uv(e,t=v_()){if(X_())return(await J_.saveFile({dataBase64:Y_(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 dv(){let e=await lv(),t=v_();return{content:e,fileName:t,outcome:await uv(e,t),eventCount:y_(e)}}function fv(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 pv=2,mv=6e4;function hv(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??i)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??h)()}}function gv(e,t){let n=(t.probe?.getTransport??i)(),r=(t.probe?.getGeneration??h)();if(n!==e.transport||r!==e.generation)throw new Dh}function _v(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function vv(e,t){return ig({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function yv(e,t){return`${e.trim()}\n${t}`}function bv(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??gg({client:t,activeRegistry:dg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??pv)),o=e.fetchReconcile??Pg,s=e.now??Date.now,c=!1,l=0,u=new Map,d=new Map,f=new Map,p=new Map,m=new Set,g=new Map,_=new Set,v=(e,t)=>{m.add(yv(e,t))},y=(e,t)=>{m.delete(yv(e,t))},b=e=>{let t=d.get(e);t&&(t.abort(),d.delete(e)),u.delete(e)},x=e=>{l+=1;for(let e of[...d.keys()])b(e);f.clear(),p.clear()},S=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(yv(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of r.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&i.set(yv(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(i.values())},C=(t,n)=>{let i=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of r.listCanonical({transport:t.transport,generation:t.generation}))i.add(e.scope.directory);for(let e of r.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&i.add(e.directory);for(let e of n)e.directory&&i.add(e.directory.trim());return i},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=yv(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=i=>{if(c)return;let a={transport:i.transport??hv(e).transport,generation:i.generation??hv(e).generation},o=s(),l=w(),u=C(a,l),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(yv(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of r.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(yv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of l)f.set(yv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(yv(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=_v(e,a),s=n.getTranscript(r),c=s_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:i.lastEventID,capturedAt:o});u_(t,c)}let p=new Set;for(let t of u){let n=fv({directory:t,activeScopes:S(a,t),viewedSessions:l,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(yv(e.directory,e.sessionID))}for(let e of d){let t=yv(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=ov(()=>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=ov(()=>n.getTranscript(e));i&&t&&sv({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(gv({transport:i.transport,generation:i.generation},e),a!==l)throw new Dh;u_(t,c_(l_(t,i)??s_({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=ov(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),gv({transport:i.transport,generation:i.generation},e),a!==l)throw new Dh;d_(t,i),y(i.directory,i.sessionID);try{let e=ov(()=>n.getTranscript(r));o&&e&&sv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw u_(t,c_(l_(t,i)??s_({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(gv({transport:i.transport,generation:i.generation},e),a!==l)throw new Dh;u_(t,c_(l_(t,i)??s_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=ov(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),gv({transport:i.transport,generation:i.generation},e),a!==l)throw new Dh;d_(t,i),y(i.directory,i.sessionID);try{let e=ov(()=>n.getTranscript(r));o&&e&&sv({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 u_(t,c_(l_(t,i)??s_({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,c)=>{let u=_v(r,i),d=vv(r,i),f=cg({directory:d.directory,sessionID:d.sessionID,checkpoint:String(l_(t,d)?.capturedAt??s())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:s()});try{if(gv(i,e),a!==l||c.aborted)throw new Dh;let p=l_(t,d);if(p||(p=s_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(u),lastEventID:null,capturedAt:s()}),u_(t,p)),!p.anchorMessageID){await O(u,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:s()});return}p=c_(p,{state:`reconciling`}),u_(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,gv(i,e),a!==l||c.aborted)throw new Dh;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,gv(i,e),a!==l||c.aborted)throw new Dh;let h=n.getTranscript(u).liveRevision;if(!g&&!m){await O(u,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:s()});return}let y=await o({sessionID:r.sessionID,directory:r.directory.trim(),...g?{continuation:g}:{anchor:m},signal:c});if(gv(i,e),a!==l||c.aborted)throw new Dh;if(y.resetRequired){await D(u,d,a),t.setQueryData(f,{status:`reset`,finishedAt:s()});return}if(b===1&&(_=y.capturedHeadMessageID),v=y.latestHeadMessageID??v,y.records.length>0&&E(u,y,h),p=c_(l_(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),u_(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=c_(l_(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),u_(t,p);continue}p=c_(l_(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),u_(t,p),y(r.directory,r.sessionID),t.setQueryData(f,{status:`complete`,finishedAt:s()});return}await D(u,d,a),t.setQueryData(f,{status:`reset`,finishedAt:s()})}catch(n){if(n instanceof Dh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(f,{status:`cancelled`,finishedAt:s()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(f,{status:`error`,finishedAt:s(),code:n instanceof Error?n.name:`error`}),n}},A=t=>{let n=t.trim(),r=p.get(n)??0;if(r>=a)return;let i=f.get(n);if(!i||i.length===0)return;let o=i.shift();p.set(n,r+1);let s=yv(o.directory,o.sessionID);if(u.has(s)){p.set(n,(p.get(n)??1)-1),A(n);return}let c=hv(e),m=l,h=new AbortController;d.set(s,h);let g=(async()=>{try{await k(o,c,m,h.signal)}catch{}finally{d.delete(s),u.delete(s),p.set(n,Math.max(0,(p.get(n)??1)-1)),A(n)}})();u.set(s,g)},j=e=>{let t=e.directory.trim(),n=yv(t,e.sessionID);if(u.has(n))return;let r=f.get(t);r||(r=[],f.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),A(t))},ee=t=>{let n=w(),i=C(t,n);for(let a of i){let i=fv({directory:a,activeScopes:S(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)j(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=yv(e.scope.directory,e.scope.sessionID);i.some(e=>yv(e.directory,e.sessionID)===t)||v(e.scope.directory,e.scope.sessionID)}}},te=t=>{if(c||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??i)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??h)(),a=(e.probe?.getTransport??i)();if(r!==n.generation||a!==n.transport){x(`generation_mismatch`);return}ee(n)},M=t=>{if(c)return;let r=t.directory.trim(),i=hv(e,t),a=_v({directory:r,sessionID:t.sessionID},i),l=ag(vv({directory:r,sessionID:t.sessionID},i)),d=g.get(l);if(d&&s()-d.checkedAt<mv||_.has(l)||u.has(yv(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(_.add(l),(async()=>{try{if(gv(i,e),c)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(gv(i,e),c||(g.set(l,{checkedAt:s()}),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(l)}})())};return{captureCheckpoints:T,onCompensation:te,ensureOnObserve:async r=>{if(c)return null;let i=r.directory.trim(),a=yv(i,r.sessionID);if(!m.has(a))return M(r),null;y(i,r.sessionID);let o=hv(e,r),s=_v({directory:i,sessionID:r.sessionID},o),l=vv({directory:i,sessionID:r.sessionID},o),d=l_(t,l);if(d&&d.state!==`complete`&&d.anchorMessageID){j({directory:i,sessionID:r.sessionID});let e=u.get(a);return e&&await e,n.getTranscript(s)}try{gv(o,e);let r=await n.ensureInitial(s);return d_(t,l),r}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:x,getCheckpoint:n=>{let r=hv(e,n);return l_(t,vv({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>u.has(yv(e,t)),destroy:()=>{c=!0,x(`destroy`)}}}function xv(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Sv(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 Cv(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(Ys(e))??Promise.resolve(),r.get(Zs(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=Ys(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=Zs(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??ng)();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 Tv=new Map;function Ev(e,t){let n=Tv.get(e);if(n)return n;let r=t().finally(()=>{Tv.get(e)===r&&Tv.delete(e)});return Tv.set(e,r),r}var Dv=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Ov(e){return Ev(Dv(e),e.request)}function kv(e,t){return`${e}\n${t}`}var Av=new Map;function jv(e){return Av.get(e)}async function Mv(e){return Ov({runtimeKey:kv(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 Av.set(r.id,i),{info:$f(r),parts:i}}})}function Nv(e,t){let n=e.info;return n.role===t||n.clientRole===t}function Pv(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Nv(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 Fv(e){if(e.complete){let t=e.records.some(e=>Nv(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=Pv(e.records);if(t.length===0){let t=e.records.some(e=>Nv(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=>Nv(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Iv(e){return e.trim()}function Lv(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??i)(),r=e.generation??t.generation??(t.probe?.getGeneration??h)();return{directory:Iv(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function Rv(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:Zc,liveRevision:0}}function zv(e,t){if(!e||e.pages.length===0)return Rv(t);let n=Eh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function Bv(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function Vv(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function Hv(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=Bv(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=Bv(e.messagesByID[t]);a===void 0||a<=n||Vv(e.partsByMessageID[t])||i.push(t)}return i}function Uv(e={}){let t=e.client??L,n=e.cacheBudget??gg({client:t,activeRegistry:e.activeRegistry??dg()}),r=n.activeRegistry,a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=e.durableStore?wv(e.durableStore,{getProtectScopes:()=>r.listRetained().map(xv),getByteBudget:e.getDurableByteBudget}):void 0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=zv(w(e),t.sessionID);!gl(r)&&!v.has(n)||(y.add(n),av(T_({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=l.get(e);return t||(t={messages:new Map,parts:new Map},l.set(e,t)),t},w=n=>{let r=Lv(n,e);return Yh({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=Lv(t,e);return Lh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=Lv(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let r=e.probe??{getTransport:i,getGeneration:h},o=Lv(n,{...e,transport:void 0,generation:void 0,probe:r}),s=K(o),c=a.get(s);if(c)return c;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=qh({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(s,l),l},k=t=>{let n=K(Lv(t,e));l.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(Lv(n,e));if(s.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});s.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=s.get(e);n&&(n(),s.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of p.keys())t.startsWith(e)&&p.delete(t);for(let t of m.keys())t.startsWith(e)&&m.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of p)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of m.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=Lv({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{u&&u.persistSettled(xv(e),t,n??[])},le=(e,t,n,r)=>{if(!u||S>0||!r.applied||!r.changed)return;let i=xv(t);if(n.type===`remove-message`){u.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(u.clearSession(i),n.page){let r=zv(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=zv(w(e),t.sessionID);for(let e of r){let n=Cv(e);if(n.action===`remove`){u.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=zv(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:i,getGeneration:h},s={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??zm()};return Sv(r?.fresh?await t.fetchQuery({...Vh(s,a,n.transport,o,n.generation),staleTime:0}):await Hh(s,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)eu(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now();d.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return d.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Dm(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(!ul(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),p.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Dh||!se(t))return d.delete(r),P.getTranscript(e);throw d.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),av(T_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:zv(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{f.delete(r)}})();return f.set(r,a),a},fe=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;d.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return d.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||Kl(t.sessionID,t.directory)?(d.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Dm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return d.delete(r),n instanceof Dh||!se(t)||av(T_({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:zv(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{f.delete(r)}})();return f.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(Lv(t,e)))?!0:Xm(n).kind===`unknown`},P={getTranscript(t){let n=Lv(t,e),r=K(n),i=zv(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=Lv(t,e),r=K(n),i=P.getTranscript(t);return te(r,vl(n.sessionID,i.boundary))},getRequestState(t){let n=Lv(t,e),r=d.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=Lv(t,e),r=K(n),i=P.getTranscript(t);gl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:_l({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:pl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(Lv(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(Lv(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??Wv,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=Lv(t,e),i=p.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||ll(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=Lv(t,e),i=M(r,n),a=ov(()=>P.getTranscript(t)),o=e=>{try{let t=ov(e);if(!a||!t)return;sv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=m.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return p.set(i,{status:`idle`}),P.getTranscript(t);if(!ll(P.getParts(t,n))&&!g.get(K(r))?.has(n))return p.set(i,{status:`ready`}),P.getTranscript(t);p.set(i,{status:`loading`}),k(t);try{let a=await Mv({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??[]}]}),ll(P.getParts(t,n))?p.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):p.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(p.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return p.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return p.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return m.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{m.get(i)===c&&m.delete(i)}),c},apply(r,i){let a=Lv(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=Jh(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=Jh(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=Jh(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=Jh(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}),Jh(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=Jh(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=Jh(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 Gv(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=Jh(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&&(cv({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:zv(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error}),x(r,a)),s},subscribe(t,i){let a=K(Lv(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);c.set(a,r.retain(e)),n.noteScopeObserved(e)}return s.add(i),A(t),()=>{let e=o.get(a);if(e){if(e.delete(i),e.size===0){let e=c.get(a);e&&(e(),c.delete(a))}j(a)}}},async ensureInitial(t){let i=Lv(t,e),a=K(i);if(u&&await u.wait(xv(i)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(xv(i));if(se(i)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)ul(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){av(T_({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,i);return av(T_({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!r.isRetained(E(t))){let e=Date.now(),n=await fe(t,i);return av(T_({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;d.delete(a);try{await s.ensureInitial()}catch(e){throw av(T_({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:zv(w(t),i.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}d.delete(a),l||Dm(i.directory,i.sessionID,{transport:i.transport,generation:i.generation}),n.noteScopeObserved(E(t)),D(t);let f=P.getTranscript(t);return av(T_({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:f,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),f},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),Xm(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=Lv(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 av(T_({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 av(T_({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=Lv(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=Lv(t,e),i=ov(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??zm(),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=Hv(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=ov(()=>c);i&&e&&sv({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=ov(()=>P.getTranscript(t)),i=E(t);return u&&await u.clearSession(xv(Lv(t,e))),n.destructiveReset(i,async()=>{let n=Lv(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),l.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=ov(()=>s);r&&e&&sv({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(Lv(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),l.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),l.delete(n);let e=c.get(n);e&&(e(),c.delete(n));let t=s.get(n);t&&(t(),s.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),u&&u.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of s.values())e();s.clear();for(let e of c.values())e();c.clear(),o.clear(),l.clear(),d.clear(),f.clear(),p.clear(),m.clear(),g.clear(),v.clear(),y.clear(),b.clear()}};return P}var Wv=Object.freeze([]);function Gv(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=Jh(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var Kv=`/api/openchamber/transcript-cache`,qv=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),Jv=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Yv=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},Xv=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},Zv=e=>{if(!Jv(e))throw Error(`Invalid transcript cache scope`);return{transport:Yv(e.transport,`scope`),generation:Xv(e.generation,`scope`),directory:Yv(e.directory,`scope`),sessionID:Yv(e.sessionID,`scope`)}},Qv=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},$v=e=>{if(!Jv(e)||!Jv(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!Jv(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:Zv(e.scope),messageID:Yv(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>Qv(e,`part completeness`)),completeness:Qv(e.completeness,`completeness`),contentHash:Yv(e.contentHash,`content hash`),byteSize:Xv(e.byteSize,`byte size`),lastAccessedAt:Xv(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:Xv(e.sortKey.created,`sort key`),messageID:Yv(e.sortKey.messageID,`sort key`)}}},ey=(e,t)=>{if(!Jv(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map($v);return{scope:e.scope===void 0?uc(t):Zv(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},ty=e=>{if(!Jv(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:$v(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!qv.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:$v(e.record)}}}throw Error(`Invalid transcript cache upsert`)},ny=e=>{if(!Jv(e))throw Error(`Invalid transcript cache evict`);return{evicted:Xv(e.evicted,`evict`),freedBytes:Xv(e.freedBytes,`evict`),remainingBytes:Xv(e.remainingBytes,`evict`)}},ry=e=>({scope:uc(e),records:[],byteSize:0}),iy=(e,t)=>Jv(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,ay=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`)}},oy=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 ay(r)};let i=await ay(r).catch(()=>void 0);throw Error(iy(i,`Transcript cache request failed (${r.status})`))},sy=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),cy=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function ly(e={}){let t=e.fetch??F;return{async readSession(e){let n=await oy(t,`${Kv}/session`,{method:`GET`,query:sy(e)});return n.kind===`disabled`||n.kind===`not-found`?ry(e):ey(n.payload,e)},async readMessage(e,n){let r=await oy(t,`${Kv}/message`,{method:`GET`,query:{...sy(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!Jv(r.payload))throw Error(`Invalid transcript cache record`);return $v(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await oy(t,`${Kv}/message`,cy(`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 ty(i.payload)},async removeMessage(e,n){let r=await oy(t,`${Kv}/message`,cy(`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 oy(t,`${Kv}/session`,cy(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await oy(t,`${Kv}/generation`,cy(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await oy(t,`${Kv}/evict`,cy(`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 ny(r.payload)},async clearAll(){let e=await oy(t,`${Kv}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var uy=`openchamber-transcript-durable`,dy=1,fy=`transcriptIndex`,py=`transcriptContent`,my=class extends Error{code;constructor(e){super(e),this.code=e}},hy=e=>({id:Xs(e.scope,e.messageID),scope:uc(e.scope),scopeKey:Ys(e.scope),generationKey:Zs(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}),gy=(e,t)=>({scope:uc(e.scope),messageID:e.messageID,info:lc(t.info),parts:lc(t.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),_y=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return gy(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},vy=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},yy=(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 my(`database-unavailable`));return}let r=indexedDB.open(e,dy),i=!1,a=()=>{i||(i=!0,n(new my(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(fy)){let t=e.createObjectStore(fy,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(py)||e.createObjectStore(py,{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}),xy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new my(`database-unavailable`)),r.onblocked=()=>void 0}),Sy=(e=uy)=>({transaction:async t=>{let n=await by(e),r=n.transaction([fy,py],`readwrite`),i=r.objectStore(fy),a=r.objectStore(py),o=e=>yy(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:()=>xy(e)});function Cy(e,t={}){let n=dc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(hy(t)),fc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(Ys(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=gy(t,r);a.lastAccessedAt=n(),await e.putIndex(hy(a)),i.push(a)}return pc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await _y(e,Xs(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=mc({info:i,incomingCompleteness:nc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=lc(a.slice()),c=nc(s),l=await ac(i,s),u=Xs(t,i.id);return e.transaction(async e=>{let a=await _y(e,u),o=mc({info:i,existing:a,incomingCompleteness:c,incomingHash:l.hash});if(o.status===`skipped`)return o.reason===`slim-downgrade`&&a?{status:`skipped`,reason:`slim-downgrade`,record:fc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:uc(t),messageID:i.id,info:lc(i),parts:s,partCompleteness:s.map(tc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:$s(i)};return await e.putIndex(hy(d)),await e.putContent({id:u,info:lc(i),parts:s}),{status:`written`,record:fc(d)}})},async removeMessage(t,n){await e.transaction(e=>vy(e,Xs(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(Ys(t));for(let t of n)await vy(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(Zs(t));for(let t of n)await vy(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(Ys)),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?Qs(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await vy(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 Cy(e.driver??Sy(e.databaseName),e)}function Ty(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??lt;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Ey=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Dy(e={}){let t,n,r=()=>(t??=(e.createHttpStore??ly)(),t),i=()=>(n??=(e.createIndexedDBStore??wy)(),n),a=()=>Ty(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=>Ey([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Oy(e={}){await Dy(e).clearAll()}var ky=(e,t)=>e<t?-1:+(e>t);function Ay(e){return e.filter(e=>!!e?.id).sort((e,t)=>ky(e.id,t.id))}async function jy(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await wg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=r.records.map(e=>({info:$f(e.info),parts:Ay(e.parts??[])}));if(!e.before&&!r.complete&&Pv(a).length>0){let t=B.getScopedSdkClient(e.directory);a=(await Fv({records:a,complete:r.complete,requestMessage:async n=>{let r=await Mv({transport:i(),generation:h(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:Ay(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Ay(e.parts??[])}))}return{records:a,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function My(e){let t=e.client??L,n=dg(),r=gg({client:t,activeRegistry:n}),a=Uv({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:i,getGeneration:h},fetcher:e=>jy({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:zm(),historyLimit:Bm(),durableStore:e.durableStore??Dy()}),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:r,probe:{getTransport:i,getGeneration:h}});return cu(a),Su(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),Su(null),a.destroy(),lu()}}}function Ny(e){return uu().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 Py=new Map;function Fy(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Iy(e,t,n,r={}){let a=r.getTransportIdentity??i,o=r.getGeneration??h,s=a(),c=o(),l=Fy(e,t,s,c),u=()=>a()===s&&o()===c,d=Py.get(l)??Promise.resolve(),f,p=new Promise(e=>{f=e}),m=d.catch(()=>void 0).then(()=>p);Py.set(l,m);try{if(await d.catch(()=>void 0),!u())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:s,generation:c,isCurrent:u})}finally{f(),Py.get(l)===m&&Py.delete(l)}}var Ly=new Set,Ry=new Set,zy=new Set,By=new Set,Vy={onDeleteRequest(e){return Ly.add(e),()=>{Ly.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||Ly.forEach(t=>t(e))},onCreateRequest(e){return Ry.add(e),()=>{Ry.delete(e)}},requestCreate(e){let t=e??{};Ry.forEach(e=>e(t))},onDirectoryRequest(e){return zy.add(e),()=>{zy.delete(e)}},requestDirectoryDialog(){zy.forEach(e=>e())},onGitRefreshHint(e){return By.add(e),()=>{By.delete(e)}},requestGitRefresh(e){e.directory.trim()&&By.forEach(t=>t(e))}},Hy=e=>e.trim(),Uy=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session status runtime changed`)},Wy=(e,t={})=>{let n=Hy(e),r=t.transport??i(),a=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,s=t.runtimeProbe??{},c=(s.getGeneration??h)();return et({queryKey:N.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{Uy(r,c,s);let t=o(),i=await a(n,e);if(Uy(r,c,s),i===null)throw Error(`session status snapshot unavailable`);return{snapshot:i,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},Gy=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(Wy(e,r))},Ky=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session active runtime changed`)},qy=(e={})=>{let t=e.transport??i(),n=e.loadActive??(e=>B.getSessionActive(e)),r=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??h)();return et({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{Ky(t,o,a);let i=r(),s=await n(e);return Ky(t,o,a),{result:s,requestedAt:i}},staleTime:0,gcTime:3e5,retry:!1})},Jy=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(qy(n))},Yy;function Xy(e){Yy=e}function Zy(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 Qy(e,t){return JSON.stringify(e)===JSON.stringify(t)}function $y(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function eb(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 tb(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=Zy(a[e]);if(t){s[e]=n&&$y(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function nb(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=Zy(t[o]);if(n&&n.type!==`idle`){Qy(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 rb(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function ib(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 Gy(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 Jy({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}=tb(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=rb(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),nb(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Yy;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 ab({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:ib(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var ob=50,sb=e=>{let t=Object.keys(e);if(t.length<=ob)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-ob).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},cb=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:sb(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:g(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),lb=new Set([`todowrite`,`todoread`]),ub=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),db=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),fb=(e,t)=>{cb.getState().setSessionTodos(e,t)},pb=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},mb=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},hb=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},gb=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=hb(n);e&&t.push(e)}return t},_b=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return gb(t);if(t&&typeof t==`object`)return gb(t.todos)}catch{}return[]},vb=e=>{if(!lb.has(pb(e)))return[];let t=mb(e);if(t&&ub.has(t))return[];let n=e.state,r=gb(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=gb(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=gb(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?_b(i):[]};function yb(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=vb(r[e]);if(t.length>0)return t}}return[]}function bb(e){if(!e.sessionID||e.isStale?.()||db(e.store.getState().todo,e.sessionID))return!1;let t=yb(e.transcript);return t.length===0||e.isStale?.()||db(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function xb(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:fb,isStale:e.isStale}):!1}var Sb=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>xS,COMBINED_SEND_PRESENCE_GRACE_MS:()=>bS,SESSION_DELETE_UNDO_MS:()=>Gx,abortBusySessionForMessageEdit:()=>FS,abortCurrentOperation:()=>ES,archiveSession:()=>tS,beginOptimisticSend:()=>dS,cancelScheduledSessionDeletes:()=>eS,classifySendFailure:()=>hx,combinedSendConfirmationOptions:()=>SS,commitMessageEdit:()=>LS,createSession:()=>zx,deleteSession:()=>Qx,dirStoreForDirectory:()=>ex,dismissOpenQuestionsForSession:()=>AS,ensureSentUserMessagePresence:()=>TS,fetchMessagesForSession:()=>US,fetchRecentSendConfirmationRecords:()=>vS,forkSession:()=>VS,getSendFailureKind:()=>px,getSessionLastAssistantModel:()=>ox,isQuestionRequestNotFoundError:()=>Ix,materializeConfirmedSendRecords:()=>yS,mirrorSessionIntoLiveStores:()=>cx,optimisticInsertUserMessage:()=>gS,optimisticSend:()=>hS,patchSessionMetadata:()=>Bx,refetchSessionMessages:()=>zS,rejectQuestion:()=>kS,releaseUnconfirmedQueueSend:()=>Zb,requestSessionSmartTitle:()=>iS,resolveForkMessageId:()=>Fb,respondToPermission:()=>DS,respondToQuestion:()=>OS,revertToMessage:()=>jS,rollbackOptimisticSend:()=>pS,scheduleSessionDeletes:()=>$x,setActionRefs:()=>Yb,setOptimisticRefs:()=>Xb,settleOptimisticSend:()=>mS,shareSession:()=>aS,shouldSuppressForkCopyEvent:()=>Lb,stageMessageEdit:()=>NS,trackForkCopySessionCreated:()=>jb,unarchiveSession:()=>nS,unrevertSession:()=>BS,unshareSession:()=>oS,updateSessionTitle:()=>rS,waitForConnectionOrThrow:()=>yx,waitForSessionIdleForMessageEdit:()=>IS}),Cb=2,wb=150,Tb=new Set([`patch`,`step-start`,`step-finish`]),Eb=3,Db=150,Ob=null,kb=new Map,Ab=3e4;function jb(e,t){let n=t?.id;!Ob||Ob.runtimeKey!==c()||Ob.directory!==e||!n||t?.title!==Ob.expectedTargetTitle||n===Ob.sourceSessionID||Ob.targetSessionID||(Ob.targetSessionID=n)}function Mb(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function Nb(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function Pb(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Fb(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 Ib(e,t){let n=Dp(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 Lb(e,t,n){if(Ob&&Ob.runtimeKey===c()&&Ob.directory===e&&t&&t===Ob.targetSessionID)return!0;if(!t||!n)return!1;let r=`${c()}:${e}:${t}`,i=kb.get(r);return i?i.expiresAt<=Date.now()?(kb.delete(r),!1):n<=i.messageID:!1}var Rb=null,zb=null,Bb=()=>``,Vb=new Map,Hb=null,Ub=null,Wb=null,Gb=e=>new Promise(t=>setTimeout(t,e));function Kb(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 qb(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Kb(e.error)}`);throw n!==void 0&&(r.status=n),r}function Jb(e,t){let n=qb(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Yb(e,t,n){if(Rb=e,zb=t,Bb=n,Vb.size>0){let e=[...Vb.values()];Vb.clear(),queueMicrotask(()=>{for(let t of e)US(t.sessionID,t.directory)})}}function Xb(e,t,n){Hb=e,Ub=t,Wb=n??null}function Zb(e){let t=e.directory??null;Ub?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Qb(){if(!Rb)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Rb}function $b(){if(!zb)throw Error(`Child stores not initialized`);let e=Bb();if(!e)throw Error(`No current directory`);return zb.ensureChild(e)}function ex(e,t){if(!zb)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return zb.ensureChild(e,t)}function tx(e,t){let n=t??Tx(e);return n?{store:ex(n),directory:n}:{store:$b(),directory:lx()}}function nx(e,t){let{store:n,directory:r}=tx(e,t??void 0),i=r??lx()??``;return{repository:H()??du(i,n),directory:i,store:n}}function rx(e,t){let{repository:n,directory:r,store:i}=nx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function ix(e,t){return Lu(rx(e,t).data)}function ax(e,t){return rx(e,t).data.messageOrder.length}function ox(e){try{let t=ix(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 sx(e,t){let n=zb;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]=Jw(e,n[r]),t.setState({session:i}),!0}return!1}function cx(e,t){t&&sx(e,t)||sx(e)}function lx(){return Bb()||void 0}function ux(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function dx(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 fx=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 px(e){return e instanceof fx?e.kind:null}function mx(e){let t=dx(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 hx(e,t){return t?mx(e)||dx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var gx=2e3,_x=5e3,vx=3e4;async function yx(){let e=xm();e&&bm(`send_stream_stale`);let t=Date.now()+(e?_x:gx);for(;Date.now()<t;){if(G.getState().isConnected&&!xm()||u()&&!xm())return;let e=t-Date.now();if(e<=0)break;if(await G.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!xm())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw ux()}function bx(e){return new Promise((t,n)=>{let r=setTimeout(()=>{bm(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},vx);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function xx(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Sx(e){e&&Y.getState().upsertSession(e)}function Cx(e,t){let n=Zf(t),r=[...e.getState().session],i=rs.search(r,n.id,e=>e.id);if(i.found){let t=Jw(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=xx(e);if(i)return Cx(t,i);try{return Cx(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 Tx(e){return Ex(e)||$.getState().getDirectoryForSession(e)||lx()}function Ex(e){let t=zb;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 Dx(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):Qb()}function Ox(e){wr.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&&wr.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var kx=()=>new Map(Array.from(Ed(),([e,t])=>[e,t.title||e]));function Ax(e){return!(e.type!==`file`||Vp(e))}function jx(e){return Ax(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function Mx(e){return e.some(jx)}async function Nx(e){let t=[...e.parts];if(!Mx(t))return t;let n=h(),r=e.directory??``;try{await vu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||h()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=nx(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],Mx(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function Px(e){if(Mx(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await nm(e.parts,{sessionTitles:kx(),directory:e.directory}),n=wr.getState(),r=n.getDraft(e.key);return{payload:t,commit:await sm({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function Fx(e,t,n){let r=zb;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 Ix(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 Lx(e,t){let n=zb;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 Rx(e,t,n){let r=Fx(e,t,n);return r?B.getScopedSdkClient(r):Dx(t)}async function zx(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??lx()),a=i.directory??null;return a&&vd(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 Bx(e,t,n){let r=t??Tx(e),i=n(Dp(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&vd(a.id,o),a}async function Vx(e,t){let n;try{n=await B.getSession(e,t??Tx(e))}catch{return}if(!jp(n))return;let r=Ap(n);if(r)try{await Bx(r,t??Tx(r),t=>Pp(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 Hx(e,t){if(!zb)return[];let n=[],r=new Set,i=[];if(t){let e=zb.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of zb.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 Ux(e){if(zb)for(let t of e){let e=zb.children.get(t.directory);e&&e.setState({session:t.sessions})}}function Wx(e){$.getState().setWorktreeMetadata(e,null)}var Gx=1e4,Kx=new Map,qx=0;function Jx(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function Yx(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),Ux(e.listSnapshots),Sx(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function Xx(e,t){let n=t??Tx(e);Y.getState().markSessionsPendingDeletion([e]);let r=Hx(e,n),i=xx(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 Zx(e,t){try{if(await Vx(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return Hx(e,t),Y.getState().removeSessions([e]),Wx(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(Hx(e,t),Y.getState().removeSessions([e]),Wx(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function Qx(e,t){let n=Xx(e);return await Zx(e,n.directory)?!0:(Yx(n),!1)}function $x(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>Xx(e)),i=`session-delete-${Date.now()}-${qx+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=Kx.get(i);if(!e)return;Kx.delete(i);let t=[],n=[];for(let r of e.entries)await Zx(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),Yx(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return Kx.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function eS(e){if(!e)return!1;let t=Kx.get(e);if(!t)return!1;clearTimeout(t.timer),Kx.delete(e);for(let e of[...t.entries].reverse())Yx(e);return!0}async function tS(e){let t=Tx(e),n=Hx(e,t),r=xx(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await Vx(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),Ux(n),Sx(r),!1}}async function nS(e){let t=Tx(e),n=xx(e),r=n?Jx(n):null;if(r&&(Y.getState().upsertSession(r),t&&zb)){let e=zb.children.get(t);e&&Cx(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=Jx(n);if(Y.getState().upsertSession(r),t&&zb){let e=zb.children.get(t);e?Cx(e,r):cx(r,t)}else cx(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&Hx(e,t)),!1}}async function rS(e,t){let n=Tx(e),r=xx(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Vf(r):0,c=await B.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),cx(c,n)}async function iS(e){let t=Tx(e),n=xx(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),cx(s,t)}async function aS(e){let t=Tx(e),n=Zf(Jb(await Qb().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),sx(n,t),n}async function oS(e){let t=Tx(e),n=Zf(Jb(await Qb().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),sx(n,t),n}function sS(e){let t=zb,n=e??Bb();if(!t||!n)return{store:e?ex(e):$b(),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 cS(){return{identity:i(),generation:h()}}function lS(e,t){return e.isCurrent()&&i()===t.identity&&h()===t.generation}function uS(e,t){if(!lS(e,t))throw Error(`Send target changed before transport dispatch`)}function dS(e){if(!Hb||!Ub)throw new fx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??lx()??null,n=sS(t),r=cS();uS(n,r),e.beforeOptimisticInsert?.(),uS(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),gS({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 fx?e:new fx(px(e)??hx(e,!1),e)}}function fS(e){if(!lS(e.capture,e.transport)||!Ub)return;Ub({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 pS(e){fS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function mS(e){if(!Hb||!Ub)throw new fx(`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 yx(),uS(n,r),s=!0,await bx(e.send(i)),!lS(n,r))throw new fx(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=px(c)??hx(c,s),u=c instanceof fx?c:new fx(l,c,i);if(!lS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await vS(a,i,o):null;if(d&&lS(n,r)){yS(n.store,a,i,d,{directory:o??void 0}),Wb?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||fS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function hS(e){await mS({ticket:e.ticket??dS({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 gS(e){if(!Hb)return!1;let t=e.directory??lx(),n=t?ex(t):$b(),r=t??lx()??``;if(CS(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),s={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},c=ov(()=>rx(e.sessionId,t).data);Hb({sessionID:e.sessionId,directory:t,message:s,parts:a});let l=ov(()=>rx(e.sessionId,t).data);try{c&&l&&sv({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:i(),generation:h(),before:c,after:l})}catch{}let u=n.getState();return n.setState({session_status:{...u.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...u.session_status_observed_at,[e.sessionId]:o}}),!0}function _S(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function vS(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??Cb,c=r?.retryDelayMs??wb;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!_S(r?.isCurrent)||a>0&&(await Gb(c),i?.signal.aborted||!_S(r?.isCurrent)))return null;try{let a=await Qb().session.messages({sessionID:e,directory:n??void 0,limit:Um(),...i?{signal:i.signal}:{}});if(!_S(r?.isCurrent))return null;let o=(qb(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 yS(e,t,n,r,i){if(!r.length)return;let a=i?.directory??Tx(t)??Bb(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:$f(e.info),parts:e.parts??[]})),skipPartTypes:Tb,merge:i?.gapFillOnly===!0?Us:Gs({purpose:`recovery`})};pu(o,s)||du(a,e).apply(o,s)}var bS=2e3,xS={attempts:12,retryDelayMs:500},SS={presenceGraceMs:bS,recovery:{...xS}};function CS(e,t,n,r){let i=r??Tx(t)??Bb()??``,a=H()??du(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??Tx(t)??Bb()??``;if(CS(e,t,n,i))return Promise.resolve(!0);if(!_S(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=H()??du(i,e),f=U(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!_S(r?.isCurrent)){l(!1);return}CS(e,t,n,i)&&l(!0)}),CS(e,t,n,i)&&l(!0)})}async function TS(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await wS(t,n,r,{timeoutMs:e.graceMs??SS.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!_S(a))return`cancelled`;let o=await vS(n,r,i,{...SS.recovery,isCurrent:a});return o?_S(a)?(yS(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:_S(a)?`missing`:`cancelled`}async function ES(e){let{store:t,directory:n}=tx(e),r=n?{state:`bound`,transportIdentity:i(),directory:n,sessionID:e}:null,a=r?$.getState().beginQueueAbortBlock(r):null;try{if(Jb(await Qb().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&a&&$.getState().clearQueueAbortBlock(r,a),Xe(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>Jz);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function DS(e,t,n){await yx();let r=Fx(`permission`,e,t)||Tx(e)||lx();if(Jb(await Rx(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function OS(e,t,n){await yx();let r=Fx(`question`,e,t)||Tx(e)||lx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Jb(await Rx(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw Ix(n)&&Lx(e,t),n}}async function kS(e,t){await yx();let n=Fx(`question`,e,t)||Tx(e)||lx();try{if(Jb(await Rx(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw Ix(n)&&Lx(e,t),n}}async function AS(e){if(!e)return!1;let t=zb;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Ip(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)Lx(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await kS(e,t)}catch(e){if(Ix(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function jS(e,t,n){let r=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return Iy(e,r??(()=>{try{return tx(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:o,directory:c}=tx(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Qb().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=ix(e,c).find(e=>e.id===t),d=ix(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}=nx(e,c),m=[...f.getParts(U(p,e),t)],h=a===void 0?s?C({transportIdentity:i()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await Nx({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await nm(m,{sessionTitles:kx(),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=wr.getState(),r=await sm({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 lm({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 lm({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&&Vy.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 lm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await lm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function MS(e,t,n,r){let a=r??Tx(t)??Bb(),o=U(a,t),s=ov(()=>rx(t,a).data),c=[...fu(t)];c.some(e=>e.directory===a&&e.sessionID===t)||c.push(o);let l=!1;for(let e of c)pu(e,{type:`remove-message`,messageID:n})!=null&&(l=!0);l||du(a,e).apply(o,{type:`remove-message`,messageID:n});let u=ov(()=>rx(t,a).data);try{s&&u&&sv({trigger:`user-delete`,sessionID:t,directory:a,transport:i(),generation:h(),before:s,after:u})}catch{}}async function NS(e,t,n,r){let a=n?.info,o=n?.parts,s=r?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=tx(e,s).directory}else{c=tx(e,s).directory;let{data:n}=rx(e,c),r=Lu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=r?.draftKey??C({transportIdentity:i()},e),{commit:u}=await Px({key:l,parts:await Nx({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 lm({key:l,restoredRevision:d,previous:f})).status})}}function PS(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 FS(e,t){let n=t?.directory,{store:r,directory:i}=tx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Qb().session.abort({sessionID:e,directory:i})}catch{}}async function IS(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=tx(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 LS(e,t,n){let r=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:s}=tx(e,r),c=ov(()=>rx(e,r).data);try{await FS(e,{directory:r}),await IS(e,{directory:r});let n=new Set((await RS(e,r)).map(e=>e.id)),i=PS(t,ix(e,r),n,{preserveMessageId:a});for(let t of[...i].reverse())await B.deleteSessionMessage(e,t.id,s),MS(o,e,t.id,s)}finally{try{let t=ov(()=>rx(e,r).data);c&&t&&sv({trigger:`user-edit`,sessionID:e,directory:s,transport:i(),generation:h(),before:c,after:t})}catch{}}}async function RS(e,t){let{directory:n}=tx(e,t);return(qb(await Qb().session.messages({sessionID:e,directory:n,limit:Hm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>$f(e.info))}async function zS(e,t){let{store:n,directory:r}=tx(e,t),a=ov(()=>rx(e,t).data),o=(qb(await Qb().session.messages({sessionID:e,directory:r,limit:Hm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=ov(()=>rx(e,t).data);a&&n&&sv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let s=o.map(e=>({info:$f(e.info),parts:e.parts??[]})),c=U(r??Bb(),e);pu(c,{type:`materialize-snapshots`,records:s,skipPartTypes:Tb})||du(r??Bb(),n).apply(c,{type:`materialize-snapshots`,records:s,skipPartTypes:Tb});try{let n=ov(()=>rx(e,t).data);a&&n&&sv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return s.map(e=>e.info)}async function BS(e,t){return Iy(e,t??(()=>{try{return tx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=tx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=ax(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Qb().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Qb().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Jb(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<Eb;r+=1){if(r>0&&(await Gb(Db),!n())||(await zS(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(ax(e,i)>o)return}if(ax(e,i)<=o){let n=i??Bb(),a=H()??du(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await zS(e,t)}})}async function VS(e,t,n,r){let i=c(),{store:a,directory:o}=tx(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await wx(e,a,o);vd(e,o);let l=a.getState(),u=l.session_status[e],d=ix(e,o);u?.type,d.length;let f=Fb(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await zS(e),l=a.getState(),u=l.session_status[e],d=ix(e,o),f=Fb(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:ax(e,o)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=rx(e,o),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(U(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!Vp(e)).map(e=>e.text||e.content||``).join(`
|
|
461
461
|
`).trim();let v=g.filter(e=>e.type===`file`&&!Vp(e));Ob={operationId:t,runtimeKey:i,directory:o,sourceSessionID:e,expectedTargetTitle:Mb(s.title)},await Nb(t,`copying`);let y;try{if(y=await B.forkSession(e,f,o),y.id,c()!==i)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),Ob?.operationId===t&&(Ob=null),!1;await Nb(t,`opening`);try{y=await Ib(y,o)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw Ob?.operationId===t&&(Ob=null),e}try{let r=[...a.getState().session],i=rs.search(r,y.id,e=>e.id);i.found||(r.splice(i.index,0,y),a.setState({session:r}));let s=U(o,y.id),l=H();l&&typeof l.destructiveReset==`function`?await l.destructiveReset(s):pu(s,{type:`reset`}),Pb(t,y.id);let u=$.getState().currentSessionId,d=u===e||u===y.id;d&&$.getState().setCurrentSession(y.id,o),await Nb(t,`loading`),y.id;let f=H()??du(o,a),p=U(o,y.id),m=f.getRequestState?.(p);(!(f.hasSession?.(p)??!1)||m?.status===`error`)&&await US(y.id,o);let g=ix(y.id,o).at(-1)?.id;g&&kb.set(`${c()}:${o}:${y.id}`,{messageID:g,expiresAt:Date.now()+Ab}),d&&h&&_&&wr.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&Ox(v)}finally{Ob?.operationId===t&&(Ob=null)}return y.id,!0}var HS=new Map;async function US(e,t){let n=t??lx();if(!n)return;let r=c(),i=Vm(),a=`${r}:${n}:${e}:${i}`;if(!Rb||!zb){Vb.set(a,{sessionID:e,directory:n});return}let o=HS.get(a);if(o)return o;let s=WS(e,n,r,i).finally(()=>{HS.get(a)===s&&HS.delete(a)});return HS.set(a,s),s}async function WS(e,t,n,r){Qb();let i=ex(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=H()??du(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(Em(t,e)){xb({directory:t,sessionID:e,store:i,transcript:u});return}if(H()){try{await hu(t,e)}catch{return}if(y())return;xb({directory:t,sessionID:e,store:i,isStale:y}),await ab({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}xb({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await jy({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:Tb}),b=n.records.length,Dm(t,e)}catch{return}y()||(xb({directory:t,sessionID:e,store:i,isStale:y}),await ab({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var GS=new Map,KS=e=>{GS.set(e,(GS.get(e)??0)+1)},qS=e=>(GS.get(e)??0)>0,JS=e=>{let t=GS.get(e)??0;return t<=0?!1:(t===1?GS.delete(e):GS.set(e,t-1),!0)},YS=18e4,XS=400,ZS=300,QS=15,$S=`FINAL_REVIEW_STATUS: no_remaining_findings`,eC=$S.toLowerCase(),tC=new Set,nC=new Set,rC=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},iC=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},aC=e=>{let t=e.role;return typeof t==`string`?t:``},oC=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},sC=(e,t)=>kd(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`}),cC=(e,t,n,r=0,i)=>{let a=Od(e,t),o=new Set;for(let e of a)sC(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(aC(s)!==`assistant`||!rC(s)||iC(s)<r-1e3)continue;let c=oC(s);if(!gC(s,i)||c&&o.has(c))continue;let l=Tp(kd(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},lC=(e,t)=>Ad(e,t)?.type===`idle`,uC=e=>e===c(),dC=e=>{Fp.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},fC=e=>{if(e&&!uC(e))throw Error(`Auto-review stopped because the runtime changed.`)},pC=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),mC=e=>e.trim().split(`
|
|
462
462
|
`).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===eC,hC=e=>{let t=e.trimEnd().split(`
|
|
463
463
|
`);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===eC&&t.pop(),t.join(`
|