@openchambery/web 1.17.1-beta.12 → 1.17.1-beta.13
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-DrITRlES.js → AssistantView-BXLxZXL5.js} +1 -1
- package/dist/assets/{ChatContainer-DSnO6pw8.js → ChatContainer-BJGlptbG.js} +4 -4
- package/dist/assets/{DiagramView-BB_54kgj.js → DiagramView-Czx_DVw0.js} +1 -1
- package/dist/assets/{MarkdownRendererImpl-bI0skhdB.js → MarkdownRendererImpl-B9Bv95Vd.js} +1 -1
- package/dist/assets/{MobileDetailNavigation-DXR5NoC6.js → MobileDetailNavigation-RupyXzPu.js} +1 -1
- package/dist/assets/{MobileShareBridge-ffCYu3OU.js → MobileShareBridge-LVT1_q5C.js} +1 -1
- package/dist/assets/{MobileSurface-DHPIyC9f.js → MobileSurface-BVwSEqn4.js} +1 -1
- package/dist/assets/{MultiRunWindow-BUeoNxPY.js → MultiRunWindow-C7hbEpv9.js} +1 -1
- package/dist/assets/{OverlayScrollbar-BZkH3K6L.js → OverlayScrollbar-vZXoSFA9.js} +1 -1
- package/dist/assets/{SettingsView-CnqVfDE3.js → SettingsView-C1sYcHr1.js} +1 -1
- package/dist/assets/{SettingsWindow-CWBrFuZT.js → SettingsWindow-MtcqpoiN.js} +1 -1
- package/dist/assets/{TerminalView-DMof3T4T.js → TerminalView-DXQZlHNA.js} +1 -1
- package/dist/assets/{ToolOutputDialog-HJXiOZEd.js → ToolOutputDialog-_Qzdo46T.js} +1 -1
- package/dist/assets/{appThemeRegistry-BjwRZCAT.js → appThemeRegistry-Chv6_pxq.js} +2 -2
- package/dist/assets/{context-menu-B4nWNYrw.js → context-menu-DeJdA9F6.js} +1 -1
- package/dist/assets/{gitApi-DW9DPgCG.js → gitApi-DV6F5KKI.js} +1 -1
- package/dist/assets/{insertionBoundaries-BCjKfuK1.js → insertionBoundaries-7-TvMfgn.js} +1 -1
- package/dist/assets/{main-BU_3V7Qq.js → main-CADHVH9Y.js} +4 -4
- package/dist/assets/{main-DrGYXmL0.js → main-q1V-_wWx.js} +2 -2
- package/dist/assets/{miniChat-Cty6CSTJ.js → miniChat-VXuyA8mS.js} +2 -2
- package/dist/assets/{mobile-CkGeDrYH.js → mobile-CaKZM4y3.js} +2 -2
- package/dist/assets/{multirun-Bih8bS1D.js → multirun-QqMnIbXa.js} +1 -1
- package/dist/assets/{projectMeta-B1t9cpLj.js → projectMeta-WJhNyk90.js} +1 -1
- package/dist/assets/{radio-C7IX1jxE.js → radio-C1riLnF0.js} +1 -1
- package/dist/assets/{renderElectronMiniChatApp-hyI6p-3D.js → renderElectronMiniChatApp-CnmMV1o9.js} +2 -2
- package/dist/assets/{renderMobileApp-Ct90nT9f.js → renderMobileApp-Bhe41b2q.js} +4 -4
- package/dist/assets/{runtimeEndpointReset-C9zXIPqI.js → runtimeEndpointReset-GtJt8YhT.js} +1 -1
- package/dist/assets/{sortable-tabs-strip-BvdwoMVP.js → sortable-tabs-strip-Fiq5nrkF.js} +1 -1
- package/dist/assets/{ui-DqzK0-Jk.js → ui-D5j3JxkE.js} +1 -1
- package/dist/assets/{useAppFontEffects-_VT6aMWN.js → useAppFontEffects-CaGwli-K.js} +2 -2
- package/dist/assets/{useDesktopWindowControlsLayout-CsPEyB4S.js → useDesktopWindowControlsLayout-DCZXksMp.js} +1 -1
- package/dist/assets/{useEffectiveDirectory-sWNsFnbW.js → useEffectiveDirectory-CssNtlqg.js} +1 -1
- package/dist/assets/{useSessionAutoCleanup-CvS-0fz-.js → useSessionAutoCleanup-B_mSwN7n.js} +1 -1
- package/dist/assets/{useWorkerHighlightedLines-Cq3vOe49.js → useWorkerHighlightedLines-C74ZKDtw.js} +1 -1
- package/dist/index.html +1 -1
- package/dist/mini-chat.html +1 -1
- package/dist/mobile.html +1 -1
- package/package.json +1 -1
|
@@ -453,7 +453,7 @@ Use the results below as source material. Do not mention that the inputs were hi
|
|
|
453
453
|
`),a=(i===-1?r:r.slice(0,i)).trim(),o=(i===-1?``:r.slice(i+1)).trim();!(t.visible in n)&&a.length>0&&(n[t.visible]=a),!(t.instructions in n)&&o.length>0&&(n[t.instructions]=o)}return n},cd=async()=>id||(ad||=F(td,{method:`GET`,headers:{Accept:`application/json`}}).then(async e=>{if(!e.ok)throw Error(`Failed to load magic prompts`);let t=sd(await e.json().catch(()=>({})));return id=t,t}).finally(()=>{ad=null}),ad),ld=e=>{let t=nd.get(e);if(!t)throw Error(`Unknown magic prompt id: ${e}`);return t},ud=e=>ld(e).template,dd=async e=>{let t=(await cd().catch(()=>({})))[e];return typeof t==`string`?t:ud(e)},fd=async(e,t={})=>od(await dd(e),t),pd=async(e,t)=>{let n=await F(`${td}/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({text:t})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e?.error||`Failed to save magic prompt`)}let r=await n.json();return id=sd(r),{version:typeof r?.version==`number`?r.version:1,overrides:id}},md=async e=>{let t=await F(`${td}/${encodeURIComponent(e)}`,{method:`DELETE`,headers:{Accept:`application/json`}});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e?.error||`Failed to reset magic prompt`)}let n=await t.json();return id=sd(n),{version:typeof n?.version==`number`?n.version:1,overrides:id}},hd=async()=>{let e=await F(td,{method:`DELETE`,headers:{Accept:`application/json`}});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t?.error||`Failed to reset all magic prompts`)}let t=await e.json();return id=sd(t),{version:typeof t?.version==`number`?t.version:1,overrides:id}},gd=e=>e.filter(e=>e?.type===`text`).map(e=>(e.text||e.content||``).trim()).filter(e=>e.length>0).join(`
|
|
454
454
|
`).replace(/\n\s*\n+/g,`
|
|
455
455
|
`),_d=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),vd=e=>{let t=e?.metadata;return _d(t)?t:{}},yd=e=>{let t=e.openchamber;return _d(t)?t:{}},bd=e=>{let t=yd(vd(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},xd=e=>{let t=yd(vd(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Sd=e=>yd(vd(e)).kind===`review`&&!!xd(e),Cd=(e,t)=>{let n=yd(e);return{...e,openchamber:{...n,reviewSessionID:t}}},wd=(e,t)=>{let n=yd(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},Td=(e,t)=>{let n=yd(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},Ed=Oe()(ke((e,t)=>({runsByOriginalSessionID:{},upsertRun:t=>e(e=>({runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t.originalSessionID]:t}})),updateRun:(t,n)=>e(e=>{let r=e.runsByOriginalSessionID[t];return r?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:n(r)}}:e}),stopRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`stopped`}}}:e}),completeRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`completed`}}}:e}),stopRunningRunsForRuntime:t=>e(e=>{let n=!1,r={...e.runsByOriginalSessionID};for(let[e,i]of Object.entries(r))i.runtimeKey===t&&i.status===`running`&&(r[e]={...i,status:`stopped`},n=!0);return n?{runsByOriginalSessionID:r}:e}),isRunningForSession:e=>t().runsByOriginalSessionID[e]?.status===`running`}),{name:`auto-review-store`,storage:h(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),Dd=`openchamber_input_draft_metadata_v1`,Od=`openchamber_input_draft_metadata_migration_v1`,kd=`openchamber_chat_input_draft_`,Ad=`openchamber_chat_confirmed_mentions_`,jd=()=>({ok:!1,error:{code:`unavailable`}}),Md=()=>({ok:!1,error:{code:`cancelled`}}),Nd=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),Pd=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),Fd=(e,t)=>Object.keys(e).every(e=>t.includes(e)),Id=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,Ld=e=>typeof e==`string`&&e.length>0,Rd=e=>({read:async t=>{if(!e)return jd();try{return{ok:!0,value:e.getItem(t)}}catch(e){return Nd(e)}},write:async(t,n)=>{if(!e)return jd();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return Nd(e)}},remove:async t=>{if(!e)return jd();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return Nd(e)}},keys:async()=>{if(!e)return jd();try{let t=[];for(let n=0;n<e.length;n+=1){let r=e.key(n);r!==null&&t.push(r)}return{ok:!0,value:t}}catch(e){return Nd(e)}}}),zd=()=>{try{return Rd(typeof window>`u`?null:window.localStorage)}catch{return Rd(null)}},Bd=(e,t,n,r)=>{let i=[];try{let e=n===null?[]:JSON.parse(n);Array.isArray(e)&&(i=e.filter(e=>typeof e==`string`))}catch{}return{suffix:e,text:t??``,mentions:i,keys:r}},Vd=async e=>{let t=await e.keys();if(!t.ok)return t;let n=new Set;for(let e of t.value)e.startsWith(kd)&&n.add(e.slice(29)),e.startsWith(Ad)&&n.add(e.slice(36));let r=[];for(let i of n){let n=`${kd}${i}`,a=`${Ad}${i}`,[o,s]=await Promise.all([e.read(n),e.read(a)]);if(!o.ok)return o;if(!s.ok)return s;r.push(Bd(i,o.value,s.value,[n,a].filter(e=>t.value.includes(e))))}return{ok:!0,value:r}},Hd=e=>{if(!(!Pd(e)||!Fd(e,[`suffix`,`text`,`mentions`,`keys`])||typeof e.suffix!=`string`||typeof e.text!=`string`||!Array.isArray(e.mentions)||!e.mentions.every(e=>typeof e==`string`)||!Array.isArray(e.keys)||!e.keys.every(e=>typeof e==`string`)))return{suffix:e.suffix,text:e.text,mentions:[...e.mentions],keys:[...e.keys]}},Ud=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&Ld(t[0])&&(t[1]===`session`||t[1]===`draft`)&&Ld(t[2])&&e===JSON.stringify(t)}catch{return!1}},Wd=e=>{if(!Pd(e)||!Fd(e,[`complete`,`claimedTransportIdentity`,`captured`,`markerCommitted`,`cleanupComplete`])||typeof e.complete!=`boolean`||typeof e.claimedTransportIdentity!=`string`||e.captured!==void 0&&typeof e.captured!=`boolean`||e.markerCommitted!==void 0&&typeof e.markerCommitted!=`boolean`||e.cleanupComplete!==void 0&&typeof e.cleanupComplete!=`boolean`)return;let t=e.cleanupComplete??e.complete,n=e.captured??e.complete,r=e.markerCommitted??e.complete;if(!((n||r||t)&&!Ld(e.claimedTransportIdentity))&&!(r&&!n)&&!(t&&(!n||!r)))return{complete:t,claimedTransportIdentity:e.claimedTransportIdentity,captured:n,markerCommitted:r,cleanupComplete:t}},Gd=e=>{if(!Pd(e)||!Fd(e,[`version`,`drafts`,`tombstones`,`migration`,`legacy`])||e.version!==1||!Pd(e.drafts)||!Pd(e.tombstones)||!Pd(e.legacy)||!Fd(e.legacy,[`new`,`entries`])||!Pd(e.legacy.entries))return;let t=Wd(e.migration);if(!t)return;let n={};for(let[t,r]of Object.entries(e.drafts)){let e=w(r);if(!e||t!==R(e.key))return;n[t]=e}let r={};for(let[t,n]of Object.entries(e.tombstones)){if(!Ud(t)||!Id(n))return;r[t]=n}let i={};for(let[t,n]of Object.entries(e.legacy.entries)){let e=Hd(n);if(!e||t!==e.suffix||t===`new`)return;i[t]=e}let a=e.legacy.new===void 0?void 0:Hd(e.legacy.new);if(!(e.legacy.new!==void 0&&(!a||a.suffix!==`new`)))return{version:1,drafts:n,tombstones:r,migration:t,legacy:{...a?{new:a}:{},entries:i}}},Kd=(e=``)=>({version:1,drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:e,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),qd=e=>{try{return{ok:!0,value:JSON.stringify(e)}}catch{return{ok:!1,error:{code:`serialization`}}}},Jd=async e=>{let t=await e.read(Dd);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:null};try{let e=Gd(JSON.parse(t.value));return e?{ok:!0,value:e}:{ok:!1,error:{code:`corrupt`}}}catch{return{ok:!1,error:{code:`corrupt`}}}},Yd=async(e,t)=>{let n=Gd(t);if(!n)return{ok:!1,error:{code:`corrupt`}};let r=qd(n);return r.ok?e.write(Dd,r.value):r},Xd=e=>Pd(e)&&Fd(e,[`version`,`claimedTransportIdentity`])&&e.version===1&&Ld(e.claimedTransportIdentity)?{version:1,claimedTransportIdentity:e.claimedTransportIdentity}:void 0,Zd=e=>qd({version:1,claimedTransportIdentity:e}),Qd=(e,t,n)=>{let r={},i;for(let e of t)e.suffix===`new`?i=e:r[e.suffix]=e;return{...e,migration:{complete:!1,claimedTransportIdentity:n,captured:!0,markerCommitted:!1,cleanupComplete:!1},legacy:{...i?{new:i}:{},entries:r}}},$d=e=>[...new Set([e.legacy.new,...Object.values(e.legacy.entries)].flatMap(e=>e?.keys??[]))],ef=new WeakMap,tf=e=>{let t=ef.get(e);if(t)return t;let n=Promise.resolve(),r,i=!0,a=e=>{let t=n.then(e,e);return n=t.then(()=>void 0,()=>void 0),t},o={persist:t=>{let n=Gd(t);return n?i?a(async()=>i?Yd(e,n):jd()):Promise.resolve(jd()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},migrate:(t,n={})=>{if(r)return r;let o=a(async()=>{let r=await Jd(e);if(!r.ok)return r;let a=r.value??Kd(),o=i&&(n.persistenceEnabled??!0);if(!a.migration.captured){let n=await Vd(e);if(!n.ok)return n;if(!o)return{ok:!0,value:Qd(a,n.value,``)};if(a=Qd(a,n.value,t),!i)return{ok:!0,value:a};let r=await Yd(e,a);if(!r.ok)return r}if(!i||!(n.persistenceEnabled??!0)){let t=await Vd(e);return t.ok?{ok:!0,value:a}:t}let s=await e.read(Od);if(!s.ok)return s;if(s.value!==null)try{let t=Xd(JSON.parse(s.value));if(!t)return{ok:!1,error:{code:`corrupt`}};if(t.claimedTransportIdentity!==a.migration.claimedTransportIdentity){let t=Zd(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Od,t.value);if(!n.ok)return n}}catch{return{ok:!1,error:{code:`corrupt`}}}else{let t=Zd(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Od,t.value);if(!n.ok)return n}if(a.migration.cleanupComplete)return{ok:!0,value:a};for(let t of $d(a)){if(!i)return{ok:!0,value:a};let n=await e.remove(t);if(!n.ok)return n}if(a={...a,migration:{complete:!0,claimedTransportIdentity:a.migration.claimedTransportIdentity,captured:!0,markerCommitted:!0,cleanupComplete:!0}},!i)return{ok:!0,value:a};let c=await Yd(e,a);return c.ok?{ok:!0,value:a}:c}).finally(()=>{r=void 0});return r=o,o},flush:()=>n,setEnabled:async e=>{i=e,i||await n}};return ef.set(e,o),o},nf=e=>{let t=tf(e),n=!0,r=!1,i=[],a=[],o=()=>{if(r||i.length>0)return;let e=a;a=[],e.forEach(e=>e())},s=()=>{if(r)return;let e=i.shift();if(!e){o();return}r=!0,t.persist(e.snapshot).then(e.resolve).finally(()=>{r=!1,s()})};return{persist:e=>{let t=Gd(e);return t?n?new Promise(e=>{i.push({snapshot:t,resolve:e}),s()}):Promise.resolve(jd()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},cancelPending:()=>{let e=i;i=[],e.forEach(({resolve:e})=>e(Md())),o()},flush:()=>r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve(),setEnabled:async e=>{if(n=e,!n){let e=i;i=[],e.forEach(({resolve:e})=>e(Md()))}await(r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve()),await t.setEnabled(e),await t.flush()}}},rf=`openchamber-input-drafts`,af=1,of=`blobs`,sf=`blobRefs`,cf=class extends Error{code;constructor(e){super(e),this.code=e}},lf=e=>({ok:!1,error:{code:e instanceof cf?e.code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota-exceeded`:e instanceof DOMException&&e.name===`AbortError`?`transaction-aborted`:`transaction-failed`}}),uf=e=>{if(!(e instanceof Blob)&&!ie(e))throw new cf(`invalid-value`)},df=e=>{if(!e)throw new cf(`invalid-value`)},ff=(e,t)=>({id:Se(e),blobID:t,transportIdentity:e.transportIdentity,ownerKind:e.owner.kind,ownerID:e.owner.ownerID}),pf=async e=>{if(typeof e==`string`)return`url:${e}`;let t=await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()),n=[...new Uint8Array(t)].map(e=>e.toString(16).padStart(2,`0`)).join(``);return`blob:${e.type}:${e.size}:${n}`},mf=async(e,t)=>(e.fingerprint??await pf(e.value))===t,hf=async(e,t=!1)=>{let n=await e.getAllBlobRefs(),r=await e.getAllBlobs(),i=new Map;for(let t of n)await e.getBlob(t.blobID)?i.set(t.blobID,(i.get(t.blobID)??0)+1):await e.deleteBlobRef(t.id);for(let n of r){let r=i.get(n.id)??0;r||!t?await e.putBlob({...n,refCount:r}):await e.deleteBlob(n.id)}},gf=e=>{try{let t=JSON.parse(e);return!Array.isArray(t)||t.length!==4||typeof t[0]!=`string`||typeof t[2]!=`string`||t[1]!==`session`&&t[1]!==`draft`&&t[1]!==`surface`&&t[1]!==`queue`&&t[1]!==`send`?void 0:{transportIdentity:t[0],ownerKind:t[1],ownerID:t[2]}}catch{return}},_f=(e,t)=>{let n=gf(e.id),r=e.ownerKind??n?.ownerKind,i=e.transportIdentity??n?.transportIdentity;return r!==void 0&&t.ownerKinds.includes(r)&&(t.transportIdentities===void 0||i!==void 0&&t.transportIdentities.includes(i))},vf=(e=yf())=>{let t=async(t,n)=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=await e.getBlobRef(Se(t));return!r||n!==void 0&&r.blobID!==n?!1:(await e.deleteBlobRef(r.id),await hf(e),(await e.getAllBlobRefs()).some(e=>e.blobID===r.blobID)||await e.deleteBlob(r.blobID),!0)})}}catch(e){return lf(e)}};return{put:async(t,n)=>{try{df(t),uf(n);let r=await pf(n);return await e.transaction(async e=>{let i=await e.getBlob(t);if(i&&!await mf(i,r))throw new cf(`blob-id-conflict`);i||await e.putBlob({id:t,value:n,refCount:0,fingerprint:r})}),{ok:!0,value:void 0}}catch(e){return lf(e)}},putAndRetain:async(t,n,r)=>{try{df(n),uf(r);let i=await pf(r);return await e.transaction(async e=>{let a=Se(t),o=await e.getBlobRef(a);if(o&&o.blobID!==n)throw new cf(`blob-id-conflict`);let s=await e.getBlob(n);if(s&&!await mf(s,i))throw new cf(`blob-id-conflict`);s||await e.putBlob({id:n,value:r,refCount:0,fingerprint:i}),o||await e.putBlobRef(ff(t,n)),await hf(e)}),{ok:!0,value:void 0}}catch(e){return lf(e)}},read:async t=>{try{let n=await e.transaction(e=>e.getBlob(t));return n?{ok:!0,value:n.value}:{ok:!1,error:{code:`missing-blob`}}}catch(e){return lf(e)}},readReference:async t=>{try{return{ok:!0,value:(await e.transaction(e=>e.getBlobRef(Se(t))))?.blobID}}catch(e){return lf(e)}},retain:async(t,n)=>{try{return df(n),await e.transaction(async e=>{let r=await e.getBlobRef(Se(t));if(r&&r.blobID!==n)throw new cf(`blob-id-conflict`);if(!await e.getBlob(n))throw new cf(`missing-blob`);r||await e.putBlobRef(ff(t,n)),await hf(e)}),{ok:!0,value:void 0}}catch(e){return lf(e)}},release:e=>t(e),releaseIfMatches:(e,n)=>t(e,n),reconcileReferences:async(t,n={ownerKinds:[`session`,`draft`]})=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=[],i=[],a=[],o=new Map((await e.getAllBlobRefs()).map(e=>[e.id,e]));for(let[i,a]of o)_f(a,n)&&t.get(i)!==a.blobID&&(await e.deleteBlobRef(i),r.push(i));for(let[r,s]of t){let t=gf(r);if(!t||!n.ownerKinds.includes(t.ownerKind)||n.transportIdentities!==void 0&&!n.transportIdentities.includes(t.transportIdentity)){a.push(r);continue}let c=o.get(r);if(!await e.getBlob(s)){a.push(r);continue}(!c||c.blobID!==s)&&(await e.putBlobRef({id:r,blobID:s,...t}),i.push(r))}return await hf(e,!0),{released:r,repaired:i,missing:a}})}}catch(e){return lf(e)}},reconcileOwnerReferences:async(t,n)=>{let r=new Map;for(let[e,i]of n)r.set(Se({transportIdentity:t.transportIdentity,owner:t.owner,attachmentOccurrenceRefID:e}),i);try{return{ok:!0,value:await e.transaction(async e=>{let n=0,i=new Set;for(let a of await e.getAllBlobRefs())a.transportIdentity===t.transportIdentity&&a.ownerKind===t.owner.kind&&a.ownerID===t.owner.ownerID&&r.get(a.id)!==a.blobID&&(await e.deleteBlobRef(a.id),i.add(a.blobID),n++);await hf(e);let a=await e.getAllBlobRefs();for(let t of i)a.some(e=>e.blobID===t)||await e.deleteBlob(t);return n})}}catch(e){return lf(e)}},discardUnreferenced:async t=>{try{return{ok:!0,value:await e.transaction(async e=>!await e.getBlob(t)||(await e.getAllBlobRefs()).some(e=>e.blobID===t)?!1:(await e.deleteBlob(t),!0))}}catch(e){return lf(e)}}}},yf=()=>({transaction:async e=>{let t=await bf(),n=t.transaction([of,sf],`readwrite`),r=n.objectStore(of),i=n.objectStore(sf),a=e=>new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error??n.error??Error(`IndexedDB request failed`))}),o=new Promise((e,t)=>{n.oncomplete=()=>e(),n.onabort=()=>t(n.error??new DOMException(`aborted`,`AbortError`)),n.onerror=()=>{console.error(`Input draft IndexedDB transaction error`,n.error)}}),s;try{let t=await e({getBlob:e=>a(r.get(e)),getAllBlobs:()=>a(r.getAll()),putBlob:async e=>{await a(r.put(e))},deleteBlob:async e=>{await a(r.delete(e))},getBlobRef:e=>a(i.get(e)),getAllBlobRefs:()=>a(i.getAll()),putBlobRef:async e=>{await a(i.put(e))},deleteBlobRef:async e=>{await a(i.delete(e))}});return await o,t}catch(e){s=e;try{n.abort()}catch{}try{await o}catch(e){s===void 0&&(s=e)}throw s}finally{t.close()}}}),bf=()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(new cf(`database-unavailable`));return}let n=indexedDB.open(rf,af),r=!1,i=()=>{r||(r=!0,t(new cf(`database-unavailable`)))};n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(of)||e.createObjectStore(of,{keyPath:`id`}),e.objectStoreNames.contains(sf)||e.createObjectStore(sf,{keyPath:`id`})},n.onsuccess=()=>{let t=n.result;if(t.onversionchange=()=>t.close(),r){t.close();return}r=!0,e(t)},n.onerror=i,n.onblocked=i}),xf=()=>({drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:``,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),Sf=e=>({version:1,drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}),Cf=e=>{let t=Sf(e),n=wf(JSON.parse(JSON.stringify(t)));return{drafts:n.drafts,tombstones:n.tombstones,migration:n.migration,legacy:n.legacy}},wf=e=>{let t=Gd(e);if(!t)throw Error(`invalid draft snapshot`);return t},Tf=e=>e instanceof Map?[...e.entries()]:Object.entries(e??{}),Ef=e=>typeof e==`string`?e:R(e),Df=[`session`,`draft`,`surface`],Of=e=>({transportIdentity:e.transportIdentity,owner:{kind:e.owner.kind,ownerID:e.owner.ownerID},attachmentOccurrenceRefID:e.attachmentOccurrenceRefID}),kf=e=>JSON.parse(JSON.stringify(e)),Af=e=>e.phase===`metadata`?{phase:`metadata`,error:{code:e.error.code}}:{phase:`blob`,error:{...e.error},...e.reference?{reference:Of(e.reference)}:{}},jf=e=>({status:e.status,keys:[...e.keys],errors:e.errors.map(Af),cleanupErrors:e.cleanupErrors.map(Af)}),Mf=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,Nf=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&Df.includes(t[1])&&typeof t[2]==`string`&&t[0].length>0&&t[2].length>0}catch{return!1}},Pf=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)].flatMap(t=>t.locator.kind===`blob`?[{reference:{transportIdentity:e.key.transportIdentity,owner:{kind:e.key.owner.kind,ownerID:e.key.owner.ownerID},attachmentOccurrenceRefID:t.attachmentRefID},attachment:kf(t)}]:[]),Ff=e=>{let t=new Map;for(let n of Object.values(e))for(let e of Pf(n))t.set(Se(e.reference),e);return t},If=(e,t)=>({phase:`blob`,error:{...e},...t?{reference:Of(t)}:{}}),Lf=(e,t=[])=>({status:e,keys:t,errors:[],cleanupErrors:[]}),Rf=e=>e?.attachment.locator.kind===`blob`?e.attachment.locator.blobID:``,zf=(e,t,n={})=>{let r=xf(),i=n.enabled??!0,a=0,o=!1,s=Promise.resolve(),c=new Map,l=e=>{let t=s.then(e,e);return s=t.then(()=>void 0,()=>void 0),t.then(e=>e&&typeof e==`object`&&`status`in e&&`keys`in e&&`errors`in e&&`cleanupErrors`in e?jf(e):e)},u=async(t=r.drafts)=>{let n=[],i=new Map([...Ff(t)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``]));for(let[t,r]of c){if(i.get(t)===r.expectedBlobID){c.delete(t);continue}let a=await e.releaseIfMatches(Of(r.reference),r.expectedBlobID);a.ok?c.delete(t):n.push(If(a.error,r.reference))}return n},d=async(t,n,r,i)=>{let o=Of(t),s=await e.releaseIfMatches(o,n);s.ok||(c.set(Se(o),{reference:Of(o),expectedBlobID:n,generation:a,reason:i}),r.push(If(s.error,o)))},f=async(t,n)=>{let r=t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,i=Of(t.reference),a=kf(t.attachment),o=await e.readReference(i);if(!o.ok)return{acquired:!1,error:If(o.error,i)};if(o.value&&o.value!==r)return{acquired:!1,error:If({code:`reference-conflict`},i)};if(o.value===r){let t=await e.read(r);if(t.ok)return{acquired:!1};if(t.error.code!==`missing-blob`)return{acquired:!1,error:If(t.error,i)};let o=await n?.(Of(i),kf(a));if(o===void 0)return{acquired:!1,error:If({code:`runtime-value-missing`},i)};let s=await e.putAndRetain(i,r,o);return s.ok?{acquired:!0}:{acquired:!1,error:If(s.error,i)}}let s=await e.read(r);if(s.ok){let t=await e.retain(i,r);return t.ok?{acquired:!0}:{acquired:!1,error:If(t.error,i)}}if(s.error.code!==`missing-blob`)return{acquired:!1,error:If(s.error,i)};let c=await n?.(Of(i),kf(a));if(c===void 0)return{acquired:!1,error:If({code:`runtime-value-missing`},i)};let l=await e.putAndRetain(i,r,c);return l.ok?{acquired:!0}:{acquired:!1,error:If(l.error,i)}};return{seed:t=>l(async()=>{if(!i)return Lf(`disabled`);if(o)return{...Lf(`failed`),errors:[If({code:`invalid-record`})]};let n;try{if(!t)n=xf();else{let e=wf(JSON.parse(JSON.stringify(t)));n={drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}}}catch{return{...Lf(`failed`),errors:[If({code:`invalid-record`})]}}let a=Ff(n.drafts),s=await e.reconcileReferences(new Map([...a].map(([e,t])=>[e,Rf(t)])),{ownerKinds:Df});return s.ok?(r=n,o=!0,{...Lf(`committed`),errors:s.value.missing.map(e=>If({code:`missing-blob`},a.get(e)?.reference))}):{...Lf(`failed`),errors:[If(s.error)]}}),commit:e=>{let n=[...Tf(e.drafts).map(([e])=>e),...(e.delete??[]).map(Ef)];return i?l(async()=>{if(!o)return Lf(`unseeded`,n);if(!i)return Lf(`disabled`,n);let s=a,c=[],l=Cf(r),p=Tf(e.drafts),m=Tf(e.tombstones),h=(e.delete??[]).map(Ef);if(p.some(([e,t])=>!Nf(e)||!Mf(t.revision))||m.some(([e,t])=>!Nf(e)||!Mf(t))||h.some(e=>!Nf(e))||new Set(p.map(([e])=>e)).size!==p.length||m.some(([e])=>p.some(([t])=>t===e)))return{...Lf(`failed`,n),errors:[If({code:`invalid-record`})]};try{for(let[e,t]of p){let n=w(t);if(!n||e!==R(n.key))throw Error(`invalid draft record`);l.drafts[e]=n,delete l.tombstones[e]}for(let e of h)delete l.drafts[e];for(let[e,t]of m)l.tombstones[e]=t;e.migration&&(l.migration=e.migration),e.legacy&&(l.legacy=e.legacy);let t=wf(Sf(l));l.drafts=t.drafts,l.tombstones=t.tombstones,l.migration=t.migration,l.legacy=t.legacy}catch{return{...Lf(`failed`,n),errors:[If({code:`invalid-record`})],cleanupErrors:c}}if(!await e.isCurrent())return Lf(`stale`,n);let g=Ff(r.drafts),_=Ff(l.drafts);c=await u(l.drafts);let v=[];for(let[t,r]of _){let i=g.get(t);if((i?.attachment.locator.kind===`blob`?i.attachment.locator.blobID:void 0)===(r.attachment.locator.kind===`blob`?r.attachment.locator.blobID:void 0))continue;let a=await f(r,e.resolveBlobValue);if(a.error){for(let e of v.reverse())await d(e,Rf(_.get(Se(e))),c,`acquire-failed`);return{...Lf(`failed`,n),errors:[a.error],cleanupErrors:c}}a.acquired&&v.push(r.reference)}if(!await e.isCurrent()){for(let e of v.reverse())await d(e,Rf(_.get(Se(e))),c,`stale`);return{...Lf(`stale`,n),cleanupErrors:c}}if(!i||s!==a){for(let e of v.reverse())await d(e,Rf(_.get(Se(e))),c,`disabled`);return{...Lf(`disabled`,n),cleanupErrors:c}}let y=await t.persist(Sf(l));if(!y.ok){for(let e of v.reverse())await d(e,Rf(_.get(Se(e))),c,`metadata-failed`);return{...Lf(`failed`,n),errors:[{phase:`metadata`,error:y.error}],cleanupErrors:c}}r=l;for(let[e,t]of g)_.has(e)||await d(t.reference,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,c,`metadata-committed`);return{...Lf(`committed`,n),cleanupErrors:c}}):Promise.resolve(jf(Lf(`disabled`,n)))},reconcile:()=>l(async()=>{if(!o)return Lf(`unseeded`);if(!i)return Lf(`disabled`);let t=await u(),n=new Map([...Ff(r.drafts)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``])),a=await e.reconcileReferences(n,{ownerKinds:Df}),s=a.ok?a.value.missing.map(e=>If({code:`missing-blob`},Ff(r.drafts).get(e)?.reference)):[If(a.error)];return{status:a.ok?`committed`:`failed`,keys:[],errors:s,cleanupErrors:t}}),retryCleanup:()=>l(async()=>({...Lf(`committed`),cleanupErrors:await u()})),flush:()=>s,setEnabled:async e=>{if(!e){i=!1,a+=1,t.cancelPending?.(),await t.setEnabled?.(!1),await s,await t.flush?.();return}await t.setEnabled?.(!0),i=!0,a+=1}}},Bf=`openchamber-composer-reference-draft`,Vf=`openchamber-pasted-text-draft`,Hf=e=>Array.from(e).length,Uf=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),Wf=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,Gf=(e,t)=>{let n=[],r=[],i=0;for(let a=0;a<Math.min(t.length,P.referenceCount);a+=1){let o=t[a];if(!(!Uf(o)||!Wf(o.id,P.idLength)||!Wf(o.token,P.displayLength)||typeof o.text!=`string`||o.text.length>P.pastePayloadLength||typeof o.characterCount!=`number`||!Number.isSafeInteger(o.characterCount)||o.characterCount!==Hf(o.text)||typeof o.index!=`number`||!Number.isSafeInteger(o.index)||o.index<1))for(let t=e.indexOf(o.token);t>=0&&n.length<P.referenceCount;t=e.indexOf(o.token,t+o.token.length)){let e=t+o.token.length;if(r.some(n=>n.start<e&&n.end>t)||i+o.text.length>P.totalPastePayloadLength)continue;let a=n.filter(e=>e.id.startsWith(`${o.id}:`)).length;n.push({id:`${o.id}:${a}`,kind:`paste`,start:t,end:e,display:o.token,text:o.text,characterCount:o.characterCount,index:o.index}),r.push({start:t,end:e}),i+=o.text.length}}return n.sort((e,t)=>e.start-t.start)},Kf=e=>{try{let t=JSON.parse(e);if(!Uf(t)||typeof t.text!=`string`)return{text:e,references:[]};if(t.type===Bf)return(t.version===2?we(t.text,t.references):void 0)??{text:t.text,references:[]};if(t.type===Vf){let e=t.version===1&&Array.isArray(t.references)?Gf(t.text,t.references):[];return we(t.text,e)??{text:t.text,references:[]}}}catch{}return{text:e,references:[]}},qf=`file://`,Jf=e=>{let t=e.replace(/\\/g,`/`);return/^[A-Za-z]:/.test(t)&&(t=`/${t}`),t.split(`/`).map((e,t)=>t===1&&/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`)},Yf=e=>{let t=e.replace(/\\/g,`/`).trim();return t.toLowerCase().startsWith(qf)?t:`${qf}${Jf(t)}`},Xf=(e,t)=>`${e}\u0000${t}`,Zf=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Failed to read file`)),r.onabort=()=>n(Error(`File read aborted`)),r.readAsDataURL(e)}),Qf=e=>{if(!e.startsWith(`data:`))return 0;let t=e.indexOf(`,`);if(t<0)return 0;let n=e.slice(0,t).toLowerCase(),r=e.slice(t+1);if(!n.endsWith(`;base64`))return 0;let i=0;return r.endsWith(`==`)?i=2:r.endsWith(`=`)&&(i=1),Math.max(0,Math.floor(r.length*3/4)-i)},$f=(e,t)=>e===t?!0:!e||!t?!1:e.filePath===t.filePath&&e.fileName===t.fileName&&e.relativePath===t.relativePath&&e.fileSize===t.fileSize&&e.selection?.startLine===t.selection?.startLine&&e.selection?.endLine===t.selection?.endLine&&e.selection?.text===t.selection?.text,ep=e=>({version:1,key:e,revision:1,text:``,attachments:[],syntheticParts:[],mentions:[]}),tp=(e,t)=>t.flatMap(t=>{let n=`@${t}`,r=[],i=e.indexOf(n);for(;i>=0;)r.push({kind:`file`,value:t,path:t,label:t,range:{start:i,end:i+n.length}}),i=e.indexOf(n,i+n.length);return r}),np=((e={})=>{let t=e.sink??zd(),n=e.repository??tf(t),i=e.coordinator??nf(t),a=e.blobStore??vf(),o=e.durability??zf(a,i,{enabled:e.persistenceEnabled??!0}),c=new Map,l=new Map,u=new Map,d=new Map,f=new Map,p=new Set,m=new Set,h,g,_=0,v=0,y=!1,b=!1,x,S=new Set,C=new Map,T=new Set;return Oe()((t,i)=>{let E=e=>c.set(e,(c.get(e)??0)+1),D=(...e)=>{for(let t of e)u.set(t,(u.get(t)??0)+1),d.delete(t)},O=e=>w(e),k=()=>e.runtimeCapture?.()??{transportIdentity:r(),generation:s()},A=e=>{let t=k();return t.transportIdentity===e.transportIdentity&&t.generation===e.generation},j=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)],ee=e=>new Set(j(e).map(e=>e.attachmentRefID)),te=(e,t,n)=>{let r=ee(n);return{draftAttachmentViews:{...e.draftAttachmentViews,[t]:Object.fromEntries(Object.entries(e.draftAttachmentViews[t]??{}).filter(([e])=>r.has(e)))},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[t]:(e.draftMissingAttachmentRefIDs[t]??[]).filter(e=>r.has(e))}}},M=()=>e.createID?.()??fe(),ne=async(e,t)=>{let n=t instanceof File?t:new File([t],e.filename,{type:e.mimeType});return{id:e.attachmentID,file:n,dataUrl:typeof t==`string`?t:await Zf(n),mimeType:e.mimeType,filename:e.filename,size:e.size,source:e.source,...e.serverPath?{serverPath:e.serverPath}:{},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource?{vscodeSource:e.vscodeSource}:{}}},re=e=>{let t=e.errors[0]??e.cleanupErrors[0];return t?.phase===`metadata`||t?.phase===`blob`&&[`blob-id-conflict`,`database-unavailable`,`invalid-value`,`missing-blob`,`quota-exceeded`,`transaction-aborted`,`transaction-failed`].includes(t.error.code)?t.error.code:`unavailable`},ae=(e,n)=>{let r=i(),a=_,s=n??k(),l=[...new Set(e)];if(l.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),!r.persistenceEnabled)return l.forEach(e=>S.add(e)),Promise.resolve({status:`disabled`,keys:l,errors:[],cleanupErrors:[]});let u=new Map(l.map(e=>[e,c.get(e)??0])),d=new Map(l.map(e=>[e,r.drafts[e]?.revision??r.tombstones[e]??0])),f=l.filter(e=>r.drafts[e]),v=Object.fromEntries(f.map(e=>[e,r.draftPersistence[e]?.status===`error`?r.draftPersistence[e]:{status:`saving`,revision:d.get(e)}])),y=Object.fromEntries(f.map(e=>[e,r.draftAttachmentPersistence[e]?.status===`error`?r.draftAttachmentPersistence[e]:{status:`saving`,revision:d.get(e)}]));t(e=>({draftPersistence:{...e.draftPersistence,...v},draftAttachmentPersistence:{...e.draftAttachmentPersistence,...y}})),b||l.forEach(e=>S.add(e));let x=(async()=>{let e=i(),n=await o.commit({drafts:Object.fromEntries(l.flatMap(t=>e.drafts[t]?[[t,e.drafts[t]]]:[])),tombstones:Object.fromEntries(l.flatMap(t=>e.tombstones[t]?[[t,e.tombstones[t]]]:[])),delete:l.filter(t=>!e.drafts[t]),migration:e.migration,legacy:{...e.legacyNewDraft?{new:e.legacyNewDraft}:{},entries:e.legacyDraftEntries},resolveBlobValue:t=>{for(let[n,r]of Object.entries(e.drafts))if(r.key.transportIdentity===t.transportIdentity&&r.key.owner.kind===t.owner.kind&&r.key.owner.ownerID===t.owner.ownerID)return e.draftAttachmentViews[n]?.[t.attachmentOccurrenceRefID]?.file},isCurrent:()=>_===a&&i().persistenceEnabled&&A(s)&&l.every(e=>(c.get(e)??0)===u.get(e)&&(i().drafts[e]?.revision??i().tombstones[e]??0)===d.get(e))}),r=_===a&&i().persistenceEnabled&&A(s);return(!r||n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)&&l.forEach(e=>S.add(e)),r&&t(e=>{let t={...e.draftPersistence};for(let e of f){if((c.get(e)??0)!==u.get(e))continue;let r=d.get(e);if(n.status===`committed`)t[e]={status:`saved`,revision:r};else if(n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)continue;else t[e]={status:`error`,revision:r,errorCode:re(n)}}let r={...e.draftAttachmentPersistence};for(let e of f){if((c.get(e)??0)!==u.get(e))continue;let t=d.get(e);r[e]=n.status===`committed`&&n.cleanupErrors.length===0?{status:`saved`,revision:t}:n.status===`failed`||n.cleanupErrors.length>0?{status:`error`,revision:t,errorCode:re(n)}:r[e]??{status:`idle`,revision:t}}return{draftPersistence:t,draftAttachmentPersistence:r}}),n})();return p.add(x),x.then(()=>p.delete(x),()=>p.delete(x)),x},oe=e=>{let n=i(),r=Object.fromEntries(e.flatMap(e=>{let t=n.drafts[e];return t?[[e,{status:`saving`,revision:t.revision}]]:[]}));Object.keys(r).length&&t(e=>({draftPersistence:{...e.draftPersistence,...r}}))},se=()=>{h&&clearTimeout(h),h=void 0;let e=[...m];m.clear();let t=g;return g=void 0,e.length?ae(e,t).then(()=>void 0):Promise.resolve()},ce=e=>{if(!i().persistenceEnabled){S.add(e);return}m.add(e),oe([e]),!h&&(g=k(),h=setTimeout(()=>{se()},40))},le=e=>{let t=[...e];return t.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),ae(t)},N=(e,n,r,a=`immediate`)=>{let o=R(e),s=i().drafts[o];if(!s||r!==void 0&&s.revision!==r)return;let c=O(n(s));if(!(!c||R(c.key)!==o))return E(o),t(e=>({drafts:{...e.drafts,[o]:c},...te(e,o,c)})),a===`deferred`?ce(o):le([o]),c},de=e=>e?pe(e):void 0,P=(e=[])=>JSON.parse(JSON.stringify(e)),me=(e,t,n,r=!1,i=!1)=>({status:e,...de(n)?{record:de(n)}:{},errors:P(t?.errors),cleanupErrors:P(t?.cleanupErrors),current:r,durable:i}),he=(e,t,n,r,i=!1,a=!1)=>({status:e,errors:P(t?.errors),cleanupErrors:P(t?.cleanupErrors),current:i,durable:a,source:de(n),destination:de(r)}),F=e=>e.status,ge=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,I=(e,...t)=>{let n={...e};for(let e of t)delete n[e];return n},_e=async(e,t)=>{let n={},r=i().draftAttachmentViews[R(e.key)]??{};for(let i of j(e)){let e;if(i.locator.kind===`url`){let n=t?.get(i.attachmentRefID);e=n===void 0?i.locator.url:n}else e=t?.get(i.attachmentRefID)??r[i.attachmentRefID]?.file??(typeof r[i.attachmentRefID]?.dataUrl==`string`&&ie(r[i.attachmentRefID].dataUrl)?r[i.attachmentRefID].dataUrl:void 0);if(i.locator.kind===`url`&&e!==void 0&&(e!==i.locator.url||!ie(e))||i.locator.kind===`blob`&&e!==void 0&&!(e instanceof Blob)&&!(typeof e==`string`&&ie(e)))return;e!==void 0&&(n[i.attachmentRefID]=await ne(i,e))}return n},ve=e=>e?R(e):`legacy-unowned`,ye=e=>C.get(e)??0,be=e=>{C.set(e,ye(e)+1)},xe=(e,n,r=!1)=>{r&&be(e),t(t=>{let r=n(t.attachmentBuckets[e]??[]);return{attachmentBuckets:{...t.attachmentBuckets,[e]:r},...ve(t.activeAttachmentDraft)===e?{attachedFiles:r}:{}}})};return{drafts:{},tombstones:{},draftHydration:{},draftPersistence:{},draftAttachmentViews:{},draftMissingAttachmentRefIDs:{},draftAttachmentPersistence:{},persistenceEnabled:e.persistenceEnabled??!0,legacyDraftEntries:{},migration:{complete:!1,claimedTransportIdentity:``},captureDraftRuntime:()=>k(),commitDraftSnapshot:async e=>{let n=R(e.key),r=e.runtime;if(r.transportIdentity!==e.key.transportIdentity||!A(r))return me(`stale`,void 0);let a=i(),s=a.drafts[n],l=a.tombstones[n]??0;if(e.expectedRevision!==`absent`&&!ge(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return me(`failed`,void 0);if(e.expectedRevision===`absent`?s:s?.revision!==e.expectedRevision)return me(`conflict`,void 0,s);let u=e.expectedRevision===`absent`?l+1:e.expectedRevision+1;if(!ge(u))return me(`failed`,void 0);let d=O({version:1,key:e.key,revision:u,...e.snapshot});if(!d)return me(`failed`,void 0);let f=await _e(d,e.values);if(!f)return me(`failed`,void 0);let p=c.get(n)??0,m=s?.revision??l,h=await o.commit({drafts:{[n]:d},isCurrent:()=>A(r)&&(c.get(n)??0)===p&&(i().drafts[n]?.revision??i().tombstones[n]??0)===m,resolveBlobValue:t=>e.values?.get(t.attachmentOccurrenceRefID)});if(h.status!==`committed`)return me(F(h),h,s);let g=(c.get(n)??0)===p&&(i().drafts[n]?.revision??i().tombstones[n]??0)===m,_=A(r);if(!g)return _||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),me(`stale`,h,d,!1,!0);let v=pe(d);return v?(E(n),D(n),t(e=>({drafts:{...e.drafts,[n]:v},tombstones:(()=>{let t={...e.tombstones};return delete t[n],t})(),draftAttachmentViews:_?{...e.draftAttachmentViews,[n]:f}:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:_?{...e.draftMissingAttachmentRefIDs,[n]:[]}:I(e.draftMissingAttachmentRefIDs,n),draftHydration:_?e.draftHydration:I(e.draftHydration,n),draftPersistence:_?{...e.draftPersistence,[n]:{status:`saved`,revision:v.revision}}:I(e.draftPersistence,n),draftAttachmentPersistence:_?{...e.draftAttachmentPersistence,[n]:h.cleanupErrors.length?{status:`error`,revision:v.revision,errorCode:re(h)}:{status:`saved`,revision:v.revision}}:I(e.draftAttachmentPersistence,n)})),me(_?`committed`:`stale`,h,v,_,!0)):me(`failed`,h)},deleteDraftSnapshot:async e=>{let n=R(e.key),r=e.runtime;if(r.transportIdentity!==e.key.transportIdentity||!A(r))return me(`stale`,void 0);let a=i(),s=a.drafts[n],l=a.tombstones[n]??0;if(!ge(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return me(`failed`,void 0);if(!s||s.revision!==e.expectedRevision)return me(`conflict`,void 0);let u=e.expectedRevision+1;if(!ge(u))return me(`failed`,void 0);let d=c.get(n)??0,f=s.revision,p=Math.max(l,u),m=await o.commit({tombstones:{[n]:p},delete:[n],isCurrent:()=>A(r)&&(c.get(n)??0)===d&&i().drafts[n]?.revision===f&&(i().tombstones[n]??0)===l});if(m.status!==`committed`)return me(F(m),m);let h=(c.get(n)??0)===d&&i().drafts[n]?.revision===f&&(i().tombstones[n]??0)===l,g=A(r);return h?(E(n),D(n),t(e=>{let t={...e.drafts};return delete t[n],{drafts:t,tombstones:{...e.tombstones,[n]:Math.max(e.tombstones[n]??0,p)},draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)}}),me(g?`committed`:`stale`,m,void 0,g,!0)):(g||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),me(`stale`,m,void 0,!1,!0))},finalizeDraftOwnership:async e=>{let n=R(e.source),r=R(e.destination),a=e.runtime,s=i(),l=s.drafts[n],u=s.drafts[r];if(n===r||e.destination.owner.kind!==`session`||e.source.transportIdentity!==a.transportIdentity||e.destination.transportIdentity!==a.transportIdentity||!A(a))return he(`stale`,void 0,l,u);if(!ge(e.expectedSourceRevision))return he(`failed`,void 0,l,u);if(!l||l.revision!==e.expectedSourceRevision||u)return he(`conflict`,void 0,l,u);let d=c.get(n)??0,f=c.get(r)??0,p=s.tombstones[n]??0,m=s.tombstones[r]??0;if(!Number.isSafeInteger(p)||p<0||!Number.isSafeInteger(m)||m<0)return he(`failed`,void 0,l,u);let h=Math.max(l.revision+1,m+1);if(!ge(h))return he(`failed`,void 0,l,u);let g=O(e.disposition===`preserve`?{...l,key:e.destination,revision:h}:{...ep(e.destination),revision:h});if(!g)return he(`failed`,void 0,l,u);let _=await o.commit({drafts:{[r]:g},tombstones:{[n]:Math.max(p,h)},delete:[n],isCurrent:()=>A(a)&&(c.get(n)??0)===d&&(c.get(r)??0)===f&&i().drafts[n]?.revision===l.revision&&!i().drafts[r]&&(i().tombstones[n]??0)===p&&(i().tombstones[r]??0)===m,resolveBlobValue:e=>s.draftAttachmentViews[n]?.[e.attachmentOccurrenceRefID]?.file});if(_.status!==`committed`)return he(F(_),_,l,u);let v=(c.get(n)??0)===d&&i().drafts[n]?.revision===l.revision&&(i().tombstones[n]??0)===p,y=(c.get(r)??0)===f&&!i().drafts[r]&&(i().tombstones[r]??0)===m,b=A(a),x=pe(g);if(!x)return he(`failed`,_,l,u);if(b&&!v&&!y)return he(`stale`,_,l,g,!1,!0);v&&(E(n),D(n)),y&&(E(r),D(r)),t(t=>{let i=t.drafts,a=t.tombstones;(v||y)&&(i={...i}),(v||y)&&(a={...a}),v&&(delete i[n],a[n]=Math.max(a[n]??0,h)),y&&(i[r]=x,delete a[r]);let o=t.draftHydration,s=t.draftPersistence,c=t.draftAttachmentViews,l=t.draftMissingAttachmentRefIDs,u=t.draftAttachmentPersistence;return b?(v&&(o=I(o,n),s=I(s,n),c=I(c,n),l=I(l,n),u=I(u,n)),y&&(o=I(o,r),s={...I(s,r),[r]:{status:`saved`,revision:x.revision}},c=I(c,r),l=I(l,r),u={...I(u,r),[r]:_.cleanupErrors.length?{status:`error`,revision:x.revision,errorCode:re(_)}:{status:`saved`,revision:x.revision}},b&&v&&e.disposition===`preserve`&&(c={...c,[r]:t.draftAttachmentViews[n]??{}},l={...l,[r]:t.draftMissingAttachmentRefIDs[n]??[]}))):(o=I(o,n,r),s=I(s,n,r),c=I(c,n,r),l=I(l,n,r),u=I(u,n,r)),{drafts:i,tombstones:a,draftHydration:o,draftPersistence:s,draftAttachmentViews:c,draftMissingAttachmentRefIDs:l,draftAttachmentPersistence:u}});let S=v&&y&&b;return he(S?`committed`:`stale`,_,l,g,S,!0)},flushDraftPersistence:async()=>{for(await se();p.size;)await Promise.all([...p]);await o.flush()},ensureDraft:e=>{let n=R(e),r=i().drafts[n];if(r)return r;let a=O({...ep(e),revision:(i().tombstones[n]??0)+1});if(!a)throw Error(`Invalid empty draft`);return E(n),t(e=>({drafts:{...e.drafts,[n]:a}})),le([n]),a},getDraft:e=>i().drafts[R(e)],setDraftText:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return N(e,e=>({...e,revision:e.revision+1,text:t,mentions:e.mentions.filter(e=>e.range.end<=t.length&&t.slice(e.range.start,e.range.end)===`@${e.value}`),composerReferences:[]}),n.revision,`deferred`)??n},setDraftComposerDocument:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return i().setDraftComposerState(e,{document:t,mentions:n.mentions})},setDraftComposerState:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return N(e,e=>({...e,revision:e.revision+1,text:t.document.text,composerReferences:t.document.references,mentions:t.mentions}),n.revision,`deferred`)},replaceDraft:(e,t,n)=>N(e,e=>({version:1,key:e.key,revision:e.revision+1,text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}}),t),setDraftMentions:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:t})),addDraftMention:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:[...e.mentions,t]})),removeDraftMention:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:e.mentions.filter(e=>e.value!==t)})),setDraftSyntheticParts:(e,t)=>N(e,e=>({...e,revision:e.revision+1,syntheticParts:t})),consumeDraftSyntheticParts:(e,t)=>{let n=i().getDraft(e);if(!n)return null;let r=n.syntheticParts.filter(e=>!t?.(e)),a=n.syntheticParts.filter(e=>t?.(e));return N(e,e=>({...e,revision:e.revision+1,syntheticParts:a}),n.revision)?r:null},setDraftAttachments:(e,t)=>N(e,e=>({...e,revision:e.revision+1,attachments:t})),addDraftLocalAttachment:async(e,n,r={})=>{let a=i().getDraft(e);if(r.partID&&!a?.syntheticParts.some(e=>e.partID===r.partID))return;let o=R(e),s=c.get(o)??0,l=i().tombstones[o]??0,u=k(),d=n instanceof File?n:new File([n],r.filename??`attachment`,{type:n.type}),f;try{f=await Zf(d)}catch{let e=i().drafts[o];if(A(u)&&(i().tombstones[o]??0)===l&&(e?R(e.key)===o:(c.get(o)??0)===s)&&(!r.partID||e?.syntheticParts.some(e=>e.partID===r.partID))){let n=e?.revision??i().tombstones[o]??0;t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[o]:{status:`error`,revision:n,errorCode:`transaction-failed`}}}))}return}if(!A(u)||(i().tombstones[o]??0)!==l)return;let p=i().drafts[o];if(!p&&(c.get(o)??0)!==s)return;let m=p??i().ensureDraft(e);if(R(m.key)!==o||r.partID&&!m.syntheticParts.some(e=>e.partID===r.partID))return;let h=r.attachmentID??M(),g=r.partID?Ee(r.partID,h):ue(h),_=M(),v={attachmentID:h,attachmentRefID:g,filename:r.filename??(n instanceof File?n.name:`attachment`),mimeType:n.type,size:n.size,locator:{kind:`blob`,blobID:_},source:r.source??`local`,...r.vscodePath?{vscodePath:r.vscodePath}:{},...r.vscodeSource?{vscodeSource:r.vscodeSource}:{}},y=r.partID?{...m,revision:m.revision+1,syntheticParts:m.syntheticParts.map(e=>e.partID===r.partID?{...e,attachments:[...e.attachments,v]}:e)}:{...m,revision:m.revision+1,attachments:[...m.attachments,v]},b=O(y);if(!b)return;E(o);let x={id:h,file:d,dataUrl:f,mimeType:v.mimeType,filename:v.filename,size:v.size,source:v.source,...r.vscodePath?{vscodePath:r.vscodePath}:{},...r.vscodeSource?{vscodeSource:r.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[o]:b},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...e.draftAttachmentViews[o],[g]:x}}})),await ae([o]),v},addDraftDurableAttachment:(e,n)=>{let r=i().getDraft(e)??i().ensureDraft(e);if(n.partID&&!r.syntheticParts.some(e=>e.partID===n.partID))return;let a=n.attachmentID??M(),o=n.partID?Ee(n.partID,a):ue(a),s={attachmentID:a,attachmentRefID:o,filename:n.filename,mimeType:n.mimeType,size:n.size,source:n.source,locator:{kind:`url`,url:n.url},...n.serverPath?{serverPath:n.serverPath}:{},...n.vscodePath?{vscodePath:n.vscodePath}:{},...n.vscodeSource?{vscodeSource:n.vscodeSource}:{}},c=n.partID?{...r,revision:r.revision+1,syntheticParts:r.syntheticParts.map(e=>e.partID===n.partID?{...e,attachments:[...e.attachments,s]}:e)}:{...r,revision:r.revision+1,attachments:[...r.attachments,s]},l=O(c);if(!l)return;let u=R(e);E(u);let d={id:a,file:new File([],s.filename,{type:s.mimeType}),dataUrl:n.url,mimeType:s.mimeType,filename:s.filename,size:s.size,source:s.source,...s.serverPath?{serverPath:s.serverPath}:{},...s.vscodePath?{vscodePath:s.vscodePath}:{},...s.vscodeSource?{vscodeSource:s.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[u]:l},draftAttachmentViews:{...e.draftAttachmentViews,[u]:{...e.draftAttachmentViews[u],[o]:d}}})),ae([u]),s},getDraftAttachmentViews:e=>{let t=R(e),n=i().drafts[t],r=i().draftAttachmentViews[t]??{};return n?j(n).flatMap(e=>r[e.attachmentRefID]?[r[e.attachmentRefID]]:[]):[]},retryDraftAttachmentPersistence:async e=>{let n=R(e);if(!i().persistenceEnabled||!i().drafts[n]&&!i().tombstones[n])return;let r=await o.retryCleanup();r.cleanupErrors.length&&t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[n]:{status:`error`,revision:e.drafts[n]?.revision??e.tombstones[n],errorCode:re(r)}}})),await ae([n])},hydrateDraftAttachments:async e=>{let n=R(e),r=d.get(n);if(r)return r;let o=i().drafts[n];if(!o)return;let s=(u.get(n)??0)+1;u.set(n,s);let c=k(),l=_,f=(async()=>{t(e=>({draftHydration:{...e.draftHydration,[n]:`loading`}}));let e=()=>{if(u.get(n)!==s)return;let e=i(),r=e.draftAttachmentViews[n],a=e.draftMissingAttachmentRefIDs[n]??[];t(e=>({draftHydration:{...e.draftHydration,[n]:a.length?`degraded`:Object.keys(r??{}).length?`ready`:`idle`}}))},r={},d=[];for(let f of j(o)){let p=f.locator.kind===`url`?{ok:!0,value:f.locator.url}:await a.read(f.locator.blobID);if(!p.ok){if(p.error.code===`missing-blob`)d.push(f.attachmentRefID);else{u.get(n)===s&&_===l&&A(c)&&i().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}continue}try{r[f.attachmentRefID]=await ne(f,p.value)}catch{u.get(n)===s&&_===l&&A(c)&&i().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}}let f=i(),p=f.drafts[n],m=u.get(n);if(m===s&&_===l&&A(c)&&p===o)t(e=>({draftAttachmentViews:{...e.draftAttachmentViews,[n]:r},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[n]:d},draftHydration:{...e.draftHydration,[n]:d.length?`degraded`:`ready`}}));else if(m===s){let e=f.draftAttachmentViews[n],r=f.draftMissingAttachmentRefIDs[n]??[];t(t=>({draftHydration:{...t.draftHydration,[n]:r.length?`degraded`:Object.keys(e??{}).length?`ready`:`idle`}}))}})();d.set(n,f);try{await f}finally{d.get(n)===f&&d.delete(n)}},removeDraftAttachment:async(e,n)=>{let r=R(e),a=i().drafts[r],o=a&&j(a).find(e=>e.attachmentRefID===n);if(!a||!o)return!1;let s=ze(o)?Fe(a.text,[o.filename],a.mentions,a.composerReferences):void 0,c=O({...a,revision:a.revision+1,...s?.changed?{text:s.text,mentions:s.mentions,...s.composerReferences===void 0?{}:{composerReferences:s.composerReferences}}:{},attachments:a.attachments.filter(e=>e.attachmentRefID!==n),syntheticParts:a.syntheticParts.map(e=>({...e,attachments:e.attachments.filter(e=>e.attachmentRefID!==n)}))});return c?(E(r),t(e=>{let t={...e.draftAttachmentViews[r]};return delete t[n],{drafts:{...e.drafts,[r]:c},draftAttachmentViews:{...e.draftAttachmentViews,[r]:t},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[r]:(e.draftMissingAttachmentRefIDs[r]??[]).filter(e=>e!==n)}}}),(await ae([r])).status===`committed`):!1},replaceDraftAttachment:async(e,n,r,a)=>{let o=R(e),s=i().drafts[o],c=s&&j(s).find(e=>e.attachmentRefID===n);if(!s||!c)return;let l=k(),u=i().tombstones[o]??0,d=r instanceof File?r:new File([r],a?.filename??`attachment`,{type:r.type}),f;try{f=await Zf(d)}catch{let e=i().drafts[o],r=e&&j(e).find(e=>e.attachmentRefID===n);A(l)&&(i().tombstones[o]??0)===u&&e&&r?.attachmentID===c.attachmentID&&r.attachmentRefID===c.attachmentRefID&&R(e.key)===o&&t(t=>({draftAttachmentPersistence:{...t.draftAttachmentPersistence,[o]:{status:`error`,revision:e.revision,errorCode:`transaction-failed`}}}));return}let p=i().drafts[o],m=p&&j(p).find(e=>e.attachmentRefID===n);if(!A(l)||(i().tombstones[o]??0)!==u||!p||m?.attachmentID!==c.attachmentID||m.attachmentRefID!==c.attachmentRefID||R(p.key)!==o)return;let h=p.syntheticParts.find(e=>e.attachments.some(e=>e.attachmentRefID===n)),g=M(),_={attachmentID:g,attachmentRefID:h?Ee(h.partID,g):ue(g),filename:a?.filename??d.name,mimeType:d.type,size:d.size,locator:{kind:`blob`,blobID:M()},source:a?.source??`local`,...a?.vscodePath?{vscodePath:a.vscodePath}:{},...a?.vscodeSource?{vscodeSource:a.vscodeSource}:{}},v=O({...p,revision:p.revision+1,attachments:h?p.attachments:p.attachments.map(e=>e.attachmentRefID===n?_:e),syntheticParts:p.syntheticParts.map(e=>e.partID===h?.partID?{...e,attachments:e.attachments.map(e=>e.attachmentRefID===n?_:e)}:e)});if(!v)return;E(o);let y={id:g,file:d,dataUrl:f,mimeType:_.mimeType,filename:_.filename,size:_.size,source:_.source,..._.vscodePath?{vscodePath:_.vscodePath}:{},..._.vscodeSource?{vscodeSource:_.vscodeSource}:{}};return t(e=>{let t={...e.draftAttachmentViews[o]};return delete t[n],{drafts:{...e.drafts,[o]:v},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...t,[_.attachmentRefID]:y}},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[o]:(e.draftMissingAttachmentRefIDs[o]??[]).filter(e=>e!==n)}}}),(await ae([o])).status===`committed`?_:void 0},replaceDraftRootAttachments:async(e,t)=>{let n=R(e),r=k();if(r.transportIdentity!==e.transportIdentity||!A(r))return me(`stale`,void 0);let a=i().drafts[n],o=a?a.revision:`absent`,s=[],c=new Map;for(let e of t){let t=e.id,n=ue(t);if(e.source===`server`&&e.dataUrl&&ie(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),c.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&ie(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),c.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=M();s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),c.set(n,r)}}let l=a?.syntheticParts??[];for(let e of l)for(let t of e.attachments)t.locator.kind===`url`&&!c.has(t.attachmentRefID)&&c.set(t.attachmentRefID,t.locator.url);let u={text:a?.text??``,attachments:s,syntheticParts:l,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return i().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:u,values:c,runtime:r})},restoreDraftRootAttachments:async(e,t)=>{let n=R(e),r=k();if(r.transportIdentity!==e.transportIdentity||!A(r))return me(`stale`,void 0);let a=i().drafts[n],o=a?a.revision:`absent`,s=new Set(t.map(e=>e.id)),c=[],l=new Map;for(let e of t){let t=e.id,n=ue(t);if(e.source===`server`&&e.dataUrl&&ie(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),l.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&ie(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),l.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=M();c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),l.set(n,r)}}let u=i().draftAttachmentViews[n]??{};for(let e of a?.attachments??[])if(!s.has(e.attachmentID))if(c.push(JSON.parse(JSON.stringify(e))),e.locator.kind===`url`)l.set(e.attachmentRefID,e.locator.url);else{let t=u[e.attachmentRefID];t?.file instanceof Blob?l.set(e.attachmentRefID,t.file):typeof t?.dataUrl==`string`&&ie(t.dataUrl)&&l.set(e.attachmentRefID,t.dataUrl)}let d=a?.syntheticParts??[];for(let e of d)for(let t of e.attachments)t.locator.kind===`url`&&!l.has(t.attachmentRefID)&&l.set(t.attachmentRefID,t.locator.url);let f={text:a?.text??``,attachments:c,syntheticParts:d,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return i().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:f,values:l,runtime:r})},deleteDraft:(e,n)=>{let r=R(e),a=i().drafts[r];if(!a||n!==void 0&&a.revision!==n)return!1;let o=a.revision+1;return ge(o)?(E(r),D(r),t(e=>{let t={...e.drafts};delete t[r];let n={...e.draftHydration},i={...e.draftPersistence},a={...e.draftAttachmentViews},s={...e.draftMissingAttachmentRefIDs},c={...e.draftAttachmentPersistence};return delete n[r],delete i[r],delete a[r],delete s[r],delete c[r],{drafts:t,tombstones:{...e.tombstones,[r]:Math.max(e.tombstones[r]??0,o)},draftHydration:n,draftPersistence:i,draftAttachmentViews:a,draftMissingAttachmentRefIDs:s,draftAttachmentPersistence:c}}),ae([r]),!0):!1},moveDraft:(e,n,r)=>{let a=R(e),o=R(n),s=i().drafts[a];if(!s||a===o||r!==void 0&&s.revision!==r||i().drafts[o]||(i().tombstones[o]??0)>=s.revision+1||[...s.attachments,...s.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.locator.kind===`blob`))return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),ae([a,o]),c},moveDraftWithAttachments:async(e,n,r)=>{let a=R(e),o=R(n),s=i().drafts[a];if(!s||a===o||r!==void 0&&s.revision!==r||i().drafts[o]||(i().tombstones[o]??0)>=s.revision+1)return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),(await ae([a,o])).status===`committed`?c:void 0},setDraftPersistenceEnabled:async e=>{if(_+=1,!e){h&&clearTimeout(h),h=void 0,m.clear(),g=void 0,t({persistenceEnabled:!1,draftPersistence:{}}),await o.setEnabled(!1),await o.flush();return}t({persistenceEnabled:!0}),await o.setEnabled(!0);let n=k();b||await i().hydrateDraftMetadata(n.transportIdentity);let r=new Set([...Object.keys(i().drafts),...Object.keys(i().tombstones),...S]);S.clear(),await ae(r),await o.flush()},hydrateDraftMetadata:e=>{let r=f.get(e);if(r)return r;let a=(async()=>{let r=(l.get(e)??0)+1;l.set(e,r);let a=k();if(a.transportIdentity!==e)return!1;let s=_,u=new Map(c),d=v,f=Object.entries(i().drafts).filter(([,t])=>t.key.transportIdentity===e).map(([e])=>e);t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`loading`]))}}));let p=i().persistenceEnabled,m;try{m=await n.migrate(e,{persistenceEnabled:p})}catch{return!1}if(l.get(e)!==r||_!==s||!A(a))return!1;if(!m.ok)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(t=>[t,e.drafts[t]?`degraded`:`error`]))}})),!1;let h=m.value;if(!b){x??=o.seed(h).finally(()=>{x=void 0});let n;try{n=await x}catch{return!1}if(l.get(e)!==r||_!==s||!A(a))return!1;if(n.status!==`committed`&&n.status!==`disabled`)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`degraded`]))}})),!1;n.status===`committed`&&(b=!0)}let g=i(),C={...g.drafts},w={...g.tombstones},T=new Set;for(let[e,t]of Object.entries(h.tombstones))(c.get(e)??0)===(u.get(e)??0)&&(t>=(w[e]??0)&&(w[e]=t,(C[e]?.revision??0)<=t&&delete C[e]),T.add(e));for(let[t,n]of Object.entries(h.drafts)){if(n.key.transportIdentity!==e||(c.get(t)??0)!==(u.get(t)??0))continue;let r=C[t],i=O(n);i&&(!r||r.revision<i.revision)&&(w[t]??0)<i.revision&&(C[t]=i),T.add(t)}let E=v===d?{...h.legacy.entries}:{...g.legacyDraftEntries};if(h.migration.claimedTransportIdentity===e&&v===d)for(let[t,n]of Object.entries(E)){let r={transportIdentity:e,owner:{kind:`session`,ownerID:t}},i=R(r),a=Kf(n.text),o=O({...ep(r),text:a.text,composerReferences:a.references,mentions:tp(a.text,n.mentions)});o&&!C[i]&&!w[i]&&(c.get(i)??0)===(u.get(i)??0)&&(C[i]=o),delete E[t],T.add(i)}t(e=>({drafts:C,tombstones:w,legacyNewDraft:v===d&&!y?h.legacy.new:e.legacyNewDraft,legacyDraftEntries:E,migration:v===d?h.migration:e.migration,draftHydration:{...e.draftHydration,...Object.fromEntries([...T].map(e=>[e,`ready`]))}}));let D=[...S];for(let e of D)T.add(e);S.clear();try{await ae(T),await o.flush()}catch{return!1}return l.get(e)===r&&_===s&&A(a)})();return f.set(e,a),a.finally(()=>{f.get(e)===a&&f.delete(e)}).catch(()=>void 0),a},claimLegacyNewDraft:async e=>{let n=i().legacyNewDraft;if(!n)return i().getDraft(e);let r=R(e),a=i().drafts[r];if(v+=1,y=!0,a||i().tombstones[r])return t({legacyNewDraft:void 0}),ae([r]),a;let o=Kf(n.text),s=O({...ep(e),text:o.text,composerReferences:o.references,mentions:tp(o.text,n.mentions)});if(s)return E(r),t(e=>({drafts:{...e.drafts,[r]:s},legacyNewDraft:void 0})),ae([r]),s},pendingInputText:null,pendingInputMode:`replace`,pendingSyntheticParts:null,pendingPresetSubmit:null,attachedFiles:[],attachmentBuckets:{"legacy-unowned":[]},activeAttachmentDraft:null,activeEditorFile:null,setPendingInputText:(e,n=`replace`)=>t({pendingInputText:e,pendingInputMode:n}),consumePendingInputText:()=>{let{pendingInputText:e,pendingInputMode:n}=i();return e===null?null:(t({pendingInputText:null,pendingInputMode:`replace`}),{text:e,mode:n})},requestPresetSubmit:e=>t({pendingPresetSubmit:e}),consumePendingPresetSubmit:()=>{let{pendingPresetSubmit:e}=i();return e===null?null:(t({pendingPresetSubmit:null}),e)},setPendingSyntheticParts:e=>t({pendingSyntheticParts:e}),consumePendingSyntheticParts:()=>{let{pendingSyntheticParts:e}=i();return e!==null&&t({pendingSyntheticParts:null}),e},setActiveAttachmentDraft:e=>{let n=ve(e);t(t=>({activeAttachmentDraft:e,attachedFiles:t.attachmentBuckets[n]??[],attachmentBuckets:t.attachmentBuckets[n]?t.attachmentBuckets:{...t.attachmentBuckets,[n]:[]}}))},addAttachedFile:async e=>{let t=i().activeAttachmentDraft;if(t){let n=ve(t),r=ye(n),a=await i().addDraftLocalAttachment(t,e);r!==ye(n)&&a&&i().removeDraftAttachment(t,a.attachmentRefID);return}let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,r=ve(null),a=ye(r),o;try{o=await Zf(e)}catch{return}if(a!==ye(r))return;let s={id:n,file:e,dataUrl:o,mimeType:e.type,filename:e.name,size:e.size,source:`local`};xe(r,e=>[...e,s])},removeAttachedFile:e=>{let t=i().activeAttachmentDraft;if(t){let n=i().getDraft(t),r=n?[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)].find(t=>t.attachmentID===e):void 0;r&&i().removeDraftAttachment(t,r.attachmentRefID);return}xe(ve(null),t=>t.filter(t=>t.id!==e))},setAttachedFiles:e=>{xe(ve(i().activeAttachmentDraft),()=>e,!0)},clearAttachedFiles:()=>{let e=i().activeAttachmentDraft;if(e){be(ve(e)),i().getDraft(e)||i().ensureDraft(e),i().setDraftAttachments(e,[]);return}xe(ve(null),()=>[],!0)},addDraftVSCodeFileAttachment:(e,t,n,r)=>{if(i().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)||(i().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)??!1))return;let a=Yf(t);i().addDraftDurableAttachment(e,{filename:n,mimeType:`text/plain`,size:r||0,source:`vscode`,vscodePath:t,vscodeSource:`file`,url:a})},addDraftVSCodeSelectionAttachment:async(e,t,n)=>{let r=R(e),a=ye(r),o=`${r}\u0000${Xf(t,n.name)}`;if(!(i().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)||(i().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)??!1)||T.has(o))){T.add(o);try{let o=await i().addDraftLocalAttachment(e,n,{source:`vscode`,vscodePath:t,vscodeSource:`selection`});a!==ye(r)&&o&&i().removeDraftAttachment(e,o.attachmentRefID)}finally{T.delete(o)}}},addVSCodeFileAttachment:(e,t,n)=>{let r=i().activeAttachmentDraft;if(r){i().addDraftVSCodeFileAttachment(r,e,t,n);return}let a=`${Date.now()}-${Math.random().toString(36).slice(2)}`,o=ve(null);if((i().attachmentBuckets[o]??[]).some(t=>t.source===`vscode`&&t.vscodeSource===`file`&&(t.vscodePath||``)===e))return;let s=Yf(e),c={id:a,file:new File([],t,{type:`text/plain`}),dataUrl:s,mimeType:`text/plain`,filename:t,size:n||0,source:`vscode`,vscodePath:e,vscodeSource:`file`};xe(o,e=>[...e,c])},addVSCodeSelectionAttachment:async(e,t)=>{let n=i().activeAttachmentDraft;if(n){await i().addDraftVSCodeSelectionAttachment(n,e,t);return}let r=`${Date.now()}-${Math.random().toString(36).slice(2)}`,a=ve(null),o=ye(a),s=`${a}\u0000${Xf(e,t.name)}`;if((i().attachmentBuckets[a]??[]).some(n=>n.source===`vscode`&&n.vscodeSource===`selection`&&n.filename===t.name&&n.vscodePath===e)||T.has(s))return;T.add(s);let c;try{c=await Zf(t)}catch{return}finally{T.delete(s)}if(o!==ye(a))return;let l={id:r,file:t,dataUrl:c,mimeType:t.type,filename:t.name,size:t.size,source:`vscode`,vscodePath:e,vscodeSource:`selection`};xe(a,e=>[...e,l])},addCodeSelectionAttachment:async(e,t,n)=>{let r=new File([n],t,{type:`text/plain`});await i().addVSCodeSelectionAttachment(e,r)},setActiveEditorFile:e=>{$f(i().activeEditorFile,e)||t({activeEditorFile:e})},addRestoredAttachment:({url:e,mimeType:t,filename:n})=>{let r=i().activeAttachmentDraft;if(r){if(e.startsWith(`data:`)){let a=R(r);(async()=>{try{let o=await(await fetch(e)).blob(),s=new File([o],n,{type:t||o.type||`application/octet-stream`}),c=i().activeAttachmentDraft;if(!c||R(c)!==a)return;await i().addDraftLocalAttachment(r,s)}catch{}})();return}if(!ie(e))return;i().addDraftDurableAttachment(r,{filename:n,mimeType:t,size:Qf(e),source:`local`,serverPath:e,url:e});return}let a={id:`restored-${Date.now()}-${Math.random().toString(36).slice(2)}`,file:new File([],n,{type:t}),dataUrl:e,mimeType:t,filename:n,size:Qf(e),source:`local`,serverPath:e};xe(ve(null),e=>[...e,a])}}})})(),rp=(e,t)=>{let n=new Map;for(let t of e){if(!t.parentID)continue;let e=n.get(t.parentID)??[];e.push(t.id),n.set(t.parentID,e)}let r=new Set([t]),i=[t];for(let e of i){let t=n.get(e);if(t)for(let e of t)r.has(e)||(r.add(e),i.push(e))}return r},ip=(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},ap=(e,t,n,r)=>{if(!n)return r;let i=rp(e,n);if(i.size===0)return r;let a=new Set,o=[];for(let e of i){let n=t[e];if(n)for(let e of n)a.has(e.id)||(a.add(e.id),o.push(e))}return o.length===0?r:o},op=`GitHub issue context (JSON)`,sp=`GitHub pull request context (JSON)`,cp=e=>!e||typeof e!=`object`?!1:!!e.synthetic,lp=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>cp(e)),up=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!cp(e)),n=e=>{if(!cp(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(op)||n.startsWith(sp)};return t&&e.some(e=>cp(e))?e.filter(e=>!cp(e)||n(e)):e},dp=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},fp=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,pp=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},mp=e=>e.replace(/\\/g,`/`),hp=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,gp=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}`}`),mp(n)}catch{return null}},_p=(e,t)=>{let n=hp(mp(e)),r=hp(mp(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},vp=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),yp=(e,t)=>{let n=mp(e),r=hp(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=_p(n,t);if(r!==null){let t=hp(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return vp(a)},bp=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},xp=(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},Sp=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},Cp=async(e,t={})=>{let n=t.createID??fe,r=t.directory??t.root??null,i=e.filter(e=>!cp(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(fp).join(`
|
|
456
|
-
`),l=[];for(let e of o){let t=Sp(e);t&&l.push(t)}for(let e of[...l].reverse())xp(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=xp(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:`)?gp(t):null;if(o){let e=yp(o,r),t=null;for(let n of e){let e=xp(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=pp(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 bp(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(dp(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}},wp=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 bp(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(dp(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}},Tp=e=>e?JSON.parse(JSON.stringify(e)):null,Ep=e=>e?{...e}:{},Dp=(e,t=np.getState())=>{let n=t.getDraft?.(e)??null,r=Ep(t.draftAttachmentViews?.[R(e)]);return{record:Tp(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},Op=async e=>{let t=e.input??np.getState(),n=Dp(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}},kp=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}}},Ap=async e=>{let t=e.input??np.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?kp({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},jp=(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},Mp=e=>e?.status===`committed`&&e.current===!0,Np=new Map,Pp=async(e,t)=>{let n=R(e),r=Np.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Np.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Np.get(n)===o&&Np.delete(n)}},Fp=(e,t)=>({key:e,addLocal:async n=>{await Pp(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Pp(e,async()=>{let r=t(),i=jp(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 Pp(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 Pp(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:Mp(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Pp(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Pp(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Pp(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Ip=4e4,Lp=0,Rp=null;function zp(e=Date.now()){Lp=e}function Bp(e){return Rp=e,()=>{Rp===e&&(Rp=null)}}function Vp(e){Rp?.(e)}function Hp(e=Date.now(),t=Ip){return Lp<=0?!1:e-Lp>=t}var Up=3e4,Wp=200,Gp=new Map;function Kp(e,t,n){return`${n?.transport??r()}\n${n?.generation??s()}\n${e.trim()}\n${t}`}function qp(e,t,n){if(!e||!t)return!1;let r=Gp.get(Kp(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Up}function Jp(e,t,n){if(!e||!t)return;let r=Kp(e,t,n);for(Gp.has(r)&&Gp.delete(r);Gp.size>=Wp;){let e=Gp.keys().next().value;if(typeof e!=`string`)break;Gp.delete(e)}Gp.set(r,n?.now??Date.now())}var Yp=768,Xp=()=>{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},Zp=()=>{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<=Yp&&Xp()?`mobile`:`desktop`},Qp=()=>Zp()===`mobile`,$p=3,em=2,tm=4,nm=4,rm=100,im=30;function am(){return l()?`relay`:`local`}function om(e=am()){return e===`relay`?em:$p}function sm(e=am()){return e===`relay`?nm:tm}function cm(e){return om(dm(e))}function lm(){return rm}function um(){return im}function dm(e){return e===`relay`||e===`local`?e:am()}var fm=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function pm(){return{pages:[],pageParams:[]}}function mm(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 hm(e){return{pages:Object.freeze(e.pages.map(mm)),pageParams:Object.freeze([...e.pageParams])}}function gm(e,t,n=fm){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 mm({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function _m(e){if(!e||e.pages.length===0)return Uo;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 vm(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=_m(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function ym(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function bm(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 mm({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:ym(t)}})}function xm(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 hm({pages:[bm(`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=bm(`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(Cm(i,o,s,a)),_.push(e.pageParams[r]??null)}return hm({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?Cm(t,r===`reconcile-page`?Sm(i,p):[...i,...p],s,a):Cm(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]=mm({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return hm({pages:m,pageParams:[...e.pageParams]})}function Sm(e,t){let n=e.slice();for(let e of t){let t=Wa(e),r=n.length;for(let e=0;e<n.length;e+=1)if(Ua(t,Wa(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function Cm(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&&wm(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||Em(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:mm({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:ym(t)}})}function wm(e,t){return e===t||e.id===t.id&&e===t}function Tm(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 Em(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!Tm(e[n],t[n]))return!1;return!0}function Dm(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Om(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 km(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=xm(e??pm(),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&&Em(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 hm({pages:e.pages.map((t,n)=>Cm(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function Am(e,t){let n=vm(e,t),r=_m(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 jm(e,t,n,r){if(!ps(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Am(e,t),o=Sa(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=Om(n),c=new Set;return s&&c.add(s),{data:km(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function Mm(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 Nm(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 Pm(e){return e?e.map(e=>e.id).filter(e=>typeof e==`string`):[]}function Fm(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Am(e,t),o=!1,s=0,c,l=new Set,u=Mm(e),d=Nm(e),f=Pm(i.message[t]);for(let e of n){if(!ps(e.type))continue;o=!0;let n=Sa(i,e),r=typeof n==`boolean`?n:n.changed,a=typeof n==`boolean`?void 0:n.materialization;if(a&&!c&&(c=a),!r)continue;let p=Om(e),m=Pm(i.message[t]),h=m.length!==f.length||m.some((e,t)=>e!==f[t]),g=h;if(p){let e=i.part[p],n=u.get(p);e&&n&&Em(n,e)?i.part[p]=[...n]:e?(g=!0,u.set(p,e)):n&&(g=!0,u.delete(p));let r=i.message[t]?.find(e=>e.id===p),a=d.get(p);if(!(r&&a&&a===r))if(r&&a&&wm(a,r)){let e=i.message[t];if(e){let t=e.findIndex(e=>e.id===p);t>=0&&(e[t]=a)}}else r?(g=!0,d.set(p,r)):a&&(g=!0,d.delete(p))}else g=!0;if(h){f=m;for(let e of i.message[t]??[])e?.id&&!d.has(e.id)&&d.set(e.id,e)}g&&(s+=1,p&&l.add(p))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:km(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function Im(e,t,n,r,i){let a=e&&e.pages.length>0?e:hm({pages:[bm(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=vm(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]:Dm(r)};return{data:hm({pages:a.pages.map((e,t)=>t===a.pages.length-1?Cm(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]?Cm(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 Lm(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:hm({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 Cm(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Rm(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=vm(e,t),i=Lo({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:_m(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=hm({pages:[bm(`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:_m(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=hm({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?Cm(t,Sm(r,l),o,a):Cm(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:_m(u)}}}function zm(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=Qo(vm(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:xm(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 jm(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Fm(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Im(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 Lm(e,n.messageID,t)}case`durable-seed`:return Rm(e,t,n);case`reset`:return n.page?zm(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 Bm(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 Vm(e,t,n,r=`materialize`){return zm(e,n,{type:`http-page`,purpose:r,page:Bm(t),liveRevision:t.sync.liveRevision}).data}function Hm(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return hm(t);if(t.pages.length===e.pages.length){let r=Km(e,t);if(r===e)return e;if(Gm(e,t)||Wm(e,t))return r;let i=t.pages[t.pages.length-1];return Vm(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return zm(e,n,{type:`http-page`,purpose:`prepend`,page:Bm(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Vm(e,r,n)??hm(t)}return hm(t)}function Um(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Wm(e,t){let n=Um(e),r=Um(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=qm(e,``),a=qm(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Gm(e,t){let n=Um(e);if(n.size===0)return!1;let r=Um(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=qm(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||Ua(Wa(t),Wa(n))>0)return!1}return!0}function Km(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,mm(t))});return!n&&e.pageParams.length===t.pageParams.length?e:hm({pages:r,pageParams:[...t.pageParams]})}function qm(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:_m(e),liveRevision:a}}var Jm=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Ym=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Xm=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Zm=e=>e.trim(),Qm=e=>e?.trim()||`tail`,$m=new Set([502,503,504]),eh=[`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 th(e){if(!e||e instanceof Jm||e instanceof Ym)return!1;if(e instanceof Xm)return e.status>=400&&e.status<500?!1:$m.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($m.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($m.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:eh.some(e=>n.includes(e))}function nh(e,t){return e>=2?!1:th(t)}var rh=(e,t=r(),n=s())=>[t,n,`sessionMessages`,`page`,Zm(e.directory),e.sessionID,e.limit,Qm(e.before)],ih=(e,t=r(),n=s())=>[t,n,`session-transcript`,Zm(e.directory),e.sessionID];function ah(e){if(!e||typeof e!=`object`)throw new Ym(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Ym(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Ym(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Ym(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Ym(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Ym(`session message page: cursor must be string when set`);return e}var oh=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}:{}})},sh=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw new Jm},ch=(e,t,n=r(),i={},a=(i.getGeneration??s)())=>{let o=Zm(e.directory),c=e.sessionID,l=e.limit,u=e.before?.trim()||void 0;return{queryKey:rh({directory:o,sessionID:c,limit:l,before:u},n,a),queryFn:async({signal:e})=>{sh(n,a,i);let r=await t({directory:o,sessionID:c,limit:l,before:u,signal:e});return sh(n,a,i),oh(ah(r))},staleTime:1/0,gcTime:3e5,retry:nh,retryDelay:e=>Math.min(500*2**e,4e3)}},lh=(e,t,n=L,i=r(),a={},o=(a.getGeneration??s)())=>n.fetchQuery(ch(e,t,i,a,o));function uh(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function dh(e){return oh({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function fh(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function ph(e){let t=Zm(e.directory),n=e.sessionID,i=e.transport??r(),a=e.probe??{},o=e.generation??(a.getGeneration??s)(),c=e.initialLimit??om(),l=e.historyLimit??sm(),u=e.client??L,d=ih({directory:t,sessionID:n},i,o),f=async t=>dh(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:d,queryFn:async e=>{sh(i,o,a);let r=e.pageParam?.trim()||void 0,s=r?l:c,d=r?`prepend`:`initial`,p=await lh({directory:t,sessionID:n,limit:s,before:r},f,u,i,a,o);sh(i,o,a);let m=uh(p);return gm(m,d===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:fh,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:nh,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>Hm(e,t,n)}}function mh(e){let t=e.client??L,n=ph({...e,client:t}),r=new Qe(t,{...n,structuralSharing:(t,n)=>Hm(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 hm(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return hm(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:hm(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return hm(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:hm(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function hh(e,t,n,r){let i=e.getQueryData(t),a=zm(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 gh(e,t=L,n=r(),i=s()){return t.getQueryData(ih(e,n,i))}function _h(){return v()||Qp()}function vh(){return v()?4:Qp()?12:40}var yh=1048576,bh=4*yh,xh=12*yh,Sh=40*yh;function Ch(){return v()?bh:Qp()?xh:Sh}var wh=e=>e.trim();function Th(e){return{transport:e.transport,generation:e.generation,directory:wh(e.directory),sessionID:e.sessionID}}function Eh(e){let t=Th(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function Dh(e){return`${e.transport}\n${e.generation}\n${wh(e.directory)}`}var Oh={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function kh(e,t,n){return[t,n,Oh.taskRoot,Oh.reconcileTaskKind,wh(e.directory),e.sessionID,e.checkpoint]}function Ah(e,t,n){return[t,n,Oh.checkpoint,wh(e.directory),e.sessionID]}function jh(e){let t=Th(e);return[{queryKey:ih({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,Oh.transportPageRoot,Oh.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Oh.taskRoot,Oh.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Oh.taskRoot,Oh.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:Ah({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function Mh(){let e=new Map;return{retain(t){let n=Th(t),r=Eh(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(Eh(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(Eh(t))?.count??0},clear(){e.clear()}}}function Nh(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Ph=3e4;function Fh(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function Ih(e){return!Array.isArray(e)||e.length<5||e[2]!==Oh.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 Lh(e){let t=e.client,n=e.activeRegistry??Mh(),r=e.counters??Nh(),i=e.getLimit??vh,a=e.now??Date.now,o=e.minResidencyMs??Ph,s=new Map,c=e=>{let t=Eh(Th(e));s.set(t,a())},l=e=>{let t=Eh(Th(e)),n=s.get(t);return n!==void 0&&a()-n<o},u=e=>{let r=Th(e);if(n.isRetained(r))return!0;let i=ih({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},d=e=>{let r=e?.directory===void 0?void 0:wh(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=Ih(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:Fh(a.state.data)})}return i},f=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},p=e=>{r.purgeSession+=1,s.delete(Eh(Th(e)));for(let t of jh(e))f(t)},m=(e,t)=>{r.purgeGeneration+=1;let n=[[e,t,Oh.canonical],[e,t,Oh.transportPageRoot,Oh.transportPageKind],[e,t,Oh.taskRoot],[e,t,Oh.checkpoint]];for(let e of n)f({queryKey:e})},h=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>Eh(Th(e)))),o=d({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=Dh(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let u=[];for(let e of c.values()){for(let t of e){let e=Eh(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(Eh(e.scope))||l(e.scope)));i.sort((e,t)=>e.dataUpdatedAt===t.dataUpdatedAt?e.scope.sessionID<t.scope.sessionID?-1:+(e.scope.sessionID>t.scope.sessionID):e.dataUpdatedAt-t.dataUpdatedAt);let o=e.length-i.length,c=e.length,d=0;for(;c>t&&d<i.length&&!(c-1<o);){let e=i[d];d+=1,p(e.scope),u.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:u}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:u,listCanonical:d,purgeSession:p,purgeGeneration:m,enforce:h,destructiveReset:async(e,t)=>{r.destructiveReset+=1,p(e);try{let n=await t();return h({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw p(e),t}},noteScopeObserved:c}}var Rh=3e4,zh=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function Bh(e,t=Rh){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 Vh=e=>e?e.toLowerCase().includes(`application/json`):!1,Hh=e=>e?e.toLowerCase().includes(`text/html`):!1;function Uh(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 Wh(e){let t=e.turns??sm(),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:Rh;return Bh((async()=>{let a=await F(n,{method:`GET`,query:r,signal:zh(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(Hh(o))throw Error(`session turn page: unexpected HTML response`);Vh(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Uh(s,t)})(),i)}async function Gh(e){let t=e.purpose===`prepend`&&e.before?sm():om();return Wh({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var Kh=3e4,qh=2,Jh=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),Yh=e=>e?e.toLowerCase().includes(`text/html`):!1,Xh=e=>new Promise(t=>{setTimeout(t,e)});function Zh(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Ym(`session transcript reconcile: ${t} must be string or null`);return e}function Qh(e){if(!e||typeof e!=`object`)throw new Ym(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Ym(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Ym(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Ym(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Ym(`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 Ym(`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 Ym(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=Zh(t.capturedHeadMessageID,`capturedHeadMessageID`),r=Zh(t.latestHeadMessageID,`latestHeadMessageID`),i=Zh(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Ym(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Ym(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Ym(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Ym(`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 Ym(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Ym(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Ym(`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 Ym(`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 $h(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 Ym(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function eg(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),Bh((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:Jh(e.signal,n)})}catch(e){throw e instanceof Jm||e instanceof Ym||e instanceof Xm||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new Xm(t.status,`session transcript reconcile failed (${t.status})`);if(Yh(t.headers.get(`content-type`)))throw new Ym(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Ym(`session transcript reconcile: malformed JSON`)}return Qh(a)})(),n)}async function tg(e){let t=$h(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:Kh,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):qh,i=e.sleep??Xh,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await eg(e,t,n)}catch(t){if(t instanceof Jm||t instanceof Ym||t instanceof Xm&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!th(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var ng=`GitHub issue context (JSON)`,rg=`GitHub pull request context (JSON)`,ig=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,ag=(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}},og=e=>{let t=ag(e,ng);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!ig(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=ag(e,rg);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!ig(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},sg=(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`))},cg=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),lg=e=>e.trim()===`/compact`,ug=(e,t)=>{let n=t?.planModeEnabled===!0;return e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(cg(t)||lg(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 sg(t,n)||r.startsWith(ng)||r.startsWith(rg)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=og(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},dg=e=>e?.length?ug(e).length>0:!1,fg=`oc_asst_session_divider:`,pg=[],mg=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),hg=(e,t=0)=>({info:{id:`${fg}${e}`,role:`system`,time:{created:t}},parts:[]}),gg=e=>e.slice().reverse().flatMap(e=>e.entries),_g=(e,t,n=pg)=>{if(!e.length)return pg;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(hg(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?pg:Sg(n,r)?n:r},vg=(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},yg=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=vg(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 dg(e.parts)?e:dg(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}:{}}},bg=(e,t,n,r=pg)=>{if(!t)return n.length>0?Array.from(n):pg;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:yg(e,t?.message),order:t?.order??a++})}if(i.size===0)return pg;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 Sg(r,o)?r:o},xg=(e,t)=>{if(!mg(e)||!mg(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},Sg=(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||xg(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},Cg=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),wg=e=>e.startsWith(fg);function Tg(e,t){if(!e?.id||wg(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(Cg(t,`subtask`)||Cg(t,`compaction`)||t.every(e=>cp(e))):!1}function Eg(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(Tg(r,i))return n}return null}function Dg(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function Og(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:Eg(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:Dg(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function kg(e,t){return{...e,...t}}function Ag(e,t){let n=Ah({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 jg(e,t){let n=Ah({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function Mg(e,t){let n=Ah({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}var Ng=()=>typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0||window.location.protocol===`capacitor:`,Pg=()=>{if(typeof window>`u`||!Ng()||Fg()!==`ios`)return!1;let e=navigator.userAgent||``,t=navigator.maxTouchPoints??0;return/iPad/i.test(e)||/Macintosh|MacIntel/i.test(e)&&t>1},Fg=()=>{if(typeof window<`u`){let e=window.Capacitor?.getPlatform?.();if(e===`ios`||e===`android`)return e}return v()?`vscode`:se()?`desktop`:`web`};function Ig(e){return e.slim===!0}var Lg=/bearer|token|authorization|password|secret|cookie/i;function Rg(e){return typeof e==`string`&&e.includes(`-`)}var zg=`openchamber.client-diagnostics.enabled`;function Bg(e){return e===`true`||e!==`false`&&null}function Vg(e){return e.preference===!0||e.preference!==!1&&Rg(e.version)}function Hg(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function Ug(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function Wg(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 Gg(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return Lg.test(t)?`redacted-error`:t}function Kg(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)Ig(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function qg(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function Jg(e){let t=0;for(let n of e.messageOrder)o_(e.messagesByID[n])===!0&&(t+=1);return t}function Yg(e){let t=e.transcript?Kg(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:qg(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:Jg(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...Gg(e.error??e.request?.error)?{error:Gg(e.error??e.request?.error)}:{},...Wg(e.error)===void 0?{}:{httpStatus:Wg(e.error)}}}function Xg(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 Zg(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 Qg(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return e.event.type===`message.part.delta`?null:`sse-event`;case`sse-event-batch`:return`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function $g(e){if(e.type===`http-page`)return e.purpose}function e_(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function t_(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 n_(e){return e.__openchamberOptimistic===!0}function r_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function i_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var a_=e=>typeof e==`string`&&e.trim().length>0;function o_(e){if(!e||r_(e)!==`assistant`)return;let t=e,n=!a_(t.mode)&&!a_(t.agent),r=!a_(t.modelID)||!a_(t.providerID);return n||r}function s_(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function c_(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)Ig(e)?r+=1:i+=1,n_(e)&&(a=!0);let o=e.messagesByID[t],s=r_(o),c=o_(o);return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:i_(o),...s?{role:s}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function l_(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:s_(e),after:s_(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 u_(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:l_(e.before,e.after),...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.purpose?{purpose:e.purpose}:{}}}var d_=`openchamber-transcript-diagnostics`,f_=`events`,p_=1,m_=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),h_=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,p_);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(f_)||e.createObjectStore(f_,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),g_=(e=d_)=>({async append(t,n){let r=await h_(e);try{let e=r.transaction(f_,`readwrite`).objectStore(f_);await m_(e.add(t));let i=await m_(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await m_(e.delete(t))}finally{r.close()}},async read(){let t=await h_(e);try{return await m_(t.transaction(f_,`readonly`).objectStore(f_).getAll())}finally{t.close()}},async clear(){let t=await h_(e);try{await m_(t.transaction(f_,`readwrite`).objectStore(f_).clear())}finally{t.close()}}});function __(e={}){let t=e.driver??g_(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var v_=Je(`OpenChamberMedia`);function y_(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function b_(){return Ng()&&Ye!==void 0&&Ye.isPluginAvailable(`OpenChamberMedia`)}function x_(){return`1.17.1-beta.12`}function S_(){if(typeof localStorage>`u`)return null;try{return Bg(localStorage.getItem(zg))}catch{return null}}function C_(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(zg,e?`true`:`false`)}catch{}}function w_(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var T_;function E_(e=x_()){return Vg({version:e,preference:S_()})}function D_(e={}){return Zg({sink:w_()===`indexeddb`?(e.createIndexedDBSink??__)():(e.createMemorySink??Xg)(),isEnabled:e.isEnabled??E_})}function O_(){return T_??=D_(),T_}function k_(e){O_().record(e)}function A_(e){try{return E_()?c_(e()):void 0}catch{return}}function j_(e){try{k_(u_(e))}catch{}}function M_(e){let t=Qg(e.command);t&&k_(Yg({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:$g(e.command),sseType:e_(e.command),source:t_(e.command),error:e.error}))}async function N_(){let e=await O_().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 P_(e,t=Hg()){if(b_())return(await v_.saveFile({dataBase64:y_(e),mimeType:`application/json`,filename:t}))?.cancelled?`cancelled`:`saved`;if(typeof document>`u`)return`failed`;let n=new Blob([e],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);return i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),`downloaded`}async function F_(){let e=await N_(),t=Hg();return{content:e,fileName:t,outcome:await P_(e,t),eventCount:Ug(e)}}function I_(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 L_=2,R_=6e4;function z_(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??r)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??s)()}}function B_(e,t){let n=(t.probe?.getTransport??r)(),i=(t.probe?.getGeneration??s)();if(n!==e.transport||i!==e.generation)throw new Jm}function V_(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function H_(e,t){return Th({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function U_(e,t){return`${e.trim()}\n${t}`}function W_(e){let t=e.client,n=e.repository,i=e.cacheBudget??n.getCacheBudget?.()??Lh({client:t,activeRegistry:Mh()}),a=Math.max(1,Math.floor(e.directoryConcurrency??L_)),o=e.fetchReconcile??tg,c=e.now??Date.now,l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,h=new Set,g=new Map,_=new Set,v=(e,t)=>{h.add(U_(e,t))},y=(e,t)=>{h.delete(U_(e,t))},b=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},x=e=>{u+=1;for(let e of[...f.keys()])b(e);p.clear(),m.clear()},S=(e,t)=>{let n=t===void 0?void 0:t.trim(),r=new Map;for(let t of i.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&r.set(U_(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of i.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&r.set(U_(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(r.values())},C=(t,n)=>{let r=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of i.listCanonical({transport:t.transport,generation:t.generation}))r.add(e.scope.directory);for(let e of i.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&r.add(e.directory);for(let e of n)e.directory&&r.add(e.directory.trim());return r},w=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=U_(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},T=r=>{if(l)return;let a={transport:r.transport??z_(e).transport,generation:r.generation??z_(e).generation},o=c(),s=w(),u=C(a,s),d=i.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(U_(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of i.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(U_(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of s)f.set(U_(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(U_(t,n),{directory:t,sessionID:n});for(let e of f.values()){let i=V_(e,a),s=n.getTranscript(i),c=Og({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:r.lastEventID,capturedAt:o});jg(t,c)}let p=new Set;for(let t of u){let n=I_({directory:t,activeScopes:S(a,t),viewedSessions:s,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(U_(e.directory,e.sessionID))}for(let e of d){let t=U_(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=A_(()=>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=A_(()=>n.getTranscript(e));i&&t&&j_({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},D=async(r,i,a)=>{if(B_({transport:i.transport,generation:i.generation},e),a!==u)throw new Jm;jg(t,kg(Ag(t,i)??Og({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=A_(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),B_({transport:i.transport,generation:i.generation},e),a!==u)throw new Jm;Mg(t,i),y(i.directory,i.sessionID);try{let e=A_(()=>n.getTranscript(r));o&&e&&j_({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw jg(t,kg(Ag(t,i)??Og({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},O=async(r,i,a)=>{if(B_({transport:i.transport,generation:i.generation},e),a!==u)throw new Jm;jg(t,kg(Ag(t,i)??Og({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=A_(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),B_({transport:i.transport,generation:i.generation},e),a!==u)throw new Jm;Mg(t,i),y(i.directory,i.sessionID);try{let e=A_(()=>n.getTranscript(r));o&&e&&j_({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 jg(t,kg(Ag(t,i)??Og({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},k=async(r,i,a,s)=>{let l=V_(r,i),d=H_(r,i),f=kh({directory:d.directory,sessionID:d.sessionID,checkpoint:String(Ag(t,d)?.capturedAt??c())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:c()});try{if(B_(i,e),a!==u||s.aborted)throw new Jm;let p=Ag(t,d);if(p||(p=Og({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(l),lastEventID:null,capturedAt:c()}),jg(t,p)),!p.anchorMessageID){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}p=kg(p,{state:`reconciling`}),jg(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,B_(i,e),a!==u||s.aborted)throw new Jm;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,B_(i,e),a!==u||s.aborted)throw new Jm;let h=n.getTranscript(l).liveRevision;if(!g&&!m){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}let y=await o({sessionID:r.sessionID,directory:r.directory.trim(),...g?{continuation:g}:{anchor:m},signal:s});if(B_(i,e),a!==u||s.aborted)throw new Jm;if(y.resetRequired){await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()});return}if(b===1&&(_=y.capturedHeadMessageID),v=y.latestHeadMessageID??v,y.records.length>0&&E(l,y,h),p=kg(Ag(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),jg(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=kg(Ag(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),jg(t,p);continue}p=kg(Ag(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),jg(t,p),y(r.directory,r.sessionID),t.setQueryData(f,{status:`complete`,finishedAt:c()});return}await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()})}catch(n){if(n instanceof Jm||n instanceof Error&&n.name===`AbortError`){t.setQueryData(f,{status:`cancelled`,finishedAt:c()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(f,{status:`error`,finishedAt:c(),code:n instanceof Error?n.name:`error`}),n}},A=t=>{let n=t.trim(),r=m.get(n)??0;if(r>=a)return;let i=p.get(n);if(!i||i.length===0)return;let o=i.shift();m.set(n,r+1);let s=U_(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),A(n);return}let c=z_(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{try{await k(o,c,l,h.signal)}catch{}finally{f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),A(n)}})();d.set(s,g)},j=e=>{let t=e.directory.trim(),n=U_(t,e.sessionID);if(d.has(n))return;let r=p.get(t);r||(r=[],p.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),A(t))},ee=t=>{let n=w(),r=C(t,n);for(let a of r){let r=I_({directory:a,activeScopes:S(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of r)j(e);for(let e of i.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=U_(e.scope.directory,e.scope.sessionID);r.some(e=>U_(e.directory,e.sessionID)===t)||v(e.scope.directory,e.scope.sessionID)}}},te=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??r)(),generation:t.runtimeGeneration},i=(e.probe?.getGeneration??s)(),a=(e.probe?.getTransport??r)();if(i!==n.generation||a!==n.transport){x(`generation_mismatch`);return}ee(n)},M=t=>{if(l)return;let r=t.directory.trim(),i=z_(e,t),a=V_({directory:r,sessionID:t.sessionID},i),s=Eh(H_({directory:r,sessionID:t.sessionID},i)),u=g.get(s);if(u&&c()-u.checkedAt<R_||_.has(s)||d.has(U_(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(_.add(s),(async()=>{try{if(B_(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(B_(i,e),l||(g.set(s,{checkedAt:c()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;E(a,u,d)}catch{}finally{_.delete(s)}})())};return{captureCheckpoints:T,onCompensation:te,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=U_(i,r.sessionID);if(!h.has(a))return M(r),null;y(i,r.sessionID);let o=z_(e,r),s=V_({directory:i,sessionID:r.sessionID},o),c=H_({directory:i,sessionID:r.sessionID},o),u=Ag(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){j({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{B_(o,e);let r=await n.ensureInitial(s);return Mg(t,c),r}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:x,getCheckpoint:n=>{let r=z_(e,n);return Ag(t,H_({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(U_(e,t)),destroy:()=>{l=!0,x(`destroy`)}}}function G_(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function K_(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 q_(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 J_(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(Ba(e))??Promise.resolve(),r.get(Ha(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=Ba(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=Ha(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??Ch)();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 Y_=new Map;function X_(e,t){let n=Y_.get(e);if(n)return n;let r=t().finally(()=>{Y_.get(e)===r&&Y_.delete(e)});return Y_.set(e,r),r}var Z_=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Q_(e){return X_(Z_(e),e.request)}function $_(e,t){return`${e}\n${t}`}var ev=new Map;function tv(e){return ev.get(e)}async function nv(e){return Q_({runtimeKey:$_(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 ev.set(r.id,i),{info:Wu(r),parts:i}}})}function rv(e,t){let n=e.info;return n.role===t||n.clientRole===t}function iv(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!rv(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 av(e){if(e.complete){let t=e.records.some(e=>rv(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=iv(e.records);if(t.length===0){let t=e.records.some(e=>rv(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=>rv(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function ov(e){return e.trim()}function sv(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??r)(),i=e.generation??t.generation??(t.probe?.getGeneration??s)();return{directory:ov(e.directory),sessionID:e.sessionID,transport:n,generation:i}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function cv(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:Uo,liveRevision:0}}function lv(e,t){if(!e||e.pages.length===0)return cv(t);let n=qm(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function uv(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function dv(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function fv(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=uv(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=uv(e.messagesByID[t]);a===void 0||a<=n||dv(e.partsByMessageID[t])||i.push(t)}return i}function pv(e={}){let t=e.client??L,n=e.cacheBudget??Lh({client:t,activeRegistry:e.activeRegistry??Mh()}),i=n.activeRegistry,a=new Map,o=new Map,c=new Map,l=new Map,u=new Map,d=e.durableStore?J_(e.durableStore,{getProtectScopes:()=>i.listRetained().map(G_),getByteBudget:e.getDurableByteBudget}):void 0,f=new Map,p=new Map,m=new Map,h=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=lv(w(e),t.sessionID);!cs(r)&&!v.has(n)||(y.add(n),k_(Yg({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=u.get(e);return t||(t={messages:new Map,parts:new Map},u.set(e,t)),t},w=n=>{let r=sv(n,e);return gh({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=sv(t,e);return ih({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=sv(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let i=e.probe??{getTransport:r,getGeneration:s},o=sv(n,{...e,transport:void 0,generation:void 0,probe:i}),c=K(o),l=a.get(c);if(l)return l;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let u=mh({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:i,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(c,u),u},k=t=>{let n=K(sv(t,e));u.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(sv(n,e));if(c.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});c.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=c.get(e);n&&(n(),c.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of m.keys())t.startsWith(e)&&m.delete(t);for(let t of h.keys())t.startsWith(e)&&h.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of m)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of h.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=sv({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{d&&d.persistSettled(G_(e),t,n??[])},le=(e,t,n,r)=>{if(!d||S>0||!r.applied||!r.changed)return;let i=G_(t);if(n.type===`remove-message`){d.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(d.clearSession(i),n.page){let r=lv(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=lv(w(e),t.sessionID);for(let e of r){let n=q_(e);if(n.action===`remove`){d.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=lv(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,i)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:r,getGeneration:s},c={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??om()};return K_(i?.fresh?await t.fetchQuery({...ch(c,a,n.transport,o,n.generation),staleTime:0}):await lh(c,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)Ks(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now();f.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return f.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Jp(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(!ns(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),m.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Jm||!se(t))return f.delete(r),P.getTranscript(e);throw f.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),k_(Yg({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:lv(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{p.delete(r)}})();return p.set(r,a),a},fe=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;f.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return f.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||Rs(t.sessionID,t.directory)?(f.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Jp(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return f.delete(r),n instanceof Jm||!se(t)||k_(Yg({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:lv(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{p.delete(r)}})();return p.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(sv(t,e)))?!0:_m(n).kind===`unknown`},P={getTranscript(t){let n=sv(t,e),r=K(n),i=lv(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=sv(t,e),r=K(n),i=P.getTranscript(t);return te(r,us(n.sessionID,i.boundary))},getRequestState(t){let n=sv(t,e),r=f.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=sv(t,e),r=K(n),i=P.getTranscript(t);cs(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:ls({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:as(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(sv(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(sv(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??mv,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=sv(t,e),i=m.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||ts(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=sv(t,e),i=M(r,n),a=A_(()=>P.getTranscript(t)),o=e=>{try{let t=A_(e);if(!a||!t)return;j_({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=h.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return m.set(i,{status:`idle`}),P.getTranscript(t);if(!ts(P.getParts(t,n))&&!g.get(K(r))?.has(n))return m.set(i,{status:`ready`}),P.getTranscript(t);m.set(i,{status:`loading`}),k(t);try{let a=await nv({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return B.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return se(r)?(P.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),ts(P.getParts(t,n))?m.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):m.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(m.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return m.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return m.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return h.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{h.get(i)===c&&h.delete(i)}),c},apply(r,i){let a=sv(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=hh(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=hh(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=hh(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=hh(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}),hh(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=hh(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=hh(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 hv(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=hh(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&&(M_({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:lv(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error}),x(r,a)),s},subscribe(t,r){let a=K(sv(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);l.set(a,i.retain(e)),n.noteScopeObserved(e)}return s.add(r),A(t),()=>{let e=o.get(a);if(e){if(e.delete(r),e.size===0){let e=l.get(a);e&&(e(),l.delete(a))}j(a)}}},async ensureInitial(t){let r=sv(t,e),a=K(r);if(d&&await d.wait(G_(r)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(G_(r));if(se(r)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)ns(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){k_(Yg({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,r);return k_(Yg({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!i.isRetained(E(t))){let e=Date.now(),n=await fe(t,r);return k_(Yg({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;f.delete(a);try{await s.ensureInitial()}catch(e){throw k_(Yg({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:lv(w(t),r.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}f.delete(a),l||Jp(r.directory,r.sessionID,{transport:r.transport,generation:r.generation}),n.noteScopeObserved(E(t)),D(t);let u=P.getTranscript(t);return k_(Yg({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:u,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),u},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),_m(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=sv(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 k_(Yg({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 k_(Yg({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=sv(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=sv(t,e),i=A_(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??om(),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=fv(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=A_(()=>c);i&&e&&j_({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=A_(()=>P.getTranscript(t)),i=E(t);return d&&await d.clearSession(G_(sv(t,e))),n.destructiveReset(i,async()=>{let n=sv(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),u.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=A_(()=>s);r&&e&&j_({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(sv(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),u.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),u.delete(n);let e=l.get(n);e&&(e(),l.delete(n));let t=c.get(n);t&&(t(),c.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),d&&d.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of c.values())e();c.clear();for(let e of l.values())e();l.clear(),o.clear(),u.clear(),f.clear(),p.clear(),m.clear(),h.clear(),g.clear(),v.clear(),y.clear(),b.clear()}};return P}var mv=Object.freeze([]);function hv(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=hh(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var gv=`/api/openchamber/transcript-cache`,_v=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),vv=e=>typeof e==`object`&&!!e&&!Array.isArray(e),yv=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},bv=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},xv=e=>{if(!vv(e))throw Error(`Invalid transcript cache scope`);return{transport:yv(e.transport,`scope`),generation:bv(e.generation,`scope`),directory:yv(e.directory,`scope`),sessionID:yv(e.sessionID,`scope`)}},Sv=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},Cv=e=>{if(!vv(e)||!vv(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!vv(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:xv(e.scope),messageID:yv(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>Sv(e,`part completeness`)),completeness:Sv(e.completeness,`completeness`),contentHash:yv(e.contentHash,`content hash`),byteSize:bv(e.byteSize,`byte size`),lastAccessedAt:bv(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:bv(e.sortKey.created,`sort key`),messageID:yv(e.sortKey.messageID,`sort key`)}}},wv=(e,t)=>{if(!vv(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(Cv);return{scope:e.scope===void 0?to(t):xv(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},Tv=e=>{if(!vv(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:Cv(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!_v.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:Cv(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Ev=e=>{if(!vv(e))throw Error(`Invalid transcript cache evict`);return{evicted:bv(e.evicted,`evict`),freedBytes:bv(e.freedBytes,`evict`),remainingBytes:bv(e.remainingBytes,`evict`)}},Dv=e=>({scope:to(e),records:[],byteSize:0}),Ov=(e,t)=>vv(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,kv=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`)}},Av=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 kv(r)};let i=await kv(r).catch(()=>void 0);throw Error(Ov(i,`Transcript cache request failed (${r.status})`))},jv=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Mv=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Nv(e={}){let t=e.fetch??F;return{async readSession(e){let n=await Av(t,`${gv}/session`,{method:`GET`,query:jv(e)});return n.kind===`disabled`||n.kind===`not-found`?Dv(e):wv(n.payload,e)},async readMessage(e,n){let r=await Av(t,`${gv}/message`,{method:`GET`,query:{...jv(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!vv(r.payload))throw Error(`Invalid transcript cache record`);return Cv(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Av(t,`${gv}/message`,Mv(`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 Tv(i.payload)},async removeMessage(e,n){let r=await Av(t,`${gv}/message`,Mv(`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 Av(t,`${gv}/session`,Mv(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Av(t,`${gv}/generation`,Mv(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Av(t,`${gv}/evict`,Mv(`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 Ev(r.payload)},async clearAll(){let e=await Av(t,`${gv}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Pv=`openchamber-transcript-durable`,Fv=1,Iv=`transcriptIndex`,Lv=`transcriptContent`,Rv=class extends Error{code;constructor(e){super(e),this.code=e}},zv=e=>({id:Va(e.scope,e.messageID),scope:to(e.scope),scopeKey:Ba(e.scope),generationKey:Ha(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}),Bv=(e,t)=>({scope:to(e.scope),messageID:e.messageID,info:eo(t.info),parts:eo(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}}),Vv=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Bv(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Hv=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},Uv=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Wv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Rv(`database-unavailable`));return}let r=indexedDB.open(e,Fv),i=!1,a=()=>{i||(i=!0,n(new Rv(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Iv)){let t=e.createObjectStore(Iv,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Lv)||e.createObjectStore(Lv,{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}),Gv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Rv(`database-unavailable`)),r.onblocked=()=>void 0}),Kv=(e=Pv)=>({transaction:async t=>{let n=await Wv(e),r=n.transaction([Iv,Lv],`readwrite`),i=r.objectStore(Iv),a=r.objectStore(Lv),o=e=>Uv(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:()=>Gv(e)});function qv(e,t={}){let n=no(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(zv(t)),ro(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(Ba(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Bv(t,r);a.lastAccessedAt=n(),await e.putIndex(zv(a)),i.push(a)}return io(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Vv(e,Va(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=ao({info:i,incomingCompleteness:qa(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=eo(a.slice()),c=qa(s),l=await Xa(i,s),u=Va(t,i.id);return e.transaction(async e=>{let a=await Vv(e,u),o=ao({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:ro(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:to(t),messageID:i.id,info:eo(i),parts:s,partCompleteness:s.map(Ka),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:Wa(i)};return await e.putIndex(zv(d)),await e.putContent({id:u,info:eo(i),parts:s}),{status:`written`,record:ro(d)}})},async removeMessage(t,n){await e.transaction(e=>Hv(e,Va(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(Ba(t));for(let t of n)await Hv(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(Ha(t));for(let t of n)await Hv(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(Ba)),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?Ua(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Hv(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 Jv(e={}){return qv(e.driver??Kv(e.databaseName),e)}function Yv(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??Ng;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Xv=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Zv(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Nv)(),t),i=()=>(n??=(e.createIndexedDBStore??Jv)(),n),a=()=>Yv(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=>Xv([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Qv(e={}){await Zv(e).clearAll()}var $v=(e,t)=>e<t?-1:+(e>t);function ey(e){return e.filter(e=>!!e?.id).sort((e,t)=>$v(e.id,t.id))}async function ty(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,i=await Gh({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=i.records.map(e=>({info:Wu(e.info),parts:ey(e.parts??[])}));if(!e.before&&!i.complete&&iv(a).length>0){let t=B.getScopedSdkClient(e.directory);a=(await av({records:a,complete:i.complete,requestMessage:async n=>{let i=await nv({transport:r(),generation:s(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:i.info,parts:ey(i.parts??[])}}})).records.map(e=>({info:e.info,parts:ey(e.parts??[])}))}return{records:a,cursor:i.cursor??void 0,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:e.limit}}function ny(e){let t=e.client??L,n=Mh(),i=Lh({client:t,activeRegistry:n}),a=pv({client:t,cacheBudget:i,activeRegistry:n,probe:{getTransport:r,getGeneration:s},fetcher:e=>ty({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:om(),historyLimit:sm(),durableStore:e.durableStore??Zv()}),o=W_({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:i,probe:{getTransport:r,getGeneration:s}});return ec(a),mc(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),mc(null),a.destroy(),tc()}}}function ry(e){return nc().apply(U(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var iy=new Map;function ay(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function oy(e,t,n,i={}){let a=i.getTransportIdentity??r,o=i.getGeneration??s,c=a(),l=o(),u=ay(e,t,c,l),d=()=>a()===c&&o()===l,f=iy.get(u)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=f.catch(()=>void 0).then(()=>m);iy.set(u,h);try{if(await f.catch(()=>void 0),!d())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:c,generation:l,isCurrent:d})}finally{p(),iy.get(u)===h&&iy.delete(u)}}var sy=new Set,cy=new Set,ly=new Set,uy=new Set,dy={onDeleteRequest(e){return sy.add(e),()=>{sy.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||sy.forEach(t=>t(e))},onCreateRequest(e){return cy.add(e),()=>{cy.delete(e)}},requestCreate(e){let t=e??{};cy.forEach(e=>e(t))},onDirectoryRequest(e){return ly.add(e),()=>{ly.delete(e)}},requestDirectoryDialog(){ly.forEach(e=>e())},onGitRefreshHint(e){return uy.add(e),()=>{uy.delete(e)}},requestGitRefresh(e){e.directory.trim()&&uy.forEach(t=>t(e))}},fy=e=>e.trim(),py=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session status runtime changed`)},my=(e,t={})=>{let n=fy(e),i=t.transport??r(),a=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,c=t.runtimeProbe??{},l=(c.getGeneration??s)();return et({queryKey:N.sessionStatus.snapshot(n,i),queryFn:async({signal:e})=>{py(i,l,c);let t=o(),r=await a(n,e);if(py(i,l,c),r===null)throw Error(`session status snapshot unavailable`);return{snapshot:r,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},hy=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(my(e,r))},gy=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session active runtime changed`)},_y=(e={})=>{let t=e.transport??r(),n=e.loadActive??(e=>B.getSessionActive(e)),i=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??s)();return et({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{gy(t,o,a);let r=i(),s=await n(e);return gy(t,o,a),{result:s,requestedAt:r}},staleTime:0,gcTime:3e5,retry:!1})},vy=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(_y(n))},yy;function by(e){yy=e}function xy(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 Sy(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Cy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function wy(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 Ty(e,t,n,r=Date.now()){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let i=e.membership,a=t??{},o=new Set([...n,...Object.keys(a)]);if(o.size===0)return{snapshot:null,source:`none`};let s={};for(let e of o){let t=Object.prototype.hasOwnProperty.call(i,e),n=xy(a[e]);if(t){s[e]=n&&Cy(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function Ey(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=xy(t[o]);if(n&&n.type!==`idle`){Sy(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 Dy(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Oy(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 hy(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 vy({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}=Ty(l,h,n);if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=Dy(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Ey(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??yy;if(S){let n=t.getState().session_status??{},r={};for(let e of x){let t=n[e];t&&t.type!==`idle`&&(r[e]={type:t.type})}S(e,r,x)}return _}async function ky({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:Oy(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var Ay=50,jy=e=>{let t=Object.keys(e);if(t.length<=Ay)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Ay).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},My=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:jy(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:h(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),Ny=new Set([`todowrite`,`todoread`]),Py=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),Fy=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Iy=(e,t)=>{My.getState().setSessionTodos(e,t)},Ly=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Ry=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},zy=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},By=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=zy(n);e&&t.push(e)}return t},Vy=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return By(t);if(t&&typeof t==`object`)return By(t.todos)}catch{}return[]},Hy=e=>{if(!Ny.has(Ly(e)))return[];let t=Ry(e);if(t&&Py.has(t))return[];let n=e.state,r=By(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=By(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=By(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?Vy(i):[]};function Uy(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=Hy(r[e]);if(t.length>0)return t}}return[]}function Wy(e){if(!e.sessionID||e.isStale?.()||Fy(e.store.getState().todo,e.sessionID))return!1;let t=Uy(e.transcript);return t.length===0||e.isStale?.()||Fy(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Gy(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(U(e.directory,e.sessionID));return t?Wy({sessionID:e.sessionID,store:e.store,transcript:t,persist:Iy,isStale:e.isStale}):!1}var Ky=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>Gx,COMBINED_SEND_PRESENCE_GRACE_MS:()=>Wx,SESSION_DELETE_UNDO_MS:()=>hx,abortBusySessionForMessageEdit:()=>aS,abortCurrentOperation:()=>Xx,archiveSession:()=>Tx,beginOptimisticSend:()=>Fx,cancelScheduledSessionDeletes:()=>wx,classifySendFailure:()=>zb,combinedSendConfirmationOptions:()=>Kx,commitMessageEdit:()=>sS,createSession:()=>lx,deleteSession:()=>Sx,dirStoreForDirectory:()=>wb,dismissOpenQuestionsForSession:()=>eS,ensureSentUserMessagePresence:()=>Yx,fetchMessagesForSession:()=>pS,fetchRecentSendConfirmationRecords:()=>Hx,forkSession:()=>dS,getSendFailureKind:()=>Lb,getSessionLastAssistantModel:()=>Ab,isQuestionRequestNotFoundError:()=>ox,materializeConfirmedSendRecords:()=>Ux,mirrorSessionIntoLiveStores:()=>Mb,optimisticInsertUserMessage:()=>Bx,optimisticSend:()=>zx,patchSessionMetadata:()=>ux,refetchSessionMessages:()=>lS,rejectQuestion:()=>$x,releaseUnconfirmedQueueSend:()=>xb,requestSessionSmartTitle:()=>Ox,resolveForkMessageId:()=>ab,respondToPermission:()=>Zx,respondToQuestion:()=>Qx,revertToMessage:()=>tS,rollbackOptimisticSend:()=>Lx,scheduleSessionDeletes:()=>Cx,setActionRefs:()=>yb,setOptimisticRefs:()=>bb,settleOptimisticSend:()=>Rx,shareSession:()=>kx,shouldSuppressForkCopyEvent:()=>sb,stageMessageEdit:()=>rS,trackForkCopySessionCreated:()=>tb,unarchiveSession:()=>Ex,unrevertSession:()=>uS,unshareSession:()=>Ax,updateSessionTitle:()=>Dx,waitForConnectionOrThrow:()=>Ub,waitForSessionIdleForMessageEdit:()=>oS}),qy=2,Jy=150,Yy=new Set([`patch`,`step-start`,`step-finish`]),Xy=3,Zy=150,Qy=null,$y=new Map,eb=3e4;function tb(e,t){let n=t?.id;!Qy||Qy.runtimeKey!==i()||Qy.directory!==e||!n||t?.title!==Qy.expectedTargetTitle||n===Qy.sourceSessionID||Qy.targetSessionID||(Qy.targetSessionID=n)}function nb(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function rb(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function ib(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function ab(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!n||n.type===`idle`)return e;for(let e=t.length-1;e>=0;--e)if(t[e]?.role===`user`)return t[e].id}async function ob(e,t){let n=vd(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return B.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function sb(e,t,n){if(Qy&&Qy.runtimeKey===i()&&Qy.directory===e&&t&&t===Qy.targetSessionID)return!0;if(!t||!n)return!1;let r=`${i()}:${e}:${t}`,a=$y.get(r);return a?a.expiresAt<=Date.now()?($y.delete(r),!1):n<=a.messageID:!1}var cb=null,lb=null,ub=()=>``,db=new Map,fb=null,pb=null,mb=null,hb=e=>new Promise(t=>setTimeout(t,e));function gb(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 _b(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${gb(e.error)}`);throw n!==void 0&&(r.status=n),r}function vb(e,t){let n=_b(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function yb(e,t,n){if(cb=e,lb=t,ub=n,db.size>0){let e=[...db.values()];db.clear(),queueMicrotask(()=>{for(let t of e)pS(t.sessionID,t.directory)})}}function bb(e,t,n){fb=e,pb=t,mb=n??null}function xb(e){let t=e.directory??null;pb?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Sb(){if(!cb)throw Error(`SDK not initialized — is SyncProvider mounted?`);return cb}function Cb(){if(!lb)throw Error(`Child stores not initialized`);let e=ub();if(!e)throw Error(`No current directory`);return lb.ensureChild(e)}function wb(e,t){if(!lb)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return lb.ensureChild(e,t)}function Tb(e,t){let n=t??Yb(e);return n?{store:wb(n),directory:n}:{store:Cb(),directory:Nb()}}function Eb(e,t){let{store:n,directory:r}=Tb(e,t??void 0),i=r??Nb()??``;return{repository:H()??rc(i,n),directory:i,store:n}}function Db(e,t){let{repository:n,directory:r,store:i}=Eb(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function Ob(e,t){return kc(Db(e,t).data)}function kb(e,t){return Db(e,t).data.messageOrder.length}function Ab(e){try{let t=Ob(e);for(let e=t.length-1;e>=0;--e){let n=t[e];if(n?.role===`assistant`&&typeof n.providerID==`string`&&n.providerID&&typeof n.modelID==`string`&&n.modelID)return{providerID:n.providerID,modelID:n.modelID}}return null}catch{return null}}function jb(e,t){let n=lb;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]=Yw(e,n[r]),t.setState({session:i}),!0}return!1}function Mb(e,t){t&&jb(e,t)||jb(e)}function Nb(){return ub()||void 0}function Pb(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function Fb(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 Ib=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 Lb(e){return e instanceof Ib?e.kind:null}function Rb(e){let t=Fb(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 zb(e,t){return t?Rb(e)||Fb(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var Bb=2e3,Vb=5e3,Hb=3e4;async function Ub(){let e=Hp();e&&Vp(`send_stream_stale`);let t=Date.now()+(e?Vb:Bb);for(;Date.now()<t;){if(G.getState().isConnected&&!Hp()||o()&&!Hp())return;let e=t-Date.now();if(e<=0)break;if(await G.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Hp())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw Pb()}function Wb(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Vp(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},Hb);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function Gb(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Kb(e){e&&Y.getState().upsertSession(e)}function qb(e,t){let n=Hu(t),r=[...e.getState().session],i=Ji.search(r,n.id,e=>e.id);if(i.found){let t=Yw(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 Jb(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=Gb(e);if(i)return qb(t,i);try{return qb(t,await B.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function Yb(e){return Xb(e)||$.getState().getDirectoryForSession(e)||Nb()}function Xb(e){let t=lb;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 Zb(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):Sb()}function Qb(e){np.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&&np.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var $b=()=>new Map(Array.from(vl(),([e,t])=>[e,t.title||e]));function ex(e){return!(e.type!==`file`||cp(e))}function tx(e){return ex(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function nx(e){return e.some(tx)}async function rx(e){let t=[...e.parts];if(!nx(t))return t;let n=s(),r=e.directory??``;try{await uc(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||s()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=Eb(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],nx(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function ix(e){if(nx(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await Cp(e.parts,{sessionTitles:$b(),directory:e.directory}),n=np.getState(),r=n.getDraft(e.key);return{payload:t,commit:await Op({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function ax(e,t,n){let r=lb;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 ox(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 sx(e,t){let n=lb;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 cx(e,t,n){let r=ax(e,t,n);return r?B.getScopedSdkClient(r):Zb(t)}async function lx(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??Nb()),a=i.directory??null;return a&&ul(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 ux(e,t,n){let r=t??Yb(e),i=n(vd(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&ul(a.id,o),a}async function dx(e,t){let n;try{n=await B.getSession(e,t??Yb(e))}catch{return}if(!Sd(n))return;let r=xd(n);if(r)try{await ux(r,t??Yb(r),t=>Td(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 fx(e,t){if(!lb)return[];let n=[],r=new Set,i=[];if(t){let e=lb.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of lb.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 px(e){if(lb)for(let t of e){let e=lb.children.get(t.directory);e&&e.setState({session:t.sessions})}}function mx(e){$.getState().setWorktreeMetadata(e,null)}var hx=1e4,gx=new Map,_x=0;function vx(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function yx(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),px(e.listSnapshots),Kb(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function bx(e,t){let n=t??Yb(e);Y.getState().markSessionsPendingDeletion([e]);let r=fx(e,n),i=Gb(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 xx(e,t){try{if(await dx(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return fx(e,t),Y.getState().removeSessions([e]),mx(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(fx(e,t),Y.getState().removeSessions([e]),mx(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function Sx(e,t){let n=bx(e);return await xx(e,n.directory)?!0:(yx(n),!1)}function Cx(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>bx(e)),i=`session-delete-${Date.now()}-${_x+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=gx.get(i);if(!e)return;gx.delete(i);let t=[],n=[];for(let r of e.entries)await xx(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),yx(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return gx.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function wx(e){if(!e)return!1;let t=gx.get(e);if(!t)return!1;clearTimeout(t.timer),gx.delete(e);for(let e of[...t.entries].reverse())yx(e);return!0}async function Tx(e){let t=Yb(e),n=fx(e,t),r=Gb(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await dx(e,t);let n=await B.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),px(n),Kb(r),!1}}async function Ex(e){let t=Yb(e),n=Gb(e),r=n?vx(n):null;if(r&&(Y.getState().upsertSession(r),t&&lb)){let e=lb.children.get(t);e&&qb(e,r)}try{let n=await B.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=vx(n);if(Y.getState().upsertSession(r),t&&lb){let e=lb.children.get(t);e?qb(e,r):Mb(r,t)}else Mb(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&fx(e,t)),!1}}async function Dx(e,t){let n=Yb(e),r=Gb(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Mu(r):0,c=await B.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),Mb(c,n)}async function Ox(e){let t=Yb(e),n=Gb(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await B.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),Mb(s,t)}async function kx(e){let t=Yb(e),n=Hu(vb(await Sb().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),jb(n,t),n}async function Ax(e){let t=Yb(e),n=Hu(vb(await Sb().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),jb(n,t),n}function jx(e){let t=lb,n=e??ub();if(!t||!n)return{store:e?wb(e):Cb(),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 Mx(){return{identity:r(),generation:s()}}function Nx(e,t){return e.isCurrent()&&r()===t.identity&&s()===t.generation}function Px(e,t){if(!Nx(e,t))throw Error(`Send target changed before transport dispatch`)}function Fx(e){if(!fb||!pb)throw new Ib(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??Nb()??null,n=jx(t),r=Mx();Px(n,r),e.beforeOptimisticInsert?.(),Px(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),Bx({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 Ib?e:new Ib(Lb(e)??zb(e,!1),e)}}function Ix(e){if(!Nx(e.capture,e.transport)||!pb)return;pb({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 Lx(e){Ix(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function Rx(e){if(!fb||!pb)throw new Ib(`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 Ub(),Px(n,r),s=!0,await Wb(e.send(i)),!Nx(n,r))throw new Ib(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Lb(c)??zb(c,s),u=c instanceof Ib?c:new Ib(l,c,i);if(!Nx(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await Hx(a,i,o):null;if(d&&Nx(n,r)){Ux(n.store,a,i,d,{directory:o??void 0}),mb?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||Ix(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function zx(e){await Rx({ticket:e.ticket??Fx({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 Bx(e){if(!fb)return!1;let t=e.directory??Nb(),n=t?wb(t):Cb(),i=t??Nb()??``;if(qx(n,e.sessionId,e.messageID,i)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),c={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},l=A_(()=>Db(e.sessionId,t).data);fb({sessionID:e.sessionId,directory:t,message:c,parts:a});let u=A_(()=>Db(e.sessionId,t).data);try{l&&u&&j_({trigger:`user-send`,sessionID:e.sessionId,directory:i,transport:r(),generation:s(),before:l,after:u})}catch{}let d=n.getState();return n.setState({session_status:{...d.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...d.session_status_observed_at,[e.sessionId]:o}}),!0}function Vx(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function Hx(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??qy,c=r?.retryDelayMs??Jy;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!Vx(r?.isCurrent)||a>0&&(await hb(c),i?.signal.aborted||!Vx(r?.isCurrent)))return null;try{let a=await Sb().session.messages({sessionID:e,directory:n??void 0,limit:um(),...i?{signal:i.signal}:{}});if(!Vx(r?.isCurrent))return null;let o=(_b(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 Ux(e,t,n,r,i){if(!r.length)return;let a=i?.directory??Yb(t)??ub(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:Wu(e.info),parts:e.parts??[]})),skipPartTypes:Yy,merge:i?.gapFillOnly===!0?Pa:Ia({purpose:`recovery`})};ac(o,s)||rc(a,e).apply(o,s)}var Wx=2e3,Gx={attempts:12,retryDelayMs:500},Kx={presenceGraceMs:Wx,recovery:{...Gx}};function qx(e,t,n,r){let i=r??Yb(t)??ub()??``,a=H()??rc(i,e),o=U(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function Jx(e,t,n,r){let i=r?.directory??Yb(t)??ub()??``;if(qx(e,t,n,i))return Promise.resolve(!0);if(!Vx(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()??rc(i,e),f=U(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!Vx(r?.isCurrent)){l(!1);return}qx(e,t,n,i)&&l(!0)}),qx(e,t,n,i)&&l(!0)})}async function Yx(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await Jx(t,n,r,{timeoutMs:e.graceMs??Kx.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!Vx(a))return`cancelled`;let o=await Hx(n,r,i,{...Kx.recovery,isCurrent:a});return o?Vx(a)?(Ux(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:Vx(a)?`missing`:`cancelled`}async function Xx(e){let{store:t,directory:n}=Tb(e),i=n?{state:`bound`,transportIdentity:r(),directory:n,sessionID:e}:null,a=i?$.getState().beginQueueAbortBlock(i):null;try{if(vb(await Sb().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){i&&a&&$.getState().clearQueueAbortBlock(i,a),Xe(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>Lz);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function Zx(e,t,n){await Ub();let r=ax(`permission`,e,t)||Yb(e)||Nb();if(vb(await cx(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function Qx(e,t,n){await Ub();let r=ax(`question`,e,t)||Yb(e)||Nb();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(vb(await cx(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw ox(n)&&sx(e,t),n}}async function $x(e,t){await Ub();let n=ax(`question`,e,t)||Yb(e)||Nb();try{if(vb(await cx(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw ox(n)&&sx(e,t),n}}async function eS(e){if(!e)return!1;let t=lb;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=rp(t.session,e);if(i.size===0)continue;let a=t.question??{};for(let e of i){let t=a[e];if(t)for(let r of t)n.push({sessionId:e,requestId:r.id})}}if(n.length===0)return!1;for(let{sessionId:e,requestId:t}of n)sx(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await $x(e,t)}catch(e){if(ox(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function tS(e,t,n){let i=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return oy(e,i??(()=>{try{return Tb(e,i).directory}catch{return i}})(),async({isCurrent:n})=>{let{store:o,directory:c}=Tb(e,i);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Sb().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=Ob(e,c).find(e=>e.id===t),d=Ob(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}=Eb(e,c),m=[...f.getParts(U(p,e),t)],h=a===void 0?s?C({transportIdentity:r()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await rx({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await Cp(m,{sessionTitles:$b(),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=np.getState(),r=await Op({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 Ap({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await B.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await Ap({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&&dy.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 Ap({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await Ap({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function nS(e,t,n,i){let a=i??Yb(t)??ub(),o=U(a,t),c=A_(()=>Db(t,a).data),l=[...ic(t)];l.some(e=>e.directory===a&&e.sessionID===t)||l.push(o);let u=!1;for(let e of l)ac(e,{type:`remove-message`,messageID:n})!=null&&(u=!0);u||rc(a,e).apply(o,{type:`remove-message`,messageID:n});let d=A_(()=>Db(t,a).data);try{c&&d&&j_({trigger:`user-delete`,sessionID:t,directory:a,transport:r(),generation:s(),before:c,after:d})}catch{}}async function rS(e,t,n,i){let a=n?.info,o=n?.parts,s=i?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=Tb(e,s).directory}else{c=Tb(e,s).directory;let{data:n}=Db(e,c),r=kc(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=i?.draftKey??C({transportIdentity:r()},e),{commit:u}=await ix({key:l,parts:await rx({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 Ap({key:l,restoredRevision:d,previous:f})).status})}}function iS(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 aS(e,t){let n=t?.directory,{store:r,directory:i}=Tb(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Sb().session.abort({sessionID:e,directory:i})}catch{}}async function oS(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=Tb(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 sS(e,t,n){let i=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:c}=Tb(e,i),l=A_(()=>Db(e,i).data);try{await aS(e,{directory:i}),await oS(e,{directory:i});let n=new Set((await cS(e,i)).map(e=>e.id)),r=iS(t,Ob(e,i),n,{preserveMessageId:a});for(let t of[...r].reverse())await B.deleteSessionMessage(e,t.id,c),nS(o,e,t.id,c)}finally{try{let t=A_(()=>Db(e,i).data);l&&t&&j_({trigger:`user-edit`,sessionID:e,directory:c,transport:r(),generation:s(),before:l,after:t})}catch{}}}async function cS(e,t){let{directory:n}=Tb(e,t);return(_b(await Sb().session.messages({sessionID:e,directory:n,limit:lm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>Wu(e.info))}async function lS(e,t){let{store:n,directory:i}=Tb(e,t),a=A_(()=>Db(e,t).data),o=(_b(await Sb().session.messages({sessionID:e,directory:i,limit:lm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=A_(()=>Db(e,t).data);a&&n&&j_({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let c=o.map(e=>({info:Wu(e.info),parts:e.parts??[]})),l=U(i??ub(),e);ac(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Yy})||rc(i??ub(),n).apply(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Yy});try{let n=A_(()=>Db(e,t).data);a&&n&&j_({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return c.map(e=>e.info)}async function uS(e,t){return oy(e,t??(()=>{try{return Tb(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=Tb(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=kb(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Sb().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Sb().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=vb(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<Xy;r+=1){if(r>0&&(await hb(Zy),!n())||(await lS(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(kb(e,i)>o)return}if(kb(e,i)<=o){let n=i??ub(),a=H()??rc(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await lS(e,t)}})}async function dS(e,t,n,r){let a=i(),{store:o,directory:s}=Tb(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await Jb(e,o,s);ul(e,s);let l=o.getState(),u=l.session_status[e],d=Ob(e,s);u?.type,d.length;let f=ab(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await lS(e),l=o.getState(),u=l.session_status[e],d=Ob(e,s),f=ab(void 0,d,u)),!n&&l.session_status[e]?.type!==`idle`&&!f)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:kb(e,s)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=Db(e,s),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(U(s,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!cp(e)).map(e=>e.text||e.content||``).join(`
|
|
456
|
+
`),l=[];for(let e of o){let t=Sp(e);t&&l.push(t)}for(let e of[...l].reverse())xp(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=xp(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:`)?gp(t):null;if(o){let e=yp(o,r),t=null;for(let n of e){let e=xp(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=pp(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 bp(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(dp(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}},wp=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 bp(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(dp(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}},Tp=e=>e?JSON.parse(JSON.stringify(e)):null,Ep=e=>e?{...e}:{},Dp=(e,t=np.getState())=>{let n=t.getDraft?.(e)??null,r=Ep(t.draftAttachmentViews?.[R(e)]);return{record:Tp(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},Op=async e=>{let t=e.input??np.getState(),n=Dp(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}},kp=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}}},Ap=async e=>{let t=e.input??np.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?kp({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},jp=(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},Mp=e=>e?.status===`committed`&&e.current===!0,Np=new Map,Pp=async(e,t)=>{let n=R(e),r=Np.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Np.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Np.get(n)===o&&Np.delete(n)}},Fp=(e,t)=>({key:e,addLocal:async n=>{await Pp(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Pp(e,async()=>{let r=t(),i=jp(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 Pp(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 Pp(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:Mp(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Pp(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Pp(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Pp(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Ip=4e4,Lp=0,Rp=null;function zp(e=Date.now()){Lp=e}function Bp(e){return Rp=e,()=>{Rp===e&&(Rp=null)}}function Vp(e){Rp?.(e)}function Hp(e=Date.now(),t=Ip){return Lp<=0?!1:e-Lp>=t}var Up=3e4,Wp=200,Gp=new Map;function Kp(e,t,n){return`${n?.transport??r()}\n${n?.generation??s()}\n${e.trim()}\n${t}`}function qp(e,t,n){if(!e||!t)return!1;let r=Gp.get(Kp(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Up}function Jp(e,t,n){if(!e||!t)return;let r=Kp(e,t,n);for(Gp.has(r)&&Gp.delete(r);Gp.size>=Wp;){let e=Gp.keys().next().value;if(typeof e!=`string`)break;Gp.delete(e)}Gp.set(r,n?.now??Date.now())}var Yp=768,Xp=()=>{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},Zp=()=>{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<=Yp&&Xp()?`mobile`:`desktop`},Qp=()=>Zp()===`mobile`,$p=3,em=2,tm=4,nm=4,rm=100,im=30;function am(){return l()?`relay`:`local`}function om(e=am()){return e===`relay`?em:$p}function sm(e=am()){return e===`relay`?nm:tm}function cm(e){return om(dm(e))}function lm(){return rm}function um(){return im}function dm(e){return e===`relay`||e===`local`?e:am()}var fm=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function pm(){return{pages:[],pageParams:[]}}function mm(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 hm(e){return{pages:Object.freeze(e.pages.map(mm)),pageParams:Object.freeze([...e.pageParams])}}function gm(e,t,n=fm){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 mm({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function _m(e){if(!e||e.pages.length===0)return Uo;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 vm(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=_m(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function ym(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function bm(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 mm({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:ym(t)}})}function xm(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 hm({pages:[bm(`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=bm(`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(Cm(i,o,s,a)),_.push(e.pageParams[r]??null)}return hm({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?Cm(t,r===`reconcile-page`?Sm(i,p):[...i,...p],s,a):Cm(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]=mm({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return hm({pages:m,pageParams:[...e.pageParams]})}function Sm(e,t){let n=e.slice();for(let e of t){let t=Wa(e),r=n.length;for(let e=0;e<n.length;e+=1)if(Ua(t,Wa(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function Cm(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&&wm(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||Em(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:mm({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:ym(t)}})}function wm(e,t){return e===t||e.id===t.id&&e===t}function Tm(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 Em(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!Tm(e[n],t[n]))return!1;return!0}function Dm(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Om(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 km(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=xm(e??pm(),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&&Em(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 hm({pages:e.pages.map((t,n)=>Cm(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function Am(e,t){let n=vm(e,t),r=_m(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 jm(e,t,n,r){if(!ps(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Am(e,t),o=Sa(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=Om(n),c=new Set;return s&&c.add(s),{data:km(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function Mm(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 Nm(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 Pm(e){return e?e.map(e=>e.id).filter(e=>typeof e==`string`):[]}function Fm(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Am(e,t),o=!1,s=0,c,l=new Set,u=Mm(e),d=Nm(e),f=Pm(i.message[t]);for(let e of n){if(!ps(e.type))continue;o=!0;let n=Sa(i,e),r=typeof n==`boolean`?n:n.changed,a=typeof n==`boolean`?void 0:n.materialization;if(a&&!c&&(c=a),!r)continue;let p=Om(e),m=Pm(i.message[t]),h=m.length!==f.length||m.some((e,t)=>e!==f[t]),g=h;if(p){let e=i.part[p],n=u.get(p);e&&n&&Em(n,e)?i.part[p]=[...n]:e?(g=!0,u.set(p,e)):n&&(g=!0,u.delete(p));let r=i.message[t]?.find(e=>e.id===p),a=d.get(p);if(!(r&&a&&a===r))if(r&&a&&wm(a,r)){let e=i.message[t];if(e){let t=e.findIndex(e=>e.id===p);t>=0&&(e[t]=a)}}else r?(g=!0,d.set(p,r)):a&&(g=!0,d.delete(p))}else g=!0;if(h){f=m;for(let e of i.message[t]??[])e?.id&&!d.has(e.id)&&d.set(e.id,e)}g&&(s+=1,p&&l.add(p))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:km(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function Im(e,t,n,r,i){let a=e&&e.pages.length>0?e:hm({pages:[bm(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=vm(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]:Dm(r)};return{data:hm({pages:a.pages.map((e,t)=>t===a.pages.length-1?Cm(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]?Cm(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 Lm(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:hm({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 Cm(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Rm(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=vm(e,t),i=Lo({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:_m(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=hm({pages:[bm(`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:_m(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=hm({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?Cm(t,Sm(r,l),o,a):Cm(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:_m(u)}}}function zm(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=Qo(vm(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:xm(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 jm(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Fm(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Im(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 Lm(e,n.messageID,t)}case`durable-seed`:return Rm(e,t,n);case`reset`:return n.page?zm(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 Bm(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 Vm(e,t,n,r=`materialize`){return zm(e,n,{type:`http-page`,purpose:r,page:Bm(t),liveRevision:t.sync.liveRevision}).data}function Hm(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return hm(t);if(t.pages.length===e.pages.length){let r=Km(e,t);if(r===e)return e;if(Gm(e,t)||Wm(e,t))return r;let i=t.pages[t.pages.length-1];return Vm(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return zm(e,n,{type:`http-page`,purpose:`prepend`,page:Bm(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Vm(e,r,n)??hm(t)}return hm(t)}function Um(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Wm(e,t){let n=Um(e),r=Um(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=qm(e,``),a=qm(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Gm(e,t){let n=Um(e);if(n.size===0)return!1;let r=Um(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=qm(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||Ua(Wa(t),Wa(n))>0)return!1}return!0}function Km(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,mm(t))});return!n&&e.pageParams.length===t.pageParams.length?e:hm({pages:r,pageParams:[...t.pageParams]})}function qm(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:_m(e),liveRevision:a}}var Jm=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Ym=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Xm=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Zm=e=>e.trim(),Qm=e=>e?.trim()||`tail`,$m=new Set([502,503,504]),eh=[`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 th(e){if(!e||e instanceof Jm||e instanceof Ym)return!1;if(e instanceof Xm)return e.status>=400&&e.status<500?!1:$m.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($m.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($m.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:eh.some(e=>n.includes(e))}function nh(e,t){return e>=2?!1:th(t)}var rh=(e,t=r(),n=s())=>[t,n,`sessionMessages`,`page`,Zm(e.directory),e.sessionID,e.limit,Qm(e.before)],ih=(e,t=r(),n=s())=>[t,n,`session-transcript`,Zm(e.directory),e.sessionID];function ah(e){if(!e||typeof e!=`object`)throw new Ym(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Ym(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Ym(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Ym(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Ym(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Ym(`session message page: cursor must be string when set`);return e}var oh=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}:{}})},sh=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw new Jm},ch=(e,t,n=r(),i={},a=(i.getGeneration??s)())=>{let o=Zm(e.directory),c=e.sessionID,l=e.limit,u=e.before?.trim()||void 0;return{queryKey:rh({directory:o,sessionID:c,limit:l,before:u},n,a),queryFn:async({signal:e})=>{sh(n,a,i);let r=await t({directory:o,sessionID:c,limit:l,before:u,signal:e});return sh(n,a,i),oh(ah(r))},staleTime:1/0,gcTime:3e5,retry:nh,retryDelay:e=>Math.min(500*2**e,4e3)}},lh=(e,t,n=L,i=r(),a={},o=(a.getGeneration??s)())=>n.fetchQuery(ch(e,t,i,a,o));function uh(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function dh(e){return oh({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function fh(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function ph(e){let t=Zm(e.directory),n=e.sessionID,i=e.transport??r(),a=e.probe??{},o=e.generation??(a.getGeneration??s)(),c=e.initialLimit??om(),l=e.historyLimit??sm(),u=e.client??L,d=ih({directory:t,sessionID:n},i,o),f=async t=>dh(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:d,queryFn:async e=>{sh(i,o,a);let r=e.pageParam?.trim()||void 0,s=r?l:c,d=r?`prepend`:`initial`,p=await lh({directory:t,sessionID:n,limit:s,before:r},f,u,i,a,o);sh(i,o,a);let m=uh(p);return gm(m,d===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:fh,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:nh,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>Hm(e,t,n)}}function mh(e){let t=e.client??L,n=ph({...e,client:t}),r=new Qe(t,{...n,structuralSharing:(t,n)=>Hm(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 hm(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return hm(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:hm(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return hm(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:hm(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function hh(e,t,n,r){let i=e.getQueryData(t),a=zm(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 gh(e,t=L,n=r(),i=s()){return t.getQueryData(ih(e,n,i))}function _h(){return v()||Qp()}function vh(){return v()?4:Qp()?12:40}var yh=1048576,bh=4*yh,xh=12*yh,Sh=40*yh;function Ch(){return v()?bh:Qp()?xh:Sh}var wh=e=>e.trim();function Th(e){return{transport:e.transport,generation:e.generation,directory:wh(e.directory),sessionID:e.sessionID}}function Eh(e){let t=Th(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function Dh(e){return`${e.transport}\n${e.generation}\n${wh(e.directory)}`}var Oh={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function kh(e,t,n){return[t,n,Oh.taskRoot,Oh.reconcileTaskKind,wh(e.directory),e.sessionID,e.checkpoint]}function Ah(e,t,n){return[t,n,Oh.checkpoint,wh(e.directory),e.sessionID]}function jh(e){let t=Th(e);return[{queryKey:ih({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,Oh.transportPageRoot,Oh.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Oh.taskRoot,Oh.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Oh.taskRoot,Oh.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:Ah({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function Mh(){let e=new Map;return{retain(t){let n=Th(t),r=Eh(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(Eh(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(Eh(t))?.count??0},clear(){e.clear()}}}function Nh(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Ph=3e4;function Fh(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function Ih(e){return!Array.isArray(e)||e.length<5||e[2]!==Oh.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 Lh(e){let t=e.client,n=e.activeRegistry??Mh(),r=e.counters??Nh(),i=e.getLimit??vh,a=e.now??Date.now,o=e.minResidencyMs??Ph,s=new Map,c=e=>{let t=Eh(Th(e));s.set(t,a())},l=e=>{let t=Eh(Th(e)),n=s.get(t);return n!==void 0&&a()-n<o},u=e=>{let r=Th(e);if(n.isRetained(r))return!0;let i=ih({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},d=e=>{let r=e?.directory===void 0?void 0:wh(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=Ih(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:Fh(a.state.data)})}return i},f=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},p=e=>{r.purgeSession+=1,s.delete(Eh(Th(e)));for(let t of jh(e))f(t)},m=(e,t)=>{r.purgeGeneration+=1;let n=[[e,t,Oh.canonical],[e,t,Oh.transportPageRoot,Oh.transportPageKind],[e,t,Oh.taskRoot],[e,t,Oh.checkpoint]];for(let e of n)f({queryKey:e})},h=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>Eh(Th(e)))),o=d({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=Dh(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let u=[];for(let e of c.values()){for(let t of e){let e=Eh(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(Eh(e.scope))||l(e.scope)));i.sort((e,t)=>e.dataUpdatedAt===t.dataUpdatedAt?e.scope.sessionID<t.scope.sessionID?-1:+(e.scope.sessionID>t.scope.sessionID):e.dataUpdatedAt-t.dataUpdatedAt);let o=e.length-i.length,c=e.length,d=0;for(;c>t&&d<i.length&&!(c-1<o);){let e=i[d];d+=1,p(e.scope),u.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:u}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:u,listCanonical:d,purgeSession:p,purgeGeneration:m,enforce:h,destructiveReset:async(e,t)=>{r.destructiveReset+=1,p(e);try{let n=await t();return h({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw p(e),t}},noteScopeObserved:c}}var Rh=3e4,zh=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function Bh(e,t=Rh){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 Vh=e=>e?e.toLowerCase().includes(`application/json`):!1,Hh=e=>e?e.toLowerCase().includes(`text/html`):!1;function Uh(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 Wh(e){let t=e.turns??sm(),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:Rh;return Bh((async()=>{let a=await F(n,{method:`GET`,query:r,signal:zh(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(Hh(o))throw Error(`session turn page: unexpected HTML response`);Vh(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Uh(s,t)})(),i)}async function Gh(e){let t=e.purpose===`prepend`&&e.before?sm():om();return Wh({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var Kh=3e4,qh=2,Jh=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),Yh=e=>e?e.toLowerCase().includes(`text/html`):!1,Xh=e=>new Promise(t=>{setTimeout(t,e)});function Zh(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Ym(`session transcript reconcile: ${t} must be string or null`);return e}function Qh(e){if(!e||typeof e!=`object`)throw new Ym(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Ym(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Ym(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Ym(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Ym(`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 Ym(`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 Ym(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=Zh(t.capturedHeadMessageID,`capturedHeadMessageID`),r=Zh(t.latestHeadMessageID,`latestHeadMessageID`),i=Zh(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Ym(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Ym(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Ym(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Ym(`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 Ym(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Ym(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Ym(`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 Ym(`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 $h(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 Ym(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function eg(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),Bh((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:Jh(e.signal,n)})}catch(e){throw e instanceof Jm||e instanceof Ym||e instanceof Xm||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new Xm(t.status,`session transcript reconcile failed (${t.status})`);if(Yh(t.headers.get(`content-type`)))throw new Ym(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Ym(`session transcript reconcile: malformed JSON`)}return Qh(a)})(),n)}async function tg(e){let t=$h(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:Kh,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):qh,i=e.sleep??Xh,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await eg(e,t,n)}catch(t){if(t instanceof Jm||t instanceof Ym||t instanceof Xm&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!th(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var ng=`GitHub issue context (JSON)`,rg=`GitHub pull request context (JSON)`,ig=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,ag=(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}},og=e=>{let t=ag(e,ng);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!ig(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=ag(e,rg);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!ig(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},sg=(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`))},cg=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),lg=e=>e.trim()===`/compact`,ug=(e,t)=>{let n=t?.planModeEnabled===!0;return e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(cg(t)||lg(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 sg(t,n)||r.startsWith(ng)||r.startsWith(rg)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=og(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},dg=e=>e?.length?ug(e).length>0:!1,fg=`oc_asst_session_divider:`,pg=[],mg=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),hg=(e,t=0)=>({info:{id:`${fg}${e}`,role:`system`,time:{created:t}},parts:[]}),gg=e=>e.slice().reverse().flatMap(e=>e.entries),_g=(e,t,n=pg)=>{if(!e.length)return pg;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(hg(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?pg:Sg(n,r)?n:r},vg=(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},yg=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=vg(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 dg(e.parts)?e:dg(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}:{}}},bg=(e,t,n,r=pg)=>{if(!t)return n.length>0?Array.from(n):pg;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:yg(e,t?.message),order:t?.order??a++})}if(i.size===0)return pg;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 Sg(r,o)?r:o},xg=(e,t)=>{if(!mg(e)||!mg(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},Sg=(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||xg(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},Cg=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),wg=e=>e.startsWith(fg);function Tg(e,t){if(!e?.id||wg(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(Cg(t,`subtask`)||Cg(t,`compaction`)||t.every(e=>cp(e))):!1}function Eg(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(Tg(r,i))return n}return null}function Dg(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function Og(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:Eg(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:Dg(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function kg(e,t){return{...e,...t}}function Ag(e,t){let n=Ah({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 jg(e,t){let n=Ah({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function Mg(e,t){let n=Ah({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}var Ng=()=>typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0||window.location.protocol===`capacitor:`,Pg=()=>{if(typeof window>`u`||!Ng()||Fg()!==`ios`)return!1;let e=navigator.userAgent||``,t=navigator.maxTouchPoints??0;return/iPad/i.test(e)||/Macintosh|MacIntel/i.test(e)&&t>1},Fg=()=>{if(typeof window<`u`){let e=window.Capacitor?.getPlatform?.();if(e===`ios`||e===`android`)return e}return v()?`vscode`:se()?`desktop`:`web`};function Ig(e){return e.slim===!0}var Lg=/bearer|token|authorization|password|secret|cookie/i;function Rg(e){return typeof e==`string`&&e.includes(`-`)}var zg=`openchamber.client-diagnostics.enabled`;function Bg(e){return e===`true`||e!==`false`&&null}function Vg(e){return e.preference===!0||e.preference!==!1&&Rg(e.version)}function Hg(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function Ug(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function Wg(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 Gg(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return Lg.test(t)?`redacted-error`:t}function Kg(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)Ig(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function qg(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function Jg(e){let t=0;for(let n of e.messageOrder)o_(e.messagesByID[n])===!0&&(t+=1);return t}function Yg(e){let t=e.transcript?Kg(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:qg(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:Jg(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...Gg(e.error??e.request?.error)?{error:Gg(e.error??e.request?.error)}:{},...Wg(e.error)===void 0?{}:{httpStatus:Wg(e.error)}}}function Xg(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 Zg(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 Qg(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return e.event.type===`message.part.delta`?null:`sse-event`;case`sse-event-batch`:return`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function $g(e){if(e.type===`http-page`)return e.purpose}function e_(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function t_(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 n_(e){return e.__openchamberOptimistic===!0}function r_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function i_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var a_=e=>typeof e==`string`&&e.trim().length>0;function o_(e){if(!e||r_(e)!==`assistant`)return;let t=e,n=!a_(t.mode)&&!a_(t.agent),r=!a_(t.modelID)||!a_(t.providerID);return n||r}function s_(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function c_(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)Ig(e)?r+=1:i+=1,n_(e)&&(a=!0);let o=e.messagesByID[t],s=r_(o),c=o_(o);return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:i_(o),...s?{role:s}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function l_(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:s_(e),after:s_(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 u_(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:l_(e.before,e.after),...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.purpose?{purpose:e.purpose}:{}}}var d_=`openchamber-transcript-diagnostics`,f_=`events`,p_=1,m_=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),h_=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,p_);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(f_)||e.createObjectStore(f_,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),g_=(e=d_)=>({async append(t,n){let r=await h_(e);try{let e=r.transaction(f_,`readwrite`).objectStore(f_);await m_(e.add(t));let i=await m_(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await m_(e.delete(t))}finally{r.close()}},async read(){let t=await h_(e);try{return await m_(t.transaction(f_,`readonly`).objectStore(f_).getAll())}finally{t.close()}},async clear(){let t=await h_(e);try{await m_(t.transaction(f_,`readwrite`).objectStore(f_).clear())}finally{t.close()}}});function __(e={}){let t=e.driver??g_(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var v_=Je(`OpenChamberMedia`);function y_(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function b_(){return Ng()&&Ye!==void 0&&Ye.isPluginAvailable(`OpenChamberMedia`)}function x_(){return`1.17.1-beta.13`}function S_(){if(typeof localStorage>`u`)return null;try{return Bg(localStorage.getItem(zg))}catch{return null}}function C_(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(zg,e?`true`:`false`)}catch{}}function w_(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var T_;function E_(e=x_()){return Vg({version:e,preference:S_()})}function D_(e={}){return Zg({sink:w_()===`indexeddb`?(e.createIndexedDBSink??__)():(e.createMemorySink??Xg)(),isEnabled:e.isEnabled??E_})}function O_(){return T_??=D_(),T_}function k_(e){O_().record(e)}function A_(e){try{return E_()?c_(e()):void 0}catch{return}}function j_(e){try{k_(u_(e))}catch{}}function M_(e){let t=Qg(e.command);t&&k_(Yg({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:$g(e.command),sseType:e_(e.command),source:t_(e.command),error:e.error}))}async function N_(){let e=await O_().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 P_(e,t=Hg()){if(b_())return(await v_.saveFile({dataBase64:y_(e),mimeType:`application/json`,filename:t}))?.cancelled?`cancelled`:`saved`;if(typeof document>`u`)return`failed`;let n=new Blob([e],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);return i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),`downloaded`}async function F_(){let e=await N_(),t=Hg();return{content:e,fileName:t,outcome:await P_(e,t),eventCount:Ug(e)}}function I_(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 L_=2,R_=6e4;function z_(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??r)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??s)()}}function B_(e,t){let n=(t.probe?.getTransport??r)(),i=(t.probe?.getGeneration??s)();if(n!==e.transport||i!==e.generation)throw new Jm}function V_(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function H_(e,t){return Th({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function U_(e,t){return`${e.trim()}\n${t}`}function W_(e){let t=e.client,n=e.repository,i=e.cacheBudget??n.getCacheBudget?.()??Lh({client:t,activeRegistry:Mh()}),a=Math.max(1,Math.floor(e.directoryConcurrency??L_)),o=e.fetchReconcile??tg,c=e.now??Date.now,l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,h=new Set,g=new Map,_=new Set,v=(e,t)=>{h.add(U_(e,t))},y=(e,t)=>{h.delete(U_(e,t))},b=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},x=e=>{u+=1;for(let e of[...f.keys()])b(e);p.clear(),m.clear()},S=(e,t)=>{let n=t===void 0?void 0:t.trim(),r=new Map;for(let t of i.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&r.set(U_(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of i.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&r.set(U_(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(r.values())},C=(t,n)=>{let r=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of i.listCanonical({transport:t.transport,generation:t.generation}))r.add(e.scope.directory);for(let e of i.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&r.add(e.directory);for(let e of n)e.directory&&r.add(e.directory.trim());return r},w=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=U_(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},T=r=>{if(l)return;let a={transport:r.transport??z_(e).transport,generation:r.generation??z_(e).generation},o=c(),s=w(),u=C(a,s),d=i.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(U_(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of i.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(U_(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of s)f.set(U_(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(U_(t,n),{directory:t,sessionID:n});for(let e of f.values()){let i=V_(e,a),s=n.getTranscript(i),c=Og({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:r.lastEventID,capturedAt:o});jg(t,c)}let p=new Set;for(let t of u){let n=I_({directory:t,activeScopes:S(a,t),viewedSessions:s,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(U_(e.directory,e.sessionID))}for(let e of d){let t=U_(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=A_(()=>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=A_(()=>n.getTranscript(e));i&&t&&j_({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},D=async(r,i,a)=>{if(B_({transport:i.transport,generation:i.generation},e),a!==u)throw new Jm;jg(t,kg(Ag(t,i)??Og({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=A_(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),B_({transport:i.transport,generation:i.generation},e),a!==u)throw new Jm;Mg(t,i),y(i.directory,i.sessionID);try{let e=A_(()=>n.getTranscript(r));o&&e&&j_({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw jg(t,kg(Ag(t,i)??Og({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},O=async(r,i,a)=>{if(B_({transport:i.transport,generation:i.generation},e),a!==u)throw new Jm;jg(t,kg(Ag(t,i)??Og({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=A_(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),B_({transport:i.transport,generation:i.generation},e),a!==u)throw new Jm;Mg(t,i),y(i.directory,i.sessionID);try{let e=A_(()=>n.getTranscript(r));o&&e&&j_({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 jg(t,kg(Ag(t,i)??Og({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},k=async(r,i,a,s)=>{let l=V_(r,i),d=H_(r,i),f=kh({directory:d.directory,sessionID:d.sessionID,checkpoint:String(Ag(t,d)?.capturedAt??c())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:c()});try{if(B_(i,e),a!==u||s.aborted)throw new Jm;let p=Ag(t,d);if(p||(p=Og({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(l),lastEventID:null,capturedAt:c()}),jg(t,p)),!p.anchorMessageID){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}p=kg(p,{state:`reconciling`}),jg(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,B_(i,e),a!==u||s.aborted)throw new Jm;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,B_(i,e),a!==u||s.aborted)throw new Jm;let h=n.getTranscript(l).liveRevision;if(!g&&!m){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}let y=await o({sessionID:r.sessionID,directory:r.directory.trim(),...g?{continuation:g}:{anchor:m},signal:s});if(B_(i,e),a!==u||s.aborted)throw new Jm;if(y.resetRequired){await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()});return}if(b===1&&(_=y.capturedHeadMessageID),v=y.latestHeadMessageID??v,y.records.length>0&&E(l,y,h),p=kg(Ag(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),jg(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=kg(Ag(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),jg(t,p);continue}p=kg(Ag(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),jg(t,p),y(r.directory,r.sessionID),t.setQueryData(f,{status:`complete`,finishedAt:c()});return}await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()})}catch(n){if(n instanceof Jm||n instanceof Error&&n.name===`AbortError`){t.setQueryData(f,{status:`cancelled`,finishedAt:c()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(f,{status:`error`,finishedAt:c(),code:n instanceof Error?n.name:`error`}),n}},A=t=>{let n=t.trim(),r=m.get(n)??0;if(r>=a)return;let i=p.get(n);if(!i||i.length===0)return;let o=i.shift();m.set(n,r+1);let s=U_(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),A(n);return}let c=z_(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{try{await k(o,c,l,h.signal)}catch{}finally{f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),A(n)}})();d.set(s,g)},j=e=>{let t=e.directory.trim(),n=U_(t,e.sessionID);if(d.has(n))return;let r=p.get(t);r||(r=[],p.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),A(t))},ee=t=>{let n=w(),r=C(t,n);for(let a of r){let r=I_({directory:a,activeScopes:S(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of r)j(e);for(let e of i.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=U_(e.scope.directory,e.scope.sessionID);r.some(e=>U_(e.directory,e.sessionID)===t)||v(e.scope.directory,e.scope.sessionID)}}},te=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??r)(),generation:t.runtimeGeneration},i=(e.probe?.getGeneration??s)(),a=(e.probe?.getTransport??r)();if(i!==n.generation||a!==n.transport){x(`generation_mismatch`);return}ee(n)},M=t=>{if(l)return;let r=t.directory.trim(),i=z_(e,t),a=V_({directory:r,sessionID:t.sessionID},i),s=Eh(H_({directory:r,sessionID:t.sessionID},i)),u=g.get(s);if(u&&c()-u.checkedAt<R_||_.has(s)||d.has(U_(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(_.add(s),(async()=>{try{if(B_(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(B_(i,e),l||(g.set(s,{checkedAt:c()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;E(a,u,d)}catch{}finally{_.delete(s)}})())};return{captureCheckpoints:T,onCompensation:te,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=U_(i,r.sessionID);if(!h.has(a))return M(r),null;y(i,r.sessionID);let o=z_(e,r),s=V_({directory:i,sessionID:r.sessionID},o),c=H_({directory:i,sessionID:r.sessionID},o),u=Ag(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){j({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{B_(o,e);let r=await n.ensureInitial(s);return Mg(t,c),r}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:x,getCheckpoint:n=>{let r=z_(e,n);return Ag(t,H_({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(U_(e,t)),destroy:()=>{l=!0,x(`destroy`)}}}function G_(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function K_(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 q_(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 J_(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(Ba(e))??Promise.resolve(),r.get(Ha(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=Ba(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=Ha(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??Ch)();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 Y_=new Map;function X_(e,t){let n=Y_.get(e);if(n)return n;let r=t().finally(()=>{Y_.get(e)===r&&Y_.delete(e)});return Y_.set(e,r),r}var Z_=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Q_(e){return X_(Z_(e),e.request)}function $_(e,t){return`${e}\n${t}`}var ev=new Map;function tv(e){return ev.get(e)}async function nv(e){return Q_({runtimeKey:$_(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 ev.set(r.id,i),{info:Wu(r),parts:i}}})}function rv(e,t){let n=e.info;return n.role===t||n.clientRole===t}function iv(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!rv(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 av(e){if(e.complete){let t=e.records.some(e=>rv(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=iv(e.records);if(t.length===0){let t=e.records.some(e=>rv(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=>rv(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function ov(e){return e.trim()}function sv(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??r)(),i=e.generation??t.generation??(t.probe?.getGeneration??s)();return{directory:ov(e.directory),sessionID:e.sessionID,transport:n,generation:i}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function cv(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:Uo,liveRevision:0}}function lv(e,t){if(!e||e.pages.length===0)return cv(t);let n=qm(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function uv(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function dv(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function fv(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=uv(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=uv(e.messagesByID[t]);a===void 0||a<=n||dv(e.partsByMessageID[t])||i.push(t)}return i}function pv(e={}){let t=e.client??L,n=e.cacheBudget??Lh({client:t,activeRegistry:e.activeRegistry??Mh()}),i=n.activeRegistry,a=new Map,o=new Map,c=new Map,l=new Map,u=new Map,d=e.durableStore?J_(e.durableStore,{getProtectScopes:()=>i.listRetained().map(G_),getByteBudget:e.getDurableByteBudget}):void 0,f=new Map,p=new Map,m=new Map,h=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=lv(w(e),t.sessionID);!cs(r)&&!v.has(n)||(y.add(n),k_(Yg({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=u.get(e);return t||(t={messages:new Map,parts:new Map},u.set(e,t)),t},w=n=>{let r=sv(n,e);return gh({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=sv(t,e);return ih({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=sv(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let i=e.probe??{getTransport:r,getGeneration:s},o=sv(n,{...e,transport:void 0,generation:void 0,probe:i}),c=K(o),l=a.get(c);if(l)return l;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let u=mh({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:i,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(c,u),u},k=t=>{let n=K(sv(t,e));u.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(sv(n,e));if(c.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});c.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=c.get(e);n&&(n(),c.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of m.keys())t.startsWith(e)&&m.delete(t);for(let t of h.keys())t.startsWith(e)&&h.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of m)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of h.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=sv({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{d&&d.persistSettled(G_(e),t,n??[])},le=(e,t,n,r)=>{if(!d||S>0||!r.applied||!r.changed)return;let i=G_(t);if(n.type===`remove-message`){d.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(d.clearSession(i),n.page){let r=lv(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=lv(w(e),t.sessionID);for(let e of r){let n=q_(e);if(n.action===`remove`){d.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=lv(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,i)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:r,getGeneration:s},c={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??om()};return K_(i?.fresh?await t.fetchQuery({...ch(c,a,n.transport,o,n.generation),staleTime:0}):await lh(c,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)Ks(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now();f.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return f.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Jp(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(!ns(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),m.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Jm||!se(t))return f.delete(r),P.getTranscript(e);throw f.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),k_(Yg({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:lv(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{p.delete(r)}})();return p.set(r,a),a},fe=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;f.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return f.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||Rs(t.sessionID,t.directory)?(f.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Jp(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return f.delete(r),n instanceof Jm||!se(t)||k_(Yg({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:lv(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{p.delete(r)}})();return p.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(sv(t,e)))?!0:_m(n).kind===`unknown`},P={getTranscript(t){let n=sv(t,e),r=K(n),i=lv(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=sv(t,e),r=K(n),i=P.getTranscript(t);return te(r,us(n.sessionID,i.boundary))},getRequestState(t){let n=sv(t,e),r=f.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=sv(t,e),r=K(n),i=P.getTranscript(t);cs(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:ls({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:as(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(sv(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(sv(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??mv,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=sv(t,e),i=m.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||ts(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=sv(t,e),i=M(r,n),a=A_(()=>P.getTranscript(t)),o=e=>{try{let t=A_(e);if(!a||!t)return;j_({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=h.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return m.set(i,{status:`idle`}),P.getTranscript(t);if(!ts(P.getParts(t,n))&&!g.get(K(r))?.has(n))return m.set(i,{status:`ready`}),P.getTranscript(t);m.set(i,{status:`loading`}),k(t);try{let a=await nv({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return B.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return se(r)?(P.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),ts(P.getParts(t,n))?m.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):m.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(m.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return m.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return m.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return h.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{h.get(i)===c&&h.delete(i)}),c},apply(r,i){let a=sv(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=hh(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=hh(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=hh(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=hh(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}),hh(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=hh(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=hh(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 hv(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=hh(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&&(M_({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:lv(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error}),x(r,a)),s},subscribe(t,r){let a=K(sv(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);l.set(a,i.retain(e)),n.noteScopeObserved(e)}return s.add(r),A(t),()=>{let e=o.get(a);if(e){if(e.delete(r),e.size===0){let e=l.get(a);e&&(e(),l.delete(a))}j(a)}}},async ensureInitial(t){let r=sv(t,e),a=K(r);if(d&&await d.wait(G_(r)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(G_(r));if(se(r)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)ns(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){k_(Yg({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,r);return k_(Yg({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!i.isRetained(E(t))){let e=Date.now(),n=await fe(t,r);return k_(Yg({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;f.delete(a);try{await s.ensureInitial()}catch(e){throw k_(Yg({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:lv(w(t),r.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}f.delete(a),l||Jp(r.directory,r.sessionID,{transport:r.transport,generation:r.generation}),n.noteScopeObserved(E(t)),D(t);let u=P.getTranscript(t);return k_(Yg({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:u,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),u},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),_m(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=sv(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 k_(Yg({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 k_(Yg({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=sv(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=sv(t,e),i=A_(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??om(),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=fv(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=A_(()=>c);i&&e&&j_({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=A_(()=>P.getTranscript(t)),i=E(t);return d&&await d.clearSession(G_(sv(t,e))),n.destructiveReset(i,async()=>{let n=sv(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),u.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=A_(()=>s);r&&e&&j_({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(sv(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),u.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),u.delete(n);let e=l.get(n);e&&(e(),l.delete(n));let t=c.get(n);t&&(t(),c.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),d&&d.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of c.values())e();c.clear();for(let e of l.values())e();l.clear(),o.clear(),u.clear(),f.clear(),p.clear(),m.clear(),h.clear(),g.clear(),v.clear(),y.clear(),b.clear()}};return P}var mv=Object.freeze([]);function hv(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=hh(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var gv=`/api/openchamber/transcript-cache`,_v=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),vv=e=>typeof e==`object`&&!!e&&!Array.isArray(e),yv=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},bv=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},xv=e=>{if(!vv(e))throw Error(`Invalid transcript cache scope`);return{transport:yv(e.transport,`scope`),generation:bv(e.generation,`scope`),directory:yv(e.directory,`scope`),sessionID:yv(e.sessionID,`scope`)}},Sv=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},Cv=e=>{if(!vv(e)||!vv(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!vv(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:xv(e.scope),messageID:yv(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>Sv(e,`part completeness`)),completeness:Sv(e.completeness,`completeness`),contentHash:yv(e.contentHash,`content hash`),byteSize:bv(e.byteSize,`byte size`),lastAccessedAt:bv(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:bv(e.sortKey.created,`sort key`),messageID:yv(e.sortKey.messageID,`sort key`)}}},wv=(e,t)=>{if(!vv(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(Cv);return{scope:e.scope===void 0?to(t):xv(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},Tv=e=>{if(!vv(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:Cv(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!_v.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:Cv(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Ev=e=>{if(!vv(e))throw Error(`Invalid transcript cache evict`);return{evicted:bv(e.evicted,`evict`),freedBytes:bv(e.freedBytes,`evict`),remainingBytes:bv(e.remainingBytes,`evict`)}},Dv=e=>({scope:to(e),records:[],byteSize:0}),Ov=(e,t)=>vv(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,kv=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`)}},Av=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 kv(r)};let i=await kv(r).catch(()=>void 0);throw Error(Ov(i,`Transcript cache request failed (${r.status})`))},jv=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Mv=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Nv(e={}){let t=e.fetch??F;return{async readSession(e){let n=await Av(t,`${gv}/session`,{method:`GET`,query:jv(e)});return n.kind===`disabled`||n.kind===`not-found`?Dv(e):wv(n.payload,e)},async readMessage(e,n){let r=await Av(t,`${gv}/message`,{method:`GET`,query:{...jv(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!vv(r.payload))throw Error(`Invalid transcript cache record`);return Cv(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Av(t,`${gv}/message`,Mv(`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 Tv(i.payload)},async removeMessage(e,n){let r=await Av(t,`${gv}/message`,Mv(`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 Av(t,`${gv}/session`,Mv(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Av(t,`${gv}/generation`,Mv(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Av(t,`${gv}/evict`,Mv(`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 Ev(r.payload)},async clearAll(){let e=await Av(t,`${gv}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Pv=`openchamber-transcript-durable`,Fv=1,Iv=`transcriptIndex`,Lv=`transcriptContent`,Rv=class extends Error{code;constructor(e){super(e),this.code=e}},zv=e=>({id:Va(e.scope,e.messageID),scope:to(e.scope),scopeKey:Ba(e.scope),generationKey:Ha(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}),Bv=(e,t)=>({scope:to(e.scope),messageID:e.messageID,info:eo(t.info),parts:eo(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}}),Vv=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Bv(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Hv=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},Uv=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Wv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Rv(`database-unavailable`));return}let r=indexedDB.open(e,Fv),i=!1,a=()=>{i||(i=!0,n(new Rv(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Iv)){let t=e.createObjectStore(Iv,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Lv)||e.createObjectStore(Lv,{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}),Gv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Rv(`database-unavailable`)),r.onblocked=()=>void 0}),Kv=(e=Pv)=>({transaction:async t=>{let n=await Wv(e),r=n.transaction([Iv,Lv],`readwrite`),i=r.objectStore(Iv),a=r.objectStore(Lv),o=e=>Uv(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:()=>Gv(e)});function qv(e,t={}){let n=no(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(zv(t)),ro(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(Ba(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Bv(t,r);a.lastAccessedAt=n(),await e.putIndex(zv(a)),i.push(a)}return io(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Vv(e,Va(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=ao({info:i,incomingCompleteness:qa(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=eo(a.slice()),c=qa(s),l=await Xa(i,s),u=Va(t,i.id);return e.transaction(async e=>{let a=await Vv(e,u),o=ao({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:ro(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:to(t),messageID:i.id,info:eo(i),parts:s,partCompleteness:s.map(Ka),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:Wa(i)};return await e.putIndex(zv(d)),await e.putContent({id:u,info:eo(i),parts:s}),{status:`written`,record:ro(d)}})},async removeMessage(t,n){await e.transaction(e=>Hv(e,Va(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(Ba(t));for(let t of n)await Hv(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(Ha(t));for(let t of n)await Hv(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(Ba)),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?Ua(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Hv(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 Jv(e={}){return qv(e.driver??Kv(e.databaseName),e)}function Yv(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??Ng;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Xv=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Zv(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Nv)(),t),i=()=>(n??=(e.createIndexedDBStore??Jv)(),n),a=()=>Yv(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=>Xv([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Qv(e={}){await Zv(e).clearAll()}var $v=(e,t)=>e<t?-1:+(e>t);function ey(e){return e.filter(e=>!!e?.id).sort((e,t)=>$v(e.id,t.id))}async function ty(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,i=await Gh({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=i.records.map(e=>({info:Wu(e.info),parts:ey(e.parts??[])}));if(!e.before&&!i.complete&&iv(a).length>0){let t=B.getScopedSdkClient(e.directory);a=(await av({records:a,complete:i.complete,requestMessage:async n=>{let i=await nv({transport:r(),generation:s(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:i.info,parts:ey(i.parts??[])}}})).records.map(e=>({info:e.info,parts:ey(e.parts??[])}))}return{records:a,cursor:i.cursor??void 0,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:e.limit}}function ny(e){let t=e.client??L,n=Mh(),i=Lh({client:t,activeRegistry:n}),a=pv({client:t,cacheBudget:i,activeRegistry:n,probe:{getTransport:r,getGeneration:s},fetcher:e=>ty({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:om(),historyLimit:sm(),durableStore:e.durableStore??Zv()}),o=W_({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:i,probe:{getTransport:r,getGeneration:s}});return ec(a),mc(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),mc(null),a.destroy(),tc()}}}function ry(e){return nc().apply(U(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var iy=new Map;function ay(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function oy(e,t,n,i={}){let a=i.getTransportIdentity??r,o=i.getGeneration??s,c=a(),l=o(),u=ay(e,t,c,l),d=()=>a()===c&&o()===l,f=iy.get(u)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=f.catch(()=>void 0).then(()=>m);iy.set(u,h);try{if(await f.catch(()=>void 0),!d())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:c,generation:l,isCurrent:d})}finally{p(),iy.get(u)===h&&iy.delete(u)}}var sy=new Set,cy=new Set,ly=new Set,uy=new Set,dy={onDeleteRequest(e){return sy.add(e),()=>{sy.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||sy.forEach(t=>t(e))},onCreateRequest(e){return cy.add(e),()=>{cy.delete(e)}},requestCreate(e){let t=e??{};cy.forEach(e=>e(t))},onDirectoryRequest(e){return ly.add(e),()=>{ly.delete(e)}},requestDirectoryDialog(){ly.forEach(e=>e())},onGitRefreshHint(e){return uy.add(e),()=>{uy.delete(e)}},requestGitRefresh(e){e.directory.trim()&&uy.forEach(t=>t(e))}},fy=e=>e.trim(),py=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session status runtime changed`)},my=(e,t={})=>{let n=fy(e),i=t.transport??r(),a=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,c=t.runtimeProbe??{},l=(c.getGeneration??s)();return et({queryKey:N.sessionStatus.snapshot(n,i),queryFn:async({signal:e})=>{py(i,l,c);let t=o(),r=await a(n,e);if(py(i,l,c),r===null)throw Error(`session status snapshot unavailable`);return{snapshot:r,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},hy=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(my(e,r))},gy=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session active runtime changed`)},_y=(e={})=>{let t=e.transport??r(),n=e.loadActive??(e=>B.getSessionActive(e)),i=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??s)();return et({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{gy(t,o,a);let r=i(),s=await n(e);return gy(t,o,a),{result:s,requestedAt:r}},staleTime:0,gcTime:3e5,retry:!1})},vy=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(_y(n))},yy;function by(e){yy=e}function xy(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 Sy(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Cy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function wy(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 Ty(e,t,n,r=Date.now()){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let i=e.membership,a=t??{},o=new Set([...n,...Object.keys(a)]);if(o.size===0)return{snapshot:null,source:`none`};let s={};for(let e of o){let t=Object.prototype.hasOwnProperty.call(i,e),n=xy(a[e]);if(t){s[e]=n&&Cy(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function Ey(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=xy(t[o]);if(n&&n.type!==`idle`){Sy(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 Dy(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Oy(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 hy(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 vy({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}=Ty(l,h,n);if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=Dy(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Ey(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??yy;if(S){let n=t.getState().session_status??{},r={};for(let e of x){let t=n[e];t&&t.type!==`idle`&&(r[e]={type:t.type})}S(e,r,x)}return _}async function ky({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:Oy(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var Ay=50,jy=e=>{let t=Object.keys(e);if(t.length<=Ay)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Ay).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},My=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:jy(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:h(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),Ny=new Set([`todowrite`,`todoread`]),Py=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),Fy=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Iy=(e,t)=>{My.getState().setSessionTodos(e,t)},Ly=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Ry=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},zy=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},By=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=zy(n);e&&t.push(e)}return t},Vy=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return By(t);if(t&&typeof t==`object`)return By(t.todos)}catch{}return[]},Hy=e=>{if(!Ny.has(Ly(e)))return[];let t=Ry(e);if(t&&Py.has(t))return[];let n=e.state,r=By(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=By(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=By(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?Vy(i):[]};function Uy(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=Hy(r[e]);if(t.length>0)return t}}return[]}function Wy(e){if(!e.sessionID||e.isStale?.()||Fy(e.store.getState().todo,e.sessionID))return!1;let t=Uy(e.transcript);return t.length===0||e.isStale?.()||Fy(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Gy(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(U(e.directory,e.sessionID));return t?Wy({sessionID:e.sessionID,store:e.store,transcript:t,persist:Iy,isStale:e.isStale}):!1}var Ky=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>Gx,COMBINED_SEND_PRESENCE_GRACE_MS:()=>Wx,SESSION_DELETE_UNDO_MS:()=>hx,abortBusySessionForMessageEdit:()=>aS,abortCurrentOperation:()=>Xx,archiveSession:()=>Tx,beginOptimisticSend:()=>Fx,cancelScheduledSessionDeletes:()=>wx,classifySendFailure:()=>zb,combinedSendConfirmationOptions:()=>Kx,commitMessageEdit:()=>sS,createSession:()=>lx,deleteSession:()=>Sx,dirStoreForDirectory:()=>wb,dismissOpenQuestionsForSession:()=>eS,ensureSentUserMessagePresence:()=>Yx,fetchMessagesForSession:()=>pS,fetchRecentSendConfirmationRecords:()=>Hx,forkSession:()=>dS,getSendFailureKind:()=>Lb,getSessionLastAssistantModel:()=>Ab,isQuestionRequestNotFoundError:()=>ox,materializeConfirmedSendRecords:()=>Ux,mirrorSessionIntoLiveStores:()=>Mb,optimisticInsertUserMessage:()=>Bx,optimisticSend:()=>zx,patchSessionMetadata:()=>ux,refetchSessionMessages:()=>lS,rejectQuestion:()=>$x,releaseUnconfirmedQueueSend:()=>xb,requestSessionSmartTitle:()=>Ox,resolveForkMessageId:()=>ab,respondToPermission:()=>Zx,respondToQuestion:()=>Qx,revertToMessage:()=>tS,rollbackOptimisticSend:()=>Lx,scheduleSessionDeletes:()=>Cx,setActionRefs:()=>yb,setOptimisticRefs:()=>bb,settleOptimisticSend:()=>Rx,shareSession:()=>kx,shouldSuppressForkCopyEvent:()=>sb,stageMessageEdit:()=>rS,trackForkCopySessionCreated:()=>tb,unarchiveSession:()=>Ex,unrevertSession:()=>uS,unshareSession:()=>Ax,updateSessionTitle:()=>Dx,waitForConnectionOrThrow:()=>Ub,waitForSessionIdleForMessageEdit:()=>oS}),qy=2,Jy=150,Yy=new Set([`patch`,`step-start`,`step-finish`]),Xy=3,Zy=150,Qy=null,$y=new Map,eb=3e4;function tb(e,t){let n=t?.id;!Qy||Qy.runtimeKey!==i()||Qy.directory!==e||!n||t?.title!==Qy.expectedTargetTitle||n===Qy.sourceSessionID||Qy.targetSessionID||(Qy.targetSessionID=n)}function nb(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function rb(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function ib(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function ab(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!n||n.type===`idle`)return e;for(let e=t.length-1;e>=0;--e)if(t[e]?.role===`user`)return t[e].id}async function ob(e,t){let n=vd(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return B.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function sb(e,t,n){if(Qy&&Qy.runtimeKey===i()&&Qy.directory===e&&t&&t===Qy.targetSessionID)return!0;if(!t||!n)return!1;let r=`${i()}:${e}:${t}`,a=$y.get(r);return a?a.expiresAt<=Date.now()?($y.delete(r),!1):n<=a.messageID:!1}var cb=null,lb=null,ub=()=>``,db=new Map,fb=null,pb=null,mb=null,hb=e=>new Promise(t=>setTimeout(t,e));function gb(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 _b(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${gb(e.error)}`);throw n!==void 0&&(r.status=n),r}function vb(e,t){let n=_b(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function yb(e,t,n){if(cb=e,lb=t,ub=n,db.size>0){let e=[...db.values()];db.clear(),queueMicrotask(()=>{for(let t of e)pS(t.sessionID,t.directory)})}}function bb(e,t,n){fb=e,pb=t,mb=n??null}function xb(e){let t=e.directory??null;pb?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Sb(){if(!cb)throw Error(`SDK not initialized — is SyncProvider mounted?`);return cb}function Cb(){if(!lb)throw Error(`Child stores not initialized`);let e=ub();if(!e)throw Error(`No current directory`);return lb.ensureChild(e)}function wb(e,t){if(!lb)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return lb.ensureChild(e,t)}function Tb(e,t){let n=t??Yb(e);return n?{store:wb(n),directory:n}:{store:Cb(),directory:Nb()}}function Eb(e,t){let{store:n,directory:r}=Tb(e,t??void 0),i=r??Nb()??``;return{repository:H()??rc(i,n),directory:i,store:n}}function Db(e,t){let{repository:n,directory:r,store:i}=Eb(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function Ob(e,t){return kc(Db(e,t).data)}function kb(e,t){return Db(e,t).data.messageOrder.length}function Ab(e){try{let t=Ob(e);for(let e=t.length-1;e>=0;--e){let n=t[e];if(n?.role===`assistant`&&typeof n.providerID==`string`&&n.providerID&&typeof n.modelID==`string`&&n.modelID)return{providerID:n.providerID,modelID:n.modelID}}return null}catch{return null}}function jb(e,t){let n=lb;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]=Yw(e,n[r]),t.setState({session:i}),!0}return!1}function Mb(e,t){t&&jb(e,t)||jb(e)}function Nb(){return ub()||void 0}function Pb(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function Fb(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 Ib=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 Lb(e){return e instanceof Ib?e.kind:null}function Rb(e){let t=Fb(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 zb(e,t){return t?Rb(e)||Fb(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var Bb=2e3,Vb=5e3,Hb=3e4;async function Ub(){let e=Hp();e&&Vp(`send_stream_stale`);let t=Date.now()+(e?Vb:Bb);for(;Date.now()<t;){if(G.getState().isConnected&&!Hp()||o()&&!Hp())return;let e=t-Date.now();if(e<=0)break;if(await G.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Hp())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw Pb()}function Wb(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Vp(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},Hb);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function Gb(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Kb(e){e&&Y.getState().upsertSession(e)}function qb(e,t){let n=Hu(t),r=[...e.getState().session],i=Ji.search(r,n.id,e=>e.id);if(i.found){let t=Yw(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 Jb(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=Gb(e);if(i)return qb(t,i);try{return qb(t,await B.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function Yb(e){return Xb(e)||$.getState().getDirectoryForSession(e)||Nb()}function Xb(e){let t=lb;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 Zb(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):Sb()}function Qb(e){np.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&&np.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var $b=()=>new Map(Array.from(vl(),([e,t])=>[e,t.title||e]));function ex(e){return!(e.type!==`file`||cp(e))}function tx(e){return ex(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function nx(e){return e.some(tx)}async function rx(e){let t=[...e.parts];if(!nx(t))return t;let n=s(),r=e.directory??``;try{await uc(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||s()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=Eb(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],nx(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function ix(e){if(nx(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await Cp(e.parts,{sessionTitles:$b(),directory:e.directory}),n=np.getState(),r=n.getDraft(e.key);return{payload:t,commit:await Op({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function ax(e,t,n){let r=lb;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 ox(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 sx(e,t){let n=lb;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 cx(e,t,n){let r=ax(e,t,n);return r?B.getScopedSdkClient(r):Zb(t)}async function lx(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??Nb()),a=i.directory??null;return a&&ul(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 ux(e,t,n){let r=t??Yb(e),i=n(vd(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&ul(a.id,o),a}async function dx(e,t){let n;try{n=await B.getSession(e,t??Yb(e))}catch{return}if(!Sd(n))return;let r=xd(n);if(r)try{await ux(r,t??Yb(r),t=>Td(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 fx(e,t){if(!lb)return[];let n=[],r=new Set,i=[];if(t){let e=lb.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of lb.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 px(e){if(lb)for(let t of e){let e=lb.children.get(t.directory);e&&e.setState({session:t.sessions})}}function mx(e){$.getState().setWorktreeMetadata(e,null)}var hx=1e4,gx=new Map,_x=0;function vx(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function yx(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),px(e.listSnapshots),Kb(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function bx(e,t){let n=t??Yb(e);Y.getState().markSessionsPendingDeletion([e]);let r=fx(e,n),i=Gb(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 xx(e,t){try{if(await dx(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return fx(e,t),Y.getState().removeSessions([e]),mx(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(fx(e,t),Y.getState().removeSessions([e]),mx(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function Sx(e,t){let n=bx(e);return await xx(e,n.directory)?!0:(yx(n),!1)}function Cx(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>bx(e)),i=`session-delete-${Date.now()}-${_x+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=gx.get(i);if(!e)return;gx.delete(i);let t=[],n=[];for(let r of e.entries)await xx(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),yx(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return gx.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function wx(e){if(!e)return!1;let t=gx.get(e);if(!t)return!1;clearTimeout(t.timer),gx.delete(e);for(let e of[...t.entries].reverse())yx(e);return!0}async function Tx(e){let t=Yb(e),n=fx(e,t),r=Gb(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await dx(e,t);let n=await B.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),px(n),Kb(r),!1}}async function Ex(e){let t=Yb(e),n=Gb(e),r=n?vx(n):null;if(r&&(Y.getState().upsertSession(r),t&&lb)){let e=lb.children.get(t);e&&qb(e,r)}try{let n=await B.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=vx(n);if(Y.getState().upsertSession(r),t&&lb){let e=lb.children.get(t);e?qb(e,r):Mb(r,t)}else Mb(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&fx(e,t)),!1}}async function Dx(e,t){let n=Yb(e),r=Gb(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Mu(r):0,c=await B.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),Mb(c,n)}async function Ox(e){let t=Yb(e),n=Gb(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await B.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),Mb(s,t)}async function kx(e){let t=Yb(e),n=Hu(vb(await Sb().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),jb(n,t),n}async function Ax(e){let t=Yb(e),n=Hu(vb(await Sb().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),jb(n,t),n}function jx(e){let t=lb,n=e??ub();if(!t||!n)return{store:e?wb(e):Cb(),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 Mx(){return{identity:r(),generation:s()}}function Nx(e,t){return e.isCurrent()&&r()===t.identity&&s()===t.generation}function Px(e,t){if(!Nx(e,t))throw Error(`Send target changed before transport dispatch`)}function Fx(e){if(!fb||!pb)throw new Ib(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??Nb()??null,n=jx(t),r=Mx();Px(n,r),e.beforeOptimisticInsert?.(),Px(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),Bx({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 Ib?e:new Ib(Lb(e)??zb(e,!1),e)}}function Ix(e){if(!Nx(e.capture,e.transport)||!pb)return;pb({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 Lx(e){Ix(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function Rx(e){if(!fb||!pb)throw new Ib(`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 Ub(),Px(n,r),s=!0,await Wb(e.send(i)),!Nx(n,r))throw new Ib(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Lb(c)??zb(c,s),u=c instanceof Ib?c:new Ib(l,c,i);if(!Nx(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await Hx(a,i,o):null;if(d&&Nx(n,r)){Ux(n.store,a,i,d,{directory:o??void 0}),mb?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||Ix(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function zx(e){await Rx({ticket:e.ticket??Fx({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 Bx(e){if(!fb)return!1;let t=e.directory??Nb(),n=t?wb(t):Cb(),i=t??Nb()??``;if(qx(n,e.sessionId,e.messageID,i)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),c={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},l=A_(()=>Db(e.sessionId,t).data);fb({sessionID:e.sessionId,directory:t,message:c,parts:a});let u=A_(()=>Db(e.sessionId,t).data);try{l&&u&&j_({trigger:`user-send`,sessionID:e.sessionId,directory:i,transport:r(),generation:s(),before:l,after:u})}catch{}let d=n.getState();return n.setState({session_status:{...d.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...d.session_status_observed_at,[e.sessionId]:o}}),!0}function Vx(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function Hx(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??qy,c=r?.retryDelayMs??Jy;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!Vx(r?.isCurrent)||a>0&&(await hb(c),i?.signal.aborted||!Vx(r?.isCurrent)))return null;try{let a=await Sb().session.messages({sessionID:e,directory:n??void 0,limit:um(),...i?{signal:i.signal}:{}});if(!Vx(r?.isCurrent))return null;let o=(_b(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 Ux(e,t,n,r,i){if(!r.length)return;let a=i?.directory??Yb(t)??ub(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:Wu(e.info),parts:e.parts??[]})),skipPartTypes:Yy,merge:i?.gapFillOnly===!0?Pa:Ia({purpose:`recovery`})};ac(o,s)||rc(a,e).apply(o,s)}var Wx=2e3,Gx={attempts:12,retryDelayMs:500},Kx={presenceGraceMs:Wx,recovery:{...Gx}};function qx(e,t,n,r){let i=r??Yb(t)??ub()??``,a=H()??rc(i,e),o=U(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function Jx(e,t,n,r){let i=r?.directory??Yb(t)??ub()??``;if(qx(e,t,n,i))return Promise.resolve(!0);if(!Vx(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()??rc(i,e),f=U(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!Vx(r?.isCurrent)){l(!1);return}qx(e,t,n,i)&&l(!0)}),qx(e,t,n,i)&&l(!0)})}async function Yx(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await Jx(t,n,r,{timeoutMs:e.graceMs??Kx.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!Vx(a))return`cancelled`;let o=await Hx(n,r,i,{...Kx.recovery,isCurrent:a});return o?Vx(a)?(Ux(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:Vx(a)?`missing`:`cancelled`}async function Xx(e){let{store:t,directory:n}=Tb(e),i=n?{state:`bound`,transportIdentity:r(),directory:n,sessionID:e}:null,a=i?$.getState().beginQueueAbortBlock(i):null;try{if(vb(await Sb().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){i&&a&&$.getState().clearQueueAbortBlock(i,a),Xe(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>Lz);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function Zx(e,t,n){await Ub();let r=ax(`permission`,e,t)||Yb(e)||Nb();if(vb(await cx(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function Qx(e,t,n){await Ub();let r=ax(`question`,e,t)||Yb(e)||Nb();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(vb(await cx(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw ox(n)&&sx(e,t),n}}async function $x(e,t){await Ub();let n=ax(`question`,e,t)||Yb(e)||Nb();try{if(vb(await cx(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw ox(n)&&sx(e,t),n}}async function eS(e){if(!e)return!1;let t=lb;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=rp(t.session,e);if(i.size===0)continue;let a=t.question??{};for(let e of i){let t=a[e];if(t)for(let r of t)n.push({sessionId:e,requestId:r.id})}}if(n.length===0)return!1;for(let{sessionId:e,requestId:t}of n)sx(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await $x(e,t)}catch(e){if(ox(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function tS(e,t,n){let i=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return oy(e,i??(()=>{try{return Tb(e,i).directory}catch{return i}})(),async({isCurrent:n})=>{let{store:o,directory:c}=Tb(e,i);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Sb().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=Ob(e,c).find(e=>e.id===t),d=Ob(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}=Eb(e,c),m=[...f.getParts(U(p,e),t)],h=a===void 0?s?C({transportIdentity:r()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await rx({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await Cp(m,{sessionTitles:$b(),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=np.getState(),r=await Op({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 Ap({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await B.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await Ap({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&&dy.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 Ap({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await Ap({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function nS(e,t,n,i){let a=i??Yb(t)??ub(),o=U(a,t),c=A_(()=>Db(t,a).data),l=[...ic(t)];l.some(e=>e.directory===a&&e.sessionID===t)||l.push(o);let u=!1;for(let e of l)ac(e,{type:`remove-message`,messageID:n})!=null&&(u=!0);u||rc(a,e).apply(o,{type:`remove-message`,messageID:n});let d=A_(()=>Db(t,a).data);try{c&&d&&j_({trigger:`user-delete`,sessionID:t,directory:a,transport:r(),generation:s(),before:c,after:d})}catch{}}async function rS(e,t,n,i){let a=n?.info,o=n?.parts,s=i?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=Tb(e,s).directory}else{c=Tb(e,s).directory;let{data:n}=Db(e,c),r=kc(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=i?.draftKey??C({transportIdentity:r()},e),{commit:u}=await ix({key:l,parts:await rx({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 Ap({key:l,restoredRevision:d,previous:f})).status})}}function iS(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 aS(e,t){let n=t?.directory,{store:r,directory:i}=Tb(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Sb().session.abort({sessionID:e,directory:i})}catch{}}async function oS(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=Tb(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 sS(e,t,n){let i=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:c}=Tb(e,i),l=A_(()=>Db(e,i).data);try{await aS(e,{directory:i}),await oS(e,{directory:i});let n=new Set((await cS(e,i)).map(e=>e.id)),r=iS(t,Ob(e,i),n,{preserveMessageId:a});for(let t of[...r].reverse())await B.deleteSessionMessage(e,t.id,c),nS(o,e,t.id,c)}finally{try{let t=A_(()=>Db(e,i).data);l&&t&&j_({trigger:`user-edit`,sessionID:e,directory:c,transport:r(),generation:s(),before:l,after:t})}catch{}}}async function cS(e,t){let{directory:n}=Tb(e,t);return(_b(await Sb().session.messages({sessionID:e,directory:n,limit:lm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>Wu(e.info))}async function lS(e,t){let{store:n,directory:i}=Tb(e,t),a=A_(()=>Db(e,t).data),o=(_b(await Sb().session.messages({sessionID:e,directory:i,limit:lm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=A_(()=>Db(e,t).data);a&&n&&j_({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let c=o.map(e=>({info:Wu(e.info),parts:e.parts??[]})),l=U(i??ub(),e);ac(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Yy})||rc(i??ub(),n).apply(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Yy});try{let n=A_(()=>Db(e,t).data);a&&n&&j_({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return c.map(e=>e.info)}async function uS(e,t){return oy(e,t??(()=>{try{return Tb(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=Tb(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=kb(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Sb().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Sb().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=vb(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<Xy;r+=1){if(r>0&&(await hb(Zy),!n())||(await lS(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(kb(e,i)>o)return}if(kb(e,i)<=o){let n=i??ub(),a=H()??rc(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await lS(e,t)}})}async function dS(e,t,n,r){let a=i(),{store:o,directory:s}=Tb(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await Jb(e,o,s);ul(e,s);let l=o.getState(),u=l.session_status[e],d=Ob(e,s);u?.type,d.length;let f=ab(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await lS(e),l=o.getState(),u=l.session_status[e],d=Ob(e,s),f=ab(void 0,d,u)),!n&&l.session_status[e]?.type!==`idle`&&!f)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:kb(e,s)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=Db(e,s),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(U(s,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!cp(e)).map(e=>e.text||e.content||``).join(`
|
|
457
457
|
`).trim();let v=g.filter(e=>e.type===`file`&&!cp(e));Qy={operationId:t,runtimeKey:a,directory:s,sourceSessionID:e,expectedTargetTitle:nb(c.title)},await rb(t,`copying`);let y;try{if(y=await B.forkSession(e,f,s),y.id,i()!==a)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),Qy?.operationId===t&&(Qy=null),!1;await rb(t,`opening`);try{y=await ob(y,s)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw Qy?.operationId===t&&(Qy=null),e}try{let r=[...o.getState().session],a=Ji.search(r,y.id,e=>e.id);a.found||(r.splice(a.index,0,y),o.setState({session:r}));let c=U(s,y.id),l=H();l&&typeof l.destructiveReset==`function`?await l.destructiveReset(c):ac(c,{type:`reset`}),ib(t,y.id);let u=$.getState().currentSessionId,d=u===e||u===y.id;d&&$.getState().setCurrentSession(y.id,s),await rb(t,`loading`),y.id;let f=H()??rc(s,o),p=U(s,y.id),m=f.getRequestState?.(p);(!(f.hasSession?.(p)??!1)||m?.status===`error`)&&await pS(y.id,s);let g=Ob(y.id,s).at(-1)?.id;g&&$y.set(`${i()}:${s}:${y.id}`,{messageID:g,expiresAt:Date.now()+eb}),d&&h&&_&&np.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&Qb(v)}finally{Qy?.operationId===t&&(Qy=null)}return y.id,!0}var fS=new Map;async function pS(e,t){let n=t??Nb();if(!n)return;let r=i(),a=cm(),o=`${r}:${n}:${e}:${a}`;if(!cb||!lb){db.set(o,{sessionID:e,directory:n});return}let s=fS.get(o);if(s)return s;let c=mS(e,n,r,a).finally(()=>{fS.get(o)===c&&fS.delete(o)});return fS.set(o,c),c}async function mS(e,t,n,r){Sb();let i=wb(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=H()??rc(t,i),l=U(t,e),u=c.getTranscript(l),d=c.getPagination(l),f=c.getRequestState?.(l),p=e=>e.role===`user`||e.clientRole===`user`,m=u.messageOrder.map(e=>u.messagesByID[e]).filter(e=>!!e),h=m.some(p),g=d.boundary,_=g.kind===`has-more`||g.kind===`exhausted`,v=(c.hasSession?.(l)??m.length>0)&&(h||g.kind===`exhausted`)&&_&&f?.status!==`error`,y=()=>$.getState().currentSessionId!==e;if(v){if(qp(t,e)){Gy({directory:t,sessionID:e,store:i,transcript:u});return}if(H()){try{await sc(t,e)}catch{return}if(y())return;Gy({directory:t,sessionID:e,store:i,isStale:y}),await ky({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}Gy({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await ty({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:Yy}),b=n.records.length,Jp(t,e)}catch{return}y()||(Gy({directory:t,sessionID:e,store:i,isStale:y}),await ky({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var hS=new Map,gS=e=>{hS.set(e,(hS.get(e)??0)+1)},_S=e=>(hS.get(e)??0)>0,vS=e=>{let t=hS.get(e)??0;return t<=0?!1:(t===1?hS.delete(e):hS.set(e,t-1),!0)},yS=18e4,bS=400,xS=300,SS=15,CS=`FINAL_REVIEW_STATUS: no_remaining_findings`,wS=CS.toLowerCase(),TS=new Set,ES=new Set,DS=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},OS=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},kS=e=>{let t=e.role;return typeof t==`string`?t:``},AS=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},jS=(e,t)=>xl(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`}),MS=(e,t,n,r=0,i)=>{let a=bl(e,t),o=new Set;for(let e of a)jS(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(kS(s)!==`assistant`||!DS(s)||OS(s)<r-1e3)continue;let c=AS(s);if(!BS(s,i)||c&&o.has(c))continue;let l=gd(xl(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},NS=(e,t)=>Sl(e,t)?.type===`idle`,PS=e=>e===i(),FS=e=>{Ed.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},IS=e=>{if(e&&!PS(e))throw Error(`Auto-review stopped because the runtime changed.`)},LS=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),RS=e=>e.trim().split(`
|
|
458
458
|
`).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===wS,zS=e=>{let t=e.trimEnd().split(`
|
|
459
459
|
`);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===wS&&t.pop(),t.join(`
|