@openchambery/web 1.19.7-beta.14 → 1.19.7-beta.16

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