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