@openchambery/web 1.19.7-beta.21 → 1.19.7-beta.22
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-sV1PVQiM.js → AssistantView-CWWBbBFK.js} +1 -1
- package/dist/assets/{DiagramView-D2hqP5VV.js → DiagramView-D31BqN_E.js} +1 -1
- package/dist/assets/{MarkdownRenderer-x091Z--3.js → MarkdownRenderer-DayesgSP.js} +2 -2
- package/dist/assets/{MarkdownRendererImpl-DML8BSro.js → MarkdownRendererImpl-QFNxMPzf.js} +1 -1
- package/dist/assets/{MarkstreamRendererImpl-BK-HM2k3.js → MarkstreamRendererImpl-BQv6Uaiz.js} +1 -1
- package/dist/assets/{MobileDetailNavigation-DcxkWiks.js → MobileDetailNavigation-NfSgzdcm.js} +1 -1
- package/dist/assets/{MobileShareBridge-TAGcOiyb.js → MobileShareBridge-DeTlirad.js} +1 -1
- package/dist/assets/{MobileSurface-zqlZzEFQ.js → MobileSurface-Dn2m2j6W.js} +1 -1
- package/dist/assets/{MultiRunWindow-iH1d9S14.js → MultiRunWindow-Cgib9eyw.js} +1 -1
- package/dist/assets/{SettingsView-CzW23DZA.js → SettingsView-C9RWio_j.js} +10 -10
- package/dist/assets/{SettingsWindow-DZXCWZid.js → SettingsWindow-BNRKLcRY.js} +1 -1
- package/dist/assets/{TerminalView-pU0wpD8s.js → TerminalView-D8Yncxaz.js} +1 -1
- package/dist/assets/{ToolOutputDialog-Bt7JChFG.js → ToolOutputDialog-C7cKReps.js} +1 -1
- package/dist/assets/{appThemeRegistry-BI7WR2Wo.js → appThemeRegistry-CgqQtWC4.js} +1 -1
- package/dist/assets/{gitApi-CeFszLvk.js → gitApi-Dxz3xwNw.js} +1 -1
- package/dist/assets/{insertionBoundaries-DDJNusn2.js → insertionBoundaries-ChFLgDUk.js} +1 -1
- package/dist/assets/{main-CjnOsKDL.js → main-BJXPFVHt.js} +4 -4
- package/dist/assets/{main-j-Ij13jc.js → main-DCo2l5VZ.js} +2 -2
- package/dist/assets/{miniChat-DgxavREE.js → miniChat-B5UVU_Mb.js} +2 -2
- package/dist/assets/{mobile-C0rwPMPM.js → mobile-BqjS1dv6.js} +2 -2
- package/dist/assets/{multirun-ot7-bKg7.js → multirun-M_Me-_4l.js} +1 -1
- package/dist/assets/{projectMeta-3yOEc0oI.js → projectMeta-CPkhOD4P.js} +1 -1
- package/dist/assets/{renderElectronMiniChatApp-BPNvFA_N.js → renderElectronMiniChatApp-Cdh5V0yR.js} +2 -2
- package/dist/assets/{renderMobileApp-CNog29Xy.js → renderMobileApp-Cg-ElUGy.js} +4 -4
- package/dist/assets/{runtimeConfig-D28kNEYO.js → runtimeConfig-BKoKWlKL.js} +1 -1
- package/dist/assets/{runtimeEndpointReset-CorvFIRk.js → runtimeEndpointReset-B83TIZZ3.js} +1 -1
- package/dist/assets/{sessionLookup-CbatbQf7.js → sessionLookup-T_RCkXuF.js} +1 -1
- package/dist/assets/{src-Af9cMFKF.css → src-CIorwNis.css} +1 -1
- package/dist/assets/{useAppFontEffects-CDpeZWK4.js → useAppFontEffects-P8YxQpca.js} +7 -7
- package/dist/assets/{useDesktopWindowControlsLayout-D-xPByG0.js → useDesktopWindowControlsLayout-DWs0P-Nn.js} +1 -1
- package/dist/assets/{useEffectiveDirectory-Dp-tez_r.js → useEffectiveDirectory-DKaOxQUi.js} +1 -1
- package/dist/assets/{useMobileNavigationStore-DE1Pe9A9.js → useMobileNavigationStore-C1gtZTkJ.js} +1 -1
- package/dist/assets/{useSessionAutoCleanup-jNJ_WC38.js → useSessionAutoCleanup-nycHB0Ra.js} +1 -1
- package/dist/assets/{useWorkerHighlightedLines-MDnGj3yv.js → useWorkerHighlightedLines-DyJgEWoO.js} +1 -1
- package/dist/index.html +3 -3
- package/dist/mini-chat.html +3 -3
- package/dist/mobile.html +3 -3
- package/package.json +1 -1
package/dist/assets/{useMobileNavigationStore-DE1Pe9A9.js → useMobileNavigationStore-C1gtZTkJ.js}
RENAMED
|
@@ -397,7 +397,7 @@ Use the results below as source material. Do not mention that the inputs were hi
|
|
|
397
397
|
`).replace(/\n\s*\n+/g,`
|
|
398
398
|
`),Np=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Pp=e=>{let t=e?.metadata;return Np(t)?t:{}},Fp=e=>{let t=e.openchamber;return Np(t)?t:{}},Ip=e=>{let t=Fp(Pp(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Lp=e=>{let t=Fp(Pp(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Rp=e=>Fp(Pp(e)).kind===`review`&&!!Lp(e),zp=(e,t)=>{let n=Fp(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Bp=(e,t)=>{let n=Fp(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},Vp=(e,t)=>{let n=Fp(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},Hp=Oe()(ke((e,t)=>({runsByOriginalSessionID:{},upsertRun:t=>e(e=>({runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t.originalSessionID]:t}})),updateRun:(t,n)=>e(e=>{let r=e.runsByOriginalSessionID[t];return r?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:n(r)}}:e}),stopRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`stopped`}}}:e}),completeRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`completed`}}}:e}),stopRunningRunsForRuntime:t=>e(e=>{let n=!1,r={...e.runsByOriginalSessionID};for(let[e,i]of Object.entries(r))i.runtimeKey===t&&i.status===`running`&&(r[e]={...i,status:`stopped`},n=!0);return n?{runsByOriginalSessionID:r}:e}),isRunningForSession:e=>t().runsByOriginalSessionID[e]?.status===`running`}),{name:`auto-review-store`,storage:g(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),Up=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},Wp=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=Up(t.parentSessionId),r=Up(t.sessionId);if(!(!n||!r||n===r))return{parentSessionId:n,sessionId:r}},Gp=e=>{let t=[];for(let n of e){if(n?.type!==`tool`||n.tool!==`task`)continue;let e=n.state;if(!e||typeof e!=`object`||Array.isArray(e))continue;let r=e;if(r.status!==`running`)continue;let i=r.metadata,a=Wp(i);a&&t.push(a)}return t},Kp=[],qp=(e,t,n)=>{let r=new Map;for(let t of e){if(!t.parentID)continue;let e=r.get(t.parentID)??[];e.push(t.id),r.set(t.parentID,e)}if(n)for(let e of n){let t=r.get(e.parentSessionId)??[];t.push(e.sessionId),r.set(e.parentSessionId,t)}let i=new Set([t]),a=[t];for(let e of a){let t=r.get(e);if(t)for(let e of t)i.has(e)||(i.add(e),a.push(e))}return i},Jp=(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},Yp=(e,t,n,r,i)=>{if(!n)return r;let a=qp(e,n,i);if(a.size===0)return r;let o=new Set,s=[];for(let e of a){let n=t[e];if(n)for(let e of n)o.has(e.id)||(o.add(e.id),s.push(e))}return s.length===0?r:s},Xp=`GitHub issue context (JSON)`,Zp=`GitHub pull request context (JSON)`,Qp=e=>!e||typeof e!=`object`?!1:!!e.synthetic,$p=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>Qp(e)),em=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!Qp(e)),n=e=>{if(!Qp(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(Xp)||n.startsWith(Zp)};return t&&e.some(e=>Qp(e))?e.filter(e=>!Qp(e)||n(e)):e},tm=new Map,nm=new Map,rm=new Map,im=e=>{tm.set(e,(tm.get(e)??0)+1)},am=e=>(tm.get(e)??0)>0,om=e=>{let t=tm.get(e)??0;return t<=0?!1:(t===1?tm.delete(e):tm.set(e,t-1),!0)},sm=(e,t)=>{nm.set(e,t)},cm=e=>nm.get(e)??null,lm=e=>{nm.delete(e)},um=({sessionId:e,currentUserOrder:t,animatedIds:n})=>{let r=rm.get(e),i=null;if(am(e)){let r=t[t.length-1];r!==void 0&&!n.has(r)&&om(e)&&(sm(e,r),n.add(r),i=r)}if((!r||t.length>=r.length)&&rm.set(e,t),i!==null)return i;let a=cm(e);return a===null?null:(t.includes(a)&&n.add(a),a)},dm=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},fm=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,pm=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},mm=e=>e.replace(/\\/g,`/`),hm=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,gm=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}`}`),mm(n)}catch{return null}},_m=(e,t)=>{let n=hm(mm(e)),r=hm(mm(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},vm=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),ym=(e,t)=>{let n=mm(e),r=hm(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=_m(n,t);if(r!==null){let t=hm(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return vm(a)},bm=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},xm=(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},Sm=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},Cm=async(e,t={})=>{let n=t.createID??fe,r=t.directory??t.root??null,i=e.filter(e=>!Qp(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(fm).join(`
|
|
399
399
|
`),l=[];for(let e of o){let t=Sm(e);t&&l.push(t)}for(let e of[...l].reverse())xm(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=xm(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:`)?gm(t):null;if(o){let e=ym(o,r),t=null;for(let n of e){let e=xm(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=pm(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 bm(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(dm(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}},wm=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 bm(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(dm(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}},Tm=e=>e?JSON.parse(JSON.stringify(e)):null,Em=e=>e?{...e}:{},Dm=(e,t=Or.getState())=>{let n=t.getDraft?.(e)??null,r=Em(t.draftAttachmentViews?.[R(e)]);return{record:Tm(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},Om=async e=>{let t=e.input??Or.getState(),n=Dm(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}},km=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}}},Am=async e=>{let t=e.input??Or.getState(),n=t.getDraft(e.key);if(!n||n.revision!==e.restoredRevision)return{status:`conflict`,current:!0};let r=e.key.transportIdentity,i=e.runtime?.transportIdentity===r?e.runtime:void 0,a;try{let e=t.captureDraftRuntime();e.transportIdentity===r&&(a=e)}catch{}let o=i??a;return o?km({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},jm=(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},Mm=e=>e?.status===`committed`&&e.current===!0,Nm=new Map,Pm=async(e,t)=>{let n=R(e),r=Nm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Nm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Nm.get(n)===o&&Nm.delete(n)}},Fm=(e,t)=>({key:e,addLocal:async n=>{await Pm(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Pm(e,async()=>{let r=t(),i=jm(e,n,r);if(!i)return!(r.getDraft(e)&&[...r.getDraft(e)?.attachments??[],...r.getDraft(e)?.syntheticParts.flatMap(e=>e.attachments)??[]].some(e=>e.attachmentID===n));try{await r.removeDraftAttachment(e,i)}catch{}let a=r.getDraft(e);return!a||![...a.attachments,...a.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.attachmentID===n)})}catch{return!1}},clearRootAttachments:async()=>{try{return await Pm(e,async()=>{let n=t(),r=n.getDraft(e);return!r||r.attachments.length===0||n.setDraftAttachments(e,[])?.attachments.length===0})}catch{return!1}},restoreRootAttachments:async n=>{try{return await Pm(e,async()=>{let r=async()=>t().restoreDraftRootAttachments(e,n),i=await r();return i.status===`conflict`&&(i=await r()),i.status===`failed`||i.status===`stale`?!1:Mm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Pm(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Pm(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Pm(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Im=4e4,Lm=0,Rm=null;function zm(e=Date.now()){Lm=e}function Bm(e){return Rm=e,()=>{Rm===e&&(Rm=null)}}function Vm(e){Rm?.(e)}function Hm(e=Date.now(),t=Im){return Lm<=0?!1:e-Lm>=t}var Um=3e4,Wm=200,Gm=new Map;function Km(e,t,n){return`${n?.transport??i()}\n${n?.generation??h()}\n${e.trim()}\n${t}`}function qm(e,t,n){if(!e||!t)return!1;let r=Gm.get(Km(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Um}function Jm(e,t,n){if(!e||!t)return;let r=Km(e,t,n);for(Gm.has(r)&&Gm.delete(r);Gm.size>=Wm;){let e=Gm.keys().next().value;if(typeof e!=`string`)break;Gm.delete(e)}Gm.set(r,n?.now??Date.now())}var Ym=768,Xm=()=>{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},Zm=()=>{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<=Ym&&Xm()?`mobile`:`desktop`},Qm=()=>Zm()===`mobile`,$m=3,eh=2,th=4,nh=4,rh=100,ih=30;function ah(){return u()?`relay`:`local`}function oh(e=ah()){return e===`relay`?eh:$m}function sh(e=ah()){return e===`relay`?nh:th}function ch(e){return oh(dh(e))}function lh(){return rh}function uh(){return ih}function dh(e){return e===`relay`||e===`local`?e:ah()}var fh=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function ph(){return{pages:[],pageParams:[]}}function mh(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 hh(e){return{pages:Object.freeze(e.pages.map(mh)),pageParams:Object.freeze([...e.pageParams])}}function gh(e,t,n=fh){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 mh({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function _h(e){if(!e||e.pages.length===0)return rl;let t=e.pages[0],n=e.pages.reduce((e,t)=>e+t.turnCount,0);return t.complete?{kind:`exhausted`,loadedTurns:n}:typeof t.cursor==`string`&&t.cursor.length>0?{kind:`has-more`,cursor:t.cursor,loadedTurns:n}:{kind:`unknown`,loadedTurns:n}}function vh(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=_h(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function yh(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function bh(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 mh({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:yh(t)}})}function xh(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 hh({pages:[bh(`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=bh(`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(Ch(i,o,s,a)),_.push(e.pageParams[r]??null)}return hh({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?Ch(t,r===`reconcile-page`?Sh(i,p):[...i,...p],s,a):Ch(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]=mh({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return hh({pages:m,pageParams:[...e.pageParams]})}function Sh(e,t){let n=e.slice();for(let e of t){let t=ac(e),r=n.length;for(let e=0;e<n.length;e+=1)if(ic(t,ac(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function Ch(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&&wh(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||Eh(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:mh({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:yh(t)}})}function wh(e,t){return e===t||e.id===t.id&&e===t}function Th(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 Eh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!Th(e[n],t[n]))return!1;return!0}function Dh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Oh(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 kh(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=xh(e??ph(),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&&Eh(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 hh({pages:e.pages.map((t,n)=>Ch(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function Ah(e,t){let n=vh(e,t),r=_h(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 jh(e,t,n,r){if(!kl(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Ah(e,t),o=Ls(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=Oh(n),c=new Set;return s&&c.add(s),{data:kh(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}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.partsByMessageID))!t.has(e)&&r&&t.set(e,r);return t}function Nh(e){let t=new Map;if(!e)return t;for(let n of e.pages)for(let[e,r]of Object.entries(n.messagesByID))!t.has(e)&&r&&t.set(e,r);return t}function Ph(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Ah(e,t),o=!1,s=0,c,l=new Set,u=Mh(e),d=Nh(e),f=i.message[t]??[],p=new Map,m=new Map,h=[],g=e=>{if(p.clear(),m.clear(),h=[],e)for(let t=0;t<e.length;t+=1){let n=e[t];n?.id&&(p.set(n.id,n),m.set(n.id,t),h.push(n.id))}};g(f);let _=h.slice();for(let e of n){if(!kl(e.type))continue;o=!0;let n=Ls(i,e),r=typeof n==`boolean`?n:n.changed,a=typeof n==`boolean`?void 0:n.materialization;if(a&&!c&&(c=a),!r)continue;let v=i.message[t]??[];v!==f&&(f=v,g(v));let y=Oh(e),b=h.length!==_.length||h.some((e,t)=>e!==_[t]),x=b;if(y){let e=i.part[y],t=u.get(y);e&&t&&Eh(t,e)?i.part[y]=[...t]:e?(x=!0,u.set(y,e)):t&&(x=!0,u.delete(y));let n=p.get(y),r=d.get(y);if(!(n&&r&&r===n))if(n&&r&&wh(r,n)){let e=m.get(y);e!==void 0&&f[e]&&(f[e]=r,p.set(y,r))}else n?(x=!0,d.set(y,n)):r&&(x=!0,d.delete(y))}else x=!0;if(b){_=h.slice();for(let e of f)e?.id&&!d.has(e.id)&&d.set(e.id,e)}x&&(s+=1,y&&l.add(y))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:kh(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function Fh(e,t,n,r,i){let a=e&&e.pages.length>0?e:hh({pages:[bh(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=vh(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]:Dh(r)};return{data:hh({pages:a.pages.map((e,t)=>t===a.pages.length-1?Ch(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]?Ch(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 Ih(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:hh({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 Ch(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Lh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=vh(e,t),i=Zc({message:r.message,part:r.part},t,n.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),{skipPartTypes:n.skipPartTypes,merge:n.merge});if(!i.messagesChanged&&!i.partsChanged)return{data:e,result:{applied:!0,changed:!1,boundary:_h(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=hh({pages:[bh(`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:_h(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=hh({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?Ch(t,Sh(r,l),o,a):Ch(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:_h(u)}}}function Rh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=fl(vh(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:xh(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 jh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Ph(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Fh(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 Ih(e,n.messageID,t)}case`durable-seed`:return Lh(e,t,n);case`reset`:return n.page?Rh(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 zh(e){return{records:e.messageOrder.map(t=>({info:e.messagesByID[t],parts:e.partsByMessageID[t]?[...e.partsByMessageID[t]]:[]})),cursor:e.cursor??void 0,complete:e.complete,turnCount:e.turnCount}}function Bh(e,t,n,r=`materialize`){return Rh(e,n,{type:`http-page`,purpose:r,page:zh(t),liveRevision:t.sync.liveRevision}).data}function Vh(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return hh(t);if(t.pages.length===e.pages.length){let r=Gh(e,t);if(r===e)return e;if(Wh(e,t)||Uh(e,t))return r;let i=t.pages[t.pages.length-1];return Bh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return Rh(e,n,{type:`http-page`,purpose:`prepend`,page:zh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Bh(e,r,n)??hh(t)}return hh(t)}function Hh(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Uh(e,t){let n=Hh(e),r=Hh(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=Kh(e,``),a=Kh(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Wh(e,t){let n=Hh(e);if(n.size===0)return!1;let r=Hh(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=Kh(t,``);for(let e=1;e<i.messageOrder.length;e+=1){let t=i.messagesByID[i.messageOrder[e-1]],n=i.messagesByID[i.messageOrder[e]];if(!t||!n||ic(ac(t),ac(n))>0)return!1}return!0}function Gh(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,mh(t))});return!n&&e.pageParams.length===t.pageParams.length?e:hh({pages:r,pageParams:[...t.pageParams]})}function Kh(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:_h(e),liveRevision:a}}var qh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Jh=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Yh=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Xh=e=>e.trim(),Zh=e=>e?.trim()||`tail`,Qh=new Set([502,503,504]),$h=[`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 eg(e){if(!e||e instanceof qh||e instanceof Jh)return!1;if(e instanceof Yh)return e.status>=400&&e.status<500?!1:Qh.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(Qh.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(Qh.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:$h.some(e=>n.includes(e))}function tg(e,t){return e>=2?!1:eg(t)}var ng=(e,t=i(),n=h())=>[t,n,`sessionMessages`,`page`,Xh(e.directory),e.sessionID,e.limit,Zh(e.before)],rg=(e,t=i(),n=h())=>[t,n,`session-transcript`,Xh(e.directory),e.sessionID];function ig(e){if(!e||typeof e!=`object`)throw new Jh(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Jh(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Jh(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Jh(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Jh(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Jh(`session message page: cursor must be string when set`);return e}var ag=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}:{}})},og=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw new qh},sg=(e,t,n=i(),r={},a=(r.getGeneration??h)())=>{let o=Xh(e.directory),s=e.sessionID,c=e.limit,l=e.before?.trim()||void 0;return{queryKey:ng({directory:o,sessionID:s,limit:c,before:l},n,a),queryFn:async({signal:e})=>{og(n,a,r);let i=await t({directory:o,sessionID:s,limit:c,before:l,signal:e});return og(n,a,r),ag(ig(i))},staleTime:1/0,gcTime:3e5,retry:tg,retryDelay:e=>Math.min(500*2**e,4e3)}},cg=(e,t,n=L,r=i(),a={},o=(a.getGeneration??h)())=>n.fetchQuery(sg(e,t,r,a,o));function lg(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 ug(e){return ag({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function dg(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function fg(e){let t=Xh(e.directory),n=e.sessionID,r=e.transport??i(),a=e.probe??{},o=e.generation??(a.getGeneration??h)(),s=e.initialLimit??oh(),c=e.historyLimit??sh(),l=e.client??L,u=rg({directory:t,sessionID:n},r,o),d=async t=>ug(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:u,queryFn:async e=>{og(r,o,a);let i=e.pageParam?.trim()||void 0,u=i?c:s,f=i?`prepend`:`initial`,p=await cg({directory:t,sessionID:n,limit:u,before:i},d,l,r,a,o);og(r,o,a);let m=lg(p);return gh(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:dg,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:tg,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>Vh(e,t,n)}}function pg(e){let t=e.client??L,n=fg({...e,client:t}),r=new nt(t,{...n,structuralSharing:(t,n)=>Vh(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 hh(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return hh(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:hh(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return hh(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:hh(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function mg(e,t,n,r){let i=e.getQueryData(t),a=Rh(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 hg(e,t=L,n=i(),r=h()){return t.getQueryData(rg(e,n,r))}function gg(){return v()||Qm()}function _g(){return v()?4:Qm()?12:40}var vg=1048576,yg=4*vg,bg=12*vg,xg=40*vg;function Sg(){return v()?yg:Qm()?bg:xg}var Cg=e=>e.trim();function wg(e){return{transport:e.transport,generation:e.generation,directory:Cg(e.directory),sessionID:e.sessionID}}function Tg(e){let t=wg(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function Eg(e){return`${e.transport}\n${e.generation}\n${Cg(e.directory)}`}var Dg={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function Og(e,t,n){return[t,n,Dg.taskRoot,Dg.reconcileTaskKind,Cg(e.directory),e.sessionID,e.checkpoint]}function kg(e,t,n){return[t,n,Dg.checkpoint,Cg(e.directory),e.sessionID]}function Ag(e){let t=wg(e);return[{queryKey:rg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,Dg.transportPageRoot,Dg.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Dg.taskRoot,Dg.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Dg.taskRoot,Dg.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:kg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function jg(){let e=new Map;return{retain(t){let n=wg(t),r=Tg(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(Tg(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(Tg(t))?.count??0},clear(){e.clear()}}}function Mg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Ng=3e4;function Pg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function Fg(e){return!Array.isArray(e)||e.length<5||e[2]!==Dg.canonical||typeof e[0]!=`string`||typeof e[1]!=`number`||typeof e[3]!=`string`||typeof e[4]!=`string`?null:{transport:e[0],generation:e[1],directory:e[3],sessionID:e[4]}}function Ig(e){let t=e.client,n=e.activeRegistry??jg(),r=e.counters??Mg(),i=e.getLimit??_g,a=e.now??Date.now,o=e.minResidencyMs??Ng,s=new Map,c=new Map,l=e=>{let t=wg(e),n=Tg(t),r=c.get(t.sessionID);r||(r=new Map,c.set(t.sessionID,r)),r.set(n,t)},u=e=>{let t=wg(e),n=Tg(t),r=c.get(t.sessionID);r&&(r.delete(n),r.size===0&&c.delete(t.sessionID))},d=(e,t)=>{for(let[n,r]of c){for(let[n,i]of r)i.transport===e&&i.generation===t&&r.delete(n);r.size===0&&c.delete(n)}let n=`${e}\n${t}\n`;for(let e of s.keys())e.startsWith(n)&&s.delete(e)};for(let e of t.getQueryCache().getAll()){let t=Fg(e.queryKey);t&&l(t)}let f=t.getQueryCache().subscribe(e=>{if(e.type===`added`||e.type===`updated`){let t=Fg(e.query.queryKey);t&&l(t);return}if(e.type===`removed`){let t=Fg(e.query.queryKey);t&&u(t)}}),p=e=>{let t=Tg(wg(e));s.set(t,a())},m=e=>{let t=Tg(wg(e)),n=s.get(t);return n!==void 0&&a()-n<o},h=e=>{let r=wg(e);if(n.isRetained(r))return!0;let i=rg({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},g=e=>{let r=e?.directory===void 0?void 0:Cg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=Fg(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:Pg(a.state.data)})}return i},_=(e,t)=>{let n=c.get(e);if(!n||n.size===0)return[];let r=t?.directory===void 0?void 0:Cg(t.directory),i=[];for(let e of n.values())(t?.transport===void 0||e.transport===t.transport)&&(t?.generation===void 0||e.generation===t.generation)&&(r===void 0||e.directory===r)&&i.push(e);return i},v=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},y=e=>{r.purgeSession+=1;let t=wg(e);s.delete(Tg(t)),u(t);for(let t of Ag(e))v(t)},b=(e,t)=>{r.purgeGeneration+=1,d(e,t);let n=[[e,t,Dg.canonical],[e,t,Dg.transportPageRoot,Dg.transportPageKind],[e,t,Dg.taskRoot],[e,t,Dg.checkpoint]];for(let e of n)v({queryKey:e})},x=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>Tg(wg(e)))),o=g({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=Eg(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let l=[];for(let e of c.values()){for(let t of e){let e=Tg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(Tg(e.scope))||m(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,u=0;for(;c>t&&u<i.length&&!(c-1<o);){let e=i[u];u+=1,y(e.scope),l.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:l}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:h,listCanonical:g,listCanonicalScopesForSession:_,purgeSession:y,purgeGeneration:b,enforce:x,destructiveReset:async(e,t)=>{r.destructiveReset+=1,y(e);try{let n=await t();return x({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw y(e),t}},noteScopeObserved:p,dispose:()=>{f(),c.clear(),s.clear()}}}var Lg=new Map,Rg=new Set;function zg(e,t){return`${e}\n${t}`}function Bg(){for(let e of Rg)e()}function Vg(e,t){if(!e||!t)return;let n=zg(e,t),r=Lg.get(n)??0;Lg.set(n,r+1),r===0&&Bg()}function Hg(e,t){if(!e||!t)return;let n=zg(e,t),r=Lg.get(n);if(r){if(r<=1){Lg.delete(n),Bg();return}Lg.set(n,r-1)}}function Ug(e,t){if(!e)return!1;if(t)return Lg.has(zg(t,e));let n=`\n${e}`;for(let e of Lg.keys())if(e.endsWith(n))return!0;return!1}function Wg(e){return Rg.add(e),()=>{Rg.delete(e)}}var Gg=3e4,Kg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function qg(e,t=Gg){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 Jg=e=>e?e.toLowerCase().includes(`application/json`):!1,Yg=e=>e?e.toLowerCase().includes(`text/html`):!1;function Xg(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 Zg(e){let t=e.turns??sh(),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:Gg;return qg((async()=>{let a=await F(n,{method:`GET`,query:r,signal:Kg(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(Yg(o))throw Error(`session turn page: unexpected HTML response`);Jg(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Xg(s,t)})(),i)}async function Qg(e){let t=e.purpose===`prepend`&&e.before?sh():oh();return Zg({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var $g=3e4,e_=2,t_=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),n_=e=>e?e.toLowerCase().includes(`text/html`):!1,r_=e=>new Promise(t=>{setTimeout(t,e)});function i_(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Jh(`session transcript reconcile: ${t} must be string or null`);return e}function a_(e){if(!e||typeof e!=`object`)throw new Jh(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Jh(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Jh(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Jh(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Jh(`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 Jh(`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 Jh(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=i_(t.capturedHeadMessageID,`capturedHeadMessageID`),r=i_(t.latestHeadMessageID,`latestHeadMessageID`),i=i_(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Jh(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Jh(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Jh(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Jh(`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 Jh(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Jh(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Jh(`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 Jh(`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 o_(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 Jh(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function s_(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),qg((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:t_(e.signal,n)})}catch(e){throw e instanceof qh||e instanceof Jh||e instanceof Yh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new Yh(t.status,`session transcript reconcile failed (${t.status})`);if(n_(t.headers.get(`content-type`)))throw new Jh(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Jh(`session transcript reconcile: malformed JSON`)}return a_(a)})(),n)}async function c_(e){let t=o_(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:$g,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):e_,i=e.sleep??r_,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await s_(e,t,n)}catch(t){if(t instanceof qh||t instanceof Jh||t instanceof Yh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!eg(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var l_=e=>!!(e&&typeof e==`object`&&typeof e.type==`string`),u_=e=>e.filter(l_),d_=e=>{let t=e,n=t.text;return typeof n==`string`?n:t.content||t.value||``},f_=e=>{if(e.type!==`text`)return!1;let t=d_(e);return!t||t.trim().length===0},p_=(e,t={})=>{let{includeReasoning:n=!0}=t,r=u_(e),i=r.some(e=>!e.synthetic);return r.filter(e=>{let t=!!e.synthetic;return t&&e.type===`text`&&d_(e).includes(`<system-reminder>`)||t&&i||!n&&e.type===`reasoning`?!1:e.type!==`patch`})},m_=`GitHub issue context (JSON)`,h_=`GitHub pull request context (JSON)`,g_=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,__=(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}},v_=e=>{let t=__(e,m_);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!g_(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=__(e,h_);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!g_(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},y_=e=>!!e.trim().startsWith(`The following tool was executed by the user`),b_=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),x_=e=>e.trim()===`/compact`,S_=e=>e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(b_(t)||x_(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 n=t.trimStart();return y_(t)||n.startsWith(m_)||n.startsWith(h_)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=v_(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e}),C_=e=>e.some(e=>{if(e.type===`text`)return!f_(e);if(e.type===`file`){let t=e,n=typeof t.mime==`string`?t.mime:``,r=typeof t.url==`string`?t.url:``;return(!!n||!!r)&&!!r&&!Ie(e)}return!0}),w_=e=>e?.length?C_(S_(e)):!1,T_=`oc_asst_session_divider:`,E_=[],D_=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),O_=(e,t=0)=>({info:{id:`${T_}${e}`,role:`system`,time:{created:t}},parts:[]}),k_=(e,t,n=E_)=>{if(!e.length)return E_;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(O_(n.sessionID,Number(n.info.time?.created??0))),r.push({info:n.info,parts:n.parts,sourceSessionID:n.sessionID,sourceDirectory:n.directory}),i=!0,a=n.sessionID);return r.length===0?E_:P_(n,r)?n:r},A_=(e,t)=>{if(t.length===0)return e;if(e.length===0)return t;let n=new Map;for(let e of t)e?.id&&n.set(e.id,e);for(let t of e)t?.id&&n.set(t.id,t);let r=new Set,i=[];for(let e of t){if(!e?.id||r.has(e.id))continue;let t=n.get(e.id);t&&(i.push(t),r.add(e.id))}for(let t of e)!t?.id||r.has(t.id)||(i.push(t),r.add(t.id));return i.length===e.length&&i.every((t,n)=>t===e[n])?e:i},j_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=A_(e.parts,t.parts);return n===e.parts&&e.info===t.info?e:n===t.parts&&e.info===t.info&&e.parts===t.parts?t:{...e,parts:n,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}}return w_(e.parts)?e:w_(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}:{}}},M_=(e,t,n,r=E_)=>{if(!t)return n.length>0?Array.from(n):E_;let i=new Map,a=0;for(let n of e)n.sessionID===t&&i.set(n.info.id,{message:{info:n.info,parts:n.parts},order:a++});for(let e of n){let t=i.get(e.info.id);i.set(e.info.id,{message:j_(e,t?.message),order:t?.order??a++})}if(i.size===0)return E_;let o=[...i.values()].sort((e,t)=>Number(e.message.info.time?.created??0)-Number(t.message.info.time?.created??0)||e.order-t.order).map(({message:e})=>e);return P_(r,o)?r:o},N_=(e,t)=>{if(!D_(e)||!D_(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},P_=(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},F_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),I_=e=>e.startsWith(T_);function L_(e,t){if(!e?.id||I_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(F_(t,`subtask`)||F_(t,`compaction`)||t.every(e=>Qp(e))):!1}function R_(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(L_(r,i))return n}return null}function z_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function B_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:R_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:z_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function V_(e,t){return{...e,...t}}function H_(e,t){let n=kg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),r=e.getQueryData(n);if(!r||typeof r!=`object`)return;let i=r;if(i.sessionID===t.sessionID&&i.transport===t.transport&&i.generation===t.generation)return i}function U_(e,t){let n=kg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function W_(e,t){let n=kg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function G_(e){return e.slim===!0}var K_=/bearer|token|authorization|password|secret|cookie/i,q_=new Set([`message.part.delta`]);function J_(e){return typeof e==`string`&&e.includes(`-`)}var Y_=`openchamber.client-diagnostics.enabled`;function X_(e){return e===`true`||e!==`false`&&null}function Z_(e){return e.preference===!0||e.preference!==!1&&J_(e.version)}function Q_(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function $_(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function ev(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 tv(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return K_.test(t)?`redacted-error`:t}function nv(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)G_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function rv(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function iv(e){let t=0;for(let n of e.messageOrder)vv(e.messagesByID[n])===!0&&(t+=1);return t}function av(e){let t=e.transcript?nv(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:rv(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:iv(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...tv(e.error??e.request?.error)?{error:tv(e.error??e.request?.error)}:{},...ev(e.error)===void 0?{}:{httpStatus:ev(e.error)}}}function ov(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 sv(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 cv(e){return typeof e==`string`&&q_.has(e)}function lv(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return cv(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>cv(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function uv(e){if(e.type===`http-page`)return e.purpose}function dv(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function fv(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 pv(e){return e.__openchamberOptimistic===!0}function mv(e){let t=[];for(let n of e){if(n.type!==`text`)continue;let e=typeof n.text==`string`?n.text.trim():``;e&&t.push(e)}let n=t.join(`
|
|
400
|
-
`).trim();if(n)return K_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function hv(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function gv(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var _v=e=>typeof e==`string`&&e.trim().length>0;function vv(e){if(!e||hv(e)!==`assistant`)return;let t=e,n=!_v(t.mode)&&!_v(t.agent),r=!_v(t.modelID)||!_v(t.providerID);return n||r}function yv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function bv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)G_(e)?r+=1:i+=1,pv(e)&&(a=!0);let o=e.messagesByID[t],s=hv(o),c=vv(o),l=s===`user`?mv(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:gv(o),...s?{role:s}:{},...l?{text:l}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function xv(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:yv(e),after:yv(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 Sv(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:xv(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 Cv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function wv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function Tv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Ev(e){let t=Tv(e.partID),n=Tv(e.messageID),r=Tv(e.directory),i=Tv(e.childSessionID),a=Tv(e.toolStatus),o=Tv(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 Dv(e){return[e.sessionID,Tv(e.partID)??``,e.childSessionPresent?`1`:`0`,Tv(e.childSessionID)??``,Tv(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`,Tv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Ov(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Ev(e)}}function kv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:wv(e),...Ev(e)}}var Av=`openchamber-transcript-diagnostics`,jv=`events`,Mv=1,Nv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),Pv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Mv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(jv)||e.createObjectStore(jv,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),Fv=(e=Av)=>({async append(t,n){let r=await Pv(e);try{let e=r.transaction(jv,`readwrite`).objectStore(jv);await Nv(e.add(t));let i=await Nv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await Nv(e.delete(t))}finally{r.close()}},async read(){let t=await Pv(e);try{return await Nv(t.transaction(jv,`readonly`).objectStore(jv).getAll())}finally{t.close()}},async clear(){let t=await Pv(e);try{await Nv(t.transaction(jv,`readwrite`).objectStore(jv).clear())}finally{t.close()}}});function Iv(e={}){let t=e.driver??Fv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Lv=Qe(`OpenChamberMedia`);function Rv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function zv(){return We()&&$e!==void 0&&$e.isPluginAvailable(`OpenChamberMedia`)}function Bv(){return`1.19.7-beta.21`}function Vv(){if(typeof localStorage>`u`)return null;try{return X_(localStorage.getItem(Y_))}catch{return null}}function Hv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(Y_,e?`true`:`false`)}catch{}}function Uv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var Wv;function Gv(e=Bv()){return Z_({version:e,preference:Vv()})}function Kv(e={}){return sv({sink:Uv()===`indexeddb`?(e.createIndexedDBSink??Iv)():(e.createMemorySink??ov)(),isEnabled:e.isEnabled??Gv})}function qv(){return Wv??=Kv(),Wv}function Jv(e){qv().record(e)}function Yv(e){try{return Gv()?bv(e()):void 0}catch{return}}function Xv(e){try{Jv(Sv(e))}catch{}}function Zv(e){try{Jv(Ov(e))}catch{}}function Qv(e){try{Jv(kv(e))}catch{}}function $v(e){let t=lv(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&Jv(av({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:uv(e.command),sseType:dv(e.command),source:fv(e.command),error:e.error}))}async function ey(){let e=await qv().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 ty(e,t=Q_()){if(zv())return(await Lv.saveFile({dataBase64:Rv(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 ny(){let e=await ey(),t=Q_();return{content:e,fileName:t,outcome:await ty(e,t),eventCount:$_(e)}}function ry(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 iy=2,ay=6e4,oy=6e4;function sy(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??i)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??h)()}}function cy(e,t){let n=(t.probe?.getTransport??i)(),r=(t.probe?.getGeneration??h)();if(n!==e.transport||r!==e.generation)throw new qh}function ly(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function uy(e,t){return wg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function dy(e,t){return`${e.trim()}\n${t}`}function fy(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Ig({client:t,activeRegistry:jg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??iy)),o=e.fetchReconcile??c_,s=e.now??Date.now,c=Math.max(0,e.destructiveResetDedupeMs??ay),l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Set,_=new Map,v=new Set,y=new Map,b=(e,t)=>{g.add(dy(e,t))},x=(e,t)=>{g.delete(dy(e,t))},S=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},C=e=>{u+=1;for(let e of[...f.keys()])S(e);p.clear(),m.clear(),y.clear()},w=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(dy(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of r.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&i.set(dy(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(i.values())},T=(t,n)=>{let i=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of r.listCanonical({transport:t.transport,generation:t.generation}))i.add(e.scope.directory);for(let e of r.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&i.add(e.directory);for(let e of n)e.directory&&i.add(e.directory.trim());return i},E=()=>{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=dy(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}]:[]},D=i=>{if(l)return;let a={transport:i.transport??sy(e).transport,generation:i.generation??sy(e).generation},o=s(),c=E(),u=T(a,c),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(dy(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of r.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(dy(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of c)f.set(dy(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(dy(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=ly(e,a),s=n.getTranscript(r),c=B_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:i.lastEventID,capturedAt:o});U_(t,c)}let p=new Set;for(let t of u){let n=ry({directory:t,activeScopes:w(a,t),viewedSessions:c,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(dy(e.directory,e.sessionID))}for(let e of d){let t=dy(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=Yv(()=>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=Yv(()=>n.getTranscript(e));i&&t&&Xv({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},k=e=>{let t=n.getTranscript(e),r=t.messageOrder[t.messageOrder.length-1];if(!r)return!1;let i=t.messagesByID[r];return!i||i.role!==`assistant`?!1:Rs(i)},A=async(r,i,a)=>{if(cy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;U_(t,V_(H_(t,i)??B_({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=Yv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),cy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;W_(t,i),x(i.directory,i.sessionID),y.set(dy(i.directory,i.sessionID),s());try{let e=Yv(()=>n.getTranscript(r));o&&e&&Xv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw U_(t,V_(H_(t,i)??B_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},j=async(r,i,a)=>{if(cy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;U_(t,V_(H_(t,i)??B_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Yv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),cy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;W_(t,i),x(i.directory,i.sessionID);try{let e=Yv(()=>n.getTranscript(r));o&&e&&Xv({trigger:`reconnect-compensation-ensure-tail`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw U_(t,V_(H_(t,i)??B_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},ee=async(r,i,a,l)=>{let d=ly(r,i),f=uy(r,i),p=Og({directory:f.directory,sessionID:f.sessionID,checkpoint:String(H_(t,f)?.capturedAt??s())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:s()});try{if(cy(i,e),a!==u||l.aborted)throw new qh;let m=H_(t,f);if(m||(m=B_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:s()}),U_(t,m)),!m.anchorMessageID){if(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}m=V_(m,{state:`reconciling`}),U_(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,cy(i,e),a!==u||l.aborted)throw new qh;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,cy(i,e),a!==u||l.aborted)throw new qh;let g=n.getTranscript(d).liveRevision;if(!_&&!h){await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()});return}let x=await o({sessionID:r.sessionID,directory:r.directory.trim(),..._?{continuation:_}:{anchor:h},signal:l});if(cy(i,e),a!==u||l.aborted)throw new qh;if(x.resetRequired){let n=y.get(dy(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}if(S===1&&(v=x.capturedHeadMessageID),b=x.latestHeadMessageID??b,x.records.length>0&&O(d,x,g),m=V_(H_(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),U_(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=V_(H_(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),U_(t,m);continue}if(m=V_(H_(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),U_(t,m),x(r.directory,r.sessionID),t.setQueryData(p,{status:`complete`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}{let n=y.get(dy(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}}}catch(n){if(n instanceof qh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(p,{status:`cancelled`,finishedAt:s()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(p,{status:`error`,finishedAt:s(),code:n instanceof Error?n.name:`error`}),n}},te=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=dy(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),te(n);return}let c=sy(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{Vg(n,o.sessionID);try{await ee(o,c,l,h.signal)}catch{}finally{Hg(n,o.sessionID),f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),te(n)}})();d.set(s,g)},M=e=>{let t=e.directory.trim(),n=dy(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}),te(t))},ne=t=>{let n=E(),i=T(t,n);for(let a of i){let i=ry({directory:a,activeScopes:w(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)M(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=dy(e.scope.directory,e.scope.sessionID);i.some(e=>dy(e.directory,e.sessionID)===t)||b(e.scope.directory,e.scope.sessionID)}}},re=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??i)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??h)(),a=(e.probe?.getTransport??i)();if(r!==n.generation||a!==n.transport){C(`generation_mismatch`);return}ne(n)},ie=t=>{if(l)return;let r=t.directory.trim(),i=sy(e,t),a=ly({directory:r,sessionID:t.sessionID},i),c=Tg(uy({directory:r,sessionID:t.sessionID},i)),u=_.get(c);if(u&&s()-u.checkedAt<oy||v.has(c)||d.has(dy(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(v.add(c),(async()=>{try{if(cy(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(cy(i,e),l||(_.set(c,{checkedAt:s()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;O(a,u,d)}catch{}finally{v.delete(c)}})())};return{captureCheckpoints:D,onCompensation:re,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=dy(i,r.sessionID);if(!g.has(a))return ie(r),null;x(i,r.sessionID);let o=sy(e,r),s=ly({directory:i,sessionID:r.sessionID},o),c=uy({directory:i,sessionID:r.sessionID},o),u=H_(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){M({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{cy(o,e),Vg(i,r.sessionID);try{let e=await n.ensureInitial(s);return W_(t,c),e}finally{Hg(i,r.sessionID)}}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:C,getCheckpoint:n=>{let r=sy(e,n);return H_(t,uy({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(dy(e,t)),destroy:()=>{l=!0,C(`destroy`)}}}var py=e=>e.trim(),my=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session status runtime changed`)},hy=(e,t={})=>{let n=py(e),r=t.transport??i(),a=t.loadSnapshot??((e,t)=>z.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,s=t.runtimeProbe??{},c=(s.getGeneration??h)();return ot({queryKey:N.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{my(r,c,s);let t=o(),i=await a(n,e);if(my(r,c,s),i===null)throw Error(`session status snapshot unavailable`);return{snapshot:i,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},gy=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(hy(e,r))},_y=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session active runtime changed`)},vy=(e={})=>{let t=e.transport??i(),n=e.loadActive??(e=>z.getSessionActive(e)),r=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??h)();return ot({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{_y(t,o,a);let i=r(),s=await n(e);return _y(t,o,a),{result:s,requestedAt:i}},staleTime:0,gcTime:3e5,retry:!1})},yy=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(vy(n))},by;function xy(e){by=e}function Sy(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 Cy(e,t){return JSON.stringify(e)===JSON.stringify(t)}function wy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Ty(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>{let r={...e.session_error_at};return delete r[t],{session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n},session_error_at:r}}),!0)}function Ey(e,t,n,r=Date.now(),i){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let a=e.membership,o=t??{},s=new Set([...n,...Object.keys(o)]);if(s.size===0)return{snapshot:null,source:`none`};let c={};for(let e of s){let t=Object.prototype.hasOwnProperty.call(a,e),n=Sy(o[e]);if(t){c[e]=n&&wy(n,r)?n:{type:`busy`};continue}if(i?.tailOpenSessionIds?.has(e)){c[e]=n?.type===`retry`?n:{type:`busy`};continue}c[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:c,source:`fused`}}function Dy(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,l=()=>o??={...a},u=()=>s??={...e.session_status_observed_at},d=()=>c??={...e.session_error_at},f=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(u()[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=Sy(t[o]);if(n&&n.type!==`idle`){Cy(a[o],n)||(l()[o]=n,i=!0),(n.type===`busy`||n.type===`retry`)&&e.session_error_at?.[o]!==void 0&&(delete d()[o],i=!0),f(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(l()[o]={type:`idle`},i=!0),f(o)}return!o&&!s&&!c?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{},...c?{session_error_at:c}:{}}}),i}function Oy(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function ky(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await gy(e,{client:o,loadSnapshot:r.loadSnapshot,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),f=r.skipActive?Promise.resolve(null):(async()=>{try{return await yy({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}=Ey(l,h,n,Date.now(),{tailOpenSessionIds:r.tailOpenSessionIds});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=Oy(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Dy(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??by;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 Ay({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:ky(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function jy(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function My(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 Ny(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 Py(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(tc(e))??Promise.resolve(),r.get(rc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=tc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=rc(e),i=(r.get(n)??Promise.resolve()).then(t,t);return r.set(n,i.then(()=>void 0,()=>void 0)),i};return{wait:i,persistSettled:(n,r,i)=>a(n,async()=>{if((await e.upsertSettled(n,r,i)).status!==`written`)return;let a=(t.getByteBudget??Sg)();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 Fy=new Map;function Iy(e,t){let n=Fy.get(e);if(n)return n;let r=t().finally(()=>{Fy.get(e)===r&&Fy.delete(e)});return Fy.set(e,r),r}var Ly=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Ry(e){return Iy(Ly(e),e.request)}function zy(e,t){return`${e}\n${t}`}var By=new Map;function Vy(e){return By.get(e)}async function Hy(e){return Ry({runtimeKey:zy(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 By.set(r.id,i),{info:op(r),parts:i}}})}function Uy(e,t){let n=e.info;return n.role===t||n.clientRole===t}function Wy(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Uy(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 Gy(e){if(e.complete){let t=e.records.some(e=>Uy(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=Wy(e.records);if(t.length===0){let t=e.records.some(e=>Uy(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=>Uy(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Ky(e){return e.trim()}function qy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??i)(),r=e.generation??t.generation??(t.probe?.getGeneration??h)();return{directory:Ky(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function Jy(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:rl,liveRevision:0}}function Yy(e,t){if(!e||e.pages.length===0)return Jy(t);let n=Kh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function Xy(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function Zy(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function Qy(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=Xy(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=Xy(e.messagesByID[t]);a===void 0||a<=n||Zy(e.partsByMessageID[t])||i.push(t)}return i}function $y(e={}){let t=e.client??L,n=e.cacheBudget??Ig({client:t,activeRegistry:e.activeRegistry??jg()}),r=n.activeRegistry,a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=e.durableStore?Py(e.durableStore,{getProtectScopes:()=>r.listRetained().map(jy),getByteBudget:e.getDurableByteBudget}):void 0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=Yy(w(e),t.sessionID);!Sl(r)&&!v.has(n)||(y.add(n),Jv(av({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=l.get(e);return t||(t={messages:new Map,parts:new Map},l.set(e,t)),t},w=n=>{let r=qy(n,e);return hg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=qy(t,e);return rg({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=qy(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let r=e.probe??{getTransport:i,getGeneration:h},o=qy(n,{...e,transport:void 0,generation:void 0,probe:r}),s=K(o),c=a.get(s);if(c)return c;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=pg({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(s,l),l},k=t=>{let n=K(qy(t,e));l.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(qy(n,e));if(s.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});s.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=s.get(e);n&&(n(),s.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of p.keys())t.startsWith(e)&&p.delete(t);for(let t of m.keys())t.startsWith(e)&&m.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of p)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of m.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=qy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{u&&u.persistSettled(jy(e),t,n??[])},le=(e,t,n,r)=>{if(!u||S>0||!r.applied||!r.changed)return;let i=jy(t);if(n.type===`remove-message`){u.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(u.clearSession(i),n.page){let r=Yy(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=Yy(w(e),t.sessionID);for(let e of r){let n=Ny(e);if(n.action===`remove`){u.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=Yy(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:i,getGeneration:h},s={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??oh()};return My(r?.fresh?await t.fetchQuery({...sg(s,a,n.transport,o,n.generation),staleTime:0}):await cg(s,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)cu(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now();d.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return d.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Jm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let a=g.get(r);if(a&&a.size>0){let n=[],r=0;for(let o of i.records){let i=o.info.id;if(!(!i||!a.has(i))){if(!gl(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),p.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof qh||!se(t))return d.delete(r),P.getTranscript(e);throw d.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Jv(av({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:Yy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{f.delete(r)}})();return f.set(r,a),a},fe=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;d.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return d.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||eu(t.sessionID,t.directory)?(d.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Jm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return d.delete(r),n instanceof qh||!se(t)||Jv(av({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:Yy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{f.delete(r)}})();return f.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(qy(t,e)))?!0:_h(n).kind===`unknown`},P={getTranscript(t){let n=qy(t,e),r=K(n),i=Yy(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=qy(t,e),r=K(n),i=P.getTranscript(t);return te(r,El(n.sessionID,i.boundary))},getRequestState(t){let n=qy(t,e),r=d.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=qy(t,e),r=K(n),i=P.getTranscript(t);Sl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Cl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:yl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(qy(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(qy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??eb,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=qy(t,e),i=p.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||hl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=qy(t,e),i=M(r,n),a=Yv(()=>P.getTranscript(t)),o=e=>{try{let t=Yv(e);if(!a||!t)return;Xv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=m.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return p.set(i,{status:`idle`}),P.getTranscript(t);if(!hl(P.getParts(t,n))&&!g.get(K(r))?.has(n))return p.set(i,{status:`ready`}),P.getTranscript(t);p.set(i,{status:`loading`}),k(t);try{let a=await Hy({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return z.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return se(r)?(P.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),hl(P.getParts(t,n))?p.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):p.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(p.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return p.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return p.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return m.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{m.get(i)===c&&m.delete(i)}),c},apply(r,i){let a=qy(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=mg(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=mg(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=mg(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=mg(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}),mg(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=mg(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=mg(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 tb(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=mg(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&&($v({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:Yy(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,i){let a=K(qy(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);c.set(a,r.retain(e)),n.noteScopeObserved(e)}return s.add(i),A(t),()=>{let e=o.get(a);if(e){if(e.delete(i),e.size===0){let e=c.get(a);e&&(e(),c.delete(a))}j(a)}}},async ensureInitial(t){let i=qy(t,e),a=K(i);if(u&&await u.wait(jy(i)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(jy(i));if(se(i)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)gl(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Jv(av({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,i);return Jv(av({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!r.isRetained(E(t))){let e=Date.now(),n=await fe(t,i);return Jv(av({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;d.delete(a);try{await s.ensureInitial()}catch(e){throw Jv(av({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:Yy(w(t),i.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}d.delete(a),l||Jm(i.directory,i.sessionID,{transport:i.transport,generation:i.generation}),n.noteScopeObserved(E(t)),D(t);let f=P.getTranscript(t);return Jv(av({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:f,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),f},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),_h(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=qy(t,e),r=K(n);b.add(r),k(t);let i=Date.now();try{await O(t).fetchPreviousPage(),D(t);let e=P.getTranscript(t);return Jv(av({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),e}catch(e){throw Jv(av({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=qy(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=qy(t,e),i=Yv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??oh(),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=Qy(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=Yv(()=>c);i&&e&&Xv({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=Yv(()=>P.getTranscript(t)),i=E(t);return u&&await u.clearSession(jy(qy(t,e))),n.destructiveReset(i,async()=>{let n=qy(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),l.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=Yv(()=>s);r&&e&&Xv({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(qy(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),l.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),l.delete(n);let e=c.get(n);e&&(e(),c.delete(n));let t=s.get(n);t&&(t(),s.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),u&&u.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of s.values())e();s.clear();for(let e of c.values())e();c.clear(),o.clear(),l.clear(),d.clear(),f.clear(),p.clear(),m.clear(),g.clear(),v.clear(),y.clear(),b.clear(),n.dispose()}};return P}var eb=Object.freeze([]);function tb(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=mg(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var nb=`/api/openchamber/transcript-cache`,rb=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),ib=e=>typeof e==`object`&&!!e&&!Array.isArray(e),ab=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},ob=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},sb=e=>{if(!ib(e))throw Error(`Invalid transcript cache scope`);return{transport:ab(e.transport,`scope`),generation:ob(e.generation,`scope`),directory:ab(e.directory,`scope`),sessionID:ab(e.sessionID,`scope`)}},cb=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},lb=e=>{if(!ib(e)||!ib(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!ib(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:sb(e.scope),messageID:ab(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>cb(e,`part completeness`)),completeness:cb(e.completeness,`completeness`),contentHash:ab(e.contentHash,`content hash`),byteSize:ob(e.byteSize,`byte size`),lastAccessedAt:ob(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:ob(e.sortKey.created,`sort key`),messageID:ab(e.sortKey.messageID,`sort key`)}}},ub=(e,t)=>{if(!ib(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(lb);return{scope:e.scope===void 0?gc(t):sb(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},db=e=>{if(!ib(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:lb(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!rb.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:lb(e.record)}}}throw Error(`Invalid transcript cache upsert`)},fb=e=>{if(!ib(e))throw Error(`Invalid transcript cache evict`);return{evicted:ob(e.evicted,`evict`),freedBytes:ob(e.freedBytes,`evict`),remainingBytes:ob(e.remainingBytes,`evict`)}},pb=e=>({scope:gc(e),records:[],byteSize:0}),mb=(e,t)=>ib(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,hb=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`)}},gb=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 hb(r)};let i=await hb(r).catch(()=>void 0);throw Error(mb(i,`Transcript cache request failed (${r.status})`))},_b=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),vb=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function yb(e={}){let t=e.fetch??F;return{async readSession(e){let n=await gb(t,`${nb}/session`,{method:`GET`,query:_b(e)});return n.kind===`disabled`||n.kind===`not-found`?pb(e):ub(n.payload,e)},async readMessage(e,n){let r=await gb(t,`${nb}/message`,{method:`GET`,query:{..._b(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!ib(r.payload))throw Error(`Invalid transcript cache record`);return lb(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await gb(t,`${nb}/message`,vb(`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 db(i.payload)},async removeMessage(e,n){let r=await gb(t,`${nb}/message`,vb(`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 gb(t,`${nb}/session`,vb(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await gb(t,`${nb}/generation`,vb(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await gb(t,`${nb}/evict`,vb(`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 fb(r.payload)},async clearAll(){let e=await gb(t,`${nb}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var bb=`openchamber-transcript-durable`,xb=1,Sb=`transcriptIndex`,Cb=`transcriptContent`,wb=class extends Error{code;constructor(e){super(e),this.code=e}},Tb=e=>({id:nc(e.scope,e.messageID),scope:gc(e.scope),scopeKey:tc(e.scope),generationKey:rc(e.scope),messageID:e.messageID,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID},contentHash:e.contentHash,completeness:e.completeness,partCompleteness:e.partCompleteness.slice(),byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt}),Eb=(e,t)=>({scope:gc(e.scope),messageID:e.messageID,info:hc(t.info),parts:hc(t.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),Db=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Eb(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Ob=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},kb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Ab=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new wb(`database-unavailable`));return}let r=indexedDB.open(e,xb),i=!1,a=()=>{i||(i=!0,n(new wb(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Sb)){let t=e.createObjectStore(Sb,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Cb)||e.createObjectStore(Cb,{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}),jb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new wb(`database-unavailable`)),r.onblocked=()=>void 0}),Mb=(e=bb)=>({transaction:async t=>{let n=await Ab(e),r=n.transaction([Sb,Cb],`readwrite`),i=r.objectStore(Sb),a=r.objectStore(Cb),o=e=>kb(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:()=>jb(e)});function Nb(e,t={}){let n=_c(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Tb(t)),vc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(tc(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Eb(t,r);a.lastAccessedAt=n(),await e.putIndex(Tb(a)),i.push(a)}return yc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Db(e,nc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=bc({info:i,incomingCompleteness:cc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=hc(a.slice()),c=cc(s),l=await dc(i,s),u=nc(t,i.id);return e.transaction(async e=>{let a=await Db(e,u),o=bc({info:i,existing:a,incomingCompleteness:c,incomingHash:l.hash});if(o.status===`skipped`)return o.reason===`slim-downgrade`&&a?{status:`skipped`,reason:`slim-downgrade`,record:vc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:gc(t),messageID:i.id,info:hc(i),parts:s,partCompleteness:s.map(sc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:ac(i)};return await e.putIndex(Tb(d)),await e.putContent({id:u,info:hc(i),parts:s}),{status:`written`,record:vc(d)}})},async removeMessage(t,n){await e.transaction(e=>Ob(e,nc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(tc(t));for(let t of n)await Ob(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(rc(t));for(let t of n)await Ob(e,t.id)})},async evictToBytes(t,n){return e.transaction(async e=>{let r=Number.isFinite(t)?Math.max(0,t):0,i=new Set((n?.protect??[]).map(tc)),a=await e.getAllIndexes(),o=0;for(let e of a)o+=e.byteSize;if(o<=r)return{evicted:0,freedBytes:0,remainingBytes:o};let s=a.filter(e=>!i.has(e.scopeKey)).sort((e,t)=>e.lastAccessedAt===t.lastAccessedAt?ic(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Ob(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 Pb(e={}){return Nb(e.driver??Mb(e.databaseName),e)}function Fb(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??We;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Ib=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Lb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??yb)(),t),i=()=>(n??=(e.createIndexedDBStore??Pb)(),n),a=()=>Fb(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=>Ib([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Rb(e={}){await Lb(e).clearAll()}var zb=(e,t)=>e<t?-1:+(e>t);function Bb(e){return e.filter(e=>!!e?.id).sort((e,t)=>zb(e.id,t.id))}async function Vb(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await Qg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=r.records.map(e=>({info:op(e.info),parts:Bb(e.parts??[])}));if(!e.before&&!r.complete&&Wy(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await Gy({records:a,complete:r.complete,requestMessage:async n=>{let r=await Hy({transport:i(),generation:h(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:Bb(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Bb(e.parts??[])}))}return{records:a,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function Hb(e){let t=e.client??L,n=jg(),r=Ig({client:t,activeRegistry:n}),a=$y({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:i,getGeneration:h},fetcher:e=>Vb({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:oh(),historyLimit:sh(),durableStore:e.durableStore??Lb()}),o=fy({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:r,probe:{getTransport:i,getGeneration:h},confirmSessionStatus:async(t,n)=>{let r=e.childStores.getChild(t.directory);if(!r)return;let i=r.getState().session_status?.[t.sessionID];!n.tailOpen&&i?.type!==`busy`&&i?.type!==`retry`||await ky(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return gu(a),ku(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),ku(null),a.destroy(),_u()}}}function Ub(e){return vu().apply(W(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 Wb=new Map;function Gb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Kb(e,t,n,r={}){let a=r.getTransportIdentity??i,o=r.getGeneration??h,s=a(),c=o(),l=Gb(e,t,s,c),u=()=>a()===s&&o()===c,d=Wb.get(l)??Promise.resolve(),f,p=new Promise(e=>{f=e}),m=d.catch(()=>void 0).then(()=>p);Wb.set(l,m);try{if(await d.catch(()=>void 0),!u())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:s,generation:c,isCurrent:u})}finally{f(),Wb.get(l)===m&&Wb.delete(l)}}var qb=new Set,Jb=new Set,Yb=new Set,Xb=new Set,Zb={onDeleteRequest(e){return qb.add(e),()=>{qb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||qb.forEach(t=>t(e))},onCreateRequest(e){return Jb.add(e),()=>{Jb.delete(e)}},requestCreate(e){let t=e??{};Jb.forEach(e=>e(t))},onDirectoryRequest(e){return Yb.add(e),()=>{Yb.delete(e)}},requestDirectoryDialog(){Yb.forEach(e=>e())},onGitRefreshHint(e){return Xb.add(e),()=>{Xb.delete(e)}},requestGitRefresh(e){e.directory.trim()&&Xb.forEach(t=>t(e))}},Qb=50,$b=e=>{let t=Object.keys(e);if(t.length<=Qb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Qb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},ex=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:$b(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:g(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),tx=new Set([`todowrite`,`todoread`]),nx=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),rx=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),ix=(e,t)=>{ex.getState().setSessionTodos(e,t)},ax=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},ox=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},sx=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},cx=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=sx(n);e&&t.push(e)}return t},lx=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return cx(t);if(t&&typeof t==`object`)return cx(t.todos)}catch{}return[]},ux=e=>{if(!tx.has(ax(e)))return[];let t=ox(e);if(t&&nx.has(t))return[];let n=e.state,r=cx(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=cx(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=cx(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?lx(i):[]};function dx(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=ux(r[e]);if(t.length>0)return t}}return[]}function fx(e){if(!e.sessionID||e.isStale?.()||rx(e.store.getState().todo,e.sessionID))return!1;let t=dx(e.transcript);return t.length===0||e.isStale?.()||rx(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function px(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(W(e.directory,e.sessionID));return t?fx({sessionID:e.sessionID,store:e.store,transcript:t,persist:ix,isStale:e.isStale}):!1}var mx=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>gC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>hC,SESSION_DELETE_UNDO_MS:()=>BS,abortBusySessionForMessageEdit:()=>AC,abortCurrentOperation:()=>xC,archiveSession:()=>XS,beginOptimisticSend:()=>oC,cancelScheduledSessionDeletes:()=>YS,classifySendFailure:()=>uS,combinedSendConfirmationOptions:()=>_C,commitMessageEdit:()=>MC,createSession:()=>PS,deleteSession:()=>qS,dirStoreForDirectory:()=>Xx,dismissOpenQuestionsForSession:()=>TC,ensureSentUserMessagePresence:()=>bC,fetchMessagesForSession:()=>RC,fetchRecentSendConfirmationRecords:()=>pC,forkSession:()=>IC,getSendFailureKind:()=>cS,isQuestionRequestNotFoundError:()=>jS,materializeConfirmedSendRecords:()=>mC,mirrorSessionIntoLiveStores:()=>rS,optimisticInsertUserMessage:()=>dC,optimisticSend:()=>uC,patchSessionMetadata:()=>FS,refetchSessionMessages:()=>PC,rejectQuestion:()=>wC,releaseUnconfirmedQueueSend:()=>qx,requestSessionSmartTitle:()=>$S,resolveForkMessageId:()=>jx,respondToPermission:()=>SC,respondToQuestion:()=>CC,revertToMessage:()=>EC,rollbackOptimisticSend:()=>cC,scheduleSessionDeletes:()=>JS,setActionRefs:()=>Gx,setOptimisticRefs:()=>Kx,settleOptimisticSend:()=>lC,shareSession:()=>eC,shouldSuppressForkCopyEvent:()=>Nx,stageMessageEdit:()=>OC,trackForkCopySessionCreated:()=>Cx,unarchiveSession:()=>ZS,unrevertSession:()=>FC,unshareSession:()=>tC,updateSessionTitle:()=>QS,waitForConnectionOrThrow:()=>mS,waitForSessionIdleForMessageEdit:()=>jC}),hx=2,gx=150,_x=new Set([`patch`,`step-start`,`step-finish`]),vx=3,yx=150,bx=null,xx=new Map,Sx=3e4;function Cx(e,t){let n=t?.id;!bx||bx.runtimeKey!==c()||bx.directory!==e||!n||t?.title!==bx.expectedTargetTitle||n===bx.sourceSessionID||bx.targetSessionID||(bx.targetSessionID=n)}function wx(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function Tx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function Ex(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Dx(e){return e?.type===`busy`||e?.type===`retry`}function Ox(e){for(let t=e.length-1;t>=0;--t)if(e[t]?.role===`user`)return t;return-1}function kx(e){let t=e.at(-1);return t?.role===`assistant`&&t.time.completed==null}function Ax(e,t){return Dx(e)||e==null&&kx(t)}function jx(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(!Ax(n,t))return;let r=Ox(t);if(r!==-1)return t[r+1]?.id}async function Mx(e,t){let n=Pp(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return z.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function Nx(e,t,n){if(bx&&bx.runtimeKey===c()&&bx.directory===e&&t&&t===bx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${c()}:${e}:${t}`,i=xx.get(r);return i?i.expiresAt<=Date.now()?(xx.delete(r),!1):n<=i.messageID:!1}var Px=null,Fx=null,Ix=()=>``,Lx=new Map,Rx=null,zx=null,Bx=null,Vx=e=>new Promise(t=>setTimeout(t,e));function Hx(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 Ux(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Hx(e.error)}`);throw n!==void 0&&(r.status=n),r}function Wx(e,t){let n=Ux(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Gx(e,t,n){if(Px=e,Fx=t,Ix=n,Lx.size>0){let e=[...Lx.values()];Lx.clear(),queueMicrotask(()=>{for(let t of e)RC(t.sessionID,t.directory)})}}function Kx(e,t,n){Rx=e,zx=t,Bx=n??null}function qx(e){let t=e.directory??null;zx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Jx(){if(!Px)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Px}function Yx(){if(!Fx)throw Error(`Child stores not initialized`);let e=Ix();if(!e)throw Error(`No current directory`);return Fx.ensureChild(e)}function Xx(e,t){if(!Fx)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Fx.ensureChild(e,t)}function Zx(e,t){let n=t??bS(e);return n?{store:Xx(n),directory:n}:{store:Yx(),directory:iS()}}function Qx(e,t){let{store:n,directory:r}=Zx(e,t??void 0),i=r??iS()??``;return{repository:H()??U(i,n),directory:i,store:n}}function $x(e,t){let{repository:n,directory:r,store:i}=Qx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(W(r,e))}}function eS(e,t){return Wu($x(e,t).data)}function tS(e,t){return $x(e,t).data.messageOrder.length}function nS(e,t){let n=Fx;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]=eD(e,n[r]),t.setState({session:i}),!0}return!1}function rS(e,t){t&&nS(e,t)||nS(e)}function iS(){return Ix()||void 0}function aS(){let{hasEverConnected:e,lastDisconnectReason:t}=Vf.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function oS(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 sS=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 cS(e){return e instanceof sS?e.kind:null}function lS(e){let t=oS(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 uS(e,t){return t?lS(e)||oS(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var dS=2e3,fS=5e3,pS=3e4;async function mS(){let e=Hm();e&&Vm(`send_stream_stale`);let t=Date.now()+(e?fS:dS);for(;Date.now()<t;){if(Vf.getState().isConnected&&!Hm()||d()&&!Hm())return;let e=t-Date.now();if(e<=0)break;if(await Vf.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Hm())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw aS()}function hS(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Vm(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},pS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function gS(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function _S(e){e&&Y.getState().upsertSession(e)}function vS(e,t){let n=ip(t),r=[...e.getState().session],i=cs.search(r,n.id,e=>e.id);if(i.found){let t=eD(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 yS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=gS(e);if(i)return vS(t,i);try{return vS(t,await z.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function bS(e){return xS(e)||$.getState().getDirectoryForSession(e)||iS()}function xS(e){let t=Fx;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 SS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):Jx()}function CS(e){Or.getState().clearAttachedFiles();for(let t of e){let e=typeof t.url==`string`?t.url:``,n=typeof t.mime==`string`?t.mime:`application/octet-stream`,r=typeof t.filename==`string`?t.filename:`attachment`;e&&Or.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var wS=()=>new Map(Array.from(Ad(),([e,t])=>[e,t.title||e]));function TS(e){return!(e.type!==`file`||Qp(e))}function ES(e){return TS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function DS(e){return e.some(ES)}async function OS(e){let t=[...e.parts];if(!DS(t))return t;let n=h(),r=e.directory??``;try{await Tu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||h()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=Qx(e.sessionID,r);if(t=[...i.getParts(W(a,e.sessionID),e.messageID)],DS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function kS(e){if(DS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await Cm(e.parts,{sessionTitles:wS(),directory:e.directory}),n=Or.getState(),r=n.getDraft(e.key);return{payload:t,commit:await Om({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function AS(e,t,n){let r=Fx;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 jS(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 MS(e,t){let n=Fx;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 NS(e,t,n){let r=AS(e,t,n);return r?z.getScopedSdkClient(r):SS(t)}async function PS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??iS()),a=i.directory??null;return a&&Sd(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 FS(e,t,n){let r=t??bS(e),i=n(Pp(await z.getSession(e,r))),a=await z.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Sd(a.id,o),a}async function IS(e,t){let n;try{n=await z.getSession(e,t??bS(e))}catch{return}if(!Rp(n))return;let r=Lp(n);if(r)try{await FS(r,t??bS(r),t=>Vp(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 LS(e,t){if(!Fx)return[];let n=[],r=new Set,i=[];if(t){let e=Fx.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Fx.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 RS(e){if(Fx)for(let t of e){let e=Fx.children.get(t.directory);e&&e.setState({session:t.sessions})}}function zS(e){$.getState().setWorktreeMetadata(e,null)}var BS=1e4,VS=new Map,HS=0;function US(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function WS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),RS(e.listSnapshots),_S(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function GS(e,t){let n=t??bS(e);Y.getState().markSessionsPendingDeletion([e]);let r=LS(e,n),i=gS(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 KS(e,t){try{if(await IS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return LS(e,t),Y.getState().removeSessions([e]),zS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(LS(e,t),Y.getState().removeSessions([e]),zS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function qS(e,t){let n=GS(e);return await KS(e,n.directory)?!0:(WS(n),!1)}function JS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>GS(e)),i=`session-delete-${Date.now()}-${HS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=VS.get(i);if(!e)return;VS.delete(i);let t=[],n=[];for(let r of e.entries)await KS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),WS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return VS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function YS(e){if(!e)return!1;let t=VS.get(e);if(!t)return!1;clearTimeout(t.timer),VS.delete(e);for(let e of[...t.entries].reverse())WS(e);return!0}async function XS(e){let t=bS(e),n=LS(e,t),r=gS(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await IS(e,t);let n=await z.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),RS(n),_S(r),!1}}async function ZS(e){let t=bS(e),n=gS(e),r=n?US(n):null;if(r&&(Y.getState().upsertSession(r),t&&Fx)){let e=Fx.children.get(t);e&&vS(e,r)}try{let n=await z.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=US(n);if(Y.getState().upsertSession(r),t&&Fx){let e=Fx.children.get(t);e?vS(e,r):rS(r,t)}else rS(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&LS(e,t)),!1}}async function QS(e,t){let n=bS(e),r=gS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?qf(r):0,c=await z.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),rS(c,n)}async function $S(e){let t=bS(e),n=gS(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await z.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),rS(s,t)}async function eC(e){let t=bS(e),n=ip(Wx(await Jx().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),nS(n,t),n}async function tC(e){let t=bS(e),n=ip(Wx(await Jx().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),nS(n,t),n}function nC(e){let t=Fx,n=e??Ix();if(!t||!n)return{store:e?Xx(e):Yx(),isCurrent:()=>!0};let r=t,i=r.captureChild?.(n);if(i&&r.isCurrentChildCapture)return{store:i.store,isCurrent:()=>r.isCurrentChildCapture?.(i)===!0};let a=t.ensureChild(n);return{store:a,isCurrent:()=>t.getChild(n)===a}}function rC(){return{identity:i(),generation:h()}}function iC(e,t){return e.isCurrent()&&i()===t.identity&&h()===t.generation}function aC(e,t){if(!iC(e,t))throw Error(`Send target changed before transport dispatch`)}function oC(e){if(!Rx||!zx)throw new sS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??iS()??null,n=nC(t),r=rC();aC(n,r),e.beforeOptimisticInsert?.(),aC(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),im(e.sessionId),dC({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 sS?e:new sS(cS(e)??uS(e,!1),e)}}function sC(e){if(!iC(e.capture,e.transport)||!zx)return;zx({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 cC(e){sC(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function lC(e){if(!Rx||!zx)throw new sS(`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 mS(),aC(n,r),s=!0,await hS(e.send(i)),!iC(n,r))throw new sS(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=cS(c)??uS(c,s),u=c instanceof sS?c:new sS(l,c,i);if(!iC(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await pC(a,i,o):null;if(d&&iC(n,r)){mC(n.store,a,i,d,{directory:o??void 0}),Bx?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||sC(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function uC(e){await lC({ticket:e.ticket??oC({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 dC(e){if(!Rx)return!1;let t=e.directory??iS(),n=t?Xx(t):Yx(),r=t??iS()??``;if(vC(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),s={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},c=Yv(()=>$x(e.sessionId,t).data);Rx({sessionID:e.sessionId,directory:t,message:s,parts:a});let l=Yv(()=>$x(e.sessionId,t).data);try{c&&l&&Xv({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:i(),generation:h(),before:c,after:l})}catch{}let u=n.getState();return n.setState({session_status:{...u.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...u.session_status_observed_at,[e.sessionId]:o}}),!0}function fC(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function pC(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??hx,c=r?.retryDelayMs??gx;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!fC(r?.isCurrent)||a>0&&(await Vx(c),i?.signal.aborted||!fC(r?.isCurrent)))return null;try{let a=await Jx().session.messages({sessionID:e,directory:n??void 0,limit:uh(),...i?{signal:i.signal}:{}});if(!fC(r?.isCurrent))return null;let o=(Ux(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 mC(e,t,n,r,i){if(!r.length)return;let a=i?.directory??bS(t)??Ix(),o=W(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:op(e.info),parts:e.parts??[]})),skipPartTypes:_x,merge:i?.gapFillOnly===!0?Ys:Zs({purpose:`recovery`})};bu(o,s)||U(a,e).apply(o,s)}var hC=2e3,gC={attempts:12,retryDelayMs:500},_C={presenceGraceMs:hC,recovery:{...gC}};function vC(e,t,n,r){let i=r??bS(t)??Ix()??``,a=H()??U(i,e),o=W(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function yC(e,t,n,r){let i=r?.directory??bS(t)??Ix()??``;if(vC(e,t,n,i))return Promise.resolve(!0);if(!fC(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=H()??U(i,e),f=W(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!fC(r?.isCurrent)){l(!1);return}vC(e,t,n,i)&&l(!0)}),vC(e,t,n,i)&&l(!0)})}async function bC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await yC(t,n,r,{timeoutMs:e.graceMs??_C.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!fC(a))return`cancelled`;let o=await pC(n,r,i,{..._C.recovery,isCurrent:a});return o?fC(a)?(mC(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:fC(a)?`missing`:`cancelled`}async function xC(e){let{store:t,directory:n}=Zx(e),r=n?{state:`bound`,transportIdentity:i(),directory:n,sessionID:e}:null,a=r?$.getState().beginQueueAbortBlock(r):null;try{if(Wx(await Jx().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&a&&$.getState().clearQueueAbortBlock(r,a),et(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>BV);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function SC(e,t,n){await mS();let r=AS(`permission`,e,t)||bS(e)||iS();if(Wx(await NS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function CC(e,t,n){await mS();let r=AS(`question`,e,t)||bS(e)||iS();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Wx(await NS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw jS(n)&&MS(e,t),n}}async function wC(e,t){await mS();let n=AS(`question`,e,t)||bS(e)||iS();try{if(Wx(await NS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw jS(n)&&MS(e,t),n}}async function TC(e){if(!e)return!1;let t=Fx;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=qp(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)MS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await wC(e,t)}catch(e){if(jS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function EC(e,t,n){let r=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return Kb(e,r??(()=>{try{return Zx(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:o,directory:c}=Zx(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Jx().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=eS(e,c).find(e=>e.id===t),d=eS(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}=Qx(e,c),m=[...f.getParts(W(p,e),t)],h=a===void 0?s?C({transportIdentity:i()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await OS({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await Cm(m,{sessionTitles:wS(),directory:c})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=o.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),w={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},w.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(o.setState(w),h){let t=Or.getState(),r=await Om({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 Am({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await z.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await Am({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&&Zb.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 Am({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await Am({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function DC(e,t,n,r){let a=r??bS(t)??Ix(),o=W(a,t),s=Yv(()=>$x(t,a).data),c=[...yu(t)];c.some(e=>e.directory===a&&e.sessionID===t)||c.push(o);let l=!1;for(let e of c)bu(e,{type:`remove-message`,messageID:n})!=null&&(l=!0);l||U(a,e).apply(o,{type:`remove-message`,messageID:n});let u=Yv(()=>$x(t,a).data);try{s&&u&&Xv({trigger:`user-delete`,sessionID:t,directory:a,transport:i(),generation:h(),before:s,after:u})}catch{}}async function OC(e,t,n,r){let a=n?.info,o=n?.parts,s=r?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=Zx(e,s).directory}else{c=Zx(e,s).directory;let{data:n}=$x(e,c),r=Wu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=r?.draftKey??C({transportIdentity:i()},e),{commit:u}=await kS({key:l,parts:await OS({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 Am({key:l,restoredRevision:d,previous:f})).status})}}function kC(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 AC(e,t){let n=t?.directory,{store:r,directory:i}=Zx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Jx().session.abort({sessionID:e,directory:i})}catch{}}async function jC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=Zx(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 MC(e,t,n){let r=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:s}=Zx(e,r),c=Yv(()=>$x(e,r).data);try{await AC(e,{directory:r}),await jC(e,{directory:r});let n=new Set((await NC(e,r)).map(e=>e.id)),i=kC(t,eS(e,r),n,{preserveMessageId:a});for(let t of[...i].reverse())await z.deleteSessionMessage(e,t.id,s),DC(o,e,t.id,s)}finally{try{let t=Yv(()=>$x(e,r).data);c&&t&&Xv({trigger:`user-edit`,sessionID:e,directory:s,transport:i(),generation:h(),before:c,after:t})}catch{}}}async function NC(e,t){let{directory:n}=Zx(e,t);return(Ux(await Jx().session.messages({sessionID:e,directory:n,limit:lh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>op(e.info))}async function PC(e,t){let{store:n,directory:r}=Zx(e,t),a=Yv(()=>$x(e,t).data),o=(Ux(await Jx().session.messages({sessionID:e,directory:r,limit:lh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Yv(()=>$x(e,t).data);a&&n&&Xv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let s=o.map(e=>({info:op(e.info),parts:e.parts??[]})),c=W(r??Ix(),e);bu(c,{type:`materialize-snapshots`,records:s,skipPartTypes:_x})||U(r??Ix(),n).apply(c,{type:`materialize-snapshots`,records:s,skipPartTypes:_x});try{let n=Yv(()=>$x(e,t).data);a&&n&&Xv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return s.map(e=>e.info)}async function FC(e,t){return Kb(e,t??(()=>{try{return Zx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=Zx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=tS(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Jx().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Jx().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Wx(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<vx;r+=1){if(r>0&&(await Vx(yx),!n())||(await PC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(tS(e,i)>o)return}if(tS(e,i)<=o){let n=i??Ix(),a=H()??U(n,r),o=W(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await PC(e,t)}})}async function IC(e,t,n,r){let i=c(),{store:a,directory:o}=Zx(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await yS(e,a,o);Sd(e,o);let l=a.getState(),u=l.session_status[e],d=eS(e,o);u?.type,d.length;let f=jx(n,d,u);if(!n&&Ax(u,d)&&Ox(d)===-1&&(await PC(e),l=a.getState(),u=l.session_status[e],d=eS(e,o),f=jx(void 0,d,u)),!n&&Ax(u,d)&&Ox(d)===-1)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:tS(e,o)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=$x(e,o),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(W(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!Qp(e)).map(e=>e.text||e.content||``).join(`
|
|
400
|
+
`).trim();if(n)return K_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function hv(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function gv(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var _v=e=>typeof e==`string`&&e.trim().length>0;function vv(e){if(!e||hv(e)!==`assistant`)return;let t=e,n=!_v(t.mode)&&!_v(t.agent),r=!_v(t.modelID)||!_v(t.providerID);return n||r}function yv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function bv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)G_(e)?r+=1:i+=1,pv(e)&&(a=!0);let o=e.messagesByID[t],s=hv(o),c=vv(o),l=s===`user`?mv(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:gv(o),...s?{role:s}:{},...l?{text:l}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function xv(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:yv(e),after:yv(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 Sv(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:xv(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 Cv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function wv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function Tv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Ev(e){let t=Tv(e.partID),n=Tv(e.messageID),r=Tv(e.directory),i=Tv(e.childSessionID),a=Tv(e.toolStatus),o=Tv(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 Dv(e){return[e.sessionID,Tv(e.partID)??``,e.childSessionPresent?`1`:`0`,Tv(e.childSessionID)??``,Tv(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`,Tv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Ov(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Ev(e)}}function kv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:wv(e),...Ev(e)}}var Av=`openchamber-transcript-diagnostics`,jv=`events`,Mv=1,Nv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),Pv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Mv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(jv)||e.createObjectStore(jv,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),Fv=(e=Av)=>({async append(t,n){let r=await Pv(e);try{let e=r.transaction(jv,`readwrite`).objectStore(jv);await Nv(e.add(t));let i=await Nv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await Nv(e.delete(t))}finally{r.close()}},async read(){let t=await Pv(e);try{return await Nv(t.transaction(jv,`readonly`).objectStore(jv).getAll())}finally{t.close()}},async clear(){let t=await Pv(e);try{await Nv(t.transaction(jv,`readwrite`).objectStore(jv).clear())}finally{t.close()}}});function Iv(e={}){let t=e.driver??Fv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Lv=Qe(`OpenChamberMedia`);function Rv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function zv(){return We()&&$e!==void 0&&$e.isPluginAvailable(`OpenChamberMedia`)}function Bv(){return`1.19.7-beta.22`}function Vv(){if(typeof localStorage>`u`)return null;try{return X_(localStorage.getItem(Y_))}catch{return null}}function Hv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(Y_,e?`true`:`false`)}catch{}}function Uv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var Wv;function Gv(e=Bv()){return Z_({version:e,preference:Vv()})}function Kv(e={}){return sv({sink:Uv()===`indexeddb`?(e.createIndexedDBSink??Iv)():(e.createMemorySink??ov)(),isEnabled:e.isEnabled??Gv})}function qv(){return Wv??=Kv(),Wv}function Jv(e){qv().record(e)}function Yv(e){try{return Gv()?bv(e()):void 0}catch{return}}function Xv(e){try{Jv(Sv(e))}catch{}}function Zv(e){try{Jv(Ov(e))}catch{}}function Qv(e){try{Jv(kv(e))}catch{}}function $v(e){let t=lv(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&Jv(av({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:uv(e.command),sseType:dv(e.command),source:fv(e.command),error:e.error}))}async function ey(){let e=await qv().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 ty(e,t=Q_()){if(zv())return(await Lv.saveFile({dataBase64:Rv(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 ny(){let e=await ey(),t=Q_();return{content:e,fileName:t,outcome:await ty(e,t),eventCount:$_(e)}}function ry(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 iy=2,ay=6e4,oy=6e4;function sy(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??i)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??h)()}}function cy(e,t){let n=(t.probe?.getTransport??i)(),r=(t.probe?.getGeneration??h)();if(n!==e.transport||r!==e.generation)throw new qh}function ly(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function uy(e,t){return wg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function dy(e,t){return`${e.trim()}\n${t}`}function fy(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Ig({client:t,activeRegistry:jg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??iy)),o=e.fetchReconcile??c_,s=e.now??Date.now,c=Math.max(0,e.destructiveResetDedupeMs??ay),l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Set,_=new Map,v=new Set,y=new Map,b=(e,t)=>{g.add(dy(e,t))},x=(e,t)=>{g.delete(dy(e,t))},S=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},C=e=>{u+=1;for(let e of[...f.keys()])S(e);p.clear(),m.clear(),y.clear()},w=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(dy(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of r.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&i.set(dy(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(i.values())},T=(t,n)=>{let i=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of r.listCanonical({transport:t.transport,generation:t.generation}))i.add(e.scope.directory);for(let e of r.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&i.add(e.directory);for(let e of n)e.directory&&i.add(e.directory.trim());return i},E=()=>{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=dy(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}]:[]},D=i=>{if(l)return;let a={transport:i.transport??sy(e).transport,generation:i.generation??sy(e).generation},o=s(),c=E(),u=T(a,c),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(dy(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of r.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(dy(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of c)f.set(dy(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(dy(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=ly(e,a),s=n.getTranscript(r),c=B_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:i.lastEventID,capturedAt:o});U_(t,c)}let p=new Set;for(let t of u){let n=ry({directory:t,activeScopes:w(a,t),viewedSessions:c,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(dy(e.directory,e.sessionID))}for(let e of d){let t=dy(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=Yv(()=>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=Yv(()=>n.getTranscript(e));i&&t&&Xv({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},k=e=>{let t=n.getTranscript(e),r=t.messageOrder[t.messageOrder.length-1];if(!r)return!1;let i=t.messagesByID[r];return!i||i.role!==`assistant`?!1:Rs(i)},A=async(r,i,a)=>{if(cy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;U_(t,V_(H_(t,i)??B_({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=Yv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),cy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;W_(t,i),x(i.directory,i.sessionID),y.set(dy(i.directory,i.sessionID),s());try{let e=Yv(()=>n.getTranscript(r));o&&e&&Xv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw U_(t,V_(H_(t,i)??B_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},j=async(r,i,a)=>{if(cy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;U_(t,V_(H_(t,i)??B_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Yv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),cy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;W_(t,i),x(i.directory,i.sessionID);try{let e=Yv(()=>n.getTranscript(r));o&&e&&Xv({trigger:`reconnect-compensation-ensure-tail`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw U_(t,V_(H_(t,i)??B_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},ee=async(r,i,a,l)=>{let d=ly(r,i),f=uy(r,i),p=Og({directory:f.directory,sessionID:f.sessionID,checkpoint:String(H_(t,f)?.capturedAt??s())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:s()});try{if(cy(i,e),a!==u||l.aborted)throw new qh;let m=H_(t,f);if(m||(m=B_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:s()}),U_(t,m)),!m.anchorMessageID){if(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}m=V_(m,{state:`reconciling`}),U_(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,cy(i,e),a!==u||l.aborted)throw new qh;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,cy(i,e),a!==u||l.aborted)throw new qh;let g=n.getTranscript(d).liveRevision;if(!_&&!h){await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()});return}let x=await o({sessionID:r.sessionID,directory:r.directory.trim(),..._?{continuation:_}:{anchor:h},signal:l});if(cy(i,e),a!==u||l.aborted)throw new qh;if(x.resetRequired){let n=y.get(dy(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}if(S===1&&(v=x.capturedHeadMessageID),b=x.latestHeadMessageID??b,x.records.length>0&&O(d,x,g),m=V_(H_(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),U_(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=V_(H_(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),U_(t,m);continue}if(m=V_(H_(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),U_(t,m),x(r.directory,r.sessionID),t.setQueryData(p,{status:`complete`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}{let n=y.get(dy(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}}}catch(n){if(n instanceof qh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(p,{status:`cancelled`,finishedAt:s()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(p,{status:`error`,finishedAt:s(),code:n instanceof Error?n.name:`error`}),n}},te=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=dy(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),te(n);return}let c=sy(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{Vg(n,o.sessionID);try{await ee(o,c,l,h.signal)}catch{}finally{Hg(n,o.sessionID),f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),te(n)}})();d.set(s,g)},M=e=>{let t=e.directory.trim(),n=dy(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}),te(t))},ne=t=>{let n=E(),i=T(t,n);for(let a of i){let i=ry({directory:a,activeScopes:w(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)M(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=dy(e.scope.directory,e.scope.sessionID);i.some(e=>dy(e.directory,e.sessionID)===t)||b(e.scope.directory,e.scope.sessionID)}}},re=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??i)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??h)(),a=(e.probe?.getTransport??i)();if(r!==n.generation||a!==n.transport){C(`generation_mismatch`);return}ne(n)},ie=t=>{if(l)return;let r=t.directory.trim(),i=sy(e,t),a=ly({directory:r,sessionID:t.sessionID},i),c=Tg(uy({directory:r,sessionID:t.sessionID},i)),u=_.get(c);if(u&&s()-u.checkedAt<oy||v.has(c)||d.has(dy(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(v.add(c),(async()=>{try{if(cy(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(cy(i,e),l||(_.set(c,{checkedAt:s()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;O(a,u,d)}catch{}finally{v.delete(c)}})())};return{captureCheckpoints:D,onCompensation:re,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=dy(i,r.sessionID);if(!g.has(a))return ie(r),null;x(i,r.sessionID);let o=sy(e,r),s=ly({directory:i,sessionID:r.sessionID},o),c=uy({directory:i,sessionID:r.sessionID},o),u=H_(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){M({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{cy(o,e),Vg(i,r.sessionID);try{let e=await n.ensureInitial(s);return W_(t,c),e}finally{Hg(i,r.sessionID)}}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:C,getCheckpoint:n=>{let r=sy(e,n);return H_(t,uy({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(dy(e,t)),destroy:()=>{l=!0,C(`destroy`)}}}var py=e=>e.trim(),my=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session status runtime changed`)},hy=(e,t={})=>{let n=py(e),r=t.transport??i(),a=t.loadSnapshot??((e,t)=>z.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,s=t.runtimeProbe??{},c=(s.getGeneration??h)();return ot({queryKey:N.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{my(r,c,s);let t=o(),i=await a(n,e);if(my(r,c,s),i===null)throw Error(`session status snapshot unavailable`);return{snapshot:i,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},gy=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(hy(e,r))},_y=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session active runtime changed`)},vy=(e={})=>{let t=e.transport??i(),n=e.loadActive??(e=>z.getSessionActive(e)),r=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??h)();return ot({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{_y(t,o,a);let i=r(),s=await n(e);return _y(t,o,a),{result:s,requestedAt:i}},staleTime:0,gcTime:3e5,retry:!1})},yy=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(vy(n))},by;function xy(e){by=e}function Sy(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 Cy(e,t){return JSON.stringify(e)===JSON.stringify(t)}function wy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Ty(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>{let r={...e.session_error_at};return delete r[t],{session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n},session_error_at:r}}),!0)}function Ey(e,t,n,r=Date.now(),i){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let a=e.membership,o=t??{},s=new Set([...n,...Object.keys(o)]);if(s.size===0)return{snapshot:null,source:`none`};let c={};for(let e of s){let t=Object.prototype.hasOwnProperty.call(a,e),n=Sy(o[e]);if(t){c[e]=n&&wy(n,r)?n:{type:`busy`};continue}if(i?.tailOpenSessionIds?.has(e)){c[e]=n?.type===`retry`?n:{type:`busy`};continue}c[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:c,source:`fused`}}function Dy(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,l=()=>o??={...a},u=()=>s??={...e.session_status_observed_at},d=()=>c??={...e.session_error_at},f=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(u()[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=Sy(t[o]);if(n&&n.type!==`idle`){Cy(a[o],n)||(l()[o]=n,i=!0),(n.type===`busy`||n.type===`retry`)&&e.session_error_at?.[o]!==void 0&&(delete d()[o],i=!0),f(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(l()[o]={type:`idle`},i=!0),f(o)}return!o&&!s&&!c?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{},...c?{session_error_at:c}:{}}}),i}function Oy(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function ky(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await gy(e,{client:o,loadSnapshot:r.loadSnapshot,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),f=r.skipActive?Promise.resolve(null):(async()=>{try{return await yy({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}=Ey(l,h,n,Date.now(),{tailOpenSessionIds:r.tailOpenSessionIds});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=Oy(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Dy(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??by;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 Ay({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:ky(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function jy(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function My(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 Ny(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 Py(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(tc(e))??Promise.resolve(),r.get(rc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=tc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=rc(e),i=(r.get(n)??Promise.resolve()).then(t,t);return r.set(n,i.then(()=>void 0,()=>void 0)),i};return{wait:i,persistSettled:(n,r,i)=>a(n,async()=>{if((await e.upsertSettled(n,r,i)).status!==`written`)return;let a=(t.getByteBudget??Sg)();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 Fy=new Map;function Iy(e,t){let n=Fy.get(e);if(n)return n;let r=t().finally(()=>{Fy.get(e)===r&&Fy.delete(e)});return Fy.set(e,r),r}var Ly=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Ry(e){return Iy(Ly(e),e.request)}function zy(e,t){return`${e}\n${t}`}var By=new Map;function Vy(e){return By.get(e)}async function Hy(e){return Ry({runtimeKey:zy(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 By.set(r.id,i),{info:op(r),parts:i}}})}function Uy(e,t){let n=e.info;return n.role===t||n.clientRole===t}function Wy(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Uy(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 Gy(e){if(e.complete){let t=e.records.some(e=>Uy(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=Wy(e.records);if(t.length===0){let t=e.records.some(e=>Uy(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=>Uy(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Ky(e){return e.trim()}function qy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??i)(),r=e.generation??t.generation??(t.probe?.getGeneration??h)();return{directory:Ky(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function Jy(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:rl,liveRevision:0}}function Yy(e,t){if(!e||e.pages.length===0)return Jy(t);let n=Kh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function Xy(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function Zy(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function Qy(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=Xy(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=Xy(e.messagesByID[t]);a===void 0||a<=n||Zy(e.partsByMessageID[t])||i.push(t)}return i}function $y(e={}){let t=e.client??L,n=e.cacheBudget??Ig({client:t,activeRegistry:e.activeRegistry??jg()}),r=n.activeRegistry,a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=e.durableStore?Py(e.durableStore,{getProtectScopes:()=>r.listRetained().map(jy),getByteBudget:e.getDurableByteBudget}):void 0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=Yy(w(e),t.sessionID);!Sl(r)&&!v.has(n)||(y.add(n),Jv(av({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=l.get(e);return t||(t={messages:new Map,parts:new Map},l.set(e,t)),t},w=n=>{let r=qy(n,e);return hg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=qy(t,e);return rg({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=qy(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let r=e.probe??{getTransport:i,getGeneration:h},o=qy(n,{...e,transport:void 0,generation:void 0,probe:r}),s=K(o),c=a.get(s);if(c)return c;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=pg({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(s,l),l},k=t=>{let n=K(qy(t,e));l.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(qy(n,e));if(s.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});s.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=s.get(e);n&&(n(),s.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of p.keys())t.startsWith(e)&&p.delete(t);for(let t of m.keys())t.startsWith(e)&&m.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of p)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of m.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=qy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{u&&u.persistSettled(jy(e),t,n??[])},le=(e,t,n,r)=>{if(!u||S>0||!r.applied||!r.changed)return;let i=jy(t);if(n.type===`remove-message`){u.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(u.clearSession(i),n.page){let r=Yy(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=Yy(w(e),t.sessionID);for(let e of r){let n=Ny(e);if(n.action===`remove`){u.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=Yy(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:i,getGeneration:h},s={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??oh()};return My(r?.fresh?await t.fetchQuery({...sg(s,a,n.transport,o,n.generation),staleTime:0}):await cg(s,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)cu(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now();d.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return d.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Jm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let a=g.get(r);if(a&&a.size>0){let n=[],r=0;for(let o of i.records){let i=o.info.id;if(!(!i||!a.has(i))){if(!gl(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),p.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof qh||!se(t))return d.delete(r),P.getTranscript(e);throw d.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Jv(av({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:Yy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{f.delete(r)}})();return f.set(r,a),a},fe=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;d.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return d.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||eu(t.sessionID,t.directory)?(d.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Jm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return d.delete(r),n instanceof qh||!se(t)||Jv(av({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:Yy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{f.delete(r)}})();return f.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(qy(t,e)))?!0:_h(n).kind===`unknown`},P={getTranscript(t){let n=qy(t,e),r=K(n),i=Yy(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=qy(t,e),r=K(n),i=P.getTranscript(t);return te(r,El(n.sessionID,i.boundary))},getRequestState(t){let n=qy(t,e),r=d.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=qy(t,e),r=K(n),i=P.getTranscript(t);Sl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Cl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:yl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(qy(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(qy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??eb,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=qy(t,e),i=p.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||hl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=qy(t,e),i=M(r,n),a=Yv(()=>P.getTranscript(t)),o=e=>{try{let t=Yv(e);if(!a||!t)return;Xv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=m.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return p.set(i,{status:`idle`}),P.getTranscript(t);if(!hl(P.getParts(t,n))&&!g.get(K(r))?.has(n))return p.set(i,{status:`ready`}),P.getTranscript(t);p.set(i,{status:`loading`}),k(t);try{let a=await Hy({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return z.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return se(r)?(P.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),hl(P.getParts(t,n))?p.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):p.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(p.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return p.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return p.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return m.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{m.get(i)===c&&m.delete(i)}),c},apply(r,i){let a=qy(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=mg(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=mg(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=mg(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=mg(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}),mg(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=mg(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=mg(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 tb(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=mg(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&&($v({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:Yy(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,i){let a=K(qy(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);c.set(a,r.retain(e)),n.noteScopeObserved(e)}return s.add(i),A(t),()=>{let e=o.get(a);if(e){if(e.delete(i),e.size===0){let e=c.get(a);e&&(e(),c.delete(a))}j(a)}}},async ensureInitial(t){let i=qy(t,e),a=K(i);if(u&&await u.wait(jy(i)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(jy(i));if(se(i)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)gl(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Jv(av({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,i);return Jv(av({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!r.isRetained(E(t))){let e=Date.now(),n=await fe(t,i);return Jv(av({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;d.delete(a);try{await s.ensureInitial()}catch(e){throw Jv(av({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:Yy(w(t),i.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}d.delete(a),l||Jm(i.directory,i.sessionID,{transport:i.transport,generation:i.generation}),n.noteScopeObserved(E(t)),D(t);let f=P.getTranscript(t);return Jv(av({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:f,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),f},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),_h(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=qy(t,e),r=K(n);b.add(r),k(t);let i=Date.now();try{await O(t).fetchPreviousPage(),D(t);let e=P.getTranscript(t);return Jv(av({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),e}catch(e){throw Jv(av({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=qy(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=qy(t,e),i=Yv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??oh(),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=Qy(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=Yv(()=>c);i&&e&&Xv({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=Yv(()=>P.getTranscript(t)),i=E(t);return u&&await u.clearSession(jy(qy(t,e))),n.destructiveReset(i,async()=>{let n=qy(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),l.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=Yv(()=>s);r&&e&&Xv({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(qy(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),l.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),l.delete(n);let e=c.get(n);e&&(e(),c.delete(n));let t=s.get(n);t&&(t(),s.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),u&&u.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of s.values())e();s.clear();for(let e of c.values())e();c.clear(),o.clear(),l.clear(),d.clear(),f.clear(),p.clear(),m.clear(),g.clear(),v.clear(),y.clear(),b.clear(),n.dispose()}};return P}var eb=Object.freeze([]);function tb(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=mg(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var nb=`/api/openchamber/transcript-cache`,rb=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),ib=e=>typeof e==`object`&&!!e&&!Array.isArray(e),ab=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},ob=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},sb=e=>{if(!ib(e))throw Error(`Invalid transcript cache scope`);return{transport:ab(e.transport,`scope`),generation:ob(e.generation,`scope`),directory:ab(e.directory,`scope`),sessionID:ab(e.sessionID,`scope`)}},cb=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},lb=e=>{if(!ib(e)||!ib(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!ib(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:sb(e.scope),messageID:ab(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>cb(e,`part completeness`)),completeness:cb(e.completeness,`completeness`),contentHash:ab(e.contentHash,`content hash`),byteSize:ob(e.byteSize,`byte size`),lastAccessedAt:ob(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:ob(e.sortKey.created,`sort key`),messageID:ab(e.sortKey.messageID,`sort key`)}}},ub=(e,t)=>{if(!ib(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(lb);return{scope:e.scope===void 0?gc(t):sb(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},db=e=>{if(!ib(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:lb(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!rb.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:lb(e.record)}}}throw Error(`Invalid transcript cache upsert`)},fb=e=>{if(!ib(e))throw Error(`Invalid transcript cache evict`);return{evicted:ob(e.evicted,`evict`),freedBytes:ob(e.freedBytes,`evict`),remainingBytes:ob(e.remainingBytes,`evict`)}},pb=e=>({scope:gc(e),records:[],byteSize:0}),mb=(e,t)=>ib(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,hb=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`)}},gb=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 hb(r)};let i=await hb(r).catch(()=>void 0);throw Error(mb(i,`Transcript cache request failed (${r.status})`))},_b=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),vb=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function yb(e={}){let t=e.fetch??F;return{async readSession(e){let n=await gb(t,`${nb}/session`,{method:`GET`,query:_b(e)});return n.kind===`disabled`||n.kind===`not-found`?pb(e):ub(n.payload,e)},async readMessage(e,n){let r=await gb(t,`${nb}/message`,{method:`GET`,query:{..._b(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!ib(r.payload))throw Error(`Invalid transcript cache record`);return lb(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await gb(t,`${nb}/message`,vb(`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 db(i.payload)},async removeMessage(e,n){let r=await gb(t,`${nb}/message`,vb(`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 gb(t,`${nb}/session`,vb(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await gb(t,`${nb}/generation`,vb(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await gb(t,`${nb}/evict`,vb(`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 fb(r.payload)},async clearAll(){let e=await gb(t,`${nb}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var bb=`openchamber-transcript-durable`,xb=1,Sb=`transcriptIndex`,Cb=`transcriptContent`,wb=class extends Error{code;constructor(e){super(e),this.code=e}},Tb=e=>({id:nc(e.scope,e.messageID),scope:gc(e.scope),scopeKey:tc(e.scope),generationKey:rc(e.scope),messageID:e.messageID,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID},contentHash:e.contentHash,completeness:e.completeness,partCompleteness:e.partCompleteness.slice(),byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt}),Eb=(e,t)=>({scope:gc(e.scope),messageID:e.messageID,info:hc(t.info),parts:hc(t.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),Db=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Eb(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Ob=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},kb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Ab=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new wb(`database-unavailable`));return}let r=indexedDB.open(e,xb),i=!1,a=()=>{i||(i=!0,n(new wb(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Sb)){let t=e.createObjectStore(Sb,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Cb)||e.createObjectStore(Cb,{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}),jb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new wb(`database-unavailable`)),r.onblocked=()=>void 0}),Mb=(e=bb)=>({transaction:async t=>{let n=await Ab(e),r=n.transaction([Sb,Cb],`readwrite`),i=r.objectStore(Sb),a=r.objectStore(Cb),o=e=>kb(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:()=>jb(e)});function Nb(e,t={}){let n=_c(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Tb(t)),vc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(tc(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Eb(t,r);a.lastAccessedAt=n(),await e.putIndex(Tb(a)),i.push(a)}return yc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Db(e,nc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=bc({info:i,incomingCompleteness:cc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=hc(a.slice()),c=cc(s),l=await dc(i,s),u=nc(t,i.id);return e.transaction(async e=>{let a=await Db(e,u),o=bc({info:i,existing:a,incomingCompleteness:c,incomingHash:l.hash});if(o.status===`skipped`)return o.reason===`slim-downgrade`&&a?{status:`skipped`,reason:`slim-downgrade`,record:vc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:gc(t),messageID:i.id,info:hc(i),parts:s,partCompleteness:s.map(sc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:ac(i)};return await e.putIndex(Tb(d)),await e.putContent({id:u,info:hc(i),parts:s}),{status:`written`,record:vc(d)}})},async removeMessage(t,n){await e.transaction(e=>Ob(e,nc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(tc(t));for(let t of n)await Ob(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(rc(t));for(let t of n)await Ob(e,t.id)})},async evictToBytes(t,n){return e.transaction(async e=>{let r=Number.isFinite(t)?Math.max(0,t):0,i=new Set((n?.protect??[]).map(tc)),a=await e.getAllIndexes(),o=0;for(let e of a)o+=e.byteSize;if(o<=r)return{evicted:0,freedBytes:0,remainingBytes:o};let s=a.filter(e=>!i.has(e.scopeKey)).sort((e,t)=>e.lastAccessedAt===t.lastAccessedAt?ic(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Ob(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 Pb(e={}){return Nb(e.driver??Mb(e.databaseName),e)}function Fb(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??We;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Ib=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Lb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??yb)(),t),i=()=>(n??=(e.createIndexedDBStore??Pb)(),n),a=()=>Fb(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=>Ib([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Rb(e={}){await Lb(e).clearAll()}var zb=(e,t)=>e<t?-1:+(e>t);function Bb(e){return e.filter(e=>!!e?.id).sort((e,t)=>zb(e.id,t.id))}async function Vb(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await Qg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=r.records.map(e=>({info:op(e.info),parts:Bb(e.parts??[])}));if(!e.before&&!r.complete&&Wy(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await Gy({records:a,complete:r.complete,requestMessage:async n=>{let r=await Hy({transport:i(),generation:h(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:Bb(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Bb(e.parts??[])}))}return{records:a,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function Hb(e){let t=e.client??L,n=jg(),r=Ig({client:t,activeRegistry:n}),a=$y({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:i,getGeneration:h},fetcher:e=>Vb({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:oh(),historyLimit:sh(),durableStore:e.durableStore??Lb()}),o=fy({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:r,probe:{getTransport:i,getGeneration:h},confirmSessionStatus:async(t,n)=>{let r=e.childStores.getChild(t.directory);if(!r)return;let i=r.getState().session_status?.[t.sessionID];!n.tailOpen&&i?.type!==`busy`&&i?.type!==`retry`||await ky(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return gu(a),ku(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),ku(null),a.destroy(),_u()}}}function Ub(e){return vu().apply(W(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 Wb=new Map;function Gb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Kb(e,t,n,r={}){let a=r.getTransportIdentity??i,o=r.getGeneration??h,s=a(),c=o(),l=Gb(e,t,s,c),u=()=>a()===s&&o()===c,d=Wb.get(l)??Promise.resolve(),f,p=new Promise(e=>{f=e}),m=d.catch(()=>void 0).then(()=>p);Wb.set(l,m);try{if(await d.catch(()=>void 0),!u())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:s,generation:c,isCurrent:u})}finally{f(),Wb.get(l)===m&&Wb.delete(l)}}var qb=new Set,Jb=new Set,Yb=new Set,Xb=new Set,Zb={onDeleteRequest(e){return qb.add(e),()=>{qb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||qb.forEach(t=>t(e))},onCreateRequest(e){return Jb.add(e),()=>{Jb.delete(e)}},requestCreate(e){let t=e??{};Jb.forEach(e=>e(t))},onDirectoryRequest(e){return Yb.add(e),()=>{Yb.delete(e)}},requestDirectoryDialog(){Yb.forEach(e=>e())},onGitRefreshHint(e){return Xb.add(e),()=>{Xb.delete(e)}},requestGitRefresh(e){e.directory.trim()&&Xb.forEach(t=>t(e))}},Qb=50,$b=e=>{let t=Object.keys(e);if(t.length<=Qb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Qb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},ex=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:$b(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:g(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),tx=new Set([`todowrite`,`todoread`]),nx=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),rx=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),ix=(e,t)=>{ex.getState().setSessionTodos(e,t)},ax=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},ox=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},sx=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},cx=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=sx(n);e&&t.push(e)}return t},lx=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return cx(t);if(t&&typeof t==`object`)return cx(t.todos)}catch{}return[]},ux=e=>{if(!tx.has(ax(e)))return[];let t=ox(e);if(t&&nx.has(t))return[];let n=e.state,r=cx(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=cx(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=cx(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?lx(i):[]};function dx(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=ux(r[e]);if(t.length>0)return t}}return[]}function fx(e){if(!e.sessionID||e.isStale?.()||rx(e.store.getState().todo,e.sessionID))return!1;let t=dx(e.transcript);return t.length===0||e.isStale?.()||rx(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function px(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(W(e.directory,e.sessionID));return t?fx({sessionID:e.sessionID,store:e.store,transcript:t,persist:ix,isStale:e.isStale}):!1}var mx=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>gC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>hC,SESSION_DELETE_UNDO_MS:()=>BS,abortBusySessionForMessageEdit:()=>AC,abortCurrentOperation:()=>xC,archiveSession:()=>XS,beginOptimisticSend:()=>oC,cancelScheduledSessionDeletes:()=>YS,classifySendFailure:()=>uS,combinedSendConfirmationOptions:()=>_C,commitMessageEdit:()=>MC,createSession:()=>PS,deleteSession:()=>qS,dirStoreForDirectory:()=>Xx,dismissOpenQuestionsForSession:()=>TC,ensureSentUserMessagePresence:()=>bC,fetchMessagesForSession:()=>RC,fetchRecentSendConfirmationRecords:()=>pC,forkSession:()=>IC,getSendFailureKind:()=>cS,isQuestionRequestNotFoundError:()=>jS,materializeConfirmedSendRecords:()=>mC,mirrorSessionIntoLiveStores:()=>rS,optimisticInsertUserMessage:()=>dC,optimisticSend:()=>uC,patchSessionMetadata:()=>FS,refetchSessionMessages:()=>PC,rejectQuestion:()=>wC,releaseUnconfirmedQueueSend:()=>qx,requestSessionSmartTitle:()=>$S,resolveForkMessageId:()=>jx,respondToPermission:()=>SC,respondToQuestion:()=>CC,revertToMessage:()=>EC,rollbackOptimisticSend:()=>cC,scheduleSessionDeletes:()=>JS,setActionRefs:()=>Gx,setOptimisticRefs:()=>Kx,settleOptimisticSend:()=>lC,shareSession:()=>eC,shouldSuppressForkCopyEvent:()=>Nx,stageMessageEdit:()=>OC,trackForkCopySessionCreated:()=>Cx,unarchiveSession:()=>ZS,unrevertSession:()=>FC,unshareSession:()=>tC,updateSessionTitle:()=>QS,waitForConnectionOrThrow:()=>mS,waitForSessionIdleForMessageEdit:()=>jC}),hx=2,gx=150,_x=new Set([`patch`,`step-start`,`step-finish`]),vx=3,yx=150,bx=null,xx=new Map,Sx=3e4;function Cx(e,t){let n=t?.id;!bx||bx.runtimeKey!==c()||bx.directory!==e||!n||t?.title!==bx.expectedTargetTitle||n===bx.sourceSessionID||bx.targetSessionID||(bx.targetSessionID=n)}function wx(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function Tx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function Ex(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Dx(e){return e?.type===`busy`||e?.type===`retry`}function Ox(e){for(let t=e.length-1;t>=0;--t)if(e[t]?.role===`user`)return t;return-1}function kx(e){let t=e.at(-1);return t?.role===`assistant`&&t.time.completed==null}function Ax(e,t){return Dx(e)||e==null&&kx(t)}function jx(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(!Ax(n,t))return;let r=Ox(t);if(r!==-1)return t[r+1]?.id}async function Mx(e,t){let n=Pp(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return z.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function Nx(e,t,n){if(bx&&bx.runtimeKey===c()&&bx.directory===e&&t&&t===bx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${c()}:${e}:${t}`,i=xx.get(r);return i?i.expiresAt<=Date.now()?(xx.delete(r),!1):n<=i.messageID:!1}var Px=null,Fx=null,Ix=()=>``,Lx=new Map,Rx=null,zx=null,Bx=null,Vx=e=>new Promise(t=>setTimeout(t,e));function Hx(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 Ux(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Hx(e.error)}`);throw n!==void 0&&(r.status=n),r}function Wx(e,t){let n=Ux(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Gx(e,t,n){if(Px=e,Fx=t,Ix=n,Lx.size>0){let e=[...Lx.values()];Lx.clear(),queueMicrotask(()=>{for(let t of e)RC(t.sessionID,t.directory)})}}function Kx(e,t,n){Rx=e,zx=t,Bx=n??null}function qx(e){let t=e.directory??null;zx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Jx(){if(!Px)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Px}function Yx(){if(!Fx)throw Error(`Child stores not initialized`);let e=Ix();if(!e)throw Error(`No current directory`);return Fx.ensureChild(e)}function Xx(e,t){if(!Fx)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Fx.ensureChild(e,t)}function Zx(e,t){let n=t??bS(e);return n?{store:Xx(n),directory:n}:{store:Yx(),directory:iS()}}function Qx(e,t){let{store:n,directory:r}=Zx(e,t??void 0),i=r??iS()??``;return{repository:H()??U(i,n),directory:i,store:n}}function $x(e,t){let{repository:n,directory:r,store:i}=Qx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(W(r,e))}}function eS(e,t){return Wu($x(e,t).data)}function tS(e,t){return $x(e,t).data.messageOrder.length}function nS(e,t){let n=Fx;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]=eD(e,n[r]),t.setState({session:i}),!0}return!1}function rS(e,t){t&&nS(e,t)||nS(e)}function iS(){return Ix()||void 0}function aS(){let{hasEverConnected:e,lastDisconnectReason:t}=Vf.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function oS(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 sS=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 cS(e){return e instanceof sS?e.kind:null}function lS(e){let t=oS(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 uS(e,t){return t?lS(e)||oS(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var dS=2e3,fS=5e3,pS=3e4;async function mS(){let e=Hm();e&&Vm(`send_stream_stale`);let t=Date.now()+(e?fS:dS);for(;Date.now()<t;){if(Vf.getState().isConnected&&!Hm()||d()&&!Hm())return;let e=t-Date.now();if(e<=0)break;if(await Vf.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Hm())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw aS()}function hS(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Vm(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},pS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function gS(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function _S(e){e&&Y.getState().upsertSession(e)}function vS(e,t){let n=ip(t),r=[...e.getState().session],i=cs.search(r,n.id,e=>e.id);if(i.found){let t=eD(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 yS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=gS(e);if(i)return vS(t,i);try{return vS(t,await z.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function bS(e){return xS(e)||$.getState().getDirectoryForSession(e)||iS()}function xS(e){let t=Fx;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 SS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):Jx()}function CS(e){Or.getState().clearAttachedFiles();for(let t of e){let e=typeof t.url==`string`?t.url:``,n=typeof t.mime==`string`?t.mime:`application/octet-stream`,r=typeof t.filename==`string`?t.filename:`attachment`;e&&Or.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var wS=()=>new Map(Array.from(Ad(),([e,t])=>[e,t.title||e]));function TS(e){return!(e.type!==`file`||Qp(e))}function ES(e){return TS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function DS(e){return e.some(ES)}async function OS(e){let t=[...e.parts];if(!DS(t))return t;let n=h(),r=e.directory??``;try{await Tu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||h()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=Qx(e.sessionID,r);if(t=[...i.getParts(W(a,e.sessionID),e.messageID)],DS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function kS(e){if(DS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await Cm(e.parts,{sessionTitles:wS(),directory:e.directory}),n=Or.getState(),r=n.getDraft(e.key);return{payload:t,commit:await Om({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function AS(e,t,n){let r=Fx;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 jS(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 MS(e,t){let n=Fx;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 NS(e,t,n){let r=AS(e,t,n);return r?z.getScopedSdkClient(r):SS(t)}async function PS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??iS()),a=i.directory??null;return a&&Sd(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 FS(e,t,n){let r=t??bS(e),i=n(Pp(await z.getSession(e,r))),a=await z.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Sd(a.id,o),a}async function IS(e,t){let n;try{n=await z.getSession(e,t??bS(e))}catch{return}if(!Rp(n))return;let r=Lp(n);if(r)try{await FS(r,t??bS(r),t=>Vp(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 LS(e,t){if(!Fx)return[];let n=[],r=new Set,i=[];if(t){let e=Fx.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Fx.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 RS(e){if(Fx)for(let t of e){let e=Fx.children.get(t.directory);e&&e.setState({session:t.sessions})}}function zS(e){$.getState().setWorktreeMetadata(e,null)}var BS=1e4,VS=new Map,HS=0;function US(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function WS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),RS(e.listSnapshots),_S(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function GS(e,t){let n=t??bS(e);Y.getState().markSessionsPendingDeletion([e]);let r=LS(e,n),i=gS(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 KS(e,t){try{if(await IS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return LS(e,t),Y.getState().removeSessions([e]),zS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(LS(e,t),Y.getState().removeSessions([e]),zS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function qS(e,t){let n=GS(e);return await KS(e,n.directory)?!0:(WS(n),!1)}function JS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>GS(e)),i=`session-delete-${Date.now()}-${HS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=VS.get(i);if(!e)return;VS.delete(i);let t=[],n=[];for(let r of e.entries)await KS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),WS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return VS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function YS(e){if(!e)return!1;let t=VS.get(e);if(!t)return!1;clearTimeout(t.timer),VS.delete(e);for(let e of[...t.entries].reverse())WS(e);return!0}async function XS(e){let t=bS(e),n=LS(e,t),r=gS(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await IS(e,t);let n=await z.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),RS(n),_S(r),!1}}async function ZS(e){let t=bS(e),n=gS(e),r=n?US(n):null;if(r&&(Y.getState().upsertSession(r),t&&Fx)){let e=Fx.children.get(t);e&&vS(e,r)}try{let n=await z.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=US(n);if(Y.getState().upsertSession(r),t&&Fx){let e=Fx.children.get(t);e?vS(e,r):rS(r,t)}else rS(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&LS(e,t)),!1}}async function QS(e,t){let n=bS(e),r=gS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?qf(r):0,c=await z.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),rS(c,n)}async function $S(e){let t=bS(e),n=gS(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await z.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),rS(s,t)}async function eC(e){let t=bS(e),n=ip(Wx(await Jx().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),nS(n,t),n}async function tC(e){let t=bS(e),n=ip(Wx(await Jx().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),nS(n,t),n}function nC(e){let t=Fx,n=e??Ix();if(!t||!n)return{store:e?Xx(e):Yx(),isCurrent:()=>!0};let r=t,i=r.captureChild?.(n);if(i&&r.isCurrentChildCapture)return{store:i.store,isCurrent:()=>r.isCurrentChildCapture?.(i)===!0};let a=t.ensureChild(n);return{store:a,isCurrent:()=>t.getChild(n)===a}}function rC(){return{identity:i(),generation:h()}}function iC(e,t){return e.isCurrent()&&i()===t.identity&&h()===t.generation}function aC(e,t){if(!iC(e,t))throw Error(`Send target changed before transport dispatch`)}function oC(e){if(!Rx||!zx)throw new sS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??iS()??null,n=nC(t),r=rC();aC(n,r),e.beforeOptimisticInsert?.(),aC(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),im(e.sessionId),dC({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 sS?e:new sS(cS(e)??uS(e,!1),e)}}function sC(e){if(!iC(e.capture,e.transport)||!zx)return;zx({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 cC(e){sC(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function lC(e){if(!Rx||!zx)throw new sS(`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 mS(),aC(n,r),s=!0,await hS(e.send(i)),!iC(n,r))throw new sS(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=cS(c)??uS(c,s),u=c instanceof sS?c:new sS(l,c,i);if(!iC(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await pC(a,i,o):null;if(d&&iC(n,r)){mC(n.store,a,i,d,{directory:o??void 0}),Bx?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||sC(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function uC(e){await lC({ticket:e.ticket??oC({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 dC(e){if(!Rx)return!1;let t=e.directory??iS(),n=t?Xx(t):Yx(),r=t??iS()??``;if(vC(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),s={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},c=Yv(()=>$x(e.sessionId,t).data);Rx({sessionID:e.sessionId,directory:t,message:s,parts:a});let l=Yv(()=>$x(e.sessionId,t).data);try{c&&l&&Xv({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:i(),generation:h(),before:c,after:l})}catch{}let u=n.getState();return n.setState({session_status:{...u.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...u.session_status_observed_at,[e.sessionId]:o}}),!0}function fC(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function pC(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??hx,c=r?.retryDelayMs??gx;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!fC(r?.isCurrent)||a>0&&(await Vx(c),i?.signal.aborted||!fC(r?.isCurrent)))return null;try{let a=await Jx().session.messages({sessionID:e,directory:n??void 0,limit:uh(),...i?{signal:i.signal}:{}});if(!fC(r?.isCurrent))return null;let o=(Ux(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 mC(e,t,n,r,i){if(!r.length)return;let a=i?.directory??bS(t)??Ix(),o=W(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:op(e.info),parts:e.parts??[]})),skipPartTypes:_x,merge:i?.gapFillOnly===!0?Ys:Zs({purpose:`recovery`})};bu(o,s)||U(a,e).apply(o,s)}var hC=2e3,gC={attempts:12,retryDelayMs:500},_C={presenceGraceMs:hC,recovery:{...gC}};function vC(e,t,n,r){let i=r??bS(t)??Ix()??``,a=H()??U(i,e),o=W(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function yC(e,t,n,r){let i=r?.directory??bS(t)??Ix()??``;if(vC(e,t,n,i))return Promise.resolve(!0);if(!fC(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=H()??U(i,e),f=W(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!fC(r?.isCurrent)){l(!1);return}vC(e,t,n,i)&&l(!0)}),vC(e,t,n,i)&&l(!0)})}async function bC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await yC(t,n,r,{timeoutMs:e.graceMs??_C.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!fC(a))return`cancelled`;let o=await pC(n,r,i,{..._C.recovery,isCurrent:a});return o?fC(a)?(mC(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:fC(a)?`missing`:`cancelled`}async function xC(e){let{store:t,directory:n}=Zx(e),r=n?{state:`bound`,transportIdentity:i(),directory:n,sessionID:e}:null,a=r?$.getState().beginQueueAbortBlock(r):null;try{if(Wx(await Jx().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&a&&$.getState().clearQueueAbortBlock(r,a),et(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>BV);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function SC(e,t,n){await mS();let r=AS(`permission`,e,t)||bS(e)||iS();if(Wx(await NS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function CC(e,t,n){await mS();let r=AS(`question`,e,t)||bS(e)||iS();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Wx(await NS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw jS(n)&&MS(e,t),n}}async function wC(e,t){await mS();let n=AS(`question`,e,t)||bS(e)||iS();try{if(Wx(await NS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw jS(n)&&MS(e,t),n}}async function TC(e){if(!e)return!1;let t=Fx;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=qp(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)MS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await wC(e,t)}catch(e){if(jS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function EC(e,t,n){let r=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return Kb(e,r??(()=>{try{return Zx(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:o,directory:c}=Zx(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Jx().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=eS(e,c).find(e=>e.id===t),d=eS(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}=Qx(e,c),m=[...f.getParts(W(p,e),t)],h=a===void 0?s?C({transportIdentity:i()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await OS({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await Cm(m,{sessionTitles:wS(),directory:c})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=o.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),w={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},w.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(o.setState(w),h){let t=Or.getState(),r=await Om({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 Am({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await z.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await Am({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&&Zb.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 Am({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await Am({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function DC(e,t,n,r){let a=r??bS(t)??Ix(),o=W(a,t),s=Yv(()=>$x(t,a).data),c=[...yu(t)];c.some(e=>e.directory===a&&e.sessionID===t)||c.push(o);let l=!1;for(let e of c)bu(e,{type:`remove-message`,messageID:n})!=null&&(l=!0);l||U(a,e).apply(o,{type:`remove-message`,messageID:n});let u=Yv(()=>$x(t,a).data);try{s&&u&&Xv({trigger:`user-delete`,sessionID:t,directory:a,transport:i(),generation:h(),before:s,after:u})}catch{}}async function OC(e,t,n,r){let a=n?.info,o=n?.parts,s=r?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=Zx(e,s).directory}else{c=Zx(e,s).directory;let{data:n}=$x(e,c),r=Wu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=r?.draftKey??C({transportIdentity:i()},e),{commit:u}=await kS({key:l,parts:await OS({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 Am({key:l,restoredRevision:d,previous:f})).status})}}function kC(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 AC(e,t){let n=t?.directory,{store:r,directory:i}=Zx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Jx().session.abort({sessionID:e,directory:i})}catch{}}async function jC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=Zx(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 MC(e,t,n){let r=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:s}=Zx(e,r),c=Yv(()=>$x(e,r).data);try{await AC(e,{directory:r}),await jC(e,{directory:r});let n=new Set((await NC(e,r)).map(e=>e.id)),i=kC(t,eS(e,r),n,{preserveMessageId:a});for(let t of[...i].reverse())await z.deleteSessionMessage(e,t.id,s),DC(o,e,t.id,s)}finally{try{let t=Yv(()=>$x(e,r).data);c&&t&&Xv({trigger:`user-edit`,sessionID:e,directory:s,transport:i(),generation:h(),before:c,after:t})}catch{}}}async function NC(e,t){let{directory:n}=Zx(e,t);return(Ux(await Jx().session.messages({sessionID:e,directory:n,limit:lh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>op(e.info))}async function PC(e,t){let{store:n,directory:r}=Zx(e,t),a=Yv(()=>$x(e,t).data),o=(Ux(await Jx().session.messages({sessionID:e,directory:r,limit:lh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Yv(()=>$x(e,t).data);a&&n&&Xv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let s=o.map(e=>({info:op(e.info),parts:e.parts??[]})),c=W(r??Ix(),e);bu(c,{type:`materialize-snapshots`,records:s,skipPartTypes:_x})||U(r??Ix(),n).apply(c,{type:`materialize-snapshots`,records:s,skipPartTypes:_x});try{let n=Yv(()=>$x(e,t).data);a&&n&&Xv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return s.map(e=>e.info)}async function FC(e,t){return Kb(e,t??(()=>{try{return Zx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=Zx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=tS(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Jx().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Jx().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Wx(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<vx;r+=1){if(r>0&&(await Vx(yx),!n())||(await PC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(tS(e,i)>o)return}if(tS(e,i)<=o){let n=i??Ix(),a=H()??U(n,r),o=W(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await PC(e,t)}})}async function IC(e,t,n,r){let i=c(),{store:a,directory:o}=Zx(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await yS(e,a,o);Sd(e,o);let l=a.getState(),u=l.session_status[e],d=eS(e,o);u?.type,d.length;let f=jx(n,d,u);if(!n&&Ax(u,d)&&Ox(d)===-1&&(await PC(e),l=a.getState(),u=l.session_status[e],d=eS(e,o),f=jx(void 0,d,u)),!n&&Ax(u,d)&&Ox(d)===-1)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:tS(e,o)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=$x(e,o),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(W(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!Qp(e)).map(e=>e.text||e.content||``).join(`
|
|
401
401
|
`).trim();let v=g.filter(e=>e.type===`file`&&!Qp(e));bx={operationId:t,runtimeKey:i,directory:o,sourceSessionID:e,expectedTargetTitle:wx(s.title)},await Tx(t,`copying`);let y;try{if(y=await z.forkSession(e,f,o),y.id,c()!==i)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),bx?.operationId===t&&(bx=null),!1;let n=[...a.getState().session],r=cs.search(n,y.id,e=>e.id);r.found||(n.splice(r.index,0,y),a.setState({session:n})),Ex(t,y.id);let s=$.getState().currentSessionId;(s===e||s===y.id)&&$.getState().setCurrentSession(y.id,o,{skipMessageFetch:!0}),await Tx(t,`opening`);try{y=await Mx(y,o)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw bx?.operationId===t&&(bx=null),e}try{let e=W(o,y.id),r=H();r&&typeof r.destructiveReset==`function`?await r.destructiveReset(e):bu(e,{type:`reset`}),await Tx(t,`loading`),y.id,$.getState().currentSessionId,y.id;let i=H()??U(o,a),s=W(o,y.id),l=i.getRequestState?.(s);(!(i.hasSession?.(s)??!1)||l?.status===`error`)&&await RC(y.id,o);let u=eS(y.id,o).at(-1)?.id;u&&xx.set(`${c()}:${o}:${y.id}`,{messageID:u,expiresAt:Date.now()+Sx});let d=$.getState().currentSessionId===y.id;d&&h&&_&&Or.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&CS(v)}finally{bx?.operationId===t&&(bx=null)}return y.id,!0}var LC=new Map;async function RC(e,t){let n=t??iS();if(!n)return;let r=c(),i=ch(),a=`${r}:${n}:${e}:${i}`;if(!Px||!Fx){Lx.set(a,{sessionID:e,directory:n});return}let o=LC.get(a);if(o)return o;let s=zC(e,n,r,i).finally(()=>{LC.get(a)===s&&LC.delete(a)});return LC.set(a,s),s}async function zC(e,t,n,r){Jx();let i=Xx(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=H()??U(t,i),l=W(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(qm(t,e)){px({directory:t,sessionID:e,store:i,transcript:u});return}if(H()){try{await Su(t,e)}catch{return}if(y())return;px({directory:t,sessionID:e,store:i,isStale:y}),await Ay({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}px({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await Vb({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:_x}),b=n.records.length,Jm(t,e)}catch{return}y()||(px({directory:t,sessionID:e,store:i,isStale:y}),await Ay({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var BC=18e4,VC=400,HC=300,UC=15,WC=`FINAL_REVIEW_STATUS: no_remaining_findings`,GC=WC.toLowerCase(),KC=new Set,qC=new Set,JC=e=>{let t=e.finish;if(typeof t==`string`&&t.length>0)return!0;let n=e.time?.completed;return typeof n==`number`&&n>0},YC=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},XC=e=>{let t=e.role;return typeof t==`string`?t:``},ZC=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},QC=(e,t)=>Nd(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`}),$C=(e,t,n,r=0,i)=>{let a=Md(e,t),o=new Set;for(let e of a)QC(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(XC(s)!==`assistant`||!JC(s)||YC(s)<r-1e3)continue;let c=ZC(s);if(!sw(s,i)||c&&o.has(c))continue;let l=Mp(Nd(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},ew=(e,t)=>Pd(e,t)?.type===`idle`,tw=e=>e===c(),nw=e=>{Hp.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},rw=e=>{if(e&&!tw(e))throw Error(`Auto-review stopped because the runtime changed.`)},iw=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),aw=e=>e.trim().split(`
|
|
402
402
|
`).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===GC,ow=e=>{let t=e.trimEnd().split(`
|
|
403
403
|
`);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===GC&&t.pop(),t.join(`
|