@openchambery/web 1.19.6-beta.1 → 1.19.6

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