@openchambery/web 1.18.6-beta.1 → 1.18.7-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 (54) hide show
  1. package/dist/assets/AssistantView-BsQRWYlz.js +1 -0
  2. package/dist/assets/{ChatContainer-BYdx_DXz.js → ChatContainer-Dnxdg6He.js} +42 -42
  3. package/dist/assets/DiagramView-BplbsR8l.js +1 -0
  4. package/dist/assets/{MarkdownRendererImpl-Cm08lbud.js → MarkdownRendererImpl-EP8W7j6_.js} +2 -2
  5. package/dist/assets/{MobileDetailNavigation-BB2pDQj8.js → MobileDetailNavigation-CYq_8ZAq.js} +1 -1
  6. package/dist/assets/{MobileShareBridge-DlWPsLUN.js → MobileShareBridge-VmA8Qdh0.js} +1 -1
  7. package/dist/assets/MobileSurface-D7aKyOLV.js +2 -0
  8. package/dist/assets/{MultiRunWindow-DB8M7hTi.js → MultiRunWindow-F6NGMY5U.js} +1 -1
  9. package/dist/assets/{SettingsView-DGLS2Mg6.js → SettingsView-5b0tAHTL.js} +8 -8
  10. package/dist/assets/{SettingsWindow-C30XBMKE.js → SettingsWindow-Z4sr2ZBF.js} +1 -1
  11. package/dist/assets/{TerminalView-4tdrrTVF.js → TerminalView-DnOowqR4.js} +1 -1
  12. package/dist/assets/{ToolOutputDialog-CkkvQ6I2.js → ToolOutputDialog-BKJJN6ZR.js} +1 -1
  13. package/dist/assets/{appThemeRegistry-BNiZ1vQk.js → appThemeRegistry-Dfucen00.js} +2 -2
  14. package/dist/assets/context-menu-in4KRVok.js +1 -0
  15. package/dist/assets/diagram-CHfginjS.js +1 -0
  16. package/dist/assets/fileQueries-BrUKKgPW.js +1 -0
  17. package/dist/assets/{gitApi-DfuIaByA.js → gitApi-CtHhG2UX.js} +1 -1
  18. package/dist/assets/{insertionBoundaries-C642g-Iw.js → insertionBoundaries--0yrL837.js} +1 -1
  19. package/dist/assets/main-B9klnJvc.js +172 -0
  20. package/dist/assets/{main-M0K2vB13.js → main-YMWxpyqS.js} +2 -2
  21. package/dist/assets/{markdown-worker-W06-MhF5.js → markdown-worker-C3uVXiOS.js} +4 -4
  22. package/dist/assets/{miniChat-B3KVwxjN.js → miniChat-D6inDYgY.js} +2 -2
  23. package/dist/assets/{mobile-rzYyWvdR.js → mobile-DRu5smYb.js} +2 -2
  24. package/dist/assets/{multirun-qDXHE6q-.js → multirun-CVRJ-r1z.js} +1 -1
  25. package/dist/assets/{projectMeta-CyhrgevV.js → projectMeta-Cr4ghXIQ.js} +1 -1
  26. package/dist/assets/radio-C9Qe2mW1.js +1 -0
  27. package/dist/assets/renderElectronMiniChatApp-CCpXytpP.js +2 -0
  28. package/dist/assets/{renderMobileApp-OOhkEOlN.js → renderMobileApp-BmAEbSuq.js} +5 -5
  29. package/dist/assets/{runtimeConfig-D8mh3gFs.js → runtimeConfig-JC8_XlMh.js} +1 -1
  30. package/dist/assets/runtimeEndpointReset-Cgefx6dv.js +147 -0
  31. package/dist/assets/{src-BDOLh3pc.css → src-CpetTO35.css} +1 -1
  32. package/dist/assets/{useAppFontEffects-Bgx8zwRg.js → useAppFontEffects-DPE9SuwC.js} +4 -4
  33. package/dist/assets/{useDesktopWindowControlsLayout-D8rr0PdL.js → useDesktopWindowControlsLayout-evJk53fe.js} +1 -1
  34. package/dist/assets/{useEffectiveDirectory-Dfo_EXBo.js → useEffectiveDirectory-Bdc1_8wI.js} +1 -1
  35. package/dist/assets/{useMobileNavigationStore-hrmD9bA5.js → useMobileNavigationStore-BNyyqZch.js} +3 -3
  36. package/dist/assets/useSessionAutoCleanup-C-NCLDvZ.js +1 -0
  37. package/dist/assets/{useWorkerHighlightedLines-0_GDJima.js → useWorkerHighlightedLines-ClEzCydD.js} +2 -2
  38. package/dist/assets/vendor-tanstack-react-virtual-C2IyHsEr.js +1 -0
  39. package/dist/index.html +3 -3
  40. package/dist/mini-chat.html +3 -3
  41. package/dist/mobile.html +3 -3
  42. package/package.json +1 -1
  43. package/dist/assets/AssistantView-LPfaliRV.js +0 -1
  44. package/dist/assets/ContextPanel-BwwT_VfC.js +0 -288
  45. package/dist/assets/DiagramView-DvFv9-nP.js +0 -1
  46. package/dist/assets/MobileSurface-CN0sClQE.js +0 -2
  47. package/dist/assets/fileQueries-B_fTkH6s.js +0 -1
  48. package/dist/assets/main-C0AmH89S.js +0 -29
  49. package/dist/assets/radio-J9GiJ7x9.js +0 -1
  50. package/dist/assets/renderElectronMiniChatApp-DASrZbVL.js +0 -2
  51. package/dist/assets/runtimeEndpointReset-BSJKTLkz.js +0 -4
  52. package/dist/assets/shikiHighlight-BcXbHYOl.js +0 -1
  53. package/dist/assets/useSessionAutoCleanup-B2TGbr2W.js +0 -1
  54. package/dist/assets/vendor-tanstack-react-virtual-tlDgH6PG.js +0 -1
@@ -458,8 +458,8 @@ Use the results below as source material. Do not mention that the inputs were hi
458
458
  `).replace(/\n\s*\n+/g,`
459
459
  `),Lp=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Rp=e=>{let t=e?.metadata;return Lp(t)?t:{}},zp=e=>{let t=e.openchamber;return Lp(t)?t:{}},Bp=e=>{let t=zp(Rp(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Vp=e=>{let t=zp(Rp(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Hp=e=>zp(Rp(e)).kind===`review`&&!!Vp(e),Up=(e,t)=>{let n=zp(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Wp=(e,t)=>{let n=zp(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},Gp=(e,t)=>{let n=zp(e);if(n.reviewSessionID!==t)return e;let r={...n};delete r.reviewSessionID;let i={...e};return Object.keys(r).length>0?i.openchamber=r:delete i.openchamber,i},Kp=Oe()(ke((e,t)=>({runsByOriginalSessionID:{},upsertRun:t=>e(e=>({runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t.originalSessionID]:t}})),updateRun:(t,n)=>e(e=>{let r=e.runsByOriginalSessionID[t];return r?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:n(r)}}:e}),stopRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`stopped`}}}:e}),completeRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`completed`}}}:e}),stopRunningRunsForRuntime:t=>e(e=>{let n=!1,r={...e.runsByOriginalSessionID};for(let[e,i]of Object.entries(r))i.runtimeKey===t&&i.status===`running`&&(r[e]={...i,status:`stopped`},n=!0);return n?{runsByOriginalSessionID:r}:e}),isRunningForSession:e=>t().runsByOriginalSessionID[e]?.status===`running`}),{name:`auto-review-store`,storage:g(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),qp=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},Jp=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=qp(t.parentSessionId),r=qp(t.sessionId);if(!(!n||!r||n===r))return{parentSessionId:n,sessionId:r}},Yp=e=>{let t=[];for(let n of e){if(n?.type!==`tool`||n.tool!==`task`)continue;let e=n.state;if(!e||typeof e!=`object`||Array.isArray(e))continue;let r=e;if(r.status!==`running`)continue;let i=r.metadata,a=Jp(i);a&&t.push(a)}return t},Xp=[],Zp=(e,t,n)=>{let r=new Map;for(let t of e){if(!t.parentID)continue;let e=r.get(t.parentID)??[];e.push(t.id),r.set(t.parentID,e)}if(n)for(let e of n){let t=r.get(e.parentSessionId)??[];t.push(e.sessionId),r.set(e.parentSessionId,t)}let i=new Set([t]),a=[t];for(let e of a){let t=r.get(e);if(t)for(let e of t)i.has(e)||(i.add(e),a.push(e))}return i},Qp=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0},$p=(e,t,n,r,i)=>{if(!n)return r;let a=Zp(e,n,i);if(a.size===0)return r;let o=new Set,s=[];for(let e of a){let n=t[e];if(n)for(let e of n)o.has(e.id)||(o.add(e.id),s.push(e))}return s.length===0?r:s},em=`GitHub issue context (JSON)`,tm=`GitHub pull request context (JSON)`,nm=e=>!e||typeof e!=`object`?!1:!!e.synthetic,rm=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>nm(e)),im=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!nm(e)),n=e=>{if(!nm(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(em)||n.startsWith(tm)};return t&&e.some(e=>nm(e))?e.filter(e=>!nm(e)||n(e)):e},am=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},om=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,sm=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},cm=e=>e.replace(/\\/g,`/`),lm=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,um=e=>{if(!e.startsWith(`file:`))return null;try{let t=new URL(e);if(t.protocol!==`file:`)return null;let n=decodeURIComponent(t.pathname);return/^\/[A-Za-z]:/.test(n)&&(n=n.slice(1)),t.hostname&&t.hostname!==`localhost`&&!/^[A-Za-z]:/.test(n)&&(n=`//${t.hostname}${n.startsWith(`/`)?n:`/${n}`}`),cm(n)}catch{return null}},dm=(e,t)=>{let n=lm(cm(e)),r=lm(cm(t));if(!r||!n)return null;let i=/^[A-Za-z]:/.test(n)?n[0].toLowerCase()+n.slice(1):n,a=/^[A-Za-z]:/.test(r)?r[0].toLowerCase()+r.slice(1):r;return i===a?``:i.startsWith(`${a}/`)?i.slice(a.length+1):null},fm=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),pm=(e,t)=>{let n=cm(e),r=lm(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=dm(n,t);if(r!==null){let t=lm(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return fm(a)},mm=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},hm=(e,t,n)=>{let r=0;for(;r<e.length;){let i=e.indexOf(t,r);if(i<0)return null;let a=i+t.length,o=`${i}:${a}`,s=i>0?e[i-1]:``,c=e[a]??``,l=!s||/[\s([{"'`,.;:!?]/.test(s),u=!c||/[\s)\]}"'`,.;:!?]/.test(c);if(!n.has(o)&&l&&u)return{start:i,end:a};r=i+1}return null},gm=e=>{let t=e.source&&typeof e.source==`object`?e.source:null,n=typeof t?.value==`string`?t.value.trim():``;if(n){let e=n.startsWith(`@`)?n:`@${n}`,t=e.slice(1);if(t)return{token:e,name:t}}let r=typeof e.name==`string`?e.name.trim():``;if(!r)return null;let i=r.startsWith(`@`)?r.slice(1):r;return i?{token:`@${i}`,name:i}:null},_m=async(e,t={})=>{let n=t.createID??fe,r=t.directory??t.root??null,i=e.filter(e=>!nm(e)),a=i.filter(e=>e.type===`text`),o=i.filter(e=>e.type===`agent`),s=i.filter(e=>e.type===`file`),c=a.map(om).join(`
460
460
  `),l=[];for(let e of o){let t=gm(e);t&&l.push(t)}for(let e of[...l].reverse())hm(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=E(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=hm(c,e.token,p);t&&(p.add(`${t.start}:${t.end}`),f.push({kind:`agent`,value:e.name,path:e.name,label:e.name,range:t}))}let m=[],h=new Map;for(let e of s){if(e.slim===!0)continue;let t=typeof e.url==`string`?e.url:``;if(!t)continue;let i=typeof e.mime==`string`?e.mime:`application/octet-stream`,a=typeof e.filename==`string`?e.filename:`attachment`,o=t.startsWith(`file:`)?um(t):null;if(o){let e=pm(o,r),t=null;for(let n of e){let e=hm(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=sm(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=ue(s);if(t.startsWith(`data:`)){let e=await mm(t);h.set(l,e),m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:e.type||i,size:e.size,source:`local`,locator:{kind:`blob`,blobID:s}});continue}if(am(t)){if(!ie(t))throw Error(`composer-restoration-url-too-long`);m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:i,size:0,source:t.startsWith(`file:`)?`server`:`local`,locator:{kind:`url`,url:t},...t.startsWith(`file:`)&&o?{serverPath:o}:{}}),h.set(l,t);continue}throw Error(`composer-restoration-invalid-attachment-url`)}f.sort((e,t)=>e.range.start-t.range.start);let g=ae(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=we(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},vm=async(e,t={})=>{let n=t.createID??fe,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=we(r,i),o=ae(r,e.composerMentions??[]);if(!a||!o)throw Error(`composer-restoration-invalid-sidecars`);if(e.draftAttachments)return{snapshot:{text:r,composerReferences:a.references,attachments:[...e.draftAttachments],syntheticParts:e.syntheticParts??[],mentions:o},values:e.draftValues??new Map};let s=[],c=new Map;for(let t of e.attachments??[]){let e=t.id||n(),r=ue(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await mm(i);c.set(r,n),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||n.type||`application/octet-stream`,size:n.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}if(am(i)){if(!ie(i)){if(!(t.file instanceof Blob))throw Error(`composer-restoration-url-too-long`);c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType,size:t.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`url`,url:i},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}}),c.set(r,i);continue}if(t.file&&t.file.size>=0){c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}throw Error(`composer-restoration-invalid-attachment`)}return{snapshot:{text:r,composerReferences:a.references,attachments:s,syntheticParts:e.syntheticParts??[],mentions:o},values:c}},ym=e=>e?JSON.parse(JSON.stringify(e)):null,bm=e=>e?{...e}:{},xm=(e,t=Or.getState())=>{let n=t.getDraft?.(e)??null,r=bm(t.draftAttachmentViews?.[R(e)]);return{record:ym(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},Sm=async e=>{let t=e.input??Or.getState(),n=xm(e.key,{getDraft:t.getDraft?.bind(t),draftAttachmentViews:t.draftAttachmentViews}),r;try{r=await t.commitDraftSnapshot({key:e.key,expectedRevision:e.expectedRevision,runtime:e.runtime??t.captureDraftRuntime(),snapshot:e.payload.snapshot,values:e.payload.values})}catch{return{status:`failed`,current:!1,durable:!1,previous:n}}return{status:r.status,current:r.current,durable:r.durable,result:r,previous:n}},Cm=async e=>{let t=e.store.getDraft(e.key);if(!t||t.revision!==e.restoredRevision)return{status:`conflict`,current:!0};if(!e.previous.record)try{let t=await e.store.deleteDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}let n=e.previous.record,r=new Map;for(let t of[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)]){let n=e.previous.views[t.attachmentRefID];t.locator.kind===`url`?r.set(t.attachmentRefID,t.locator.url):n?.file?r.set(t.attachmentRefID,n.file):n?.dataUrl&&r.set(t.attachmentRefID,n.dataUrl)}try{let t=await e.store.commitDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime,snapshot:{text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}},values:r});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}},wm=async e=>{let t=e.input??Or.getState(),n=t.getDraft(e.key);if(!n||n.revision!==e.restoredRevision)return{status:`conflict`,current:!0};let r=e.key.transportIdentity,i=e.runtime?.transportIdentity===r?e.runtime:void 0,a;try{let e=t.captureDraftRuntime();e.transportIdentity===r&&(a=e)}catch{}let o=i??a;return o?Cm({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},Tm=(e,t,n)=>{let r=n.getDraft(e);if(r)return[...r.attachments,...r.syntheticParts.flatMap(e=>e.attachments)].find(e=>e.attachmentID===t)?.attachmentRefID},Em=e=>e?.status===`committed`&&e.current===!0,Dm=new Map,Om=async(e,t)=>{let n=R(e),r=Dm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Dm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Dm.get(n)===o&&Dm.delete(n)}},km=(e,t)=>({key:e,addLocal:async n=>{await Om(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Om(e,async()=>{let r=t(),i=Tm(e,n,r);if(!i)return!(r.getDraft(e)&&[...r.getDraft(e)?.attachments??[],...r.getDraft(e)?.syntheticParts.flatMap(e=>e.attachments)??[]].some(e=>e.attachmentID===n));try{await r.removeDraftAttachment(e,i)}catch{}let a=r.getDraft(e);return!a||![...a.attachments,...a.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.attachmentID===n)})}catch{return!1}},clearRootAttachments:async()=>{try{return await Om(e,async()=>{let n=t(),r=n.getDraft(e);return!r||r.attachments.length===0||n.setDraftAttachments(e,[])?.attachments.length===0})}catch{return!1}},restoreRootAttachments:async n=>{try{return await Om(e,async()=>{let r=async()=>t().restoreDraftRootAttachments(e,n),i=await r();return i.status===`conflict`&&(i=await r()),i.status===`failed`||i.status===`stale`?!1:Em(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Om(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Om(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Om(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Am=4e4,jm=0,Mm=null;function Nm(e=Date.now()){jm=e}function Pm(e){return Mm=e,()=>{Mm===e&&(Mm=null)}}function Fm(e){Mm?.(e)}function Im(e=Date.now(),t=Am){return jm<=0?!1:e-jm>=t}var Lm=3e4,Rm=200,zm=new Map;function Bm(e,t,n){return`${n?.transport??i()}\n${n?.generation??h()}\n${e.trim()}\n${t}`}function Vm(e,t,n){if(!e||!t)return!1;let r=zm.get(Bm(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Lm}function Hm(e,t,n){if(!e||!t)return;let r=Bm(e,t,n);for(zm.has(r)&&zm.delete(r);zm.size>=Rm;){let e=zm.keys().next().value;if(typeof e!=`string`)break;zm.delete(e)}zm.set(r,n?.now??Date.now())}var Um=768,Wm=()=>{if(typeof window>`u`)return!1;let e=typeof window.matchMedia==`function`?window.matchMedia(`(pointer: coarse)`).matches||window.matchMedia(`(hover: none)`).matches:!1,t=typeof navigator<`u`?navigator.maxTouchPoints??0:0;return e||t>0},Gm=()=>{if(typeof window>`u`)return`desktop`;let e=window.__OPENCHAMBER_SURFACE__;if(e===`mobile`||e===`desktop`)return e;let t=new URLSearchParams(window.location.search).get(`surface`);if(t===`mobile`||t===`desktop`)return t;if(se())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=Um&&Wm()?`mobile`:`desktop`},Km=()=>Gm()===`mobile`,qm=3,Jm=2,Ym=4,Xm=4,Zm=100,Qm=30;function $m(){return u()?`relay`:`local`}function eh(e=$m()){return e===`relay`?Jm:qm}function th(e=$m()){return e===`relay`?Xm:Ym}function nh(e){return eh(ah(e))}function rh(){return Zm}function ih(){return Qm}function ah(e){return e===`relay`||e===`local`?e:$m()}var oh=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function sh(){return{pages:[],pageParams:[]}}function ch(e){let t={};for(let[n,r]of Object.entries(e.messagesByID))t[n]=r;let n={};for(let[t,r]of Object.entries(e.partsByMessageID))n[t]=Object.isFrozen(r)?r:Object.freeze([...r]);return Object.freeze({kind:e.kind,messageOrder:Object.isFrozen(e.messageOrder)?e.messageOrder:Object.freeze([...e.messageOrder]),messagesByID:Object.freeze(t),partsByMessageID:Object.freeze(n),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:Object.freeze({...e.sync})})}function lh(e){return{pages:Object.freeze(e.pages.map(ch)),pageParams:Object.freeze([...e.pageParams])}}function uh(e,t,n=oh){let r=[],i={},a={};for(let t of e.records){let e=t.info?.id;!e||i[e]||(r.push(e),i[e]=t.info,t.parts&&(a[e]=Object.freeze([...t.parts])))}let o=typeof e.turnCount==`number`&&Number.isFinite(e.turnCount)?Math.max(0,Math.floor(e.turnCount)):typeof e.requestedTurnLimit==`number`&&Number.isFinite(e.requestedTurnLimit)?Math.max(0,Math.floor(e.requestedTurnLimit)):+(e.records.length>0);return ch({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function dh(e){if(!e||e.pages.length===0)return il;let t=e.pages[0],n=e.pages.reduce((e,t)=>e+t.turnCount,0);return t.complete?{kind:`exhausted`,loadedTurns:n}:typeof t.cursor==`string`&&t.cursor.length>0?{kind:`has-more`,cursor:t.cursor,loadedTurns:n}:{kind:`unknown`,loadedTurns:n}}function fh(e,t){let n={},r={},i=[],a=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder){if(a.has(e))continue;let n=t.messagesByID[e];if(!n)continue;a.add(e),i.push(n);let o=t.partsByMessageID[e];o&&(r[e]=[...o])}n[t]=i;let o=dh(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function ph(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function mh(e,t,n,r,i,a,o){let s=[],c={},l={};for(let e of t){if(!e?.id)continue;s.push(e.id),c[e.id]=e;let t=n[e.id];t&&(l[e.id]=Object.freeze([...t]))}return ch({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:ph(t)}})}function hh(e,t,n,r,i,a){let o=n.messages,s=n.part,c=typeof i.turnCount==`number`&&Number.isFinite(i.turnCount)?Math.max(0,Math.floor(i.turnCount)):typeof i.requestedTurnLimit==`number`&&Number.isFinite(i.requestedTurnLimit)?Math.max(0,Math.floor(i.requestedTurnLimit)):+(i.records.length>0),l=i.complete?null:i.cursor??null,u=i.complete;if(!e||e.pages.length===0||r===`initial`)return lh({pages:[mh(`tail`,o,s,l,u,c,a)],pageParams:[null]});if(r===`prepend`){let r=new Set;for(let t of e.pages)for(let e of t.messageOrder)r.add(e);let d=o.filter(e=>i.records.some(t=>t.info.id===e.id)||!r.has(e.id)).filter(t=>{if(i.records.some(e=>e.info.id===t.id))return!0;if(!r.has(t.id)){let n=e.pages[0]?.messageOrder[0];return!n||t.id<n}return!1}),f=[],p=new Set;for(let e of i.records){let t=o.find(t=>t.id===e.info.id);!t||p.has(t.id)||(p.add(t.id),f.push(t))}for(let e of d)p.has(e.id)||(p.add(e.id),f.push(e));let m=mh(`history`,f,s,l,u,c,a),h=new Set(p),g=[m],_=[l];for(let r=0;r<e.pages.length;r+=1){let i=e.pages[r],o=[];for(let e of i.messageOrder){if(h.has(e))continue;let r=n.message[t]?.find(t=>t.id===e)??i.messagesByID[e];r&&o.push(r)}g.push(_h(i,o,s,a)),_.push(e.pageParams[r]??null)}return lh({pages:g,pageParams:_})}let d=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)d.has(n)||d.set(n,t)});let f=e.pages.map(()=>[]),p=[];for(let e of o){let t=d.get(e.id);t===void 0?p.push(e):f[t].push(e)}let m=e.pages.map((t,n)=>{let i=f[n]??[];return n===e.pages.length-1&&p.length>0?_h(t,r===`reconcile-page`?gh(i,p):[...i,...p],s,a):_h(t,i,s,a)});if(m.length>0&&n.boundary){let e=m[0],t=n.boundary.kind===`has-more`?n.boundary.cursor:null,r=n.boundary.kind===`exhausted`;(e.cursor!==t||e.complete!==r)&&(m[0]=ch({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return lh({pages:m,pageParams:[...e.pageParams]})}function gh(e,t){let n=e.slice();for(let e of t){let t=oc(e),r=n.length;for(let e=0;e<n.length;e+=1)if(ac(t,oc(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function _h(e,t,n,r){let i=[],a={},o={},s=t.length!==e.messageOrder.length,c=!1,l=!1;for(let r=0;r<t.length;r+=1){let u=t[r];if(!u?.id)continue;i.push(u.id),e.messageOrder[r]!==u.id&&(s=!0);let d=e.messagesByID[u.id];d===u?a[u.id]=u:d&&vh(d,u)?a[u.id]=d:(a[u.id]=u,c=!0);let f=n[u.id],p=e.partsByMessageID[u.id];f===void 0?p!==void 0&&(l=!0):p&&(p===f||bh(p,f))?o[u.id]=p:Object.isFrozen(f)&&f===p?o[u.id]=f:p&&f===p?o[u.id]=p:(o[u.id]=Object.freeze([...f]),l=!0)}return!s&&!c&&!l&&e.sync.liveRevision===r||!s&&!c&&!l?e:ch({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:ph(t)}})}function vh(e,t){return e===t||e.id===t.id&&e===t}function yh(e,t){return e===t||!(!e||!t||e.id!==t.id||e.type!==t.type||e.text!==t.text||e.state!==t.state||e.output!==t.output||e.metadata!==t.metadata||e.time!==t.time||e.url!==t.url||e.slim!==t.slim)}function bh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!yh(e[n],t[n]))return!1;return!0}function xh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Sh(e){let t=e.properties;if(t){if(typeof t.messageID==`string`)return t.messageID;if(typeof t.info?.id==`string`)return t.info.id;if(typeof t.part?.messageID==`string`)return t.part.messageID}}function Ch(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=hh(e??sh(),t,{message:n.message,part:s,messages:o,boundary:r},`recovery`,{records:o.map(e=>({info:e,parts:s[e.id]??[]})),complete:r.kind===`exhausted`,cursor:r.kind===`has-more`?r.cursor:void 0,turnCount:0},i);if(e&&e.pages.length>0){let t=new Map,n=new Map;e.pages.forEach((e,r)=>{for(let i of e.messageOrder){t.has(i)||t.set(i,r);let a=e.messagesByID[i];a&&n.set(i,a)}});let r=o.map(e=>{let t=n.get(e.id);return t&&t.id===e.id&&t===e||t&&e.id===t.id&&e===t?t:e}).map(e=>{let t=n.get(e.id);return!t||a.has(e.id)?e:t}),c={};for(let t of r){let n=s[t.id];if(!n)continue;let r;for(let n of e.pages)if(n.partsByMessageID[t.id]){r=n.partsByMessageID[t.id];break}r&&!a.has(t.id)||r&&bh(r,n)?c[t.id]=r:c[t.id]=n}let l=e.pages.map(()=>[]),u=[];for(let e of r){let n=t.get(e.id);n===void 0?u.push(e):l[n].push(e)}return lh({pages:e.pages.map((t,n)=>_h(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function wh(e,t){let n=fh(e,t),r=dh(e),i={message:{...n.message,[t]:[...n.message[t]??[]]},part:{...n.part}};for(let[e,t]of Object.entries(i.part))t&&(i.part[e]=[...t]);return{draft:i,previousBoundary:r}}function Th(e,t,n,r){if(!Al(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=wh(e,t),o=Rs(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=Sh(n),c=new Set;return s&&c.add(s),{data:Ch(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function Eh(e){let t=new Map;if(!e)return t;for(let n of e.pages)for(let[e,r]of Object.entries(n.partsByMessageID))!t.has(e)&&r&&t.set(e,r);return t}function Dh(e){let t=new Map;if(!e)return t;for(let n of e.pages)for(let[e,r]of Object.entries(n.messagesByID))!t.has(e)&&r&&t.set(e,r);return t}function Oh(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=wh(e,t),o=!1,s=0,c,l=new Set,u=Eh(e),d=Dh(e),f=i.message[t]??[],p=new Map,m=new Map,h=[],g=e=>{if(p.clear(),m.clear(),h=[],e)for(let t=0;t<e.length;t+=1){let n=e[t];n?.id&&(p.set(n.id,n),m.set(n.id,t),h.push(n.id))}};g(f);let _=h.slice();for(let e of n){if(!Al(e.type))continue;o=!0;let n=Rs(i,e),r=typeof n==`boolean`?n:n.changed,a=typeof n==`boolean`?void 0:n.materialization;if(a&&!c&&(c=a),!r)continue;let v=i.message[t]??[];v!==f&&(f=v,g(v));let y=Sh(e),b=h.length!==_.length||h.some((e,t)=>e!==_[t]),x=b;if(y){let e=i.part[y],t=u.get(y);e&&t&&bh(t,e)?i.part[y]=[...t]:e?(x=!0,u.set(y,e)):t&&(x=!0,u.delete(y));let n=p.get(y),r=d.get(y);if(!(n&&r&&r===n))if(n&&r&&vh(r,n)){let e=m.get(y);e!==void 0&&f[e]&&(f[e]=r,p.set(y,r))}else n?(x=!0,d.set(y,n)):r&&(x=!0,d.delete(y))}else x=!0;if(b){_=h.slice();for(let e of f)e?.id&&!d.has(e.id)&&d.set(e.id,e)}x&&(s+=1,y&&l.add(y))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:Ch(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function kh(e,t,n,r,i){let a=e&&e.pages.length>0?e:lh({pages:[mh(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=fh(a,t),s=o.message[t]?[...o.message[t]]:[];s.findIndex(e=>e.id===n.id)<0&&s.push(n);let c={...o.part,[n.id]:xh(r)};return{data:lh({pages:a.pages.map((e,t)=>t===a.pages.length-1?_h(e,s.filter(e=>{for(let t=0;t<a.pages.length-1;t+=1)if(a.pages[t]?.messagesByID[e.id])return!1;return!0}),c,i):e.messagesByID[n.id]?_h(e,e.messageOrder.filter(e=>e!==n.id).map(t=>e.messagesByID[t]).filter(Boolean),c,i):e),pageParams:[...a.pageParams]}),result:{applied:!0,changed:!0}}}function Ah(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:lh({pages:e.pages.map(e=>{if(!e.messagesByID[t]&&!e.partsByMessageID[t])return e;r=!0;let i=e.messageOrder.filter(e=>e!==t).map(t=>e.messagesByID[t]).filter(Boolean),a={};for(let[n,r]of Object.entries(e.partsByMessageID))n!==t&&(a[n]=[...r]);return _h(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function jh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=fh(e,t),i=Qc({message:r.message,part:r.part},t,n.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),{skipPartTypes:n.skipPartTypes,merge:n.merge});if(!i.messagesChanged&&!i.partsChanged)return{data:e,result:{applied:!0,changed:!1,boundary:dh(e)}};let a=e?.pages[e.pages.length-1]?.sync.liveRevision??0,o=i.part;if(!e||e.pages.length===0){let e=i.messages[0]?.id,t=i.messages.filter(e=>e.role===`user`).length,n=lh({pages:[mh(`tail`,i.messages,o,typeof e==`string`&&e.length>0?e:null,!1,t,a)],pageParams:[null]});return{data:n,result:{applied:!0,changed:!0,boundary:dh(n)}}}let s=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)s.has(n)||s.set(n,t)});let c=e.pages.map(()=>[]),l=[];for(let e of i.messages){let t=s.get(e.id);t===void 0?l.push(e):c[t].push(e)}let u=lh({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?_h(t,gh(r,l),o,a):_h(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:dh(u)}}}function Mh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=pl(fh(e,t),t,{ok:!0,records:n.page.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:n.page.cursor,complete:n.page.complete,turnCount:n.page.turnCount,requestedTurnLimit:n.page.requestedTurnLimit},{purpose:n.purpose,skipPartTypes:n.skipPartTypes,optimistic:n.optimistic?n.optimistic.map(e=>({message:e.message,parts:[...e.parts]})):void 0,capturedRevision:n.capturedLiveRevision,liveRevision:n.liveRevision});return i.applied?{data:hh(e,t,{message:i.message,part:i.part,messages:i.messages,boundary:i.boundary},n.purpose,n.page,r),result:{applied:!0,changed:i.changed,boundary:i.boundary,meta:i.meta,confirmedOptimisticIDs:i.confirmedOptimisticIDs}}:{data:e,result:{applied:!1,changed:!1,error:i.error}}}case`sse-event`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Th(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Oh(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return kh(e,t,n.message,n.parts,r)}case`optimistic-confirm`:return{data:e,result:{applied:!0,changed:!1}};case`optimistic-remove`:{let t=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Ah(e,n.messageID,t)}case`durable-seed`:return jh(e,t,n);case`reset`:return n.page?Mh(void 0,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes}):{data:void 0,result:{applied:!0,changed:!!(e&&e.pages.length>0)}};default:return{data:e,result:{applied:!1,changed:!1}}}}function Nh(e){return{records:e.messageOrder.map(t=>({info:e.messagesByID[t],parts:e.partsByMessageID[t]?[...e.partsByMessageID[t]]:[]})),cursor:e.cursor??void 0,complete:e.complete,turnCount:e.turnCount}}function Ph(e,t,n,r=`materialize`){return Mh(e,n,{type:`http-page`,purpose:r,page:Nh(t),liveRevision:t.sync.liveRevision}).data}function Fh(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return lh(t);if(t.pages.length===e.pages.length){let r=zh(e,t);if(r===e)return e;if(Rh(e,t)||Lh(e,t))return r;let i=t.pages[t.pages.length-1];return Ph(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return Mh(e,n,{type:`http-page`,purpose:`prepend`,page:Nh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Ph(e,r,n)??lh(t)}return lh(t)}function Ih(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Lh(e,t){let n=Ih(e),r=Ih(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=Bh(e,``),a=Bh(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Rh(e,t){let n=Ih(e);if(n.size===0)return!1;let r=Ih(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=Bh(t,``);for(let e=1;e<i.messageOrder.length;e+=1){let t=i.messagesByID[i.messageOrder[e-1]],n=i.messagesByID[i.messageOrder[e]];if(!t||!n||ac(oc(t),oc(n))>0)return!1}return!0}function zh(e,t){let n=!1,r=t.pages.map((t,r)=>{let i=e.pages[r];return i&&(i===t||i.kind===t.kind&&i.cursor===t.cursor&&i.complete===t.complete&&i.turnCount===t.turnCount&&i.messageOrder.length===t.messageOrder.length&&i.messageOrder.every((e,n)=>e===t.messageOrder[n])&&i.messageOrder.every(e=>i.messagesByID[e]===t.messagesByID[e])&&i.messageOrder.every(e=>i.partsByMessageID[e]===t.partsByMessageID[e])&&i.sync.liveRevision===t.sync.liveRevision)?i:(n=!0,ch(t))});return!n&&e.pageParams.length===t.pageParams.length?e:lh({pages:r,pageParams:[...t.pageParams]})}function Bh(e,t){let n=[],r={},i={},a=0;for(let t of e?.pages??[]){a=Math.max(a,t.sync.liveRevision);for(let e of t.messageOrder){if(r[e]){r[e]=t.messagesByID[e]??r[e],t.partsByMessageID[e]&&(i[e]=t.partsByMessageID[e]);continue}n.push(e);let a=t.messagesByID[e];a&&(r[e]=a);let o=t.partsByMessageID[e];o&&(i[e]=o)}}let o=[],s=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder)s.has(e)||(s.add(e),o.push(e));return{messageOrder:o,messagesByID:r,partsByMessageID:i,boundary:dh(e),liveRevision:a}}var Vh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Hh=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Uh=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Wh=e=>e.trim(),Gh=e=>e?.trim()||`tail`,Kh=new Set([502,503,504]),qh=[`load failed`,`network connection was lost`,`network request failed`,`failed to fetch`,`econnreset`,`econnrefused`,`etimedout`,`socket hang up`,`signal timed out`,`timed out`,`timeout`,`opencode api unavailable`];function Jh(e){if(!e||e instanceof Vh||e instanceof Hh)return!1;if(e instanceof Uh)return e.status>=400&&e.status<500?!1:Kh.has(e.status)||e.status>=500&&e.status<600;let t=e?.status;if(typeof t==`number`){if(t>=400&&t<500)return!1;if(Kh.has(t)||t>=500&&t<600)return!0}let n=String(e instanceof Error?e.message:e).toLowerCase(),r=n.match(/\((\d{3})\)/);if(r){let e=Number(r[1]);if(e>=400&&e<500)return!1;if(Kh.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:qh.some(e=>n.includes(e))}function Yh(e,t){return e>=2?!1:Jh(t)}var Xh=(e,t=i(),n=h())=>[t,n,`sessionMessages`,`page`,Wh(e.directory),e.sessionID,e.limit,Gh(e.before)],Zh=(e,t=i(),n=h())=>[t,n,`session-transcript`,Wh(e.directory),e.sessionID];function Qh(e){if(!e||typeof e!=`object`)throw new Hh(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Hh(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Hh(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Hh(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Hh(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Hh(`session message page: cursor must be string when set`);return e}var $h=e=>{let t=e.records.map(e=>Object.freeze({info:Object.freeze({...e.info}),parts:e.parts===void 0?void 0:Object.freeze([...e.parts])}));return Object.freeze({records:Object.freeze(t),cursor:e.cursor,complete:e.complete,...typeof e.turnCount==`number`?{turnCount:e.turnCount}:{},...typeof e.requestedTurnLimit==`number`?{requestedTurnLimit:e.requestedTurnLimit}:{}})},eg=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw new Vh},tg=(e,t,n=i(),r={},a=(r.getGeneration??h)())=>{let o=Wh(e.directory),s=e.sessionID,c=e.limit,l=e.before?.trim()||void 0;return{queryKey:Xh({directory:o,sessionID:s,limit:c,before:l},n,a),queryFn:async({signal:e})=>{eg(n,a,r);let i=await t({directory:o,sessionID:s,limit:c,before:l,signal:e});return eg(n,a,r),$h(Qh(i))},staleTime:1/0,gcTime:3e5,retry:Yh,retryDelay:e=>Math.min(500*2**e,4e3)}},ng=(e,t,n=L,r=i(),a={},o=(a.getGeneration??h)())=>n.fetchQuery(tg(e,t,r,a,o));function rg(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function ig(e){return $h({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function ag(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function og(e){let t=Wh(e.directory),n=e.sessionID,r=e.transport??i(),a=e.probe??{},o=e.generation??(a.getGeneration??h)(),s=e.initialLimit??eh(),c=e.historyLimit??th(),l=e.client??L,u=Zh({directory:t,sessionID:n},r,o),d=async t=>ig(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:u,queryFn:async e=>{eg(r,o,a);let i=e.pageParam?.trim()||void 0,u=i?c:s,f=i?`prepend`:`initial`,p=await ng({directory:t,sessionID:n,limit:u,before:i},d,l,r,a,o);eg(r,o,a);let m=rg(p);return uh(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:ag,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:Yh,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>Fh(e,t,n)}}function sg(e){let t=e.client??L,n=og({...e,client:t}),r=new nt(t,{...n,structuralSharing:(t,n)=>Fh(t,n,e.sessionID)});return{queryKey:n.queryKey,observer:r,ensureInitial:async()=>{let e=(await r.fetchNextPage()).data;if(e&&e.pages.length>0)return lh(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return lh(t)},fetchPreviousPage:async()=>{let e=r.getCurrentResult().data;try{let t=await r.fetchPreviousPage({cancelRefetch:!1}),n=r.getCurrentResult(),i=t.data??n.data??e;if(t.isError||n.isFetchPreviousPageError){let e=t.error??n.error??Error(`transcript previous page fetch failed`);throw i&&i.pages.length>0?Object.assign(e instanceof Error?e:Error(String(e)),{retainedPages:lh(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return lh(i)}catch(t){let n=r.getCurrentResult().data??e;throw n&&n.pages.length>0?Object.assign(t instanceof Error?t:Error(String(t)),{retainedPages:lh(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function cg(e,t,n,r){let i=e.getQueryData(t),a=Mh(i,n,r);return a.result.applied?a.data===void 0?(`removeQueries`in e&&typeof e.removeQueries==`function`?e.removeQueries({queryKey:t,exact:!0}):e.setQueryData(t,void 0),a):(!a.result.changed&&a.data===i||e.setQueryData(t,a.data),a):a}function lg(e,t=L,n=i(),r=h()){return t.getQueryData(Zh(e,n,r))}function ug(){return v()||Km()}function dg(){return v()?4:Km()?12:40}var fg=1048576,pg=4*fg,mg=12*fg,hg=40*fg;function gg(){return v()?pg:Km()?mg:hg}var _g=e=>e.trim();function vg(e){return{transport:e.transport,generation:e.generation,directory:_g(e.directory),sessionID:e.sessionID}}function yg(e){let t=vg(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function bg(e){return`${e.transport}\n${e.generation}\n${_g(e.directory)}`}var xg={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function Sg(e,t,n){return[t,n,xg.taskRoot,xg.reconcileTaskKind,_g(e.directory),e.sessionID,e.checkpoint]}function Cg(e,t,n){return[t,n,xg.checkpoint,_g(e.directory),e.sessionID]}function wg(e){let t=vg(e);return[{queryKey:Zh({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,xg.transportPageRoot,xg.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,xg.taskRoot,xg.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,xg.taskRoot,xg.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:Cg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function Tg(){let e=new Map;return{retain(t){let n=vg(t),r=yg(n),i=e.get(r);i?i.count+=1:e.set(r,{scope:n,count:1});let a=!1;return()=>{if(a)return;a=!0;let t=e.get(r);t&&(--t.count,t.count<=0&&e.delete(r))}},isRetained(t){return(e.get(yg(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(yg(t))?.count??0},clear(){e.clear()}}}function Eg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Dg=3e4;function Og(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function kg(e){return!Array.isArray(e)||e.length<5||e[2]!==xg.canonical||typeof e[0]!=`string`||typeof e[1]!=`number`||typeof e[3]!=`string`||typeof e[4]!=`string`?null:{transport:e[0],generation:e[1],directory:e[3],sessionID:e[4]}}function Ag(e){let t=e.client,n=e.activeRegistry??Tg(),r=e.counters??Eg(),i=e.getLimit??dg,a=e.now??Date.now,o=e.minResidencyMs??Dg,s=new Map,c=new Map,l=e=>{let t=vg(e),n=yg(t),r=c.get(t.sessionID);r||(r=new Map,c.set(t.sessionID,r)),r.set(n,t)},u=e=>{let t=vg(e),n=yg(t),r=c.get(t.sessionID);r&&(r.delete(n),r.size===0&&c.delete(t.sessionID))},d=(e,t)=>{for(let[n,r]of c){for(let[n,i]of r)i.transport===e&&i.generation===t&&r.delete(n);r.size===0&&c.delete(n)}let n=`${e}\n${t}\n`;for(let e of s.keys())e.startsWith(n)&&s.delete(e)};for(let e of t.getQueryCache().getAll()){let t=kg(e.queryKey);t&&l(t)}let f=t.getQueryCache().subscribe(e=>{if(e.type===`added`||e.type===`updated`){let t=kg(e.query.queryKey);t&&l(t);return}if(e.type===`removed`){let t=kg(e.query.queryKey);t&&u(t)}}),p=e=>{let t=yg(vg(e));s.set(t,a())},m=e=>{let t=yg(vg(e)),n=s.get(t);return n!==void 0&&a()-n<o},h=e=>{let r=vg(e);if(n.isRetained(r))return!0;let i=Zh({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},g=e=>{let r=e?.directory===void 0?void 0:_g(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=kg(a.queryKey);if(!t||e?.transport!==void 0&&t.transport!==e.transport||e?.generation!==void 0&&t.generation!==e.generation||r!==void 0&&t.directory!==r)continue;let o=a.getObserversCount(),s=n.isRetained(t);i.push({scope:t,queryKey:a.queryKey,dataUpdatedAt:a.state.dataUpdatedAt,observerCount:o,retained:s,active:s||o>0,pageCount:Og(a.state.data)})}return i},_=(e,t)=>{let n=c.get(e);if(!n||n.size===0)return[];let r=t?.directory===void 0?void 0:_g(t.directory),i=[];for(let e of n.values())(t?.transport===void 0||e.transport===t.transport)&&(t?.generation===void 0||e.generation===t.generation)&&(r===void 0||e.directory===r)&&i.push(e);return i},v=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},y=e=>{r.purgeSession+=1;let t=vg(e);s.delete(yg(t)),u(t);for(let t of wg(e))v(t)},b=(e,t)=>{r.purgeGeneration+=1,d(e,t);let n=[[e,t,xg.canonical],[e,t,xg.transportPageRoot,xg.transportPageKind],[e,t,xg.taskRoot],[e,t,xg.checkpoint]];for(let e of n)v({queryKey:e})},x=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>yg(vg(e)))),o=g({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=bg(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let l=[];for(let e of c.values()){for(let t of e){let e=yg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(yg(e.scope))||m(e.scope)));i.sort((e,t)=>e.dataUpdatedAt===t.dataUpdatedAt?e.scope.sessionID<t.scope.sessionID?-1:+(e.scope.sessionID>t.scope.sessionID):e.dataUpdatedAt-t.dataUpdatedAt);let o=e.length-i.length,c=e.length,u=0;for(;c>t&&u<i.length&&!(c-1<o);){let e=i[u];u+=1,y(e.scope),l.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:l}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:h,listCanonical:g,listCanonicalScopesForSession:_,purgeSession:y,purgeGeneration:b,enforce:x,destructiveReset:async(e,t)=>{r.destructiveReset+=1,y(e);try{let n=await t();return x({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw y(e),t}},noteScopeObserved:p,dispose:()=>{f(),c.clear(),s.clear()}}}var jg=new Map,Mg=new Set;function Ng(e,t){return`${e}\n${t}`}function Pg(){for(let e of Mg)e()}function Fg(e,t){if(!e||!t)return;let n=Ng(e,t),r=jg.get(n)??0;jg.set(n,r+1),r===0&&Pg()}function Ig(e,t){if(!e||!t)return;let n=Ng(e,t),r=jg.get(n);if(r){if(r<=1){jg.delete(n),Pg();return}jg.set(n,r-1)}}function Lg(e,t){if(!e)return!1;if(t)return jg.has(Ng(t,e));let n=`\n${e}`;for(let e of jg.keys())if(e.endsWith(n))return!0;return!1}function Rg(e){return Mg.add(e),()=>{Mg.delete(e)}}var zg=3e4,Bg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function Vg(e,t=zg){let n;try{return await Promise.race([e,new Promise((e,r)=>{n=setTimeout(()=>{r(Error(`session turn page: timed out after ${t}ms`))},t)})])}finally{n!==void 0&&clearTimeout(n)}}var Hg=e=>e?e.toLowerCase().includes(`application/json`):!1,Ug=e=>e?e.toLowerCase().includes(`text/html`):!1;function Wg(e,t){if(!e||typeof e!=`object`)throw Error(`session turn page: expected JSON object`);let n=e;if(n.partial===!0)throw Error(`session turn page: partial responses are not accepted`);if(!Array.isArray(n.records))throw Error(`session turn page: records must be an array`);if(!(`complete`in n)||typeof n.complete!=`boolean`)throw Error(`session turn page: complete must be a boolean`);if(typeof n.turnCount!=`number`||!Number.isFinite(n.turnCount))throw Error(`session turn page: turnCount must be a number`);if(!Number.isInteger(n.turnCount)||n.turnCount<0||n.turnCount>t)throw Error(`session turn page: turnCount must be an integer in 0..${t}`);if(n.cursor!=null&&typeof n.cursor!=`string`)throw Error(`session turn page: cursor must be string or null`);if(typeof n.cursor==`string`&&n.cursor.length===0)throw Error(`session turn page: cursor must not be empty string`);if(n.complete===!0&&n.cursor!=null)throw Error(`session turn page: complete=true requires cursor=null`);if(n.complete===!1&&(n.cursor==null||typeof n.cursor!=`string`))throw Error(`session turn page: complete=false requires non-empty cursor`);let r=[];for(let e=0;e<n.records.length;e++){let t=n.records[e];if(!t||typeof t!=`object`)throw Error(`session turn page: records[${e}] must be an object`);let i=t,a=i.info;if(!a||typeof a!=`object`)throw Error(`session turn page: records[${e}].info must be an object`);let o=a.id;if(typeof o!=`string`||o.length===0)throw Error(`session turn page: records[${e}].info.id must be a non-empty string`);if(`parts`in i&&i.parts!==void 0&&!Array.isArray(i.parts))throw Error(`session turn page: records[${e}].parts must be an array when present`);r.push({info:a,...i.parts===void 0?{}:{parts:i.parts}})}return{records:r,cursor:n.cursor==null?null:n.cursor,complete:n.complete,turnCount:n.turnCount}}async function Gg(e){let t=e.turns??th(),n=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages`,r={directory:e.directory,turns:String(t)};e.before&&(r.before=e.before),typeof e.scanLimit==`number`&&Number.isFinite(e.scanLimit)&&(r.scanLimit=String(Math.floor(e.scanLimit)));let i=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:zg;return Vg((async()=>{let a=await F(n,{method:`GET`,query:r,signal:Bg(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(Ug(o))throw Error(`session turn page: unexpected HTML response`);Hg(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Wg(s,t)})(),i)}async function Kg(e){let t=e.purpose===`prepend`&&e.before?th():eh();return Gg({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var qg=3e4,Jg=2,Yg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),Xg=e=>e?e.toLowerCase().includes(`text/html`):!1,Zg=e=>new Promise(t=>{setTimeout(t,e)});function Qg(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Hh(`session transcript reconcile: ${t} must be string or null`);return e}function $g(e){if(!e||typeof e!=`object`)throw new Hh(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Hh(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Hh(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Hh(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Hh(`session transcript reconcile: resetRequired must be a boolean`);if(typeof t.scannedRecords!=`number`||!Number.isFinite(t.scannedRecords)||!Number.isInteger(t.scannedRecords)||t.scannedRecords<0)throw new Hh(`session transcript reconcile: scannedRecords must be a non-negative integer`);if(typeof t.responseBytes!=`number`||!Number.isFinite(t.responseBytes)||!Number.isInteger(t.responseBytes)||t.responseBytes<0)throw new Hh(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=Qg(t.capturedHeadMessageID,`capturedHeadMessageID`),r=Qg(t.latestHeadMessageID,`latestHeadMessageID`),i=Qg(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Hh(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Hh(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Hh(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Hh(`session transcript reconcile: resetRequired=true requires continuation=null`)}let a=[];for(let e=0;e<t.records.length;e+=1){let n=t.records[e];if(!n||typeof n!=`object`)throw new Hh(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Hh(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Hh(`session transcript reconcile: records[${e}].info.id must be a non-empty string`);if(`parts`in r&&r.parts!==void 0&&!Array.isArray(r.parts))throw new Hh(`session transcript reconcile: records[${e}].parts must be an array when present`);a.push({info:i,...r.parts===void 0?{}:{parts:r.parts}})}return{records:Object.freeze(a),anchorFound:t.anchorFound,capturedHeadMessageID:n,latestHeadMessageID:r,continuation:i,complete:t.complete,resetRequired:t.resetRequired,scannedRecords:t.scannedRecords,responseBytes:t.responseBytes}}function e_(e){let t=typeof e.anchor==`string`&&e.anchor.length>0?e.anchor:void 0,n=typeof e.continuation==`string`&&e.continuation.length>0?e.continuation:void 0;if(!!t==!!n)throw new Hh(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function t_(e,t,n){let r=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages/reconcile`,i={directory:e.directory};return t.anchor&&(i.anchor=t.anchor),t.continuation&&(i.continuation=t.continuation),Vg((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:Yg(e.signal,n)})}catch(e){throw e instanceof Vh||e instanceof Hh||e instanceof Uh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new Uh(t.status,`session transcript reconcile failed (${t.status})`);if(Xg(t.headers.get(`content-type`)))throw new Hh(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Hh(`session transcript reconcile: malformed JSON`)}return $g(a)})(),n)}async function n_(e){let t=e_(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:qg,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):Jg,i=e.sleep??Zg,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await t_(e,t,n)}catch(t){if(t instanceof Vh||t instanceof Hh||t instanceof Uh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!Jh(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var r_=e=>!!(e&&typeof e==`object`&&typeof e.type==`string`),i_=e=>e.filter(r_),a_=e=>{let t=e,n=t.text;return typeof n==`string`?n:t.content||t.value||``},o_=e=>{if(e.type!==`text`)return!1;let t=a_(e);return!t||t.trim().length===0},s_=(e,t={})=>{let{includeReasoning:n=!0}=t,r=i_(e),i=r.some(e=>!e.synthetic);return r.filter(e=>{let t=!!e.synthetic;return t&&e.type===`text`&&a_(e).includes(`<system-reminder>`)||t&&i||!n&&e.type===`reasoning`?!1:e.type!==`patch`})},c_=`GitHub issue context (JSON)`,l_=`GitHub pull request context (JSON)`,u_=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,d_=(e,t)=>{let n=e.trimStart();if(!n.startsWith(t))return null;let r=n.indexOf(`{`);if(r<0)return null;try{return JSON.parse(n.slice(r))}catch{return null}},f_=e=>{let t=d_(e,c_);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!u_(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=d_(e,l_);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!u_(t)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.pull-request-link`,filename:`PR #${t}: ${r}`,url:i}}return null},p_=(e,t)=>{let n=e.trim();return!!(t&&n.startsWith(`User has requested to enter plan mode`)||t&&n.startsWith(`The plan at `)||n.startsWith(`The following tool was executed by the user`))},m_=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),h_=e=>e.trim()===`/compact`,g_=(e,t)=>{let n=t?.planModeEnabled===!0;return e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(m_(t)||h_(t)))return!1}if(e.synthetic!==!0)return!0;if(e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let r=t.trimStart();return p_(t,n)||r.startsWith(c_)||r.startsWith(l_)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=f_(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},__=e=>e.some(e=>{if(e.type===`text`)return!o_(e);if(e.type===`file`){let t=e,n=typeof t.mime==`string`?t.mime:``,r=typeof t.url==`string`?t.url:``;return(!!n||!!r)&&!!r&&!Ie(e)}return!0}),v_=e=>e?.length?__(g_(e)):!1,y_=`oc_asst_session_divider:`,b_=[],x_=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),S_=(e,t=0)=>({info:{id:`${y_}${e}`,role:`system`,time:{created:t}},parts:[]}),C_=e=>e.slice().reverse().flatMap(e=>e.entries),w_=(e,t,n=b_)=>{if(!e.length)return b_;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(S_(n.sessionID,Number(n.info.time?.created??0))),r.push({info:n.info,parts:n.parts,sourceSessionID:n.sessionID,sourceDirectory:n.directory}),i=!0,a=n.sessionID);return r.length===0?b_:k_(n,r)?n:r},T_=(e,t)=>{if(t.length===0)return e;if(e.length===0)return t;let n=new Map;for(let e of t)e?.id&&n.set(e.id,e);for(let t of e)t?.id&&n.set(t.id,t);let r=new Set,i=[];for(let e of t){if(!e?.id||r.has(e.id))continue;let t=n.get(e.id);t&&(i.push(t),r.add(e.id))}for(let t of e)!t?.id||r.has(t.id)||(i.push(t),r.add(t.id));return i.length===e.length&&i.every((t,n)=>t===e[n])?e:i},E_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=T_(e.parts,t.parts);return n===e.parts&&e.info===t.info?e:n===t.parts&&e.info===t.info&&e.parts===t.parts?t:{...e,parts:n,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}}return v_(e.parts)?e:v_(t.parts)?e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}:e.parts.length>0||t.parts.length===0?e:e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}},D_=(e,t,n,r=b_)=>{if(!t)return n.length>0?Array.from(n):b_;let i=new Map,a=0;for(let n of e)n.sessionID===t&&i.set(n.info.id,{message:{info:n.info,parts:n.parts},order:a++});for(let e of n){let t=i.get(e.info.id);i.set(e.info.id,{message:E_(e,t?.message),order:t?.order??a++})}if(i.size===0)return b_;let o=[...i.values()].sort((e,t)=>Number(e.message.info.time?.created??0)-Number(t.message.info.time?.created??0)||e.order-t.order).map(({message:e})=>e);return k_(r,o)?r:o},O_=(e,t)=>{if(!x_(e)||!x_(t))return!1;let n=Number(e.info.time?.created??0),r=Number(t.info.time?.created??0);return e.info.id===t.info.id&&n===r},k_=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||!(r===i||O_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},A_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),j_=e=>e.startsWith(y_);function M_(e,t){if(!e?.id||j_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(A_(t,`subtask`)||A_(t,`compaction`)||t.every(e=>nm(e))):!1}function N_(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.messagesByID[n],i=e.partsByMessageID[n];if(M_(r,i))return n}return null}function P_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function F_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:N_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:P_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function I_(e,t){return{...e,...t}}function L_(e,t){let n=Cg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),r=e.getQueryData(n);if(!r||typeof r!=`object`)return;let i=r;if(i.sessionID===t.sessionID&&i.transport===t.transport&&i.generation===t.generation)return i}function R_(e,t){let n=Cg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function z_(e,t){let n=Cg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function B_(e){return e.slim===!0}var V_=/bearer|token|authorization|password|secret|cookie/i,H_=new Set([`message.part.delta`]);function U_(e){return typeof e==`string`&&e.includes(`-`)}var W_=`openchamber.client-diagnostics.enabled`;function G_(e){return e===`true`||e!==`false`&&null}function K_(e){return e.preference===!0||e.preference!==!1&&U_(e.version)}function q_(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function J_(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function Y_(e){if(e&&typeof e==`object`&&`status`in e){let t=e.status;if(typeof t==`number`&&Number.isFinite(t)&&t>=100&&t<=599)return t}let t=(e instanceof Error?e.message:typeof e==`string`?e:``).match(/\((\d{3})\)/);if(!t)return;let n=Number(t[1]);return n>=100&&n<=599?n:void 0}function X_(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return V_.test(t)?`redacted-error`:t}function Z_(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)B_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function Q_(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function $_(e){let t=0;for(let n of e.messageOrder)pv(e.messagesByID[n])===!0&&(t+=1);return t}function ev(e){let t=e.transcript?Z_(e.transcript.partsByMessageID):void 0;return{at:(e.now??Date.now)(),feat:`transcript`,kind:e.kind,sessionID:e.sessionID,...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.source?{source:e.source}:{},...e.durationMs===void 0?{}:{durationMs:e.durationMs},...e.request?{requestStatus:e.request.status}:{},...e.hydration?{hydrationPhase:e.hydration.phase,p0Satisfied:e.hydration.p0Satisfied}:{},...e.transcript?{messageCount:e.transcript.messageOrder.length,lastMessageIDs:Q_(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:$_(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...X_(e.error??e.request?.error)?{error:X_(e.error??e.request?.error)}:{},...Y_(e.error)===void 0?{}:{httpStatus:Y_(e.error)}}}function tv(e={}){let t=e.limit??500,n=[];return{append(e){n.push(e),n.length>t&&n.splice(0,n.length-t)},async read(){return n.slice()},async clear(){n.length=0}}}function nv(e){return{isEnabled:e.isEnabled,record(t){e.isEnabled()&&Promise.resolve(e.sink.append(t)).catch(()=>void 0)},async exportReport(){let t=await e.sink.read(),n=[...new Set(t.map(e=>e.feat))];return JSON.stringify({schema:`openchamber.client-diagnostics.v1`,exportedAt:Date.now(),eventCount:t.length,feats:n,events:t},null,2)},clear:()=>e.sink.clear()}}function rv(e){return typeof e==`string`&&H_.has(e)}function iv(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return rv(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>rv(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function av(e){if(e.type===`http-page`)return e.purpose}function ov(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function sv(e){switch(e.type){case`http-page`:return`network`;case`sse-event`:case`sse-event-batch`:return`sse`;case`materialize-snapshots`:return`durable-cache`;default:return}}function cv(e){return e.__openchamberOptimistic===!0}function lv(e){let t=[];for(let n of e){if(n.type!==`text`)continue;let e=typeof n.text==`string`?n.text.trim():``;e&&t.push(e)}let n=t.join(`
461
- `).trim();if(n)return V_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function uv(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function dv(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var fv=e=>typeof e==`string`&&e.trim().length>0;function pv(e){if(!e||uv(e)!==`assistant`)return;let t=e,n=!fv(t.mode)&&!fv(t.agent),r=!fv(t.modelID)||!fv(t.providerID);return n||r}function mv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function hv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)B_(e)?r+=1:i+=1,cv(e)&&(a=!0);let o=e.messagesByID[t],s=uv(o),c=pv(o),l=s===`user`?lv(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:dv(o),...s?{role:s}:{},...l?{text:l}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function gv(e,t){let n=new Map(e.messages.map(e=>[e.id,e])),r=new Map(t.messages.map(e=>[e.id,e])),i=new Set(e.messageIDs),a=new Set(t.messageIDs),o=t.messageIDs.filter(e=>!i.has(e)),s=e.messageIDs.filter(e=>!a.has(e)),c=[],l=[],u=[],d=[];for(let t of e.messageIDs){let e=n.get(t);if(!e)continue;let i=r.get(t);if(!i){e.optimistic&&u.push(t);continue}(e.partCount!==i.partCount||e.slimCount!==i.slimCount||e.fullCount!==i.fullCount||e.optimistic!==i.optimistic)&&c.push({id:t,before:mv(e),after:mv(i)}),e.fullCount>0&&i.fullCount===0&&i.slimCount>0&&l.push(t),e.optimistic&&!i.optimistic&&!i.completed&&u.push(t),e.identityMissing!==!0&&i.identityMissing===!0&&d.push(t)}return{addedMessageIDs:o,removedMessageIDs:s,partsChanged:c,downgraded:l,optimisticLost:u,identityLost:d}}function _v(e){return{at:(e.now??Date.now)(),feat:`transcript`,kind:`transcript-diff`,sessionID:e.sessionID,trigger:e.trigger,before:e.before,after:e.after,diff:gv(e.before,e.after),...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.purpose?{purpose:e.purpose}:{}}}function vv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function yv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function bv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function xv(e){let t=bv(e.partID),n=bv(e.messageID),r=bv(e.directory),i=bv(e.childSessionID),a=bv(e.toolStatus),o=bv(e.surfaceKind);return{directoryPresent:e.directoryPresent,childSessionPresent:e.childSessionPresent,finalized:e.finalized,backgroundRunning:e.backgroundRunning,effectiveActive:e.effectiveActive,suppressLoading:e.suppressLoading,delegating:e.delegating,childStatus:e.childStatus,parentStatus:e.parentStatus,idleConfirmed:e.idleConfirmed,navigateCapability:e.navigateCapability,...t?{partID:t}:{},...n?{messageID:n}:{},...r?{directory:r}:{},...i?{childSessionID:i}:{},...a?{toolStatus:a}:{},...o?{surfaceKind:o}:{},...e.taskStartedAt===void 0?{}:{taskStartedAt:e.taskStartedAt},...e.statusObservedAt===void 0?{}:{statusObservedAt:e.statusObservedAt},...e.statusSnapshotAt===void 0?{}:{statusSnapshotAt:e.statusSnapshotAt}}}function Sv(e){return[e.sessionID,bv(e.partID)??``,e.childSessionPresent?`1`:`0`,bv(e.childSessionID)??``,bv(e.toolStatus)??``,e.finalized?`1`:`0`,e.backgroundRunning?`1`:`0`,e.effectiveActive?`1`:`0`,e.suppressLoading?`1`:`0`,e.delegating?`1`:`0`,e.childStatus,e.parentStatus,e.idleConfirmed?`1`:`0`,e.navigateCapability?`1`:`0`,e.directoryPresent?`1`:`0`,bv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Cv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...xv(e)}}function wv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:yv(e),...xv(e)}}var Tv=`openchamber-transcript-diagnostics`,Ev=`events`,Dv=1,Ov=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),kv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Dv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Ev)||e.createObjectStore(Ev,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),Av=(e=Tv)=>({async append(t,n){let r=await kv(e);try{let e=r.transaction(Ev,`readwrite`).objectStore(Ev);await Ov(e.add(t));let i=await Ov(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await Ov(e.delete(t))}finally{r.close()}},async read(){let t=await kv(e);try{return await Ov(t.transaction(Ev,`readonly`).objectStore(Ev).getAll())}finally{t.close()}},async clear(){let t=await kv(e);try{await Ov(t.transaction(Ev,`readwrite`).objectStore(Ev).clear())}finally{t.close()}}});function jv(e={}){let t=e.driver??Av(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Mv=Qe(`OpenChamberMedia`);function Nv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Pv(){return Ge()&&$e!==void 0&&$e.isPluginAvailable(`OpenChamberMedia`)}function Fv(){return`1.18.6-beta.1`}function Iv(){if(typeof localStorage>`u`)return null;try{return G_(localStorage.getItem(W_))}catch{return null}}function Lv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(W_,e?`true`:`false`)}catch{}}function Rv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var zv;function Bv(e=Fv()){return K_({version:e,preference:Iv()})}function Vv(e={}){return nv({sink:Rv()===`indexeddb`?(e.createIndexedDBSink??jv)():(e.createMemorySink??tv)(),isEnabled:e.isEnabled??Bv})}function Hv(){return zv??=Vv(),zv}function Uv(e){Hv().record(e)}function Wv(e){try{return Bv()?hv(e()):void 0}catch{return}}function Gv(e){try{Uv(_v(e))}catch{}}function Kv(e){try{Uv(Cv(e))}catch{}}function qv(e){try{Uv(wv(e))}catch{}}function Jv(e){let t=iv(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&Uv(ev({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:e.transcript,request:e.request,hydration:e.hydration,command:e.command.type,purpose:av(e.command),sseType:ov(e.command),source:sv(e.command),error:e.error}))}async function Yv(){let e=await Hv().exportReport(),t=Te()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function Xv(e,t=q_()){if(Pv())return(await Mv.saveFile({dataBase64:Nv(e),mimeType:`application/json`,filename:t}))?.cancelled?`cancelled`:`saved`;if(typeof document>`u`)return`failed`;let n=new Blob([e],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);return i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),`downloaded`}async function Zv(){let e=await Yv(),t=q_();return{content:e,fileName:t,outcome:await Xv(e,t),eventCount:J_(e)}}function Qv(e){let t=e.directory.trim(),n=new Set,r=[],i=e=>{!e||n.has(e)||(n.add(e),r.push({directory:t,sessionID:e}))};for(let n of e.viewedSessions??[])n.directory.trim()===t&&i(n.sessionID);e.viewed?.directory.trim()===t&&i(e.viewed.sessionID);for(let t of e.busyOrRetrySessionIDs??[])i(t);for(let n of e.activeScopes)n.directory.trim()===t&&i(n.sessionID);return r}var $v=2,ey=6e4,ty=6e4;function ny(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??i)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??h)()}}function ry(e,t){let n=(t.probe?.getTransport??i)(),r=(t.probe?.getGeneration??h)();if(n!==e.transport||r!==e.generation)throw new Vh}function iy(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function ay(e,t){return vg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function oy(e,t){return`${e.trim()}\n${t}`}function sy(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Ag({client:t,activeRegistry:Tg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??$v)),o=e.fetchReconcile??n_,s=e.now??Date.now,c=Math.max(0,e.destructiveResetDedupeMs??ey),l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Set,_=new Map,v=new Set,y=new Map,b=(e,t)=>{g.add(oy(e,t))},x=(e,t)=>{g.delete(oy(e,t))},S=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},C=e=>{u+=1;for(let e of[...f.keys()])S(e);p.clear(),m.clear(),y.clear()},w=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(oy(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of r.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&i.set(oy(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(i.values())},T=(t,n)=>{let i=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of r.listCanonical({transport:t.transport,generation:t.generation}))i.add(e.scope.directory);for(let e of r.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&i.add(e.directory);for(let e of n)e.directory&&i.add(e.directory.trim());return i},E=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=oy(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},D=i=>{if(l)return;let a={transport:i.transport??ny(e).transport,generation:i.generation??ny(e).generation},o=s(),c=E(),u=T(a,c),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(oy(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of r.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(oy(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of c)f.set(oy(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(oy(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=iy(e,a),s=n.getTranscript(r),c=F_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:i.lastEventID,capturedAt:o});R_(t,c)}let p=new Set;for(let t of u){let n=Qv({directory:t,activeScopes:w(a,t),viewedSessions:c,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(oy(e.directory,e.sessionID))}for(let e of d){let t=oy(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=Wv(()=>n.getTranscript(e)),a=n.getTranscript(e).liveRevision,o=n.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:t.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:r,liveRevision:a});try{let t=Wv(()=>n.getTranscript(e));i&&t&&Gv({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},k=e=>{let t=n.getTranscript(e),r=t.messageOrder[t.messageOrder.length-1];if(!r)return!1;let i=t.messagesByID[r];return!i||i.role!==`assistant`?!1:zs(i)},A=async(r,i,a)=>{if(ry({transport:i.transport,generation:i.generation},e),a!==u)throw new Vh;R_(t,I_(L_(t,i)??F_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let o=Wv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),ry({transport:i.transport,generation:i.generation},e),a!==u)throw new Vh;z_(t,i),x(i.directory,i.sessionID),y.set(oy(i.directory,i.sessionID),s());try{let e=Wv(()=>n.getTranscript(r));o&&e&&Gv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw R_(t,I_(L_(t,i)??F_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},j=async(r,i,a)=>{if(ry({transport:i.transport,generation:i.generation},e),a!==u)throw new Vh;R_(t,I_(L_(t,i)??F_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Wv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),ry({transport:i.transport,generation:i.generation},e),a!==u)throw new Vh;z_(t,i),x(i.directory,i.sessionID);try{let e=Wv(()=>n.getTranscript(r));o&&e&&Gv({trigger:`reconnect-compensation-ensure-tail`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw R_(t,I_(L_(t,i)??F_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},ee=async(r,i,a,l)=>{let d=iy(r,i),f=ay(r,i),p=Sg({directory:f.directory,sessionID:f.sessionID,checkpoint:String(L_(t,f)?.capturedAt??s())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:s()});try{if(ry(i,e),a!==u||l.aborted)throw new Vh;let m=L_(t,f);if(m||(m=F_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:s()}),R_(t,m)),!m.anchorMessageID){if(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}m=I_(m,{state:`reconciling`}),R_(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,ry(i,e),a!==u||l.aborted)throw new Vh;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,ry(i,e),a!==u||l.aborted)throw new Vh;let g=n.getTranscript(d).liveRevision;if(!_&&!h){await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()});return}let x=await o({sessionID:r.sessionID,directory:r.directory.trim(),..._?{continuation:_}:{anchor:h},signal:l});if(ry(i,e),a!==u||l.aborted)throw new Vh;if(x.resetRequired){let n=y.get(oy(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}if(S===1&&(v=x.capturedHeadMessageID),b=x.latestHeadMessageID??b,x.records.length>0&&O(d,x,g),m=I_(L_(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),R_(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=I_(L_(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),R_(t,m);continue}if(m=I_(L_(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),R_(t,m),x(r.directory,r.sessionID),t.setQueryData(p,{status:`complete`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}{let n=y.get(oy(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}}}catch(n){if(n instanceof Vh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(p,{status:`cancelled`,finishedAt:s()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(p,{status:`error`,finishedAt:s(),code:n instanceof Error?n.name:`error`}),n}},te=t=>{let n=t.trim(),r=m.get(n)??0;if(r>=a)return;let i=p.get(n);if(!i||i.length===0)return;let o=i.shift();m.set(n,r+1);let s=oy(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),te(n);return}let c=ny(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{Fg(n,o.sessionID);try{await ee(o,c,l,h.signal)}catch{}finally{Ig(n,o.sessionID),f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),te(n)}})();d.set(s,g)},M=e=>{let t=e.directory.trim(),n=oy(t,e.sessionID);if(d.has(n))return;let r=p.get(t);r||(r=[],p.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),te(t))},ne=t=>{let n=E(),i=T(t,n);for(let a of i){let i=Qv({directory:a,activeScopes:w(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)M(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=oy(e.scope.directory,e.scope.sessionID);i.some(e=>oy(e.directory,e.sessionID)===t)||b(e.scope.directory,e.scope.sessionID)}}},re=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??i)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??h)(),a=(e.probe?.getTransport??i)();if(r!==n.generation||a!==n.transport){C(`generation_mismatch`);return}ne(n)},ie=t=>{if(l)return;let r=t.directory.trim(),i=ny(e,t),a=iy({directory:r,sessionID:t.sessionID},i),c=yg(ay({directory:r,sessionID:t.sessionID},i)),u=_.get(c);if(u&&s()-u.checkedAt<ty||v.has(c)||d.has(oy(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(v.add(c),(async()=>{try{if(ry(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(ry(i,e),l||(_.set(c,{checkedAt:s()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;O(a,u,d)}catch{}finally{v.delete(c)}})())};return{captureCheckpoints:D,onCompensation:re,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=oy(i,r.sessionID);if(!g.has(a))return ie(r),null;x(i,r.sessionID);let o=ny(e,r),s=iy({directory:i,sessionID:r.sessionID},o),c=ay({directory:i,sessionID:r.sessionID},o),u=L_(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){M({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{ry(o,e),Fg(i,r.sessionID);try{let e=await n.ensureInitial(s);return z_(t,c),e}finally{Ig(i,r.sessionID)}}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:C,getCheckpoint:n=>{let r=ny(e,n);return L_(t,ay({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(oy(e,t)),destroy:()=>{l=!0,C(`destroy`)}}}var cy=e=>e.trim(),ly=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session status runtime changed`)},uy=(e,t={})=>{let n=cy(e),r=t.transport??i(),a=t.loadSnapshot??((e,t)=>z.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,s=t.runtimeProbe??{},c=(s.getGeneration??h)();return ot({queryKey:N.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{ly(r,c,s);let t=o(),i=await a(n,e);if(ly(r,c,s),i===null)throw Error(`session status snapshot unavailable`);return{snapshot:i,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},dy=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(uy(e,r))},fy=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session active runtime changed`)},py=(e={})=>{let t=e.transport??i(),n=e.loadActive??(e=>z.getSessionActive(e)),r=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??h)();return ot({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{fy(t,o,a);let i=r(),s=await n(e);return fy(t,o,a),{result:s,requestedAt:i}},staleTime:0,gcTime:3e5,retry:!1})},my=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(py(n))},hy;function gy(e){hy=e}function _y(e){if(e){if(e.type===`idle`||e.type===`busy`)return{type:e.type};if(e.type===`retry`&&typeof e.attempt==`number`&&typeof e.message==`string`&&typeof e.next==`number`)return{type:`retry`,attempt:e.attempt,message:e.message,next:e.next}}}function vy(e,t){return JSON.stringify(e)===JSON.stringify(t)}function yy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function by(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>({session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n}})),!0)}function xy(e,t,n,r=Date.now(),i){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let a=e.membership,o=t??{},s=new Set([...n,...Object.keys(o)]);if(s.size===0)return{snapshot:null,source:`none`};let c={};for(let e of s){let t=Object.prototype.hasOwnProperty.call(a,e),n=_y(o[e]);if(t){c[e]=n&&yy(n,r)?n:{type:`busy`};continue}if(i?.tailOpenSessionIds?.has(e)){c[e]=n?.type===`retry`?n:{type:`busy`};continue}c[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:c,source:`fused`}}function Sy(e,t,n,r){if(n.length===0)return!1;let i=!1;return e.setState(e=>{let a=e.session_status??{},o,s,c=()=>o??={...a},l=()=>s??={...e.session_status_observed_at},u=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(l()[t]=r,i=!0)};for(let o of n){if(r!==void 0&&(e.session_status_observed_at[o]??-1/0)>=r)continue;let n=_y(t[o]);if(n&&n.type!==`idle`){vy(a[o],n)||(c()[o]=n,i=!0),u(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(c()[o]={type:`idle`},i=!0),u(o)}return!o&&!s?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{}}}),i}function Cy(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function wy(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await dy(e,{client:o,loadSnapshot:r.loadSnapshot,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),f=r.skipActive?Promise.resolve(null):(async()=>{try{return await my({client:o,loadActive:r.loadActive,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),[p,m]=await Promise.all([d,f]);if(c=p,m&&(l=m.result,u=m.requestedAt),r.isStale?.())return null;let h=c?.snapshot??null,g=l?.state===`supported`;if(h===null&&!g)return null;let{snapshot:_,source:v}=xy(l,h,n,Date.now(),{tailOpenSessionIds:r.tailOpenSessionIds});if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=Cy(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Sy(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??hy;if(S){let n=t.getState().session_status??{},r={};for(let e of x){let t=n[e];t&&t.type!==`idle`&&(r[e]={type:t.type})}S(e,r,x)}return _}async function Ty({directory:e,sessionID:t,store:n,statusBeforePull:r,statusObservedAtBeforePull:i,hasMessages:a,isTailPage:o=!0,isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m}){if(!o||!a||!r||r.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:wy(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Ey(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Dy(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts??[]})),cursor:typeof e.cursor==`string`?e.cursor:void 0,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function Oy(e){if(e.type===`message.part.delta`)return{action:`skip`};let t=e.properties;if(e.type===`message.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`remove`,messageID:e}:{action:`skip`}}if(e.type===`message.updated`){let e=t?.info;return typeof e?.id==`string`&&e.id.length>0?{action:`persist`,messageID:e.id}:{action:`skip`}}if(e.type===`message.part.updated`){let e=t?.part;return typeof e?.messageID==`string`&&e.messageID.length>0?{action:`persist`,messageID:e.messageID}:{action:`skip`}}if(e.type===`message.part.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`persist`,messageID:e}:{action:`skip`}}return{action:`skip`}}function ky(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(nc(e))??Promise.resolve(),r.get(ic(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=nc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=ic(e),i=(r.get(n)??Promise.resolve()).then(t,t);return r.set(n,i.then(()=>void 0,()=>void 0)),i};return{wait:i,persistSettled:(n,r,i)=>a(n,async()=>{if((await e.upsertSettled(n,r,i)).status!==`written`)return;let a=(t.getByteBudget??gg)();await e.evictToBytes(a,{protect:t.getProtectScopes?.()??[]})}),removeMessage:(t,n)=>a(t,()=>e.removeMessage(t,n)),clearSession:t=>a(t,()=>e.clearSession(t)),clearGeneration:t=>o(t,()=>e.clearGeneration(t))}}var Ay=new Map;function jy(e,t){let n=Ay.get(e);if(n)return n;let r=t().finally(()=>{Ay.get(e)===r&&Ay.delete(e)});return Ay.set(e,r),r}var My=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Ny(e){return jy(My(e),e.request)}function Py(e,t){return`${e}\n${t}`}var Fy=new Map;function Iy(e){return Fy.get(e)}async function Ly(e){return Ny({runtimeKey:Py(e.transport,e.generation),directory:e.directory,sessionID:e.sessionID,messageID:e.messageID,request:async()=>{let t=await e.request();if(t.error)throw Error(`session.message failed`);let n=t.data,r=n?.info,i=n?.parts??t.parts??[];if(!r?.id)throw Error(`session.message failed: empty response`);return Fy.set(r.id,i),{info:up(r),parts:i}}})}function Ry(e,t){let n=e.info;return n.role===t||n.clientRole===t}function zy(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Ry(i,`assistant`))continue;let e=i.info.parentID;if(!(!e||t.has(e)||r.has(e))&&(r.add(e),n.push(e),n.length===8))break}return n}async function By(e){if(e.complete){let t=e.records.some(e=>Ry(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=zy(e.records);if(t.length===0){let t=e.records.some(e=>Ry(e,`user`));return{records:e.records,boundaryFound:t,partial:!t}}let n=await Promise.all(t.map(async t=>{try{return await e.requestMessage(t)}catch{return null}})),r=new Map;for(let t of e.records)r.set(t.info.id,t);for(let e of n)e?.info?.id&&r.set(e.info.id,e);let i=[...r.values()].sort((e,t)=>e.info.id.localeCompare(t.info.id)),a=i.some(e=>Ry(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Vy(e){return e.trim()}function Hy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??i)(),r=e.generation??t.generation??(t.probe?.getGeneration??h)();return{directory:Vy(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function Uy(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:il,liveRevision:0}}function Wy(e,t){if(!e||e.pages.length===0)return Uy(t);let n=Bh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function Gy(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function Ky(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function qy(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=Gy(e.info);t!==void 0&&(n===void 0||t<n)&&(n=t)}if(n===void 0)return[];let r=new Set(t.records.map(e=>e.info.id)),i=[];for(let t of e.messageOrder){if(r.has(t))continue;let a=Gy(e.messagesByID[t]);a===void 0||a<=n||Ky(e.partsByMessageID[t])||i.push(t)}return i}function Jy(e={}){let t=e.client??L,n=e.cacheBudget??Ag({client:t,activeRegistry:e.activeRegistry??Tg()}),r=n.activeRegistry,a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=e.durableStore?ky(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Ey),getByteBudget:e.getDurableByteBudget}):void 0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=Wy(w(e),t.sessionID);!Cl(r)&&!v.has(n)||(y.add(n),Uv(ev({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=l.get(e);return t||(t={messages:new Map,parts:new Map},l.set(e,t)),t},w=n=>{let r=Hy(n,e);return lg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=Hy(t,e);return Zh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=Hy(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let r=e.probe??{getTransport:i,getGeneration:h},o=Hy(n,{...e,transport:void 0,generation:void 0,probe:r}),s=K(o),c=a.get(s);if(c)return c;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=sg({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(s,l),l},k=t=>{let n=K(Hy(t,e));l.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(Hy(n,e));if(s.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});s.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=s.get(e);n&&(n(),s.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of p.keys())t.startsWith(e)&&p.delete(t);for(let t of m.keys())t.startsWith(e)&&m.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of p)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of m.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=Hy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{u&&u.persistSettled(Ey(e),t,n??[])},le=(e,t,n,r)=>{if(!u||S>0||!r.applied||!r.changed)return;let i=Ey(t);if(n.type===`remove-message`){u.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(u.clearSession(i),n.page){let r=Wy(w(e),t.sessionID);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;ce(t,n,r.partsByMessageID[e.info.id]??e.parts)}}return}if(n.type!==`optimistic-add`&&n.type!==`optimistic-confirm`&&n.type!==`optimistic-remove`){if(n.type===`sse-event`||n.type===`sse-event-batch`){let r=n.type===`sse-event`?[n.event]:n.events,a=Wy(w(e),t.sessionID);for(let e of r){let n=Oy(e);if(n.action===`remove`){u.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=Wy(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:i,getGeneration:h},s={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??eh()};return Dy(r?.fresh?await t.fetchQuery({...tg(s,a,n.transport,o,n.generation),staleTime:0}):await ng(s,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)lu(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now();d.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return d.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Hm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let a=g.get(r);if(a&&a.size>0){let n=[],r=0;for(let o of i.records){let i=o.info.id;if(!(!i||!a.has(i))){if(!_l(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),p.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Vh||!se(t))return d.delete(r),P.getTranscript(e);throw d.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Uv(ev({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:Wy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{f.delete(r)}})();return f.set(r,a),a},fe=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;d.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return d.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||tu(t.sessionID,t.directory)?(d.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Hm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return d.delete(r),n instanceof Vh||!se(t)||Uv(ev({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`reconcile-page`,durationMs:Date.now()-i,transcript:Wy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{f.delete(r)}})();return f.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(Hy(t,e)))?!0:dh(n).kind===`unknown`},P={getTranscript(t){let n=Hy(t,e),r=K(n),i=Wy(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=Hy(t,e),r=K(n),i=P.getTranscript(t);return te(r,Dl(n.sessionID,i.boundary))},getRequestState(t){let n=Hy(t,e),r=d.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=Hy(t,e),r=K(n),i=P.getTranscript(t);Cl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:wl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:bl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(Hy(t,e)),i=C(r),a=P.getTranscript(t).messagesByID[n];return i.messages.has(n)&&i.messages.get(n)===a?i.messages.get(n):(i.messages.set(n,a),a)},getParts(t,n){let r=K(Hy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??Yy,o=i.parts.get(n);return o===a||o&&a&&o.length===a.length&&o.every((e,t)=>e===a[t])?o??a:(i.parts.set(n,a),a)},getMessageMaterializationState(t,n){let r=Hy(t,e),i=p.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||gl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=Hy(t,e),i=M(r,n),a=Wv(()=>P.getTranscript(t)),o=e=>{try{let t=Wv(e);if(!a||!t)return;Gv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=m.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return p.set(i,{status:`idle`}),P.getTranscript(t);if(!gl(P.getParts(t,n))&&!g.get(K(r))?.has(n))return p.set(i,{status:`ready`}),P.getTranscript(t);p.set(i,{status:`loading`}),k(t);try{let a=await Ly({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return z.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return se(r)?(P.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),gl(P.getParts(t,n))?p.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):p.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(p.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return p.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return p.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return m.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{m.get(i)===c&&m.delete(i)}),c},apply(r,i){let a=Hy(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=cg(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&_.delete(K(a)),e.result.changed&&(k(r),D(r)),e.result}case`sse-event`:{let e=cg(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`sse-event-batch`:{let e=cg(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=cg(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&k(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),cg(t,o,a.sessionID,{type:`optimistic-confirm`,messageID:i.messageID}).result;case`optimistic-remove`:{e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID});let n=cg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&k(r),n.result}case`reset`:{if(b.delete(K(a)),g.delete(K(a)),_.delete(K(a)),n.purgeSession(E(r)),!i.page)return k(r),{applied:!0,changed:!0};let e=cg(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(k(r),D(r)),e.result}case`materialize-snapshots`:return Xy(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=cg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&k(r),e.result}default:return{applied:!1,changed:!1}}})();return le(r,a,i,s),s.applied&&(Jv({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:Wy(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,i){let a=K(Hy(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);c.set(a,r.retain(e)),n.noteScopeObserved(e)}return s.add(i),A(t),()=>{let e=o.get(a);if(e){if(e.delete(i),e.size===0){let e=c.get(a);e&&(e(),c.delete(a))}j(a)}}},async ensureInitial(t){let i=Hy(t,e),a=K(i);if(u&&await u.wait(Ey(i)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Ey(i));if(se(i)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)_l(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Uv(ev({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,i);return Uv(ev({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!r.isRetained(E(t))){let e=Date.now(),n=await fe(t,i);return Uv(ev({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;d.delete(a);try{await s.ensureInitial()}catch(e){throw Uv(ev({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:Wy(w(t),i.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}d.delete(a),l||Hm(i.directory,i.sessionID,{transport:i.transport,generation:i.generation}),n.noteScopeObserved(E(t)),D(t);let f=P.getTranscript(t);return Uv(ev({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:f,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),f},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),dh(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=Hy(t,e),r=K(n);b.add(r),k(t);let i=Date.now();try{await O(t).fetchPreviousPage(),D(t);let e=P.getTranscript(t);return Uv(ev({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),e}catch(e){throw Uv(ev({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{b.delete(r),k(t)}},getController(t){let n=Hy(t,e);return a.get(K(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=Hy(t,e),i=Wv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??eh(),signal:new AbortController().signal}),s=P.getTranscript(t).liveRevision;if(P.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:o.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:s}),s<=a){let n=qy(P.getTranscript(t),o);for(let i of n)P.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let c=P.getTranscript(t);n.noteScopeObserved(E(t));try{let e=Wv(()=>c);i&&e&&Gv({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:i,after:e})}catch{}return c},async destructiveReset(t){let r=Wv(()=>P.getTranscript(t)),i=E(t);return u&&await u.clearSession(Ey(Hy(t,e))),n.destructiveReset(i,async()=>{let n=Hy(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),l.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=Wv(()=>s);r&&e&&Gv({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=K(Hy(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),l.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),l.delete(n);let e=c.get(n);e&&(e(),c.delete(n));let t=s.get(n);t&&(t(),s.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),u&&u.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of s.values())e();s.clear();for(let e of c.values())e();c.clear(),o.clear(),l.clear(),d.clear(),f.clear(),p.clear(),m.clear(),g.clear(),v.clear(),y.clear(),b.clear(),n.dispose()}};return P}var Yy=Object.freeze([]);function Xy(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=cg(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var Zy=`/api/openchamber/transcript-cache`,Qy=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),$y=e=>typeof e==`object`&&!!e&&!Array.isArray(e),eb=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},tb=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},nb=e=>{if(!$y(e))throw Error(`Invalid transcript cache scope`);return{transport:eb(e.transport,`scope`),generation:tb(e.generation,`scope`),directory:eb(e.directory,`scope`),sessionID:eb(e.sessionID,`scope`)}},rb=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},ib=e=>{if(!$y(e)||!$y(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!$y(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:nb(e.scope),messageID:eb(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>rb(e,`part completeness`)),completeness:rb(e.completeness,`completeness`),contentHash:eb(e.contentHash,`content hash`),byteSize:tb(e.byteSize,`byte size`),lastAccessedAt:tb(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:tb(e.sortKey.created,`sort key`),messageID:eb(e.sortKey.messageID,`sort key`)}}},ab=(e,t)=>{if(!$y(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(ib);return{scope:e.scope===void 0?_c(t):nb(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},ob=e=>{if(!$y(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:ib(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!Qy.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:ib(e.record)}}}throw Error(`Invalid transcript cache upsert`)},sb=e=>{if(!$y(e))throw Error(`Invalid transcript cache evict`);return{evicted:tb(e.evicted,`evict`),freedBytes:tb(e.freedBytes,`evict`),remainingBytes:tb(e.remainingBytes,`evict`)}},cb=e=>({scope:_c(e),records:[],byteSize:0}),lb=(e,t)=>$y(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,ub=async e=>{if(e.status===204)return;let t=await e.text();if(t)try{return JSON.parse(t)}catch{throw Error(`Invalid transcript cache payload`)}},db=async(e,t,n)=>{let r=await e(t,n);if(r.status===501)return{kind:`disabled`};if(r.status===404)return{kind:`not-found`};if(r.ok)return{kind:`ok`,payload:await ub(r)};let i=await ub(r).catch(()=>void 0);throw Error(lb(i,`Transcript cache request failed (${r.status})`))},fb=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),pb=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function mb(e={}){let t=e.fetch??F;return{async readSession(e){let n=await db(t,`${Zy}/session`,{method:`GET`,query:fb(e)});return n.kind===`disabled`||n.kind===`not-found`?cb(e):ab(n.payload,e)},async readMessage(e,n){let r=await db(t,`${Zy}/message`,{method:`GET`,query:{...fb(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!$y(r.payload))throw Error(`Invalid transcript cache record`);return ib(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await db(t,`${Zy}/message`,pb(`PUT`,{scope:e,info:n,parts:r}));if(i.kind===`disabled`)return{status:`skipped`,reason:`unchanged`};if(i.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return ob(i.payload)},async removeMessage(e,n){let r=await db(t,`${Zy}/message`,pb(`DELETE`,{scope:e,messageID:n}));if(r.kind!==`disabled`&&r.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearSession(e){let n=await db(t,`${Zy}/session`,pb(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await db(t,`${Zy}/generation`,pb(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await db(t,`${Zy}/evict`,pb(`POST`,{maxBytes:e,...n?.protect?{protect:n.protect}:{}}));if(r.kind===`disabled`)return{evicted:0,freedBytes:0,remainingBytes:0};if(r.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return sb(r.payload)},async clearAll(){let e=await db(t,`${Zy}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var hb=`openchamber-transcript-durable`,gb=1,_b=`transcriptIndex`,vb=`transcriptContent`,yb=class extends Error{code;constructor(e){super(e),this.code=e}},bb=e=>({id:rc(e.scope,e.messageID),scope:_c(e.scope),scopeKey:nc(e.scope),generationKey:ic(e.scope),messageID:e.messageID,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID},contentHash:e.contentHash,completeness:e.completeness,partCompleteness:e.partCompleteness.slice(),byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt}),xb=(e,t)=>({scope:_c(e.scope),messageID:e.messageID,info:gc(t.info),parts:gc(t.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),Sb=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return xb(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Cb=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},wb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Tb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new yb(`database-unavailable`));return}let r=indexedDB.open(e,gb),i=!1,a=()=>{i||(i=!0,n(new yb(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(_b)){let t=e.createObjectStore(_b,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(vb)||e.createObjectStore(vb,{keyPath:`id`})},r.onsuccess=()=>{let e=r.result;if(e.onversionchange=()=>e.close(),i){e.close();return}i=!0,t(e)},r.onerror=a,r.onblocked=a}),Eb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new yb(`database-unavailable`)),r.onblocked=()=>void 0}),Db=(e=hb)=>({transaction:async t=>{let n=await Tb(e),r=n.transaction([_b,vb],`readwrite`),i=r.objectStore(_b),a=r.objectStore(vb),o=e=>wb(e,r),s=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{console.error(`Transcript durable IndexedDB transaction error`,r.error)}}),c;try{let e=await t({getIndex:e=>o(i.get(e)),getAllIndexes:()=>o(i.getAll()),getIndexesByScope:e=>o(i.index(`scopeKey`).getAll(e)),getIndexesByGeneration:e=>o(i.index(`generationKey`).getAll(e)),putIndex:async e=>{await o(i.put(e))},deleteIndex:async e=>{await o(i.delete(e))},getContent:e=>o(a.get(e)),putContent:async e=>{await o(a.put(e))},deleteContent:async e=>{await o(a.delete(e))},clearAll:async()=>{await o(i.clear()),await o(a.clear())}});return await s,e}catch(e){c=e;try{r.abort()}catch{}try{await s}catch(e){c===void 0&&(c=e)}throw c}finally{n.close()}},destroy:()=>Eb(e)});function Ob(e,t={}){let n=vc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(bb(t)),yc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(nc(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=xb(t,r);a.lastAccessedAt=n(),await e.putIndex(bb(a)),i.push(a)}return bc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Sb(e,rc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=xc({info:i,incomingCompleteness:lc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=gc(a.slice()),c=lc(s),l=await fc(i,s),u=rc(t,i.id);return e.transaction(async e=>{let a=await Sb(e,u),o=xc({info:i,existing:a,incomingCompleteness:c,incomingHash:l.hash});if(o.status===`skipped`)return o.reason===`slim-downgrade`&&a?{status:`skipped`,reason:`slim-downgrade`,record:yc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:_c(t),messageID:i.id,info:gc(i),parts:s,partCompleteness:s.map(cc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:oc(i)};return await e.putIndex(bb(d)),await e.putContent({id:u,info:gc(i),parts:s}),{status:`written`,record:yc(d)}})},async removeMessage(t,n){await e.transaction(e=>Cb(e,rc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(nc(t));for(let t of n)await Cb(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(ic(t));for(let t of n)await Cb(e,t.id)})},async evictToBytes(t,n){return e.transaction(async e=>{let r=Number.isFinite(t)?Math.max(0,t):0,i=new Set((n?.protect??[]).map(nc)),a=await e.getAllIndexes(),o=0;for(let e of a)o+=e.byteSize;if(o<=r)return{evicted:0,freedBytes:0,remainingBytes:o};let s=a.filter(e=>!i.has(e.scopeKey)).sort((e,t)=>e.lastAccessedAt===t.lastAccessedAt?ac(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Cb(e,t.id),o-=t.byteSize,l+=t.byteSize,c+=1}return{evicted:c,freedBytes:l,remainingBytes:o}})},async clearAll(){await e.transaction(async e=>{await e.clearAll()})},async destroy(){await e.destroy()}}}function kb(e={}){return Ob(e.driver??Db(e.databaseName),e)}function Ab(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??Ge;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var jb=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Mb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??mb)(),t),i=()=>(n??=(e.createIndexedDBStore??kb)(),n),a=()=>Ab(e)===`http`?r():i();return{readSession:e=>a().readSession(e),readMessage:(e,t)=>a().readMessage(e,t),upsertSettled:(e,t,n)=>a().upsertSettled(e,t,n),removeMessage:(e,t)=>a().removeMessage(e,t),clearSession:e=>a().clearSession(e),clearGeneration:e=>jb([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Nb(e={}){await Mb(e).clearAll()}var Pb=(e,t)=>e<t?-1:+(e>t);function Fb(e){return e.filter(e=>!!e?.id).sort((e,t)=>Pb(e.id,t.id))}async function Ib(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await Kg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=r.records.map(e=>({info:up(e.info),parts:Fb(e.parts??[])}));if(!e.before&&!r.complete&&zy(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await By({records:a,complete:r.complete,requestMessage:async n=>{let r=await Ly({transport:i(),generation:h(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:Fb(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Fb(e.parts??[])}))}return{records:a,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function Lb(e){let t=e.client??L,n=Tg(),r=Ag({client:t,activeRegistry:n}),a=Jy({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:i,getGeneration:h},fetcher:e=>Ib({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:eh(),historyLimit:th(),durableStore:e.durableStore??Mb()}),o=sy({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:r,probe:{getTransport:i,getGeneration:h},confirmSessionStatus:async(t,n)=>{let r=e.childStores.getChild(t.directory);if(!r)return;let i=r.getState().session_status?.[t.sessionID];!n.tailOpen&&i?.type!==`busy`&&i?.type!==`retry`||await wy(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return _u(a),Au(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),Au(null),a.destroy(),vu()}}}function Rb(e){return yu().apply(W(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var zb=new Map;function Bb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Vb(e,t,n,r={}){let a=r.getTransportIdentity??i,o=r.getGeneration??h,s=a(),c=o(),l=Bb(e,t,s,c),u=()=>a()===s&&o()===c,d=zb.get(l)??Promise.resolve(),f,p=new Promise(e=>{f=e}),m=d.catch(()=>void 0).then(()=>p);zb.set(l,m);try{if(await d.catch(()=>void 0),!u())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:s,generation:c,isCurrent:u})}finally{f(),zb.get(l)===m&&zb.delete(l)}}var Hb=new Set,Ub=new Set,Wb=new Set,Gb=new Set,Kb={onDeleteRequest(e){return Hb.add(e),()=>{Hb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||Hb.forEach(t=>t(e))},onCreateRequest(e){return Ub.add(e),()=>{Ub.delete(e)}},requestCreate(e){let t=e??{};Ub.forEach(e=>e(t))},onDirectoryRequest(e){return Wb.add(e),()=>{Wb.delete(e)}},requestDirectoryDialog(){Wb.forEach(e=>e())},onGitRefreshHint(e){return Gb.add(e),()=>{Gb.delete(e)}},requestGitRefresh(e){e.directory.trim()&&Gb.forEach(t=>t(e))}},qb=50,Jb=e=>{let t=Object.keys(e);if(t.length<=qb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-qb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},Yb=Oe()(je(ke((e,t)=>({sessions:{},setSessionTodos:(t,n)=>{t&&e(e=>{let r={...e.sessions};return!n||n.length===0?t in r?(delete r[t],{sessions:r}):e:(r[t]={todos:n,touchedAt:Date.now()},{sessions:Jb(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:g(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),Xb=new Set([`todowrite`,`todoread`]),Zb=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),Qb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),$b=(e,t)=>{Yb.getState().setSessionTodos(e,t)},ex=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},tx=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},nx=e=>{if(!e||typeof e!=`object`)return null;let t=e;if(typeof t.content!=`string`||typeof t.status!=`string`)return null;let n={content:t.content,status:t.status,priority:typeof t.priority==`string`?t.priority:`medium`};return typeof t.id==`string`&&t.id.length>0&&(n.id=t.id),n},rx=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=nx(n);e&&t.push(e)}return t},ix=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return rx(t);if(t&&typeof t==`object`)return rx(t.todos)}catch{}return[]},ax=e=>{if(!Xb.has(ex(e)))return[];let t=tx(e);if(t&&Zb.has(t))return[];let n=e.state,r=rx(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=rx(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=rx(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?ix(i):[]};function ox(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.partsByMessageID[n];if(!(!r||r.length===0))for(let e=r.length-1;e>=0;--e){let t=ax(r[e]);if(t.length>0)return t}}return[]}function sx(e){if(!e.sessionID||e.isStale?.()||Qb(e.store.getState().todo,e.sessionID))return!1;let t=ox(e.transcript);return t.length===0||e.isStale?.()||Qb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function cx(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(W(e.directory,e.sessionID));return t?sx({sessionID:e.sessionID,store:e.store,transcript:t,persist:$b,isStale:e.isStale}):!1}var lx=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>dC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>uC,SESSION_DELETE_UNDO_MS:()=>FS,abortBusySessionForMessageEdit:()=>TC,abortCurrentOperation:()=>gC,archiveSession:()=>GS,beginOptimisticSend:()=>tC,cancelScheduledSessionDeletes:()=>WS,classifySendFailure:()=>aS,combinedSendConfirmationOptions:()=>fC,commitMessageEdit:()=>DC,createSession:()=>kS,deleteSession:()=>HS,dirStoreForDirectory:()=>Gx,dismissOpenQuestionsForSession:()=>bC,ensureSentUserMessagePresence:()=>hC,fetchMessagesForSession:()=>NC,fetchRecentSendConfirmationRecords:()=>cC,forkSession:()=>jC,getSendFailureKind:()=>rS,isQuestionRequestNotFoundError:()=>ES,materializeConfirmedSendRecords:()=>lC,mirrorSessionIntoLiveStores:()=>Qx,optimisticInsertUserMessage:()=>oC,optimisticSend:()=>aC,patchSessionMetadata:()=>AS,refetchSessionMessages:()=>kC,rejectQuestion:()=>yC,releaseUnconfirmedQueueSend:()=>Hx,requestSessionSmartTitle:()=>JS,resolveForkMessageId:()=>Ex,respondToPermission:()=>_C,respondToQuestion:()=>vC,revertToMessage:()=>xC,rollbackOptimisticSend:()=>rC,scheduleSessionDeletes:()=>US,setActionRefs:()=>Bx,setOptimisticRefs:()=>Vx,settleOptimisticSend:()=>iC,shareSession:()=>YS,shouldSuppressForkCopyEvent:()=>Ox,stageMessageEdit:()=>CC,trackForkCopySessionCreated:()=>vx,unarchiveSession:()=>KS,unrevertSession:()=>AC,unshareSession:()=>XS,updateSessionTitle:()=>qS,waitForConnectionOrThrow:()=>lS,waitForSessionIdleForMessageEdit:()=>EC}),ux=2,dx=150,fx=new Set([`patch`,`step-start`,`step-finish`]),px=3,mx=150,hx=null,gx=new Map,_x=3e4;function vx(e,t){let n=t?.id;!hx||hx.runtimeKey!==c()||hx.directory!==e||!n||t?.title!==hx.expectedTargetTitle||n===hx.sourceSessionID||hx.targetSessionID||(hx.targetSessionID=n)}function yx(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function bx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function xx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Sx(e){return e?.type===`busy`||e?.type===`retry`}function Cx(e){for(let t=e.length-1;t>=0;--t)if(e[t]?.role===`user`)return t;return-1}function wx(e){let t=e.at(-1);return t?.role===`assistant`&&t.time.completed==null}function Tx(e,t){return Sx(e)||e==null&&wx(t)}function Ex(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!Tx(n,t))return;let r=Cx(t);if(r!==-1)return t[r+1]?.id}async function Dx(e,t){let n=Rp(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return z.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function Ox(e,t,n){if(hx&&hx.runtimeKey===c()&&hx.directory===e&&t&&t===hx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${c()}:${e}:${t}`,i=gx.get(r);return i?i.expiresAt<=Date.now()?(gx.delete(r),!1):n<=i.messageID:!1}var kx=null,Ax=null,jx=()=>``,Mx=new Map,Nx=null,Px=null,Fx=null,Ix=e=>new Promise(t=>setTimeout(t,e));function Lx(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e.message;if(typeof t==`string`&&t.length>0)return t;let n=e.data;if(n&&typeof n==`object`){let e=n.message;if(typeof e==`string`&&e.length>0)return e}}try{return JSON.stringify(e)}catch{return String(e)}}function Rx(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Lx(e.error)}`);throw n!==void 0&&(r.status=n),r}function zx(e,t){let n=Rx(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Bx(e,t,n){if(kx=e,Ax=t,jx=n,Mx.size>0){let e=[...Mx.values()];Mx.clear(),queueMicrotask(()=>{for(let t of e)NC(t.sessionID,t.directory)})}}function Vx(e,t,n){Nx=e,Px=t,Fx=n??null}function Hx(e){let t=e.directory??null;Px?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Ux(){if(!kx)throw Error(`SDK not initialized — is SyncProvider mounted?`);return kx}function Wx(){if(!Ax)throw Error(`Child stores not initialized`);let e=jx();if(!e)throw Error(`No current directory`);return Ax.ensureChild(e)}function Gx(e,t){if(!Ax)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Ax.ensureChild(e,t)}function Kx(e,t){let n=t??hS(e);return n?{store:Gx(n),directory:n}:{store:Wx(),directory:$x()}}function qx(e,t){let{store:n,directory:r}=Kx(e,t??void 0),i=r??$x()??``;return{repository:H()??U(i,n),directory:i,store:n}}function Jx(e,t){let{repository:n,directory:r,store:i}=qx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(W(r,e))}}function Yx(e,t){return Gu(Jx(e,t).data)}function Xx(e,t){return Jx(e,t).data.messageOrder.length}function Zx(e,t){let n=Ax;if(!n)return!1;let r=t?[[t,n.getChild(t)]]:n.children;for(let[,t]of r){if(!t)continue;let n=t.getState().session,r=n.findIndex(t=>t.id===e.id);if(r===-1)continue;let i=[...n];return i[r]=$E(e,n[r]),t.setState({session:i}),!0}return!1}function Qx(e,t){t&&Zx(e,t)||Zx(e)}function $x(){return jx()||void 0}function eS(){let{hasEverConnected:e,lastDisconnectReason:t}=Gf.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function tS(e){if(!e||typeof e!=`object`)return null;let t=e.status;if(typeof t==`number`)return t;let n=e.response;return typeof n?.status==`number`?n.status:null}var nS=class extends Error{kind;cause;messageID;constructor(e,t,n){super(t instanceof Error?t.message:String(t)),this.name=`SendDispatchError`,this.kind=e,this.cause=t,this.messageID=n}};function rS(e){return e instanceof nS?e.kind:null}function iS(e){let t=tS(e);if(t===503||t===504||t===408||e instanceof TypeError||e instanceof DOMException&&(e.name===`AbortError`||e.name===`TimeoutError`))return!0;let n=e instanceof Error?e.message.toLowerCase():typeof e==`string`?e.toLowerCase():``;return n.includes(`timeout`)||n.includes(`timed out`)||n.includes(`failed to fetch`)||n.includes(`networkerror`)||n.includes(`network error`)||n.includes(`gateway timeout`)||n.includes(`econnreset`)||n.includes(`socket hang up`)}function aS(e,t){return t?iS(e)||tS(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var oS=2e3,sS=5e3,cS=3e4;async function lS(){let e=Im();e&&Fm(`send_stream_stale`);let t=Date.now()+(e?sS:oS);for(;Date.now()<t;){if(Gf.getState().isConnected&&!Im()||d()&&!Im())return;let e=t-Date.now();if(e<=0)break;if(await Gf.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Im())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw eS()}function uS(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Fm(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},cS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function dS(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function fS(e){e&&Y.getState().upsertSession(e)}function pS(e,t){let n=cp(t),r=[...e.getState().session],i=ls.search(r,n.id,e=>e.id);if(i.found){let t=$E(n,r[i.index]);return r[i.index]=t,e.setState({session:r}),t}return r.splice(i.index,0,n),e.setState({session:r}),n}async function mS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=dS(e);if(i)return pS(t,i);try{return pS(t,await z.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function hS(e){return gS(e)||$.getState().getDirectoryForSession(e)||$x()}function gS(e){let t=Ax;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=H()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function _S(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):Ux()}function vS(e){Or.getState().clearAttachedFiles();for(let t of e){let e=typeof t.url==`string`?t.url:``,n=typeof t.mime==`string`?t.mime:`application/octet-stream`,r=typeof t.filename==`string`?t.filename:`attachment`;e&&Or.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var yS=()=>new Map(Array.from(Pd(),([e,t])=>[e,t.title||e]));function bS(e){return!(e.type!==`file`||nm(e))}function xS(e){return bS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function SS(e){return e.some(xS)}async function CS(e){let t=[...e.parts];if(!SS(t))return t;let n=h(),r=e.directory??``;try{await Eu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||h()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=qx(e.sessionID,r);if(t=[...i.getParts(W(a,e.sessionID),e.messageID)],SS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function wS(e){if(SS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await _m(e.parts,{sessionTitles:yS(),directory:e.directory}),n=Or.getState(),r=n.getDraft(e.key);return{payload:t,commit:await Sm({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function TS(e,t,n){let r=Ax;if(!r||!n)return null;for(let[t,i]of r.children){let r=i.getState(),a=e===`permission`?r.permission:r.question;for(let e of Object.values(a))if(e?.some(e=>e.id===n))return t}let i=$.getState().getDirectoryForSession(t);if(i)return i;for(let[e,n]of r.children){let r=n.getState();if(r.session.some(e=>e.id===t)||Object.prototype.hasOwnProperty.call(r.session_status??{},t)||Object.prototype.hasOwnProperty.call(r.permission??{},t)||Object.prototype.hasOwnProperty.call(r.question??{},t))return e}return null}function ES(e){if(e&&typeof e==`object`&&e.status===404)return!0;let t=``;return e instanceof Error?t=e.message:typeof e==`string`&&(t=e),/Question(?:\.)?NotFoundError|Question request not found/i.test(t)}function DS(e,t){let n=Ax;if(!n||!t)return!1;let r=!1;for(let[,i]of n.children){let n=i.getState().question??{},a=null,o=new Set([e,...Object.keys(n)].filter(Boolean));for(let e of o){let i=n[e];if(!i?.length)continue;let o=i.filter(e=>e.id!==t);o.length!==i.length&&(a??={...n},o.length>0?a[e]=o:delete a[e],r=!0)}a&&i.setState({question:a})}return r}function OS(e,t,n){let r=TS(e,t,n);return r?z.getScopedSdkClient(r):_S(t)}async function kS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??$x()),a=i.directory??null;return a&&Ed(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),Y.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function AS(e,t,n){let r=t??hS(e),i=n(Rp(await z.getSession(e,r))),a=await z.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Ed(a.id,o),a}async function jS(e,t){let n;try{n=await z.getSession(e,t??hS(e))}catch{return}if(!Hp(n))return;let r=Vp(n);if(r)try{await AS(r,t??hS(r),t=>Gp(t,e))}catch(e){let t=e instanceof Error?e.message:String(e);if(/not found/i.test(t))return;console.warn(`[session-actions] review metadata cleanup failed before delete`,e)}}function MS(e,t){if(!Ax)return[];let n=[],r=new Set,i=[];if(t){let e=Ax.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Ax.children.entries())r.has(e[0])||i.push(e);for(let[t,r]of i){let i=r.getState();i.session.some(t=>t.id===e)&&(n.push({directory:t,sessions:i.session}),r.setState({session:i.session.filter(t=>t.id!==e)}))}return n}function NS(e){if(Ax)for(let t of e){let e=Ax.children.get(t.directory);e&&e.setState({session:t.sessions})}}function PS(e){$.getState().setWorktreeMetadata(e,null)}var FS=1e4,IS=new Map,LS=0;function RS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function zS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),NS(e.listSnapshots),fS(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function BS(e,t){let n=t??hS(e);Y.getState().markSessionsPendingDeletion([e]);let r=MS(e,n),i=dS(e);Y.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function VS(e,t){try{if(await jS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return MS(e,t),Y.getState().removeSessions([e]),PS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(MS(e,t),Y.getState().removeSessions([e]),PS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function HS(e,t){let n=BS(e);return await VS(e,n.directory)?!0:(zS(n),!1)}function US(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>BS(e)),i=`session-delete-${Date.now()}-${LS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=IS.get(i);if(!e)return;IS.delete(i);let t=[],n=[];for(let r of e.entries)await VS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),zS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return IS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function WS(e){if(!e)return!1;let t=IS.get(e);if(!t)return!1;clearTimeout(t.timer),IS.delete(e);for(let e of[...t.entries].reverse())zS(e);return!0}async function GS(e){let t=hS(e),n=MS(e,t),r=dS(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await jS(e,t);let n=await z.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),NS(n),fS(r),!1}}async function KS(e){let t=hS(e),n=dS(e),r=n?RS(n):null;if(r&&(Y.getState().upsertSession(r),t&&Ax)){let e=Ax.children.get(t);e&&pS(e,r)}try{let n=await z.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=RS(n);if(Y.getState().upsertSession(r),t&&Ax){let e=Ax.children.get(t);e?pS(e,r):Qx(r,t)}else Qx(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&MS(e,t)),!1}}async function qS(e,t){let n=hS(e),r=dS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Zf(r):0,c=await z.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),Qx(c,n)}async function JS(e){let t=hS(e),n=dS(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await z.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),Qx(s,t)}async function YS(e){let t=hS(e),n=cp(zx(await Ux().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),Zx(n,t),n}async function XS(e){let t=hS(e),n=cp(zx(await Ux().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),Zx(n,t),n}function ZS(e){let t=Ax,n=e??jx();if(!t||!n)return{store:e?Gx(e):Wx(),isCurrent:()=>!0};let r=t,i=r.captureChild?.(n);if(i&&r.isCurrentChildCapture)return{store:i.store,isCurrent:()=>r.isCurrentChildCapture?.(i)===!0};let a=t.ensureChild(n);return{store:a,isCurrent:()=>t.getChild(n)===a}}function QS(){return{identity:i(),generation:h()}}function $S(e,t){return e.isCurrent()&&i()===t.identity&&h()===t.generation}function eC(e,t){if(!$S(e,t))throw Error(`Send target changed before transport dispatch`)}function tC(e){if(!Nx||!Px)throw new nS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??$x()??null,n=ZS(t),r=QS();eC(n,r),e.beforeOptimisticInsert?.(),eC(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),oC({sessionId:e.sessionId,messageID:i,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.parts}),e.onOptimisticInsert?.(),{messageID:i,sessionId:e.sessionId,directory:t,capture:n,transport:r}}catch(e){throw e instanceof nS?e:new nS(rS(e)??aS(e,!1),e)}}function nC(e){if(!$S(e.capture,e.transport)||!Px)return;Px({sessionID:e.sessionId,directory:e.directory,messageID:e.messageID});let t=e.capture.store.getState(),n=Date.now();e.capture.store.setState({session_status:{...t.session_status,[e.sessionId]:{type:`idle`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:n}})}function rC(e){nC(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function iC(e){if(!Nx||!Px)throw new nS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));let{ticket:t}=e,{capture:n,transport:r,messageID:i,sessionId:a,directory:o}=t,s=!1;try{if(await lS(),eC(n,r),s=!0,await uS(e.send(i)),!$S(n,r))throw new nS(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=rS(c)??aS(c,s),u=c instanceof nS?c:new nS(l,c,i);if(!$S(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await cC(a,i,o):null;if(d&&$S(n,r)){lC(n.store,a,i,d,{directory:o??void 0}),Fx?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||nC(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function aC(e){await iC({ticket:e.ticket??tC({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:e.directory,files:e.files,parts:e.parts,messageID:e.messageID,onOptimisticInsert:e.onOptimisticInsert,onMessageID:e.onMessageID,beforeOptimisticInsert:e.beforeOptimisticInsert}),preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:e.onSendConfirmed,send:e.send})}function oC(e){if(!Nx)return!1;let t=e.directory??$x(),n=t?Gx(t):Wx(),r=t??$x()??``;if(pC(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),s={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},c=Wv(()=>Jx(e.sessionId,t).data);Nx({sessionID:e.sessionId,directory:t,message:s,parts:a});let l=Wv(()=>Jx(e.sessionId,t).data);try{c&&l&&Gv({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:i(),generation:h(),before:c,after:l})}catch{}let u=n.getState();return n.setState({session_status:{...u.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...u.session_status_observed_at,[e.sessionId]:o}}),!0}function sC(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function cC(e,t,n,r){let i=r?.signal||r?.timeoutMs!==void 0?new AbortController:null,a=()=>i?.abort();r?.signal?.addEventListener(`abort`,a,{once:!0}),r?.signal?.aborted&&i?.abort();let o=r?.timeoutMs===void 0?void 0:setTimeout(()=>i?.abort(),Math.max(0,r.timeoutMs)),s=r?.attempts??ux,c=r?.retryDelayMs??dx;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!sC(r?.isCurrent)||a>0&&(await Ix(c),i?.signal.aborted||!sC(r?.isCurrent)))return null;try{let a=await Ux().session.messages({sessionID:e,directory:n??void 0,limit:ih(),...i?{signal:i.signal}:{}});if(!sC(r?.isCurrent))return null;let o=(Rx(a,`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.some(e=>e.info.id===t))return o}catch{}}return null}finally{o&&clearTimeout(o),r?.signal?.removeEventListener(`abort`,a)}}function lC(e,t,n,r,i){if(!r.length)return;let a=i?.directory??hS(t)??jx(),o=W(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:up(e.info),parts:e.parts??[]})),skipPartTypes:fx,merge:i?.gapFillOnly===!0?Xs:Qs({purpose:`recovery`})};xu(o,s)||U(a,e).apply(o,s)}var uC=2e3,dC={attempts:12,retryDelayMs:500},fC={presenceGraceMs:uC,recovery:{...dC}};function pC(e,t,n,r){let i=r??hS(t)??jx()??``,a=H()??U(i,e),o=W(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function mC(e,t,n,r){let i=r?.directory??hS(t)??jx()??``;if(pC(e,t,n,i))return Promise.resolve(!0);if(!sC(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=H()??U(i,e),f=W(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!sC(r?.isCurrent)){l(!1);return}pC(e,t,n,i)&&l(!0)}),pC(e,t,n,i)&&l(!0)})}async function hC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await mC(t,n,r,{timeoutMs:e.graceMs??fC.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!sC(a))return`cancelled`;let o=await cC(n,r,i,{...fC.recovery,isCurrent:a});return o?sC(a)?(lC(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:sC(a)?`missing`:`cancelled`}async function gC(e){let{store:t,directory:n}=Kx(e),r=n?{state:`bound`,transportIdentity:i(),directory:n,sessionID:e}:null,a=r?$.getState().beginQueueAbortBlock(r):null;try{if(zx(await Ux().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&a&&$.getState().clearQueueAbortBlock(r,a),et(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>eH);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function _C(e,t,n){await lS();let r=TS(`permission`,e,t)||hS(e)||$x();if(zx(await OS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function vC(e,t,n){await lS();let r=TS(`question`,e,t)||hS(e)||$x();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(zx(await OS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw ES(n)&&DS(e,t),n}}async function yC(e,t){await lS();let n=TS(`question`,e,t)||hS(e)||$x();try{if(zx(await OS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw ES(n)&&DS(e,t),n}}async function bC(e){if(!e)return!1;let t=Ax;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Zp(t.session,e);if(i.size===0)continue;let a=t.question??{};for(let e of i){let t=a[e];if(t)for(let r of t)n.push({sessionId:e,requestId:r.id})}}if(n.length===0)return!1;for(let{sessionId:e,requestId:t}of n)DS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await yC(e,t)}catch(e){if(ES(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function xC(e,t,n){let r=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return Vb(e,r??(()=>{try{return Kx(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:o,directory:c}=Kx(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Ux().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=Yx(e,c).find(e=>e.id===t),d=Yx(e,c).find(e=>e.id===t)??u;if(!d||d.role!==`user`)throw Error(`The selected user message is unavailable`);let{repository:f,directory:p}=qx(e,c),m=[...f.getParts(W(p,e),t)],h=a===void 0?s?C({transportIdentity:i()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await CS({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await _m(m,{sessionTitles:yS(),directory:c})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=o.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),w={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},w.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(o.setState(w),h){let t=Or.getState(),r=await Sm({key:h,expectedRevision:t.getDraft(h)?.revision??`absent`,payload:g,runtime:t.captureDraftRuntime()});if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),r.status===`committed`&&r.current&&r.previous&&r.result?.record?.revision!==void 0&&await wm({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await z.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await wm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}let i=[...o.getState().session],a=i.findIndex(t=>t.id===e);return a>=0&&(i[a]=r,o.setState({session:i})),c&&Kb.requestGitRefresh({directory:c}),g}catch(t){let r=[...o.getState().session],i=r.findIndex(t=>t.id===e);throw i>=0&&(r[i]={...r[i],revert:b}),n()?(o.setState({session:r}),h&&v&&_!==void 0&&await wm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await wm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function SC(e,t,n,r){let a=r??hS(t)??jx(),o=W(a,t),s=Wv(()=>Jx(t,a).data),c=[...bu(t)];c.some(e=>e.directory===a&&e.sessionID===t)||c.push(o);let l=!1;for(let e of c)xu(e,{type:`remove-message`,messageID:n})!=null&&(l=!0);l||U(a,e).apply(o,{type:`remove-message`,messageID:n});let u=Wv(()=>Jx(t,a).data);try{s&&u&&Gv({trigger:`user-delete`,sessionID:t,directory:a,transport:i(),generation:h(),before:s,after:u})}catch{}}async function CC(e,t,n,r){let a=n?.info,o=n?.parts,s=r?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=Kx(e,s).directory}else{c=Kx(e,s).directory;let{data:n}=Jx(e,c),r=Gu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=r?.draftKey??C({transportIdentity:i()},e),{commit:u}=await wS({key:l,parts:await CS({directory:c,sessionID:e,messageID:t,parts:o??[]}),directory:c});if(u.status!==`committed`||!u.current)throw Error(`composer-restoration-commit-${u.status}`);let d=u.result?.record?.revision,f=u.previous;return d===void 0||!f?{rollback:async()=>({status:`skipped`})}:{rollback:async()=>({status:(await wm({key:l,restoredRevision:d,previous:f})).status})}}function wC(e,t,n,r){let i=t.findIndex(t=>t.id===e),a=i>=0?t[i]:void 0;if(!a||a.role!==`user`||!n.has(e))throw Error(`The selected user message is unavailable`);let o=r?.preserveMessageId,s=o?t.findIndex(e=>e.id===o):-1,c=s>i?s:t.length;return t.slice(i,c).filter(e=>!(!n.has(e.id)||o&&e.id===o))}async function TC(e,t){let n=t?.directory,{store:r,directory:i}=Kx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Ux().session.abort({sessionID:e,directory:i})}catch{}}async function EC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=Kx(e,n),o=Date.now()+r;for(;Date.now()<o;){let t=a.getState().session_status[e];if(!t||t.type===`idle`)return;await new Promise(e=>setTimeout(e,i))}let s=a.getState().session_status[e];if(!(!s||s.type===`idle`))throw Error(`Session is still busy after waiting to edit: ${e}`)}async function DC(e,t,n){let r=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:s}=Kx(e,r),c=Wv(()=>Jx(e,r).data);try{await TC(e,{directory:r}),await EC(e,{directory:r});let n=new Set((await OC(e,r)).map(e=>e.id)),i=wC(t,Yx(e,r),n,{preserveMessageId:a});for(let t of[...i].reverse())await z.deleteSessionMessage(e,t.id,s),SC(o,e,t.id,s)}finally{try{let t=Wv(()=>Jx(e,r).data);c&&t&&Gv({trigger:`user-edit`,sessionID:e,directory:s,transport:i(),generation:h(),before:c,after:t})}catch{}}}async function OC(e,t){let{directory:n}=Kx(e,t);return(Rx(await Ux().session.messages({sessionID:e,directory:n,limit:rh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>up(e.info))}async function kC(e,t){let{store:n,directory:r}=Kx(e,t),a=Wv(()=>Jx(e,t).data),o=(Rx(await Ux().session.messages({sessionID:e,directory:r,limit:rh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Wv(()=>Jx(e,t).data);a&&n&&Gv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let s=o.map(e=>({info:up(e.info),parts:e.parts??[]})),c=W(r??jx(),e);xu(c,{type:`materialize-snapshots`,records:s,skipPartTypes:fx})||U(r??jx(),n).apply(c,{type:`materialize-snapshots`,records:s,skipPartTypes:fx});try{let n=Wv(()=>Jx(e,t).data);a&&n&&Gv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return s.map(e=>e.info)}async function AC(e,t){return Vb(e,t??(()=>{try{return Kx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=Kx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Xx(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Ux().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Ux().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=zx(c,`session.unrevert`),u=[...r.getState().session],d=u.findIndex(t=>t.id===e);d>=0&&(u[d]=l,r.setState({session:u}));for(let r=0;r<px;r+=1){if(r>0&&(await Ix(mx),!n())||(await kC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Xx(e,i)>o)return}if(Xx(e,i)<=o){let n=i??jx(),a=H()??U(n,r),o=W(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await kC(e,t)}})}async function jC(e,t,n,r){let i=c(),{store:a,directory:o}=Kx(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await mS(e,a,o);Ed(e,o);let l=a.getState(),u=l.session_status[e],d=Yx(e,o);u?.type,d.length;let f=Ex(n,d,u);if(!n&&Tx(u,d)&&Cx(d)===-1&&(await kC(e),l=a.getState(),u=l.session_status[e],d=Yx(e,o),f=Ex(void 0,d,u)),!n&&Tx(u,d)&&Cx(d)===-1)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:Xx(e,o)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=Jx(e,o),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(W(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!nm(e)).map(e=>e.text||e.content||``).join(`
462
- `).trim();let v=g.filter(e=>e.type===`file`&&!nm(e));hx={operationId:t,runtimeKey:i,directory:o,sourceSessionID:e,expectedTargetTitle:yx(s.title)},await bx(t,`copying`);let y;try{if(y=await z.forkSession(e,f,o),y.id,c()!==i)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),hx?.operationId===t&&(hx=null),!1;let n=[...a.getState().session],r=ls.search(n,y.id,e=>e.id);r.found||(n.splice(r.index,0,y),a.setState({session:n})),xx(t,y.id);let s=$.getState().currentSessionId;(s===e||s===y.id)&&$.getState().setCurrentSession(y.id,o,{skipMessageFetch:!0}),await bx(t,`opening`);try{y=await Dx(y,o)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw hx?.operationId===t&&(hx=null),e}try{let e=W(o,y.id),r=H();r&&typeof r.destructiveReset==`function`?await r.destructiveReset(e):xu(e,{type:`reset`}),await bx(t,`loading`),y.id,$.getState().currentSessionId,y.id;let i=H()??U(o,a),s=W(o,y.id),l=i.getRequestState?.(s);(!(i.hasSession?.(s)??!1)||l?.status===`error`)&&await NC(y.id,o);let u=Yx(y.id,o).at(-1)?.id;u&&gx.set(`${c()}:${o}:${y.id}`,{messageID:u,expiresAt:Date.now()+_x});let d=$.getState().currentSessionId===y.id;d&&h&&_&&Or.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&vS(v)}finally{hx?.operationId===t&&(hx=null)}return y.id,!0}var MC=new Map;async function NC(e,t){let n=t??$x();if(!n)return;let r=c(),i=nh(),a=`${r}:${n}:${e}:${i}`;if(!kx||!Ax){Mx.set(a,{sessionID:e,directory:n});return}let o=MC.get(a);if(o)return o;let s=PC(e,n,r,i).finally(()=>{MC.get(a)===s&&MC.delete(a)});return MC.set(a,s),s}async function PC(e,t,n,r){Ux();let i=Gx(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=H()??U(t,i),l=W(t,e),u=c.getTranscript(l),d=c.getPagination(l),f=c.getRequestState?.(l),p=e=>e.role===`user`||e.clientRole===`user`,m=u.messageOrder.map(e=>u.messagesByID[e]).filter(e=>!!e),h=m.some(p),g=d.boundary,_=g.kind===`has-more`||g.kind===`exhausted`,v=(c.hasSession?.(l)??m.length>0)&&(h||g.kind===`exhausted`)&&_&&f?.status!==`error`,y=()=>$.getState().currentSessionId!==e;if(v){if(Vm(t,e)){cx({directory:t,sessionID:e,store:i,transcript:u});return}if(H()){try{await Cu(t,e)}catch{return}if(y())return;cx({directory:t,sessionID:e,store:i,isStale:y}),await Ty({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}cx({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await Ib({directory:t,sessionID:e,limit:r,signal:AbortSignal.timeout(3e4),purpose:`initial`});if(y())return;c.apply(l,{type:`http-page`,purpose:`initial`,page:n,skipPartTypes:fx}),b=n.records.length,Hm(t,e)}catch{return}y()||(cx({directory:t,sessionID:e,store:i,isStale:y}),await Ty({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var FC=new Map,IC=e=>{FC.set(e,(FC.get(e)??0)+1)},LC=e=>(FC.get(e)??0)>0,RC=e=>{let t=FC.get(e)??0;return t<=0?!1:(t===1?FC.delete(e):FC.set(e,t-1),!0)},zC=18e4,BC=400,VC=300,HC=15,UC=`FINAL_REVIEW_STATUS: no_remaining_findings`,WC=UC.toLowerCase(),GC=new Set,KC=new Set,qC=e=>{let t=e.finish;if(typeof t==`string`&&t.length>0)return!0;let n=e.time?.completed;return typeof n==`number`&&n>0},JC=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},YC=e=>{let t=e.role;return typeof t==`string`?t:``},XC=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},ZC=(e,t)=>Ld(e.id,t).some(e=>{let t=e.type;if(t===`compaction`)return!0;if(t!==`text`)return!1;let n=e.text;return typeof n==`string`&&n.trim()===`/compact`}),QC=(e,t,n,r=0,i)=>{let a=Id(e,t),o=new Set;for(let e of a)ZC(e,t)&&o.add(e.id);for(let e=a.length-1;e>=0;--e){let s=a[e];if(s.id===n)return null;if(YC(s)!==`assistant`||!qC(s)||JC(s)<r-1e3)continue;let c=XC(s);if(!ow(s,i)||c&&o.has(c))continue;let l=Ip(Ld(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},$C=(e,t)=>Rd(e,t)?.type===`idle`,ew=e=>e===c(),tw=e=>{Kp.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},nw=e=>{if(e&&!ew(e))throw Error(`Auto-review stopped because the runtime changed.`)},rw=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),iw=e=>e.trim().split(`
461
+ `).trim();if(n)return V_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function uv(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function dv(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var fv=e=>typeof e==`string`&&e.trim().length>0;function pv(e){if(!e||uv(e)!==`assistant`)return;let t=e,n=!fv(t.mode)&&!fv(t.agent),r=!fv(t.modelID)||!fv(t.providerID);return n||r}function mv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function hv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)B_(e)?r+=1:i+=1,cv(e)&&(a=!0);let o=e.messagesByID[t],s=uv(o),c=pv(o),l=s===`user`?lv(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:dv(o),...s?{role:s}:{},...l?{text:l}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function gv(e,t){let n=new Map(e.messages.map(e=>[e.id,e])),r=new Map(t.messages.map(e=>[e.id,e])),i=new Set(e.messageIDs),a=new Set(t.messageIDs),o=t.messageIDs.filter(e=>!i.has(e)),s=e.messageIDs.filter(e=>!a.has(e)),c=[],l=[],u=[],d=[];for(let t of e.messageIDs){let e=n.get(t);if(!e)continue;let i=r.get(t);if(!i){e.optimistic&&u.push(t);continue}(e.partCount!==i.partCount||e.slimCount!==i.slimCount||e.fullCount!==i.fullCount||e.optimistic!==i.optimistic)&&c.push({id:t,before:mv(e),after:mv(i)}),e.fullCount>0&&i.fullCount===0&&i.slimCount>0&&l.push(t),e.optimistic&&!i.optimistic&&!i.completed&&u.push(t),e.identityMissing!==!0&&i.identityMissing===!0&&d.push(t)}return{addedMessageIDs:o,removedMessageIDs:s,partsChanged:c,downgraded:l,optimisticLost:u,identityLost:d}}function _v(e){return{at:(e.now??Date.now)(),feat:`transcript`,kind:`transcript-diff`,sessionID:e.sessionID,trigger:e.trigger,before:e.before,after:e.after,diff:gv(e.before,e.after),...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.purpose?{purpose:e.purpose}:{}}}function vv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function yv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function bv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function xv(e){let t=bv(e.partID),n=bv(e.messageID),r=bv(e.directory),i=bv(e.childSessionID),a=bv(e.toolStatus),o=bv(e.surfaceKind);return{directoryPresent:e.directoryPresent,childSessionPresent:e.childSessionPresent,finalized:e.finalized,backgroundRunning:e.backgroundRunning,effectiveActive:e.effectiveActive,suppressLoading:e.suppressLoading,delegating:e.delegating,childStatus:e.childStatus,parentStatus:e.parentStatus,idleConfirmed:e.idleConfirmed,navigateCapability:e.navigateCapability,...t?{partID:t}:{},...n?{messageID:n}:{},...r?{directory:r}:{},...i?{childSessionID:i}:{},...a?{toolStatus:a}:{},...o?{surfaceKind:o}:{},...e.taskStartedAt===void 0?{}:{taskStartedAt:e.taskStartedAt},...e.statusObservedAt===void 0?{}:{statusObservedAt:e.statusObservedAt},...e.statusSnapshotAt===void 0?{}:{statusSnapshotAt:e.statusSnapshotAt}}}function Sv(e){return[e.sessionID,bv(e.partID)??``,e.childSessionPresent?`1`:`0`,bv(e.childSessionID)??``,bv(e.toolStatus)??``,e.finalized?`1`:`0`,e.backgroundRunning?`1`:`0`,e.effectiveActive?`1`:`0`,e.suppressLoading?`1`:`0`,e.delegating?`1`:`0`,e.childStatus,e.parentStatus,e.idleConfirmed?`1`:`0`,e.navigateCapability?`1`:`0`,e.directoryPresent?`1`:`0`,bv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Cv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...xv(e)}}function wv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:yv(e),...xv(e)}}var Tv=`openchamber-transcript-diagnostics`,Ev=`events`,Dv=1,Ov=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),kv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Dv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Ev)||e.createObjectStore(Ev,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),Av=(e=Tv)=>({async append(t,n){let r=await kv(e);try{let e=r.transaction(Ev,`readwrite`).objectStore(Ev);await Ov(e.add(t));let i=await Ov(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await Ov(e.delete(t))}finally{r.close()}},async read(){let t=await kv(e);try{return await Ov(t.transaction(Ev,`readonly`).objectStore(Ev).getAll())}finally{t.close()}},async clear(){let t=await kv(e);try{await Ov(t.transaction(Ev,`readwrite`).objectStore(Ev).clear())}finally{t.close()}}});function jv(e={}){let t=e.driver??Av(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Mv=Qe(`OpenChamberMedia`);function Nv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Pv(){return Ge()&&$e!==void 0&&$e.isPluginAvailable(`OpenChamberMedia`)}function Fv(){return`1.18.7-beta.1`}function Iv(){if(typeof localStorage>`u`)return null;try{return G_(localStorage.getItem(W_))}catch{return null}}function Lv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(W_,e?`true`:`false`)}catch{}}function Rv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var zv;function Bv(e=Fv()){return K_({version:e,preference:Iv()})}function Vv(e={}){return nv({sink:Rv()===`indexeddb`?(e.createIndexedDBSink??jv)():(e.createMemorySink??tv)(),isEnabled:e.isEnabled??Bv})}function Hv(){return zv??=Vv(),zv}function Uv(e){Hv().record(e)}function Wv(e){try{return Bv()?hv(e()):void 0}catch{return}}function Gv(e){try{Uv(_v(e))}catch{}}function Kv(e){try{Uv(Cv(e))}catch{}}function qv(e){try{Uv(wv(e))}catch{}}function Jv(e){let t=iv(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&Uv(ev({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:e.transcript,request:e.request,hydration:e.hydration,command:e.command.type,purpose:av(e.command),sseType:ov(e.command),source:sv(e.command),error:e.error}))}async function Yv(){let e=await Hv().exportReport(),t=Te()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function Xv(e,t=q_()){if(Pv())return(await Mv.saveFile({dataBase64:Nv(e),mimeType:`application/json`,filename:t}))?.cancelled?`cancelled`:`saved`;if(typeof document>`u`)return`failed`;let n=new Blob([e],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);return i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),`downloaded`}async function Zv(){let e=await Yv(),t=q_();return{content:e,fileName:t,outcome:await Xv(e,t),eventCount:J_(e)}}function Qv(e){let t=e.directory.trim(),n=new Set,r=[],i=e=>{!e||n.has(e)||(n.add(e),r.push({directory:t,sessionID:e}))};for(let n of e.viewedSessions??[])n.directory.trim()===t&&i(n.sessionID);e.viewed?.directory.trim()===t&&i(e.viewed.sessionID);for(let t of e.busyOrRetrySessionIDs??[])i(t);for(let n of e.activeScopes)n.directory.trim()===t&&i(n.sessionID);return r}var $v=2,ey=6e4,ty=6e4;function ny(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??i)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??h)()}}function ry(e,t){let n=(t.probe?.getTransport??i)(),r=(t.probe?.getGeneration??h)();if(n!==e.transport||r!==e.generation)throw new Vh}function iy(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function ay(e,t){return vg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function oy(e,t){return`${e.trim()}\n${t}`}function sy(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Ag({client:t,activeRegistry:Tg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??$v)),o=e.fetchReconcile??n_,s=e.now??Date.now,c=Math.max(0,e.destructiveResetDedupeMs??ey),l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Set,_=new Map,v=new Set,y=new Map,b=(e,t)=>{g.add(oy(e,t))},x=(e,t)=>{g.delete(oy(e,t))},S=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},C=e=>{u+=1;for(let e of[...f.keys()])S(e);p.clear(),m.clear(),y.clear()},w=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(oy(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of r.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&i.set(oy(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(i.values())},T=(t,n)=>{let i=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of r.listCanonical({transport:t.transport,generation:t.generation}))i.add(e.scope.directory);for(let e of r.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&i.add(e.directory);for(let e of n)e.directory&&i.add(e.directory.trim());return i},E=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=oy(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},D=i=>{if(l)return;let a={transport:i.transport??ny(e).transport,generation:i.generation??ny(e).generation},o=s(),c=E(),u=T(a,c),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(oy(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of r.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(oy(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of c)f.set(oy(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(oy(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=iy(e,a),s=n.getTranscript(r),c=F_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:i.lastEventID,capturedAt:o});R_(t,c)}let p=new Set;for(let t of u){let n=Qv({directory:t,activeScopes:w(a,t),viewedSessions:c,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(oy(e.directory,e.sessionID))}for(let e of d){let t=oy(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=Wv(()=>n.getTranscript(e)),a=n.getTranscript(e).liveRevision,o=n.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:t.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:r,liveRevision:a});try{let t=Wv(()=>n.getTranscript(e));i&&t&&Gv({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},k=e=>{let t=n.getTranscript(e),r=t.messageOrder[t.messageOrder.length-1];if(!r)return!1;let i=t.messagesByID[r];return!i||i.role!==`assistant`?!1:zs(i)},A=async(r,i,a)=>{if(ry({transport:i.transport,generation:i.generation},e),a!==u)throw new Vh;R_(t,I_(L_(t,i)??F_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let o=Wv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),ry({transport:i.transport,generation:i.generation},e),a!==u)throw new Vh;z_(t,i),x(i.directory,i.sessionID),y.set(oy(i.directory,i.sessionID),s());try{let e=Wv(()=>n.getTranscript(r));o&&e&&Gv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw R_(t,I_(L_(t,i)??F_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},j=async(r,i,a)=>{if(ry({transport:i.transport,generation:i.generation},e),a!==u)throw new Vh;R_(t,I_(L_(t,i)??F_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Wv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),ry({transport:i.transport,generation:i.generation},e),a!==u)throw new Vh;z_(t,i),x(i.directory,i.sessionID);try{let e=Wv(()=>n.getTranscript(r));o&&e&&Gv({trigger:`reconnect-compensation-ensure-tail`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw R_(t,I_(L_(t,i)??F_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},ee=async(r,i,a,l)=>{let d=iy(r,i),f=ay(r,i),p=Sg({directory:f.directory,sessionID:f.sessionID,checkpoint:String(L_(t,f)?.capturedAt??s())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:s()});try{if(ry(i,e),a!==u||l.aborted)throw new Vh;let m=L_(t,f);if(m||(m=F_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:s()}),R_(t,m)),!m.anchorMessageID){if(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}m=I_(m,{state:`reconciling`}),R_(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,ry(i,e),a!==u||l.aborted)throw new Vh;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,ry(i,e),a!==u||l.aborted)throw new Vh;let g=n.getTranscript(d).liveRevision;if(!_&&!h){await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()});return}let x=await o({sessionID:r.sessionID,directory:r.directory.trim(),..._?{continuation:_}:{anchor:h},signal:l});if(ry(i,e),a!==u||l.aborted)throw new Vh;if(x.resetRequired){let n=y.get(oy(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}if(S===1&&(v=x.capturedHeadMessageID),b=x.latestHeadMessageID??b,x.records.length>0&&O(d,x,g),m=I_(L_(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),R_(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=I_(L_(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),R_(t,m);continue}if(m=I_(L_(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),R_(t,m),x(r.directory,r.sessionID),t.setQueryData(p,{status:`complete`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}{let n=y.get(oy(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}}}catch(n){if(n instanceof Vh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(p,{status:`cancelled`,finishedAt:s()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(p,{status:`error`,finishedAt:s(),code:n instanceof Error?n.name:`error`}),n}},te=t=>{let n=t.trim(),r=m.get(n)??0;if(r>=a)return;let i=p.get(n);if(!i||i.length===0)return;let o=i.shift();m.set(n,r+1);let s=oy(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),te(n);return}let c=ny(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{Fg(n,o.sessionID);try{await ee(o,c,l,h.signal)}catch{}finally{Ig(n,o.sessionID),f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),te(n)}})();d.set(s,g)},M=e=>{let t=e.directory.trim(),n=oy(t,e.sessionID);if(d.has(n))return;let r=p.get(t);r||(r=[],p.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),te(t))},ne=t=>{let n=E(),i=T(t,n);for(let a of i){let i=Qv({directory:a,activeScopes:w(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)M(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=oy(e.scope.directory,e.scope.sessionID);i.some(e=>oy(e.directory,e.sessionID)===t)||b(e.scope.directory,e.scope.sessionID)}}},re=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??i)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??h)(),a=(e.probe?.getTransport??i)();if(r!==n.generation||a!==n.transport){C(`generation_mismatch`);return}ne(n)},ie=t=>{if(l)return;let r=t.directory.trim(),i=ny(e,t),a=iy({directory:r,sessionID:t.sessionID},i),c=yg(ay({directory:r,sessionID:t.sessionID},i)),u=_.get(c);if(u&&s()-u.checkedAt<ty||v.has(c)||d.has(oy(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(v.add(c),(async()=>{try{if(ry(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(ry(i,e),l||(_.set(c,{checkedAt:s()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;O(a,u,d)}catch{}finally{v.delete(c)}})())};return{captureCheckpoints:D,onCompensation:re,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=oy(i,r.sessionID);if(!g.has(a))return ie(r),null;x(i,r.sessionID);let o=ny(e,r),s=iy({directory:i,sessionID:r.sessionID},o),c=ay({directory:i,sessionID:r.sessionID},o),u=L_(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){M({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{ry(o,e),Fg(i,r.sessionID);try{let e=await n.ensureInitial(s);return z_(t,c),e}finally{Ig(i,r.sessionID)}}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:C,getCheckpoint:n=>{let r=ny(e,n);return L_(t,ay({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(oy(e,t)),destroy:()=>{l=!0,C(`destroy`)}}}var cy=e=>e.trim(),ly=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session status runtime changed`)},uy=(e,t={})=>{let n=cy(e),r=t.transport??i(),a=t.loadSnapshot??((e,t)=>z.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,s=t.runtimeProbe??{},c=(s.getGeneration??h)();return ot({queryKey:N.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{ly(r,c,s);let t=o(),i=await a(n,e);if(ly(r,c,s),i===null)throw Error(`session status snapshot unavailable`);return{snapshot:i,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},dy=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(uy(e,r))},fy=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session active runtime changed`)},py=(e={})=>{let t=e.transport??i(),n=e.loadActive??(e=>z.getSessionActive(e)),r=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??h)();return ot({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{fy(t,o,a);let i=r(),s=await n(e);return fy(t,o,a),{result:s,requestedAt:i}},staleTime:0,gcTime:3e5,retry:!1})},my=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(py(n))},hy;function gy(e){hy=e}function _y(e){if(e){if(e.type===`idle`||e.type===`busy`)return{type:e.type};if(e.type===`retry`&&typeof e.attempt==`number`&&typeof e.message==`string`&&typeof e.next==`number`)return{type:`retry`,attempt:e.attempt,message:e.message,next:e.next}}}function vy(e,t){return JSON.stringify(e)===JSON.stringify(t)}function yy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function by(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>({session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n}})),!0)}function xy(e,t,n,r=Date.now(),i){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let a=e.membership,o=t??{},s=new Set([...n,...Object.keys(o)]);if(s.size===0)return{snapshot:null,source:`none`};let c={};for(let e of s){let t=Object.prototype.hasOwnProperty.call(a,e),n=_y(o[e]);if(t){c[e]=n&&yy(n,r)?n:{type:`busy`};continue}if(i?.tailOpenSessionIds?.has(e)){c[e]=n?.type===`retry`?n:{type:`busy`};continue}c[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:c,source:`fused`}}function Sy(e,t,n,r){if(n.length===0)return!1;let i=!1;return e.setState(e=>{let a=e.session_status??{},o,s,c=()=>o??={...a},l=()=>s??={...e.session_status_observed_at},u=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(l()[t]=r,i=!0)};for(let o of n){if(r!==void 0&&(e.session_status_observed_at[o]??-1/0)>=r)continue;let n=_y(t[o]);if(n&&n.type!==`idle`){vy(a[o],n)||(c()[o]=n,i=!0),u(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(c()[o]={type:`idle`},i=!0),u(o)}return!o&&!s?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{}}}),i}function Cy(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function wy(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await dy(e,{client:o,loadSnapshot:r.loadSnapshot,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),f=r.skipActive?Promise.resolve(null):(async()=>{try{return await my({client:o,loadActive:r.loadActive,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),[p,m]=await Promise.all([d,f]);if(c=p,m&&(l=m.result,u=m.requestedAt),r.isStale?.())return null;let h=c?.snapshot??null,g=l?.state===`supported`;if(h===null&&!g)return null;let{snapshot:_,source:v}=xy(l,h,n,Date.now(),{tailOpenSessionIds:r.tailOpenSessionIds});if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=Cy(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Sy(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??hy;if(S){let n=t.getState().session_status??{},r={};for(let e of x){let t=n[e];t&&t.type!==`idle`&&(r[e]={type:t.type})}S(e,r,x)}return _}async function Ty({directory:e,sessionID:t,store:n,statusBeforePull:r,statusObservedAtBeforePull:i,hasMessages:a,isTailPage:o=!0,isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m}){if(!o||!a||!r||r.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:wy(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Ey(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Dy(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts??[]})),cursor:typeof e.cursor==`string`?e.cursor:void 0,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function Oy(e){if(e.type===`message.part.delta`)return{action:`skip`};let t=e.properties;if(e.type===`message.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`remove`,messageID:e}:{action:`skip`}}if(e.type===`message.updated`){let e=t?.info;return typeof e?.id==`string`&&e.id.length>0?{action:`persist`,messageID:e.id}:{action:`skip`}}if(e.type===`message.part.updated`){let e=t?.part;return typeof e?.messageID==`string`&&e.messageID.length>0?{action:`persist`,messageID:e.messageID}:{action:`skip`}}if(e.type===`message.part.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`persist`,messageID:e}:{action:`skip`}}return{action:`skip`}}function ky(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(nc(e))??Promise.resolve(),r.get(ic(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=nc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=ic(e),i=(r.get(n)??Promise.resolve()).then(t,t);return r.set(n,i.then(()=>void 0,()=>void 0)),i};return{wait:i,persistSettled:(n,r,i)=>a(n,async()=>{if((await e.upsertSettled(n,r,i)).status!==`written`)return;let a=(t.getByteBudget??gg)();await e.evictToBytes(a,{protect:t.getProtectScopes?.()??[]})}),removeMessage:(t,n)=>a(t,()=>e.removeMessage(t,n)),clearSession:t=>a(t,()=>e.clearSession(t)),clearGeneration:t=>o(t,()=>e.clearGeneration(t))}}var Ay=new Map;function jy(e,t){let n=Ay.get(e);if(n)return n;let r=t().finally(()=>{Ay.get(e)===r&&Ay.delete(e)});return Ay.set(e,r),r}var My=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Ny(e){return jy(My(e),e.request)}function Py(e,t){return`${e}\n${t}`}var Fy=new Map;function Iy(e){return Fy.get(e)}async function Ly(e){return Ny({runtimeKey:Py(e.transport,e.generation),directory:e.directory,sessionID:e.sessionID,messageID:e.messageID,request:async()=>{let t=await e.request();if(t.error)throw Error(`session.message failed`);let n=t.data,r=n?.info,i=n?.parts??t.parts??[];if(!r?.id)throw Error(`session.message failed: empty response`);return Fy.set(r.id,i),{info:up(r),parts:i}}})}function Ry(e,t){let n=e.info;return n.role===t||n.clientRole===t}function zy(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Ry(i,`assistant`))continue;let e=i.info.parentID;if(!(!e||t.has(e)||r.has(e))&&(r.add(e),n.push(e),n.length===8))break}return n}async function By(e){if(e.complete){let t=e.records.some(e=>Ry(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=zy(e.records);if(t.length===0){let t=e.records.some(e=>Ry(e,`user`));return{records:e.records,boundaryFound:t,partial:!t}}let n=await Promise.all(t.map(async t=>{try{return await e.requestMessage(t)}catch{return null}})),r=new Map;for(let t of e.records)r.set(t.info.id,t);for(let e of n)e?.info?.id&&r.set(e.info.id,e);let i=[...r.values()].sort((e,t)=>e.info.id.localeCompare(t.info.id)),a=i.some(e=>Ry(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Vy(e){return e.trim()}function Hy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??i)(),r=e.generation??t.generation??(t.probe?.getGeneration??h)();return{directory:Vy(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function Uy(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:il,liveRevision:0}}function Wy(e,t){if(!e||e.pages.length===0)return Uy(t);let n=Bh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function Gy(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function Ky(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function qy(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=Gy(e.info);t!==void 0&&(n===void 0||t<n)&&(n=t)}if(n===void 0)return[];let r=new Set(t.records.map(e=>e.info.id)),i=[];for(let t of e.messageOrder){if(r.has(t))continue;let a=Gy(e.messagesByID[t]);a===void 0||a<=n||Ky(e.partsByMessageID[t])||i.push(t)}return i}function Jy(e={}){let t=e.client??L,n=e.cacheBudget??Ag({client:t,activeRegistry:e.activeRegistry??Tg()}),r=n.activeRegistry,a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=e.durableStore?ky(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Ey),getByteBudget:e.getDurableByteBudget}):void 0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=Wy(w(e),t.sessionID);!Cl(r)&&!v.has(n)||(y.add(n),Uv(ev({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=l.get(e);return t||(t={messages:new Map,parts:new Map},l.set(e,t)),t},w=n=>{let r=Hy(n,e);return lg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=Hy(t,e);return Zh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=Hy(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let r=e.probe??{getTransport:i,getGeneration:h},o=Hy(n,{...e,transport:void 0,generation:void 0,probe:r}),s=K(o),c=a.get(s);if(c)return c;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=sg({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(s,l),l},k=t=>{let n=K(Hy(t,e));l.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(Hy(n,e));if(s.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});s.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=s.get(e);n&&(n(),s.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of p.keys())t.startsWith(e)&&p.delete(t);for(let t of m.keys())t.startsWith(e)&&m.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of p)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of m.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=Hy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{u&&u.persistSettled(Ey(e),t,n??[])},le=(e,t,n,r)=>{if(!u||S>0||!r.applied||!r.changed)return;let i=Ey(t);if(n.type===`remove-message`){u.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(u.clearSession(i),n.page){let r=Wy(w(e),t.sessionID);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;ce(t,n,r.partsByMessageID[e.info.id]??e.parts)}}return}if(n.type!==`optimistic-add`&&n.type!==`optimistic-confirm`&&n.type!==`optimistic-remove`){if(n.type===`sse-event`||n.type===`sse-event-batch`){let r=n.type===`sse-event`?[n.event]:n.events,a=Wy(w(e),t.sessionID);for(let e of r){let n=Oy(e);if(n.action===`remove`){u.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=Wy(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:i,getGeneration:h},s={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??eh()};return Dy(r?.fresh?await t.fetchQuery({...tg(s,a,n.transport,o,n.generation),staleTime:0}):await ng(s,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)lu(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now();d.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return d.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Hm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let a=g.get(r);if(a&&a.size>0){let n=[],r=0;for(let o of i.records){let i=o.info.id;if(!(!i||!a.has(i))){if(!_l(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),p.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Vh||!se(t))return d.delete(r),P.getTranscript(e);throw d.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Uv(ev({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:Wy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{f.delete(r)}})();return f.set(r,a),a},fe=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;d.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return d.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||tu(t.sessionID,t.directory)?(d.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Hm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return d.delete(r),n instanceof Vh||!se(t)||Uv(ev({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`reconcile-page`,durationMs:Date.now()-i,transcript:Wy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{f.delete(r)}})();return f.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(Hy(t,e)))?!0:dh(n).kind===`unknown`},P={getTranscript(t){let n=Hy(t,e),r=K(n),i=Wy(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=Hy(t,e),r=K(n),i=P.getTranscript(t);return te(r,Dl(n.sessionID,i.boundary))},getRequestState(t){let n=Hy(t,e),r=d.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=Hy(t,e),r=K(n),i=P.getTranscript(t);Cl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:wl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:bl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(Hy(t,e)),i=C(r),a=P.getTranscript(t).messagesByID[n];return i.messages.has(n)&&i.messages.get(n)===a?i.messages.get(n):(i.messages.set(n,a),a)},getParts(t,n){let r=K(Hy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??Yy,o=i.parts.get(n);return o===a||o&&a&&o.length===a.length&&o.every((e,t)=>e===a[t])?o??a:(i.parts.set(n,a),a)},getMessageMaterializationState(t,n){let r=Hy(t,e),i=p.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||gl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=Hy(t,e),i=M(r,n),a=Wv(()=>P.getTranscript(t)),o=e=>{try{let t=Wv(e);if(!a||!t)return;Gv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=m.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return p.set(i,{status:`idle`}),P.getTranscript(t);if(!gl(P.getParts(t,n))&&!g.get(K(r))?.has(n))return p.set(i,{status:`ready`}),P.getTranscript(t);p.set(i,{status:`loading`}),k(t);try{let a=await Ly({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return z.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return se(r)?(P.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),gl(P.getParts(t,n))?p.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):p.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(p.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return p.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return p.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return m.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{m.get(i)===c&&m.delete(i)}),c},apply(r,i){let a=Hy(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=cg(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&_.delete(K(a)),e.result.changed&&(k(r),D(r)),e.result}case`sse-event`:{let e=cg(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`sse-event-batch`:{let e=cg(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=cg(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&k(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),cg(t,o,a.sessionID,{type:`optimistic-confirm`,messageID:i.messageID}).result;case`optimistic-remove`:{e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID});let n=cg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&k(r),n.result}case`reset`:{if(b.delete(K(a)),g.delete(K(a)),_.delete(K(a)),n.purgeSession(E(r)),!i.page)return k(r),{applied:!0,changed:!0};let e=cg(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(k(r),D(r)),e.result}case`materialize-snapshots`:return Xy(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=cg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&k(r),e.result}default:return{applied:!1,changed:!1}}})();return le(r,a,i,s),s.applied&&(Jv({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:Wy(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,i){let a=K(Hy(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);c.set(a,r.retain(e)),n.noteScopeObserved(e)}return s.add(i),A(t),()=>{let e=o.get(a);if(e){if(e.delete(i),e.size===0){let e=c.get(a);e&&(e(),c.delete(a))}j(a)}}},async ensureInitial(t){let i=Hy(t,e),a=K(i);if(u&&await u.wait(Ey(i)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Ey(i));if(se(i)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)_l(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Uv(ev({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,i);return Uv(ev({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!r.isRetained(E(t))){let e=Date.now(),n=await fe(t,i);return Uv(ev({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;d.delete(a);try{await s.ensureInitial()}catch(e){throw Uv(ev({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:Wy(w(t),i.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}d.delete(a),l||Hm(i.directory,i.sessionID,{transport:i.transport,generation:i.generation}),n.noteScopeObserved(E(t)),D(t);let f=P.getTranscript(t);return Uv(ev({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:f,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),f},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),dh(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=Hy(t,e),r=K(n);b.add(r),k(t);let i=Date.now();try{await O(t).fetchPreviousPage(),D(t);let e=P.getTranscript(t);return Uv(ev({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),e}catch(e){throw Uv(ev({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{b.delete(r),k(t)}},getController(t){let n=Hy(t,e);return a.get(K(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=Hy(t,e),i=Wv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??eh(),signal:new AbortController().signal}),s=P.getTranscript(t).liveRevision;if(P.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:o.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:s}),s<=a){let n=qy(P.getTranscript(t),o);for(let i of n)P.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let c=P.getTranscript(t);n.noteScopeObserved(E(t));try{let e=Wv(()=>c);i&&e&&Gv({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:i,after:e})}catch{}return c},async destructiveReset(t){let r=Wv(()=>P.getTranscript(t)),i=E(t);return u&&await u.clearSession(Ey(Hy(t,e))),n.destructiveReset(i,async()=>{let n=Hy(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),l.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=Wv(()=>s);r&&e&&Gv({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=K(Hy(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),l.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),l.delete(n);let e=c.get(n);e&&(e(),c.delete(n));let t=s.get(n);t&&(t(),s.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),u&&u.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of s.values())e();s.clear();for(let e of c.values())e();c.clear(),o.clear(),l.clear(),d.clear(),f.clear(),p.clear(),m.clear(),g.clear(),v.clear(),y.clear(),b.clear(),n.dispose()}};return P}var Yy=Object.freeze([]);function Xy(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=cg(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var Zy=`/api/openchamber/transcript-cache`,Qy=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),$y=e=>typeof e==`object`&&!!e&&!Array.isArray(e),eb=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},tb=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},nb=e=>{if(!$y(e))throw Error(`Invalid transcript cache scope`);return{transport:eb(e.transport,`scope`),generation:tb(e.generation,`scope`),directory:eb(e.directory,`scope`),sessionID:eb(e.sessionID,`scope`)}},rb=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},ib=e=>{if(!$y(e)||!$y(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!$y(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:nb(e.scope),messageID:eb(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>rb(e,`part completeness`)),completeness:rb(e.completeness,`completeness`),contentHash:eb(e.contentHash,`content hash`),byteSize:tb(e.byteSize,`byte size`),lastAccessedAt:tb(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:tb(e.sortKey.created,`sort key`),messageID:eb(e.sortKey.messageID,`sort key`)}}},ab=(e,t)=>{if(!$y(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(ib);return{scope:e.scope===void 0?_c(t):nb(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},ob=e=>{if(!$y(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:ib(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!Qy.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:ib(e.record)}}}throw Error(`Invalid transcript cache upsert`)},sb=e=>{if(!$y(e))throw Error(`Invalid transcript cache evict`);return{evicted:tb(e.evicted,`evict`),freedBytes:tb(e.freedBytes,`evict`),remainingBytes:tb(e.remainingBytes,`evict`)}},cb=e=>({scope:_c(e),records:[],byteSize:0}),lb=(e,t)=>$y(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,ub=async e=>{if(e.status===204)return;let t=await e.text();if(t)try{return JSON.parse(t)}catch{throw Error(`Invalid transcript cache payload`)}},db=async(e,t,n)=>{let r=await e(t,n);if(r.status===501)return{kind:`disabled`};if(r.status===404)return{kind:`not-found`};if(r.ok)return{kind:`ok`,payload:await ub(r)};let i=await ub(r).catch(()=>void 0);throw Error(lb(i,`Transcript cache request failed (${r.status})`))},fb=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),pb=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function mb(e={}){let t=e.fetch??F;return{async readSession(e){let n=await db(t,`${Zy}/session`,{method:`GET`,query:fb(e)});return n.kind===`disabled`||n.kind===`not-found`?cb(e):ab(n.payload,e)},async readMessage(e,n){let r=await db(t,`${Zy}/message`,{method:`GET`,query:{...fb(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!$y(r.payload))throw Error(`Invalid transcript cache record`);return ib(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await db(t,`${Zy}/message`,pb(`PUT`,{scope:e,info:n,parts:r}));if(i.kind===`disabled`)return{status:`skipped`,reason:`unchanged`};if(i.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return ob(i.payload)},async removeMessage(e,n){let r=await db(t,`${Zy}/message`,pb(`DELETE`,{scope:e,messageID:n}));if(r.kind!==`disabled`&&r.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearSession(e){let n=await db(t,`${Zy}/session`,pb(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await db(t,`${Zy}/generation`,pb(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await db(t,`${Zy}/evict`,pb(`POST`,{maxBytes:e,...n?.protect?{protect:n.protect}:{}}));if(r.kind===`disabled`)return{evicted:0,freedBytes:0,remainingBytes:0};if(r.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return sb(r.payload)},async clearAll(){let e=await db(t,`${Zy}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var hb=`openchamber-transcript-durable`,gb=1,_b=`transcriptIndex`,vb=`transcriptContent`,yb=class extends Error{code;constructor(e){super(e),this.code=e}},bb=e=>({id:rc(e.scope,e.messageID),scope:_c(e.scope),scopeKey:nc(e.scope),generationKey:ic(e.scope),messageID:e.messageID,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID},contentHash:e.contentHash,completeness:e.completeness,partCompleteness:e.partCompleteness.slice(),byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt}),xb=(e,t)=>({scope:_c(e.scope),messageID:e.messageID,info:gc(t.info),parts:gc(t.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),Sb=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return xb(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Cb=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},wb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Tb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new yb(`database-unavailable`));return}let r=indexedDB.open(e,gb),i=!1,a=()=>{i||(i=!0,n(new yb(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(_b)){let t=e.createObjectStore(_b,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(vb)||e.createObjectStore(vb,{keyPath:`id`})},r.onsuccess=()=>{let e=r.result;if(e.onversionchange=()=>e.close(),i){e.close();return}i=!0,t(e)},r.onerror=a,r.onblocked=a}),Eb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new yb(`database-unavailable`)),r.onblocked=()=>void 0}),Db=(e=hb)=>({transaction:async t=>{let n=await Tb(e),r=n.transaction([_b,vb],`readwrite`),i=r.objectStore(_b),a=r.objectStore(vb),o=e=>wb(e,r),s=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{console.error(`Transcript durable IndexedDB transaction error`,r.error)}}),c;try{let e=await t({getIndex:e=>o(i.get(e)),getAllIndexes:()=>o(i.getAll()),getIndexesByScope:e=>o(i.index(`scopeKey`).getAll(e)),getIndexesByGeneration:e=>o(i.index(`generationKey`).getAll(e)),putIndex:async e=>{await o(i.put(e))},deleteIndex:async e=>{await o(i.delete(e))},getContent:e=>o(a.get(e)),putContent:async e=>{await o(a.put(e))},deleteContent:async e=>{await o(a.delete(e))},clearAll:async()=>{await o(i.clear()),await o(a.clear())}});return await s,e}catch(e){c=e;try{r.abort()}catch{}try{await s}catch(e){c===void 0&&(c=e)}throw c}finally{n.close()}},destroy:()=>Eb(e)});function Ob(e,t={}){let n=vc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(bb(t)),yc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(nc(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=xb(t,r);a.lastAccessedAt=n(),await e.putIndex(bb(a)),i.push(a)}return bc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Sb(e,rc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=xc({info:i,incomingCompleteness:lc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=gc(a.slice()),c=lc(s),l=await fc(i,s),u=rc(t,i.id);return e.transaction(async e=>{let a=await Sb(e,u),o=xc({info:i,existing:a,incomingCompleteness:c,incomingHash:l.hash});if(o.status===`skipped`)return o.reason===`slim-downgrade`&&a?{status:`skipped`,reason:`slim-downgrade`,record:yc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:_c(t),messageID:i.id,info:gc(i),parts:s,partCompleteness:s.map(cc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:oc(i)};return await e.putIndex(bb(d)),await e.putContent({id:u,info:gc(i),parts:s}),{status:`written`,record:yc(d)}})},async removeMessage(t,n){await e.transaction(e=>Cb(e,rc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(nc(t));for(let t of n)await Cb(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(ic(t));for(let t of n)await Cb(e,t.id)})},async evictToBytes(t,n){return e.transaction(async e=>{let r=Number.isFinite(t)?Math.max(0,t):0,i=new Set((n?.protect??[]).map(nc)),a=await e.getAllIndexes(),o=0;for(let e of a)o+=e.byteSize;if(o<=r)return{evicted:0,freedBytes:0,remainingBytes:o};let s=a.filter(e=>!i.has(e.scopeKey)).sort((e,t)=>e.lastAccessedAt===t.lastAccessedAt?ac(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Cb(e,t.id),o-=t.byteSize,l+=t.byteSize,c+=1}return{evicted:c,freedBytes:l,remainingBytes:o}})},async clearAll(){await e.transaction(async e=>{await e.clearAll()})},async destroy(){await e.destroy()}}}function kb(e={}){return Ob(e.driver??Db(e.databaseName),e)}function Ab(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??Ge;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var jb=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Mb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??mb)(),t),i=()=>(n??=(e.createIndexedDBStore??kb)(),n),a=()=>Ab(e)===`http`?r():i();return{readSession:e=>a().readSession(e),readMessage:(e,t)=>a().readMessage(e,t),upsertSettled:(e,t,n)=>a().upsertSettled(e,t,n),removeMessage:(e,t)=>a().removeMessage(e,t),clearSession:e=>a().clearSession(e),clearGeneration:e=>jb([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Nb(e={}){await Mb(e).clearAll()}var Pb=(e,t)=>e<t?-1:+(e>t);function Fb(e){return e.filter(e=>!!e?.id).sort((e,t)=>Pb(e.id,t.id))}async function Ib(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await Kg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=r.records.map(e=>({info:up(e.info),parts:Fb(e.parts??[])}));if(!e.before&&!r.complete&&zy(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await By({records:a,complete:r.complete,requestMessage:async n=>{let r=await Ly({transport:i(),generation:h(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:Fb(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Fb(e.parts??[])}))}return{records:a,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function Lb(e){let t=e.client??L,n=Tg(),r=Ag({client:t,activeRegistry:n}),a=Jy({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:i,getGeneration:h},fetcher:e=>Ib({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:eh(),historyLimit:th(),durableStore:e.durableStore??Mb()}),o=sy({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:r,probe:{getTransport:i,getGeneration:h},confirmSessionStatus:async(t,n)=>{let r=e.childStores.getChild(t.directory);if(!r)return;let i=r.getState().session_status?.[t.sessionID];!n.tailOpen&&i?.type!==`busy`&&i?.type!==`retry`||await wy(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return _u(a),Au(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),Au(null),a.destroy(),vu()}}}function Rb(e){return yu().apply(W(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var zb=new Map;function Bb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Vb(e,t,n,r={}){let a=r.getTransportIdentity??i,o=r.getGeneration??h,s=a(),c=o(),l=Bb(e,t,s,c),u=()=>a()===s&&o()===c,d=zb.get(l)??Promise.resolve(),f,p=new Promise(e=>{f=e}),m=d.catch(()=>void 0).then(()=>p);zb.set(l,m);try{if(await d.catch(()=>void 0),!u())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:s,generation:c,isCurrent:u})}finally{f(),zb.get(l)===m&&zb.delete(l)}}var Hb=new Set,Ub=new Set,Wb=new Set,Gb=new Set,Kb={onDeleteRequest(e){return Hb.add(e),()=>{Hb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||Hb.forEach(t=>t(e))},onCreateRequest(e){return Ub.add(e),()=>{Ub.delete(e)}},requestCreate(e){let t=e??{};Ub.forEach(e=>e(t))},onDirectoryRequest(e){return Wb.add(e),()=>{Wb.delete(e)}},requestDirectoryDialog(){Wb.forEach(e=>e())},onGitRefreshHint(e){return Gb.add(e),()=>{Gb.delete(e)}},requestGitRefresh(e){e.directory.trim()&&Gb.forEach(t=>t(e))}},qb=50,Jb=e=>{let t=Object.keys(e);if(t.length<=qb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-qb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},Yb=Oe()(je(ke((e,t)=>({sessions:{},setSessionTodos:(t,n)=>{t&&e(e=>{let r={...e.sessions};return!n||n.length===0?t in r?(delete r[t],{sessions:r}):e:(r[t]={todos:n,touchedAt:Date.now()},{sessions:Jb(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:g(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),Xb=new Set([`todowrite`,`todoread`]),Zb=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),Qb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),$b=(e,t)=>{Yb.getState().setSessionTodos(e,t)},ex=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},tx=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},nx=e=>{if(!e||typeof e!=`object`)return null;let t=e;if(typeof t.content!=`string`||typeof t.status!=`string`)return null;let n={content:t.content,status:t.status,priority:typeof t.priority==`string`?t.priority:`medium`};return typeof t.id==`string`&&t.id.length>0&&(n.id=t.id),n},rx=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=nx(n);e&&t.push(e)}return t},ix=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return rx(t);if(t&&typeof t==`object`)return rx(t.todos)}catch{}return[]},ax=e=>{if(!Xb.has(ex(e)))return[];let t=tx(e);if(t&&Zb.has(t))return[];let n=e.state,r=rx(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=rx(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=rx(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?ix(i):[]};function ox(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.partsByMessageID[n];if(!(!r||r.length===0))for(let e=r.length-1;e>=0;--e){let t=ax(r[e]);if(t.length>0)return t}}return[]}function sx(e){if(!e.sessionID||e.isStale?.()||Qb(e.store.getState().todo,e.sessionID))return!1;let t=ox(e.transcript);return t.length===0||e.isStale?.()||Qb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function cx(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(W(e.directory,e.sessionID));return t?sx({sessionID:e.sessionID,store:e.store,transcript:t,persist:$b,isStale:e.isStale}):!1}var lx=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>dC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>uC,SESSION_DELETE_UNDO_MS:()=>FS,abortBusySessionForMessageEdit:()=>TC,abortCurrentOperation:()=>gC,archiveSession:()=>GS,beginOptimisticSend:()=>tC,cancelScheduledSessionDeletes:()=>WS,classifySendFailure:()=>aS,combinedSendConfirmationOptions:()=>fC,commitMessageEdit:()=>DC,createSession:()=>kS,deleteSession:()=>HS,dirStoreForDirectory:()=>Gx,dismissOpenQuestionsForSession:()=>bC,ensureSentUserMessagePresence:()=>hC,fetchMessagesForSession:()=>NC,fetchRecentSendConfirmationRecords:()=>cC,forkSession:()=>jC,getSendFailureKind:()=>rS,isQuestionRequestNotFoundError:()=>ES,materializeConfirmedSendRecords:()=>lC,mirrorSessionIntoLiveStores:()=>Qx,optimisticInsertUserMessage:()=>oC,optimisticSend:()=>aC,patchSessionMetadata:()=>AS,refetchSessionMessages:()=>kC,rejectQuestion:()=>yC,releaseUnconfirmedQueueSend:()=>Hx,requestSessionSmartTitle:()=>JS,resolveForkMessageId:()=>Ex,respondToPermission:()=>_C,respondToQuestion:()=>vC,revertToMessage:()=>xC,rollbackOptimisticSend:()=>rC,scheduleSessionDeletes:()=>US,setActionRefs:()=>Bx,setOptimisticRefs:()=>Vx,settleOptimisticSend:()=>iC,shareSession:()=>YS,shouldSuppressForkCopyEvent:()=>Ox,stageMessageEdit:()=>CC,trackForkCopySessionCreated:()=>vx,unarchiveSession:()=>KS,unrevertSession:()=>AC,unshareSession:()=>XS,updateSessionTitle:()=>qS,waitForConnectionOrThrow:()=>lS,waitForSessionIdleForMessageEdit:()=>EC}),ux=2,dx=150,fx=new Set([`patch`,`step-start`,`step-finish`]),px=3,mx=150,hx=null,gx=new Map,_x=3e4;function vx(e,t){let n=t?.id;!hx||hx.runtimeKey!==c()||hx.directory!==e||!n||t?.title!==hx.expectedTargetTitle||n===hx.sourceSessionID||hx.targetSessionID||(hx.targetSessionID=n)}function yx(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function bx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function xx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Sx(e){return e?.type===`busy`||e?.type===`retry`}function Cx(e){for(let t=e.length-1;t>=0;--t)if(e[t]?.role===`user`)return t;return-1}function wx(e){let t=e.at(-1);return t?.role===`assistant`&&t.time.completed==null}function Tx(e,t){return Sx(e)||e==null&&wx(t)}function Ex(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!Tx(n,t))return;let r=Cx(t);if(r!==-1)return t[r+1]?.id}async function Dx(e,t){let n=Rp(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return z.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function Ox(e,t,n){if(hx&&hx.runtimeKey===c()&&hx.directory===e&&t&&t===hx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${c()}:${e}:${t}`,i=gx.get(r);return i?i.expiresAt<=Date.now()?(gx.delete(r),!1):n<=i.messageID:!1}var kx=null,Ax=null,jx=()=>``,Mx=new Map,Nx=null,Px=null,Fx=null,Ix=e=>new Promise(t=>setTimeout(t,e));function Lx(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e.message;if(typeof t==`string`&&t.length>0)return t;let n=e.data;if(n&&typeof n==`object`){let e=n.message;if(typeof e==`string`&&e.length>0)return e}}try{return JSON.stringify(e)}catch{return String(e)}}function Rx(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Lx(e.error)}`);throw n!==void 0&&(r.status=n),r}function zx(e,t){let n=Rx(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Bx(e,t,n){if(kx=e,Ax=t,jx=n,Mx.size>0){let e=[...Mx.values()];Mx.clear(),queueMicrotask(()=>{for(let t of e)NC(t.sessionID,t.directory)})}}function Vx(e,t,n){Nx=e,Px=t,Fx=n??null}function Hx(e){let t=e.directory??null;Px?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Ux(){if(!kx)throw Error(`SDK not initialized — is SyncProvider mounted?`);return kx}function Wx(){if(!Ax)throw Error(`Child stores not initialized`);let e=jx();if(!e)throw Error(`No current directory`);return Ax.ensureChild(e)}function Gx(e,t){if(!Ax)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Ax.ensureChild(e,t)}function Kx(e,t){let n=t??hS(e);return n?{store:Gx(n),directory:n}:{store:Wx(),directory:$x()}}function qx(e,t){let{store:n,directory:r}=Kx(e,t??void 0),i=r??$x()??``;return{repository:H()??U(i,n),directory:i,store:n}}function Jx(e,t){let{repository:n,directory:r,store:i}=qx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(W(r,e))}}function Yx(e,t){return Gu(Jx(e,t).data)}function Xx(e,t){return Jx(e,t).data.messageOrder.length}function Zx(e,t){let n=Ax;if(!n)return!1;let r=t?[[t,n.getChild(t)]]:n.children;for(let[,t]of r){if(!t)continue;let n=t.getState().session,r=n.findIndex(t=>t.id===e.id);if(r===-1)continue;let i=[...n];return i[r]=$E(e,n[r]),t.setState({session:i}),!0}return!1}function Qx(e,t){t&&Zx(e,t)||Zx(e)}function $x(){return jx()||void 0}function eS(){let{hasEverConnected:e,lastDisconnectReason:t}=Gf.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function tS(e){if(!e||typeof e!=`object`)return null;let t=e.status;if(typeof t==`number`)return t;let n=e.response;return typeof n?.status==`number`?n.status:null}var nS=class extends Error{kind;cause;messageID;constructor(e,t,n){super(t instanceof Error?t.message:String(t)),this.name=`SendDispatchError`,this.kind=e,this.cause=t,this.messageID=n}};function rS(e){return e instanceof nS?e.kind:null}function iS(e){let t=tS(e);if(t===503||t===504||t===408||e instanceof TypeError||e instanceof DOMException&&(e.name===`AbortError`||e.name===`TimeoutError`))return!0;let n=e instanceof Error?e.message.toLowerCase():typeof e==`string`?e.toLowerCase():``;return n.includes(`timeout`)||n.includes(`timed out`)||n.includes(`failed to fetch`)||n.includes(`networkerror`)||n.includes(`network error`)||n.includes(`gateway timeout`)||n.includes(`econnreset`)||n.includes(`socket hang up`)}function aS(e,t){return t?iS(e)||tS(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var oS=2e3,sS=5e3,cS=3e4;async function lS(){let e=Im();e&&Fm(`send_stream_stale`);let t=Date.now()+(e?sS:oS);for(;Date.now()<t;){if(Gf.getState().isConnected&&!Im()||d()&&!Im())return;let e=t-Date.now();if(e<=0)break;if(await Gf.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Im())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw eS()}function uS(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Fm(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},cS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function dS(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function fS(e){e&&Y.getState().upsertSession(e)}function pS(e,t){let n=cp(t),r=[...e.getState().session],i=ls.search(r,n.id,e=>e.id);if(i.found){let t=$E(n,r[i.index]);return r[i.index]=t,e.setState({session:r}),t}return r.splice(i.index,0,n),e.setState({session:r}),n}async function mS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=dS(e);if(i)return pS(t,i);try{return pS(t,await z.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function hS(e){return gS(e)||$.getState().getDirectoryForSession(e)||$x()}function gS(e){let t=Ax;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=H()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function _S(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):Ux()}function vS(e){Or.getState().clearAttachedFiles();for(let t of e){let e=typeof t.url==`string`?t.url:``,n=typeof t.mime==`string`?t.mime:`application/octet-stream`,r=typeof t.filename==`string`?t.filename:`attachment`;e&&Or.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var yS=()=>new Map(Array.from(Pd(),([e,t])=>[e,t.title||e]));function bS(e){return!(e.type!==`file`||nm(e))}function xS(e){return bS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function SS(e){return e.some(xS)}async function CS(e){let t=[...e.parts];if(!SS(t))return t;let n=h(),r=e.directory??``;try{await Eu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||h()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=qx(e.sessionID,r);if(t=[...i.getParts(W(a,e.sessionID),e.messageID)],SS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function wS(e){if(SS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await _m(e.parts,{sessionTitles:yS(),directory:e.directory}),n=Or.getState(),r=n.getDraft(e.key);return{payload:t,commit:await Sm({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function TS(e,t,n){let r=Ax;if(!r||!n)return null;for(let[t,i]of r.children){let r=i.getState(),a=e===`permission`?r.permission:r.question;for(let e of Object.values(a))if(e?.some(e=>e.id===n))return t}let i=$.getState().getDirectoryForSession(t);if(i)return i;for(let[e,n]of r.children){let r=n.getState();if(r.session.some(e=>e.id===t)||Object.prototype.hasOwnProperty.call(r.session_status??{},t)||Object.prototype.hasOwnProperty.call(r.permission??{},t)||Object.prototype.hasOwnProperty.call(r.question??{},t))return e}return null}function ES(e){if(e&&typeof e==`object`&&e.status===404)return!0;let t=``;return e instanceof Error?t=e.message:typeof e==`string`&&(t=e),/Question(?:\.)?NotFoundError|Question request not found/i.test(t)}function DS(e,t){let n=Ax;if(!n||!t)return!1;let r=!1;for(let[,i]of n.children){let n=i.getState().question??{},a=null,o=new Set([e,...Object.keys(n)].filter(Boolean));for(let e of o){let i=n[e];if(!i?.length)continue;let o=i.filter(e=>e.id!==t);o.length!==i.length&&(a??={...n},o.length>0?a[e]=o:delete a[e],r=!0)}a&&i.setState({question:a})}return r}function OS(e,t,n){let r=TS(e,t,n);return r?z.getScopedSdkClient(r):_S(t)}async function kS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??$x()),a=i.directory??null;return a&&Ed(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),Y.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function AS(e,t,n){let r=t??hS(e),i=n(Rp(await z.getSession(e,r))),a=await z.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Ed(a.id,o),a}async function jS(e,t){let n;try{n=await z.getSession(e,t??hS(e))}catch{return}if(!Hp(n))return;let r=Vp(n);if(r)try{await AS(r,t??hS(r),t=>Gp(t,e))}catch(e){let t=e instanceof Error?e.message:String(e);if(/not found/i.test(t))return;console.warn(`[session-actions] review metadata cleanup failed before delete`,e)}}function MS(e,t){if(!Ax)return[];let n=[],r=new Set,i=[];if(t){let e=Ax.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Ax.children.entries())r.has(e[0])||i.push(e);for(let[t,r]of i){let i=r.getState();i.session.some(t=>t.id===e)&&(n.push({directory:t,sessions:i.session}),r.setState({session:i.session.filter(t=>t.id!==e)}))}return n}function NS(e){if(Ax)for(let t of e){let e=Ax.children.get(t.directory);e&&e.setState({session:t.sessions})}}function PS(e){$.getState().setWorktreeMetadata(e,null)}var FS=1e4,IS=new Map,LS=0;function RS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function zS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),NS(e.listSnapshots),fS(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function BS(e,t){let n=t??hS(e);Y.getState().markSessionsPendingDeletion([e]);let r=MS(e,n),i=dS(e);Y.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function VS(e,t){try{if(await jS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return MS(e,t),Y.getState().removeSessions([e]),PS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(MS(e,t),Y.getState().removeSessions([e]),PS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function HS(e,t){let n=BS(e);return await VS(e,n.directory)?!0:(zS(n),!1)}function US(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>BS(e)),i=`session-delete-${Date.now()}-${LS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=IS.get(i);if(!e)return;IS.delete(i);let t=[],n=[];for(let r of e.entries)await VS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),zS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return IS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function WS(e){if(!e)return!1;let t=IS.get(e);if(!t)return!1;clearTimeout(t.timer),IS.delete(e);for(let e of[...t.entries].reverse())zS(e);return!0}async function GS(e){let t=hS(e),n=MS(e,t),r=dS(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await jS(e,t);let n=await z.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),NS(n),fS(r),!1}}async function KS(e){let t=hS(e),n=dS(e),r=n?RS(n):null;if(r&&(Y.getState().upsertSession(r),t&&Ax)){let e=Ax.children.get(t);e&&pS(e,r)}try{let n=await z.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=RS(n);if(Y.getState().upsertSession(r),t&&Ax){let e=Ax.children.get(t);e?pS(e,r):Qx(r,t)}else Qx(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&MS(e,t)),!1}}async function qS(e,t){let n=hS(e),r=dS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Zf(r):0,c=await z.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),Qx(c,n)}async function JS(e){let t=hS(e),n=dS(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await z.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),Qx(s,t)}async function YS(e){let t=hS(e),n=cp(zx(await Ux().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),Zx(n,t),n}async function XS(e){let t=hS(e),n=cp(zx(await Ux().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),Zx(n,t),n}function ZS(e){let t=Ax,n=e??jx();if(!t||!n)return{store:e?Gx(e):Wx(),isCurrent:()=>!0};let r=t,i=r.captureChild?.(n);if(i&&r.isCurrentChildCapture)return{store:i.store,isCurrent:()=>r.isCurrentChildCapture?.(i)===!0};let a=t.ensureChild(n);return{store:a,isCurrent:()=>t.getChild(n)===a}}function QS(){return{identity:i(),generation:h()}}function $S(e,t){return e.isCurrent()&&i()===t.identity&&h()===t.generation}function eC(e,t){if(!$S(e,t))throw Error(`Send target changed before transport dispatch`)}function tC(e){if(!Nx||!Px)throw new nS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??$x()??null,n=ZS(t),r=QS();eC(n,r),e.beforeOptimisticInsert?.(),eC(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),oC({sessionId:e.sessionId,messageID:i,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.parts}),e.onOptimisticInsert?.(),{messageID:i,sessionId:e.sessionId,directory:t,capture:n,transport:r}}catch(e){throw e instanceof nS?e:new nS(rS(e)??aS(e,!1),e)}}function nC(e){if(!$S(e.capture,e.transport)||!Px)return;Px({sessionID:e.sessionId,directory:e.directory,messageID:e.messageID});let t=e.capture.store.getState(),n=Date.now();e.capture.store.setState({session_status:{...t.session_status,[e.sessionId]:{type:`idle`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:n}})}function rC(e){nC(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function iC(e){if(!Nx||!Px)throw new nS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));let{ticket:t}=e,{capture:n,transport:r,messageID:i,sessionId:a,directory:o}=t,s=!1;try{if(await lS(),eC(n,r),s=!0,await uS(e.send(i)),!$S(n,r))throw new nS(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=rS(c)??aS(c,s),u=c instanceof nS?c:new nS(l,c,i);if(!$S(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await cC(a,i,o):null;if(d&&$S(n,r)){lC(n.store,a,i,d,{directory:o??void 0}),Fx?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||nC(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function aC(e){await iC({ticket:e.ticket??tC({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:e.directory,files:e.files,parts:e.parts,messageID:e.messageID,onOptimisticInsert:e.onOptimisticInsert,onMessageID:e.onMessageID,beforeOptimisticInsert:e.beforeOptimisticInsert}),preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:e.onSendConfirmed,send:e.send})}function oC(e){if(!Nx)return!1;let t=e.directory??$x(),n=t?Gx(t):Wx(),r=t??$x()??``;if(pC(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),s={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},c=Wv(()=>Jx(e.sessionId,t).data);Nx({sessionID:e.sessionId,directory:t,message:s,parts:a});let l=Wv(()=>Jx(e.sessionId,t).data);try{c&&l&&Gv({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:i(),generation:h(),before:c,after:l})}catch{}let u=n.getState();return n.setState({session_status:{...u.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...u.session_status_observed_at,[e.sessionId]:o}}),!0}function sC(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function cC(e,t,n,r){let i=r?.signal||r?.timeoutMs!==void 0?new AbortController:null,a=()=>i?.abort();r?.signal?.addEventListener(`abort`,a,{once:!0}),r?.signal?.aborted&&i?.abort();let o=r?.timeoutMs===void 0?void 0:setTimeout(()=>i?.abort(),Math.max(0,r.timeoutMs)),s=r?.attempts??ux,c=r?.retryDelayMs??dx;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!sC(r?.isCurrent)||a>0&&(await Ix(c),i?.signal.aborted||!sC(r?.isCurrent)))return null;try{let a=await Ux().session.messages({sessionID:e,directory:n??void 0,limit:ih(),...i?{signal:i.signal}:{}});if(!sC(r?.isCurrent))return null;let o=(Rx(a,`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.some(e=>e.info.id===t))return o}catch{}}return null}finally{o&&clearTimeout(o),r?.signal?.removeEventListener(`abort`,a)}}function lC(e,t,n,r,i){if(!r.length)return;let a=i?.directory??hS(t)??jx(),o=W(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:up(e.info),parts:e.parts??[]})),skipPartTypes:fx,merge:i?.gapFillOnly===!0?Xs:Qs({purpose:`recovery`})};xu(o,s)||U(a,e).apply(o,s)}var uC=2e3,dC={attempts:12,retryDelayMs:500},fC={presenceGraceMs:uC,recovery:{...dC}};function pC(e,t,n,r){let i=r??hS(t)??jx()??``,a=H()??U(i,e),o=W(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function mC(e,t,n,r){let i=r?.directory??hS(t)??jx()??``;if(pC(e,t,n,i))return Promise.resolve(!0);if(!sC(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=H()??U(i,e),f=W(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!sC(r?.isCurrent)){l(!1);return}pC(e,t,n,i)&&l(!0)}),pC(e,t,n,i)&&l(!0)})}async function hC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await mC(t,n,r,{timeoutMs:e.graceMs??fC.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!sC(a))return`cancelled`;let o=await cC(n,r,i,{...fC.recovery,isCurrent:a});return o?sC(a)?(lC(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:sC(a)?`missing`:`cancelled`}async function gC(e){let{store:t,directory:n}=Kx(e),r=n?{state:`bound`,transportIdentity:i(),directory:n,sessionID:e}:null,a=r?$.getState().beginQueueAbortBlock(r):null;try{if(zx(await Ux().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&a&&$.getState().clearQueueAbortBlock(r,a),et(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>eH);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function _C(e,t,n){await lS();let r=TS(`permission`,e,t)||hS(e)||$x();if(zx(await OS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function vC(e,t,n){await lS();let r=TS(`question`,e,t)||hS(e)||$x();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(zx(await OS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw ES(n)&&DS(e,t),n}}async function yC(e,t){await lS();let n=TS(`question`,e,t)||hS(e)||$x();try{if(zx(await OS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw ES(n)&&DS(e,t),n}}async function bC(e){if(!e)return!1;let t=Ax;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Zp(t.session,e);if(i.size===0)continue;let a=t.question??{};for(let e of i){let t=a[e];if(t)for(let r of t)n.push({sessionId:e,requestId:r.id})}}if(n.length===0)return!1;for(let{sessionId:e,requestId:t}of n)DS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await yC(e,t)}catch(e){if(ES(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function xC(e,t,n){let r=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return Vb(e,r??(()=>{try{return Kx(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:o,directory:c}=Kx(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Ux().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=Yx(e,c).find(e=>e.id===t),d=Yx(e,c).find(e=>e.id===t)??u;if(!d||d.role!==`user`)throw Error(`The selected user message is unavailable`);let{repository:f,directory:p}=qx(e,c),m=[...f.getParts(W(p,e),t)],h=a===void 0?s?C({transportIdentity:i()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await CS({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await _m(m,{sessionTitles:yS(),directory:c})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=o.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),w={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},w.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(o.setState(w),h){let t=Or.getState(),r=await Sm({key:h,expectedRevision:t.getDraft(h)?.revision??`absent`,payload:g,runtime:t.captureDraftRuntime()});if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),r.status===`committed`&&r.current&&r.previous&&r.result?.record?.revision!==void 0&&await wm({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await z.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await wm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}let i=[...o.getState().session],a=i.findIndex(t=>t.id===e);return a>=0&&(i[a]=r,o.setState({session:i})),c&&Kb.requestGitRefresh({directory:c}),g}catch(t){let r=[...o.getState().session],i=r.findIndex(t=>t.id===e);throw i>=0&&(r[i]={...r[i],revert:b}),n()?(o.setState({session:r}),h&&v&&_!==void 0&&await wm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await wm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function SC(e,t,n,r){let a=r??hS(t)??jx(),o=W(a,t),s=Wv(()=>Jx(t,a).data),c=[...bu(t)];c.some(e=>e.directory===a&&e.sessionID===t)||c.push(o);let l=!1;for(let e of c)xu(e,{type:`remove-message`,messageID:n})!=null&&(l=!0);l||U(a,e).apply(o,{type:`remove-message`,messageID:n});let u=Wv(()=>Jx(t,a).data);try{s&&u&&Gv({trigger:`user-delete`,sessionID:t,directory:a,transport:i(),generation:h(),before:s,after:u})}catch{}}async function CC(e,t,n,r){let a=n?.info,o=n?.parts,s=r?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=Kx(e,s).directory}else{c=Kx(e,s).directory;let{data:n}=Jx(e,c),r=Gu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=r?.draftKey??C({transportIdentity:i()},e),{commit:u}=await wS({key:l,parts:await CS({directory:c,sessionID:e,messageID:t,parts:o??[]}),directory:c});if(u.status!==`committed`||!u.current)throw Error(`composer-restoration-commit-${u.status}`);let d=u.result?.record?.revision,f=u.previous;return d===void 0||!f?{rollback:async()=>({status:`skipped`})}:{rollback:async()=>({status:(await wm({key:l,restoredRevision:d,previous:f})).status})}}function wC(e,t,n,r){let i=t.findIndex(t=>t.id===e),a=i>=0?t[i]:void 0;if(!a||a.role!==`user`||!n.has(e))throw Error(`The selected user message is unavailable`);let o=r?.preserveMessageId,s=o?t.findIndex(e=>e.id===o):-1,c=s>i?s:t.length;return t.slice(i,c).filter(e=>!(!n.has(e.id)||o&&e.id===o))}async function TC(e,t){let n=t?.directory,{store:r,directory:i}=Kx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Ux().session.abort({sessionID:e,directory:i})}catch{}}async function EC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=Kx(e,n),o=Date.now()+r;for(;Date.now()<o;){let t=a.getState().session_status[e];if(!t||t.type===`idle`)return;await new Promise(e=>setTimeout(e,i))}let s=a.getState().session_status[e];if(!(!s||s.type===`idle`))throw Error(`Session is still busy after waiting to edit: ${e}`)}async function DC(e,t,n){let r=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:s}=Kx(e,r),c=Wv(()=>Jx(e,r).data);try{await TC(e,{directory:r}),await EC(e,{directory:r});let n=new Set((await OC(e,r)).map(e=>e.id)),i=wC(t,Yx(e,r),n,{preserveMessageId:a});for(let t of[...i].reverse())await z.deleteSessionMessage(e,t.id,s),SC(o,e,t.id,s)}finally{try{let t=Wv(()=>Jx(e,r).data);c&&t&&Gv({trigger:`user-edit`,sessionID:e,directory:s,transport:i(),generation:h(),before:c,after:t})}catch{}}}async function OC(e,t){let{directory:n}=Kx(e,t);return(Rx(await Ux().session.messages({sessionID:e,directory:n,limit:rh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>up(e.info))}async function kC(e,t){let{store:n,directory:r}=Kx(e,t),a=Wv(()=>Jx(e,t).data),o=(Rx(await Ux().session.messages({sessionID:e,directory:r,limit:rh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Wv(()=>Jx(e,t).data);a&&n&&Gv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let s=o.map(e=>({info:up(e.info),parts:e.parts??[]})),c=W(r??jx(),e);xu(c,{type:`materialize-snapshots`,records:s,skipPartTypes:fx})||U(r??jx(),n).apply(c,{type:`materialize-snapshots`,records:s,skipPartTypes:fx});try{let n=Wv(()=>Jx(e,t).data);a&&n&&Gv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return s.map(e=>e.info)}async function AC(e,t){return Vb(e,t??(()=>{try{return Kx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=Kx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Xx(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Ux().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Ux().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=zx(c,`session.unrevert`),u=[...r.getState().session],d=u.findIndex(t=>t.id===e);d>=0&&(u[d]=l,r.setState({session:u}));for(let r=0;r<px;r+=1){if(r>0&&(await Ix(mx),!n())||(await kC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Xx(e,i)>o)return}if(Xx(e,i)<=o){let n=i??jx(),a=H()??U(n,r),o=W(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await kC(e,t)}})}async function jC(e,t,n,r){let i=c(),{store:a,directory:o}=Kx(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await mS(e,a,o);Ed(e,o);let l=a.getState(),u=l.session_status[e],d=Yx(e,o);u?.type,d.length;let f=Ex(n,d,u);if(!n&&Tx(u,d)&&Cx(d)===-1&&(await kC(e),l=a.getState(),u=l.session_status[e],d=Yx(e,o),f=Ex(void 0,d,u)),!n&&Tx(u,d)&&Cx(d)===-1)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:Xx(e,o)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=Jx(e,o),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(W(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!nm(e)).map(e=>e.text||e.content||``).join(`
462
+ `).trim();let v=g.filter(e=>e.type===`file`&&!nm(e));hx={operationId:t,runtimeKey:i,directory:o,sourceSessionID:e,expectedTargetTitle:yx(s.title)},await bx(t,`copying`);let y;try{if(y=await z.forkSession(e,f,o),y.id,c()!==i)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),hx?.operationId===t&&(hx=null),!1;await bx(t,`opening`);try{y=await Dx(y,o)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw hx?.operationId===t&&(hx=null),e}try{let r=[...a.getState().session],i=ls.search(r,y.id,e=>e.id);i.found||(r.splice(i.index,0,y),a.setState({session:r}));let s=W(o,y.id),l=H();l&&typeof l.destructiveReset==`function`?await l.destructiveReset(s):xu(s,{type:`reset`}),xx(t,y.id);let u=$.getState().currentSessionId,d=u===e||u===y.id;d&&$.getState().setCurrentSession(y.id,o),await bx(t,`loading`),y.id;let f=H()??U(o,a),p=W(o,y.id),m=f.getRequestState?.(p);(!(f.hasSession?.(p)??!1)||m?.status===`error`)&&await NC(y.id,o);let g=Yx(y.id,o).at(-1)?.id;g&&gx.set(`${c()}:${o}:${y.id}`,{messageID:g,expiresAt:Date.now()+_x}),d&&h&&_&&Or.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&vS(v)}finally{hx?.operationId===t&&(hx=null)}return y.id,!0}var MC=new Map;async function NC(e,t){let n=t??$x();if(!n)return;let r=c(),i=nh(),a=`${r}:${n}:${e}:${i}`;if(!kx||!Ax){Mx.set(a,{sessionID:e,directory:n});return}let o=MC.get(a);if(o)return o;let s=PC(e,n,r,i).finally(()=>{MC.get(a)===s&&MC.delete(a)});return MC.set(a,s),s}async function PC(e,t,n,r){Ux();let i=Gx(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=H()??U(t,i),l=W(t,e),u=c.getTranscript(l),d=c.getPagination(l),f=c.getRequestState?.(l),p=e=>e.role===`user`||e.clientRole===`user`,m=u.messageOrder.map(e=>u.messagesByID[e]).filter(e=>!!e),h=m.some(p),g=d.boundary,_=g.kind===`has-more`||g.kind===`exhausted`,v=(c.hasSession?.(l)??m.length>0)&&(h||g.kind===`exhausted`)&&_&&f?.status!==`error`,y=()=>$.getState().currentSessionId!==e;if(v){if(Vm(t,e)){cx({directory:t,sessionID:e,store:i,transcript:u});return}if(H()){try{await Cu(t,e)}catch{return}if(y())return;cx({directory:t,sessionID:e,store:i,isStale:y}),await Ty({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}cx({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await Ib({directory:t,sessionID:e,limit:r,signal:AbortSignal.timeout(3e4),purpose:`initial`});if(y())return;c.apply(l,{type:`http-page`,purpose:`initial`,page:n,skipPartTypes:fx}),b=n.records.length,Hm(t,e)}catch{return}y()||(cx({directory:t,sessionID:e,store:i,isStale:y}),await Ty({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var FC=new Map,IC=e=>{FC.set(e,(FC.get(e)??0)+1)},LC=e=>(FC.get(e)??0)>0,RC=e=>{let t=FC.get(e)??0;return t<=0?!1:(t===1?FC.delete(e):FC.set(e,t-1),!0)},zC=18e4,BC=400,VC=300,HC=15,UC=`FINAL_REVIEW_STATUS: no_remaining_findings`,WC=UC.toLowerCase(),GC=new Set,KC=new Set,qC=e=>{let t=e.finish;if(typeof t==`string`&&t.length>0)return!0;let n=e.time?.completed;return typeof n==`number`&&n>0},JC=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},YC=e=>{let t=e.role;return typeof t==`string`?t:``},XC=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},ZC=(e,t)=>Ld(e.id,t).some(e=>{let t=e.type;if(t===`compaction`)return!0;if(t!==`text`)return!1;let n=e.text;return typeof n==`string`&&n.trim()===`/compact`}),QC=(e,t,n,r=0,i)=>{let a=Id(e,t),o=new Set;for(let e of a)ZC(e,t)&&o.add(e.id);for(let e=a.length-1;e>=0;--e){let s=a[e];if(s.id===n)return null;if(YC(s)!==`assistant`||!qC(s)||JC(s)<r-1e3)continue;let c=XC(s);if(!ow(s,i)||c&&o.has(c))continue;let l=Ip(Ld(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},$C=(e,t)=>Rd(e,t)?.type===`idle`,ew=e=>e===c(),tw=e=>{Kp.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},nw=e=>{if(e&&!ew(e))throw Error(`Auto-review stopped because the runtime changed.`)},rw=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),iw=e=>e.trim().split(`
463
463
  `).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===WC,aw=e=>{let t=e.trimEnd().split(`
464
464
  `);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===WC&&t.pop(),t.join(`
465
465
  `).trim()},ow=(e,t)=>!t||XC(e)===t,sw=(e,t)=>[e.runtimeKey,e.originalSessionID,e.phase,e.expectedAssistantParentID??``,t].join(`:`),cw=(e,t)=>{let n=sw(e,t);return KC.has(n)?null:(KC.add(n),n)},lw=e=>{KC.delete(e)},uw=()=>[{synthetic:!0,text:`This review is part of an automatic review loop. If there are no remaining issues, end your response with this exact final line:\n${UC}\nIf you found issues that require changes, do not include that final status line.`}],dw=async e=>{for(;;){let t=Kp.getState().runsByOriginalSessionID[e];if(!t||t.status!==`running`)return;if(!ew(t.runtimeKey)){tw(t);return}let n=t.phase===`waiting_for_reviewer`?t.reviewSessionID:t.originalSessionID;if(!$C(n,t.directory)){await new Promise(e=>setTimeout(e,VC));continue}let r=QC(n,t.directory,t.lastForwardedMessageID,t.waitAfterCreatedAt,t.expectedAssistantParentID);if(!r){await new Promise(e=>setTimeout(e,VC));continue}if(t.phase===`waiting_for_reviewer`){let e=cw(t,r.id);if(!e){await new Promise(e=>setTimeout(e,VC));continue}if(!ew(t.runtimeKey)){lw(e),tw(t);return}try{let e=Date.now(),n=iw(r.text),i=n?aw(r.text):r.text,a=await Cw(t.reviewSessionID,t.directory,i,t.runtimeKey);if(n){Kp.getState().completeRun(t.originalSessionID);return}Kp.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_implementer`,lastForwardedMessageID:r.id,expectedAssistantParentID:a,waitAfterCreatedAt:e}))}finally{lw(e)}}else{if(t.iteration>=t.maxIterations){Kp.getState().stopRun(t.originalSessionID);return}let e=cw(t,r.id);if(!e){await new Promise(e=>setTimeout(e,VC));continue}if(!ew(t.runtimeKey)){lw(e),tw(t);return}try{let e=Date.now(),n=await ww(t.originalSessionID,t.directory,r.text,!0,t.runtimeKey);Kp.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_reviewer`,iteration:t.iteration+1,lastForwardedMessageID:r.id,expectedAssistantParentID:n,waitAfterCreatedAt:e}))}finally{lw(e)}}}},fw=e=>{Kp.getState().upsertRun(e),pw(e.originalSessionID)},pw=e=>{let t=Kp.getState().runsByOriginalSessionID[e];!t||t.status!==`running`||!ew(t.runtimeKey)||GC.has(e)||(GC.add(e),dw(t.originalSessionID).catch(e=>{console.error(`[review-flow] auto-review loop failed`,e),Kp.getState().updateRun(t.originalSessionID,t=>({...t,status:rw(e)?`stopped`:`error`,error:e instanceof Error?e.message:String(e)}))}).finally(()=>{GC.delete(e)}))},mw=async(e,t,n)=>{let r=Date.now()+zC;for(;Date.now()<r;){let r=Id(e,t).filter(e=>YC(e)===`assistant`).filter(e=>JC(e)>=n-1e3).filter(qC).sort((e,t)=>JC(t)-JC(e));for(let e of r){let n=Ip(Ld(e.id,t)).trim();if(n)return n}await new Promise(e=>setTimeout(e,BC))}throw Error(`Timed out waiting for handoff response`)},hw=e=>{let t=Jo.getState(),n=Gf.getState(),r=$.getState().getLastUserChoice(e),i=r?.agent||t.getSessionAgentSelection(e)||n.currentAgentName||void 0,a=t.getSessionModelSelection(e),o=i?t.getAgentModelForSession(e,i):null,s=r?.providerID&&r.modelID?{providerId:r.providerID,modelId:r.modelID}:null,c=s||o||a||(n.currentProviderId&&n.currentModelId?{providerId:n.currentProviderId,modelId:n.currentModelId}:null);if(!c?.providerId||!c?.modelId)return null;if(s)return{providerID:s.providerId,modelID:s.modelId,agent:i,variant:r?.variant};let l=i?t.getAgentModelVariantForSession(e,i,c.providerId,c.modelId):void 0,u=n.currentProviderId===c.providerId&&n.currentModelId===c.modelId?n.currentVariant:void 0;return{providerID:c.providerId,modelID:c.modelId,agent:i,variant:l||u||void 0}},gw=async(e,t,n,r,i,a)=>{nw(a);let o=r??hw(e);if(!o)throw Error(`Select a model before sending review flow messages`);let s=Jo.getState();s.saveSessionModelSelection(e,o.providerID,o.modelID),o.agent&&(s.saveSessionAgentSelection(e,o.agent),s.saveAgentModelForSession(e,o.agent,o.providerID,o.modelID),s.saveAgentModelVariantForSession(e,o.agent,o.providerID,o.modelID,o.variant)),IC(e);let c=null;if(await aC({sessionId:e,content:n,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,onMessageID:e=>{c=e},beforeOptimisticInsert:()=>nw(a),onOptimisticInsert:()=>_w(e),send:r=>(nw(a),z.sendMessage({id:e,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,variant:o.variant,text:n,additionalParts:i,messageId:r}).then(()=>void 0))}),!c)throw Error(`Failed to prepare review flow message`);return c},_w=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:chat-force-scroll-bottom`,{detail:{sessionId:e}}))},vw=(e,t)=>{m.getState().openContextPanelTab(e,{mode:`chat`,dedupeKey:`session:${t.id}`,label:t.title??null,sessionTitleFallback:t.title??null})},yw=async(e,t)=>{try{return await z.getSession(e,t)}catch{return null}},bw=e=>`Review: ${e.title?.trim()||e.id}`,xw=async(e,t,n)=>{nw(n);let r=await z.getSession(e,t);nw(n);let i=Bp(r);if(i){let r=await yw(i,t);if(nw(n),r&&Hp(r))return r;await AS(e,t,e=>{let t={...e},n=t.openchamber;if(n&&typeof n==`object`&&!Array.isArray(n)){let e={...n};delete e.reviewSessionID,t.openchamber=e}return t})}nw(n);let a=await z.createSession({title:bw(r),metadata:Wp({},e)},t);nw(n),Ed(a.id,t);try{nw(n),await AS(e,t,e=>Up(e,a.id))}catch(e){throw nw(n),await z.deleteSession(a.id,t).catch(e=>{console.warn(`[review-flow] failed to delete unlinked review session after link failure`,e)}),e}return Y.getState().upsertSession(a),a},Sw=async e=>{await lS();let t=e.autoReview?c():void 0,n;if(e.generateHandoff??!0){let n=await Mp(`session.reviewHandoff.visible`),r=await Mp(`session.reviewHandoff.instructions`),i=Date.now();await gw(e.originalSessionID,e.directory,n,null,[{text:r,synthetic:!0}],t);let a=async()=>{let n=await mw(e.originalSessionID,e.directory,i);nw(t);let r=await Mp(`session.reviewSession.visible`,{handoff:n}),a=await xw(e.originalSessionID,e.directory,t),o=t??c(),s=Date.now(),l=await gw(a.id,e.directory,r,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?uw():void 0,e.autoReview?o:void 0);e.autoReview&&fw({originalSessionID:e.originalSessionID,reviewSessionID:a.id,directory:e.directory,runtimeKey:o,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:HC,expectedAssistantParentID:l,waitAfterCreatedAt:s}),e.autoReview||vw(e.directory,a)};if(e.returnAfterHandoffRequest){a().catch(e=>{console.error(`[review-flow] failed to finish background review flow`,e)});return}await a();return}n=await Mp(`session.reviewSessionWithoutHandoff.visible`);let r=await xw(e.originalSessionID,e.directory,t),i=t??c(),a=Date.now(),o=await gw(r.id,e.directory,n,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?uw():void 0,e.autoReview?i:void 0);e.autoReview&&fw({originalSessionID:e.originalSessionID,reviewSessionID:r.id,directory:e.directory,runtimeKey:i,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:HC,expectedAssistantParentID:o,waitAfterCreatedAt:a}),e.autoReview||vw(e.directory,r)},Cw=async(e,t,n,r)=>{nw(r);let i=Vp(await z.getSession(e,t));if(!i)throw Error(`Original session is missing`);let a=await Mp(`session.reviewFeedbackToImplementer.visible`,{review_feedback:n});return nw(r),gw(i,t,a,void 0,void 0,r)},ww=async(e,t,n,r=!1,i)=>{nw(i);let a=Bp(await z.getSession(e,t));if(!a)throw Error(`Review session is missing`);let o;try{o=await z.getSession(a,t)}catch(n){throw nw(i),await AS(e,t,e=>Gp(e,a)),n}let s=await Mp(`session.implementationResponseToReviewer.visible`,{implementation_response:n});nw(i);let c=await gw(a,t,s,void 0,r?uw():void 0,i);return r||vw(t,o),c},Tw=e=>Hp(e)?`review-to-original`:Bp(e)?`original-to-review`:null,Ew=[0,250,500,1e3,2e3,2e3,2e3,2e3],Dw=5e3,Ow=(e=>{let t=new Map,n=new Set,r=new Map,i=new Map,a=0,o=e=>`${a}:${i.get(e)??0}`;return{waitUntilReady:i=>{if(n.has(i))return Promise.resolve();let a=t.get(i);if(a)return a;let s=e.now??Date.now,c=e.failureCooldownMs??Dw,l=r.get(i);if(l!==void 0&&s()-l<c)return Promise.reject(Error(`OpenCode readiness is cooling down for runtime ${i}`));let u=e.retryDelaysMs??Ew,d=o(i),f=(async()=>{for(let t of u){if(o(i)!==d||(t>0&&await e.wait(t),o(i)!==d))return;if(await e.probe(i)){o(i)===d&&(n.add(i),r.delete(i));return}}throw r.set(i,s()),Error(`OpenCode did not become ready for runtime ${i}`)})();return t.set(i,f),f.finally(()=>{t.get(i)===f&&t.delete(i)}).catch(()=>{}),f},reset:e=>{if(e){i.set(e,(i.get(e)??0)+1),t.delete(e),n.delete(e),r.delete(e);return}a+=1,t.clear(),n.clear(),r.clear()}}})({probe:()=>z.checkHealth(),wait:e=>new Promise(t=>setTimeout(t,e))}),kw=()=>Ow.waitUntilReady(c()),Aw=e=>{Ow.reset(e)},jw=100,Mw=1500,Nw=async e=>{if(!e.ok)throw Error(`session index request failed (${e.status})`)},Pw=e=>{if(e.available!==!0||!Array.isArray(e.directories))return null;let t=Array.isArray(e.pinnedSessionIds)?e.pinnedSessionIds.filter(e=>typeof e==`string`&&e.length>0):void 0;return{revision:typeof e.revision==`number`?e.revision:0,sync:e.sync??{active:!1,completed:0,total:0,pendingDirectories:[],completedDirectories:[],failedDirectories:[],enriching:!1},directories:e.directories,...t?{pinnedSessionIds:t}:{}}},Fw,Iw=async(e,t)=>{if(typeof window>`u`)return null;let n=e.trim();if(!n)return null;try{let e=await F(`/api/openchamber/session-index/session/${encodeURIComponent(n)}`,{signal:t?.signal});if(e.status===404||e.status===501)return null;await Nw(e);let r=await e.json();if(r.available!==!0||!r.session)return null;let i=typeof r.session.directory==`string`?r.session.directory.trim():``,a=typeof r.session.id==`string`?r.session.id:n;return i?{id:a,directory:i,title:typeof r.session.title==`string`?r.session.title:void 0,parentID:r.session.parentID??null}:null}catch{return null}},Lw=async e=>{if(typeof window>`u`)return null;if(Fw)return Fw;let t=(async()=>{let t=await F(`/api/openchamber/session-index`,{signal:e?.signal});return t.status===501?null:(await Nw(t),Pw(await t.json()))})().finally(()=>{Fw===t&&(Fw=void 0)});return Fw=t,t},Rw=async e=>{if(typeof window>`u`)return null;let t=await F(`/api/openchamber/session-index/sync`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:e})});return t.status===501?null:(await Nw(t),t.json())},zw=(e,t,n)=>new Promise(r=>{if(t.aborted){r(`aborted`);return}let i=n?.safetyTimeoutMs===null?null:typeof n?.safetyTimeoutMs==`number`&&n.safetyTimeoutMs>0?n.safetyTimeoutMs:Mw,a,o,s=e=>{a!==void 0&&clearTimeout(a),u!==void 0&&clearTimeout(u),d(),t.removeEventListener(`abort`,l),r(e)},c=e=>{o=e,a!==void 0&&clearTimeout(a),a=setTimeout(()=>{a=void 0,s(o??e)},jw)},l=()=>s(`aborted`),u=i===null?void 0:setTimeout(()=>s(`timeout`),i),d=Kt(t=>{if(t.type===`event-stream-ready`){c(`ready`);return}if(t.type===`session-index-changed`&&t.revision>e){c(`tip`);return}});t.addEventListener(`abort`,l,{once:!0})}),Bw=async(e,t)=>{let n=e.trim();if(!n)throw Error(`session index pin requires a session id`);let r=await F(`/api/openchamber/session-index/session/${encodeURIComponent(n)}/pin`,{method:`POST`,signal:t?.signal});if(r.status===501)throw Error(`session index pin is unsupported`);await Nw(r)},Vw=async(e,t)=>{let n=e.trim();if(!n)throw Error(`session index unpin requires a session id`);let r=await F(`/api/openchamber/session-index/session/${encodeURIComponent(n)}/pin`,{method:`DELETE`,signal:t?.signal});if(r.status===501)throw Error(`session index unpin is unsupported`);await Nw(r)},Hw=async e=>{if(typeof window>`u`)return;let t=await F(`/api/openchamber/session-index/directory`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});t.status!==501&&await Nw(t)},Uw=async e=>{if(typeof window>`u`||e.length===0)return;let t=await F(`/api/openchamber/session-index/snapshot`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:e})});t.status!==501&&await Nw(t)},Ww=1,Gw=`oc.sessionIndexStartupCache`,Kw=1e6,qw=e=>!!e&&typeof e==`object`&&!Array.isArray(e),Jw=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),Yw=e=>!(!qw(e)||typeof e.active!=`boolean`||typeof e.completed!=`number`||!Number.isFinite(e.completed)||typeof e.total!=`number`||!Number.isFinite(e.total)||!Jw(e.pendingDirectories)||!Jw(e.completedDirectories)||!Jw(e.failedDirectories)||e.enriching!==void 0&&typeof e.enriching!=`boolean`),Xw=e=>qw(e)&&typeof e.id==`string`&&e.id.length>0&&typeof e.title==`string`&&typeof e.directory==`string`&&e.directory.length>0&&qw(e.time)&&typeof e.time.created==`number`&&Number.isFinite(e.time.created)&&typeof e.time.updated==`number`&&Number.isFinite(e.time.updated),Zw=e=>!qw(e)||typeof e.directory!=`string`||!e.directory.trim()||e.cursor!==null&&(typeof e.cursor!=`number`||!Number.isFinite(e.cursor))||typeof e.hasMore!=`boolean`||typeof e.lastSyncedAt!=`number`||!Number.isFinite(e.lastSyncedAt)||typeof e.lastFullSyncedAt!=`number`||!Number.isFinite(e.lastFullSyncedAt)||typeof e.lastAccessedAt!=`number`||!Number.isFinite(e.lastAccessedAt)?!1:Array.isArray(e.sessions)&&e.sessions.every(Xw),Qw=e=>!qw(e)||typeof e.revision!=`number`||!Number.isFinite(e.revision)||!Yw(e.sync)||!Array.isArray(e.directories)||e.pinnedSessionIds!==void 0&&!Jw(e.pinnedSessionIds)?!1:e.directories.every(Zw),$w=e=>qw(e)&&e.version===Ww&&qw(e.entries),eT=e=>{if(!e)return null;try{let t=JSON.parse(e);return $w(t)?{version:Ww,entries:t.entries}:null}catch{return null}},tT=(e,t)=>{try{let n=JSON.stringify(t);if(n.length>Kw)return;e.setItem(Gw,n)}catch{}},nT=(e,t)=>{if(!e)return null;let n;try{n=t.getItem(Gw)}catch{return null}let r=eT(n);if(!r)return null;let i=r.entries[e];return Qw(i)?i:null},rT=(e,t,n)=>{if(!e||!Qw(t))return;let r=null;try{r=n.getItem(Gw)}catch{return}let i={...eT(r)?.entries??{},[e]:t},a=Object.keys(i).slice(-8);tT(n,{version:Ww,entries:Object.fromEntries(a.map(e=>[e,i[e]]))})},iT=(e,t)=>{let n=e?.identity===t.identity?e:null,r=t.content.trim().length>0,i=n?.appeared??!1,a=(n?.wasActive??!1)||t.isActive,o=t.content!==(n?.content??``);return{shouldEmit:t.mode===`appearance`?a&&r&&!i:a&&r&&o,nextState:{identity:t.identity,content:t.content,appeared:i||r,wasActive:a}}},aT=(e,t)=>!e||t,oT=(e=1e3)=>{let t=new Set,n=Math.max(1,Math.floor(e));return e=>{if(e.kind===`text`)return!0;let r=`${e.sessionID}\u0000${e.messageID}\u0000${e.partID}\u0000${e.kind}`;if(t.has(r))return!1;for(t.add(r);t.size>n;){let e=t.values().next().value;if(typeof e!=`string`)break;t.delete(e)}return!0}},sT=new Set,cT=()=>sT.size>0,lT=e=>{for(let t of sT)t(e)},uT=e=>(sT.add(e),()=>sT.delete(e)),dT=3e4,fT=3e3,pT=1e3,mT=0,hT=0,gT=0,_T=null;function vT(e){try{if(e===`medium`){hT+=1;return}if(e===`heavy`){gT+=1;return}mT+=1}catch{}}function yT(){return{light:mT,medium:hT,heavy:gT}}function bT(){mT=0,hT=0,gT=0}function xT(e){if(e.length===0)return{avg:null,min:null,p10:null};let t=e.map(e=>e>0?1e3/e:0),n=t.reduce((e,t)=>e+t,0)/t.length,r=Math.min(...t),i=[...t].sort((e,t)=>e-t);return{avg:n,min:r,p10:i[Math.max(0,Math.min(i.length-1,Math.floor(.1*(i.length-1))))]??r}}function ST(){let e=0,t=0,n=0,r=0,i=0,a=0,o=0,s=0,c=0,l=[];return{addLongTaskMs(r){!Number.isFinite(r)||r<0||(e+=1,t+=r,r>n&&(n=r))},addLagMs(e){!Number.isFinite(e)||e<0||(r+=1,i+=e,e>a&&(a=e))},addFpsDelta(e){!Number.isFinite(e)||e<0||l.push(e)},noteHaptic(e){if(e===`medium`){s+=1;return}if(e===`heavy`){c+=1;return}o+=1},snapshotWindow(){let u=xT(l),d={longTaskCount:e,longTaskTotalMs:t,longTaskMaxMs:n,eventLoopLagMaxMs:a,eventLoopLagAvgMs:r>0?i/r:0,hapticLightCount:o,hapticMediumCount:s,hapticHeavyCount:c};return u.avg==null?d:{...d,fpsAvg:u.avg,fpsMin:u.min??void 0,fpsP10:u.p10??void 0}},reset(){e=0,t=0,n=0,r=0,i=0,a=0,o=0,s=0,c=0,l.length=0}}}function CT(){try{let e=performance.memory;return e?{used:typeof e.usedJSHeapSize==`number`?Math.round(e.usedJSHeapSize/1048576):void 0,limit:typeof e.jsHeapSizeLimit==`number`?Math.round(e.jsHeapSizeLimit/1048576):void 0}:{}}catch{return{}}}function wT(){let e={};try{typeof document<`u`&&document.visibilityState&&(e.visible=document.visibilityState===`visible`)}catch{}try{typeof document<`u`&&document.documentElement&&(e.foreground=document.documentElement.classList.contains(`oc-native-app-active`))}catch{}return e}function TT(e){let t=CT(),n=wT();return{at:e.at,feat:`perf`,kind:`perf-window`,sessionID:`app`,longTaskCount:e.snapshot.longTaskCount,longTaskTotalMs:e.snapshot.longTaskTotalMs,longTaskMaxMs:e.snapshot.longTaskMaxMs,eventLoopLagMaxMs:e.snapshot.eventLoopLagMaxMs,eventLoopLagAvgMs:e.snapshot.eventLoopLagAvgMs,hapticLightCount:e.haptics.light,hapticMediumCount:e.haptics.medium,hapticHeavyCount:e.haptics.heavy,platform:e.platform,...e.snapshot.fpsAvg==null?{}:{fpsAvg:e.snapshot.fpsAvg,fpsMin:e.snapshot.fpsMin,fpsP10:e.snapshot.fpsP10},...t.used==null?{}:{jsHeapUsedMB:t.used},...t.limit==null?{}:{jsHeapLimitMB:t.limit},...n.visible==null?{}:{visible:n.visible},...n.foreground==null?{}:{foreground:n.foreground}}}function ET(e={}){if(_T)return _T;let t=e.isEnabled??Bv,n=e.record??Uv,r=e.now??(()=>Date.now()),i=e.getPlatform??(()=>qe()),a=ST(),o=!1,s,c,l,u,d,f,p=e=>{try{e()}catch{}},m=()=>{if(l!=null&&(clearTimeout(l),l=void 0),u!=null&&typeof cancelAnimationFrame==`function`){try{cancelAnimationFrame(u)}catch{}u=void 0}d=void 0},h=()=>{if(m(),typeof requestAnimationFrame!=`function`)return;let e=r()+fT,t=n=>{o||p(()=>{d!=null&&a.addFpsDelta(n-d),d=n,r()<e?u=requestAnimationFrame(t):(u=void 0,d=void 0)})};u=requestAnimationFrame(t),l=setTimeout(()=>{p(()=>{u!=null&&typeof cancelAnimationFrame==`function`&&(cancelAnimationFrame(u),u=void 0),d=void 0})},fT)},g=()=>{p(()=>{let e=a.snapshotWindow(),o=yT();t()&&n(TT({at:r(),snapshot:e,haptics:o,platform:i()})),bT(),a.reset()})},_=()=>{s=setTimeout(()=>{o||(g(),h(),_())},dT)},v=()=>{let e=r()+pT;c=setTimeout(()=>{o||(p(()=>{let t=Math.max(0,r()-e);a.addLagMs(t)}),v())},pT)};p(()=>{if(!(typeof PerformanceObserver>`u`))try{f=new PerformanceObserver(e=>{p(()=>{for(let t of e.getEntries())a.addLongTaskMs(t.duration)})}),f.observe({entryTypes:[`longtask`]})}catch{f=void 0}}),h(),v(),_();let y=()=>{if(!o){if(o=!0,s!=null&&clearTimeout(s),c!=null&&clearTimeout(c),m(),f){try{f.disconnect()}catch{}f=void 0}_T===y&&(_T=null)}};return _T=y,y}var DT=typeof window<`u`?G.useLayoutEffect:G.useEffect,OT=Qe(`OpenChamberHaptics`),kT=null,AT=()=>(kT??=$e.isPluginAvailable(`OpenChamberHaptics`),kT);function jT(e){switch(e){case`medium`:return`impactMedium`;case`heavy`:return`impactHeavy`;default:return`impactLight`}}function MT(){return typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0}function NT(){if(!MT())return!1;let e=window.Capacitor?.getPlatform?.();return e===`ios`||e===`android`}function PT(e){let{eventSessionId:t,currentSessionId:n,isForeground:r,isVisible:i}=e;return!n||t!==n?{shouldTrigger:!1,reason:`different-session`}:r?i?{shouldTrigger:!0,reason:`trigger`}:{shouldTrigger:!1,reason:`hidden`}:{shouldTrigger:!1,reason:`background`}}var FT=20,IT=750;function LT(e,t){return t-e>=FT}function RT(e,t){return t-e>=IT}function zT(e){return!e.thresholdReached&&e.available&&e.distance>=e.enterDistance?{thresholdReached:!0,event:`enter`}:e.thresholdReached&&(!e.available||e.distance<=e.cancelDistance)?{thresholdReached:!1,event:`cancel`}:{thresholdReached:e.thresholdReached,event:null}}var BT=-1/0;function VT(e=`light`,t){if(!NT()||!AT()||document.visibilityState!==`visible`||!document.documentElement.classList.contains(`oc-native-app-active`))return!1;let n=Date.now();return!t?.bypassCadence&&!LT(BT,n)?!1:(BT=n,OT[jT(e)]().catch(()=>void 0),vT(e),!0)}var HT=`button, [role="button"], [role="menuitem"]`;function UT(){let e=(0,V.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],G.useEffect(WT,t)}function WT(){if(!NT())return;let e=GT;return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}function GT(e){if(!e.isTrusted||!(e.target instanceof Element))return;let t=e.target.closest(HT);t&&(t.matches(`:disabled, [aria-disabled="true"], [data-mobile-press-feedback="none"]`)||VT(`light`))}function KT(){let e=(0,V.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],DT(qT,t)}function qT(){if(!NT())return;let e=oT(),t=qe()===`android`,n=-1/0;return uT(r=>{if(!e(r))return;let i=$.getState().currentSessionId,a=document.documentElement.classList.contains(`oc-native-app-active`);if(PT({eventSessionId:r.sessionID,currentSessionId:i,isForeground:a,isVisible:document.visibilityState===`visible`}).shouldTrigger){if(t&&r.kind===`text`){let e=Date.now();if(!RT(n,e))return;VT()&&(n=e);return}VT()}})}var JT=async e=>{let t=await dt(e);t.ok||console.error(`Failed to copy to clipboard:`,t.error)},YT=e=>e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(YT).join(` `).trim():(0,G.isValidElement)(e)?YT(e.props?.children):``,XT=e=>typeof e==`function`?e():e,ZT=(e,t)=>{let n=YT(XT(t?.description));return n.length>0?n:YT(e)},QT=Object.assign((...e)=>(VT(),lt(...e)),{...lt,success:(...e)=>{let[t,n]=e;return VT(),lt.success(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},info:(...e)=>{let[t,n]=e;return VT(),lt.info(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},error:(...e)=>{let[t,n]=e;return VT(),lt.error(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>JT(ZT(t,n))}})},warning:(...e)=>{let[t,n]=e;return VT(),lt.warning(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>JT(ZT(t,n))}})},loading:(...e)=>(VT(),lt.loading(...e)),custom:(...e)=>(VT(),lt.custom(...e)),promise:(...e)=>(VT(),lt.promise(...e))}),$T=new Set,eE,tE=$T,nE=null,rE=(e,t)=>pt(ft.getState().dictionary,e,t),iE=e=>{let t=e?.time?.pinned;return t!=null&&t!==``},aE=e=>{if(!e)return $T;let t=new Set;if(Array.isArray(e.pinnedSessionIds))for(let n of e.pinnedSessionIds)typeof n==`string`&&n&&t.add(n);for(let n of e.directories)for(let e of n.sessions)iE(e)&&t.add(e.id);return t.size===0?$T:t},oE=(e,t)=>{if(e===t)return!0;if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0},sE=(e=L,t=i())=>{let n=vE(e,t);if(n===eE&&t===nE)return tE;let r=aE(n);return eE=n,nE=t,tE=oE(tE,r)?tE:r,tE},cE=(e,t,n)=>{let r=!1,i=e.directories.map(e=>{let i=!1,a=e.sessions.map(e=>{if(e.id!==t)return e;let a=e.time?.pinned??null;return(a==null||a===``?null:a)===n?e:(i=!0,r=!0,{...e,time:{...e.time,pinned:n}})});return i?{...e,sessions:a}:e}),a=aE(e),o=new Set(a);return n==null||n===``?o.delete(t):o.add(t),oE(a,o)||(r=!0),r?{...e,directories:i,pinnedSessionIds:[...o]}:e},lE=(e,t,n,r)=>{let i=vE(e,t);if(!i)return null;let a=cE(i,n,r?new Date().toISOString():null);return a!==i&&bE(a,{client:e,transport:t,persist:!1}),i},uE=e=>L.getQueryCache().subscribe(t=>{if(t.type!==`updated`&&t.type!==`removed`)return;let n=t.query.queryKey;!Array.isArray(n)||n[1]!==`sessionIndex`||n[2]!==`snapshot`||e()}),dE=()=>sE(),fE=()=>(0,G.useSyncExternalStore)(uE,dE,mE),pE=()=>{let e=(0,V.c)(6),t=it(),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`sessionIndex`,`pin`],e[0]=n):n=e[0];let r;e[1]===t?r=e[2]:(r={mutationKey:n,mutationFn:hE,onMutate:e=>{let{sessionId:n,nextPinned:r,transport:i}=e;return{previous:lE(t,i,n,r),transport:i}},onError:(e,n,r)=>{r?.previous&&bE(r.previous,{client:t,transport:r.transport,persist:!1}),QT.error(e instanceof Error?e.message:rE(n.nextPinned?`sessions.sidebar.session.pin.error`:`sessions.sidebar.session.unpin.error`))}},e[1]=t,e[2]=r);let a=at(r),o;return e[3]!==t||e[4]!==a?(o=e=>{let n=e.trim();if(!n)return;let r=i(),o=vE(t,r);if(!o)return;let s=aE(o).has(n);a.mutate({sessionId:n,nextPinned:!s,transport:r})},e[3]=t,e[4]=a,e[5]=o):o=e[5],ut(o)};function mE(){return $T}async function hE(e){let{sessionId:t,nextPinned:n}=e;n?await Bw(t):await Vw(t)}var gE=(e=i())=>N.sessionIndex.snapshot(e),_E=(e=i(),t=c(),n=f(),r=Lw)=>{let a=t,o=n,s=r;return{queryKey:gE(e),queryFn:async({signal:e})=>{let t=await s({signal:e});return t&&rT(a,t,o),t},staleTime:0,gcTime:1/0,initialData:()=>nT(a,o)??void 0,initialDataUpdatedAt:0}},vE=(e=L,t=i())=>e.getQueryData(gE(t))??null,yE=(e=L,t=i(),n=c(),r=f())=>{let a=_E(t,n,r);return e.getQueryCache().build(e,a),e.getQueryData(a.queryKey)??null},bE=(e,t)=>{if(!Qw(e))return;let n=t?.client??L,r=t?.transport??i(),a=t?.runtimeKey??c(),o=t?.storage??f();n.setQueryData(gE(r),e),t?.persist!==!1&&rT(a,e,o)},xE=(e=L,t=i(),n=c(),r=f(),a=Lw)=>{let o={..._E(t,n,r,a),staleTime:0};return e.getQueryCache().build(e,o),e.fetchQuery(o)},SE=500,CE=20,wE=6e3,TE=7,EE=3,DE=1,OE=2,kE=750,AE=500,jE=1e4,ME=2,NE=(e,t)=>new Promise(n=>{if(t.aborted){n();return}let r=setTimeout(()=>{t.removeEventListener(`abort`,i),n()},e),i=()=>{clearTimeout(r),n()};t.addEventListener(`abort`,i,{once:!0})}),PE=null,q=0,FE=new Map,IE=new Map,LE=new Map,RE=[],zE=new Set,BE=0,VE=EE,HE=0,UE=null,WE,GE=new Map,KE=()=>({loadGeneration:q,runtimeGeneration:h(),transportIdentity:i()}),J=e=>e.loadGeneration===q&&e.runtimeGeneration===h()&&e.transportIdentity===i(),qE=e=>{let t=e?.status;if(t===429||t===502||t===503)return!0;let n=String(e instanceof Error?e.message:e).toLowerCase();return n.includes(`signal timed out`)||n.includes(`timeout`)},JE=e=>{HE=0,qE(e)&&(VE=VE>EE?EE:DE)},YE=()=>{HE+=1,!(HE<OE||VE>=TE)&&(VE+=1,HE=0)},XE=()=>{for(;BE<VE&&RE.length>0;){let e=RE.shift();if(!e)return;BE+=1,e()}},ZE=e=>new Promise((t,n)=>{RE.push(()=>{e().then(t,n).finally(()=>{--BE,XE()})}),XE()}),QE=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},$E=(e,t)=>{if(!t)return e;let n=e,r=t,i=_(n.directory??null),a=_(n.project?.worktree??null),o=_(r.directory??null),s=_(r.project?.worktree??null),c=!1,l={...n};!i&&o&&(l.directory=r.directory,c=!0),!a&&s?(l.project={...r.project??{},...n.project??{},worktree:r.project?.worktree},c=!0):!n.project&&r.project&&(l.project=r.project,c=!0);let u=n.hasChildren,d=r.hasChildren;typeof u!=`boolean`&&typeof d==`boolean`&&(l.hasChildren=d,c=!0);let f=Zf(t);if(f>Zf(e)){let e=n.metadata&&typeof n.metadata==`object`?n.metadata:{},t=e.openchamber&&typeof e.openchamber==`object`?e.openchamber:{},r=t.titleRefresh&&typeof t.titleRefresh==`object`?t.titleRefresh:{};l.metadata={...e,openchamber:{...t,titleRefresh:{...r,activityUpdatedAt:f}}},c=!0}return c?l:e},eD=(e,t)=>{let n=$E(e,t);return n.share===t.share?n:{...n,share:t.share}},tD=e=>{let t=new Map;for(let n of e){let e=QE(n);if(!e)continue;let r=t.get(e);if(r){r.push(n);continue}t.set(e,[n])}return t},nD=e=>[e.id,e.title??``,e.time?.created??0,e.time?.updated??0,e.time?.archived??0,e.share?.url??``,JSON.stringify(e.metadata??null),String(e.hasChildren??!1),QE(e)??``].join(`:`),rD=e=>{let t=e;return[e.id,e.title??``,t.parentID??``,e.time?.created??0,e.time?.archived??0,e.share?.url??``,JSON.stringify(t.metadata??null),String(t.hasChildren??!1),QE(e)??``].join(`:`)},iD=(e,t)=>e.time?.updated!==t.time?.updated&&rD(e)===rD(t),aD=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(nD(e[n])!==nD(t[n]))return!1;return!0},oD=(e,t)=>{if(t.size===0)return e;let n=e.findIndex(e=>t.has(e.id));return n===-1?e:e.filter((e,r)=>r!==n&&!t.has(e.id))},sD=e=>[...e].sort((e,t)=>{let n=Zf(t)-Zf(e);return n===0?t.id.localeCompare(e.id):n}),cD=e=>{let t=new Set;for(let n of e){let e=_(n);e&&t.add(e)}return t},lD=e=>{let t=cD(e);for(let e of t)GE.set(e,(GE.get(e)??0)+1);return t},uD=e=>{let t=new Set;for(let n of e){let e=GE.get(n)??0;if(e<=1){GE.delete(n),t.add(n);continue}GE.set(n,e-1)}return t},dD=(e,t)=>{let n=e.loadingDirectories,r=e.refreshingDirectories;for(let i of t)FE.has(i)||(n.has(i)&&(n===e.loadingDirectories&&(n=new Set(e.loadingDirectories)),n.delete(i)),r.has(i)&&(r===e.refreshingDirectories&&(r=new Set(e.refreshingDirectories)),r.delete(i)));return n===e.loadingDirectories&&r===e.refreshingDirectories?e:{loadingDirectories:n,refreshingDirectories:r}},fD=e=>{let t=e[e.length-1]?.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:null},pD=(e,t)=>{let n=fD(e);return{cursor:n,hasMore:e.length===CE&&n!==null&&(t==null||n<t),loadingMore:!1}},mD=(e,t,n)=>{if(n.size===0)return e;let r=new Map(e.map(e=>[e.id,e])),i=new Map;for(let e of t)e?.id&&i.set(e.id,$E(e,r.get(e.id)));let a=e.filter(e=>{if(i.has(e.id))return!1;let t=QE(e);return!t||!n.has(t)});return sD([...i.values(),...a])},hD=(e,t)=>e.cursor===null?!e.hasMore&&(t.hasMore||t.cursor!==null):t.cursor===null||e.cursor<t.cursor,gD=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;if(e.length===0)return null;let n=sD(e),r=n[n.length-1];return r?Zf(r):null},_D=(e,t)=>Zf(e)<=t,vD=(e,t,n,r,i)=>{if(n.size===0)return e;let a=new Map(e.map(e=>[e.id,e])),o=new Map;for(let e of t.values())for(let t of e)t?.id&&o.set(t.id,$E(t,a.get(t.id)));let s=e.filter(e=>{if(o.has(e.id))return!1;let t=QE(e);if(!t||!n.has(t))return!0;if(!i.has(t))return!1;let a=r.get(t);return a!=null&&_D(e,a)});return sD([...o.values(),...s])},yD=(e,t,n)=>{let r=new Set(t.directories.map(e=>e.directory)),i=new Map;for(let n of t.directories)i.set(n.directory,oD(n.sessions,e.pendingDeletionIds));let a=[...i.values()].flat(),o=new Map;if(n)for(let t of e.activeSessions){let e=QE(t);!e||!r.has(e)||o.set(e,(o.get(e)??0)+1)}let s=new Map,c=new Set;if(n)for(let n of t.directories){let t={cursor:n.cursor,hasMore:n.hasMore},r=e.activePaginationByDirectory.get(n.directory),a=(o.get(n.directory)??0)>CE;n.hasMore&&a&&r&&hD(r,t)&&c.add(n.directory),s.set(n.directory,gD(i.get(n.directory)??[],n.cursor))}let l=n?vD(e.activeSessions,i,r,s,c):sD(SD(e.activeSessions,a)),u=new Map(e.activePaginationByDirectory),d=new Map(e.sessionIndexSyncByDirectory);for(let r of t.directories){let t={cursor:r.cursor,hasMore:r.hasMore,loadingMore:!1},i=e.activePaginationByDirectory.get(r.directory);u.set(r.directory,n&&c.has(r.directory)&&i?{cursor:i.cursor,hasMore:i.hasMore,loadingMore:!1}:t),d.set(r.directory,{lastSyncedAt:r.lastSyncedAt,lastFullSyncedAt:r.lastFullSyncedAt})}let f=new Set(e.loadedDirectories);for(let e of r)f.add(e);let p=new Set(e.loadingDirectories),m=new Set(e.refreshingDirectories),h=new Set(t.sync.pendingDirectories);for(let e of h)l.some(t=>QE(t)===e)?(m.add(e),p.delete(e)):p.add(e);for(let e of[...t.sync.completedDirectories,...t.sync.failedDirectories])p.delete(e),m.delete(e);if(n)for(let e of GE.keys())h.has(e)||FE.has(e)||(p.delete(e),m.delete(e));return{activeSessions:l,sessionsByDirectory:tD(l),reviewTransferBySessionId:wD(l),cachedDirectories:r,sessionIndexSyncByDirectory:d,activePaginationByDirectory:u,loadedDirectories:f,loadingDirectories:p,refreshingDirectories:m,hasLoaded:!0,status:e.status===`idle`||e.status===`loading`?`ready`:e.status}},bD=(e,t)=>{let n=oD(t.activeSessions,e.pendingDeletionIds),r=oD(t.fallbackActive??[],e.pendingDeletionIds),i=t.mergeOnly?sD(SD(e.activeSessions,n)):mD(e.activeSessions,n,t.directories);i=SD(i,r),aD(e.activeSessions,i)&&(i=e.activeSessions);let a=t.archivedSessions===void 0?void 0:oD(t.archivedSessions,e.pendingDeletionIds),o=a===void 0?e.archivedSessions:mD(e.archivedSessions,a,t.directories);aD(e.archivedSessions,o)&&(o=e.archivedSessions);let s=i===e.activeSessions?e.sessionsByDirectory:tD(i),c=e.loadedDirectories,l=!1;for(let n of t.directories)c.has(n)||(l||=(c=new Set(e.loadedDirectories),!0),c.add(n));let u=e.loadingDirectories,d=!1;for(let n of t.directories)u.has(n)&&(d||=(u=new Set(e.loadingDirectories),!0),u.delete(n));let f=t.markReady?`ready`:e.status,p=t.markReady?!0:e.hasLoaded;return i===e.activeSessions&&o===e.archivedSessions&&s===e.sessionsByDirectory&&c===e.loadedDirectories&&u===e.loadingDirectories&&e.status===f&&e.hasLoaded===p?e:{activeSessions:i,archivedSessions:o,sessionsByDirectory:s,reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:wD(i),loadedDirectories:c,loadingDirectories:u,hasLoaded:p,status:f}},xD=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[t,...e];let r=e[n],i=$E(t,r);if(iD(r,i)||nD(r)===nD(i))return e;let a=[...e];return a[n]=i,a},SD=(e,t)=>{if(!t||t.length===0)return e;if(e.length===0)return t;let n=new Map(e.map(e=>[e.id,e]));t.forEach(e=>{n.set(e.id,$E(e,n.get(e.id)))});let r=[],i=new Set;return e.forEach(e=>{let t=n.get(e.id);t&&(r.push(t),i.add(e.id))}),t.forEach(e=>{if(i.has(e.id))return;let t=n.get(e.id);t&&(r.push(t),i.add(e.id))}),r},CD=(e,t,n,r)=>{let i=oD(t,e.pendingDeletionIds),a=oD(n,e.pendingDeletionIds),o=aD(e.activeSessions,i)?e.activeSessions:i,s=aD(e.archivedSessions,a)?e.archivedSessions:a,c=o===e.activeSessions?e.sessionsByDirectory:tD(o),l=o===e.activeSessions?e.reviewTransferBySessionId:wD(o);return o===e.activeSessions&&s===e.archivedSessions&&c===e.sessionsByDirectory&&l===e.reviewTransferBySessionId&&e.hasLoaded&&e.status===r?e:{activeSessions:o,archivedSessions:s,sessionsByDirectory:c,reviewTransferBySessionId:l,hasLoaded:!0,status:r}},wD=e=>{let t=new Map,n=new Set(e.map(e=>e.id));for(let r of e){let e=Tw(r);if(!e)continue;let i=e===`review-to-original`?Vp(r):Bp(r);!i||!n.has(i)||t.set(r.id,e)}return t},Y=Oe((e,t)=>({activeSessions:[],archivedSessions:[],sessionsByDirectory:new Map,reviewTransferBySessionId:new Map,loadedDirectories:new Set,loadingDirectories:new Set,refreshingDirectories:new Set,archivedLoadedDirectories:new Set,archivedLoadingDirectories:new Set,activePaginationByDirectory:new Map,cachedDirectories:new Set,hasHydratedSessionIndex:!1,hasCachedSessionIndex:!1,sessionIndexSyncByDirectory:new Map,hasLoadedFullCatalog:!1,fullCatalogSessionIds:new Set,fullCatalogGeneration:0,pendingDeletionIds:new Set,hasLoaded:!1,status:`idle`,startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0},applySnapshot:(t,n,r=`ready`)=>{e(e=>CD(e,t,n,r))},resetForRuntimeSwitch:()=>{q+=1,Aw(),PE=null,FE.clear(),IE.clear(),LE.clear(),zE.forEach(e=>e.abort()),zE.clear(),VE=EE,HE=0,UE?.abort(),UE=null,WE=void 0,GE.clear(),e({activeSessions:[],archivedSessions:[],sessionsByDirectory:new Map,reviewTransferBySessionId:new Map,loadedDirectories:new Set,loadingDirectories:new Set,refreshingDirectories:new Set,archivedLoadedDirectories:new Set,archivedLoadingDirectories:new Set,activePaginationByDirectory:new Map,cachedDirectories:new Set,hasHydratedSessionIndex:!1,hasCachedSessionIndex:!1,sessionIndexSyncByDirectory:new Map,hasLoadedFullCatalog:!1,fullCatalogSessionIds:new Set,fullCatalogGeneration:0,pendingDeletionIds:new Set,hasLoaded:!1,status:`idle`,startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}})},hydrateSessionIndex:async()=>{if(WE)return WE;if(t().hasHydratedSessionIndex)return;let n=KE(),r=i(),a=c(),o=yE(void 0,r,a);o&&J(n)&&e(e=>({...yD(e,o,!1),hasCachedSessionIndex:!0}));let s=(async()=>{try{let t;try{t=await xE(void 0,r,a)}catch(e){if(!J(n))return;if(o){console.warn(`[GlobalSessions] Failed to refresh runtime session index; keeping stale seed:`,e);return}throw e}if(!J(n))return;if(!t){e(e=>e.hasHydratedSessionIndex?e:{hasHydratedSessionIndex:!0});return}e(e=>({...yD(e,t,!1),hasCachedSessionIndex:t.directories.length>0,hasHydratedSessionIndex:!0}))}catch(e){console.warn(`[GlobalSessions] Failed to hydrate runtime session index:`,e)}})();return WE=s.finally(()=>{WE===s&&(WE=void 0)}),WE},startSessionIndexStartup:async(n,r)=>{let i=KE();if(e({startupSyncProgress:{active:!0,phase:`restoring`,completed:0,total:0}}),await t().hydrateSessionIndex(),!J(i))return{activeSessions:[],archivedSessions:[]};t().hasHydratedSessionIndex||e({hasHydratedSessionIndex:!0});let a=cD([...n,...t().cachedDirectories]);if(a.size===0){e({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let n=t();return{activeSessions:n.activeSessions,archivedSessions:n.archivedSessions}}let o=t().hasCachedSessionIndex,s=r?.priorityDirectories?cD(r.priorityDirectories):null,c=!!(o&&s&&s.size>0&&[...s].some(e=>a.has(e))),l=c?new Set([...a].filter(e=>s.has(e))):a,u=c?new Set([...a].filter(e=>!s.has(e))):new Set,d={activeSessions:t().activeSessions,archivedSessions:t().archivedSessions},f=null,p=KE();try{if(f=await Rw([...l]),!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};f&&bE(f)}catch(e){if(!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}let m=()=>{if(u.size===0)return;let e=[...u],n=()=>{J(i)&&t().syncSessionsForDirectories(e,d.activeSessions)};typeof globalThis.setTimeout==`function`?globalThis.setTimeout(n,0):Promise.resolve().then(n)};if(!f){let e=AD(l,d.activeSessions,{retryFailed:!o});if(o)e.then(()=>{m()});else{if(await e,!J(i))return{activeSessions:[],archivedSessions:[]};m()}return d}UE?.abort();let h=new AbortController;UE=h;let g=lD(l),_=()=>{if(!J(i))return;let t=uD(g);t.size!==0&&e(e=>dD(e,t))},v=!o,y=f;v||e({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let b=()=>void 0,x=new Promise(e=>{b=e}),S=!1,C=()=>{S||(S=!0,b())};if((async()=>{let t=y,n=AE;for(;!h.signal.aborted&&J(i);){e(e=>({...yD(e,t,!0),startupSyncProgress:v?{active:t.sync.active,phase:t.sync.active?`syncing`:`idle`,completed:t.sync.completed,total:t.sync.total}:e.startupSyncProgress})),t.sync.active||C();let r=KE(),a=await zw(t.revision,h.signal,{safetyTimeoutMs:t.sync.active?void 0:null});if(!J(i)||!J(r)||a===`aborted`)break;let o;for(;!h.signal.aborted&&J(i);){let e=KE();try{o=await xE()}catch{if(h.signal.aborted||!J(i)){o=void 0;break}if(await NE(n,h.signal),h.signal.aborted||!J(i)){o=void 0;break}n=Math.min(n*ME,jE);continue}if(!J(e)){o=void 0;break}if(!o)break;n=AE;break}if(o===void 0||!o)break;t=o}})().catch(e=>{h.signal.aborted||console.warn(`[GlobalSessions] Session index tip sync failed:`,e)}).finally(()=>{_(),C(),UE===h&&(UE=null),v&&J(i)&&e(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:e.startupSyncProgress.completed,total:e.startupSyncProgress.total}}))}),v){if(await x,!J(i))return{activeSessions:[],archivedSessions:[]};m()}else m();return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},loadSessions:async n=>{if(PE)return PE;e(e=>e.status===`loading`?e:{status:`loading`});let r=q,i=Promise.resolve().then(async()=>{let a=t();try{if(await kw(),r!==q)return{activeSessions:[],archivedSessions:[]};let t=z.getSdkClient(),[i,o]=await Promise.allSettled([bp(t,{archived:!1,pageSize:SE}),bp(t,{archived:!0,pageSize:SE})]),s=SD(a.activeSessions,n),c=i.status===`fulfilled`?i.value:s,l=o.status===`fulfilled`?o.value:a.archivedSessions;return i.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load active sessions, preserving existing snapshot with fallback merge:`,i.reason),o.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load archived sessions, preserving current snapshot:`,o.reason),r===q?(e(e=>{let t=i.status===`fulfilled`&&o.status===`fulfilled`?`ready`:`error`,n=CD(e,c,l,t);if(i.status!==`fulfilled`||o.status!==`fulfilled`)return n===e?e:n;let r=new Set([...i.value.map(e=>e.id),...o.value.map(e=>e.id)]);return{...n,hasLoadedFullCatalog:!0,fullCatalogSessionIds:r,fullCatalogGeneration:e.fullCatalogGeneration+1}}),{activeSessions:c,archivedSessions:l}):{activeSessions:[],archivedSessions:[]}}catch(t){if(r!==q)return{activeSessions:[],archivedSessions:[]};let i=SD(a.activeSessions,n),o=a.archivedSessions;return console.warn(`[GlobalSessions] Failed to load sessions, using fallback snapshot:`,t),e(e=>CD(e,i,o,`error`)),{activeSessions:i,archivedSessions:o}}finally{PE===i&&(PE=null)}});return PE=i,i},refreshSessionsForDirectories:async(n,r,i)=>{let a=cD(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=q;e(e=>{let t=SD(e.activeSessions,oD(r??[],e.pendingDeletionIds)),n=new Set(e.loadingDirectories),i=new Set(e.refreshingDirectories);for(let t of a)i.add(t),e.loadedDirectories.has(t)||e.sessionsByDirectory.has(t)||r?.some(e=>QE(e)===t)||n.add(t);return{...t===e.activeSessions?{}:{activeSessions:t,sessionsByDirectory:tD(t),reviewTransferBySessionId:wD(t)},loadingDirectories:n,refreshingDirectories:i,status:e.status===`idle`?`loading`:e.status}});let s=[...a].map(n=>{let r=FE.get(n);if(r)return r;let a=ZE(async()=>{let r=new AbortController;zE.add(r);try{if(o!==q||(await kw(),o!==q))return!1;let a=await bp(z.getSdkClient(),{directory:n,archived:!1,roots:!0,...i?.incrementalStart===void 0?{}:{start:i.incrementalStart},pageSize:CE,maxItems:CE,timeoutMs:wE,retryAttempts:2,signal:r.signal});if(o!==q)return!1;if(e(e=>{let t=bD(e,{activeSessions:a,directories:new Set([n]),markReady:!0,mergeOnly:i?.incrementalStart!==void 0}),r=new Set(e.refreshingDirectories),o=new Map(e.activePaginationByDirectory);return r.delete(n),i?.incrementalStart===void 0&&o.set(n,pD(a)),t===e?{refreshingDirectories:r,activePaginationByDirectory:o}:{...t,refreshingDirectories:r,activePaginationByDirectory:o}}),i?.persist!==!1){let e=t().sessionsByDirectory.get(n)??[],r=t().activePaginationByDirectory.get(n)??pD(a);try{await Hw({directory:n,sessions:e,cursor:r.cursor,hasMore:r.hasMore,fullSync:i?.incrementalStart===void 0})}catch(e){console.warn(`[GlobalSessions] Failed to persist session index for ${n}:`,e)}}return YE(),!0}catch(t){return JE(t),o===q&&(console.warn(`[GlobalSessions] Failed to refresh active sessions for ${n}:`,t),e(e=>{let t=new Set(e.loadingDirectories),r=new Set(e.refreshingDirectories);return t.delete(n),r.delete(n),{loadingDirectories:t,refreshingDirectories:r}})),!1}finally{zE.delete(r)}});return FE.set(n,a),a.finally(()=>{FE.get(n)===a&&FE.delete(n)}),a}),c=await Promise.all(s);return o===q?([...a].forEach((e,t)=>{i?.onDirectoryResult?.(e,c[t]??!1)}),e(e=>({status:e.status===`loading`?c.some(Boolean)?`ready`:`error`:e.status,hasLoaded:!0})),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}):{activeSessions:[],archivedSessions:[]}},syncSessionsForDirectories:async(n,r)=>{let i=KE(),a=cD(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=null,s=KE();try{if(o=await Rw([...a]),!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};o&&bE(o)}catch(e){if(!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}if(!o)return t().refreshSessionsForDirectories(a,r);let c=new AbortController;zE.add(c);let l=lD(a),u=()=>{if(!J(i))return;let t=uD(l);t.size!==0&&e(e=>dD(e,t))};try{let t=o;for(;!c.signal.aborted&&J(i)&&(e(e=>yD(e,t,!0)),t.sync.active);){let e=KE(),n=await zw(t.revision,c.signal);if(!J(i)||!J(e)||n===`aborted`)break;let r=KE(),a;try{a=await xE()}catch{break}if(!J(i)||!J(r)||!a)break;t=a}}catch(e){!c.signal.aborted&&J(i)&&console.warn(`[GlobalSessions] Session index sync failed:`,e)}finally{u(),zE.delete(c)}return J(i)?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},loadMoreSessionsForDirectory:async n=>{let r=_(n);if(!r){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=LE.get(r);if(i)return await i,{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions};let a=t().activePaginationByDirectory.get(r);if(!a?.hasMore||a.cursor===null){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=q;e(e=>{let t=new Map(e.activePaginationByDirectory);return t.set(r,{...a,loadingMore:!0}),{activePaginationByDirectory:t}});let s=ZE(async()=>{let t=new AbortController;zE.add(t);try{if(await kw(),o!==q)return!1;let n=await bp(z.getSdkClient(),{directory:r,archived:!1,roots:!0,cursor:a.cursor??void 0,pageSize:CE,maxItems:CE,timeoutMs:wE,retryAttempts:2,signal:t.signal});return o===q&&(e(e=>{let t=e.activeSessions.filter(e=>QE(e)===r),i=new Map(t.map(e=>[e.id,e]));oD(n,e.pendingDeletionIds).forEach(e=>{i.set(e.id,$E(e,i.get(e.id)))});let o=sD([...i.values()]),s=mD(e.activeSessions,o,new Set([r])),c=new Map(e.activePaginationByDirectory);return c.set(r,pD(n,a.cursor)),{activeSessions:aD(e.activeSessions,s)?e.activeSessions:s,sessionsByDirectory:tD(s),reviewTransferBySessionId:wD(s),activePaginationByDirectory:c}}),YE(),!0)}catch(t){return JE(t),o===q&&(console.warn(`[GlobalSessions] Failed to load more sessions for ${r}:`,t),e(e=>{let t=e.activePaginationByDirectory.get(r);if(!t)return e;let n=new Map(e.activePaginationByDirectory);return n.set(r,{...t,loadingMore:!1}),{activePaginationByDirectory:n}})),!1}finally{zE.delete(t)}});LE.set(r,s);try{await s}finally{LE.get(r)===s&&LE.delete(r)}return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},refreshArchivedSessionsForDirectories:async n=>{let r=cD(n);if(r.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=q;e(e=>{let t=new Set(e.archivedLoadingDirectories);return r.forEach(e=>t.add(e)),{archivedLoadingDirectories:t}});let a=[...r].map(t=>{let n=IE.get(t);if(n)return n;let r=ZE(async()=>{let n=new AbortController;zE.add(n);try{if(i!==q||(await kw(),i!==q))return!1;let r=await bp(z.getSdkClient(),{directory:t,archived:!0,roots:!0,pageSize:CE,maxItems:CE,timeoutMs:wE,retryAttempts:2,signal:n.signal});return i===q&&(e(e=>{let n=mD(e.archivedSessions,oD(r,e.pendingDeletionIds),new Set([t])),i=new Set(e.archivedLoadedDirectories),a=new Set(e.archivedLoadingDirectories);return i.add(t),a.delete(t),{archivedSessions:aD(e.archivedSessions,n)?e.archivedSessions:n,archivedLoadedDirectories:i,archivedLoadingDirectories:a}}),!0)}catch(n){return i===q&&(console.warn(`[GlobalSessions] Failed to refresh archived sessions for ${t}:`,n),e(e=>{let n=new Set(e.archivedLoadingDirectories);return n.delete(t),{archivedLoadingDirectories:n}})),!1}finally{zE.delete(n)}});return IE.set(t,r),r.finally(()=>{IE.get(t)===r&&IE.delete(t)}),r});return await Promise.all(a),i===q?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},upsertSession:n=>{if(!hp(n)){t().removeSessions([n.id]);return}e(e=>{if(e.pendingDeletionIds.has(n.id))return e;let t=$E(n,e.activeSessions.find(e=>e.id===n.id)??e.archivedSessions.find(e=>e.id===n.id)??null),r=!!t.time?.archived,i=r?e.activeSessions.filter(e=>e.id!==n.id):xD(e.activeSessions,t),a=r?xD(e.archivedSessions,t):e.archivedSessions.filter(e=>e.id!==n.id);return i===e.activeSessions&&a===e.archivedSessions?e:{activeSessions:i,archivedSessions:a,sessionsByDirectory:i===e.activeSessions?e.sessionsByDirectory:tD(i),reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:wD(i)}})},markSessionsPendingDeletion:t=>{e(e=>{let n=null;for(let r of t)!r||e.pendingDeletionIds.has(r)||(n??=new Set(e.pendingDeletionIds),n.add(r));return n?{pendingDeletionIds:n}:e})},clearSessionsPendingDeletion:t=>{e(e=>{let n=null;for(let r of t)e.pendingDeletionIds.has(r)&&(n??=new Set(e.pendingDeletionIds),n.delete(r));return n?{pendingDeletionIds:n}:e})},removeSessions:t=>{let n=t instanceof Set?t:new Set(t);n.size!==0&&e(e=>{let t=e.activeSessions.filter(e=>!n.has(e.id)),r=e.archivedSessions.filter(e=>!n.has(e.id));return t.length===e.activeSessions.length&&r.length===e.archivedSessions.length?e:{activeSessions:t,archivedSessions:r,sessionsByDirectory:tD(t),reviewTransferBySessionId:wD(t)}})},archiveSessions:(t,n=Date.now())=>{let r=t instanceof Set?t:new Set(t);r.size!==0&&e(e=>{let t=[],i=e.activeSessions.filter(e=>!r.has(e.id)||(t.push({...e,time:{...e.time,archived:n}}),!1));if(t.length===0)return e;let a=e.archivedSessions.filter(e=>!r.has(e.id));return{activeSessions:i,archivedSessions:[...t,...a],sessionsByDirectory:tD(i),reviewTransferBySessionId:wD(i)}})}})),TD=async e=>{let t=Y.getState();return t.hasLoadedFullCatalog&&t.status!==`error`?{activeSessions:t.activeSessions,archivedSessions:t.archivedSessions}:t.loadSessions(e)},ED=async()=>{await Y.getState().hydrateSessionIndex()},DD=async(e,t)=>Y.getState().startSessionIndexStartup(e,t),OD=async(e,t)=>Y.getState().refreshSessionsForDirectories(e,t),kD=async(e,t)=>Y.getState().syncSessionsForDirectories(e,t),AD=async(e,t,n)=>{let r=cD(e),i=q;if(r.size===0){Y.setState({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let e=Y.getState();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}Y.setState({startupSyncProgress:{active:!0,phase:`syncing`,completed:0,total:r.size}});let a=new Set,o=new Set(r);try{do await Promise.all([...o].map(async e=>{let r=!1;await Y.getState().refreshSessionsForDirectories([e],t,{persist:!1,incrementalStart:n?.incrementalStartByDirectory?.get(e),onDirectoryResult:(e,t)=>{r=t}}),i===q&&r&&!a.has(e)&&(a.add(e),Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,completed:a.size}})))})),o=new Set([...r].filter(e=>!a.has(e))),o.size>0&&n?.retryFailed===!0&&i===q&&await new Promise(e=>setTimeout(e,kE));while(o.size>0&&n?.retryFailed===!0&&i===q);if(i===q){Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,phase:`committing`}}));let e=Y.getState(),t=[...a].flatMap(t=>{let r=e.sessionsByDirectory.get(t)??[],i=e.activePaginationByDirectory.get(t);return[{directory:t,sessions:r,cursor:i?.cursor??null,hasMore:i?.hasMore??!1,fullSync:!n?.incrementalStartByDirectory?.has(t)}]});try{await Uw(t);let e=Date.now();Y.setState(n=>{let r=new Map(n.sessionIndexSyncByDirectory);for(let n of t){let t=r.get(n.directory);r.set(n.directory,{lastSyncedAt:e,lastFullSyncedAt:n.fullSync?e:t?.lastFullSyncedAt??0})}return{sessionIndexSyncByDirectory:r}})}catch(e){console.warn(`[GlobalSessions] Failed to persist cold-start session index batch:`,e)}}}finally{i===q&&Y.setState(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:a.size,total:e.startupSyncProgress.total}}))}let s=Y.getState();return{activeSessions:s.activeSessions,archivedSessions:s.archivedSessions}},jD=async e=>Y.getState().refreshArchivedSessionsForDirectories(e),MD=async e=>Y.getState().loadMoreSessionsForDirectory(e),ND=(e,t)=>{if(!t)return!1;let n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(n=>t[n]===e[n])},PD=`oc.sessions.folders`,FD=`oc.sessions.folderCollapse`,ID=`oc.sessions.order`,LD=`oc.sessions.orderActivity`,RD=`/api/session-folders`,zD=250,BD=`__archived__:`,VD=x(f()),HD=null,UD=!1,WD=!1,GD=0,KD,qD,JD=null,YD=null,XD=()=>typeof window>`u`?!1:v()?!0:window.__VSCODE_CONFIG__!==void 0,ZD=(e,t)=>{if(typeof window>`u`||XD())return;HD&&clearTimeout(HD);let n=JSON.parse(JSON.stringify(e)),r=Array.from(t);HD=setTimeout(()=>{HD=null,F(RD,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({version:1,foldersMap:n,collapsedFolderIds:r,updatedAt:Date.now()})}).catch(()=>{})},zD)},QD=()=>{try{let e=VD.getItem(PD);if(!e)return{};let t=JSON.parse(e);if(!t||typeof t!=`object`||Array.isArray(t))return{};let n={};for(let[e,r]of Object.entries(t)){if(!Array.isArray(r))continue;let t=[];for(let e of r){if(!e||typeof e!=`object`)continue;let n=e,r=typeof n.id==`string`?n.id.trim():``,i=typeof n.name==`string`?n.name.trim():``,a=typeof n.createdAt==`number`?n.createdAt:0;if(!r||!i)continue;let o=Array.isArray(n.sessionIds)?n.sessionIds.filter(e=>typeof e==`string`&&e.trim().length>0):[],s=typeof n.parentId==`string`?n.parentId:null;t.push({id:r,name:i,sessionIds:o,createdAt:a,parentId:s})}t.length>0&&(n[e]=t)}return n}catch{return{}}},$D=()=>{try{let e=VD.getItem(FD);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}},eO=()=>{try{let e=VD.getItem(ID);if(!e)return{};let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?{}:Object.fromEntries(Object.entries(t).flatMap(([e,t])=>{if(!Array.isArray(t))return[];let n=t.filter(e=>typeof e==`string`&&e.length>0);return n.length>0?[[e,n]]:[]}))}catch{return{}}},tO=()=>{try{let e=VD.getItem(LD);if(!e)return{};let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?{}:Object.fromEntries(Object.entries(t).flatMap(([e,t])=>{if(!t||typeof t!=`object`||Array.isArray(t))return[];let n=Object.fromEntries(Object.entries(t).flatMap(([e,t])=>typeof t==`number`&&Number.isFinite(t)?[[e,t]]:[]));return Object.keys(n).length>0?[[e,n]]:[]}))}catch{return{}}},nO=(e,t)=>{try{VD.setItem(ID,JSON.stringify(e)),VD.setItem(LD,JSON.stringify(t))}catch{}},rO=e=>{JD=e,clearTimeout(KD),KD=setTimeout(()=>{try{VD.setItem(PD,JSON.stringify(e)),JD=null}catch{}},300)},iO=e=>{YD=e,clearTimeout(qD),qD=setTimeout(()=>{try{VD.setItem(FD,JSON.stringify(Array.from(e))),YD=null}catch{}},300)};typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{if(JD!==null){clearTimeout(KD);try{VD.setItem(PD,JSON.stringify(JD))}catch{}JD=null}if(YD!==null){clearTimeout(qD);try{VD.setItem(FD,JSON.stringify(Array.from(YD)))}catch{}YD=null}});var aO=(e,t)=>{rO(e),iO(t),ZD(e,t)},oO=()=>fe(),sO=(e,t,n)=>{let r=new Set(t.map(e=>e.id)),i=null;for(let t of e)!r.has(t.id)&&n.has(t.id)&&(i||=new Set(n),i.delete(t.id));return i},cO=(e,t)=>e.startsWith(BD)?t.filter(e=>e.sessionIds.length>0):t,lO=Oe()(je((e,t)=>({foldersMap:QD(),collapsedFolderIds:$D(),sessionOrderByScope:eO(),sessionOrderActivityByScope:tO(),getFoldersForScope:e=>e?t().foldersMap[e]??[]:[],createFolder:(n,r,i)=>{let a=r.trim()||`New folder`,o={id:oO(),name:a,sessionIds:[],createdAt:Date.now(),parentId:i??null},s=t().foldersMap,c=s[n]??[],l={...s,[n]:[...c,o]};return e({foldersMap:l}),aO(l,t().collapsedFolderIds),o},renameFolder:(n,r,i)=>{let a=i.trim();if(!a||!n)return;let o=t().foldersMap,s=o[n];if(!s)return;let c=s.map(e=>e.id===r?{...e,name:a}:e),l={...o,[n]:c};e({foldersMap:l}),aO(l,t().collapsedFolderIds)},deleteFolder:(n,r)=>{if(!n)return;let i=t().foldersMap,a=i[n];if(!a)return;let o=new Set([r]),s=!0;for(;s;){s=!1;for(let e of a)e.parentId&&o.has(e.parentId)&&!o.has(e.id)&&(o.add(e.id),s=!0)}let c=a.filter(e=>!o.has(e.id)),l={...i,[n]:c};e({foldersMap:l}),aO(l,t().collapsedFolderIds);let u=t().collapsedFolderIds;if(Array.from(o).some(e=>u.has(e))){let t=new Set(u);o.forEach(e=>t.delete(e)),e({collapsedFolderIds:t}),aO(l,t)}},addSessionToFolder:(n,r,i)=>{if(!n||!r||!i)return;let a=t().foldersMap,o=a[n];if(!o)return;let s=o.find(e=>e.id===r);if(!s)return;let c=o.reduce((e,t)=>e+ +!!t.sessionIds.includes(i),0);if(s.sessionIds.includes(i)&&c===1)return;let l=o.map(e=>{let t=e.sessionIds.filter(e=>e!==i);return e.id===r?{...e,sessionIds:[...t,i]}:t.length===e.sessionIds.length?e:{...e,sessionIds:t}}),u={...a,[n]:l},d=sO(o,l,t().collapsedFolderIds);e(d?{foldersMap:u,collapsedFolderIds:d}:{foldersMap:u}),aO(u,d??t().collapsedFolderIds)},addSessionsToFolder:(n,r,i)=>{if(!n||!r||i.length===0)return;let a=t().foldersMap,o=a[n];if(!o)return;let s=new Set(i.filter(e=>typeof e==`string`&&e.length>0));if(s.size===0)return;let c=o.find(e=>e.id===r);if(!c)return;let l=!1;for(let e of o){for(let t of s)if(e.sessionIds.includes(t)&&(e.id!==r||!c.sessionIds.includes(t))){l=!0;break}if(l)break}if(!l){for(let e of s)if(!c.sessionIds.includes(e)){l=!0;break}}if(!l)return;let u=o.map(e=>{let t=e.sessionIds.filter(e=>!s.has(e));return e.id===r?{...e,sessionIds:[...t,...s]}:t.length===e.sessionIds.length?e:{...e,sessionIds:t}}),d={...a,[n]:u},f=sO(o,u,t().collapsedFolderIds);e(f?{foldersMap:d,collapsedFolderIds:f}:{foldersMap:d}),aO(d,f??t().collapsedFolderIds)},removeSessionsFromFolders:(n,r)=>{if(!n||r.length===0)return;let i=t().foldersMap,a=i[n];if(!a)return;let o=new Set(r.filter(e=>typeof e==`string`&&e.length>0));if(o.size===0)return;let s=!1,c=a.map(e=>{let t=e.sessionIds.filter(e=>!o.has(e));return t.length===e.sessionIds.length?e:(s=!0,{...e,sessionIds:t})});if(!s)return;let l={...i,[n]:c},u=sO(a,c,t().collapsedFolderIds);e(u?{foldersMap:l,collapsedFolderIds:u}:{foldersMap:l}),aO(l,u??t().collapsedFolderIds)},removeSessionFromFolder:(n,r)=>{if(!n||!r)return;let i=t().foldersMap,a=i[n];if(!a)return;let o=!1,s=a.map(e=>{let t=e.sessionIds.filter(e=>e!==r);return t.length===e.sessionIds.length?e:(o=!0,{...e,sessionIds:t})});if(!o)return;let c={...i,[n]:s},l=sO(a,s,t().collapsedFolderIds);e(l?{foldersMap:c,collapsedFolderIds:l}:{foldersMap:c}),aO(c,l??t().collapsedFolderIds)},toggleFolderCollapse:n=>{let r=t().collapsedFolderIds,i=new Set(r);i.has(n)?i.delete(n):i.add(n),e({collapsedFolderIds:i}),aO(t().foldersMap,i)},cleanupSessions:(n,r)=>{if(!n)return;let i=t().foldersMap,a=i[n],o=t().sessionOrderByScope[n]??[],s=t().sessionOrderActivityByScope[n]??{};if((!a||a.length===0)&&o.length===0&&Object.keys(s).length===0)return;let c=!1,l=(a??[]).map(e=>{let t=e.sessionIds.filter(e=>r.has(e));return t.length===e.sessionIds.length?e:(c=!0,{...e,sessionIds:t})}),u=cO(n,l);u.length!==l.length&&(c=!0);let d=o.filter(e=>r.has(e)),f=d.length!==o.length,p=Object.keys(s).some(e=>!r.has(e));if(!c&&!f&&!p)return;let m={...i,[n]:u},h=sO(a??[],u,t().collapsedFolderIds),g=f?{...t().sessionOrderByScope,[n]:d}:t().sessionOrderByScope,_=f||p?Object.fromEntries(Object.entries(t().sessionOrderActivityByScope).filter(([e])=>e!==n)):t().sessionOrderActivityByScope;e(h?{foldersMap:m,collapsedFolderIds:h,sessionOrderByScope:g,sessionOrderActivityByScope:_}:{foldersMap:m,sessionOrderByScope:g,sessionOrderActivityByScope:_}),aO(m,h??t().collapsedFolderIds),nO(g,_)},getSessionFolderId:(e,n)=>{if(!e||!n)return null;let r=t().foldersMap[e];if(!r)return null;for(let e of r)if(e.sessionIds.includes(n))return e.id;return null},reorderSessions:(n,r,i,a,o)=>{if(!n||i===a)return;let s=Array.from(new Set(r)),c=s.indexOf(i),l=s.indexOf(a);if(c===-1||l===-1)return;let u=t().sessionOrderByScope[n]??[],d=t().sessionOrderActivityByScope[n],f=ND(o,d),p=f?[...u.filter(e=>s.includes(e)),...s.filter(e=>!u.includes(e))]:s,m=p.indexOf(i),h=p.indexOf(a);if(m===-1||h===-1||m===h)return;let g=[...p];g.splice(m,1),g.splice(h,0,i);let _=new Set(s),v=f?u.filter(e=>!_.has(e)):[],y={...t().sessionOrderByScope,[n]:[...g,...v]},b={...t().sessionOrderActivityByScope,[n]:{...o}};e({sessionOrderByScope:y,sessionOrderActivityByScope:b}),nO(y,b)}}),{name:`session-folders-store`})),uO=async()=>{if(UD||WD||typeof window>`u`)return;if(XD()){UD=!0;return}WD=!0;let e=GD;try{let t=await F(RD).catch(()=>null);if(e!==GD||!t||!t.ok)return;let n=await t.json().catch(()=>null);if(!n)return;let r=n.foldersMap&&typeof n.foldersMap==`object`?n.foldersMap:{},i=Array.isArray(n.collapsedFolderIds)?new Set(n.collapsedFolderIds.filter(e=>typeof e==`string`)):new Set;if(e!==GD||!(Object.keys(r).length>0||i.size>0))return;lO.setState({foldersMap:r,collapsedFolderIds:i}),rO(r),iO(i)}catch{}finally{e===GD&&(WD=!1,UD=!0)}},dO=()=>{typeof window>`u`||uO()},fO=()=>{GD+=1,UD=!1,WD=!1,JD=null,YD=null,KD&&=(clearTimeout(KD),void 0),qD&&=(clearTimeout(qD),void 0),lO.setState({foldersMap:QD(),collapsedFolderIds:$D(),sessionOrderByScope:eO(),sessionOrderActivityByScope:tO()}),uO()};typeof window<`u`&&n(e=>{p(e)&&fO()}),dO();var pO=new Map,mO=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},hO=()=>`worktree_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,gO=()=>{let e=hO();return pO.set(e,mO()),e},_O=(e,t)=>{let n=pO.get(e);n&&(pO.delete(e),n.resolve(t))},vO=(e,t)=>{let n=pO.get(e);n&&(pO.delete(e),n.reject(t))},yO=e=>{let t=pO.get(e);return t?t.promise:Promise.reject(Error(`Pending worktree request not found`))},bO=3e5,xO=5e3,SO=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``)||e,CO=new Map,wO=new Map,TO=new Map,EO=new Map,DO=new Set,OO=null,kO=!1,AO=e=>SO(e),jO=e=>EO.get(e)??0,MO=e=>{let t=jO(e)+1;return EO.set(e,t),t},NO=async e=>{let t=Te()?.git;return t?.worktree?.bootstrapStatus?t.worktree.bootstrapStatus(e):t?.getGitWorktreeBootstrapStatus?t.getGitWorktreeBootstrapStatus(e):Ve(e)},PO=(e,t)=>{for(let n of DO)try{n(e,t)}catch{}},FO=e=>(DO.add(e),()=>{DO.delete(e)}),IO=(e,t)=>{let n=AO(e);if(!n)return!1;let r=CO.get(n),i=r?.status===`pending`&&t.status!==`pending`;return r&&typeof r.updatedAt==`number`&&Number.isFinite(r.updatedAt)&&typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)&&t.updatedAt<r.updatedAt&&!i?!1:(CO.set(n,t),t.status!==`pending`&&wO.delete(n),PO(n,t),!0)},LO=(e,t)=>{let n=AO(e);if(!n)return!1;let r=t.status===`pending`||t.status===`ready`||t.status===`failed`?t.status:null;return r?IO(n,{status:r,error:typeof t.error==`string`&&t.error.trim().length>0?t.error.trim():null,updatedAt:typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)?t.updatedAt:Date.now()}):!1},RO=()=>{OO||=Kt(e=>{e.type===`worktree-bootstrap-status`&&LO(e.directory,e)}),!(typeof window>`u`||kO)&&(kO=!0,window.addEventListener(`openchamber:worktree-bootstrap-status`,(e=>{let t=e.detail;if(!t||typeof t!=`object`||Array.isArray(t))return;let n=t,r=typeof n.directory==`string`?n.directory:``;r&&LO(r,{status:n.status,error:typeof n.error==`string`?n.error:null,updatedAt:typeof n.updatedAt==`number`?n.updatedAt:Date.now()})})))},zO=e=>{let t=AO(e);t&&(RO(),IO(t,{status:`pending`,error:null,updatedAt:Date.now()}))},BO=e=>{let t=AO(e);if(!t)return;MO(t);let n=TO.get(t);n&&(n.cancelled=!0,n.disposeSettlement?.(),n.disposeSettlement=null,TO.delete(t));let r=wO.get(t);r&&(r.dispose(),wO.delete(t)),CO.delete(t)},VO=e=>{let t=AO(e);return t?CO.get(t)??null:null},HO=(e,t)=>{let n=ft.getState().dictionary;return pt(n,e,t)},UO=e=>({status:`failed`,error:e,updatedAt:Date.now()}),WO=(e,t,n)=>{let r=UO(t);return IO(e,r),n?.(r),r},GO=async(e,t=()=>!0)=>{try{let n=await NO(e);return t()?IO(e,n)?n:VO(e):null}catch{return null}},KO=(e,t,n=xO)=>{let r=AO(e),i=jO(r);RO();let a=!1,o=null,s=null,c=!1,l=null,u=null,d=()=>{},f=()=>{o&&clearTimeout(o),o=null,s&&clearInterval(s),s=null},p=()=>{a||s||(s=setInterval(()=>{a||c||(c=!0,GO(e,()=>!a&&jO(r)===i).finally(()=>{c=!1}))},Number.isFinite(n)?Math.max(1,n):xO))},m=e=>{a||(a=!0,f(),l?.(),l=null,e&&u?.(e))},h=new Promise((n,i)=>{u=i;let s=e=>{a||(a=!0,f(),l?.(),l=null,e())};d=e=>{if(e){if(e.status===`ready`){s(()=>n(e));return}e.status===`failed`&&s(()=>i(Error(e.error||`Worktree bootstrap failed`)))}},l=FO((e,t)=>{AO(e)===r&&d(t)}),o=setTimeout(()=>{s(()=>{let t=WO(e,HO(`worktree.bootstrap.toast.timeoutDescription`));i(Error(t.error||`Timed out waiting for worktree bootstrap`))})},Math.max(0,t)),d(CO.get(r))});return h.catch(()=>void 0),{promise:h,startCompensation:p,dispose:()=>m(Error(`Worktree bootstrap wait cancelled`))}},qO=async(e,t,n,r,i,a)=>{let o=AO(e),s=KO(e,n,r);t.disposeSettlement=s.dispose;let c=await GO(e,()=>!t.cancelled&&TO.get(o)===t&&jO(o)===t.epoch);if(t.cancelled||TO.get(o)!==t){s.dispose();return}if(c?.status===`ready`){s.dispose(),a?.(c);return}if(c?.status===`failed`){s.dispose(),i?.(c),QT.error(HO(`worktree.bootstrap.toast.failed`),{description:c.error||HO(`worktree.bootstrap.toast.failedDescription`)});return}s.startCompensation();try{let e=await s.promise;if(t.cancelled||TO.get(o)!==t)return;a?.(e)}catch(n){if(t.cancelled||TO.get(o)!==t)return;let r=VO(e);if(r?.status===`failed`){i?.(r),QT.error(HO(`worktree.bootstrap.toast.failed`),{description:r.error||HO(`worktree.bootstrap.toast.failedDescription`)});return}let a=WO(e,n instanceof Error?n.message:String(n),i);QT.error(HO(`worktree.bootstrap.toast.failed`),{description:a.error||HO(`worktree.bootstrap.toast.failedDescription`)})}},JO=(e,t)=>{let n=AO(e);if(!n||CO.get(n)?.status!==`pending`||TO.has(n))return;let r={cancelled:!1,epoch:jO(n),promise:Promise.resolve(),disposeSettlement:null};r.promise=qO(e,r,t?.timeoutMs??bO,t?.pollIntervalMs??xO,t?.onFailed,t?.onReady).finally(()=>{TO.get(n)===r&&TO.delete(n)}),TO.set(n,r)},YO=async(e,t=bO)=>{let n=AO(e);if(!n)return;let r=CO.get(n);if(!r||r.status===`ready`)return;if(r.status===`failed`)throw Error(r.error||`Worktree bootstrap failed`);let i=wO.get(n);if(i)return i.promise;let a=()=>{},o=jO(n),s=(async()=>{let r=KO(e,t,xO);a=r.dispose;let i=await GO(e,()=>jO(n)===o);if(jO(n)!==o){r.dispose();return}if(i?.status===`ready`){r.dispose();return}if(i?.status===`failed`)throw r.dispose(),Error(i.error||`Worktree bootstrap failed`);r.startCompensation(),await r.promise})().finally(()=>{wO.get(n)?.promise===s&&wO.delete(n)});return wO.set(n,{promise:s,dispose:()=>a()}),s},XO=`openchamber.json`,ZO=`.openchamber`,QO=[`.config`,`openchamber`,`projects`];function $O(){let e=Te();return e?.files?e.files:null}var ek=3e3,tk=80,nk=4e3,rk=2e3,ik=300,ak=160,ok=new Set([`macos`,`linux`,`windows`]),sk=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)},ck=(e,t)=>{let n=sk(e),r=t.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/\/+$/,``);return!n||n===`/`?`/${r}`:`${n}/${r}`},lk=e=>ck(ck(e,ZO),XO),uk=()=>{let e=`/api`;return e.startsWith(`/`),e},dk=async(e,t)=>{try{let n=await F(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});return n.ok?{ok:!0,data:await n.json().catch(()=>null)}:{ok:!1,data:null}}catch{return{ok:!1,data:null}}},fk=async e=>{let t=$O();if(t?.createDirectory)try{if((await t.createDirectory(e))?.success)return!0}catch{}return!!(await dk(`${uk()}/fs/mkdir`,{path:e})).ok},pk=async e=>{let t=$O();if(t?.readFile)try{let n=await t.readFile(e);return typeof n?.content==`string`?n.content:``}catch{return null}try{let t=await F(`${uk()}/fs/read?path=${encodeURIComponent(e)}`,{cache:`no-store`});return t.ok?await t.text():null}catch{return null}},mk=async(e,t)=>{let n=$O();if(n?.writeFile)try{if((await n.writeFile(e,t))?.success)return!0}catch{}return!!(await dk(`${uk()}/fs/write`,{path:e,content:t})).ok},hk=async()=>{try{let e=await F(`${uk()}/fs/home`,{cache:`no-store`});if(!e.ok)throw Error(`Failed to resolve home directory from API`);let t=await e.json().catch(()=>null),n=typeof t?.home==`string`?t.home.trim():``;if(n)return sk(n)}catch{}if(!v()){let e=await De().catch(()=>null);if(e&&e.trim().length>0)return sk(e)}return null},gk=async()=>{let e=await hk();return e?QO.reduce((e,t)=>ck(e,t),e):null},_k=e=>{let t=typeof e?.path==`string`?e.path.trim():``,n=t?sk(t):``;return n&&xe(n)||null},vk=async e=>{let t=await gk();if(!t)return null;let n=_k(e);return n?ck(t,`${n}.json`):null},yk=(e,t)=>e.length<=t?e:e.slice(0,t),bk=e=>typeof e==`string`?yk(e,ek):``,xk=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!n||typeof n!=`object`)continue;let e=n,r=typeof e.id==`string`?e.id.trim():``,i=yk((typeof e.text==`string`?e.text:``).trim(),120);if(!r||!i)continue;let a=!!e.completed,o=typeof e.createdAt==`number`&&Number.isFinite(e.createdAt)&&e.createdAt>=0?e.createdAt:Date.now();t.push({id:r,text:i,completed:a,createdAt:o})}return t},Sk=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(!r||typeof r!=`object`)continue;let e=r,i=typeof e.id==`string`?e.id.trim():``,a=typeof e.path==`string`?e.path.trim():``,o=typeof e.createdAt==`number`&&Number.isFinite(e.createdAt)&&e.createdAt>=0?e.createdAt:Date.now();!i||!a||n.has(i)||(n.add(i),t.push({id:i,path:a,createdAt:o}))}return t.sort((e,t)=>t.createdAt-e.createdAt)},Ck=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(typeof r!=`string`)continue;let e=r.trim().toLowerCase();!ok.has(e)||n.has(e)||(n.add(e),t.push(e))}return t},wk=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(!r||typeof r!=`object`)continue;let e=r,i=typeof e.id==`string`?e.id.trim():``,a=yk(typeof e.name==`string`?e.name.trim():``,tk),o=yk(typeof e.command==`string`?e.command.trim():``,nk);if(!i||!a||!o||n.has(i))continue;n.add(i);let s=typeof e.icon==`string`?e.icon.trim():``,c=Ck(e.platforms),l=e.autoOpenUrl===!0,u=yk(typeof e.openUrl==`string`?e.openUrl.trim():``,rk),d=yk(typeof e.desktopOpenSshForward==`string`?e.desktopOpenSshForward.trim():``,ik);t.push({id:i,name:a,command:o,icon:s||null,...l?{autoOpenUrl:!0}:{},...u?{openUrl:u}:{},...d?{desktopOpenSshForward:d}:{},...c.length>0?{platforms:c}:{}})}return t},Tk=e=>{let t=wk(e?.actions),n=typeof e?.primaryActionId==`string`?e.primaryActionId.trim():``;return{actions:t,primaryActionId:n&&t.some(e=>e.id===n)?n:null}},Ek=e=>({notes:bk(e?.notes),todos:xk(e?.todos)}),Dk=e=>({...Ek(e),plans:Sk(e?.plans)}),Ok=e=>e.trim().toLowerCase().replace(/[`*_#>[\](){}.!?,:;"']/g,``).replace(/\s+/g,`-`).replace(/[^a-z0-9-]/g,`-`).replace(/-+/g,`-`).replace(/^-+|-+$/g,``)||`plan`,kk=e=>yk(e.trim(),ak),Ak=()=>fe(),jk=async e=>{let t=await gk(),n=_k(e);return!t||!n?null:ck(t,n)},Mk=async e=>{let t=await jk(e);return t?ck(t,`plans`):null},Nk=(e,t)=>{let n=kk(e)||`Plan`,r=t.trim();return r?`# ${n}\n\n${r}`:`# ${n}\n`},Pk=e=>{let t=(typeof e==`string`?e:``).replace(/\r\n?/g,`
@@ -472,4 +472,4 @@ Use the results below as source material. Do not mention that the inputs were hi
472
472
 
473
473
  [… objective trimmed for the auditor — the full text was delivered in the chat message …]
474
474
 
475
- `,nU=async e=>{if(e.length<=5e3)return e;let t=await VH(e);if(t)return t.slice(0,UH);let n=Math.max(0,Math.floor((UH-93)/2)),r=ft.getState().dictionary;return QT.error(pt(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${tU}${e.slice(-n)}`};async function rU(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await nU(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await QH(e,a),c=Date.now();await ZH(e,t,e=>r&&e&&e.id===r.id&&r.status!==`complete`?{...e,objective:s?``:a,objectiveFile:s,tokenBudget:o,status:`active`,statusReason:`resumed`,blockedStreak:0,updatedAt:c}:{id:XH(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function iU(e,t){await ZH(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function aU(e,t,n){n===`paused`&&(AH(e),gC(e)),await ZH(e,t,e=>e?{...e,status:n,statusReason:n===`active`?`resumed`:n===`complete`?`marked by user`:``,blockedStreak:0,...n===`active`?{turnsUsed:0}:{},updatedAt:Date.now()}:null)}async function oU(e,t){let n=!1;await ZH(e,t,e=>(n=e?.status===`active`,null)),$H(e),n&&(AH(e),gC(e))}var sU=`<system-reminder>`,cU=`</system-reminder>`,lU=e=>{let t=e.trim();return t?t.startsWith(sU)&&t.endsWith(cU)?t:`${sU}\n${t}\n${cU}`:``},uU=(e,t=c())=>`${t}\n${e}`,dU=(e,t)=>{let n=fU.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(uU(e))??n.sessionMemoryState.get(e)},fU=Oe()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??uU(t),s=a.get(o)??(i?void 0:a.get(t))??{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0};return a.set(o,{...s,viewportAnchor:n,...r?{scrollPosition:r}:{},lastAccessedAt:Date.now()}),{sessionMemoryState:a}})})),pU=Oe((e,t)=>({attachments:new Map,setAttachment:(t,n)=>e(e=>{let r=new Map(e.attachments);return r.set(t,n),{attachments:r}}),getAttachment:e=>t().attachments.get(e),clearAttachment:t=>e(e=>{let n=new Map(e.attachments);return n.delete(t),{attachments:n}})})),mU=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function hU(e,t){if(e){if(!e.degraded&&e.cwd)return mU(e.cwd);if(e.worktreeRoot)return mU(e.worktreeRoot);if(e.cwd)return mU(e.cwd)}return t?mU(t):null}function gU(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function _U(e,t){let n=[];if(t&&t.isClean===!1){let e=t.files?.length;n.push(e==null?{reason:`dirty`}:{reason:`dirty`,dirtyFiles:e})}return e?(e.worktreeStatus===`missing`&&n.push({reason:`missing`}),e.worktreeStatus===`invalid`&&n.push({reason:`invalid`}),e.attentionReason&&n.push({reason:`attention`,attentionReason:e.attentionReason}),n):n}function vU(e){let t=[];e.projectRoot&&t.push({value:e.projectRoot,label:e.rootBranch||e.projectRoot.split(`/`).pop()||e.projectRoot,kind:`root`});let n=e.pendingBootstrapDirectory?mU(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=mU(r.path);if(i===e.projectRoot)continue;let a=i===n;t.push({value:i,label:r.branch?.trim()||r.label||i.split(`/`).pop()||i,kind:`worktree`,pending:a||void 0})}return t}var yU=`openchamber.session-switch.start`,bU=`openchamber.session-switch.highlight-painted`,xU=`openchamber.session-switch.content-committed`,SU=`data-openchamber-session-switch-highlight-ms`,CU=`data-openchamber-session-switch-content-ms`,wU=`openchamber.session-switch.highlight-latency`,TU=`openchamber.session-switch.content-latency`,EU=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,DU=()=>EU()&&performance.getEntriesByName(yU,`mark`).length>0,OU=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},kU=(e=!1)=>{EU()&&(!e&&performance.getEntriesByName(yU,`mark`).length>0&&performance.getEntriesByName(xU,`mark`).length===0||(performance.clearMarks(yU),performance.clearMarks(bU),performance.clearMarks(xU),performance.clearMeasures(wU),performance.clearMeasures(TU),typeof document<`u`&&(document.documentElement.removeAttribute(SU),document.documentElement.removeAttribute(CU)),performance.mark(yU)))},AU=()=>{if(!DU())return;performance.mark(bU),performance.measure(wU,yU,bU);let e=performance.getEntriesByName(wU,`measure`).at(-1);e&&OU(SU,e.duration)},jU=()=>{if(!DU())return;performance.mark(xU),performance.measure(TU,yU,xU);let e=performance.getEntriesByName(TU,`measure`).at(-1);e&&OU(CU,e.duration)},MU={revision:0,sessionId:null},NU=new Set,PU=e=>{MU={revision:MU.revision+1,sessionId:e};for(let e of NU)e(MU);return MU},FU=()=>MU,IU=e=>(NU.add(e),()=>NU.delete(e)),LU=6e3;function RU(e){let t=e.parts?e.parts.map(e=>({...e})):[];if(e.parts)return{info:{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:Date.now(),completed:0}},parts:t};e.text!==void 0&&t.push({id:ge(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:ge(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:ge(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:ge(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:ge(`prt`),type:`agent`,name:e.agentMentionName}),{info:{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:Date.now(),completed:0}},parts:t}}function zU(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function BU(e,t){if(!e)return;let n=zU(t,e);$.setState(t=>{let r=[...(t.retainedPendingUserMessages.get(e)??[]).filter(e=>e.info.id!==n.info.id),n],i=new Map(t.retainedPendingUserMessages);return i.set(e,r),{retainedPendingUserMessages:i}})}async function VU(e){let t=e.directory??void 0,n=UU(e.sessionId,e.onSendConfirmed),r=e.content;if(e.inputMode===`shell`){let r=e.messageID??ge(`msg`);return z.shellSession({sessionId:e.sessionId,directory:t,agent:e.agent??``,model:{providerID:e.providerID,modelID:e.modelID},command:e.content}).then(()=>{n(r)})}let a=de(e.content);if(a){let o=a.commandName.toLowerCase(),s=a.argumentsText,c=t??Pe.getState().currentDirectory??null,l=i(),u=Di(c,l),d=qa(c,l),f=L.getQueryState(u.queryKey),p=L.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(ki(c,l)):L.fetchQuery({...u,staleTime:1/0}),h?Promise.resolve(Ya(L,c,l)):L.fetchQuery({...d,staleTime:1/0})]);if(i()!==l)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===o)?void 0:g.find(e=>e.name.toLowerCase()===o);if(v?.isBuiltIn===!1)r=`[command:${v.reference??v.name}]${s?` ${s}`:``}`;else if(v)return aC({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>z.sendCommand({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,command:v.name,arguments:s,agent:e.agent,variant:e.variant,files:e.files,messageId:n,directory:t}).then(()=>{})})}return aC({sessionId:e.sessionId,content:r,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.optimisticParts,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>z.sendMessage({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,text:r,agent:e.agent,agentMentions:e.agentMentionName?[{name:e.agentMentionName}]:void 0,variant:e.variant,files:e.files,additionalParts:e.additionalParts,delivery:e.delivery,messageId:n,directory:t}).then(()=>{})})}function HU(e,t){F(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function UU(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{HU(e,r)}}}}var WU=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},GU=f(),KU=`oc.chatInput.lastDraftTarget`,qU=()=>{try{let e=GU.getItem(KU);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:_(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},JU=e=>{try{GU.setItem(KU,JSON.stringify(e))}catch{}},YU=Qo,XU=e=>{if(e)return pU.getState().getAttachment(e)},ZU=(e,t,n)=>{if(!e)return null;let r=hU(XU(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return _(i);if(n?.includeRuntimeMemory!==!1){let t=rW.get(iW());if(t?.sessionId===e&&t.directory)return _(t.directory)}let a=Nd().find(t=>t.id===e);return a?WU(a):null},QU=e=>{let t=Nd().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},$U=async(e,t)=>{await Gf.getState().activateDirectory(_(e),t)},eW={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},tW=new Map,nW=0,rW=new Map,iW=e=>(e??c()).trim()||`default`,aW=e=>({...e}),oW=(e,t)=>{let n=rW.get(e);rW.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?aW(n.draft):{...eW},...t})},sW=(e,t)=>{let n=Ci.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=Qo(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},cW=async(e,t)=>{if(!e)return;let n=sW(e,t);n&&await Bk(n)&&await YO(e)},lW=(e,t)=>{let n=Ci.getState(),r=Qo(n.projects,t,e);r&&n.moveProjectToTop(r.id)},uW=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,dW=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,fW=(e,t)=>dW(e,t)&&uW(Or.getState().captureDraftRuntime(),t.runtime);async function pW(e){let t=!1;if($.setState(n=>{let r=n.newSessionDraft;if(!r?.open||!r.draftID||r.draftSubmitting||r.draftEstablishing)return{};t=!0;let i=e?RU({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return oW(iW(),{draft:a}),{newSessionDraft:a}}),!t)return!1;await new Promise(e=>setTimeout(e,0));let n=$.getState().newSessionDraft;return n.open===!0&&n.draftEstablishing===!0}function mW(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return oW(iW(),{draft:n}),{newSessionDraft:n}})}async function hW(e){let t=null,n=null,r=null;if($.setState(i=>{let a=i.newSessionDraft;if(!a?.open||a.draftSubmitting||!a.draftID)return{};let o=(a.submissionToken??0)+1,s={...a,draftSubmitting:!0,draftEstablishing:!1,submissionToken:o,...e?{pendingUserMessage:e}:{}};return r=iW(),t=s.draftID,n=o,oW(r,{draft:s}),{newSessionDraft:s}}),!t||n===null||!r)return null;await new Promise(e=>setTimeout(e,0));let i=$.getState().newSessionDraft;if(!i.open||i.draftSubmitting!==!0||i.draftID!==t||i.submissionToken!==n)return null;let a=Or.getState().captureDraftRuntime(),o=S(a,t),s=Or.getState().getDraft(o);return{token:n,draftID:t,draft:aW(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function gW(e){$.setState(t=>{let n=t.newSessionDraft;if(fW(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=rW.get(e.runtimeMemoryKey);return r&&dW(r.draft,e)&&oW(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=rW.get(e.runtimeMemoryKey);t&&dW(t.draft,e)&&oW(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function _W(e){let t=rW.get(e.runtimeMemoryKey);t&&dW(t.draft,e)&&oW(e.runtimeMemoryKey,{draft:{...eW}})}async function vW(e,t,n){if(!e.source)return null;let r;try{r=await Or.getState().finalizeDraftOwnership({source:e.source.key,destination:C(e.runtime,t),expectedSourceRevision:e.source.revision,disposition:n,runtime:e.runtime})}catch{return console.warn(`[session-ui-store] draft ownership finalization rejected`,{disposition:n,sessionID:t,draftID:e.draftID}),null}return r.status!==`committed`&&console.warn(`[session-ui-store] draft ownership finalization did not commit`,{status:r.status,disposition:n,sessionID:t,draftID:e.draftID}),r}function yW(e,t){let n=t??e.directory??null;n&&Ed(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function bW(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=_(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!fW(l,r);yW(e,c);let f=Gf.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&lO.getState().addSessionToFolder(t,a,e.id)}return d||(JU({projectId:o??null,directory:c}),$U(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),Jo.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(Jo.getState().saveSessionAgentSelection(e.id,p),Jo.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),Jo.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),lW(c,$.getState().availableWorktreesByProject),u&&et(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>pM);return{usePermissionStore:e}},void 0).then(({usePermissionStore:t})=>t.getState().setSessionAutoAccept(e.id,!0)).catch(e=>{console.warn(`Failed to apply draft permission auto-accept to new session:`,e)})),d&&r&&_W(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function xW(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await yO(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await cW(t,n);let r=t??z.getDirectory();return{directory:_(r),projectId:n}}async function SW(e,t){let n=await hW(t);if(!n)return null;let{draft:r}=n,i=typeof e.agent==`string`&&e.agent.trim().length>0?e.agent.trim():void 0;try{let{directory:a}=await xW(r),o=a??z.getDirectory(),s=await kS(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&oC({sessionId:s.id,messageID:t.info.id,content:``,providerID:e.providerID,modelID:e.modelID,agent:i,directory:a??s.directory??null,parts:t.parts}),{materialized:await bW(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return gW(n),null}}async function CW(e){let t=await SW(e);return t?(await vW(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var wW=2,TW=300;async function EW(e){let{useI18nStore:t,formatMessage:n}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DQY8Fkb0.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:r}=t.getState();return Error(n(r,e))}async function DW(e){let{content:t,providerID:n,modelID:r,agent:i,agentMentionName:a,variant:o,attachments:s,additionalParts:c,onSessionReady:l}=e,u=$.getState().newSessionDraft,d=typeof i==`string`&&i.trim().length>0?i.trim():void 0,f=Gf.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??ge(`msg`),h=RU({messageID:m,sessionID:`draft:pending`,providerID:n,modelID:r,agent:p,text:t,attachments:s,additionalParts:u.syntheticParts?.length?[...c||[],...u.syntheticParts]:c,agentMentionName:a}),g=await hW(h);if(!g)throw await EW(`chat.chatInput.toast.messageSendFailed`);let{draft:_}=g;try{let e=s?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))??[],i=(_.syntheticParts?.length?[...c||[],..._.syntheticParts]:c)?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))})),u=a?[{name:a}]:void 0,{directory:d}=await xW(_),f=await z.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=Te()?.conversations;if(!v?.createWithPrompt)throw await EW(`chat.chatInput.toast.messageSendFailed`);let y=d??z.getDirectory()??``,b=Gx(y,{bootstrap:!1}),x=()=>uW(Or.getState().captureDraftRuntime(),g.runtime),S;for(let e=0;e<=wW;e++){e>0&&await new Promise(e=>setTimeout(e,TW));try{if(S=await v.createWithPrompt({input:{type:`prompt`},directory:y,..._.title?{title:_.title}:{},..._.parentID?{parentID:_.parentID}:{},messageID:m,model:{providerID:n,modelID:r},...p?{agent:p}:{},...o?{variant:o}:{},parts:f}),!S||S.ok||S.phase!==`unavailable`||(S=void 0,e===wW))break}catch{if(e===wW)break}}if(!S)throw gW(g),Or.getState().setPendingInputText(t,`replace`),await EW(`chat.chatInput.toast.messageSendFailed`);if(S.ok){let e=S.session,t=d??e.directory??null,i=t??y;yW(e,t);let a=i===y?b:Gx(i,{bootstrap:!1});BU(e.id,h);let s=await bW(e,{providerID:n,modelID:r,agent:p,variant:o},{directory:t,agent:p,draftProjectId:_.selectedProjectId,targetFolderId:_.targetFolderId,draftSyntheticParts:_.syntheticParts},g);{let t=a.getState();Object.prototype.hasOwnProperty.call(t.session_status??{},e.id)||a.setState({session_status:{...t.session_status,[e.id]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.id]:Date.now()}})}await vW(g,e.id,`consume`),HU(e.id,m),s.selected&&IC(e.id),hC({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:x}).then(t=>{t===`missing`&&console.warn(`[combined] sent user message never materialized`,{sessionId:e.id,messageID:m,directory:i})}).catch(t=>{console.warn(`[combined] sent user message presence check failed`,{sessionId:e.id,messageID:m,directory:i,error:t instanceof Error?t.message:String(t)})}),l?.(e.id,t);return}if(!S.ok){let e=S.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw gW(g),Or.getState().setPendingInputText(t,`replace`),await EW(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=S,i=e.session,a=d??i.directory??null,s=await bW(i,{providerID:n,modelID:r,agent:p,variant:o},{directory:a,agent:p,draftProjectId:_.selectedProjectId,targetFolderId:_.targetFolderId,draftSyntheticParts:_.syntheticParts},g);if(e.ambiguous){let e=await cC(i.id,m,a,{isCurrent:x});if(e&&x()){await vW(g,i.id,`consume`),HU(i.id,m),s.selected&&IC(i.id),lC(Gx(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await vW(g,i.id,`preserve`),Or.getState().setPendingInputText(t,`replace`),await EW(`chat.chatInput.toast.sendStatusUnknown`)}throw await vW(g,i.id,`preserve`),Or.getState().setPendingInputText(t,`replace`),await EW(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw gW(g),e}}var OW=`oc.worktreeMap`,kW=()=>{try{let e=f().getItem(OW);if(!e)return new Map;let t=JSON.parse(e);return Array.isArray(t)?new Map(t.filter(e=>Array.isArray(e)&&typeof e[0]==`string`&&Array.isArray(e[1]))):new Map}catch{return new Map}},AW=e=>{try{f().setItem(OW,e)}catch{}},jW=e=>{let t=[];for(let n of e.values())t.push(...n);return t},MW=kW(),$=Oe()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...eW},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:jW(MW),availableWorktreesByProject:MW,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,sessionPlanAvailable:new Map,pendingChangesBarDismissed:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map,clearRetainedPendingUserMessages:(t,n)=>{!t||n.length===0||e(e=>{let r=e.retainedPendingUserMessages.get(t);if(!r?.length)return e;let i=new Set(n),a=r.filter(e=>!i.has(e.info.id));if(a.length===r.length)return e;let o=new Map(e.retainedPendingUserMessages);return a.length===0?o.delete(t):o.set(t,a),{retainedPendingUserMessages:o}})},clearStagedMessageEdit:t=>{e(e=>!e.stagedMessageEdit||t&&e.stagedMessageEdit.sessionId!==t?e:{stagedMessageEdit:null})},beginMessageEditCommit:(t,n)=>{e({messageEditCommitting:{sessionId:t,messageId:n}})},endMessageEditCommit:(t,n)=>{e(e=>{let r=e.messageEditCommitting;return!r||r.sessionId!==t||r.messageId!==n?e:{messageEditCommitting:null}})},markMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)===n)return e;let r=new Map(e.pendingSendMessageIDs);return r.set(t,n),{pendingSendMessageIDs:r}})},clearMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)!==n)return e;let r=new Map(e.pendingSendMessageIDs);return r.delete(t),{pendingSendMessageIDs:r}})},setCurrentSession:(n,r,a)=>{PU(n),b(n);let o=t().currentSessionId,s=t().currentSessionDirectory;o!==n&&(kU(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Or.getState().setActiveAttachmentDraft(n?C({transportIdentity:i()},n):null);let c=iW();tW.set(c,n);let l=Pe.getState(),u=ZU(n,e=>t().worktreeMetadata.get(e)),d=z.getDirectory()??l.currentDirectory??null,f=(r?_(r):null)??u??d,p=Ci.getState(),h=f?Qo(p.projects,t().availableWorktreesByProject,f):null;e({currentSessionId:n,currentSessionDirectory:n?f??null:null}),oW(c,{sessionId:n,directory:f??null}),o!==n&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:o,previousDirectory:s,nextSessionId:n,nextDirectory:n?f??null:null}),n&&a?.skipMessageFetch!==!0&&NC(n,f);try{f&&l.currentDirectory!==f&&l.setDirectory(f,{showOverlay:!1}),h&&a?.preserveActiveProject!==!0&&p.activeProjectId!==h.id&&p.setActiveProjectIdOnly(h.id),z.setDirectory(f??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(o&&o!==n){let e=o;setTimeout(()=>{if(!dU(e)?.isStreaming){let t=Id(e);t.length>0&&fU.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(mA(n),rP(f??``,n))},prepareForRuntimeSwitch:n=>{let r=iW(n),i=Pe.getState().currentDirectory||null,a=t().currentSessionId,o=i?Od(i):null;LM({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),tW.set(r,t().currentSessionId),oW(r,{sessionId:a,directory:i,draft:aW(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=iW(t),r=rW.get(n),a=r?.sessionId??tW.get(n)??null;b(a);let o=r?.draft?aW(r.draft):{...eW},s=r?.directory??null;s&&Pe.getState().setDirectory(s,{showOverlay:!1}),e({currentSessionId:a,currentSessionDirectory:a?s:null,newSessionDraft:a?{...eW}:o,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,sessionAbortFlags:new Map,queueAbortBlocks:new Map,pendingChangesBarDismissed:new Map,retainedPendingUserMessages:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map}),Or.getState().setActiveAttachmentDraft(a?C({transportIdentity:i()},a):o.open&&o.draftID?S({transportIdentity:i()},o.draftID):null),a?rP(s??z.getDirectory()??``,a):rP(``,``)},openNewSessionDraft:n=>{if(TI.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let a=Ci.getState(),o=a.projects,s=t().availableWorktreesByProject,c=_(t().currentSessionDirectory??null),l=_(Pe.getState().currentDirectory??null),u=qU(),d=n?.directoryOverride===void 0?null:_(n.directoryOverride),f=YU(o,s,d),p=n?.ensureProjectForDirectory&&d&&!f?a.addProject(d):null;p&&(a=Ci.getState());let h=a.projects,g=a.getActiveProject(),v=n?.selectedProjectId?h.find(e=>e.id===n.selectedProjectId)??null:null,y=g||(a.activeProjectId?h.find(e=>e.id===a.activeProjectId)??null:h[0]??null),x=u?.projectId?h.find(e=>e.id===u.projectId)??null:null,C=YU(h,s,u?.directory??null),w=YU(h,s,c),T=YU(h,s,l),E=v||(d===null?w||(l?T:C??x??y):p??f),D=d===null?v?_(v.path??null):c||l||(u?.directory?u.directory:_(E?.path??null)):d;JU({projectId:E?.id??null,directory:D}),E&&a.activeProjectId!==E.id&&a.setActiveProjectIdOnly(E.id);let O=le({projectId:E?.id??null,directory:D}),k=S({transportIdentity:i()},O),A=Or.getState().getDraft(k),j={open:!0,draftID:O,selectedProjectId:E?.id??null,directoryOverride:D,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:_(n?.bootstrapPendingDirectory??null),preserveDirectoryOverride:n?.preserveDirectoryOverride===!0,parentID:n?.parentID??null,title:n?.title,initialPrompt:n?.initialPrompt,syntheticParts:n?.syntheticParts,targetFolderId:n?.targetFolderId,submissionToken:r.open&&r.draftID===O?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},ee=t().currentSessionId,te=t().currentSessionDirectory;e({newSessionDraft:{...j},currentSessionId:null,currentSessionDirectory:null,error:null}),b(null),m.getState().setActiveMainTab(`chat`),ee&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:ee,previousDirectory:te,nextSessionId:null,nextDirectory:null}),oW(iW(),{sessionId:null,directory:D,draft:j}),Or.getState().setActiveAttachmentDraft(k),A||Or.getState().clearAttachedFiles(),n?.initialPrompt&&Or.getState().setPendingInputText(n.initialPrompt);let M=_(E?.path??null)??D,ne=E?_(M):null,re=j.draftID,ie=i();$U(M,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=_(Gf.getState().activeDirectoryKey);!e.open||e.draftID!==re||i()!==ie||!ne||n!==ne||Gf.getState().applyDefaultModelAgentSelection({projectDefaultModel:E?.defaultModel})}),D&&D!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(D)},closeNewSessionDraft:()=>{let t={open:!1,draftID:null,selectedProjectId:null,directoryOverride:null,pendingWorktreeRequestId:null,bootstrapPendingDirectory:null,preserveDirectoryOverride:!1,parentID:null,title:void 0,initialPrompt:void 0,syntheticParts:void 0,targetFolderId:void 0,draftSubmitting:!1,draftEstablishing:!1};e({newSessionDraft:t}),oW(iW(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=_(t.directoryOverride??e.newSessionDraft.directoryOverride);let i=n?.force===!0;return{newSessionDraft:{...e.newSessionDraft,selectedProjectId:t.projectId??t.selectedProjectId??e.newSessionDraft.selectedProjectId,directoryOverride:t.directoryOverride??e.newSessionDraft.directoryOverride,...i?{bootstrapPendingDirectory:null,preserveDirectoryOverride:!1}:{}}}}),$U(r,{source:`setNewSessionDraftTarget`}),r&&r!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(r)},setDraftPreserveDirectoryOverride:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,preserveDirectoryOverride:t}}:e),setDraftPermissionAutoAcceptEnabled:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,permissionAutoAcceptEnabled:t}}:e),acknowledgeSessionAbort:t=>e(e=>{let n=new Map(e.sessionAbortFlags),r=n.get(t);return r&&n.set(t,{...r,acknowledged:!0}),{sessionAbortFlags:n}}),beginQueueAbortBlock:(t,n=LU)=>{let r=fe(),i=D(t);return e(e=>{let a=new Map(e.queueAbortBlocks);return a.set(i,{token:r,expiresAt:Date.now()+n,directory:t.directory,sessionID:t.sessionID}),{queueAbortBlocks:a}}),r},clearQueueAbortBlock:(t,n)=>e(e=>{let r=D(t);if(e.queueAbortBlocks.get(r)?.token!==n)return e;let i=new Map(e.queueAbortBlocks);return i.delete(r),{queueAbortBlocks:i}}),pruneQueueAbortBlocks:(t=Date.now())=>e(e=>{let n;for(let[r,i]of e.queueAbortBlocks)i.expiresAt>t||(n||=new Map(e.queueAbortBlocks),n.delete(r));return n?{queueAbortBlocks:n}:e}),releaseQueueAbortBlocksForServerIdle:(t,n)=>e(e=>{let r,i=Date.now();for(let[a,o]of e.queueAbortBlocks)o.directory===t&&o.sessionID===n&&(o.expiresAt<=i||(r||=new Map(e.queueAbortBlocks),r.delete(a)));return r?{queueAbortBlocks:r}:e}),clearAbortPrompt:()=>e({abortPromptSessionId:null,abortPromptExpiresAt:null}),armAbortPrompt:(n=5e3)=>{let{currentSessionId:r}=t();if(!r)return null;let i=Date.now()+n;return e({abortPromptSessionId:r,abortPromptExpiresAt:i}),i},clearError:()=>e({error:null}),markSessionAsOpenChamberCreated:t=>e(e=>{let n=new Set(e.webUICreatedSessions);return n.add(t),{webUICreatedSessions:n}}),isOpenChamberCreatedSession:e=>t().webUICreatedSessions.has(e),getContextUsage:(e,n)=>{if(t().newSessionDraft?.open)return null;let r=t().currentSessionId;if(!r)return null;let i=Id(r);if(i.length===0)return null;let a=sA(i,e=>Ld(e));if(!a||`compacted`in a)return null;let o=a.tokens,s=a.totalTokens,c=e>0?e:2e5,l=e>0?Math.round(s/e*100):0,u=n>0?Math.round(rA(o.output)/n*100):void 0;return{totalTokens:s,percentage:l,contextLimit:e||0,outputLimit:n||void 0,normalizedOutput:u,thresholdLimit:c,lastMessageId:a.messageId}},initializeNewOpenChamberSession:()=>{},setWorktreeMetadata:(t,n)=>{n?pU.getState().setAttachment(t,{worktreeRoot:n.worktreeRoot??n.path??null,cwd:n.path??null,branch:n.branch??null,headState:n.headState??(n.branch?`branch`:`detached`),worktreeStatus:n.worktreeStatus??`ready`,worktreeSource:n.worktreeSource??null,legacy:!1,degraded:!1}):pU.getState().clearAttachment(t),e(e=>{let r=new Map(e.worktreeMetadata);return n?r.set(t,n):r.delete(t),{worktreeMetadata:r}})},overrideNewSessionDraftTarget:t=>{let n=null;e(e=>{let r={...e.newSessionDraft,...t};return n=_(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),$U(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(n)},resolvePendingDraftWorktreeTarget:(t,n,r)=>e(e=>!e.newSessionDraft?.open||e.newSessionDraft.pendingWorktreeRequestId!==t?e:{newSessionDraft:{...e.newSessionDraft,selectedProjectId:r?.projectId??e.newSessionDraft.selectedProjectId??null,directoryOverride:_(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:_(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:_(t)}}:e),setPendingDraftWorktreeRequest:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,pendingWorktreeRequestId:t}}:e),getWorktreeMetadata:e=>t().worktreeMetadata.get(e),dismissPendingChangesBar:(n,r)=>{let i=new Map(t().pendingChangesBarDismissed);r===null?i.delete(n):i.set(n,r),e({pendingChangesBarDismissed:i})},sendMessage:async(n,r,i,a,o,s,c,l,u,d)=>{let f=t().stagedMessageEdit,p=d?.sessionId??t().currentSessionId,h=d?.commitStagedMessageEdit&&f&&f.sessionId===p?f:null,g=d?.sessionId??t().currentSessionId;if(g){let n=new Map(t().pendingChangesBarDismissed);n.delete(g),e({pendingChangesBarDismissed:n})}let v=t().newSessionDraft,y=typeof a==`string`&&a.trim().length>0?a.trim():void 0,b=u!==`shell`&&n.trim().length>0?EI.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=m.getState(),t=lU(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let S=(e,t)=>{if(!x)return;let r=m.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;rU(e,t??void 0,{objective:a,tokenBudget:i},null).catch(e=>{console.warn(`[session-ui-store] failed to set goal from armed send`,e)})};if(!d?.sessionId&&v?.open){if(u!==`shell`&&!n.trimStart().startsWith(`/`)&&!d?.delivery&&Te()?.conversations?.createWithPrompt){await DW({content:n,providerID:r,modelID:i,agent:y,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:d?.messageID,onSessionReady:S});return}let e=d?.messageID??v.pendingUserMessage?.info.id??ge(`msg`),a=RU({messageID:e,sessionID:`draft:pending`,providerID:r,modelID:i,agent:y,text:n,attachments:o,additionalParts:v.syntheticParts?.length?[...c||[],...v.syntheticParts]:c,agentMentionName:s}),f=await SW({providerID:r,modelID:i,agent:y,variant:l},a);if(!f)throw Error(`Failed to create session`);let{materialized:p,claim:m}=f,h=p.syntheticParts?.length?[...c||[],...p.syntheticParts]:c;IC(p.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await VU({sessionId:p.sessionId,directory:p.directory,content:n,providerID:r,modelID:i,agent:p.agent,agentMentionName:s,variant:l,inputMode:u,files:g,delivery:d?.delivery,messageID:e,optimisticParts:a.parts,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:h?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))}),await vW(m,p.sessionId,`consume`)}catch(e){throw await vW(m,p.sessionId,`preserve`),e}lW(p.directory,t().availableWorktreesByProject),S(p.sessionId,p.directory);return}let C=d?.sessionId??t().currentSessionId,w=C?Jo.getState().getSessionAgentSelection(C):null,T=Gf.getState().currentAgentName,E=y||w||T||void 0;if(C&&Jo.getState().saveSessionModelSelection(C,r,i),C&&E&&(Jo.getState().saveSessionAgentSelection(C,E),Jo.getState().saveAgentModelForSession(C,E,r,i),Jo.getState().saveAgentModelVariantForSession(C,E,r,i,l)),C){let e=fU.getState(),t=dU(C);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(uU(C),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),fU.setState({sessionMemoryState:n})}}let D=C?_(d?.directoryHint)??_(t().getDirectoryForSession(C)):null;C&&IC(C);let O=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(h)try{await DC(h.sessionId,h.messageId,{directory:D??void 0}),t().stagedMessageEdit===h&&e({stagedMessageEdit:null})}catch(e){throw t().endMessageEditCommit(h.sessionId,h.messageId),e}try{await VU({sessionId:C||``,directory:D,content:n,providerID:r,modelID:i,agent:E,agentMentionName:s,variant:l,inputMode:u,files:O,delivery:d?.delivery,messageID:d?.messageID,ticket:d?.ticket,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:c?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))})}finally{h&&t().endMessageEditCommit(h.sessionId,h.messageId)}lW(D,t().availableWorktreesByProject),C&&S(C,D)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await kS(n,r??z.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),oW(iW(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&lO.getState().addSessionToFolder(e,s,o.id)}return o}catch(n){return console.error(`[session-ui-store] createSession failed`,n),c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),oW(iW(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>HS(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await HS(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>GS(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await GS(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await qS(e,t)},requestSessionSmartTitle:async e=>{await JS(e)},shareSession:async e=>YS(e),unshareSession:async e=>XS(e),revertToMessage:async(e,t,n)=>{await xC(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await CC(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Id(e),r=Md().find(t=>t.id===e)?.revert?.messageID,i=ps(n,r);if(!i)return;let a=Ld(i.id).find(e=>e.type===`text`),o=a?.text?String(a.text).slice(0,50)+(a.text.length>50?`...`:``):`[No text]`;await t().revertToMessage(e,i.id);let{toast:s}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:c,formatMessage:l}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DQY8Fkb0.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:u}=c.getState();s.success(l(u,`chat.revert.toast.undo`,{preview:o}))},handleSlashRedo:async(e,n)=>{if(n?.fullUnrevert){let{unrevertSession:t}=await et(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>lx);return{unrevertSession:e}},void 0);await t(e);let{toast:n}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:i}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DQY8Fkb0.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:a}=r.getState();n.success(i(a,`chat.revert.toast.restored`));return}let r=Md().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=ms(Id(e),r);if(i){await t().revertToMessage(e,i.id,{skipRedoPush:!0});let{toast:n}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:a}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DQY8Fkb0.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:o}=r.getState();n.success(a(o,`chat.revert.toast.redo`));return}await AC(e);let{toast:a}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:o,formatMessage:s}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DQY8Fkb0.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:c}=o.getState();a.success(s(c,`chat.revert.toast.restored`))},forkFromMessage:async(n,r,i)=>{let a=t().forkTransition;if(a?.operationId,a?.stage,a){console.warn(`[session-fork] forkFromMessage skipped because a transition is active`,{sessionId:n,messageId:r,activeOperationId:a.operationId,activeSourceSessionId:a.sourceSessionId,activeStage:a.stage});return}let o=QU(n),s=++nW;try{let a=i?.directory??t().getDirectoryForSession(n)??z.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:s,sourceSessionId:n,targetSessionId:null,directory:a,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await jC(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));c.success(`Forked from ${o?.title??`session`}`)}catch(e){console.error(`[session-fork] forkFromMessage failed`,{operationId:s,sessionId:n,messageId:r,error:e});let{toast:t}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===s?{forkTransition:null}:e)}},forkCurrentSession:async n=>{let r=t().forkTransition;if(r?.operationId,r?.stage,r){console.warn(`[session-fork] forkCurrentSession skipped because a transition is active`,{sessionId:n,activeOperationId:r.operationId,activeSourceSessionId:r.sourceSessionId,activeStage:r.stage});return}let i=QU(n),a=++nW;try{let r=t().getDirectoryForSession(n)??z.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:a,sourceSessionId:n,targetSessionId:null,directory:r,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await jC(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));o.success(`Forked from ${i?.title??`session`}`)}catch(e){console.error(`[session-fork] forkCurrentSession failed`,{operationId:a,sessionId:n,error:e});let{toast:t}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===a?{forkTransition:null}:e)}},getSessionsByDirectory:e=>{let t=_(e);return t?Nd().filter(e=>WU(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=ZU(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=Y.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?QE(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:ZU(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Id(e,t().getDirectoryForSession(e)??void 0);for(let e=n.length-1;e>=0;--e){let t=n[e];if(t.role!==`user`)continue;let r=typeof t.model?.providerID==`string`&&t.model.providerID.trim().length>0?t.model.providerID:void 0,i=typeof t.model?.modelID==`string`&&t.model.modelID.trim().length>0?t.model.modelID:void 0,a=typeof t.agent==`string`&&t.agent.trim().length>0?t.agent:typeof t.mode==`string`&&t.mode.trim().length>0?t.mode:void 0,o=t.model?.variant??t.variant,s=typeof o==`string`&&o.trim().length>0?o:void 0;return{id:typeof t.id==`string`?t.id:void 0,agent:a,providerID:r,modelID:i,variant:s}}return null},getCurrentAgent:e=>Jo.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Id(e);Md().find(t=>t.id===e),`${e}`,t.length,t.map(e=>({id:e.id,role:e.role,tokens:e.role===`assistant`?e.tokens:void 0}))},pollForTokenUpdates:()=>{},setSessionDirectory:(n,r)=>{let i=_(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),oW(iW(),{sessionId:n,directory:i}))},markSessionPlanAvailable:t=>{e(e=>{if(e.sessionPlanAvailable.get(t)===!0)return e;let n=new Map(e.sessionPlanAvailable);return n.set(t,!0),{sessionPlanAvailable:n}})},isSessionPlanAvailable:e=>t().sessionPlanAvailable.get(e)??!1}));AM((e,t)=>{$.getState().setCurrentSession(e,t)});var NW=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==NW&&(NW=t,AW(t))}});function PW(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function FW(e){return e.length>1?e.slice(0,-1):[]}function IW(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function LW(e,t){let n=e.at(-1);if(!n||n.sessionId===t.sessionId)return e;let r=e.at(-2);return r?.sessionId===t.sessionId?r.directory===t.directory?e:[...e.slice(0,-2),t,n]:e.length===1?[t,n]:e}var RW={activeTab:`projects`,secondary:null},zW=0,BW=null,VW=e=>{let t=++zW;return BW={generation:t,sessionId:e.sessionId,directory:_(e.directory)??null},t},HW=e=>{let t=BW;return t&&t.generation===zW&&t.sessionId===e.sessionId&&t.directory===(_(e.directory)??null)?(BW=null,`internal`):(BW=null,`external`)},UW=()=>{zW+=1,BW=null},WW=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&_(n)===_(e.directory)?UW():VW(e),t.setCurrentSession(e.sessionId,e.directory??null,{preserveActiveProject:e.preserveActiveProject})},GW=Oe(e=>({...RW,setActiveTab:t=>{UW(),e({activeTab:t,secondary:null})},openSession:t=>{e({secondary:{kind:`chat`,routes:[qW(t,`root`)]}}),WW(t)},pushSession:t=>{e(e=>{let n=qW(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?PW(e.secondary.routes,n):[n]}}}),WW(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=FW(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=GW.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&WW(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=LW(e.secondary.routes,qW(t,`parent`));return n===e.secondary.routes?e:{secondary:{kind:`chat`,routes:n}}}),replaceChatSession:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=e.secondary.routes.at(-1);return n?.sessionId===t.sessionId&&n.directory===(t.directory??null)?e:{secondary:{kind:`chat`,routes:IW(e.secondary.routes,qW(t,`root`))}}}),materializeDraftSession:t=>e(e=>e.secondary?.kind===`draft`?{secondary:{kind:`chat`,routes:[{key:`chat-primary`,sessionId:t.sessionId,directory:t.directory??null}]}}:e),openDraft:t=>{UW(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{UW(),mt.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{UW(),e({secondary:{kind:`instances`}})},closeSecondary:()=>{UW(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{UW(),e({...RW})}})),KW=1,qW=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${KW++}`,sessionId:e.sessionId,directory:e.directory??null}),JW=e=>!Ge()||Ke()?!1:(GW.getState().pushSession(e),!0);export{UB as $,Io as $a,Fp as $i,IO as $n,Vx as $r,dI as $t,JH as A,W as Aa,s_ as Ai,hA as An,Vr as Ao,Iw as Ar,SI as At,cV as B,os as Ba,Vm as Bi,Zk as Bn,tC as Br,fN as Bt,uU as C,gu as Ca,x_ as Ci,qj as Cn,Ai as Co,UT as Cr,IL as Ct,iU as D,U as Da,__ as Di,QA as Dn,zr as Do,iT as Dr,wI as Dt,eU as E,Tu as Ea,v_ as Ei,XA as En,Ci as Eo,lT as Er,EI as Et,AH as F,ls as Fa,Rg as Fi,$k as Fn,Or as Fo,RC as Fr,IP as Ft,KB as G,Jo as Ga,rm as Gi,Wk as Gn,ES as Gr,uI as Gt,DV as H,Yo as Ha,Sm as Hi,Jk as Hn,DC as Hr,NF as Ht,cH as I,es as Ia,dg as Ii,Gk as In,Xt as Io,LC as Ir,rP as It,tV as J,Bo as Ja,Ip as Ji,tA as Jn,_C as Jr,AF as Jt,rV as K,Wo as Ka,nm as Ki,zk as Kn,yC as Kr,cN as Kt,jH as L,cs as La,ug as Li,Hk as Ln,Qt as Lo,FS as Lr,aP as Lt,KH as M,nu as Ma,i_ as Mi,sA as Mn,jr as Mo,ww as Mr,tF as Mt,lH as N,Ks as Na,zg as Ni,ek as Nn,Mr as No,Cw as Nr,tI as Nt,aU as O,wu as Oa,g_ as Oi,mA as On,Hr as Oo,cT as Or,xI as Ot,dH as P,fs as Pa,Lg as Pi,Xk as Pn,Ar as Po,Sw as Pr,JF as Pt,XB as Q,Po as Qa,Mp as Qi,zO as Qn,US as Qr,PF as Qt,$V as R,ns as Ra,rh as Ri,Rk as Rn,Zt as Ro,gC as Rr,iP as Rt,fU as S,H as Sa,C_ as Si,Jj as Sn,ki as So,VT as Sr,AL as St,oU as T,Ou as Ta,w_ as Ti,ZA as Tn,Oi as To,ET as Tr,iL as Tt,qV as U,Xo as Ua,vm as Ui,eA as Un,kS as Ur,nF as Ut,uV as V,$o as Va,km as Vi,Pk as Vn,WS as Vr,IF as Vt,nV as W,Qo as Wa,im as Wi,Uk as Wn,bC as Wr,rF as Wt,qB as X,Ro as Xa,Ap as Xi,BO as Xn,xC as Xr,kF as Xt,iV as Y,Uo as Ya,Op as Yi,LO as Yn,vC as Yr,OF as Yt,YB as Z,Lo as Za,kp as Zi,VO as Zn,rC as Zr,jF as Zt,hU as _,Qu as _a,Wv as _i,OM as _n,Oa as _o,Y as _r,Lz as _t,mW as a,xf as aa,Yb as ai,uF as an,po as ao,_O as ar,DB as at,pU as b,Su as ba,Sv as bi,_M as bn,ha as bo,QT as br,KL as bt,VU as c,Nd as ca,Iy as ci,dF as cn,Wa as co,TD as cr,CB as ct,FU as d,Ld as da,Bv as di,iI as dn,Aa as do,eD as dr,tB as dt,Pp as ea,CC as ei,nI as en,no as eo,JO as er,WB as et,IU as f,Md as fa,qv as fi,rI as fn,Fa as fo,jD as fr,Gz as ft,vU as g,nd as ga,Lv as gi,DM as gn,ka as go,kD as gr,Fz as gt,AU as h,Gu as ha,Gv as hi,aI as hn,Sa as ho,DD as hr,Vz as ht,pW as i,Zf as ia,cx as ii,sF as in,bo as io,vO as ir,EB as it,qH as j,tu as ja,o_ as ji,rA as jn,Br as jo,pw as jr,TI as jt,UH as k,hu as ka,a_ as ki,fA as kn,Rr as ko,aT as kr,CI as kt,$ as l,Dd as la,Ty as li,pF as ln,Ja as lo,ED as lr,TB as lt,jU as m,Fd as ma,Uv as mi,FF as mn,Na as mo,QE as mr,Yz as mt,JW as n,cp as na,qS as ni,sI as nn,to as no,YO as nr,VB as nt,RU as o,Gf as oa,Kb as oi,_F as on,Ya as oo,ND as or,NB as ot,kU as p,Ed as pa,Kv as pi,bF as pn,Pa as po,OD as pr,zz as pt,aV as q,Ho as qa,Kp as qi,Vk as qn,JS as qr,sN as qt,GW as r,ep as ra,lS as ri,oF as rn,yo as ro,gO as rr,LB as rt,CW as s,Pd as sa,Nb as si,yF as sn,Xa as so,lO as sr,MB as st,HW as t,Np as ta,KS as ti,cF as tn,eo as to,FO as tr,HB as tt,PU as u,Id as ua,Zv as ui,hF as un,ba as uo,MD as ur,fB as ut,_U as v,xu as va,vv as vi,CM as vn,_a as vo,fE as vr,Cz as vt,lU as w,Eu as wa,D_ as wi,lj as wn,Ti as wo,KT as wr,LL as wt,dU as x,Du as xa,S_ as xi,fM as xn,ga as xo,zT as xr,X as xt,gU as y,Cu as ya,ev as yi,vM as yn,ma as yo,pE as yr,WL as yt,WV as z,ts as za,Km as zi,Bk as zn,Kt as zo,GS as zr,hN as zt};
475
+ `,nU=async e=>{if(e.length<=5e3)return e;let t=await VH(e);if(t)return t.slice(0,UH);let n=Math.max(0,Math.floor((UH-93)/2)),r=ft.getState().dictionary;return QT.error(pt(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${tU}${e.slice(-n)}`};async function rU(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await nU(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await QH(e,a),c=Date.now();await ZH(e,t,e=>r&&e&&e.id===r.id&&r.status!==`complete`?{...e,objective:s?``:a,objectiveFile:s,tokenBudget:o,status:`active`,statusReason:`resumed`,blockedStreak:0,updatedAt:c}:{id:XH(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function iU(e,t){await ZH(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function aU(e,t,n){n===`paused`&&(AH(e),gC(e)),await ZH(e,t,e=>e?{...e,status:n,statusReason:n===`active`?`resumed`:n===`complete`?`marked by user`:``,blockedStreak:0,...n===`active`?{turnsUsed:0}:{},updatedAt:Date.now()}:null)}async function oU(e,t){let n=!1;await ZH(e,t,e=>(n=e?.status===`active`,null)),$H(e),n&&(AH(e),gC(e))}var sU=`<system-reminder>`,cU=`</system-reminder>`,lU=e=>{let t=e.trim();return t?t.startsWith(sU)&&t.endsWith(cU)?t:`${sU}\n${t}\n${cU}`:``},uU=(e,t=c())=>`${t}\n${e}`,dU=(e,t)=>{let n=fU.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(uU(e))??n.sessionMemoryState.get(e)},fU=Oe()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??uU(t),s=a.get(o)??(i?void 0:a.get(t))??{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0};return a.set(o,{...s,viewportAnchor:n,...r?{scrollPosition:r}:{},lastAccessedAt:Date.now()}),{sessionMemoryState:a}})})),pU=Oe((e,t)=>({attachments:new Map,setAttachment:(t,n)=>e(e=>{let r=new Map(e.attachments);return r.set(t,n),{attachments:r}}),getAttachment:e=>t().attachments.get(e),clearAttachment:t=>e(e=>{let n=new Map(e.attachments);return n.delete(t),{attachments:n}})})),mU=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function hU(e,t){if(e){if(!e.degraded&&e.cwd)return mU(e.cwd);if(e.worktreeRoot)return mU(e.worktreeRoot);if(e.cwd)return mU(e.cwd)}return t?mU(t):null}function gU(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function _U(e,t){let n=[];if(t&&t.isClean===!1){let e=t.files?.length;n.push(e==null?{reason:`dirty`}:{reason:`dirty`,dirtyFiles:e})}return e?(e.worktreeStatus===`missing`&&n.push({reason:`missing`}),e.worktreeStatus===`invalid`&&n.push({reason:`invalid`}),e.attentionReason&&n.push({reason:`attention`,attentionReason:e.attentionReason}),n):n}function vU(e){let t=[];e.projectRoot&&t.push({value:e.projectRoot,label:e.rootBranch||e.projectRoot.split(`/`).pop()||e.projectRoot,kind:`root`});let n=e.pendingBootstrapDirectory?mU(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=mU(r.path);if(i===e.projectRoot)continue;let a=i===n;t.push({value:i,label:r.branch?.trim()||r.label||i.split(`/`).pop()||i,kind:`worktree`,pending:a||void 0})}return t}var yU=`openchamber.session-switch.start`,bU=`openchamber.session-switch.highlight-painted`,xU=`openchamber.session-switch.content-committed`,SU=`data-openchamber-session-switch-highlight-ms`,CU=`data-openchamber-session-switch-content-ms`,wU=`openchamber.session-switch.highlight-latency`,TU=`openchamber.session-switch.content-latency`,EU=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,DU=()=>EU()&&performance.getEntriesByName(yU,`mark`).length>0,OU=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},kU=(e=!1)=>{EU()&&(!e&&performance.getEntriesByName(yU,`mark`).length>0&&performance.getEntriesByName(xU,`mark`).length===0||(performance.clearMarks(yU),performance.clearMarks(bU),performance.clearMarks(xU),performance.clearMeasures(wU),performance.clearMeasures(TU),typeof document<`u`&&(document.documentElement.removeAttribute(SU),document.documentElement.removeAttribute(CU)),performance.mark(yU)))},AU=()=>{if(!DU())return;performance.mark(bU),performance.measure(wU,yU,bU);let e=performance.getEntriesByName(wU,`measure`).at(-1);e&&OU(SU,e.duration)},jU=()=>{if(!DU())return;performance.mark(xU),performance.measure(TU,yU,xU);let e=performance.getEntriesByName(TU,`measure`).at(-1);e&&OU(CU,e.duration)},MU={revision:0,sessionId:null},NU=new Set,PU=e=>{MU={revision:MU.revision+1,sessionId:e};for(let e of NU)e(MU);return MU},FU=()=>MU,IU=e=>(NU.add(e),()=>NU.delete(e)),LU=6e3;function RU(e){let t=e.parts?e.parts.map(e=>({...e})):[];if(e.parts)return{info:{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:Date.now(),completed:0}},parts:t};e.text!==void 0&&t.push({id:ge(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:ge(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:ge(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:ge(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:ge(`prt`),type:`agent`,name:e.agentMentionName}),{info:{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:Date.now(),completed:0}},parts:t}}function zU(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function BU(e,t){if(!e)return;let n=zU(t,e);$.setState(t=>{let r=[...(t.retainedPendingUserMessages.get(e)??[]).filter(e=>e.info.id!==n.info.id),n],i=new Map(t.retainedPendingUserMessages);return i.set(e,r),{retainedPendingUserMessages:i}})}async function VU(e){let t=e.directory??void 0,n=UU(e.sessionId,e.onSendConfirmed),r=e.content;if(e.inputMode===`shell`){let r=e.messageID??ge(`msg`);return z.shellSession({sessionId:e.sessionId,directory:t,agent:e.agent??``,model:{providerID:e.providerID,modelID:e.modelID},command:e.content}).then(()=>{n(r)})}let a=de(e.content);if(a){let o=a.commandName.toLowerCase(),s=a.argumentsText,c=t??Pe.getState().currentDirectory??null,l=i(),u=Di(c,l),d=qa(c,l),f=L.getQueryState(u.queryKey),p=L.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(ki(c,l)):L.fetchQuery({...u,staleTime:1/0}),h?Promise.resolve(Ya(L,c,l)):L.fetchQuery({...d,staleTime:1/0})]);if(i()!==l)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===o)?void 0:g.find(e=>e.name.toLowerCase()===o);if(v?.isBuiltIn===!1)r=`[command:${v.reference??v.name}]${s?` ${s}`:``}`;else if(v)return aC({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>z.sendCommand({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,command:v.name,arguments:s,agent:e.agent,variant:e.variant,files:e.files,messageId:n,directory:t}).then(()=>{})})}return aC({sessionId:e.sessionId,content:r,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.optimisticParts,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>z.sendMessage({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,text:r,agent:e.agent,agentMentions:e.agentMentionName?[{name:e.agentMentionName}]:void 0,variant:e.variant,files:e.files,additionalParts:e.additionalParts,delivery:e.delivery,messageId:n,directory:t}).then(()=>{})})}function HU(e,t){F(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function UU(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{HU(e,r)}}}}var WU=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},GU=f(),KU=`oc.chatInput.lastDraftTarget`,qU=()=>{try{let e=GU.getItem(KU);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:_(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},JU=e=>{try{GU.setItem(KU,JSON.stringify(e))}catch{}},YU=Qo,XU=e=>{if(e)return pU.getState().getAttachment(e)},ZU=(e,t,n)=>{if(!e)return null;let r=hU(XU(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return _(i);if(n?.includeRuntimeMemory!==!1){let t=rW.get(iW());if(t?.sessionId===e&&t.directory)return _(t.directory)}let a=Nd().find(t=>t.id===e);return a?WU(a):null},QU=e=>{let t=Nd().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},$U=async(e,t)=>{await Gf.getState().activateDirectory(_(e),t)},eW={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},tW=new Map,nW=0,rW=new Map,iW=e=>(e??c()).trim()||`default`,aW=e=>({...e}),oW=(e,t)=>{let n=rW.get(e);rW.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?aW(n.draft):{...eW},...t})},sW=(e,t)=>{let n=Ci.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=Qo(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},cW=async(e,t)=>{if(!e)return;let n=sW(e,t);n&&await Bk(n)&&await YO(e)},lW=(e,t)=>{let n=Ci.getState(),r=Qo(n.projects,t,e);r&&n.moveProjectToTop(r.id)},uW=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,dW=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,fW=(e,t)=>dW(e,t)&&uW(Or.getState().captureDraftRuntime(),t.runtime);async function pW(e){let t=!1;if($.setState(n=>{let r=n.newSessionDraft;if(!r?.open||!r.draftID||r.draftSubmitting||r.draftEstablishing)return{};t=!0;let i=e?RU({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return oW(iW(),{draft:a}),{newSessionDraft:a}}),!t)return!1;await new Promise(e=>setTimeout(e,0));let n=$.getState().newSessionDraft;return n.open===!0&&n.draftEstablishing===!0}function mW(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return oW(iW(),{draft:n}),{newSessionDraft:n}})}async function hW(e){let t=null,n=null,r=null;if($.setState(i=>{let a=i.newSessionDraft;if(!a?.open||a.draftSubmitting||!a.draftID)return{};let o=(a.submissionToken??0)+1,s={...a,draftSubmitting:!0,draftEstablishing:!1,submissionToken:o,...e?{pendingUserMessage:e}:{}};return r=iW(),t=s.draftID,n=o,oW(r,{draft:s}),{newSessionDraft:s}}),!t||n===null||!r)return null;await new Promise(e=>setTimeout(e,0));let i=$.getState().newSessionDraft;if(!i.open||i.draftSubmitting!==!0||i.draftID!==t||i.submissionToken!==n)return null;let a=Or.getState().captureDraftRuntime(),o=S(a,t),s=Or.getState().getDraft(o);return{token:n,draftID:t,draft:aW(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function gW(e){$.setState(t=>{let n=t.newSessionDraft;if(fW(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=rW.get(e.runtimeMemoryKey);return r&&dW(r.draft,e)&&oW(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=rW.get(e.runtimeMemoryKey);t&&dW(t.draft,e)&&oW(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function _W(e){let t=rW.get(e.runtimeMemoryKey);t&&dW(t.draft,e)&&oW(e.runtimeMemoryKey,{draft:{...eW}})}async function vW(e,t,n){if(!e.source)return null;let r;try{r=await Or.getState().finalizeDraftOwnership({source:e.source.key,destination:C(e.runtime,t),expectedSourceRevision:e.source.revision,disposition:n,runtime:e.runtime})}catch{return console.warn(`[session-ui-store] draft ownership finalization rejected`,{disposition:n,sessionID:t,draftID:e.draftID}),null}return r.status!==`committed`&&console.warn(`[session-ui-store] draft ownership finalization did not commit`,{status:r.status,disposition:n,sessionID:t,draftID:e.draftID}),r}function yW(e,t){let n=t??e.directory??null;n&&Ed(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function bW(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=_(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!fW(l,r);yW(e,c);let f=Gf.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&lO.getState().addSessionToFolder(t,a,e.id)}return d||(JU({projectId:o??null,directory:c}),$U(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),Jo.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(Jo.getState().saveSessionAgentSelection(e.id,p),Jo.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),Jo.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),lW(c,$.getState().availableWorktreesByProject),u&&et(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>pM);return{usePermissionStore:e}},void 0).then(({usePermissionStore:t})=>t.getState().setSessionAutoAccept(e.id,!0)).catch(e=>{console.warn(`Failed to apply draft permission auto-accept to new session:`,e)})),d&&r&&_W(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function xW(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await yO(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await cW(t,n);let r=t??z.getDirectory();return{directory:_(r),projectId:n}}async function SW(e,t){let n=await hW(t);if(!n)return null;let{draft:r}=n,i=typeof e.agent==`string`&&e.agent.trim().length>0?e.agent.trim():void 0;try{let{directory:a}=await xW(r),o=a??z.getDirectory(),s=await kS(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&oC({sessionId:s.id,messageID:t.info.id,content:``,providerID:e.providerID,modelID:e.modelID,agent:i,directory:a??s.directory??null,parts:t.parts}),{materialized:await bW(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return gW(n),null}}async function CW(e){let t=await SW(e);return t?(await vW(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var wW=2,TW=300;async function EW(e){let{useI18nStore:t,formatMessage:n}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DQY8Fkb0.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:r}=t.getState();return Error(n(r,e))}async function DW(e){let{content:t,providerID:n,modelID:r,agent:i,agentMentionName:a,variant:o,attachments:s,additionalParts:c,onSessionReady:l}=e,u=$.getState().newSessionDraft,d=typeof i==`string`&&i.trim().length>0?i.trim():void 0,f=Gf.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??ge(`msg`),h=RU({messageID:m,sessionID:`draft:pending`,providerID:n,modelID:r,agent:p,text:t,attachments:s,additionalParts:u.syntheticParts?.length?[...c||[],...u.syntheticParts]:c,agentMentionName:a}),g=await hW(h);if(!g)throw await EW(`chat.chatInput.toast.messageSendFailed`);let{draft:_}=g;try{let e=s?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))??[],i=(_.syntheticParts?.length?[...c||[],..._.syntheticParts]:c)?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))})),u=a?[{name:a}]:void 0,{directory:d}=await xW(_),f=await z.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=Te()?.conversations;if(!v?.createWithPrompt)throw await EW(`chat.chatInput.toast.messageSendFailed`);let y=d??z.getDirectory()??``,b=Gx(y,{bootstrap:!1}),x=()=>uW(Or.getState().captureDraftRuntime(),g.runtime),S;for(let e=0;e<=wW;e++){e>0&&await new Promise(e=>setTimeout(e,TW));try{if(S=await v.createWithPrompt({input:{type:`prompt`},directory:y,..._.title?{title:_.title}:{},..._.parentID?{parentID:_.parentID}:{},messageID:m,model:{providerID:n,modelID:r},...p?{agent:p}:{},...o?{variant:o}:{},parts:f}),!S||S.ok||S.phase!==`unavailable`||(S=void 0,e===wW))break}catch{if(e===wW)break}}if(!S)throw gW(g),Or.getState().setPendingInputText(t,`replace`),await EW(`chat.chatInput.toast.messageSendFailed`);if(S.ok){let e=S.session,t=d??e.directory??null,i=t??y;yW(e,t);let a=i===y?b:Gx(i,{bootstrap:!1});BU(e.id,h);let s=await bW(e,{providerID:n,modelID:r,agent:p,variant:o},{directory:t,agent:p,draftProjectId:_.selectedProjectId,targetFolderId:_.targetFolderId,draftSyntheticParts:_.syntheticParts},g);{let t=a.getState();Object.prototype.hasOwnProperty.call(t.session_status??{},e.id)||a.setState({session_status:{...t.session_status,[e.id]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.id]:Date.now()}})}await vW(g,e.id,`consume`),HU(e.id,m),s.selected&&IC(e.id),hC({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:x}).then(t=>{t===`missing`&&console.warn(`[combined] sent user message never materialized`,{sessionId:e.id,messageID:m,directory:i})}).catch(t=>{console.warn(`[combined] sent user message presence check failed`,{sessionId:e.id,messageID:m,directory:i,error:t instanceof Error?t.message:String(t)})}),l?.(e.id,t);return}if(!S.ok){let e=S.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw gW(g),Or.getState().setPendingInputText(t,`replace`),await EW(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=S,i=e.session,a=d??i.directory??null,s=await bW(i,{providerID:n,modelID:r,agent:p,variant:o},{directory:a,agent:p,draftProjectId:_.selectedProjectId,targetFolderId:_.targetFolderId,draftSyntheticParts:_.syntheticParts},g);if(e.ambiguous){let e=await cC(i.id,m,a,{isCurrent:x});if(e&&x()){await vW(g,i.id,`consume`),HU(i.id,m),s.selected&&IC(i.id),lC(Gx(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await vW(g,i.id,`preserve`),Or.getState().setPendingInputText(t,`replace`),await EW(`chat.chatInput.toast.sendStatusUnknown`)}throw await vW(g,i.id,`preserve`),Or.getState().setPendingInputText(t,`replace`),await EW(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw gW(g),e}}var OW=`oc.worktreeMap`,kW=()=>{try{let e=f().getItem(OW);if(!e)return new Map;let t=JSON.parse(e);return Array.isArray(t)?new Map(t.filter(e=>Array.isArray(e)&&typeof e[0]==`string`&&Array.isArray(e[1]))):new Map}catch{return new Map}},AW=e=>{try{f().setItem(OW,e)}catch{}},jW=e=>{let t=[];for(let n of e.values())t.push(...n);return t},MW=kW(),$=Oe()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...eW},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:jW(MW),availableWorktreesByProject:MW,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,sessionPlanAvailable:new Map,pendingChangesBarDismissed:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map,clearRetainedPendingUserMessages:(t,n)=>{!t||n.length===0||e(e=>{let r=e.retainedPendingUserMessages.get(t);if(!r?.length)return e;let i=new Set(n),a=r.filter(e=>!i.has(e.info.id));if(a.length===r.length)return e;let o=new Map(e.retainedPendingUserMessages);return a.length===0?o.delete(t):o.set(t,a),{retainedPendingUserMessages:o}})},clearStagedMessageEdit:t=>{e(e=>!e.stagedMessageEdit||t&&e.stagedMessageEdit.sessionId!==t?e:{stagedMessageEdit:null})},beginMessageEditCommit:(t,n)=>{e({messageEditCommitting:{sessionId:t,messageId:n}})},endMessageEditCommit:(t,n)=>{e(e=>{let r=e.messageEditCommitting;return!r||r.sessionId!==t||r.messageId!==n?e:{messageEditCommitting:null}})},markMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)===n)return e;let r=new Map(e.pendingSendMessageIDs);return r.set(t,n),{pendingSendMessageIDs:r}})},clearMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)!==n)return e;let r=new Map(e.pendingSendMessageIDs);return r.delete(t),{pendingSendMessageIDs:r}})},setCurrentSession:(n,r,a)=>{PU(n),b(n);let o=t().currentSessionId,s=t().currentSessionDirectory;o!==n&&(kU(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Or.getState().setActiveAttachmentDraft(n?C({transportIdentity:i()},n):null);let c=iW();tW.set(c,n);let l=Pe.getState(),u=ZU(n,e=>t().worktreeMetadata.get(e)),d=z.getDirectory()??l.currentDirectory??null,f=(r?_(r):null)??u??d,p=Ci.getState(),h=f?Qo(p.projects,t().availableWorktreesByProject,f):null;e({currentSessionId:n,currentSessionDirectory:n?f??null:null}),oW(c,{sessionId:n,directory:f??null}),o!==n&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:o,previousDirectory:s,nextSessionId:n,nextDirectory:n?f??null:null}),n&&NC(n,f);try{f&&l.currentDirectory!==f&&l.setDirectory(f,{showOverlay:!1}),h&&a?.preserveActiveProject!==!0&&p.activeProjectId!==h.id&&p.setActiveProjectIdOnly(h.id),z.setDirectory(f??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(o&&o!==n){let e=o;setTimeout(()=>{if(!dU(e)?.isStreaming){let t=Id(e);t.length>0&&fU.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(mA(n),rP(f??``,n))},prepareForRuntimeSwitch:n=>{let r=iW(n),i=Pe.getState().currentDirectory||null,a=t().currentSessionId,o=i?Od(i):null;LM({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),tW.set(r,t().currentSessionId),oW(r,{sessionId:a,directory:i,draft:aW(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=iW(t),r=rW.get(n),a=r?.sessionId??tW.get(n)??null;b(a);let o=r?.draft?aW(r.draft):{...eW},s=r?.directory??null;s&&Pe.getState().setDirectory(s,{showOverlay:!1}),e({currentSessionId:a,currentSessionDirectory:a?s:null,newSessionDraft:a?{...eW}:o,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,sessionAbortFlags:new Map,queueAbortBlocks:new Map,pendingChangesBarDismissed:new Map,retainedPendingUserMessages:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map}),Or.getState().setActiveAttachmentDraft(a?C({transportIdentity:i()},a):o.open&&o.draftID?S({transportIdentity:i()},o.draftID):null),a?rP(s??z.getDirectory()??``,a):rP(``,``)},openNewSessionDraft:n=>{if(TI.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let a=Ci.getState(),o=a.projects,s=t().availableWorktreesByProject,c=_(t().currentSessionDirectory??null),l=_(Pe.getState().currentDirectory??null),u=qU(),d=n?.directoryOverride===void 0?null:_(n.directoryOverride),f=YU(o,s,d),p=n?.ensureProjectForDirectory&&d&&!f?a.addProject(d):null;p&&(a=Ci.getState());let h=a.projects,g=a.getActiveProject(),v=n?.selectedProjectId?h.find(e=>e.id===n.selectedProjectId)??null:null,y=g||(a.activeProjectId?h.find(e=>e.id===a.activeProjectId)??null:h[0]??null),x=u?.projectId?h.find(e=>e.id===u.projectId)??null:null,C=YU(h,s,u?.directory??null),w=YU(h,s,c),T=YU(h,s,l),E=v||(d===null?w||(l?T:C??x??y):p??f),D=d===null?v?_(v.path??null):c||l||(u?.directory?u.directory:_(E?.path??null)):d;JU({projectId:E?.id??null,directory:D}),E&&a.activeProjectId!==E.id&&a.setActiveProjectIdOnly(E.id);let O=le({projectId:E?.id??null,directory:D}),k=S({transportIdentity:i()},O),A=Or.getState().getDraft(k),j={open:!0,draftID:O,selectedProjectId:E?.id??null,directoryOverride:D,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:_(n?.bootstrapPendingDirectory??null),preserveDirectoryOverride:n?.preserveDirectoryOverride===!0,parentID:n?.parentID??null,title:n?.title,initialPrompt:n?.initialPrompt,syntheticParts:n?.syntheticParts,targetFolderId:n?.targetFolderId,submissionToken:r.open&&r.draftID===O?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},ee=t().currentSessionId,te=t().currentSessionDirectory;e({newSessionDraft:{...j},currentSessionId:null,currentSessionDirectory:null,error:null}),b(null),m.getState().setActiveMainTab(`chat`),ee&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:ee,previousDirectory:te,nextSessionId:null,nextDirectory:null}),oW(iW(),{sessionId:null,directory:D,draft:j}),Or.getState().setActiveAttachmentDraft(k),A||Or.getState().clearAttachedFiles(),n?.initialPrompt&&Or.getState().setPendingInputText(n.initialPrompt);let M=_(E?.path??null)??D,ne=E?_(M):null,re=j.draftID,ie=i();$U(M,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=_(Gf.getState().activeDirectoryKey);!e.open||e.draftID!==re||i()!==ie||!ne||n!==ne||Gf.getState().applyDefaultModelAgentSelection({projectDefaultModel:E?.defaultModel})}),D&&D!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(D)},closeNewSessionDraft:()=>{let t={open:!1,draftID:null,selectedProjectId:null,directoryOverride:null,pendingWorktreeRequestId:null,bootstrapPendingDirectory:null,preserveDirectoryOverride:!1,parentID:null,title:void 0,initialPrompt:void 0,syntheticParts:void 0,targetFolderId:void 0,draftSubmitting:!1,draftEstablishing:!1};e({newSessionDraft:t}),oW(iW(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=_(t.directoryOverride??e.newSessionDraft.directoryOverride);let i=n?.force===!0;return{newSessionDraft:{...e.newSessionDraft,selectedProjectId:t.projectId??t.selectedProjectId??e.newSessionDraft.selectedProjectId,directoryOverride:t.directoryOverride??e.newSessionDraft.directoryOverride,...i?{bootstrapPendingDirectory:null,preserveDirectoryOverride:!1}:{}}}}),$U(r,{source:`setNewSessionDraftTarget`}),r&&r!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(r)},setDraftPreserveDirectoryOverride:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,preserveDirectoryOverride:t}}:e),setDraftPermissionAutoAcceptEnabled:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,permissionAutoAcceptEnabled:t}}:e),acknowledgeSessionAbort:t=>e(e=>{let n=new Map(e.sessionAbortFlags),r=n.get(t);return r&&n.set(t,{...r,acknowledged:!0}),{sessionAbortFlags:n}}),beginQueueAbortBlock:(t,n=LU)=>{let r=fe(),i=D(t);return e(e=>{let a=new Map(e.queueAbortBlocks);return a.set(i,{token:r,expiresAt:Date.now()+n,directory:t.directory,sessionID:t.sessionID}),{queueAbortBlocks:a}}),r},clearQueueAbortBlock:(t,n)=>e(e=>{let r=D(t);if(e.queueAbortBlocks.get(r)?.token!==n)return e;let i=new Map(e.queueAbortBlocks);return i.delete(r),{queueAbortBlocks:i}}),pruneQueueAbortBlocks:(t=Date.now())=>e(e=>{let n;for(let[r,i]of e.queueAbortBlocks)i.expiresAt>t||(n||=new Map(e.queueAbortBlocks),n.delete(r));return n?{queueAbortBlocks:n}:e}),releaseQueueAbortBlocksForServerIdle:(t,n)=>e(e=>{let r,i=Date.now();for(let[a,o]of e.queueAbortBlocks)o.directory===t&&o.sessionID===n&&(o.expiresAt<=i||(r||=new Map(e.queueAbortBlocks),r.delete(a)));return r?{queueAbortBlocks:r}:e}),clearAbortPrompt:()=>e({abortPromptSessionId:null,abortPromptExpiresAt:null}),armAbortPrompt:(n=5e3)=>{let{currentSessionId:r}=t();if(!r)return null;let i=Date.now()+n;return e({abortPromptSessionId:r,abortPromptExpiresAt:i}),i},clearError:()=>e({error:null}),markSessionAsOpenChamberCreated:t=>e(e=>{let n=new Set(e.webUICreatedSessions);return n.add(t),{webUICreatedSessions:n}}),isOpenChamberCreatedSession:e=>t().webUICreatedSessions.has(e),getContextUsage:(e,n)=>{if(t().newSessionDraft?.open)return null;let r=t().currentSessionId;if(!r)return null;let i=Id(r);if(i.length===0)return null;let a=sA(i,e=>Ld(e));if(!a||`compacted`in a)return null;let o=a.tokens,s=a.totalTokens,c=e>0?e:2e5,l=e>0?Math.round(s/e*100):0,u=n>0?Math.round(rA(o.output)/n*100):void 0;return{totalTokens:s,percentage:l,contextLimit:e||0,outputLimit:n||void 0,normalizedOutput:u,thresholdLimit:c,lastMessageId:a.messageId}},initializeNewOpenChamberSession:()=>{},setWorktreeMetadata:(t,n)=>{n?pU.getState().setAttachment(t,{worktreeRoot:n.worktreeRoot??n.path??null,cwd:n.path??null,branch:n.branch??null,headState:n.headState??(n.branch?`branch`:`detached`),worktreeStatus:n.worktreeStatus??`ready`,worktreeSource:n.worktreeSource??null,legacy:!1,degraded:!1}):pU.getState().clearAttachment(t),e(e=>{let r=new Map(e.worktreeMetadata);return n?r.set(t,n):r.delete(t),{worktreeMetadata:r}})},overrideNewSessionDraftTarget:t=>{let n=null;e(e=>{let r={...e.newSessionDraft,...t};return n=_(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),$U(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(n)},resolvePendingDraftWorktreeTarget:(t,n,r)=>e(e=>!e.newSessionDraft?.open||e.newSessionDraft.pendingWorktreeRequestId!==t?e:{newSessionDraft:{...e.newSessionDraft,selectedProjectId:r?.projectId??e.newSessionDraft.selectedProjectId??null,directoryOverride:_(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:_(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:_(t)}}:e),setPendingDraftWorktreeRequest:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,pendingWorktreeRequestId:t}}:e),getWorktreeMetadata:e=>t().worktreeMetadata.get(e),dismissPendingChangesBar:(n,r)=>{let i=new Map(t().pendingChangesBarDismissed);r===null?i.delete(n):i.set(n,r),e({pendingChangesBarDismissed:i})},sendMessage:async(n,r,i,a,o,s,c,l,u,d)=>{let f=t().stagedMessageEdit,p=d?.sessionId??t().currentSessionId,h=d?.commitStagedMessageEdit&&f&&f.sessionId===p?f:null,g=d?.sessionId??t().currentSessionId;if(g){let n=new Map(t().pendingChangesBarDismissed);n.delete(g),e({pendingChangesBarDismissed:n})}let v=t().newSessionDraft,y=typeof a==`string`&&a.trim().length>0?a.trim():void 0,b=u!==`shell`&&n.trim().length>0?EI.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=m.getState(),t=lU(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let S=(e,t)=>{if(!x)return;let r=m.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;rU(e,t??void 0,{objective:a,tokenBudget:i},null).catch(e=>{console.warn(`[session-ui-store] failed to set goal from armed send`,e)})};if(!d?.sessionId&&v?.open){if(u!==`shell`&&!n.trimStart().startsWith(`/`)&&!d?.delivery&&Te()?.conversations?.createWithPrompt){await DW({content:n,providerID:r,modelID:i,agent:y,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:d?.messageID,onSessionReady:S});return}let e=d?.messageID??v.pendingUserMessage?.info.id??ge(`msg`),a=RU({messageID:e,sessionID:`draft:pending`,providerID:r,modelID:i,agent:y,text:n,attachments:o,additionalParts:v.syntheticParts?.length?[...c||[],...v.syntheticParts]:c,agentMentionName:s}),f=await SW({providerID:r,modelID:i,agent:y,variant:l},a);if(!f)throw Error(`Failed to create session`);let{materialized:p,claim:m}=f,h=p.syntheticParts?.length?[...c||[],...p.syntheticParts]:c;IC(p.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await VU({sessionId:p.sessionId,directory:p.directory,content:n,providerID:r,modelID:i,agent:p.agent,agentMentionName:s,variant:l,inputMode:u,files:g,delivery:d?.delivery,messageID:e,optimisticParts:a.parts,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:h?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))}),await vW(m,p.sessionId,`consume`)}catch(e){throw await vW(m,p.sessionId,`preserve`),e}lW(p.directory,t().availableWorktreesByProject),S(p.sessionId,p.directory);return}let C=d?.sessionId??t().currentSessionId,w=C?Jo.getState().getSessionAgentSelection(C):null,T=Gf.getState().currentAgentName,E=y||w||T||void 0;if(C&&Jo.getState().saveSessionModelSelection(C,r,i),C&&E&&(Jo.getState().saveSessionAgentSelection(C,E),Jo.getState().saveAgentModelForSession(C,E,r,i),Jo.getState().saveAgentModelVariantForSession(C,E,r,i,l)),C){let e=fU.getState(),t=dU(C);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(uU(C),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),fU.setState({sessionMemoryState:n})}}let D=C?_(d?.directoryHint)??_(t().getDirectoryForSession(C)):null;C&&IC(C);let O=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(h)try{await DC(h.sessionId,h.messageId,{directory:D??void 0}),t().stagedMessageEdit===h&&e({stagedMessageEdit:null})}catch(e){throw t().endMessageEditCommit(h.sessionId,h.messageId),e}try{await VU({sessionId:C||``,directory:D,content:n,providerID:r,modelID:i,agent:E,agentMentionName:s,variant:l,inputMode:u,files:O,delivery:d?.delivery,messageID:d?.messageID,ticket:d?.ticket,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:c?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))})}finally{h&&t().endMessageEditCommit(h.sessionId,h.messageId)}lW(D,t().availableWorktreesByProject),C&&S(C,D)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await kS(n,r??z.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),oW(iW(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&lO.getState().addSessionToFolder(e,s,o.id)}return o}catch(n){return console.error(`[session-ui-store] createSession failed`,n),c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),oW(iW(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>HS(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await HS(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>GS(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await GS(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await qS(e,t)},requestSessionSmartTitle:async e=>{await JS(e)},shareSession:async e=>YS(e),unshareSession:async e=>XS(e),revertToMessage:async(e,t,n)=>{await xC(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await CC(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Id(e),r=Md().find(t=>t.id===e)?.revert?.messageID,i=ps(n,r);if(!i)return;let a=Ld(i.id).find(e=>e.type===`text`),o=a?.text?String(a.text).slice(0,50)+(a.text.length>50?`...`:``):`[No text]`;await t().revertToMessage(e,i.id);let{toast:s}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:c,formatMessage:l}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DQY8Fkb0.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:u}=c.getState();s.success(l(u,`chat.revert.toast.undo`,{preview:o}))},handleSlashRedo:async(e,n)=>{if(n?.fullUnrevert){let{unrevertSession:t}=await et(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>lx);return{unrevertSession:e}},void 0);await t(e);let{toast:n}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:i}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DQY8Fkb0.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:a}=r.getState();n.success(i(a,`chat.revert.toast.restored`));return}let r=Md().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=ms(Id(e),r);if(i){await t().revertToMessage(e,i.id,{skipRedoPush:!0});let{toast:n}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:a}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DQY8Fkb0.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:o}=r.getState();n.success(a(o,`chat.revert.toast.redo`));return}await AC(e);let{toast:a}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:o,formatMessage:s}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DQY8Fkb0.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:c}=o.getState();a.success(s(c,`chat.revert.toast.restored`))},forkFromMessage:async(n,r,i)=>{let a=t().forkTransition;if(a?.operationId,a?.stage,a){console.warn(`[session-fork] forkFromMessage skipped because a transition is active`,{sessionId:n,messageId:r,activeOperationId:a.operationId,activeSourceSessionId:a.sourceSessionId,activeStage:a.stage});return}let o=QU(n),s=++nW;try{let a=i?.directory??t().getDirectoryForSession(n)??z.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:s,sourceSessionId:n,targetSessionId:null,directory:a,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await jC(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));c.success(`Forked from ${o?.title??`session`}`)}catch(e){console.error(`[session-fork] forkFromMessage failed`,{operationId:s,sessionId:n,messageId:r,error:e});let{toast:t}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===s?{forkTransition:null}:e)}},forkCurrentSession:async n=>{let r=t().forkTransition;if(r?.operationId,r?.stage,r){console.warn(`[session-fork] forkCurrentSession skipped because a transition is active`,{sessionId:n,activeOperationId:r.operationId,activeSourceSessionId:r.sourceSessionId,activeStage:r.stage});return}let i=QU(n),a=++nW;try{let r=t().getDirectoryForSession(n)??z.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:a,sourceSessionId:n,targetSessionId:null,directory:r,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await jC(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));o.success(`Forked from ${i?.title??`session`}`)}catch(e){console.error(`[session-fork] forkCurrentSession failed`,{operationId:a,sessionId:n,error:e});let{toast:t}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===a?{forkTransition:null}:e)}},getSessionsByDirectory:e=>{let t=_(e);return t?Nd().filter(e=>WU(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=ZU(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=Y.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?QE(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:ZU(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Id(e,t().getDirectoryForSession(e)??void 0);for(let e=n.length-1;e>=0;--e){let t=n[e];if(t.role!==`user`)continue;let r=typeof t.model?.providerID==`string`&&t.model.providerID.trim().length>0?t.model.providerID:void 0,i=typeof t.model?.modelID==`string`&&t.model.modelID.trim().length>0?t.model.modelID:void 0,a=typeof t.agent==`string`&&t.agent.trim().length>0?t.agent:typeof t.mode==`string`&&t.mode.trim().length>0?t.mode:void 0,o=t.model?.variant??t.variant,s=typeof o==`string`&&o.trim().length>0?o:void 0;return{id:typeof t.id==`string`?t.id:void 0,agent:a,providerID:r,modelID:i,variant:s}}return null},getCurrentAgent:e=>Jo.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Id(e);Md().find(t=>t.id===e),`${e}`,t.length,t.map(e=>({id:e.id,role:e.role,tokens:e.role===`assistant`?e.tokens:void 0}))},pollForTokenUpdates:()=>{},setSessionDirectory:(n,r)=>{let i=_(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),oW(iW(),{sessionId:n,directory:i}))},markSessionPlanAvailable:t=>{e(e=>{if(e.sessionPlanAvailable.get(t)===!0)return e;let n=new Map(e.sessionPlanAvailable);return n.set(t,!0),{sessionPlanAvailable:n}})},isSessionPlanAvailable:e=>t().sessionPlanAvailable.get(e)??!1}));AM((e,t)=>{$.getState().setCurrentSession(e,t)});var NW=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==NW&&(NW=t,AW(t))}});function PW(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function FW(e){return e.length>1?e.slice(0,-1):[]}function IW(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function LW(e,t){let n=e.at(-1);if(!n||n.sessionId===t.sessionId)return e;let r=e.at(-2);return r?.sessionId===t.sessionId?r.directory===t.directory?e:[...e.slice(0,-2),t,n]:e.length===1?[t,n]:e}var RW={activeTab:`projects`,secondary:null},zW=0,BW=null,VW=e=>{let t=++zW;return BW={generation:t,sessionId:e.sessionId,directory:_(e.directory)??null},t},HW=e=>{let t=BW;return t&&t.generation===zW&&t.sessionId===e.sessionId&&t.directory===(_(e.directory)??null)?(BW=null,`internal`):(BW=null,`external`)},UW=()=>{zW+=1,BW=null},WW=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&_(n)===_(e.directory)?UW():VW(e),t.setCurrentSession(e.sessionId,e.directory??null,{preserveActiveProject:e.preserveActiveProject})},GW=Oe(e=>({...RW,setActiveTab:t=>{UW(),e({activeTab:t,secondary:null})},openSession:t=>{e({secondary:{kind:`chat`,routes:[qW(t,`root`)]}}),WW(t)},pushSession:t=>{e(e=>{let n=qW(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?PW(e.secondary.routes,n):[n]}}}),WW(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=FW(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=GW.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&WW(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=LW(e.secondary.routes,qW(t,`parent`));return n===e.secondary.routes?e:{secondary:{kind:`chat`,routes:n}}}),replaceChatSession:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=e.secondary.routes.at(-1);return n?.sessionId===t.sessionId&&n.directory===(t.directory??null)?e:{secondary:{kind:`chat`,routes:IW(e.secondary.routes,qW(t,`root`))}}}),materializeDraftSession:t=>e(e=>e.secondary?.kind===`draft`?{secondary:{kind:`chat`,routes:[{key:`chat-primary`,sessionId:t.sessionId,directory:t.directory??null}]}}:e),openDraft:t=>{UW(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{UW(),mt.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{UW(),e({secondary:{kind:`instances`}})},closeSecondary:()=>{UW(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{UW(),e({...RW})}})),KW=1,qW=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${KW++}`,sessionId:e.sessionId,directory:e.directory??null}),JW=e=>!Ge()||Ke()?!1:(GW.getState().pushSession(e),!0);export{UB as $,Io as $a,Fp as $i,IO as $n,Vx as $r,dI as $t,JH as A,W as Aa,s_ as Ai,hA as An,Vr as Ao,Iw as Ar,SI as At,cV as B,os as Ba,Vm as Bi,Zk as Bn,tC as Br,fN as Bt,uU as C,gu as Ca,x_ as Ci,qj as Cn,Ai as Co,UT as Cr,IL as Ct,iU as D,U as Da,__ as Di,QA as Dn,zr as Do,iT as Dr,wI as Dt,eU as E,Tu as Ea,v_ as Ei,XA as En,Ci as Eo,lT as Er,EI as Et,AH as F,ls as Fa,Rg as Fi,$k as Fn,Or as Fo,RC as Fr,IP as Ft,KB as G,Jo as Ga,rm as Gi,Wk as Gn,ES as Gr,uI as Gt,DV as H,Yo as Ha,Sm as Hi,Jk as Hn,DC as Hr,NF as Ht,cH as I,es as Ia,dg as Ii,Gk as In,Xt as Io,LC as Ir,rP as It,tV as J,Bo as Ja,Ip as Ji,tA as Jn,_C as Jr,AF as Jt,rV as K,Wo as Ka,nm as Ki,zk as Kn,yC as Kr,cN as Kt,jH as L,cs as La,ug as Li,Hk as Ln,Qt as Lo,FS as Lr,aP as Lt,KH as M,nu as Ma,i_ as Mi,sA as Mn,jr as Mo,ww as Mr,tF as Mt,lH as N,Ks as Na,zg as Ni,ek as Nn,Mr as No,Cw as Nr,tI as Nt,aU as O,wu as Oa,g_ as Oi,mA as On,Hr as Oo,cT as Or,xI as Ot,dH as P,fs as Pa,Lg as Pi,Xk as Pn,Ar as Po,Sw as Pr,JF as Pt,XB as Q,Po as Qa,Mp as Qi,zO as Qn,US as Qr,PF as Qt,$V as R,ns as Ra,rh as Ri,Rk as Rn,Zt as Ro,gC as Rr,iP as Rt,fU as S,H as Sa,C_ as Si,Jj as Sn,ki as So,VT as Sr,AL as St,oU as T,Ou as Ta,w_ as Ti,ZA as Tn,Oi as To,ET as Tr,iL as Tt,qV as U,Xo as Ua,vm as Ui,eA as Un,kS as Ur,nF as Ut,uV as V,$o as Va,km as Vi,Pk as Vn,WS as Vr,IF as Vt,nV as W,Qo as Wa,im as Wi,Uk as Wn,bC as Wr,rF as Wt,qB as X,Ro as Xa,Ap as Xi,BO as Xn,xC as Xr,kF as Xt,iV as Y,Uo as Ya,Op as Yi,LO as Yn,vC as Yr,OF as Yt,YB as Z,Lo as Za,kp as Zi,VO as Zn,rC as Zr,jF as Zt,hU as _,Qu as _a,Wv as _i,OM as _n,Oa as _o,Y as _r,Lz as _t,mW as a,xf as aa,Yb as ai,uF as an,po as ao,_O as ar,DB as at,pU as b,Su as ba,Sv as bi,_M as bn,ha as bo,QT as br,KL as bt,VU as c,Nd as ca,Iy as ci,dF as cn,Wa as co,TD as cr,CB as ct,FU as d,Ld as da,Bv as di,iI as dn,Aa as do,eD as dr,tB as dt,Pp as ea,CC as ei,nI as en,no as eo,JO as er,WB as et,IU as f,Md as fa,qv as fi,rI as fn,Fa as fo,jD as fr,Gz as ft,vU as g,nd as ga,Lv as gi,DM as gn,ka as go,kD as gr,Fz as gt,AU as h,Gu as ha,Gv as hi,aI as hn,Sa as ho,DD as hr,Vz as ht,pW as i,Zf as ia,cx as ii,sF as in,bo as io,vO as ir,EB as it,qH as j,tu as ja,o_ as ji,rA as jn,Br as jo,pw as jr,TI as jt,UH as k,hu as ka,a_ as ki,fA as kn,Rr as ko,aT as kr,CI as kt,$ as l,Dd as la,Ty as li,pF as ln,Ja as lo,ED as lr,TB as lt,jU as m,Fd as ma,Uv as mi,FF as mn,Na as mo,QE as mr,Yz as mt,JW as n,cp as na,qS as ni,sI as nn,to as no,YO as nr,VB as nt,RU as o,Gf as oa,Kb as oi,_F as on,Ya as oo,ND as or,NB as ot,kU as p,Ed as pa,Kv as pi,bF as pn,Pa as po,OD as pr,zz as pt,aV as q,Ho as qa,Kp as qi,Vk as qn,JS as qr,sN as qt,GW as r,ep as ra,lS as ri,oF as rn,yo as ro,gO as rr,LB as rt,CW as s,Pd as sa,Nb as si,yF as sn,Xa as so,lO as sr,MB as st,HW as t,Np as ta,KS as ti,cF as tn,eo as to,FO as tr,HB as tt,PU as u,Id as ua,Zv as ui,hF as un,ba as uo,MD as ur,fB as ut,_U as v,xu as va,vv as vi,CM as vn,_a as vo,fE as vr,Cz as vt,lU as w,Eu as wa,D_ as wi,lj as wn,Ti as wo,KT as wr,LL as wt,dU as x,Du as xa,S_ as xi,fM as xn,ga as xo,zT as xr,X as xt,gU as y,Cu as ya,ev as yi,vM as yn,ma as yo,pE as yr,WL as yt,WV as z,ts as za,Km as zi,Bk as zn,Kt as zo,GS as zr,hN as zt};