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