@openchambery/web 1.19.20 → 1.19.21-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.
Files changed (50) hide show
  1. package/dist/assets/{AssistantView-BjvfkSRS.js → AssistantView-BtGYjSW5.js} +3 -3
  2. package/dist/assets/{DiagramView-C_JfbxNl.js → DiagramView-Bh06xinl.js} +1 -1
  3. package/dist/assets/MarkdownRenderer-AwDKOCvD.js +2 -0
  4. package/dist/assets/{MarkdownRendererImpl-B1iUwzOz.js → MarkdownRendererImpl-f2agCc4q.js} +1 -1
  5. package/dist/assets/{MarkstreamRendererImpl-BPtMj3-X.js → MarkstreamRendererImpl-ChD4WD2v.js} +1 -1
  6. package/dist/assets/{MobileDetailNavigation-s_vvUD_F.js → MobileDetailNavigation-B6fGRYsg.js} +1 -1
  7. package/dist/assets/{MobileShareBridge-CKClHsWN.js → MobileShareBridge-D7SG0ueZ.js} +1 -1
  8. package/dist/assets/MobileSurface-BY7eErHN.js +2 -0
  9. package/dist/assets/{MultiRunWindow-DiA24bnN.js → MultiRunWindow-CjCw1X4n.js} +1 -1
  10. package/dist/assets/{SettingsView-l0J7pfYo.js → SettingsView-lcRi35Y3.js} +9 -9
  11. package/dist/assets/{SettingsWindow-XlzRSS7E.js → SettingsWindow-C2DgbXJ3.js} +1 -1
  12. package/dist/assets/{TerminalView-DdIaaLba.js → TerminalView-lubDPKMs.js} +1 -1
  13. package/dist/assets/{ToolOutputDialog-BbwuLdXU.js → ToolOutputDialog-CzgW3-Cb.js} +1 -1
  14. package/dist/assets/{appThemeRegistry-ChzfD7mc.js → appThemeRegistry-BKc-qXbQ.js} +1 -1
  15. package/dist/assets/{fileMentionTouchSelection-DyjmxUEN.js → fileMentionTouchSelection-BTkP7aYI.js} +1 -1
  16. package/dist/assets/{gitApi-CHpibtno.js → gitApi-CcIuekQ3.js} +1 -1
  17. package/dist/assets/insertionBoundaries-BocNNP9Q.js +1 -0
  18. package/dist/assets/{main-DCDcdV5o.js → main-CFLmpNC5.js} +10 -10
  19. package/dist/assets/{main-BoRXxmB3.js → main-Ckj_IpUy.js} +2 -2
  20. package/dist/assets/{miniChat-12fxk5KR.js → miniChat-Dq1CTKNs.js} +2 -2
  21. package/dist/assets/{mobile-CkZem9Ad.js → mobile-DlJ0Yr7h.js} +2 -2
  22. package/dist/assets/multirun-BGUKIJys.js +4 -0
  23. package/dist/assets/projectMeta-Bft2t6GF.js +3 -0
  24. package/dist/assets/{renderElectronMiniChatApp-COFc0ZDJ.js → renderElectronMiniChatApp-CTbXbB0Y.js} +2 -2
  25. package/dist/assets/{renderMobileApp-BKzx7JL3.js → renderMobileApp-DLewUqoE.js} +6 -6
  26. package/dist/assets/{runtimeConfig-DYWtBrkW.js → runtimeConfig-PpnZiwcW.js} +1 -1
  27. package/dist/assets/{runtimeEndpointReset-BSWg99jc.js → runtimeEndpointReset-BGjzNuQl.js} +6 -6
  28. package/dist/assets/sessionChangeSummary-DiqwX3vZ.js +2 -0
  29. package/dist/assets/{sessionLookup-DP2X1qRR.js → sessionLookup-CbbzalcH.js} +1 -1
  30. package/dist/assets/src-rS3zCcsC.css +2 -0
  31. package/dist/assets/textarea-DpK2Z0Gp.js +1 -0
  32. package/dist/assets/{useAppFontEffects-DWLxpWlS.js → useAppFontEffects-BJBcy-84.js} +43 -43
  33. package/dist/assets/useDesktopWindowControlsLayout-3Bm0rXCQ.js +1 -0
  34. package/dist/assets/{useEffectiveDirectory-CbV9_r1s.js → useEffectiveDirectory-CzHynoi_.js} +1 -1
  35. package/dist/assets/{useMobileNavigationStore-DrB_awgk.js → useMobileNavigationStore-BIyCYi_z.js} +1 -1
  36. package/dist/assets/{useSessionAutoCleanup-Dnors7hB.js → useSessionAutoCleanup-DzV9N6G-.js} +1 -1
  37. package/dist/assets/{useWorkerHighlightedLines-DQqqrOBU.js → useWorkerHighlightedLines-Bi9ASKr_.js} +1 -1
  38. package/dist/index.html +3 -3
  39. package/dist/mini-chat.html +3 -3
  40. package/dist/mobile.html +3 -3
  41. package/package.json +1 -1
  42. package/dist/assets/MarkdownRenderer-Cg82L3fN.js +0 -2
  43. package/dist/assets/MobileSurface-DHpXHbJp.js +0 -2
  44. package/dist/assets/insertionBoundaries-Yd1Lorjw.js +0 -1
  45. package/dist/assets/multirun-8fkF0Ji_.js +0 -4
  46. package/dist/assets/projectMeta--y6tyjrv.js +0 -3
  47. package/dist/assets/sessionChangeSummary-BwupJF-Q.js +0 -2
  48. package/dist/assets/src-DZ60kHBP.css +0 -2
  49. package/dist/assets/textarea-BnD799LW.js +0 -1
  50. package/dist/assets/useDesktopWindowControlsLayout-BGPR_rq6.js +0 -1
@@ -397,7 +397,7 @@ Use the results below as source material. Do not mention that the inputs were hi
397
397
  `).replace(/\n\s*\n+/g,`
398
398
  `),Gp=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Kp=e=>{let t=e?.metadata;return Gp(t)?t:{}},qp=e=>{let t=e.openchamber;return Gp(t)?t:{}},Jp=e=>{let t=qp(Kp(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Yp=e=>{let t=qp(Kp(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Xp=e=>qp(Kp(e)).kind===`review`&&!!Yp(e),Zp=(e,t)=>{let n=qp(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Qp=(e,t)=>{let n=qp(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},$p=(e,t)=>{let n=qp(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},em=De()(Oe((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:Ye(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),tm=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},nm=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=tm(t.parentSessionId),r=tm(t.sessionId);if(!(!n||!r||n===r))return{parentSessionId:n,sessionId:r}},rm=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=nm(i);a&&t.push(a)}return t},im=[],am=(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},om=(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},sm=(e,t,n,r,i)=>{if(!n)return r;let a=am(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},cm=`GitHub issue context (JSON)`,lm=`GitHub pull request context (JSON)`,um=e=>!e||typeof e!=`object`?!1:!!e.synthetic,dm=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>um(e)),fm=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!um(e)),n=e=>{if(!um(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(cm)||n.startsWith(lm)};return t&&e.some(e=>um(e))?e.filter(e=>!um(e)||n(e)):e},pm=new Map,mm=new Map,hm=new Map,gm=e=>{pm.set(e,(pm.get(e)??0)+1)},_m=e=>(pm.get(e)??0)>0,vm=e=>{let t=pm.get(e)??0;return t<=0?!1:(t===1?pm.delete(e):pm.set(e,t-1),!0)},ym=(e,t)=>{mm.set(e,t)},bm=e=>mm.get(e)??null,xm=e=>{mm.delete(e)},Sm=({sessionId:e,currentUserOrder:t,animatedIds:n})=>{let r=hm.get(e),i=null;if(_m(e)){let r=t[t.length-1];r!==void 0&&!n.has(r)&&vm(e)&&(ym(e,r),n.add(r),i=r)}if((!r||t.length>=r.length)&&hm.set(e,t),i!==null)return i;let a=bm(e);return a===null?null:(t.includes(a)&&n.add(a),a)},Cm=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},wm=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,Tm=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},Em=e=>e.replace(/\\/g,`/`),Dm=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,Om=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}`}`),Em(n)}catch{return null}},km=(e,t)=>{let n=Dm(Em(e)),r=Dm(Em(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},Am=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),jm=(e,t)=>{let n=Em(e),r=Dm(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=km(n,t);if(r!==null){let t=Dm(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return Am(a)},Mm=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},Nm=(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},Pm=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},Fm=async(e,t={})=>{let n=t.createID??_e,r=t.directory??t.root??null,i=e.filter(e=>!um(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(wm).join(`
399
399
  `),l=[];for(let e of o){let t=Pm(e);t&&l.push(t)}for(let e of[...l].reverse())Nm(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=Nm(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:`)?Om(t):null;if(o){let e=jm(o,r),t=null;for(let n of e){let e=Nm(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=Tm(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 Mm(t);h.set(l,e),m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:e.type||i,size:e.size,source:`local`,locator:{kind:`blob`,blobID:s}});continue}if(Cm(t)){if(!Te(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}},Im=async(e,t={})=>{let n=t.createID??_e,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 Mm(i);c.set(r,n),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||n.type||`application/octet-stream`,size:n.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}if(Cm(i)){if(!Te(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}},Lm=e=>e?JSON.parse(JSON.stringify(e)):null,Rm=e=>e?{...e}:{},zm=(e,t=Br.getState())=>{let n=t.getDraft?.(e)??null,r=Rm(t.draftAttachmentViews?.[z(e)]);return{record:Lm(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},Bm=async e=>{let t=e.input??Br.getState(),n=zm(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}},Vm=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}}},Hm=async e=>{let t=e.input??Br.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?Vm({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},Um=(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},Wm=e=>e?.status===`committed`&&e.current===!0,Gm=new Map,Km=async(e,t)=>{let n=z(e),r=Gm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Gm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Gm.get(n)===o&&Gm.delete(n)}},qm=(e,t)=>({key:e,addLocal:async n=>{await Km(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Km(e,async()=>{let r=t(),i=Um(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 Km(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 Km(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:Wm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Km(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Km(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Km(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Jm=4e4,Ym=0,Xm=null;function Zm(e=Date.now()){Ym=e}function Qm(e){return Xm=e,()=>{Xm===e&&(Xm=null)}}function $m(e){Xm?.(e)}function eh(e=Date.now(),t=Jm){return Ym<=0?!1:e-Ym>=t}var th=3e4,nh=200,rh=new Map;function ih(e,t,n){return`${n?.transport??u()}\n${n?.generation??f()}\n${e.trim()}\n${t}`}function ah(e,t,n){if(!e||!t)return!1;let r=rh.get(ih(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<th}function oh(e,t,n){if(!e||!t)return;let r=ih(e,t,n);for(rh.has(r)&&rh.delete(r);rh.size>=nh;){let e=rh.keys().next().value;if(typeof e!=`string`)break;rh.delete(e)}rh.set(r,n?.now??Date.now())}var sh=768,ch=()=>{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},lh=()=>{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<=sh&&ch()?`mobile`:`desktop`},uh=()=>lh()===`mobile`,dh=3,fh=2,ph=4,mh=4,hh=100,gh=30;function _h(){return a()?`relay`:`local`}function vh(e=_h()){return e===`relay`?fh:dh}function yh(e=_h()){return e===`relay`?mh:ph}function bh(e){return vh(Ch(e))}function xh(){return hh}function Sh(){return gh}function Ch(e){return e===`relay`||e===`local`?e:_h()}var wh=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function Th(){return{pages:[],pageParams:[]}}function Eh(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 Dh(e){return{pages:Object.freeze(e.pages.map(Eh)),pageParams:Object.freeze([...e.pageParams])}}function Oh(e,t,n=wh){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 Eh({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function kh(e){if(!e||e.pages.length===0)return hl;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 Ah(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=kh(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function jh(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function Mh(e,t,n,r,i,a,o){let s=[],c={},l={};for(let e of t){if(!e?.id)continue;s.push(e.id),c[e.id]=e;let t=n[e.id];t&&(l[e.id]=Object.freeze([...t]))}return Eh({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:jh(t)}})}function Nh(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 Dh({pages:[Mh(`tail`,o,s,l,u,c,a)],pageParams:[null]});if(r===`prepend`){let r=new Set;for(let t of e.pages)for(let e of t.messageOrder)r.add(e);let d=o.filter(e=>i.records.some(t=>t.info.id===e.id)||!r.has(e.id)).filter(t=>{if(i.records.some(e=>e.info.id===t.id))return!0;if(!r.has(t.id)){let n=e.pages[0]?.messageOrder[0];return!n||t.id<n}return!1}),f=[],p=new Set;for(let e of i.records){let t=o.find(t=>t.id===e.info.id);!t||p.has(t.id)||(p.add(t.id),f.push(t))}for(let e of d)p.has(e.id)||(p.add(e.id),f.push(e));let m=Mh(`history`,f,s,l,u,c,a),h=new Set(p),g=[m],_=[l];for(let r=0;r<e.pages.length;r+=1){let i=e.pages[r],o=[];for(let e of i.messageOrder){if(h.has(e))continue;let r=n.message[t]?.find(t=>t.id===e)??i.messagesByID[e];r&&o.push(r)}g.push(Fh(i,o,s,a)),_.push(e.pageParams[r]??null)}return Dh({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?Fh(t,r===`reconcile-page`?Ph(i,p):[...i,...p],s,a):Fh(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]=Eh({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return Dh({pages:m,pageParams:[...e.pageParams]})}function Ph(e,t){let n=e.slice();for(let e of t){let t=_c(e),r=n.length;for(let e=0;e<n.length;e+=1)if(gc(t,_c(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function Fh(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&&Ih(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||Rh(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:Eh({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:jh(t)}})}function Ih(e,t){return e===t||e.id===t.id&&e===t}function Lh(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 Rh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!Lh(e[n],t[n]))return!1;return!0}function zh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Bh(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 Vh(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=Nh(e??Th(),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&&Rh(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 Dh({pages:e.pages.map((t,n)=>Fh(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function Hh(e,t){let n=Ah(e,t),r=kh(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 Uh(e,t,n,r){if(!Vl(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Hh(e,t),o=Ys(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=Bh(n),c=new Set;return s&&c.add(s),{data:Vh(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function Wh(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 Gh(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 Kh(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Hh(e,t),o=!1,s=0,c,l=new Set,u=Wh(e),d=Gh(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(!Vl(e.type))continue;o=!0;let n=Ys(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=Bh(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&&Rh(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&&Ih(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:Vh(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function qh(e,t,n,r,i){let a=e&&e.pages.length>0?e:Dh({pages:[Mh(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=Ah(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]:zh(r)};return{data:Dh({pages:a.pages.map((e,t)=>t===a.pages.length-1?Fh(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]?Fh(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 Jh(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:Dh({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 Fh(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Yh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=Ah(e,t),i=ll({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:kh(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=Dh({pages:[Mh(`tail`,i.messages,o,typeof e==`string`&&e.length>0?e:null,!1,t,a)],pageParams:[null]});return{data:n,result:{applied:!0,changed:!0,boundary:kh(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=Dh({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?Fh(t,Ph(r,l),o,a):Fh(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:kh(u)}}}function Xh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=wl(Ah(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:Nh(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 Uh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Kh(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return qh(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 Jh(e,n.messageID,t)}case`durable-seed`:return Yh(e,t,n);case`reset`:return n.page?Xh(void 0,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes}):{data:void 0,result:{applied:!0,changed:!!(e&&e.pages.length>0)}};default:return{data:e,result:{applied:!1,changed:!1}}}}function Zh(e){return{records:e.messageOrder.map(t=>({info:e.messagesByID[t],parts:e.partsByMessageID[t]?[...e.partsByMessageID[t]]:[]})),cursor:e.cursor??void 0,complete:e.complete,turnCount:e.turnCount}}function Qh(e,t,n,r=`materialize`){return Xh(e,n,{type:`http-page`,purpose:r,page:Zh(t),liveRevision:t.sync.liveRevision}).data}function $h(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return Dh(t);if(t.pages.length===e.pages.length){let r=rg(e,t);if(r===e)return e;if(ng(e,t)||tg(e,t))return r;let i=t.pages[t.pages.length-1];return Qh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return Xh(e,n,{type:`http-page`,purpose:`prepend`,page:Zh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Qh(e,r,n)??Dh(t)}return Dh(t)}function eg(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function tg(e,t){let n=eg(e),r=eg(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=ig(e,``),a=ig(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function ng(e,t){let n=eg(e);if(n.size===0)return!1;let r=eg(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=ig(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||gc(_c(t),_c(n))>0)return!1}return!0}function rg(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,Eh(t))});return!n&&e.pageParams.length===t.pageParams.length?e:Dh({pages:r,pageParams:[...t.pageParams]})}function ig(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:kh(e),liveRevision:a}}var ag=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},og=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},sg=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},cg=e=>e.trim(),lg=e=>e?.trim()||`tail`,ug=new Set([502,503,504]),dg=[`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 fg(e){if(!e||e instanceof ag||e instanceof og)return!1;if(e instanceof sg)return e.status>=400&&e.status<500?!1:ug.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(ug.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(ug.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:dg.some(e=>n.includes(e))}function pg(e,t){return e>=2?!1:fg(t)}var mg=(e,t=u(),n=f())=>[t,n,`sessionMessages`,`page`,cg(e.directory),e.sessionID,e.limit,lg(e.before)],hg=(e,t=u(),n=f())=>[t,n,`session-transcript`,cg(e.directory),e.sessionID];function gg(e){if(!e||typeof e!=`object`)throw new og(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new og(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new og(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new og(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new og(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new og(`session message page: cursor must be string when set`);return e}var _g=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}:{}})},vg=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw new ag},yg=(e,t,n=u(),r={},i=(r.getGeneration??f)())=>{let a=cg(e.directory),o=e.sessionID,s=e.limit,c=e.before?.trim()||void 0;return{queryKey:mg({directory:a,sessionID:o,limit:s,before:c},n,i),queryFn:async({signal:e})=>{vg(n,i,r);let l=await t({directory:a,sessionID:o,limit:s,before:c,signal:e});return vg(n,i,r),_g(gg(l))},staleTime:1/0,gcTime:3e5,retry:pg,retryDelay:e=>Math.min(500*2**e,4e3)}},bg=(e,t,n=R,r=u(),i={},a=(i.getGeneration??f)())=>n.fetchQuery(yg(e,t,r,i,a));function xg(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 Sg(e){return _g({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function Cg(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function wg(e){let t=cg(e.directory),n=e.sessionID,r=e.transport??u(),i=e.probe??{},a=e.generation??(i.getGeneration??f)(),o=e.initialLimit??vh(),s=e.historyLimit??yh(),c=e.client??R,l=hg({directory:t,sessionID:n},r,a),d=async t=>Sg(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:l,queryFn:async e=>{vg(r,a,i);let l=e.pageParam?.trim()||void 0,u=l?s:o,f=l?`prepend`:`initial`,p=await bg({directory:t,sessionID:n,limit:u,before:l},d,c,r,i,a);vg(r,a,i);let m=xg(p);return Oh(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:Cg,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:pg,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>$h(e,t,n)}}function Tg(e){let t=e.client??R,n=wg({...e,client:t}),r=new it(t,{...n,structuralSharing:(t,n)=>$h(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 Dh(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return Dh(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:Dh(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return Dh(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:Dh(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function Eg(e,t,n,r){let i=e.getQueryData(t),a=Xh(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 Dg(e,t=R,n=u(),r=f()){return t.getQueryData(hg(e,n,r))}function Og(){return Se()||uh()}function kg(){return Se()?4:uh()?12:40}var Ag=1048576,jg=4*Ag,Mg=12*Ag,Ng=40*Ag;function Pg(){return Se()?jg:uh()?Mg:Ng}var Fg=e=>e.trim();function Ig(e){return{transport:e.transport,generation:e.generation,directory:Fg(e.directory),sessionID:e.sessionID}}function Lg(e){let t=Ig(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function Rg(e){return`${e.transport}\n${e.generation}\n${Fg(e.directory)}`}var zg={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function Bg(e,t,n){return[t,n,zg.taskRoot,zg.reconcileTaskKind,Fg(e.directory),e.sessionID,e.checkpoint]}function Vg(e,t,n){return[t,n,zg.checkpoint,Fg(e.directory),e.sessionID]}function Hg(e){let t=Ig(e);return[{queryKey:hg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,zg.transportPageRoot,zg.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,zg.taskRoot,zg.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,zg.taskRoot,zg.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:Vg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function Ug(){let e=new Map;return{retain(t){let n=Ig(t),r=Lg(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(Lg(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(Lg(t))?.count??0},clear(){e.clear()}}}function Wg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Gg=3e4;function Kg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function qg(e){return!Array.isArray(e)||e.length<5||e[2]!==zg.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 Jg(e){let t=e.client,n=e.activeRegistry??Ug(),r=e.counters??Wg(),i=e.getLimit??kg,a=e.now??Date.now,o=e.minResidencyMs??Gg,s=new Map,c=new Map,l=e=>{let t=Ig(e),n=Lg(t),r=c.get(t.sessionID);r||(r=new Map,c.set(t.sessionID,r)),r.set(n,t)},u=e=>{let t=Ig(e),n=Lg(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=qg(e.queryKey);t&&l(t)}let f=t.getQueryCache().subscribe(e=>{if(e.type===`added`||e.type===`updated`){let t=qg(e.query.queryKey);t&&l(t);return}if(e.type===`removed`){let t=qg(e.query.queryKey);t&&u(t)}}),p=e=>{let t=Lg(Ig(e));s.set(t,a())},m=e=>{let t=Lg(Ig(e)),n=s.get(t);return n!==void 0&&a()-n<o},h=e=>{let r=Ig(e);if(n.isRetained(r))return!0;let i=hg({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:Fg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=qg(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:Kg(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:Fg(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=Ig(e);s.delete(Lg(t)),u(t);for(let t of Hg(e))v(t)},b=(e,t)=>{r.purgeGeneration+=1,d(e,t);let n=[[e,t,zg.canonical],[e,t,zg.transportPageRoot,zg.transportPageKind],[e,t,zg.taskRoot],[e,t,zg.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=>Lg(Ig(e)))),o=g({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=Rg(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=Lg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(Lg(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 Yg=new Map,Xg=new Set;function Zg(e,t){return`${e}\n${t}`}function Qg(){for(let e of Xg)e()}function $g(e,t){if(!e||!t)return;let n=Zg(e,t),r=Yg.get(n)??0;Yg.set(n,r+1),r===0&&Qg()}function e_(e,t){if(!e||!t)return;let n=Zg(e,t),r=Yg.get(n);if(r){if(r<=1){Yg.delete(n),Qg();return}Yg.set(n,r-1)}}function t_(e,t){if(!e)return!1;if(t)return Yg.has(Zg(t,e));let n=`\n${e}`;for(let e of Yg.keys())if(e.endsWith(n))return!0;return!1}function n_(e){return Xg.add(e),()=>{Xg.delete(e)}}var r_=3e4,i_=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function a_(e,t=r_){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 o_=e=>e?e.toLowerCase().includes(`application/json`):!1,s_=e=>e?e.toLowerCase().includes(`text/html`):!1;function c_(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 l_(e){let t=e.turns??yh(),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:r_;return a_((async()=>{let a=await _(n,{method:`GET`,query:r,signal:i_(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(s_(o))throw Error(`session turn page: unexpected HTML response`);o_(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return c_(s,t)})(),i)}async function u_(e){let t=e.purpose===`prepend`&&e.before?yh():vh();return l_({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var d_=3e4,f_=2,p_=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),m_=e=>e?e.toLowerCase().includes(`text/html`):!1,h_=e=>new Promise(t=>{setTimeout(t,e)});function g_(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new og(`session transcript reconcile: ${t} must be string or null`);return e}function __(e){if(!e||typeof e!=`object`)throw new og(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new og(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new og(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new og(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new og(`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 og(`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 og(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=g_(t.capturedHeadMessageID,`capturedHeadMessageID`),r=g_(t.latestHeadMessageID,`latestHeadMessageID`),i=g_(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new og(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new og(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new og(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new og(`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 og(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new og(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new og(`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 og(`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 v_(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 og(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function y_(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),a_((async()=>{let t;try{t=await _(r,{method:`GET`,query:i,signal:p_(e.signal,n)})}catch(e){throw e instanceof ag||e instanceof og||e instanceof sg||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new sg(t.status,`session transcript reconcile failed (${t.status})`);if(m_(t.headers.get(`content-type`)))throw new og(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new og(`session transcript reconcile: malformed JSON`)}return __(a)})(),n)}async function b_(e){let t=v_(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:d_,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):f_,i=e.sleep??h_,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await y_(e,t,n)}catch(t){if(t instanceof ag||t instanceof og||t instanceof sg&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!fg(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var x_=e=>!!(e&&typeof e==`object`&&typeof e.type==`string`),S_=e=>e.filter(x_),C_=e=>{let t=e,n=t.text;return typeof n==`string`?n:t.content||t.value||``},w_=e=>{if(e.type!==`text`)return!1;let t=C_(e);return!t||t.trim().length===0},T_=(e,t={})=>{let{includeReasoning:n=!0}=t,r=S_(e),i=r.some(e=>!e.synthetic);return r.filter(e=>{let t=!!e.synthetic;return t&&e.type===`text`&&C_(e).includes(`<system-reminder>`)||t&&i||!n&&e.type===`reasoning`?!1:e.type!==`patch`})},E_=`GitHub issue context (JSON)`,D_=`GitHub pull request context (JSON)`,O_=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,k_=(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}},A_=e=>{let t=k_(e,E_);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!O_(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=k_(e,D_);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!O_(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},j_=e=>!!e.trim().startsWith(`The following tool was executed by the user`),M_=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),N_=e=>e.trim()===`/compact`,P_=e=>e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(M_(t)||N_(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 j_(t)||n.startsWith(E_)||n.startsWith(D_)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=A_(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e}),F_=e=>e.some(e=>{if(e.type===`text`)return!w_(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&&!Fe(e)}return!0}),I_=e=>e?.length?F_(P_(e)):!1,L_=`oc_asst_session_divider:`,R_=[],z_=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),B_=(e,t=0)=>({info:{id:`${L_}${e}`,role:`system`,time:{created:t}},parts:[]}),V_=(e,t,n=R_)=>{if(!e.length)return R_;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(B_(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?R_:K_(n,r)?n:r},H_=(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},U_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=H_(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 I_(e.parts)?e:I_(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}:{}}},W_=(e,t,n,r=R_)=>{if(!t)return n.length>0?Array.from(n):R_;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:U_(e,t?.message),order:t?.order??a++})}if(i.size===0)return R_;let o=[...i.values()].sort((e,t)=>Number(e.message.info.time?.created??0)-Number(t.message.info.time?.created??0)||e.order-t.order).map(({message:e})=>e);return K_(r,o)?r:o},G_=(e,t)=>{if(!z_(e)||!z_(t))return!1;let n=Number(e.info.time?.created??0),r=Number(t.info.time?.created??0);return e.info.id===t.info.id&&n===r},K_=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||!(r===i||G_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},q_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),J_=e=>e.startsWith(L_);function Y_(e,t){if(!e?.id||J_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(q_(t,`subtask`)||q_(t,`compaction`)||t.every(e=>um(e))):!1}function X_(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(Y_(r,i))return n}return null}function Z_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function Q_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:X_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:Z_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function $_(e,t){return{...e,...t}}function ev(e,t){let n=Vg({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 tv(e,t){let n=Vg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function nv(e,t){let n=Vg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function rv(e){return e.slim===!0}var iv=/bearer|token|authorization|password|secret|cookie/i,av=new Set([`message.part.delta`]);function ov(e){return typeof e==`string`&&e.includes(`-`)}var sv=`openchamber.client-diagnostics.enabled`;function cv(e){return e===`true`||e!==`false`&&null}function lv(e){return e.preference===!0||e.preference!==!1&&ov(e.version)}function uv(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function dv(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function fv(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 pv(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return iv.test(t)?`redacted-error`:t}function mv(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)rv(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function hv(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function gv(e){let t=0;for(let n of e.messageOrder)Av(e.messagesByID[n])===!0&&(t+=1);return t}function _v(e){let t=e.transcript?mv(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:hv(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:gv(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...pv(e.error??e.request?.error)?{error:pv(e.error??e.request?.error)}:{},...fv(e.error)===void 0?{}:{httpStatus:fv(e.error)}}}function vv(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 yv(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 bv(e){return typeof e==`string`&&av.has(e)}function xv(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return bv(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>bv(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function Sv(e){if(e.type===`http-page`)return e.purpose}function Cv(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function wv(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 Tv(e){return e.__openchamberOptimistic===!0}function Ev(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 iv.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function Dv(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function Ov(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var kv=e=>typeof e==`string`&&e.trim().length>0;function Av(e){if(!e||Dv(e)!==`assistant`)return;let t=e,n=!kv(t.mode)&&!kv(t.agent),r=!kv(t.modelID)||!kv(t.providerID);return n||r}function jv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function Mv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)rv(e)?r+=1:i+=1,Tv(e)&&(a=!0);let o=e.messagesByID[t],s=Dv(o),c=Av(o),l=s===`user`?Ev(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:Ov(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 Nv(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:jv(e),after:jv(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 Pv(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:Nv(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 Fv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function Iv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function Lv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Rv(e){let t=Lv(e.partID),n=Lv(e.messageID),r=Lv(e.directory),i=Lv(e.childSessionID),a=Lv(e.toolStatus),o=Lv(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 zv(e){return[e.sessionID,Lv(e.partID)??``,e.childSessionPresent?`1`:`0`,Lv(e.childSessionID)??``,Lv(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`,Lv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Bv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Rv(e)}}function Vv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:Iv(e),...Rv(e)}}var Hv=`openchamber-transcript-diagnostics`,Uv=`events`,Wv=1,Gv=(e,t)=>{try{return e.error??Error(t)}catch{return Error(t)}},Kv=(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`))}}}),qv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Wv),i=!1,a=()=>{i||(i=!0,n(Gv(r,`IndexedDB open failed`)))};r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Uv)||e.createObjectStore(Uv,{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}),Jv=(e=Hv)=>{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=qv(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(Uv,e)}catch(e){throw l(),e}let i=r.objectStore(Uv),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 Kv(n.add(t),n.transaction);let r=await Kv(n.getAllKeys(),n.transaction),i=r.length-t;if(i>0)for(let e of r.slice(0,i))await Kv(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=>Kv(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 Kv(e.clear(),e.transaction)})}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})}}};function Yv(e={}){let t=e.driver??Jv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Xv=et(`OpenChamberMedia`);function Zv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Qv(){return Ue()&&tt!==void 0&&tt.isPluginAvailable(`OpenChamberMedia`)}function $v(){return`1.19.20`}function ey(){if(typeof localStorage>`u`)return null;try{return cv(localStorage.getItem(sv))}catch{return null}}function ty(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(sv,e?`true`:`false`)}catch{}}function ny(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var ry;function iy(e=$v()){return lv({version:e,preference:ey()})}function ay(e={}){return yv({sink:ny()===`indexeddb`?(e.createIndexedDBSink??Yv)():(e.createMemorySink??vv)(),isEnabled:e.isEnabled??iy})}function oy(){return ry??=ay(),ry}function sy(e){oy().record(e)}function cy(e){try{return iy()?Mv(e()):void 0}catch{return}}function ly(e){try{sy(Pv(e))}catch{}}function uy(e){try{sy(Bv(e))}catch{}}function dy(e){try{sy(Vv(e))}catch{}}function fy(e){if(e!==void 0)return typeof e==`function`?e():e}function py(e){return!xv(e.command)||e.changed===!1&&(e.command.type===`sse-event`||e.command.type===`sse-event-batch`)?!1:(e.isEnabled??(()=>oy().isEnabled()))()}function my(e){if(!py(e))return;let t=xv(e.command);t&&sy(_v({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:fy(e.transcript),request:fy(e.request),hydration:fy(e.hydration),command:e.command.type,purpose:Sv(e.command),sseType:Cv(e.command),source:wv(e.command),error:e.error}))}async function hy(){let e=await oy().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 gy(e,t=uv()){if(Qv())return(await Xv.saveFile({dataBase64:Zv(e),mimeType:`application/json`,filename:t}))?.cancelled?`cancelled`:`saved`;if(typeof document>`u`)return`failed`;let n=new Blob([e],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);return i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),`downloaded`}async function _y(){let e=await hy(),t=uv();return{content:e,fileName:t,outcome:await gy(e,t),eventCount:dv(e)}}function vy(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 yy=2,by=6e4,xy=6e4;function Sy(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??u)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??f)()}}function Cy(e,t){let n=(t.probe?.getTransport??u)(),r=(t.probe?.getGeneration??f)();if(n!==e.transport||r!==e.generation)throw new ag}function wy(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function Ty(e,t){return Ig({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function Ey(e,t){return`${e.trim()}\n${t}`}function Dy(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Jg({client:t,activeRegistry:Ug()}),i=Math.max(1,Math.floor(e.directoryConcurrency??yy)),a=e.fetchReconcile??b_,o=e.now??Date.now,s=Math.max(0,e.destructiveResetDedupeMs??by),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(Ey(e,t))},x=(e,t)=>{g.delete(Ey(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(Ey(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(Ey(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=Ey(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??Sy(e).transport,generation:i.generation??Sy(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(Ey(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(Ey(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of l)f.set(Ey(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(Ey(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=wy(e,a),o=n.getTranscript(r),c=Q_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:o,lastEventID:i.lastEventID,capturedAt:s});tv(t,c)}let p=new Set;for(let t of u){let n=vy({directory:t,activeScopes:w(a,t),viewedSessions:l,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(Ey(e.directory,e.sessionID))}for(let e of d){let t=Ey(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=cy(()=>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=cy(()=>n.getTranscript(e));i&&t&&ly({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:Xs(i)},A=async(r,i,a)=>{if(Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;tv(t,$_(ev(t,i)??Q_({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=cy(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;nv(t,i),x(i.directory,i.sessionID),y.set(Ey(i.directory,i.sessionID),o());try{let e=cy(()=>n.getTranscript(r));s&&e&&ly({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:s,after:e})}catch{}}catch(e){throw tv(t,$_(ev(t,i)??Q_({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(Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;tv(t,$_(ev(t,i)??Q_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=cy(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;nv(t,i),x(i.directory,i.sessionID);try{let e=cy(()=>n.getTranscript(r));o&&e&&ly({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 tv(t,$_(ev(t,i)??Q_({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=wy(r,i),f=Ty(r,i),p=Bg({directory:f.directory,sessionID:f.sessionID,checkpoint:String(ev(t,f)?.capturedAt??o())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:o()});try{if(Cy(i,e),c!==l||u.aborted)throw new ag;let m=ev(t,f);if(m||(m=Q_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:o()}),tv(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=$_(m,{state:`reconciling`}),tv(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,Cy(i,e),c!==l||u.aborted)throw new ag;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,Cy(i,e),c!==l||u.aborted)throw new ag;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(Cy(i,e),c!==l||u.aborted)throw new ag;if(x.resetRequired){let n=y.get(Ey(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=$_(ev(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),tv(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=$_(ev(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),tv(t,m);continue}if(m=$_(ev(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),tv(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(Ey(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 ag||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=Ey(o.directory,o.sessionID);if(d.has(s)){h.set(n,(h.get(n)??1)-1),te(n);return}let c=Sy(e),u=l,f=new AbortController;p.set(s,f);let g=(async()=>{$g(n,o.sessionID);try{await ee(o,c,u,f.signal)}catch{}finally{e_(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=Ey(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=vy({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=Ey(e.scope.directory,e.scope.sessionID);i.some(e=>Ey(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=Sy(e,t),s=wy({directory:r,sessionID:t.sessionID},i),l=Lg(Ty({directory:r,sessionID:t.sessionID},i)),u=_.get(l);if(u&&o()-u.checkedAt<xy||v.has(l)||d.has(Ey(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(Cy(i,e),c)return;let u=await a({sessionID:t.sessionID,directory:r,anchor:p});if(Cy(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=Ey(i,r.sessionID);if(!g.has(a))return ae(r),null;x(i,r.sessionID);let o=Sy(e,r),s=wy({directory:i,sessionID:r.sessionID},o),l=Ty({directory:i,sessionID:r.sessionID},o),u=ev(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{Cy(o,e),$g(i,r.sessionID);try{let e=await n.ensureInitial(s);return nv(t,l),e}finally{e_(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=Sy(e,n);return ev(t,Ty({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(Ey(e,t)),destroy:()=>{c=!0,C(`destroy`)}}}var Oy=e=>e.trim(),ky=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session status runtime changed`)},Ay=(e,t={})=>{let n=Oy(e),r=t.transport??u(),i=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),a=t.now??Date.now,o=t.runtimeProbe??{},s=(o.getGeneration??f)();return ct({queryKey:P.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{ky(r,s,o);let t=a(),c=await i(n,e);if(ky(r,s,o),c===null)throw Error(`session status snapshot unavailable`);return{snapshot:c,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},jy=(e,t={})=>{let{client:n=R,...r}=t;return n.fetchQuery(Ay(e,r))},My=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session active runtime changed`)},Ny=(e={})=>{let t=e.transport??u(),n=e.loadActive??(e=>B.getSessionActive(e)),r=e.now??Date.now,i=e.runtimeProbe??{},a=(i.getGeneration??f)();return ct({queryKey:P.sessionActive.snapshot(t,a),queryFn:async({signal:e})=>{My(t,a,i);let o=r(),s=await n(e);return My(t,a,i),{result:s,requestedAt:o}},staleTime:0,gcTime:3e5,retry:!1})},Py=(e={})=>{let{client:t=R,...n}=e;return t.fetchQuery(Ny(n))},Fy;function Iy(e){Fy=e}function Ly(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 Ry(e,t){return JSON.stringify(e)===JSON.stringify(t)}function zy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function By(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>{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 Vy(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=Ly(o[e]);if(t){c[e]=n&&zy(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 Hy(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=Ly(t[o]);if(n&&n.type!==`idle`){Ry(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 Uy(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Wy(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await jy(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 Py({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}=Vy(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=Uy(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Hy(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Fy;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 Gy({directory:e,sessionID:t,store:n,statusBeforePull:r,statusObservedAtBeforePull:i,hasMessages:a,isTailPage:o=!0,isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m}){if(!o||!a||!r||r.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:Wy(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Ky(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function qy(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 Jy(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 Yy(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(pc(e))??Promise.resolve(),r.get(hc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=pc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=hc(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??Pg)();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 Xy=new Map;function Zy(e,t){let n=Xy.get(e);if(n)return n;let r=t().finally(()=>{Xy.get(e)===r&&Xy.delete(e)});return Xy.set(e,r),r}var Qy=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function $y(e){return Zy(Qy(e),e.request)}function eb(e,t){return`${e}\n${t}`}var tb=new Map;function nb(e){return tb.get(e)}async function rb(e){return $y({runtimeKey:eb(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 tb.set(r.id,i),{info:vp(r),parts:i}}})}function ib(e,t){let n=e.info;return n.role===t||n.clientRole===t}function ab(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!ib(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 ob(e){if(e.complete){let t=e.records.some(e=>ib(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=ab(e.records);if(t.length===0){let t=e.records.some(e=>ib(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=>ib(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function sb(e){return e.trim()}function cb(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??u)(),r=e.generation??t.generation??(t.probe?.getGeneration??f)();return{directory:sb(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function q(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function lb(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:hl,liveRevision:0}}function ub(e,t){if(!e||e.pages.length===0)return lb(t);let n=ig(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function db(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function fb(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function pb(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=db(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=db(e.messagesByID[t]);a===void 0||a<=n||fb(e.partsByMessageID[t])||i.push(t)}return i}function mb(e={}){let t=e.client??R,n=e.cacheBudget??Jg({client:t,activeRegistry:e.activeRegistry??Ug()}),r=n.activeRegistry,i=new Map,a=new Map,o=new Map,s=new Map,c=new Map,p=e.durableStore?Yy(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Ky),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=q(t);if(x.has(n))return;let r=ie(e);!Pl(r)&&!b.has(n)||(x.add(n),sy(_v({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=cb(n,e);return Dg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},D=t=>{let n=cb(t,e);return hg({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},O=t=>{let n=cb(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=cb(n,{...e,transport:void 0,generation:void 0,probe:r}),o=q(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=Tg({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=q(cb(t,e)),r=a.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},ee=n=>{let r=q(cb(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=cb(t,e),r=q(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=ub(i,n.sessionID),s=ne(r,o);return a.cachedFrom=i,a.hasTranscriptCache=!0,s},ae=(e,t)=>`${q(e)}\n${t}`,M=(e,t)=>{let n=q(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=`${q(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=cb({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},de=(e,t,n)=>{p&&d()&&p.persistSettled(Ky(e),t,n??[])},fe=(e,t,n,r)=>{if(!p||w>0||!d()||!r.applied||!r.changed)return;let i=Ky(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=Jy(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??vh()};return qy(r?.fresh?await t.fetchQuery({...yg(o,i,n.transport,a,n.generation),staleTime:0}):await bg(o,i,t,n.transport,a,n.generation))},N=(e,t)=>{for(let n of t)bu(`${e.directory}\n${e.sessionID}\n${n}`,()=>I.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},me=(e,t)=>{let r=q(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),I.getTranscript(e);I.apply(e,{type:`http-page`,purpose:`initial`,page:i}),oh(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(!Ol(I.getParts(e,i),I.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),I.getTranscript(e)}catch(n){if(n instanceof ag||!ue(t))return m.delete(r),I.getTranscript(e);throw m.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),sy(_v({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:I.getRequestState?.(e),hydration:I.getHydrationState?.(e),error:n})),n}finally{h.delete(r)}})();return h.set(r,o),o},P=(e,t)=>{let r=q(t),i=h.get(r);if(i)return i;let a=l(),o=(async()=>{let i=Date.now(),o=I.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),I.getTranscript(e);let s=I.getTranscript(e).liveRevision;return s<o||fu(t.sessionID,t.directory)?(m.delete(r),I.getTranscript(e)):(I.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}),oh(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),m.delete(r),n.noteScopeObserved(O(e)),k(e),I.getTranscript(e))}catch(n){return m.delete(r),n instanceof ag||!ue(t)||sy(_v({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:I.getRequestState?.(e),hydration:I.getHydrationState?.(e),error:n})),I.getTranscript(e)}finally{h.delete(r)}})();return h.set(r,o),o},F=t=>{let n=E(t);return!n||n.pages.length===0||y.has(q(cb(t,e)))?!0:kh(n).kind===`unknown`},I={getTranscript(e){return ie(e)},getPagination(t){let n=cb(t,e),r=q(n),i=I.getTranscript(t);return re(r,Rl(n.sessionID,i.boundary))},getRequestState(t){let n=cb(t,e),r=m.get(q(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(q(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=cb(t,e),r=q(n),i=I.getTranscript(t);Pl(i)&&b.set(r,!0);let a=b.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Fl({p0Satisfied:a,prependActive:S.has(r),materializeActive:le(n),earlierHistoryLoaded:jl(i)>1})}},hasSession(e){return E(e)!==void 0},getMessage(t,n){let r=q(cb(t,e)),i=T(r),a=I.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=q(cb(t,e)),i=T(r),a=I.getTranscript(t).partsByMessageID[n]??hb,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=cb(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}}:!I.getMessage(t,n)||v.get(q(r))?.has(n)||Dl(I.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=cb(t,e),i=l(),a=ae(r,n),o=cy(()=>I.getTranscript(t)),s=e=>{try{let t=cy(e);if(!o||!t)return;ly({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(!I.getMessage(t,n))return g.set(a,{status:`idle`}),I.getTranscript(t);if(!Dl(I.getParts(t,n))&&!v.get(q(r))?.has(n))return g.set(a,{status:`ready`}),I.getTranscript(t);g.set(a,{status:`loading`}),j(t);try{let o=await rb({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 B.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return!ue(r)||l()!==i?(g.delete(a),I.getTranscript(t)):(I.apply(t,{type:`materialize-snapshots`,records:[{info:o.info,parts:o.parts??[]}]}),Dl(I.getParts(t,n))?g.set(a,{status:`error`,error:`session.message failed: slim parts remain`}):g.set(a,{status:`ready`}),j(t),I.getTranscript(t))}catch(e){if(!ue(r)||l()!==i)return g.delete(a),I.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return g.set(a,{status:`error`,error:n}),j(t),I.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=cb(r,e),o=D(r),s=(()=>{switch(i.type){case`http-page`:{let e=Eg(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(q(a)),e.result.changed&&(j(r),k(r)),e.result}case`sse-event`:{let e=Eg(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&y.delete(q(a)),e.result.changed&&j(r),e.result}case`sse-event-batch`:{let e=Eg(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&y.delete(q(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=Eg(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}),Eg(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=Eg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&j(r),n.result}case`reset`:{if(S.delete(q(a)),v.delete(q(a)),y.delete(q(a)),n.purgeSession(O(r)),!i.page)return j(r),{applied:!0,changed:!0};let e=Eg(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 gb(t,o,a.sessionID,i,()=>j(r));case`remove-message`:{let e=Eg(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&&(my({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:()=>I.getTranscript(r),request:()=>I.getRequestState?.(r),hydration:()=>I.getHydrationState?.(r),error:s.error,changed:s.changed}),C(r,a)),s},subscribe(t,i){let o=q(cb(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=cb(t,e),o=l(),s=q(a);if(p&&await p.wait(Ky(a)),l()!==o)return I.getTranscript(t);if(E(t)===void 0&&e.durableStore&&d())try{let n=await e.durableStore.readSession(Ky(a));if(ue(a)&&l()===o&&E(t)===void 0&&n.records.length>0){w+=1;try{I.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)Ol(t.parts,t.info)&&e.add(t.info.id);e.size>0&&v.set(s,e),y.add(s)}finally{--w}}}catch(e){sy(_v({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 I.getTranscript(t);if(F(t)&&E(t)!==void 0){let e=Date.now(),n=await me(t,a);return sy(_v({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),n}let u=E(t);if(u&&u.pages.length>0&&!F(t)&&e.fetcher&&!r.isRetained(O(t))){let e=Date.now(),n=await P(t,a);return sy(_v({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:I.getRequestState?.(t),hydration:I.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 I.getTranscript(t);throw sy(_v({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:I.getRequestState?.(t),hydration:I.getHydrationState?.(t),error:e})),e}if(l()!==o)return i.get(s)===f&&(n.purgeSession(O(t)),c.delete(s),j(t)),I.getTranscript(t);m.delete(s),g||oh(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(O(t)),k(t);let _=I.getTranscript(t);return sy(_v({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:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),_},async fetchPreviousPage(t){if(F(t)&&await I.ensureInitial(t),kh(E(t)).kind!==`has-more`)return I.getTranscript(t);let n=cb(t,e),r=q(n);S.add(r),j(t);let i=Date.now();try{await A(t).fetchPreviousPage(),k(t);let e=I.getTranscript(t);return sy(_v({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:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),e}catch(e){throw sy(_v({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=cb(t,e);return i.get(q(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=cb(t,e),i=l(),a=cy(()=>I.getTranscript(t)),o=I.getTranscript(t).liveRevision,s=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??vh(),signal:new AbortController().signal});if(l()!==i)return I.getTranscript(t);let c=I.getTranscript(t).liveRevision;if(I.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=pb(I.getTranscript(t),s);for(let i of n)I.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let u=I.getTranscript(t);n.noteScopeObserved(O(t));try{let e=cy(()=>u);a&&e&&ly({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=cy(()=>I.getTranscript(t)),a=O(t);return p&&await p.clearSession(Ky(cb(t,e))),n.destructiveReset(a,async()=>{let n=cb(t,e),a=q(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 I.ensureInitial(t);try{let e=cy(()=>s);r&&e&&ly({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=q(cb(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 iv.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function Dv(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function Ov(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var kv=e=>typeof e==`string`&&e.trim().length>0;function Av(e){if(!e||Dv(e)!==`assistant`)return;let t=e,n=!kv(t.mode)&&!kv(t.agent),r=!kv(t.modelID)||!kv(t.providerID);return n||r}function jv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function Mv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)rv(e)?r+=1:i+=1,Tv(e)&&(a=!0);let o=e.messagesByID[t],s=Dv(o),c=Av(o),l=s===`user`?Ev(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:Ov(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 Nv(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:jv(e),after:jv(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 Pv(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:Nv(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 Fv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function Iv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function Lv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Rv(e){let t=Lv(e.partID),n=Lv(e.messageID),r=Lv(e.directory),i=Lv(e.childSessionID),a=Lv(e.toolStatus),o=Lv(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 zv(e){return[e.sessionID,Lv(e.partID)??``,e.childSessionPresent?`1`:`0`,Lv(e.childSessionID)??``,Lv(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`,Lv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Bv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Rv(e)}}function Vv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:Iv(e),...Rv(e)}}var Hv=`openchamber-transcript-diagnostics`,Uv=`events`,Wv=1,Gv=(e,t)=>{try{return e.error??Error(t)}catch{return Error(t)}},Kv=(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`))}}}),qv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Wv),i=!1,a=()=>{i||(i=!0,n(Gv(r,`IndexedDB open failed`)))};r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Uv)||e.createObjectStore(Uv,{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}),Jv=(e=Hv)=>{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=qv(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(Uv,e)}catch(e){throw l(),e}let i=r.objectStore(Uv),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 Kv(n.add(t),n.transaction);let r=await Kv(n.getAllKeys(),n.transaction),i=r.length-t;if(i>0)for(let e of r.slice(0,i))await Kv(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=>Kv(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 Kv(e.clear(),e.transaction)})}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})}}};function Yv(e={}){let t=e.driver??Jv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Xv=et(`OpenChamberMedia`);function Zv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Qv(){return Ue()&&tt!==void 0&&tt.isPluginAvailable(`OpenChamberMedia`)}function $v(){return`1.19.21-beta.1`}function ey(){if(typeof localStorage>`u`)return null;try{return cv(localStorage.getItem(sv))}catch{return null}}function ty(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(sv,e?`true`:`false`)}catch{}}function ny(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var ry;function iy(e=$v()){return lv({version:e,preference:ey()})}function ay(e={}){return yv({sink:ny()===`indexeddb`?(e.createIndexedDBSink??Yv)():(e.createMemorySink??vv)(),isEnabled:e.isEnabled??iy})}function oy(){return ry??=ay(),ry}function sy(e){oy().record(e)}function cy(e){try{return iy()?Mv(e()):void 0}catch{return}}function ly(e){try{sy(Pv(e))}catch{}}function uy(e){try{sy(Bv(e))}catch{}}function dy(e){try{sy(Vv(e))}catch{}}function fy(e){if(e!==void 0)return typeof e==`function`?e():e}function py(e){return!xv(e.command)||e.changed===!1&&(e.command.type===`sse-event`||e.command.type===`sse-event-batch`)?!1:(e.isEnabled??(()=>oy().isEnabled()))()}function my(e){if(!py(e))return;let t=xv(e.command);t&&sy(_v({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:fy(e.transcript),request:fy(e.request),hydration:fy(e.hydration),command:e.command.type,purpose:Sv(e.command),sseType:Cv(e.command),source:wv(e.command),error:e.error}))}async function hy(){let e=await oy().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 gy(e,t=uv()){if(Qv())return(await Xv.saveFile({dataBase64:Zv(e),mimeType:`application/json`,filename:t}))?.cancelled?`cancelled`:`saved`;if(typeof document>`u`)return`failed`;let n=new Blob([e],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);return i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),`downloaded`}async function _y(){let e=await hy(),t=uv();return{content:e,fileName:t,outcome:await gy(e,t),eventCount:dv(e)}}function vy(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 yy=2,by=6e4,xy=6e4;function Sy(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??u)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??f)()}}function Cy(e,t){let n=(t.probe?.getTransport??u)(),r=(t.probe?.getGeneration??f)();if(n!==e.transport||r!==e.generation)throw new ag}function wy(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function Ty(e,t){return Ig({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function Ey(e,t){return`${e.trim()}\n${t}`}function Dy(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Jg({client:t,activeRegistry:Ug()}),i=Math.max(1,Math.floor(e.directoryConcurrency??yy)),a=e.fetchReconcile??b_,o=e.now??Date.now,s=Math.max(0,e.destructiveResetDedupeMs??by),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(Ey(e,t))},x=(e,t)=>{g.delete(Ey(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(Ey(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(Ey(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=Ey(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??Sy(e).transport,generation:i.generation??Sy(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(Ey(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(Ey(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of l)f.set(Ey(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(Ey(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=wy(e,a),o=n.getTranscript(r),c=Q_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:o,lastEventID:i.lastEventID,capturedAt:s});tv(t,c)}let p=new Set;for(let t of u){let n=vy({directory:t,activeScopes:w(a,t),viewedSessions:l,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(Ey(e.directory,e.sessionID))}for(let e of d){let t=Ey(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=cy(()=>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=cy(()=>n.getTranscript(e));i&&t&&ly({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:Xs(i)},A=async(r,i,a)=>{if(Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;tv(t,$_(ev(t,i)??Q_({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=cy(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;nv(t,i),x(i.directory,i.sessionID),y.set(Ey(i.directory,i.sessionID),o());try{let e=cy(()=>n.getTranscript(r));s&&e&&ly({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:s,after:e})}catch{}}catch(e){throw tv(t,$_(ev(t,i)??Q_({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(Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;tv(t,$_(ev(t,i)??Q_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=cy(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;nv(t,i),x(i.directory,i.sessionID);try{let e=cy(()=>n.getTranscript(r));o&&e&&ly({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 tv(t,$_(ev(t,i)??Q_({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=wy(r,i),f=Ty(r,i),p=Bg({directory:f.directory,sessionID:f.sessionID,checkpoint:String(ev(t,f)?.capturedAt??o())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:o()});try{if(Cy(i,e),c!==l||u.aborted)throw new ag;let m=ev(t,f);if(m||(m=Q_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:o()}),tv(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=$_(m,{state:`reconciling`}),tv(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,Cy(i,e),c!==l||u.aborted)throw new ag;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,Cy(i,e),c!==l||u.aborted)throw new ag;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(Cy(i,e),c!==l||u.aborted)throw new ag;if(x.resetRequired){let n=y.get(Ey(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=$_(ev(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),tv(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=$_(ev(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),tv(t,m);continue}if(m=$_(ev(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),tv(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(Ey(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 ag||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=Ey(o.directory,o.sessionID);if(d.has(s)){h.set(n,(h.get(n)??1)-1),te(n);return}let c=Sy(e),u=l,f=new AbortController;p.set(s,f);let g=(async()=>{$g(n,o.sessionID);try{await ee(o,c,u,f.signal)}catch{}finally{e_(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=Ey(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=vy({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=Ey(e.scope.directory,e.scope.sessionID);i.some(e=>Ey(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=Sy(e,t),s=wy({directory:r,sessionID:t.sessionID},i),l=Lg(Ty({directory:r,sessionID:t.sessionID},i)),u=_.get(l);if(u&&o()-u.checkedAt<xy||v.has(l)||d.has(Ey(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(Cy(i,e),c)return;let u=await a({sessionID:t.sessionID,directory:r,anchor:p});if(Cy(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=Ey(i,r.sessionID);if(!g.has(a))return ae(r),null;x(i,r.sessionID);let o=Sy(e,r),s=wy({directory:i,sessionID:r.sessionID},o),l=Ty({directory:i,sessionID:r.sessionID},o),u=ev(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{Cy(o,e),$g(i,r.sessionID);try{let e=await n.ensureInitial(s);return nv(t,l),e}finally{e_(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=Sy(e,n);return ev(t,Ty({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(Ey(e,t)),destroy:()=>{c=!0,C(`destroy`)}}}var Oy=e=>e.trim(),ky=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session status runtime changed`)},Ay=(e,t={})=>{let n=Oy(e),r=t.transport??u(),i=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),a=t.now??Date.now,o=t.runtimeProbe??{},s=(o.getGeneration??f)();return ct({queryKey:P.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{ky(r,s,o);let t=a(),c=await i(n,e);if(ky(r,s,o),c===null)throw Error(`session status snapshot unavailable`);return{snapshot:c,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},jy=(e,t={})=>{let{client:n=R,...r}=t;return n.fetchQuery(Ay(e,r))},My=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session active runtime changed`)},Ny=(e={})=>{let t=e.transport??u(),n=e.loadActive??(e=>B.getSessionActive(e)),r=e.now??Date.now,i=e.runtimeProbe??{},a=(i.getGeneration??f)();return ct({queryKey:P.sessionActive.snapshot(t,a),queryFn:async({signal:e})=>{My(t,a,i);let o=r(),s=await n(e);return My(t,a,i),{result:s,requestedAt:o}},staleTime:0,gcTime:3e5,retry:!1})},Py=(e={})=>{let{client:t=R,...n}=e;return t.fetchQuery(Ny(n))},Fy;function Iy(e){Fy=e}function Ly(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 Ry(e,t){return JSON.stringify(e)===JSON.stringify(t)}function zy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function By(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>{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 Vy(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=Ly(o[e]);if(t){c[e]=n&&zy(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 Hy(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=Ly(t[o]);if(n&&n.type!==`idle`){Ry(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 Uy(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Wy(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await jy(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 Py({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}=Vy(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=Uy(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Hy(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Fy;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 Gy({directory:e,sessionID:t,store:n,statusBeforePull:r,statusObservedAtBeforePull:i,hasMessages:a,isTailPage:o=!0,isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m}){if(!o||!a||!r||r.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:Wy(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Ky(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function qy(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 Jy(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 Yy(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(pc(e))??Promise.resolve(),r.get(hc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=pc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=hc(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??Pg)();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 Xy=new Map;function Zy(e,t){let n=Xy.get(e);if(n)return n;let r=t().finally(()=>{Xy.get(e)===r&&Xy.delete(e)});return Xy.set(e,r),r}var Qy=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function $y(e){return Zy(Qy(e),e.request)}function eb(e,t){return`${e}\n${t}`}var tb=new Map;function nb(e){return tb.get(e)}async function rb(e){return $y({runtimeKey:eb(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 tb.set(r.id,i),{info:vp(r),parts:i}}})}function ib(e,t){let n=e.info;return n.role===t||n.clientRole===t}function ab(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!ib(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 ob(e){if(e.complete){let t=e.records.some(e=>ib(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=ab(e.records);if(t.length===0){let t=e.records.some(e=>ib(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=>ib(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function sb(e){return e.trim()}function cb(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??u)(),r=e.generation??t.generation??(t.probe?.getGeneration??f)();return{directory:sb(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function q(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function lb(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:hl,liveRevision:0}}function ub(e,t){if(!e||e.pages.length===0)return lb(t);let n=ig(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function db(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function fb(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function pb(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=db(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=db(e.messagesByID[t]);a===void 0||a<=n||fb(e.partsByMessageID[t])||i.push(t)}return i}function mb(e={}){let t=e.client??R,n=e.cacheBudget??Jg({client:t,activeRegistry:e.activeRegistry??Ug()}),r=n.activeRegistry,i=new Map,a=new Map,o=new Map,s=new Map,c=new Map,p=e.durableStore?Yy(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Ky),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=q(t);if(x.has(n))return;let r=ie(e);!Pl(r)&&!b.has(n)||(x.add(n),sy(_v({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=cb(n,e);return Dg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},D=t=>{let n=cb(t,e);return hg({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},O=t=>{let n=cb(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=cb(n,{...e,transport:void 0,generation:void 0,probe:r}),o=q(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=Tg({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=q(cb(t,e)),r=a.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},ee=n=>{let r=q(cb(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=cb(t,e),r=q(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=ub(i,n.sessionID),s=ne(r,o);return a.cachedFrom=i,a.hasTranscriptCache=!0,s},ae=(e,t)=>`${q(e)}\n${t}`,M=(e,t)=>{let n=q(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=`${q(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=cb({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},de=(e,t,n)=>{p&&d()&&p.persistSettled(Ky(e),t,n??[])},fe=(e,t,n,r)=>{if(!p||w>0||!d()||!r.applied||!r.changed)return;let i=Ky(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=Jy(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??vh()};return qy(r?.fresh?await t.fetchQuery({...yg(o,i,n.transport,a,n.generation),staleTime:0}):await bg(o,i,t,n.transport,a,n.generation))},N=(e,t)=>{for(let n of t)bu(`${e.directory}\n${e.sessionID}\n${n}`,()=>I.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},me=(e,t)=>{let r=q(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),I.getTranscript(e);I.apply(e,{type:`http-page`,purpose:`initial`,page:i}),oh(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(!Ol(I.getParts(e,i),I.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),I.getTranscript(e)}catch(n){if(n instanceof ag||!ue(t))return m.delete(r),I.getTranscript(e);throw m.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),sy(_v({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:I.getRequestState?.(e),hydration:I.getHydrationState?.(e),error:n})),n}finally{h.delete(r)}})();return h.set(r,o),o},P=(e,t)=>{let r=q(t),i=h.get(r);if(i)return i;let a=l(),o=(async()=>{let i=Date.now(),o=I.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),I.getTranscript(e);let s=I.getTranscript(e).liveRevision;return s<o||fu(t.sessionID,t.directory)?(m.delete(r),I.getTranscript(e)):(I.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}),oh(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),m.delete(r),n.noteScopeObserved(O(e)),k(e),I.getTranscript(e))}catch(n){return m.delete(r),n instanceof ag||!ue(t)||sy(_v({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:I.getRequestState?.(e),hydration:I.getHydrationState?.(e),error:n})),I.getTranscript(e)}finally{h.delete(r)}})();return h.set(r,o),o},F=t=>{let n=E(t);return!n||n.pages.length===0||y.has(q(cb(t,e)))?!0:kh(n).kind===`unknown`},I={getTranscript(e){return ie(e)},getPagination(t){let n=cb(t,e),r=q(n),i=I.getTranscript(t);return re(r,Rl(n.sessionID,i.boundary))},getRequestState(t){let n=cb(t,e),r=m.get(q(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(q(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=cb(t,e),r=q(n),i=I.getTranscript(t);Pl(i)&&b.set(r,!0);let a=b.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Fl({p0Satisfied:a,prependActive:S.has(r),materializeActive:le(n),earlierHistoryLoaded:jl(i)>1})}},hasSession(e){return E(e)!==void 0},getMessage(t,n){let r=q(cb(t,e)),i=T(r),a=I.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=q(cb(t,e)),i=T(r),a=I.getTranscript(t).partsByMessageID[n]??hb,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=cb(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}}:!I.getMessage(t,n)||v.get(q(r))?.has(n)||Dl(I.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=cb(t,e),i=l(),a=ae(r,n),o=cy(()=>I.getTranscript(t)),s=e=>{try{let t=cy(e);if(!o||!t)return;ly({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(!I.getMessage(t,n))return g.set(a,{status:`idle`}),I.getTranscript(t);if(!Dl(I.getParts(t,n))&&!v.get(q(r))?.has(n))return g.set(a,{status:`ready`}),I.getTranscript(t);g.set(a,{status:`loading`}),j(t);try{let o=await rb({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 B.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return!ue(r)||l()!==i?(g.delete(a),I.getTranscript(t)):(I.apply(t,{type:`materialize-snapshots`,records:[{info:o.info,parts:o.parts??[]}]}),Dl(I.getParts(t,n))?g.set(a,{status:`error`,error:`session.message failed: slim parts remain`}):g.set(a,{status:`ready`}),j(t),I.getTranscript(t))}catch(e){if(!ue(r)||l()!==i)return g.delete(a),I.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return g.set(a,{status:`error`,error:n}),j(t),I.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=cb(r,e),o=D(r),s=(()=>{switch(i.type){case`http-page`:{let e=Eg(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(q(a)),e.result.changed&&(j(r),k(r)),e.result}case`sse-event`:{let e=Eg(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&y.delete(q(a)),e.result.changed&&j(r),e.result}case`sse-event-batch`:{let e=Eg(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&y.delete(q(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=Eg(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}),Eg(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=Eg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&j(r),n.result}case`reset`:{if(S.delete(q(a)),v.delete(q(a)),y.delete(q(a)),n.purgeSession(O(r)),!i.page)return j(r),{applied:!0,changed:!0};let e=Eg(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 gb(t,o,a.sessionID,i,()=>j(r));case`remove-message`:{let e=Eg(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&&(my({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:()=>I.getTranscript(r),request:()=>I.getRequestState?.(r),hydration:()=>I.getHydrationState?.(r),error:s.error,changed:s.changed}),C(r,a)),s},subscribe(t,i){let o=q(cb(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=cb(t,e),o=l(),s=q(a);if(p&&await p.wait(Ky(a)),l()!==o)return I.getTranscript(t);if(E(t)===void 0&&e.durableStore&&d())try{let n=await e.durableStore.readSession(Ky(a));if(ue(a)&&l()===o&&E(t)===void 0&&n.records.length>0){w+=1;try{I.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)Ol(t.parts,t.info)&&e.add(t.info.id);e.size>0&&v.set(s,e),y.add(s)}finally{--w}}}catch(e){sy(_v({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 I.getTranscript(t);if(F(t)&&E(t)!==void 0){let e=Date.now(),n=await me(t,a);return sy(_v({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),n}let u=E(t);if(u&&u.pages.length>0&&!F(t)&&e.fetcher&&!r.isRetained(O(t))){let e=Date.now(),n=await P(t,a);return sy(_v({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:I.getRequestState?.(t),hydration:I.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 I.getTranscript(t);throw sy(_v({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:I.getRequestState?.(t),hydration:I.getHydrationState?.(t),error:e})),e}if(l()!==o)return i.get(s)===f&&(n.purgeSession(O(t)),c.delete(s),j(t)),I.getTranscript(t);m.delete(s),g||oh(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(O(t)),k(t);let _=I.getTranscript(t);return sy(_v({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:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),_},async fetchPreviousPage(t){if(F(t)&&await I.ensureInitial(t),kh(E(t)).kind!==`has-more`)return I.getTranscript(t);let n=cb(t,e),r=q(n);S.add(r),j(t);let i=Date.now();try{await A(t).fetchPreviousPage(),k(t);let e=I.getTranscript(t);return sy(_v({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:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),e}catch(e){throw sy(_v({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=cb(t,e);return i.get(q(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=cb(t,e),i=l(),a=cy(()=>I.getTranscript(t)),o=I.getTranscript(t).liveRevision,s=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??vh(),signal:new AbortController().signal});if(l()!==i)return I.getTranscript(t);let c=I.getTranscript(t).liveRevision;if(I.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=pb(I.getTranscript(t),s);for(let i of n)I.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let u=I.getTranscript(t);n.noteScopeObserved(O(t));try{let e=cy(()=>u);a&&e&&ly({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=cy(()=>I.getTranscript(t)),a=O(t);return p&&await p.clearSession(Ky(cb(t,e))),n.destructiveReset(a,async()=>{let n=cb(t,e),a=q(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 I.ensureInitial(t);try{let e=cy(()=>s);r&&e&&ly({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=q(cb(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 I}var hb=Object.freeze([]);function gb(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=Eg(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var _b=`/api/openchamber/transcript-cache`,vb=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),yb=e=>typeof e==`object`&&!!e&&!Array.isArray(e),bb=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},xb=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},Sb=e=>{if(!yb(e))throw Error(`Invalid transcript cache scope`);return{transport:bb(e.transport,`scope`),generation:xb(e.generation,`scope`),directory:bb(e.directory,`scope`),sessionID:bb(e.sessionID,`scope`)}},Cb=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},wb=e=>{if(!yb(e)||!yb(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!yb(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:Sb(e.scope),messageID:bb(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>Cb(e,`part completeness`)),completeness:Cb(e.completeness,`completeness`),contentHash:bb(e.contentHash,`content hash`),byteSize:xb(e.byteSize,`byte size`),lastAccessedAt:xb(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:xb(e.sortKey.created,`sort key`),messageID:bb(e.sortKey.messageID,`sort key`)}}},Tb=(e,t)=>{if(!yb(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(wb);return{scope:e.scope===void 0?Oc(t):Sb(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},Eb=e=>{if(!yb(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:wb(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!vb.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:wb(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Db=e=>{if(!yb(e))throw Error(`Invalid transcript cache evict`);return{evicted:xb(e.evicted,`evict`),freedBytes:xb(e.freedBytes,`evict`),remainingBytes:xb(e.remainingBytes,`evict`)}},Ob=e=>({scope:Oc(e),records:[],byteSize:0}),kb=(e,t)=>yb(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Ab=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`)}},jb=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 Ab(r)};let i=await Ab(r).catch(()=>void 0);throw Error(kb(i,`Transcript cache request failed (${r.status})`))},Mb=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Nb=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Pb(e={}){let t=e.fetch??_;return{async readSession(e){let n=await jb(t,`${_b}/session`,{method:`GET`,query:Mb(e)});return n.kind===`disabled`||n.kind===`not-found`?Ob(e):Tb(n.payload,e)},async readMessage(e,n){let r=await jb(t,`${_b}/message`,{method:`GET`,query:{...Mb(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!yb(r.payload))throw Error(`Invalid transcript cache record`);return wb(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await jb(t,`${_b}/message`,Nb(`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 Eb(i.payload)},async removeMessage(e,n){let r=await jb(t,`${_b}/message`,Nb(`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 jb(t,`${_b}/session`,Nb(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await jb(t,`${_b}/generation`,Nb(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await jb(t,`${_b}/evict`,Nb(`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 Db(r.payload)},async clearAll(){let e=await jb(t,`${_b}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Fb=`openchamber-transcript-durable`,Ib=1,Lb=`transcriptIndex`,Rb=`transcriptContent`,zb=class extends Error{code;constructor(e){super(e),this.code=e}},Bb=e=>({id:mc(e.scope,e.messageID),scope:Oc(e.scope),scopeKey:pc(e.scope),generationKey:hc(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}),Vb=(e,t)=>({scope:Oc(e.scope),messageID:e.messageID,info:Dc(t.info),parts:Dc(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}}),Hb=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Vb(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Ub=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},Wb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Gb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new zb(`database-unavailable`));return}let r=indexedDB.open(e,Ib),i=!1,a=()=>{i||(i=!0,n(new zb(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Lb)){let t=e.createObjectStore(Lb,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Rb)||e.createObjectStore(Rb,{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}),Kb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new zb(`database-unavailable`)),r.onblocked=()=>void 0}),qb=(e=Fb)=>({transaction:async t=>{let n=await Gb(e),r=n.transaction([Lb,Rb],`readwrite`),i=r.objectStore(Lb),a=r.objectStore(Rb),o=e=>Wb(e,r),s=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{console.error(`Transcript durable IndexedDB transaction error`,r.error)}}),c;try{let e=await t({getIndex:e=>o(i.get(e)),getAllIndexes:()=>o(i.getAll()),getIndexesByScope:e=>o(i.index(`scopeKey`).getAll(e)),getIndexesByGeneration:e=>o(i.index(`generationKey`).getAll(e)),putIndex:async e=>{await o(i.put(e))},deleteIndex:async e=>{await o(i.delete(e))},getContent:e=>o(a.get(e)),putContent:async e=>{await o(a.put(e))},deleteContent:async e=>{await o(a.delete(e))},clearAll:async()=>{await o(i.clear()),await o(a.clear())}});return await s,e}catch(e){c=e;try{r.abort()}catch{}try{await s}catch(e){c===void 0&&(c=e)}throw c}finally{n.close()}},destroy:()=>Kb(e)});function Jb(e,t={}){let n=kc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Bb(t)),Ac(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(pc(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Vb(t,r);a.lastAccessedAt=n(),await e.putIndex(Bb(a)),i.push(a)}return jc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Hb(e,mc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=Mc({info:i,incomingCompleteness:bc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=Dc(a.slice()),c=bc(s),l=await Cc(i,s),u=mc(t,i.id);return e.transaction(async e=>{let a=await Hb(e,u),o=Mc({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:Ac(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:Oc(t),messageID:i.id,info:Dc(i),parts:s,partCompleteness:s.map(yc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:_c(i)};return await e.putIndex(Bb(d)),await e.putContent({id:u,info:Dc(i),parts:s}),{status:`written`,record:Ac(d)}})},async removeMessage(t,n){await e.transaction(e=>Ub(e,mc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(pc(t));for(let t of n)await Ub(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(hc(t));for(let t of n)await Ub(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(pc)),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?gc(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Ub(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 Yb(e={}){return Jb(e.driver??qb(e.databaseName),e)}function Xb(e={}){let t=e.isDesktopShell??ae,n=e.isDesktopLocalOriginActive??de,r=e.isVSCodeRuntime??Se,i=e.isCapacitorApp??Ue;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Zb=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Qb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Pb)(),t),i=()=>(n??=(e.createIndexedDBStore??Yb)(),n),a=()=>Xb(e)===`http`?r():i();return{readSession:e=>a().readSession(e),readMessage:(e,t)=>a().readMessage(e,t),upsertSettled:(e,t,n)=>a().upsertSettled(e,t,n),removeMessage:(e,t)=>a().removeMessage(e,t),clearSession:e=>a().clearSession(e),clearGeneration:e=>Zb([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function $b(e={}){await Qb(e).clearAll()}var ex=(e,t)=>e<t?-1:+(e>t);function tx(e){return e.filter(e=>!!e?.id).sort((e,t)=>ex(e.id,t.id))}async function nx(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await u_({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),i=r.records.map(e=>({info:vp(e.info),parts:tx(e.parts??[])}));if(!e.before&&!r.complete&&ab(i).length>0){let t=B.getScopedSdkClient(e.directory);i=(await ob({records:i,complete:r.complete,requestMessage:async n=>{let r=await rb({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:tx(r.parts??[])}}})).records.map(e=>({info:e.info,parts:tx(e.parts??[])}))}return{records:i,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function rx(e){let t=e.client??R,n=Ug(),r=Jg({client:t,activeRegistry:n}),i=mb({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:u,getGeneration:f},fetcher:e=>nx({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:vh(),historyLimit:yh(),durableStore:e.durableStore??Qb()}),a=Dy({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 Wy(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return Ou(i),Vu(a),{repository:i,destroy:()=>{a.cancelAll(`dispose`),Vu(null),i.destroy(),ku()}}}function ix(e){return Au().apply(G(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 ax=new Map;function ox(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function sx(e,t,n,r={}){let i=r.getTransportIdentity??u,a=r.getGeneration??f,o=i(),s=a(),c=ox(e,t,o,s),l=()=>i()===o&&a()===s,d=ax.get(c)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=d.catch(()=>void 0).then(()=>m);ax.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(),ax.get(c)===h&&ax.delete(c)}}var cx=new Set,lx=new Set,ux=new Set,dx=new Set,fx={onDeleteRequest(e){return cx.add(e),()=>{cx.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||cx.forEach(t=>t(e))},onCreateRequest(e){return lx.add(e),()=>{lx.delete(e)}},requestCreate(e){let t=e??{};lx.forEach(e=>e(t))},onDirectoryRequest(e){return ux.add(e),()=>{ux.delete(e)}},requestDirectoryDialog(){ux.forEach(e=>e())},onGitRefreshHint(e){return dx.add(e),()=>{dx.delete(e)}},requestGitRefresh(e){e.directory.trim()&&dx.forEach(t=>t(e))}},px=50,mx=e=>{let t=Object.keys(e);if(t.length<=px)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-px).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},hx=De()(Ae(Oe((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:mx(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:Ye(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),gx=new Set([`todowrite`,`todoread`]),_x=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),vx=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),yx=(e,t)=>{hx.getState().setSessionTodos(e,t)},bx=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},xx=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Sx=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},Cx=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Sx(n);e&&t.push(e)}return t},wx=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Cx(t);if(t&&typeof t==`object`)return Cx(t.todos)}catch{}return[]},Tx=e=>{if(!gx.has(bx(e)))return[];let t=xx(e);if(t&&_x.has(t))return[];let n=e.state,r=Cx(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Cx(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Cx(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?wx(i):[]};function Ex(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=Tx(r[e]);if(t.length>0)return t}}return[]}function Dx(e){if(!e.sessionID||e.isStale?.()||vx(e.store.getState().todo,e.sessionID))return!1;let t=Ex(e.transcript);return t.length===0||e.isStale?.()||vx(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Ox(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??U()?.getTranscript(G(e.directory,e.sessionID));return t?Dx({sessionID:e.sessionID,store:e.store,transcript:t,persist:yx,isStale:e.isStale}):!1}var kx=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>MC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>jC,SESSION_DELETE_UNDO_MS:()=>nC,abortBusySessionForMessageEdit:()=>KC,abortCurrentOperation:()=>LC,archiveSession:()=>fC,beginOptimisticSend:()=>SC,cancelScheduledSessionDeletes:()=>dC,classifySendFailure:()=>TS,combinedSendConfirmationOptions:()=>NC,commitMessageEdit:()=>JC,createSession:()=>XS,deleteSession:()=>lC,dirStoreForDirectory:()=>dS,dismissOpenQuestionsForSession:()=>VC,ensureSentUserMessagePresence:()=>IC,fetchMessagesForSession:()=>ew,fetchRecentSendConfirmationRecords:()=>kC,forkSession:()=>QC,getSendFailureKind:()=>CS,isQuestionRequestNotFoundError:()=>qS,isQuestionSubmissionClaimedError:()=>KS,materializeConfirmedSendRecords:()=>AC,mirrorSessionIntoLiveStores:()=>vS,optimisticInsertUserMessage:()=>DC,optimisticSend:()=>EC,patchSessionMetadata:()=>ZS,refetchSessionMessages:()=>XC,rejectQuestion:()=>BC,releaseUnconfirmedQueueSend:()=>cS,requestSessionSmartTitle:()=>hC,resolveForkMessageId:()=>Kx,respondToPermission:()=>RC,respondToQuestion:()=>zC,revertToMessage:()=>HC,rollbackOptimisticSend:()=>wC,scheduleSessionDeletes:()=>uC,setActionRefs:()=>oS,setOptimisticRefs:()=>sS,settleOptimisticSend:()=>TC,shareSession:()=>gC,shouldSuppressForkCopyEvent:()=>Jx,stageMessageEdit:()=>WC,trackForkCopySessionCreated:()=>Rx,unarchiveSession:()=>pC,unrevertSession:()=>ZC,unshareSession:()=>_C,updateSessionTitle:()=>mC,waitForConnectionOrThrow:()=>kS,waitForSessionIdleForMessageEdit:()=>qC}),Ax=2,jx=150,Mx=new Set([`patch`,`step-start`,`step-finish`]),Nx=3,Px=150,Fx=null,Ix=new Map,Lx=3e4;function Rx(e,t){let n=t?.id;!Fx||Fx.runtimeKey!==m()||Fx.directory!==e||!n||t?.title!==Fx.expectedTargetTitle||n===Fx.sourceSessionID||Fx.targetSessionID||(Fx.targetSessionID=n)}function zx(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function Bx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function Vx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Hx(e){return e?.type===`busy`||e?.type===`retry`}function Ux(e){for(let t=e.length-1;t>=0;--t)if(e[t]?.role===`user`)return t;return-1}function Wx(e){let t=e.at(-1);return t?.role===`assistant`&&t.time.completed==null}function Gx(e,t){return Hx(e)||e==null&&Wx(t)}function Kx(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(!Gx(n,t))return;let r=Ux(t);if(r!==-1)return t[r+1]?.id}async function qx(e,t){let n=Kp(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return B.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function Jx(e,t,n){if(Fx&&Fx.runtimeKey===m()&&Fx.directory===e&&t&&t===Fx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${m()}:${e}:${t}`,i=Ix.get(r);return i?i.expiresAt<=Date.now()?(Ix.delete(r),!1):n<=i.messageID:!1}var Yx=null,Xx=null,Zx=()=>``,Qx=new Map,$x=null,eS=null,tS=null,nS=e=>new Promise(t=>setTimeout(t,e));function rS(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 iS(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${rS(e.error)}`);throw n!==void 0&&(r.status=n),typeof e.error==`object`&&e.error!==null&&`code`in e.error&&typeof e.error.code==`string`&&(r.code=e.error.code),r}function aS(e,t){let n=iS(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function oS(e,t,n){if(Yx=e,Xx=t,Zx=n,Qx.size>0){let e=[...Qx.values()];Qx.clear(),queueMicrotask(()=>{for(let t of e)ew(t.sessionID,t.directory)})}}function sS(e,t,n){$x=e,eS=t,tS=n??null}function cS(e){let t=e.directory??null;eS?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function lS(){if(!Yx)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Yx}function uS(){if(!Xx)throw Error(`Child stores not initialized`);let e=Zx();if(!e)throw Error(`No current directory`);return Xx.ensureChild(e)}function dS(e,t){if(!Xx)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Xx.ensureChild(e,t)}function fS(e,t){let n=t??FS(e);return n?{store:dS(n),directory:n}:{store:uS(),directory:yS()}}function pS(e,t){let{store:n,directory:r}=fS(e,t??void 0),i=r??yS()??``;return{repository:U()??W(i,n),directory:i,store:n}}function mS(e,t){let{repository:n,directory:r,store:i}=pS(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(G(r,e))}}function hS(e,t){return nd(mS(e,t).data)}function gS(e,t){return mS(e,t).data.messageOrder.length}function _S(e,t){let n=Xx;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]=gD(e,n[r]),t.setState({session:i}),!0}return!1}function vS(e,t){t&&_S(e,t)||_S(e)}function yS(){return Zx()||void 0}function bS(){let{hasEverConnected:e,lastDisconnectReason:t}=$f.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function xS(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 SS=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 CS(e){return e instanceof SS?e.kind:null}function wS(e){let t=xS(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 TS(e,t){return t?wS(e)||xS(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var ES=2e3,DS=5e3,OS=3e4;async function kS(){let e=eh();e&&$m(`send_stream_stale`);let t=Date.now()+(e?DS:ES);for(;Date.now()<t;){if($f.getState().isConnected&&!eh()||n()&&!eh())return;let e=t-Date.now();if(e<=0)break;if(await $f.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!eh())return;let r=Math.min(100,t-Date.now());r>0&&await new Promise(e=>setTimeout(e,r))}throw bS()}function AS(e){return new Promise((t,n)=>{let r=setTimeout(()=>{$m(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},OS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function jS(e){let t=X.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function MS(e){e&&X.getState().upsertSession(e)}function NS(e,t){let n=gp(t),r=[...e.getState().session],i=bs.search(r,n.id,e=>e.id);if(i.found){let t=gD(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 PS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=jS(e);if(i)return NS(t,i);try{return NS(t,await B.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 FS(e){return IS(e)||$.getState().getDirectoryForSession(e)||yS()}function IS(e){let t=Xx;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=U()?.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 LS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):lS()}function RS(e){Br.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&&Br.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var zS=()=>new Map(Array.from(Hd(),([e,t])=>[e,t.title||e]));function BS(e){return!(e.type!==`file`||um(e))}function VS(e){return BS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function HS(e){return e.some(VS)}async function US(e){let t=[...e.parts];if(!HS(t))return t;let n=f(),r=e.directory??``;try{await Lu(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}=pS(e.sessionID,r);if(t=[...i.getParts(G(a,e.sessionID),e.messageID)],HS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function WS(e){if(HS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await Fm(e.parts,{sessionTitles:zS(),directory:e.directory}),n=Br.getState(),r=n.getDraft(e.key);return{payload:t,commit:await Bm({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function GS(e,t,n){let r=Xx;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 KS(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.status===409&&t.code===`question_submission_claimed`}function qS(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 JS(e,t){let n=Xx;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 YS(e,t,n){let r=GS(e,t,n);return r?B.getScopedSdkClient(r):LS(t)}async function XS(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??yS()),a=i.directory??null;return a&&Pd(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),X.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function ZS(e,t,n){let r=t??FS(e),i=n(Kp(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);X.getState().upsertSession(a);let o=a.directory??r;return o&&Pd(a.id,o),a}async function QS(e,t){let n;try{n=await B.getSession(e,t??FS(e))}catch{return}if(!Xp(n))return;let r=Yp(n);if(r)try{await ZS(r,t??FS(r),t=>$p(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 $S(e,t){if(!Xx)return[];let n=[],r=new Set,i=[];if(t){let e=Xx.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Xx.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 eC(e){if(Xx)for(let t of e){let e=Xx.children.get(t.directory);e&&e.setState({session:t.sessions})}}function tC(e){$.getState().setWorktreeMetadata(e,null)}var nC=1e4,rC=new Map,iC=0;function aC(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function oC(e){X.getState().clearSessionsPendingDeletion([e.sessionId]),eC(e.listSnapshots),MS(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function sC(e,t){let n=t??FS(e);X.getState().markSessionsPendingDeletion([e]);let r=$S(e,n),i=jS(e);X.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 cC(e,t){try{if(await QS(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return $S(e,t),X.getState().removeSessions([e]),tC(e),X.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&($S(e,t),X.getState().removeSessions([e]),tC(e),X.getState().clearSessionsPendingDeletion([e]),!0)}}async function lC(e,t){let n=sC(e);return await cC(e,n.directory)?!0:(oC(n),!1)}function uC(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>sC(e)),i=`session-delete-${Date.now()}-${iC+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=rC.get(i);if(!e)return;rC.delete(i);let t=[],n=[];for(let r of e.entries)await cC(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),oC(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return rC.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function dC(e){if(!e)return!1;let t=rC.get(e);if(!t)return!1;clearTimeout(t.timer),rC.delete(e);for(let e of[...t.entries].reverse())oC(e);return!0}async function fC(e){let t=FS(e),n=$S(e,t),r=jS(e),i=Date.now();X.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await QS(e,t);let n=await B.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return X.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),eC(n),MS(r),!1}}async function pC(e){let t=FS(e),n=jS(e),r=n?aC(n):null;if(r&&(X.getState().upsertSession(r),t&&Xx)){let e=Xx.children.get(t);e&&NS(e,r)}try{let n=await B.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=aC(n);if(X.getState().upsertSession(r),t&&Xx){let e=Xx.children.get(t);e?NS(e,r):vS(r,t)}else vS(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(X.getState().upsertSession(n),n.time?.archived&&$S(e,t)),!1}}async function mC(e,t){let n=FS(e),r=jS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?ap(r):0,c=await B.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);X.getState().upsertSession(c),vS(c,n)}async function hC(e){let t=FS(e),n=jS(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 B.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);X.getState().upsertSession(s),vS(s,t)}async function gC(e){let t=FS(e),n=gp(aS(await lS().session.share({sessionID:e,directory:t}),`session.share`));return X.getState().upsertSession(n),_S(n,t),n}async function _C(e){let t=FS(e),n=gp(aS(await lS().session.unshare({sessionID:e,directory:t}),`session.unshare`));return X.getState().upsertSession(n),_S(n,t),n}function vC(e){let t=Xx,n=e??Zx();if(!t||!n)return{store:e?dS(e):uS(),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 yC(){return{identity:u(),generation:f()}}function bC(e,t){return e.isCurrent()&&u()===t.identity&&f()===t.generation}function xC(e,t){if(!bC(e,t))throw Error(`Send target changed before transport dispatch`)}function SC(e){if(!$x||!eS)throw new SS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??yS()??null,n=vC(t),r=yC();xC(n,r),e.beforeOptimisticInsert?.(),xC(n,r);let i=e.messageID??he(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),gm(e.sessionId),DC({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 SS?e:new SS(CS(e)??TS(e,!1),e)}}function CC(e){if(!bC(e.capture,e.transport)||!eS)return;eS({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 wC(e){CC(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function TC(e){if(!$x||!eS)throw new SS(`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 kS(),xC(n,r),s=!0,await AS(e.send(i)),!bC(n,r))throw new SS(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=CS(c)??TS(c,s),u=c instanceof SS?c:new SS(l,c,i);if(!bC(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await kC(a,i,o):null;if(d&&bC(n,r)){AC(n.store,a,i,d,{directory:o??void 0}),tS?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||CC(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function EC(e){await TC({ticket:e.ticket??SC({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:e.directory,files:e.files,parts:e.parts,messageID:e.messageID,onOptimisticInsert:e.onOptimisticInsert,onMessageID:e.onMessageID,beforeOptimisticInsert:e.beforeOptimisticInsert}),preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:e.onSendConfirmed,send:e.send})}function DC(e){if(!$x)return!1;let t=e.directory??yS(),n=t?dS(t):uS(),r=t??yS()??``;if(PC(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let i=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:he(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:he(`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:he(`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=cy(()=>mS(e.sessionId,t).data);$x({sessionID:e.sessionId,directory:t,message:o,parts:i});let c=cy(()=>mS(e.sessionId,t).data);try{s&&c&&ly({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 OC(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function kC(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??Ax,c=r?.retryDelayMs??jx;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!OC(r?.isCurrent)||a>0&&(await nS(c),i?.signal.aborted||!OC(r?.isCurrent)))return null;try{let a=await lS().session.messages({sessionID:e,directory:n??void 0,limit:Sh(),...i?{signal:i.signal}:{}});if(!OC(r?.isCurrent))return null;let o=(iS(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 AC(e,t,n,r,i){if(!r.length)return;let a=i?.directory??FS(t)??Zx(),o=G(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:vp(e.info),parts:e.parts??[]})),skipPartTypes:Mx,merge:i?.gapFillOnly===!0?sc:lc({purpose:`recovery`})};Mu(o,s)||W(a,e).apply(o,s)}var jC=2e3,MC={attempts:12,retryDelayMs:500},NC={presenceGraceMs:jC,recovery:{...MC}};function PC(e,t,n,r){let i=r??FS(t)??Zx()??``,a=U()??W(i,e),o=G(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function FC(e,t,n,r){let i=r?.directory??FS(t)??Zx()??``;if(PC(e,t,n,i))return Promise.resolve(!0);if(!OC(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=U()??W(i,e),f=G(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!OC(r?.isCurrent)){l(!1);return}PC(e,t,n,i)&&l(!0)}),PC(e,t,n,i)&&l(!0)})}async function IC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await FC(t,n,r,{timeoutMs:e.graceMs??NC.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!OC(a))return`cancelled`;let o=await kC(n,r,i,{...NC.recovery,isCurrent:a});return o?OC(a)?(AC(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:OC(a)?`missing`:`cancelled`}async function LC(e){let{store:t,directory:n}=fS(e),r=n?{state:`bound`,transportIdentity:u(),directory:n,sessionID:e}:null,i=r?$.getState().beginQueueAbortBlock(r):null;try{if(aS(await lS().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),nt(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>OH);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function RC(e,t,n){await kS();let r=GS(`permission`,e,t)||FS(e)||yS();if(aS(await YS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function zC(e,t,n,r){await kS();let i=r||GS(`question`,e,t)||FS(e)||yS();try{let r=n.length===0?[]:Array.isArray(n[0])?n:[n];if(aS(await YS(`question`,e,t).question.reply({requestID:t,answers:r,...i?{directory:i}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw qS(n)&&JS(e,t),n}}async function BC(e,t,n){await kS();let r=n||GS(`question`,e,t)||FS(e)||yS();try{if(aS(await YS(`question`,e,t).question.reject({requestID:t,...r?{directory:r}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw qS(n)&&JS(e,t),n}}async function VC(e){if(!e)return!1;let t=Xx;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=am(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)JS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await BC(e,t)}catch(e){if(qS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function HC(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 sx(e,r??(()=>{try{return fS(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:a,directory:s}=fS(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 lS().session.abort({sessionID:e,directory:s})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let l=hS(e,s).find(e=>e.id===t),d=hS(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}=pS(e,s),m=[...f.getParts(G(p,e),t)],h=i===void 0?o?ge({transportIdentity:u()},e):null:i,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await US({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await Fm(m,{sessionTitles:zS(),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=Br.getState(),r=await Bm({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 Hm({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 B.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 Hm({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&&fx.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 Hm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(a.setState({session:r}),h&&v&&_!==void 0&&await Hm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function UC(e,t,n,r){let i=r??FS(t)??Zx(),a=G(i,t),o=cy(()=>mS(t,i).data),s=[...ju(t)];s.some(e=>e.directory===i&&e.sessionID===t)||s.push(a);let c=!1;for(let e of s)Mu(e,{type:`remove-message`,messageID:n})!=null&&(c=!0);c||W(i,e).apply(a,{type:`remove-message`,messageID:n});let l=cy(()=>mS(t,i).data);try{o&&l&&ly({trigger:`user-delete`,sessionID:t,directory:i,transport:u(),generation:f(),before:o,after:l})}catch{}}async function WC(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=fS(e,o).directory}else{s=fS(e,o).directory;let{data:n}=mS(e,s),r=nd(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??ge({transportIdentity:u()},e),{commit:l}=await WS({key:c,parts:await US({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 Hm({key:c,restoredRevision:d,previous:f})).status})}}function GC(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 KC(e,t){let n=t?.directory,{store:r,directory:i}=fS(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await lS().session.abort({sessionID:e,directory:i})}catch{}}async function qC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=fS(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 JC(e,t,n){let r=n?.directory,i=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:a,directory:o}=fS(e,r),s=cy(()=>mS(e,r).data);try{await KC(e,{directory:r}),await qC(e,{directory:r});let n=new Set((await YC(e,r)).map(e=>e.id)),s=GC(t,hS(e,r),n,{preserveMessageId:i});for(let t of[...s].reverse())await B.deleteSessionMessage(e,t.id,o),UC(a,e,t.id,o)}finally{try{let t=cy(()=>mS(e,r).data);s&&t&&ly({trigger:`user-edit`,sessionID:e,directory:o,transport:u(),generation:f(),before:s,after:t})}catch{}}}async function YC(e,t){let{directory:n}=fS(e,t);return(iS(await lS().session.messages({sessionID:e,directory:n,limit:xh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>vp(e.info))}async function XC(e,t){let{store:n,directory:r}=fS(e,t),i=cy(()=>mS(e,t).data),a=(iS(await lS().session.messages({sessionID:e,directory:r,limit:xh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(a.length===0){try{let n=cy(()=>mS(e,t).data);i&&n&&ly({trigger:`materialize`,sessionID:e,directory:r,transport:u(),generation:f(),purpose:`refetch`,before:i,after:n})}catch{}return[]}let o=a.map(e=>({info:vp(e.info),parts:e.parts??[]})),s=G(r??Zx(),e);Mu(s,{type:`materialize-snapshots`,records:o,skipPartTypes:Mx})||W(r??Zx(),n).apply(s,{type:`materialize-snapshots`,records:o,skipPartTypes:Mx});try{let n=cy(()=>mS(e,t).data);i&&n&&ly({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 ZC(e,t){return sx(e,t??(()=>{try{return fS(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=fS(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=gS(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await lS().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await lS().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=aS(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<Nx;r+=1){if(r>0&&(await nS(Px),!n())||(await XC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(gS(e,i)>o)return}if(gS(e,i)<=o){let n=i??Zx(),a=U()??W(n,r),o=G(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await XC(e,t)}})}async function QC(e,t,n,r){let i=m(),{store:a,directory:o}=fS(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await PS(e,a,o);Pd(e,o);let c=a.getState(),l=c.session_status[e],u=hS(e,o);l?.type,u.length;let d=Kx(n,u,l);if(!n&&Gx(l,u)&&Ux(u)===-1&&(await XC(e),c=a.getState(),l=c.session_status[e],u=hS(e,o),d=Kx(void 0,u,l)),!n&&Gx(l,u)&&Ux(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:gS(e,o)}),Error(`Fork source user message is unavailable`);c.session_status[e]?.type;let{repository:f,data:p}=mS(e,o),h=(n?p.messagesByID[n]??u.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...f.getParts(G(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!um(e)).map(e=>e.text||e.content||``).join(`
402
402
  `).trim();let v=g.filter(e=>e.type===`file`&&!um(e));Fx={operationId:t,runtimeKey:i,directory:o,sourceSessionID:e,expectedTargetTitle:zx(s.title)},await Bx(t,`copying`);let y;try{if(y=await B.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}),Fx?.operationId===t&&(Fx=null),!1;let n=[...a.getState().session],r=bs.search(n,y.id,e=>e.id);r.found||(n.splice(r.index,0,y),a.setState({session:n})),Vx(t,y.id);let s=$.getState().currentSessionId;(s===e||s===y.id)&&$.getState().setCurrentSession(y.id,o,{skipMessageFetch:!0}),await Bx(t,`opening`);try{y=await qx(y,o)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw Fx?.operationId===t&&(Fx=null),e}try{let e=G(o,y.id),r=U();r&&typeof r.destructiveReset==`function`?await r.destructiveReset(e):Mu(e,{type:`reset`}),await Bx(t,`loading`),y.id,$.getState().currentSessionId,y.id;let i=U()??W(o,a),s=G(o,y.id),c=i.getRequestState?.(s);(!(i.hasSession?.(s)??!1)||c?.status===`error`)&&await ew(y.id,o);let l=hS(y.id,o).at(-1)?.id;l&&Ix.set(`${m()}:${o}:${y.id}`,{messageID:l,expiresAt:Date.now()+Lx});let u=$.getState().currentSessionId===y.id;u&&h&&_&&Br.setState({pendingInputText:_,pendingInputMode:`replace`}),u&&h&&n&&RS(v)}finally{Fx?.operationId===t&&(Fx=null)}return y.id,!0}var $C=new Map;async function ew(e,t){let n=t??yS();if(!n)return;let r=m(),i=bh(),a=`${r}:${n}:${e}:${i}`;if(!Yx||!Xx){Qx.set(a,{sessionID:e,directory:n});return}let o=$C.get(a);if(o)return o;let s=tw(e,n,r,i).finally(()=>{$C.get(a)===s&&$C.delete(a)});return $C.set(a,s),s}async function tw(e,t,n,r){lS();let i=dS(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=U()??W(t,i),l=G(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(ah(t,e)){Ox({directory:t,sessionID:e,store:i,transcript:u});return}if(U()){try{await Pu(t,e)}catch{return}if(y())return;Ox({directory:t,sessionID:e,store:i,isStale:y}),await Gy({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}Ox({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await nx({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:Mx}),b=n.records.length,oh(t,e)}catch{return}y()||(Ox({directory:t,sessionID:e,store:i,isStale:y}),await Gy({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var nw=18e4,rw=400,iw=300,aw=15,ow=`FINAL_REVIEW_STATUS: no_remaining_findings`,sw=ow.toLowerCase(),cw=new Set,lw=new Set,uw=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},dw=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},fw=e=>{let t=e.role;return typeof t==`string`?t:``},pw=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},mw=(e,t)=>Gd(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`}),hw=(e,t,n,r=0,i)=>{let a=Wd(e,t),o=new Set;for(let e of a)mw(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(fw(s)!==`assistant`||!uw(s)||dw(s)<r-1e3)continue;let c=pw(s);if(!Cw(s,i)||c&&o.has(c))continue;let l=Wp(Gd(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},gw=(e,t)=>Kd(e,t)?.type===`idle`,_w=e=>e===m(),vw=e=>{em.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},yw=e=>{if(e&&!_w(e))throw Error(`Auto-review stopped because the runtime changed.`)},bw=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),xw=e=>e.trim().split(`
403
403
  `).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===sw,Sw=e=>{let t=e.trimEnd().split(`