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