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