@openchambery/web 1.19.0-beta.6 → 1.19.0-beta.8

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