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