@openchambery/web 1.19.7-beta.23 → 1.19.7-beta.24

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 (38) hide show
  1. package/dist/assets/{AssistantView-DnyyfijA.js → AssistantView-DDIVh1W4.js} +1 -1
  2. package/dist/assets/{DiagramView-CmDhIVNM.js → DiagramView-DZhC-gPw.js} +1 -1
  3. package/dist/assets/{MarkdownRenderer-CYxjID_o.js → MarkdownRenderer-Dd7nPtW4.js} +2 -2
  4. package/dist/assets/{MarkdownRendererImpl-ClYIyrMs.js → MarkdownRendererImpl-CuGusb9c.js} +1 -1
  5. package/dist/assets/{MarkstreamRendererImpl-Bhf6MjVM.js → MarkstreamRendererImpl-DANegq9r.js} +1 -1
  6. package/dist/assets/{MobileDetailNavigation-CzgJl7Uk.js → MobileDetailNavigation-DXLN8AfE.js} +1 -1
  7. package/dist/assets/{MobileShareBridge-CFdjHKh9.js → MobileShareBridge-BVHXNDqj.js} +1 -1
  8. package/dist/assets/{MobileSurface-BvLyGs0q.js → MobileSurface-DZys0gQW.js} +1 -1
  9. package/dist/assets/{MultiRunWindow-CrnajoKJ.js → MultiRunWindow-DNSCvp1n.js} +1 -1
  10. package/dist/assets/{SettingsView-0FY9t3ks.js → SettingsView-CW0sP1G5.js} +1 -1
  11. package/dist/assets/{SettingsWindow-D9_TpHvU.js → SettingsWindow-BbY8rAaP.js} +1 -1
  12. package/dist/assets/{TerminalView-FHE1y7Rc.js → TerminalView-Blou_qZo.js} +1 -1
  13. package/dist/assets/{ToolOutputDialog-BQQCyAIv.js → ToolOutputDialog-D69bhD7_.js} +1 -1
  14. package/dist/assets/{appThemeRegistry-DRgfES2-.js → appThemeRegistry-DTf7Ymvj.js} +1 -1
  15. package/dist/assets/{gitApi-PgyLWRJ4.js → gitApi-s3lJ_NUC.js} +1 -1
  16. package/dist/assets/{insertionBoundaries-oX8n2eyf.js → insertionBoundaries-BXIh3qwN.js} +1 -1
  17. package/dist/assets/{main-pTkgNYyy.js → main-6h4AIMd7.js} +4 -4
  18. package/dist/assets/{main-MCCDlkKL.js → main-CbWB2MxW.js} +2 -2
  19. package/dist/assets/{miniChat-C5wINdvz.js → miniChat-DuYRiHjj.js} +2 -2
  20. package/dist/assets/{mobile-BXg2UrBv.js → mobile-DKja4fFV.js} +2 -2
  21. package/dist/assets/{multirun-DTyaNxOe.js → multirun-CWbdKSsT.js} +1 -1
  22. package/dist/assets/{projectMeta-D5AqXZCQ.js → projectMeta-BjeUc8MG.js} +1 -1
  23. package/dist/assets/{renderElectronMiniChatApp-DTFe_pBQ.js → renderElectronMiniChatApp-Cv1F39fu.js} +2 -2
  24. package/dist/assets/{renderMobileApp-CswWLJ7w.js → renderMobileApp-C4zDY0CW.js} +4 -4
  25. package/dist/assets/{runtimeConfig-Bg6u3gt_.js → runtimeConfig-D0G_wzhg.js} +1 -1
  26. package/dist/assets/{runtimeEndpointReset-BevMQSiF.js → runtimeEndpointReset-Cx37ZLh4.js} +1 -1
  27. package/dist/assets/{sessionLookup-CLg-1Ci8.js → sessionLookup-B56D_zE1.js} +1 -1
  28. package/dist/assets/{src-CIorwNis.css → src-Cs2WiOMc.css} +1 -1
  29. package/dist/assets/{useAppFontEffects-B4eO7oyM.js → useAppFontEffects-i1QzgXKU.js} +6 -6
  30. package/dist/assets/{useDesktopWindowControlsLayout-B41gNDmw.js → useDesktopWindowControlsLayout-BqT0VDLV.js} +1 -1
  31. package/dist/assets/{useEffectiveDirectory-BARv-bsR.js → useEffectiveDirectory-CUSBKiSi.js} +1 -1
  32. package/dist/assets/{useMobileNavigationStore-CGP1KZGX.js → useMobileNavigationStore-C-EBQ7Zt.js} +1 -1
  33. package/dist/assets/{useSessionAutoCleanup-CBUmJrN4.js → useSessionAutoCleanup-mitMfzXN.js} +1 -1
  34. package/dist/assets/{useWorkerHighlightedLines-CQWcdVml.js → useWorkerHighlightedLines-BZHDVxzL.js} +1 -1
  35. package/dist/index.html +3 -3
  36. package/dist/mini-chat.html +3 -3
  37. package/dist/mobile.html +3 -3
  38. package/package.json +1 -1
@@ -397,7 +397,7 @@ Use the results below as source material. Do not mention that the inputs were hi
397
397
  `).replace(/\n\s*\n+/g,`
398
398
  `),Np=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Pp=e=>{let t=e?.metadata;return Np(t)?t:{}},Fp=e=>{let t=e.openchamber;return Np(t)?t:{}},Ip=e=>{let t=Fp(Pp(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Lp=e=>{let t=Fp(Pp(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Rp=e=>Fp(Pp(e)).kind===`review`&&!!Lp(e),zp=(e,t)=>{let n=Fp(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Bp=(e,t)=>{let n=Fp(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},Vp=(e,t)=>{let n=Fp(e);if(n.reviewSessionID!==t)return e;let r={...n};delete r.reviewSessionID;let i={...e};return Object.keys(r).length>0?i.openchamber=r:delete i.openchamber,i},Hp=Oe()(ke((e,t)=>({runsByOriginalSessionID:{},upsertRun:t=>e(e=>({runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t.originalSessionID]:t}})),updateRun:(t,n)=>e(e=>{let r=e.runsByOriginalSessionID[t];return r?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:n(r)}}:e}),stopRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`stopped`}}}:e}),completeRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`completed`}}}:e}),stopRunningRunsForRuntime:t=>e(e=>{let n=!1,r={...e.runsByOriginalSessionID};for(let[e,i]of Object.entries(r))i.runtimeKey===t&&i.status===`running`&&(r[e]={...i,status:`stopped`},n=!0);return n?{runsByOriginalSessionID:r}:e}),isRunningForSession:e=>t().runsByOriginalSessionID[e]?.status===`running`}),{name:`auto-review-store`,storage:g(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),Up=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},Wp=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=Up(t.parentSessionId),r=Up(t.sessionId);if(!(!n||!r||n===r))return{parentSessionId:n,sessionId:r}},Gp=e=>{let t=[];for(let n of e){if(n?.type!==`tool`||n.tool!==`task`)continue;let e=n.state;if(!e||typeof e!=`object`||Array.isArray(e))continue;let r=e;if(r.status!==`running`)continue;let i=r.metadata,a=Wp(i);a&&t.push(a)}return t},Kp=[],qp=(e,t,n)=>{let r=new Map;for(let t of e){if(!t.parentID)continue;let e=r.get(t.parentID)??[];e.push(t.id),r.set(t.parentID,e)}if(n)for(let e of n){let t=r.get(e.parentSessionId)??[];t.push(e.sessionId),r.set(e.parentSessionId,t)}let i=new Set([t]),a=[t];for(let e of a){let t=r.get(e);if(t)for(let e of t)i.has(e)||(i.add(e),a.push(e))}return i},Jp=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0},Yp=(e,t,n,r,i)=>{if(!n)return r;let a=qp(e,n,i);if(a.size===0)return r;let o=new Set,s=[];for(let e of a){let n=t[e];if(n)for(let e of n)o.has(e.id)||(o.add(e.id),s.push(e))}return s.length===0?r:s},Xp=`GitHub issue context (JSON)`,Zp=`GitHub pull request context (JSON)`,Qp=e=>!e||typeof e!=`object`?!1:!!e.synthetic,$p=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>Qp(e)),em=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!Qp(e)),n=e=>{if(!Qp(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(Xp)||n.startsWith(Zp)};return t&&e.some(e=>Qp(e))?e.filter(e=>!Qp(e)||n(e)):e},tm=new Map,nm=new Map,rm=new Map,im=e=>{tm.set(e,(tm.get(e)??0)+1)},am=e=>(tm.get(e)??0)>0,om=e=>{let t=tm.get(e)??0;return t<=0?!1:(t===1?tm.delete(e):tm.set(e,t-1),!0)},sm=(e,t)=>{nm.set(e,t)},cm=e=>nm.get(e)??null,lm=e=>{nm.delete(e)},um=({sessionId:e,currentUserOrder:t,animatedIds:n})=>{let r=rm.get(e),i=null;if(am(e)){let r=t[t.length-1];r!==void 0&&!n.has(r)&&om(e)&&(sm(e,r),n.add(r),i=r)}if((!r||t.length>=r.length)&&rm.set(e,t),i!==null)return i;let a=cm(e);return a===null?null:(t.includes(a)&&n.add(a),a)},dm=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},fm=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,pm=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},mm=e=>e.replace(/\\/g,`/`),hm=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,gm=e=>{if(!e.startsWith(`file:`))return null;try{let t=new URL(e);if(t.protocol!==`file:`)return null;let n=decodeURIComponent(t.pathname);return/^\/[A-Za-z]:/.test(n)&&(n=n.slice(1)),t.hostname&&t.hostname!==`localhost`&&!/^[A-Za-z]:/.test(n)&&(n=`//${t.hostname}${n.startsWith(`/`)?n:`/${n}`}`),mm(n)}catch{return null}},_m=(e,t)=>{let n=hm(mm(e)),r=hm(mm(t));if(!r||!n)return null;let i=/^[A-Za-z]:/.test(n)?n[0].toLowerCase()+n.slice(1):n,a=/^[A-Za-z]:/.test(r)?r[0].toLowerCase()+r.slice(1):r;return i===a?``:i.startsWith(`${a}/`)?i.slice(a.length+1):null},vm=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),ym=(e,t)=>{let n=mm(e),r=hm(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=_m(n,t);if(r!==null){let t=hm(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return vm(a)},bm=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},xm=(e,t,n)=>{let r=0;for(;r<e.length;){let i=e.indexOf(t,r);if(i<0)return null;let a=i+t.length,o=`${i}:${a}`,s=i>0?e[i-1]:``,c=e[a]??``,l=!s||/[\s([{"'`,.;:!?]/.test(s),u=!c||/[\s)\]}"'`,.;:!?]/.test(c);if(!n.has(o)&&l&&u)return{start:i,end:a};r=i+1}return null},Sm=e=>{let t=e.source&&typeof e.source==`object`?e.source:null,n=typeof t?.value==`string`?t.value.trim():``;if(n){let e=n.startsWith(`@`)?n:`@${n}`,t=e.slice(1);if(t)return{token:e,name:t}}let r=typeof e.name==`string`?e.name.trim():``;if(!r)return null;let i=r.startsWith(`@`)?r.slice(1):r;return i?{token:`@${i}`,name:i}:null},Cm=async(e,t={})=>{let n=t.createID??fe,r=t.directory??t.root??null,i=e.filter(e=>!Qp(e)),a=i.filter(e=>e.type===`text`),o=i.filter(e=>e.type===`agent`),s=i.filter(e=>e.type===`file`),c=a.map(fm).join(`
399
399
  `),l=[];for(let e of o){let t=Sm(e);t&&l.push(t)}for(let e of[...l].reverse())xm(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=E(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=xm(c,e.token,p);t&&(p.add(`${t.start}:${t.end}`),f.push({kind:`agent`,value:e.name,path:e.name,label:e.name,range:t}))}let m=[],h=new Map;for(let e of s){if(e.slim===!0)continue;let t=typeof e.url==`string`?e.url:``;if(!t)continue;let i=typeof e.mime==`string`?e.mime:`application/octet-stream`,a=typeof e.filename==`string`?e.filename:`attachment`,o=t.startsWith(`file:`)?gm(t):null;if(o){let e=ym(o,r),t=null;for(let n of e){let e=xm(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=pm(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=ue(s);if(t.startsWith(`data:`)){let e=await bm(t);h.set(l,e),m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:e.type||i,size:e.size,source:`local`,locator:{kind:`blob`,blobID:s}});continue}if(dm(t)){if(!ie(t))throw Error(`composer-restoration-url-too-long`);m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:i,size:0,source:t.startsWith(`file:`)?`server`:`local`,locator:{kind:`url`,url:t},...t.startsWith(`file:`)&&o?{serverPath:o}:{}}),h.set(l,t);continue}throw Error(`composer-restoration-invalid-attachment-url`)}f.sort((e,t)=>e.range.start-t.range.start);let g=ae(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=we(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},wm=async(e,t={})=>{let n=t.createID??fe,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=we(r,i),o=ae(r,e.composerMentions??[]);if(!a||!o)throw Error(`composer-restoration-invalid-sidecars`);if(e.draftAttachments)return{snapshot:{text:r,composerReferences:a.references,attachments:[...e.draftAttachments],syntheticParts:e.syntheticParts??[],mentions:o},values:e.draftValues??new Map};let s=[],c=new Map;for(let t of e.attachments??[]){let e=t.id||n(),r=ue(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await bm(i);c.set(r,n),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||n.type||`application/octet-stream`,size:n.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}if(dm(i)){if(!ie(i)){if(!(t.file instanceof Blob))throw Error(`composer-restoration-url-too-long`);c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType,size:t.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`url`,url:i},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}}),c.set(r,i);continue}if(t.file&&t.file.size>=0){c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}throw Error(`composer-restoration-invalid-attachment`)}return{snapshot:{text:r,composerReferences:a.references,attachments:s,syntheticParts:e.syntheticParts??[],mentions:o},values:c}},Tm=e=>e?JSON.parse(JSON.stringify(e)):null,Em=e=>e?{...e}:{},Dm=(e,t=Or.getState())=>{let n=t.getDraft?.(e)??null,r=Em(t.draftAttachmentViews?.[R(e)]);return{record:Tm(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},Om=async e=>{let t=e.input??Or.getState(),n=Dm(e.key,{getDraft:t.getDraft?.bind(t),draftAttachmentViews:t.draftAttachmentViews}),r;try{r=await t.commitDraftSnapshot({key:e.key,expectedRevision:e.expectedRevision,runtime:e.runtime??t.captureDraftRuntime(),snapshot:e.payload.snapshot,values:e.payload.values})}catch{return{status:`failed`,current:!1,durable:!1,previous:n}}return{status:r.status,current:r.current,durable:r.durable,result:r,previous:n}},km=async e=>{let t=e.store.getDraft(e.key);if(!t||t.revision!==e.restoredRevision)return{status:`conflict`,current:!0};if(!e.previous.record)try{let t=await e.store.deleteDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}let n=e.previous.record,r=new Map;for(let t of[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)]){let n=e.previous.views[t.attachmentRefID];t.locator.kind===`url`?r.set(t.attachmentRefID,t.locator.url):n?.file?r.set(t.attachmentRefID,n.file):n?.dataUrl&&r.set(t.attachmentRefID,n.dataUrl)}try{let t=await e.store.commitDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime,snapshot:{text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}},values:r});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}},Am=async e=>{let t=e.input??Or.getState(),n=t.getDraft(e.key);if(!n||n.revision!==e.restoredRevision)return{status:`conflict`,current:!0};let r=e.key.transportIdentity,i=e.runtime?.transportIdentity===r?e.runtime:void 0,a;try{let e=t.captureDraftRuntime();e.transportIdentity===r&&(a=e)}catch{}let o=i??a;return o?km({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},jm=(e,t,n)=>{let r=n.getDraft(e);if(r)return[...r.attachments,...r.syntheticParts.flatMap(e=>e.attachments)].find(e=>e.attachmentID===t)?.attachmentRefID},Mm=e=>e?.status===`committed`&&e.current===!0,Nm=new Map,Pm=async(e,t)=>{let n=R(e),r=Nm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Nm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Nm.get(n)===o&&Nm.delete(n)}},Fm=(e,t)=>({key:e,addLocal:async n=>{await Pm(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Pm(e,async()=>{let r=t(),i=jm(e,n,r);if(!i)return!(r.getDraft(e)&&[...r.getDraft(e)?.attachments??[],...r.getDraft(e)?.syntheticParts.flatMap(e=>e.attachments)??[]].some(e=>e.attachmentID===n));try{await r.removeDraftAttachment(e,i)}catch{}let a=r.getDraft(e);return!a||![...a.attachments,...a.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.attachmentID===n)})}catch{return!1}},clearRootAttachments:async()=>{try{return await Pm(e,async()=>{let n=t(),r=n.getDraft(e);return!r||r.attachments.length===0||n.setDraftAttachments(e,[])?.attachments.length===0})}catch{return!1}},restoreRootAttachments:async n=>{try{return await Pm(e,async()=>{let r=async()=>t().restoreDraftRootAttachments(e,n),i=await r();return i.status===`conflict`&&(i=await r()),i.status===`failed`||i.status===`stale`?!1:Mm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Pm(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Pm(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Pm(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Im=4e4,Lm=0,Rm=null;function zm(e=Date.now()){Lm=e}function Bm(e){return Rm=e,()=>{Rm===e&&(Rm=null)}}function Vm(e){Rm?.(e)}function Hm(e=Date.now(),t=Im){return Lm<=0?!1:e-Lm>=t}var Um=3e4,Wm=200,Gm=new Map;function Km(e,t,n){return`${n?.transport??i()}\n${n?.generation??h()}\n${e.trim()}\n${t}`}function qm(e,t,n){if(!e||!t)return!1;let r=Gm.get(Km(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Um}function Jm(e,t,n){if(!e||!t)return;let r=Km(e,t,n);for(Gm.has(r)&&Gm.delete(r);Gm.size>=Wm;){let e=Gm.keys().next().value;if(typeof e!=`string`)break;Gm.delete(e)}Gm.set(r,n?.now??Date.now())}var Ym=768,Xm=()=>{if(typeof window>`u`)return!1;let e=typeof window.matchMedia==`function`?window.matchMedia(`(pointer: coarse)`).matches||window.matchMedia(`(hover: none)`).matches:!1,t=typeof navigator<`u`?navigator.maxTouchPoints??0:0;return e||t>0},Zm=()=>{if(typeof window>`u`)return`desktop`;let e=window.__OPENCHAMBER_SURFACE__;if(e===`mobile`||e===`desktop`)return e;let t=new URLSearchParams(window.location.search).get(`surface`);if(t===`mobile`||t===`desktop`)return t;if(se())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=Ym&&Xm()?`mobile`:`desktop`},Qm=()=>Zm()===`mobile`,$m=3,eh=2,th=4,nh=4,rh=100,ih=30;function ah(){return u()?`relay`:`local`}function oh(e=ah()){return e===`relay`?eh:$m}function sh(e=ah()){return e===`relay`?nh:th}function ch(e){return oh(dh(e))}function lh(){return rh}function uh(){return ih}function dh(e){return e===`relay`||e===`local`?e:ah()}var fh=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function ph(){return{pages:[],pageParams:[]}}function mh(e){let t={};for(let[n,r]of Object.entries(e.messagesByID))t[n]=r;let n={};for(let[t,r]of Object.entries(e.partsByMessageID))n[t]=Object.isFrozen(r)?r:Object.freeze([...r]);return Object.freeze({kind:e.kind,messageOrder:Object.isFrozen(e.messageOrder)?e.messageOrder:Object.freeze([...e.messageOrder]),messagesByID:Object.freeze(t),partsByMessageID:Object.freeze(n),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:Object.freeze({...e.sync})})}function hh(e){return{pages:Object.freeze(e.pages.map(mh)),pageParams:Object.freeze([...e.pageParams])}}function gh(e,t,n=fh){let r=[],i={},a={};for(let t of e.records){let e=t.info?.id;!e||i[e]||(r.push(e),i[e]=t.info,t.parts&&(a[e]=Object.freeze([...t.parts])))}let o=typeof e.turnCount==`number`&&Number.isFinite(e.turnCount)?Math.max(0,Math.floor(e.turnCount)):typeof e.requestedTurnLimit==`number`&&Number.isFinite(e.requestedTurnLimit)?Math.max(0,Math.floor(e.requestedTurnLimit)):+(e.records.length>0);return mh({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function _h(e){if(!e||e.pages.length===0)return rl;let t=e.pages[0],n=e.pages.reduce((e,t)=>e+t.turnCount,0);return t.complete?{kind:`exhausted`,loadedTurns:n}:typeof t.cursor==`string`&&t.cursor.length>0?{kind:`has-more`,cursor:t.cursor,loadedTurns:n}:{kind:`unknown`,loadedTurns:n}}function vh(e,t){let n={},r={},i=[],a=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder){if(a.has(e))continue;let n=t.messagesByID[e];if(!n)continue;a.add(e),i.push(n);let o=t.partsByMessageID[e];o&&(r[e]=[...o])}n[t]=i;let o=_h(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function yh(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function bh(e,t,n,r,i,a,o){let s=[],c={},l={};for(let e of t){if(!e?.id)continue;s.push(e.id),c[e.id]=e;let t=n[e.id];t&&(l[e.id]=Object.freeze([...t]))}return mh({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:yh(t)}})}function xh(e,t,n,r,i,a){let o=n.messages,s=n.part,c=typeof i.turnCount==`number`&&Number.isFinite(i.turnCount)?Math.max(0,Math.floor(i.turnCount)):typeof i.requestedTurnLimit==`number`&&Number.isFinite(i.requestedTurnLimit)?Math.max(0,Math.floor(i.requestedTurnLimit)):+(i.records.length>0),l=i.complete?null:i.cursor??null,u=i.complete;if(!e||e.pages.length===0||r===`initial`)return hh({pages:[bh(`tail`,o,s,l,u,c,a)],pageParams:[null]});if(r===`prepend`){let r=new Set;for(let t of e.pages)for(let e of t.messageOrder)r.add(e);let d=o.filter(e=>i.records.some(t=>t.info.id===e.id)||!r.has(e.id)).filter(t=>{if(i.records.some(e=>e.info.id===t.id))return!0;if(!r.has(t.id)){let n=e.pages[0]?.messageOrder[0];return!n||t.id<n}return!1}),f=[],p=new Set;for(let e of i.records){let t=o.find(t=>t.id===e.info.id);!t||p.has(t.id)||(p.add(t.id),f.push(t))}for(let e of d)p.has(e.id)||(p.add(e.id),f.push(e));let m=bh(`history`,f,s,l,u,c,a),h=new Set(p),g=[m],_=[l];for(let r=0;r<e.pages.length;r+=1){let i=e.pages[r],o=[];for(let e of i.messageOrder){if(h.has(e))continue;let r=n.message[t]?.find(t=>t.id===e)??i.messagesByID[e];r&&o.push(r)}g.push(Ch(i,o,s,a)),_.push(e.pageParams[r]??null)}return hh({pages:g,pageParams:_})}let d=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)d.has(n)||d.set(n,t)});let f=e.pages.map(()=>[]),p=[];for(let e of o){let t=d.get(e.id);t===void 0?p.push(e):f[t].push(e)}let m=e.pages.map((t,n)=>{let i=f[n]??[];return n===e.pages.length-1&&p.length>0?Ch(t,r===`reconcile-page`?Sh(i,p):[...i,...p],s,a):Ch(t,i,s,a)});if(m.length>0&&n.boundary){let e=m[0],t=n.boundary.kind===`has-more`?n.boundary.cursor:null,r=n.boundary.kind===`exhausted`;(e.cursor!==t||e.complete!==r)&&(m[0]=mh({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return hh({pages:m,pageParams:[...e.pageParams]})}function Sh(e,t){let n=e.slice();for(let e of t){let t=ac(e),r=n.length;for(let e=0;e<n.length;e+=1)if(ic(t,ac(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function Ch(e,t,n,r){let i=[],a={},o={},s=t.length!==e.messageOrder.length,c=!1,l=!1;for(let r=0;r<t.length;r+=1){let u=t[r];if(!u?.id)continue;i.push(u.id),e.messageOrder[r]!==u.id&&(s=!0);let d=e.messagesByID[u.id];d===u?a[u.id]=u:d&&wh(d,u)?a[u.id]=d:(a[u.id]=u,c=!0);let f=n[u.id],p=e.partsByMessageID[u.id];f===void 0?p!==void 0&&(l=!0):p&&(p===f||Eh(p,f))?o[u.id]=p:Object.isFrozen(f)&&f===p?o[u.id]=f:p&&f===p?o[u.id]=p:(o[u.id]=Object.freeze([...f]),l=!0)}return!s&&!c&&!l&&e.sync.liveRevision===r||!s&&!c&&!l?e:mh({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:yh(t)}})}function wh(e,t){return e===t||e.id===t.id&&e===t}function Th(e,t){return e===t||!(!e||!t||e.id!==t.id||e.type!==t.type||e.text!==t.text||e.state!==t.state||e.output!==t.output||e.metadata!==t.metadata||e.time!==t.time||e.url!==t.url||e.slim!==t.slim)}function Eh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!Th(e[n],t[n]))return!1;return!0}function Dh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Oh(e){let t=e.properties;if(t){if(typeof t.messageID==`string`)return t.messageID;if(typeof t.info?.id==`string`)return t.info.id;if(typeof t.part?.messageID==`string`)return t.part.messageID}}function kh(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=xh(e??ph(),t,{message:n.message,part:s,messages:o,boundary:r},`recovery`,{records:o.map(e=>({info:e,parts:s[e.id]??[]})),complete:r.kind===`exhausted`,cursor:r.kind===`has-more`?r.cursor:void 0,turnCount:0},i);if(e&&e.pages.length>0){let t=new Map,n=new Map;e.pages.forEach((e,r)=>{for(let i of e.messageOrder){t.has(i)||t.set(i,r);let a=e.messagesByID[i];a&&n.set(i,a)}});let r=o.map(e=>{let t=n.get(e.id);return t&&t.id===e.id&&t===e||t&&e.id===t.id&&e===t?t:e}).map(e=>{let t=n.get(e.id);return!t||a.has(e.id)?e:t}),c={};for(let t of r){let n=s[t.id];if(!n)continue;let r;for(let n of e.pages)if(n.partsByMessageID[t.id]){r=n.partsByMessageID[t.id];break}r&&!a.has(t.id)||r&&Eh(r,n)?c[t.id]=r:c[t.id]=n}let l=e.pages.map(()=>[]),u=[];for(let e of r){let n=t.get(e.id);n===void 0?u.push(e):l[n].push(e)}return hh({pages:e.pages.map((t,n)=>Ch(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function Ah(e,t){let n=vh(e,t),r=_h(e),i={message:{...n.message,[t]:[...n.message[t]??[]]},part:{...n.part}};for(let[e,t]of Object.entries(i.part))t&&(i.part[e]=[...t]);return{draft:i,previousBoundary:r}}function jh(e,t,n,r){if(!kl(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Ah(e,t),o=Ls(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=Oh(n),c=new Set;return s&&c.add(s),{data:kh(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function Mh(e){let t=new Map;if(!e)return t;for(let n of e.pages)for(let[e,r]of Object.entries(n.partsByMessageID))!t.has(e)&&r&&t.set(e,r);return t}function Nh(e){let t=new Map;if(!e)return t;for(let n of e.pages)for(let[e,r]of Object.entries(n.messagesByID))!t.has(e)&&r&&t.set(e,r);return t}function Ph(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Ah(e,t),o=!1,s=0,c,l=new Set,u=Mh(e),d=Nh(e),f=i.message[t]??[],p=new Map,m=new Map,h=[],g=e=>{if(p.clear(),m.clear(),h=[],e)for(let t=0;t<e.length;t+=1){let n=e[t];n?.id&&(p.set(n.id,n),m.set(n.id,t),h.push(n.id))}};g(f);let _=h.slice();for(let e of n){if(!kl(e.type))continue;o=!0;let n=Ls(i,e),r=typeof n==`boolean`?n:n.changed,a=typeof n==`boolean`?void 0:n.materialization;if(a&&!c&&(c=a),!r)continue;let v=i.message[t]??[];v!==f&&(f=v,g(v));let y=Oh(e),b=h.length!==_.length||h.some((e,t)=>e!==_[t]),x=b;if(y){let e=i.part[y],t=u.get(y);e&&t&&Eh(t,e)?i.part[y]=[...t]:e?(x=!0,u.set(y,e)):t&&(x=!0,u.delete(y));let n=p.get(y),r=d.get(y);if(!(n&&r&&r===n))if(n&&r&&wh(r,n)){let e=m.get(y);e!==void 0&&f[e]&&(f[e]=r,p.set(y,r))}else n?(x=!0,d.set(y,n)):r&&(x=!0,d.delete(y))}else x=!0;if(b){_=h.slice();for(let e of f)e?.id&&!d.has(e.id)&&d.set(e.id,e)}x&&(s+=1,y&&l.add(y))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:kh(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function Fh(e,t,n,r,i){let a=e&&e.pages.length>0?e:hh({pages:[bh(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=vh(a,t),s=o.message[t]?[...o.message[t]]:[];s.findIndex(e=>e.id===n.id)<0&&s.push(n);let c={...o.part,[n.id]:Dh(r)};return{data:hh({pages:a.pages.map((e,t)=>t===a.pages.length-1?Ch(e,s.filter(e=>{for(let t=0;t<a.pages.length-1;t+=1)if(a.pages[t]?.messagesByID[e.id])return!1;return!0}),c,i):e.messagesByID[n.id]?Ch(e,e.messageOrder.filter(e=>e!==n.id).map(t=>e.messagesByID[t]).filter(Boolean),c,i):e),pageParams:[...a.pageParams]}),result:{applied:!0,changed:!0}}}function Ih(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:hh({pages:e.pages.map(e=>{if(!e.messagesByID[t]&&!e.partsByMessageID[t])return e;r=!0;let i=e.messageOrder.filter(e=>e!==t).map(t=>e.messagesByID[t]).filter(Boolean),a={};for(let[n,r]of Object.entries(e.partsByMessageID))n!==t&&(a[n]=[...r]);return Ch(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Lh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=vh(e,t),i=Zc({message:r.message,part:r.part},t,n.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),{skipPartTypes:n.skipPartTypes,merge:n.merge});if(!i.messagesChanged&&!i.partsChanged)return{data:e,result:{applied:!0,changed:!1,boundary:_h(e)}};let a=e?.pages[e.pages.length-1]?.sync.liveRevision??0,o=i.part;if(!e||e.pages.length===0){let e=i.messages[0]?.id,t=i.messages.filter(e=>e.role===`user`).length,n=hh({pages:[bh(`tail`,i.messages,o,typeof e==`string`&&e.length>0?e:null,!1,t,a)],pageParams:[null]});return{data:n,result:{applied:!0,changed:!0,boundary:_h(n)}}}let s=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)s.has(n)||s.set(n,t)});let c=e.pages.map(()=>[]),l=[];for(let e of i.messages){let t=s.get(e.id);t===void 0?l.push(e):c[t].push(e)}let u=hh({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?Ch(t,Sh(r,l),o,a):Ch(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:_h(u)}}}function Rh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=fl(vh(e,t),t,{ok:!0,records:n.page.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:n.page.cursor,complete:n.page.complete,turnCount:n.page.turnCount,requestedTurnLimit:n.page.requestedTurnLimit},{purpose:n.purpose,skipPartTypes:n.skipPartTypes,optimistic:n.optimistic?n.optimistic.map(e=>({message:e.message,parts:[...e.parts]})):void 0,capturedRevision:n.capturedLiveRevision,liveRevision:n.liveRevision});return i.applied?{data:xh(e,t,{message:i.message,part:i.part,messages:i.messages,boundary:i.boundary},n.purpose,n.page,r),result:{applied:!0,changed:i.changed,boundary:i.boundary,meta:i.meta,confirmedOptimisticIDs:i.confirmedOptimisticIDs}}:{data:e,result:{applied:!1,changed:!1,error:i.error}}}case`sse-event`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return jh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Ph(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Fh(e,t,n.message,n.parts,r)}case`optimistic-confirm`:return{data:e,result:{applied:!0,changed:!1}};case`optimistic-remove`:{let t=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Ih(e,n.messageID,t)}case`durable-seed`:return Lh(e,t,n);case`reset`:return n.page?Rh(void 0,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes}):{data:void 0,result:{applied:!0,changed:!!(e&&e.pages.length>0)}};default:return{data:e,result:{applied:!1,changed:!1}}}}function zh(e){return{records:e.messageOrder.map(t=>({info:e.messagesByID[t],parts:e.partsByMessageID[t]?[...e.partsByMessageID[t]]:[]})),cursor:e.cursor??void 0,complete:e.complete,turnCount:e.turnCount}}function Bh(e,t,n,r=`materialize`){return Rh(e,n,{type:`http-page`,purpose:r,page:zh(t),liveRevision:t.sync.liveRevision}).data}function Vh(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return hh(t);if(t.pages.length===e.pages.length){let r=Gh(e,t);if(r===e)return e;if(Wh(e,t)||Uh(e,t))return r;let i=t.pages[t.pages.length-1];return Bh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return Rh(e,n,{type:`http-page`,purpose:`prepend`,page:zh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Bh(e,r,n)??hh(t)}return hh(t)}function Hh(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Uh(e,t){let n=Hh(e),r=Hh(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=Kh(e,``),a=Kh(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Wh(e,t){let n=Hh(e);if(n.size===0)return!1;let r=Hh(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=Kh(t,``);for(let e=1;e<i.messageOrder.length;e+=1){let t=i.messagesByID[i.messageOrder[e-1]],n=i.messagesByID[i.messageOrder[e]];if(!t||!n||ic(ac(t),ac(n))>0)return!1}return!0}function Gh(e,t){let n=!1,r=t.pages.map((t,r)=>{let i=e.pages[r];return i&&(i===t||i.kind===t.kind&&i.cursor===t.cursor&&i.complete===t.complete&&i.turnCount===t.turnCount&&i.messageOrder.length===t.messageOrder.length&&i.messageOrder.every((e,n)=>e===t.messageOrder[n])&&i.messageOrder.every(e=>i.messagesByID[e]===t.messagesByID[e])&&i.messageOrder.every(e=>i.partsByMessageID[e]===t.partsByMessageID[e])&&i.sync.liveRevision===t.sync.liveRevision)?i:(n=!0,mh(t))});return!n&&e.pageParams.length===t.pageParams.length?e:hh({pages:r,pageParams:[...t.pageParams]})}function Kh(e,t){let n=[],r={},i={},a=0;for(let t of e?.pages??[]){a=Math.max(a,t.sync.liveRevision);for(let e of t.messageOrder){if(r[e]){r[e]=t.messagesByID[e]??r[e],t.partsByMessageID[e]&&(i[e]=t.partsByMessageID[e]);continue}n.push(e);let a=t.messagesByID[e];a&&(r[e]=a);let o=t.partsByMessageID[e];o&&(i[e]=o)}}let o=[],s=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder)s.has(e)||(s.add(e),o.push(e));return{messageOrder:o,messagesByID:r,partsByMessageID:i,boundary:_h(e),liveRevision:a}}var qh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Jh=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Yh=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Xh=e=>e.trim(),Zh=e=>e?.trim()||`tail`,Qh=new Set([502,503,504]),$h=[`load failed`,`network connection was lost`,`network request failed`,`failed to fetch`,`econnreset`,`econnrefused`,`etimedout`,`socket hang up`,`signal timed out`,`timed out`,`timeout`,`opencode api unavailable`];function eg(e){if(!e||e instanceof qh||e instanceof Jh)return!1;if(e instanceof Yh)return e.status>=400&&e.status<500?!1:Qh.has(e.status)||e.status>=500&&e.status<600;let t=e?.status;if(typeof t==`number`){if(t>=400&&t<500)return!1;if(Qh.has(t)||t>=500&&t<600)return!0}let n=String(e instanceof Error?e.message:e).toLowerCase(),r=n.match(/\((\d{3})\)/);if(r){let e=Number(r[1]);if(e>=400&&e<500)return!1;if(Qh.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:$h.some(e=>n.includes(e))}function tg(e,t){return e>=2?!1:eg(t)}var ng=(e,t=i(),n=h())=>[t,n,`sessionMessages`,`page`,Xh(e.directory),e.sessionID,e.limit,Zh(e.before)],rg=(e,t=i(),n=h())=>[t,n,`session-transcript`,Xh(e.directory),e.sessionID];function ig(e){if(!e||typeof e!=`object`)throw new Jh(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Jh(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Jh(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Jh(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Jh(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Jh(`session message page: cursor must be string when set`);return e}var ag=e=>{let t=e.records.map(e=>Object.freeze({info:Object.freeze({...e.info}),parts:e.parts===void 0?void 0:Object.freeze([...e.parts])}));return Object.freeze({records:Object.freeze(t),cursor:e.cursor,complete:e.complete,...typeof e.turnCount==`number`?{turnCount:e.turnCount}:{},...typeof e.requestedTurnLimit==`number`?{requestedTurnLimit:e.requestedTurnLimit}:{}})},og=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw new qh},sg=(e,t,n=i(),r={},a=(r.getGeneration??h)())=>{let o=Xh(e.directory),s=e.sessionID,c=e.limit,l=e.before?.trim()||void 0;return{queryKey:ng({directory:o,sessionID:s,limit:c,before:l},n,a),queryFn:async({signal:e})=>{og(n,a,r);let i=await t({directory:o,sessionID:s,limit:c,before:l,signal:e});return og(n,a,r),ag(ig(i))},staleTime:1/0,gcTime:3e5,retry:tg,retryDelay:e=>Math.min(500*2**e,4e3)}},cg=(e,t,n=L,r=i(),a={},o=(a.getGeneration??h)())=>n.fetchQuery(sg(e,t,r,a,o));function lg(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function ug(e){return ag({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function dg(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function fg(e){let t=Xh(e.directory),n=e.sessionID,r=e.transport??i(),a=e.probe??{},o=e.generation??(a.getGeneration??h)(),s=e.initialLimit??oh(),c=e.historyLimit??sh(),l=e.client??L,u=rg({directory:t,sessionID:n},r,o),d=async t=>ug(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:u,queryFn:async e=>{og(r,o,a);let i=e.pageParam?.trim()||void 0,u=i?c:s,f=i?`prepend`:`initial`,p=await cg({directory:t,sessionID:n,limit:u,before:i},d,l,r,a,o);og(r,o,a);let m=lg(p);return gh(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:dg,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:tg,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>Vh(e,t,n)}}function pg(e){let t=e.client??L,n=fg({...e,client:t}),r=new nt(t,{...n,structuralSharing:(t,n)=>Vh(t,n,e.sessionID)});return{queryKey:n.queryKey,observer:r,ensureInitial:async()=>{let e=(await r.fetchNextPage()).data;if(e&&e.pages.length>0)return hh(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return hh(t)},fetchPreviousPage:async()=>{let e=r.getCurrentResult().data;try{let t=await r.fetchPreviousPage({cancelRefetch:!1}),n=r.getCurrentResult(),i=t.data??n.data??e;if(t.isError||n.isFetchPreviousPageError){let e=t.error??n.error??Error(`transcript previous page fetch failed`);throw i&&i.pages.length>0?Object.assign(e instanceof Error?e:Error(String(e)),{retainedPages:hh(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return hh(i)}catch(t){let n=r.getCurrentResult().data??e;throw n&&n.pages.length>0?Object.assign(t instanceof Error?t:Error(String(t)),{retainedPages:hh(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function mg(e,t,n,r){let i=e.getQueryData(t),a=Rh(i,n,r);return a.result.applied?a.data===void 0?(`removeQueries`in e&&typeof e.removeQueries==`function`?e.removeQueries({queryKey:t,exact:!0}):e.setQueryData(t,void 0),a):(!a.result.changed&&a.data===i||e.setQueryData(t,a.data),a):a}function hg(e,t=L,n=i(),r=h()){return t.getQueryData(rg(e,n,r))}function gg(){return v()||Qm()}function _g(){return v()?4:Qm()?12:40}var vg=1048576,yg=4*vg,bg=12*vg,xg=40*vg;function Sg(){return v()?yg:Qm()?bg:xg}var Cg=e=>e.trim();function wg(e){return{transport:e.transport,generation:e.generation,directory:Cg(e.directory),sessionID:e.sessionID}}function Tg(e){let t=wg(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function Eg(e){return`${e.transport}\n${e.generation}\n${Cg(e.directory)}`}var Dg={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function Og(e,t,n){return[t,n,Dg.taskRoot,Dg.reconcileTaskKind,Cg(e.directory),e.sessionID,e.checkpoint]}function kg(e,t,n){return[t,n,Dg.checkpoint,Cg(e.directory),e.sessionID]}function Ag(e){let t=wg(e);return[{queryKey:rg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,Dg.transportPageRoot,Dg.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Dg.taskRoot,Dg.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Dg.taskRoot,Dg.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:kg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function jg(){let e=new Map;return{retain(t){let n=wg(t),r=Tg(n),i=e.get(r);i?i.count+=1:e.set(r,{scope:n,count:1});let a=!1;return()=>{if(a)return;a=!0;let t=e.get(r);t&&(--t.count,t.count<=0&&e.delete(r))}},isRetained(t){return(e.get(Tg(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(Tg(t))?.count??0},clear(){e.clear()}}}function Mg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Ng=3e4;function Pg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function Fg(e){return!Array.isArray(e)||e.length<5||e[2]!==Dg.canonical||typeof e[0]!=`string`||typeof e[1]!=`number`||typeof e[3]!=`string`||typeof e[4]!=`string`?null:{transport:e[0],generation:e[1],directory:e[3],sessionID:e[4]}}function Ig(e){let t=e.client,n=e.activeRegistry??jg(),r=e.counters??Mg(),i=e.getLimit??_g,a=e.now??Date.now,o=e.minResidencyMs??Ng,s=new Map,c=new Map,l=e=>{let t=wg(e),n=Tg(t),r=c.get(t.sessionID);r||(r=new Map,c.set(t.sessionID,r)),r.set(n,t)},u=e=>{let t=wg(e),n=Tg(t),r=c.get(t.sessionID);r&&(r.delete(n),r.size===0&&c.delete(t.sessionID))},d=(e,t)=>{for(let[n,r]of c){for(let[n,i]of r)i.transport===e&&i.generation===t&&r.delete(n);r.size===0&&c.delete(n)}let n=`${e}\n${t}\n`;for(let e of s.keys())e.startsWith(n)&&s.delete(e)};for(let e of t.getQueryCache().getAll()){let t=Fg(e.queryKey);t&&l(t)}let f=t.getQueryCache().subscribe(e=>{if(e.type===`added`||e.type===`updated`){let t=Fg(e.query.queryKey);t&&l(t);return}if(e.type===`removed`){let t=Fg(e.query.queryKey);t&&u(t)}}),p=e=>{let t=Tg(wg(e));s.set(t,a())},m=e=>{let t=Tg(wg(e)),n=s.get(t);return n!==void 0&&a()-n<o},h=e=>{let r=wg(e);if(n.isRetained(r))return!0;let i=rg({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},g=e=>{let r=e?.directory===void 0?void 0:Cg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=Fg(a.queryKey);if(!t||e?.transport!==void 0&&t.transport!==e.transport||e?.generation!==void 0&&t.generation!==e.generation||r!==void 0&&t.directory!==r)continue;let o=a.getObserversCount(),s=n.isRetained(t);i.push({scope:t,queryKey:a.queryKey,dataUpdatedAt:a.state.dataUpdatedAt,observerCount:o,retained:s,active:s||o>0,pageCount:Pg(a.state.data)})}return i},_=(e,t)=>{let n=c.get(e);if(!n||n.size===0)return[];let r=t?.directory===void 0?void 0:Cg(t.directory),i=[];for(let e of n.values())(t?.transport===void 0||e.transport===t.transport)&&(t?.generation===void 0||e.generation===t.generation)&&(r===void 0||e.directory===r)&&i.push(e);return i},v=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},y=e=>{r.purgeSession+=1;let t=wg(e);s.delete(Tg(t)),u(t);for(let t of Ag(e))v(t)},b=(e,t)=>{r.purgeGeneration+=1,d(e,t);let n=[[e,t,Dg.canonical],[e,t,Dg.transportPageRoot,Dg.transportPageKind],[e,t,Dg.taskRoot],[e,t,Dg.checkpoint]];for(let e of n)v({queryKey:e})},x=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>Tg(wg(e)))),o=g({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=Eg(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let l=[];for(let e of c.values()){for(let t of e){let e=Tg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(Tg(e.scope))||m(e.scope)));i.sort((e,t)=>e.dataUpdatedAt===t.dataUpdatedAt?e.scope.sessionID<t.scope.sessionID?-1:+(e.scope.sessionID>t.scope.sessionID):e.dataUpdatedAt-t.dataUpdatedAt);let o=e.length-i.length,c=e.length,u=0;for(;c>t&&u<i.length&&!(c-1<o);){let e=i[u];u+=1,y(e.scope),l.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:l}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:h,listCanonical:g,listCanonicalScopesForSession:_,purgeSession:y,purgeGeneration:b,enforce:x,destructiveReset:async(e,t)=>{r.destructiveReset+=1,y(e);try{let n=await t();return x({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw y(e),t}},noteScopeObserved:p,dispose:()=>{f(),c.clear(),s.clear()}}}var Lg=new Map,Rg=new Set;function zg(e,t){return`${e}\n${t}`}function Bg(){for(let e of Rg)e()}function Vg(e,t){if(!e||!t)return;let n=zg(e,t),r=Lg.get(n)??0;Lg.set(n,r+1),r===0&&Bg()}function Hg(e,t){if(!e||!t)return;let n=zg(e,t),r=Lg.get(n);if(r){if(r<=1){Lg.delete(n),Bg();return}Lg.set(n,r-1)}}function Ug(e,t){if(!e)return!1;if(t)return Lg.has(zg(t,e));let n=`\n${e}`;for(let e of Lg.keys())if(e.endsWith(n))return!0;return!1}function Wg(e){return Rg.add(e),()=>{Rg.delete(e)}}var Gg=3e4,Kg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function qg(e,t=Gg){let n;try{return await Promise.race([e,new Promise((e,r)=>{n=setTimeout(()=>{r(Error(`session turn page: timed out after ${t}ms`))},t)})])}finally{n!==void 0&&clearTimeout(n)}}var Jg=e=>e?e.toLowerCase().includes(`application/json`):!1,Yg=e=>e?e.toLowerCase().includes(`text/html`):!1;function Xg(e,t){if(!e||typeof e!=`object`)throw Error(`session turn page: expected JSON object`);let n=e;if(n.partial===!0)throw Error(`session turn page: partial responses are not accepted`);if(!Array.isArray(n.records))throw Error(`session turn page: records must be an array`);if(!(`complete`in n)||typeof n.complete!=`boolean`)throw Error(`session turn page: complete must be a boolean`);if(typeof n.turnCount!=`number`||!Number.isFinite(n.turnCount))throw Error(`session turn page: turnCount must be a number`);if(!Number.isInteger(n.turnCount)||n.turnCount<0||n.turnCount>t)throw Error(`session turn page: turnCount must be an integer in 0..${t}`);if(n.cursor!=null&&typeof n.cursor!=`string`)throw Error(`session turn page: cursor must be string or null`);if(typeof n.cursor==`string`&&n.cursor.length===0)throw Error(`session turn page: cursor must not be empty string`);if(n.complete===!0&&n.cursor!=null)throw Error(`session turn page: complete=true requires cursor=null`);if(n.complete===!1&&(n.cursor==null||typeof n.cursor!=`string`))throw Error(`session turn page: complete=false requires non-empty cursor`);let r=[];for(let e=0;e<n.records.length;e++){let t=n.records[e];if(!t||typeof t!=`object`)throw Error(`session turn page: records[${e}] must be an object`);let i=t,a=i.info;if(!a||typeof a!=`object`)throw Error(`session turn page: records[${e}].info must be an object`);let o=a.id;if(typeof o!=`string`||o.length===0)throw Error(`session turn page: records[${e}].info.id must be a non-empty string`);if(`parts`in i&&i.parts!==void 0&&!Array.isArray(i.parts))throw Error(`session turn page: records[${e}].parts must be an array when present`);r.push({info:a,...i.parts===void 0?{}:{parts:i.parts}})}return{records:r,cursor:n.cursor==null?null:n.cursor,complete:n.complete,turnCount:n.turnCount}}async function Zg(e){let t=e.turns??sh(),n=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages`,r={directory:e.directory,turns:String(t)};e.before&&(r.before=e.before),typeof e.scanLimit==`number`&&Number.isFinite(e.scanLimit)&&(r.scanLimit=String(Math.floor(e.scanLimit)));let i=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:Gg;return qg((async()=>{let a=await F(n,{method:`GET`,query:r,signal:Kg(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(Yg(o))throw Error(`session turn page: unexpected HTML response`);Jg(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Xg(s,t)})(),i)}async function Qg(e){let t=e.purpose===`prepend`&&e.before?sh():oh();return Zg({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var $g=3e4,e_=2,t_=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),n_=e=>e?e.toLowerCase().includes(`text/html`):!1,r_=e=>new Promise(t=>{setTimeout(t,e)});function i_(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Jh(`session transcript reconcile: ${t} must be string or null`);return e}function a_(e){if(!e||typeof e!=`object`)throw new Jh(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Jh(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Jh(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Jh(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Jh(`session transcript reconcile: resetRequired must be a boolean`);if(typeof t.scannedRecords!=`number`||!Number.isFinite(t.scannedRecords)||!Number.isInteger(t.scannedRecords)||t.scannedRecords<0)throw new Jh(`session transcript reconcile: scannedRecords must be a non-negative integer`);if(typeof t.responseBytes!=`number`||!Number.isFinite(t.responseBytes)||!Number.isInteger(t.responseBytes)||t.responseBytes<0)throw new Jh(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=i_(t.capturedHeadMessageID,`capturedHeadMessageID`),r=i_(t.latestHeadMessageID,`latestHeadMessageID`),i=i_(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Jh(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Jh(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Jh(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Jh(`session transcript reconcile: resetRequired=true requires continuation=null`)}let a=[];for(let e=0;e<t.records.length;e+=1){let n=t.records[e];if(!n||typeof n!=`object`)throw new Jh(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Jh(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Jh(`session transcript reconcile: records[${e}].info.id must be a non-empty string`);if(`parts`in r&&r.parts!==void 0&&!Array.isArray(r.parts))throw new Jh(`session transcript reconcile: records[${e}].parts must be an array when present`);a.push({info:i,...r.parts===void 0?{}:{parts:r.parts}})}return{records:Object.freeze(a),anchorFound:t.anchorFound,capturedHeadMessageID:n,latestHeadMessageID:r,continuation:i,complete:t.complete,resetRequired:t.resetRequired,scannedRecords:t.scannedRecords,responseBytes:t.responseBytes}}function o_(e){let t=typeof e.anchor==`string`&&e.anchor.length>0?e.anchor:void 0,n=typeof e.continuation==`string`&&e.continuation.length>0?e.continuation:void 0;if(!!t==!!n)throw new Jh(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function s_(e,t,n){let r=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages/reconcile`,i={directory:e.directory};return t.anchor&&(i.anchor=t.anchor),t.continuation&&(i.continuation=t.continuation),qg((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:t_(e.signal,n)})}catch(e){throw e instanceof qh||e instanceof Jh||e instanceof Yh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new Yh(t.status,`session transcript reconcile failed (${t.status})`);if(n_(t.headers.get(`content-type`)))throw new Jh(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Jh(`session transcript reconcile: malformed JSON`)}return a_(a)})(),n)}async function c_(e){let t=o_(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:$g,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):e_,i=e.sleep??r_,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await s_(e,t,n)}catch(t){if(t instanceof qh||t instanceof Jh||t instanceof Yh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!eg(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var l_=e=>!!(e&&typeof e==`object`&&typeof e.type==`string`),u_=e=>e.filter(l_),d_=e=>{let t=e,n=t.text;return typeof n==`string`?n:t.content||t.value||``},f_=e=>{if(e.type!==`text`)return!1;let t=d_(e);return!t||t.trim().length===0},p_=(e,t={})=>{let{includeReasoning:n=!0}=t,r=u_(e),i=r.some(e=>!e.synthetic);return r.filter(e=>{let t=!!e.synthetic;return t&&e.type===`text`&&d_(e).includes(`<system-reminder>`)||t&&i||!n&&e.type===`reasoning`?!1:e.type!==`patch`})},m_=`GitHub issue context (JSON)`,h_=`GitHub pull request context (JSON)`,g_=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,__=(e,t)=>{let n=e.trimStart();if(!n.startsWith(t))return null;let r=n.indexOf(`{`);if(r<0)return null;try{return JSON.parse(n.slice(r))}catch{return null}},v_=e=>{let t=__(e,m_);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!g_(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=__(e,h_);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!g_(t)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.pull-request-link`,filename:`PR #${t}: ${r}`,url:i}}return null},y_=e=>!!e.trim().startsWith(`The following tool was executed by the user`),b_=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),x_=e=>e.trim()===`/compact`,S_=e=>e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(b_(t)||x_(t)))return!1}if(e.synthetic!==!0)return!0;if(e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return y_(t)||n.startsWith(m_)||n.startsWith(h_)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=v_(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e}),C_=e=>e.some(e=>{if(e.type===`text`)return!f_(e);if(e.type===`file`){let t=e,n=typeof t.mime==`string`?t.mime:``,r=typeof t.url==`string`?t.url:``;return(!!n||!!r)&&!!r&&!Ie(e)}return!0}),w_=e=>e?.length?C_(S_(e)):!1,T_=`oc_asst_session_divider:`,E_=[],D_=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),O_=(e,t=0)=>({info:{id:`${T_}${e}`,role:`system`,time:{created:t}},parts:[]}),k_=(e,t,n=E_)=>{if(!e.length)return E_;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(O_(n.sessionID,Number(n.info.time?.created??0))),r.push({info:n.info,parts:n.parts,sourceSessionID:n.sessionID,sourceDirectory:n.directory}),i=!0,a=n.sessionID);return r.length===0?E_:P_(n,r)?n:r},A_=(e,t)=>{if(t.length===0)return e;if(e.length===0)return t;let n=new Map;for(let e of t)e?.id&&n.set(e.id,e);for(let t of e)t?.id&&n.set(t.id,t);let r=new Set,i=[];for(let e of t){if(!e?.id||r.has(e.id))continue;let t=n.get(e.id);t&&(i.push(t),r.add(e.id))}for(let t of e)!t?.id||r.has(t.id)||(i.push(t),r.add(t.id));return i.length===e.length&&i.every((t,n)=>t===e[n])?e:i},j_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=A_(e.parts,t.parts);return n===e.parts&&e.info===t.info?e:n===t.parts&&e.info===t.info&&e.parts===t.parts?t:{...e,parts:n,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}}return w_(e.parts)?e:w_(t.parts)?e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}:e.parts.length>0||t.parts.length===0?e:e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}},M_=(e,t,n,r=E_)=>{if(!t)return n.length>0?Array.from(n):E_;let i=new Map,a=0;for(let n of e)n.sessionID===t&&i.set(n.info.id,{message:{info:n.info,parts:n.parts},order:a++});for(let e of n){let t=i.get(e.info.id);i.set(e.info.id,{message:j_(e,t?.message),order:t?.order??a++})}if(i.size===0)return E_;let o=[...i.values()].sort((e,t)=>Number(e.message.info.time?.created??0)-Number(t.message.info.time?.created??0)||e.order-t.order).map(({message:e})=>e);return P_(r,o)?r:o},N_=(e,t)=>{if(!D_(e)||!D_(t))return!1;let n=Number(e.info.time?.created??0),r=Number(t.info.time?.created??0);return e.info.id===t.info.id&&n===r},P_=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||!(r===i||N_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},F_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),I_=e=>e.startsWith(T_);function L_(e,t){if(!e?.id||I_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(F_(t,`subtask`)||F_(t,`compaction`)||t.every(e=>Qp(e))):!1}function R_(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.messagesByID[n],i=e.partsByMessageID[n];if(L_(r,i))return n}return null}function z_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function B_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:R_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:z_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function V_(e,t){return{...e,...t}}function H_(e,t){let n=kg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),r=e.getQueryData(n);if(!r||typeof r!=`object`)return;let i=r;if(i.sessionID===t.sessionID&&i.transport===t.transport&&i.generation===t.generation)return i}function U_(e,t){let n=kg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function W_(e,t){let n=kg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function G_(e){return e.slim===!0}var K_=/bearer|token|authorization|password|secret|cookie/i,q_=new Set([`message.part.delta`]);function J_(e){return typeof e==`string`&&e.includes(`-`)}var Y_=`openchamber.client-diagnostics.enabled`;function X_(e){return e===`true`||e!==`false`&&null}function Z_(e){return e.preference===!0||e.preference!==!1&&J_(e.version)}function Q_(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function $_(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function ev(e){if(e&&typeof e==`object`&&`status`in e){let t=e.status;if(typeof t==`number`&&Number.isFinite(t)&&t>=100&&t<=599)return t}let t=(e instanceof Error?e.message:typeof e==`string`?e:``).match(/\((\d{3})\)/);if(!t)return;let n=Number(t[1]);return n>=100&&n<=599?n:void 0}function tv(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return K_.test(t)?`redacted-error`:t}function nv(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)G_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function rv(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function iv(e){let t=0;for(let n of e.messageOrder)vv(e.messagesByID[n])===!0&&(t+=1);return t}function av(e){let t=e.transcript?nv(e.transcript.partsByMessageID):void 0;return{at:(e.now??Date.now)(),feat:`transcript`,kind:e.kind,sessionID:e.sessionID,...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.source?{source:e.source}:{},...e.durationMs===void 0?{}:{durationMs:e.durationMs},...e.request?{requestStatus:e.request.status}:{},...e.hydration?{hydrationPhase:e.hydration.phase,p0Satisfied:e.hydration.p0Satisfied}:{},...e.transcript?{messageCount:e.transcript.messageOrder.length,lastMessageIDs:rv(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:iv(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...tv(e.error??e.request?.error)?{error:tv(e.error??e.request?.error)}:{},...ev(e.error)===void 0?{}:{httpStatus:ev(e.error)}}}function ov(e={}){let t=e.limit??500,n=[];return{append(e){n.push(e),n.length>t&&n.splice(0,n.length-t)},async read(){return n.slice()},async clear(){n.length=0}}}function sv(e){return{isEnabled:e.isEnabled,record(t){e.isEnabled()&&Promise.resolve(e.sink.append(t)).catch(()=>void 0)},async exportReport(){let t=await e.sink.read(),n=[...new Set(t.map(e=>e.feat))];return JSON.stringify({schema:`openchamber.client-diagnostics.v1`,exportedAt:Date.now(),eventCount:t.length,feats:n,events:t},null,2)},clear:()=>e.sink.clear()}}function cv(e){return typeof e==`string`&&q_.has(e)}function lv(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return cv(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>cv(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function uv(e){if(e.type===`http-page`)return e.purpose}function dv(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function fv(e){switch(e.type){case`http-page`:return`network`;case`sse-event`:case`sse-event-batch`:return`sse`;case`materialize-snapshots`:return`durable-cache`;default:return}}function pv(e){return e.__openchamberOptimistic===!0}function mv(e){let t=[];for(let n of e){if(n.type!==`text`)continue;let e=typeof n.text==`string`?n.text.trim():``;e&&t.push(e)}let n=t.join(`
400
- `).trim();if(n)return K_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function hv(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function gv(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var _v=e=>typeof e==`string`&&e.trim().length>0;function vv(e){if(!e||hv(e)!==`assistant`)return;let t=e,n=!_v(t.mode)&&!_v(t.agent),r=!_v(t.modelID)||!_v(t.providerID);return n||r}function yv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function bv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)G_(e)?r+=1:i+=1,pv(e)&&(a=!0);let o=e.messagesByID[t],s=hv(o),c=vv(o),l=s===`user`?mv(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:gv(o),...s?{role:s}:{},...l?{text:l}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function xv(e,t){let n=new Map(e.messages.map(e=>[e.id,e])),r=new Map(t.messages.map(e=>[e.id,e])),i=new Set(e.messageIDs),a=new Set(t.messageIDs),o=t.messageIDs.filter(e=>!i.has(e)),s=e.messageIDs.filter(e=>!a.has(e)),c=[],l=[],u=[],d=[];for(let t of e.messageIDs){let e=n.get(t);if(!e)continue;let i=r.get(t);if(!i){e.optimistic&&u.push(t);continue}(e.partCount!==i.partCount||e.slimCount!==i.slimCount||e.fullCount!==i.fullCount||e.optimistic!==i.optimistic)&&c.push({id:t,before:yv(e),after:yv(i)}),e.fullCount>0&&i.fullCount===0&&i.slimCount>0&&l.push(t),e.optimistic&&!i.optimistic&&!i.completed&&u.push(t),e.identityMissing!==!0&&i.identityMissing===!0&&d.push(t)}return{addedMessageIDs:o,removedMessageIDs:s,partsChanged:c,downgraded:l,optimisticLost:u,identityLost:d}}function Sv(e){return{at:(e.now??Date.now)(),feat:`transcript`,kind:`transcript-diff`,sessionID:e.sessionID,trigger:e.trigger,before:e.before,after:e.after,diff:xv(e.before,e.after),...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.purpose?{purpose:e.purpose}:{}}}function Cv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function wv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function Tv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Ev(e){let t=Tv(e.partID),n=Tv(e.messageID),r=Tv(e.directory),i=Tv(e.childSessionID),a=Tv(e.toolStatus),o=Tv(e.surfaceKind);return{directoryPresent:e.directoryPresent,childSessionPresent:e.childSessionPresent,finalized:e.finalized,backgroundRunning:e.backgroundRunning,effectiveActive:e.effectiveActive,suppressLoading:e.suppressLoading,delegating:e.delegating,childStatus:e.childStatus,parentStatus:e.parentStatus,idleConfirmed:e.idleConfirmed,navigateCapability:e.navigateCapability,...t?{partID:t}:{},...n?{messageID:n}:{},...r?{directory:r}:{},...i?{childSessionID:i}:{},...a?{toolStatus:a}:{},...o?{surfaceKind:o}:{},...e.taskStartedAt===void 0?{}:{taskStartedAt:e.taskStartedAt},...e.statusObservedAt===void 0?{}:{statusObservedAt:e.statusObservedAt},...e.statusSnapshotAt===void 0?{}:{statusSnapshotAt:e.statusSnapshotAt}}}function Dv(e){return[e.sessionID,Tv(e.partID)??``,e.childSessionPresent?`1`:`0`,Tv(e.childSessionID)??``,Tv(e.toolStatus)??``,e.finalized?`1`:`0`,e.backgroundRunning?`1`:`0`,e.effectiveActive?`1`:`0`,e.suppressLoading?`1`:`0`,e.delegating?`1`:`0`,e.childStatus,e.parentStatus,e.idleConfirmed?`1`:`0`,e.navigateCapability?`1`:`0`,e.directoryPresent?`1`:`0`,Tv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Ov(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Ev(e)}}function kv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:wv(e),...Ev(e)}}var Av=`openchamber-transcript-diagnostics`,jv=`events`,Mv=1,Nv=(e,t)=>{try{return e.error??Error(t)}catch{return Error(t)}},Pv=(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`))}}}),Fv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Mv),i=!1,a=()=>{i||(i=!0,n(Nv(r,`IndexedDB open failed`)))};r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(jv)||e.createObjectStore(jv,{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}),Iv=(e=Av)=>{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=Fv(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(jv,e)}catch(e){throw l(),e}let i=r.objectStore(jv),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 Pv(n.add(t),n.transaction);let r=await Pv(n.getAllKeys(),n.transaction),i=r.length-t;if(i>0)for(let e of r.slice(0,i))await Pv(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=>Pv(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 Pv(e.clear(),e.transaction)})}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})}}};function Lv(e={}){let t=e.driver??Iv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Rv=Qe(`OpenChamberMedia`);function zv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Bv(){return We()&&$e!==void 0&&$e.isPluginAvailable(`OpenChamberMedia`)}function Vv(){return`1.19.7-beta.23`}function Hv(){if(typeof localStorage>`u`)return null;try{return X_(localStorage.getItem(Y_))}catch{return null}}function Uv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(Y_,e?`true`:`false`)}catch{}}function Wv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var Gv;function Kv(e=Vv()){return Z_({version:e,preference:Hv()})}function qv(e={}){return sv({sink:Wv()===`indexeddb`?(e.createIndexedDBSink??Lv)():(e.createMemorySink??ov)(),isEnabled:e.isEnabled??Kv})}function Jv(){return Gv??=qv(),Gv}function Yv(e){Jv().record(e)}function Xv(e){try{return Kv()?bv(e()):void 0}catch{return}}function Zv(e){try{Yv(Sv(e))}catch{}}function Qv(e){try{Yv(Ov(e))}catch{}}function $v(e){try{Yv(kv(e))}catch{}}function ey(e){if(e!==void 0)return typeof e==`function`?e():e}function ty(e){return!lv(e.command)||e.changed===!1&&(e.command.type===`sse-event`||e.command.type===`sse-event-batch`)?!1:(e.isEnabled??(()=>Jv().isEnabled()))()}function ny(e){if(!ty(e))return;let t=lv(e.command);t&&Yv(av({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:ey(e.transcript),request:ey(e.request),hydration:ey(e.hydration),command:e.command.type,purpose:uv(e.command),sseType:dv(e.command),source:fv(e.command),error:e.error}))}async function ry(){let e=await Jv().exportReport(),t=Te()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function iy(e,t=Q_()){if(Bv())return(await Rv.saveFile({dataBase64:zv(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 ay(){let e=await ry(),t=Q_();return{content:e,fileName:t,outcome:await iy(e,t),eventCount:$_(e)}}function oy(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 sy=2,cy=6e4,ly=6e4;function uy(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??i)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??h)()}}function dy(e,t){let n=(t.probe?.getTransport??i)(),r=(t.probe?.getGeneration??h)();if(n!==e.transport||r!==e.generation)throw new qh}function fy(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function py(e,t){return wg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function my(e,t){return`${e.trim()}\n${t}`}function hy(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Ig({client:t,activeRegistry:jg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??sy)),o=e.fetchReconcile??c_,s=e.now??Date.now,c=Math.max(0,e.destructiveResetDedupeMs??cy),l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Set,_=new Map,v=new Set,y=new Map,b=(e,t)=>{g.add(my(e,t))},x=(e,t)=>{g.delete(my(e,t))},S=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},C=e=>{u+=1;for(let e of[...f.keys()])S(e);p.clear(),m.clear(),y.clear()},w=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(my(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(my(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=my(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},D=i=>{if(l)return;let a={transport:i.transport??uy(e).transport,generation:i.generation??uy(e).generation},o=s(),c=E(),u=T(a,c),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(my(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(my(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of c)f.set(my(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(my(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=fy(e,a),s=n.getTranscript(r),c=B_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:i.lastEventID,capturedAt:o});U_(t,c)}let p=new Set;for(let t of u){let n=oy({directory:t,activeScopes:w(a,t),viewedSessions:c,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(my(e.directory,e.sessionID))}for(let e of d){let t=my(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=Xv(()=>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=Xv(()=>n.getTranscript(e));i&&t&&Zv({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},k=e=>{let t=n.getTranscript(e),r=t.messageOrder[t.messageOrder.length-1];if(!r)return!1;let i=t.messagesByID[r];return!i||i.role!==`assistant`?!1:Rs(i)},A=async(r,i,a)=>{if(dy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;U_(t,V_(H_(t,i)??B_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let o=Xv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),dy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;W_(t,i),x(i.directory,i.sessionID),y.set(my(i.directory,i.sessionID),s());try{let e=Xv(()=>n.getTranscript(r));o&&e&&Zv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw U_(t,V_(H_(t,i)??B_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},j=async(r,i,a)=>{if(dy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;U_(t,V_(H_(t,i)??B_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Xv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),dy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;W_(t,i),x(i.directory,i.sessionID);try{let e=Xv(()=>n.getTranscript(r));o&&e&&Zv({trigger:`reconnect-compensation-ensure-tail`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw U_(t,V_(H_(t,i)??B_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},ee=async(r,i,a,l)=>{let d=fy(r,i),f=py(r,i),p=Og({directory:f.directory,sessionID:f.sessionID,checkpoint:String(H_(t,f)?.capturedAt??s())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:s()});try{if(dy(i,e),a!==u||l.aborted)throw new qh;let m=H_(t,f);if(m||(m=B_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:s()}),U_(t,m)),!m.anchorMessageID){if(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}m=V_(m,{state:`reconciling`}),U_(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,dy(i,e),a!==u||l.aborted)throw new qh;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,dy(i,e),a!==u||l.aborted)throw new qh;let g=n.getTranscript(d).liveRevision;if(!_&&!h){await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()});return}let x=await o({sessionID:r.sessionID,directory:r.directory.trim(),..._?{continuation:_}:{anchor:h},signal:l});if(dy(i,e),a!==u||l.aborted)throw new qh;if(x.resetRequired){let n=y.get(my(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}if(S===1&&(v=x.capturedHeadMessageID),b=x.latestHeadMessageID??b,x.records.length>0&&O(d,x,g),m=V_(H_(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),U_(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=V_(H_(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),U_(t,m);continue}if(m=V_(H_(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),U_(t,m),x(r.directory,r.sessionID),t.setQueryData(p,{status:`complete`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}{let n=y.get(my(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}}}catch(n){if(n instanceof qh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(p,{status:`cancelled`,finishedAt:s()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(p,{status:`error`,finishedAt:s(),code:n instanceof Error?n.name:`error`}),n}},te=t=>{let n=t.trim(),r=m.get(n)??0;if(r>=a)return;let i=p.get(n);if(!i||i.length===0)return;let o=i.shift();m.set(n,r+1);let s=my(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),te(n);return}let c=uy(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{Vg(n,o.sessionID);try{await ee(o,c,l,h.signal)}catch{}finally{Hg(n,o.sessionID),f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),te(n)}})();d.set(s,g)},M=e=>{let t=e.directory.trim(),n=my(t,e.sessionID);if(d.has(n))return;let r=p.get(t);r||(r=[],p.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),te(t))},ne=t=>{let n=E(),i=T(t,n);for(let a of i){let i=oy({directory:a,activeScopes:w(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)M(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=my(e.scope.directory,e.scope.sessionID);i.some(e=>my(e.directory,e.sessionID)===t)||b(e.scope.directory,e.scope.sessionID)}}},re=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??i)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??h)(),a=(e.probe?.getTransport??i)();if(r!==n.generation||a!==n.transport){C(`generation_mismatch`);return}ne(n)},ie=t=>{if(l)return;let r=t.directory.trim(),i=uy(e,t),a=fy({directory:r,sessionID:t.sessionID},i),c=Tg(py({directory:r,sessionID:t.sessionID},i)),u=_.get(c);if(u&&s()-u.checkedAt<ly||v.has(c)||d.has(my(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(v.add(c),(async()=>{try{if(dy(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(dy(i,e),l||(_.set(c,{checkedAt:s()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;O(a,u,d)}catch{}finally{v.delete(c)}})())};return{captureCheckpoints:D,onCompensation:re,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=my(i,r.sessionID);if(!g.has(a))return ie(r),null;x(i,r.sessionID);let o=uy(e,r),s=fy({directory:i,sessionID:r.sessionID},o),c=py({directory:i,sessionID:r.sessionID},o),u=H_(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){M({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{dy(o,e),Vg(i,r.sessionID);try{let e=await n.ensureInitial(s);return W_(t,c),e}finally{Hg(i,r.sessionID)}}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:C,getCheckpoint:n=>{let r=uy(e,n);return H_(t,py({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(my(e,t)),destroy:()=>{l=!0,C(`destroy`)}}}var gy=e=>e.trim(),_y=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session status runtime changed`)},vy=(e,t={})=>{let n=gy(e),r=t.transport??i(),a=t.loadSnapshot??((e,t)=>z.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,s=t.runtimeProbe??{},c=(s.getGeneration??h)();return ot({queryKey:N.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{_y(r,c,s);let t=o(),i=await a(n,e);if(_y(r,c,s),i===null)throw Error(`session status snapshot unavailable`);return{snapshot:i,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},yy=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(vy(e,r))},by=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session active runtime changed`)},xy=(e={})=>{let t=e.transport??i(),n=e.loadActive??(e=>z.getSessionActive(e)),r=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??h)();return ot({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{by(t,o,a);let i=r(),s=await n(e);return by(t,o,a),{result:s,requestedAt:i}},staleTime:0,gcTime:3e5,retry:!1})},Sy=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(xy(n))},Cy;function wy(e){Cy=e}function Ty(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 Ey(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Dy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Oy(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 ky(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=Ty(o[e]);if(t){c[e]=n&&Dy(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 Ay(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=Ty(t[o]);if(n&&n.type!==`idle`){Ey(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 jy(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function My(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 yy(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 Sy({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}=ky(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=jy(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Ay(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Cy;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 Ny({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:My(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Py(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Fy(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 Iy(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 Ly(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(tc(e))??Promise.resolve(),r.get(rc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=tc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=rc(e),i=(r.get(n)??Promise.resolve()).then(t,t);return r.set(n,i.then(()=>void 0,()=>void 0)),i};return{wait:i,persistSettled:(n,r,i)=>a(n,async()=>{if((await e.upsertSettled(n,r,i)).status!==`written`)return;let a=(t.getByteBudget??Sg)();await e.evictToBytes(a,{protect:t.getProtectScopes?.()??[]})}),removeMessage:(t,n)=>a(t,()=>e.removeMessage(t,n)),clearSession:t=>a(t,()=>e.clearSession(t)),clearGeneration:t=>o(t,()=>e.clearGeneration(t))}}var Ry=new Map;function zy(e,t){let n=Ry.get(e);if(n)return n;let r=t().finally(()=>{Ry.get(e)===r&&Ry.delete(e)});return Ry.set(e,r),r}var By=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Vy(e){return zy(By(e),e.request)}function Hy(e,t){return`${e}\n${t}`}var Uy=new Map;function Wy(e){return Uy.get(e)}async function Gy(e){return Vy({runtimeKey:Hy(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 Uy.set(r.id,i),{info:op(r),parts:i}}})}function Ky(e,t){let n=e.info;return n.role===t||n.clientRole===t}function qy(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Ky(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 Jy(e){if(e.complete){let t=e.records.some(e=>Ky(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=qy(e.records);if(t.length===0){let t=e.records.some(e=>Ky(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=>Ky(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Yy(e){return e.trim()}function Xy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??i)(),r=e.generation??t.generation??(t.probe?.getGeneration??h)();return{directory:Yy(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function Zy(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:rl,liveRevision:0}}function Qy(e,t){if(!e||e.pages.length===0)return Zy(t);let n=Kh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function $y(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function eb(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function tb(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=$y(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=$y(e.messagesByID[t]);a===void 0||a<=n||eb(e.partsByMessageID[t])||i.push(t)}return i}function nb(e={}){let t=e.client??L,n=e.cacheBudget??Ig({client:t,activeRegistry:e.activeRegistry??jg()}),r=n.activeRegistry,a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=e.durableStore?Ly(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Py),getByteBudget:e.getDurableByteBudget}):void 0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=M(e);!Sl(r)&&!v.has(n)||(y.add(n),Yv(av({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=l.get(e);return t||(t={messages:new Map,parts:new Map},l.set(e,t)),t},w=n=>{let r=Xy(n,e);return hg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=Xy(t,e);return rg({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=Xy(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let r=e.probe??{getTransport:i,getGeneration:h},o=Xy(n,{...e,transport:void 0,generation:void 0,probe:r}),s=K(o),c=a.get(s);if(c)return c;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=pg({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(s,l),l},k=t=>{let n=K(Xy(t,e)),r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(Xy(n,e));if(s.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});s.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=s.get(e);n&&(n(),s.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=t=>{let n=Xy(t,e),r=K(n),i=w(t),a=C(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=Qy(i,n.sessionID),s=ee(r,o);return a.cachedFrom=i,a.hasTranscriptCache=!0,s},ne=(e,t)=>`${K(e)}\n${t}`,re=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},ie=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ae=e=>{for(let t of p.keys())t.startsWith(e)&&p.delete(t);for(let t of m.keys())t.startsWith(e)&&m.delete(t)},oe=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},se=e=>{let t=`${K(e)}\n`;for(let[e,n]of p)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of m.keys())if(e.startsWith(t))return!0;return!1},ce=t=>{let n=Xy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},le=(e,t,n)=>{u&&u.persistSettled(Py(e),t,n??[])},ue=(e,t,n,r)=>{if(!u||S>0||!r.applied||!r.changed)return;let i=Py(t);if(n.type===`remove-message`){u.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(u.clearSession(i),n.page){let r=M(e);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;le(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=Iy(e);if(n.action===`remove`){u.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&le(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&&le(t,n,r.partsByMessageID[e.info.id])}}}},N=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:i,getGeneration:h},s={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??oh()};return Fy(r?.fresh?await t.fetchQuery({...sg(s,a,n.transport,o,n.generation),staleTime:0}):await cg(s,a,t,n.transport,o,n.generation))},de=(e,t)=>{for(let n of t)cu(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},fe=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now();d.set(r,{status:`loading`});try{let i=await N(t);if(!ce(t))return d.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Jm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let a=g.get(r);if(a&&a.size>0){let n=[],r=0;for(let o of i.records){let i=o.info.id;if(!(!i||!a.has(i))){if(!gl(P.getParts(e,i),P.getMessage(e,i)??o.info)){re(t,i),p.set(ne(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),de(e,n)}return d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof qh||!ce(t))return d.delete(r),P.getTranscript(e);throw d.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Yv(av({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:M(e),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{f.delete(r)}})();return f.set(r,a),a},pe=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;d.set(r,{status:`loading`});try{let i=await N(t,{fresh:!0});if(!ce(t))return d.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||eu(t.sessionID,t.directory)?(d.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Jm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return d.delete(r),n instanceof qh||!ce(t)||Yv(av({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`reconcile-page`,durationMs:Date.now()-i,transcript:M(e),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{f.delete(r)}})();return f.set(r,a),a},me=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(Xy(t,e)))?!0:_h(n).kind===`unknown`},P={getTranscript(e){return M(e)},getPagination(t){let n=Xy(t,e),r=K(n),i=P.getTranscript(t);return te(r,El(n.sessionID,i.boundary))},getRequestState(t){let n=Xy(t,e),r=d.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=Xy(t,e),r=K(n),i=P.getTranscript(t);Sl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Cl({p0Satisfied:a,prependActive:b.has(r),materializeActive:se(n),earlierHistoryLoaded:yl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(Xy(t,e)),i=C(r),a=P.getTranscript(t).messagesByID[n];return i.messages.has(n)&&i.messages.get(n)===a?i.messages.get(n):(i.messages.set(n,a),a)},getParts(t,n){let r=K(Xy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??rb,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=Xy(t,e),i=p.get(ne(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||hl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=Xy(t,e),i=ne(r,n),a=Xv(()=>P.getTranscript(t)),o=e=>{try{let t=Xv(e);if(!a||!t)return;Zv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=m.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return p.set(i,{status:`idle`}),P.getTranscript(t);if(!hl(P.getParts(t,n))&&!g.get(K(r))?.has(n))return p.set(i,{status:`ready`}),P.getTranscript(t);p.set(i,{status:`loading`}),k(t);try{let a=await Gy({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return z.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return ce(r)?(P.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),hl(P.getParts(t,n))?p.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):p.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(p.delete(i),P.getTranscript(t))}catch(e){if(!ce(r))return p.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return p.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{re(r,n)}})();return m.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{m.get(i)===c&&m.delete(i)}),c},apply(r,i){let a=Xy(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=mg(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&_.delete(K(a)),e.result.changed&&(k(r),D(r)),e.result}case`sse-event`:{let e=mg(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`sse-event-batch`:{let e=mg(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=mg(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&k(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),mg(t,o,a.sessionID,{type:`optimistic-confirm`,messageID:i.messageID}).result;case`optimistic-remove`:{e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID});let n=mg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&k(r),n.result}case`reset`:{if(b.delete(K(a)),g.delete(K(a)),_.delete(K(a)),n.purgeSession(E(r)),!i.page)return k(r),{applied:!0,changed:!0};let e=mg(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(k(r),D(r)),e.result}case`materialize-snapshots`:return ib(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=mg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&k(r),e.result}default:return{applied:!1,changed:!1}}})();return ue(r,a,i,s),s.applied&&(ny({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:()=>P.getTranscript(r),request:()=>P.getRequestState?.(r),hydration:()=>P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,i){let a=K(Xy(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);c.set(a,r.retain(e)),n.noteScopeObserved(e)}return s.add(i),A(t),()=>{let e=o.get(a);if(e){if(e.delete(i),e.size===0){let e=c.get(a);e&&(e(),c.delete(a))}j(a)}}},async ensureInitial(t){let i=Xy(t,e),a=K(i);if(u&&await u.wait(Py(i)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Py(i));if(ce(i)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)gl(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Yv(av({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(me(t)&&w(t)!==void 0){let e=Date.now(),n=await fe(t,i);return Yv(av({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let o=w(t);if(o&&o.pages.length>0&&!me(t)&&e.fetcher&&!r.isRetained(E(t))){let e=Date.now(),n=await pe(t,i);return Yv(av({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;d.delete(a);try{await s.ensureInitial()}catch(e){throw Yv(av({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:M(t),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}d.delete(a),l||Jm(i.directory,i.sessionID,{transport:i.transport,generation:i.generation}),n.noteScopeObserved(E(t)),D(t);let f=P.getTranscript(t);return Yv(av({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:f,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),f},async fetchPreviousPage(t){if(me(t)&&await P.ensureInitial(t),_h(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=Xy(t,e),r=K(n);b.add(r),k(t);let i=Date.now();try{await O(t).fetchPreviousPage(),D(t);let e=P.getTranscript(t);return Yv(av({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),e}catch(e){throw Yv(av({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{b.delete(r),k(t)}},getController(t){let n=Xy(t,e);return a.get(K(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=Xy(t,e),i=Xv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??oh(),signal:new AbortController().signal}),s=P.getTranscript(t).liveRevision;if(P.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:o.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:s}),s<=a){let n=tb(P.getTranscript(t),o);for(let i of n)P.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let c=P.getTranscript(t);n.noteScopeObserved(E(t));try{let e=Xv(()=>c);i&&e&&Zv({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:i,after:e})}catch{}return c},async destructiveReset(t){let r=Xv(()=>P.getTranscript(t)),i=E(t);return u&&await u.clearSession(Py(Xy(t,e))),n.destructiveReset(i,async()=>{let n=Xy(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),l.delete(i),oe(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=Xv(()=>s);r&&e&&Zv({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=K(Xy(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),l.delete(r),ae(`${r}\n`),g.delete(r),oe(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),l.delete(n);let e=c.get(n);e&&(e(),c.delete(n));let t=s.get(n);t&&(t(),s.delete(n)),o.delete(n)}ae(`${e}\n${t}\n`),ie(`${e}\n${t}\n`),oe(`${e}\n${t}\n`),n.purgeGeneration(e,t),u&&u.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of s.values())e();s.clear();for(let e of c.values())e();c.clear(),o.clear(),l.clear(),d.clear(),f.clear(),p.clear(),m.clear(),g.clear(),v.clear(),y.clear(),b.clear(),n.dispose()}};return P}var rb=Object.freeze([]);function ib(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=mg(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var ab=`/api/openchamber/transcript-cache`,ob=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),sb=e=>typeof e==`object`&&!!e&&!Array.isArray(e),cb=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},lb=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},ub=e=>{if(!sb(e))throw Error(`Invalid transcript cache scope`);return{transport:cb(e.transport,`scope`),generation:lb(e.generation,`scope`),directory:cb(e.directory,`scope`),sessionID:cb(e.sessionID,`scope`)}},db=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},fb=e=>{if(!sb(e)||!sb(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!sb(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:ub(e.scope),messageID:cb(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>db(e,`part completeness`)),completeness:db(e.completeness,`completeness`),contentHash:cb(e.contentHash,`content hash`),byteSize:lb(e.byteSize,`byte size`),lastAccessedAt:lb(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:lb(e.sortKey.created,`sort key`),messageID:cb(e.sortKey.messageID,`sort key`)}}},pb=(e,t)=>{if(!sb(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(fb);return{scope:e.scope===void 0?gc(t):ub(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},mb=e=>{if(!sb(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:fb(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!ob.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:fb(e.record)}}}throw Error(`Invalid transcript cache upsert`)},hb=e=>{if(!sb(e))throw Error(`Invalid transcript cache evict`);return{evicted:lb(e.evicted,`evict`),freedBytes:lb(e.freedBytes,`evict`),remainingBytes:lb(e.remainingBytes,`evict`)}},gb=e=>({scope:gc(e),records:[],byteSize:0}),_b=(e,t)=>sb(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,vb=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`)}},yb=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 vb(r)};let i=await vb(r).catch(()=>void 0);throw Error(_b(i,`Transcript cache request failed (${r.status})`))},bb=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),xb=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Sb(e={}){let t=e.fetch??F;return{async readSession(e){let n=await yb(t,`${ab}/session`,{method:`GET`,query:bb(e)});return n.kind===`disabled`||n.kind===`not-found`?gb(e):pb(n.payload,e)},async readMessage(e,n){let r=await yb(t,`${ab}/message`,{method:`GET`,query:{...bb(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!sb(r.payload))throw Error(`Invalid transcript cache record`);return fb(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await yb(t,`${ab}/message`,xb(`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 mb(i.payload)},async removeMessage(e,n){let r=await yb(t,`${ab}/message`,xb(`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 yb(t,`${ab}/session`,xb(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await yb(t,`${ab}/generation`,xb(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await yb(t,`${ab}/evict`,xb(`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 hb(r.payload)},async clearAll(){let e=await yb(t,`${ab}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Cb=`openchamber-transcript-durable`,wb=1,Tb=`transcriptIndex`,Eb=`transcriptContent`,Db=class extends Error{code;constructor(e){super(e),this.code=e}},Ob=e=>({id:nc(e.scope,e.messageID),scope:gc(e.scope),scopeKey:tc(e.scope),generationKey:rc(e.scope),messageID:e.messageID,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID},contentHash:e.contentHash,completeness:e.completeness,partCompleteness:e.partCompleteness.slice(),byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt}),kb=(e,t)=>({scope:gc(e.scope),messageID:e.messageID,info:hc(t.info),parts:hc(t.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),Ab=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return kb(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},jb=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},Mb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Nb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Db(`database-unavailable`));return}let r=indexedDB.open(e,wb),i=!1,a=()=>{i||(i=!0,n(new Db(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Tb)){let t=e.createObjectStore(Tb,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Eb)||e.createObjectStore(Eb,{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}),Pb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Db(`database-unavailable`)),r.onblocked=()=>void 0}),Fb=(e=Cb)=>({transaction:async t=>{let n=await Nb(e),r=n.transaction([Tb,Eb],`readwrite`),i=r.objectStore(Tb),a=r.objectStore(Eb),o=e=>Mb(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:()=>Pb(e)});function Ib(e,t={}){let n=_c(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Ob(t)),vc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(tc(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=kb(t,r);a.lastAccessedAt=n(),await e.putIndex(Ob(a)),i.push(a)}return yc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Ab(e,nc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=bc({info:i,incomingCompleteness:cc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=hc(a.slice()),c=cc(s),l=await dc(i,s),u=nc(t,i.id);return e.transaction(async e=>{let a=await Ab(e,u),o=bc({info:i,existing:a,incomingCompleteness:c,incomingHash:l.hash});if(o.status===`skipped`)return o.reason===`slim-downgrade`&&a?{status:`skipped`,reason:`slim-downgrade`,record:vc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:gc(t),messageID:i.id,info:hc(i),parts:s,partCompleteness:s.map(sc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:ac(i)};return await e.putIndex(Ob(d)),await e.putContent({id:u,info:hc(i),parts:s}),{status:`written`,record:vc(d)}})},async removeMessage(t,n){await e.transaction(e=>jb(e,nc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(tc(t));for(let t of n)await jb(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(rc(t));for(let t of n)await jb(e,t.id)})},async evictToBytes(t,n){return e.transaction(async e=>{let r=Number.isFinite(t)?Math.max(0,t):0,i=new Set((n?.protect??[]).map(tc)),a=await e.getAllIndexes(),o=0;for(let e of a)o+=e.byteSize;if(o<=r)return{evicted:0,freedBytes:0,remainingBytes:o};let s=a.filter(e=>!i.has(e.scopeKey)).sort((e,t)=>e.lastAccessedAt===t.lastAccessedAt?ic(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await jb(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 Lb(e={}){return Ib(e.driver??Fb(e.databaseName),e)}function Rb(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??We;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var zb=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Bb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Sb)(),t),i=()=>(n??=(e.createIndexedDBStore??Lb)(),n),a=()=>Rb(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=>zb([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Vb(e={}){await Bb(e).clearAll()}var Hb=(e,t)=>e<t?-1:+(e>t);function Ub(e){return e.filter(e=>!!e?.id).sort((e,t)=>Hb(e.id,t.id))}async function Wb(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await Qg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=r.records.map(e=>({info:op(e.info),parts:Ub(e.parts??[])}));if(!e.before&&!r.complete&&qy(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await Jy({records:a,complete:r.complete,requestMessage:async n=>{let r=await Gy({transport:i(),generation:h(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:Ub(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Ub(e.parts??[])}))}return{records:a,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function Gb(e){let t=e.client??L,n=jg(),r=Ig({client:t,activeRegistry:n}),a=nb({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:i,getGeneration:h},fetcher:e=>Wb({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:oh(),historyLimit:sh(),durableStore:e.durableStore??Bb()}),o=hy({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:r,probe:{getTransport:i,getGeneration:h},confirmSessionStatus:async(t,n)=>{let r=e.childStores.getChild(t.directory);if(!r)return;let i=r.getState().session_status?.[t.sessionID];!n.tailOpen&&i?.type!==`busy`&&i?.type!==`retry`||await My(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return gu(a),ku(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),ku(null),a.destroy(),_u()}}}function Kb(e){return vu().apply(W(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var qb=new Map;function Jb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Yb(e,t,n,r={}){let a=r.getTransportIdentity??i,o=r.getGeneration??h,s=a(),c=o(),l=Jb(e,t,s,c),u=()=>a()===s&&o()===c,d=qb.get(l)??Promise.resolve(),f,p=new Promise(e=>{f=e}),m=d.catch(()=>void 0).then(()=>p);qb.set(l,m);try{if(await d.catch(()=>void 0),!u())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:s,generation:c,isCurrent:u})}finally{f(),qb.get(l)===m&&qb.delete(l)}}var Xb=new Set,Zb=new Set,Qb=new Set,$b=new Set,ex={onDeleteRequest(e){return Xb.add(e),()=>{Xb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||Xb.forEach(t=>t(e))},onCreateRequest(e){return Zb.add(e),()=>{Zb.delete(e)}},requestCreate(e){let t=e??{};Zb.forEach(e=>e(t))},onDirectoryRequest(e){return Qb.add(e),()=>{Qb.delete(e)}},requestDirectoryDialog(){Qb.forEach(e=>e())},onGitRefreshHint(e){return $b.add(e),()=>{$b.delete(e)}},requestGitRefresh(e){e.directory.trim()&&$b.forEach(t=>t(e))}},tx=50,nx=e=>{let t=Object.keys(e);if(t.length<=tx)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-tx).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},rx=Oe()(je(ke((e,t)=>({sessions:{},setSessionTodos:(t,n)=>{t&&e(e=>{let r={...e.sessions};return!n||n.length===0?t in r?(delete r[t],{sessions:r}):e:(r[t]={todos:n,touchedAt:Date.now()},{sessions:nx(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:g(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),ix=new Set([`todowrite`,`todoread`]),ax=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),ox=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),sx=(e,t)=>{rx.getState().setSessionTodos(e,t)},cx=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},lx=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},ux=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},dx=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=ux(n);e&&t.push(e)}return t},fx=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return dx(t);if(t&&typeof t==`object`)return dx(t.todos)}catch{}return[]},px=e=>{if(!ix.has(cx(e)))return[];let t=lx(e);if(t&&ax.has(t))return[];let n=e.state,r=dx(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=dx(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=dx(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?fx(i):[]};function mx(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=px(r[e]);if(t.length>0)return t}}return[]}function hx(e){if(!e.sessionID||e.isStale?.()||ox(e.store.getState().todo,e.sessionID))return!1;let t=mx(e.transcript);return t.length===0||e.isStale?.()||ox(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function gx(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(W(e.directory,e.sessionID));return t?hx({sessionID:e.sessionID,store:e.store,transcript:t,persist:sx,isStale:e.isStale}):!1}var _x=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>yC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>vC,SESSION_DELETE_UNDO_MS:()=>US,abortBusySessionForMessageEdit:()=>NC,abortCurrentOperation:()=>wC,archiveSession:()=>$S,beginOptimisticSend:()=>lC,cancelScheduledSessionDeletes:()=>QS,classifySendFailure:()=>pS,combinedSendConfirmationOptions:()=>bC,commitMessageEdit:()=>FC,createSession:()=>LS,deleteSession:()=>XS,dirStoreForDirectory:()=>$x,dismissOpenQuestionsForSession:()=>OC,ensureSentUserMessagePresence:()=>CC,fetchMessagesForSession:()=>VC,fetchRecentSendConfirmationRecords:()=>gC,forkSession:()=>zC,getSendFailureKind:()=>dS,isQuestionRequestNotFoundError:()=>PS,materializeConfirmedSendRecords:()=>_C,mirrorSessionIntoLiveStores:()=>oS,optimisticInsertUserMessage:()=>mC,optimisticSend:()=>pC,patchSessionMetadata:()=>RS,refetchSessionMessages:()=>LC,rejectQuestion:()=>DC,releaseUnconfirmedQueueSend:()=>Xx,requestSessionSmartTitle:()=>nC,resolveForkMessageId:()=>Px,respondToPermission:()=>TC,respondToQuestion:()=>EC,revertToMessage:()=>kC,rollbackOptimisticSend:()=>dC,scheduleSessionDeletes:()=>ZS,setActionRefs:()=>Jx,setOptimisticRefs:()=>Yx,settleOptimisticSend:()=>fC,shareSession:()=>rC,shouldSuppressForkCopyEvent:()=>Ix,stageMessageEdit:()=>jC,trackForkCopySessionCreated:()=>Ex,unarchiveSession:()=>eC,unrevertSession:()=>RC,unshareSession:()=>iC,updateSessionTitle:()=>tC,waitForConnectionOrThrow:()=>_S,waitForSessionIdleForMessageEdit:()=>PC}),vx=2,yx=150,bx=new Set([`patch`,`step-start`,`step-finish`]),xx=3,Sx=150,Cx=null,wx=new Map,Tx=3e4;function Ex(e,t){let n=t?.id;!Cx||Cx.runtimeKey!==c()||Cx.directory!==e||!n||t?.title!==Cx.expectedTargetTitle||n===Cx.sourceSessionID||Cx.targetSessionID||(Cx.targetSessionID=n)}function Dx(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function Ox(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function kx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Ax(e){return e?.type===`busy`||e?.type===`retry`}function jx(e){for(let t=e.length-1;t>=0;--t)if(e[t]?.role===`user`)return t;return-1}function Mx(e){let t=e.at(-1);return t?.role===`assistant`&&t.time.completed==null}function Nx(e,t){return Ax(e)||e==null&&Mx(t)}function Px(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(!Nx(n,t))return;let r=jx(t);if(r!==-1)return t[r+1]?.id}async function Fx(e,t){let n=Pp(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return z.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function Ix(e,t,n){if(Cx&&Cx.runtimeKey===c()&&Cx.directory===e&&t&&t===Cx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${c()}:${e}:${t}`,i=wx.get(r);return i?i.expiresAt<=Date.now()?(wx.delete(r),!1):n<=i.messageID:!1}var Lx=null,Rx=null,zx=()=>``,Bx=new Map,Vx=null,Hx=null,Ux=null,Wx=e=>new Promise(t=>setTimeout(t,e));function Gx(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 Kx(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Gx(e.error)}`);throw n!==void 0&&(r.status=n),r}function qx(e,t){let n=Kx(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Jx(e,t,n){if(Lx=e,Rx=t,zx=n,Bx.size>0){let e=[...Bx.values()];Bx.clear(),queueMicrotask(()=>{for(let t of e)VC(t.sessionID,t.directory)})}}function Yx(e,t,n){Vx=e,Hx=t,Ux=n??null}function Xx(e){let t=e.directory??null;Hx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Zx(){if(!Lx)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Lx}function Qx(){if(!Rx)throw Error(`Child stores not initialized`);let e=zx();if(!e)throw Error(`No current directory`);return Rx.ensureChild(e)}function $x(e,t){if(!Rx)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Rx.ensureChild(e,t)}function eS(e,t){let n=t??CS(e);return n?{store:$x(n),directory:n}:{store:Qx(),directory:sS()}}function tS(e,t){let{store:n,directory:r}=eS(e,t??void 0),i=r??sS()??``;return{repository:H()??U(i,n),directory:i,store:n}}function nS(e,t){let{repository:n,directory:r,store:i}=tS(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(W(r,e))}}function rS(e,t){return Wu(nS(e,t).data)}function iS(e,t){return nS(e,t).data.messageOrder.length}function aS(e,t){let n=Rx;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]=rD(e,n[r]),t.setState({session:i}),!0}return!1}function oS(e,t){t&&aS(e,t)||aS(e)}function sS(){return zx()||void 0}function cS(){let{hasEverConnected:e,lastDisconnectReason:t}=Vf.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function lS(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 uS=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 dS(e){return e instanceof uS?e.kind:null}function fS(e){let t=lS(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 pS(e,t){return t?fS(e)||lS(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var mS=2e3,hS=5e3,gS=3e4;async function _S(){let e=Hm();e&&Vm(`send_stream_stale`);let t=Date.now()+(e?hS:mS);for(;Date.now()<t;){if(Vf.getState().isConnected&&!Hm()||d()&&!Hm())return;let e=t-Date.now();if(e<=0)break;if(await Vf.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Hm())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw cS()}function vS(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Vm(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},gS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function yS(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function bS(e){e&&Y.getState().upsertSession(e)}function xS(e,t){let n=ip(t),r=[...e.getState().session],i=cs.search(r,n.id,e=>e.id);if(i.found){let t=rD(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 SS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=yS(e);if(i)return xS(t,i);try{return xS(t,await z.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function CS(e){return wS(e)||$.getState().getDirectoryForSession(e)||sS()}function wS(e){let t=Rx;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=H()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function TS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):Zx()}function ES(e){Or.getState().clearAttachedFiles();for(let t of e){let e=typeof t.url==`string`?t.url:``,n=typeof t.mime==`string`?t.mime:`application/octet-stream`,r=typeof t.filename==`string`?t.filename:`attachment`;e&&Or.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var DS=()=>new Map(Array.from(Ad(),([e,t])=>[e,t.title||e]));function OS(e){return!(e.type!==`file`||Qp(e))}function kS(e){return OS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function AS(e){return e.some(kS)}async function jS(e){let t=[...e.parts];if(!AS(t))return t;let n=h(),r=e.directory??``;try{await Tu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||h()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=tS(e.sessionID,r);if(t=[...i.getParts(W(a,e.sessionID),e.messageID)],AS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function MS(e){if(AS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await Cm(e.parts,{sessionTitles:DS(),directory:e.directory}),n=Or.getState(),r=n.getDraft(e.key);return{payload:t,commit:await Om({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function NS(e,t,n){let r=Rx;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 PS(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 FS(e,t){let n=Rx;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 IS(e,t,n){let r=NS(e,t,n);return r?z.getScopedSdkClient(r):TS(t)}async function LS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??sS()),a=i.directory??null;return a&&Sd(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),Y.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function RS(e,t,n){let r=t??CS(e),i=n(Pp(await z.getSession(e,r))),a=await z.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Sd(a.id,o),a}async function zS(e,t){let n;try{n=await z.getSession(e,t??CS(e))}catch{return}if(!Rp(n))return;let r=Lp(n);if(r)try{await RS(r,t??CS(r),t=>Vp(t,e))}catch(e){let t=e instanceof Error?e.message:String(e);if(/not found/i.test(t))return;console.warn(`[session-actions] review metadata cleanup failed before delete`,e)}}function BS(e,t){if(!Rx)return[];let n=[],r=new Set,i=[];if(t){let e=Rx.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Rx.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 VS(e){if(Rx)for(let t of e){let e=Rx.children.get(t.directory);e&&e.setState({session:t.sessions})}}function HS(e){$.getState().setWorktreeMetadata(e,null)}var US=1e4,WS=new Map,GS=0;function KS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function qS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),VS(e.listSnapshots),bS(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function JS(e,t){let n=t??CS(e);Y.getState().markSessionsPendingDeletion([e]);let r=BS(e,n),i=yS(e);Y.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function YS(e,t){try{if(await zS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return BS(e,t),Y.getState().removeSessions([e]),HS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(BS(e,t),Y.getState().removeSessions([e]),HS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function XS(e,t){let n=JS(e);return await YS(e,n.directory)?!0:(qS(n),!1)}function ZS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>JS(e)),i=`session-delete-${Date.now()}-${GS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=WS.get(i);if(!e)return;WS.delete(i);let t=[],n=[];for(let r of e.entries)await YS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),qS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return WS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function QS(e){if(!e)return!1;let t=WS.get(e);if(!t)return!1;clearTimeout(t.timer),WS.delete(e);for(let e of[...t.entries].reverse())qS(e);return!0}async function $S(e){let t=CS(e),n=BS(e,t),r=yS(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await zS(e,t);let n=await z.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),VS(n),bS(r),!1}}async function eC(e){let t=CS(e),n=yS(e),r=n?KS(n):null;if(r&&(Y.getState().upsertSession(r),t&&Rx)){let e=Rx.children.get(t);e&&xS(e,r)}try{let n=await z.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=KS(n);if(Y.getState().upsertSession(r),t&&Rx){let e=Rx.children.get(t);e?xS(e,r):oS(r,t)}else oS(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&BS(e,t)),!1}}async function tC(e,t){let n=CS(e),r=yS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?qf(r):0,c=await z.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),oS(c,n)}async function nC(e){let t=CS(e),n=yS(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await z.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),oS(s,t)}async function rC(e){let t=CS(e),n=ip(qx(await Zx().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),aS(n,t),n}async function iC(e){let t=CS(e),n=ip(qx(await Zx().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),aS(n,t),n}function aC(e){let t=Rx,n=e??zx();if(!t||!n)return{store:e?$x(e):Qx(),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 oC(){return{identity:i(),generation:h()}}function sC(e,t){return e.isCurrent()&&i()===t.identity&&h()===t.generation}function cC(e,t){if(!sC(e,t))throw Error(`Send target changed before transport dispatch`)}function lC(e){if(!Vx||!Hx)throw new uS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??sS()??null,n=aC(t),r=oC();cC(n,r),e.beforeOptimisticInsert?.(),cC(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),im(e.sessionId),mC({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 uS?e:new uS(dS(e)??pS(e,!1),e)}}function uC(e){if(!sC(e.capture,e.transport)||!Hx)return;Hx({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 dC(e){uC(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function fC(e){if(!Vx||!Hx)throw new uS(`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 _S(),cC(n,r),s=!0,await vS(e.send(i)),!sC(n,r))throw new uS(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=dS(c)??pS(c,s),u=c instanceof uS?c:new uS(l,c,i);if(!sC(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await gC(a,i,o):null;if(d&&sC(n,r)){_C(n.store,a,i,d,{directory:o??void 0}),Ux?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||uC(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function pC(e){await fC({ticket:e.ticket??lC({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 mC(e){if(!Vx)return!1;let t=e.directory??sS(),n=t?$x(t):Qx(),r=t??sS()??``;if(xC(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),s={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},c=Xv(()=>nS(e.sessionId,t).data);Vx({sessionID:e.sessionId,directory:t,message:s,parts:a});let l=Xv(()=>nS(e.sessionId,t).data);try{c&&l&&Zv({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:i(),generation:h(),before:c,after:l})}catch{}let u=n.getState();return n.setState({session_status:{...u.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...u.session_status_observed_at,[e.sessionId]:o}}),!0}function hC(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function gC(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??vx,c=r?.retryDelayMs??yx;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!hC(r?.isCurrent)||a>0&&(await Wx(c),i?.signal.aborted||!hC(r?.isCurrent)))return null;try{let a=await Zx().session.messages({sessionID:e,directory:n??void 0,limit:uh(),...i?{signal:i.signal}:{}});if(!hC(r?.isCurrent))return null;let o=(Kx(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 _C(e,t,n,r,i){if(!r.length)return;let a=i?.directory??CS(t)??zx(),o=W(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:op(e.info),parts:e.parts??[]})),skipPartTypes:bx,merge:i?.gapFillOnly===!0?Ys:Zs({purpose:`recovery`})};bu(o,s)||U(a,e).apply(o,s)}var vC=2e3,yC={attempts:12,retryDelayMs:500},bC={presenceGraceMs:vC,recovery:{...yC}};function xC(e,t,n,r){let i=r??CS(t)??zx()??``,a=H()??U(i,e),o=W(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function SC(e,t,n,r){let i=r?.directory??CS(t)??zx()??``;if(xC(e,t,n,i))return Promise.resolve(!0);if(!hC(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=H()??U(i,e),f=W(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!hC(r?.isCurrent)){l(!1);return}xC(e,t,n,i)&&l(!0)}),xC(e,t,n,i)&&l(!0)})}async function CC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await SC(t,n,r,{timeoutMs:e.graceMs??bC.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!hC(a))return`cancelled`;let o=await gC(n,r,i,{...bC.recovery,isCurrent:a});return o?hC(a)?(_C(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:hC(a)?`missing`:`cancelled`}async function wC(e){let{store:t,directory:n}=eS(e),r=n?{state:`bound`,transportIdentity:i(),directory:n,sessionID:e}:null,a=r?$.getState().beginQueueAbortBlock(r):null;try{if(qx(await Zx().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&a&&$.getState().clearQueueAbortBlock(r,a),et(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>GV);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function TC(e,t,n){await _S();let r=NS(`permission`,e,t)||CS(e)||sS();if(qx(await IS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function EC(e,t,n){await _S();let r=NS(`question`,e,t)||CS(e)||sS();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(qx(await IS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw PS(n)&&FS(e,t),n}}async function DC(e,t){await _S();let n=NS(`question`,e,t)||CS(e)||sS();try{if(qx(await IS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw PS(n)&&FS(e,t),n}}async function OC(e){if(!e)return!1;let t=Rx;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=qp(t.session,e);if(i.size===0)continue;let a=t.question??{};for(let e of i){let t=a[e];if(t)for(let r of t)n.push({sessionId:e,requestId:r.id})}}if(n.length===0)return!1;for(let{sessionId:e,requestId:t}of n)FS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await DC(e,t)}catch(e){if(PS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function kC(e,t,n){let r=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return Yb(e,r??(()=>{try{return eS(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:o,directory:c}=eS(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Zx().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=rS(e,c).find(e=>e.id===t),d=rS(e,c).find(e=>e.id===t)??u;if(!d||d.role!==`user`)throw Error(`The selected user message is unavailable`);let{repository:f,directory:p}=tS(e,c),m=[...f.getParts(W(p,e),t)],h=a===void 0?s?C({transportIdentity:i()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await jS({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await Cm(m,{sessionTitles:DS(),directory:c})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=o.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),w={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},w.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(o.setState(w),h){let t=Or.getState(),r=await Om({key:h,expectedRevision:t.getDraft(h)?.revision??`absent`,payload:g,runtime:t.captureDraftRuntime()});if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),r.status===`committed`&&r.current&&r.previous&&r.result?.record?.revision!==void 0&&await Am({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await z.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await Am({key:h,restoredRevision:_,previous:v}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}let i=[...o.getState().session],a=i.findIndex(t=>t.id===e);return a>=0&&(i[a]=r,o.setState({session:i})),c&&ex.requestGitRefresh({directory:c}),g}catch(t){let r=[...o.getState().session],i=r.findIndex(t=>t.id===e);throw i>=0&&(r[i]={...r[i],revert:b}),n()?(o.setState({session:r}),h&&v&&_!==void 0&&await Am({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await Am({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function AC(e,t,n,r){let a=r??CS(t)??zx(),o=W(a,t),s=Xv(()=>nS(t,a).data),c=[...yu(t)];c.some(e=>e.directory===a&&e.sessionID===t)||c.push(o);let l=!1;for(let e of c)bu(e,{type:`remove-message`,messageID:n})!=null&&(l=!0);l||U(a,e).apply(o,{type:`remove-message`,messageID:n});let u=Xv(()=>nS(t,a).data);try{s&&u&&Zv({trigger:`user-delete`,sessionID:t,directory:a,transport:i(),generation:h(),before:s,after:u})}catch{}}async function jC(e,t,n,r){let a=n?.info,o=n?.parts,s=r?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=eS(e,s).directory}else{c=eS(e,s).directory;let{data:n}=nS(e,c),r=Wu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=r?.draftKey??C({transportIdentity:i()},e),{commit:u}=await MS({key:l,parts:await jS({directory:c,sessionID:e,messageID:t,parts:o??[]}),directory:c});if(u.status!==`committed`||!u.current)throw Error(`composer-restoration-commit-${u.status}`);let d=u.result?.record?.revision,f=u.previous;return d===void 0||!f?{rollback:async()=>({status:`skipped`})}:{rollback:async()=>({status:(await Am({key:l,restoredRevision:d,previous:f})).status})}}function MC(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 NC(e,t){let n=t?.directory,{store:r,directory:i}=eS(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Zx().session.abort({sessionID:e,directory:i})}catch{}}async function PC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=eS(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 FC(e,t,n){let r=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:s}=eS(e,r),c=Xv(()=>nS(e,r).data);try{await NC(e,{directory:r}),await PC(e,{directory:r});let n=new Set((await IC(e,r)).map(e=>e.id)),i=MC(t,rS(e,r),n,{preserveMessageId:a});for(let t of[...i].reverse())await z.deleteSessionMessage(e,t.id,s),AC(o,e,t.id,s)}finally{try{let t=Xv(()=>nS(e,r).data);c&&t&&Zv({trigger:`user-edit`,sessionID:e,directory:s,transport:i(),generation:h(),before:c,after:t})}catch{}}}async function IC(e,t){let{directory:n}=eS(e,t);return(Kx(await Zx().session.messages({sessionID:e,directory:n,limit:lh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>op(e.info))}async function LC(e,t){let{store:n,directory:r}=eS(e,t),a=Xv(()=>nS(e,t).data),o=(Kx(await Zx().session.messages({sessionID:e,directory:r,limit:lh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Xv(()=>nS(e,t).data);a&&n&&Zv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let s=o.map(e=>({info:op(e.info),parts:e.parts??[]})),c=W(r??zx(),e);bu(c,{type:`materialize-snapshots`,records:s,skipPartTypes:bx})||U(r??zx(),n).apply(c,{type:`materialize-snapshots`,records:s,skipPartTypes:bx});try{let n=Xv(()=>nS(e,t).data);a&&n&&Zv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return s.map(e=>e.info)}async function RC(e,t){return Yb(e,t??(()=>{try{return eS(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=eS(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=iS(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Zx().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Zx().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=qx(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<xx;r+=1){if(r>0&&(await Wx(Sx),!n())||(await LC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(iS(e,i)>o)return}if(iS(e,i)<=o){let n=i??zx(),a=H()??U(n,r),o=W(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await LC(e,t)}})}async function zC(e,t,n,r){let i=c(),{store:a,directory:o}=eS(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await SS(e,a,o);Sd(e,o);let l=a.getState(),u=l.session_status[e],d=rS(e,o);u?.type,d.length;let f=Px(n,d,u);if(!n&&Nx(u,d)&&jx(d)===-1&&(await LC(e),l=a.getState(),u=l.session_status[e],d=rS(e,o),f=Px(void 0,d,u)),!n&&Nx(u,d)&&jx(d)===-1)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:iS(e,o)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=nS(e,o),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(W(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!Qp(e)).map(e=>e.text||e.content||``).join(`
400
+ `).trim();if(n)return K_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function hv(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function gv(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var _v=e=>typeof e==`string`&&e.trim().length>0;function vv(e){if(!e||hv(e)!==`assistant`)return;let t=e,n=!_v(t.mode)&&!_v(t.agent),r=!_v(t.modelID)||!_v(t.providerID);return n||r}function yv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function bv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)G_(e)?r+=1:i+=1,pv(e)&&(a=!0);let o=e.messagesByID[t],s=hv(o),c=vv(o),l=s===`user`?mv(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:gv(o),...s?{role:s}:{},...l?{text:l}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function xv(e,t){let n=new Map(e.messages.map(e=>[e.id,e])),r=new Map(t.messages.map(e=>[e.id,e])),i=new Set(e.messageIDs),a=new Set(t.messageIDs),o=t.messageIDs.filter(e=>!i.has(e)),s=e.messageIDs.filter(e=>!a.has(e)),c=[],l=[],u=[],d=[];for(let t of e.messageIDs){let e=n.get(t);if(!e)continue;let i=r.get(t);if(!i){e.optimistic&&u.push(t);continue}(e.partCount!==i.partCount||e.slimCount!==i.slimCount||e.fullCount!==i.fullCount||e.optimistic!==i.optimistic)&&c.push({id:t,before:yv(e),after:yv(i)}),e.fullCount>0&&i.fullCount===0&&i.slimCount>0&&l.push(t),e.optimistic&&!i.optimistic&&!i.completed&&u.push(t),e.identityMissing!==!0&&i.identityMissing===!0&&d.push(t)}return{addedMessageIDs:o,removedMessageIDs:s,partsChanged:c,downgraded:l,optimisticLost:u,identityLost:d}}function Sv(e){return{at:(e.now??Date.now)(),feat:`transcript`,kind:`transcript-diff`,sessionID:e.sessionID,trigger:e.trigger,before:e.before,after:e.after,diff:xv(e.before,e.after),...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.purpose?{purpose:e.purpose}:{}}}function Cv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function wv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function Tv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Ev(e){let t=Tv(e.partID),n=Tv(e.messageID),r=Tv(e.directory),i=Tv(e.childSessionID),a=Tv(e.toolStatus),o=Tv(e.surfaceKind);return{directoryPresent:e.directoryPresent,childSessionPresent:e.childSessionPresent,finalized:e.finalized,backgroundRunning:e.backgroundRunning,effectiveActive:e.effectiveActive,suppressLoading:e.suppressLoading,delegating:e.delegating,childStatus:e.childStatus,parentStatus:e.parentStatus,idleConfirmed:e.idleConfirmed,navigateCapability:e.navigateCapability,...t?{partID:t}:{},...n?{messageID:n}:{},...r?{directory:r}:{},...i?{childSessionID:i}:{},...a?{toolStatus:a}:{},...o?{surfaceKind:o}:{},...e.taskStartedAt===void 0?{}:{taskStartedAt:e.taskStartedAt},...e.statusObservedAt===void 0?{}:{statusObservedAt:e.statusObservedAt},...e.statusSnapshotAt===void 0?{}:{statusSnapshotAt:e.statusSnapshotAt}}}function Dv(e){return[e.sessionID,Tv(e.partID)??``,e.childSessionPresent?`1`:`0`,Tv(e.childSessionID)??``,Tv(e.toolStatus)??``,e.finalized?`1`:`0`,e.backgroundRunning?`1`:`0`,e.effectiveActive?`1`:`0`,e.suppressLoading?`1`:`0`,e.delegating?`1`:`0`,e.childStatus,e.parentStatus,e.idleConfirmed?`1`:`0`,e.navigateCapability?`1`:`0`,e.directoryPresent?`1`:`0`,Tv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Ov(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Ev(e)}}function kv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:wv(e),...Ev(e)}}var Av=`openchamber-transcript-diagnostics`,jv=`events`,Mv=1,Nv=(e,t)=>{try{return e.error??Error(t)}catch{return Error(t)}},Pv=(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`))}}}),Fv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Mv),i=!1,a=()=>{i||(i=!0,n(Nv(r,`IndexedDB open failed`)))};r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(jv)||e.createObjectStore(jv,{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}),Iv=(e=Av)=>{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=Fv(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(jv,e)}catch(e){throw l(),e}let i=r.objectStore(jv),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 Pv(n.add(t),n.transaction);let r=await Pv(n.getAllKeys(),n.transaction),i=r.length-t;if(i>0)for(let e of r.slice(0,i))await Pv(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=>Pv(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 Pv(e.clear(),e.transaction)})}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})}}};function Lv(e={}){let t=e.driver??Iv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Rv=Qe(`OpenChamberMedia`);function zv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Bv(){return We()&&$e!==void 0&&$e.isPluginAvailable(`OpenChamberMedia`)}function Vv(){return`1.19.7-beta.24`}function Hv(){if(typeof localStorage>`u`)return null;try{return X_(localStorage.getItem(Y_))}catch{return null}}function Uv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(Y_,e?`true`:`false`)}catch{}}function Wv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var Gv;function Kv(e=Vv()){return Z_({version:e,preference:Hv()})}function qv(e={}){return sv({sink:Wv()===`indexeddb`?(e.createIndexedDBSink??Lv)():(e.createMemorySink??ov)(),isEnabled:e.isEnabled??Kv})}function Jv(){return Gv??=qv(),Gv}function Yv(e){Jv().record(e)}function Xv(e){try{return Kv()?bv(e()):void 0}catch{return}}function Zv(e){try{Yv(Sv(e))}catch{}}function Qv(e){try{Yv(Ov(e))}catch{}}function $v(e){try{Yv(kv(e))}catch{}}function ey(e){if(e!==void 0)return typeof e==`function`?e():e}function ty(e){return!lv(e.command)||e.changed===!1&&(e.command.type===`sse-event`||e.command.type===`sse-event-batch`)?!1:(e.isEnabled??(()=>Jv().isEnabled()))()}function ny(e){if(!ty(e))return;let t=lv(e.command);t&&Yv(av({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:ey(e.transcript),request:ey(e.request),hydration:ey(e.hydration),command:e.command.type,purpose:uv(e.command),sseType:dv(e.command),source:fv(e.command),error:e.error}))}async function ry(){let e=await Jv().exportReport(),t=Te()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function iy(e,t=Q_()){if(Bv())return(await Rv.saveFile({dataBase64:zv(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 ay(){let e=await ry(),t=Q_();return{content:e,fileName:t,outcome:await iy(e,t),eventCount:$_(e)}}function oy(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 sy=2,cy=6e4,ly=6e4;function uy(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??i)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??h)()}}function dy(e,t){let n=(t.probe?.getTransport??i)(),r=(t.probe?.getGeneration??h)();if(n!==e.transport||r!==e.generation)throw new qh}function fy(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function py(e,t){return wg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function my(e,t){return`${e.trim()}\n${t}`}function hy(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Ig({client:t,activeRegistry:jg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??sy)),o=e.fetchReconcile??c_,s=e.now??Date.now,c=Math.max(0,e.destructiveResetDedupeMs??cy),l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Set,_=new Map,v=new Set,y=new Map,b=(e,t)=>{g.add(my(e,t))},x=(e,t)=>{g.delete(my(e,t))},S=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},C=e=>{u+=1;for(let e of[...f.keys()])S(e);p.clear(),m.clear(),y.clear()},w=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(my(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(my(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=my(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},D=i=>{if(l)return;let a={transport:i.transport??uy(e).transport,generation:i.generation??uy(e).generation},o=s(),c=E(),u=T(a,c),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(my(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(my(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of c)f.set(my(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(my(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=fy(e,a),s=n.getTranscript(r),c=B_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:i.lastEventID,capturedAt:o});U_(t,c)}let p=new Set;for(let t of u){let n=oy({directory:t,activeScopes:w(a,t),viewedSessions:c,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(my(e.directory,e.sessionID))}for(let e of d){let t=my(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=Xv(()=>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=Xv(()=>n.getTranscript(e));i&&t&&Zv({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},k=e=>{let t=n.getTranscript(e),r=t.messageOrder[t.messageOrder.length-1];if(!r)return!1;let i=t.messagesByID[r];return!i||i.role!==`assistant`?!1:Rs(i)},A=async(r,i,a)=>{if(dy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;U_(t,V_(H_(t,i)??B_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let o=Xv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),dy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;W_(t,i),x(i.directory,i.sessionID),y.set(my(i.directory,i.sessionID),s());try{let e=Xv(()=>n.getTranscript(r));o&&e&&Zv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw U_(t,V_(H_(t,i)??B_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},j=async(r,i,a)=>{if(dy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;U_(t,V_(H_(t,i)??B_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Xv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),dy({transport:i.transport,generation:i.generation},e),a!==u)throw new qh;W_(t,i),x(i.directory,i.sessionID);try{let e=Xv(()=>n.getTranscript(r));o&&e&&Zv({trigger:`reconnect-compensation-ensure-tail`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw U_(t,V_(H_(t,i)??B_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},ee=async(r,i,a,l)=>{let d=fy(r,i),f=py(r,i),p=Og({directory:f.directory,sessionID:f.sessionID,checkpoint:String(H_(t,f)?.capturedAt??s())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:s()});try{if(dy(i,e),a!==u||l.aborted)throw new qh;let m=H_(t,f);if(m||(m=B_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:s()}),U_(t,m)),!m.anchorMessageID){if(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}m=V_(m,{state:`reconciling`}),U_(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,dy(i,e),a!==u||l.aborted)throw new qh;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,dy(i,e),a!==u||l.aborted)throw new qh;let g=n.getTranscript(d).liveRevision;if(!_&&!h){await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()});return}let x=await o({sessionID:r.sessionID,directory:r.directory.trim(),..._?{continuation:_}:{anchor:h},signal:l});if(dy(i,e),a!==u||l.aborted)throw new qh;if(x.resetRequired){let n=y.get(my(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}if(S===1&&(v=x.capturedHeadMessageID),b=x.latestHeadMessageID??b,x.records.length>0&&O(d,x,g),m=V_(H_(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),U_(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=V_(H_(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),U_(t,m);continue}if(m=V_(H_(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),U_(t,m),x(r.directory,r.sessionID),t.setQueryData(p,{status:`complete`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}{let n=y.get(my(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}}}catch(n){if(n instanceof qh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(p,{status:`cancelled`,finishedAt:s()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(p,{status:`error`,finishedAt:s(),code:n instanceof Error?n.name:`error`}),n}},te=t=>{let n=t.trim(),r=m.get(n)??0;if(r>=a)return;let i=p.get(n);if(!i||i.length===0)return;let o=i.shift();m.set(n,r+1);let s=my(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),te(n);return}let c=uy(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{Vg(n,o.sessionID);try{await ee(o,c,l,h.signal)}catch{}finally{Hg(n,o.sessionID),f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),te(n)}})();d.set(s,g)},M=e=>{let t=e.directory.trim(),n=my(t,e.sessionID);if(d.has(n))return;let r=p.get(t);r||(r=[],p.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),te(t))},ne=t=>{let n=E(),i=T(t,n);for(let a of i){let i=oy({directory:a,activeScopes:w(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)M(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=my(e.scope.directory,e.scope.sessionID);i.some(e=>my(e.directory,e.sessionID)===t)||b(e.scope.directory,e.scope.sessionID)}}},re=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??i)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??h)(),a=(e.probe?.getTransport??i)();if(r!==n.generation||a!==n.transport){C(`generation_mismatch`);return}ne(n)},ie=t=>{if(l)return;let r=t.directory.trim(),i=uy(e,t),a=fy({directory:r,sessionID:t.sessionID},i),c=Tg(py({directory:r,sessionID:t.sessionID},i)),u=_.get(c);if(u&&s()-u.checkedAt<ly||v.has(c)||d.has(my(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(v.add(c),(async()=>{try{if(dy(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(dy(i,e),l||(_.set(c,{checkedAt:s()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;O(a,u,d)}catch{}finally{v.delete(c)}})())};return{captureCheckpoints:D,onCompensation:re,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=my(i,r.sessionID);if(!g.has(a))return ie(r),null;x(i,r.sessionID);let o=uy(e,r),s=fy({directory:i,sessionID:r.sessionID},o),c=py({directory:i,sessionID:r.sessionID},o),u=H_(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){M({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{dy(o,e),Vg(i,r.sessionID);try{let e=await n.ensureInitial(s);return W_(t,c),e}finally{Hg(i,r.sessionID)}}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:C,getCheckpoint:n=>{let r=uy(e,n);return H_(t,py({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(my(e,t)),destroy:()=>{l=!0,C(`destroy`)}}}var gy=e=>e.trim(),_y=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session status runtime changed`)},vy=(e,t={})=>{let n=gy(e),r=t.transport??i(),a=t.loadSnapshot??((e,t)=>z.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,s=t.runtimeProbe??{},c=(s.getGeneration??h)();return ot({queryKey:N.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{_y(r,c,s);let t=o(),i=await a(n,e);if(_y(r,c,s),i===null)throw Error(`session status snapshot unavailable`);return{snapshot:i,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},yy=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(vy(e,r))},by=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session active runtime changed`)},xy=(e={})=>{let t=e.transport??i(),n=e.loadActive??(e=>z.getSessionActive(e)),r=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??h)();return ot({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{by(t,o,a);let i=r(),s=await n(e);return by(t,o,a),{result:s,requestedAt:i}},staleTime:0,gcTime:3e5,retry:!1})},Sy=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(xy(n))},Cy;function wy(e){Cy=e}function Ty(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 Ey(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Dy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Oy(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 ky(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=Ty(o[e]);if(t){c[e]=n&&Dy(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 Ay(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=Ty(t[o]);if(n&&n.type!==`idle`){Ey(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 jy(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function My(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 yy(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 Sy({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}=ky(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=jy(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Ay(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Cy;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 Ny({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:My(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Py(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Fy(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 Iy(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 Ly(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(tc(e))??Promise.resolve(),r.get(rc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=tc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=rc(e),i=(r.get(n)??Promise.resolve()).then(t,t);return r.set(n,i.then(()=>void 0,()=>void 0)),i};return{wait:i,persistSettled:(n,r,i)=>a(n,async()=>{if((await e.upsertSettled(n,r,i)).status!==`written`)return;let a=(t.getByteBudget??Sg)();await e.evictToBytes(a,{protect:t.getProtectScopes?.()??[]})}),removeMessage:(t,n)=>a(t,()=>e.removeMessage(t,n)),clearSession:t=>a(t,()=>e.clearSession(t)),clearGeneration:t=>o(t,()=>e.clearGeneration(t))}}var Ry=new Map;function zy(e,t){let n=Ry.get(e);if(n)return n;let r=t().finally(()=>{Ry.get(e)===r&&Ry.delete(e)});return Ry.set(e,r),r}var By=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Vy(e){return zy(By(e),e.request)}function Hy(e,t){return`${e}\n${t}`}var Uy=new Map;function Wy(e){return Uy.get(e)}async function Gy(e){return Vy({runtimeKey:Hy(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 Uy.set(r.id,i),{info:op(r),parts:i}}})}function Ky(e,t){let n=e.info;return n.role===t||n.clientRole===t}function qy(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Ky(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 Jy(e){if(e.complete){let t=e.records.some(e=>Ky(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=qy(e.records);if(t.length===0){let t=e.records.some(e=>Ky(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=>Ky(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Yy(e){return e.trim()}function Xy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??i)(),r=e.generation??t.generation??(t.probe?.getGeneration??h)();return{directory:Yy(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function Zy(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:rl,liveRevision:0}}function Qy(e,t){if(!e||e.pages.length===0)return Zy(t);let n=Kh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function $y(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function eb(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function tb(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=$y(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=$y(e.messagesByID[t]);a===void 0||a<=n||eb(e.partsByMessageID[t])||i.push(t)}return i}function nb(e={}){let t=e.client??L,n=e.cacheBudget??Ig({client:t,activeRegistry:e.activeRegistry??jg()}),r=n.activeRegistry,a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=e.durableStore?Ly(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Py),getByteBudget:e.getDurableByteBudget}):void 0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=M(e);!Sl(r)&&!v.has(n)||(y.add(n),Yv(av({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=l.get(e);return t||(t={messages:new Map,parts:new Map},l.set(e,t)),t},w=n=>{let r=Xy(n,e);return hg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=Xy(t,e);return rg({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=Xy(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let r=e.probe??{getTransport:i,getGeneration:h},o=Xy(n,{...e,transport:void 0,generation:void 0,probe:r}),s=K(o),c=a.get(s);if(c)return c;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=pg({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(s,l),l},k=t=>{let n=K(Xy(t,e)),r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(Xy(n,e));if(s.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});s.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=s.get(e);n&&(n(),s.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=t=>{let n=Xy(t,e),r=K(n),i=w(t),a=C(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=Qy(i,n.sessionID),s=ee(r,o);return a.cachedFrom=i,a.hasTranscriptCache=!0,s},ne=(e,t)=>`${K(e)}\n${t}`,re=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},ie=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ae=e=>{for(let t of p.keys())t.startsWith(e)&&p.delete(t);for(let t of m.keys())t.startsWith(e)&&m.delete(t)},oe=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},se=e=>{let t=`${K(e)}\n`;for(let[e,n]of p)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of m.keys())if(e.startsWith(t))return!0;return!1},ce=t=>{let n=Xy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},le=(e,t,n)=>{u&&u.persistSettled(Py(e),t,n??[])},ue=(e,t,n,r)=>{if(!u||S>0||!r.applied||!r.changed)return;let i=Py(t);if(n.type===`remove-message`){u.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(u.clearSession(i),n.page){let r=M(e);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;le(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=Iy(e);if(n.action===`remove`){u.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&le(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&&le(t,n,r.partsByMessageID[e.info.id])}}}},N=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:i,getGeneration:h},s={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??oh()};return Fy(r?.fresh?await t.fetchQuery({...sg(s,a,n.transport,o,n.generation),staleTime:0}):await cg(s,a,t,n.transport,o,n.generation))},de=(e,t)=>{for(let n of t)cu(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},fe=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now();d.set(r,{status:`loading`});try{let i=await N(t);if(!ce(t))return d.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Jm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let a=g.get(r);if(a&&a.size>0){let n=[],r=0;for(let o of i.records){let i=o.info.id;if(!(!i||!a.has(i))){if(!gl(P.getParts(e,i),P.getMessage(e,i)??o.info)){re(t,i),p.set(ne(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),de(e,n)}return d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof qh||!ce(t))return d.delete(r),P.getTranscript(e);throw d.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Yv(av({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:M(e),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{f.delete(r)}})();return f.set(r,a),a},pe=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;d.set(r,{status:`loading`});try{let i=await N(t,{fresh:!0});if(!ce(t))return d.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||eu(t.sessionID,t.directory)?(d.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Jm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return d.delete(r),n instanceof qh||!ce(t)||Yv(av({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`reconcile-page`,durationMs:Date.now()-i,transcript:M(e),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{f.delete(r)}})();return f.set(r,a),a},me=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(Xy(t,e)))?!0:_h(n).kind===`unknown`},P={getTranscript(e){return M(e)},getPagination(t){let n=Xy(t,e),r=K(n),i=P.getTranscript(t);return te(r,El(n.sessionID,i.boundary))},getRequestState(t){let n=Xy(t,e),r=d.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=Xy(t,e),r=K(n),i=P.getTranscript(t);Sl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Cl({p0Satisfied:a,prependActive:b.has(r),materializeActive:se(n),earlierHistoryLoaded:yl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(Xy(t,e)),i=C(r),a=P.getTranscript(t).messagesByID[n];return i.messages.has(n)&&i.messages.get(n)===a?i.messages.get(n):(i.messages.set(n,a),a)},getParts(t,n){let r=K(Xy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??rb,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=Xy(t,e),i=p.get(ne(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||hl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=Xy(t,e),i=ne(r,n),a=Xv(()=>P.getTranscript(t)),o=e=>{try{let t=Xv(e);if(!a||!t)return;Zv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=m.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return p.set(i,{status:`idle`}),P.getTranscript(t);if(!hl(P.getParts(t,n))&&!g.get(K(r))?.has(n))return p.set(i,{status:`ready`}),P.getTranscript(t);p.set(i,{status:`loading`}),k(t);try{let a=await Gy({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return z.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return ce(r)?(P.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),hl(P.getParts(t,n))?p.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):p.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(p.delete(i),P.getTranscript(t))}catch(e){if(!ce(r))return p.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return p.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{re(r,n)}})();return m.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{m.get(i)===c&&m.delete(i)}),c},apply(r,i){let a=Xy(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=mg(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&_.delete(K(a)),e.result.changed&&(k(r),D(r)),e.result}case`sse-event`:{let e=mg(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`sse-event-batch`:{let e=mg(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=mg(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&k(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),mg(t,o,a.sessionID,{type:`optimistic-confirm`,messageID:i.messageID}).result;case`optimistic-remove`:{e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID});let n=mg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&k(r),n.result}case`reset`:{if(b.delete(K(a)),g.delete(K(a)),_.delete(K(a)),n.purgeSession(E(r)),!i.page)return k(r),{applied:!0,changed:!0};let e=mg(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(k(r),D(r)),e.result}case`materialize-snapshots`:return ib(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=mg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&k(r),e.result}default:return{applied:!1,changed:!1}}})();return ue(r,a,i,s),s.applied&&(ny({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:()=>P.getTranscript(r),request:()=>P.getRequestState?.(r),hydration:()=>P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,i){let a=K(Xy(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);c.set(a,r.retain(e)),n.noteScopeObserved(e)}return s.add(i),A(t),()=>{let e=o.get(a);if(e){if(e.delete(i),e.size===0){let e=c.get(a);e&&(e(),c.delete(a))}j(a)}}},async ensureInitial(t){let i=Xy(t,e),a=K(i);if(u&&await u.wait(Py(i)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Py(i));if(ce(i)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)gl(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Yv(av({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(me(t)&&w(t)!==void 0){let e=Date.now(),n=await fe(t,i);return Yv(av({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let o=w(t);if(o&&o.pages.length>0&&!me(t)&&e.fetcher&&!r.isRetained(E(t))){let e=Date.now(),n=await pe(t,i);return Yv(av({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;d.delete(a);try{await s.ensureInitial()}catch(e){throw Yv(av({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:M(t),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}d.delete(a),l||Jm(i.directory,i.sessionID,{transport:i.transport,generation:i.generation}),n.noteScopeObserved(E(t)),D(t);let f=P.getTranscript(t);return Yv(av({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:f,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),f},async fetchPreviousPage(t){if(me(t)&&await P.ensureInitial(t),_h(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=Xy(t,e),r=K(n);b.add(r),k(t);let i=Date.now();try{await O(t).fetchPreviousPage(),D(t);let e=P.getTranscript(t);return Yv(av({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),e}catch(e){throw Yv(av({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{b.delete(r),k(t)}},getController(t){let n=Xy(t,e);return a.get(K(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=Xy(t,e),i=Xv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??oh(),signal:new AbortController().signal}),s=P.getTranscript(t).liveRevision;if(P.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:o.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:s}),s<=a){let n=tb(P.getTranscript(t),o);for(let i of n)P.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let c=P.getTranscript(t);n.noteScopeObserved(E(t));try{let e=Xv(()=>c);i&&e&&Zv({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:i,after:e})}catch{}return c},async destructiveReset(t){let r=Xv(()=>P.getTranscript(t)),i=E(t);return u&&await u.clearSession(Py(Xy(t,e))),n.destructiveReset(i,async()=>{let n=Xy(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),l.delete(i),oe(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=Xv(()=>s);r&&e&&Zv({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=K(Xy(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),l.delete(r),ae(`${r}\n`),g.delete(r),oe(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),l.delete(n);let e=c.get(n);e&&(e(),c.delete(n));let t=s.get(n);t&&(t(),s.delete(n)),o.delete(n)}ae(`${e}\n${t}\n`),ie(`${e}\n${t}\n`),oe(`${e}\n${t}\n`),n.purgeGeneration(e,t),u&&u.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of s.values())e();s.clear();for(let e of c.values())e();c.clear(),o.clear(),l.clear(),d.clear(),f.clear(),p.clear(),m.clear(),g.clear(),v.clear(),y.clear(),b.clear(),n.dispose()}};return P}var rb=Object.freeze([]);function ib(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=mg(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var ab=`/api/openchamber/transcript-cache`,ob=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),sb=e=>typeof e==`object`&&!!e&&!Array.isArray(e),cb=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},lb=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},ub=e=>{if(!sb(e))throw Error(`Invalid transcript cache scope`);return{transport:cb(e.transport,`scope`),generation:lb(e.generation,`scope`),directory:cb(e.directory,`scope`),sessionID:cb(e.sessionID,`scope`)}},db=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},fb=e=>{if(!sb(e)||!sb(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!sb(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:ub(e.scope),messageID:cb(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>db(e,`part completeness`)),completeness:db(e.completeness,`completeness`),contentHash:cb(e.contentHash,`content hash`),byteSize:lb(e.byteSize,`byte size`),lastAccessedAt:lb(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:lb(e.sortKey.created,`sort key`),messageID:cb(e.sortKey.messageID,`sort key`)}}},pb=(e,t)=>{if(!sb(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(fb);return{scope:e.scope===void 0?gc(t):ub(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},mb=e=>{if(!sb(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:fb(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!ob.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:fb(e.record)}}}throw Error(`Invalid transcript cache upsert`)},hb=e=>{if(!sb(e))throw Error(`Invalid transcript cache evict`);return{evicted:lb(e.evicted,`evict`),freedBytes:lb(e.freedBytes,`evict`),remainingBytes:lb(e.remainingBytes,`evict`)}},gb=e=>({scope:gc(e),records:[],byteSize:0}),_b=(e,t)=>sb(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,vb=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`)}},yb=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 vb(r)};let i=await vb(r).catch(()=>void 0);throw Error(_b(i,`Transcript cache request failed (${r.status})`))},bb=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),xb=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Sb(e={}){let t=e.fetch??F;return{async readSession(e){let n=await yb(t,`${ab}/session`,{method:`GET`,query:bb(e)});return n.kind===`disabled`||n.kind===`not-found`?gb(e):pb(n.payload,e)},async readMessage(e,n){let r=await yb(t,`${ab}/message`,{method:`GET`,query:{...bb(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!sb(r.payload))throw Error(`Invalid transcript cache record`);return fb(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await yb(t,`${ab}/message`,xb(`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 mb(i.payload)},async removeMessage(e,n){let r=await yb(t,`${ab}/message`,xb(`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 yb(t,`${ab}/session`,xb(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await yb(t,`${ab}/generation`,xb(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await yb(t,`${ab}/evict`,xb(`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 hb(r.payload)},async clearAll(){let e=await yb(t,`${ab}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Cb=`openchamber-transcript-durable`,wb=1,Tb=`transcriptIndex`,Eb=`transcriptContent`,Db=class extends Error{code;constructor(e){super(e),this.code=e}},Ob=e=>({id:nc(e.scope,e.messageID),scope:gc(e.scope),scopeKey:tc(e.scope),generationKey:rc(e.scope),messageID:e.messageID,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID},contentHash:e.contentHash,completeness:e.completeness,partCompleteness:e.partCompleteness.slice(),byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt}),kb=(e,t)=>({scope:gc(e.scope),messageID:e.messageID,info:hc(t.info),parts:hc(t.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),Ab=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return kb(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},jb=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},Mb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Nb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Db(`database-unavailable`));return}let r=indexedDB.open(e,wb),i=!1,a=()=>{i||(i=!0,n(new Db(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Tb)){let t=e.createObjectStore(Tb,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Eb)||e.createObjectStore(Eb,{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}),Pb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Db(`database-unavailable`)),r.onblocked=()=>void 0}),Fb=(e=Cb)=>({transaction:async t=>{let n=await Nb(e),r=n.transaction([Tb,Eb],`readwrite`),i=r.objectStore(Tb),a=r.objectStore(Eb),o=e=>Mb(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:()=>Pb(e)});function Ib(e,t={}){let n=_c(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Ob(t)),vc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(tc(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=kb(t,r);a.lastAccessedAt=n(),await e.putIndex(Ob(a)),i.push(a)}return yc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Ab(e,nc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=bc({info:i,incomingCompleteness:cc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=hc(a.slice()),c=cc(s),l=await dc(i,s),u=nc(t,i.id);return e.transaction(async e=>{let a=await Ab(e,u),o=bc({info:i,existing:a,incomingCompleteness:c,incomingHash:l.hash});if(o.status===`skipped`)return o.reason===`slim-downgrade`&&a?{status:`skipped`,reason:`slim-downgrade`,record:vc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:gc(t),messageID:i.id,info:hc(i),parts:s,partCompleteness:s.map(sc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:ac(i)};return await e.putIndex(Ob(d)),await e.putContent({id:u,info:hc(i),parts:s}),{status:`written`,record:vc(d)}})},async removeMessage(t,n){await e.transaction(e=>jb(e,nc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(tc(t));for(let t of n)await jb(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(rc(t));for(let t of n)await jb(e,t.id)})},async evictToBytes(t,n){return e.transaction(async e=>{let r=Number.isFinite(t)?Math.max(0,t):0,i=new Set((n?.protect??[]).map(tc)),a=await e.getAllIndexes(),o=0;for(let e of a)o+=e.byteSize;if(o<=r)return{evicted:0,freedBytes:0,remainingBytes:o};let s=a.filter(e=>!i.has(e.scopeKey)).sort((e,t)=>e.lastAccessedAt===t.lastAccessedAt?ic(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await jb(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 Lb(e={}){return Ib(e.driver??Fb(e.databaseName),e)}function Rb(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??We;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var zb=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Bb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Sb)(),t),i=()=>(n??=(e.createIndexedDBStore??Lb)(),n),a=()=>Rb(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=>zb([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Vb(e={}){await Bb(e).clearAll()}var Hb=(e,t)=>e<t?-1:+(e>t);function Ub(e){return e.filter(e=>!!e?.id).sort((e,t)=>Hb(e.id,t.id))}async function Wb(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await Qg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=r.records.map(e=>({info:op(e.info),parts:Ub(e.parts??[])}));if(!e.before&&!r.complete&&qy(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await Jy({records:a,complete:r.complete,requestMessage:async n=>{let r=await Gy({transport:i(),generation:h(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:Ub(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Ub(e.parts??[])}))}return{records:a,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function Gb(e){let t=e.client??L,n=jg(),r=Ig({client:t,activeRegistry:n}),a=nb({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:i,getGeneration:h},fetcher:e=>Wb({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:oh(),historyLimit:sh(),durableStore:e.durableStore??Bb()}),o=hy({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:r,probe:{getTransport:i,getGeneration:h},confirmSessionStatus:async(t,n)=>{let r=e.childStores.getChild(t.directory);if(!r)return;let i=r.getState().session_status?.[t.sessionID];!n.tailOpen&&i?.type!==`busy`&&i?.type!==`retry`||await My(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return gu(a),ku(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),ku(null),a.destroy(),_u()}}}function Kb(e){return vu().apply(W(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var qb=new Map;function Jb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Yb(e,t,n,r={}){let a=r.getTransportIdentity??i,o=r.getGeneration??h,s=a(),c=o(),l=Jb(e,t,s,c),u=()=>a()===s&&o()===c,d=qb.get(l)??Promise.resolve(),f,p=new Promise(e=>{f=e}),m=d.catch(()=>void 0).then(()=>p);qb.set(l,m);try{if(await d.catch(()=>void 0),!u())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:s,generation:c,isCurrent:u})}finally{f(),qb.get(l)===m&&qb.delete(l)}}var Xb=new Set,Zb=new Set,Qb=new Set,$b=new Set,ex={onDeleteRequest(e){return Xb.add(e),()=>{Xb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||Xb.forEach(t=>t(e))},onCreateRequest(e){return Zb.add(e),()=>{Zb.delete(e)}},requestCreate(e){let t=e??{};Zb.forEach(e=>e(t))},onDirectoryRequest(e){return Qb.add(e),()=>{Qb.delete(e)}},requestDirectoryDialog(){Qb.forEach(e=>e())},onGitRefreshHint(e){return $b.add(e),()=>{$b.delete(e)}},requestGitRefresh(e){e.directory.trim()&&$b.forEach(t=>t(e))}},tx=50,nx=e=>{let t=Object.keys(e);if(t.length<=tx)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-tx).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},rx=Oe()(je(ke((e,t)=>({sessions:{},setSessionTodos:(t,n)=>{t&&e(e=>{let r={...e.sessions};return!n||n.length===0?t in r?(delete r[t],{sessions:r}):e:(r[t]={todos:n,touchedAt:Date.now()},{sessions:nx(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:g(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),ix=new Set([`todowrite`,`todoread`]),ax=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),ox=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),sx=(e,t)=>{rx.getState().setSessionTodos(e,t)},cx=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},lx=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},ux=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},dx=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=ux(n);e&&t.push(e)}return t},fx=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return dx(t);if(t&&typeof t==`object`)return dx(t.todos)}catch{}return[]},px=e=>{if(!ix.has(cx(e)))return[];let t=lx(e);if(t&&ax.has(t))return[];let n=e.state,r=dx(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=dx(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=dx(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?fx(i):[]};function mx(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=px(r[e]);if(t.length>0)return t}}return[]}function hx(e){if(!e.sessionID||e.isStale?.()||ox(e.store.getState().todo,e.sessionID))return!1;let t=mx(e.transcript);return t.length===0||e.isStale?.()||ox(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function gx(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(W(e.directory,e.sessionID));return t?hx({sessionID:e.sessionID,store:e.store,transcript:t,persist:sx,isStale:e.isStale}):!1}var _x=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>yC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>vC,SESSION_DELETE_UNDO_MS:()=>US,abortBusySessionForMessageEdit:()=>NC,abortCurrentOperation:()=>wC,archiveSession:()=>$S,beginOptimisticSend:()=>lC,cancelScheduledSessionDeletes:()=>QS,classifySendFailure:()=>pS,combinedSendConfirmationOptions:()=>bC,commitMessageEdit:()=>FC,createSession:()=>LS,deleteSession:()=>XS,dirStoreForDirectory:()=>$x,dismissOpenQuestionsForSession:()=>OC,ensureSentUserMessagePresence:()=>CC,fetchMessagesForSession:()=>VC,fetchRecentSendConfirmationRecords:()=>gC,forkSession:()=>zC,getSendFailureKind:()=>dS,isQuestionRequestNotFoundError:()=>PS,materializeConfirmedSendRecords:()=>_C,mirrorSessionIntoLiveStores:()=>oS,optimisticInsertUserMessage:()=>mC,optimisticSend:()=>pC,patchSessionMetadata:()=>RS,refetchSessionMessages:()=>LC,rejectQuestion:()=>DC,releaseUnconfirmedQueueSend:()=>Xx,requestSessionSmartTitle:()=>nC,resolveForkMessageId:()=>Px,respondToPermission:()=>TC,respondToQuestion:()=>EC,revertToMessage:()=>kC,rollbackOptimisticSend:()=>dC,scheduleSessionDeletes:()=>ZS,setActionRefs:()=>Jx,setOptimisticRefs:()=>Yx,settleOptimisticSend:()=>fC,shareSession:()=>rC,shouldSuppressForkCopyEvent:()=>Ix,stageMessageEdit:()=>jC,trackForkCopySessionCreated:()=>Ex,unarchiveSession:()=>eC,unrevertSession:()=>RC,unshareSession:()=>iC,updateSessionTitle:()=>tC,waitForConnectionOrThrow:()=>_S,waitForSessionIdleForMessageEdit:()=>PC}),vx=2,yx=150,bx=new Set([`patch`,`step-start`,`step-finish`]),xx=3,Sx=150,Cx=null,wx=new Map,Tx=3e4;function Ex(e,t){let n=t?.id;!Cx||Cx.runtimeKey!==c()||Cx.directory!==e||!n||t?.title!==Cx.expectedTargetTitle||n===Cx.sourceSessionID||Cx.targetSessionID||(Cx.targetSessionID=n)}function Dx(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function Ox(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function kx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Ax(e){return e?.type===`busy`||e?.type===`retry`}function jx(e){for(let t=e.length-1;t>=0;--t)if(e[t]?.role===`user`)return t;return-1}function Mx(e){let t=e.at(-1);return t?.role===`assistant`&&t.time.completed==null}function Nx(e,t){return Ax(e)||e==null&&Mx(t)}function Px(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(!Nx(n,t))return;let r=jx(t);if(r!==-1)return t[r+1]?.id}async function Fx(e,t){let n=Pp(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return z.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function Ix(e,t,n){if(Cx&&Cx.runtimeKey===c()&&Cx.directory===e&&t&&t===Cx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${c()}:${e}:${t}`,i=wx.get(r);return i?i.expiresAt<=Date.now()?(wx.delete(r),!1):n<=i.messageID:!1}var Lx=null,Rx=null,zx=()=>``,Bx=new Map,Vx=null,Hx=null,Ux=null,Wx=e=>new Promise(t=>setTimeout(t,e));function Gx(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 Kx(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Gx(e.error)}`);throw n!==void 0&&(r.status=n),r}function qx(e,t){let n=Kx(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Jx(e,t,n){if(Lx=e,Rx=t,zx=n,Bx.size>0){let e=[...Bx.values()];Bx.clear(),queueMicrotask(()=>{for(let t of e)VC(t.sessionID,t.directory)})}}function Yx(e,t,n){Vx=e,Hx=t,Ux=n??null}function Xx(e){let t=e.directory??null;Hx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Zx(){if(!Lx)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Lx}function Qx(){if(!Rx)throw Error(`Child stores not initialized`);let e=zx();if(!e)throw Error(`No current directory`);return Rx.ensureChild(e)}function $x(e,t){if(!Rx)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Rx.ensureChild(e,t)}function eS(e,t){let n=t??CS(e);return n?{store:$x(n),directory:n}:{store:Qx(),directory:sS()}}function tS(e,t){let{store:n,directory:r}=eS(e,t??void 0),i=r??sS()??``;return{repository:H()??U(i,n),directory:i,store:n}}function nS(e,t){let{repository:n,directory:r,store:i}=tS(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(W(r,e))}}function rS(e,t){return Wu(nS(e,t).data)}function iS(e,t){return nS(e,t).data.messageOrder.length}function aS(e,t){let n=Rx;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]=rD(e,n[r]),t.setState({session:i}),!0}return!1}function oS(e,t){t&&aS(e,t)||aS(e)}function sS(){return zx()||void 0}function cS(){let{hasEverConnected:e,lastDisconnectReason:t}=Vf.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function lS(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 uS=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 dS(e){return e instanceof uS?e.kind:null}function fS(e){let t=lS(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 pS(e,t){return t?fS(e)||lS(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var mS=2e3,hS=5e3,gS=3e4;async function _S(){let e=Hm();e&&Vm(`send_stream_stale`);let t=Date.now()+(e?hS:mS);for(;Date.now()<t;){if(Vf.getState().isConnected&&!Hm()||d()&&!Hm())return;let e=t-Date.now();if(e<=0)break;if(await Vf.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Hm())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw cS()}function vS(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Vm(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},gS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function yS(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function bS(e){e&&Y.getState().upsertSession(e)}function xS(e,t){let n=ip(t),r=[...e.getState().session],i=cs.search(r,n.id,e=>e.id);if(i.found){let t=rD(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 SS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=yS(e);if(i)return xS(t,i);try{return xS(t,await z.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function CS(e){return wS(e)||$.getState().getDirectoryForSession(e)||sS()}function wS(e){let t=Rx;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=H()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function TS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):Zx()}function ES(e){Or.getState().clearAttachedFiles();for(let t of e){let e=typeof t.url==`string`?t.url:``,n=typeof t.mime==`string`?t.mime:`application/octet-stream`,r=typeof t.filename==`string`?t.filename:`attachment`;e&&Or.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var DS=()=>new Map(Array.from(Ad(),([e,t])=>[e,t.title||e]));function OS(e){return!(e.type!==`file`||Qp(e))}function kS(e){return OS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function AS(e){return e.some(kS)}async function jS(e){let t=[...e.parts];if(!AS(t))return t;let n=h(),r=e.directory??``;try{await Tu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||h()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=tS(e.sessionID,r);if(t=[...i.getParts(W(a,e.sessionID),e.messageID)],AS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function MS(e){if(AS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await Cm(e.parts,{sessionTitles:DS(),directory:e.directory}),n=Or.getState(),r=n.getDraft(e.key);return{payload:t,commit:await Om({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function NS(e,t,n){let r=Rx;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 PS(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 FS(e,t){let n=Rx;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 IS(e,t,n){let r=NS(e,t,n);return r?z.getScopedSdkClient(r):TS(t)}async function LS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??sS()),a=i.directory??null;return a&&Sd(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),Y.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function RS(e,t,n){let r=t??CS(e),i=n(Pp(await z.getSession(e,r))),a=await z.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Sd(a.id,o),a}async function zS(e,t){let n;try{n=await z.getSession(e,t??CS(e))}catch{return}if(!Rp(n))return;let r=Lp(n);if(r)try{await RS(r,t??CS(r),t=>Vp(t,e))}catch(e){let t=e instanceof Error?e.message:String(e);if(/not found/i.test(t))return;console.warn(`[session-actions] review metadata cleanup failed before delete`,e)}}function BS(e,t){if(!Rx)return[];let n=[],r=new Set,i=[];if(t){let e=Rx.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Rx.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 VS(e){if(Rx)for(let t of e){let e=Rx.children.get(t.directory);e&&e.setState({session:t.sessions})}}function HS(e){$.getState().setWorktreeMetadata(e,null)}var US=1e4,WS=new Map,GS=0;function KS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function qS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),VS(e.listSnapshots),bS(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function JS(e,t){let n=t??CS(e);Y.getState().markSessionsPendingDeletion([e]);let r=BS(e,n),i=yS(e);Y.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function YS(e,t){try{if(await zS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return BS(e,t),Y.getState().removeSessions([e]),HS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(BS(e,t),Y.getState().removeSessions([e]),HS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function XS(e,t){let n=JS(e);return await YS(e,n.directory)?!0:(qS(n),!1)}function ZS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>JS(e)),i=`session-delete-${Date.now()}-${GS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=WS.get(i);if(!e)return;WS.delete(i);let t=[],n=[];for(let r of e.entries)await YS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),qS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return WS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function QS(e){if(!e)return!1;let t=WS.get(e);if(!t)return!1;clearTimeout(t.timer),WS.delete(e);for(let e of[...t.entries].reverse())qS(e);return!0}async function $S(e){let t=CS(e),n=BS(e,t),r=yS(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await zS(e,t);let n=await z.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),VS(n),bS(r),!1}}async function eC(e){let t=CS(e),n=yS(e),r=n?KS(n):null;if(r&&(Y.getState().upsertSession(r),t&&Rx)){let e=Rx.children.get(t);e&&xS(e,r)}try{let n=await z.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=KS(n);if(Y.getState().upsertSession(r),t&&Rx){let e=Rx.children.get(t);e?xS(e,r):oS(r,t)}else oS(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&BS(e,t)),!1}}async function tC(e,t){let n=CS(e),r=yS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?qf(r):0,c=await z.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),oS(c,n)}async function nC(e){let t=CS(e),n=yS(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await z.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),oS(s,t)}async function rC(e){let t=CS(e),n=ip(qx(await Zx().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),aS(n,t),n}async function iC(e){let t=CS(e),n=ip(qx(await Zx().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),aS(n,t),n}function aC(e){let t=Rx,n=e??zx();if(!t||!n)return{store:e?$x(e):Qx(),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 oC(){return{identity:i(),generation:h()}}function sC(e,t){return e.isCurrent()&&i()===t.identity&&h()===t.generation}function cC(e,t){if(!sC(e,t))throw Error(`Send target changed before transport dispatch`)}function lC(e){if(!Vx||!Hx)throw new uS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??sS()??null,n=aC(t),r=oC();cC(n,r),e.beforeOptimisticInsert?.(),cC(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),im(e.sessionId),mC({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 uS?e:new uS(dS(e)??pS(e,!1),e)}}function uC(e){if(!sC(e.capture,e.transport)||!Hx)return;Hx({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 dC(e){uC(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function fC(e){if(!Vx||!Hx)throw new uS(`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 _S(),cC(n,r),s=!0,await vS(e.send(i)),!sC(n,r))throw new uS(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=dS(c)??pS(c,s),u=c instanceof uS?c:new uS(l,c,i);if(!sC(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await gC(a,i,o):null;if(d&&sC(n,r)){_C(n.store,a,i,d,{directory:o??void 0}),Ux?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||uC(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function pC(e){await fC({ticket:e.ticket??lC({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 mC(e){if(!Vx)return!1;let t=e.directory??sS(),n=t?$x(t):Qx(),r=t??sS()??``;if(xC(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),s={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},c=Xv(()=>nS(e.sessionId,t).data);Vx({sessionID:e.sessionId,directory:t,message:s,parts:a});let l=Xv(()=>nS(e.sessionId,t).data);try{c&&l&&Zv({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:i(),generation:h(),before:c,after:l})}catch{}let u=n.getState();return n.setState({session_status:{...u.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...u.session_status_observed_at,[e.sessionId]:o}}),!0}function hC(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function gC(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??vx,c=r?.retryDelayMs??yx;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!hC(r?.isCurrent)||a>0&&(await Wx(c),i?.signal.aborted||!hC(r?.isCurrent)))return null;try{let a=await Zx().session.messages({sessionID:e,directory:n??void 0,limit:uh(),...i?{signal:i.signal}:{}});if(!hC(r?.isCurrent))return null;let o=(Kx(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 _C(e,t,n,r,i){if(!r.length)return;let a=i?.directory??CS(t)??zx(),o=W(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:op(e.info),parts:e.parts??[]})),skipPartTypes:bx,merge:i?.gapFillOnly===!0?Ys:Zs({purpose:`recovery`})};bu(o,s)||U(a,e).apply(o,s)}var vC=2e3,yC={attempts:12,retryDelayMs:500},bC={presenceGraceMs:vC,recovery:{...yC}};function xC(e,t,n,r){let i=r??CS(t)??zx()??``,a=H()??U(i,e),o=W(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function SC(e,t,n,r){let i=r?.directory??CS(t)??zx()??``;if(xC(e,t,n,i))return Promise.resolve(!0);if(!hC(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=H()??U(i,e),f=W(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!hC(r?.isCurrent)){l(!1);return}xC(e,t,n,i)&&l(!0)}),xC(e,t,n,i)&&l(!0)})}async function CC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await SC(t,n,r,{timeoutMs:e.graceMs??bC.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!hC(a))return`cancelled`;let o=await gC(n,r,i,{...bC.recovery,isCurrent:a});return o?hC(a)?(_C(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:hC(a)?`missing`:`cancelled`}async function wC(e){let{store:t,directory:n}=eS(e),r=n?{state:`bound`,transportIdentity:i(),directory:n,sessionID:e}:null,a=r?$.getState().beginQueueAbortBlock(r):null;try{if(qx(await Zx().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&a&&$.getState().clearQueueAbortBlock(r,a),et(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>GV);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function TC(e,t,n){await _S();let r=NS(`permission`,e,t)||CS(e)||sS();if(qx(await IS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function EC(e,t,n){await _S();let r=NS(`question`,e,t)||CS(e)||sS();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(qx(await IS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw PS(n)&&FS(e,t),n}}async function DC(e,t){await _S();let n=NS(`question`,e,t)||CS(e)||sS();try{if(qx(await IS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw PS(n)&&FS(e,t),n}}async function OC(e){if(!e)return!1;let t=Rx;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=qp(t.session,e);if(i.size===0)continue;let a=t.question??{};for(let e of i){let t=a[e];if(t)for(let r of t)n.push({sessionId:e,requestId:r.id})}}if(n.length===0)return!1;for(let{sessionId:e,requestId:t}of n)FS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await DC(e,t)}catch(e){if(PS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function kC(e,t,n){let r=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return Yb(e,r??(()=>{try{return eS(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:o,directory:c}=eS(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Zx().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=rS(e,c).find(e=>e.id===t),d=rS(e,c).find(e=>e.id===t)??u;if(!d||d.role!==`user`)throw Error(`The selected user message is unavailable`);let{repository:f,directory:p}=tS(e,c),m=[...f.getParts(W(p,e),t)],h=a===void 0?s?C({transportIdentity:i()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await jS({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await Cm(m,{sessionTitles:DS(),directory:c})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=o.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),w={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},w.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(o.setState(w),h){let t=Or.getState(),r=await Om({key:h,expectedRevision:t.getDraft(h)?.revision??`absent`,payload:g,runtime:t.captureDraftRuntime()});if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),r.status===`committed`&&r.current&&r.previous&&r.result?.record?.revision!==void 0&&await Am({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await z.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await Am({key:h,restoredRevision:_,previous:v}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}let i=[...o.getState().session],a=i.findIndex(t=>t.id===e);return a>=0&&(i[a]=r,o.setState({session:i})),c&&ex.requestGitRefresh({directory:c}),g}catch(t){let r=[...o.getState().session],i=r.findIndex(t=>t.id===e);throw i>=0&&(r[i]={...r[i],revert:b}),n()?(o.setState({session:r}),h&&v&&_!==void 0&&await Am({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await Am({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function AC(e,t,n,r){let a=r??CS(t)??zx(),o=W(a,t),s=Xv(()=>nS(t,a).data),c=[...yu(t)];c.some(e=>e.directory===a&&e.sessionID===t)||c.push(o);let l=!1;for(let e of c)bu(e,{type:`remove-message`,messageID:n})!=null&&(l=!0);l||U(a,e).apply(o,{type:`remove-message`,messageID:n});let u=Xv(()=>nS(t,a).data);try{s&&u&&Zv({trigger:`user-delete`,sessionID:t,directory:a,transport:i(),generation:h(),before:s,after:u})}catch{}}async function jC(e,t,n,r){let a=n?.info,o=n?.parts,s=r?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=eS(e,s).directory}else{c=eS(e,s).directory;let{data:n}=nS(e,c),r=Wu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=r?.draftKey??C({transportIdentity:i()},e),{commit:u}=await MS({key:l,parts:await jS({directory:c,sessionID:e,messageID:t,parts:o??[]}),directory:c});if(u.status!==`committed`||!u.current)throw Error(`composer-restoration-commit-${u.status}`);let d=u.result?.record?.revision,f=u.previous;return d===void 0||!f?{rollback:async()=>({status:`skipped`})}:{rollback:async()=>({status:(await Am({key:l,restoredRevision:d,previous:f})).status})}}function MC(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 NC(e,t){let n=t?.directory,{store:r,directory:i}=eS(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Zx().session.abort({sessionID:e,directory:i})}catch{}}async function PC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=eS(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 FC(e,t,n){let r=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:s}=eS(e,r),c=Xv(()=>nS(e,r).data);try{await NC(e,{directory:r}),await PC(e,{directory:r});let n=new Set((await IC(e,r)).map(e=>e.id)),i=MC(t,rS(e,r),n,{preserveMessageId:a});for(let t of[...i].reverse())await z.deleteSessionMessage(e,t.id,s),AC(o,e,t.id,s)}finally{try{let t=Xv(()=>nS(e,r).data);c&&t&&Zv({trigger:`user-edit`,sessionID:e,directory:s,transport:i(),generation:h(),before:c,after:t})}catch{}}}async function IC(e,t){let{directory:n}=eS(e,t);return(Kx(await Zx().session.messages({sessionID:e,directory:n,limit:lh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>op(e.info))}async function LC(e,t){let{store:n,directory:r}=eS(e,t),a=Xv(()=>nS(e,t).data),o=(Kx(await Zx().session.messages({sessionID:e,directory:r,limit:lh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Xv(()=>nS(e,t).data);a&&n&&Zv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let s=o.map(e=>({info:op(e.info),parts:e.parts??[]})),c=W(r??zx(),e);bu(c,{type:`materialize-snapshots`,records:s,skipPartTypes:bx})||U(r??zx(),n).apply(c,{type:`materialize-snapshots`,records:s,skipPartTypes:bx});try{let n=Xv(()=>nS(e,t).data);a&&n&&Zv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return s.map(e=>e.info)}async function RC(e,t){return Yb(e,t??(()=>{try{return eS(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=eS(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=iS(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Zx().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Zx().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=qx(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<xx;r+=1){if(r>0&&(await Wx(Sx),!n())||(await LC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(iS(e,i)>o)return}if(iS(e,i)<=o){let n=i??zx(),a=H()??U(n,r),o=W(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await LC(e,t)}})}async function zC(e,t,n,r){let i=c(),{store:a,directory:o}=eS(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await SS(e,a,o);Sd(e,o);let l=a.getState(),u=l.session_status[e],d=rS(e,o);u?.type,d.length;let f=Px(n,d,u);if(!n&&Nx(u,d)&&jx(d)===-1&&(await LC(e),l=a.getState(),u=l.session_status[e],d=rS(e,o),f=Px(void 0,d,u)),!n&&Nx(u,d)&&jx(d)===-1)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:iS(e,o)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=nS(e,o),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(W(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!Qp(e)).map(e=>e.text||e.content||``).join(`
401
401
  `).trim();let v=g.filter(e=>e.type===`file`&&!Qp(e));Cx={operationId:t,runtimeKey:i,directory:o,sourceSessionID:e,expectedTargetTitle:Dx(s.title)},await Ox(t,`copying`);let y;try{if(y=await z.forkSession(e,f,o),y.id,c()!==i)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),Cx?.operationId===t&&(Cx=null),!1;let n=[...a.getState().session],r=cs.search(n,y.id,e=>e.id);r.found||(n.splice(r.index,0,y),a.setState({session:n})),kx(t,y.id);let s=$.getState().currentSessionId;(s===e||s===y.id)&&$.getState().setCurrentSession(y.id,o,{skipMessageFetch:!0}),await Ox(t,`opening`);try{y=await Fx(y,o)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw Cx?.operationId===t&&(Cx=null),e}try{let e=W(o,y.id),r=H();r&&typeof r.destructiveReset==`function`?await r.destructiveReset(e):bu(e,{type:`reset`}),await Ox(t,`loading`),y.id,$.getState().currentSessionId,y.id;let i=H()??U(o,a),s=W(o,y.id),l=i.getRequestState?.(s);(!(i.hasSession?.(s)??!1)||l?.status===`error`)&&await VC(y.id,o);let u=rS(y.id,o).at(-1)?.id;u&&wx.set(`${c()}:${o}:${y.id}`,{messageID:u,expiresAt:Date.now()+Tx});let d=$.getState().currentSessionId===y.id;d&&h&&_&&Or.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&ES(v)}finally{Cx?.operationId===t&&(Cx=null)}return y.id,!0}var BC=new Map;async function VC(e,t){let n=t??sS();if(!n)return;let r=c(),i=ch(),a=`${r}:${n}:${e}:${i}`;if(!Lx||!Rx){Bx.set(a,{sessionID:e,directory:n});return}let o=BC.get(a);if(o)return o;let s=HC(e,n,r,i).finally(()=>{BC.get(a)===s&&BC.delete(a)});return BC.set(a,s),s}async function HC(e,t,n,r){Zx();let i=$x(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=H()??U(t,i),l=W(t,e),u=c.getTranscript(l),d=c.getPagination(l),f=c.getRequestState?.(l),p=e=>e.role===`user`||e.clientRole===`user`,m=u.messageOrder.map(e=>u.messagesByID[e]).filter(e=>!!e),h=m.some(p),g=d.boundary,_=g.kind===`has-more`||g.kind===`exhausted`,v=(c.hasSession?.(l)??m.length>0)&&(h||g.kind===`exhausted`)&&_&&f?.status!==`error`,y=()=>$.getState().currentSessionId!==e;if(v){if(qm(t,e)){gx({directory:t,sessionID:e,store:i,transcript:u});return}if(H()){try{await Su(t,e)}catch{return}if(y())return;gx({directory:t,sessionID:e,store:i,isStale:y}),await Ny({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}gx({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await Wb({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:bx}),b=n.records.length,Jm(t,e)}catch{return}y()||(gx({directory:t,sessionID:e,store:i,isStale:y}),await Ny({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var UC=18e4,WC=400,GC=300,KC=15,qC=`FINAL_REVIEW_STATUS: no_remaining_findings`,JC=qC.toLowerCase(),YC=new Set,XC=new Set,ZC=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},QC=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},$C=e=>{let t=e.role;return typeof t==`string`?t:``},ew=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},tw=(e,t)=>Nd(e.id,t).some(e=>{let t=e.type;if(t===`compaction`)return!0;if(t!==`text`)return!1;let n=e.text;return typeof n==`string`&&n.trim()===`/compact`}),nw=(e,t,n,r=0,i)=>{let a=Md(e,t),o=new Set;for(let e of a)tw(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($C(s)!==`assistant`||!ZC(s)||QC(s)<r-1e3)continue;let c=ew(s);if(!uw(s,i)||c&&o.has(c))continue;let l=Mp(Nd(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},rw=(e,t)=>Pd(e,t)?.type===`idle`,iw=e=>e===c(),aw=e=>{Hp.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},ow=e=>{if(e&&!iw(e))throw Error(`Auto-review stopped because the runtime changed.`)},sw=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),cw=e=>e.trim().split(`
402
402
  `).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===JC,lw=e=>{let t=e.trimEnd().split(`
403
403
  `);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===JC&&t.pop(),t.join(`