@openchambery/web 1.19.17-beta.2 → 1.19.17-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/AgentAvatar-CUDJ3_nZ.js +1 -0
- package/dist/assets/AssistantView-CDXE0eTS.js +3 -0
- package/dist/assets/DiagramView-BrRV4o5T.js +1 -0
- package/dist/assets/FadeInOnReveal-BLSnyG2Z.js +1 -0
- package/dist/assets/Icon-C9ZHbwqp.js +1 -0
- package/dist/assets/MarkdownRenderer-CAdfUgV1.js +2 -0
- package/dist/assets/{MarkdownRendererImpl-BJd1Vjsc.js → MarkdownRendererImpl-D2dIlX0h.js} +2 -2
- package/dist/assets/MarkstreamRendererImpl-Drb2Tpv-.js +3 -0
- package/dist/assets/MobileDetailNavigation-BgCoDqtp.js +1 -0
- package/dist/assets/MobileShareBridge-ZlVURYWR.js +4 -0
- package/dist/assets/MobileSurface-DhLOTW0-.js +2 -0
- package/dist/assets/MultiRunWindow-BCvcwItK.js +1 -0
- package/dist/assets/OnboardingScreen-DSyZtiFS.js +1 -0
- package/dist/assets/OverlayScrollbar-C7fAOAKT.js +2 -0
- package/dist/assets/SettingsView-D57amZJb.js +25 -0
- package/dist/assets/SettingsWindow-B5DqLCkD.js +1 -0
- package/dist/assets/TerminalView-2_RFPaVs.js +8 -0
- package/dist/assets/{ToolOutputDialog-BQ_oXyS_.js → ToolOutputDialog-CQs_7KYT.js} +4 -4
- package/dist/assets/{appThemeRegistry-BDrIDWKH.js → appThemeRegistry-DpLe_jnW.js} +1 -1
- package/dist/assets/button-bhVnVYB_.js +1 -0
- package/dist/assets/collapsible-CoWJB_Zl.js +1 -0
- package/dist/assets/context-menu-gSO0b3sQ.js +1 -0
- package/dist/assets/diagram-Dx4UOZUn.js +1 -0
- package/dist/assets/dialog-C2Dw0yqA.js +1 -0
- package/dist/assets/{es-BQb6I8gl.js → es-Bxd4Lyu9.js} +2 -2
- package/dist/assets/{fileMentionTouchSelection-DzdgAvGS.js → fileMentionTouchSelection-CmQthb6Q.js} +2 -2
- package/dist/assets/{fr-BjGouC_l.js → fr-DiLDwVZs.js} +2 -2
- package/dist/assets/{gitApi-pLkl_IyQ.js → gitApi-8HxdR1zx.js} +3 -3
- package/dist/assets/input-8Te_vPwB.js +1 -0
- package/dist/assets/insertionBoundaries-Cdv9-1Bg.js +1 -0
- package/dist/assets/{ja-Cw9zliYY.js → ja-CWRlmEJM.js} +2 -2
- package/dist/assets/{ko-Dyz0Dk9b.js → ko-DmIugkgj.js} +2 -2
- package/dist/assets/main-CQY7JUX4.js +169 -0
- package/dist/assets/main-Cfru2-qr.js +2 -0
- package/dist/assets/{markdownHeightCache-BL8CUQ0M.js → markdownHeightCache-CT2d4yTV.js} +1 -1
- package/dist/assets/miniChat-BphFgAb_.js +2 -0
- package/dist/assets/mobile-BVRPTuLT.js +2 -0
- package/dist/assets/multirun-CYdieVzW.js +4 -0
- package/dist/assets/{pl-C7EY-dTH.js → pl-BU9AmdUM.js} +2 -2
- package/dist/assets/projectMeta-D8hiy3Dk.js +3 -0
- package/dist/assets/{pt-BR-B1uHpjFW.js → pt-BR-DQmEF9QB.js} +2 -2
- package/dist/assets/renderElectronMiniChatApp-CVqd3Nmc.js +2 -0
- package/dist/assets/renderMobileApp-DgtCGRKP.js +28 -0
- package/dist/assets/{runtimeConfig-BD1Fo5N5.js → runtimeConfig-DXXOBrK_.js} +1 -1
- package/dist/assets/runtimeEndpointReset-bSVOt7pi.js +147 -0
- package/dist/assets/sessionChangeSummary-CfnRZ0gS.js +2 -0
- package/dist/assets/sessionLookup-BZuujM6l.js +1 -0
- package/dist/assets/sortable-tabs-strip-BmvLnn6O.js +1 -0
- package/dist/assets/src-C_Yn9Ylz.css +2 -0
- package/dist/assets/{store-ClnJdJSj.js → store-BoixGrYS.js} +3 -3
- package/dist/assets/textarea-DRL916s6.js +1 -0
- package/dist/assets/tooltip-BLznq5KR.js +1 -0
- package/dist/assets/{uk-DgG8v2md.js → uk-Dax66sAC.js} +2 -2
- package/dist/assets/{useAppFontEffects-CN_3Jty7.js → useAppFontEffects-DhEfjuPp.js} +43 -43
- package/dist/assets/useDesktopWindowControlsLayout-BhNFU2Wd.js +1 -0
- package/dist/assets/{useEffectiveDirectory-C5Gg7EvP.js → useEffectiveDirectory-BhhzFJgX.js} +1 -1
- package/dist/assets/useMobileNavigationStore-1jdHeA49.js +413 -0
- package/dist/assets/useSessionAutoCleanup-C8u2-jrO.js +2 -0
- package/dist/assets/{useWorkerHighlightedLines-BSQQkZaO.js → useWorkerHighlightedLines-DFXK66lA.js} +2 -2
- package/dist/assets/vendor-zod-Dzk5kdUU.js +39 -0
- package/dist/assets/{zh-CN-C6OFKjeT.js → zh-CN-Du4VC8Z0.js} +2 -2
- package/dist/assets/{zh-TW-BVP99aMr.js → zh-TW-C0bY-Dso.js} +2 -2
- package/dist/index.html +3 -3
- package/dist/mini-chat.html +3 -3
- package/dist/mobile.html +3 -3
- package/package.json +1 -1
- package/server/index.js +51 -0
- package/server/lib/opencode/DOCUMENTATION.md +1 -0
- package/server/lib/opencode/core-routes.js +2 -0
- package/server/lib/opencode/feature-routes-runtime.js +20 -0
- package/server/lib/opencode/feature-routes-runtime.test.js +10 -0
- package/server/lib/opencode/routes.js +14 -1
- package/server/lib/opencode/settings-helpers.js +3 -0
- package/server/lib/opencode/settings-helpers.test.js +12 -0
- package/server/lib/opencode/shutdown-runtime.js +2 -0
- package/server/lib/question-auto-delegate/DOCUMENTATION.md +124 -0
- package/server/lib/question-auto-delegate/core.d.ts +255 -0
- package/server/lib/question-auto-delegate/core.js +1372 -0
- package/server/lib/question-auto-delegate/core.test.js +672 -0
- package/server/lib/question-auto-delegate/routes.js +223 -0
- package/server/lib/question-auto-delegate/routes.test.js +180 -0
- package/server/lib/question-auto-delegate/runtime.js +243 -0
- package/server/lib/session-goal/DOCUMENTATION.md +12 -2
- package/server/lib/session-goal/runtime.js +138 -35
- package/server/lib/session-goal/runtime.test.js +192 -0
- package/dist/assets/AgentAvatar-m1jNq4bX.js +0 -1
- package/dist/assets/AssistantView-DZMTfY1i.js +0 -3
- package/dist/assets/DiagramView-Byf2evGV.js +0 -1
- package/dist/assets/FadeInOnReveal-UGwClbL_.js +0 -1
- package/dist/assets/Icon-D1BcR8Tz.js +0 -1
- package/dist/assets/MarkdownRenderer-YMePGw0Z.js +0 -2
- package/dist/assets/MarkstreamRendererImpl-2oZKPfgd.js +0 -3
- package/dist/assets/MobileDetailNavigation-BeNUCxzK.js +0 -1
- package/dist/assets/MobileShareBridge-3tBtXXJJ.js +0 -4
- package/dist/assets/MobileSurface-ppn0zIpb.js +0 -2
- package/dist/assets/MultiRunWindow-CItY5bZ2.js +0 -1
- package/dist/assets/OnboardingScreen-bIWeMLVx.js +0 -1
- package/dist/assets/OverlayScrollbar-Bahg_P3r.js +0 -2
- package/dist/assets/SettingsView-0-Yqdzh-.js +0 -25
- package/dist/assets/SettingsWindow-1jOWzU2A.js +0 -1
- package/dist/assets/TerminalView-BLOCPFz9.js +0 -8
- package/dist/assets/button-9R-WgVMl.js +0 -1
- package/dist/assets/clipboard-GUUNlWIv.js +0 -1
- package/dist/assets/collapsible-Bbz9KiJf.js +0 -1
- package/dist/assets/context-menu-CSyOhRz8.js +0 -1
- package/dist/assets/diagram-NdsZih8P.js +0 -1
- package/dist/assets/dialog-DhMGbF_B.js +0 -1
- package/dist/assets/input-Cd_1HyQv.js +0 -1
- package/dist/assets/insertionBoundaries-DJvMDCJJ.js +0 -1
- package/dist/assets/main-B8fZfA3K.js +0 -169
- package/dist/assets/main-BGpPyUV2.js +0 -2
- package/dist/assets/miniChat-DHjphqgR.js +0 -2
- package/dist/assets/mobile-DNMX4u7x.js +0 -2
- package/dist/assets/multirun-BINJ2LCE.js +0 -4
- package/dist/assets/projectMeta-BMkGWqtz.js +0 -3
- package/dist/assets/renderElectronMiniChatApp-BonR3p7C.js +0 -2
- package/dist/assets/renderMobileApp-CZqNs2zK.js +0 -28
- package/dist/assets/runtimeEndpointReset-Dpx6GB_U.js +0 -147
- package/dist/assets/sessionChangeSummary-BG7l2heP.js +0 -2
- package/dist/assets/sessionLookup-BZuvc3Aa.js +0 -1
- package/dist/assets/sortable-tabs-strip-dYW6SH62.js +0 -1
- package/dist/assets/src-CO9q_82J.css +0 -2
- package/dist/assets/textarea-B9CmN13Z.js +0 -1
- package/dist/assets/tooltip-DSjr26A_.js +0 -1
- package/dist/assets/useDesktopWindowControlsLayout-C6kAkizT.js +0 -1
- package/dist/assets/useMobileNavigationStore-DDgESrzu.js +0 -413
- package/dist/assets/useSessionAutoCleanup-q2lauc7x.js +0 -2
- package/dist/assets/utils-2ZK8yboQ.js +0 -1
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/store-BoixGrYS.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-base-ui-CnHfUmDN.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/vendor-sonner-DVzioF3d.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{T as n,i as r,p as i,w as a}from"./runtime-auth-D66yq6ie.js";import{_ as o,c as s,f as c,h as l,i as u,m as d,n as f,o as p,r as m,s as h,t as g}from"./runtime-switch-LvWDU-SL.js";import{n as _,r as v}from"./runtime-fetch-zIalUnbb.js";import{A as y,Cn as b,Ct as x,Dt as S,Et as C,F as w,Ft as T,I as E,It as D,L as O,M as k,Mt as A,N as j,Nt as ee,Ot as te,P as ne,Pt as re,Q as ie,Qt as ae,R as M,St as oe,Tt as se,U as ce,Vt as le,Y as ue,Zt as de,_t as fe,at as pe,bt as N,ct as me,d as P,et as F,i as I,it as he,kt as ge,nt as _e,o as ve,pt as ye,r as be,rt as xe,tn as Se,tt as L,u as R,vt as Ce,w as we,wt as Te,xt as z,yt as Ee}from"./persistence-DwRBC4zl.js";import{a as De,i as Oe,o as ke,r as Ae}from"./vendor-zustand-B4dlGEM2.js";import{nt as je,rt as Me}from"./vendor-base-ui-CnHfUmDN.js";import{Ct as Ne,Ft as Pe,Ht as Fe,Lt as Ie,Nt as B,Ot as Le,Pt as V,R as Re,St as ze,Vt as Be,Xt as Ve,Yt as He,n as Ue,qt as We,r as Ge,t as Ke}from"./platform-DQ5_LNKO.js";import{b as qe,t as Je,y as Ye}from"./useUIStore-CxOoCv7B.js";import{i as Xe,n as Ze,r as Qe,t as $e}from"./vendor-pathe-vBmvQE8f.js";import{a as et,n as tt,o as nt}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as rt}from"./vendor-react-DLPElpoQ.js";import{r as it}from"./vendor-tanstack-query-core-BWz0ose6.js";import{a as at,l as ot,n as st,o as ct,s as lt,t as ut}from"./vendor-tanstack-react-query-D7pys_c9.js";import{r as dt}from"./vendor-sonner-DVzioF3d.js";import{a as ft,n as pt}from"./vendor-reactuses-core-BnW6GxJt.js";import{d as mt,f as ht,t as gt}from"./button-bhVnVYB_.js";import{i as _t,t as vt}from"./store-BoixGrYS.js";import{i as yt}from"./useAssistantUIStore-CLPCNoj_.js";import{a as bt,i as xt,n as St,o as Ct,r as wt,s as Tt,t as Et}from"./vendor-zod-Dzk5kdUU.js";import{t as Dt}from"./vendor-fuse.js-DB5wDJbI.js";var Ot=1048576,kt=new TextEncoder,At=e=>e instanceof Error&&e.name===`AbortError`,jt=e=>At(e)?e:new DOMException(`The operation was aborted.`,`AbortError`),Mt=async e=>{try{await e?.cancel()}catch{}},Nt=async e=>{try{await e.cancel()}catch{}},Pt=async(e,t={})=>{let n=t.fetch??_,r;try{r=await n(e,{method:`GET`,headers:{Accept:`text/event-stream`},signal:t.signal})}catch(e){throw t.signal?.aborted||At(e)?jt(e):Error(`SSE request failed`)}if(!r.ok)throw await Mt(r.body),Error(`SSE response failed`);if(!/^text\/event-stream(?:\s*;|\s*$)/i.test(r.headers.get(`content-type`)??``))throw await Mt(r.body),Error(`SSE response has invalid content type`);if(!r.body)throw Error(`SSE response has no body`);let i=r.body.getReader();try{t.onOpen?.()}catch(e){throw await Nt(i),i.releaseLock(),t.signal?.aborted||At(e)?jt(e):Error(`SSE response read failed`)}let a=new TextDecoder,o=``,s=0,c=!1,l=[],u=0,d=!1,f=()=>{l=[],u=0},p=()=>{l.length!==0&&(t.onActivity?.(),t.onMessage?.(l.join(`
|
|
3
|
+
`)),f())},m=()=>{let e=o,n=s;if(o=``,s=0,e.length===0){p();return}if(e.startsWith(`:`)){t.onActivity?.();return}let r=e.indexOf(`:`),i=r===-1?e:e.slice(0,r),a=r===-1?``:e.slice(r+1);if(a.startsWith(` `)&&(a=a.slice(1)),i===`data`){let t=n-(r===-1?n:r+1+ +(e.charAt(r+1)===` `)),i=u+t+ +(l.length>0);if(i>Ot)throw Error(`SSE response exceeds buffer limit`);u=i,l.push(a)}},h=e=>{if(e.length===0)return;o+=e,s+=kt.encode(e).byteLength;let t=o===`data`?4:o.startsWith(`data:`)?5+ +(o.charAt(5)===` `):0;if(u+s-t>Ot)throw Error(`SSE response exceeds buffer limit`)},g=e=>{let t=0;c&&(c=!1,e.charAt(0)===`
|
|
4
|
+
`&&(t=1));for(let n=t;n<e.length;n+=1){let r=e.charAt(n);(r===`\r`||r===`
|
|
5
|
+
`)&&(h(e.slice(t,n)),m(),r===`\r`&&n+1<e.length&&e.charAt(n+1)===`
|
|
6
|
+
`?n+=1:r===`\r`&&n+1===e.length&&(c=!0),t=n+1)}h(e.slice(t))};try{for(;;){let{done:e,value:t}=await i.read();if(e)break;g(a.decode(t,{stream:!0}))}g(a.decode()),d=!0}catch(e){throw t.signal?.aborted||At(e)?jt(e):e instanceof Error&&e.message===`SSE response exceeds buffer limit`?e:Error(`SSE response read failed`)}finally{d||await Nt(i),i.releaseLock()}},Ft=null,It=null,Lt=null,Rt=0,zt=null,Bt=new Set,Vt=new Map,Ht=e=>e===`session-index-changed`||e===`message-queue-changed`||e===`assistants-changed`,Ut=()=>{Vt.clear()},Wt=e=>Vt.get(e),Gt=(e,t)=>{let n=Vt.get(e);(n===void 0||t>n)&&Vt.set(e,t)},Kt=3e4,qt=45e3,Jt=()=>{Lt&&=(clearTimeout(Lt),null)},Yt=()=>{if(It||Bt.size===0)return;let e=Math.min(1e3*2**Math.min(Rt,5),Kt);It=setTimeout(()=>{It=null,Rt+=1,tn()},e)},Xt=()=>{Jt();let e=Ft;Ft=null,e?.controller.abort()},Zt=e=>{if(Jt(),Bt.size===0||Ft!==e)return;let t=setTimeout(()=>{Ft===e&&Lt===t&&(Lt=null,Xt(),Yt())},qt);Lt=t},Qt=e=>{if(!e||e.trim().length===0)return null;try{let t=JSON.parse(e),n=typeof t?.type==`string`?t.type:``,r=t?.properties;return n?{type:n,properties:r}:null}catch{return null}},$t=e=>{if(e.type===`openchamber:event-stream-ready`)return e.properties===void 0||e.properties===null||typeof e.properties==`object`&&!Array.isArray(e.properties)?{type:`event-stream-ready`}:null;if(e.type===`openchamber:heartbeat`)return null;let t=e.properties&&typeof e.properties==`object`&&!Array.isArray(e.properties)?e.properties:null;if(e.type===`openchamber:worktree-topology-changed`){let e=typeof t?.projectDirectory==`string`?t.projectDirectory.trim():``,n=typeof t?.directory==`string`?t.directory.trim():``,r=t?.operation,i=t?.occurredAt;return!e||!n||r!==`added`&&r!==`removed`||typeof i!=`number`||!Number.isFinite(i)?null:{type:`worktree-topology-changed`,projectDirectory:e,directory:n,operation:r,occurredAt:i}}if(e.type===`openchamber:worktree-bootstrap-status`){let e=typeof t?.directory==`string`?t.directory.trim():``,n=t?.status,r=t?.updatedAt,i=typeof t?.error==`string`&&t.error.trim().length>0?t.error.trim():null;return!e||n!==`pending`&&n!==`ready`&&n!==`failed`||typeof r!=`number`||!Number.isFinite(r)?null:{type:`worktree-bootstrap-status`,directory:e,status:n,error:i,updatedAt:r}}if(e.type===`openchamber:session-index-changed`){let e=t?.revision,n=t?.occurredAt;if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n))return null;let r=t?.sync&&typeof t.sync==`object`&&!Array.isArray(t.sync)?t.sync:null;return{type:`session-index-changed`,revision:e,occurredAt:n,...r?{sync:{active:r.active===!0,enriching:r.enriching===!0}}:{}}}if(e.type===`openchamber:message-queue-changed`){let e=t?.revision,n=t?.occurredAt;return typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n)?null:{type:`message-queue-changed`,revision:e,occurredAt:n}}if(e.type===`openchamber:assistants-changed`){let e=t?.revision,n=t?.occurredAt;return typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n)?null:{type:`assistants-changed`,revision:e,occurredAt:n}}if(e.type===`openchamber:contact-turn-start`){let e=typeof t?.assistantID==`string`?t.assistantID.trim():``,n=typeof t?.turnID==`string`?t.turnID.trim():``,r=typeof t?.messageID==`string`?t.messageID.trim():``,i=t?.occurredAt;return!e||!n||!r||n!==r||typeof i!=`number`||!Number.isFinite(i)?null:{type:`contact-turn-start`,assistantID:e,turnID:n,messageID:r,occurredAt:i}}if(e.type===`openchamber:contact-bubble-delta`){let e=typeof t?.assistantID==`string`?t.assistantID.trim():``,n=typeof t?.turnID==`string`?t.turnID.trim():``,r=t?.bubbleIndex,i=t?.delta,a=t?.done,o=t?.occurredAt;return!e||!n||typeof r!=`number`||!Number.isSafeInteger(r)||r<0||typeof i!=`string`||typeof a!=`boolean`||typeof o!=`number`||!Number.isFinite(o)?null:{type:`contact-bubble-delta`,assistantID:e,turnID:n,bubbleIndex:r,delta:i,done:a,occurredAt:o}}if(e.type===`openchamber:contact-turn-end`){let e=typeof t?.assistantID==`string`?t.assistantID.trim():``,n=typeof t?.turnID==`string`?t.turnID.trim():``,r=t?.status,i=t?.occurredAt;if(!e||!n||r!==`complete`&&r!==`error`||typeof i!=`number`||!Number.isFinite(i))return null;let a=typeof t?.error==`string`&&t.error.trim()?t.error.trim():void 0;return{type:`contact-turn-end`,assistantID:e,turnID:n,status:r,...a?{error:a}:{},occurredAt:i}}if(e.type!==`openchamber:scheduled-task-ran`)return null;let n=typeof t?.projectId==`string`?t.projectId:``,r=typeof t?.taskId==`string`?t.taskId:``,i=typeof t?.ranAt==`number`?t.ranAt:Date.now(),a=t?.status;return!n||!r?null:{type:`scheduled-task-ran`,projectId:n,taskId:r,ranAt:i,status:a===`running`||a===`error`?a:`success`,...typeof t?.sessionId==`string`&&t.sessionId.length>0?{sessionId:t.sessionId}:{}}},en=e=>{let t=$t(e);if(t){t.type===`event-stream-ready`&&(Rt=0),Ht(t.type)&&`revision`in t&&Gt(t.type,t.revision);for(let e of Bt)try{e(t)}catch{}}},tn=()=>{if(typeof window>`u`||Bt.size===0||Ft)return;let e={controller:new AbortController};Ft=e,Pt(`/api/openchamber/events`,{signal:e.controller.signal,onOpen:()=>{Ft===e&&Zt(e)},onActivity:()=>{Ft===e&&Zt(e)},onMessage:t=>{if(Ft!==e)return;let n=Qt(t);n&&en(n)}}).then(()=>{Ft===e&&(Ft=null,Jt(),Yt())},()=>{Ft===e&&(Ft=null,Jt(),e.controller.signal.aborted||Yt())})},nn=()=>{zt||typeof window>`u`||(zt=s(()=>{Ut(),It&&=(clearTimeout(It),null),Xt(),Rt=0,tn()}))},rn=()=>{zt?.(),zt=null},an=e=>(Bt.add(e),nn(),tn(),()=>{Bt.delete(e),Bt.size===0&&(Ut(),It&&=(clearTimeout(It),null),Rt=0,Xt(),rn())}),on=!1,sn=Promise.resolve(),cn=null,ln=()=>{on||(on=!0,sn=new Promise(e=>{cn=e}))},un=async()=>sn,dn=()=>{if(!on)return;on=!1;let e=cn;cn=null,e?.()},fn=`openchamber_input_draft_metadata_v1`,pn=`openchamber_input_draft_metadata_migration_v1`,mn=`openchamber_chat_input_draft_`,hn=`openchamber_chat_confirmed_mentions_`,gn=()=>({ok:!1,error:{code:`unavailable`}}),_n=()=>({ok:!1,error:{code:`cancelled`}}),vn=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),yn=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),bn=(e,t)=>Object.keys(e).every(e=>t.includes(e)),xn=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,Sn=e=>typeof e==`string`&&e.length>0,Cn=e=>({read:async t=>{if(!e)return gn();try{return{ok:!0,value:e.getItem(t)}}catch(e){return vn(e)}},write:async(t,n)=>{if(!e)return gn();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return vn(e)}},remove:async t=>{if(!e)return gn();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return vn(e)}},keys:async()=>{if(!e)return gn();try{let t=[];for(let n=0;n<e.length;n+=1){let r=e.key(n);r!==null&&t.push(r)}return{ok:!0,value:t}}catch(e){return vn(e)}}}),wn=()=>{try{return Cn(typeof window>`u`?null:window.localStorage)}catch{return Cn(null)}},Tn=(e,t,n,r)=>{let i=[];try{let e=n===null?[]:JSON.parse(n);Array.isArray(e)&&(i=e.filter(e=>typeof e==`string`))}catch{}return{suffix:e,text:t??``,mentions:i,keys:r}},En=async e=>{let t=await e.keys();if(!t.ok)return t;let n=new Set;for(let e of t.value)e.startsWith(mn)&&n.add(e.slice(29)),e.startsWith(hn)&&n.add(e.slice(36));let r=[];for(let i of n){let n=`${mn}${i}`,a=`${hn}${i}`,[o,s]=await Promise.all([e.read(n),e.read(a)]);if(!o.ok)return o;if(!s.ok)return s;r.push(Tn(i,o.value,s.value,[n,a].filter(e=>t.value.includes(e))))}return{ok:!0,value:r}},Dn=e=>{if(!(!yn(e)||!bn(e,[`suffix`,`text`,`mentions`,`keys`])||typeof e.suffix!=`string`||typeof e.text!=`string`||!Array.isArray(e.mentions)||!e.mentions.every(e=>typeof e==`string`)||!Array.isArray(e.keys)||!e.keys.every(e=>typeof e==`string`)))return{suffix:e.suffix,text:e.text,mentions:[...e.mentions],keys:[...e.keys]}},On=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&Sn(t[0])&&(t[1]===`session`||t[1]===`draft`)&&Sn(t[2])&&e===JSON.stringify(t)}catch{return!1}},kn=e=>{if(!yn(e)||!bn(e,[`complete`,`claimedTransportIdentity`,`captured`,`markerCommitted`,`cleanupComplete`])||typeof e.complete!=`boolean`||typeof e.claimedTransportIdentity!=`string`||e.captured!==void 0&&typeof e.captured!=`boolean`||e.markerCommitted!==void 0&&typeof e.markerCommitted!=`boolean`||e.cleanupComplete!==void 0&&typeof e.cleanupComplete!=`boolean`)return;let t=e.cleanupComplete??e.complete,n=e.captured??e.complete,r=e.markerCommitted??e.complete;if(!((n||r||t)&&!Sn(e.claimedTransportIdentity))&&!(r&&!n)&&!(t&&(!n||!r)))return{complete:t,claimedTransportIdentity:e.claimedTransportIdentity,captured:n,markerCommitted:r,cleanupComplete:t}},An=e=>{if(!yn(e)||!bn(e,[`version`,`drafts`,`tombstones`,`migration`,`legacy`])||e.version!==1||!yn(e.drafts)||!yn(e.tombstones)||!yn(e.legacy)||!bn(e.legacy,[`new`,`entries`])||!yn(e.legacy.entries))return;let t=kn(e.migration);if(!t)return;let n={};for(let[t,r]of Object.entries(e.drafts)){let e=te(r);if(!e||t!==z(e.key))return;n[t]=e}let r={};for(let[t,n]of Object.entries(e.tombstones)){if(!On(t)||!xn(n))return;r[t]=n}let i={};for(let[t,n]of Object.entries(e.legacy.entries)){let e=Dn(n);if(!e||t!==e.suffix||t===`new`)return;i[t]=e}let a=e.legacy.new===void 0?void 0:Dn(e.legacy.new);if(!(e.legacy.new!==void 0&&(!a||a.suffix!==`new`)))return{version:1,drafts:n,tombstones:r,migration:t,legacy:{...a?{new:a}:{},entries:i}}},jn=(e=``)=>({version:1,drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:e,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),Mn=e=>{try{return{ok:!0,value:JSON.stringify(e)}}catch{return{ok:!1,error:{code:`serialization`}}}},Nn=async e=>{let t=await e.read(fn);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:null};try{let e=An(JSON.parse(t.value));return e?{ok:!0,value:e}:{ok:!1,error:{code:`corrupt`}}}catch{return{ok:!1,error:{code:`corrupt`}}}},Pn=async(e,t)=>{let n=An(t);if(!n)return{ok:!1,error:{code:`corrupt`}};let r=Mn(n);return r.ok?e.write(fn,r.value):r},Fn=e=>yn(e)&&bn(e,[`version`,`claimedTransportIdentity`])&&e.version===1&&Sn(e.claimedTransportIdentity)?{version:1,claimedTransportIdentity:e.claimedTransportIdentity}:void 0,In=e=>Mn({version:1,claimedTransportIdentity:e}),Ln=(e,t,n)=>{let r={},i;for(let e of t)e.suffix===`new`?i=e:r[e.suffix]=e;return{...e,migration:{complete:!1,claimedTransportIdentity:n,captured:!0,markerCommitted:!1,cleanupComplete:!1},legacy:{...i?{new:i}:{},entries:r}}},Rn=e=>[...new Set([e.legacy.new,...Object.values(e.legacy.entries)].flatMap(e=>e?.keys??[]))],zn=new WeakMap,Bn=e=>{let t=zn.get(e);if(t)return t;let n=Promise.resolve(),r,i=!0,a=e=>{let t=n.then(e,e);return n=t.then(()=>void 0,()=>void 0),t},o={persist:t=>{let n=An(t);return n?i?a(async()=>i?Pn(e,n):gn()):Promise.resolve(gn()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},migrate:(t,n={})=>{if(r)return r;let o=a(async()=>{let r=await Nn(e);if(!r.ok)return r;let a=r.value??jn(),o=i&&(n.persistenceEnabled??!0);if(!a.migration.captured){let n=await En(e);if(!n.ok)return n;if(!o)return{ok:!0,value:Ln(a,n.value,``)};if(a=Ln(a,n.value,t),!i)return{ok:!0,value:a};let r=await Pn(e,a);if(!r.ok)return r}if(!i||!(n.persistenceEnabled??!0)){let t=await En(e);return t.ok?{ok:!0,value:a}:t}let s=await e.read(pn);if(!s.ok)return s;if(s.value!==null)try{let t=Fn(JSON.parse(s.value));if(!t)return{ok:!1,error:{code:`corrupt`}};if(t.claimedTransportIdentity!==a.migration.claimedTransportIdentity){let t=In(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(pn,t.value);if(!n.ok)return n}}catch{return{ok:!1,error:{code:`corrupt`}}}else{let t=In(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(pn,t.value);if(!n.ok)return n}if(a.migration.cleanupComplete)return{ok:!0,value:a};for(let t of Rn(a)){if(!i)return{ok:!0,value:a};let n=await e.remove(t);if(!n.ok)return n}if(a={...a,migration:{complete:!0,claimedTransportIdentity:a.migration.claimedTransportIdentity,captured:!0,markerCommitted:!0,cleanupComplete:!0}},!i)return{ok:!0,value:a};let c=await Pn(e,a);return c.ok?{ok:!0,value:a}:c}).finally(()=>{r=void 0});return r=o,o},flush:()=>n,setEnabled:async e=>{i=e,i||await n}};return zn.set(e,o),o},Vn=e=>{let t=Bn(e),n=!0,r=!1,i=[],a=[],o=()=>{if(r||i.length>0)return;let e=a;a=[],e.forEach(e=>e())},s=()=>{if(r)return;let e=i.shift();if(!e){o();return}r=!0,t.persist(e.snapshot).then(e.resolve).finally(()=>{r=!1,s()})};return{persist:e=>{let t=An(e);return t?n?new Promise(e=>{i.push({snapshot:t,resolve:e}),s()}):Promise.resolve(gn()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},cancelPending:()=>{let e=i;i=[],e.forEach(({resolve:e})=>e(_n())),o()},flush:()=>r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve(),setEnabled:async e=>{if(n=e,!n){let e=i;i=[],e.forEach(({resolve:e})=>e(_n()))}await(r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve()),await t.setEnabled(e),await t.flush()}}},Hn=`openchamber-input-drafts`,Un=1,Wn=`blobs`,Gn=`blobRefs`,Kn=class extends Error{code;constructor(e){super(e),this.code=e}},qn=e=>({ok:!1,error:{code:e instanceof Kn?e.code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota-exceeded`:e instanceof DOMException&&e.name===`AbortError`?`transaction-aborted`:`transaction-failed`}}),Jn=e=>{if(!(e instanceof Blob)&&!Te(e))throw new Kn(`invalid-value`)},Yn=e=>{if(!e)throw new Kn(`invalid-value`)},Xn=(e,t)=>({id:N(e),blobID:t,transportIdentity:e.transportIdentity,ownerKind:e.owner.kind,ownerID:e.owner.ownerID}),Zn=async e=>{if(typeof e==`string`)return`url:${e}`;let t=await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()),n=[...new Uint8Array(t)].map(e=>e.toString(16).padStart(2,`0`)).join(``);return`blob:${e.type}:${e.size}:${n}`},Qn=async(e,t)=>(e.fingerprint??await Zn(e.value))===t,$n=async(e,t=!1)=>{let n=await e.getAllBlobRefs(),r=await e.getAllBlobs(),i=new Map;for(let t of n)await e.getBlob(t.blobID)?i.set(t.blobID,(i.get(t.blobID)??0)+1):await e.deleteBlobRef(t.id);for(let n of r){let r=i.get(n.id)??0;r||!t?await e.putBlob({...n,refCount:r}):await e.deleteBlob(n.id)}},er=e=>{try{let t=JSON.parse(e);return!Array.isArray(t)||t.length!==4||typeof t[0]!=`string`||typeof t[2]!=`string`||t[1]!==`session`&&t[1]!==`draft`&&t[1]!==`surface`&&t[1]!==`queue`&&t[1]!==`send`?void 0:{transportIdentity:t[0],ownerKind:t[1],ownerID:t[2]}}catch{return}},tr=(e,t)=>{let n=er(e.id),r=e.ownerKind??n?.ownerKind,i=e.transportIdentity??n?.transportIdentity;return r!==void 0&&t.ownerKinds.includes(r)&&(t.transportIdentities===void 0||i!==void 0&&t.transportIdentities.includes(i))},nr=(e=rr())=>{let t=async(t,n)=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=await e.getBlobRef(N(t));return!r||n!==void 0&&r.blobID!==n?!1:(await e.deleteBlobRef(r.id),await $n(e),(await e.getAllBlobRefs()).some(e=>e.blobID===r.blobID)||await e.deleteBlob(r.blobID),!0)})}}catch(e){return qn(e)}};return{put:async(t,n)=>{try{Yn(t),Jn(n);let r=await Zn(n);return await e.transaction(async e=>{let i=await e.getBlob(t);if(i&&!await Qn(i,r))throw new Kn(`blob-id-conflict`);i||await e.putBlob({id:t,value:n,refCount:0,fingerprint:r})}),{ok:!0,value:void 0}}catch(e){return qn(e)}},putAndRetain:async(t,n,r)=>{try{Yn(n),Jn(r);let i=await Zn(r);return await e.transaction(async e=>{let a=N(t),o=await e.getBlobRef(a);if(o&&o.blobID!==n)throw new Kn(`blob-id-conflict`);let s=await e.getBlob(n);if(s&&!await Qn(s,i))throw new Kn(`blob-id-conflict`);s||await e.putBlob({id:n,value:r,refCount:0,fingerprint:i}),o||await e.putBlobRef(Xn(t,n)),await $n(e)}),{ok:!0,value:void 0}}catch(e){return qn(e)}},read:async t=>{try{let n=await e.transaction(e=>e.getBlob(t));return n?{ok:!0,value:n.value}:{ok:!1,error:{code:`missing-blob`}}}catch(e){return qn(e)}},readReference:async t=>{try{return{ok:!0,value:(await e.transaction(e=>e.getBlobRef(N(t))))?.blobID}}catch(e){return qn(e)}},retain:async(t,n)=>{try{return Yn(n),await e.transaction(async e=>{let r=await e.getBlobRef(N(t));if(r&&r.blobID!==n)throw new Kn(`blob-id-conflict`);if(!await e.getBlob(n))throw new Kn(`missing-blob`);r||await e.putBlobRef(Xn(t,n)),await $n(e)}),{ok:!0,value:void 0}}catch(e){return qn(e)}},release:e=>t(e),releaseIfMatches:(e,n)=>t(e,n),reconcileReferences:async(t,n={ownerKinds:[`session`,`draft`]})=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=[],i=[],a=[],o=new Map((await e.getAllBlobRefs()).map(e=>[e.id,e]));for(let[i,a]of o)tr(a,n)&&t.get(i)!==a.blobID&&(await e.deleteBlobRef(i),r.push(i));for(let[r,s]of t){let t=er(r);if(!t||!n.ownerKinds.includes(t.ownerKind)||n.transportIdentities!==void 0&&!n.transportIdentities.includes(t.transportIdentity)){a.push(r);continue}let c=o.get(r);if(!await e.getBlob(s)){a.push(r);continue}(!c||c.blobID!==s)&&(await e.putBlobRef({id:r,blobID:s,...t}),i.push(r))}return await $n(e,!0),{released:r,repaired:i,missing:a}})}}catch(e){return qn(e)}},reconcileOwnerReferences:async(t,n)=>{let r=new Map;for(let[e,i]of n)r.set(N({transportIdentity:t.transportIdentity,owner:t.owner,attachmentOccurrenceRefID:e}),i);try{return{ok:!0,value:await e.transaction(async e=>{let n=0,i=new Set;for(let a of await e.getAllBlobRefs())a.transportIdentity===t.transportIdentity&&a.ownerKind===t.owner.kind&&a.ownerID===t.owner.ownerID&&r.get(a.id)!==a.blobID&&(await e.deleteBlobRef(a.id),i.add(a.blobID),n++);await $n(e);let a=await e.getAllBlobRefs();for(let t of i)a.some(e=>e.blobID===t)||await e.deleteBlob(t);return n})}}catch(e){return qn(e)}},discardUnreferenced:async t=>{try{return{ok:!0,value:await e.transaction(async e=>!await e.getBlob(t)||(await e.getAllBlobRefs()).some(e=>e.blobID===t)?!1:(await e.deleteBlob(t),!0))}}catch(e){return qn(e)}}}},rr=()=>({transaction:async e=>{let t=await ir(),n=t.transaction([Wn,Gn],`readwrite`),r=n.objectStore(Wn),i=n.objectStore(Gn),a=e=>new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error??n.error??Error(`IndexedDB request failed`))}),o=new Promise((e,t)=>{n.oncomplete=()=>e(),n.onabort=()=>t(n.error??new DOMException(`aborted`,`AbortError`)),n.onerror=()=>{console.error(`Input draft IndexedDB transaction error`,n.error)}}),s;try{let t=await e({getBlob:e=>a(r.get(e)),getAllBlobs:()=>a(r.getAll()),putBlob:async e=>{await a(r.put(e))},deleteBlob:async e=>{await a(r.delete(e))},getBlobRef:e=>a(i.get(e)),getAllBlobRefs:()=>a(i.getAll()),putBlobRef:async e=>{await a(i.put(e))},deleteBlobRef:async e=>{await a(i.delete(e))}});return await o,t}catch(e){s=e;try{n.abort()}catch{}try{await o}catch(e){s===void 0&&(s=e)}throw s}finally{t.close()}}}),ir=()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(new Kn(`database-unavailable`));return}let n=indexedDB.open(Hn,Un),r=!1,i=()=>{r||(r=!0,t(new Kn(`database-unavailable`)))};n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(Wn)||e.createObjectStore(Wn,{keyPath:`id`}),e.objectStoreNames.contains(Gn)||e.createObjectStore(Gn,{keyPath:`id`})},n.onsuccess=()=>{let t=n.result;if(t.onversionchange=()=>t.close(),r){t.close();return}r=!0,e(t)},n.onerror=i,n.onblocked=i}),ar=()=>({drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:``,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),or=e=>({version:1,drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}),sr=e=>{let t=or(e),n=cr(JSON.parse(JSON.stringify(t)));return{drafts:n.drafts,tombstones:n.tombstones,migration:n.migration,legacy:n.legacy}},cr=e=>{let t=An(e);if(!t)throw Error(`invalid draft snapshot`);return t},lr=e=>e instanceof Map?[...e.entries()]:Object.entries(e??{}),ur=e=>typeof e==`string`?e:z(e),dr=[`session`,`draft`,`surface`],fr=e=>({transportIdentity:e.transportIdentity,owner:{kind:e.owner.kind,ownerID:e.owner.ownerID},attachmentOccurrenceRefID:e.attachmentOccurrenceRefID}),pr=e=>JSON.parse(JSON.stringify(e)),mr=e=>e.phase===`metadata`?{phase:`metadata`,error:{code:e.error.code}}:{phase:`blob`,error:{...e.error},...e.reference?{reference:fr(e.reference)}:{}},hr=e=>({status:e.status,keys:[...e.keys],errors:e.errors.map(mr),cleanupErrors:e.cleanupErrors.map(mr)}),gr=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,_r=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&dr.includes(t[1])&&typeof t[2]==`string`&&t[0].length>0&&t[2].length>0}catch{return!1}},vr=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)].flatMap(t=>t.locator.kind===`blob`?[{reference:{transportIdentity:e.key.transportIdentity,owner:{kind:e.key.owner.kind,ownerID:e.key.owner.ownerID},attachmentOccurrenceRefID:t.attachmentRefID},attachment:pr(t)}]:[]),yr=e=>{let t=new Map;for(let n of Object.values(e))for(let e of vr(n))t.set(N(e.reference),e);return t},br=(e,t)=>({phase:`blob`,error:{...e},...t?{reference:fr(t)}:{}}),xr=(e,t=[])=>({status:e,keys:t,errors:[],cleanupErrors:[]}),Sr=e=>e?.attachment.locator.kind===`blob`?e.attachment.locator.blobID:``,Cr=(e,t,n={})=>{let r=ar(),i=n.enabled??!0,a=0,o=!1,s=Promise.resolve(),c=new Map,l=e=>{let t=s.then(e,e);return s=t.then(()=>void 0,()=>void 0),t.then(e=>e&&typeof e==`object`&&`status`in e&&`keys`in e&&`errors`in e&&`cleanupErrors`in e?hr(e):e)},u=async(t=r.drafts)=>{let n=[],i=new Map([...yr(t)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``]));for(let[t,r]of c){if(i.get(t)===r.expectedBlobID){c.delete(t);continue}let a=await e.releaseIfMatches(fr(r.reference),r.expectedBlobID);a.ok?c.delete(t):n.push(br(a.error,r.reference))}return n},d=async(t,n,r,i)=>{let o=fr(t),s=await e.releaseIfMatches(o,n);s.ok||(c.set(N(o),{reference:fr(o),expectedBlobID:n,generation:a,reason:i}),r.push(br(s.error,o)))},f=async(t,n)=>{let r=t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,i=fr(t.reference),a=pr(t.attachment),o=await e.readReference(i);if(!o.ok)return{acquired:!1,error:br(o.error,i)};if(o.value&&o.value!==r)return{acquired:!1,error:br({code:`reference-conflict`},i)};if(o.value===r){let t=await e.read(r);if(t.ok)return{acquired:!1};if(t.error.code!==`missing-blob`)return{acquired:!1,error:br(t.error,i)};let o=await n?.(fr(i),pr(a));if(o===void 0)return{acquired:!1,error:br({code:`runtime-value-missing`},i)};let s=await e.putAndRetain(i,r,o);return s.ok?{acquired:!0}:{acquired:!1,error:br(s.error,i)}}let s=await e.read(r);if(s.ok){let t=await e.retain(i,r);return t.ok?{acquired:!0}:{acquired:!1,error:br(t.error,i)}}if(s.error.code!==`missing-blob`)return{acquired:!1,error:br(s.error,i)};let c=await n?.(fr(i),pr(a));if(c===void 0)return{acquired:!1,error:br({code:`runtime-value-missing`},i)};let l=await e.putAndRetain(i,r,c);return l.ok?{acquired:!0}:{acquired:!1,error:br(l.error,i)}};return{seed:t=>l(async()=>{if(!i)return xr(`disabled`);if(o)return{...xr(`failed`),errors:[br({code:`invalid-record`})]};let n;try{if(!t)n=ar();else{let e=cr(JSON.parse(JSON.stringify(t)));n={drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}}}catch{return{...xr(`failed`),errors:[br({code:`invalid-record`})]}}let a=yr(n.drafts),s=await e.reconcileReferences(new Map([...a].map(([e,t])=>[e,Sr(t)])),{ownerKinds:dr});return s.ok?(r=n,o=!0,{...xr(`committed`),errors:s.value.missing.map(e=>br({code:`missing-blob`},a.get(e)?.reference))}):{...xr(`failed`),errors:[br(s.error)]}}),commit:e=>{let n=[...lr(e.drafts).map(([e])=>e),...(e.delete??[]).map(ur)];return i?l(async()=>{if(!o)return xr(`unseeded`,n);if(!i)return xr(`disabled`,n);let s=a,c=[],l=sr(r),p=lr(e.drafts),m=lr(e.tombstones),h=(e.delete??[]).map(ur);if(p.some(([e,t])=>!_r(e)||!gr(t.revision))||m.some(([e,t])=>!_r(e)||!gr(t))||h.some(e=>!_r(e))||new Set(p.map(([e])=>e)).size!==p.length||m.some(([e])=>p.some(([t])=>t===e)))return{...xr(`failed`,n),errors:[br({code:`invalid-record`})]};try{for(let[e,t]of p){let n=te(t);if(!n||e!==z(n.key))throw Error(`invalid draft record`);l.drafts[e]=n,delete l.tombstones[e]}for(let e of h)delete l.drafts[e];for(let[e,t]of m)l.tombstones[e]=t;e.migration&&(l.migration=e.migration),e.legacy&&(l.legacy=e.legacy);let t=cr(or(l));l.drafts=t.drafts,l.tombstones=t.tombstones,l.migration=t.migration,l.legacy=t.legacy}catch{return{...xr(`failed`,n),errors:[br({code:`invalid-record`})],cleanupErrors:c}}if(!await e.isCurrent())return xr(`stale`,n);let g=yr(r.drafts),_=yr(l.drafts);c=await u(l.drafts);let v=[];for(let[t,r]of _){let i=g.get(t);if((i?.attachment.locator.kind===`blob`?i.attachment.locator.blobID:void 0)===(r.attachment.locator.kind===`blob`?r.attachment.locator.blobID:void 0))continue;let a=await f(r,e.resolveBlobValue);if(a.error){for(let e of v.reverse())await d(e,Sr(_.get(N(e))),c,`acquire-failed`);return{...xr(`failed`,n),errors:[a.error],cleanupErrors:c}}a.acquired&&v.push(r.reference)}if(!await e.isCurrent()){for(let e of v.reverse())await d(e,Sr(_.get(N(e))),c,`stale`);return{...xr(`stale`,n),cleanupErrors:c}}if(!i||s!==a){for(let e of v.reverse())await d(e,Sr(_.get(N(e))),c,`disabled`);return{...xr(`disabled`,n),cleanupErrors:c}}let y=await t.persist(or(l));if(!y.ok){for(let e of v.reverse())await d(e,Sr(_.get(N(e))),c,`metadata-failed`);return{...xr(`failed`,n),errors:[{phase:`metadata`,error:y.error}],cleanupErrors:c}}r=l;for(let[e,t]of g)_.has(e)||await d(t.reference,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,c,`metadata-committed`);return{...xr(`committed`,n),cleanupErrors:c}}):Promise.resolve(hr(xr(`disabled`,n)))},reconcile:()=>l(async()=>{if(!o)return xr(`unseeded`);if(!i)return xr(`disabled`);let t=await u(),n=new Map([...yr(r.drafts)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``])),a=await e.reconcileReferences(n,{ownerKinds:dr}),s=a.ok?a.value.missing.map(e=>br({code:`missing-blob`},yr(r.drafts).get(e)?.reference)):[br(a.error)];return{status:a.ok?`committed`:`failed`,keys:[],errors:s,cleanupErrors:t}}),retryCleanup:()=>l(async()=>({...xr(`committed`),cleanupErrors:await u()})),flush:()=>s,setEnabled:async e=>{if(!e){i=!1,a+=1,t.cancelPending?.(),await t.setEnabled?.(!1),await s,await t.flush?.();return}await t.setEnabled?.(!0),i=!0,a+=1}}},wr=`openchamber-composer-reference-draft`,Tr=`openchamber-pasted-text-draft`,Er=e=>Array.from(e).length,Dr=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),Or=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,kr=(e,t)=>{let n=[],r=[],i=0;for(let a=0;a<Math.min(t.length,fe.referenceCount);a+=1){let o=t[a];if(!(!Dr(o)||!Or(o.id,fe.idLength)||!Or(o.token,fe.displayLength)||typeof o.text!=`string`||o.text.length>fe.pastePayloadLength||typeof o.characterCount!=`number`||!Number.isSafeInteger(o.characterCount)||o.characterCount!==Er(o.text)||typeof o.index!=`number`||!Number.isSafeInteger(o.index)||o.index<1))for(let t=e.indexOf(o.token);t>=0&&n.length<fe.referenceCount;t=e.indexOf(o.token,t+o.token.length)){let e=t+o.token.length;if(r.some(n=>n.start<e&&n.end>t)||i+o.text.length>fe.totalPastePayloadLength)continue;let a=n.filter(e=>e.id.startsWith(`${o.id}:`)).length;n.push({id:`${o.id}:${a}`,kind:`paste`,start:t,end:e,display:o.token,text:o.text,characterCount:o.characterCount,index:o.index}),r.push({start:t,end:e}),i+=o.text.length}}return n.sort((e,t)=>e.start-t.start)},Ar=e=>{try{let t=JSON.parse(e);if(!Dr(t)||typeof t.text!=`string`)return{text:e,references:[]};if(t.type===wr)return(t.version===2?C(t.text,t.references):void 0)??{text:t.text,references:[]};if(t.type===Tr){let e=t.version===1&&Array.isArray(t.references)?kr(t.text,t.references):[];return C(t.text,e)??{text:t.text,references:[]}}}catch{}return{text:e,references:[]}},jr=`file://`,Mr=e=>{let t=e.replace(/\\/g,`/`);return/^[A-Za-z]:/.test(t)&&(t=`/${t}`),t.split(`/`).map((e,t)=>t===1&&/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`)},Nr=e=>{let t=e.replace(/\\/g,`/`).trim();return t.toLowerCase().startsWith(jr)?t:`${jr}${Mr(t)}`},Pr=(e,t)=>`${e}\u0000${t}`,Fr=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Failed to read file`)),r.onabort=()=>n(Error(`File read aborted`)),r.readAsDataURL(e)}),Ir=e=>{if(!e.startsWith(`data:`))return 0;let t=e.indexOf(`,`);if(t<0)return 0;let n=e.slice(0,t).toLowerCase(),r=e.slice(t+1);if(!n.endsWith(`;base64`))return 0;let i=0;return r.endsWith(`==`)?i=2:r.endsWith(`=`)&&(i=1),Math.max(0,Math.floor(r.length*3/4)-i)},Lr=(e,t)=>e===t?!0:!e||!t?!1:e.filePath===t.filePath&&e.fileName===t.fileName&&e.relativePath===t.relativePath&&e.fileSize===t.fileSize&&e.selection?.startLine===t.selection?.startLine&&e.selection?.endLine===t.selection?.endLine&&e.selection?.text===t.selection?.text,Rr=e=>({version:1,key:e,revision:1,text:``,attachments:[],syntheticParts:[],mentions:[]}),zr=(e,t)=>t.flatMap(t=>{let n=`@${t}`,r=[],i=e.indexOf(n);for(;i>=0;)r.push({kind:`file`,value:t,path:t,label:t,range:{start:i,end:i+n.length}}),i=e.indexOf(n,i+n.length);return r}),Br=((e={})=>{let t=e.sink??wn(),n=e.repository??Bn(t),r=e.coordinator??Vn(t),i=e.blobStore??nr(),a=e.durability??Cr(i,r,{enabled:e.persistenceEnabled??!0}),o=new Map,s=new Map,c=new Map,l=new Map,d=new Map,p=new Set,m=new Set,h,g,_=0,v=0,y=!1,b=!1,S,C=new Set,w=new Map,T=new Set;return De()((t,r)=>{let E=e=>o.set(e,(o.get(e)??0)+1),D=(...e)=>{for(let t of e)c.set(t,(c.get(t)??0)+1),l.delete(t)},O=e=>te(e),k=()=>e.runtimeCapture?.()??{transportIdentity:u(),generation:f()},A=e=>{let t=k();return t.transportIdentity===e.transportIdentity&&t.generation===e.generation},j=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)],ee=e=>new Set(j(e).map(e=>e.attachmentRefID)),ne=(e,t,n)=>{let r=ee(n);return{draftAttachmentViews:{...e.draftAttachmentViews,[t]:Object.fromEntries(Object.entries(e.draftAttachmentViews[t]??{}).filter(([e])=>r.has(e)))},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[t]:(e.draftMissingAttachmentRefIDs[t]??[]).filter(e=>r.has(e))}}},re=()=>e.createID?.()??_e(),ie=async(e,t)=>{let n=t instanceof File?t:new File([t],e.filename,{type:e.mimeType});return{id:e.attachmentID,file:n,dataUrl:typeof t==`string`?t:await Fr(n),mimeType:e.mimeType,filename:e.filename,size:e.size,source:e.source,...e.serverPath?{serverPath:e.serverPath}:{},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource?{vscodeSource:e.vscodeSource}:{}}},ae=e=>{let t=e.errors[0]??e.cleanupErrors[0];return t?.phase===`metadata`||t?.phase===`blob`&&[`blob-id-conflict`,`database-unavailable`,`invalid-value`,`missing-blob`,`quota-exceeded`,`transaction-aborted`,`transaction-failed`].includes(t.error.code)?t.error.code:`unavailable`},M=(e,n)=>{let i=r(),s=_,c=n??k(),l=[...new Set(e)];if(l.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),!i.persistenceEnabled)return l.forEach(e=>C.add(e)),Promise.resolve({status:`disabled`,keys:l,errors:[],cleanupErrors:[]});let u=new Map(l.map(e=>[e,o.get(e)??0])),d=new Map(l.map(e=>[e,i.drafts[e]?.revision??i.tombstones[e]??0])),f=l.filter(e=>i.drafts[e]),v=Object.fromEntries(f.map(e=>[e,i.draftPersistence[e]?.status===`error`?i.draftPersistence[e]:{status:`saving`,revision:d.get(e)}])),y=Object.fromEntries(f.map(e=>[e,i.draftAttachmentPersistence[e]?.status===`error`?i.draftAttachmentPersistence[e]:{status:`saving`,revision:d.get(e)}]));t(e=>({draftPersistence:{...e.draftPersistence,...v},draftAttachmentPersistence:{...e.draftAttachmentPersistence,...y}})),b||l.forEach(e=>C.add(e));let x=(async()=>{let e=r(),n=await a.commit({drafts:Object.fromEntries(l.flatMap(t=>e.drafts[t]?[[t,e.drafts[t]]]:[])),tombstones:Object.fromEntries(l.flatMap(t=>e.tombstones[t]?[[t,e.tombstones[t]]]:[])),delete:l.filter(t=>!e.drafts[t]),migration:e.migration,legacy:{...e.legacyNewDraft?{new:e.legacyNewDraft}:{},entries:e.legacyDraftEntries},resolveBlobValue:t=>{for(let[n,r]of Object.entries(e.drafts))if(r.key.transportIdentity===t.transportIdentity&&r.key.owner.kind===t.owner.kind&&r.key.owner.ownerID===t.owner.ownerID)return e.draftAttachmentViews[n]?.[t.attachmentOccurrenceRefID]?.file},isCurrent:()=>_===s&&r().persistenceEnabled&&A(c)&&l.every(e=>(o.get(e)??0)===u.get(e)&&(r().drafts[e]?.revision??r().tombstones[e]??0)===d.get(e))}),i=_===s&&r().persistenceEnabled&&A(c);return(!i||n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)&&l.forEach(e=>C.add(e)),i&&t(e=>{let t={...e.draftPersistence};for(let e of f){if((o.get(e)??0)!==u.get(e))continue;let r=d.get(e);if(n.status===`committed`)t[e]={status:`saved`,revision:r};else if(n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)continue;else t[e]={status:`error`,revision:r,errorCode:ae(n)}}let r={...e.draftAttachmentPersistence};for(let e of f){if((o.get(e)??0)!==u.get(e))continue;let t=d.get(e);r[e]=n.status===`committed`&&n.cleanupErrors.length===0?{status:`saved`,revision:t}:n.status===`failed`||n.cleanupErrors.length>0?{status:`error`,revision:t,errorCode:ae(n)}:r[e]??{status:`idle`,revision:t}}return{draftPersistence:t,draftAttachmentPersistence:r}}),n})();return p.add(x),x.then(()=>p.delete(x),()=>p.delete(x)),x},se=e=>{let n=r(),i=Object.fromEntries(e.flatMap(e=>{let t=n.drafts[e];return t?[[e,{status:`saving`,revision:t.revision}]]:[]}));Object.keys(i).length&&t(e=>({draftPersistence:{...e.draftPersistence,...i}}))},ce=()=>{h&&clearTimeout(h),h=void 0;let e=[...m];m.clear();let t=g;return g=void 0,e.length?M(e,t).then(()=>void 0):Promise.resolve()},le=e=>{if(!r().persistenceEnabled){C.add(e);return}m.add(e),se([e]),!h&&(g=k(),h=setTimeout(()=>{ce()},40))},ue=e=>{let t=[...e];return t.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),M(t)},de=(e,n,i,a=`immediate`)=>{let o=z(e),s=r().drafts[o];if(!s||i!==void 0&&s.revision!==i)return;let c=O(n(s));if(!(!c||z(c.key)!==o))return E(o),t(e=>({drafts:{...e.drafts,[o]:c},...ne(e,o,c)})),a===`deferred`?le(o):ue([o]),c},fe=e=>e?Ce(e):void 0,pe=(e=[])=>JSON.parse(JSON.stringify(e)),N=(e,t,n,r=!1,i=!1)=>({status:e,...fe(n)?{record:fe(n)}:{},errors:pe(t?.errors),cleanupErrors:pe(t?.cleanupErrors),current:r,durable:i}),me=(e,t,n,r,i=!1,a=!1)=>({status:e,errors:pe(t?.errors),cleanupErrors:pe(t?.cleanupErrors),current:i,durable:a,source:fe(n),destination:fe(r)}),P=e=>e.status,F=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,I=(e,...t)=>{let n={...e};for(let e of t)delete n[e];return n},he=async(e,t)=>{let n={},i=r().draftAttachmentViews[z(e.key)]??{};for(let r of j(e)){let e;if(r.locator.kind===`url`){let n=t?.get(r.attachmentRefID);e=n===void 0?r.locator.url:n}else e=t?.get(r.attachmentRefID)??i[r.attachmentRefID]?.file??(typeof i[r.attachmentRefID]?.dataUrl==`string`&&Te(i[r.attachmentRefID].dataUrl)?i[r.attachmentRefID].dataUrl:void 0);if(r.locator.kind===`url`&&e!==void 0&&(e!==r.locator.url||!Te(e))||r.locator.kind===`blob`&&e!==void 0&&!(e instanceof Blob)&&!(typeof e==`string`&&Te(e)))return;e!==void 0&&(n[r.attachmentRefID]=await ie(r,e))}return n},ge=e=>e?z(e):`legacy-unowned`,ve=e=>w.get(e)??0,ye=e=>{w.set(e,ve(e)+1)},be=(e,n,r=!1)=>{r&&ye(e),t(t=>{let r=n(t.attachmentBuckets[e]??[]);return{attachmentBuckets:{...t.attachmentBuckets,[e]:r},...ge(t.activeAttachmentDraft)===e?{attachedFiles:r}:{}}})};return{drafts:{},tombstones:{},draftHydration:{},draftPersistence:{},draftAttachmentViews:{},draftMissingAttachmentRefIDs:{},draftAttachmentPersistence:{},persistenceEnabled:e.persistenceEnabled??!0,legacyDraftEntries:{},migration:{complete:!1,claimedTransportIdentity:``},captureDraftRuntime:()=>k(),commitDraftSnapshot:async e=>{let n=z(e.key),i=e.runtime;if(i.transportIdentity!==e.key.transportIdentity||!A(i))return N(`stale`,void 0);let s=r(),c=s.drafts[n],l=s.tombstones[n]??0;if(e.expectedRevision!==`absent`&&!F(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return N(`failed`,void 0);if(e.expectedRevision===`absent`?c:c?.revision!==e.expectedRevision)return N(`conflict`,void 0,c);let u=e.expectedRevision===`absent`?l+1:e.expectedRevision+1;if(!F(u))return N(`failed`,void 0);let d=O({version:1,key:e.key,revision:u,...e.snapshot});if(!d)return N(`failed`,void 0);let f=await he(d,e.values);if(!f)return N(`failed`,void 0);let p=o.get(n)??0,m=c?.revision??l,h=await a.commit({drafts:{[n]:d},isCurrent:()=>A(i)&&(o.get(n)??0)===p&&(r().drafts[n]?.revision??r().tombstones[n]??0)===m,resolveBlobValue:t=>e.values?.get(t.attachmentOccurrenceRefID)});if(h.status!==`committed`)return N(P(h),h,c);let g=(o.get(n)??0)===p&&(r().drafts[n]?.revision??r().tombstones[n]??0)===m,_=A(i);if(!g)return _||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),N(`stale`,h,d,!1,!0);let v=Ce(d);return v?(E(n),D(n),t(e=>({drafts:{...e.drafts,[n]:v},tombstones:(()=>{let t={...e.tombstones};return delete t[n],t})(),draftAttachmentViews:_?{...e.draftAttachmentViews,[n]:f}:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:_?{...e.draftMissingAttachmentRefIDs,[n]:[]}:I(e.draftMissingAttachmentRefIDs,n),draftHydration:_?e.draftHydration:I(e.draftHydration,n),draftPersistence:_?{...e.draftPersistence,[n]:{status:`saved`,revision:v.revision}}:I(e.draftPersistence,n),draftAttachmentPersistence:_?{...e.draftAttachmentPersistence,[n]:h.cleanupErrors.length?{status:`error`,revision:v.revision,errorCode:ae(h)}:{status:`saved`,revision:v.revision}}:I(e.draftAttachmentPersistence,n)})),N(_?`committed`:`stale`,h,v,_,!0)):N(`failed`,h)},deleteDraftSnapshot:async e=>{let n=z(e.key),i=e.runtime;if(i.transportIdentity!==e.key.transportIdentity||!A(i))return N(`stale`,void 0);let s=r(),c=s.drafts[n],l=s.tombstones[n]??0;if(!F(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return N(`failed`,void 0);if(!c||c.revision!==e.expectedRevision)return N(`conflict`,void 0);let u=e.expectedRevision+1;if(!F(u))return N(`failed`,void 0);let d=o.get(n)??0,f=c.revision,p=Math.max(l,u),m=await a.commit({tombstones:{[n]:p},delete:[n],isCurrent:()=>A(i)&&(o.get(n)??0)===d&&r().drafts[n]?.revision===f&&(r().tombstones[n]??0)===l});if(m.status!==`committed`)return N(P(m),m);let h=(o.get(n)??0)===d&&r().drafts[n]?.revision===f&&(r().tombstones[n]??0)===l,g=A(i);return h?(E(n),D(n),t(e=>{let t={...e.drafts};return delete t[n],{drafts:t,tombstones:{...e.tombstones,[n]:Math.max(e.tombstones[n]??0,p)},draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)}}),N(g?`committed`:`stale`,m,void 0,g,!0)):(g||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),N(`stale`,m,void 0,!1,!0))},finalizeDraftOwnership:async e=>{let n=z(e.source),i=z(e.destination),s=e.runtime,c=r(),l=c.drafts[n],u=c.drafts[i];if(n===i||e.destination.owner.kind!==`session`||e.source.transportIdentity!==s.transportIdentity||e.destination.transportIdentity!==s.transportIdentity||!A(s))return me(`stale`,void 0,l,u);if(!F(e.expectedSourceRevision))return me(`failed`,void 0,l,u);if(!l||l.revision!==e.expectedSourceRevision||u)return me(`conflict`,void 0,l,u);let d=o.get(n)??0,f=o.get(i)??0,p=c.tombstones[n]??0,m=c.tombstones[i]??0;if(!Number.isSafeInteger(p)||p<0||!Number.isSafeInteger(m)||m<0)return me(`failed`,void 0,l,u);let h=Math.max(l.revision+1,m+1);if(!F(h))return me(`failed`,void 0,l,u);let g=O(e.disposition===`preserve`?{...l,key:e.destination,revision:h}:{...Rr(e.destination),revision:h});if(!g)return me(`failed`,void 0,l,u);let _=await a.commit({drafts:{[i]:g},tombstones:{[n]:Math.max(p,h)},delete:[n],isCurrent:()=>A(s)&&(o.get(n)??0)===d&&(o.get(i)??0)===f&&r().drafts[n]?.revision===l.revision&&!r().drafts[i]&&(r().tombstones[n]??0)===p&&(r().tombstones[i]??0)===m,resolveBlobValue:e=>c.draftAttachmentViews[n]?.[e.attachmentOccurrenceRefID]?.file});if(_.status!==`committed`)return me(P(_),_,l,u);let v=(o.get(n)??0)===d&&r().drafts[n]?.revision===l.revision&&(r().tombstones[n]??0)===p,y=(o.get(i)??0)===f&&!r().drafts[i]&&(r().tombstones[i]??0)===m,b=A(s),x=Ce(g);if(!x)return me(`failed`,_,l,u);if(b&&!v&&!y)return me(`stale`,_,l,g,!1,!0);v&&(E(n),D(n)),y&&(E(i),D(i)),t(t=>{let r=t.drafts,a=t.tombstones;(v||y)&&(r={...r}),(v||y)&&(a={...a}),v&&(delete r[n],a[n]=Math.max(a[n]??0,h)),y&&(r[i]=x,delete a[i]);let o=t.draftHydration,s=t.draftPersistence,c=t.draftAttachmentViews,l=t.draftMissingAttachmentRefIDs,u=t.draftAttachmentPersistence;return b?(v&&(o=I(o,n),s=I(s,n),c=I(c,n),l=I(l,n),u=I(u,n)),y&&(o=I(o,i),s={...I(s,i),[i]:{status:`saved`,revision:x.revision}},c=I(c,i),l=I(l,i),u={...I(u,i),[i]:_.cleanupErrors.length?{status:`error`,revision:x.revision,errorCode:ae(_)}:{status:`saved`,revision:x.revision}},b&&v&&e.disposition===`preserve`&&(c={...c,[i]:t.draftAttachmentViews[n]??{}},l={...l,[i]:t.draftMissingAttachmentRefIDs[n]??[]}))):(o=I(o,n,i),s=I(s,n,i),c=I(c,n,i),l=I(l,n,i),u=I(u,n,i)),{drafts:r,tombstones:a,draftHydration:o,draftPersistence:s,draftAttachmentViews:c,draftMissingAttachmentRefIDs:l,draftAttachmentPersistence:u}});let S=v&&y&&b;return me(S?`committed`:`stale`,_,l,g,S,!0)},flushDraftPersistence:async()=>{for(await ce();p.size;)await Promise.all([...p]);await a.flush()},ensureDraft:e=>{let n=z(e),i=r().drafts[n];if(i)return i;let a=O({...Rr(e),revision:(r().tombstones[n]??0)+1});if(!a)throw Error(`Invalid empty draft`);return E(n),t(e=>({drafts:{...e.drafts,[n]:a}})),ue([n]),a},getDraft:e=>r().drafts[z(e)],setDraftText:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return de(e,e=>({...e,revision:e.revision+1,text:t,mentions:e.mentions.filter(e=>e.range.end<=t.length&&t.slice(e.range.start,e.range.end)===`@${e.value}`),composerReferences:[]}),n.revision,`deferred`)??n},setDraftComposerDocument:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return r().setDraftComposerState(e,{document:t,mentions:n.mentions})},setDraftComposerState:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return de(e,e=>({...e,revision:e.revision+1,text:t.document.text,composerReferences:t.document.references,mentions:t.mentions}),n.revision,`deferred`)},replaceDraft:(e,t,n)=>de(e,e=>({version:1,key:e.key,revision:e.revision+1,text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}}),t),setDraftMentions:(e,t)=>de(e,e=>({...e,revision:e.revision+1,mentions:t})),addDraftMention:(e,t)=>de(e,e=>({...e,revision:e.revision+1,mentions:[...e.mentions,t]})),removeDraftMention:(e,t)=>de(e,e=>({...e,revision:e.revision+1,mentions:e.mentions.filter(e=>e.value!==t)})),setDraftSyntheticParts:(e,t)=>de(e,e=>({...e,revision:e.revision+1,syntheticParts:t})),consumeDraftSyntheticParts:(e,t)=>{let n=r().getDraft(e);if(!n)return null;let i=n.syntheticParts.filter(e=>!t?.(e)),a=n.syntheticParts.filter(e=>t?.(e));return de(e,e=>({...e,revision:e.revision+1,syntheticParts:a}),n.revision)?i:null},setDraftAttachments:(e,t)=>de(e,e=>({...e,revision:e.revision+1,attachments:t})),addDraftLocalAttachment:async(e,n,i={})=>{let a=r().getDraft(e);if(i.partID&&!a?.syntheticParts.some(e=>e.partID===i.partID))return;let s=z(e),c=o.get(s)??0,l=r().tombstones[s]??0,u=k(),d=n instanceof File?n:new File([n],i.filename??`attachment`,{type:n.type}),f;try{f=await Fr(d)}catch{let e=r().drafts[s];if(A(u)&&(r().tombstones[s]??0)===l&&(e?z(e.key)===s:(o.get(s)??0)===c)&&(!i.partID||e?.syntheticParts.some(e=>e.partID===i.partID))){let n=e?.revision??r().tombstones[s]??0;t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[s]:{status:`error`,revision:n,errorCode:`transaction-failed`}}}))}return}if(!A(u)||(r().tombstones[s]??0)!==l)return;let p=r().drafts[s];if(!p&&(o.get(s)??0)!==c)return;let m=p??r().ensureDraft(e);if(z(m.key)!==s||i.partID&&!m.syntheticParts.some(e=>e.partID===i.partID))return;let h=i.attachmentID??re(),g=i.partID?x(i.partID,h):oe(h),_=re(),v={attachmentID:h,attachmentRefID:g,filename:i.filename??(n instanceof File?n.name:`attachment`),mimeType:n.type,size:n.size,locator:{kind:`blob`,blobID:_},source:i.source??`local`,...i.vscodePath?{vscodePath:i.vscodePath}:{},...i.vscodeSource?{vscodeSource:i.vscodeSource}:{}},y=i.partID?{...m,revision:m.revision+1,syntheticParts:m.syntheticParts.map(e=>e.partID===i.partID?{...e,attachments:[...e.attachments,v]}:e)}:{...m,revision:m.revision+1,attachments:[...m.attachments,v]},b=O(y);if(!b)return;E(s);let S={id:h,file:d,dataUrl:f,mimeType:v.mimeType,filename:v.filename,size:v.size,source:v.source,...i.vscodePath?{vscodePath:i.vscodePath}:{},...i.vscodeSource?{vscodeSource:i.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[s]:b},draftAttachmentViews:{...e.draftAttachmentViews,[s]:{...e.draftAttachmentViews[s],[g]:S}}})),await M([s]),v},addDraftDurableAttachment:(e,n)=>{let i=r().getDraft(e)??r().ensureDraft(e);if(n.partID&&!i.syntheticParts.some(e=>e.partID===n.partID))return;let a=n.attachmentID??re(),o=n.partID?x(n.partID,a):oe(a),s={attachmentID:a,attachmentRefID:o,filename:n.filename,mimeType:n.mimeType,size:n.size,source:n.source,locator:{kind:`url`,url:n.url},...n.serverPath?{serverPath:n.serverPath}:{},...n.vscodePath?{vscodePath:n.vscodePath}:{},...n.vscodeSource?{vscodeSource:n.vscodeSource}:{}},c=n.partID?{...i,revision:i.revision+1,syntheticParts:i.syntheticParts.map(e=>e.partID===n.partID?{...e,attachments:[...e.attachments,s]}:e)}:{...i,revision:i.revision+1,attachments:[...i.attachments,s]},l=O(c);if(!l)return;let u=z(e);E(u);let d={id:a,file:new File([],s.filename,{type:s.mimeType}),dataUrl:n.url,mimeType:s.mimeType,filename:s.filename,size:s.size,source:s.source,...s.serverPath?{serverPath:s.serverPath}:{},...s.vscodePath?{vscodePath:s.vscodePath}:{},...s.vscodeSource?{vscodeSource:s.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[u]:l},draftAttachmentViews:{...e.draftAttachmentViews,[u]:{...e.draftAttachmentViews[u],[o]:d}}})),M([u]),s},getDraftAttachmentViews:e=>{let t=z(e),n=r().drafts[t],i=r().draftAttachmentViews[t]??{};return n?j(n).flatMap(e=>i[e.attachmentRefID]?[i[e.attachmentRefID]]:[]):[]},retryDraftAttachmentPersistence:async e=>{let n=z(e);if(!r().persistenceEnabled||!r().drafts[n]&&!r().tombstones[n])return;let i=await a.retryCleanup();i.cleanupErrors.length&&t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[n]:{status:`error`,revision:e.drafts[n]?.revision??e.tombstones[n],errorCode:ae(i)}}})),await M([n])},hydrateDraftAttachments:async e=>{let n=z(e),a=l.get(n);if(a)return a;let o=r().drafts[n];if(!o)return;let s=(c.get(n)??0)+1;c.set(n,s);let u=k(),d=_,f=(async()=>{t(e=>({draftHydration:{...e.draftHydration,[n]:`loading`}}));let e=()=>{if(c.get(n)!==s)return;let e=r(),i=e.draftAttachmentViews[n],a=e.draftMissingAttachmentRefIDs[n]??[];t(e=>({draftHydration:{...e.draftHydration,[n]:a.length?`degraded`:Object.keys(i??{}).length?`ready`:`idle`}}))},a={},l=[];for(let f of j(o)){let p=f.locator.kind===`url`?{ok:!0,value:f.locator.url}:await i.read(f.locator.blobID);if(!p.ok){if(p.error.code===`missing-blob`)l.push(f.attachmentRefID);else{c.get(n)===s&&_===d&&A(u)&&r().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}continue}try{a[f.attachmentRefID]=await ie(f,p.value)}catch{c.get(n)===s&&_===d&&A(u)&&r().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}}let f=r(),p=f.drafts[n],m=c.get(n);if(m===s&&_===d&&A(u)&&p===o)t(e=>({draftAttachmentViews:{...e.draftAttachmentViews,[n]:a},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[n]:l},draftHydration:{...e.draftHydration,[n]:l.length?`degraded`:`ready`}}));else if(m===s){let e=f.draftAttachmentViews[n],r=f.draftMissingAttachmentRefIDs[n]??[];t(t=>({draftHydration:{...t.draftHydration,[n]:r.length?`degraded`:Object.keys(e??{}).length?`ready`:`idle`}}))}})();l.set(n,f);try{await f}finally{l.get(n)===f&&l.delete(n)}},removeDraftAttachment:async(e,n)=>{let i=z(e),a=r().drafts[i],o=a&&j(a).find(e=>e.attachmentRefID===n);if(!a||!o)return!1;let s=He(o)?Ve(a.text,[o.filename],a.mentions,a.composerReferences):void 0,c=O({...a,revision:a.revision+1,...s?.changed?{text:s.text,mentions:s.mentions,...s.composerReferences===void 0?{}:{composerReferences:s.composerReferences}}:{},attachments:a.attachments.filter(e=>e.attachmentRefID!==n),syntheticParts:a.syntheticParts.map(e=>({...e,attachments:e.attachments.filter(e=>e.attachmentRefID!==n)}))});return c?(E(i),t(e=>{let t={...e.draftAttachmentViews[i]};return delete t[n],{drafts:{...e.drafts,[i]:c},draftAttachmentViews:{...e.draftAttachmentViews,[i]:t},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[i]:(e.draftMissingAttachmentRefIDs[i]??[]).filter(e=>e!==n)}}}),(await M([i])).status===`committed`):!1},replaceDraftAttachment:async(e,n,i,a)=>{let o=z(e),s=r().drafts[o],c=s&&j(s).find(e=>e.attachmentRefID===n);if(!s||!c)return;let l=k(),u=r().tombstones[o]??0,d=i instanceof File?i:new File([i],a?.filename??`attachment`,{type:i.type}),f;try{f=await Fr(d)}catch{let e=r().drafts[o],i=e&&j(e).find(e=>e.attachmentRefID===n);A(l)&&(r().tombstones[o]??0)===u&&e&&i?.attachmentID===c.attachmentID&&i.attachmentRefID===c.attachmentRefID&&z(e.key)===o&&t(t=>({draftAttachmentPersistence:{...t.draftAttachmentPersistence,[o]:{status:`error`,revision:e.revision,errorCode:`transaction-failed`}}}));return}let p=r().drafts[o],m=p&&j(p).find(e=>e.attachmentRefID===n);if(!A(l)||(r().tombstones[o]??0)!==u||!p||m?.attachmentID!==c.attachmentID||m.attachmentRefID!==c.attachmentRefID||z(p.key)!==o)return;let h=p.syntheticParts.find(e=>e.attachments.some(e=>e.attachmentRefID===n)),g=re(),_={attachmentID:g,attachmentRefID:h?x(h.partID,g):oe(g),filename:a?.filename??d.name,mimeType:d.type,size:d.size,locator:{kind:`blob`,blobID:re()},source:a?.source??`local`,...a?.vscodePath?{vscodePath:a.vscodePath}:{},...a?.vscodeSource?{vscodeSource:a.vscodeSource}:{}},v=O({...p,revision:p.revision+1,attachments:h?p.attachments:p.attachments.map(e=>e.attachmentRefID===n?_:e),syntheticParts:p.syntheticParts.map(e=>e.partID===h?.partID?{...e,attachments:e.attachments.map(e=>e.attachmentRefID===n?_:e)}:e)});if(!v)return;E(o);let y={id:g,file:d,dataUrl:f,mimeType:_.mimeType,filename:_.filename,size:_.size,source:_.source,..._.vscodePath?{vscodePath:_.vscodePath}:{},..._.vscodeSource?{vscodeSource:_.vscodeSource}:{}};return t(e=>{let t={...e.draftAttachmentViews[o]};return delete t[n],{drafts:{...e.drafts,[o]:v},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...t,[_.attachmentRefID]:y}},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[o]:(e.draftMissingAttachmentRefIDs[o]??[]).filter(e=>e!==n)}}}),(await M([o])).status===`committed`?_:void 0},replaceDraftRootAttachments:async(e,t)=>{let n=z(e),i=k();if(i.transportIdentity!==e.transportIdentity||!A(i))return N(`stale`,void 0);let a=r().drafts[n],o=a?a.revision:`absent`,s=[],c=new Map;for(let e of t){let t=e.id,n=oe(t);if(e.source===`server`&&e.dataUrl&&Te(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),c.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&Te(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),c.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=re();s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),c.set(n,r)}}let l=a?.syntheticParts??[];for(let e of l)for(let t of e.attachments)t.locator.kind===`url`&&!c.has(t.attachmentRefID)&&c.set(t.attachmentRefID,t.locator.url);let u={text:a?.text??``,attachments:s,syntheticParts:l,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return r().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:u,values:c,runtime:i})},restoreDraftRootAttachments:async(e,t)=>{let n=z(e),i=k();if(i.transportIdentity!==e.transportIdentity||!A(i))return N(`stale`,void 0);let a=r().drafts[n],o=a?a.revision:`absent`,s=new Set(t.map(e=>e.id)),c=[],l=new Map;for(let e of t){let t=e.id,n=oe(t);if(e.source===`server`&&e.dataUrl&&Te(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),l.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&Te(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),l.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=re();c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),l.set(n,r)}}let u=r().draftAttachmentViews[n]??{};for(let e of a?.attachments??[])if(!s.has(e.attachmentID))if(c.push(JSON.parse(JSON.stringify(e))),e.locator.kind===`url`)l.set(e.attachmentRefID,e.locator.url);else{let t=u[e.attachmentRefID];t?.file instanceof Blob?l.set(e.attachmentRefID,t.file):typeof t?.dataUrl==`string`&&Te(t.dataUrl)&&l.set(e.attachmentRefID,t.dataUrl)}let d=a?.syntheticParts??[];for(let e of d)for(let t of e.attachments)t.locator.kind===`url`&&!l.has(t.attachmentRefID)&&l.set(t.attachmentRefID,t.locator.url);let f={text:a?.text??``,attachments:c,syntheticParts:d,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return r().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:f,values:l,runtime:i})},deleteDraft:(e,n)=>{let i=z(e),a=r().drafts[i];if(!a||n!==void 0&&a.revision!==n)return!1;let o=a.revision+1;return F(o)?(E(i),D(i),t(e=>{let t={...e.drafts};delete t[i];let n={...e.draftHydration},r={...e.draftPersistence},a={...e.draftAttachmentViews},s={...e.draftMissingAttachmentRefIDs},c={...e.draftAttachmentPersistence};return delete n[i],delete r[i],delete a[i],delete s[i],delete c[i],{drafts:t,tombstones:{...e.tombstones,[i]:Math.max(e.tombstones[i]??0,o)},draftHydration:n,draftPersistence:r,draftAttachmentViews:a,draftMissingAttachmentRefIDs:s,draftAttachmentPersistence:c}}),M([i]),!0):!1},moveDraft:(e,n,i)=>{let a=z(e),o=z(n),s=r().drafts[a];if(!s||a===o||i!==void 0&&s.revision!==i||r().drafts[o]||(r().tombstones[o]??0)>=s.revision+1||[...s.attachments,...s.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.locator.kind===`blob`))return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),M([a,o]),c},moveDraftWithAttachments:async(e,n,i)=>{let a=z(e),o=z(n),s=r().drafts[a];if(!s||a===o||i!==void 0&&s.revision!==i||r().drafts[o]||(r().tombstones[o]??0)>=s.revision+1)return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),(await M([a,o])).status===`committed`?c:void 0},setDraftPersistenceEnabled:async e=>{if(_+=1,!e){h&&clearTimeout(h),h=void 0,m.clear(),g=void 0,t({persistenceEnabled:!1,draftPersistence:{}}),await a.setEnabled(!1),await a.flush();return}t({persistenceEnabled:!0}),await a.setEnabled(!0);let n=k();b||await r().hydrateDraftMetadata(n.transportIdentity);let i=new Set([...Object.keys(r().drafts),...Object.keys(r().tombstones),...C]);C.clear(),await M(i),await a.flush()},hydrateDraftMetadata:e=>{let i=d.get(e);if(i)return i;let c=(async()=>{let i=(s.get(e)??0)+1;s.set(e,i);let c=k();if(c.transportIdentity!==e)return!1;let l=_,u=new Map(o),d=v,f=Object.entries(r().drafts).filter(([,t])=>t.key.transportIdentity===e).map(([e])=>e);t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`loading`]))}}));let p=r().persistenceEnabled,m;try{m=await n.migrate(e,{persistenceEnabled:p})}catch{return!1}if(s.get(e)!==i||_!==l||!A(c))return!1;if(!m.ok)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(t=>[t,e.drafts[t]?`degraded`:`error`]))}})),!1;let h=m.value;if(!b){S??=a.seed(h).finally(()=>{S=void 0});let n;try{n=await S}catch{return!1}if(s.get(e)!==i||_!==l||!A(c))return!1;if(n.status!==`committed`&&n.status!==`disabled`)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`degraded`]))}})),!1;n.status===`committed`&&(b=!0)}let g=r(),x={...g.drafts},w={...g.tombstones},T=new Set;for(let[e,t]of Object.entries(h.tombstones))(o.get(e)??0)===(u.get(e)??0)&&(t>=(w[e]??0)&&(w[e]=t,(x[e]?.revision??0)<=t&&delete x[e]),T.add(e));for(let[t,n]of Object.entries(h.drafts)){if(n.key.transportIdentity!==e||(o.get(t)??0)!==(u.get(t)??0))continue;let r=x[t],i=O(n);i&&(!r||r.revision<i.revision)&&(w[t]??0)<i.revision&&(x[t]=i),T.add(t)}let E=v===d?{...h.legacy.entries}:{...g.legacyDraftEntries};if(h.migration.claimedTransportIdentity===e&&v===d)for(let[t,n]of Object.entries(E)){let r={transportIdentity:e,owner:{kind:`session`,ownerID:t}},i=z(r),a=Ar(n.text),s=O({...Rr(r),text:a.text,composerReferences:a.references,mentions:zr(a.text,n.mentions)});s&&!x[i]&&!w[i]&&(o.get(i)??0)===(u.get(i)??0)&&(x[i]=s),delete E[t],T.add(i)}t(e=>({drafts:x,tombstones:w,legacyNewDraft:v===d&&!y?h.legacy.new:e.legacyNewDraft,legacyDraftEntries:E,migration:v===d?h.migration:e.migration,draftHydration:{...e.draftHydration,...Object.fromEntries([...T].map(e=>[e,`ready`]))}}));let D=[...C];for(let e of D)T.add(e);C.clear();try{await M(T),await a.flush()}catch{return!1}return s.get(e)===i&&_===l&&A(c)})();return d.set(e,c),c.finally(()=>{d.get(e)===c&&d.delete(e)}).catch(()=>void 0),c},claimLegacyNewDraft:async e=>{let n=r().legacyNewDraft;if(!n)return r().getDraft(e);let i=z(e),a=r().drafts[i];if(v+=1,y=!0,a||r().tombstones[i])return t({legacyNewDraft:void 0}),M([i]),a;let o=Ar(n.text),s=O({...Rr(e),text:o.text,composerReferences:o.references,mentions:zr(o.text,n.mentions)});if(s)return E(i),t(e=>({drafts:{...e.drafts,[i]:s},legacyNewDraft:void 0})),M([i]),s},pendingInputText:null,pendingInputMode:`replace`,pendingSyntheticParts:null,pendingPresetSubmit:null,attachedFiles:[],attachmentBuckets:{"legacy-unowned":[]},activeAttachmentDraft:null,activeEditorFile:null,setPendingInputText:(e,n=`replace`)=>t({pendingInputText:e,pendingInputMode:n}),consumePendingInputText:()=>{let{pendingInputText:e,pendingInputMode:n}=r();return e===null?null:(t({pendingInputText:null,pendingInputMode:`replace`}),{text:e,mode:n})},requestPresetSubmit:e=>t({pendingPresetSubmit:e}),consumePendingPresetSubmit:()=>{let{pendingPresetSubmit:e}=r();return e===null?null:(t({pendingPresetSubmit:null}),e)},setPendingSyntheticParts:e=>t({pendingSyntheticParts:e}),consumePendingSyntheticParts:()=>{let{pendingSyntheticParts:e}=r();return e!==null&&t({pendingSyntheticParts:null}),e},setActiveAttachmentDraft:e=>{let n=ge(e);t(t=>({activeAttachmentDraft:e,attachedFiles:t.attachmentBuckets[n]??[],attachmentBuckets:t.attachmentBuckets[n]?t.attachmentBuckets:{...t.attachmentBuckets,[n]:[]}}))},addAttachedFile:async e=>{let t=r().activeAttachmentDraft;if(t){let n=ge(t),i=ve(n),a=await r().addDraftLocalAttachment(t,e);i!==ve(n)&&a&&r().removeDraftAttachment(t,a.attachmentRefID);return}let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,i=ge(null),a=ve(i),o;try{o=await Fr(e)}catch{return}if(a!==ve(i))return;let s={id:n,file:e,dataUrl:o,mimeType:e.type,filename:e.name,size:e.size,source:`local`};be(i,e=>[...e,s])},removeAttachedFile:e=>{let t=r().activeAttachmentDraft;if(t){let n=r().getDraft(t),i=n?[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)].find(t=>t.attachmentID===e):void 0;i&&r().removeDraftAttachment(t,i.attachmentRefID);return}be(ge(null),t=>t.filter(t=>t.id!==e))},setAttachedFiles:e=>{be(ge(r().activeAttachmentDraft),()=>e,!0)},clearAttachedFiles:()=>{let e=r().activeAttachmentDraft;if(e){ye(ge(e)),r().getDraft(e)||r().ensureDraft(e),r().setDraftAttachments(e,[]);return}be(ge(null),()=>[],!0)},addDraftVSCodeFileAttachment:(e,t,n,i)=>{if(r().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)||(r().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)??!1))return;let a=Nr(t);r().addDraftDurableAttachment(e,{filename:n,mimeType:`text/plain`,size:i||0,source:`vscode`,vscodePath:t,vscodeSource:`file`,url:a})},addDraftVSCodeSelectionAttachment:async(e,t,n)=>{let i=z(e),a=ve(i),o=`${i}\u0000${Pr(t,n.name)}`;if(!(r().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)||(r().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)??!1)||T.has(o))){T.add(o);try{let o=await r().addDraftLocalAttachment(e,n,{source:`vscode`,vscodePath:t,vscodeSource:`selection`});a!==ve(i)&&o&&r().removeDraftAttachment(e,o.attachmentRefID)}finally{T.delete(o)}}},addVSCodeFileAttachment:(e,t,n)=>{let i=r().activeAttachmentDraft;if(i){r().addDraftVSCodeFileAttachment(i,e,t,n);return}let a=`${Date.now()}-${Math.random().toString(36).slice(2)}`,o=ge(null);if((r().attachmentBuckets[o]??[]).some(t=>t.source===`vscode`&&t.vscodeSource===`file`&&(t.vscodePath||``)===e))return;let s=Nr(e),c={id:a,file:new File([],t,{type:`text/plain`}),dataUrl:s,mimeType:`text/plain`,filename:t,size:n||0,source:`vscode`,vscodePath:e,vscodeSource:`file`};be(o,e=>[...e,c])},addVSCodeSelectionAttachment:async(e,t)=>{let n=r().activeAttachmentDraft;if(n){await r().addDraftVSCodeSelectionAttachment(n,e,t);return}let i=`${Date.now()}-${Math.random().toString(36).slice(2)}`,a=ge(null),o=ve(a),s=`${a}\u0000${Pr(e,t.name)}`;if((r().attachmentBuckets[a]??[]).some(n=>n.source===`vscode`&&n.vscodeSource===`selection`&&n.filename===t.name&&n.vscodePath===e)||T.has(s))return;T.add(s);let c;try{c=await Fr(t)}catch{return}finally{T.delete(s)}if(o!==ve(a))return;let l={id:i,file:t,dataUrl:c,mimeType:t.type,filename:t.name,size:t.size,source:`vscode`,vscodePath:e,vscodeSource:`selection`};be(a,e=>[...e,l])},addCodeSelectionAttachment:async(e,t,n)=>{let i=new File([n],t,{type:`text/plain`});await r().addVSCodeSelectionAttachment(e,i)},setActiveEditorFile:e=>{Lr(r().activeEditorFile,e)||t({activeEditorFile:e})},addRestoredAttachment:({url:e,mimeType:t,filename:n})=>{let i=r().activeAttachmentDraft;if(i){if(e.startsWith(`data:`)){let a=z(i);(async()=>{try{let o=await(await fetch(e)).blob(),s=new File([o],n,{type:t||o.type||`application/octet-stream`}),c=r().activeAttachmentDraft;if(!c||z(c)!==a)return;await r().addDraftLocalAttachment(i,s)}catch{}})();return}if(!Te(e))return;r().addDraftDurableAttachment(i,{filename:n,mimeType:t,size:Ir(e),source:`local`,serverPath:e,url:e});return}let a={id:`restored-${Date.now()}-${Math.random().toString(36).slice(2)}`,file:new File([],n,{type:t}),dataUrl:e,mimeType:t,filename:n,size:Ir(e),source:`local`,serverPath:e};be(ge(null),e=>[...e,a])}}})})(),Vr=new Set;function Hr(e){return Vr.add(e),()=>{Vr.delete(e)}}function Ur(e,t){let n=Array.isArray(e)?e:[e],r=Array.from(new Set(n));if(r.length===0)return;r.includes(`all`)&&r.splice(0,r.length,`all`);let i={scopes:r,source:t?.source,timestamp:Date.now()};for(let e of Vr)try{let t=e(i);t instanceof Promise&&t.catch(e=>{console.error(`[ConfigSync] Async listener failed:`,e)})}catch(e){console.error(`[ConfigSync] Listener threw:`,e)}}function Wr(e,t){return e.scopes.includes(`all`)||e.scopes.includes(t)}var Gr=`Updating OpenCode configuration...`,Kr=0,qr=Gr,Jr=new Set;function Yr(){let e={isUpdating:Kr>0,message:qr};Jr.forEach(t=>t(e))}function Xr(e){Kr+=1,Kr===1?(qr=e||Gr,Yr()):e&&(qr=e,Yr())}function Zr(){Kr!==0&&(--Kr,Kr===0&&(qr=Gr,Yr()))}function Qr(e){qr===e&&Kr>0||(qr=e,Kr>0&&Yr())}function $r(e){return Jr.add(e),e({isUpdating:Kr>0,message:qr}),()=>{Jr.delete(e)}}function ei(){return{isUpdating:Kr>0,message:qr}}var ti=qe(),ni=`projects`,ri=`activeProjectId`,ii=`projects:manualOrder`,ai=(e,t)=>{let n=e.trim();return!n.startsWith(`~`)||!t?n:n===`~`?t:n.startsWith(`~/`)||n.startsWith(`~\\`)?`${t}${n.slice(1)}`:n},oi=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,si=e=>{if(typeof e!=`string`)return;let t=e.trim();if(!t)return;let n=t.indexOf(`/`);if(!(n<=0||n>=t.length-1))return t},ci=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t&&oi.test(t)?t.toLowerCase():null},li=e=>{let t=e.trim();if(!t)return``;let n=ai(t,re(`homeDirectory`,{storage:ti})||Ne.getState().homeDirectory||``).replace(/\\/g,`/`);return n===`/`?`/`:n.length>1?n.replace(/\/+$/,``):n},ui=e=>{let t=li(e);if(!t||t===`/`)return`Root`;let n=t.split(`/`).filter(Boolean);return n[n.length-1]||t},di=e=>{if(!e||typeof e!=`object`)return;let t=e,n=typeof t.mime==`string`?t.mime.trim():``,r=typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)?Math.max(0,Math.round(t.updatedAt)):0,i=t.source===`custom`||t.source===`auto`?t.source:null;if(!(!n||!r||!i))return{mime:n,updatedAt:r,source:i}},fi=e=>{let t=typeof e.type==`string`?e.type.trim().toLowerCase():``;if(t===`image/png`||t===`image/jpeg`||t===`image/svg+xml`)return t;let n=e.name.toLowerCase();return n.endsWith(`.png`)?`image/png`:n.endsWith(`.jpg`)||n.endsWith(`.jpeg`)?`image/jpeg`:n.endsWith(`.svg`)?`image/svg+xml`:null},pi=async e=>await new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>{n(Error(`Failed to read icon file`))},r.onload=()=>{let e=typeof r.result==`string`?r.result:``;if(!e){n(Error(`Failed to read icon file`));return}t(e)},r.readAsDataURL(e)}),mi=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set,r=new Set;for(let i of e){if(!i||typeof i!=`object`)continue;let e=i,a=typeof e.path==`string`?e.path.trim():``;if(!a)continue;let o=li(a);if(!o)continue;let s=xe(o);if(!s||n.has(s)||r.has(o))continue;n.add(s),r.add(o);let c={id:s,path:o};if(typeof e.label==`string`&&e.label.trim().length>0&&(c.label=e.label.trim()),typeof e.icon==`string`&&e.icon.trim().length>0&&(c.icon=e.icon.trim()),e.iconImage===null)c.iconImage=null;else{let t=di(e.iconImage);t&&(c.iconImage=t)}typeof e.color==`string`&&e.color.trim().length>0&&(c.color=e.color.trim());let l=si(e.defaultModel);if(l&&(c.defaultModel=l),e.iconBackground===null)c.iconBackground=null;else{let t=ci(e.iconBackground);t&&(c.iconBackground=t)}typeof e.addedAt==`number`&&Number.isFinite(e.addedAt)&&e.addedAt>=0&&(c.addedAt=e.addedAt),typeof e.lastOpenedAt==`number`&&Number.isFinite(e.lastOpenedAt)&&e.lastOpenedAt>=0&&(c.lastOpenedAt=e.lastOpenedAt),typeof e.sidebarCollapsed==`boolean`&&(c.sidebarCollapsed=e.sidebarCollapsed),t.push(c)}return t},hi=()=>{try{let e=re(ni,{storage:ti});return e?mi(JSON.parse(e)):[]}catch{return[]}},gi=()=>{if(!ee())return null;let e=g().trim().replace(/\/+$/,``);return e?ti.getItem(`${ni}:${encodeURIComponent(e)}:manualOrder`):null},_i=()=>{try{let e=re(ii,{storage:ti})||gi();if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}},vi=()=>{try{let e=re(ri,{storage:ti});if(typeof e==`string`&&e.trim().length>0)return e.trim()}catch{return null}return null},yi=(e,t)=>{try{D(ni,JSON.stringify(e),{storage:ti})}catch{}try{t?D(ri,t,{storage:ti}):T(ri,{storage:ti})}catch{}},bi=(e,t,n)=>{yi(e,t),n&&xi(n),be({projects:e,activeProjectId:t??void 0})},xi=e=>{try{D(ii,JSON.stringify(e),{storage:ti})}catch{}},Si=hi(),Ci=(e,t,n)=>{let r=e.findIndex(e=>e.id===t),i=e.findIndex(e=>e.id===n);if(r<0||i<0||r===i)return e;let a=[...e],[o]=a.splice(r,1);return a.splice(i,0,o),a},wi=e=>{let t=[],n=new Set;for(let r of e){let e=li(r.path);!e||n.has(e)||(n.add(e),t.push({name:r.name?.trim(),path:e}))}return t},Ti=(e,t,n,r)=>{let i=li(e.path);if(!i)return null;let a=xe(i),o=r===i;return{...t,id:a,path:i,label:ui(i),addedAt:t?.addedAt??n,lastOpenedAt:o?n:t?.lastOpenedAt??n}},Ei=()=>{if(typeof window>`u`||!b()?.runtime?.isVSCode)return null;let e=window.__VSCODE_CONFIG__,t=Array.isArray(e?.workspaceFolders)?e.workspaceFolders.map(e=>{let t=e,n=typeof t.path==`string`?t.path.trim():``;return n?{name:typeof t.name==`string`?t.name.trim():``,path:n}:null}).filter(e=>e!==null):[];if(t.length>0)return wi(t);let n=e?.workspaceFolder;return typeof n!=`string`||n.trim().length===0?null:wi([{path:n}])},Di=(e,t,n)=>{let r=wi(e),i=n?li(n):null,a=r.length===0&&i?[{path:i}]:i&&!r.some(e=>e.path===i)?[...r,{path:i}]:r;if(a.length===0)return null;let o=Date.now(),s=a.map(e=>Ti(e,t.find(t=>t.path===e.path)??null,o,i)).filter(e=>e!==null);if(s.length===0)return null;let c=i?s.find(e=>e.path===i)??null:s[0]??null,l=c?.id??s[0]?.id??null;return Le(),{projects:s,activeProjectId:l,activeProject:c??s[0]??null}},Oi=(e,t)=>e===t?!0:!e||!t?e===t:e.mime===t.mime&&e.updatedAt===t.updatedAt&&e.source===t.source,ki=(e,t)=>e.length===t.length&&e.every((e,n)=>{let r=t[n];return r?e.id===r.id&&e.path===r.path&&e.label===r.label&&e.icon===r.icon&&e.color===r.color&&e.iconBackground===r.iconBackground&&e.defaultModel===r.defaultModel&&e.addedAt===r.addedAt&&e.lastOpenedAt===r.lastOpenedAt&&e.sidebarCollapsed===r.sidebarCollapsed&&Oi(e.iconImage,r.iconImage):!1}),Ai=(()=>{let e=Ei();if(!e)return null;let t=Di(e,[]);return t?{projects:t.projects,activeProjectId:t.activeProjectId}:null})(),ji=typeof window>`u`?!1:!!b()?.runtime?.isVSCode,Mi=Ai?.projects??(ji?[]:Si),Ni=Ai?.activeProjectId??(ji?null:vi()),Pi=Mi.some(e=>e.id===Ni)?Ni:Mi[0]?.id??null;Ai&&yi(Mi,Pi);var Fi=De()(Ae((e,t)=>({projects:Mi,activeProjectId:Pi,manualProjectOrder:_i(),validateProjectPath:e=>{if(typeof e!=`string`||e.trim().length===0)return{ok:!1,reason:`Provide a directory path.`};let t=li(e);return t?{ok:!0,normalizedPath:t}:{ok:!1,reason:`Directory path cannot be empty.`}},addProject:(n,r)=>{if(ji)return null;let{validateProjectPath:i}=t(),a=i(n);if(!a.ok||!a.normalizedPath)return null;let o=a.normalizedPath,s=t().projects.find(e=>e.path===o);if(s)return t().setActiveProject(s.id),s;let c=Date.now(),l=r?.label?.trim()||ui(o),u={id:xe(o),path:o,label:l,addedAt:c,lastOpenedAt:c},{projects:d,manualProjectOrder:f}=t();return e({projects:[u,...d],manualProjectOrder:[u.id,...f.filter(e=>e!==u.id)]}),Le(),t().setActiveProject(u.id),t().discoverProjectIcon(u.id),u},removeProject:n=>{if(ji)return;let r=t(),i=r.projects.find(e=>e.id===n),a=r.projects.filter(e=>e.id!==n),o=r.activeProjectId;r.activeProjectId===n&&(o=a[0]?.id??null);let s=t().manualProjectOrder.filter(e=>e!==n);if(e({projects:a,activeProjectId:o,manualProjectOrder:s}),bi(a,o,s),i){let e=i.path.replace(/\\/g,`/`).replace(/\/+$/,``)||`/`;$.setState(t=>{let n=new Map(t.availableWorktreesByProject);return n.delete(e),{availableWorktreesByProject:n}})}if(o){let e=a.find(e=>e.id===o);e&&(B.setDirectory(e.path),Ne.getState().setDirectory(e.path,{showOverlay:!1}))}else Ne.getState().goHome()},setActiveProject:n=>{if(ji)return;let{projects:r,activeProjectId:i}=t();if(i===n)return;let a=r.find(e=>e.id===n);a&&(e({activeProjectId:n}),bi(r,n,t().manualProjectOrder),B.setDirectory(a.path),Ne.getState().setDirectory(a.path,{showOverlay:!1}))},setActiveProjectIdOnly:n=>{if(ji)return;let{projects:r,activeProjectId:i}=t();i!==n&&r.find(e=>e.id===n)&&(e({activeProjectId:n}),bi(r,n,t().manualProjectOrder))},renameProject:(n,r)=>{if(ji)return;let i=r.trim();if(!i)return;let{projects:a,activeProjectId:o}=t(),s=a.map(e=>e.id===n?{...e,label:i}:e);e({projects:s}),bi(s,o,t().manualProjectOrder)},updateProjectMeta:(n,r)=>{if(ji)return;let{projects:i,activeProjectId:a}=t(),o=i.map(e=>{if(e.id!==n)return e;let t={...e};if(r.label!==void 0){let e=r.label.trim();e&&(t.label=e)}if(r.icon!==void 0&&(t.icon=r.icon),r.color!==void 0&&(t.color=r.color),r.iconBackground!==void 0&&(t.iconBackground=ci(r.iconBackground)),r.defaultModel!==void 0){let e=si(r.defaultModel);e?t.defaultModel=e:delete t.defaultModel}return t});e({projects:o}),bi(o,a,t().manualProjectOrder)},uploadProjectIcon:async(e,n)=>{if(ji)return{ok:!1,error:`Custom icons are not supported in this runtime`};let r=fi(n);if(!r)return{ok:!1,error:`Only PNG, JPEG, and SVG are supported`};if(!Number.isFinite(n.size)||n.size<=0)return{ok:!1,error:`Icon file is empty`};if(n.size>5242880)return{ok:!1,error:`Icon exceeds size limit (5 MB)`};try{let i=(await pi(n)).replace(/^data:[^;]+;/i,`data:${r};`),a=await _(`/api/projects/${encodeURIComponent(e)}/icon`,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({dataUrl:i})});if(!a.ok)return{ok:!1,error:(await a.json().catch(()=>null))?.error||`Failed to upload project icon`};let o=await a.json().catch(()=>null);return o?.settings&&t().synchronizeFromSettings(o.settings),{ok:!0}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to upload project icon`}}},removeProjectIcon:async e=>{if(ji)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let n=await _(`/api/projects/${encodeURIComponent(e)}/icon`,{method:`DELETE`,headers:{Accept:`application/json`}});if(!n.ok)return{ok:!1,error:(await n.json().catch(()=>null))?.error||`Failed to remove project icon`};let r=await n.json().catch(()=>null);return r?.settings&&t().synchronizeFromSettings(r.settings),{ok:!0}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to remove project icon`}}},discoverProjectIcon:async(e,n)=>{if(ji)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let r=await _(`/api/projects/${encodeURIComponent(e)}/icon/discover`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({force:n?.force===!0})}),i=await r.json().catch(()=>null);return r.ok?(i?.settings&&t().synchronizeFromSettings(i.settings),{ok:!0,skipped:i?.skipped===!0,reason:typeof i?.reason==`string`?i.reason:void 0}):{ok:!1,error:i?.error||`Failed to discover project icon`}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to discover project icon`}}},reorderProjects:(n,r)=>{if(ji)return;let{projects:i,activeProjectId:a}=t();if(n<0||n>=i.length||r<0||r>=i.length||n===r)return;let o=[...i],[s]=o.splice(n,1);o.splice(r,0,s);let c=o.map(e=>e.id);e({projects:o,manualProjectOrder:c}),bi(o,a,c)},reorderProjectsById:(n,r)=>{if(ji)return;let{projects:i,activeProjectId:a}=t(),o=Ci(i,n,r);if(o===i)return;let s=o.map(e=>e.id);e({projects:o,manualProjectOrder:s}),bi(o,a,s)},moveProjectToTop:n=>{if(ji)return;let{projects:r,activeProjectId:i}=t(),a=r.findIndex(e=>e.id===n);if(a<=0)return;let o=[...r],[s]=o.splice(a,1);o.unshift(s),e({projects:o}),bi(o,i)},resetForRuntimeSwitch:()=>{if(ji)return;let t=hi(),n=vi(),r=t.some(e=>e.id===n)?n:t[0]?.id??null,i=new Set(t.map(e=>e.id));e({projects:t,activeProjectId:r,manualProjectOrder:_i().filter(e=>i.has(e))})},synchronizeFromSettings:n=>{if(ji)return;let r=mi(n.projects??[]),i=typeof n.activeProjectId==`string`&&n.activeProjectId.trim()?n.activeProjectId.trim():null,a=t();if(r.length===0&&a.projects.length>0){i!==a.activeProjectId&&(!i||a.projects.some(e=>e.id===i))&&(e({activeProjectId:i}),yi(a.projects,i),xi(t().manualProjectOrder));return}let o=JSON.stringify(a.projects)!==JSON.stringify(r),s=a.activeProjectId!==i;if(!o&&!s)return;let c=new Set(r.map(e=>e.id)),l=t().manualProjectOrder.filter(e=>c.has(e));if(e({projects:r,activeProjectId:i,manualProjectOrder:l}),yi(r,i),xi(l),i){let e=r.find(e=>e.id===i);e&&(B.setDirectory(e.path),Ne.getState().setDirectory(e.path,{showOverlay:!1}))}},syncVSCodeWorkspaceFolders:(n,r)=>{if(!ji)return null;let i=t(),a=i.activeProjectId?i.projects.find(e=>e.id===i.activeProjectId)??null:null,o=r??a?.path??null,s=Di(n,i.projects,o);if(!s)return n.length===0&&!r&&i.projects.length>0&&(e({projects:[],activeProjectId:null}),yi([],null)),null;let c=!ki(i.projects,s.projects),l=i.activeProjectId!==s.activeProjectId;return(c||l)&&(e({projects:s.projects,activeProjectId:s.activeProjectId}),yi(s.projects,s.activeProjectId)),s.activeProject&&(B.setDirectory(s.activeProject.path),Ne.getState().setDirectory(s.activeProject.path,{showOverlay:!1})),s.activeProject},getActiveProject:()=>{let{projects:e,activeProjectId:n}=t();return n?e.find(e=>e.id===n)??null:null}}),{name:`projects-store`}));typeof window<`u`&&window.addEventListener(`openchamber:settings-synced`,e=>{let t=e.detail;t&&typeof t==`object`&&Fi.getState().synchronizeFromSettings(t)});var H=rt(),Ii=e=>e?.trim()||null,Li=()=>{let e=Fi.getState().getActiveProject?.();return Ii(e?.path)??Ii(B.getDirectory())},Ri=(e,t=u())=>P.commands.list(e,t),zi=(e=Li(),t=u())=>{let n=Ii(e);return{queryKey:Ri(n,t),queryFn:async({signal:e})=>{let t=await _(`/api/config/commands/metadata`,{method:`POST`,headers:{"Content-Type":`application/json`,"Cache-Control":`no-cache`,...n?{"x-opencode-directory":n}:{}},body:JSON.stringify({catalog:!0}),query:n?{directory:n}:void 0,signal:e});if(!t.ok)throw Error(`Failed to fetch command metadata`);let r=await t.json();return Array.isArray(r.commands)?r.commands:[]},retry:2}},Bi=e=>{let t=(0,H.c)(3),n=e===void 0?{}:e,r=Fi(Ui),i=zi(Ii(n.directory)??Ii(r)??Ii(B.getDirectory())),a;return t[0]!==n.enabled||t[1]!==i?(a={...i,enabled:n.enabled},t[0]=n.enabled,t[1]=i,t[2]=a):a=t[2],lt(a)},Vi=(e=Li(),t=u())=>R.getQueryData(Ri(Ii(e),t))??[],Hi=async(e,t,n)=>{let r=Ii(t);if(u()!==n)return e.getQueryData(Ri(r,n))??[];let i=zi(r,n);return e.fetchQuery({...i,staleTime:0})};function Ui(e){return e.getActiveProject?.()?.path??null}var Wi=200,Gi=500,Ki=512,qi=1024,Ji=64,Yi=100,Xi=100,Zi=new Set([`__proto__`,`prototype`,`constructor`]),Qi=new Set([`text`,`audio`,`image`,`video`,`pdf`]),$i=e=>{for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(n<=31||n>=127&&n<=159)return!0}return!1},ea=e=>typeof e==`object`&&e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype?e:void 0,ta=e=>{if(typeof e==`string`)return e.length>0&&e.length<=Ki&&e.trim()===e&&!$i(e)&&!Zi.has(e)?e:void 0},na=e=>typeof e==`string`&&e.length>0&&e.length<=qi&&e.trim()===e&&!$i(e)?e:void 0,ra=e=>typeof e==`string`&&e.length>0&&e.length<=Ji&&e.trim()===e&&!$i(e)?e:void 0,ia=e=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=1e9?e:void 0,aa=e=>{let t=ea(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))!Qi.has(e)||typeof r!=`boolean`||(n[e]=r);return Object.keys(n).length?n:void 0},oa=e=>{let t=ea(e);if(!t)return;let n={};for(let e of[`temperature`,`reasoning`,`attachment`,`toolcall`])t[e]!==void 0&&typeof t[e]==`boolean`&&(n[e]=t[e]);let r=aa(t.input),i=aa(t.output);return r&&(n.input=r),i&&(n.output=i),Object.keys(n).length?n:void 0},sa=e=>{let t=ea(e),n=ta(t?.id),r=na(t?.name);if(!t||!n||!r)return{partial:!0};let i={id:n,name:r},a=!1,o=oa(t.capabilities);o&&(i.capabilities=o);let s=ea(t.cost);if(s){let e={},t=ia(s.input);t!==void 0&&(e.input=t);let n=ia(s.output);n!==void 0&&(e.output=n);let r=ea(s.cache);if(r){let t={},n=ia(r.read);n!==void 0&&(t.read=n);let i=ia(r.write);i!==void 0&&(t.write=i),Object.keys(t).length&&(e.cache=t)}Object.keys(e).length&&(i.cost=e)}let c=ea(t.limit);if(c){let e={},t=ia(c.context);t!==void 0&&(e.context=t);let n=ia(c.output);n!==void 0&&(e.output=n),Object.keys(e).length&&(i.limit=e)}let l=ra(t.release_date);l&&(i.release_date=l);let u=ea(t.variants);if(u){let e={};for(let[t,[n,r]]of Object.entries(u).entries()){if(t>=Xi){a=!0;break}!ta(n)||!ea(r)||(e[n]={})}Object.keys(e).length&&(i.variants=e)}return{value:i,partial:a}},ca=e=>{let t=ea(e);if(!t||t.schemaVersion!==1||!Array.isArray(t.providers)||!ea(t.default)||typeof t.partial!=`boolean`)throw Error(`Invalid provider catalog response`);let n=[],r=new Set,i=t.providers.length>Wi;for(let[e,a]of t.providers.entries()){if(e>=Wi)continue;let t=ea(a),o=ta(t?.id),s=na(t?.name),c=ea(t?.models);if(!t||!o||!s||!c||r.has(o)){i=!0;continue}r.add(o);let l={},u=new Set;for(let[e,[t,n]]of Object.entries(c).entries()){if(e>=Gi||!ta(t)||Object.prototype.hasOwnProperty.call(l,t)){i=!0;continue}let r=sa(n);if(i||=r.partial,!r.value||u.has(r.value.id)){i=!0;continue}u.add(r.value.id),l[t]=r.value}n.push({id:o,name:s,models:l})}let a=ea(t.default),o={};for(let[e,[t,n]]of Object.entries(a).entries()){let r=ta(t),a=ta(n);if(e>=Yi||!r||!a){i=!0;continue}o[r]=a}return{schemaVersion:1,providers:n,default:o,partial:t.partial||i}},la=e=>(t=>e(t.state.data)?1/0:0),ua=e=>{let t=e;return!!(t&&t.providers.length>0)},da=e=>{if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},fa=(e,t=u())=>{let n=da(e);return{queryKey:P.configCatalog.providers(n,t),queryFn:async({signal:e})=>{let r=await _(`/api/config/catalog/providers`,{method:`GET`,headers:{Accept:`application/json`,...n?{"x-opencode-directory":n}:{}},signal:e}),i;if(r.ok)i=ca(await r.json());else{if(r.status!==404&&r.status!==501)throw Error(`Provider catalog request failed (${r.status})`);let t=await B.getSdkClient().config.providers(n?{directory:n}:void 0,{signal:e});if(t.error!==void 0||t.data===void 0||t.data===null)throw Error(`Legacy provider catalog request failed`);i=ca({schemaVersion:1,providers:t.data.providers,default:t.data.default,partial:!1})}let a=R.getQueryData(P.configCatalog.providers(n,t));if(i.partial&&a&&!a.partial)throw Error(`Partial provider catalog refresh retained the complete snapshot`);return i},staleTime:la(ua),gcTime:1/0,retry:2,retryDelay:100}},pa=(e,t=u())=>{let n=da(e);return{queryKey:P.agents.raw(n,t),queryFn:({signal:e})=>B.listAgents(n,e),staleTime:la(e=>Array.isArray(e)&&e.length>0),gcTime:1/0,retry:2,retryDelay:100}},ma=(e,t,n=u())=>{if(t.providerCatalogPartial===!0)return;let r=fa(e,n);if(R.getQueryData(r.queryKey)===void 0)try{let e=ca({schemaVersion:1,providers:Array.isArray(t.providers)?t.providers.map(e=>{if(typeof e!=`object`||!e||Array.isArray(e))return e;let t=e;return{...t,models:Array.isArray(t.models)?Object.fromEntries(t.models.map((e,t)=>[String(t),e])):t.models}}):t.providers,default:t.defaultProviders,partial:!1});if(e.partial||e.providers.length===0)return;R.setQueryData(r.queryKey,e)}catch{}},ha=(e,t=u())=>R.fetchQuery(fa(e,t)),ga=(e,t=u())=>R.fetchQuery(pa(e,t)),_a=async(e,t=u())=>{let n=fa(e,t);return await R.invalidateQueries({queryKey:n.queryKey,exact:!0}),R.fetchQuery(n)},va=async(e,t=u())=>{let n=pa(e,t);return await R.invalidateQueries({queryKey:n.queryKey,exact:!0}),R.fetchQuery(n)},ya=(e,t=u())=>R.invalidateQueries({queryKey:fa(e,t).queryKey,exact:!0}),ba=e=>e?.trim()||null,xa=(e,t=u())=>P.agents.list(e,t),Sa=(e,t=u())=>P.providers.list(e,t);function Ca(e){if(!e)return;let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/agents/`);if(n===-1)return;let r=t.substring(n+8).split(`/`);return r.length>1?r[0]:void 0}var wa=(e=Li(),t=u())=>{let n=ba(e);return{queryKey:xa(n,t),queryFn:async({signal:e})=>{let r=await R.fetchQuery(pa(n,t)),i=await _(`/api/config/agents/metadata`,{method:`POST`,headers:{"Cache-Control":`no-cache`,"Content-Type":`application/json`,...n?{"x-opencode-directory":n}:{}},body:JSON.stringify({names:r.map(e=>e.name)}),signal:e});if(!i.ok)throw Error(`Failed to fetch agent metadata`);let a=await i.json();return r.map(e=>{let t=a.agents?.[e.name]??{},n=t.scope??(t.sources?.md?.exists?t.sources.md.scope:void 0)??(t.sources?.json?.exists?t.sources.json.scope:void 0)??t.sources?.md?.scope??t.sources?.json?.scope,r=Ca(t.sources?.md?.path);return n===`project`||n===`user`?{...e,scope:n,group:r}:{...e,group:r}})},retry:2,staleTime:(e=>{let t=e.state.data;return t&&t.length>0?1/0:0}),gcTime:1/0}},Ta=(e,t=u())=>{let n=ba(e);return{queryKey:Sa(n,t),queryFn:async()=>{let e=await B.getProvidersForConfig(n);return(Array.isArray(e.providers)?e.providers:[]).map(e=>({...e,models:Object.values(e.models??{})}))},retry:2}},Ea=e=>{let t=(0,H.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=Fi(Aa),a;t[2]===i?a=t[3]:(a=wa(ba(i)??ba(B.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],lt(o)},Da=(e,t)=>{let n=(0,H.c)(7),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a;n[2]===e?a=n[3]:(a=Ta(e),n[2]=e,n[3]=a);let o;return n[4]!==i.enabled||n[5]!==a?(o={...a,enabled:i.enabled},n[4]=i.enabled,n[5]=a,n[6]=o):o=n[6],lt(o)},Oa=(e=Li(),t=u())=>R.getQueryData(xa(ba(e),t))??[],ka=async(e,t,n)=>{let r=ba(t);if(u()!==n)return e.getQueryData(xa(r,n))??[];let i=wa(r,n);return await e.invalidateQueries({queryKey:i.queryKey,exact:!0}),e.fetchQuery(i)};function Aa(e){return e.getActiveProject?.()?.path??null}var ja=[{id:`anthropic`,label:`Anthropic`,description:`Anthropic's public skills repository`,source:`anthropics/skills`,defaultSubpath:`skills`,sourceType:`github`},{id:`clawdhub`,label:`ClawdHub`,description:`Community skill registry with vector search`,source:`clawdhub:registry`,sourceType:`clawdhub`}],Ma=e=>e?.trim()||null,Na=()=>{let e=Fi.getState().getActiveProject?.();return Ma(e?.path)??Ma(B.getDirectory())},Pa=(e,t=u())=>P.skillsCatalog.sources(e,t),Fa=(e,t,n=u())=>P.skillsCatalog.source(e,t,n),Ia=new Map,La=(e=Na(),t=u(),n=!1)=>{let r=Ma(e);return{queryKey:Pa(r,t),queryFn:({signal:e})=>qa(r,n,e),staleTime:5e3,retry:2}},Ra=(e,t,n=u(),r=!1)=>{let i=Ma(e);return at({queryKey:Fa(i,t,n),queryFn:({signal:e,pageParam:n})=>Ja(i,t,n,r,e),initialPageParam:null,getNextPageParam:(e,t)=>Ya(e,t),staleTime:5e3,retry:2})},za=e=>{let t=(0,H.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=Fi(Qa),a;t[2]===i?a=t[3]:(a=La(Ma(i)??Ma(B.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],lt(o)},Ba=(e,t)=>{let n=(0,H.c)(8),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a=Fi($a),o;n[2]!==a||n[3]!==e?(o=Ra(Ma(a)??Ma(B.getDirectory()),e),n[2]=a,n[3]=e,n[4]=o):o=n[4];let s=i.enabled&&!!e,c;return n[5]!==o||n[6]!==s?(c={...o,enabled:s},n[5]=o,n[6]=s,n[7]=c):c=n[7],ut(c)},Va=e=>{let t=new Map;for(let n of e)for(let e of n.items)t.set(`${e.sourceId}:${e.skillDir}`,e);return Array.from(t.values())},Ha=(e=R,t=Na(),n=u())=>e.getQueryData(Pa(Ma(t),n))??ja,Ua=(e=R,t,n,r=u())=>e.getQueryData(Fa(Ma(t),n,r)),Wa=async(e,t,n)=>{let r=Ma(t);return u()===n?e.fetchQuery({...La(r,n,!0),staleTime:0}):Ha(e,r,n)},Ga=async(e,t,n,r)=>{let i=Ma(t);if(u()!==r)return Ua(e,i,n,r);let a=Fa(i,n,r),o=JSON.stringify(a),s=(Ia.get(o)??0)+1;Ia.set(o,s),await e.cancelQueries({queryKey:a,exact:!0});let c=await Ja(i,n,null,!0,new AbortController().signal);if(u()!==r||Ia.get(o)!==s)return Ua(e,i,n,r);let l={pages:[c],pageParams:[null]};return e.setQueryData(a,l),l},Ka=(e,t,n)=>Promise.all([e.invalidateQueries({queryKey:Pa(Ma(t),n)}),e.invalidateQueries({queryKey:[n,`skillsCatalog`,`source`,Ma(t)],exact:!1})]);async function qa(e,t,n){let r=await Za(Xa(`/api/config/skills/catalog`,{directory:e,refresh:t}),n),i=await r.json().catch(()=>null);if(!r.ok||!i?.ok)throw Error(i?.error?.message??`Failed to load catalog (${r.status})`);return i.sources?.length?i.sources:ja}async function Ja(e,t,n,r,i){let a={directory:e,sourceId:t,cursor:n,refresh:r},o=await Za(Xa(`/api/config/skills/catalog/source`,a),i),s=await o.json().catch(()=>null);if(o.ok&&(s?.ok||Array.isArray(s?.items)))return{items:s.items??[],nextCursor:s.nextCursor??null};let c=await Za(Xa(`/api/config/skills/catalog`,a),i),l=await c.json().catch(()=>null),u=l?.itemsBySource?.[t];if(c.ok&&l?.ok&&Array.isArray(u))return{items:u,nextCursor:null};throw Error(s?.error?.message??l?.error?.message??`Failed to load catalog source (${o.status})`)}function Ya(e,t){let n=e.nextCursor;if(!(!n||e.items.length===0)&&!t.slice(0,-1).some(e=>e.nextCursor===n))return n}function Xa(e,t){let n=new URLSearchParams;t.directory&&n.set(`directory`,t.directory),t.sourceId&&n.set(`sourceId`,t.sourceId),t.cursor&&n.set(`cursor`,t.cursor),t.refresh&&n.set(`refresh`,`true`);let r=n.toString();return r?`${e}?${r}`:e}async function Za(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),3e3);try{return await _(e,{method:`GET`,headers:{Accept:`application/json`},signal:AbortSignal.any([t,n.signal])})}finally{clearTimeout(r)}}function Qa(e){return e.getActiveProject?.()?.path??null}function $a(e){return e.getActiveProject?.()?.path??null}var eo=e=>e?.trim()||null,to=()=>{let e=Fi.getState().getActiveProject?.();return eo(e?.path)??eo(B.getDirectory())},no=e=>{let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/skills/`);if(n===-1)return;let r=t.slice(n+8).split(`/`);return r.length>=3?r[0]:void 0},ro=(e,t=u())=>P.skills.list(e,t),io=(e=to(),t=u())=>{let n=eo(e);return{queryKey:ro(n,t),queryFn:async({signal:e})=>{let t=await _(`/api/config/skills`,{query:{summary:`true`,...n?{directory:n}:{}},signal:e});if(!t.ok)throw Error(`Failed to list skills: ${t.status}`);return((await t.json()).skills??[]).map(e=>({name:e.name,path:e.path,scope:e.scope??`user`,source:e.source??`opencode`,description:e.description??``,group:no(e.path)}))},retry:2}},ao=e=>{let t=(0,H.c)(3),n=e===void 0?{}:e,r=Fi(co),i=io(eo(n.directory)??eo(r)??eo(B.getDirectory())),a;return t[0]!==n.enabled||t[1]!==i?(a={...i,enabled:n.enabled},t[0]=n.enabled,t[1]=i,t[2]=a):a=t[2],lt(a)},oo=(e=R,t=to(),n=u())=>e.getQueryData(ro(eo(t),n))??[],so=async(e,t,n=u())=>{let r=eo(t);return u()===n?e.fetchQuery({...io(r,n),staleTime:0}):oo(e,r,n)};function co(e){return e.getActiveProject?.()?.path??null}var lo=()=>{let e=B.getDirectory();if(typeof e==`string`&&e.trim().length>0)return e;try{let e=window.__zustand_directory_store__;if(e)return e.getState().currentDirectory}catch{}return null},uo=Li,fo=e=>{let t=e;return t.native===!0||t.builtIn===!0},po=e=>{let t=e;return t.hidden===!0||t.options?.hidden===!0},mo=e=>e.filter(e=>!po(e)),ho=`useAgentsStore`,go=e=>new Promise(t=>setTimeout(t,e)),_o=2e4,vo=300,yo=4,bo=800,xo=200,So=2e3,Co=e=>e!=null,wo=De()(Ae(Oe(e=>({selectedAgentName:null,agentDraft:null,setSelectedAgent:t=>e({selectedAgentName:t}),setAgentDraft:t=>e({agentDraft:t}),loadAgents:async()=>{let e=uo(),t=u();try{return await ka(R,e,t),!0}catch{return!1}},createAgent:async t=>Eo(`POST`,t.name,t,e),updateAgent:async(t,n)=>Eo(`PATCH`,t,n,e),deleteAgent:async(t,n)=>Eo(`DELETE`,t,{scope:n},e),getAgentByName:e=>Oa().find(t=>t.name===e),getVisibleAgents:()=>mo(Oa())}),{name:`agents-store`,storage:Ye(),partialize:e=>({selectedAgentName:e.selectedAgentName})}),{name:`agents-store`}));typeof window<`u`&&(window.__zustand_agents_store__=wo);async function To(e,t){await ka(R,e,t),u()===t&&Ur(`agents`,{source:ho})}async function Eo(e,t,n,r){Xr(`${{POST:`Creating`,PATCH:`Updating`,DELETE:`Deleting`}[e]} agent configuration…`);let i=uo(),a=u();try{let o={};if(e===`POST`&&(o.mode=n?.mode||`subagent`,n?.description&&(o.description=n.description),n?.model&&(o.model=n.model),n?.variant&&(o.variant=n.variant),Co(n?.temperature)&&(o.temperature=n.temperature),Co(n?.top_p)&&(o.top_p=n.top_p),n?.prompt&&(o.prompt=n.prompt),n?.permission&&(o.permission=n.permission),n?.disable!==void 0&&(o.disable=n.disable),n?.scope&&(o.scope=n.scope)),e===`PATCH`){for(let e of[`mode`,`description`,`model`,`prompt`,`permission`,`disable`])n?.[e]!==void 0&&(o[e]=n[e]);for(let e of[`variant`,`temperature`,`top_p`])e in(n??{})&&(o[e]=n?.[e]??null)}let s=i?`?directory=${encodeURIComponent(i)}`:``,c=await _(`/api/config/agents/${encodeURIComponent(t)}${s}`,{method:e,headers:{"Content-Type":`application/json`,...i?{"x-opencode-directory":i}:{}},body:JSON.stringify(e===`DELETE`?{scope:n?.scope}:o)}),l=await c.json().catch(()=>null);if(!c.ok)throw Error(l?.error||`Failed to ${e.toLowerCase()} agent`);return u()===a?(e===`DELETE`&&wo.getState().selectedAgentName===t&&r({selectedAgentName:null}),l?.requiresManualRestart?{ok:!0,requiresManualRestart:!0}:(l?.requiresReload??!0?await Ao({message:l?.message,delayMs:l?.reloadDelayMs,scopes:[`agents`],mode:`projects`,transportIdentity:a,queryDirectory:i}):await To(i,a),{ok:!0})):{ok:!0,...l?.requiresManualRestart?{requiresManualRestart:!0}:{}}}catch(t){return console.error(`[AgentsStore] ${e} agent failed:`,t),{ok:!1}}finally{Zr()}}async function Do(e){let t=typeof e==`number`&&e>0?Math.min(e,vo):0;t>0&&await go(t);let n=Date.now(),r=0,i=null;for(;Date.now()-n<_o;){r+=1,Qr(`Waiting for OpenCode… (attempt ${r})`);try{if(await B.checkHealth())return;i=Error(`OpenCode health check reported not ready`)}catch(e){i=e}let e=Date.now()-n;await go(r<=yo&&e<1200?vo:Math.min(bo+Math.max(0,r-yo)*xo,So))}throw i||Error(`OpenCode did not become ready in time`)}var Oo=e=>{if(!e||e.length===0)return[`all`];let t=Array.from(new Set(e));return t.includes(`all`)?[`all`]:t};async function ko(e={}){let{message:t,delayMs:n}=e,r=e.transportIdentity??u(),i=e.queryDirectory??uo(),a=Oo(e.scopes),o=e.mode??(a.includes(`all`)?`projects`:`active`);try{Qr(t||`Refreshing configuration…`)}catch{}try{if(u()!==r||(await Do(n),u()!==r))return;let e=$f.getState(),t=a.includes(`all`)||a.includes(`providers`),s=a.includes(`all`)||a.includes(`agents`),c=a.includes(`all`)||a.includes(`agents`),l=a.includes(`all`)||a.includes(`commands`),d=a.includes(`all`)||a.includes(`skills`),f=lo(),p=o===`projects`?Fi.getState().projects:[],m=Array.from(new Set([...f?[f]:[],...p.map(e=>e.path).filter(Boolean)]));a.includes(`all`)&&o===`projects`&&$f.setState({directoryScoped:{}}),t&&$f.getState().invalidateProviderCache(o===`active`?f:void 0);let h=[];for(let n of m)t&&h.push(e.loadProviders({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0)),s&&h.push(e.loadAgents({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0));let g=[];c&&g.push(ka(R,i,r).then(()=>void 0)),l&&g.push(Hi(R,i,r).then(()=>void 0)),d&&(g.push(so(R,i,r).then(()=>void 0)),g.push(Ka(R,i,r).then(()=>void 0))),Qr(`Refreshing configuration…`),await Promise.all([...h,...g])}catch(e){throw Qr(`OpenCode refresh failed. Please retry.`),await go(1500),e}finally{Zr()}}async function Ao(e){await ko(e)}async function jo(e){Xr(e?.message||`Reloading OpenCode configuration…`);let t=e?.transportIdentity??u(),n=e?.queryDirectory??uo();try{let r=await _(`/api/config/reload`,{method:`POST`,headers:{"Content-Type":`application/json`}}),i=await r.json().catch(()=>null);if(!r.ok){let e=i?.error||`Failed to reload configuration`;throw Error(e)}if(u()!==t){Zr();return}let a={...e,transportIdentity:t,queryDirectory:n,scopes:e?.scopes??[`all`],mode:e?.mode??`projects`};i?.requiresReload?await Ao({...a,message:i.message,delayMs:i.reloadDelayMs}):await Ao(a)}catch(e){throw console.error(`[reloadOpenCodeConfiguration] Failed:`,e),Qr(`Failed to reload configuration. Please try again.`),await go(2e3),Zr(),e}}var Mo=null;Mo||=Hr(e=>{if(e.source!==ho&&Wr(e,`agents`)){let{loadAgents:e}=wo.getState();e()}});var No=e=>typeof e==`string`?e.trim():``,Po=(e,t)=>!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`,Fo={ai:`AI`,api:`API`,ernie:`ERNIE`,glm:`GLM`,gpt:`GPT`,it:`IT`,lfm:`LFM`,lm:`LM`,oss:`OSS`,pdf:`PDF`,rp:`RP`,slerp:`SLERP`,tars:`TARS`,ui:`UI`,vl:`VL`,vlm:`VLM`,aion:`Aion`,anthropic:`Anthropic`,chatgpt:`ChatGPT`,claude:`Claude`,codex:`Codex`,codestral:`Codestral`,command:`Command`,deepseek:`DeepSeek`,gemini:`Gemini`,gemma:`Gemma`,grok:`Grok`,hunyuan:`Hunyuan`,kimi:`Kimi`,llama:`Llama`,minimax:`MiniMax`,mistral:`Mistral`,mixtral:`Mixtral`,nemotron:`Nemotron`,openai:`OpenAI`,qwen:`Qwen`,rekaai:`RekaAI`},Io=e=>e?e[0].toUpperCase()+e.slice(1).toLowerCase():``,Lo=e=>{let t=e.startsWith(`~`)?e.slice(1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t},Ro=e=>{let t=e.lastIndexOf(`:`);return t<=0||t>=e.length-1?{base:e,suffix:``}:{base:e.slice(0,t),suffix:e.slice(t+1)}},zo=e=>{let t=e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).split(/[-_\s]+/).map(e=>e.trim()).filter(Boolean),n=[];for(let e=0;e<t.length;e+=1){let r=t[e],i=t[e+1],a=t[e+2];if(/^(19|20)\d{2}$/.test(r)&&/^\d{2}$/.test(i??``)&&/^\d{2}$/.test(a??``)){n.push(`${r}-${i}-${a}`),e+=2;continue}if(/^\d$/.test(r)&&/^\d$/.test(i??``)){n.push(`${r}.${i}`),e+=1;continue}n.push(r)}return n},Bo=e=>{let t=e.toLowerCase(),n=Fo[t];if(n)return n;let r=t.match(/^qwen(\d(?:\.\d+)?)$/);return r?`Qwen${r[1]}`:/^o\d/.test(t)?t:/^v\d/.test(t)?`V${e.slice(1).toUpperCase()}`:/^\d+[on]$/.test(t)?t:/^[a-z]\d+[a-z]?$/.test(t)?t.toUpperCase():/^\d+(?:x\d+)?[a-z]+$/.test(t)?t.replace(/[a-z]+$/i,e=>e.toUpperCase()):/^\d+(?:\.\d+)?[a-z]$/.test(t)?t.replace(/[a-z]$/i,e=>e.toUpperCase()):/^[a-z]+\d+(?:\.\d+)?[a-z]*$/.test(t)?Io(t).replace(/([a-z])(\d)/i,`$1$2`):Io(e)},Vo=e=>{let t=[...e];return t[0]===`GPT`&&t[1]&&/^(?:\d|\d+[a-z]|OSS$)/i.test(t[1])&&t.splice(0,2,`GPT-${t[1]}`),t[0]===`GLM`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`GLM-${t[1]}`),t[0]===`LFM`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`LFM${t[1]}`),t[0]===`Qwen`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`Qwen${t[1]}`),t},Ho=e=>{let t=No(e).toLowerCase();return t?t===`free`||t===`thinking`?t:Uo(t):``},Uo=e=>{let t=No(e);if(!t)return``;let{base:n,suffix:r}=Ro(Lo(t)),i=Vo(zo(n).map(Bo));if(i.length>=2){let e=i[i.length-1],t=i[i.length-2];e===`Reasoning`&&t===`Non`&&i.splice(i.length-2,2,`(Non-Reasoning)`)}let a=i[i.length-1];/^(19|20)\d{2}-\d{2}-\d{2}$/.test(a??``)&&(i[i.length-1]=`(${a})`);let o=i.join(` `).replace(/\s+\(/g,` (`).trim(),s=Ho(r);return s?`${o} (${s})`:o},Wo=e=>!/\s/.test(e)&&/[-_]/.test(e),Go=(e,t,n={})=>{let r=No(e?.name),i=No(e?.id)||No(t);return r&&!Wo(r)?Po(r,n.maxLength):i?Po(Uo(i),n.maxLength):r?Po(Uo(r.toLowerCase()),n.maxLength):n.fallbackLabel??``},Ko=(e,t)=>{let n=e?.models;if(!(!n||!t))return Array.isArray(n)?n.find(e=>No(e.id)===t):n[t]},qo=(e,t,n={})=>{let r=No(t);return Go(Ko(e,r),r,n)},Jo=(e,t,n,r)=>{let i=n.find(e=>e.name===t),a=i?.model?.providerID,o=i?.model?.modelID,s=!!(a&&o&&r.some(e=>e.id===a&&e.models?.some(e=>e.id===o)));return{providerID:s?a:e.providerID,modelID:s?o:e.modelID,agent:t}},Yo=e=>e===`primary`||e===`all`||e==null,Xo=e=>e.filter(e=>Yo(e.mode)),Zo=(e,t,n=1)=>{let r=Xo(e);if(r.length<=1)return null;let i=r.findIndex(e=>e.name===t);return r[((i>=0?i:0)+n+r.length)%r.length]?.name??null},Qo=e=>e.charAt(0).toUpperCase()+e.slice(1),$o=(e,t)=>{if(t){let n=e.find(e=>e.name===t);return Qo(n?n.name:t)}let n=e.filter(e=>Yo(e.mode)),r=n.find(e=>e.name===`build`)||n[0]||e[0];return r?Qo(r.name):`Select agent`},es=(e,t,n=``)=>qo(e,t,{fallbackLabel:n}),ts=e=>{if(!e||e.trim().length===0)return`Default`;let t=e.trim();return/^\d+(\.\d+)?$/.test(t)?t:Qo(t)},ns=e=>typeof e==`object`&&!!e,rs=e=>typeof e==`string`&&e.length>0,is=e=>{let t=new Map;if(!Array.isArray(e))return t;for(let n of e){if(!Array.isArray(n)||n.length<2)continue;let[e,r]=n;if(!rs(e)||!Array.isArray(r))continue;let i=new Map;for(let e of r){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;if(!rs(t)||!Array.isArray(n))continue;let r=new Map;for(let e of n){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;!rs(t)||!rs(n)||r.set(t,n)}r.size>0&&i.set(t,r)}i.size>0&&t.set(e,i)}return t},as=De()(Oe((e,t)=>({sessionModelSelections:new Map,sessionAgentSelections:new Map,sessionAgentModelSelections:new Map,sessionAgentModelVariantSelections:new Map,lastUsedProvider:null,saveSessionModelSelection:(t,n,r)=>e(e=>{let i=new Map(e.sessionModelSelections);return i.delete(t),i.set(t,{providerId:n,modelId:r}),{sessionModelSelections:i,lastUsedProvider:{providerID:n,modelID:r}}}),getSessionModelSelection:e=>t().sessionModelSelections.get(e)??null,saveSessionAgentSelection:(t,n)=>e(e=>{if(e.sessionAgentSelections.get(t)===n)return e;let r=new Map(e.sessionAgentSelections);return r.delete(t),r.set(t,n),{sessionAgentSelections:r}}),getSessionAgentSelection:e=>t().sessionAgentSelections.get(e)??null,saveAgentModelForSession:(t,n,r,i)=>e(e=>{let a=e.sessionAgentModelSelections.get(t)?.get(n);if(a?.providerId===r&&a?.modelId===i)return e;let o=new Map(e.sessionAgentModelSelections),s=new Map(o.get(t)??new Map);return o.delete(t),s.set(n,{providerId:r,modelId:i}),o.set(t,s),{sessionAgentModelSelections:o}}),getAgentModelForSession:(e,n)=>t().sessionAgentModelSelections.get(e)?.get(n)??null,saveAgentModelVariantForSession:(t,n,r,i,a)=>e(e=>{let o=`${r}/${i}`,s=new Map(e.sessionAgentModelVariantSelections),c=s.get(t),l=new Map(c??new Map),u=l.get(n),d=new Map(u??new Map);return a?d.get(o)===a?e:(s.delete(t),d.set(o,a),l.set(n,d),s.set(t,l),{sessionAgentModelVariantSelections:s}):d.has(o)?(d.delete(o),d.size===0?l.delete(n):l.set(n,d),s.delete(t),l.size>0&&s.set(t,l),{sessionAgentModelVariantSelections:s}):e}),getAgentModelVariantForSession:(e,n,r,i)=>{let a=`${r}/${i}`;return t().sessionAgentModelVariantSelections.get(e)?.get(n)?.get(a)}}),{name:`selection-store`,version:2,storage:Ye(),partialize:e=>({sessionModelSelections:Array.from(e.sessionModelSelections.entries()).slice(-150),sessionAgentSelections:Array.from(e.sessionAgentSelections.entries()).slice(-150),sessionAgentModelSelections:Array.from(e.sessionAgentModelSelections.entries()).slice(-150).map(([e,t])=>[e,Array.from(t.entries())]),sessionAgentModelVariantSelections:Array.from(e.sessionAgentModelVariantSelections.entries()).slice(-150).map(([e,t])=>[e,Array.from(t.entries()).map(([e,t])=>[e,Array.from(t.entries())])]),lastUsedProvider:e.lastUsedProvider}),merge:(e,t)=>{let n=ns(e)?e:void 0,r=new Map;if(Array.isArray(n?.sessionAgentModelSelections))for(let e of n.sessionAgentModelSelections){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;if(!rs(t)||!Array.isArray(n))continue;let i=new Map;for(let e of n){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;!rs(t)||typeof n!=`object`||!n||!rs(n.providerId)||!rs(n.modelId)||i.set(t,{providerId:n.providerId,modelId:n.modelId})}i.size>0&&r.set(t,i)}return{...t,lastUsedProvider:n?.lastUsedProvider??t.lastUsedProvider,sessionModelSelections:new Map(Array.isArray(n?.sessionModelSelections)?n.sessionModelSelections:[]),sessionAgentSelections:new Map(Array.isArray(n?.sessionAgentSelections)?n.sessionAgentSelections:[]),sessionAgentModelSelections:r,sessionAgentModelVariantSelections:is(n?.sessionAgentModelVariantSelections)}},migrate:e=>e})),os=L,ss=(e,t)=>{let n=os(t);if(!n)return null;let r=null;for(let t of e){let e=os(t.path);e&&(n!==e&&!n.startsWith(`${e}/`)||(!r||e.length>(os(r.path)?.length??0))&&(r=t))}return r},cs=(e,t,n)=>{let r=os(n);if(!r)return null;let i=null,a=null,o=-1;for(let[e,n]of t.entries())for(let t of n){let n=os(t.path);n&&(r!==n&&!r.startsWith(`${n}/`)||n.length>o&&(o=n.length,i=t,a=os(e)))}if(!i)return null;let s=[os(i.projectDirectory),a].filter(e=>!!e);for(let t of s){let n=e.find(e=>os(e.path)===t)??null;if(n)return n;let r=ss(e,t);if(r)return r}return null},ls=(e,t,n)=>cs(e,t,n)??ss(e,n),us=e=>{if(!e)return null;let t=e.indexOf(`/`);return t<=0||t>=e.length-1?null:{providerId:e.slice(0,t),modelId:e.slice(t+1)}},ds=[`concise`,`detailed`,`mentor`,`pushback`,`noFiller`,`matchEnergy`,`warmPeer`],fs=e=>typeof e==`string`&&ds.includes(e),ps=e=>{switch(e){case`concise`:return`Keep replies short. Answer first, no preamble or recap of the question. Write like you're texting a colleague who already has the context — plain sentences, not headings or bullets. Reach for a list only when the content is genuinely a list; never use one to look organised.`;case`detailed`:return`Take the space you need to actually explain things. Walk through what's going on, why it matters, and where the real tradeoffs are. Prefer flowing prose over bullet points and headings — structure the answer with paragraphs and let the reasoning carry it. Lists are fine when something really is enumerable, but don't fragment a normal explanation into bullets.`;case`mentor`:return`Talk like a patient senior engineer pairing with someone less experienced. Explain the underlying idea before the answer, think out loud about how you'd approach it, and drop in a small concrete example when it actually helps. Keep it conversational — no lecture format, no checklists, no numbered steps unless the task literally is a sequence.`;case`pushback`:return`Don't agree automatically. If something I say sounds off — a wrong assumption, a flawed approach, a request that won't actually do what I think it will — push back first. Explain what you disagree with and why, and only proceed once I've responded. Disagreement is welcome; sycophancy is not. Don't soften it with 'you might want to consider' — just say it.`;case`noFiller`:return`Cut the filler. No 'Great question', no 'Certainly', no 'I'll help you with that', no restating what I just asked. No closing summary of what you did when the diff or output already shows it. No trailing 'let me know if you need anything else'. Open with the actual content and stop when you're done.`;case`matchEnergy`:return`Mirror the size and register of my message. A one-line question gets a one-line answer. A casual aside gets a casual reply, not a structured breakdown. If I write three words, don't respond with three paragraphs. Match the tone too — informal stays informal, technical stays technical. Don't inflate small asks into full essays.`;case`warmPeer`:return`Talk like a colleague, not an assistant. First person is fine and encouraged — 'I'd do this', 'I don't love that approach', 'that was sloppy of me'. Have actual opinions and share them. Push back when you disagree. Admit when you screwed up without grovelling. Skip the corporate helpfulness and performative politeness — just be a person.`}},ms=new Map,hs=new Map,gs=({enabled:e,preset:t,customInstructions:n})=>e?t===`custom`?(typeof n==`string`?n.trim():``)||null:fs(t)?ps(t):null:null,_s=(e,t=u())=>{ms.set(t,{enabled:e.enabled===!0,preset:e.preset,customInstructions:e.customInstructions})},vs=(e=u())=>{let t=ms.get(e);if(t)return gs(t)},ys=async()=>{let e=u(),t=vs(e);if(t!==void 0)return t;let n=hs.get(e);if(n)return n;let r=(async()=>{let t=await I(e);return _s({enabled:t.responseStyleEnabled,preset:t.responseStylePreset,customInstructions:t.responseStyleCustomInstructions},e),vs(e)??null})();hs.set(e,r);try{return await r}finally{hs.get(e)===r&&hs.delete(e)}},bs;(function(e){function t(e,t,n){let r=0,i=e.length-1;for(;r<=i;){let a=Math.floor((r+i)/2),o=n(e[a]);if(o===t)return{found:!0,index:a};o<t?r=a+1:i=a-1}return{found:!1,index:r}}e.search=t})(bs||={});function xs(e,t){return e.findIndex(e=>e.id===t)}function Ss(e,t){if(!t)return e.slice();let n=xs(e,t);return n<0?e.slice():e.slice(0,n)}function Cs(e,t,n){let r=xs(e,n);return r<0?!1:xs(e,t)>=r}function ws(e,t){if(!t){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}return}let n=xs(e,t);if(!(n<0))for(let t=n-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}}function Ts(e,t){let n=xs(e,t);if(!(n<0))for(let t=n+1;t<e.length;t+=1){let n=e[t];if(n?.role===`user`)return n}}var Es=`openchamber:sync:debug`,Ds;function Os(){if(Ds!==void 0)return Ds;try{Ds=typeof localStorage<`u`&&localStorage.getItem(Es)===`1`}catch{Ds=!1}return Ds}function ks(e,...t){Os()&&(`${e}`,[...t])}var As={pipeline:{coalesced:(e,t)=>ks(`pipeline`,`coalesced`,e,t),flush:e=>ks(`pipeline`,`flush`,`${e} events`)},reducer:{messageUpdatedUnchanged:(e,t,n,r,i)=>ks(`reducer`,`message.updated UNCHANGED (skipped)`,{sessionID:e,messageID:t,role:n,finish:r,completed:i}),partUpdatedNoExistingParts:(e,t,n)=>ks(`reducer`,`message.part.updated NO EXISTING PARTS`,{messageID:e,partID:t,partType:n}),partDeltaNoParts:(e,t)=>ks(`reducer`,`message.part.delta DROPPED (no parts array)`,{messageID:e,partID:t}),partDeltaNotFound:(e,t)=>ks(`reducer`,`message.part.delta DROPPED (partID not found)`,{messageID:e,partID:t}),partSkipped:(e,t,n)=>ks(`reducer`,`message.part.updated SKIPPED (type filtered)`,{messageID:e,partID:t,partType:n})},dispatch:{eventNoChange:(e,t,n)=>ks(`dispatch`,`event → no change`,{eventType:e,sessionID:t,messageID:n}),eventApplied:(e,t,n)=>ks(`dispatch`,`event → applied`,{eventType:e,sessionID:t,messageID:n})},recovery:{materializing:e=>ks(`recovery`,`materializing session`,e)}},js=new Set([`patch`,`step-start`,`step-finish`]),Ms=[`text`,`output`],Ns=new Set([`completed`,`error`,`aborted`,`failed`,`timeout`,`cancelled`]);function Ps(e,t){if(!e||t.length===0)return(e??``)+t;if(e.endsWith(t))return e;let n=Math.min(e.length,t.length);for(let r=n;r>0;r--)if(e.endsWith(t.slice(0,r)))return e+t.slice(r);return e+t}function Fs(e,t){let n=[];for(let r of Ms){let i=e[r],a=t[r];typeof i==`string`&&typeof a==`string`&&i.length!==0&&a.length!==0&&(a===i||a.startsWith(i)||i.startsWith(a))&&n.push(r)}return n}function Is(e){let t=e.state?.time?.end;if(typeof t==`number`)return t;let n=e.time?.end;return typeof n==`number`?n:void 0}function Ls(e){if(e.type!==`tool`)return;let t=e.state?.status;return typeof t==`string`?t:void 0}function Rs(e,t){if(e.type!==`tool`||t.type!==`tool`)return!1;let n=Ls(e),r=Ls(t);if(n&&Ns.has(n)&&(!r||!Ns.has(r)))return!0;let i=Is(e),a=Is(t);return typeof i==`number`&&typeof a!=`number`}function zs(e,t){if(e===t)return!0;if(e===void 0||t===void 0)return e===t;try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}}var Bs=[`agent`,`mode`,`providerID`,`modelID`,`variant`],Vs=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Hs=[`input`,`output`,`reasoning`];function Us(e){if(!e||typeof e!=`object`)return!1;let t=e;return Hs.some(e=>typeof t[e]==`number`&&Number.isFinite(t[e])&&t[e]>0)}function Ws(e){if(!e||typeof e!=`object`)return!1;let t=e;return Hs.every(e=>typeof t[e]!=`number`||!Number.isFinite(t[e])||t[e]<=0)}function Gs(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Ks(e,t){let n={...e,...t},r=e,i=t,a=n;for(let e of Bs){let t=Gs(i[e]),n=Gs(r[e]);t?a[e]=t:n?a[e]=n:delete a[e]}let o=i.model,s=r.model;return Vs(o)?a.model=o:Vs(s)?a.model=s:delete a.model,(e.time||t.time)&&(n.time={...e.time,...t.time}),Us(r.tokens)&&Ws(i.tokens)&&(a.tokens=r.tokens),n}function qs(e,t){if(e.role!==t.role||e.finish!==t.finish||e.time?.completed!==t.time?.completed)return!1;for(let n of[`summary`,`error`,`cost`,`tokens`,`structured`,`model`,`tools`,`format`,`variant`,`agent`,`mode`,`providerID`,`modelID`,`system`])if(!zs(e[n],t[n]))return!1;return!0}function Js(e,t,n){if(!t)return!1;let r=e.message[t];return r?xs(r,n)>=0:!1}function Ys(e,t){switch(t.type){case`message.updated`:{let n=t.properties.info,r=e.message[n.sessionID],i=!!r&&r.every(t=>t.role!==`assistant`||e.part[t.id]!==void 0);if(n.role===`assistant`&&i&&e.part[n.id]===void 0&&(e.part[n.id]=[]),!r)return e.message[n.sessionID]=[n],!0;let a=xs(r,n.id);if(a>=0){let t=r[a],i=Ks(t,n);if(qs(t,i))return As.reducer.messageUpdatedUnchanged(n.sessionID,n.id,n.role,n.finish,n.time?.completed),!1;let o=[...r];o[a]=i,e.message[n.sessionID]=o}else e.message[n.sessionID]=[...r,n];return!0}case`message.removed`:{let n=t.properties,r=e.message[n.sessionID];if(r){let t=xs(r,n.messageID);if(t>=0){let i=[...r];i.splice(t,1),e.message[n.sessionID]=i}}return delete e.part[n.messageID],!0}case`message.part.updated`:{let n=t.properties,r=n.part;if(js.has(r.type))return As.reducer.partSkipped(r.messageID,r.id,r.type),!1;let i=r.messageID,a=n.sessionID??r.sessionID;if(!i)return!1;let o=!Js(e,a,i),s=e.part[i];if(!s)return As.reducer.partUpdatedNoExistingParts(i,r.id,r.type),e.part[i]=[r],!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}};let c=[...s],l=bs.search(c,r.id,e=>e.id);if(l.found){let e=c[l.index];if(Rs(e,r))return!1;let t=Fs(e,r);c[l.index]=t.length>0?{...r,__dedupeNextDeltaFields:t}:r}else{let e=r.type===`text`||r.type===`file`?c.findIndex(e=>e.type===r.type&&e.__openchamberOptimistic===!0):-1;e>=0&&c.splice(e,1);let t=bs.search(c,r.id,e=>e.id);c.splice(t.index,0,r)}return e.part[i]=c,!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}}}case`message.part.removed`:{let n=t.properties,r=e.part[n.messageID];if(!r)return!1;let i=bs.search(r,n.partID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),t.length===0?delete e.part[n.messageID]:e.part[n.messageID]=t,!0}return!1}case`message.part.delta`:{let n=t.properties,r=e.part[n.messageID];if(!r)return As.reducer.partDeltaNoParts(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`orphan-delta`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let i=bs.search(r,n.partID,e=>e.id);if(!i.found)return As.reducer.partDeltaNotFound(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`missing-delta-part`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let a=r[i.index],o=a[n.field],s=a.__dedupeNextDeltaFields??[],c=s.includes(n.field),l=[...r];return l[i.index]={...a,[n.field]:c?Ps(o,n.delta):(o??``)+n.delta,__dedupeNextDeltaFields:s.filter(e=>e!==n.field)},e.part[n.messageID]=l,!0}default:return!1}}function Xs(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function Zs(e){let t=e.id;return typeof t==`string`&&t.length>0?t:void 0}function Qs(e){return e.slim===!0}function $s(e,t){if(!e||e.length===0||!t.some(e=>Qs(e)))return t;let n=new Map;for(let t of e){let e=Zs(t);e&&!Qs(t)&&n.set(e,t)}if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!Qs(e))return e;let t=Zs(e);if(!t)return e;let i=n.get(t);return i?(r=!0,i):e});return r?i:t}function ec(e,t){return e===t||e.length===t.length&&e.every((e,n)=>e===t[n])?t:e}function tc(e){let t=e.clientRole??e.role;return typeof t==`string`?t:``}function nc(e){return tc(e)!==`assistant`||!Xs(e)}function rc(e,t,n){if(!e||e.length===0)return t;let r=$s(e,t);if(nc(n))return ec(r,e);let i=new Set;for(let e of r){let t=Zs(e);t&&i.add(t)}let a=new Map,o=[],s,c=0;for(let t of e){let e=Zs(t);if(e&&i.has(e)){s=e;continue}if(!e)continue;if(c+=1,!s){o.push(t);continue}let n=a.get(s);if(n){n.push(t);continue}a.set(s,[t])}if(c===0)return ec(r,e);let l=[...o];for(let e of r){l.push(e);let t=Zs(e);if(!t)continue;let n=a.get(t);n&&l.push(...n)}return ec(l,e)}var ic=e=>Object.freeze(e),ac=Object.freeze({initial:ic({id:`initial`,onStale:`drop`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),prepend:ic({id:`history`,onStale:`drop`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),recovery:ic({id:`recovery`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),"reconcile-page":ic({id:`reconcile-page`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`keep-unless-full`}),materialize:ic({id:`materialize`,onStale:`drop`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`})}),oc=ic({id:`recovery-backfill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),sc=ic({id:`send-gap-fill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),cc=ac.initial;function lc(e){let t=ac[e.purpose]??cc;return!e.stale||t.onStale===`drop`?t:oc}function uc(e,t){return e.preserveStreaming===`none`?!1:e.preserveStreaming===`all`||t===`assistant`}var dc=e=>structuredClone(e),fc=e=>({transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID});function pc(e){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID])}function mc(e,t){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID,t])}function hc(e){return JSON.stringify([e.transport,e.generation])}function gc(e,t){return e.created===t.created?e.messageID<t.messageID?-1:+(e.messageID>t.messageID):e.created-t.created}function _c(e){let t=e.time?.created;return{created:typeof t==`number`&&Number.isFinite(t)?t:0,messageID:e.id}}function vc(e){return nc(e)}function yc(e){return Qs(e)?`slim`:`full`}function bc(e){return e.some(e=>Qs(e))?`slim`:`full`}var xc=e=>{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(xc);let t=e,n={};for(let e of Object.keys(t).sort()){let r=t[e];r!==void 0&&(n[e]=xc(r))}return n},Sc=e=>{let t=new Uint8Array(e),n=``;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n};async function Cc(e,t){let n=JSON.stringify(xc({info:e,parts:t})),r=new TextEncoder().encode(n);return{hash:Sc(await crypto.subtle.digest(`SHA-256`,r)),byteSize:r.byteLength}}var wc=e=>({scope:fc(e.scope),messageID:e.messageID,info:dc(e.info),parts:dc(e.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}}),Tc=e=>{let t=0;return()=>{let n=e();return t=n>t?n:t+1,t}},Ec=(e,t)=>{let n=t.slice().sort((e,t)=>gc(e.sortKey,t.sortKey)).map(wc);return{scope:fc(e),records:n,byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},Dc=e=>dc(e),Oc=e=>fc(e),kc=(e=Date.now)=>Tc(e),Ac=e=>wc(e),jc=(e,t)=>Ec(e,t.slice());function Mc(e){return vc(e.info)?e.existing?.completeness===`full`&&e.incomingCompleteness===`slim`?{status:`skipped`,reason:`slim-downgrade`}:e.incomingHash!==void 0&&e.existing?.contentHash===e.incomingHash?{status:`skipped`,reason:`unchanged`}:{status:`written`}:{status:`skipped`,reason:`not-settled`}}var Nc=(e,t)=>e<t?-1:+(e>t),Pc=[`text`,`output`],Fc={pending:1,started:2,running:3,completed:4,error:4};function Ic(e,t){return e.filter(e=>!!e?.id&&!t.has(e.type)).sort((e,t)=>Nc(e.id,t.id))}function Lc(e,t){if(!e||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.id!==i.id||JSON.stringify(r)!==JSON.stringify(i))return!1}return!0}function Rc(e){let t=e.state?.time?.end;if(typeof t==`number`)return t;let n=e.time?.end;return typeof n==`number`?n:void 0}function zc(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Bc(e){return Rc(e)===void 0&&Pc.some(t=>{let n=zc(e,t);return typeof n==`string`&&n.length>0})}function Vc(e){let t=e.state;if(!(!t||typeof t!=`object`))return t}function Hc(e){let t=Vc(e)?.status;return typeof t==`string`?t:void 0}function Uc(e){return e?Fc[e]??0:0}function Wc(e,t){if(Bc(e))return!0;if(Rc(e)===void 0){if(e.type===`tool`){let n=Hc(e);return n===`completed`||n===`error`?t:!0}return!0}return t}function Gc(e){let t=e.state?.time;if(!t||typeof t!=`object`)return;let n=typeof t.start==`number`?t.start:void 0,r=typeof t.end==`number`?t.end:void 0;if(n!==void 0||r!==void 0)return{start:n,end:r}}function Kc(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length>0}function qc(e,t,n){if(e.type!==`tool`||t.type!==`tool`)return n;let r=Vc(e);if(!r)return n;let i=Vc(n)??{},a=Vc(t)??{},o={...i},s=!1,c=Hc(e),l=Hc(t);Uc(c)>Uc(l)&&c&&(o={...o,status:c},s=!0);let u=r.input,d=a.input;Kc(u)&&!Kc(d)&&(o={...o,input:u},s=!0);let f=r.output,p=a.output;typeof f==`string`&&f.length>0?(typeof p!=`string`||p.length<f.length)&&(typeof p!=`string`||p.length===0||f.startsWith(p))&&(o={...o,output:f},s=!0):f!==void 0&&p===void 0&&(o={...o,output:f},s=!0);let m=r.metadata;return Kc(m)&&!Kc(a.metadata)&&(o={...o,metadata:m},s=!0),s?n===t?{...t,state:o}:{...n,state:o}:n}function Jc(e,t){if(!e||Rc(t)!==void 0)return t;let n=t;for(let r of Pc){let i=zc(e,r);if(!i)continue;let a=zc(t,r);if(typeof a==`string`&&a.length>=i.length||typeof a==`string`&&a.length>0&&!i.startsWith(a))continue;n===t&&(n={...t});let o=n;o[r]=i}let r=Gc(e);if(r){let e=Gc(t),i=e?.start??r.start,a=e?.end??r.end;if(i!==e?.start||a!==e?.end){n===t&&(n={...t});let e=n;e.state={...n.state??{},time:{start:i,end:a}}}}return n=qc(e,t,n),n}function Yc(e,t){if(!e||e.length===0||!t.some(e=>Qs(e)))return t;let n=new Map;for(let t of e)t.id&&!Qs(t)&&n.set(t.id,t);if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!Qs(e)||!e.id)return e;let t=n.get(e.id);return t?(r=!0,t):e});return r?i:t}function Xc(e){return e.__openchamberOptimistic===!0}function Zc(e){return!!(e&&e.length>0&&e.some(Xc))}function Qc(e){return e.length===0||e.some(e=>Qs(e))}function $c(e,t,n,r,i,a){if(a===`keep-unless-full`&&e&&Zc(e)&&Qc(t))return e;let o=Yc(e,t);if(!e||e.length===0||!r)return o;let s=new Map(e.map(e=>[e.id,e])),c=o,l=!1;for(let e=0;e<o.length;e+=1){let t=o[e],n=Jc(s.get(t.id),t);n!==t&&(l||(c=[...o]),c[e]=n,l=!0)}let u=new Set(o.map(e=>e.id)),d=o.some(e=>Qs(e)),f=e.filter(e=>!!e?.id&&!u.has(e.id)&&!n.has(e.type)&&(Wc(e,i)||d&&!Qs(e)));return f.length===0?c:[...c,...f].sort((e,t)=>Nc(e.id,t.id))}var el=e=>e,tl=e=>{let t=el(e).finish;return typeof t==`string`&&t.length>0},nl=e=>typeof el(e).time?.completed==`number`,rl=e=>!!el(e).error;function il(e,t){let n=el(t),r=n.finish,i=n.time?.completed,a=n.error,o=e.tokens,s=t.tokens,c=!tl(e)&&typeof r==`string`&&r.length>0,l=!nl(e)&&typeof i==`number`,u=!rl(e)&&!!a,d=!Us(o)&&Us(s);if(!c&&!l&&!u&&!d)return e;let f={...e};return c&&(f.finish=r),l&&(f.time={...el(e).time,completed:i}),u&&(f.error=a),d&&(f.tokens=s),f}function al(e,t,n,r){if(t.length===0)return e;let i=new Map(t.map(e=>[e.id,e])),a=!1,o=[];for(let t of e){let e=n(t,i.get(t.id));e!==t&&(a=!0),o.push(e)}let s=new Set(e.map(e=>e.id)),c=t.filter(e=>!s.has(e.id));if(c.length===0)return a?o:e;if(!t.some(e=>s.has(e.id)))return r===`prepend`?[...c,...o]:r===`by-created`?ol(o,c):[...o,...c];let l=-1;for(let e of t){let t=o.findIndex(t=>t.id===e.id);if(t>=0){l=t;continue}l+=1,o.splice(l,0,e)}return o}function ol(e,t){let n=e.slice();for(let e of t){let t=_c(e),r=n.length;for(let e=0;e<n.length;e+=1)if(gc(t,_c(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function sl(e,t,n){return al(e,t,(e,t)=>t?il(e,t):e,n)}function cl(e,t,n){return al(e,t,(e,t)=>!t||JSON.stringify(e)===JSON.stringify(t)?e:Ks(e,t),n)}function ll(e,t,n,r={}){let i=r.skipPartTypes??new Set,a=r.merge??cc,o=r.placeUnanchoredNewMessages??`append`,s=n.filter(e=>!!e?.info?.id),c=s.map(e=>e.info),l=e.message[t],u=l??[],d=a.messages===`upsert`?cl(u,c,o):sl(u,c,o),f=d!==u||l===void 0&&s.length===0,p=!1,m={...e.part},h=a.parts===`skip-existing`;for(let e of s){let t=e.info.id;if(h&&m[t])continue;let n=e.info.role===`assistant`,r=m[t],o=$c(r,Ic(e.parts??[],i),i,uc(a,e.info.role),Xs(e.info),a.protectOptimistic);(r?Lc(r,o):o.length===0&&!n)||o.length===0&&!n||(m[t]=o,p=!0)}return{message:f?{...e.message,[t]:d}:e.message,part:p?m:e.part,messages:d,messagesChanged:f,partsChanged:p}}function ul(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function dl(e){let t=e.messages;if(!t)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let n=t.length>0?t[t.length-1]?.id:void 0,r=[];for(let i of t)i.role===`assistant`&&(e.parts[i.id]||i.id===n&&ul(i)||r.push(i.id));return{hasMessages:!0,renderable:r.length===0,missingPartMessageIDs:r}}var fl=(e,t)=>e<t?-1:+(e>t);function pl(e){return e.filter(e=>!!e?.id).sort((e,t)=>fl(e.id,t.id))}function ml(e,t){if(t.length===0)return{...e,confirmed:[]};let n=[...e.session],r=new Map(e.part.map(e=>[e.id,pl(e.part)])),i=[];for(let e of t){if(n.findIndex(t=>t.id===e.message.id)<0){n.push(e.message),r.set(e.message.id,pl(e.parts));continue}let t=r.get(e.message.id);if(t&&t.length>0){i.push(e.message.id);continue}r.set(e.message.id,pl(e.parts))}return{cursor:e.cursor,complete:e.complete,session:n,part:[...r.entries()].sort((e,t)=>fl(e[0],t[0])).map(([e,t])=>({id:e,part:t})),confirmed:i}}var hl={kind:`unknown`,loadedTurns:0},gl=3e4,_l=12e5,vl={project:``,projectMeta:void 0,icon:void 0,provider:{all:[],connected:[],default:{}},config:{},path:{state:``,config:``,worktree:``,directory:``,home:``},status:`loading`,agent:[],command:[],session:[],sessionTotal:0,session_status:{},session_status_observed_at:{},session_status_snapshot_at:void 0,session_error_at:{},session_diff:{},todo:{},permission:{},question:{},mcp:{},lsp:[],vcs:void 0,limit:20},yl={ready:!1,path:{state:``,config:``,worktree:``,directory:``,home:``},projects:[],providers:{all:[],connected:[],default:{}},providerAuth:{},config:{},reload:void 0,sessionTodo:{}};function bl(e,t){return e===void 0||t===void 0?!1:t>e}var xl=class extends Error{};function Sl(e,t,n){if(n===`reconcile-page`)return e??hl;let r=0;typeof t.turnCount==`number`&&Number.isFinite(t.turnCount)?r=Math.max(0,Math.floor(t.turnCount)):typeof t.requestedTurnLimit==`number`&&Number.isFinite(t.requestedTurnLimit)?r=Math.max(0,Math.floor(t.requestedTurnLimit)):t.records.length>0&&(r=1);let i=e?.loadedTurns??0,a=n===`prepend`?i+r:r;if(t.complete)return{kind:`exhausted`,loadedTurns:a};let o=typeof t.cursor==`string`&&t.cursor.length>0?t.cursor:void 0;if(!o)throw new xl(`session message page: complete=false requires non-empty cursor`);if(t.records.length===0)throw new xl(`session message page: complete=false with zero records makes no progress`);if(n===`prepend`&&e?.kind===`has-more`&&e.cursor===o)throw new xl(`session message page: prepend returned the same cursor without progress`);return{kind:`has-more`,cursor:o,loadedTurns:a}}function Cl(e,t){return!e||!t?e===t:e.kind!==t.kind||e.loadedTurns!==t.loadedTurns?!1:e.kind===`has-more`&&t.kind===`has-more`?e.cursor===t.cursor:!0}function wl(e,t,n,r){let i=bl(r.capturedRevision,r.liveRevision),a=lc({purpose:r.purpose,stale:i}),o=e.session_history_boundary?.[t];if(!n.ok)return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:e.message[t]??[],boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[],error:n.error};if(i&&a.onStale===`drop`){let n=e.message[t]??[];if(n.length>0)return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:n,boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[]}}let s=r.optimistic??[],c=ml({session:n.records.map(e=>e.info),part:n.records.map(e=>({id:e.info.id,part:e.parts??[]})),cursor:n.cursor,complete:n.complete},s),l=ll(e,t,c.session.map(e=>({info:e,parts:c.part.find(t=>t.id===e.id)?.part??[]})),{skipPartTypes:r.skipPartTypes,merge:a,placeUnanchoredNewMessages:r.purpose===`prepend`?`prepend`:r.purpose===`reconcile-page`?`by-created`:`append`}),u;try{u=Sl(o,{ok:!0,records:n.records,cursor:c.cursor,complete:c.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit},r.purpose)}catch(n){if(!(n instanceof xl))throw n;return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:e.message[t]??[],boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[],error:n.message}}let d=!Cl(o,u),f=l.messagesChanged,p=l.partsChanged,m=f||p||d,h=[];c.confirmed.length>0&&h.push({type:`clear-optimistic`,messageIDs:c.confirmed});let g=d||!o?u:o;return{applied:!0,merge:a,changed:m,messagesChanged:f,partsChanged:p,boundaryChanged:d,message:l.message,part:l.part,messages:l.messages,boundary:g,meta:{limit:g.loadedTurns,cursor:g.kind===`has-more`?g.cursor:void 0,complete:g.kind===`exhausted`},confirmedOptimisticIDs:c.confirmed,commands:h}}var Tl=new Set([`tool`,`reasoning`,`file`,`text`]),El=new Set([`tool`,`reasoning`,`file`]);function Dl(e){return e.some(e=>Qs(e)&&Tl.has(e.type))}function Ol(e,t){let n=!1,r=!1;for(let t of e)El.has(t.type)&&(n=!0,Qs(t)&&(r=!0));return n?r?!0:t?Xs(t):!1:!1}var kl=e=>{if(!e)return``;let t=e.clientRole??e.role;return typeof t==`string`?t:``};function Al(e,t){return!e?.id||kl(e)!==`user`?!1:!t||t.length===0||!t.some(e=>e.type===`subtask`||e.type===`compaction`)}function jl(e){let t=0;for(let n of e.messageOrder)Al(e.messagesByID[n],e.partsByMessageID[n])&&(t+=1);return t}var Ml=(e,t)=>{let n=e.messageOrder.lastIndexOf(t);if(n<0)return[];let r=[];for(let i=n+1;i<e.messageOrder.length;i+=1){let n=e.messageOrder[i],a=e.messagesByID[n];if(!a)continue;if(Al(a,e.partsByMessageID[n]))break;if(kl(a)!==`assistant`)continue;let o=a.parentID;typeof o==`string`&&o.length>0&&o!==t||r.push(a)}return r},Nl=(e,t)=>Xs(e)?!0:Array.isArray(t)&&t.length>0;function Pl(e){let t;for(let n=e.messageOrder.length-1;n>=0;--n){let r=e.messageOrder[n];if(Al(e.messagesByID[r],e.partsByMessageID[r])){t=r;break}}return t?Ml(e,t).some(t=>Nl(t,e.partsByMessageID[t.id])):!1}function Fl(e){return e.materializeActive?`p2`:e.prependActive||e.earlierHistoryLoaded?`p1`:e.p0Satisfied?`p0`:`idle`}var Il=new Set([`stop`,`length`]);function Ll(e){let t=e.messageOrder[e.messageOrder.length-1];if(!t)return!1;let n=e.messagesByID[t];if(!n||kl(n)!==`assistant`||n.error)return!1;let r=n.finish;return typeof r!=`string`||!Il.has(r)?!1:typeof n.time?.completed!=`number`||r===`stop`&&!Us(n.tokens)}function Rl(e,t){return t.kind===`has-more`?{sessionID:e,boundary:t,hasPreviousPage:!0,isComplete:!1,cursor:t.cursor,loadedTurns:t.loadedTurns}:t.kind===`exhausted`?{sessionID:e,boundary:t,hasPreviousPage:!1,isComplete:!0,cursor:null,loadedTurns:t.loadedTurns}:{sessionID:e,boundary:t,hasPreviousPage:!1,isComplete:!1,cursor:null,loadedTurns:t.loadedTurns}}function zl(e){let t={},n={},r=[];for(let i of e.messages){if(!i?.id)continue;r.push(i.id),t[i.id]=i;let a=e.parts[i.id];a&&(n[i.id]=a)}return{sessionID:e.sessionID,messageOrder:r,messagesByID:t,partsByMessageID:n,boundary:e.boundary,liveRevision:e.liveRevision??0}}var Bl=[`message.updated`,`message.removed`,`message.part.updated`,`message.part.removed`,`message.part.delta`];function Vl(e){return Bl.includes(e)}function Hl(e){return e.trim()}function Ul(e){return`${Hl(e.directory)}\n${e.sessionID}`}function Wl(e,t){return e.session_history_boundary?.[t]??hl}function Gl(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Kl(e,t){return e.kind!==t.kind||e.loadedTurns!==t.loadedTurns?!1:e.kind===`has-more`&&t.kind===`has-more`?e.cursor===t.cursor:!0}function ql(e,t,n){n.applied&&e.setState(e=>{let r={};if(n.messagesChanged&&(r.message=n.message),n.partsChanged&&(r.part=n.part),n.boundary&&(n.boundaryChanged||!e.session_history_boundary?.[t]))r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary};else if(n.boundary&&n.boundaryChanged===!1){let i=e.session_history_boundary?.[t];(!i||!Kl(i,n.boundary))&&(r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary})}return!r.message&&!r.part&&!r.session_history_boundary&&n.boundary&&(r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary}),!r.message&&!r.part&&!r.session_history_boundary?{}:r})}function Jl(e,t,n){let r=e.getState(),i=n.page,a=wl(r,t,{ok:!0,records:i.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:i.cursor,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:i.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 a.applied?(ql(e,t,a),{applied:!0,changed:a.changed,boundary:a.boundary,meta:a.meta,confirmedOptimisticIDs:a.confirmedOptimisticIDs}):{applied:!1,changed:!1,error:a.error}}function Yl(e,t){if(t.length===0)return{applied:!1,changed:!1};let n=e.getState(),r={message:{...n.message??{}},part:{...n.part??{}}},i=!1,a=!1,o;for(let e of t){if(!Vl(e.type))continue;i=!0;let t=Ys(r,e),n=typeof t==`boolean`?t:t.changed,s=typeof t==`boolean`?void 0:t.materialization;s&&!o&&(o=s),n&&(a=!0)}return i?a?(e.setState({message:r.message,part:r.part}),{applied:!0,changed:!0,...o?{materialization:o}:{}}):{applied:!0,changed:!1,...o?{materialization:o}:{}}:{applied:!1,changed:!1}}function Xl(e,t){return Yl(e,[t.event])}function Zl(e,t){return Yl(e,t.events)}function Ql(e,t,n){if(n.records.length===0)return{applied:!1,changed:!1};let r=e.getState(),i=ll({message:r.message??{},part:r.part??{}},t,n.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),{skipPartTypes:n.skipPartTypes,merge:n.merge});return!i.messagesChanged&&!i.partsChanged?{applied:!0,changed:!1}:(e.setState({...i.messagesChanged?{message:i.message}:{},...i.partsChanged?{part:i.part}:{}}),{applied:!0,changed:!0})}function $l(e,t,n){let r=e.getState(),i=r.message?.[t],a=r.part?.[n]!==void 0;if(!i&&!a)return{applied:!0,changed:!1};let o={...r.message??{}},s=!1;if(i){let e=[...i],r=e.findIndex(e=>e.id===n);r>=0&&(e.splice(r,1),o[t]=e,s=!0)}let c={...r.part??{}},l=!1;return c[n]!==void 0&&(delete c[n],l=!0),!s&&!l?{applied:!0,changed:!1}:(e.setState({...s?{message:o}:{},...l?{part:c}:{}}),{applied:!0,changed:!0})}function eu(e,t,n,r,i){r.setOptimisticShadow?.({directory:i,sessionID:t,message:n.message,parts:n.parts});let a=e.getState(),o={...a.message??{}},s={...a.part??{}},c=o[t]?[...o[t]]:[];return c.some(e=>e.id===n.message.id)||c.push(n.message),o[t]=c,s[n.message.id]=Gl(n.parts),e.setState({message:o,part:s}),{applied:!0,changed:!0}}function tu(e,t,n,r,i){r.clearOptimisticShadow?.({directory:i,sessionID:t,messageID:n});let a=e.getState(),o={...a.message??{}},s={...a.part??{}},c=!1,l=o[t];if(l){let e=[...l],r=e.findIndex(e=>e.id===n);r>=0&&(e.splice(r,1),o[t]=e,c=!0)}return s[n]!==void 0&&(delete s[n],c=!0),c&&e.setState({message:o,part:s}),{applied:!0,changed:c}}function nu(e,t,n,r){return n.clearOptimisticShadow?.({directory:r,sessionID:e,messageID:t}),{applied:!0,changed:!1}}function ru(e,t){let n=e.getState(),r=n.message?.[t],i=n.session_history_boundary?.[t],a=!!(r&&r.length>0),o=i!==void 0,s=new Set;if(r)for(let e of r)e?.id&&s.add(e.id);let c=!1,l={...n.part??{}};for(let e of s)l[e]!==void 0&&(delete l[e],c=!0);for(let[e,n]of Object.entries(l))s.has(e)||n?.some(e=>e.sessionID===t)&&(delete l[e],c=!0);if(!a&&!o&&!c)return!1;let u={...n.message??{}};delete u[t];let d={...n.session_history_boundary??{}};return delete d[t],e.setState({message:u,part:l,session_history_boundary:d}),!0}function iu(e,t,n){let r=ru(e,t);if(!n.page)return{applied:!0,changed:r};let i=Jl(e,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes});return{...i,changed:r||i.changed,applied:i.applied||r}}function au(e){let t=new Map,n=new Map,r=r=>{let i=Ul(r);if(n.has(i))return;let a=Hl(r.directory),o=e.getStore(a),s=r.sessionID,c=o.getState().message?.[s],l=Wl(o.getState(),s),u=new Map;for(let e of c??[])u.set(e.id,o.getState().part?.[e.id]);let d=o.subscribe(e=>{let n=e.message?.[s],a=Wl(e,s),o=!1,d=new Map;for(let t of n??[]){let n=e.part?.[t.id];d.set(t.id,n),u.get(t.id)!==n&&(o=!0)}u.size!==d.size&&(o=!0);let f=n!==c,p=Kl(a,l);if(c=n,l=a,u=d,!f&&!o&&p)return;let m=t.get(i);if(!(!m||m.size===0))for(let e of m)e(r)});n.set(i,d)},i=e=>{let r=t.get(e);if(r&&r.size>0)return;let i=n.get(e);i&&(i(),n.delete(e)),t.delete(e)},a={getTranscript(t){let n=Hl(t.directory),r=e.getStore(n).getState(),i=t.sessionID,a=r.message?.[i]??[],o=e.getLiveRevision?.(n,i)??0;return zl({sessionID:i,messages:a,parts:r.part??{},boundary:Wl(r,i),liveRevision:o})},getPagination(t){let n=Hl(t.directory),r=e.getStore(n).getState();return Rl(t.sessionID,Wl(r,t.sessionID))},getRequestState(t){let n=Hl(t.directory);return e.getRequestState?.(n,t.sessionID)??{sessionID:t.sessionID,status:`idle`}},getHydrationState(e){let t=a.getTranscript(e),n=Pl(t);return{sessionID:e.sessionID,p0Satisfied:n,phase:Fl({p0Satisfied:n,earlierHistoryLoaded:jl(t)>1})}},getMessage(e,t){return a.getTranscript(e).messagesByID[t]},getParts(t,n){let r=Hl(t.directory);return e.getStore(r).getState().part?.[n]??[]},hasSession(t){let n=Hl(t.directory),r=e.getStore(n).getState().message;return r?Object.prototype.hasOwnProperty.call(r,t.sessionID):!1},apply(t,n){let r=Hl(t.directory),i=e.getStore(r),a=t.sessionID;switch(n.type){case`http-page`:return Jl(i,a,n);case`sse-event`:return Xl(i,n);case`sse-event-batch`:return Zl(i,n);case`optimistic-add`:return eu(i,a,n,e,r);case`optimistic-confirm`:return nu(a,n.messageID,e,r);case`optimistic-remove`:return tu(i,a,n.messageID,e,r);case`reset`:return iu(i,a,n);case`materialize-snapshots`:return Ql(i,a,n);case`remove-message`:return $l(i,a,n.messageID);default:return{applied:!1,changed:!1}}},subscribe(e,n){let a=Ul(e),o=t.get(a);return o||(o=new Set,t.set(a,o)),o.add(n),r(e),()=>{let e=t.get(a);e&&(e.delete(n),i(a))}}};return a}var ou=new Set,su=new Set;function cu(e,t){return`${e}\n${t}`}function lu(){for(let e of su)e()}function uu(e,t){!e||!t||(ou.add(cu(e,t)),lu())}function du(e,t){!e||!t||ou.delete(cu(e,t))&&lu()}function fu(e,t){if(!e)return!1;if(t)return ou.has(cu(t,e));let n=`\n${e}`;for(let e of ou)if(e.endsWith(n))return!0;return!1}function pu(e){return su.add(e),()=>{su.delete(e)}}var mu=[],hu=new Map,gu=new Map,_u=0,vu=()=>{let e=mu.findIndex(e=>e.priority===`user`);if(e>=0){let[t]=mu.splice(e,1);return t}return mu.shift()},yu=()=>{for(;_u<4;){let e=vu();if(!e)return;hu.delete(e.key),_u+=1,Promise.resolve().then(()=>e.run()).then(t=>{e.resolve(t)},t=>{e.reject(t)}).finally(()=>{--_u,gu.delete(e.key),yu()})}};function bu(e,t,n){let r=n?.priority??`background`,i=gu.get(e);if(i){let t=hu.get(e);return t&&r===`user`&&t.priority!==`user`&&(t.priority=`user`),i}let a,o,s=new Promise((e,t)=>{a=e,o=t}),c={key:e,priority:r,run:()=>t(),resolve:e=>{a(e)},reject:o};return mu.push(c),hu.set(e,c),gu.set(e,s),yu(),s}var xu=null,Su=0,Cu=new Set;function wu(){Su+=1;for(let e of Cu)e()}function Tu(e){return e}function Eu(e){return Cu.add(e),()=>{Cu.delete(e)}}function Du(){return Su}function Ou(e){return xu?.repository===e?e:(xu={kind:`query`,repository:e},wu(),e)}function ku(){xu&&(xu=null,wu())}function U(){return xu?.repository??null}function Au(){let e=U();if(!e)throw Error(`TranscriptRepository is not bound — SyncProvider must mount first`);return e}function W(e,t){let n=U();if(n)return n;let r=Tu(t);return au({getStore:e=>r})}function G(e,t,n){return{directory:e.trim(),sessionID:t,...n?.transport===void 0?{}:{transport:n.transport},...n?.generation===void 0?{}:{generation:n.generation}}}function ju(e){try{let t=U(),n=u(),r=f();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>G(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function Mu(e,t){let n=U();return n?n.apply(e,t):null}async function Nu(e,t){let n=Au();if(typeof n.fetchPreviousPage!=`function`)throw Error(`TranscriptRepository does not support fetchPreviousPage`);await n.fetchPreviousPage(G(e,t))}async function Pu(e,t){let n=Au();if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support ensureInitial`);await n.ensureInitial(G(e,t))}async function Fu(e,t){let n=Au(),r=G(e,t);if(typeof n.destructiveReset==`function`){await n.destructiveReset(r);return}if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support retryInitial`);await n.ensureInitial(r)}async function Iu(e,t){let n=Au();if(typeof n.refreshFromAuthority!=`function`)throw Error(`TranscriptRepository does not support refreshFromAuthority`);uu(e,t);try{await n.refreshFromAuthority(G(e,t))}finally{du(e,t)}}async function Lu(e,t,n,r){let i=Au();if(typeof i.materializeMessage!=`function`)throw Error(`TranscriptRepository does not support materializeMessage`);let a=G(e,t);await bu(`${e}\n${t}\n${n}`,()=>i.materializeMessage(a,n),{priority:r?.priority??`background`})}function Ru(e,t,n){let r=U();return!r||typeof r.getMessageMaterializationState!=`function`?{sessionID:t,messageID:n,status:`idle`}:r.getMessageMaterializationState(G(e,t),n)}function zu(e,t){U()?.purgeSession?.(G(e,t))}var Bu=null;function Vu(e){Bu&&Bu!==e&&Bu.cancelAll(`reregister`),Bu=e}function Hu(e){Bu?.captureCheckpoints(e)}function Uu(e){Bu?.onCompensation(e)}async function Wu(e){return Bu?Bu.ensureOnObserve(e):null}function Gu(e){Bu?.cancelAll(e)}var K=e(Me(),1),Ku=[],qu=[],Ju={sessionID:``,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:hl,liveRevision:0};Rl(``,hl);var Yu={sessionID:``,phase:`idle`,p0Satisfied:!1};function Xu(e,t){return W(e,t)}var Zu=new Set;function Qu(e,t){return`${e}\n${t}`}function $u(e,t){if(!t)return;let n=Qu(e,t);Zu.has(n)||(Zu.add(n),Wu(G(e,t)).catch(()=>{}).finally(()=>{Zu.delete(n)}))}function ed(e,t){if(e&&t){Zu.delete(Qu(e,t));return}Zu.clear()}function td(e,t,n,r,i=Object.is,a){let o=(0,K.useRef)(r);o.current=r;let s=(0,K.useRef)(i);s.current=i;let c=(0,K.useRef)(void 0),l=a?.enabled!==!1,u=(0,K.useCallback)(()=>{if(!e||!l){let e=o.current(Ju);return(c.current===void 0||!s.current(c.current,e))&&(c.current=e),c.current}let r=Xu(t,n).getTranscript(G(t,e)),i=o.current(r);return(c.current===void 0||!s.current(c.current,i))&&(c.current=i),c.current},[t,l,e,n]),d=(0,K.useCallback)(r=>{if(!e||!l)return()=>void 0;$u(t,e);let i=Xu(t,n).subscribe(G(t,e),()=>{r()}),a=Eu(()=>{i(),c.current=void 0,ed(t,e),$u(t,e),i=Xu(t,n).subscribe(G(t,e),()=>{r()}),r()});return()=>{a(),i()}},[t,l,e,n]);return K.useSyncExternalStore(d,u,u)}function nd(e,t){if(e.messageOrder.length===0)return Ku;if(t&&t.length>0){let n=!0,r=0;for(let i of e.messageOrder){let a=e.messagesByID[i];if(a){if(r>=t.length||t[r]!==a){n=!1;break}r+=1}}if(n&&r===t.length)return t}let n=[];for(let t of e.messageOrder){let r=e.messagesByID[t];r&&n.push(r)}return n}function rd(e,t){return e.messageOrder.length===0?t?.resolved===!0?dl({messages:Ku,parts:e.partsByMessageID}):{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]}:dl({messages:nd(e),parts:e.partsByMessageID})}function id(e,t,n,r){let i=(0,H.c)(4),a;return i[0]!==t||i[1]!==e||i[2]!==n?(a=r=>{if(!e)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let i=Xu(t,n).hasSession?.(G(t,e));return rd(r,{resolved:i===!0||void 0})},i[0]=t,i[1]=e,i[2]=n,i[3]=a):a=i[3],td(e,t,n,a,ad,r)}function ad(e,t){return e.hasMessages===t.hasMessages&&e.renderable===t.renderable&&e.missingPartMessageIDs.length===t.missingPartMessageIDs.length&&e.missingPartMessageIDs.every((e,n)=>e===t.missingPartMessageIDs[n])}function od(e,t,n,r){return td(e,t,n,cd,sd,r)}function sd(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}function cd(e){return nd(e)}function ld(e,t){if(e===t)return!0;if(e.sessionID!==t.sessionID||e.liveRevision!==t.liveRevision||e.boundary.kind!==t.boundary.kind||e.boundary.loadedTurns!==t.boundary.loadedTurns||e.boundary.kind===`has-more`&&t.boundary.kind===`has-more`&&e.boundary.cursor!==t.boundary.cursor||e.messageOrder.length!==t.messageOrder.length)return!1;for(let n=0;n<e.messageOrder.length;n+=1){let r=e.messageOrder[n];if(r!==t.messageOrder[n]||e.messagesByID[r]!==t.messagesByID[r]||e.partsByMessageID[r]!==t.partsByMessageID[r])return!1}return!0}function ud(e,t,n,r){return td(e,t,n,dd,ld,r)}function dd(e){return e}function fd(e,t,n,r){if(e.length===0)return()=>void 0;let i=[],a=()=>{for(let e of i)e();i=[]},o=()=>{let r=new Set;for(let a of e){let e=`${a.directory}\n${a.sessionID}`;if(r.has(e))continue;r.add(e);let o=U();if(o){i.push(o.subscribe(G(a.directory,a.sessionID),t));continue}let s=n?.(a.directory);if(!s)continue;let c=W(a.directory,s);i.push(c.subscribe(G(a.directory,a.sessionID),t))}},s=()=>{a(),o(),t()};o();let c=Eu(s),l=r?.subscribeRebuild?.(s);return()=>{l?.(),c(),a()}}function pd(e,t){return e.length===0?``:e.map(e=>{let n=Td(e.directory,e.sessionID,t?.(e.directory)),r=n[n.length-1];return`${e.sessionID}:${r?.id??``}:${r?.role??``}:${r?.time?.completed??``}`}).join(`\0`)}function md(e,t,n){return td(e,t,n,hd)}function hd(e){return e.messageOrder.length}function gd(e,t,n){let r=(0,H.c)(8),i=(0,K.useRef)(!1),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current=!1,!1;let r=Xu(t,n),a=r.hasSession?.(G(t,e))??r.getTranscript(G(t,e)).messageOrder.length>0;return i.current=a,i.current},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>e?Xu(t,n).subscribe(G(t,e),()=>{r()}):_d,r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return K.useSyncExternalStore(c,o,o)}function _d(){}function vd(e,t,n,r){let i=(0,H.c)(10),a=(0,K.useRef)(void 0),o;i[0]!==t||i[1]!==e||i[2]!==r||i[3]!==n?(o=()=>{if(!e)return a.current=qu,qu;let i=Xu(t,n),o=r||e,s=i.getParts(G(t,o),e),c=s.length===0?qu:s;if(a.current===void 0||a.current!==c){if(a.current&&a.current.length===c.length&&a.current.every((e,t)=>e===c[t]))return a.current;a.current=c}return a.current},i[0]=t,i[1]=e,i[2]=r,i[3]=n,i[4]=o):o=i[4];let s=o,c;i[5]!==t||i[6]!==e||i[7]!==r||i[8]!==n?(c=i=>{if(!e)return bd;let a=Xu(t,n);return r?a.subscribe(G(t,r),()=>{i()}):yd},i[5]=t,i[6]=e,i[7]=r,i[8]=n,i[9]=c):c=i[9];let l=c;return K.useSyncExternalStore(l,s,s)}function yd(){}function bd(){}function xd(e,t,n){let r=(0,H.c)(8),i=(0,K.useRef)(Yu),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current!==Yu&&(i.current=Yu),i.current;let r=Xu(t,n).getHydrationState?.(G(t,e))??{sessionID:e,phase:`idle`,p0Satisfied:!1},a=i.current;return a.sessionID===r.sessionID&&a.phase===r.phase&&a.p0Satisfied===r.p0Satisfied?a:(i.current=r,r)},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>{if(!e)return Sd;$u(t,e);let a=Xu(t,n).subscribe(G(t,e),()=>{r()}),o=Eu(()=>{a(),i.current=Yu,ed(t,e),$u(t,e),a=Xu(t,n).subscribe(G(t,e),()=>{r()}),r()});return()=>{o(),a()}},r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return K.useSyncExternalStore(c,o,o)}function Sd(){}function Cd(e,t,n){let r=(0,H.c)(2),i;return r[0]===e?i=r[1]:(i=t=>Rl(e,t.boundary),r[0]=e,r[1]=i),td(e,t,n,i,wd)}function wd(e,t){return e.sessionID===t.sessionID&&e.hasPreviousPage===t.hasPreviousPage&&e.isComplete===t.isComplete&&e.cursor===t.cursor&&e.loadedTurns===t.loadedTurns&&e.boundary.kind===t.boundary.kind&&e.boundary.loadedTurns===t.boundary.loadedTurns&&(e.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||e.boundary.cursor===t.boundary.cursor)}function Td(e,t,n){if(!t)return[];let r=U();if(r){let n=r.getTranscript(G(e,t));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}if(!n)return[];let i=W(e,n).getTranscript(G(e,t));return i.messageOrder.map(e=>i.messagesByID[e]).filter(e=>!!e)}var Ed=null,Dd=``,Od=null,kd=new Set,Ad=null,jd=new Map,Md=new Map;function Nd(e,t,n,r){Ed=t,Ad!==t&&(Ad=null,jd=new Map,Md=new Map),Dd=n,r&&(Od=r)}function Pd(e,t){Od?.(e,t)}function Fd(){if(!Ed)throw Error(`ChildStoreManager not initialized — is SyncProvider mounted?`);return Ed}function Id(e){let t=Ed;if(!t)return;let n=e||Dd;if(n)return t.getState(n)}function Ld(e){let t=Id(e)?.config;return t&&Object.keys(t).length>0?t:void 0}function Rd(e){return kd.add(e),()=>{kd.delete(e)}}function zd(e,t){if(e)for(let n of kd)n(e,t)}function Bd(e){return Id(e)?.session??[]}function Vd(){return Array.from(Hd().values())}function Hd(){let e=Ed;if(!e)return Md;let t=Ad!==e||jd.size!==e.children.size;for(let[n,r]of e.children)if(jd.get(n)!==r.getState().session){t=!0;break}if(!t)return Md;let n=new Map,r=new Map;for(let[t,i]of e.children){let e=i.getState().session;n.set(t,e);for(let t of e)t?.id&&r.set(t.id,t)}return Ad=e,jd=n,Md=r,Md}function Ud(e,t,n){if(n){let r=[];for(let[i,a]of n)if(a.session.some(t=>t.id===e)&&a.hasTranscript===!0){if(i===t)return i;r.push(i)}return r.length===1?r[0]:void 0}let r=[];try{let n=U();if(Ed){for(let[i,a]of Ed.children)if(a.getState().session.some(t=>t.id===e)&&(n??W(i,a)).hasSession?.(G(i,e))){if(i===t)return i;r.push(i)}}if(r.length===0&&n){let i=n.getCacheBudget?.().listCanonical();if(i){for(let n of i)if(n.scope.sessionID===e){if(n.scope.directory===t)return n.scope.directory;r.push(n.scope.directory)}}}}catch{}let i=[...new Set(r)];return i.length===1?i[0]:void 0}function Wd(e,t){if(!e)return[];try{let n=U(),r=t??Dd;if(n){let t=n.getTranscript(G(r,e));return t.messageOrder.map(e=>t.messagesByID[e]).filter(e=>!!e)}if(Ed){let t=Ed.getChild(r);if(t){let n=W(r,t).getTranscript(G(r,e));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}}}catch{}return[]}function Gd(e,t){if(!e)return[];try{let n=U(),r=t??Dd;if(n)return[...n.getParts(G(r,e),e)];if(Ed){let t=Ed.getChild(r);if(t)return[...W(r,t).getParts(G(r,e),e)]}}catch{}return[]}function Kd(e,t){return Id(t)?.session_status[e]}var qd=`opencode`,Jd=`big-pickle`,Yd=`__add_provider__`,Xd=`zen`,Zd=`big-pickle`,Qd=async(e,t)=>{V(`config.defaults:start`);let n=typeof performance<`u`?performance.now():Date.now(),r=(e,t)=>{let r=typeof performance<`u`?performance.now():Date.now();return V(`config.defaults:end`,{source:e,durationMs:Math.round(r-n),hasDefaultModel:!!t.defaultModel,hasDefaultAgent:!!t.defaultAgent}),t};try{let t=await I(e);return _s({enabled:t?.responseStyleEnabled,preset:t?.responseStylePreset,customInstructions:t?.responseStyleCustomInstructions},e),r(`settings-bootstrap-query`,t)}catch(n){V(`config.defaults:error`,{error:n instanceof Error?n.message:String(n)});let i=ve(e);return i&&_s({enabled:i.responseStyleEnabled,preset:i.responseStylePreset,customInstructions:i.responseStyleCustomInstructions},e),r(i?`retained-settings-bootstrap`:`retained-store-settings`,i??t)}},$d=e=>us(e),ef=e=>e===Yd?``:e??``,tf=(e,t)=>e===Yd?Yd:t,nf=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},rf=e=>{if(!Array.isArray(e))return[];let t=e.map(e=>{if(!uf(e))return e;let t=Array.isArray(e.models)?Object.fromEntries(e.models.map((e,t)=>[String(t),e])):e.models;return{...e,models:t}});try{return ca({schemaVersion:1,providers:t,default:{},partial:!1}).providers.map(e=>({id:e.id,name:e.name,models:Object.values(e.models)}))}catch{return[]}},af=e=>{try{return ca({schemaVersion:1,providers:[],default:e,partial:!1}).default}catch{return{}}},of=(e,t,n)=>{let r=e.find(e=>e.id===t);return r?r.models.some(e=>e.id===n):!1},sf=({providers:e,currentProviderId:t,currentModelId:n,currentVariant:r,settingsDefaultModel:i,settingsDefaultVariant:a})=>{let o=(t,n,r)=>{if(!r)return;let i=e.find(e=>e.id===t)?.models.find(e=>e.id===n);return i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)?r:void 0};if(t&&n&&of(e,t,n))return{providerId:t,modelId:n,variant:o(t,n,r)};if(i){let t=$d(i);if(t&&of(e,t.providerId,t.modelId))return{providerId:t.providerId,modelId:t.modelId,variant:o(t.providerId,t.modelId,a)}}if(of(e,qd,Jd))return{providerId:qd,modelId:Jd};let s=e[0],c=s?.models[0];return s&&c?{providerId:s.id,modelId:c.id}:null},cf=({agents:e,providers:t,projectDefaultModel:n,settingsDefaultAgent:r,settingsDefaultModel:i,settingsDefaultVariant:a,opencodeDefaultAgent:o,opencodeDefaultModel:s,projectLastUserSelection:c,globalLastUserSelection:l})=>{if(e.length===0)return{agentName:void 0};let u=(e,n,r)=>{if(!r)return;let i=t.find(t=>t.id===e)?.models.find(e=>e.id===n);return i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)?r:void 0},d=n=>{if(!n)return null;let r=e.find(e=>e.name===n.agentName);return!r||!Yo(r.mode)||r.hidden===!0||!of(t,n.providerId,n.modelId)?null:{agentName:r.name,providerId:n.providerId,modelId:n.modelId,variant:u(n.providerId,n.modelId,n.variant)}},f=d(c);if(f)return f;let p=d(l);if(p)return p;let m=e.filter(e=>Yo(e.mode)),h;if(r&&(h=e.find(e=>e.name===r)),!h&&o){let t=e.find(e=>e.name===o);t&&Yo(t.mode)&&t.hidden!==!0&&(h=t)}if(h||=m.find(e=>e.name===`build`)||m[0]||e[0],!h)return{agentName:void 0};let g,_,v,y=n||i;if(y){let e=$d(y);e&&of(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId,v=u(g,_,n?void 0:a))}if(!g&&h.model?.providerID&&h.model?.modelID&&of(t,h.model.providerID,h.model.modelID)&&(g=h.model.providerID,_=h.model.modelID,v=u(g,_,h.variant)),!g&&s){let e=$d(s);e&&of(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId)}if(!g)if(of(t,qd,Jd))g=qd,_=Jd;else{let e=t[0],n=e?.models[0];e&&n&&(g=e.id,_=n.id)}return{agentName:h.name,providerId:g,modelId:_,variant:v}},lf=({providers:e,settingsZenModel:t})=>{let n=nf(t);if(!Array.isArray(e)||e.length===0)return n?{providerId:Xd,modelId:n}:null;if(n&&of(e,Xd,n))return{providerId:Xd,modelId:n};if(of(e,Xd,Zd))return{providerId:Xd,modelId:Zd};let r=e.find(e=>e.id===Xd);if(r?.models.length){let e=Math.floor(Math.random()*r.models.length),t=nf(r.models[e]?.id);if(t)return{providerId:Xd,modelId:t}}return null},uf=e=>typeof e==`object`&&!!e,df=e=>{if(!e)return[];let t=[];return e.text&&t.push(`text`),e.audio&&t.push(`audio`),e.image&&t.push(`image`),e.video&&t.push(`video`),e.pdf&&t.push(`pdf`),t},ff=(e,t)=>({id:t.id,providerId:e,name:t.name,tool_call:t.capabilities?.toolcall,reasoning:t.capabilities?.reasoning,temperature:t.capabilities?.temperature,attachment:t.capabilities?.attachment,modalities:t.capabilities?{input:df(t.capabilities.input),output:df(t.capabilities.output)}:void 0,cost:t.cost?{input:t.cost.input,output:t.cost.output,cache_read:t.cost.cache?.read,cache_write:t.cost.cache?.write}:void 0,limit:t.limit,release_date:t.release_date}),pf=e=>new Promise(t=>setTimeout(t,e)),mf=800,hf=async(e=mf)=>Promise.race([B.checkHealth().catch(()=>!1),pf(Math.max(1,e)).then(()=>!1)]),gf=`__global__`,_f=e=>{let t=typeof e==`string`?e.trim():``;return t.length>0?t:gf},vf=e=>e===gf?null:e,yf=()=>typeof window>`u`?gf:Of(B.getDirectory()??Ne.getState().currentDirectory),bf=`oc.worktreeProjectMap`,xf=null,Sf=()=>{if(xf===null)try{let e=typeof localStorage<`u`?localStorage.getItem(bf):null;xf=e?JSON.parse(e):{}}catch{xf={}}return xf},Cf=(e,t)=>{if(!e||!t||e===t)return;let n=Sf();if(n[e]!==t){n[e]=t;try{localStorage.setItem(bf,JSON.stringify(n))}catch{}}},wf=e=>{let t=L(e);return t===null?null:t||`/`},Tf=()=>{try{return Fi.getState().projects.map(e=>wf(e.path)).filter(e=>!!e)}catch{return[]}},Ef=()=>{try{let{projects:e,activeProjectId:t}=Fi.getState();return wf((t?e.find(e=>e.id===t):null)?.path??e[0]?.path??null)}catch{return null}},Df=e=>{let t=wf(e),n=Tf();if(!t)return null;if(n.includes(t))return t;let r=wf(Sf()[t]);if(r)return r;try{let e=wf(ls(Fi.getState().projects,$.getState().availableWorktreesByProject,t)?.path??null);if(e&&e!==t)return Cf(t,e),e}catch{return null}return null},Of=e=>_f(Df(e)),kf=e=>Of(e),Af=1e3,jf=125e4,Mf=100,Nf=256,Pf=new Set([`__proto__`,`prototype`,`constructor`]),Ff=/[\u0000-\u001F\u007F]/u,If=new TextEncoder,Lf=e=>{let t=e.directoryScoped,n=e.activeDirectoryKey;if(!t||!n)return e;let r=t[n];if(!r)return e;let i={...e},a=e.providers&&e.providers.length>0?e.providers:r.providers;return i.providers=a,i.agents=[],i.defaultProviders=e.defaultProviders&&Object.keys(e.defaultProviders).length>0?e.defaultProviders:r.defaultProviders,i.currentProviderId=r.currentProviderId,i.currentModelId=r.currentModelId,i.currentVariant=r.currentVariant,i.currentAgentName=r.currentAgentName,i.selectedProviderId=r.selectedProviderId,i.agentModelSelections=r.agentModelSelections,i.lastSelectedAgentName=r.lastSelectedAgentName,i.lastUserSelection=r.lastUserSelection,i.opencodeDefaultAgent=r.opencodeDefaultAgent,i.opencodeDefaultModel=r.opencodeDefaultModel,i.selectionSource=r.selectionSource??`auto`,a.length>0&&r.providerCatalogPartial!==!0&&ma(vf(n),{providers:a,defaultProviders:i.defaultProviders??{},providerCatalogPartial:!1}),i},Rf=(e,t=!1)=>{if(typeof e!=`string`)return;let n=e.trim();if(!(n.length===0||n.length>Nf||t&&n!==e||Ff.test(n)||Pf.has(n)))return n},zf=e=>{if(!uf(e))return{};let t=[];for(let[n,r]of Object.entries(e)){if(t.length>=Mf||!uf(r))continue;let e=Rf(n,!0),i=Rf(r.providerId),a=Rf(r.modelId),o=Rf(r.variant);!e||!i||!a||r.variant!==void 0&&!o||t.push([e,{providerId:i,modelId:a,...o?{variant:o}:{}}])}return Object.fromEntries(t)},Bf=e=>{if(!uf(e))return;let t=Rf(e.agentName,!0),n=Rf(e.providerId),r=Rf(e.modelId),i=Rf(e.variant);if(!(!t||!n||!r||e.variant!==void 0&&!i))return{agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}}},Vf=(e,t)=>{if(!e)return;let n=t[e];if(n)return{agentName:e,providerId:n.providerId,modelId:n.modelId,...n.variant?{variant:n.variant}:{}}},Hf=(e,t,n)=>Bf(e)??Vf(t,n),Uf=(e=[],t=[])=>({providers:e,agents:t,currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,defaultProviders:{},providerCatalogPartial:!1,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`}),Wf=e=>{let t={};for(let[n,r]of Object.entries(e)){let e=r.lastUserSelection??Vf(r.lastSelectedAgentName,r.agentModelSelections);!e&&!r.lastSelectedAgentName||(t[n]={...Uf(),agentModelSelections:{},lastSelectedAgentName:e?.agentName??r.lastSelectedAgentName,lastUserSelection:e,selectionSource:r.selectionSource===`manual`?`manual`:`auto`})}return t},Gf=e=>{if(!uf(e))return{};let t=nf(e.catalogTransportIdentity),n={};for(let t of[`activeDirectoryKey`,`settingsDefaultModel`,`settingsDefaultVariant`,`settingsDefaultAgent`,`settingsZenModel`]){let r=nf(e[t]);r!==void 0&&(n[t]=r)}for(let t of[`settingsAutoCreateWorktree`,`settingsGitmojiEnabled`,`settingsDefaultFileViewerPreview`])typeof e[t]==`boolean`&&(n[t]=e[t]);(e.settingsMessageStreamTransport===`auto`||e.settingsMessageStreamTransport===`ws`||e.settingsMessageStreamTransport===`sse`)&&(n.settingsMessageStreamTransport=e.settingsMessageStreamTransport);for(let t of[`speechRate`,`speechPitch`,`speechVolume`])typeof e[t]==`number`&&Number.isFinite(e[t])&&(n[t]=e[t]);let r={};if(uf(e.directoryScoped))for(let[t,n]of Object.entries(e.directoryScoped)){if(!uf(n))continue;let e=n.providerCatalogPartial===!0,i=e?[]:rf(n.providers),a=e?{}:af(n.defaultProviders),o=zf(n.agentModelSelections),s=Rf(n.lastSelectedAgentName,!0),c=Hf(n.lastUserSelection,s,o);r[t]={...Uf(),providers:i,agents:[],currentProviderId:nf(n.currentProviderId)??``,currentModelId:nf(n.currentModelId)??``,currentVariant:nf(n.currentVariant),currentAgentName:nf(n.currentAgentName),selectedProviderId:ef(nf(n.selectedProviderId)),agentModelSelections:o,lastSelectedAgentName:c?.agentName??s,lastUserSelection:c,defaultProviders:a,providerCatalogPartial:e,opencodeDefaultAgent:nf(n.opencodeDefaultAgent),opencodeDefaultModel:nf(n.opencodeDefaultModel),selectionSource:n.selectionSource===`manual`?`manual`:`auto`}}let i=zf(e.agentModelSelections),a=Rf(e.lastSelectedAgentName,!0),o=Hf(e.globalLastUserSelection,a,i)??(()=>{let t=nf(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),s=u();if(t!==s){let t=Wf(r),i=nf(e.activeDirectoryKey),a=i?t[i]?.lastUserSelection:void 0;return{...n,catalogTransportIdentity:s,directoryScoped:t,providers:[],agents:[],defaultProviders:{},currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:a?.agentName??o?.agentName,lastUserSelection:a,globalLastUserSelection:o,providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{}}}return{...n,catalogTransportIdentity:t,directoryScoped:r,providers:[],agents:[],defaultProviders:{},currentProviderId:nf(e.currentProviderId)??``,currentModelId:nf(e.currentModelId)??``,currentVariant:nf(e.currentVariant),currentAgentName:nf(e.currentAgentName),selectedProviderId:ef(nf(e.selectedProviderId)),agentModelSelections:i,lastSelectedAgentName:o?.agentName??a,lastUserSelection:(()=>{let t=nf(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),globalLastUserSelection:o}},Kf=(e,t,n,r)=>{if(!r)return!0;let i=e.find(e=>e.id===t)?.models.find(e=>e.id===n);return!!i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)},qf=({agents:e,providers:t,currentAgentName:n,currentProviderId:r,currentModelId:i,currentVariant:a,selectionSource:o,resolvedAgentName:s,resolvedProviderId:c,resolvedModelId:l,resolvedVariant:u})=>{let d=n&&e.some(e=>e.name===n)?n:void 0,f=!!r&&!!i&&of(t,r,i)&&Kf(t,r,i,a),p=o===`manual`&&(!!d||f);return{agentName:p?d??s:s,providerId:p&&f?r:c,modelId:p&&f?i:l,variant:p&&f?a:u,selectionSource:p?`manual`:`auto`}},Jf=null,Yf=null,Xf=null,Zf={},Qf={},$f=De()(Ae(Oe((e,t)=>({activeDirectoryKey:yf(),catalogTransportIdentity:u(),directoryScoped:{},providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{},providers:[],agents:[],currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,globalLastUserSelection:void 0,defaultProviders:{},selectionSource:`auto`,isConnected:!1,hasEverConnected:!1,connectionPhase:`connecting`,lastDisconnectReason:null,isInitialized:!1,settingsDefaultModel:void 0,settingsDefaultVariant:void 0,settingsDefaultAgent:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,settingsAutoCreateWorktree:!1,settingsGitmojiEnabled:!1,settingsDefaultFileViewerPreview:!1,settingsZenModel:void 0,settingsMessageStreamTransport:`auto`,voiceProvider:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`voiceProvider`);if(e===`openai`||e===`browser`||e===`local`||e===`say`||e===`openai-compatible`)return e}return`browser`})(),speechRate:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechRate`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=.5&&t<=2)return t}}return 1})(),speechPitch:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechPitch`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=.5&&t<=2)return t}}return 1})(),speechVolume:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechVolume`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=0&&t<=1)return t}}return 1})(),sayVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sayVoice`);if(e)return e}return`Samantha`})(),localTtsVoiceId:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`localTtsVoiceId`);if(e!==null){let t=Number.parseInt(e,10);if(Number.isInteger(t)&&t>=0)return t}}return 0})(),browserVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`browserVoice`);if(e)return e}return``})(),openaiVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiVoice`);if(e)return e}return`nova`})(),openaiApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiApiKey`);if(e)return e}return``})(),openaiCompatibleUrl:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleUrl`);if(e)return e}return``})(),openaiCompatibleApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleApiKey`);if(e)return e}return``})(),openaiCompatibleVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleVoice`);if(e)return e}return`af_sky`})(),openaiCompatibleTtsModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleTtsModel`);if(e&&e!==`speaches-ai/Kokoro-82M-v1.0-ONNX`)return e}return`kokoro`})(),dictationEnabled:!(typeof window<`u`&&localStorage.getItem(`dictationEnabled`)===`false`),sttProvider:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttProvider`);if(e===`local`||e===`openai-compatible`)return e;if(e===`server`)return`openai-compatible`}return`local`})(),sttServerUrl:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttServerUrl`);if(e)return e}return`http://localhost:8001/v1`})(),sttApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttApiKey`);if(e)return e}return``})(),sttModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttModel`);if(e)return e}return`deepdml/faster-whisper-large-v3-turbo-ct2`})(),sttLocalModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttLocalModel`);if(e)return e}return`parakeet-tdt-0.6b-v2-int8`})(),sttLanguage:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttLanguage`);if(e!==null)return e}return``})(),showMessageTTSButtons:typeof window<`u`&&localStorage.getItem(`showMessageTTSButtons`)===`true`,ttsInputMode:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`ttsInputMode`);if(e===`raw`)return`raw`;if(e===`summarized`)return`summarized`}return`sanitized`})(),summarizeMessageTTS:typeof window<`u`&&localStorage.getItem(`summarizeMessageTTS`)===`true`,summarizeVoiceConversation:typeof window<`u`&&localStorage.getItem(`summarizeVoiceConversation`)===`true`,summarizeCharacterThreshold:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`summarizeCharacterThreshold`);if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>=50&&t<=2e3)return t}}return 200})(),summarizeMaxLength:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`summarizeMaxLength`);if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>=50&&t<=2e3)return t}}return 500})(),activateDirectory:async(n,r)=>{let i=Df(n);if(!i){V(`activateDirectory:skippedUnknownDirectory`,{directory:n});return}let a=_f(i),o=!1,s=!1,c=!1;e(e=>{let t=e.directoryScoped[a],n=e.providers.length>0?e.providers:t?.providers??[],r=Object.keys(e.defaultProviders).length>0?e.defaultProviders:t?.defaultProviders??{},i=e.agents.length>0?e.agents:t?.agents??[];o=n.length>0,s=i.length>0,c=!!t?.agents.length;let l=e.isConnected&&!o,u=e.isConnected&&!s;return t?{activeDirectoryKey:a,providers:n,defaultProviders:r,agents:t.agents.length>0?t.agents:i,currentProviderId:t.currentProviderId,currentModelId:t.currentModelId,currentVariant:t.currentVariant,currentAgentName:t.currentAgentName,selectedProviderId:t.selectedProviderId,agentModelSelections:t.agentModelSelections,lastSelectedAgentName:t.lastSelectedAgentName,lastUserSelection:t.lastUserSelection,opencodeDefaultAgent:t.opencodeDefaultAgent,opencodeDefaultModel:t.opencodeDefaultModel,selectionSource:t.selectionSource??`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[a]:l},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[a]:u}}:{activeDirectoryKey:a,providers:n,defaultProviders:r,agents:i,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[a]:l},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[a]:u}}}),s&&o&&!c&&t().applyDefaultModelAgentSelection(),t().isConnected&&((!o||r?.refreshProviders)&&await t().loadProviders({directory:vf(a),source:r?.source??`activateDirectory`,forceRefresh:r?.refreshProviders}),s||await t().loadAgents({directory:vf(a),source:`activateDirectory`}))},invalidateProviderCache:e=>{ya(null,u())},loadProviders:async n=>{let r=n?.directory??vf(t().activeDirectoryKey),i=Df(r);if(!i){V(`loadProviders:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`});return}let a=i??B.getDirectory()??null,o=_f(i),s=n?.source??`unknown`,c=u(),l=f(),d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&Df(r)===i,p=(Zf[o]??0)+1;Zf[o]=p,V(`loadProviders:called`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let m=t().directoryScoped[o];return t().providers.length>0||m?.providers.length||e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:!0}})),(async()=>{let i=typeof performance<`u`?performance.now():Date.now();V(`loadProviders:start`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let l=t().directoryScoped[o],u=t().providers.length>0?t().providers:l?.providers??[],f=Object.keys(t().defaultProviders).length>0?t().defaultProviders:l?.defaultProviders??{};try{let t=await Pe(`loadProviders:api`,()=>n?.forceRefresh?_a(vf(o),c):ha(vf(o),c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),l=rf(t.providers),f=af(t.default);if(!d()||t.partial&&u.length>0||l.length===0||(e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let n=e.directoryScoped[o]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},r=e.activeDirectoryKey===o?e.currentProviderId:n.currentProviderId,i=e.activeDirectoryKey===o?e.currentModelId:n.currentModelId,a=e.activeDirectoryKey===o?e.currentVariant:n.currentVariant,s=sf({providers:l,currentProviderId:r,currentModelId:i,currentVariant:a,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant}),u=e.activeDirectoryKey===o?e.selectedProviderId:n.selectedProviderId,p=u===Yd||l.some(e=>e.id===u)?u:s?.providerId??l[0]?.id??``,m={...n,providers:l,defaultProviders:f,providerCatalogPartial:t.partial,currentProviderId:s?.providerId??``,currentModelId:s?.modelId??``,currentVariant:s?.variant,selectedProviderId:p},h={providers:l,defaultProviders:f,directoryScoped:{...e.directoryScoped,[o]:m}};return e.activeDirectoryKey===o&&(h.currentProviderId=m.currentProviderId,h.currentModelId=m.currentModelId,h.currentVariant=m.currentVariant,h.selectedProviderId=p),h}),!d()))return;let p=typeof performance<`u`?performance.now():Date.now();V(`loadProviders:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(p-i),providers:l.length,models:l.reduce((e,t)=>e+t.models.length,0)});return}catch(e){if(!d())return;console.error(`Failed to load providers:`,e),V(`loadProviders:error`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,error:e instanceof Error?e.message:String(e)})}d()&&e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let t={...e.directoryScoped[o]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:u,defaultProviders:f},n={providers:u,defaultProviders:f,directoryScoped:{...e.directoryScoped,[o]:t}};if(e.activeDirectoryKey===o&&!e.currentProviderId&&!e.currentModelId&&e.settingsDefaultModel){let r=$d(e.settingsDefaultModel);if(r){let i=u.find(e=>e.id===r.providerId);if(i?.models.some(e=>e.id===r.modelId)){let a=i.models.find(e=>e.id===r.modelId),o=e.settingsDefaultVariant&&a?.variants?.[e.settingsDefaultVariant]?e.settingsDefaultVariant:void 0;n.currentProviderId=r.providerId,n.currentModelId=r.modelId,n.currentVariant=o,n.selectedProviderId=r.providerId,t.currentProviderId=r.providerId,t.currentModelId=r.modelId,t.currentVariant=o,t.selectedProviderId=r.providerId}}}return n})})().finally(()=>{Zf[o]===p&&e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:!1}}))})},refreshMissingCatalogs:e=>{if(Yf)return Yf;let n=e?.source??`refreshMissingCatalogs`,r=(async()=>{t().providers.length===0&&await t().loadProviders({source:n,forceRefresh:!0}),t().agents.length===0&&await t().loadAgents({source:n,forceRefresh:!0})})().finally(()=>{Yf=null});return Yf=r,r},refreshCatalogsOnPickerOpen:e=>{if(Xf)return Xf;let n=e?.source??`refreshCatalogsOnPickerOpen`,r=Promise.all([t().loadProviders({source:n,forceRefresh:!0}),t().loadAgents({source:n,forceRefresh:!0})]).then(()=>void 0).finally(()=>{Xf=null});return Xf=r,r},setProvider:n=>{let{providers:r}=t(),i=r.find(e=>e.id===n);if(!i)return;let a=i.models[0]?.id||``;e(e=>{let t=e.activeDirectoryKey,r={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentProviderId:n,currentModelId:a,selectedProviderId:n,selectionSource:`manual`};return{currentProviderId:n,currentModelId:a,selectedProviderId:n,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:r}}})},setModel:t=>{e(e=>{let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentModelId:t,selectionSource:`manual`};return{currentModelId:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},setCurrentVariant:t=>{e(e=>{if(e.currentVariant===t)return e;let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentVariant:t,selectionSource:`manual`};return{currentVariant:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},getCurrentModelVariants:()=>{let e=t().getCurrentModel()?.variants;return e?Object.keys(e):[]},cycleCurrentVariant:()=>{let e=t().getCurrentModelVariants();if(e.length===0)return;let n=t().currentVariant;if(!n){t().setCurrentVariant(e[0]);return}let r=e.indexOf(n);if(r===-1||r===e.length-1){t().setCurrentVariant(void 0);return}t().setCurrentVariant(e[r+1])},setSelectedProvider:t=>{e(e=>{let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},selectedProviderId:t,selectionSource:`manual`};return{selectedProviderId:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},saveAgentModelSelection:(t,n,r,i)=>{!t||!n||!r||e(e=>{let a=e.activeDirectoryKey,o={agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}},s=e.lastUserSelection,c=s?.agentName===o.agentName&&s?.providerId===o.providerId&&s?.modelId===o.modelId&&s?.variant===o.variant,l=e.globalLastUserSelection?.agentName===o.agentName&&e.globalLastUserSelection?.providerId===o.providerId&&e.globalLastUserSelection?.modelId===o.modelId&&e.globalLastUserSelection?.variant===o.variant;if(c&&l)return e;let u={...e.directoryScoped[a]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,lastSelectedAgentName:e.lastSelectedAgentName,lastUserSelection:e.lastUserSelection,defaultProviders:e.defaultProviders},agentModelSelections:{},lastSelectedAgentName:t,lastUserSelection:o,selectionSource:`manual`};return{agentModelSelections:{},lastSelectedAgentName:t,lastUserSelection:o,globalLastUserSelection:o,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[a]:u}}})},getAgentModelSelection:e=>{let{lastUserSelection:n}=t();return!n||n.agentName!==e?null:{providerId:n.providerId,modelId:n.modelId,...n.variant?{variant:n.variant}:{}}},loadAgents:async n=>{let r=n?.directory??vf(t().activeDirectoryKey),i=Df(r);if(!i)return V(`loadAgents:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`}),!1;let a=i??B.getDirectory()??null,o=_f(i),s=n?.source??`unknown`,c=u(),l=f(),d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&Df(r)===i,p=(Qf[o]??0)+1;Qf[o]=p,V(`loadAgents:called`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let m=t().directoryScoped[o];return t().agents.length>0||m?.agents.length||e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[o]:!0}})),(async()=>{let i=typeof performance<`u`?performance.now():Date.now();V(`loadAgents:start`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let l=t().directoryScoped[o],u=t().agents.length>0?t().agents:l?.agents??[];try{let l=vf(o);(Ld(r??void 0)??Ld(l??void 0))&&V(`loadAgents:syncConfigHit`,{directoryKey:o,source:s});let[f,p]=await Promise.all([Pe(`loadAgents:api`,()=>n?.forceRefresh?va(l,c):ga(l,c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),Qd(c,{defaultModel:t().settingsDefaultModel,defaultVariant:t().settingsDefaultVariant,defaultAgent:t().settingsDefaultAgent,autoCreateWorktree:t().settingsAutoCreateWorktree,gitmojiEnabled:t().settingsGitmojiEnabled,defaultFileViewerPreview:t().settingsDefaultFileViewerPreview,zenModel:t().settingsZenModel,messageStreamTransport:t().settingsMessageStreamTransport,sttProvider:t().sttProvider,sttServerUrl:t().sttServerUrl,sttModel:t().sttModel,sttLocalModel:t().sttLocalModel,sttLanguage:t().sttLanguage})]),m=Array.isArray(f)?f:[];if(!d())return!1;let h=Ld(r??void 0)??Ld(l??void 0),g=h!==void 0,_=g?nf(h.default_agent):void 0,v=g?nf(h.model):void 0,y=t().activeDirectoryKey===o?t().providers:t().directoryScoped[o]?.providers??[],b=nf(t().settingsZenModel),x=nf(p.zenModel),S=lf({providers:y,settingsZenModel:b}),C=lf({providers:y,settingsZenModel:x}),w=(S||C)?.modelId||x||b;e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let t=e.directoryScoped[o]??{providers:y,agents:u,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=g?_:t.opencodeDefaultAgent??(e.activeDirectoryKey===o?e.opencodeDefaultAgent:void 0),r=g?v:t.opencodeDefaultModel??(e.activeDirectoryKey===o?e.opencodeDefaultModel:void 0),i={...t,providers:y,agents:m,opencodeDefaultAgent:n,opencodeDefaultModel:r},a={settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,settingsDefaultAgent:p.defaultAgent,settingsAutoCreateWorktree:p.autoCreateWorktree??!1,settingsGitmojiEnabled:p.gitmojiEnabled??!1,settingsDefaultFileViewerPreview:p.defaultFileViewerPreview??!1,settingsZenModel:w,settingsMessageStreamTransport:p.messageStreamTransport??e.settingsMessageStreamTransport??`auto`,sttProvider:p.sttProvider??e.sttProvider,sttServerUrl:p.sttServerUrl??e.sttServerUrl,sttModel:p.sttModel??e.sttModel,sttLocalModel:p.sttLocalModel??e.sttLocalModel,sttLanguage:p.sttLanguage??e.sttLanguage,directoryScoped:{...e.directoryScoped,[o]:i}};return e.activeDirectoryKey===o&&(a.agents=m,a.opencodeDefaultAgent=n,a.opencodeDefaultModel=r),a});let T=t(),E=T.directoryScoped[o],D=E?.opencodeDefaultAgent??(T.activeDirectoryKey===o?T.opencodeDefaultAgent:void 0),O=E?.opencodeDefaultModel??(T.activeDirectoryKey===o?T.opencodeDefaultModel:void 0),k=!!w&&w!==x;if(d()&&k&&w&&be({zenModel:w,gitProviderId:``,gitModelId:``}).catch(()=>{}),m.length===0){if(u.length>0&&!n?.forceRefresh){if(!d())return!1;let e=typeof performance<`u`?performance.now():Date.now();return V(`loadAgents:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(e-i),agents:u.length,retainedPrevious:!0}),!0}if(e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let t={...e.directoryScoped[o]??{providers:y,agents:[],currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:y,agents:[],currentAgentName:void 0},n={directoryScoped:{...e.directoryScoped,[o]:t}};return e.activeDirectoryKey===o&&(n.currentAgentName=void 0),n}),!d())return!1;let t=typeof performance<`u`?performance.now():Date.now();return V(`loadAgents:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(t-i),agents:m.length}),!0}let A=(e,t)=>{let n=y.find(t=>t.id===e);return n?n.models.some(e=>e.id===t):!1},j={};if(p.defaultAgent&&!m.some(e=>e.name===p.defaultAgent)&&(j.defaultAgent=``),p.defaultModel){let e=$d(p.defaultModel);if(!e||!A(e.providerId,e.modelId))j.defaultModel=``;else if(p.defaultVariant){let t=y.find(t=>t.id===e.providerId)?.models.find(t=>t.id===e.modelId)?.variants;t&&Object.prototype.hasOwnProperty.call(t,p.defaultVariant)||(j.defaultVariant=``)}}let ee=t(),te=ee.directoryScoped[o]?.lastUserSelection??(ee.activeDirectoryKey===o?ee.lastUserSelection:void 0),ne=cf({agents:m,providers:y,settingsDefaultAgent:p.defaultAgent,settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,opencodeDefaultAgent:D,opencodeDefaultModel:O,projectLastUserSelection:te,globalLastUserSelection:ee.globalLastUserSelection}),re=ne.agentName??m[0].name,ie=ne.providerId,ae=ne.modelId,M=ne.variant;if(e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let t=e.directoryScoped[o]??{providers:y,agents:m,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=e.activeDirectoryKey===o,r=n?e.currentAgentName:t.currentAgentName,i=n?e.currentProviderId:t.currentProviderId,a=n?e.currentModelId:t.currentModelId,s=n?e.currentVariant:t.currentVariant,l=n?e.selectionSource:t.selectionSource??`auto`,u=qf({agents:m,providers:y,currentAgentName:r,currentProviderId:i,currentModelId:a,currentVariant:s,selectionSource:l,resolvedAgentName:re,resolvedProviderId:ie,resolvedModelId:ae,resolvedVariant:M}),f={...t,providers:y,agents:m,currentAgentName:u.agentName,currentProviderId:u.providerId??t.currentProviderId,currentModelId:u.modelId??t.currentModelId,currentVariant:u.variant,opencodeDefaultAgent:D,opencodeDefaultModel:O,selectionSource:u.selectionSource},p={directoryScoped:{...e.directoryScoped,[o]:f}};return n&&(p.currentAgentName=u.agentName,p.opencodeDefaultAgent=D,p.opencodeDefaultModel=O,u.providerId&&u.modelId&&(p.currentProviderId=u.providerId,p.currentModelId=u.modelId,p.currentVariant=u.variant),p.selectionSource=u.selectionSource),p}),d()&&Object.keys(j).length>0&&(e({settingsDefaultModel:j.defaultModel===void 0?t().settingsDefaultModel:void 0,settingsDefaultVariant:j.defaultVariant===void 0?t().settingsDefaultVariant:void 0,settingsDefaultAgent:j.defaultAgent===void 0?t().settingsDefaultAgent:void 0}),be(j).catch(()=>{})),!d())return!1;let oe=typeof performance<`u`?performance.now():Date.now();return V(`loadAgents:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(oe-i),agents:m.length}),!0}catch(t){return!d()||(console.error(`Failed to load agents:`,t),V(`loadAgents:error`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,error:t instanceof Error?t.message:String(t)}),!d())||e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let t=e.activeDirectoryKey===o?e.providers:e.directoryScoped[o]?.providers??[],n={...e.directoryScoped[o]??{providers:t,agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:t,agents:u},r={directoryScoped:{...e.directoryScoped,[o]:n}};return e.activeDirectoryKey===o&&(r.agents=u),r}),!1}})().finally(()=>{Qf[o]===p&&e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[o]:!1}}))})},setAgent:n=>{let{agents:r,providers:i,settingsDefaultModel:a,settingsDefaultVariant:o,currentProviderId:s,currentModelId:c}=t();if(e(e=>{let t=e.activeDirectoryKey,r={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentAgentName:n,selectionSource:`manual`};return{currentAgentName:n,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:r}}}),n){let{currentSessionId:e}=$.getState(),t=as.getState();e&&t.saveSessionAgentSelection(e,n),e&&$.getState().isOpenChamberCreatedSession(e)&&(t.getAgentModelForSession(e,n)||$.getState().initializeNewOpenChamberSession(e,r))}if(n){let{currentSessionId:l}=$.getState(),u=(t,n,r)=>{e(e=>{let i=e.activeDirectoryKey,a={...e.directoryScoped[i]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:tf(e.selectedProviderId,t),selectionSource:`manual`};return{currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:tf(e.selectedProviderId,t),selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[i]:a}}})},d=r.find(e=>e.name===n),f=(e,t,r=[])=>{let a=i.find(t=>t.id===e)?.models.find(e=>e.id===t)?.variants;if(!a)return;let s=l?as.getState().getAgentModelVariantForSession(l,n,e,t):void 0;for(let e of[s,...r,o])if(e&&Object.prototype.hasOwnProperty.call(a,e))return e};if(l){let e=as.getState().getAgentModelForSession(l,n);if(e&&of(i,e.providerId,e.modelId)){let n=f(e.providerId,e.modelId,[d?.variant]);(s!==e.providerId||c!==e.modelId||t().currentVariant!==n)&&u(e.providerId,e.modelId,n);return}}if(a){let e=$d(a);if(e&&i.find(t=>t.id===e.providerId)?.models.some(t=>t.id===e.modelId)){u(e.providerId,e.modelId,f(e.providerId,e.modelId,[d?.variant]));return}}let p=d?.model;if(p?.providerID&&p?.modelID){let{providerID:e,modelID:t}=p;if(i.find(t=>t.id===e)?.models.find(e=>e.id===t)){u(e,t,f(e,t,[d?.variant]));return}}}},applyDefaultModelAgentSelection:n=>{let{agents:r,providers:i,settingsDefaultModel:a,settingsDefaultVariant:o,settingsDefaultAgent:s,opencodeDefaultAgent:c,opencodeDefaultModel:l,lastUserSelection:u,globalLastUserSelection:d}=t();if(r.length===0||i.length===0)return;let{agentName:f,providerId:p,modelId:m,variant:h}=cf({agents:r,providers:i,projectDefaultModel:n?.projectDefaultModel,settingsDefaultAgent:s,settingsDefaultModel:a,settingsDefaultVariant:o,opencodeDefaultAgent:c,opencodeDefaultModel:l,projectLastUserSelection:u,globalLastUserSelection:d});f&&e(e=>{let t=e.activeDirectoryKey,n={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentAgentName:f,...p&&m?{currentProviderId:p,currentModelId:m,currentVariant:h,selectedProviderId:tf(e.selectedProviderId,p)}:{},selectionSource:`auto`},r={currentAgentName:f,selectionSource:`auto`,directoryScoped:{...e.directoryScoped,[t]:n}};return p&&m&&(r.currentProviderId=p,r.currentModelId=m,r.currentVariant=h,r.selectedProviderId=tf(e.selectedProviderId,p)),r})},applyOpenCodeConfigDefaults:(n,r=`syncConfig`,i)=>{let a=n??vf(t().activeDirectoryKey),o=Of(a),s=vf(o),c=i??Ld(a??void 0)??Ld(s??void 0);if(!c)return;let l=nf(c.default_agent),u=nf(c.model);e(e=>{let t=e.directoryScoped[o],n=e.activeDirectoryKey===o,i=n?e.providers:t?.providers??[],s=n?e.agents:t?.agents??[],c=t??Uf(i,s),d=c.opencodeDefaultAgent!==l||c.opencodeDefaultModel!==u||n&&(e.opencodeDefaultAgent!==l||e.opencodeDefaultModel!==u),f={...c,providers:i,agents:s,opencodeDefaultAgent:l,opencodeDefaultModel:u},p={directoryScoped:{...e.directoryScoped,[o]:f}};n&&(p.opencodeDefaultAgent=l,p.opencodeDefaultModel=u);let m=n?e.selectionSource:t?.selectionSource??`auto`;if(i.length===0||s.length===0)return d?p:e;let h=n?e.lastUserSelection:t?.lastUserSelection,g=cf({agents:s,providers:i,settingsDefaultAgent:e.settingsDefaultAgent,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant,opencodeDefaultAgent:l,opencodeDefaultModel:u,projectLastUserSelection:h,globalLastUserSelection:e.globalLastUserSelection});if(!g.agentName)return d?p:e;let _=n?e.currentAgentName:c.currentAgentName,v=n?e.currentProviderId:c.currentProviderId,y=n?e.currentModelId:c.currentModelId,b=n?e.currentVariant:c.currentVariant,x=n?e.selectedProviderId:c.selectedProviderId,S=qf({agents:s,providers:i,currentAgentName:_,currentProviderId:v,currentModelId:y,currentVariant:b,selectionSource:m,resolvedAgentName:g.agentName,resolvedProviderId:g.providerId,resolvedModelId:g.modelId,resolvedVariant:g.variant}),C={...f,providers:i,agents:s,currentAgentName:S.agentName,...S.providerId&&S.modelId?{currentProviderId:S.providerId,currentModelId:S.modelId,currentVariant:S.variant,selectedProviderId:tf(x,S.providerId)}:{},selectionSource:S.selectionSource},w=c.currentAgentName!==C.currentAgentName||c.currentProviderId!==C.currentProviderId||c.currentModelId!==C.currentModelId||c.currentVariant!==C.currentVariant||c.selectedProviderId!==C.selectedProviderId||(c.selectionSource??`auto`)!==C.selectionSource||n&&(e.currentAgentName!==S.agentName||e.selectionSource!==S.selectionSource||S.providerId!==void 0&&S.modelId!==void 0&&(e.currentProviderId!==S.providerId||e.currentModelId!==S.modelId||e.currentVariant!==S.variant||e.selectedProviderId!==tf(x,S.providerId)));return!d&&!w?e:(p.directoryScoped={...e.directoryScoped,[o]:C},n&&(p.currentAgentName=S.agentName,p.selectionSource=S.selectionSource,S.providerId&&S.modelId&&(p.currentProviderId=S.providerId,p.currentModelId=S.modelId,p.currentVariant=S.variant,p.selectedProviderId=tf(x,S.providerId))),V(`loadAgents:opencodeConfigDefaultsApplied`,{directoryKey:o,eventDirectory:a,source:r}),p)})},setSettingsDefaultModel:t=>{e({settingsDefaultModel:t})},setSettingsDefaultVariant:t=>{e({settingsDefaultVariant:t})},setSettingsDefaultAgent:t=>{e({settingsDefaultAgent:t})},setSettingsAutoCreateWorktree:t=>{e({settingsAutoCreateWorktree:t})},setSettingsGitmojiEnabled:t=>{e({settingsGitmojiEnabled:t})},setSettingsDefaultFileViewerPreview:t=>{e({settingsDefaultFileViewerPreview:t})},setSettingsZenModel:t=>{e({settingsZenModel:t})},setSettingsMessageStreamTransport:t=>{e({settingsMessageStreamTransport:t})},getResolvedGitGenerationModel:()=>{let e=t();return lf({providers:e.providers,settingsZenModel:e.settingsZenModel})},setVoiceProvider:t=>{e({voiceProvider:t}),typeof window<`u`&&localStorage.setItem(`voiceProvider`,t)},setSpeechRate:t=>{let n=Math.max(.5,Math.min(2,t));e({speechRate:n}),typeof window<`u`&&localStorage.setItem(`speechRate`,String(n))},setSpeechPitch:t=>{let n=Math.max(.5,Math.min(2,t));e({speechPitch:n}),typeof window<`u`&&localStorage.setItem(`speechPitch`,String(n))},setSpeechVolume:t=>{let n=Math.max(0,Math.min(1,t));e({speechVolume:n}),typeof window<`u`&&localStorage.setItem(`speechVolume`,String(n))},setSayVoice:t=>{e({sayVoice:t}),typeof window<`u`&&localStorage.setItem(`sayVoice`,t)},setLocalTtsVoiceId:t=>{e({localTtsVoiceId:t}),typeof window<`u`&&localStorage.setItem(`localTtsVoiceId`,String(t))},setBrowserVoice:t=>{e({browserVoice:t}),typeof window<`u`&&localStorage.setItem(`browserVoice`,t)},setOpenaiVoice:t=>{e({openaiVoice:t}),typeof window<`u`&&localStorage.setItem(`openaiVoice`,t)},setOpenaiApiKey:t=>{e({openaiApiKey:t}),typeof window<`u`&&localStorage.setItem(`openaiApiKey`,t)},setOpenaiCompatibleUrl:t=>{e({openaiCompatibleUrl:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleUrl`,t)},setOpenaiCompatibleApiKey:t=>{e({openaiCompatibleApiKey:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleApiKey`,t)},setOpenaiCompatibleVoice:t=>{e({openaiCompatibleVoice:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleVoice`,t)},setOpenaiCompatibleTtsModel:t=>{e({openaiCompatibleTtsModel:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleTtsModel`,t)},setDictationEnabled:t=>{e({dictationEnabled:t}),typeof window<`u`&&localStorage.setItem(`dictationEnabled`,String(t)),be({dictationEnabled:t}).catch(()=>{})},setSttProvider:t=>{e({sttProvider:t}),typeof window<`u`&&localStorage.setItem(`sttProvider`,t),be({sttProvider:t}).catch(()=>{})},setSttServerUrl:t=>{e({sttServerUrl:t}),typeof window<`u`&&localStorage.setItem(`sttServerUrl`,t),be({sttServerUrl:t}).catch(()=>{})},setSttApiKey:t=>{e({sttApiKey:t}),typeof window<`u`&&localStorage.setItem(`sttApiKey`,t)},setSttModel:t=>{e({sttModel:t}),typeof window<`u`&&localStorage.setItem(`sttModel`,t),be({sttModel:t}).catch(()=>{})},setSttLocalModel:t=>{e({sttLocalModel:t}),typeof window<`u`&&localStorage.setItem(`sttLocalModel`,t),be({sttLocalModel:t}).catch(()=>{})},setSttLanguage:t=>{e({sttLanguage:t}),typeof window<`u`&&localStorage.setItem(`sttLanguage`,t),be({sttLanguage:t}).catch(()=>{})},setShowMessageTTSButtons:t=>{e({showMessageTTSButtons:t}),typeof window<`u`&&localStorage.setItem(`showMessageTTSButtons`,String(t))},setTtsInputMode:t=>{e({ttsInputMode:t}),typeof window<`u`&&localStorage.setItem(`ttsInputMode`,t)},setSummarizeMessageTTS:t=>{e({summarizeMessageTTS:t}),typeof window<`u`&&localStorage.setItem(`summarizeMessageTTS`,String(t))},setSummarizeVoiceConversation:t=>{e({summarizeVoiceConversation:t}),typeof window<`u`&&localStorage.setItem(`summarizeVoiceConversation`,String(t))},setSummarizeCharacterThreshold:t=>{let n=Math.max(50,Math.min(2e3,t));e({summarizeCharacterThreshold:n}),typeof window<`u`&&localStorage.setItem(`summarizeCharacterThreshold`,String(n))},setSummarizeMaxLength:t=>{let n=Math.max(50,Math.min(2e3,t));e({summarizeMaxLength:n}),typeof window<`u`&&localStorage.setItem(`summarizeMaxLength`,String(n))},probeConnection:async n=>{if(await hf(n?.timeoutMs))return e({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`}),!0;let r=t();return r.isConnected?!0:(e({isConnected:!1,connectionPhase:r.hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`health_probe_unhealthy`}),!1)},checkConnection:async()=>{V(`checkConnection:start`);let n=0,r=null;for(;n<5;)try{V(`checkConnection:attempt`,{attempt:n+1});let r=await Pe(`checkConnection:health`,()=>B.checkHealth(),{attempt:n+1});if(!r&&n<4){let r=t().hasEverConnected;e({isConnected:!1,connectionPhase:r?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),n+=1,await pf(400*n);continue}let i=t().hasEverConnected;return e(r?{isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`}:{isConnected:!1,connectionPhase:i?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),V(`checkConnection:end`,{healthy:r,attempts:n+1}),r}catch(e){r=e,n+=1,await pf(400*n)}return r&&console.warn(`[ConfigStore] Failed to reach OpenCode after retrying:`,r),e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_failed`}),V(`checkConnection:end`,{healthy:!1,attempts:5}),!1},initializeApp:async()=>{if(Jf)return V(`initializeApp:deduped`),Jf;let n=(async()=>{let n=typeof performance<`u`?performance.now():Date.now();V(`initializeApp:start`);try{if(Le(),!await t().checkConnection()){e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`});return}V(`initApp:skipped`,{reason:`checkConnection already verified health`});let r=B.getDirectory()??Ne.getState().currentDirectory??vf(t().activeDirectoryKey),i=Df(ls(Fi.getState().projects,$.getState().availableWorktreesByProject,r??null)?.path??r??null),a=i??Ef();if(!a){V(`initializeApp:noProjectConfigDirectory`),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});return}!i&&r!==a&&(V(`initializeApp:normalizedUnknownDirectoryToProject`,{initialDirectory:r,configDirectory:a}),B.setDirectory(a),Ne.getState().setDirectory(a,{showOverlay:!1}));let o=_f(a);t().activeDirectoryKey!==o&&e({activeDirectoryKey:o}),await Promise.all([t().loadProviders({directory:a,source:`initializeApp`,forceRefresh:!0}),t().loadAgents({directory:a,source:`initializeApp`,forceRefresh:!0})]),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let s=typeof performance<`u`?performance.now():Date.now();V(`initializeApp:end`,{durationMs:Math.round(s-n),providers:t().providers.length,agents:t().agents.length})}catch(n){console.error(`Failed to initialize app:`,n),e({isInitialized:!1,isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`init_error`}),V(`initializeApp:error`,{error:n instanceof Error?n.message:String(n)})}})().finally(()=>{Jf=null});return Jf=n,n},prewarmProjectConfigs:async e=>{if(!t().isConnected)return;let n=Of(e??vf(t().activeDirectoryKey)),r=Fi.getState().projects.map(e=>e.path).filter(e=>typeof e==`string`&&e.trim().length>0),i=new Set([n]),a=[];for(let e of r){let n=Of(e);if(i.has(n))continue;i.add(n);let r=t().directoryScoped[n];if((r?.providers.length||t().providers.length>0)&&(r?.agents.length||t().agents.length>0))continue;let o=vf(n);o&&a.push(o)}for(let e of a){if(await pf(Af),!t().isConnected)return;let n=Of(e),r=t().directoryScoped[n],i=[];!r?.providers.length&&t().providers.length===0&&i.push(t().loadProviders({directory:e,source:`projectConfigPrewarm`})),!r?.agents.length&&t().agents.length===0&&i.push(t().loadAgents({directory:e,source:`projectConfigPrewarm`})),i.length>0&&await Promise.allSettled(i)}},getCurrentProvider:()=>{let{providers:e,currentProviderId:n}=t();return e.find(e=>e.id===n)},getCurrentModel:()=>{let e=t().getCurrentProvider(),{currentModelId:n}=t();if(e)return e.models.find(e=>e.id===n)},getCurrentAgent:()=>{let{agents:e,currentAgentName:n}=t();if(n)return e.find(e=>e.name===n)},getModelMetadata:(e,n)=>{if(!e||!n)return;let r=t().providers.find(t=>t.id===e);if(!r)return;let i=r.models.find(e=>e.id===n);if(i)return ff(e,i)},getVisibleAgents:()=>{let{agents:e}=t();return mo(e)}}),{name:`config-store`,version:4,storage:Ye(),migrate:e=>Gf(e),merge:(e,t)=>Lf({...t,...Gf(e)}),partialize:e=>{let t=e.directoryScoped[e.activeDirectoryKey],n=e.providers.length>0?{providers:rf(e.providers),defaultProviders:af(e.defaultProviders),providerCatalogPartial:!1}:t&&t.providerCatalogPartial!==!0?{providers:rf(t.providers),defaultProviders:af(t.defaultProviders),providerCatalogPartial:!1}:{providers:[],defaultProviders:{},providerCatalogPartial:!0},r=(t,r)=>{let i=Bf(r?.lastUserSelection)??Vf(Rf(r?.lastSelectedAgentName,!0),zf(r?.agentModelSelections))??(t===e.activeDirectoryKey?Bf(e.lastUserSelection):void 0);return{...t===e.activeDirectoryKey?n:{providers:[],defaultProviders:{},providerCatalogPartial:r?.providerCatalogPartial===!0},agents:[],currentProviderId:r?.currentProviderId??(t===e.activeDirectoryKey?e.currentProviderId:``),currentModelId:r?.currentModelId??(t===e.activeDirectoryKey?e.currentModelId:``),currentVariant:r?.currentVariant??(t===e.activeDirectoryKey?e.currentVariant:void 0),currentAgentName:r?.currentAgentName??(t===e.activeDirectoryKey?e.currentAgentName:void 0),selectedProviderId:ef(r?.selectedProviderId??(t===e.activeDirectoryKey?e.selectedProviderId:``)),agentModelSelections:{},lastSelectedAgentName:i?.agentName??Rf(r?.lastSelectedAgentName,!0),lastUserSelection:i,opencodeDefaultAgent:r?.opencodeDefaultAgent,opencodeDefaultModel:r?.opencodeDefaultModel,selectionSource:r?.selectionSource??(t===e.activeDirectoryKey?e.selectionSource:void 0)}},i=Object.fromEntries(Object.entries(e.directoryScoped).map(([e,t])=>[e,r(e,t)]));e.activeDirectoryKey&&!i[e.activeDirectoryKey]&&(i[e.activeDirectoryKey]=r(e.activeDirectoryKey,void 0));let a=JSON.stringify(n);if(If.encode(a).byteLength>jf){let t=i[e.activeDirectoryKey];t&&(t.providers=[],t.defaultProviders={},t.providerCatalogPartial=!0)}let o=Bf(e.globalLastUserSelection)??Bf(e.lastUserSelection);return{activeDirectoryKey:e.activeDirectoryKey,catalogTransportIdentity:u(),directoryScoped:i,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:ef(e.selectedProviderId),agentModelSelections:{},lastSelectedAgentName:o?.agentName??Rf(e.lastSelectedAgentName,!0),lastUserSelection:Bf(e.lastUserSelection)??o,globalLastUserSelection:o,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant,settingsDefaultAgent:e.settingsDefaultAgent,settingsAutoCreateWorktree:e.settingsAutoCreateWorktree,settingsGitmojiEnabled:e.settingsGitmojiEnabled,settingsDefaultFileViewerPreview:e.settingsDefaultFileViewerPreview,settingsZenModel:e.settingsZenModel,settingsMessageStreamTransport:e.settingsMessageStreamTransport,speechRate:e.speechRate,speechPitch:e.speechPitch,speechVolume:e.speechVolume}}})));typeof window<`u`&&(window.__zustand_config_store__=$f);var ep=async e=>{await $f.getState().loadProviders({source:e,forceRefresh:!0})},tp=null;tp||=Hr(async e=>{let t=[];if(B.clearConfigCache(),Wr(e,`agents`)){let{loadAgents:e}=$f.getState();t.push(e({source:`configChange:agents`,forceRefresh:!0}).then(()=>{}))}Wr(e,`providers`)&&t.push(ep(`configChange:providers`)),t.length>0&&await Promise.all(t)});var np=null,rp=null;rp||=Rd((e,t)=>{$f.getState().applyOpenCodeConfigDefaults(e,`syncConfig`,t)}),typeof window<`u`&&!np&&(np=Ne.subscribe((e,t)=>{let n=_f(e.currentDirectory),r=_f(t.currentDirectory);n!==r&&(V(`directoryStore:changed`,{previous:r,next:n}),$f.getState().activateDirectory(e.currentDirectory))}));var ip=e=>typeof e==`number`&&Number.isFinite(e)?e:null,ap=e=>{let t=e.metadata;return ip(t?.openchamber?.titleRefresh?.activityUpdatedAt)??ip(e.time?.updated)??ip(e.time?.created)??0},op=[`load failed`,`network connection was lost`,`network request failed`,`failed to fetch`,`econnreset`,`econnrefused`,`etimedout`,`socket hang up`,`signal timed out`,`opencode api unavailable`,`503`,`502`];function sp(e){if(!e)return!1;let t=String(e instanceof Error?e.message:e).toLowerCase();if(op.some(e=>t.includes(e)))return!0;let n=e?.status;return typeof n==`number`&&n>=500&&n<600}async function cp(e,t={}){let{attempts:n=3,delay:r=500,factor:i=2,maxDelay:a=1e4,retryIf:o=sp}=t,s;for(let t=0;t<n;t++)try{return await e()}catch(e){if(s=e,t===n-1||!o(e))throw e;let c=Math.min(r*i**+t,a);await new Promise(e=>setTimeout(e,c))}throw s}var lp=[`file`,`status`,`additions`,`deletions`],up=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t={},n=e;return typeof n.messageID==`string`&&(t.messageID=n.messageID),typeof n.partID==`string`&&(t.partID=n.partID),Object.keys(t).length>0?t:void 0},dp=e=>e===void 0?!1:!e||typeof e!=`object`||Array.isArray(e)?!0:Object.keys(e).some(e=>e!==`messageID`&&e!==`partID`),fp=e=>typeof e.before==`string`||typeof e.after==`string`||typeof e.from==`string`||typeof e.to==`string`||typeof e.patch==`string`;function pp(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!fp(t))return e;let n={};for(let e of lp)e in t&&t[e]!==void 0&&(n[e]=t[e]);return n}function mp(e){if(!Array.isArray(e))return e;let t=!1,n=e.map(e=>{let n=pp(e);return n!==e&&(t=!0),n});return t?n:e}function hp(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e,n=t.summary;if(!n||typeof n!=`object`||Array.isArray(n)||!Object.prototype.hasOwnProperty.call(n,`diffs`))return e;let r=n.diffs;if(!Array.isArray(r)){let e={...n,diffCount:0,hasDiffs:!1};return delete e.diffs,{...t,summary:e}}let i=mp(r),a=i.length,o=a>0,s=n.diffCount===a&&n.hasDiffs===o;return i===r&&s?e:{...t,summary:{...n,diffs:i,diffCount:a,hasDiffs:o}}}function gp(e){let t=e.revert,n=e,r=!1;if(t&&(typeof t.snapshot==`string`||typeof t.diff==`string`)){let e={...t};delete e.snapshot,delete e.diff,n={...n,revert:e},r=!0}let i=hp(r?n:e);return i===(r?n:e)?n:i}function _p(e){let t=e;if(!(dp(t.revert)||Array.isArray(t.summary?.diffs)||typeof t.summary?.diffCount==`number`||typeof t.summary?.hasDiffs==`boolean`||`permission`in t))return e;let n=gp(e),r={...n};delete r.permission;let i=up(n.revert);i?r.revert=i:delete r.revert;let a=n.summary;if(a&&typeof a==`object`&&!Array.isArray(a)){let e={...a};delete e.diffs,delete e.diffCount,delete e.hasDiffs,r.summary=e}return r}function vp(e){return hp(e)}var yp=new Set([`smartfetch-secondary`]),bp=e=>typeof e==`string`&&e.length>0,xp=e=>{let t=e.metadata;if(!t||typeof t!=`object`)return!1;let n=t.openchamber;if(!n||typeof n!=`object`)return!1;let r=n;return r.assigned?.from!==`contact`&&!!(bp(r.assistant?.assistantID)||bp(r.scheduledTask?.taskID)||bp(r.smallModel?.purpose)||bp(r.llm?.purpose))},Sp=e=>{let t=e.parentID;return typeof t==`string`&&t.trim()?t:null},Cp=e=>!(yp.has(e.title)||Sp(e)||xp(e)),wp=e=>{if(!e)return null;let t=Number(e);return Number.isFinite(t)?t:null},Tp=(e,t)=>{if(!e||typeof e!=`object`)return null;let n=e.headers;if(!n||typeof n!=`object`)return null;let r=n;if(typeof r.get==`function`)return r.get(t);let i=n,a=i[t]??i[t.toLowerCase()];return typeof a==`string`?a:null},Ep=e=>{if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`)return e.message;try{return JSON.stringify(e)}catch{return String(e)}},Dp=(e,t)=>{if(e.error){let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Ep(e.error)}`);throw n!==void 0&&(r.status=n),r}if(!Array.isArray(e.data)){let e=Error(`${t} returned no data`);throw e.status=503,e}return e.data};async function Op(e,t){let n=[],r=new Set,i=t.cursor;for(;;){let a=t.maxItems===void 0?t.pageSize:Math.max(0,t.maxItems-n.length);if(a===0)break;let o=Math.min(t.pageSize,a),{response:s,payload:c}=await cp(async()=>{let n=t.timeoutMs===void 0?void 0:AbortSignal.timeout(t.timeoutMs),r=t.signal&&n?AbortSignal.any([t.signal,n]):t.signal??n,a=await e.experimental.session.list({...t.directory?{directory:t.directory}:{},archived:t.archived,...t.roots===void 0?{}:{roots:t.roots},...t.start===void 0?{}:{start:t.start},limit:o,...i===void 0?{}:{cursor:i}},r?{signal:r}:void 0);return{response:a.response,payload:Dp(a,`experimental.session.list`).map(e=>_p(e))}},{attempts:t.retryAttempts??3,delay:500});if(c.length===0)break;let l=c.filter(Cp),u=0;for(let e of l)!e?.id||r.has(e.id)||(r.add(e.id),n.push(e),u+=1);if(u>0&&t.onPage?.(l),t.maxItems!==void 0&&n.length>=t.maxItems||c.length<o)break;let d=wp(Tp(s,`x-next-cursor`)),f=c[c.length-1]?.time?.updated,p=d??(typeof f==`number`&&Number.isFinite(f)?f:void 0);if(p===void 0||i!==void 0&&p>=i)break;i=p}return n}var kp=`/api/magic-prompts`,Ap=new Map([{id:`git.commit.generate.visible`,title:`Commit Generation Visible Prompt`,group:`Git`,description:`Visible user message for commit message generation.`,template:`You are generating a Conventional Commits subject line from the diffs of the selected files.`},{id:`git.commit.generate.instructions`,title:`Commit Generation Instructions`,group:`Git`,description:`Hidden instructions for commit message generation.`,placeholders:[{key:`selected_files`,description:`Bullet list of currently selected file paths.`}],template:`Return exactly one JSON object and nothing else. Do not include prose, markdown, explanations, or code fences.
|
|
7
|
+
|
|
8
|
+
The JSON object must have exactly this shape:
|
|
9
|
+
{"subject": string, "highlights": string[]}
|
|
10
|
+
|
|
11
|
+
Rules:
|
|
12
|
+
- subject format: <type>: <summary>
|
|
13
|
+
- allowed types: feat, fix, refactor, perf, docs, test, build, ci, chore, style, revert
|
|
14
|
+
- no scope in subject
|
|
15
|
+
- keep subject concise and user-facing
|
|
16
|
+
- highlights: 0-3 concise user-facing points
|
|
17
|
+
- use double quotes for all JSON strings
|
|
18
|
+
- do not include trailing commas or comments
|
|
19
|
+
|
|
20
|
+
Selected files:
|
|
21
|
+
{{selected_files}}`},{id:`git.pr.generate.visible`,title:`PR Generation Visible Prompt`,group:`Git`,description:`Visible user message for PR title/body generation.`,template:`You are drafting GitHub Pull Request title and body using session context, commit list, and changed files.`},{id:`git.pr.generate.instructions`,title:`PR Generation Instructions`,group:`Git`,description:`Hidden instructions for PR title/body generation.`,placeholders:[{key:`base_branch`,description:`Base branch name.`},{key:`head_branch`,description:`Head branch name.`},{key:`commits`,description:`Bullet list of commits in base...head.`},{key:`changed_files`,description:`Bullet list of changed files in base...head.`},{key:`additional_context_block`,description:`Optional Additional context block (already formatted).`}],template:`Return exactly one JSON object and nothing else. Do not include prose, markdown outside JSON, explanations, or code fences.
|
|
22
|
+
|
|
23
|
+
The JSON object must have exactly this shape:
|
|
24
|
+
{"title": string, "body": string}
|
|
25
|
+
|
|
26
|
+
Rules:
|
|
27
|
+
- title: concise, outcome-first, conventional style
|
|
28
|
+
- body: markdown with sections: ## Summary, ## Why, ## Testing
|
|
29
|
+
- keep output concrete and user-facing
|
|
30
|
+
- put all markdown inside the body string
|
|
31
|
+
- use double quotes for all JSON strings and escape newlines as \\n
|
|
32
|
+
- do not include trailing commas or comments
|
|
33
|
+
|
|
34
|
+
Base branch: {{base_branch}}
|
|
35
|
+
Head branch: {{head_branch}}
|
|
36
|
+
|
|
37
|
+
Commits in range (base...head):
|
|
38
|
+
{{commits}}
|
|
39
|
+
|
|
40
|
+
Files changed across these commits:
|
|
41
|
+
{{changed_files}}{{additional_context_block}}`},{id:`github.pr.review.visible`,title:`PR Review Visible Prompt`,group:`GitHub`,description:`Visible user message when creating PR review requests from GitHub context.`,placeholders:[{key:`pr_number`,description:`Pull request number.`}],template:`Review this pull request #{{pr_number}} using the provided PR context`},{id:`github.pr.review.instructions`,title:`PR Review Instructions`,group:`GitHub`,description:`Hidden instructions attached when generating a PR review response.`,template:`You are drafting a pull request review comment that will be posted back to the PR author. You are not the implementer; do not propose to write code or run commands.
|
|
42
|
+
|
|
43
|
+
Before drafting:
|
|
44
|
+
- Read the PR title and body first to anchor on the author's intent. Evaluate whether the implementation matches that intent — missing pieces, incorrect behavior vs intent, scope creep.
|
|
45
|
+
- The PR diff is the source of truth for what changed; the repo on disk may not yet reflect those changes. Read the diff carefully. Use the repo only as ancillary context (imports, call sites, existing patterns, nearby code) when you need to verify a specific claim — not to discover the changes themselves.
|
|
46
|
+
- No speculation: every reported issue must be grounded in the diff plus ancillary repo evidence you actually read. If a claim cannot be verified, drop it — do not hedge or guess.
|
|
47
|
+
- Clarifying question: if the PR's intent itself is unreadable (title/body give no "why", diff is ambiguous on purpose), ask me one focused question about intent and stop. Do not open a discovery loop — this is a review, not a planning session.
|
|
48
|
+
|
|
49
|
+
High-signal bar — only report issues that meet all of:
|
|
50
|
+
- Objective and verifiable from the diff plus ancillary repo evidence.
|
|
51
|
+
- Introduced by this PR (not pre-existing).
|
|
52
|
+
- Material: bugs that will cause incorrect runtime behavior, security/privacy risks, correctness edge cases, backwards-compat breakage, missing implementations across modules/targets, boundary violations, OR a clear CLAUDE.md / AGENTS.md violation where you can quote the exact rule.
|
|
53
|
+
|
|
54
|
+
Do NOT report:
|
|
55
|
+
- Pre-existing issues unrelated to the diff.
|
|
56
|
+
- Pedantic nitpicks a senior engineer would not flag.
|
|
57
|
+
- Issues a linter would catch.
|
|
58
|
+
- Subjective style preferences not explicitly required by CLAUDE.md / AGENTS.md.
|
|
59
|
+
- "Might" / "could" / "potential" concerns without concrete evidence.
|
|
60
|
+
- Rules mentioned in CLAUDE.md / AGENTS.md but explicitly silenced in the code (e.g., via an ignore comment or documented exception).
|
|
61
|
+
- Missing tests / coverage gaps unless CLAUDE.md / AGENTS.md explicitly requires them for the changed area.
|
|
62
|
+
|
|
63
|
+
Validation pass: before writing the final comment, re-check each candidate issue against the diff + ancillary repo evidence. Drop anything you are not certain about. False positives waste the author's time.
|
|
64
|
+
|
|
65
|
+
Output rules:
|
|
66
|
+
- Produce a single review comment addressed to the PR author, using the exact format below.
|
|
67
|
+
- No emojis. No code snippets. No fenced blocks. Short inline code identifiers are fine.
|
|
68
|
+
- Reference evidence with file paths and line ranges (e.g., path/to/file.ts:120-138) derived from the diff. Use "approx" only as a last resort when the diff does not expose exact lines.
|
|
69
|
+
- One bullet per unique issue; do not duplicate an issue across sections.
|
|
70
|
+
- Keep the whole comment under ~300 words.
|
|
71
|
+
|
|
72
|
+
Format exactly:
|
|
73
|
+
<1-2 sentence summary of intent and top-level verdict>
|
|
74
|
+
|
|
75
|
+
Must-fix:
|
|
76
|
+
- <issue> - <brief why> - <file:line-range> - Action: <one-line action>
|
|
77
|
+
Nice-to-have:
|
|
78
|
+
- <issue> - <brief why> - <file:line-range> - Action: <one-line action>
|
|
79
|
+
|
|
80
|
+
If nothing clears the high-signal bar, write:
|
|
81
|
+
Must-fix:
|
|
82
|
+
- None
|
|
83
|
+
Nice-to-have:
|
|
84
|
+
- None`},{id:`github.issue.review.visible`,title:`Issue Review Visible Prompt`,group:`GitHub`,description:`Visible user message when creating issue review requests from GitHub context.`,placeholders:[{key:`issue_number`,description:`Issue number.`}],template:`Review this issue #{{issue_number}} using the provided issue context`},{id:`github.issue.review.instructions`,title:`Issue Review Instructions`,group:`GitHub`,description:`Hidden instructions attached when generating an issue review response.`,template:`Review this issue using the provided issue context.
|
|
85
|
+
|
|
86
|
+
Process:
|
|
87
|
+
- First classify the issue type (bug / feature request / question/support / refactor / ops) and state it as: Type: <one label>.
|
|
88
|
+
- Gather any needed repository context (code, config, docs) to validate assumptions.
|
|
89
|
+
- After gathering, if anything is still unclear or cannot be verified, do not speculate — state what's missing and ask targeted questions.
|
|
90
|
+
|
|
91
|
+
Mode selection by type:
|
|
92
|
+
- Bug / Question/Support / Ops: deliver the response directly using the matching template below. Do not bombard me with questions for straightforward diagnosis; use "Missing info" / "Repro/diagnostics needed" fields instead.
|
|
93
|
+
- Feature request / Refactor with substantive unknowns: this is effectively a planning session. Do not emit the Feature template on the first turn. Instead, ask me focused clarifying questions in batches of at most 3, one topic at a time (scope, constraints, tradeoffs, UX, etc.), wait for answers, drop questions that became irrelevant, and repeat until you have no more substantive questions. Only then emit the Feature template.
|
|
94
|
+
|
|
95
|
+
Output rules:
|
|
96
|
+
- Compact output; pick ONE template below and omit the others.
|
|
97
|
+
- No emojis. No code snippets. No fenced blocks.
|
|
98
|
+
- Short inline code identifiers allowed.
|
|
99
|
+
- Reference evidence with file paths and line ranges when applicable; if exact lines are not available, cite the file and say "approx" + why.
|
|
100
|
+
- Keep the entire response under ~300 words (applies to the final template output, not to clarifying-question turns).
|
|
101
|
+
|
|
102
|
+
Templates (choose one):
|
|
103
|
+
Bug:
|
|
104
|
+
- Summary (1-2 sentences)
|
|
105
|
+
- Likely cause (max 2)
|
|
106
|
+
- Repro/diagnostics needed (max 3)
|
|
107
|
+
- Fix approach (max 4 steps)
|
|
108
|
+
- Verification (max 3)
|
|
109
|
+
|
|
110
|
+
Feature:
|
|
111
|
+
- Summary (1-2 sentences)
|
|
112
|
+
- Requirements (max 4)
|
|
113
|
+
- Unknowns/questions (max 4)
|
|
114
|
+
- Proposed plan (max 5 steps)
|
|
115
|
+
- Verification (max 3)
|
|
116
|
+
|
|
117
|
+
Question/Support:
|
|
118
|
+
- Summary (1-2 sentences)
|
|
119
|
+
- Answer/guidance (max 6 lines)
|
|
120
|
+
- Missing info (max 4)
|
|
121
|
+
|
|
122
|
+
Do not implement changes until I confirm; end with: "Next actions: <1 sentence>".`},{id:`github.pr.checks.review.visible`,title:`PR Failed Checks Visible Prompt`,group:`GitHub`,description:`Visible user message for PR failed checks analysis.`,template:`Review these PR failed checks and propose likely fixes. Do not implement until I confirm.`},{id:`github.pr.checks.review.instructions`,title:`PR Failed Checks Instructions`,group:`GitHub`,description:`Hidden instructions for PR failed checks analysis.`,template:`Use the attached checks payload.
|
|
123
|
+
- Summarize what is failing.
|
|
124
|
+
- Prioritize check annotations/errors over generic status text.
|
|
125
|
+
- Identify likely root cause(s).
|
|
126
|
+
- Propose a minimal fix plan and verification steps.
|
|
127
|
+
- No speculation: ask for missing info if needed.`},{id:`github.pr.comments.review.visible`,title:`PR Comments Review Visible Prompt`,group:`GitHub`,description:`Visible user message for PR comments analysis.`,template:`Review these PR comments and propose the required changes and next actions. Do not implement until I confirm.`},{id:`github.pr.comments.review.instructions`,title:`PR Comments Review Instructions`,group:`GitHub`,description:`Hidden instructions for PR comments analysis.`,template:`Use the attached comments payload.
|
|
128
|
+
- Identify required vs optional changes.
|
|
129
|
+
- Call out intent/implementation mismatch if present.
|
|
130
|
+
- Before proposing a plan: if a comment's intent is ambiguous, or the required change depends on a tradeoff only I can decide, ask me focused clarifying questions in batches of at most 3 and wait for answers. Do not speculate.
|
|
131
|
+
- Once intent is clear, propose a minimal plan and verification steps.`},{id:`github.pr.comment.single.visible`,title:`Single PR Comment Visible Prompt`,group:`GitHub`,description:`Visible user message for single PR comment analysis.`,template:`Address this comment from PR and propose required changes. Do not implement until I confirm.`},{id:`github.pr.comment.single.instructions`,title:`Single PR Comment Instructions`,group:`GitHub`,description:`Hidden instructions for single PR comment analysis.`,template:`Use the attached single-comment payload.
|
|
132
|
+
- Explain what the reviewer is asking for.
|
|
133
|
+
- Identify exact code areas likely impacted.
|
|
134
|
+
- Before proposing a plan: if the reviewer's intent is ambiguous or the required change depends on a tradeoff only I can decide, ask me focused clarifying questions in batches of at most 3 and wait for answers. Do not speculate.
|
|
135
|
+
- Once intent is clear, propose a minimal implementation plan and verification steps.`},{id:`git.conflict.resolve.visible`,title:`Merge/Rebase Conflict Visible Prompt`,group:`Git`,description:`Visible user message for merge/rebase conflict resolution help.`,placeholders:[{key:`operation_label`,description:`Operation label in lower-case (merge/rebase).`},{key:`head_ref`,description:`Head reference for preserving intent.`}],template:`Investigate the {{operation_label}} conflicts and concisely report the intended resolution strategy without making modifications. Wait for confirmation before resolving, staging, or continuing the {{operation_label}}. Preserve the intent of changes from {{head_ref}}.`},{id:`git.conflict.resolve.instructions`,title:`Merge/Rebase Conflict Instructions`,group:`Git`,description:`Hidden instructions for merge/rebase conflict resolution help.`,placeholders:[{key:`operation_label`,description:`Operation label in lower-case (merge/rebase).`},{key:`directory`,description:`Repository directory path.`},{key:`operation`,description:`Operation name.`},{key:`head_info`,description:`Head metadata if available.`},{key:`continue_cmd`,description:`Command to continue operation.`}],template:`Git {{operation_label}} operation is in progress with conflicts.
|
|
136
|
+
- Directory: {{directory}}
|
|
137
|
+
- Operation: {{operation}}
|
|
138
|
+
- Head Info: {{head_info}}
|
|
139
|
+
|
|
140
|
+
Required steps before confirmation:
|
|
141
|
+
1. Read each conflicted file to understand the conflict markers (<<<<<<< HEAD, =======, >>>>>>> ...)
|
|
142
|
+
2. Inspect the relevant surrounding code and changes from both sides
|
|
143
|
+
3. Report a concise per-file resolution strategy and any assumptions or tradeoffs
|
|
144
|
+
4. Wait for explicit user confirmation before editing files, staging files, or running: {{continue_cmd}}
|
|
145
|
+
|
|
146
|
+
Important:
|
|
147
|
+
- Do not modify files before the user confirms the proposed strategy
|
|
148
|
+
- Do not stage files before the user confirms the proposed strategy
|
|
149
|
+
- Do not continue the {{operation_label}} before the user confirms the proposed strategy
|
|
150
|
+
- Remove ALL conflict markers from files (<<<<<<< HEAD, =======, >>>>>>>)
|
|
151
|
+
- Make sure the final code is syntactically correct and preserves intent from both sides
|
|
152
|
+
- Do not leave any files with unresolved conflict markers
|
|
153
|
+
- After completing all steps, confirm the {{operation_label}} was successful`},{id:`git.integrate.cherrypick.resolve.visible`,title:`Cherry-pick Conflict Visible Prompt`,group:`Git`,description:`Visible user message for cherry-pick conflict resolution help.`,placeholders:[{key:`current_commit`,description:`Current commit hash being applied.`},{key:`target_branch`,description:`Target branch name.`}],template:`Resolve cherry-pick conflicts, stage the resolved files, and continue the cherry-pick. Keep intent of commit {{current_commit}} onto branch {{target_branch}}.`},{id:`git.integrate.cherrypick.resolve.instructions`,title:`Cherry-pick Conflict Instructions`,group:`Git`,description:`Hidden instructions for cherry-pick conflict resolution help.`,placeholders:[{key:`repo_root`,description:`Repository root path.`},{key:`temp_worktree_path`,description:`Temporary worktree path.`},{key:`source_branch`,description:`Source branch name.`},{key:`target_branch`,description:`Target branch name.`},{key:`current_commit`,description:`Current commit hash being applied.`}],template:`Worktree commit integration (cherry-pick) is in progress with conflicts.
|
|
154
|
+
- Repo root: {{repo_root}}
|
|
155
|
+
- Temp target worktree: {{temp_worktree_path}}
|
|
156
|
+
- Source branch: {{source_branch}}
|
|
157
|
+
- Target branch: {{target_branch}}
|
|
158
|
+
- Current commit: {{current_commit}}
|
|
159
|
+
|
|
160
|
+
Required steps:
|
|
161
|
+
1. Read each conflicted file in the temp worktree to understand the conflict markers (<<<<<<< HEAD, =======, >>>>>>> ...)
|
|
162
|
+
2. Edit each file to resolve conflicts by choosing the correct code or merging both changes appropriately
|
|
163
|
+
3. Stage all resolved files with: git add <file>
|
|
164
|
+
4. Complete the cherry-pick with: git cherry-pick --continue
|
|
165
|
+
|
|
166
|
+
Important:
|
|
167
|
+
- Work inside the temp worktree directory: {{temp_worktree_path}}
|
|
168
|
+
- Remove ALL conflict markers from files (<<<<<<< HEAD, =======, >>>>>>>)
|
|
169
|
+
- Preserve the intent of the commit being applied
|
|
170
|
+
- Make sure the final code is syntactically correct
|
|
171
|
+
- Do not leave any files with unresolved conflict markers
|
|
172
|
+
- After completing all steps, confirm the cherry-pick was successful`},{id:`session.summary.visible`,title:`Session Summary Visible Prompt`,group:`Session`,description:`Visible user message sent by the /summary command.`,placeholders:[{key:`topic_line`,description:`Pre-formatted topic clause (e.g. " focused on: <topic>") or empty string.`}],template:`Summarize this session{{topic_line}}.`},{id:`session.summary.instructions`,title:`Session Summary Instructions`,group:`Session`,description:`Hidden instructions attached to the /summary command. Produces a non-destructive summary usable for handing off to a new session.`,placeholders:[{key:`topic_block`,description:`Pre-formatted topic focus paragraph, or empty string when no topic hint was given.`}],template:`Produce a non-destructive summary of this conversation. Do NOT compact or mutate session history — your output is an additional assistant message the user will read and may use to hand off to a new session.
|
|
173
|
+
|
|
174
|
+
Cover the information useful for continuing this work:
|
|
175
|
+
- What was done (completed work, in order)
|
|
176
|
+
- What is currently in progress
|
|
177
|
+
- Files modified — brief what and why per file
|
|
178
|
+
- Open questions and next steps
|
|
179
|
+
- User requests, constraints, or preferences to carry forward
|
|
180
|
+
- Important technical decisions and why they were made
|
|
181
|
+
|
|
182
|
+
{{topic_block}}
|
|
183
|
+
|
|
184
|
+
Formatting:
|
|
185
|
+
- Concise markdown with short sections and bullet lists
|
|
186
|
+
- No preamble like "Here is a summary" — jump straight to content
|
|
187
|
+
- Do not answer questions found in the conversation — only summarize
|
|
188
|
+
- Keep length proportional to session length; do not pad
|
|
189
|
+
|
|
190
|
+
Respond in the same language the user used most in the conversation.`},{id:`session.review.visible`,title:`Workspace Review Visible Prompt`,group:`Session`,description:`Visible user message sent by the /workspace-review command.`,template:`Review the changes made in this workspace.`},{id:`session.review.instructions`,title:`Workspace Review Instructions`,group:`Session`,description:`Hidden instructions attached to the /workspace-review command. Reviews the workspace diff for intent, correctness, and adequacy, with severity-classified findings.`,template:`Review the changes in this workspace and judge whether they are correct and adequate — not just whether they contain catastrophic bugs.
|
|
191
|
+
|
|
192
|
+
The diff is the source of truth. Read the relevant code around the diff too, not only the diff itself, so you understand the change in context.
|
|
193
|
+
|
|
194
|
+
First, understand the intent and whether it was achieved:
|
|
195
|
+
- Work out what these changes are trying to do — the intent behind them — from the diff and the surrounding code.
|
|
196
|
+
- Judge whether the implementation actually achieves that intent, and whether it is the smallest correct way to do it. Call out where the change is incomplete, only partially solves the goal, misses cases it clearly set out to handle, or solves it in a way that will not hold up.
|
|
197
|
+
|
|
198
|
+
Then look for concrete problems. Report real failure modes, not abstract suspicions, and do not nitpick without impact.
|
|
199
|
+
|
|
200
|
+
Correctness focus:
|
|
201
|
+
- race conditions, stale async results, event ordering
|
|
202
|
+
- data loss or failed writes
|
|
203
|
+
- lifecycle and cleanup (listeners, timers, subscriptions, resources)
|
|
204
|
+
- non-transitive comparators or unstable sorting
|
|
205
|
+
- state/store fanout and render performance
|
|
206
|
+
- optimistic state rollback and reconciliation
|
|
207
|
+
- accessibility semantics
|
|
208
|
+
- regressions introduced by the changes
|
|
209
|
+
- missing implementations across affected modules or targets when the diff clearly introduced the gap
|
|
210
|
+
- missing targeted tests for risky or regression-prone changes
|
|
211
|
+
- clear CLAUDE.md or AGENTS.md violations that apply to the changed files
|
|
212
|
+
|
|
213
|
+
Security and supply-chain focus (when the diff touches these):
|
|
214
|
+
- dependencies, build/release/CI scripts
|
|
215
|
+
- auth, tokens, secrets, credentials
|
|
216
|
+
- filesystem boundaries and path traversal
|
|
217
|
+
- shell execution
|
|
218
|
+
- network calls, telemetry, exfiltration
|
|
219
|
+
- IPC, native bridge, updater, desktop shell
|
|
220
|
+
- hidden behavior behind small diffs or broad refactors
|
|
221
|
+
|
|
222
|
+
Do not report:
|
|
223
|
+
- pre-existing issues unrelated to the diff
|
|
224
|
+
- pedantic nitpicks a senior engineer would not flag, or issues a linter would catch
|
|
225
|
+
- subjective style preferences not required by CLAUDE.md or AGENTS.md
|
|
226
|
+
- speculative concerns you cannot tie to a concrete failure
|
|
227
|
+
- rules mentioned in CLAUDE.md or AGENTS.md but explicitly silenced in the code
|
|
228
|
+
|
|
229
|
+
Validation pass:
|
|
230
|
+
- Before reporting an issue, re-check it against the diff plus only the context you actually read.
|
|
231
|
+
- For CLAUDE.md or AGENTS.md violations, verify the rule applies to the affected file path and cite the exact rule.
|
|
232
|
+
- If you cannot tie a finding to a concrete impact, drop it.
|
|
233
|
+
|
|
234
|
+
Classify each finding:
|
|
235
|
+
- blocker: likely regression, data loss, security issue, broken invariant, or a serious correctness problem — or the change does not actually achieve its intent
|
|
236
|
+
- non-blocker: a real but minor issue, a test gap, or a maintainability concern
|
|
237
|
+
- nit: mention only if useful, never treat as blocking
|
|
238
|
+
|
|
239
|
+
This is a review only — do not edit, fix, or commit anything unless the user asks you to.
|
|
240
|
+
|
|
241
|
+
Output:
|
|
242
|
+
- Start with one or two sentences: what the change does and whether it achieves its intent.
|
|
243
|
+
- Then list findings grouped by severity. For each: short title, why it is a real problem, the affected file path, and category (correctness / security / rule violation / adequacy gap).
|
|
244
|
+
- If you find nothing real, say so plainly instead of inventing findings.
|
|
245
|
+
|
|
246
|
+
Keep the review concise and practical. Respond in the same language the user uses.`},{id:`session.reviewHandoff.visible`,title:`Review Handoff Visible Prompt`,group:`Session`,description:`Visible user message sent by the /handoff-review command.`,template:`Prepare a handoff for another agent to review this work.`},{id:`session.reviewHandoff.instructions`,title:`Review Handoff Instructions`,group:`Session`,description:`Hidden instructions attached to the /handoff-review command. Produces a handoff for a separate review agent.`,template:`Produce a review handoff for another agent. Do not compact or mutate session history. Your output is an assistant message that OpenChamber will send to a separate reviewer agent.
|
|
247
|
+
|
|
248
|
+
Include:
|
|
249
|
+
- The user's original intent and any later clarifications that changed the intent
|
|
250
|
+
- What was implemented and why
|
|
251
|
+
- Files changed, with brief purpose per file
|
|
252
|
+
- Important design decisions and tradeoffs
|
|
253
|
+
- Validation/tests run, if known
|
|
254
|
+
- Known gaps, uncertainty, or areas the reviewer should inspect closely
|
|
255
|
+
|
|
256
|
+
Formatting:
|
|
257
|
+
- Concise markdown with clear sections
|
|
258
|
+
- No preamble like "Here is a handoff"
|
|
259
|
+
- Do not mention OpenChamber metadata, linked sessions, session IDs, or routing
|
|
260
|
+
- Respond in the same language the user used most in the conversation`},{id:`session.reviewSession.visible`,title:`Review Session Starter Prompt`,group:`Session`,description:`Visible user message sent to the generated review session.`,placeholders:[{key:`handoff`,description:`The generated implementation handoff.`}],template:`Please review the changes described in this handoff.
|
|
261
|
+
|
|
262
|
+
Focus on correctness, regressions, missing implementation, missing tests, and whether the implementation satisfies the stated intent. Provide concise, actionable feedback for the agent implementing the changes.
|
|
263
|
+
|
|
264
|
+
{{handoff}}`},{id:`session.reviewSessionWithoutHandoff.visible`,title:`Review Session Starter Prompt Without Handoff`,group:`Session`,description:`Visible user message sent to a generated review session when no implementation handoff is generated first.`,template:`Please review the current workspace changes.
|
|
265
|
+
|
|
266
|
+
There is no generated implementation handoff. Infer the likely user intent from the current diff, recent session context if available, changed files, and surrounding code. Judge whether the implementation is correct for that inferred intent, and call out uncertainty explicitly when intent cannot be recovered.
|
|
267
|
+
|
|
268
|
+
Focus on correctness, regressions, missing implementation, missing tests, and whether the implementation is the smallest maintainable way to satisfy the likely goal. Provide concise, actionable feedback for the agent implementing the changes.`},{id:`session.reviewFeedbackToImplementer.visible`,title:`Review Feedback Transfer Prompt`,group:`Session`,description:`Visible user message sent from a review session back to the implementing agent.`,placeholders:[{key:`review_feedback`,description:`Reviewer assistant feedback text.`}],template:`Another agent reviewed your changes and left the feedback below.
|
|
269
|
+
|
|
270
|
+
Please review the feedback, resolve the relevant issues, and explain what you changed.
|
|
271
|
+
|
|
272
|
+
{{review_feedback}}`},{id:`session.implementationResponseToReviewer.visible`,title:`Implementation Response Transfer Prompt`,group:`Session`,description:`Visible user message sent from the implementing agent back to the review session.`,placeholders:[{key:`implementation_response`,description:`Implementing assistant response text.`}],template:`The agent implementing the changes has responded to the previous review feedback.
|
|
273
|
+
|
|
274
|
+
Please review the latest state again and report any remaining issues.
|
|
275
|
+
|
|
276
|
+
{{implementation_response}}`},{id:`session.craftGoal.visible`,title:`Goal Crafting Visible Prompt`,group:`Session`,description:`Visible user message sent by the /craft-goal command.`,placeholders:[{key:`idea_block`,description:`Optional initial task or idea supplied after the command.`}],template:`Help me turn an idea or task into a clear, verifiable Goal.{{idea_block}}`},{id:`session.craftGoal.instructions`,title:`Goal Crafting Instructions`,group:`Session`,description:`Hidden instructions attached to the /craft-goal command. Guides discovery and produces a ready-to-use Goal objective.`,template:`The user wants help turning a task, idea, or desired outcome into a strong Goal for an autonomous, multi-turn working session.
|
|
277
|
+
|
|
278
|
+
A Goal is a persistent completion contract, not an implementation plan and not a larger one-shot prompt. Help the user define what "done" means clearly enough that another agent can work toward it, verify it against evidence, continue through uncertain intermediate steps, and stop honestly when completion is blocked.
|
|
279
|
+
|
|
280
|
+
Run this as a guided dialogue, not a one-shot answer.
|
|
281
|
+
|
|
282
|
+
1. Start from the user's intent. If the visible message includes an initial idea, use it immediately. Otherwise ask what they want to accomplish. Do not ask them to formulate the Goal themselves.
|
|
283
|
+
|
|
284
|
+
2. Investigate before asking when context is available. For repository work, inspect relevant code, tests, scripts, documentation, and conventions when that would answer questions or expose constraints. Do not ask for information that can be determined reliably from the workspace.
|
|
285
|
+
|
|
286
|
+
3. Decide whether a Goal is appropriate. Goals fit work with a durable objective, an evidence-based finish line, and an uncertain or iterative path. If this is a one-off edit, simple explanation, or obvious single step, explain briefly that a normal prompt is likely better. Continue crafting a Goal if the user still wants one.
|
|
287
|
+
|
|
288
|
+
4. Resolve the Goal contract:
|
|
289
|
+
- Outcome: what must be true when the work is complete.
|
|
290
|
+
- Verification surface: which tests, benchmarks, commands, artifacts, source material, observations, or other evidence prove completion.
|
|
291
|
+
- Constraints: what behavior, quality, compatibility, safety, performance, or scope must remain intact.
|
|
292
|
+
- Boundaries: which files, systems, tools, data, repositories, environments, or resources may or may not be used.
|
|
293
|
+
- Iteration policy: how the working agent should evaluate evidence and choose the next useful action after each attempt.
|
|
294
|
+
- Blocked stop condition: when it should stop, what evidence and attempted paths it should report, and what input would unlock progress.
|
|
295
|
+
|
|
296
|
+
5. Ask only necessary questions, in batches of at most 3. Prefer concrete, decision-oriented questions. Distinguish facts found in the workspace from decisions only the user can make.
|
|
297
|
+
|
|
298
|
+
6. Do not over-prescribe the path. Define the destination, evidence standard, and operating constraints while leaving the working agent room to choose its next action from what it learns.
|
|
299
|
+
|
|
300
|
+
7. Do not invent precision. Never fabricate targets, commands, environments, acceptance criteria, or scope. When exact criteria are unavailable, define an honest evidence standard that separates confirmed results, approximations, blockers, and remaining uncertainty.
|
|
301
|
+
|
|
302
|
+
8. Do not implement the task. You may inspect the workspace to understand it, but do not edit files, execute the proposed solution, or begin working toward the Goal. This session's deliverable is the Goal itself.
|
|
303
|
+
|
|
304
|
+
9. Once the contract is resolved, respond in exactly this structure:
|
|
305
|
+
|
|
306
|
+
## Proposed Goal
|
|
307
|
+
|
|
308
|
+
\`\`\`text
|
|
309
|
+
<one self-contained Goal objective ready to paste into the Goal dialog; do not prefix it with /goal>
|
|
310
|
+
\`\`\`
|
|
311
|
+
|
|
312
|
+
## Why This Is Verifiable
|
|
313
|
+
|
|
314
|
+
- <brief explanation of the outcome and evidence>
|
|
315
|
+
- <brief explanation of the preserved constraints>
|
|
316
|
+
- <brief explanation of the blocked stop condition>
|
|
317
|
+
|
|
318
|
+
## Assumptions
|
|
319
|
+
|
|
320
|
+
- <only assumptions that still matter, or "None">
|
|
321
|
+
|
|
322
|
+
The proposed Goal should normally be one compact paragraph. Keep enough operational detail to make completion auditable, but remove conversational history, rationale, repetition, and implementation details that are not part of the completion contract.
|
|
323
|
+
|
|
324
|
+
Do not activate, execute, or claim completion of the proposed Goal. End by inviting the user to revise it or use it in the Goal dialog.
|
|
325
|
+
|
|
326
|
+
Respond in the same language the user uses.`},{id:`session.catchup.visible`,title:`Catch Up Visible Prompt`,group:`Session`,description:`Visible user message sent by the /catch-up command.`,template:`Catch me up on where this project is right now.`},{id:`session.catchup.instructions`,title:`Catch Up Instructions`,group:`Session`,description:`Hidden instructions attached to the /catch-up command. Inspects git state and branches on it: in-progress diff, open PR review state, or recent commits.`,template:`The user is returning to this project after stepping away and wants to quickly get their bearings — a quick, easy-to-digest "here's where you are and where to pick up", not a status report. Investigate the actual repository state first, then orient them conversationally. Do not assume; check.
|
|
327
|
+
|
|
328
|
+
Quietly inspect git state first, and do this work silently — the user wants the takeaway, not a play-by-play of the commands you ran. Look at: the current branch and whether it is the repo's default branch (main/master, or whatever this repo uses), uncommitted changes (status and diff), recent commits, and where the branch stands relative to its remote.
|
|
329
|
+
|
|
330
|
+
Build context in LAYERS — they combine, they are not either/or. Uncommitted changes (when present) are the focal point, but understand them THROUGH the surrounding context, because work in progress is usually part of something bigger.
|
|
331
|
+
|
|
332
|
+
First, get the branch context:
|
|
333
|
+
- If this is NOT the default branch (a feature branch): understand what the branch is for as a whole. Read its recent commits and their diffs — not all of them, just enough, going back until the intent and how it is being implemented become clear. Also check whether the branch has its OWN open pull request, even when there are uncommitted changes — the PR explains what the current diff is in service of (continuing the feature, or addressing review feedback) and helps you judge whether the work looks finished or still mid-flight. If the branch is behind its remote (someone pushed), mention that as a heads-up.
|
|
334
|
+
- If this IS the default branch: take a light skim of the last few commits (no deep dive) to see whether the uncommitted work is a continuation of recent work, and of what.
|
|
335
|
+
|
|
336
|
+
Then focus and synthesize:
|
|
337
|
+
- If there are uncommitted changes, lead with them — what they were doing and why, what looks done versus still in progress, and where they likely stopped — interpreted through the branch context above (is this completing the feature? addressing review? a new direction?). Open with that, e.g. "Looks like you were in the middle of X…".
|
|
338
|
+
- If the tree is clean, orient from the branch's own work and PR (feature branch) or the recent commits (default branch).
|
|
339
|
+
|
|
340
|
+
End with a clear next step, and make it about continuing the actual work, not housekeeping. The fact that they ran this command means they stepped away — if the work were finished they would most likely have shipped it already, so assume there is more to do and point to the substantive next piece ("next you'd wire X into Y and handle Z"). Only suggest housekeeping — pushing, opening a PR, running checks — when there is genuinely nothing left to build, or when it is truly the most useful thing to do next.
|
|
341
|
+
|
|
342
|
+
Hard rules:
|
|
343
|
+
- Only ever discuss the CURRENT branch and its own work. Never mention unrelated branches, other people's PRs, review requests assigned to the user, or PRs that belong to other branches — that is noise here.
|
|
344
|
+
- Use ahead/behind and commit history to understand intent, not as something to dump. Don't pad with raw git mechanics (exact commit counts, "ahead of origin by N", remote-tracking detail) unless it is genuinely the single most useful thing to say.
|
|
345
|
+
- Depth goes into your understanding, not the length of the reply. Keep the output short, easy to digest, and scannable — a couple of sentences of orientation plus a clear next step. Write like a teammate catching them up, not a CI summary.
|
|
346
|
+
|
|
347
|
+
Respond in the same language the user uses.`},{id:`session.debug.visible`,title:`Debugging Visible Prompt`,group:`Session`,description:`Visible user message sent by the /debug command.`,template:`I want to debug an issue.`},{id:`session.debug.instructions`,title:`Debugging Instructions`,group:`Session`,description:`Hidden instructions attached to the /debug command. Runs a guided root-cause investigation before proposing a fix.`,template:`The user wants help debugging an issue. Drive this as a focused root-cause investigation — not a plan, and not an immediate fix.
|
|
348
|
+
|
|
349
|
+
1. Get the symptom. When the user describes the problem, capture exactly what is observed versus expected — error messages, stack traces, failing behavior, and when it started. If a key detail is missing to even begin, ask for it briefly.
|
|
350
|
+
|
|
351
|
+
2. Form hypotheses. List the most likely causes, ordered by probability given the symptom and the code, and be explicit about your reasoning.
|
|
352
|
+
|
|
353
|
+
3. Investigate to confirm or rule out. Read the relevant code, trace the data and control flow, and check the leading hypotheses against what the code actually does. Prefer evidence from the code over speculation.
|
|
354
|
+
|
|
355
|
+
4. Ask only what you need. If you need a reproduction, logs, environment details, or a specific value to narrow it down, ask for the minimum required — in small batches — rather than guessing.
|
|
356
|
+
|
|
357
|
+
5. Identify the root cause. Before touching any code, state the actual cause and the evidence for it, and distinguish the root cause from its symptoms.
|
|
358
|
+
|
|
359
|
+
6. Only then propose a fix — the smallest change that addresses the root cause, plus how to verify it. Do not start editing code until the cause is confirmed or the user asks you to.
|
|
360
|
+
|
|
361
|
+
Respond in the same language the user uses.`},{id:`session.weigh.visible`,title:`Weigh Options Visible Prompt`,group:`Session`,description:`Visible user message sent by the /weigh command.`,template:`Help me decide how to approach this.`},{id:`session.weigh.instructions`,title:`Weigh Options Instructions`,group:`Session`,description:`Hidden instructions attached to the /weigh command. Investigates the code, then compares distinct approaches with trade-offs and a recommendation — no plan, no code.`,template:`The user knows WHAT they want to do but not HOW to approach it. Help them choose a direction — this is about weighing options and recommending one, not producing a detailed plan and not writing code.
|
|
362
|
+
|
|
363
|
+
First, investigate. Once the user describes the goal, read the relevant code, existing patterns, and constraints so your options are grounded in this codebase rather than generic advice. Make sure you actually understand what they are trying to achieve and why. Ask a clarifying question only if a key constraint is missing and would actually change the options.
|
|
364
|
+
|
|
365
|
+
Then lay out 2-3 genuinely distinct approaches — real alternatives, not minor variations of one idea. Include the approaches that properly deliver what the user wants, even when they are more involved; never leave out a strong option just because it is harder to build. For each, cover:
|
|
366
|
+
- what it involves, in a sentence or two
|
|
367
|
+
- how well it actually satisfies the user's goal — does it fully solve it, or only partially?
|
|
368
|
+
- how it fits (or fights) the existing patterns in this codebase
|
|
369
|
+
- trade-offs and consequences: complexity, risk, blast radius, effort, long-term maintainability
|
|
370
|
+
- when it is the right choice
|
|
371
|
+
|
|
372
|
+
Then give a clear recommendation. Anchor it on what best serves the user's actual need and intent — NOT on whatever is fastest, easiest, or the path of least resistance. Effort and complexity are consequences to lay out honestly, never reasons to steer the user toward a weaker option. Never recommend a watered-down or partial solution just because the proper one is more work: if the approach that truly fits is also the hard one, recommend it and be upfront about what it will cost. Favor a simpler option only when it genuinely meets the goal about as well. State which one you would pick and why, and name what would change your mind (for example, "go with A unless you expect X, in which case B").
|
|
373
|
+
|
|
374
|
+
Keep it concrete and scannable. Do not start implementing and do not write a step-by-step plan — once the user picks a direction, they can take it into planning or build it directly.
|
|
375
|
+
|
|
376
|
+
Respond in the same language the user uses.`},{id:`session.explore.visible`,title:`Codebase Tour Visible Prompt`,group:`Session`,description:`Visible user message sent by the /explore command.`,template:`Give me a high-level tour of this codebase.`},{id:`session.explore.instructions`,title:`Codebase Tour Instructions`,group:`Session`,description:`Hidden instructions attached to the /explore command. Investigates the repository and gives a structured orientation rather than a file-by-file dump.`,template:`The user wants to get oriented in this codebase — a high-level tour, as if you were onboarding a new contributor. Investigate first, then explain; do not guess from file or symbol names alone.
|
|
377
|
+
|
|
378
|
+
Explore the actual repository: entry points, the top-level structure, how it is built and run, and the main modules and how they connect. Read enough real code to be accurate.
|
|
379
|
+
|
|
380
|
+
Then give a clear orientation covering:
|
|
381
|
+
- The big picture: what this project is and how it is structured at a high level.
|
|
382
|
+
- Main parts: the key modules, packages, or directories, what each is responsible for, and where they live.
|
|
383
|
+
- How it fits together: the main flow — how a request or action moves through the system, and how the pieces talk to each other.
|
|
384
|
+
- Conventions worth knowing: notable patterns, where shared code, types, and config live, and anything non-obvious a newcomer would trip on.
|
|
385
|
+
- Where to start: a few concrete pointers for finding your way around or making a first change.
|
|
386
|
+
|
|
387
|
+
Keep it a readable orientation, not an exhaustive file-by-file dump — favor the structure and the mental model over listing everything. Lead with the big picture, then drill down. If the user named a specific area, focus the tour there.
|
|
388
|
+
|
|
389
|
+
Respond in the same language the user uses.`},{id:`session.fusion.visible`,title:`Fusion Visible Prompt`,group:`Session`,description:`Visible user message for multi-run fusion sessions.`,template:`Create the best combined answer from the multi-run results.`},{id:`session.fusion.instructions`,title:`Fusion Instructions`,group:`Session`,description:`Hidden instructions used before multi-run source outputs in fusion sessions.`,template:`You are performing fusion over multiple model outputs from the same original task.
|
|
390
|
+
|
|
391
|
+
Goal: produce the strongest possible final answer by combining complementary information, resolving conflicts, removing duplicates, and preserving useful nuance.
|
|
392
|
+
|
|
393
|
+
Use the results below as source material. Do not mention that the inputs were hidden parts. If sources disagree, prefer the most specific, well-supported, and internally consistent answer.
|
|
394
|
+
|
|
395
|
+
--- FUSION INPUTS START ---`}].map(e=>[e.id,e])),jp={"git.commit.generate":{visible:`git.commit.generate.visible`,instructions:`git.commit.generate.instructions`},"git.pr.generate":{visible:`git.pr.generate.visible`,instructions:`git.pr.generate.instructions`}},Mp=null,Np=null,Pp=(e,t)=>e.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g,(e,n)=>Object.prototype.hasOwnProperty.call(t,n)?t[n]??``:``),Fp=e=>{let t=e?.overrides;if(!t||typeof t!=`object`||Array.isArray(t))return{};let n={};for(let[e,r]of Object.entries(t))typeof r==`string`&&(n[e]=r);for(let[e,t]of Object.entries(jp)){let r=n[e];if(typeof r!=`string`)continue;let i=r.indexOf(`
|
|
396
|
+
`),a=(i===-1?r:r.slice(0,i)).trim(),o=(i===-1?``:r.slice(i+1)).trim();!(t.visible in n)&&a.length>0&&(n[t.visible]=a),!(t.instructions in n)&&o.length>0&&(n[t.instructions]=o)}return n},Ip=async()=>Mp||(Np||=_(kp,{method:`GET`,headers:{Accept:`application/json`}}).then(async e=>{if(!e.ok)throw Error(`Failed to load magic prompts`);let t=Fp(await e.json().catch(()=>({})));return Mp=t,t}).finally(()=>{Np=null}),Np),Lp=e=>{let t=Ap.get(e);if(!t)throw Error(`Unknown magic prompt id: ${e}`);return t},Rp=e=>Lp(e).template,zp=async e=>{let t=(await Ip().catch(()=>({})))[e];return typeof t==`string`?t:Rp(e)},Bp=async(e,t={})=>Pp(await zp(e),t),Vp=async(e,t)=>{let n=await _(`${kp}/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({text:t})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e?.error||`Failed to save magic prompt`)}let r=await n.json();return Mp=Fp(r),{version:typeof r?.version==`number`?r.version:1,overrides:Mp}},Hp=async e=>{let t=await _(`${kp}/${encodeURIComponent(e)}`,{method:`DELETE`,headers:{Accept:`application/json`}});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e?.error||`Failed to reset magic prompt`)}let n=await t.json();return Mp=Fp(n),{version:typeof n?.version==`number`?n.version:1,overrides:Mp}},Up=async()=>{let e=await _(kp,{method:`DELETE`,headers:{Accept:`application/json`}});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t?.error||`Failed to reset all magic prompts`)}let t=await e.json();return Mp=Fp(t),{version:typeof t?.version==`number`?t.version:1,overrides:Mp}},Wp=e=>e.filter(e=>e?.type===`text`).map(e=>(e.text||e.content||``).trim()).filter(e=>e.length>0).join(`
|
|
397
|
+
`).replace(/\n\s*\n+/g,`
|
|
398
|
+
`),Gp=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Kp=e=>{let t=e?.metadata;return Gp(t)?t:{}},qp=e=>{let t=e.openchamber;return Gp(t)?t:{}},Jp=e=>{let t=qp(Kp(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Yp=e=>{let t=qp(Kp(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Xp=e=>qp(Kp(e)).kind===`review`&&!!Yp(e),Zp=(e,t)=>{let n=qp(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Qp=(e,t)=>{let n=qp(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},$p=(e,t)=>{let n=qp(e);if(n.reviewSessionID!==t)return e;let r={...n};delete r.reviewSessionID;let i={...e};return Object.keys(r).length>0?i.openchamber=r:delete i.openchamber,i},em=De()(Oe((e,t)=>({runsByOriginalSessionID:{},upsertRun:t=>e(e=>({runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t.originalSessionID]:t}})),updateRun:(t,n)=>e(e=>{let r=e.runsByOriginalSessionID[t];return r?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:n(r)}}:e}),stopRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`stopped`}}}:e}),completeRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`completed`}}}:e}),stopRunningRunsForRuntime:t=>e(e=>{let n=!1,r={...e.runsByOriginalSessionID};for(let[e,i]of Object.entries(r))i.runtimeKey===t&&i.status===`running`&&(r[e]={...i,status:`stopped`},n=!0);return n?{runsByOriginalSessionID:r}:e}),isRunningForSession:e=>t().runsByOriginalSessionID[e]?.status===`running`}),{name:`auto-review-store`,storage:Ye(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),tm=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},nm=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=tm(t.parentSessionId),r=tm(t.sessionId);if(!(!n||!r||n===r))return{parentSessionId:n,sessionId:r}},rm=e=>{let t=[];for(let n of e){if(n?.type!==`tool`||n.tool!==`task`)continue;let e=n.state;if(!e||typeof e!=`object`||Array.isArray(e))continue;let r=e;if(r.status!==`running`)continue;let i=r.metadata,a=nm(i);a&&t.push(a)}return t},im=[],am=(e,t,n)=>{let r=new Map;for(let t of e){if(!t.parentID)continue;let e=r.get(t.parentID)??[];e.push(t.id),r.set(t.parentID,e)}if(n)for(let e of n){let t=r.get(e.parentSessionId)??[];t.push(e.sessionId),r.set(e.parentSessionId,t)}let i=new Set([t]),a=[t];for(let e of a){let t=r.get(e);if(t)for(let e of t)i.has(e)||(i.add(e),a.push(e))}return i},om=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0},sm=(e,t,n,r,i)=>{if(!n)return r;let a=am(e,n,i);if(a.size===0)return r;let o=new Set,s=[];for(let e of a){let n=t[e];if(n)for(let e of n)o.has(e.id)||(o.add(e.id),s.push(e))}return s.length===0?r:s},cm=`GitHub issue context (JSON)`,lm=`GitHub pull request context (JSON)`,um=e=>!e||typeof e!=`object`?!1:!!e.synthetic,dm=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>um(e)),fm=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!um(e)),n=e=>{if(!um(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(cm)||n.startsWith(lm)};return t&&e.some(e=>um(e))?e.filter(e=>!um(e)||n(e)):e},pm=new Map,mm=new Map,hm=new Map,gm=e=>{pm.set(e,(pm.get(e)??0)+1)},_m=e=>(pm.get(e)??0)>0,vm=e=>{let t=pm.get(e)??0;return t<=0?!1:(t===1?pm.delete(e):pm.set(e,t-1),!0)},ym=(e,t)=>{mm.set(e,t)},bm=e=>mm.get(e)??null,xm=e=>{mm.delete(e)},Sm=({sessionId:e,currentUserOrder:t,animatedIds:n})=>{let r=hm.get(e),i=null;if(_m(e)){let r=t[t.length-1];r!==void 0&&!n.has(r)&&vm(e)&&(ym(e,r),n.add(r),i=r)}if((!r||t.length>=r.length)&&hm.set(e,t),i!==null)return i;let a=bm(e);return a===null?null:(t.includes(a)&&n.add(a),a)},Cm=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},wm=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,Tm=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},Em=e=>e.replace(/\\/g,`/`),Dm=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,Om=e=>{if(!e.startsWith(`file:`))return null;try{let t=new URL(e);if(t.protocol!==`file:`)return null;let n=decodeURIComponent(t.pathname);return/^\/[A-Za-z]:/.test(n)&&(n=n.slice(1)),t.hostname&&t.hostname!==`localhost`&&!/^[A-Za-z]:/.test(n)&&(n=`//${t.hostname}${n.startsWith(`/`)?n:`/${n}`}`),Em(n)}catch{return null}},km=(e,t)=>{let n=Dm(Em(e)),r=Dm(Em(t));if(!r||!n)return null;let i=/^[A-Za-z]:/.test(n)?n[0].toLowerCase()+n.slice(1):n,a=/^[A-Za-z]:/.test(r)?r[0].toLowerCase()+r.slice(1):r;return i===a?``:i.startsWith(`${a}/`)?i.slice(a.length+1):null},Am=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),jm=(e,t)=>{let n=Em(e),r=Dm(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=km(n,t);if(r!==null){let t=Dm(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return Am(a)},Mm=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},Nm=(e,t,n)=>{let r=0;for(;r<e.length;){let i=e.indexOf(t,r);if(i<0)return null;let a=i+t.length,o=`${i}:${a}`,s=i>0?e[i-1]:``,c=e[a]??``,l=!s||/[\s([{"'`,.;:!?]/.test(s),u=!c||/[\s)\]}"'`,.;:!?]/.test(c);if(!n.has(o)&&l&&u)return{start:i,end:a};r=i+1}return null},Pm=e=>{let t=e.source&&typeof e.source==`object`?e.source:null,n=typeof t?.value==`string`?t.value.trim():``;if(n){let e=n.startsWith(`@`)?n:`@${n}`,t=e.slice(1);if(t)return{token:e,name:t}}let r=typeof e.name==`string`?e.name.trim():``;if(!r)return null;let i=r.startsWith(`@`)?r.slice(1):r;return i?{token:`@${i}`,name:i}:null},Fm=async(e,t={})=>{let n=t.createID??_e,r=t.directory??t.root??null,i=e.filter(e=>!um(e)),a=i.filter(e=>e.type===`text`),o=i.filter(e=>e.type===`agent`),s=i.filter(e=>e.type===`file`),c=a.map(wm).join(`
|
|
399
|
+
`),l=[];for(let e of o){let t=Pm(e);t&&l.push(t)}for(let e of[...l].reverse())Nm(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=ce(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=Nm(c,e.token,p);t&&(p.add(`${t.start}:${t.end}`),f.push({kind:`agent`,value:e.name,path:e.name,label:e.name,range:t}))}let m=[],h=new Map;for(let e of s){if(e.slim===!0)continue;let t=typeof e.url==`string`?e.url:``;if(!t)continue;let i=typeof e.mime==`string`?e.mime:`application/octet-stream`,a=typeof e.filename==`string`?e.filename:`attachment`,o=t.startsWith(`file:`)?Om(t):null;if(o){let e=jm(o,r),t=null;for(let n of e){let e=Nm(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=Tm(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=oe(s);if(t.startsWith(`data:`)){let e=await Mm(t);h.set(l,e),m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:e.type||i,size:e.size,source:`local`,locator:{kind:`blob`,blobID:s}});continue}if(Cm(t)){if(!Te(t))throw Error(`composer-restoration-url-too-long`);m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:i,size:0,source:t.startsWith(`file:`)?`server`:`local`,locator:{kind:`url`,url:t},...t.startsWith(`file:`)&&o?{serverPath:o}:{}}),h.set(l,t);continue}throw Error(`composer-restoration-invalid-attachment-url`)}f.sort((e,t)=>e.range.start-t.range.start);let g=S(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=C(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},Im=async(e,t={})=>{let n=t.createID??_e,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=C(r,i),o=S(r,e.composerMentions??[]);if(!a||!o)throw Error(`composer-restoration-invalid-sidecars`);if(e.draftAttachments)return{snapshot:{text:r,composerReferences:a.references,attachments:[...e.draftAttachments],syntheticParts:e.syntheticParts??[],mentions:o},values:e.draftValues??new Map};let s=[],c=new Map;for(let t of e.attachments??[]){let e=t.id||n(),r=oe(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await Mm(i);c.set(r,n),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||n.type||`application/octet-stream`,size:n.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}if(Cm(i)){if(!Te(i)){if(!(t.file instanceof Blob))throw Error(`composer-restoration-url-too-long`);c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType,size:t.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`url`,url:i},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}}),c.set(r,i);continue}if(t.file&&t.file.size>=0){c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}throw Error(`composer-restoration-invalid-attachment`)}return{snapshot:{text:r,composerReferences:a.references,attachments:s,syntheticParts:e.syntheticParts??[],mentions:o},values:c}},Lm=e=>e?JSON.parse(JSON.stringify(e)):null,Rm=e=>e?{...e}:{},zm=(e,t=Br.getState())=>{let n=t.getDraft?.(e)??null,r=Rm(t.draftAttachmentViews?.[z(e)]);return{record:Lm(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},Bm=async e=>{let t=e.input??Br.getState(),n=zm(e.key,{getDraft:t.getDraft?.bind(t),draftAttachmentViews:t.draftAttachmentViews}),r;try{r=await t.commitDraftSnapshot({key:e.key,expectedRevision:e.expectedRevision,runtime:e.runtime??t.captureDraftRuntime(),snapshot:e.payload.snapshot,values:e.payload.values})}catch{return{status:`failed`,current:!1,durable:!1,previous:n}}return{status:r.status,current:r.current,durable:r.durable,result:r,previous:n}},Vm=async e=>{let t=e.store.getDraft(e.key);if(!t||t.revision!==e.restoredRevision)return{status:`conflict`,current:!0};if(!e.previous.record)try{let t=await e.store.deleteDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}let n=e.previous.record,r=new Map;for(let t of[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)]){let n=e.previous.views[t.attachmentRefID];t.locator.kind===`url`?r.set(t.attachmentRefID,t.locator.url):n?.file?r.set(t.attachmentRefID,n.file):n?.dataUrl&&r.set(t.attachmentRefID,n.dataUrl)}try{let t=await e.store.commitDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime,snapshot:{text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}},values:r});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}},Hm=async e=>{let t=e.input??Br.getState(),n=t.getDraft(e.key);if(!n||n.revision!==e.restoredRevision)return{status:`conflict`,current:!0};let r=e.key.transportIdentity,i=e.runtime?.transportIdentity===r?e.runtime:void 0,a;try{let e=t.captureDraftRuntime();e.transportIdentity===r&&(a=e)}catch{}let o=i??a;return o?Vm({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},Um=(e,t,n)=>{let r=n.getDraft(e);if(r)return[...r.attachments,...r.syntheticParts.flatMap(e=>e.attachments)].find(e=>e.attachmentID===t)?.attachmentRefID},Wm=e=>e?.status===`committed`&&e.current===!0,Gm=new Map,Km=async(e,t)=>{let n=z(e),r=Gm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Gm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Gm.get(n)===o&&Gm.delete(n)}},qm=(e,t)=>({key:e,addLocal:async n=>{await Km(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Km(e,async()=>{let r=t(),i=Um(e,n,r);if(!i)return!(r.getDraft(e)&&[...r.getDraft(e)?.attachments??[],...r.getDraft(e)?.syntheticParts.flatMap(e=>e.attachments)??[]].some(e=>e.attachmentID===n));try{await r.removeDraftAttachment(e,i)}catch{}let a=r.getDraft(e);return!a||![...a.attachments,...a.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.attachmentID===n)})}catch{return!1}},clearRootAttachments:async()=>{try{return await Km(e,async()=>{let n=t(),r=n.getDraft(e);return!r||r.attachments.length===0||n.setDraftAttachments(e,[])?.attachments.length===0})}catch{return!1}},restoreRootAttachments:async n=>{try{return await Km(e,async()=>{let r=async()=>t().restoreDraftRootAttachments(e,n),i=await r();return i.status===`conflict`&&(i=await r()),i.status===`failed`||i.status===`stale`?!1:Wm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Km(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Km(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Km(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Jm=4e4,Ym=0,Xm=null;function Zm(e=Date.now()){Ym=e}function Qm(e){return Xm=e,()=>{Xm===e&&(Xm=null)}}function $m(e){Xm?.(e)}function eh(e=Date.now(),t=Jm){return Ym<=0?!1:e-Ym>=t}var th=3e4,nh=200,rh=new Map;function ih(e,t,n){return`${n?.transport??u()}\n${n?.generation??f()}\n${e.trim()}\n${t}`}function ah(e,t,n){if(!e||!t)return!1;let r=rh.get(ih(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<th}function oh(e,t,n){if(!e||!t)return;let r=ih(e,t,n);for(rh.has(r)&&rh.delete(r);rh.size>=nh;){let e=rh.keys().next().value;if(typeof e!=`string`)break;rh.delete(e)}rh.set(r,n?.now??Date.now())}var sh=768,ch=()=>{if(typeof window>`u`)return!1;let e=typeof window.matchMedia==`function`?window.matchMedia(`(pointer: coarse)`).matches||window.matchMedia(`(hover: none)`).matches:!1,t=typeof navigator<`u`?navigator.maxTouchPoints??0:0;return e||t>0},lh=()=>{if(typeof window>`u`)return`desktop`;let e=window.__OPENCHAMBER_SURFACE__;if(e===`mobile`||e===`desktop`)return e;let t=new URLSearchParams(window.location.search).get(`surface`);if(t===`mobile`||t===`desktop`)return t;if(ae())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=sh&&ch()?`mobile`:`desktop`},uh=()=>lh()===`mobile`,dh=3,fh=2,ph=4,mh=4,hh=100,gh=30;function _h(){return a()?`relay`:`local`}function vh(e=_h()){return e===`relay`?fh:dh}function yh(e=_h()){return e===`relay`?mh:ph}function bh(e){return vh(Ch(e))}function xh(){return hh}function Sh(){return gh}function Ch(e){return e===`relay`||e===`local`?e:_h()}var wh=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function Th(){return{pages:[],pageParams:[]}}function Eh(e){let t={};for(let[n,r]of Object.entries(e.messagesByID))t[n]=r;let n={};for(let[t,r]of Object.entries(e.partsByMessageID))n[t]=Object.isFrozen(r)?r:Object.freeze([...r]);return Object.freeze({kind:e.kind,messageOrder:Object.isFrozen(e.messageOrder)?e.messageOrder:Object.freeze([...e.messageOrder]),messagesByID:Object.freeze(t),partsByMessageID:Object.freeze(n),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:Object.freeze({...e.sync})})}function Dh(e){return{pages:Object.freeze(e.pages.map(Eh)),pageParams:Object.freeze([...e.pageParams])}}function Oh(e,t,n=wh){let r=[],i={},a={};for(let t of e.records){let e=t.info?.id;!e||i[e]||(r.push(e),i[e]=t.info,t.parts&&(a[e]=Object.freeze([...t.parts])))}let o=typeof e.turnCount==`number`&&Number.isFinite(e.turnCount)?Math.max(0,Math.floor(e.turnCount)):typeof e.requestedTurnLimit==`number`&&Number.isFinite(e.requestedTurnLimit)?Math.max(0,Math.floor(e.requestedTurnLimit)):+(e.records.length>0);return Eh({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function kh(e){if(!e||e.pages.length===0)return hl;let t=e.pages[0],n=e.pages.reduce((e,t)=>e+t.turnCount,0);return t.complete?{kind:`exhausted`,loadedTurns:n}:typeof t.cursor==`string`&&t.cursor.length>0?{kind:`has-more`,cursor:t.cursor,loadedTurns:n}:{kind:`unknown`,loadedTurns:n}}function Ah(e,t){let n={},r={},i=[],a=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder){if(a.has(e))continue;let n=t.messagesByID[e];if(!n)continue;a.add(e),i.push(n);let o=t.partsByMessageID[e];o&&(r[e]=[...o])}n[t]=i;let o=kh(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function jh(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function Mh(e,t,n,r,i,a,o){let s=[],c={},l={};for(let e of t){if(!e?.id)continue;s.push(e.id),c[e.id]=e;let t=n[e.id];t&&(l[e.id]=Object.freeze([...t]))}return Eh({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:jh(t)}})}function Nh(e,t,n,r,i,a){let o=n.messages,s=n.part,c=typeof i.turnCount==`number`&&Number.isFinite(i.turnCount)?Math.max(0,Math.floor(i.turnCount)):typeof i.requestedTurnLimit==`number`&&Number.isFinite(i.requestedTurnLimit)?Math.max(0,Math.floor(i.requestedTurnLimit)):+(i.records.length>0),l=i.complete?null:i.cursor??null,u=i.complete;if(!e||e.pages.length===0||r===`initial`)return Dh({pages:[Mh(`tail`,o,s,l,u,c,a)],pageParams:[null]});if(r===`prepend`){let r=new Set;for(let t of e.pages)for(let e of t.messageOrder)r.add(e);let d=o.filter(e=>i.records.some(t=>t.info.id===e.id)||!r.has(e.id)).filter(t=>{if(i.records.some(e=>e.info.id===t.id))return!0;if(!r.has(t.id)){let n=e.pages[0]?.messageOrder[0];return!n||t.id<n}return!1}),f=[],p=new Set;for(let e of i.records){let t=o.find(t=>t.id===e.info.id);!t||p.has(t.id)||(p.add(t.id),f.push(t))}for(let e of d)p.has(e.id)||(p.add(e.id),f.push(e));let m=Mh(`history`,f,s,l,u,c,a),h=new Set(p),g=[m],_=[l];for(let r=0;r<e.pages.length;r+=1){let i=e.pages[r],o=[];for(let e of i.messageOrder){if(h.has(e))continue;let r=n.message[t]?.find(t=>t.id===e)??i.messagesByID[e];r&&o.push(r)}g.push(Fh(i,o,s,a)),_.push(e.pageParams[r]??null)}return Dh({pages:g,pageParams:_})}let d=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)d.has(n)||d.set(n,t)});let f=e.pages.map(()=>[]),p=[];for(let e of o){let t=d.get(e.id);t===void 0?p.push(e):f[t].push(e)}let m=e.pages.map((t,n)=>{let i=f[n]??[];return n===e.pages.length-1&&p.length>0?Fh(t,r===`reconcile-page`?Ph(i,p):[...i,...p],s,a):Fh(t,i,s,a)});if(m.length>0&&n.boundary){let e=m[0],t=n.boundary.kind===`has-more`?n.boundary.cursor:null,r=n.boundary.kind===`exhausted`;(e.cursor!==t||e.complete!==r)&&(m[0]=Eh({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return Dh({pages:m,pageParams:[...e.pageParams]})}function Ph(e,t){let n=e.slice();for(let e of t){let t=_c(e),r=n.length;for(let e=0;e<n.length;e+=1)if(gc(t,_c(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function Fh(e,t,n,r){let i=[],a={},o={},s=t.length!==e.messageOrder.length,c=!1,l=!1;for(let r=0;r<t.length;r+=1){let u=t[r];if(!u?.id)continue;i.push(u.id),e.messageOrder[r]!==u.id&&(s=!0);let d=e.messagesByID[u.id];d===u?a[u.id]=u:d&&Ih(d,u)?a[u.id]=d:(a[u.id]=u,c=!0);let f=n[u.id],p=e.partsByMessageID[u.id];f===void 0?p!==void 0&&(l=!0):p&&(p===f||Rh(p,f))?o[u.id]=p:Object.isFrozen(f)&&f===p?o[u.id]=f:p&&f===p?o[u.id]=p:(o[u.id]=Object.freeze([...f]),l=!0)}return!s&&!c&&!l&&e.sync.liveRevision===r||!s&&!c&&!l?e:Eh({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:jh(t)}})}function Ih(e,t){return e===t||e.id===t.id&&e===t}function Lh(e,t){return e===t||!(!e||!t||e.id!==t.id||e.type!==t.type||e.text!==t.text||e.state!==t.state||e.output!==t.output||e.metadata!==t.metadata||e.time!==t.time||e.url!==t.url||e.slim!==t.slim)}function Rh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!Lh(e[n],t[n]))return!1;return!0}function zh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Bh(e){let t=e.properties;if(t){if(typeof t.messageID==`string`)return t.messageID;if(typeof t.info?.id==`string`)return t.info.id;if(typeof t.part?.messageID==`string`)return t.part.messageID}}function Vh(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=Nh(e??Th(),t,{message:n.message,part:s,messages:o,boundary:r},`recovery`,{records:o.map(e=>({info:e,parts:s[e.id]??[]})),complete:r.kind===`exhausted`,cursor:r.kind===`has-more`?r.cursor:void 0,turnCount:0},i);if(e&&e.pages.length>0){let t=new Map,n=new Map;e.pages.forEach((e,r)=>{for(let i of e.messageOrder){t.has(i)||t.set(i,r);let a=e.messagesByID[i];a&&n.set(i,a)}});let r=o.map(e=>{let t=n.get(e.id);return t&&t.id===e.id&&t===e||t&&e.id===t.id&&e===t?t:e}).map(e=>{let t=n.get(e.id);return!t||a.has(e.id)?e:t}),c={};for(let t of r){let n=s[t.id];if(!n)continue;let r;for(let n of e.pages)if(n.partsByMessageID[t.id]){r=n.partsByMessageID[t.id];break}r&&!a.has(t.id)||r&&Rh(r,n)?c[t.id]=r:c[t.id]=n}let l=e.pages.map(()=>[]),u=[];for(let e of r){let n=t.get(e.id);n===void 0?u.push(e):l[n].push(e)}return Dh({pages:e.pages.map((t,n)=>Fh(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function Hh(e,t){let n=Ah(e,t),r=kh(e),i={message:{...n.message,[t]:[...n.message[t]??[]]},part:{...n.part}};for(let[e,t]of Object.entries(i.part))t&&(i.part[e]=[...t]);return{draft:i,previousBoundary:r}}function Uh(e,t,n,r){if(!Vl(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Hh(e,t),o=Ys(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=Bh(n),c=new Set;return s&&c.add(s),{data:Vh(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function Wh(e){let t=new Map;if(!e)return t;for(let n of e.pages)for(let[e,r]of Object.entries(n.partsByMessageID))!t.has(e)&&r&&t.set(e,r);return t}function Gh(e){let t=new Map;if(!e)return t;for(let n of e.pages)for(let[e,r]of Object.entries(n.messagesByID))!t.has(e)&&r&&t.set(e,r);return t}function Kh(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Hh(e,t),o=!1,s=0,c,l=new Set,u=Wh(e),d=Gh(e),f=i.message[t]??[],p=new Map,m=new Map,h=[],g=e=>{if(p.clear(),m.clear(),h=[],e)for(let t=0;t<e.length;t+=1){let n=e[t];n?.id&&(p.set(n.id,n),m.set(n.id,t),h.push(n.id))}};g(f);let _=h.slice();for(let e of n){if(!Vl(e.type))continue;o=!0;let n=Ys(i,e),r=typeof n==`boolean`?n:n.changed,a=typeof n==`boolean`?void 0:n.materialization;if(a&&!c&&(c=a),!r)continue;let v=i.message[t]??[];v!==f&&(f=v,g(v));let y=Bh(e),b=h.length!==_.length||h.some((e,t)=>e!==_[t]),x=b;if(y){let e=i.part[y],t=u.get(y);e&&t&&Rh(t,e)?i.part[y]=[...t]:e?(x=!0,u.set(y,e)):t&&(x=!0,u.delete(y));let n=p.get(y),r=d.get(y);if(!(n&&r&&r===n))if(n&&r&&Ih(r,n)){let e=m.get(y);e!==void 0&&f[e]&&(f[e]=r,p.set(y,r))}else n?(x=!0,d.set(y,n)):r&&(x=!0,d.delete(y))}else x=!0;if(b){_=h.slice();for(let e of f)e?.id&&!d.has(e.id)&&d.set(e.id,e)}x&&(s+=1,y&&l.add(y))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:Vh(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function qh(e,t,n,r,i){let a=e&&e.pages.length>0?e:Dh({pages:[Mh(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=Ah(a,t),s=o.message[t]?[...o.message[t]]:[];s.findIndex(e=>e.id===n.id)<0&&s.push(n);let c={...o.part,[n.id]:zh(r)};return{data:Dh({pages:a.pages.map((e,t)=>t===a.pages.length-1?Fh(e,s.filter(e=>{for(let t=0;t<a.pages.length-1;t+=1)if(a.pages[t]?.messagesByID[e.id])return!1;return!0}),c,i):e.messagesByID[n.id]?Fh(e,e.messageOrder.filter(e=>e!==n.id).map(t=>e.messagesByID[t]).filter(Boolean),c,i):e),pageParams:[...a.pageParams]}),result:{applied:!0,changed:!0}}}function Jh(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:Dh({pages:e.pages.map(e=>{if(!e.messagesByID[t]&&!e.partsByMessageID[t])return e;r=!0;let i=e.messageOrder.filter(e=>e!==t).map(t=>e.messagesByID[t]).filter(Boolean),a={};for(let[n,r]of Object.entries(e.partsByMessageID))n!==t&&(a[n]=[...r]);return Fh(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Yh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=Ah(e,t),i=ll({message:r.message,part:r.part},t,n.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),{skipPartTypes:n.skipPartTypes,merge:n.merge});if(!i.messagesChanged&&!i.partsChanged)return{data:e,result:{applied:!0,changed:!1,boundary:kh(e)}};let a=e?.pages[e.pages.length-1]?.sync.liveRevision??0,o=i.part;if(!e||e.pages.length===0){let e=i.messages[0]?.id,t=i.messages.filter(e=>e.role===`user`).length,n=Dh({pages:[Mh(`tail`,i.messages,o,typeof e==`string`&&e.length>0?e:null,!1,t,a)],pageParams:[null]});return{data:n,result:{applied:!0,changed:!0,boundary:kh(n)}}}let s=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)s.has(n)||s.set(n,t)});let c=e.pages.map(()=>[]),l=[];for(let e of i.messages){let t=s.get(e.id);t===void 0?l.push(e):c[t].push(e)}let u=Dh({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?Fh(t,Ph(r,l),o,a):Fh(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:kh(u)}}}function Xh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=wl(Ah(e,t),t,{ok:!0,records:n.page.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:n.page.cursor,complete:n.page.complete,turnCount:n.page.turnCount,requestedTurnLimit:n.page.requestedTurnLimit},{purpose:n.purpose,skipPartTypes:n.skipPartTypes,optimistic:n.optimistic?n.optimistic.map(e=>({message:e.message,parts:[...e.parts]})):void 0,capturedRevision:n.capturedLiveRevision,liveRevision:n.liveRevision});return i.applied?{data:Nh(e,t,{message:i.message,part:i.part,messages:i.messages,boundary:i.boundary},n.purpose,n.page,r),result:{applied:!0,changed:i.changed,boundary:i.boundary,meta:i.meta,confirmedOptimisticIDs:i.confirmedOptimisticIDs}}:{data:e,result:{applied:!1,changed:!1,error:i.error}}}case`sse-event`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Uh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Kh(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return qh(e,t,n.message,n.parts,r)}case`optimistic-confirm`:return{data:e,result:{applied:!0,changed:!1}};case`optimistic-remove`:{let t=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Jh(e,n.messageID,t)}case`durable-seed`:return Yh(e,t,n);case`reset`:return n.page?Xh(void 0,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes}):{data:void 0,result:{applied:!0,changed:!!(e&&e.pages.length>0)}};default:return{data:e,result:{applied:!1,changed:!1}}}}function Zh(e){return{records:e.messageOrder.map(t=>({info:e.messagesByID[t],parts:e.partsByMessageID[t]?[...e.partsByMessageID[t]]:[]})),cursor:e.cursor??void 0,complete:e.complete,turnCount:e.turnCount}}function Qh(e,t,n,r=`materialize`){return Xh(e,n,{type:`http-page`,purpose:r,page:Zh(t),liveRevision:t.sync.liveRevision}).data}function $h(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return Dh(t);if(t.pages.length===e.pages.length){let r=rg(e,t);if(r===e)return e;if(ng(e,t)||tg(e,t))return r;let i=t.pages[t.pages.length-1];return Qh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return Xh(e,n,{type:`http-page`,purpose:`prepend`,page:Zh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Qh(e,r,n)??Dh(t)}return Dh(t)}function eg(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function tg(e,t){let n=eg(e),r=eg(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=ig(e,``),a=ig(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function ng(e,t){let n=eg(e);if(n.size===0)return!1;let r=eg(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=ig(t,``);for(let e=1;e<i.messageOrder.length;e+=1){let t=i.messagesByID[i.messageOrder[e-1]],n=i.messagesByID[i.messageOrder[e]];if(!t||!n||gc(_c(t),_c(n))>0)return!1}return!0}function rg(e,t){let n=!1,r=t.pages.map((t,r)=>{let i=e.pages[r];return i&&(i===t||i.kind===t.kind&&i.cursor===t.cursor&&i.complete===t.complete&&i.turnCount===t.turnCount&&i.messageOrder.length===t.messageOrder.length&&i.messageOrder.every((e,n)=>e===t.messageOrder[n])&&i.messageOrder.every(e=>i.messagesByID[e]===t.messagesByID[e])&&i.messageOrder.every(e=>i.partsByMessageID[e]===t.partsByMessageID[e])&&i.sync.liveRevision===t.sync.liveRevision)?i:(n=!0,Eh(t))});return!n&&e.pageParams.length===t.pageParams.length?e:Dh({pages:r,pageParams:[...t.pageParams]})}function ig(e,t){let n=[],r={},i={},a=0;for(let t of e?.pages??[]){a=Math.max(a,t.sync.liveRevision);for(let e of t.messageOrder){if(r[e]){r[e]=t.messagesByID[e]??r[e],t.partsByMessageID[e]&&(i[e]=t.partsByMessageID[e]);continue}n.push(e);let a=t.messagesByID[e];a&&(r[e]=a);let o=t.partsByMessageID[e];o&&(i[e]=o)}}let o=[],s=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder)s.has(e)||(s.add(e),o.push(e));return{messageOrder:o,messagesByID:r,partsByMessageID:i,boundary:kh(e),liveRevision:a}}var ag=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},og=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},sg=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},cg=e=>e.trim(),lg=e=>e?.trim()||`tail`,ug=new Set([502,503,504]),dg=[`load failed`,`network connection was lost`,`network request failed`,`failed to fetch`,`econnreset`,`econnrefused`,`etimedout`,`socket hang up`,`signal timed out`,`timed out`,`timeout`,`opencode api unavailable`];function fg(e){if(!e||e instanceof ag||e instanceof og)return!1;if(e instanceof sg)return e.status>=400&&e.status<500?!1:ug.has(e.status)||e.status>=500&&e.status<600;let t=e?.status;if(typeof t==`number`){if(t>=400&&t<500)return!1;if(ug.has(t)||t>=500&&t<600)return!0}let n=String(e instanceof Error?e.message:e).toLowerCase(),r=n.match(/\((\d{3})\)/);if(r){let e=Number(r[1]);if(e>=400&&e<500)return!1;if(ug.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:dg.some(e=>n.includes(e))}function pg(e,t){return e>=2?!1:fg(t)}var mg=(e,t=u(),n=f())=>[t,n,`sessionMessages`,`page`,cg(e.directory),e.sessionID,e.limit,lg(e.before)],hg=(e,t=u(),n=f())=>[t,n,`session-transcript`,cg(e.directory),e.sessionID];function gg(e){if(!e||typeof e!=`object`)throw new og(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new og(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new og(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new og(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new og(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new og(`session message page: cursor must be string when set`);return e}var _g=e=>{let t=e.records.map(e=>Object.freeze({info:Object.freeze({...e.info}),parts:e.parts===void 0?void 0:Object.freeze([...e.parts])}));return Object.freeze({records:Object.freeze(t),cursor:e.cursor,complete:e.complete,...typeof e.turnCount==`number`?{turnCount:e.turnCount}:{},...typeof e.requestedTurnLimit==`number`?{requestedTurnLimit:e.requestedTurnLimit}:{}})},vg=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw new ag},yg=(e,t,n=u(),r={},i=(r.getGeneration??f)())=>{let a=cg(e.directory),o=e.sessionID,s=e.limit,c=e.before?.trim()||void 0;return{queryKey:mg({directory:a,sessionID:o,limit:s,before:c},n,i),queryFn:async({signal:e})=>{vg(n,i,r);let l=await t({directory:a,sessionID:o,limit:s,before:c,signal:e});return vg(n,i,r),_g(gg(l))},staleTime:1/0,gcTime:3e5,retry:pg,retryDelay:e=>Math.min(500*2**e,4e3)}},bg=(e,t,n=R,r=u(),i={},a=(i.getGeneration??f)())=>n.fetchQuery(yg(e,t,r,i,a));function xg(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function Sg(e){return _g({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function Cg(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function wg(e){let t=cg(e.directory),n=e.sessionID,r=e.transport??u(),i=e.probe??{},a=e.generation??(i.getGeneration??f)(),o=e.initialLimit??vh(),s=e.historyLimit??yh(),c=e.client??R,l=hg({directory:t,sessionID:n},r,a),d=async t=>Sg(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:l,queryFn:async e=>{vg(r,a,i);let l=e.pageParam?.trim()||void 0,u=l?s:o,f=l?`prepend`:`initial`,p=await bg({directory:t,sessionID:n,limit:u,before:l},d,c,r,i,a);vg(r,a,i);let m=xg(p);return Oh(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:Cg,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:pg,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>$h(e,t,n)}}function Tg(e){let t=e.client??R,n=wg({...e,client:t}),r=new it(t,{...n,structuralSharing:(t,n)=>$h(t,n,e.sessionID)});return{queryKey:n.queryKey,observer:r,ensureInitial:async()=>{let e=(await r.fetchNextPage()).data;if(e&&e.pages.length>0)return Dh(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return Dh(t)},fetchPreviousPage:async()=>{let e=r.getCurrentResult().data;try{let t=await r.fetchPreviousPage({cancelRefetch:!1}),n=r.getCurrentResult(),i=t.data??n.data??e;if(t.isError||n.isFetchPreviousPageError){let e=t.error??n.error??Error(`transcript previous page fetch failed`);throw i&&i.pages.length>0?Object.assign(e instanceof Error?e:Error(String(e)),{retainedPages:Dh(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return Dh(i)}catch(t){let n=r.getCurrentResult().data??e;throw n&&n.pages.length>0?Object.assign(t instanceof Error?t:Error(String(t)),{retainedPages:Dh(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function Eg(e,t,n,r){let i=e.getQueryData(t),a=Xh(i,n,r);return a.result.applied?a.data===void 0?(`removeQueries`in e&&typeof e.removeQueries==`function`?e.removeQueries({queryKey:t,exact:!0}):e.setQueryData(t,void 0),a):(!a.result.changed&&a.data===i||e.setQueryData(t,a.data),a):a}function Dg(e,t=R,n=u(),r=f()){return t.getQueryData(hg(e,n,r))}function Og(){return Se()||uh()}function kg(){return Se()?4:uh()?12:40}var Ag=1048576,jg=4*Ag,Mg=12*Ag,Ng=40*Ag;function Pg(){return Se()?jg:uh()?Mg:Ng}var Fg=e=>e.trim();function Ig(e){return{transport:e.transport,generation:e.generation,directory:Fg(e.directory),sessionID:e.sessionID}}function Lg(e){let t=Ig(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function Rg(e){return`${e.transport}\n${e.generation}\n${Fg(e.directory)}`}var zg={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function Bg(e,t,n){return[t,n,zg.taskRoot,zg.reconcileTaskKind,Fg(e.directory),e.sessionID,e.checkpoint]}function Vg(e,t,n){return[t,n,zg.checkpoint,Fg(e.directory),e.sessionID]}function Hg(e){let t=Ig(e);return[{queryKey:hg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,zg.transportPageRoot,zg.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,zg.taskRoot,zg.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,zg.taskRoot,zg.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:Vg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function Ug(){let e=new Map;return{retain(t){let n=Ig(t),r=Lg(n),i=e.get(r);i?i.count+=1:e.set(r,{scope:n,count:1});let a=!1;return()=>{if(a)return;a=!0;let t=e.get(r);t&&(--t.count,t.count<=0&&e.delete(r))}},isRetained(t){return(e.get(Lg(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(Lg(t))?.count??0},clear(){e.clear()}}}function Wg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Gg=3e4;function Kg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function qg(e){return!Array.isArray(e)||e.length<5||e[2]!==zg.canonical||typeof e[0]!=`string`||typeof e[1]!=`number`||typeof e[3]!=`string`||typeof e[4]!=`string`?null:{transport:e[0],generation:e[1],directory:e[3],sessionID:e[4]}}function Jg(e){let t=e.client,n=e.activeRegistry??Ug(),r=e.counters??Wg(),i=e.getLimit??kg,a=e.now??Date.now,o=e.minResidencyMs??Gg,s=new Map,c=new Map,l=e=>{let t=Ig(e),n=Lg(t),r=c.get(t.sessionID);r||(r=new Map,c.set(t.sessionID,r)),r.set(n,t)},u=e=>{let t=Ig(e),n=Lg(t),r=c.get(t.sessionID);r&&(r.delete(n),r.size===0&&c.delete(t.sessionID))},d=(e,t)=>{for(let[n,r]of c){for(let[n,i]of r)i.transport===e&&i.generation===t&&r.delete(n);r.size===0&&c.delete(n)}let n=`${e}\n${t}\n`;for(let e of s.keys())e.startsWith(n)&&s.delete(e)};for(let e of t.getQueryCache().getAll()){let t=qg(e.queryKey);t&&l(t)}let f=t.getQueryCache().subscribe(e=>{if(e.type===`added`||e.type===`updated`){let t=qg(e.query.queryKey);t&&l(t);return}if(e.type===`removed`){let t=qg(e.query.queryKey);t&&u(t)}}),p=e=>{let t=Lg(Ig(e));s.set(t,a())},m=e=>{let t=Lg(Ig(e)),n=s.get(t);return n!==void 0&&a()-n<o},h=e=>{let r=Ig(e);if(n.isRetained(r))return!0;let i=hg({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},g=e=>{let r=e?.directory===void 0?void 0:Fg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=qg(a.queryKey);if(!t||e?.transport!==void 0&&t.transport!==e.transport||e?.generation!==void 0&&t.generation!==e.generation||r!==void 0&&t.directory!==r)continue;let o=a.getObserversCount(),s=n.isRetained(t);i.push({scope:t,queryKey:a.queryKey,dataUpdatedAt:a.state.dataUpdatedAt,observerCount:o,retained:s,active:s||o>0,pageCount:Kg(a.state.data)})}return i},_=(e,t)=>{let n=c.get(e);if(!n||n.size===0)return[];let r=t?.directory===void 0?void 0:Fg(t.directory),i=[];for(let e of n.values())(t?.transport===void 0||e.transport===t.transport)&&(t?.generation===void 0||e.generation===t.generation)&&(r===void 0||e.directory===r)&&i.push(e);return i},v=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},y=e=>{r.purgeSession+=1;let t=Ig(e);s.delete(Lg(t)),u(t);for(let t of Hg(e))v(t)},b=(e,t)=>{r.purgeGeneration+=1,d(e,t);let n=[[e,t,zg.canonical],[e,t,zg.transportPageRoot,zg.transportPageKind],[e,t,zg.taskRoot],[e,t,zg.checkpoint]];for(let e of n)v({queryKey:e})},x=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>Lg(Ig(e)))),o=g({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=Rg(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let l=[];for(let e of c.values()){for(let t of e){let e=Lg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(Lg(e.scope))||m(e.scope)));i.sort((e,t)=>e.dataUpdatedAt===t.dataUpdatedAt?e.scope.sessionID<t.scope.sessionID?-1:+(e.scope.sessionID>t.scope.sessionID):e.dataUpdatedAt-t.dataUpdatedAt);let o=e.length-i.length,c=e.length,u=0;for(;c>t&&u<i.length&&!(c-1<o);){let e=i[u];u+=1,y(e.scope),l.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:l}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:h,listCanonical:g,listCanonicalScopesForSession:_,purgeSession:y,purgeGeneration:b,enforce:x,destructiveReset:async(e,t)=>{r.destructiveReset+=1,y(e);try{let n=await t();return x({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw y(e),t}},noteScopeObserved:p,dispose:()=>{f(),c.clear(),s.clear()}}}var Yg=new Map,Xg=new Set;function Zg(e,t){return`${e}\n${t}`}function Qg(){for(let e of Xg)e()}function $g(e,t){if(!e||!t)return;let n=Zg(e,t),r=Yg.get(n)??0;Yg.set(n,r+1),r===0&&Qg()}function e_(e,t){if(!e||!t)return;let n=Zg(e,t),r=Yg.get(n);if(r){if(r<=1){Yg.delete(n),Qg();return}Yg.set(n,r-1)}}function t_(e,t){if(!e)return!1;if(t)return Yg.has(Zg(t,e));let n=`\n${e}`;for(let e of Yg.keys())if(e.endsWith(n))return!0;return!1}function n_(e){return Xg.add(e),()=>{Xg.delete(e)}}var r_=3e4,i_=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function a_(e,t=r_){let n;try{return await Promise.race([e,new Promise((e,r)=>{n=setTimeout(()=>{r(Error(`session turn page: timed out after ${t}ms`))},t)})])}finally{n!==void 0&&clearTimeout(n)}}var o_=e=>e?e.toLowerCase().includes(`application/json`):!1,s_=e=>e?e.toLowerCase().includes(`text/html`):!1;function c_(e,t){if(!e||typeof e!=`object`)throw Error(`session turn page: expected JSON object`);let n=e;if(n.partial===!0)throw Error(`session turn page: partial responses are not accepted`);if(!Array.isArray(n.records))throw Error(`session turn page: records must be an array`);if(!(`complete`in n)||typeof n.complete!=`boolean`)throw Error(`session turn page: complete must be a boolean`);if(typeof n.turnCount!=`number`||!Number.isFinite(n.turnCount))throw Error(`session turn page: turnCount must be a number`);if(!Number.isInteger(n.turnCount)||n.turnCount<0||n.turnCount>t)throw Error(`session turn page: turnCount must be an integer in 0..${t}`);if(n.cursor!=null&&typeof n.cursor!=`string`)throw Error(`session turn page: cursor must be string or null`);if(typeof n.cursor==`string`&&n.cursor.length===0)throw Error(`session turn page: cursor must not be empty string`);if(n.complete===!0&&n.cursor!=null)throw Error(`session turn page: complete=true requires cursor=null`);if(n.complete===!1&&(n.cursor==null||typeof n.cursor!=`string`))throw Error(`session turn page: complete=false requires non-empty cursor`);let r=[];for(let e=0;e<n.records.length;e++){let t=n.records[e];if(!t||typeof t!=`object`)throw Error(`session turn page: records[${e}] must be an object`);let i=t,a=i.info;if(!a||typeof a!=`object`)throw Error(`session turn page: records[${e}].info must be an object`);let o=a.id;if(typeof o!=`string`||o.length===0)throw Error(`session turn page: records[${e}].info.id must be a non-empty string`);if(`parts`in i&&i.parts!==void 0&&!Array.isArray(i.parts))throw Error(`session turn page: records[${e}].parts must be an array when present`);r.push({info:a,...i.parts===void 0?{}:{parts:i.parts}})}return{records:r,cursor:n.cursor==null?null:n.cursor,complete:n.complete,turnCount:n.turnCount}}async function l_(e){let t=e.turns??yh(),n=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages`,r={directory:e.directory,turns:String(t)};e.before&&(r.before=e.before),typeof e.scanLimit==`number`&&Number.isFinite(e.scanLimit)&&(r.scanLimit=String(Math.floor(e.scanLimit)));let i=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:r_;return a_((async()=>{let a=await _(n,{method:`GET`,query:r,signal:i_(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(s_(o))throw Error(`session turn page: unexpected HTML response`);o_(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return c_(s,t)})(),i)}async function u_(e){let t=e.purpose===`prepend`&&e.before?yh():vh();return l_({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var d_=3e4,f_=2,p_=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),m_=e=>e?e.toLowerCase().includes(`text/html`):!1,h_=e=>new Promise(t=>{setTimeout(t,e)});function g_(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new og(`session transcript reconcile: ${t} must be string or null`);return e}function __(e){if(!e||typeof e!=`object`)throw new og(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new og(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new og(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new og(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new og(`session transcript reconcile: resetRequired must be a boolean`);if(typeof t.scannedRecords!=`number`||!Number.isFinite(t.scannedRecords)||!Number.isInteger(t.scannedRecords)||t.scannedRecords<0)throw new og(`session transcript reconcile: scannedRecords must be a non-negative integer`);if(typeof t.responseBytes!=`number`||!Number.isFinite(t.responseBytes)||!Number.isInteger(t.responseBytes)||t.responseBytes<0)throw new og(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=g_(t.capturedHeadMessageID,`capturedHeadMessageID`),r=g_(t.latestHeadMessageID,`latestHeadMessageID`),i=g_(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new og(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new og(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new og(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new og(`session transcript reconcile: resetRequired=true requires continuation=null`)}let a=[];for(let e=0;e<t.records.length;e+=1){let n=t.records[e];if(!n||typeof n!=`object`)throw new og(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new og(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new og(`session transcript reconcile: records[${e}].info.id must be a non-empty string`);if(`parts`in r&&r.parts!==void 0&&!Array.isArray(r.parts))throw new og(`session transcript reconcile: records[${e}].parts must be an array when present`);a.push({info:i,...r.parts===void 0?{}:{parts:r.parts}})}return{records:Object.freeze(a),anchorFound:t.anchorFound,capturedHeadMessageID:n,latestHeadMessageID:r,continuation:i,complete:t.complete,resetRequired:t.resetRequired,scannedRecords:t.scannedRecords,responseBytes:t.responseBytes}}function v_(e){let t=typeof e.anchor==`string`&&e.anchor.length>0?e.anchor:void 0,n=typeof e.continuation==`string`&&e.continuation.length>0?e.continuation:void 0;if(!!t==!!n)throw new og(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function y_(e,t,n){let r=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages/reconcile`,i={directory:e.directory};return t.anchor&&(i.anchor=t.anchor),t.continuation&&(i.continuation=t.continuation),a_((async()=>{let t;try{t=await _(r,{method:`GET`,query:i,signal:p_(e.signal,n)})}catch(e){throw e instanceof ag||e instanceof og||e instanceof sg||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new sg(t.status,`session transcript reconcile failed (${t.status})`);if(m_(t.headers.get(`content-type`)))throw new og(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new og(`session transcript reconcile: malformed JSON`)}return __(a)})(),n)}async function b_(e){let t=v_(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:d_,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):f_,i=e.sleep??h_,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await y_(e,t,n)}catch(t){if(t instanceof ag||t instanceof og||t instanceof sg&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!fg(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var x_=e=>!!(e&&typeof e==`object`&&typeof e.type==`string`),S_=e=>e.filter(x_),C_=e=>{let t=e,n=t.text;return typeof n==`string`?n:t.content||t.value||``},w_=e=>{if(e.type!==`text`)return!1;let t=C_(e);return!t||t.trim().length===0},T_=(e,t={})=>{let{includeReasoning:n=!0}=t,r=S_(e),i=r.some(e=>!e.synthetic);return r.filter(e=>{let t=!!e.synthetic;return t&&e.type===`text`&&C_(e).includes(`<system-reminder>`)||t&&i||!n&&e.type===`reasoning`?!1:e.type!==`patch`})},E_=`GitHub issue context (JSON)`,D_=`GitHub pull request context (JSON)`,O_=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,k_=(e,t)=>{let n=e.trimStart();if(!n.startsWith(t))return null;let r=n.indexOf(`{`);if(r<0)return null;try{return JSON.parse(n.slice(r))}catch{return null}},A_=e=>{let t=k_(e,E_);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!O_(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=k_(e,D_);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!O_(t)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.pull-request-link`,filename:`PR #${t}: ${r}`,url:i}}return null},j_=e=>!!e.trim().startsWith(`The following tool was executed by the user`),M_=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),N_=e=>e.trim()===`/compact`,P_=e=>e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(M_(t)||N_(t)))return!1}if(e.synthetic!==!0)return!0;if(e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return j_(t)||n.startsWith(E_)||n.startsWith(D_)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=A_(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e}),F_=e=>e.some(e=>{if(e.type===`text`)return!w_(e);if(e.type===`file`){let t=e,n=typeof t.mime==`string`?t.mime:``,r=typeof t.url==`string`?t.url:``;return(!!n||!!r)&&!!r&&!Fe(e)}return!0}),I_=e=>e?.length?F_(P_(e)):!1,L_=`oc_asst_session_divider:`,R_=[],z_=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),B_=(e,t=0)=>({info:{id:`${L_}${e}`,role:`system`,time:{created:t}},parts:[]}),V_=(e,t,n=R_)=>{if(!e.length)return R_;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(B_(n.sessionID,Number(n.info.time?.created??0))),r.push({info:n.info,parts:n.parts,sourceSessionID:n.sessionID,sourceDirectory:n.directory}),i=!0,a=n.sessionID);return r.length===0?R_:K_(n,r)?n:r},H_=(e,t)=>{if(t.length===0)return e;if(e.length===0)return t;let n=new Map;for(let e of t)e?.id&&n.set(e.id,e);for(let t of e)t?.id&&n.set(t.id,t);let r=new Set,i=[];for(let e of t){if(!e?.id||r.has(e.id))continue;let t=n.get(e.id);t&&(i.push(t),r.add(e.id))}for(let t of e)!t?.id||r.has(t.id)||(i.push(t),r.add(t.id));return i.length===e.length&&i.every((t,n)=>t===e[n])?e:i},U_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=H_(e.parts,t.parts);return n===e.parts&&e.info===t.info?e:n===t.parts&&e.info===t.info&&e.parts===t.parts?t:{...e,parts:n,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}}return I_(e.parts)?e:I_(t.parts)?e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}:e.parts.length>0||t.parts.length===0?e:e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}},W_=(e,t,n,r=R_)=>{if(!t)return n.length>0?Array.from(n):R_;let i=new Map,a=0;for(let n of e)n.sessionID===t&&i.set(n.info.id,{message:{info:n.info,parts:n.parts},order:a++});for(let e of n){let t=i.get(e.info.id);i.set(e.info.id,{message:U_(e,t?.message),order:t?.order??a++})}if(i.size===0)return R_;let o=[...i.values()].sort((e,t)=>Number(e.message.info.time?.created??0)-Number(t.message.info.time?.created??0)||e.order-t.order).map(({message:e})=>e);return K_(r,o)?r:o},G_=(e,t)=>{if(!z_(e)||!z_(t))return!1;let n=Number(e.info.time?.created??0),r=Number(t.info.time?.created??0);return e.info.id===t.info.id&&n===r},K_=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||!(r===i||G_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},q_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),J_=e=>e.startsWith(L_);function Y_(e,t){if(!e?.id||J_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(q_(t,`subtask`)||q_(t,`compaction`)||t.every(e=>um(e))):!1}function X_(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.messagesByID[n],i=e.partsByMessageID[n];if(Y_(r,i))return n}return null}function Z_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function Q_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:X_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:Z_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function $_(e,t){return{...e,...t}}function ev(e,t){let n=Vg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),r=e.getQueryData(n);if(!r||typeof r!=`object`)return;let i=r;if(i.sessionID===t.sessionID&&i.transport===t.transport&&i.generation===t.generation)return i}function tv(e,t){let n=Vg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function nv(e,t){let n=Vg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function rv(e){return e.slim===!0}var iv=/bearer|token|authorization|password|secret|cookie/i,av=new Set([`message.part.delta`]);function ov(e){return typeof e==`string`&&e.includes(`-`)}var sv=`openchamber.client-diagnostics.enabled`;function cv(e){return e===`true`||e!==`false`&&null}function lv(e){return e.preference===!0||e.preference!==!1&&ov(e.version)}function uv(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function dv(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function fv(e){if(e&&typeof e==`object`&&`status`in e){let t=e.status;if(typeof t==`number`&&Number.isFinite(t)&&t>=100&&t<=599)return t}let t=(e instanceof Error?e.message:typeof e==`string`?e:``).match(/\((\d{3})\)/);if(!t)return;let n=Number(t[1]);return n>=100&&n<=599?n:void 0}function pv(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return iv.test(t)?`redacted-error`:t}function mv(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)rv(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function hv(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function gv(e){let t=0;for(let n of e.messageOrder)Av(e.messagesByID[n])===!0&&(t+=1);return t}function _v(e){let t=e.transcript?mv(e.transcript.partsByMessageID):void 0;return{at:(e.now??Date.now)(),feat:`transcript`,kind:e.kind,sessionID:e.sessionID,...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.source?{source:e.source}:{},...e.durationMs===void 0?{}:{durationMs:e.durationMs},...e.request?{requestStatus:e.request.status}:{},...e.hydration?{hydrationPhase:e.hydration.phase,p0Satisfied:e.hydration.p0Satisfied}:{},...e.transcript?{messageCount:e.transcript.messageOrder.length,lastMessageIDs:hv(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:gv(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...pv(e.error??e.request?.error)?{error:pv(e.error??e.request?.error)}:{},...fv(e.error)===void 0?{}:{httpStatus:fv(e.error)}}}function vv(e={}){let t=e.limit??500,n=[];return{append(e){n.push(e),n.length>t&&n.splice(0,n.length-t)},async read(){return n.slice()},async clear(){n.length=0}}}function yv(e){return{isEnabled:e.isEnabled,record(t){e.isEnabled()&&Promise.resolve(e.sink.append(t)).catch(()=>void 0)},async exportReport(){let t=await e.sink.read(),n=[...new Set(t.map(e=>e.feat))];return JSON.stringify({schema:`openchamber.client-diagnostics.v1`,exportedAt:Date.now(),eventCount:t.length,feats:n,events:t},null,2)},clear:()=>e.sink.clear()}}function bv(e){return typeof e==`string`&&av.has(e)}function xv(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return bv(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>bv(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function Sv(e){if(e.type===`http-page`)return e.purpose}function Cv(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function wv(e){switch(e.type){case`http-page`:return`network`;case`sse-event`:case`sse-event-batch`:return`sse`;case`materialize-snapshots`:return`durable-cache`;default:return}}function Tv(e){return e.__openchamberOptimistic===!0}function Ev(e){let t=[];for(let n of e){if(n.type!==`text`)continue;let e=typeof n.text==`string`?n.text.trim():``;e&&t.push(e)}let n=t.join(`
|
|
400
|
+
`).trim();if(n)return iv.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function Dv(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function Ov(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var kv=e=>typeof e==`string`&&e.trim().length>0;function Av(e){if(!e||Dv(e)!==`assistant`)return;let t=e,n=!kv(t.mode)&&!kv(t.agent),r=!kv(t.modelID)||!kv(t.providerID);return n||r}function jv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function Mv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)rv(e)?r+=1:i+=1,Tv(e)&&(a=!0);let o=e.messagesByID[t],s=Dv(o),c=Av(o),l=s===`user`?Ev(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:Ov(o),...s?{role:s}:{},...l?{text:l}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function Nv(e,t){let n=new Map(e.messages.map(e=>[e.id,e])),r=new Map(t.messages.map(e=>[e.id,e])),i=new Set(e.messageIDs),a=new Set(t.messageIDs),o=t.messageIDs.filter(e=>!i.has(e)),s=e.messageIDs.filter(e=>!a.has(e)),c=[],l=[],u=[],d=[];for(let t of e.messageIDs){let e=n.get(t);if(!e)continue;let i=r.get(t);if(!i){e.optimistic&&u.push(t);continue}(e.partCount!==i.partCount||e.slimCount!==i.slimCount||e.fullCount!==i.fullCount||e.optimistic!==i.optimistic)&&c.push({id:t,before:jv(e),after:jv(i)}),e.fullCount>0&&i.fullCount===0&&i.slimCount>0&&l.push(t),e.optimistic&&!i.optimistic&&!i.completed&&u.push(t),e.identityMissing!==!0&&i.identityMissing===!0&&d.push(t)}return{addedMessageIDs:o,removedMessageIDs:s,partsChanged:c,downgraded:l,optimisticLost:u,identityLost:d}}function Pv(e){return{at:(e.now??Date.now)(),feat:`transcript`,kind:`transcript-diff`,sessionID:e.sessionID,trigger:e.trigger,before:e.before,after:e.after,diff:Nv(e.before,e.after),...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.purpose?{purpose:e.purpose}:{}}}function Fv(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function Iv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function Lv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Rv(e){let t=Lv(e.partID),n=Lv(e.messageID),r=Lv(e.directory),i=Lv(e.childSessionID),a=Lv(e.toolStatus),o=Lv(e.surfaceKind);return{directoryPresent:e.directoryPresent,childSessionPresent:e.childSessionPresent,finalized:e.finalized,backgroundRunning:e.backgroundRunning,effectiveActive:e.effectiveActive,suppressLoading:e.suppressLoading,delegating:e.delegating,childStatus:e.childStatus,parentStatus:e.parentStatus,idleConfirmed:e.idleConfirmed,navigateCapability:e.navigateCapability,...t?{partID:t}:{},...n?{messageID:n}:{},...r?{directory:r}:{},...i?{childSessionID:i}:{},...a?{toolStatus:a}:{},...o?{surfaceKind:o}:{},...e.taskStartedAt===void 0?{}:{taskStartedAt:e.taskStartedAt},...e.statusObservedAt===void 0?{}:{statusObservedAt:e.statusObservedAt},...e.statusSnapshotAt===void 0?{}:{statusSnapshotAt:e.statusSnapshotAt}}}function zv(e){return[e.sessionID,Lv(e.partID)??``,e.childSessionPresent?`1`:`0`,Lv(e.childSessionID)??``,Lv(e.toolStatus)??``,e.finalized?`1`:`0`,e.backgroundRunning?`1`:`0`,e.effectiveActive?`1`:`0`,e.suppressLoading?`1`:`0`,e.delegating?`1`:`0`,e.childStatus,e.parentStatus,e.idleConfirmed?`1`:`0`,e.navigateCapability?`1`:`0`,e.directoryPresent?`1`:`0`,Lv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Bv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Rv(e)}}function Vv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:Iv(e),...Rv(e)}}var Hv=`openchamber-transcript-diagnostics`,Uv=`events`,Wv=1,Gv=(e,t)=>{try{return e.error??Error(t)}catch{return Error(t)}},Kv=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>{try{r(e.error??t?.error??Error(`IndexedDB request failed`))}catch{r(t?.error??Error(`IndexedDB request failed`))}}}),qv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Wv),i=!1,a=()=>{i||(i=!0,n(Gv(r,`IndexedDB open failed`)))};r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Uv)||e.createObjectStore(Uv,{autoIncrement:!0})},r.onsuccess=()=>{let e=r.result;if(i){try{e.close()}catch{}return}i=!0,t(e)},r.onerror=a,r.onblocked=a}),Jv=(e=Hv)=>{let t=null,n=null,r=Promise.resolve(),i=[],a=500,o=0,s=null,c=[],l=()=>{let e=t;if(t=null,n=null,e)try{e.onversionchange=null,e.onclose=null,e.close()}catch{}},u=e=>(e.onversionchange=()=>{l()},e.onclose=()=>{t===e&&(t=null,n=null)},t=e,e),d=()=>t?Promise.resolve(t):n||(n=qv(e).then(e=>(n=null,u(e))).catch(e=>{throw n=null,e}),n),f=e=>{let t=r.then(e,e);return r=t.then(()=>void 0,()=>void 0),t},p=async(e,t)=>{let n=await d(),r;try{r=n.transaction(Uv,e)}catch(e){throw l(),e}let i=r.objectStore(Uv),a=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{}}),o;try{let e=await t(i);return await a,e}catch(e){o=e;try{r.abort()}catch{}try{await a}catch(e){o===void 0&&(o=e)}throw l(),o}},m=e=>{for(let t of e)t.resolve()},h=(e,t)=>{for(let n of e)n.reject(t)},g=e=>{if(i.length<=e)return;let t=i.splice(0,i.length-e);m(t)},_=async(e,t)=>{e.length!==0&&await p(`readwrite`,async n=>{for(let t of e)await Kv(n.add(t),n.transaction);let r=await Kv(n.getAllKeys(),n.transaction),i=r.length-t;if(i>0)for(let e of r.slice(0,i))await Kv(n.delete(e),n.transaction)})},v=()=>c.length===0?1/0:Math.min(...c),y=async()=>{if(i.length===0)return!1;let e=v(),t=i.filter(t=>t.seq<=e);if(t.length===0)return!1;i=i.filter(t=>t.seq>e);let n=a;try{return await _(t.map(e=>e.event),n),m(t),!0}catch(e){throw i=t.map(e=>({seq:e.seq,event:e.event,resolve:()=>{},reject:()=>{}})).concat(i),g(n),h(t,e),e}},b=async e=>{if(i.length===0)return;let t=i.filter(t=>t.seq<=e);if(t.length===0)return;i=i.filter(t=>t.seq>e);let n=a;try{await _(t.map(e=>e.event),n),m(t)}catch(e){throw i=t.map(e=>({seq:e.seq,event:e.event,resolve:()=>{},reject:()=>{}})).concat(i),g(n),h(t,e),e}},x=()=>{s||=f(async()=>{let e=!1;try{e=await y()}finally{s=null}e&&i.length>0&&x()}).then(()=>void 0,()=>{s=null})};return{append(e,t){return a=t,new Promise((n,r)=>{i.push({seq:++o,event:e,resolve:n,reject:r}),g(t),x()})},read(){let e=o;return c.push(e),f(async()=>{try{return await b(e),await p(`readonly`,e=>Kv(e.getAll(),e.transaction))}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})},clear(){let e=o;return c.push(e),f(async()=>{try{let t=[],n=[];for(let r of i)r.seq<=e?n.push(r):t.push(r);i=t,m(n),await p(`readwrite`,async e=>{await Kv(e.clear(),e.transaction)})}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})}}};function Yv(e={}){let t=e.driver??Jv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Xv=et(`OpenChamberMedia`);function Zv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Qv(){return Ue()&&tt!==void 0&&tt.isPluginAvailable(`OpenChamberMedia`)}function $v(){return`1.19.17-beta.3`}function ey(){if(typeof localStorage>`u`)return null;try{return cv(localStorage.getItem(sv))}catch{return null}}function ty(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(sv,e?`true`:`false`)}catch{}}function ny(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var ry;function iy(e=$v()){return lv({version:e,preference:ey()})}function ay(e={}){return yv({sink:ny()===`indexeddb`?(e.createIndexedDBSink??Yv)():(e.createMemorySink??vv)(),isEnabled:e.isEnabled??iy})}function oy(){return ry??=ay(),ry}function sy(e){oy().record(e)}function cy(e){try{return iy()?Mv(e()):void 0}catch{return}}function ly(e){try{sy(Pv(e))}catch{}}function uy(e){try{sy(Bv(e))}catch{}}function dy(e){try{sy(Vv(e))}catch{}}function fy(e){if(e!==void 0)return typeof e==`function`?e():e}function py(e){return!xv(e.command)||e.changed===!1&&(e.command.type===`sse-event`||e.command.type===`sse-event-batch`)?!1:(e.isEnabled??(()=>oy().isEnabled()))()}function my(e){if(!py(e))return;let t=xv(e.command);t&&sy(_v({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:fy(e.transcript),request:fy(e.request),hydration:fy(e.hydration),command:e.command.type,purpose:Sv(e.command),sseType:Cv(e.command),source:wv(e.command),error:e.error}))}async function hy(){let e=await oy().exportReport(),t=b()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function gy(e,t=uv()){if(Qv())return(await Xv.saveFile({dataBase64:Zv(e),mimeType:`application/json`,filename:t}))?.cancelled?`cancelled`:`saved`;if(typeof document>`u`)return`failed`;let n=new Blob([e],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);return i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),`downloaded`}async function _y(){let e=await hy(),t=uv();return{content:e,fileName:t,outcome:await gy(e,t),eventCount:dv(e)}}function vy(e){let t=e.directory.trim(),n=new Set,r=[],i=e=>{!e||n.has(e)||(n.add(e),r.push({directory:t,sessionID:e}))};for(let n of e.viewedSessions??[])n.directory.trim()===t&&i(n.sessionID);e.viewed?.directory.trim()===t&&i(e.viewed.sessionID);for(let t of e.busyOrRetrySessionIDs??[])i(t);for(let n of e.activeScopes)n.directory.trim()===t&&i(n.sessionID);return r}var yy=2,by=6e4,xy=6e4;function Sy(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??u)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??f)()}}function Cy(e,t){let n=(t.probe?.getTransport??u)(),r=(t.probe?.getGeneration??f)();if(n!==e.transport||r!==e.generation)throw new ag}function wy(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function Ty(e,t){return Ig({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function Ey(e,t){return`${e.trim()}\n${t}`}function Dy(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Jg({client:t,activeRegistry:Ug()}),i=Math.max(1,Math.floor(e.directoryConcurrency??yy)),a=e.fetchReconcile??b_,o=e.now??Date.now,s=Math.max(0,e.destructiveResetDedupeMs??by),c=!1,l=0,d=new Map,p=new Map,m=new Map,h=new Map,g=new Set,_=new Map,v=new Set,y=new Map,b=(e,t)=>{g.add(Ey(e,t))},x=(e,t)=>{g.delete(Ey(e,t))},S=e=>{let t=p.get(e);t&&(t.abort(),p.delete(e)),d.delete(e)},C=e=>{l+=1;for(let e of[...p.keys()])S(e);m.clear(),h.clear(),y.clear()},w=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(Ey(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of r.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&i.set(Ey(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(i.values())},T=(t,n)=>{let i=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of r.listCanonical({transport:t.transport,generation:t.generation}))i.add(e.scope.directory);for(let e of r.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&i.add(e.directory);for(let e of n)e.directory&&i.add(e.directory.trim());return i},E=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=Ey(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},D=i=>{if(c)return;let a={transport:i.transport??Sy(e).transport,generation:i.generation??Sy(e).generation},s=o(),l=E(),u=T(a,l),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(Ey(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of r.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(Ey(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of l)f.set(Ey(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(Ey(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=wy(e,a),o=n.getTranscript(r),c=Q_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:o,lastEventID:i.lastEventID,capturedAt:s});tv(t,c)}let p=new Set;for(let t of u){let n=vy({directory:t,activeScopes:w(a,t),viewedSessions:l,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(Ey(e.directory,e.sessionID))}for(let e of d){let t=Ey(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=cy(()=>n.getTranscript(e)),a=n.getTranscript(e).liveRevision,o=n.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:t.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:r,liveRevision:a});try{let t=cy(()=>n.getTranscript(e));i&&t&&ly({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},k=e=>{let t=n.getTranscript(e),r=t.messageOrder[t.messageOrder.length-1];if(!r)return!1;let i=t.messagesByID[r];return!i||i.role!==`assistant`?!1:Xs(i)},A=async(r,i,a)=>{if(Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;tv(t,$_(ev(t,i)??Q_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let s=cy(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;nv(t,i),x(i.directory,i.sessionID),y.set(Ey(i.directory,i.sessionID),o());try{let e=cy(()=>n.getTranscript(r));s&&e&&ly({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:s,after:e})}catch{}}catch(e){throw tv(t,$_(ev(t,i)??Q_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},j=async(r,i,a)=>{if(Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;tv(t,$_(ev(t,i)??Q_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=cy(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),Cy({transport:i.transport,generation:i.generation},e),a!==l)throw new ag;nv(t,i),x(i.directory,i.sessionID);try{let e=cy(()=>n.getTranscript(r));o&&e&&ly({trigger:`reconnect-compensation-ensure-tail`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw tv(t,$_(ev(t,i)??Q_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},ee=async(r,i,c,u)=>{let d=wy(r,i),f=Ty(r,i),p=Bg({directory:f.directory,sessionID:f.sessionID,checkpoint:String(ev(t,f)?.capturedAt??o())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:o()});try{if(Cy(i,e),c!==l||u.aborted)throw new ag;let m=ev(t,f);if(m||(m=Q_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:o()}),tv(t,m)),!m.anchorMessageID){if(await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}m=$_(m,{state:`reconciling`}),tv(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,Cy(i,e),c!==l||u.aborted)throw new ag;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,Cy(i,e),c!==l||u.aborted)throw new ag;let g=n.getTranscript(d).liveRevision;if(!_&&!h){await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()});return}let x=await a({sessionID:r.sessionID,directory:r.directory.trim(),..._?{continuation:_}:{anchor:h},signal:u});if(Cy(i,e),c!==l||u.aborted)throw new ag;if(x.resetRequired){let n=y.get(Ey(r.directory,r.sessionID))??-1/0;if(o()-n<s?(await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()})):(await A(d,f,c),t.setQueryData(p,{status:`reset`,finishedAt:o()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}if(S===1&&(v=x.capturedHeadMessageID),b=x.latestHeadMessageID??b,x.records.length>0&&O(d,x,g),m=$_(ev(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),tv(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=$_(ev(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),tv(t,m);continue}if(m=$_(ev(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),tv(t,m),x(r.directory,r.sessionID),t.setQueryData(p,{status:`complete`,finishedAt:o()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}{let n=y.get(Ey(r.directory,r.sessionID))??-1/0;if(o()-n<s?(await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()})):(await A(d,f,c),t.setQueryData(p,{status:`reset`,finishedAt:o()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}}}catch(n){if(n instanceof ag||n instanceof Error&&n.name===`AbortError`){t.setQueryData(p,{status:`cancelled`,finishedAt:o()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(p,{status:`error`,finishedAt:o(),code:n instanceof Error?n.name:`error`}),n}},te=t=>{let n=t.trim(),r=h.get(n)??0;if(r>=i)return;let a=m.get(n);if(!a||a.length===0)return;let o=a.shift();h.set(n,r+1);let s=Ey(o.directory,o.sessionID);if(d.has(s)){h.set(n,(h.get(n)??1)-1),te(n);return}let c=Sy(e),u=l,f=new AbortController;p.set(s,f);let g=(async()=>{$g(n,o.sessionID);try{await ee(o,c,u,f.signal)}catch{}finally{e_(n,o.sessionID),p.delete(s),d.delete(s),h.set(n,Math.max(0,(h.get(n)??1)-1)),te(n)}})();d.set(s,g)},ne=e=>{let t=e.directory.trim(),n=Ey(t,e.sessionID);if(d.has(n))return;let r=m.get(t);r||(r=[],m.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),te(t))},re=t=>{let n=E(),i=T(t,n);for(let a of i){let i=vy({directory:a,activeScopes:w(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)ne(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=Ey(e.scope.directory,e.scope.sessionID);i.some(e=>Ey(e.directory,e.sessionID)===t)||b(e.scope.directory,e.scope.sessionID)}}},ie=t=>{if(c||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??u)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??f)(),i=(e.probe?.getTransport??u)();if(r!==n.generation||i!==n.transport){C(`generation_mismatch`);return}re(n)},ae=t=>{if(c)return;let r=t.directory.trim(),i=Sy(e,t),s=wy({directory:r,sessionID:t.sessionID},i),l=Lg(Ty({directory:r,sessionID:t.sessionID},i)),u=_.get(l);if(u&&o()-u.checkedAt<xy||v.has(l)||d.has(Ey(r,t.sessionID))||!n.hasSession?.(s))return;let f=n.getTranscript(s),p=f.messageOrder[f.messageOrder.length-1];p&&(v.add(l),(async()=>{try{if(Cy(i,e),c)return;let u=await a({sessionID:t.sessionID,directory:r,anchor:p});if(Cy(i,e),c||(_.set(l,{checkedAt:o()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(s).liveRevision;O(s,u,d)}catch{}finally{v.delete(l)}})())};return{captureCheckpoints:D,onCompensation:ie,ensureOnObserve:async r=>{if(c)return null;let i=r.directory.trim(),a=Ey(i,r.sessionID);if(!g.has(a))return ae(r),null;x(i,r.sessionID);let o=Sy(e,r),s=wy({directory:i,sessionID:r.sessionID},o),l=Ty({directory:i,sessionID:r.sessionID},o),u=ev(t,l);if(u&&u.state!==`complete`&&u.anchorMessageID){ne({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{Cy(o,e),$g(i,r.sessionID);try{let e=await n.ensureInitial(s);return nv(t,l),e}finally{e_(i,r.sessionID)}}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:C,getCheckpoint:n=>{let r=Sy(e,n);return ev(t,Ty({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(Ey(e,t)),destroy:()=>{c=!0,C(`destroy`)}}}var Oy=e=>e.trim(),ky=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session status runtime changed`)},Ay=(e,t={})=>{let n=Oy(e),r=t.transport??u(),i=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),a=t.now??Date.now,o=t.runtimeProbe??{},s=(o.getGeneration??f)();return ct({queryKey:P.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{ky(r,s,o);let t=a(),c=await i(n,e);if(ky(r,s,o),c===null)throw Error(`session status snapshot unavailable`);return{snapshot:c,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},jy=(e,t={})=>{let{client:n=R,...r}=t;return n.fetchQuery(Ay(e,r))},My=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session active runtime changed`)},Ny=(e={})=>{let t=e.transport??u(),n=e.loadActive??(e=>B.getSessionActive(e)),r=e.now??Date.now,i=e.runtimeProbe??{},a=(i.getGeneration??f)();return ct({queryKey:P.sessionActive.snapshot(t,a),queryFn:async({signal:e})=>{My(t,a,i);let o=r(),s=await n(e);return My(t,a,i),{result:s,requestedAt:o}},staleTime:0,gcTime:3e5,retry:!1})},Py=(e={})=>{let{client:t=R,...n}=e;return t.fetchQuery(Ny(n))},Fy;function Iy(e){Fy=e}function Ly(e){if(e){if(e.type===`idle`||e.type===`busy`)return{type:e.type};if(e.type===`retry`&&typeof e.attempt==`number`&&typeof e.message==`string`&&typeof e.next==`number`)return{type:`retry`,attempt:e.attempt,message:e.message,next:e.next}}}function Ry(e,t){return JSON.stringify(e)===JSON.stringify(t)}function zy(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function By(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>{let r={...e.session_error_at};return delete r[t],{session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n},session_error_at:r}}),!0)}function Vy(e,t,n,r=Date.now(),i){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let a=e.membership,o=t??{},s=new Set([...n,...Object.keys(o)]);if(s.size===0)return{snapshot:null,source:`none`};let c={};for(let e of s){let t=Object.prototype.hasOwnProperty.call(a,e),n=Ly(o[e]);if(t){c[e]=n&&zy(n,r)?n:{type:`busy`};continue}if(i?.tailOpenSessionIds?.has(e)){c[e]=n?.type===`retry`?n:{type:`busy`};continue}c[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:c,source:`fused`}}function Hy(e,t,n,r){if(n.length===0)return!1;let i=!1;return e.setState(e=>{let a=e.session_status??{},o,s,c,l=()=>o??={...a},u=()=>s??={...e.session_status_observed_at},d=()=>c??={...e.session_error_at},f=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(u()[t]=r,i=!0)};for(let o of n){if(r!==void 0&&(e.session_status_observed_at[o]??-1/0)>=r)continue;let n=Ly(t[o]);if(n&&n.type!==`idle`){Ry(a[o],n)||(l()[o]=n,i=!0),(n.type===`busy`||n.type===`retry`)&&e.session_error_at?.[o]!==void 0&&(delete d()[o],i=!0),f(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(l()[o]={type:`idle`},i=!0),f(o)}return!o&&!s&&!c?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{},...c?{session_error_at:c}:{}}}),i}function Uy(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Wy(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await jy(e,{client:o,loadSnapshot:r.loadSnapshot,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),f=r.skipActive?Promise.resolve(null):(async()=>{try{return await Py({client:o,loadActive:r.loadActive,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),[p,m]=await Promise.all([d,f]);if(c=p,m&&(l=m.result,u=m.requestedAt),r.isStale?.())return null;let h=c?.snapshot??null,g=l?.state===`supported`;if(h===null&&!g)return null;let{snapshot:_,source:v}=Vy(l,h,n,Date.now(),{tailOpenSessionIds:r.tailOpenSessionIds});if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=Uy(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Hy(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Fy;if(S){let n=t.getState().session_status??{},r={};for(let e of x){let t=n[e];t&&t.type!==`idle`&&(r[e]={type:t.type})}S(e,r,x)}return _}async function Gy({directory:e,sessionID:t,store:n,statusBeforePull:r,statusObservedAtBeforePull:i,hasMessages:a,isTailPage:o=!0,isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m}){if(!o||!a||!r||r.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:Wy(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Ky(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function qy(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts??[]})),cursor:typeof e.cursor==`string`?e.cursor:void 0,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function Jy(e){if(e.type===`message.part.delta`)return{action:`skip`};let t=e.properties;if(e.type===`message.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`remove`,messageID:e}:{action:`skip`}}if(e.type===`message.updated`){let e=t?.info;return typeof e?.id==`string`&&e.id.length>0?{action:`persist`,messageID:e.id}:{action:`skip`}}if(e.type===`message.part.updated`){let e=t?.part;return typeof e?.messageID==`string`&&e.messageID.length>0?{action:`persist`,messageID:e.messageID}:{action:`skip`}}if(e.type===`message.part.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`persist`,messageID:e}:{action:`skip`}}return{action:`skip`}}function Yy(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(pc(e))??Promise.resolve(),r.get(hc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=pc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=hc(e),i=(r.get(n)??Promise.resolve()).then(t,t);return r.set(n,i.then(()=>void 0,()=>void 0)),i};return{wait:i,persistSettled:(n,r,i)=>a(n,async()=>{if((await e.upsertSettled(n,r,i)).status!==`written`)return;let a=(t.getByteBudget??Pg)();await e.evictToBytes(a,{protect:t.getProtectScopes?.()??[]})}),removeMessage:(t,n)=>a(t,()=>e.removeMessage(t,n)),clearSession:t=>a(t,()=>e.clearSession(t)),clearGeneration:t=>o(t,()=>e.clearGeneration(t))}}var Xy=new Map;function Zy(e,t){let n=Xy.get(e);if(n)return n;let r=t().finally(()=>{Xy.get(e)===r&&Xy.delete(e)});return Xy.set(e,r),r}var Qy=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function $y(e){return Zy(Qy(e),e.request)}function eb(e,t){return`${e}\n${t}`}var tb=new Map;function nb(e){return tb.get(e)}async function rb(e){return $y({runtimeKey:eb(e.transport,e.generation),directory:e.directory,sessionID:e.sessionID,messageID:e.messageID,request:async()=>{let t=await e.request();if(t.error)throw Error(`session.message failed`);let n=t.data,r=n?.info,i=n?.parts??t.parts??[];if(!r?.id)throw Error(`session.message failed: empty response`);return tb.set(r.id,i),{info:vp(r),parts:i}}})}function ib(e,t){let n=e.info;return n.role===t||n.clientRole===t}function ab(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!ib(i,`assistant`))continue;let e=i.info.parentID;if(!(!e||t.has(e)||r.has(e))&&(r.add(e),n.push(e),n.length===8))break}return n}async function ob(e){if(e.complete){let t=e.records.some(e=>ib(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=ab(e.records);if(t.length===0){let t=e.records.some(e=>ib(e,`user`));return{records:e.records,boundaryFound:t,partial:!t}}let n=await Promise.all(t.map(async t=>{try{return await e.requestMessage(t)}catch{return null}})),r=new Map;for(let t of e.records)r.set(t.info.id,t);for(let e of n)e?.info?.id&&r.set(e.info.id,e);let i=[...r.values()].sort((e,t)=>e.info.id.localeCompare(t.info.id)),a=i.some(e=>ib(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function sb(e){return e.trim()}function cb(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??u)(),r=e.generation??t.generation??(t.probe?.getGeneration??f)();return{directory:sb(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function q(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function lb(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:hl,liveRevision:0}}function ub(e,t){if(!e||e.pages.length===0)return lb(t);let n=ig(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function db(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function fb(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function pb(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=db(e.info);t!==void 0&&(n===void 0||t<n)&&(n=t)}if(n===void 0)return[];let r=new Set(t.records.map(e=>e.info.id)),i=[];for(let t of e.messageOrder){if(r.has(t))continue;let a=db(e.messagesByID[t]);a===void 0||a<=n||fb(e.partsByMessageID[t])||i.push(t)}return i}function mb(e={}){let t=e.client??R,n=e.cacheBudget??Jg({client:t,activeRegistry:e.activeRegistry??Ug()}),r=n.activeRegistry,i=new Map,a=new Map,o=new Map,s=new Map,c=new Map,p=e.durableStore?Yy(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Ky),getByteBudget:e.getDurableByteBudget}):void 0,m=new Map,h=new Map,g=new Map,_=new Map,v=new Map,y=new Set,b=new Map,x=new Set,S=new Set,C=(e,t)=>{let n=q(t);if(x.has(n))return;let r=ie(e);!Pl(r)&&!b.has(n)||(x.add(n),sy(_v({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},w=0,T=e=>{let t=c.get(e);return t||(t={messages:new Map,parts:new Map},c.set(e,t)),t},E=n=>{let r=cb(n,e);return Dg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},D=t=>{let n=cb(t,e);return hg({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},O=t=>{let n=cb(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},k=e=>{let t=O(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},A=n=>{let r=e.probe??{getTransport:u,getGeneration:f},a=cb(n,{...e,transport:void 0,generation:void 0,probe:r}),o=q(a),s=i.get(o);if(s)return s;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let c=Tg({directory:a.directory,sessionID:a.sessionID,fetcher:e.fetcher,transport:a.transport,generation:a.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return i.set(o,c),c},j=t=>{let n=q(cb(t,e)),r=a.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},ee=n=>{let r=q(cb(n,e));if(o.has(r))return;let i=D(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&j(n)});o.set(r,a)},te=e=>{let t=a.get(e);if(t&&t.size>0)return;let n=o.get(e);n&&(n(),o.delete(e)),a.delete(e)},ne=(e,t)=>{let n=T(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},re=(e,t)=>{let n=T(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},ie=t=>{let n=cb(t,e),r=q(n),i=E(t),a=T(r);if(a.hasTranscriptCache&&a.cachedFrom===i&&a.transcript)return a.transcript;a.cachedFrom!==i&&(a.messages.clear(),a.parts.clear(),a.pagination=void 0);let o=ub(i,n.sessionID),s=ne(r,o);return a.cachedFrom=i,a.hasTranscriptCache=!0,s},ae=(e,t)=>`${q(e)}\n${t}`,M=(e,t)=>{let n=q(e),r=v.get(n);r&&(r.delete(t),r.size===0&&v.delete(n))},oe=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t)},se=e=>{for(let t of g.keys())t.startsWith(e)&&g.delete(t);for(let t of _.keys())t.startsWith(e)&&_.delete(t)},ce=e=>{for(let t of b.keys())(t===e||t.startsWith(e))&&b.delete(t);for(let t of[...x])(t===e||t.startsWith(e))&&x.delete(t);for(let t of S)(t===e||t.startsWith(e))&&S.delete(t)},le=e=>{let t=`${q(e)}\n`;for(let[e,n]of g)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of _.keys())if(e.startsWith(t))return!0;return!1},ue=t=>{let n=cb({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},de=(e,t,n)=>{p&&d()&&p.persistSettled(Ky(e),t,n??[])},fe=(e,t,n,r)=>{if(!p||w>0||!d()||!r.applied||!r.changed)return;let i=Ky(t);if(n.type===`remove-message`){p.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(p.clearSession(i),n.page){let r=ie(e);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;de(t,n,r.partsByMessageID[e.info.id]??e.parts)}}return}if(n.type!==`optimistic-add`&&n.type!==`optimistic-confirm`&&n.type!==`optimistic-remove`){if(n.type===`sse-event`||n.type===`sse-event-batch`){let r=n.type===`sse-event`?[n.event]:n.events,a=ie(e);for(let e of r){let n=Jy(e);if(n.action===`remove`){p.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&de(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=ie(e),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&de(t,n,r.partsByMessageID[e.info.id])}}}},pe=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let i=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},a=e.probe??{getTransport:u,getGeneration:f},o={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??vh()};return qy(r?.fresh?await t.fetchQuery({...yg(o,i,n.transport,a,n.generation),staleTime:0}):await bg(o,i,t,n.transport,a,n.generation))},N=(e,t)=>{for(let n of t)bu(`${e.directory}\n${e.sessionID}\n${n}`,()=>I.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},me=(e,t)=>{let r=q(t),i=h.get(r);if(i)return i;let a=l(),o=(async()=>{let i=Date.now();m.set(r,{status:`loading`});try{let i=await pe(t);if(!ue(t)||l()!==a)return m.delete(r),I.getTranscript(e);I.apply(e,{type:`http-page`,purpose:`initial`,page:i}),oh(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let o=v.get(r);if(o&&o.size>0){let n=[],r=0;for(let a of i.records){let i=a.info.id;if(!(!i||!o.has(i))){if(!Ol(I.getParts(e,i),I.getMessage(e,i)??a.info)){M(t,i),g.set(ae(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&j(e),N(e,n)}return m.delete(r),n.noteScopeObserved(O(e)),k(e),I.getTranscript(e)}catch(n){if(n instanceof ag||!ue(t))return m.delete(r),I.getTranscript(e);throw m.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),sy(_v({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:ie(e),request:I.getRequestState?.(e),hydration:I.getHydrationState?.(e),error:n})),n}finally{h.delete(r)}})();return h.set(r,o),o},P=(e,t)=>{let r=q(t),i=h.get(r);if(i)return i;let a=l(),o=(async()=>{let i=Date.now(),o=I.getTranscript(e).liveRevision;m.set(r,{status:`loading`});try{let i=await pe(t,{fresh:!0});if(!ue(t)||l()!==a)return m.delete(r),I.getTranscript(e);let s=I.getTranscript(e).liveRevision;return s<o||fu(t.sessionID,t.directory)?(m.delete(r),I.getTranscript(e)):(I.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:o,liveRevision:s}),oh(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),m.delete(r),n.noteScopeObserved(O(e)),k(e),I.getTranscript(e))}catch(n){return m.delete(r),n instanceof ag||!ue(t)||sy(_v({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`reconcile-page`,durationMs:Date.now()-i,transcript:ie(e),request:I.getRequestState?.(e),hydration:I.getHydrationState?.(e),error:n})),I.getTranscript(e)}finally{h.delete(r)}})();return h.set(r,o),o},F=t=>{let n=E(t);return!n||n.pages.length===0||y.has(q(cb(t,e)))?!0:kh(n).kind===`unknown`},I={getTranscript(e){return ie(e)},getPagination(t){let n=cb(t,e),r=q(n),i=I.getTranscript(t);return re(r,Rl(n.sessionID,i.boundary))},getRequestState(t){let n=cb(t,e),r=m.get(q(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let a=i.get(q(n));if(!a){let e=E(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=a.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=cb(t,e),r=q(n),i=I.getTranscript(t);Pl(i)&&b.set(r,!0);let a=b.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Fl({p0Satisfied:a,prependActive:S.has(r),materializeActive:le(n),earlierHistoryLoaded:jl(i)>1})}},hasSession(e){return E(e)!==void 0},getMessage(t,n){let r=q(cb(t,e)),i=T(r),a=I.getTranscript(t).messagesByID[n];return i.messages.has(n)&&i.messages.get(n)===a?i.messages.get(n):(i.messages.set(n,a),a)},getParts(t,n){let r=q(cb(t,e)),i=T(r),a=I.getTranscript(t).partsByMessageID[n]??hb,o=i.parts.get(n);return o===a||o&&a&&o.length===a.length&&o.every((e,t)=>e===a[t])?o??a:(i.parts.set(n,a),a)},getMessageMaterializationState(t,n){let r=cb(t,e),i=g.get(ae(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!I.getMessage(t,n)||v.get(q(r))?.has(n)||Dl(I.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=cb(t,e),i=l(),a=ae(r,n),o=cy(()=>I.getTranscript(t)),s=e=>{try{let t=cy(e);if(!o||!t)return;ly({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:o,after:t})}catch{}},c=_.get(a);if(c)return c.then(e=>s(()=>e)).catch(()=>void 0),c;let u=(async()=>{try{if(!I.getMessage(t,n))return g.set(a,{status:`idle`}),I.getTranscript(t);if(!Dl(I.getParts(t,n))&&!v.get(q(r))?.has(n))return g.set(a,{status:`ready`}),I.getTranscript(t);g.set(a,{status:`loading`}),j(t);try{let o=await rb({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return B.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return!ue(r)||l()!==i?(g.delete(a),I.getTranscript(t)):(I.apply(t,{type:`materialize-snapshots`,records:[{info:o.info,parts:o.parts??[]}]}),Dl(I.getParts(t,n))?g.set(a,{status:`error`,error:`session.message failed: slim parts remain`}):g.set(a,{status:`ready`}),j(t),I.getTranscript(t))}catch(e){if(!ue(r)||l()!==i)return g.delete(a),I.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return g.set(a,{status:`error`,error:n}),j(t),I.getTranscript(t)}}finally{M(r,n)}})();return _.set(a,u),u.then(e=>s(()=>e)).catch(()=>void 0),u.finally(()=>{_.get(a)===u&&_.delete(a)}),u},apply(r,i){let a=cb(r,e),o=D(r),s=(()=>{switch(i.type){case`http-page`:{let e=Eg(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&y.delete(q(a)),e.result.changed&&(j(r),k(r)),e.result}case`sse-event`:{let e=Eg(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&y.delete(q(a)),e.result.changed&&j(r),e.result}case`sse-event-batch`:{let e=Eg(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&y.delete(q(a)),e.result.changed&&j(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=Eg(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&j(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),Eg(t,o,a.sessionID,{type:`optimistic-confirm`,messageID:i.messageID}).result;case`optimistic-remove`:{e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID});let n=Eg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&j(r),n.result}case`reset`:{if(S.delete(q(a)),v.delete(q(a)),y.delete(q(a)),n.purgeSession(O(r)),!i.page)return j(r),{applied:!0,changed:!0};let e=Eg(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(j(r),k(r)),e.result}case`materialize-snapshots`:return gb(t,o,a.sessionID,i,()=>j(r));case`remove-message`:{let e=Eg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&j(r),e.result}default:return{applied:!1,changed:!1}}})();return fe(r,a,i,s),s.applied&&(my({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:()=>I.getTranscript(r),request:()=>I.getRequestState?.(r),hydration:()=>I.getHydrationState?.(r),error:s.error,changed:s.changed}),C(r,a)),s},subscribe(t,i){let o=q(cb(t,e)),c=a.get(o);if(!c){c=new Set,a.set(o,c);let e=O(t);s.set(o,r.retain(e)),n.noteScopeObserved(e)}return c.add(i),ee(t),()=>{let e=a.get(o);if(e){if(e.delete(i),e.size===0){let e=s.get(o);e&&(e(),s.delete(o))}te(o)}}},async ensureInitial(t){let a=cb(t,e),o=l(),s=q(a);if(p&&await p.wait(Ky(a)),l()!==o)return I.getTranscript(t);if(E(t)===void 0&&e.durableStore&&d())try{let n=await e.durableStore.readSession(Ky(a));if(ue(a)&&l()===o&&E(t)===void 0&&n.records.length>0){w+=1;try{I.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)Ol(t.parts,t.info)&&e.add(t.info.id);e.size>0&&v.set(s,e),y.add(s)}finally{--w}}}catch(e){sy(_v({kind:`request-error`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(l()!==o)return I.getTranscript(t);if(F(t)&&E(t)!==void 0){let e=Date.now(),n=await me(t,a);return sy(_v({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),n}let u=E(t);if(u&&u.pages.length>0&&!F(t)&&e.fetcher&&!r.isRetained(O(t))){let e=Date.now(),n=await P(t,a);return sy(_v({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),n}let f=A(t),h=Date.now(),g=E(t)!==void 0;m.delete(s);try{await f.ensureInitial()}catch(e){if(l()!==o)return I.getTranscript(t);throw sy(_v({kind:`request-error`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:g?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-h,transcript:ie(t),request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t),error:e})),e}if(l()!==o)return i.get(s)===f&&(n.purgeSession(O(t)),c.delete(s),j(t)),I.getTranscript(t);m.delete(s),g||oh(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(O(t)),k(t);let _=I.getTranscript(t);return sy(_v({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:g?`query-cache`:`network`,durationMs:Date.now()-h,transcript:_,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),_},async fetchPreviousPage(t){if(F(t)&&await I.ensureInitial(t),kh(E(t)).kind!==`has-more`)return I.getTranscript(t);let n=cb(t,e),r=q(n);S.add(r),j(t);let i=Date.now();try{await A(t).fetchPreviousPage(),k(t);let e=I.getTranscript(t);return sy(_v({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),e}catch(e){throw sy(_v({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{S.delete(r),j(t)}},getController(t){let n=cb(t,e);return i.get(q(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=cb(t,e),i=l(),a=cy(()=>I.getTranscript(t)),o=I.getTranscript(t).liveRevision,s=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??vh(),signal:new AbortController().signal});if(l()!==i)return I.getTranscript(t);let c=I.getTranscript(t).liveRevision;if(I.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:s.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:o,liveRevision:c}),c<=o){let n=pb(I.getTranscript(t),s);for(let i of n)I.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let u=I.getTranscript(t);n.noteScopeObserved(O(t));try{let e=cy(()=>u);a&&e&&ly({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:a,after:e})}catch{}return u},async destructiveReset(t){let r=cy(()=>I.getTranscript(t)),a=O(t);return p&&await p.clearSession(Ky(cb(t,e))),n.destructiveReset(a,async()=>{let n=cb(t,e),a=q(n),o=i.get(a);if(o&&(o.destroy(),i.delete(a)),c.delete(a),ce(a),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await I.ensureInitial(t);try{let e=cy(()=>s);r&&e&&ly({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=q(cb(t,e)),a=i.get(r);a&&(a.destroy(),i.delete(r)),c.delete(r),se(`${r}\n`),v.delete(r),ce(r),n.purgeSession(O(t)),j(t)},resetReasoningProjection(){let t=`${(e.probe?.getTransport??u)()}\n${(e.probe?.getGeneration??f)()}\n`,r=new Set;for(let e of i.keys())e.startsWith(t)&&r.add(e);for(let e of c.keys())e.startsWith(t)&&r.add(e);for(let e of a.keys())e.startsWith(t)&&r.add(e);for(let e of r){let t=i.get(e);t&&(t.destroy(),i.delete(e)),c.delete(e);let r=e.split(`
|
|
401
|
+
`);if(r.length>=4){let e={transport:r[0],generation:Number(r[1]),directory:r[2],sessionID:r[3]};n.purgeSession(O(e)),j(e)}}se(t),oe(t),ce(t);for(let e of[...m.keys()])e.startsWith(t)&&m.delete(e);for(let e of[...h.keys()])e.startsWith(t)&&h.delete(e);for(let e of[...y])e.startsWith(t)&&y.delete(e)},purgeGeneration(e,t){for(let[n,r]of i)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),i.delete(n),c.delete(n);let e=s.get(n);e&&(e(),s.delete(n));let t=o.get(n);t&&(t(),o.delete(n)),a.delete(n)}se(`${e}\n${t}\n`),oe(`${e}\n${t}\n`),ce(`${e}\n${t}\n`),n.purgeGeneration(e,t),p&&p.clearGeneration({transport:e,generation:t})},destroy(){for(let e of i.values())e.destroy();i.clear();for(let e of o.values())e();o.clear();for(let e of s.values())e();s.clear(),a.clear(),c.clear(),m.clear(),h.clear(),g.clear(),_.clear(),v.clear(),b.clear(),x.clear(),S.clear(),n.dispose()}};return I}var hb=Object.freeze([]);function gb(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=Eg(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var _b=`/api/openchamber/transcript-cache`,vb=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),yb=e=>typeof e==`object`&&!!e&&!Array.isArray(e),bb=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},xb=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},Sb=e=>{if(!yb(e))throw Error(`Invalid transcript cache scope`);return{transport:bb(e.transport,`scope`),generation:xb(e.generation,`scope`),directory:bb(e.directory,`scope`),sessionID:bb(e.sessionID,`scope`)}},Cb=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},wb=e=>{if(!yb(e)||!yb(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!yb(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:Sb(e.scope),messageID:bb(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>Cb(e,`part completeness`)),completeness:Cb(e.completeness,`completeness`),contentHash:bb(e.contentHash,`content hash`),byteSize:xb(e.byteSize,`byte size`),lastAccessedAt:xb(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:xb(e.sortKey.created,`sort key`),messageID:bb(e.sortKey.messageID,`sort key`)}}},Tb=(e,t)=>{if(!yb(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(wb);return{scope:e.scope===void 0?Oc(t):Sb(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},Eb=e=>{if(!yb(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:wb(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!vb.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:wb(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Db=e=>{if(!yb(e))throw Error(`Invalid transcript cache evict`);return{evicted:xb(e.evicted,`evict`),freedBytes:xb(e.freedBytes,`evict`),remainingBytes:xb(e.remainingBytes,`evict`)}},Ob=e=>({scope:Oc(e),records:[],byteSize:0}),kb=(e,t)=>yb(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Ab=async e=>{if(e.status===204)return;let t=await e.text();if(t)try{return JSON.parse(t)}catch{throw Error(`Invalid transcript cache payload`)}},jb=async(e,t,n)=>{let r=await e(t,n);if(r.status===501)return{kind:`disabled`};if(r.status===404)return{kind:`not-found`};if(r.ok)return{kind:`ok`,payload:await Ab(r)};let i=await Ab(r).catch(()=>void 0);throw Error(kb(i,`Transcript cache request failed (${r.status})`))},Mb=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Nb=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Pb(e={}){let t=e.fetch??_;return{async readSession(e){let n=await jb(t,`${_b}/session`,{method:`GET`,query:Mb(e)});return n.kind===`disabled`||n.kind===`not-found`?Ob(e):Tb(n.payload,e)},async readMessage(e,n){let r=await jb(t,`${_b}/message`,{method:`GET`,query:{...Mb(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!yb(r.payload))throw Error(`Invalid transcript cache record`);return wb(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await jb(t,`${_b}/message`,Nb(`PUT`,{scope:e,info:n,parts:r}));if(i.kind===`disabled`)return{status:`skipped`,reason:`unchanged`};if(i.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return Eb(i.payload)},async removeMessage(e,n){let r=await jb(t,`${_b}/message`,Nb(`DELETE`,{scope:e,messageID:n}));if(r.kind!==`disabled`&&r.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearSession(e){let n=await jb(t,`${_b}/session`,Nb(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await jb(t,`${_b}/generation`,Nb(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await jb(t,`${_b}/evict`,Nb(`POST`,{maxBytes:e,...n?.protect?{protect:n.protect}:{}}));if(r.kind===`disabled`)return{evicted:0,freedBytes:0,remainingBytes:0};if(r.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return Db(r.payload)},async clearAll(){let e=await jb(t,`${_b}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Fb=`openchamber-transcript-durable`,Ib=1,Lb=`transcriptIndex`,Rb=`transcriptContent`,zb=class extends Error{code;constructor(e){super(e),this.code=e}},Bb=e=>({id:mc(e.scope,e.messageID),scope:Oc(e.scope),scopeKey:pc(e.scope),generationKey:hc(e.scope),messageID:e.messageID,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID},contentHash:e.contentHash,completeness:e.completeness,partCompleteness:e.partCompleteness.slice(),byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt}),Vb=(e,t)=>({scope:Oc(e.scope),messageID:e.messageID,info:Dc(t.info),parts:Dc(t.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),Hb=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Vb(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Ub=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},Wb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Gb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new zb(`database-unavailable`));return}let r=indexedDB.open(e,Ib),i=!1,a=()=>{i||(i=!0,n(new zb(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Lb)){let t=e.createObjectStore(Lb,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Rb)||e.createObjectStore(Rb,{keyPath:`id`})},r.onsuccess=()=>{let e=r.result;if(e.onversionchange=()=>e.close(),i){e.close();return}i=!0,t(e)},r.onerror=a,r.onblocked=a}),Kb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new zb(`database-unavailable`)),r.onblocked=()=>void 0}),qb=(e=Fb)=>({transaction:async t=>{let n=await Gb(e),r=n.transaction([Lb,Rb],`readwrite`),i=r.objectStore(Lb),a=r.objectStore(Rb),o=e=>Wb(e,r),s=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{console.error(`Transcript durable IndexedDB transaction error`,r.error)}}),c;try{let e=await t({getIndex:e=>o(i.get(e)),getAllIndexes:()=>o(i.getAll()),getIndexesByScope:e=>o(i.index(`scopeKey`).getAll(e)),getIndexesByGeneration:e=>o(i.index(`generationKey`).getAll(e)),putIndex:async e=>{await o(i.put(e))},deleteIndex:async e=>{await o(i.delete(e))},getContent:e=>o(a.get(e)),putContent:async e=>{await o(a.put(e))},deleteContent:async e=>{await o(a.delete(e))},clearAll:async()=>{await o(i.clear()),await o(a.clear())}});return await s,e}catch(e){c=e;try{r.abort()}catch{}try{await s}catch(e){c===void 0&&(c=e)}throw c}finally{n.close()}},destroy:()=>Kb(e)});function Jb(e,t={}){let n=kc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Bb(t)),Ac(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(pc(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Vb(t,r);a.lastAccessedAt=n(),await e.putIndex(Bb(a)),i.push(a)}return jc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Hb(e,mc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=Mc({info:i,incomingCompleteness:bc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=Dc(a.slice()),c=bc(s),l=await Cc(i,s),u=mc(t,i.id);return e.transaction(async e=>{let a=await Hb(e,u),o=Mc({info:i,existing:a,incomingCompleteness:c,incomingHash:l.hash});if(o.status===`skipped`)return o.reason===`slim-downgrade`&&a?{status:`skipped`,reason:`slim-downgrade`,record:Ac(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:Oc(t),messageID:i.id,info:Dc(i),parts:s,partCompleteness:s.map(yc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:_c(i)};return await e.putIndex(Bb(d)),await e.putContent({id:u,info:Dc(i),parts:s}),{status:`written`,record:Ac(d)}})},async removeMessage(t,n){await e.transaction(e=>Ub(e,mc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(pc(t));for(let t of n)await Ub(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(hc(t));for(let t of n)await Ub(e,t.id)})},async evictToBytes(t,n){return e.transaction(async e=>{let r=Number.isFinite(t)?Math.max(0,t):0,i=new Set((n?.protect??[]).map(pc)),a=await e.getAllIndexes(),o=0;for(let e of a)o+=e.byteSize;if(o<=r)return{evicted:0,freedBytes:0,remainingBytes:o};let s=a.filter(e=>!i.has(e.scopeKey)).sort((e,t)=>e.lastAccessedAt===t.lastAccessedAt?gc(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Ub(e,t.id),o-=t.byteSize,l+=t.byteSize,c+=1}return{evicted:c,freedBytes:l,remainingBytes:o}})},async clearAll(){await e.transaction(async e=>{await e.clearAll()})},async destroy(){await e.destroy()}}}function Yb(e={}){return Jb(e.driver??qb(e.databaseName),e)}function Xb(e={}){let t=e.isDesktopShell??ae,n=e.isDesktopLocalOriginActive??de,r=e.isVSCodeRuntime??Se,i=e.isCapacitorApp??Ue;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Zb=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Qb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Pb)(),t),i=()=>(n??=(e.createIndexedDBStore??Yb)(),n),a=()=>Xb(e)===`http`?r():i();return{readSession:e=>a().readSession(e),readMessage:(e,t)=>a().readMessage(e,t),upsertSettled:(e,t,n)=>a().upsertSettled(e,t,n),removeMessage:(e,t)=>a().removeMessage(e,t),clearSession:e=>a().clearSession(e),clearGeneration:e=>Zb([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function $b(e={}){await Qb(e).clearAll()}var ex=(e,t)=>e<t?-1:+(e>t);function tx(e){return e.filter(e=>!!e?.id).sort((e,t)=>ex(e.id,t.id))}async function nx(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await u_({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),i=r.records.map(e=>({info:vp(e.info),parts:tx(e.parts??[])}));if(!e.before&&!r.complete&&ab(i).length>0){let t=B.getScopedSdkClient(e.directory);i=(await ob({records:i,complete:r.complete,requestMessage:async n=>{let r=await rb({transport:u(),generation:f(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:tx(r.parts??[])}}})).records.map(e=>({info:e.info,parts:tx(e.parts??[])}))}return{records:i,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function rx(e){let t=e.client??R,n=Ug(),r=Jg({client:t,activeRegistry:n}),i=mb({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:u,getGeneration:f},fetcher:e=>nx({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:vh(),historyLimit:yh(),durableStore:e.durableStore??Qb()}),a=Dy({client:t,repository:i,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:r,probe:{getTransport:u,getGeneration:f},confirmSessionStatus:async(t,n)=>{let r=e.childStores.getChild(t.directory);if(!r)return;let i=r.getState().session_status?.[t.sessionID];!n.tailOpen&&i?.type!==`busy`&&i?.type!==`retry`||await Wy(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return Ou(i),Vu(a),{repository:i,destroy:()=>{a.cancelAll(`dispose`),Vu(null),i.destroy(),ku()}}}function ix(e){return Au().apply(G(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var ax=new Map;function ox(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function sx(e,t,n,r={}){let i=r.getTransportIdentity??u,a=r.getGeneration??f,o=i(),s=a(),c=ox(e,t,o,s),l=()=>i()===o&&a()===s,d=ax.get(c)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=d.catch(()=>void 0).then(()=>m);ax.set(c,h);try{if(await d.catch(()=>void 0),!l())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:o,generation:s,isCurrent:l})}finally{p(),ax.get(c)===h&&ax.delete(c)}}var cx=new Set,lx=new Set,ux=new Set,dx=new Set,fx={onDeleteRequest(e){return cx.add(e),()=>{cx.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||cx.forEach(t=>t(e))},onCreateRequest(e){return lx.add(e),()=>{lx.delete(e)}},requestCreate(e){let t=e??{};lx.forEach(e=>e(t))},onDirectoryRequest(e){return ux.add(e),()=>{ux.delete(e)}},requestDirectoryDialog(){ux.forEach(e=>e())},onGitRefreshHint(e){return dx.add(e),()=>{dx.delete(e)}},requestGitRefresh(e){e.directory.trim()&&dx.forEach(t=>t(e))}},px=50,mx=e=>{let t=Object.keys(e);if(t.length<=px)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-px).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},hx=De()(Ae(Oe((e,t)=>({sessions:{},setSessionTodos:(t,n)=>{t&&e(e=>{let r={...e.sessions};return!n||n.length===0?t in r?(delete r[t],{sessions:r}):e:(r[t]={todos:n,touchedAt:Date.now()},{sessions:mx(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:Ye(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),gx=new Set([`todowrite`,`todoread`]),_x=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),vx=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),yx=(e,t)=>{hx.getState().setSessionTodos(e,t)},bx=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},xx=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Sx=e=>{if(!e||typeof e!=`object`)return null;let t=e;if(typeof t.content!=`string`||typeof t.status!=`string`)return null;let n={content:t.content,status:t.status,priority:typeof t.priority==`string`?t.priority:`medium`};return typeof t.id==`string`&&t.id.length>0&&(n.id=t.id),n},Cx=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Sx(n);e&&t.push(e)}return t},wx=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Cx(t);if(t&&typeof t==`object`)return Cx(t.todos)}catch{}return[]},Tx=e=>{if(!gx.has(bx(e)))return[];let t=xx(e);if(t&&_x.has(t))return[];let n=e.state,r=Cx(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Cx(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Cx(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?wx(i):[]};function Ex(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.partsByMessageID[n];if(!(!r||r.length===0))for(let e=r.length-1;e>=0;--e){let t=Tx(r[e]);if(t.length>0)return t}}return[]}function Dx(e){if(!e.sessionID||e.isStale?.()||vx(e.store.getState().todo,e.sessionID))return!1;let t=Ex(e.transcript);return t.length===0||e.isStale?.()||vx(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Ox(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??U()?.getTranscript(G(e.directory,e.sessionID));return t?Dx({sessionID:e.sessionID,store:e.store,transcript:t,persist:yx,isStale:e.isStale}):!1}var kx=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>MC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>jC,SESSION_DELETE_UNDO_MS:()=>nC,abortBusySessionForMessageEdit:()=>KC,abortCurrentOperation:()=>LC,archiveSession:()=>fC,beginOptimisticSend:()=>SC,cancelScheduledSessionDeletes:()=>dC,classifySendFailure:()=>TS,combinedSendConfirmationOptions:()=>NC,commitMessageEdit:()=>JC,createSession:()=>XS,deleteSession:()=>lC,dirStoreForDirectory:()=>dS,dismissOpenQuestionsForSession:()=>VC,ensureSentUserMessagePresence:()=>IC,fetchMessagesForSession:()=>ew,fetchRecentSendConfirmationRecords:()=>kC,forkSession:()=>QC,getSendFailureKind:()=>CS,isQuestionRequestNotFoundError:()=>qS,isQuestionSubmissionClaimedError:()=>KS,materializeConfirmedSendRecords:()=>AC,mirrorSessionIntoLiveStores:()=>vS,optimisticInsertUserMessage:()=>DC,optimisticSend:()=>EC,patchSessionMetadata:()=>ZS,refetchSessionMessages:()=>XC,rejectQuestion:()=>BC,releaseUnconfirmedQueueSend:()=>cS,requestSessionSmartTitle:()=>hC,resolveForkMessageId:()=>Kx,respondToPermission:()=>RC,respondToQuestion:()=>zC,revertToMessage:()=>HC,rollbackOptimisticSend:()=>wC,scheduleSessionDeletes:()=>uC,setActionRefs:()=>oS,setOptimisticRefs:()=>sS,settleOptimisticSend:()=>TC,shareSession:()=>gC,shouldSuppressForkCopyEvent:()=>Jx,stageMessageEdit:()=>WC,trackForkCopySessionCreated:()=>Rx,unarchiveSession:()=>pC,unrevertSession:()=>ZC,unshareSession:()=>_C,updateSessionTitle:()=>mC,waitForConnectionOrThrow:()=>kS,waitForSessionIdleForMessageEdit:()=>qC}),Ax=2,jx=150,Mx=new Set([`patch`,`step-start`,`step-finish`]),Nx=3,Px=150,Fx=null,Ix=new Map,Lx=3e4;function Rx(e,t){let n=t?.id;!Fx||Fx.runtimeKey!==m()||Fx.directory!==e||!n||t?.title!==Fx.expectedTargetTitle||n===Fx.sourceSessionID||Fx.targetSessionID||(Fx.targetSessionID=n)}function zx(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function Bx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function Vx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Hx(e){return e?.type===`busy`||e?.type===`retry`}function Ux(e){for(let t=e.length-1;t>=0;--t)if(e[t]?.role===`user`)return t;return-1}function Wx(e){let t=e.at(-1);return t?.role===`assistant`&&t.time.completed==null}function Gx(e,t){return Hx(e)||e==null&&Wx(t)}function Kx(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!Gx(n,t))return;let r=Ux(t);if(r!==-1)return t[r+1]?.id}async function qx(e,t){let n=Kp(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return B.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function Jx(e,t,n){if(Fx&&Fx.runtimeKey===m()&&Fx.directory===e&&t&&t===Fx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${m()}:${e}:${t}`,i=Ix.get(r);return i?i.expiresAt<=Date.now()?(Ix.delete(r),!1):n<=i.messageID:!1}var Yx=null,Xx=null,Zx=()=>``,Qx=new Map,$x=null,eS=null,tS=null,nS=e=>new Promise(t=>setTimeout(t,e));function rS(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e.message;if(typeof t==`string`&&t.length>0)return t;let n=e.data;if(n&&typeof n==`object`){let e=n.message;if(typeof e==`string`&&e.length>0)return e}}try{return JSON.stringify(e)}catch{return String(e)}}function iS(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${rS(e.error)}`);throw n!==void 0&&(r.status=n),typeof e.error==`object`&&e.error!==null&&`code`in e.error&&typeof e.error.code==`string`&&(r.code=e.error.code),r}function aS(e,t){let n=iS(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function oS(e,t,n){if(Yx=e,Xx=t,Zx=n,Qx.size>0){let e=[...Qx.values()];Qx.clear(),queueMicrotask(()=>{for(let t of e)ew(t.sessionID,t.directory)})}}function sS(e,t,n){$x=e,eS=t,tS=n??null}function cS(e){let t=e.directory??null;eS?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function lS(){if(!Yx)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Yx}function uS(){if(!Xx)throw Error(`Child stores not initialized`);let e=Zx();if(!e)throw Error(`No current directory`);return Xx.ensureChild(e)}function dS(e,t){if(!Xx)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Xx.ensureChild(e,t)}function fS(e,t){let n=t??FS(e);return n?{store:dS(n),directory:n}:{store:uS(),directory:yS()}}function pS(e,t){let{store:n,directory:r}=fS(e,t??void 0),i=r??yS()??``;return{repository:U()??W(i,n),directory:i,store:n}}function mS(e,t){let{repository:n,directory:r,store:i}=pS(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(G(r,e))}}function hS(e,t){return nd(mS(e,t).data)}function gS(e,t){return mS(e,t).data.messageOrder.length}function _S(e,t){let n=Xx;if(!n)return!1;let r=t?[[t,n.getChild(t)]]:n.children;for(let[,t]of r){if(!t)continue;let n=t.getState().session,r=n.findIndex(t=>t.id===e.id);if(r===-1)continue;let i=[...n];return i[r]=gD(e,n[r]),t.setState({session:i}),!0}return!1}function vS(e,t){t&&_S(e,t)||_S(e)}function yS(){return Zx()||void 0}function bS(){let{hasEverConnected:e,lastDisconnectReason:t}=$f.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function xS(e){if(!e||typeof e!=`object`)return null;let t=e.status;if(typeof t==`number`)return t;let n=e.response;return typeof n?.status==`number`?n.status:null}var SS=class extends Error{kind;cause;messageID;constructor(e,t,n){super(t instanceof Error?t.message:String(t)),this.name=`SendDispatchError`,this.kind=e,this.cause=t,this.messageID=n}};function CS(e){return e instanceof SS?e.kind:null}function wS(e){let t=xS(e);if(t===503||t===504||t===408||e instanceof TypeError||e instanceof DOMException&&(e.name===`AbortError`||e.name===`TimeoutError`))return!0;let n=e instanceof Error?e.message.toLowerCase():typeof e==`string`?e.toLowerCase():``;return n.includes(`timeout`)||n.includes(`timed out`)||n.includes(`failed to fetch`)||n.includes(`networkerror`)||n.includes(`network error`)||n.includes(`gateway timeout`)||n.includes(`econnreset`)||n.includes(`socket hang up`)}function TS(e,t){return t?wS(e)||xS(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var ES=2e3,DS=5e3,OS=3e4;async function kS(){let e=eh();e&&$m(`send_stream_stale`);let t=Date.now()+(e?DS:ES);for(;Date.now()<t;){if($f.getState().isConnected&&!eh()||n()&&!eh())return;let e=t-Date.now();if(e<=0)break;if(await $f.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!eh())return;let r=Math.min(100,t-Date.now());r>0&&await new Promise(e=>setTimeout(e,r))}throw bS()}function AS(e){return new Promise((t,n)=>{let r=setTimeout(()=>{$m(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},OS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function jS(e){let t=X.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function MS(e){e&&X.getState().upsertSession(e)}function NS(e,t){let n=gp(t),r=[...e.getState().session],i=bs.search(r,n.id,e=>e.id);if(i.found){let t=gD(n,r[i.index]);return r[i.index]=t,e.setState({session:r}),t}return r.splice(i.index,0,n),e.setState({session:r}),n}async function PS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=jS(e);if(i)return NS(t,i);try{return NS(t,await B.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function FS(e){return IS(e)||$.getState().getDirectoryForSession(e)||yS()}function IS(e){let t=Xx;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=U()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function LS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):lS()}function RS(e){Br.getState().clearAttachedFiles();for(let t of e){let e=typeof t.url==`string`?t.url:``,n=typeof t.mime==`string`?t.mime:`application/octet-stream`,r=typeof t.filename==`string`?t.filename:`attachment`;e&&Br.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var zS=()=>new Map(Array.from(Hd(),([e,t])=>[e,t.title||e]));function BS(e){return!(e.type!==`file`||um(e))}function VS(e){return BS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function HS(e){return e.some(VS)}async function US(e){let t=[...e.parts];if(!HS(t))return t;let n=f(),r=e.directory??``;try{await Lu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||f()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=pS(e.sessionID,r);if(t=[...i.getParts(G(a,e.sessionID),e.messageID)],HS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function WS(e){if(HS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await Fm(e.parts,{sessionTitles:zS(),directory:e.directory}),n=Br.getState(),r=n.getDraft(e.key);return{payload:t,commit:await Bm({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function GS(e,t,n){let r=Xx;if(!r||!n)return null;for(let[t,i]of r.children){let r=i.getState(),a=e===`permission`?r.permission:r.question;for(let e of Object.values(a))if(e?.some(e=>e.id===n))return t}let i=$.getState().getDirectoryForSession(t);if(i)return i;for(let[e,n]of r.children){let r=n.getState();if(r.session.some(e=>e.id===t)||Object.prototype.hasOwnProperty.call(r.session_status??{},t)||Object.prototype.hasOwnProperty.call(r.permission??{},t)||Object.prototype.hasOwnProperty.call(r.question??{},t))return e}return null}function KS(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.status===409&&t.code===`question_submission_claimed`}function qS(e){if(e&&typeof e==`object`&&e.status===404)return!0;let t=``;return e instanceof Error?t=e.message:typeof e==`string`&&(t=e),/Question(?:\.)?NotFoundError|Question request not found/i.test(t)}function JS(e,t){let n=Xx;if(!n||!t)return!1;let r=!1;for(let[,i]of n.children){let n=i.getState().question??{},a=null,o=new Set([e,...Object.keys(n)].filter(Boolean));for(let e of o){let i=n[e];if(!i?.length)continue;let o=i.filter(e=>e.id!==t);o.length!==i.length&&(a??={...n},o.length>0?a[e]=o:delete a[e],r=!0)}a&&i.setState({question:a})}return r}function YS(e,t,n){let r=GS(e,t,n);return r?B.getScopedSdkClient(r):LS(t)}async function XS(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??yS()),a=i.directory??null;return a&&Pd(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),X.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function ZS(e,t,n){let r=t??FS(e),i=n(Kp(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);X.getState().upsertSession(a);let o=a.directory??r;return o&&Pd(a.id,o),a}async function QS(e,t){let n;try{n=await B.getSession(e,t??FS(e))}catch{return}if(!Xp(n))return;let r=Yp(n);if(r)try{await ZS(r,t??FS(r),t=>$p(t,e))}catch(e){let t=e instanceof Error?e.message:String(e);if(/not found/i.test(t))return;console.warn(`[session-actions] review metadata cleanup failed before delete`,e)}}function $S(e,t){if(!Xx)return[];let n=[],r=new Set,i=[];if(t){let e=Xx.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Xx.children.entries())r.has(e[0])||i.push(e);for(let[t,r]of i){let i=r.getState();i.session.some(t=>t.id===e)&&(n.push({directory:t,sessions:i.session}),r.setState({session:i.session.filter(t=>t.id!==e)}))}return n}function eC(e){if(Xx)for(let t of e){let e=Xx.children.get(t.directory);e&&e.setState({session:t.sessions})}}function tC(e){$.getState().setWorktreeMetadata(e,null)}var nC=1e4,rC=new Map,iC=0;function aC(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function oC(e){X.getState().clearSessionsPendingDeletion([e.sessionId]),eC(e.listSnapshots),MS(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function sC(e,t){let n=t??FS(e);X.getState().markSessionsPendingDeletion([e]);let r=$S(e,n),i=jS(e);X.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function cC(e,t){try{if(await QS(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return $S(e,t),X.getState().removeSessions([e]),tC(e),X.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&($S(e,t),X.getState().removeSessions([e]),tC(e),X.getState().clearSessionsPendingDeletion([e]),!0)}}async function lC(e,t){let n=sC(e);return await cC(e,n.directory)?!0:(oC(n),!1)}function uC(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>sC(e)),i=`session-delete-${Date.now()}-${iC+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=rC.get(i);if(!e)return;rC.delete(i);let t=[],n=[];for(let r of e.entries)await cC(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),oC(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return rC.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function dC(e){if(!e)return!1;let t=rC.get(e);if(!t)return!1;clearTimeout(t.timer),rC.delete(e);for(let e of[...t.entries].reverse())oC(e);return!0}async function fC(e){let t=FS(e),n=$S(e,t),r=jS(e),i=Date.now();X.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await QS(e,t);let n=await B.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return X.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),eC(n),MS(r),!1}}async function pC(e){let t=FS(e),n=jS(e),r=n?aC(n):null;if(r&&(X.getState().upsertSession(r),t&&Xx)){let e=Xx.children.get(t);e&&NS(e,r)}try{let n=await B.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=aC(n);if(X.getState().upsertSession(r),t&&Xx){let e=Xx.children.get(t);e?NS(e,r):vS(r,t)}else vS(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(X.getState().upsertSession(n),n.time?.archived&&$S(e,t)),!1}}async function mC(e,t){let n=FS(e),r=jS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?ap(r):0,c=await B.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);X.getState().upsertSession(c),vS(c,n)}async function hC(e){let t=FS(e),n=jS(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await B.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);X.getState().upsertSession(s),vS(s,t)}async function gC(e){let t=FS(e),n=gp(aS(await lS().session.share({sessionID:e,directory:t}),`session.share`));return X.getState().upsertSession(n),_S(n,t),n}async function _C(e){let t=FS(e),n=gp(aS(await lS().session.unshare({sessionID:e,directory:t}),`session.unshare`));return X.getState().upsertSession(n),_S(n,t),n}function vC(e){let t=Xx,n=e??Zx();if(!t||!n)return{store:e?dS(e):uS(),isCurrent:()=>!0};let r=t,i=r.captureChild?.(n);if(i&&r.isCurrentChildCapture)return{store:i.store,isCurrent:()=>r.isCurrentChildCapture?.(i)===!0};let a=t.ensureChild(n);return{store:a,isCurrent:()=>t.getChild(n)===a}}function yC(){return{identity:u(),generation:f()}}function bC(e,t){return e.isCurrent()&&u()===t.identity&&f()===t.generation}function xC(e,t){if(!bC(e,t))throw Error(`Send target changed before transport dispatch`)}function SC(e){if(!$x||!eS)throw new SS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??yS()??null,n=vC(t),r=yC();xC(n,r),e.beforeOptimisticInsert?.(),xC(n,r);let i=e.messageID??he(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),gm(e.sessionId),DC({sessionId:e.sessionId,messageID:i,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.parts}),e.onOptimisticInsert?.(),{messageID:i,sessionId:e.sessionId,directory:t,capture:n,transport:r}}catch(e){throw e instanceof SS?e:new SS(CS(e)??TS(e,!1),e)}}function CC(e){if(!bC(e.capture,e.transport)||!eS)return;eS({sessionID:e.sessionId,directory:e.directory,messageID:e.messageID});let t=e.capture.store.getState(),n=Date.now();e.capture.store.setState({session_status:{...t.session_status,[e.sessionId]:{type:`idle`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:n}})}function wC(e){CC(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function TC(e){if(!$x||!eS)throw new SS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));let{ticket:t}=e,{capture:n,transport:r,messageID:i,sessionId:a,directory:o}=t,s=!1;try{if(await kS(),xC(n,r),s=!0,await AS(e.send(i)),!bC(n,r))throw new SS(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=CS(c)??TS(c,s),u=c instanceof SS?c:new SS(l,c,i);if(!bC(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await kC(a,i,o):null;if(d&&bC(n,r)){AC(n.store,a,i,d,{directory:o??void 0}),tS?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||CC(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function EC(e){await TC({ticket:e.ticket??SC({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:e.directory,files:e.files,parts:e.parts,messageID:e.messageID,onOptimisticInsert:e.onOptimisticInsert,onMessageID:e.onMessageID,beforeOptimisticInsert:e.beforeOptimisticInsert}),preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:e.onSendConfirmed,send:e.send})}function DC(e){if(!$x)return!1;let t=e.directory??yS(),n=t?dS(t):uS(),r=t??yS()??``;if(PC(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let i=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:he(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:he(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)i.push({id:he(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let a=Date.now(),o={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:a,completed:0}},s=cy(()=>mS(e.sessionId,t).data);$x({sessionID:e.sessionId,directory:t,message:o,parts:i});let c=cy(()=>mS(e.sessionId,t).data);try{s&&c&&ly({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:u(),generation:f(),before:s,after:c})}catch{}let l=n.getState();return n.setState({session_status:{...l.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...l.session_status_observed_at,[e.sessionId]:a}}),!0}function OC(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function kC(e,t,n,r){let i=r?.signal||r?.timeoutMs!==void 0?new AbortController:null,a=()=>i?.abort();r?.signal?.addEventListener(`abort`,a,{once:!0}),r?.signal?.aborted&&i?.abort();let o=r?.timeoutMs===void 0?void 0:setTimeout(()=>i?.abort(),Math.max(0,r.timeoutMs)),s=r?.attempts??Ax,c=r?.retryDelayMs??jx;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!OC(r?.isCurrent)||a>0&&(await nS(c),i?.signal.aborted||!OC(r?.isCurrent)))return null;try{let a=await lS().session.messages({sessionID:e,directory:n??void 0,limit:Sh(),...i?{signal:i.signal}:{}});if(!OC(r?.isCurrent))return null;let o=(iS(a,`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.some(e=>e.info.id===t))return o}catch{}}return null}finally{o&&clearTimeout(o),r?.signal?.removeEventListener(`abort`,a)}}function AC(e,t,n,r,i){if(!r.length)return;let a=i?.directory??FS(t)??Zx(),o=G(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:vp(e.info),parts:e.parts??[]})),skipPartTypes:Mx,merge:i?.gapFillOnly===!0?sc:lc({purpose:`recovery`})};Mu(o,s)||W(a,e).apply(o,s)}var jC=2e3,MC={attempts:12,retryDelayMs:500},NC={presenceGraceMs:jC,recovery:{...MC}};function PC(e,t,n,r){let i=r??FS(t)??Zx()??``,a=U()??W(i,e),o=G(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function FC(e,t,n,r){let i=r?.directory??FS(t)??Zx()??``;if(PC(e,t,n,i))return Promise.resolve(!0);if(!OC(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=U()??W(i,e),f=G(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!OC(r?.isCurrent)){l(!1);return}PC(e,t,n,i)&&l(!0)}),PC(e,t,n,i)&&l(!0)})}async function IC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await FC(t,n,r,{timeoutMs:e.graceMs??NC.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!OC(a))return`cancelled`;let o=await kC(n,r,i,{...NC.recovery,isCurrent:a});return o?OC(a)?(AC(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:OC(a)?`missing`:`cancelled`}async function LC(e){let{store:t,directory:n}=fS(e),r=n?{state:`bound`,transportIdentity:u(),directory:n,sessionID:e}:null,i=r?$.getState().beginQueueAbortBlock(r):null;try{if(aS(await lS().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&i&&$.getState().clearQueueAbortBlock(r,i),nt(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>TH);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function RC(e,t,n){await kS();let r=GS(`permission`,e,t)||FS(e)||yS();if(aS(await YS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function zC(e,t,n,r){await kS();let i=r||GS(`question`,e,t)||FS(e)||yS();try{let r=n.length===0?[]:Array.isArray(n[0])?n:[n];if(aS(await YS(`question`,e,t).question.reply({requestID:t,answers:r,...i?{directory:i}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw qS(n)&&JS(e,t),n}}async function BC(e,t,n){await kS();let r=n||GS(`question`,e,t)||FS(e)||yS();try{if(aS(await YS(`question`,e,t).question.reject({requestID:t,...r?{directory:r}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw qS(n)&&JS(e,t),n}}async function VC(e){if(!e)return!1;let t=Xx;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=am(t.session,e);if(i.size===0)continue;let a=t.question??{};for(let e of i){let t=a[e];if(t)for(let r of t)n.push({sessionId:e,requestId:r.id})}}if(n.length===0)return!1;for(let{sessionId:e,requestId:t}of n)JS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await BC(e,t)}catch(e){if(qS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function HC(e,t,n){let r=typeof n==`string`?n:n?.directory,i=typeof n==`string`?void 0:n?.draftKey,a=typeof n==`string`||n?.restorePrimaryInput!==!1,o=i!==null&&(i!==void 0||a);return sx(e,r??(()=>{try{return fS(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:a,directory:s}=fS(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let c=a.getState().session_status[e];if(c&&c.type!==`idle`){try{await lS().session.abort({sessionID:e,directory:s})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let l=hS(e,s).find(e=>e.id===t),d=hS(e,s).find(e=>e.id===t)??l;if(!d||d.role!==`user`)throw Error(`The selected user message is unavailable`);let{repository:f,directory:p}=pS(e,s),m=[...f.getParts(G(p,e),t)],h=i===void 0?o?ge({transportIdentity:u()},e):null:i,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await US({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await Fm(m,{sessionTitles:zS(),directory:s})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=a.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),C={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},C.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(a.setState(C),h){let t=Br.getState(),r=await Bm({key:h,expectedRevision:t.getDraft(h)?.revision??`absent`,payload:g,runtime:t.captureDraftRuntime()});if(!n()){let t=[...a.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),a.setState({session:t}),r.status===`committed`&&r.current&&r.previous&&r.result?.record?.revision!==void 0&&await Hm({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...a.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),a.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await B.revertSession(e,t,void 0,s);if(!n()){let t=[...a.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),a.setState({session:t}),h&&v&&_!==void 0&&await Hm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}let i=[...a.getState().session],o=i.findIndex(t=>t.id===e);return o>=0&&(i[o]=r,a.setState({session:i})),s&&fx.requestGitRefresh({directory:s}),g}catch(t){let r=[...a.getState().session],i=r.findIndex(t=>t.id===e);throw i>=0&&(r[i]={...r[i],revert:b}),n()?(a.setState({session:r}),h&&v&&_!==void 0&&await Hm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(a.setState({session:r}),h&&v&&_!==void 0&&await Hm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function UC(e,t,n,r){let i=r??FS(t)??Zx(),a=G(i,t),o=cy(()=>mS(t,i).data),s=[...ju(t)];s.some(e=>e.directory===i&&e.sessionID===t)||s.push(a);let c=!1;for(let e of s)Mu(e,{type:`remove-message`,messageID:n})!=null&&(c=!0);c||W(i,e).apply(a,{type:`remove-message`,messageID:n});let l=cy(()=>mS(t,i).data);try{o&&l&&ly({trigger:`user-delete`,sessionID:t,directory:i,transport:u(),generation:f(),before:o,after:l})}catch{}}async function WC(e,t,n,r){let i=n?.info,a=n?.parts,o=r?.directory,s;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);s=fS(e,o).directory}else{s=fS(e,o).directory;let{data:n}=mS(e,s),r=nd(n),c=r.findIndex(e=>e.id===t),l=c>=0?r[c]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);i=l,a=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!i||n&&a===void 0)throw Error(`The selected user message is unavailable`);let c=r?.draftKey??ge({transportIdentity:u()},e),{commit:l}=await WS({key:c,parts:await US({directory:s,sessionID:e,messageID:t,parts:a??[]}),directory:s});if(l.status!==`committed`||!l.current)throw Error(`composer-restoration-commit-${l.status}`);let d=l.result?.record?.revision,f=l.previous;return d===void 0||!f?{rollback:async()=>({status:`skipped`})}:{rollback:async()=>({status:(await Hm({key:c,restoredRevision:d,previous:f})).status})}}function GC(e,t,n,r){let i=t.findIndex(t=>t.id===e),a=i>=0?t[i]:void 0;if(!a||a.role!==`user`||!n.has(e))throw Error(`The selected user message is unavailable`);let o=r?.preserveMessageId,s=o?t.findIndex(e=>e.id===o):-1,c=s>i?s:t.length;return t.slice(i,c).filter(e=>!(!n.has(e.id)||o&&e.id===o))}async function KC(e,t){let n=t?.directory,{store:r,directory:i}=fS(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await lS().session.abort({sessionID:e,directory:i})}catch{}}async function qC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=fS(e,n),o=Date.now()+r;for(;Date.now()<o;){let t=a.getState().session_status[e];if(!t||t.type===`idle`)return;await new Promise(e=>setTimeout(e,i))}let s=a.getState().session_status[e];if(!(!s||s.type===`idle`))throw Error(`Session is still busy after waiting to edit: ${e}`)}async function JC(e,t,n){let r=n?.directory,i=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:a,directory:o}=fS(e,r),s=cy(()=>mS(e,r).data);try{await KC(e,{directory:r}),await qC(e,{directory:r});let n=new Set((await YC(e,r)).map(e=>e.id)),s=GC(t,hS(e,r),n,{preserveMessageId:i});for(let t of[...s].reverse())await B.deleteSessionMessage(e,t.id,o),UC(a,e,t.id,o)}finally{try{let t=cy(()=>mS(e,r).data);s&&t&&ly({trigger:`user-edit`,sessionID:e,directory:o,transport:u(),generation:f(),before:s,after:t})}catch{}}}async function YC(e,t){let{directory:n}=fS(e,t);return(iS(await lS().session.messages({sessionID:e,directory:n,limit:xh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>vp(e.info))}async function XC(e,t){let{store:n,directory:r}=fS(e,t),i=cy(()=>mS(e,t).data),a=(iS(await lS().session.messages({sessionID:e,directory:r,limit:xh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(a.length===0){try{let n=cy(()=>mS(e,t).data);i&&n&&ly({trigger:`materialize`,sessionID:e,directory:r,transport:u(),generation:f(),purpose:`refetch`,before:i,after:n})}catch{}return[]}let o=a.map(e=>({info:vp(e.info),parts:e.parts??[]})),s=G(r??Zx(),e);Mu(s,{type:`materialize-snapshots`,records:o,skipPartTypes:Mx})||W(r??Zx(),n).apply(s,{type:`materialize-snapshots`,records:o,skipPartTypes:Mx});try{let n=cy(()=>mS(e,t).data);i&&n&&ly({trigger:`materialize`,sessionID:e,directory:r,transport:u(),generation:f(),purpose:`refetch`,before:i,after:n})}catch{}return o.map(e=>e.info)}async function ZC(e,t){return sx(e,t??(()=>{try{return fS(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=fS(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=gS(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await lS().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await lS().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=aS(c,`session.unrevert`),u=[...r.getState().session],d=u.findIndex(t=>t.id===e);d>=0&&(u[d]=l,r.setState({session:u}));for(let r=0;r<Nx;r+=1){if(r>0&&(await nS(Px),!n())||(await XC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(gS(e,i)>o)return}if(gS(e,i)<=o){let n=i??Zx(),a=U()??W(n,r),o=G(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await XC(e,t)}})}async function QC(e,t,n,r){let i=m(),{store:a,directory:o}=fS(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await PS(e,a,o);Pd(e,o);let c=a.getState(),l=c.session_status[e],u=hS(e,o);l?.type,u.length;let d=Kx(n,u,l);if(!n&&Gx(l,u)&&Ux(u)===-1&&(await XC(e),c=a.getState(),l=c.session_status[e],u=hS(e,o),d=Kx(void 0,u,l)),!n&&Gx(l,u)&&Ux(u)===-1)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:c.session_status[e]?.type??`unknown`,messageCount:gS(e,o)}),Error(`Fork source user message is unavailable`);c.session_status[e]?.type;let{repository:f,data:p}=mS(e,o),h=(n?p.messagesByID[n]??u.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...f.getParts(G(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!um(e)).map(e=>e.text||e.content||``).join(`
|
|
402
|
+
`).trim();let v=g.filter(e=>e.type===`file`&&!um(e));Fx={operationId:t,runtimeKey:i,directory:o,sourceSessionID:e,expectedTargetTitle:zx(s.title)},await Bx(t,`copying`);let y;try{if(y=await B.forkSession(e,d,o),y.id,m()!==i)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),Fx?.operationId===t&&(Fx=null),!1;let n=[...a.getState().session],r=bs.search(n,y.id,e=>e.id);r.found||(n.splice(r.index,0,y),a.setState({session:n})),Vx(t,y.id);let s=$.getState().currentSessionId;(s===e||s===y.id)&&$.getState().setCurrentSession(y.id,o,{skipMessageFetch:!0}),await Bx(t,`opening`);try{y=await qx(y,o)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw Fx?.operationId===t&&(Fx=null),e}try{let e=G(o,y.id),r=U();r&&typeof r.destructiveReset==`function`?await r.destructiveReset(e):Mu(e,{type:`reset`}),await Bx(t,`loading`),y.id,$.getState().currentSessionId,y.id;let i=U()??W(o,a),s=G(o,y.id),c=i.getRequestState?.(s);(!(i.hasSession?.(s)??!1)||c?.status===`error`)&&await ew(y.id,o);let l=hS(y.id,o).at(-1)?.id;l&&Ix.set(`${m()}:${o}:${y.id}`,{messageID:l,expiresAt:Date.now()+Lx});let u=$.getState().currentSessionId===y.id;u&&h&&_&&Br.setState({pendingInputText:_,pendingInputMode:`replace`}),u&&h&&n&&RS(v)}finally{Fx?.operationId===t&&(Fx=null)}return y.id,!0}var $C=new Map;async function ew(e,t){let n=t??yS();if(!n)return;let r=m(),i=bh(),a=`${r}:${n}:${e}:${i}`;if(!Yx||!Xx){Qx.set(a,{sessionID:e,directory:n});return}let o=$C.get(a);if(o)return o;let s=tw(e,n,r,i).finally(()=>{$C.get(a)===s&&$C.delete(a)});return $C.set(a,s),s}async function tw(e,t,n,r){lS();let i=dS(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=U()??W(t,i),l=G(t,e),u=c.getTranscript(l),d=c.getPagination(l),f=c.getRequestState?.(l),p=e=>e.role===`user`||e.clientRole===`user`,m=u.messageOrder.map(e=>u.messagesByID[e]).filter(e=>!!e),h=m.some(p),g=d.boundary,_=g.kind===`has-more`||g.kind===`exhausted`,v=(c.hasSession?.(l)??m.length>0)&&(h||g.kind===`exhausted`)&&_&&f?.status!==`error`,y=()=>$.getState().currentSessionId!==e;if(v){if(ah(t,e)){Ox({directory:t,sessionID:e,store:i,transcript:u});return}if(U()){try{await Pu(t,e)}catch{return}if(y())return;Ox({directory:t,sessionID:e,store:i,isStale:y}),await Gy({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}Ox({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await nx({directory:t,sessionID:e,limit:r,signal:AbortSignal.timeout(3e4),purpose:`initial`});if(y())return;c.apply(l,{type:`http-page`,purpose:`initial`,page:n,skipPartTypes:Mx}),b=n.records.length,oh(t,e)}catch{return}y()||(Ox({directory:t,sessionID:e,store:i,isStale:y}),await Gy({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var nw=18e4,rw=400,iw=300,aw=15,ow=`FINAL_REVIEW_STATUS: no_remaining_findings`,sw=ow.toLowerCase(),cw=new Set,lw=new Set,uw=e=>{let t=e.finish;if(typeof t==`string`&&t.length>0)return!0;let n=e.time?.completed;return typeof n==`number`&&n>0},dw=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},fw=e=>{let t=e.role;return typeof t==`string`?t:``},pw=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},mw=(e,t)=>Gd(e.id,t).some(e=>{let t=e.type;if(t===`compaction`)return!0;if(t!==`text`)return!1;let n=e.text;return typeof n==`string`&&n.trim()===`/compact`}),hw=(e,t,n,r=0,i)=>{let a=Wd(e,t),o=new Set;for(let e of a)mw(e,t)&&o.add(e.id);for(let e=a.length-1;e>=0;--e){let s=a[e];if(s.id===n)return null;if(fw(s)!==`assistant`||!uw(s)||dw(s)<r-1e3)continue;let c=pw(s);if(!Cw(s,i)||c&&o.has(c))continue;let l=Wp(Gd(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},gw=(e,t)=>Kd(e,t)?.type===`idle`,_w=e=>e===m(),vw=e=>{em.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},yw=e=>{if(e&&!_w(e))throw Error(`Auto-review stopped because the runtime changed.`)},bw=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),xw=e=>e.trim().split(`
|
|
403
|
+
`).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===sw,Sw=e=>{let t=e.trimEnd().split(`
|
|
404
|
+
`);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===sw&&t.pop(),t.join(`
|
|
405
|
+
`).trim()},Cw=(e,t)=>!t||pw(e)===t,ww=(e,t)=>[e.runtimeKey,e.originalSessionID,e.phase,e.expectedAssistantParentID??``,t].join(`:`),Tw=(e,t)=>{let n=ww(e,t);return lw.has(n)?null:(lw.add(n),n)},Ew=e=>{lw.delete(e)},Dw=()=>[{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${ow}\nIf you found issues that require changes, do not include that final status line.`}],Ow=async e=>{for(;;){let t=em.getState().runsByOriginalSessionID[e];if(!t||t.status!==`running`)return;if(!_w(t.runtimeKey)){vw(t);return}let n=t.phase===`waiting_for_reviewer`?t.reviewSessionID:t.originalSessionID;if(!gw(n,t.directory)){await new Promise(e=>setTimeout(e,iw));continue}let r=hw(n,t.directory,t.lastForwardedMessageID,t.waitAfterCreatedAt,t.expectedAssistantParentID);if(!r){await new Promise(e=>setTimeout(e,iw));continue}if(t.phase===`waiting_for_reviewer`){let e=Tw(t,r.id);if(!e){await new Promise(e=>setTimeout(e,iw));continue}if(!_w(t.runtimeKey)){Ew(e),vw(t);return}try{let e=Date.now(),n=xw(r.text),i=n?Sw(r.text):r.text,a=await Bw(t.reviewSessionID,t.directory,i,t.runtimeKey);if(n){em.getState().completeRun(t.originalSessionID);return}em.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_implementer`,lastForwardedMessageID:r.id,expectedAssistantParentID:a,waitAfterCreatedAt:e}))}finally{Ew(e)}}else{if(t.iteration>=t.maxIterations){em.getState().stopRun(t.originalSessionID);return}let e=Tw(t,r.id);if(!e){await new Promise(e=>setTimeout(e,iw));continue}if(!_w(t.runtimeKey)){Ew(e),vw(t);return}try{let e=Date.now(),n=await Vw(t.originalSessionID,t.directory,r.text,!0,t.runtimeKey);em.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_reviewer`,iteration:t.iteration+1,lastForwardedMessageID:r.id,expectedAssistantParentID:n,waitAfterCreatedAt:e}))}finally{Ew(e)}}}},kw=e=>{em.getState().upsertRun(e),Aw(e.originalSessionID)},Aw=e=>{let t=em.getState().runsByOriginalSessionID[e];!t||t.status!==`running`||!_w(t.runtimeKey)||cw.has(e)||(cw.add(e),Ow(t.originalSessionID).catch(e=>{console.error(`[review-flow] auto-review loop failed`,e),em.getState().updateRun(t.originalSessionID,t=>({...t,status:bw(e)?`stopped`:`error`,error:e instanceof Error?e.message:String(e)}))}).finally(()=>{cw.delete(e)}))},jw=async(e,t,n)=>{let r=Date.now()+nw;for(;Date.now()<r;){let r=Wd(e,t).filter(e=>fw(e)===`assistant`).filter(e=>dw(e)>=n-1e3).filter(uw).sort((e,t)=>dw(t)-dw(e));for(let e of r){let n=Wp(Gd(e.id,t)).trim();if(n)return n}await new Promise(e=>setTimeout(e,rw))}throw Error(`Timed out waiting for handoff response`)},Mw=e=>{let t=as.getState(),n=$f.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}},Nw=async(e,t,n,r,i,a)=>{yw(a);let o=r??Mw(e);if(!o)throw Error(`Select a model before sending review flow messages`);let s=as.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)),gm(e);let c=null;if(await EC({sessionId:e,content:n,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,onMessageID:e=>{c=e},beforeOptimisticInsert:()=>yw(a),onOptimisticInsert:()=>Pw(e),send:r=>(yw(a),B.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},Pw=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:chat-force-scroll-bottom`,{detail:{sessionId:e}}))},Fw=(e,t)=>{Je.getState().openContextPanelTab(e,{mode:`chat`,dedupeKey:`session:${t.id}`,label:t.title??null,sessionTitleFallback:t.title??null})},Iw=async(e,t)=>{try{return await B.getSession(e,t)}catch{return null}},Lw=e=>`Review: ${e.title?.trim()||e.id}`,Rw=async(e,t,n)=>{yw(n);let r=await B.getSession(e,t);yw(n);let i=Jp(r);if(i){let r=await Iw(i,t);if(yw(n),r&&Xp(r))return r;await ZS(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})}yw(n);let a=await B.createSession({title:Lw(r),metadata:Qp({},e)},t);yw(n),Pd(a.id,t);try{yw(n),await ZS(e,t,e=>Zp(e,a.id))}catch(e){throw yw(n),await B.deleteSession(a.id,t).catch(e=>{console.warn(`[review-flow] failed to delete unlinked review session after link failure`,e)}),e}return X.getState().upsertSession(a),a},zw=async e=>{await kS();let t=e.autoReview?m():void 0,n;if(e.generateHandoff??!0){let n=await Bp(`session.reviewHandoff.visible`),r=await Bp(`session.reviewHandoff.instructions`),i=Date.now();await Nw(e.originalSessionID,e.directory,n,null,[{text:r,synthetic:!0}],t);let a=async()=>{let n=await jw(e.originalSessionID,e.directory,i);yw(t);let r=await Bp(`session.reviewSession.visible`,{handoff:n}),a=await Rw(e.originalSessionID,e.directory,t),o=t??m(),s=Date.now(),c=await Nw(a.id,e.directory,r,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?Dw():void 0,e.autoReview?o:void 0);e.autoReview&&kw({originalSessionID:e.originalSessionID,reviewSessionID:a.id,directory:e.directory,runtimeKey:o,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:aw,expectedAssistantParentID:c,waitAfterCreatedAt:s}),e.autoReview||Fw(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 Bp(`session.reviewSessionWithoutHandoff.visible`);let r=await Rw(e.originalSessionID,e.directory,t),i=t??m(),a=Date.now(),o=await Nw(r.id,e.directory,n,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?Dw():void 0,e.autoReview?i:void 0);e.autoReview&&kw({originalSessionID:e.originalSessionID,reviewSessionID:r.id,directory:e.directory,runtimeKey:i,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:aw,expectedAssistantParentID:o,waitAfterCreatedAt:a}),e.autoReview||Fw(e.directory,r)},Bw=async(e,t,n,r)=>{yw(r);let i=Yp(await B.getSession(e,t));if(!i)throw Error(`Original session is missing`);let a=await Bp(`session.reviewFeedbackToImplementer.visible`,{review_feedback:n});return yw(r),Nw(i,t,a,void 0,void 0,r)},Vw=async(e,t,n,r=!1,i)=>{yw(i);let a=Jp(await B.getSession(e,t));if(!a)throw Error(`Review session is missing`);let o;try{o=await B.getSession(a,t)}catch(n){throw yw(i),await ZS(e,t,e=>$p(e,a)),n}let s=await Bp(`session.implementationResponseToReviewer.visible`,{implementation_response:n});yw(i);let c=await Nw(a,t,s,void 0,r?Dw():void 0,i);return r||Fw(t,o),c},Hw=e=>Xp(e)?`review-to-original`:Jp(e)?`original-to-review`:null,Uw=[0,250,500,1e3,2e3,2e3,2e3,2e3],Ww=5e3,Gw=(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??Ww,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??Uw,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:()=>B.checkHealth(),wait:e=>new Promise(t=>setTimeout(t,e))}),Kw=()=>Gw.waitUntilReady(m()),qw=e=>{Gw.reset(e)},Jw=100,Yw=1500,Xw=async e=>{if(!e.ok)throw Error(`session index request failed (${e.status})`)},Zw=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}:{}}},Qw,$w=async(e,t)=>{if(typeof window>`u`)return null;let n=e.trim();if(!n)return null;try{let e=await _(`/api/openchamber/session-index/session/${encodeURIComponent(n)}`,{signal:t?.signal});if(e.status===404||e.status===501)return null;await Xw(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}},eT=async e=>{if(typeof window>`u`)return null;if(Qw)return Qw;let t=(async()=>{let t=await _(`/api/openchamber/session-index`,{signal:e?.signal});return t.status===501?null:(await Xw(t),Zw(await t.json()))})().finally(()=>{Qw===t&&(Qw=void 0)});return Qw=t,t},tT=async e=>{if(typeof window>`u`)return null;let t=await _(`/api/openchamber/session-index/sync`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:e})});return t.status===501?null:(await Xw(t),t.json())},nT=(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:Yw,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=an(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})}),rT=async(e,t)=>{let n=e.trim();if(!n)throw Error(`session index pin requires a session id`);let r=await _(`/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 Xw(r)},iT=async(e,t)=>{let n=e.trim();if(!n)throw Error(`session index unpin requires a session id`);let r=await _(`/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 Xw(r)},aT=async e=>{if(typeof window>`u`)return;let t=await _(`/api/openchamber/session-index/directory`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});t.status!==501&&await Xw(t)},oT=async e=>{if(typeof window>`u`||e.length===0)return;let t=await _(`/api/openchamber/session-index/snapshot`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:e})});t.status!==501&&await Xw(t)},sT=1,cT=`oc.sessionIndexStartupCache`,lT=1e6,uT=e=>!!e&&typeof e==`object`&&!Array.isArray(e),dT=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),fT=e=>!(!uT(e)||typeof e.active!=`boolean`||typeof e.completed!=`number`||!Number.isFinite(e.completed)||typeof e.total!=`number`||!Number.isFinite(e.total)||!dT(e.pendingDirectories)||!dT(e.completedDirectories)||!dT(e.failedDirectories)||e.enriching!==void 0&&typeof e.enriching!=`boolean`),pT=e=>uT(e)&&typeof e.id==`string`&&e.id.length>0&&typeof e.title==`string`&&typeof e.directory==`string`&&e.directory.length>0&&uT(e.time)&&typeof e.time.created==`number`&&Number.isFinite(e.time.created)&&typeof e.time.updated==`number`&&Number.isFinite(e.time.updated),mT=e=>!uT(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(pT),hT=e=>!uT(e)||typeof e.revision!=`number`||!Number.isFinite(e.revision)||!fT(e.sync)||!Array.isArray(e.directories)||e.pinnedSessionIds!==void 0&&!dT(e.pinnedSessionIds)?!1:e.directories.every(mT),gT=e=>uT(e)&&e.version===sT&&uT(e.entries),_T=e=>{if(!e)return null;try{let t=JSON.parse(e);return gT(t)?{version:sT,entries:t.entries}:null}catch{return null}},vT=(e,t)=>{try{let n=JSON.stringify(t);if(n.length>lT)return;e.setItem(cT,n)}catch{}},yT=(e,t)=>{if(!e)return null;let n;try{n=t.getItem(cT)}catch{return null}let r=_T(n);if(!r)return null;let i=r.entries[e];return hT(i)?i:null},bT=(e,t,n)=>{if(!e||!hT(t))return;let r=null;try{r=n.getItem(cT)}catch{return}let i={..._T(r)?.entries??{},[e]:t},a=Object.keys(i).slice(-8);vT(n,{version:sT,entries:Object.fromEntries(a.map(e=>[e,i[e]]))})},xT=(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}}},ST=(e,t)=>!e||t,CT=(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}},wT=new Set,TT=()=>wT.size>0,ET=e=>{for(let t of wT)t(e)},DT=e=>(wT.add(e),()=>wT.delete(e)),OT=3e4,kT=3e3,AT=1e3,jT=0,MT=0,NT=0,PT=null;function FT(e){try{if(e===`medium`){MT+=1;return}if(e===`heavy`){NT+=1;return}jT+=1}catch{}}function IT(){return{light:jT,medium:MT,heavy:NT}}function LT(){jT=0,MT=0,NT=0}function RT(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 zT(){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=RT(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 BT(){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 VT(){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 HT(e){let t=BT(),n=VT();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 UT(e={}){if(PT)return PT;let t=e.isEnabled??iy,n=e.record??sy,r=e.now??(()=>Date.now()),i=e.getPlatform??(()=>Ke()),a=zT(),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()+kT,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})},kT)},g=()=>{p(()=>{let e=a.snapshotWindow(),o=IT();t()&&n(HT({at:r(),snapshot:e,haptics:o,platform:i()})),LT(),a.reset()})},_=()=>{s=setTimeout(()=>{o||(g(),h(),_())},OT)},v=()=>{let e=r()+AT;c=setTimeout(()=>{o||(p(()=>{let t=Math.max(0,r()-e);a.addLagMs(t)}),v())},AT)};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}PT===y&&(PT=null)}};return PT=y,y}var WT=typeof window<`u`?K.useLayoutEffect:K.useEffect,GT=et(`OpenChamberHaptics`),KT=null,qT=()=>(KT??=tt.isPluginAvailable(`OpenChamberHaptics`),KT);function JT(e){switch(e){case`medium`:return`impactMedium`;case`heavy`:return`impactHeavy`;default:return`impactLight`}}function YT(){return typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0}function XT(){if(!YT())return!1;let e=window.Capacitor?.getPlatform?.();return e===`ios`||e===`android`}function ZT(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 QT=20,$T=750;function eE(e,t){return t-e>=QT}function tE(e,t){return t-e>=$T}function nE(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 rE=-1/0;function iE(e=`light`,t){if(!XT()||!qT()||document.visibilityState!==`visible`||!document.documentElement.classList.contains(`oc-native-app-active`))return!1;let n=Date.now();return!t?.bypassCadence&&!eE(rE,n)?!1:(rE=n,GT[JT(e)]().catch(()=>void 0),FT(e),!0)}var aE=`button, [role="button"], [role="menuitem"]`;function oE(){let e=(0,H.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],K.useEffect(sE,t)}function sE(){if(!XT())return;let e=cE;return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}function cE(e){if(!e.isTrusted||!(e.target instanceof Element))return;let t=e.target.closest(aE);t&&(t.matches(`:disabled, [aria-disabled="true"], [data-mobile-press-feedback="none"]`)||iE(`light`))}function lE(){let e=(0,H.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],WT(uE,t)}function uE(){if(!XT())return;let e=CT(),t=Ke()===`android`,n=-1/0;return DT(r=>{if(!e(r))return;let i=$.getState().currentSessionId,a=document.documentElement.classList.contains(`oc-native-app-active`);if(ZT({eventSessionId:r.sessionID,currentSessionId:i,isForeground:a,isVisible:document.visibilityState===`visible`}).shouldTrigger){if(t&&r.kind===`text`){let e=Date.now();if(!tE(n,e))return;iE()&&(n=e);return}iE()}})}var dE=async e=>{let t=await mt(e);t.ok||console.error(`Failed to copy to clipboard:`,t.error)},fE=e=>e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(fE).join(` `).trim():(0,K.isValidElement)(e)?fE(e.props?.children):``,pE=e=>typeof e==`function`?e():e,mE=(e,t)=>{let n=fE(pE(t?.description));return n.length>0?n:fE(e)},hE=Object.assign((...e)=>(iE(),dt(...e)),{...dt,success:(...e)=>{let[t,n]=e;return iE(),dt.success(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},info:(...e)=>{let[t,n]=e;return iE(),dt.info(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},error:(...e)=>{let[t,n]=e;return iE(),dt.error(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>dE(mE(t,n))}})},warning:(...e)=>{let[t,n]=e;return iE(),dt.warning(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>dE(mE(t,n))}})},loading:(...e)=>(iE(),dt.loading(...e)),custom:(...e)=>(iE(),dt.custom(...e)),promise:(...e)=>(iE(),dt.promise(...e))}),gE=new Set,_E,vE=gE,yE=null,bE=(e,t)=>vt(_t.getState().dictionary,e,t),xE=e=>{let t=e?.time?.pinned;return t!=null&&t!==``},SE=e=>{if(!e)return gE;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)xE(e)&&t.add(e.id);return t.size===0?gE:t},CE=(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},wE=(e=R,t=u())=>{let n=FE(e,t);if(n===_E&&t===yE)return vE;let r=SE(n);return _E=n,yE=t,vE=CE(vE,r)?vE:r,vE},TE=(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=SE(e),o=new Set(a);return n==null||n===``?o.delete(t):o.add(t),CE(a,o)||(r=!0),r?{...e,directories:i,pinnedSessionIds:[...o]}:e},EE=(e,t,n,r)=>{let i=FE(e,t);if(!i)return null;let a=TE(i,n,r?new Date().toISOString():null);return a!==i&&LE(a,{client:e,transport:t,persist:!1}),i},DE=e=>R.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()}),OE=()=>wE(),kE=()=>(0,K.useSyncExternalStore)(DE,OE,jE),AE=()=>{let e=(0,H.c)(6),t=ot(),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:ME,onMutate:e=>{let{sessionId:n,nextPinned:r,transport:i}=e;return{previous:EE(t,i,n,r),transport:i}},onError:(e,n,r)=>{r?.previous&&LE(r.previous,{client:t,transport:r.transport,persist:!1}),hE.error(e instanceof Error?e.message:bE(n.nextPinned?`sessions.sidebar.session.pin.error`:`sessions.sidebar.session.unpin.error`))}},e[1]=t,e[2]=r);let i=st(r),a;return e[3]!==t||e[4]!==i?(a=e=>{let n=e.trim();if(!n)return;let r=u(),a=FE(t,r);if(!a)return;let o=SE(a).has(n);i.mutate({sessionId:n,nextPinned:!o,transport:r})},e[3]=t,e[4]=i,e[5]=a):a=e[5],pt(a)};function jE(){return gE}async function ME(e){let{sessionId:t,nextPinned:n}=e;n?await rT(t):await iT(t)}var NE=(e=u())=>P.sessionIndex.snapshot(e),PE=(e=u(),t=m(),n=qe(),r=eT)=>{let i=t,a=n,o=r;return{queryKey:NE(e),queryFn:async({signal:e})=>{let t=await o({signal:e});return t&&bT(i,t,a),t},staleTime:0,gcTime:1/0,initialData:()=>yT(i,a)??void 0,initialDataUpdatedAt:0}},FE=(e=R,t=u())=>e.getQueryData(NE(t))??null,IE=(e=R,t=u(),n=m(),r=qe())=>{let i=PE(t,n,r);return e.getQueryCache().build(e,i),e.getQueryData(i.queryKey)??null},LE=(e,t)=>{if(!hT(e))return;let n=t?.client??R,r=t?.transport??u(),i=t?.runtimeKey??m(),a=t?.storage??qe();n.setQueryData(NE(r),e),t?.persist!==!1&&bT(i,e,a)},RE=(e=R,t=u(),n=m(),r=qe(),i=eT)=>{let a={...PE(t,n,r,i),staleTime:0};return e.getQueryCache().build(e,a),e.fetchQuery(a)},zE=500,BE=20,VE=6e3,HE=7,UE=3,WE=1,GE=2,KE=750,qE=500,JE=1e4,YE=2,XE=(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})}),ZE=null,J=0,QE=new Map,$E=new Map,eD=new Map,tD=[],nD=new Set,rD=0,iD=UE,aD=0,oD=null,sD,cD=new Map,lD=()=>({loadGeneration:J,runtimeGeneration:f(),transportIdentity:u()}),Y=e=>e.loadGeneration===J&&e.runtimeGeneration===f()&&e.transportIdentity===u(),uD=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`)},dD=e=>{aD=0,uD(e)&&(iD=iD>UE?UE:WE)},fD=()=>{aD+=1,!(aD<GE||iD>=HE)&&(iD+=1,aD=0)},pD=()=>{for(;rD<iD&&tD.length>0;){let e=tD.shift();if(!e)return;rD+=1,e()}},mD=e=>new Promise((t,n)=>{tD.push(()=>{e().then(t,n).finally(()=>{--rD,pD()})}),pD()}),hD=e=>{let t=e;return L(t.directory??null)??L(t.project?.worktree??null)},gD=(e,t)=>{if(!t)return e;let n=e,r=t,i=L(n.directory??null),a=L(n.project?.worktree??null),o=L(r.directory??null),s=L(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=ap(t);if(f>ap(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},_D=(e,t)=>{let n=gD(e,t);return n.share===t.share?n:{...n,share:t.share}},vD=e=>{let t=new Map;for(let n of e){let e=hD(n);if(!e)continue;let r=t.get(e);if(r){r.push(n);continue}t.set(e,[n])}return t},yD=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),hD(e)??``].join(`:`),bD=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),hD(e)??``].join(`:`)},xD=(e,t)=>e.time?.updated!==t.time?.updated&&bD(e)===bD(t),SD=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(yD(e[n])!==yD(t[n]))return!1;return!0},CD=e=>!!e.time?.archived,wD=(e,t)=>{let n=new Set,r=!1;for(let t of e){if(!t?.id||n.has(t.id)||CD(t)){r=!0;break}n.add(t.id)}if(!r){let e=new Set;for(let i of t){if(!i?.id||e.has(i.id)||n.has(i.id)||!CD(i)){r=!0;break}e.add(i.id)}}if(!r)return{activeSessions:e,archivedSessions:t};let i=new Map;for(let t of e)t?.id&&i.set(t.id,t);for(let e of t){if(!e?.id)continue;let t=i.get(e.id);i.set(e.id,t?gD(e,t):e)}let a=[],o=[],s=new Set,c=e=>{if(!e?.id||s.has(e.id))return;s.add(e.id);let t=i.get(e.id)??e;CD(t)?o.push(t):a.push(t)};return e.forEach(c),t.forEach(c),{activeSessions:a,archivedSessions:o}},TD=(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))},ED=e=>[...e].sort((e,t)=>{let n=ap(t)-ap(e);return n===0?t.id.localeCompare(e.id):n}),DD=e=>{let t=new Set;for(let n of e){let e=L(n);e&&t.add(e)}return t},OD=e=>{let t=DD(e);for(let e of t)cD.set(e,(cD.get(e)??0)+1);return t},kD=e=>{let t=new Set;for(let n of e){let e=cD.get(n)??0;if(e<=1){cD.delete(n),t.add(n);continue}cD.set(n,e-1)}return t},AD=(e,t)=>{let n=e.loadingDirectories,r=e.refreshingDirectories;for(let i of t)QE.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}},jD=e=>{let t=e[e.length-1]?.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:null},MD=(e,t)=>{let n=jD(e);return{cursor:n,hasMore:e.length===BE&&n!==null&&(t==null||n<t),loadingMore:!1}},ND=(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,gD(e,r.get(e.id)));let a=e.filter(e=>{if(i.has(e.id))return!1;let t=hD(e);return!t||!n.has(t)});return ED([...i.values(),...a])},PD=(e,t)=>e.cursor===null?!e.hasMore&&(t.hasMore||t.cursor!==null):t.cursor===null||e.cursor<t.cursor,FD=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;if(e.length===0)return null;let n=ED(e),r=n[n.length-1];return r?ap(r):null},ID=(e,t)=>ap(e)<=t,LD=(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,gD(t,a.get(t.id)));let s=e.filter(e=>{if(o.has(e.id))return!1;let t=hD(e);if(!t||!n.has(t))return!0;if(!i.has(t))return!1;let a=r.get(t);return a!=null&&ID(e,a)});return ED([...o.values(),...s])},RD=(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,TD(n.sessions,e.pendingDeletionIds));let a=[...i.values()].flat(),o=new Map;if(n)for(let t of e.activeSessions){let e=hD(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)>BE;n.hasMore&&a&&r&&PD(r,t)&&c.add(n.directory),s.set(n.directory,FD(i.get(n.directory)??[],n.cursor))}let l=n?LD(e.activeSessions,i,r,s,c):ED(VD(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=>hD(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 cD.keys())h.has(e)||QE.has(e)||(p.delete(e),m.delete(e));return{activeSessions:l,sessionsByDirectory:vD(l),reviewTransferBySessionId:UD(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}},zD=(e,t)=>{let n=TD(t.activeSessions,e.pendingDeletionIds),r=TD(t.fallbackActive??[],e.pendingDeletionIds),i=t.mergeOnly?ED(VD(e.activeSessions,n)):ND(e.activeSessions,n,t.directories);i=VD(i,r);let a=t.archivedSessions===void 0?void 0:TD(t.archivedSessions,e.pendingDeletionIds),o=a===void 0?e.archivedSessions:ND(e.archivedSessions,a,t.directories),s=wD(i,o);i=s.activeSessions,o=s.archivedSessions,SD(e.activeSessions,i)&&(i=e.activeSessions),SD(e.archivedSessions,o)&&(o=e.archivedSessions);let c=i===e.activeSessions?e.sessionsByDirectory:vD(i),l=e.loadedDirectories,u=!1;for(let n of t.directories)l.has(n)||(u||=(l=new Set(e.loadedDirectories),!0),l.add(n));let d=e.loadingDirectories,f=!1;for(let n of t.directories)d.has(n)&&(f||=(d=new Set(e.loadingDirectories),!0),d.delete(n));let p=t.markReady?`ready`:e.status,m=t.markReady?!0:e.hasLoaded;return i===e.activeSessions&&o===e.archivedSessions&&c===e.sessionsByDirectory&&l===e.loadedDirectories&&d===e.loadingDirectories&&e.status===p&&e.hasLoaded===m?e:{activeSessions:i,archivedSessions:o,sessionsByDirectory:c,reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:UD(i),loadedDirectories:l,loadingDirectories:d,hasLoaded:m,status:p}},BD=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[t,...e];let r=e[n],i=gD(t,r);if(xD(r,i)||yD(r)===yD(i))return e;let a=[...e];return a[n]=i,a},VD=(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,gD(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},HD=(e,t,n,r)=>{let i=wD(t,n),a=TD(i.activeSessions,e.pendingDeletionIds),o=TD(i.archivedSessions,e.pendingDeletionIds),s=SD(e.activeSessions,a)?e.activeSessions:a,c=SD(e.archivedSessions,o)?e.archivedSessions:o,l=s===e.activeSessions?e.sessionsByDirectory:vD(s),u=s===e.activeSessions?e.reviewTransferBySessionId:UD(s);return s===e.activeSessions&&c===e.archivedSessions&&l===e.sessionsByDirectory&&u===e.reviewTransferBySessionId&&e.hasLoaded&&e.status===r?e:{activeSessions:s,archivedSessions:c,sessionsByDirectory:l,reviewTransferBySessionId:u,hasLoaded:!0,status:r}},UD=e=>{let t=new Map,n=new Set(e.map(e=>e.id));for(let r of e){let e=Hw(r);if(!e)continue;let i=e===`review-to-original`?Yp(r):Jp(r);!i||!n.has(i)||t.set(r.id,e)}return t},X=De((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=>HD(e,t,n,r))},resetForRuntimeSwitch:()=>{J+=1,qw(),ZE=null,QE.clear(),$E.clear(),eD.clear(),nD.forEach(e=>e.abort()),nD.clear(),iD=UE,aD=0,oD?.abort(),oD=null,sD=void 0,cD.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(sD)return sD;if(t().hasHydratedSessionIndex)return;let n=lD(),r=u(),i=m(),a=IE(void 0,r,i);a&&Y(n)&&e(e=>({...RD(e,a,!1),hasCachedSessionIndex:!0}));let o=(async()=>{try{let t;try{t=await RE(void 0,r,i)}catch(e){if(!Y(n))return;if(a){console.warn(`[GlobalSessions] Failed to refresh runtime session index; keeping stale seed:`,e);return}throw e}if(!Y(n))return;if(!t){e(e=>e.hasHydratedSessionIndex?e:{hasHydratedSessionIndex:!0});return}e(e=>({...RD(e,t,!1),hasCachedSessionIndex:t.directories.length>0,hasHydratedSessionIndex:!0}))}catch(e){console.warn(`[GlobalSessions] Failed to hydrate runtime session index:`,e)}})();return sD=o.finally(()=>{sD===o&&(sD=void 0)}),sD},startSessionIndexStartup:async(n,r)=>{let i=lD();if(e({startupSyncProgress:{active:!0,phase:`restoring`,completed:0,total:0}}),await t().hydrateSessionIndex(),!Y(i))return{activeSessions:[],archivedSessions:[]};t().hasHydratedSessionIndex||e({hasHydratedSessionIndex:!0});let a=DD([...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?DD(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=lD();try{if(f=await tT([...l]),!Y(i)||!Y(p))return{activeSessions:[],archivedSessions:[]};f&&LE(f)}catch(e){if(!Y(i)||!Y(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=()=>{Y(i)&&t().syncSessionsForDirectories(e,d.activeSessions)};typeof globalThis.setTimeout==`function`?globalThis.setTimeout(n,0):Promise.resolve().then(n)};if(!f){let e=YD(l,d.activeSessions,{retryFailed:!o});if(o)e.then(()=>{m()});else{if(await e,!Y(i))return{activeSessions:[],archivedSessions:[]};m()}return d}oD?.abort();let h=new AbortController;oD=h;let g=OD(l),_=()=>{if(!Y(i))return;let t=kD(g);t.size!==0&&e(e=>AD(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=qE;for(;!h.signal.aborted&&Y(i);){e(e=>({...RD(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=lD(),a=await nT(t.revision,h.signal,{safetyTimeoutMs:t.sync.active?void 0:null});if(!Y(i)||!Y(r)||a===`aborted`)break;let o;for(;!h.signal.aborted&&Y(i);){let e=lD();try{o=await RE()}catch{if(h.signal.aborted||!Y(i)){o=void 0;break}if(await XE(n,h.signal),h.signal.aborted||!Y(i)){o=void 0;break}n=Math.min(n*YE,JE);continue}if(!Y(e)){o=void 0;break}if(!o)break;n=qE;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(),oD===h&&(oD=null),v&&Y(i)&&e(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:e.startupSyncProgress.completed,total:e.startupSyncProgress.total}}))}),v){if(await x,!Y(i))return{activeSessions:[],archivedSessions:[]};m()}else m();return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},loadSessions:async n=>{if(ZE)return ZE;e(e=>e.status===`loading`?e:{status:`loading`});let r=J,i=Promise.resolve().then(async()=>{let a=t();try{if(await Kw(),r!==J)return{activeSessions:[],archivedSessions:[]};let i=B.getSdkClient(),[o,s]=await Promise.allSettled([Op(i,{archived:!1,pageSize:zE}),Op(i,{archived:!0,pageSize:zE})]),c=VD(a.activeSessions,n),l=o.status===`fulfilled`?o.value:c,u=s.status===`fulfilled`?s.value:a.archivedSessions;return o.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load active sessions, preserving existing snapshot with fallback merge:`,o.reason),s.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load archived sessions, preserving current snapshot:`,s.reason),r===J?(e(e=>{let t=o.status===`fulfilled`&&s.status===`fulfilled`?`ready`:`error`,n=HD(e,l,u,t);if(o.status!==`fulfilled`||s.status!==`fulfilled`)return n===e?e:n;let r=new Set([...o.value.map(e=>e.id),...s.value.map(e=>e.id)]);return{...n,hasLoadedFullCatalog:!0,fullCatalogSessionIds:r,fullCatalogGeneration:e.fullCatalogGeneration+1}}),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}):{activeSessions:[],archivedSessions:[]}}catch(i){if(r!==J)return{activeSessions:[],archivedSessions:[]};let o=VD(a.activeSessions,n),s=a.archivedSessions;return console.warn(`[GlobalSessions] Failed to load sessions, using fallback snapshot:`,i),e(e=>HD(e,o,s,`error`)),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}}finally{ZE===i&&(ZE=null)}});return ZE=i,i},refreshSessionsForDirectories:async(n,r,i)=>{let a=DD(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=J;e(e=>{let t=VD(e.activeSessions,TD(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=>hD(e)===t)||n.add(t);return{...t===e.activeSessions?{}:{activeSessions:t,sessionsByDirectory:vD(t),reviewTransferBySessionId:UD(t)},loadingDirectories:n,refreshingDirectories:i,status:e.status===`idle`?`loading`:e.status}});let s=[...a].map(n=>{let r=QE.get(n);if(r)return r;let a=mD(async()=>{let r=new AbortController;nD.add(r);try{if(o!==J||(await Kw(),o!==J))return!1;let a=await Op(B.getSdkClient(),{directory:n,archived:!1,roots:!0,...i?.incrementalStart===void 0?{}:{start:i.incrementalStart},pageSize:BE,maxItems:BE,timeoutMs:VE,retryAttempts:2,signal:r.signal});if(o!==J)return!1;if(e(e=>{let t=zD(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,MD(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)??MD(a);try{await aT({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 fD(),!0}catch(t){return dD(t),o===J&&(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{nD.delete(r)}});return QE.set(n,a),a.finally(()=>{QE.get(n)===a&&QE.delete(n)}),a}),c=await Promise.all(s);return o===J?([...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=lD(),a=DD(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=null,s=lD();try{if(o=await tT([...a]),!Y(i)||!Y(s))return{activeSessions:[],archivedSessions:[]};o&&LE(o)}catch(e){if(!Y(i)||!Y(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;nD.add(c);let l=OD(a),u=()=>{if(!Y(i))return;let t=kD(l);t.size!==0&&e(e=>AD(e,t))};try{let t=o;for(;!c.signal.aborted&&Y(i)&&(e(e=>RD(e,t,!0)),t.sync.active);){let e=lD(),n=await nT(t.revision,c.signal);if(!Y(i)||!Y(e)||n===`aborted`)break;let r=lD(),a;try{a=await RE()}catch{break}if(!Y(i)||!Y(r)||!a)break;t=a}}catch(e){!c.signal.aborted&&Y(i)&&console.warn(`[GlobalSessions] Session index sync failed:`,e)}finally{u(),nD.delete(c)}return Y(i)?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},loadMoreSessionsForDirectory:async n=>{let r=L(n);if(!r){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=eD.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=J;e(e=>{let t=new Map(e.activePaginationByDirectory);return t.set(r,{...a,loadingMore:!0}),{activePaginationByDirectory:t}});let s=mD(async()=>{let t=new AbortController;nD.add(t);try{if(await Kw(),o!==J)return!1;let n=await Op(B.getSdkClient(),{directory:r,archived:!1,roots:!0,cursor:a.cursor??void 0,pageSize:BE,maxItems:BE,timeoutMs:VE,retryAttempts:2,signal:t.signal});return o===J&&(e(e=>{let t=e.activeSessions.filter(e=>hD(e)===r),i=new Map(t.map(e=>[e.id,e]));TD(n,e.pendingDeletionIds).forEach(e=>{i.set(e.id,gD(e,i.get(e.id)))});let o=ED([...i.values()]),s=ND(e.activeSessions,o,new Set([r])),c=new Map(e.activePaginationByDirectory);return c.set(r,MD(n,a.cursor)),{activeSessions:SD(e.activeSessions,s)?e.activeSessions:s,sessionsByDirectory:vD(s),reviewTransferBySessionId:UD(s),activePaginationByDirectory:c}}),fD(),!0)}catch(t){return dD(t),o===J&&(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{nD.delete(t)}});eD.set(r,s);try{await s}finally{eD.get(r)===s&&eD.delete(r)}return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},refreshArchivedSessionsForDirectories:async n=>{let r=DD(n);if(r.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=J;e(e=>{let t=new Set(e.archivedLoadingDirectories);return r.forEach(e=>t.add(e)),{archivedLoadingDirectories:t}});let a=[...r].map(t=>{let n=$E.get(t);if(n)return n;let r=mD(async()=>{let n=new AbortController;nD.add(n);try{if(i!==J||(await Kw(),i!==J))return!1;let r=await Op(B.getSdkClient(),{directory:t,archived:!0,roots:!0,pageSize:BE,maxItems:BE,timeoutMs:VE,retryAttempts:2,signal:n.signal});return i===J&&(e(e=>{let n=ND(e.archivedSessions,TD(r,e.pendingDeletionIds),new Set([t])),i=wD(e.activeSessions,n),a=SD(e.activeSessions,i.activeSessions)?e.activeSessions:i.activeSessions,o=SD(e.archivedSessions,i.archivedSessions)?e.archivedSessions:i.archivedSessions,s=new Set(e.archivedLoadedDirectories),c=new Set(e.archivedLoadingDirectories);return s.add(t),c.delete(t),{activeSessions:a,archivedSessions:o,sessionsByDirectory:a===e.activeSessions?e.sessionsByDirectory:vD(a),reviewTransferBySessionId:a===e.activeSessions?e.reviewTransferBySessionId:UD(a),archivedLoadedDirectories:s,archivedLoadingDirectories:c}}),!0)}catch(n){return i===J&&(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{nD.delete(n)}});return $E.set(t,r),r.finally(()=>{$E.get(t)===r&&$E.delete(t)}),r});return await Promise.all(a),i===J?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},upsertSession:n=>{if(!Cp(n)){t().removeSessions([n.id]);return}e(e=>{if(e.pendingDeletionIds.has(n.id))return e;let t=gD(n,e.activeSessions.find(e=>e.id===n.id)??e.archivedSessions.find(e=>e.id===n.id)??null),r=CD(t),i=r?e.activeSessions.filter(e=>e.id!==n.id):BD(e.activeSessions,t),a=r?BD(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:vD(i),reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:UD(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:vD(t),reviewTransferBySessionId:UD(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:vD(i),reviewTransferBySessionId:UD(i)}})}})),WD=async e=>{let t=X.getState();return t.hasLoadedFullCatalog&&t.status!==`error`?{activeSessions:t.activeSessions,archivedSessions:t.archivedSessions}:t.loadSessions(e)},GD=async()=>{await X.getState().hydrateSessionIndex()},KD=async(e,t)=>X.getState().startSessionIndexStartup(e,t),qD=async(e,t)=>X.getState().refreshSessionsForDirectories(e,t),JD=async(e,t)=>X.getState().syncSessionsForDirectories(e,t),YD=async(e,t,n)=>{let r=DD(e),i=J;if(r.size===0){X.setState({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let e=X.getState();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}X.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 X.getState().refreshSessionsForDirectories([e],t,{persist:!1,incrementalStart:n?.incrementalStartByDirectory?.get(e),onDirectoryResult:(e,t)=>{r=t}}),i===J&&r&&!a.has(e)&&(a.add(e),X.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,completed:a.size}})))})),o=new Set([...r].filter(e=>!a.has(e))),o.size>0&&n?.retryFailed===!0&&i===J&&await new Promise(e=>setTimeout(e,KE));while(o.size>0&&n?.retryFailed===!0&&i===J);if(i===J){X.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,phase:`committing`}}));let e=X.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 oT(t);let e=Date.now();X.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===J&&X.setState(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:a.size,total:e.startupSyncProgress.total}}))}let s=X.getState();return{activeSessions:s.activeSessions,archivedSessions:s.archivedSessions}},XD=async e=>X.getState().refreshArchivedSessionsForDirectories(e),ZD=async e=>X.getState().loadMoreSessionsForDirectory(e),QD=(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])},$D=`oc.sessions.folders`,eO=`oc.sessions.folderCollapse`,tO=`oc.sessions.order`,nO=`oc.sessions.orderActivity`,rO=`/api/session-folders`,iO=250,aO=`__archived__:`,oO=A(qe()),sO=null,cO=!1,lO=!1,uO=0,dO,fO,pO=null,mO=null,hO=()=>typeof window>`u`?!1:Se()?!0:window.__VSCODE_CONFIG__!==void 0,gO=(e,t)=>{if(typeof window>`u`||hO())return;sO&&clearTimeout(sO);let n=JSON.parse(JSON.stringify(e)),r=Array.from(t);sO=setTimeout(()=>{sO=null,_(rO,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({version:1,foldersMap:n,collapsedFolderIds:r,updatedAt:Date.now()})}).catch(()=>{})},iO)},_O=()=>{try{let e=oO.getItem($D);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{}}},vO=()=>{try{let e=oO.getItem(eO);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}},yO=()=>{try{let e=oO.getItem(tO);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{}}},bO=()=>{try{let e=oO.getItem(nO);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{}}},xO=(e,t)=>{try{oO.setItem(tO,JSON.stringify(e)),oO.setItem(nO,JSON.stringify(t))}catch{}},SO=e=>{pO=e,clearTimeout(dO),dO=setTimeout(()=>{try{oO.setItem($D,JSON.stringify(e)),pO=null}catch{}},300)},CO=e=>{mO=e,clearTimeout(fO),fO=setTimeout(()=>{try{oO.setItem(eO,JSON.stringify(Array.from(e))),mO=null}catch{}},300)};typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{if(pO!==null){clearTimeout(dO);try{oO.setItem($D,JSON.stringify(pO))}catch{}pO=null}if(mO!==null){clearTimeout(fO);try{oO.setItem(eO,JSON.stringify(Array.from(mO)))}catch{}mO=null}});var wO=(e,t)=>{SO(e),CO(t),gO(e,t)},TO=()=>_e(),EO=(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},DO=(e,t)=>e.startsWith(aO)?t.filter(e=>e.sessionIds.length>0):t,OO=De()(Ae((e,t)=>({foldersMap:_O(),collapsedFolderIds:vO(),sessionOrderByScope:yO(),sessionOrderActivityByScope:bO(),getFoldersForScope:e=>e?t().foldersMap[e]??[]:[],createFolder:(n,r,i)=>{let a=r.trim()||`New folder`,o={id:TO(),name:a,sessionIds:[],createdAt:Date.now(),parentId:i??null},s=t().foldersMap,c=s[n]??[],l={...s,[n]:[...c,o]};return e({foldersMap:l}),wO(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}),wO(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}),wO(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}),wO(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=EO(o,l,t().collapsedFolderIds);e(d?{foldersMap:u,collapsedFolderIds:d}:{foldersMap:u}),wO(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=EO(o,u,t().collapsedFolderIds);e(f?{foldersMap:d,collapsedFolderIds:f}:{foldersMap:d}),wO(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=EO(a,c,t().collapsedFolderIds);e(u?{foldersMap:l,collapsedFolderIds:u}:{foldersMap:l}),wO(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=EO(a,s,t().collapsedFolderIds);e(l?{foldersMap:c,collapsedFolderIds:l}:{foldersMap:c}),wO(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}),wO(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=DO(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=EO(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:_}),wO(m,h??t().collapsedFolderIds),xO(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=QD(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}),xO(y,b)}}),{name:`session-folders-store`})),kO=async()=>{if(cO||lO||typeof window>`u`)return;if(hO()){cO=!0;return}lO=!0;let e=uO;try{let t=await _(rO).catch(()=>null);if(e!==uO||!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!==uO||!(Object.keys(r).length>0||i.size>0))return;OO.setState({foldersMap:r,collapsedFolderIds:i}),SO(r),CO(i)}catch{}finally{e===uO&&(lO=!1,cO=!0)}},AO=()=>{typeof window>`u`||kO()},jO=()=>{uO+=1,cO=!1,lO=!1,pO=null,mO=null,dO&&=(clearTimeout(dO),void 0),fO&&=(clearTimeout(fO),void 0),OO.setState({foldersMap:_O(),collapsedFolderIds:vO(),sessionOrderByScope:yO(),sessionOrderActivityByScope:bO()}),kO()};typeof window<`u`&&s(e=>{h(e)&&jO()}),AO();var MO=new Map,NO=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},PO=()=>`worktree_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,FO=()=>{let e=PO();return MO.set(e,NO()),e},IO=(e,t)=>{let n=MO.get(e);n&&(MO.delete(e),n.resolve(t))},LO=(e,t)=>{let n=MO.get(e);n&&(MO.delete(e),n.reject(t))},RO=e=>{let t=MO.get(e);return t?t.promise:Promise.reject(Error(`Pending worktree request not found`))},zO=3e5,BO=5e3,VO=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``)||e,HO=new Map,UO=new Map,WO=new Map,GO=new Map,KO=new Set,qO=null,JO=!1,YO=e=>VO(e),XO=e=>GO.get(e)??0,ZO=e=>{let t=XO(e)+1;return GO.set(e,t),t},QO=async e=>{let t=b()?.git;return t?.worktree?.bootstrapStatus?t.worktree.bootstrapStatus(e):t?.getGitWorktreeBootstrapStatus?t.getGitWorktreeBootstrapStatus(e):Re(e)},$O=(e,t)=>{for(let n of KO)try{n(e,t)}catch{}},ek=e=>(KO.add(e),()=>{KO.delete(e)}),tk=(e,t)=>{let n=YO(e);if(!n)return!1;let r=HO.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:(HO.set(n,t),t.status!==`pending`&&UO.delete(n),$O(n,t),!0)},nk=(e,t)=>{let n=YO(e);if(!n)return!1;let r=t.status===`pending`||t.status===`ready`||t.status===`failed`?t.status:null;return r?tk(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},rk=()=>{qO||=an(e=>{e.type===`worktree-bootstrap-status`&&nk(e.directory,e)}),!(typeof window>`u`||JO)&&(JO=!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&&nk(r,{status:n.status,error:typeof n.error==`string`?n.error:null,updatedAt:typeof n.updatedAt==`number`?n.updatedAt:Date.now()})})))},ik=e=>{let t=YO(e);t&&(rk(),tk(t,{status:`pending`,error:null,updatedAt:Date.now()}))},ak=e=>{let t=YO(e);if(!t)return;ZO(t);let n=WO.get(t);n&&(n.cancelled=!0,n.disposeSettlement?.(),n.disposeSettlement=null,WO.delete(t));let r=UO.get(t);r&&(r.dispose(),UO.delete(t)),HO.delete(t)},ok=e=>{let t=YO(e);return t?HO.get(t)??null:null},sk=(e,t)=>{let n=_t.getState().dictionary;return vt(n,e,t)},ck=e=>({status:`failed`,error:e,updatedAt:Date.now()}),lk=(e,t,n)=>{let r=ck(t);return tk(e,r),n?.(r),r},uk=async(e,t=()=>!0)=>{try{let n=await QO(e);return t()?tk(e,n)?n:ok(e):null}catch{return null}},dk=(e,t,n=BO)=>{let r=YO(e),i=XO(r);rk();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,uk(e,()=>!a&&XO(r)===i).finally(()=>{c=!1}))},Number.isFinite(n)?Math.max(1,n):BO))},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=ek((e,t)=>{YO(e)===r&&d(t)}),o=setTimeout(()=>{s(()=>{let t=lk(e,sk(`worktree.bootstrap.toast.timeoutDescription`));i(Error(t.error||`Timed out waiting for worktree bootstrap`))})},Math.max(0,t)),d(HO.get(r))});return h.catch(()=>void 0),{promise:h,startCompensation:p,dispose:()=>m(Error(`Worktree bootstrap wait cancelled`))}},fk=async(e,t,n,r,i,a)=>{let o=YO(e),s=dk(e,n,r);t.disposeSettlement=s.dispose;let c=await uk(e,()=>!t.cancelled&&WO.get(o)===t&&XO(o)===t.epoch);if(t.cancelled||WO.get(o)!==t){s.dispose();return}if(c?.status===`ready`){s.dispose(),a?.(c);return}if(c?.status===`failed`){s.dispose(),i?.(c),hE.error(sk(`worktree.bootstrap.toast.failed`),{description:c.error||sk(`worktree.bootstrap.toast.failedDescription`)});return}s.startCompensation();try{let e=await s.promise;if(t.cancelled||WO.get(o)!==t)return;a?.(e)}catch(n){if(t.cancelled||WO.get(o)!==t)return;let r=ok(e);if(r?.status===`failed`){i?.(r),hE.error(sk(`worktree.bootstrap.toast.failed`),{description:r.error||sk(`worktree.bootstrap.toast.failedDescription`)});return}let a=lk(e,n instanceof Error?n.message:String(n),i);hE.error(sk(`worktree.bootstrap.toast.failed`),{description:a.error||sk(`worktree.bootstrap.toast.failedDescription`)})}},pk=(e,t)=>{let n=YO(e);if(!n||HO.get(n)?.status!==`pending`||WO.has(n))return;let r={cancelled:!1,epoch:XO(n),promise:Promise.resolve(),disposeSettlement:null};r.promise=fk(e,r,t?.timeoutMs??zO,t?.pollIntervalMs??BO,t?.onFailed,t?.onReady).finally(()=>{WO.get(n)===r&&WO.delete(n)}),WO.set(n,r)},mk=async(e,t=zO)=>{let n=YO(e);if(!n)return;let r=HO.get(n);if(!r||r.status===`ready`)return;if(r.status===`failed`)throw Error(r.error||`Worktree bootstrap failed`);let i=UO.get(n);if(i)return i.promise;let a=()=>{},o=XO(n),s=(async()=>{let r=dk(e,t,BO);a=r.dispose;let i=await uk(e,()=>XO(n)===o);if(XO(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(()=>{UO.get(n)?.promise===s&&UO.delete(n)});return UO.set(n,{promise:s,dispose:()=>a()}),s},hk=`openchamber.json`,gk=`.openchamber`,_k=[`.config`,`openchamber`,`projects`];function vk(){let e=b();return e?.files?e.files:null}var yk=80,bk=4e3,xk=2e3,Sk=300,Ck=new Set([`macos`,`linux`,`windows`]),wk=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)},Tk=(e,t)=>{let n=wk(e),r=t.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/\/+$/,``);return!n||n===`/`?`/${r}`:`${n}/${r}`},Ek=e=>Tk(Tk(e,gk),hk),Dk=()=>{let e=`/api`;return e.startsWith(`/`),e},Ok=async(e,t)=>{try{let n=await _(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}}},kk=async e=>{let t=vk();if(t?.createDirectory)try{if((await t.createDirectory(e))?.success)return!0}catch{}return!!(await Ok(`${Dk()}/fs/mkdir`,{path:e})).ok},Ak=async e=>{let t=vk();if(t?.readFile)try{let n=await t.readFile(e);return typeof n?.content==`string`?n.content:``}catch{return null}try{let t=await _(`${Dk()}/fs/read?path=${encodeURIComponent(e)}`,{cache:`no-store`});return t.ok?await t.text():null}catch{return null}},jk=async(e,t)=>{let n=vk();if(n?.writeFile)try{if((await n.writeFile(e,t))?.success)return!0}catch{}return!!(await Ok(`${Dk()}/fs/write`,{path:e,content:t})).ok},Mk=async()=>{try{let e=await _(`${Dk()}/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 wk(n)}catch{}if(!Se()){let e=await le().catch(()=>null);if(e&&e.trim().length>0)return wk(e)}return null},Nk=async()=>{let e=await Mk();return e?_k.reduce((e,t)=>Tk(e,t),e):null},Pk=e=>{let t=typeof e?.path==`string`?e.path.trim():``,n=t?wk(t):``;return n&&xe(n)||null},Fk=async e=>{let t=await Nk();if(!t)return null;let n=Pk(e);return n?Tk(t,`${n}.json`):null},Ik=(e,t)=>e.length<=t?e:e.slice(0,t),Lk=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();!Ck.has(e)||n.has(e)||(n.add(e),t.push(e))}return t},Rk=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=Ik(typeof e.name==`string`?e.name.trim():``,yk),o=Ik(typeof e.command==`string`?e.command.trim():``,bk);if(!i||!a||!o||n.has(i))continue;n.add(i);let s=typeof e.icon==`string`?e.icon.trim():``,c=Lk(e.platforms),l=e.autoOpenUrl===!0,u=Ik(typeof e.openUrl==`string`?e.openUrl.trim():``,xk),d=Ik(typeof e.desktopOpenSshForward==`string`?e.desktopOpenSshForward.trim():``,Sk);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},zk=e=>{let t=Rk(e?.actions),n=typeof e?.primaryActionId==`string`?e.primaryActionId.trim():``;return{actions:t,primaryActionId:n&&t.some(e=>e.id===n)?n:null}};async function Bk(e){let t=typeof e?.path==`string`?e.path.trim():``;if(!t)return null;let n=await Fk(e),r=async e=>{let t=await Ak(e);return t===null?null:t},i=e=>{if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;try{let e=JSON.parse(t);return!e||typeof e!=`object`?null:e}catch{return null}};if(n){let e=i(await r(n));if(e)return e}let a=i(await r(Ek(t)));if(!a)return null;try{await Vk(e,a)&&await Qk(t)}catch{}return a}async function Vk(e,t){let n=typeof e?.path==`string`?e.path.trim():``;if(!n)return!1;let r=await Nk(),i=await Fk(e);if(!r||!i)return!1;try{if(!await kk(r))return!1;let e=await Ak(i),a={};if(typeof e==`string`&&e.trim())try{let t=JSON.parse(e);t&&typeof t==`object`&&!Array.isArray(t)&&(a=t)}catch{a={}}let o={};return a.version!==void 0&&(o.version=a.version),a.scheduledTasks!==void 0&&(o.scheduledTasks=a.scheduledTasks),await jk(i,JSON.stringify({...a,...t,...o,projectPath:wk(n)},null,2))}catch(e){return console.error(`Failed to write openchamber config:`,e),!1}}async function Hk(e,t){return Vk(e,{...await Bk(e)||{},...t})}async function Uk(e){return(await Bk(e))?.[`setup-worktree`]??[]}async function Wk(e,t){return Hk(e,{"setup-worktree":t.filter(e=>e.trim().length>0)})}async function Gk(e){return(await Bk(e))?.[`setup-worktree-wait`]===!0}async function Kk(e,t){return Hk(e,{"setup-worktree-wait":t})}async function qk(e){let t=await Bk(e);return we(t?.draftStarters)}async function Jk(e,t){return Hk(e,{draftStarters:we(t)})}async function Yk(e){let t=await Bk(e);return zk({actions:t?.projectActions,primaryActionId:t?.projectActionsPrimaryId})}async function Xk(e,t){let n=zk({actions:t.actions,primaryActionId:t.primaryActionId});return Hk(e,{projectActions:n.actions,projectActionsPrimaryId:n.primaryActionId??void 0})}function Zk(e,t){return e.replace(/\$ROOT_PROJECT_PATH/g,t.rootWorktreePath).replace(/\$\{ROOT_PROJECT_PATH\}/g,t.rootWorktreePath).replace(/\$ROOT_WORKTREE_PATH/g,t.rootWorktreePath).replace(/\$\{ROOT_WORKTREE_PATH\}/g,t.rootWorktreePath)}async function Qk(e){let t=Ek(e),n=vk();if(n?.delete)try{await n.delete(t);return}catch{}try{await Ok(`${Dk()}/fs/delete`,{path:t})}catch{}}var $k=e=>typeof e==`number`&&Number.isFinite(e)?e:0,eA=e=>$k(e.input)+$k(e.output)+$k(e.reasoning)+$k(e.cache?.read)+$k(e.cache?.write),tA=e=>e?.type===`compaction`,nA=e=>!!e&&e.some(tA),rA=(e,t)=>{for(let n=e.length-1;n>=0;--n){let r=e[n];if(r.role!==`assistant`){if(r.id&&nA(t(r.id)))return{compacted:!0};continue}let i=r.tokens;if(!i)continue;let a=eA(i);if(a>0)return{messageId:r.id??``,totalTokens:a,tokens:i}}return null},iA=500,aA=2592e6;function oA(e){let t=Date.now()-aA,n=e.filter(e=>e.time>=t);return n.length<=iA?n:n.slice(n.length-iA)}function sA(e){let t={session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}};for(let n of e)n.viewed||(n.session&&(t.session.unseenCount[n.session]=(t.session.unseenCount[n.session]??0)+1,n.type===`error`&&(t.session.unseenHasError[n.session]=!0)),n.directory&&(t.project.unseenCount[n.directory]=(t.project.unseenCount[n.directory]??0)+1,n.type===`error`&&(t.project.unseenHasError[n.directory]=!0)));return t}var cA=De((e,t)=>({list:[],index:{session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}},append:n=>{let r=t().list,i=oA([...r,n]);e({list:i,index:sA(i)})},markSessionViewed:n=>{let r=t();if((r.index.session.unseenCount[n]??0)===0)return;let i=r.list.map(e=>e.session===n&&!e.viewed?{...e,viewed:!0}:e);e({list:i,index:sA(i)})},markProjectViewed:n=>{let r=t();if((r.index.project.unseenCount[n]??0)===0)return;let i=r.list.map(e=>e.directory===n&&!e.viewed?{...e,viewed:!0}:e);e({list:i,index:sA(i)})},sessionUnseenCount:e=>t().index.session.unseenCount[e]??0,sessionHasError:e=>t().index.session.unseenHasError[e]??!1,projectUnseenCount:e=>t().index.project.unseenCount[e]??0,projectHasError:e=>t().index.project.unseenHasError[e]??!1}));function lA(e){cA.getState().append(e)}function uA(e){cA.getState().markSessionViewed(e)}function dA(e){let t=(0,H.c)(2),n;return t[0]===e?n=t[1]:(n=t=>t.index.session.unseenCount[e]??0,t[0]=e,t[1]=n),cA(n)}var fA=/^(.*)\.(\d+)$/,pA=[`session.next.step.`,`session.next.text.`,`session.next.reasoning.`,`session.next.tool.`,`session.next.shell.`,`session.next.compaction.`],mA=new Set([`session.next.step.ended`,`session.next.step.failed`]);function hA(e){return fA.exec(e)?.[1]??e}function gA(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function _A(e){let t=e.sessionID;if(typeof t==`string`&&t.length>0)return t;let n=e.sessionId;if(typeof n==`string`&&n.length>0)return n}function vA(e){let t=gA(e.durable);if(!t)return!1;let n=t.kind??t.type??t.source;if(typeof n==`string`&&n.toLowerCase()===`sync`||t.sync===!0)return!0;let r=t.aggregateID;return!!(typeof r==`string`&&r.startsWith(`sync:`))}function yA(e){let t=gA(e.location);if(t){let e=t.path??t.directory;if(typeof e==`string`&&e.length>0)return e}let n=e.directory;if(typeof n==`string`&&n.length>0)return n}function bA(e){let t=gA(e);if(!t)return e;if(t.payload&&typeof t.payload==`object`){let e=t.payload;if(typeof e.type==`string`)return{...e,...typeof t.directory==`string`&&!yA(e)?{directory:t.directory}:{}}}return e}function xA(e,t){if(e===`session.status`){let e=_A(t),n=t.status;if(e&&n&&typeof n==`object`)return{sessionID:e,status:n}}return t}function SA(e,t){let n=_A(t);return n?e===`session.next.prompt.admitted`?{admissionHint:{sessionID:n,messageID:typeof t.messageID==`string`?t.messageID:void 0},domainActivityHint:{sessionID:n,kind:`activity`}}:mA.has(e)?{domainActivityHint:{sessionID:n,kind:`terminal`}}:pA.some(t=>e.startsWith(t))||e.startsWith(`session.next.`)?{domainActivityHint:{sessionID:n,kind:`activity`}}:{}:{}}function CA(e){let t=gA(bA(e));if(!t)return{action:`drop`,reason:`invalid`};let n=t.type;if(typeof n!=`string`||n.length===0)return{action:`drop`,reason:`invalid`};if(vA(t))return{action:`drop`,reason:`sync-duplicate`};let r=hA(n),i=gA(t.data),a=gA(t.properties),o=i??a;if(!o)return r.startsWith(`openchamber:`)?{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:a??{},locationDirectory:yA(t)}}:{action:`drop`,reason:`invalid`};let s=xA(r,o),c=yA(t)??yA(o)??(()=>{let e=gA(s.info);return typeof e?.directory==`string`?e.directory:void 0})(),l=SA(r,s);return{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:s,locationDirectory:c,...l}}}function wA(e){return{...e.id?{id:e.id}:{},type:e.type,properties:e.properties}}var TA=33,EA=200,DA=1e4,OA=8,kA=250,AA=3e4,jA=6e4,MA=2,NA=2e3,PA=8e3,FA=250,IA=5e3,LA=6e4,RA=8,zA=e=>{let t=e;if(t.type!==`openchamber:session-status`)return null;let n=typeof t.properties?.sessionID==`string`&&t.properties.sessionID.length>0?t.properties.sessionID:typeof t.properties?.sessionId==`string`&&t.properties.sessionId.length>0?t.properties.sessionId:``,r=typeof t.properties?.status==`string`?t.properties.status:``;if(!n||!r)return null;let i=null;if(r===`idle`||r===`busy`)i={type:r};else if(r===`retry`){let e=t.properties?.metadata;typeof e?.attempt==`number`&&typeof e.message==`string`&&typeof e.next==`number`&&(i={type:`retry`,attempt:e.attempt,message:e.message,next:e.next})}return i?{id:typeof t.id==`string`&&t.id.length>0?t.id:`openchamber-status-${n}-${Date.now()}`,type:`session.status`,properties:{sessionID:n,status:i}}:null},BA=e=>{if(!e||typeof e!=`object`)return{status:`unusable`};let t=zA(e);if(t){let e=t.properties;return{status:`event`,event:t,normalized:{id:typeof t.id==`string`?t.id:void 0,type:`session.status`,properties:e}}}let n=CA(e);return n.action===`drop`?n.reason===`sync-duplicate`?{status:`declined`}:{status:`unusable`}:{status:`event`,event:wA(n.event),normalized:n.event}};function VA(e,t,n,r){if(typeof t==`object`&&t&&typeof t.data==`object`&&t.data!==null&&r&&r.length>0)return r;let i=typeof e==`object`&&e&&typeof e.directory==`string`?e.directory:null;if(i&&i.length>0)return i;if(r&&r.length>0)return r;let a=typeof n.properties==`object`&&n.properties!==null?n.properties:null,o=typeof a?.directory==`string`?a.directory:null;if(o&&o.length>0)return o;let s=typeof a?.info==`object`&&a.info!==null?a.info:null,c=typeof s?.directory==`string`?s.directory:null;return c&&c.length>0?c:`global`}function HA(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.type==`string`?e:t.payload&&typeof t.payload==`object`&&typeof t.payload.type==`string`?t.payload:null}function UA(e){let t=`/api`;try{let e=B;typeof e.getBaseUrl==`function`&&(t=e.getBaseUrl())}catch{t=`/api`}let n=t.endsWith(`/`)?t:`${t}/`,r={};return e&&e.length>0&&(r.lastEventId=e),d()||(r.includeReasoning=`false`),c().websocket(`${n}global/event/ws`,Object.keys(r).length>0?r:void 0)}function WA(e){let t=UA(e);return ze(t)}function GA(e){let{sdk:t,onEvent:n,onFlushStart:o,onFlushEnd:s,onNormalizedEvent:c,onReconnect:l,onCompensation:u,onRecoveryContextCaptured:d,onDisconnect:p,onTransportActivity:m,onTransportSwitch:h,routeDirectory:g,transport:_=`auto`,heartbeatTimeoutMs:v=AA,reconnectDelayMs:y=kA,wsReadyTimeoutMs:b}=e,x=b??(a()?PA:NA),S=new AbortController,C=!1,w,T=0,E,D=0,O=null,k=new Map,A=e=>{let t=k.get(e);return t||(t={queue:[],buffer:[],coalesced:new Map,timer:void 0,last:0},k.set(e,t),t)},j=e=>{if(e.type===`session.status`)return`session.status:${e.properties.sessionID}`;if(e.type===`session.updated`){let t=e.properties;return t.info?.id?`session.updated:${t.info.id}`:void 0}if(e.type===`lsp.updated`)return`lsp.updated`;if(e.type===`message.part.delta`){let t=e.properties;return`message.part.delta:${t.messageID}:${t.partID}:${t.field}`}},ee=e=>{let t=k.get(e);if(!t||(t.timer&&=(clearTimeout(t.timer),void 0),t.queue.length===0))return;let r=t.queue;t.queue=t.buffer,t.buffer=r,t.queue.length=0,t.coalesced.clear(),t.last=Date.now(),As.pipeline.flush(r.length),o?.();try{for(let t of r)n(e,t)}finally{s?.()}t.buffer.length=0},te=()=>{for(let e of k.keys())ee(e)},ne=()=>{for(let e of k.values())e.timer&&=(clearTimeout(e.timer),void 0),e.queue.length=0,e.buffer.length=0,e.coalesced.clear()},re=e=>{let t=A(e);if(t.timer)return;let n=Date.now()-t.last;t.timer=setTimeout(()=>ee(e),Math.max(0,(Date.now()<I?EA:TA)-n))},ie=e=>new Promise(t=>setTimeout(t,e)),ae=e=>e instanceof DOMException&&e.name===`AbortError`||typeof e==`object`&&!!e&&e.name===`AbortError`,M=()=>typeof navigator==`object`&&navigator!==null&&navigator.onLine===!1,oe=()=>typeof document<`u`&&document.visibilityState!==`visible`,se=e=>{if(!e||typeof e!=`object`)return;let t=e.status;if(typeof t==`number`)return t;let n=e.response?.status;if(typeof n==`number`)return n},ce=e=>!(e<400||e>=500||e===408||e===429),le=e=>new Promise(t=>{if(e<=0||S.signal.aborted){t();return}let n=()=>{a!==void 0&&(clearTimeout(a),a=void 0),globalThis.window!==void 0&&(globalThis.window.removeEventListener(`online`,r),globalThis.window.removeEventListener(`openchamber:system-resume`,r)),typeof document<`u`&&document.removeEventListener(`visibilitychange`,i),S.signal.removeEventListener(`abort`,r)},r=()=>{n(),t()},i=()=>{typeof document<`u`&&document.visibilityState===`visible`&&r()},a=setTimeout(r,e);globalThis.window!==void 0&&(globalThis.window.addEventListener(`online`,r,{once:!0}),globalThis.window.addEventListener(`openchamber:system-resume`,r,{once:!0})),typeof document<`u`&&document.addEventListener(`visibilitychange`,i),S.signal.addEventListener(`abort`,r,{once:!0})}),ue=e=>{if(e<=0)return 0;if(M())return LA;let t=oe()?LA:IA,n=Math.min(e-1,RA);return Math.min(t,FA*2**n)},de=!1,fe,pe=Date.now(),N,me=_===`ws`?`ws`:`sse`,P=null,F=0,I=0,he=e=>{O||(O={lastEventId:w&&w.length>0?w:null,disconnectedAt:Date.now(),runtimeGeneration:f(),reason:e},d?.({lastEventId:O.lastEventId,disconnectedAt:O.disconnectedAt,runtimeGeneration:O.runtimeGeneration,reason:O.reason}))},ge=e=>{C||(C=!0,he(e),p?.(e))},_e=()=>{let e=O;O=null;let t=e!==null;u?.({lastEventId:e?.lastEventId??(w&&w.length>0?w:null),disconnectedAt:e?.disconnectedAt??null,runtimeGeneration:e?.runtimeGeneration??f(),reason:e?.reason??`ready`,transport:me,isReconnect:t})},ve=()=>{C=!1,F=0,te(),l?.(),_e()},ye=(e,t,n)=>{if(n&&typeof n.type==`string`&&n.type.startsWith(`session.next.`)){c?.(e,n);return}n&&c?.(e,n);let r=t,i=g?.(e,r)||e,a=A(i);if(r.type===`message.part.updated`){let e=r.properties.part,t=typeof e?.messageID==`string`?e.messageID:void 0,n=typeof e?.id==`string`?e.id:void 0;if(t&&n){let e=`message.part.delta:${t}:${n}:`;for(let t of a.coalesced.keys())t.startsWith(e)&&a.coalesced.delete(t)}}let o=j(r);if(o){let e=a.coalesced.get(o);if(e!==void 0){if(r.type===`message.part.delta`){let t=a.queue[e],n=r.properties;a.queue[e]={...r,properties:{...r.properties,delta:t.properties.delta+n.delta}}}else a.queue[e]=r;As.pipeline.coalesced(r.type,o);return}a.coalesced.set(o,a.queue.length)}a.queue.push(r),re(i)},be=(e,t)=>{let n=HA(t);if(!n)return`unusable`;let r=BA(n);if(r.status!==`event`)return r.status===`declined`?`declined`:`unusable`;let i=VA(e,n,r.event,r.normalized.locationDirectory);return ye(i,r.event,r.normalized),`ingested`},xe=()=>{pe=Date.now(),N&&clearTimeout(N),N=setTimeout(()=>{P=`${me}_heartbeat_timeout`,fe?.abort()},v)},Se=()=>{xe(),m?.()},L=()=>{N&&=(clearTimeout(N),void 0)},R=async(e,t)=>{if(t.aborted)throw new DOMException(`Aborted`,`AbortError`);let n,r=new Promise((e,r)=>{n=()=>r(new DOMException(`Aborted`,`AbortError`)),t.addEventListener(`abort`,n,{once:!0})});try{return await Promise.race([e,r])}finally{n&&t.removeEventListener(`abort`,n)}},Ce=async e=>{xe();let n=await R(t.global.event({signal:e,...w&&w.length>0?{headers:{"Last-Event-ID":w}}:{},onSseEvent:e=>{Se(),typeof e.id==`string`&&e.id.length>0&&(w=e.id)},onSseError:e=>{ae(e)||de||(de=!0,console.error(`[event-pipeline] SSE stream error`,e))}}),e);ve();let r=Date.now();Se();for await(let e of n.stream)Se(),de=!1,be(e,e.payload??e),!(Date.now()-r<OA)&&(r=Date.now(),await ie(0));if(!e.aborted){let e=Error(`Global event SSE stream closed`);throw e.reason=`sse_stream_closed`,e}},we=async e=>{try{await i()}catch(e){let t=e instanceof Error?e:Error(`Message stream WebSocket auth token unavailable`);throw _===`auto`&&(T=Date.now()+jA,t.code=`WS_FALLBACK`),t.reason=`ws_auth_token_unavailable`,t}if(e.aborted)throw new DOMException(`Aborted`,`AbortError`);await new Promise((t,n)=>{let i=!1,a=!1,o=0,s=WA(w),c=(e,t=!1)=>{(t||!a)&&_===`auto`&&(T=Date.now()+jA,e.code=`WS_FALLBACK`)},l=setTimeout(()=>{l=void 0;let e=Error(`Message stream WebSocket ready timeout`);c(e),f(e);try{s.close()}catch{}},x),u=()=>{l&&=(clearTimeout(l),void 0),s.onopen=null,s.onmessage=null,s.onerror=null,s.onclose=null},d=()=>{i||(i=!0,e.removeEventListener(`abort`,p),u(),t())},f=t=>{i||(i=!0,e.removeEventListener(`abort`,p),u(),n(t))},p=()=>{try{s.close()}catch{}d()};e.addEventListener(`abort`,p,{once:!0}),s.onopen=()=>{};let m=e=>{_===`auto`&&(T=Date.now()+jA);let t=Error(`Message stream WebSocket invalid frame`);t.reason=e,f(t);try{s.close()}catch{}};s.onmessage=e=>{let t=null;try{t=JSON.parse(String(e.data))}catch{m(`ws_invalid_frame:json`);return}if(!t||typeof t.type!=`string`){m(`ws_invalid_frame:type`);return}if(t.type===`ready`){Se(),a=!0,o=Date.now(),l&&=(clearTimeout(l),void 0),de=!1,ve();return}if(t.type===`error`){Se();let e=Error(t.message||`Message stream WebSocket error`);e.reason=`ws_error_frame:${t.message||`unknown`}`,c(e),f(e);try{s.close()}catch{}return}if(t.type===`backpressure`){Se(),I=Date.now()+DA;return}if(t.type!==`event`){m(`ws_invalid_frame:type`);return}let n=typeof t.eventId==`string`&&t.eventId.length>0?t.eventId:void 0;if(be({directory:t.directory,payload:t.payload},t.payload)===`unusable`){n&&(D=E===n?D+1:1,E=n,D>=MA&&(w=n,E=void 0,D=0)),m(`ws_invalid_frame:event_payload`);return}E=void 0,D=0,Se(),de=!1,n&&(w=n)},s.onerror=()=>{},s.onclose=t=>{if(e.aborted){d();return}let n=Error(`Global message stream WebSocket closed`);n.reason=a?`ws_closed:code=${t?.code??`?`}`:`ws_closed_before_ready`,a||r();let i=o>0?Date.now()-o:0;c(n,a&&i>0&&i<2e3),f(n)}})},Te=()=>typeof WebSocket==`function`?_===`ws`?`ws`:_===`sse`||T>Date.now()?`sse`:`ws`:`sse`;(async()=>{for(;!S.signal.aborted;){fe=new AbortController,pe=Date.now(),P=null;let e=y,t=Te();me=t;let n=()=>{P=`pipeline_stopped`,fe?.abort()};S.signal.addEventListener(`abort`,n);try{t===`ws`?await we(fe.signal):await Ce(fe.signal)}catch(n){let r=typeof n==`object`&&n?n.code:void 0;if(t===`ws`&&r===`WS_FALLBACK`)e=0,h?.();else if(!ae(n)){F+=1,de||(de=!0,console.error(`[event-pipeline] stream failed`,n));let r=typeof n==`object`&&n?n.reason:void 0,i=typeof n==`object`&&n?n.message:void 0,a=typeof r==`string`&&r.length>0?r:typeof i==`string`&&i.length>0?`${t}_error:${i.slice(0,80)}`:`${t}_error:unknown`;ge(a);let o=se(n);e=o!==void 0&&ce(o)?LA:ue(F)}}finally{S.signal.removeEventListener(`abort`,n),fe=void 0,L()}if(S.signal.aborted)return;P&&P!==`pipeline_stopped`&&(ge(P),F+=1,e=y>0?ue(F):0,P=null),e>0&&await le(e)}})().finally(te);let z=()=>{if(!(typeof document>`u`)){if(document.visibilityState===`hidden`){he(`visibility_hidden`);return}document.visibilityState===`visible`&&(Date.now()-pe<v||fe?.abort())}},Ee=e=>{e.persisted&&(he(`pageshow_persisted`),fe?.abort())},De=()=>{he(`system_resume`),fe&&(P=`${me}_system_resume`,fe.abort())},Oe=()=>{C&&(he(`online`),fe?.abort())},ke=()=>{fe?.abort()};return typeof document<`u`&&(document.addEventListener(`visibilitychange`,z),window.addEventListener(`pageshow`,Ee)),globalThis.window!==void 0&&(globalThis.window.addEventListener(`openchamber:system-resume`,De),globalThis.window.addEventListener(`online`,Oe),globalThis.window.addEventListener(`offline`,ke)),{cleanup:()=>{typeof document<`u`&&(document.removeEventListener(`visibilitychange`,z),window.removeEventListener(`pageshow`,Ee)),globalThis.window!==void 0&&(globalThis.window.removeEventListener(`openchamber:system-resume`,De),globalThis.window.removeEventListener(`online`,Oe),globalThis.window.removeEventListener(`offline`,ke)),S.abort(),L(),te()},reconnect:(e=`manual`)=>{e===`reasoning_projection`&&ne(),P=`${me}_${e}`,fe?.abort()}}}var KA=Ct({epoch:Tt().min(1),revision:bt().int().nonnegative(),serverNow:bt(),enabled:wt(),delayMs:xt(3e4),coverage:Ct({state:Et([`ready`,`reconciling`,`partial`]),failedDirectories:St(Tt())}),requests:St(Ct({requestID:Tt(),sessionID:Tt(),directory:Tt(),questionCount:bt(),state:Et([`counting`,`paused`,`disabled`,`submitting`,`uncertain`,`settled`]),deadlineAt:bt().nullable(),pauseReason:Et([`interaction`,`user`,`goal`]).nullable(),submittedBy:Et([`manual`,`auto`]).nullable(),resolution:Et([`replied`,`rejected`,`external`]).nullable()}))}),qA=Ct({outcome:Et([`ok`,`paused`,`delegated`,`submitted`,`claimed`,`uncertain`,`settled`,`not_found`,`disabled`,`error`]),snapshot:KA}),JA=0,YA=()=>({transport:u(),generation:f()}),XA=e=>e.transport===u()&&e.generation===f(),ZA=e=>[e.transport,`question-auto-delegate`,e.generation];function QA(e,t){return e?e.snapshot.epoch===t.snapshot.epoch?t.snapshot.revision<e.snapshot.revision||t.snapshot.revision===e.snapshot.revision&&t.sequence<e.sequence?e:{...t,sequence:Math.max(e.sequence,t.sequence),retiredEpochs:e.retiredEpochs}:t.sequence<e.sequence||e.retiredEpochs.includes(t.snapshot.epoch)?e:{...t,retiredEpochs:[...e.retiredEpochs,e.snapshot.epoch]}:t}var $A=(e,t)=>({snapshot:e,receivedAt:performance.now(),sequence:t,retiredEpochs:[]});function ej(e=YA()){return ct({queryKey:ZA(e),queryFn:async({signal:t})=>{if(!XA(e))throw Error(`Runtime changed`);let n=++JA,r=await _(`/api/question-auto-delegate`,{signal:t});if(!r.ok)throw Error(`Question snapshot: ${r.status}`);let i=KA.parse(await r.json());if(!XA(e)||t.aborted)throw Error(`Runtime changed`);return $A(i,n)},structuralSharing:(e,t)=>QA(e,t),staleTime:1/0,retry:1,refetchOnWindowFocus:`always`})}function tj(){let e=(0,H.c)(1);(0,K.useSyncExternalStore)(s,f,f);let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=ej(),e[0]=t):t=e[0],lt(t,R)}var nj=()=>R.getQueryData(ej().queryKey),rj=()=>R.ensureQueryData(ej()),ij=async()=>{let e=ZA(YA());await R.cancelQueries({queryKey:e,exact:!0},{revert:!1}),await R.invalidateQueries({queryKey:e,exact:!0})};async function aj(e,t,n){let r=YA(),i=++JA,a=await _(`/api/question-auto-delegate/requests/${encodeURIComponent(t.requestID)}/${e}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionID:t.sessionID,directory:t.directory,...n?{reason:n}:{}})}),o=qA.parse(await a.json());if(!XA(r))throw Error(`Runtime changed`);if(R.setQueryData(ZA(r),e=>QA(e,$A(o.snapshot,i))),ij(),!a.ok&&![`claimed`,`uncertain`].includes(o.outcome))throw Error(`Question ${e}: ${a.status}`);return o.outcome}var oj=new Set([`/`,`-`,`_`,`.`,` `,`:`,`\\`]);function sj(e){return e==null?[]:typeof e==`string`?e?[e]:[]:e.filter(e=>typeof e==`string`&&e.length>0)}function cj(e,t){if(!t)return 0;if(!e)return null;let n=e.toLowerCase(),r=t.toLowerCase(),i=n.indexOf(r);if(i<0)return null;let a=(n.length-r.length)/1e4;if(n===r)return-2;if(i===0)return-1+a;let o=n[i-1]??``;return(oj.has(o)?0:.5)+i/1e3+a}function lj(e,t,n,r){if(!t)return e.map(e=>({item:e,score:0}));let i=r?.limit??e.length,a=r?.threshold??.3,o=r?.noFuzzy??!1,s=t.toLowerCase(),c=[],l=[],u=new Set;for(let t of e){let e=sj(n(t));if(e.length===0)continue;let r=null,i=e[0].toLowerCase();for(let t of e){let e=t.toLowerCase(),n=cj(e,s);n!==null&&(r===null||n<r)&&(r=n,i=e)}if(r!==null){c.push({item:t,score:r,sortKey:i}),u.add(t);continue}if(!o)for(let n of e)l.push({item:t,text:n,sortKey:e[0].toLowerCase()})}if(l.length>0){let e=new Dt(l.map(e=>e.text),{threshold:a,ignoreLocation:!0,distance:100,includeScore:!0,minMatchCharLength:2}),n=new Map;for(let r of e.search(t)){let e=l[r.refIndex];if(!e||u.has(e.item))continue;let t=1+(r.score??1),i=n.get(e.item);(!i||t<i.score)&&n.set(e.item,{score:t,sortKey:e.sortKey})}for(let[e,t]of n)c.push({item:e,score:t.score,sortKey:t.sortKey})}return c.sort((e,t)=>e.score===t.score?e.sortKey.length===t.sortKey.length?e.sortKey.localeCompare(t.sortKey,void 0,{sensitivity:`accent`}):e.sortKey.length-t.sortKey.length:e.score-t.score),c.slice(0,i).map(({item:e,score:t})=>({item:e,score:t}))}var uj=je();function dj(e){let t=tj(),n=t.data?.snapshot.requests.find(t=>t.requestID===e.id&&t.sessionID===e.sessionID),r=`${f()}:${e.sessionID}:${e.id}`,[i,a]=K.useState({scope:r,pending:null,failed:null}),o=i.scope===r?i.pending:null,s=i.scope===r?i.failed:null,[c,l]=K.useState(null),u=c?.scope===r&&(!c.epoch||c.epoch===t.data?.snapshot.epoch),d=u&&(!n||![`submitting`,`uncertain`,`settled`].includes(n.state)),p=K.useRef(null),m=K.useRef(null),h=K.useRef(r);h.current=r;let g=pt(async(t,n=`user`)=>{if(u||p.current===r||n===`interaction`&&m.current===r)return;let i=nj(),o=i?.snapshot.requests.find(t=>t.requestID===e.id&&t.sessionID===e.sessionID);if(o&&(t===`pause`&&o.state!==`counting`||[`submitting`,`uncertain`,`settled`].includes(o.state))){n===`user`&&(a({scope:r,pending:null,failed:null}),m.current=null,ij());return}let s=f();p.current=r,m.current=null,a({scope:r,pending:t,failed:null});let c=r;try{let r=i??await rj();if(s!==f())throw Error(`Runtime changed`);let a=r.snapshot.requests.find(t=>t.requestID===e.id&&t.sessionID===e.sessionID);if(!a)throw Error(`Question identity unavailable`);if(t===`pause`&&a.state!==`counting`||[`submitting`,`uncertain`,`settled`].includes(a.state))return;let o=await aj(t,a,t===`pause`?n:void 0);if([`error`,`not_found`,`disabled`].includes(o))throw Error(`Question operation failed`)}catch{h.current===c&&(m.current=c,a({scope:c,pending:t,failed:t}))}finally{p.current===c&&(p.current=null),h.current===c&&a(e=>({...e,pending:null}))}});return{query:t,request:n,pending:o,failed:s,run:g,interaction:pt(e=>{e.target.closest(`[data-question-delegation-controls]`)||g(`pause`,`interaction`)}),submissionClaimed:pt(async n=>{n===`${f()}:${e.sessionID}:${e.id}`&&(l({scope:r,epoch:t.data?.snapshot.epoch}),a({scope:r,pending:null,failed:null}),await ij())}),claimed:u,awaitingClaim:d,scope:r}}function fj(e){let t=(0,H.c)(10),{data:n,deadlineAt:r}=e,{t:i}=ht(),[,a]=K.useReducer(pj,0),o=Math.max(0,r-n.snapshot.serverNow-(performance.now()-n.receivedAt));ft(a,o>0?250:null);let s;t[0]!==o||t[1]!==i?(s=o>0?i(`chat.questionDelegate.countdown`,{seconds:Math.ceil(o/1e3)}):i(`chat.questionDelegate.awaiting`),t[0]=o,t[1]=i,t[2]=s):s=t[2];let c;t[3]===s?c=t[4]:(c=(0,uj.jsx)(`span`,{className:`typography-micro tabular-nums text-muted-foreground`,children:s}),t[3]=s,t[4]=c);let l=`scaleX(${Math.min(1,o/n.snapshot.delayMs)})`,u;t[5]===l?u=t[6]:(u=(0,uj.jsx)(`div`,{"aria-hidden":!0,className:`absolute inset-x-0 bottom-0 h-0.5 overflow-hidden rounded-b-xl bg-muted/30`,children:(0,uj.jsx)(`div`,{className:`h-full origin-left bg-primary/60 transition-transform duration-300 ease-linear motion-reduce:transition-none`,style:{transform:l}})}),t[5]=l,t[6]=u);let d;return t[7]!==c||t[8]!==u?(d=(0,uj.jsxs)(uj.Fragment,{children:[c,u]}),t[7]=c,t[8]=u,t[9]=d):d=t[9],d}function pj(e){return e+1}function mj(e){let t=(0,H.c)(43),{delegation:n}=e,{t:r}=ht(),{query:i,request:a,pending:o,failed:s,run:c,claimed:l,awaitingClaim:u}=n,d=l||a?.state===`submitting`||a?.state===`uncertain`||a?.state===`settled`,f=i.isError||i.data?.snapshot.coverage.state!==`ready`,p;t[0]!==u||t[1]!==o||t[2]!==i.data||t[3]!==a||t[4]!==r?(p=u?(0,uj.jsx)(`span`,{role:`status`,children:r(`chat.questionDelegate.uncertain`)}):o?(0,uj.jsx)(`span`,{role:`status`,children:r(o===`pause`?`chat.questionDelegate.pausing`:`chat.questionDelegate.submitting`)}):a?.state===`counting`&&a.deadlineAt!==null&&i.data?(0,uj.jsx)(fj,{data:i.data,deadlineAt:a.deadlineAt}):(0,uj.jsx)(`span`,{role:`status`,children:r(a?.state===`paused`?`chat.questionDelegate.paused`:a?.state===`disabled`?`chat.questionDelegate.disabled`:a?.state===`submitting`?`chat.questionDelegate.submitting`:a?.state===`uncertain`?`chat.questionDelegate.uncertain`:a?.state===`settled`?a.submittedBy===`auto`&&a.resolution===`replied`?`chat.questionDelegate.success`:`chat.questionDelegate.settled`:`common.loading`)}),t[0]=u,t[1]=o,t[2]=i.data,t[3]=a,t[4]=r,t[5]=p):p=t[5];let m;t[6]!==i.data||t[7]!==f||t[8]!==r?(m=f&&i.data?(0,uj.jsx)(`div`,{role:`status`,children:r(`chat.questionDelegate.stale`)}):null,t[6]=i.data,t[7]=f,t[8]=r,t[9]=m):m=t[9];let h;t[10]!==s||t[11]!==i.isError||t[12]!==r?(h=i.isError||s?(0,uj.jsx)(`div`,{role:`alert`,className:`text-[var(--status-error)]`,children:r(s===`pause`?`chat.questionDelegate.pauseFailed`:s===`delegate`?`chat.questionDelegate.delegateFailed`:`chat.questionDelegate.loadFailed`)}):null,t[10]=s,t[11]=i.isError,t[12]=r,t[13]=h):h=t[13];let g;t[14]!==p||t[15]!==m||t[16]!==h?(g=(0,uj.jsxs)(`div`,{className:`min-w-0 flex-1 basis-40 typography-micro text-muted-foreground`,children:[p,m,h]}),t[14]=p,t[15]=m,t[16]=h,t[17]=g):g=t[17];let _;t[18]!==u||t[19]!==l||t[20]!==s||t[21]!==o||t[22]!==i||t[23]!==c||t[24]!==r?(_=(i.isError||s||u)&&(0,uj.jsx)(gt,{variant:`ghost`,size:`xs`,disabled:!!o||i.isFetching,onClick:()=>s&&!l?void c(s):void i.refetch(),children:r(l?`chat.questionDelegate.refreshStatus`:`chat.questionDelegate.retry`)}),t[18]=u,t[19]=l,t[20]=s,t[21]=o,t[22]=i,t[23]=c,t[24]=r,t[25]=_):_=t[25];let v;t[26]!==d||t[27]!==o||t[28]!==a?.state||t[29]!==c||t[30]!==r?(v=a?.state===`counting`&&!d&&(0,uj.jsx)(gt,{variant:`ghost`,size:`xs`,disabled:!!o,onClick:()=>void c(`pause`),children:r(`chat.questionDelegate.pause`)}),t[26]=d,t[27]=o,t[28]=a?.state,t[29]=c,t[30]=r,t[31]=v):v=t[31];let y;t[32]!==d||t[33]!==o||t[34]!==a||t[35]!==c||t[36]!==r?(y=a&&!d&&(0,uj.jsx)(gt,{variant:`outline`,size:`xs`,disabled:!!o,onClick:()=>void c(`delegate`),children:r(`chat.questionDelegate.delegate`)}),t[32]=d,t[33]=o,t[34]=a,t[35]=c,t[36]=r,t[37]=y):y=t[37];let b;return t[38]!==g||t[39]!==_||t[40]!==v||t[41]!==y?(b=(0,uj.jsxs)(`div`,{"data-question-delegation-controls":!0,className:`relative flex flex-wrap items-center gap-x-2 gap-y-1 border-t border-border/20 px-2 py-1.5 pb-2`,children:[g,_,v,y]}),t[38]=g,t[39]=_,t[40]=v,t[41]=y,t[42]=b):b=t[42],b}function hj(){let e=(0,H.c)(5),t=tj(),{t:n}=ht(),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=f(),e[0]=r):r=e[0];let i=r,a=K.useRef(void 0),o,s;return e[1]!==t.data||e[2]!==n?(o=()=>{let e=t.data;if(!e)return;let r=a.current;if(a.current={generation:i,data:e},!r||r.generation!==i)return;let o=r.data;if(o.snapshot.epoch!==e.snapshot.epoch||o.snapshot.revision===e.snapshot.revision||document.visibilityState!==`visible`)return;let s=new Map(o.snapshot.requests.map(gj));for(let t of e.snapshot.requests)s.get(t.requestID)?.state!==`settled`&&t.state===`settled`&&t.submittedBy===`auto`&&t.resolution===`replied`&&hE.success(n(`chat.questionDelegate.success`),{id:`question-delegate:${e.snapshot.epoch}:${t.requestID}`})},s=[i,t.data,n],e[1]=t.data,e[2]=n,e[3]=o,e[4]=s):(o=e[3],s=e[4]),K.useEffect(o,s),null}function gj(e){return[e.requestID,e]}function _j(e){let t=new Set;for(let[n,r]of Object.entries(e.session_status??{}))r&&r.type!==`idle`&&t.add(n);for(let[n,r]of Object.entries(e.permission??{}))(r?.length??0)>0&&t.add(n);for(let[n,r]of Object.entries(e.question??{}))(r?.length??0)>0&&t.add(n);return t}function vj(e,t){let n=new Set(Array.from(t).filter(Boolean));if(n.size!==0)for(let t of n)delete e.todo[t],delete e.session_diff[t],delete e.session_status[t],e.session_status_observed_at&&delete e.session_status_observed_at[t],e.session_error_at&&delete e.session_error_at[t],delete e.permission[t],delete e.question[t]}function yj(e){let t=[],n=new Set([e.keep,...Array.from(e.preserve??[])]);e.seen.has(e.keep)&&e.seen.delete(e.keep),e.seen.add(e.keep);for(let r of e.seen){if(e.seen.size-t.length<=e.limit)break;n.has(r)||t.push(r)}for(let n of t)e.seen.delete(n);return t}var bj=e=>{let t=e.time?.updated;if(typeof t==`number`&&Number.isFinite(t))return t;let n=e.time?.created;return typeof n==`number`&&Number.isFinite(n)?n:0},xj=(e,t)=>e?bj(t)<bj(e):!1;function Sj(e,t,n){return e.session_error_at?.[t]!==n&&(e.session_error_at={...e.session_error_at,[t]:n},!0)}function Cj(e,t){if(e.session_error_at?.[t]===void 0)return!1;let n={...e.session_error_at};return delete n[t],e.session_error_at=n,!0}function wj(e,t){return e===t?!0:!e||e.type!==t.type?!1:e.type!==`retry`||t.type===`retry`&&e.attempt===t.attempt&&e.message===t.message&&e.next===t.next}function Tj(e){return e.type===`global.disposed`||e.type===`server.connected`?{type:`refresh`}:e.type===`project.updated`?{type:`project`,project:e.properties}:null}function Ej(e,t){let n=[...e.projects],r=bs.search(n,t.id,e=>e.id);return r.found?n[r.index]={...n[r.index],...t}:n.splice(r.index,0,t),{...e,projects:n}}function Dj(e,t,n){t&&(n?.(t,void 0),vj(e,[t]))}var Oj=e=>e.title===`smartfetch-secondary`;function kj(e,t,n,r){return n.found?(e.session.splice(n.index,1),Oj(t)&&Dj(e,t.id,r),t.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0):!1}function Aj(e,t,n){switch(t.type){case`server.instance.disposed`:return n?.onRefresh?.(``),!1;case`session.created`:{let r=gp(t.properties.info),i=e.session,a=bs.search(i,r.id,e=>e.id);return Cp(r)?a.found&&xj(i[a.index],r)?!1:(a.found?i[a.index]=r:(i.splice(a.index,0,r),jj(e),r.parentID||(e.sessionTotal+=1)),!0):kj(e,r,a,n?.onSetSessionTodo)}case`session.updated`:{let r=gp(t.properties.info),i=e.session,a=bs.search(i,r.id,e=>e.id);return a.found&&xj(i[a.index],r)?!1:!Cp(r)||r.time.archived?kj(e,r,a,n?.onSetSessionTodo):(a.found?i[a.index]=r:(i.splice(a.index,0,r),jj(e)),!0)}case`session.deleted`:{let r=t.properties.info,i=e.session,a=bs.search(i,r.id,e=>e.id);return a.found&&i.splice(a.index,1),Dj(e,r.id,n?.onSetSessionTodo),r.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0}case`session.diff`:{let n=t.properties;return e.session_diff[n.sessionID]=mp(n.diff),!0}case`todo.updated`:{let r=t.properties;return e.todo[r.sessionID]=r.todos,n?.onSetSessionTodo?.(r.sessionID,r.todos),!0}case`session.status`:{let r=t.properties;r.status.type===`idle`&&n?.onServerSessionIdle?.(r.sessionID);let i=!1;return(r.status.type===`busy`||r.status.type===`retry`)&&(i=Cj(e,r.sessionID)),n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),wj(e.session_status[r.sessionID],r.status)?!!n?.now||i:(e.session_status[r.sessionID]=r.status,!0)}case`session.idle`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),wj(e.session_status[r.sessionID],i)?!!n?.now:(e.session_status[r.sessionID]=i,!0)}case`session.error`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i={type:`idle`},a=n?.now?.();a!==void 0&&(e.session_status_observed_at[r.sessionID]=a);let o=a!==void 0&&Sj(e,r.sessionID,a);return wj(e.session_status[r.sessionID],i)?a!==void 0||o:(e.session_status[r.sessionID]=i,!0)}case`message.updated`:case`message.removed`:case`message.part.updated`:case`message.part.removed`:case`message.part.delta`:return!1;case`vcs.branch.updated`:{let n=t.properties;return e.vcs?.branch!==n.branch&&(e.vcs={branch:n.branch},!0)}case`permission.asked`:{let n=t.properties,r=[...e.permission[n.sessionID]??[]],i=bs.search(r,n.id,e=>e.id);return i.found?r[i.index]=n:r.splice(i.index,0,n),e.permission[n.sessionID]=r,!0}case`permission.replied`:{let n=t.properties,r=e.permission[n.sessionID];if(!r)return!1;let i=bs.search(r,n.requestID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),e.permission[n.sessionID]=t,!0}return!1}case`question.asked`:{let n=t.properties,r=[...e.question[n.sessionID]??[]],i=bs.search(r,n.id,e=>e.id);return i.found?r[i.index]=n:r.splice(i.index,0,n),e.question[n.sessionID]=r,!0}case`question.replied`:case`question.rejected`:{let n=t.properties,r=e.question[n.sessionID];if(!r)return!1;let i=bs.search(r,n.requestID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),e.question[n.sessionID]=t,!0}return!1}case`lsp.updated`:return n?.onLoadLsp?.(),!1;default:return!1}}function jj(e){if(e.session.length<=e.limit)return;let t=new Set(Object.entries(e.permission??{}).filter(([,e])=>e&&e.length>0).map(([e])=>e));for(;e.session.length>e.limit;){let n=e.session[0];if(t.has(n.id))break;e.session.shift()}}var Mj=De()(e=>({...yl,actions:{set:t=>e(t),reset:()=>e(yl)}}));function Nj(e){if(!e)return!1;for(let t of Object.values(e.question??{}))if(t&&t.length>0)return!0;for(let t of Object.values(e.permission??{}))if(t&&t.length>0)return!0;return!1}function Pj(e){let t=Math.max(0,e.stores.length-e.max),n=e.graceMs??0,r=e.stores.filter(t=>!e.pins.has(t)).filter(t=>!e.hasPendingBlockingRequests?.(t)).slice().sort((t,n)=>(e.state.get(t)?.lastAccessAt??0)-(e.state.get(n)?.lastAccessAt??0)),i=[];for(let a of r){let r=e.state.get(a)?.lastAccessAt??0,o=e.now-r,s=o>=e.ttl;!s&&t<=0||!s&&o<n||(i.push(a),t>0&&--t)}return i}function Fj(e){return!(!e.directory||!e.hasStore||e.pinned||e.booting||e.loadingSessions||e.hasPendingBlockingRequests)}function Ij(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t|=0}return Math.abs(t).toString(36)}function Lj(e){let t=e.slice(0,12).replace(/[^a-zA-Z0-9]/g,`_`);return`oc.dir.${Ij(m().trim()||`default`)}.${t}.${Ij(e)}`}function Rj(e,t){return`${Lj(e)}.${t}`}function zj(e,t){try{let n=localStorage.getItem(Rj(e,t));return n?JSON.parse(n):void 0}catch{return}}function Bj(e,t,n){try{let r=Rj(e,t);n===void 0?localStorage.removeItem(r):localStorage.setItem(r,JSON.stringify(n))}catch{}}function Vj(e){return{vcs:zj(e,`vcs`),projectMeta:zj(e,`projectMeta`),icon:zj(e,`icon`)}}function Hj(e){try{localStorage.removeItem(`${Lj(e)}.sessions`)}catch{}}function Uj(e,t){Bj(e,`vcs`,t)}function Wj(e,t){Bj(e,`projectMeta`,t)}function Gj(e,t){Bj(e,`icon`,t)}function Kj(e){let t=Vj(e);Hj(e);let n=De()(e=>({...vl,vcs:t.vcs??vl.vcs,projectMeta:t.projectMeta??vl.projectMeta,icon:t.icon??vl.icon,patch:t=>e(t),replace:t=>e(t)}));return n.subscribe((t,n)=>{t.vcs!==n.vcs&&Uj(e,t.vcs),t.projectMeta!==n.projectMeta&&Wj(e,t.projectMeta),t.icon!==n.icon&&Gj(e,t.icon)}),n}var qj=class{children=new Map;lifecycle=new Map;pins=new Map;disposers=new Map;registrySubscribers=new Set;generations=new Map;evictionScheduled=!1;onBootstrap;onDispose;isBooting;isLoadingSessions;notifyRegistrySubscribers(){for(let e of this.registrySubscribers)e()}configure(e){this.onBootstrap=e.onBootstrap,this.onDispose=e.onDispose,this.isBooting=e.isBooting,this.isLoadingSessions=e.isLoadingSessions}mark(e){let t=F(e);t&&(this.lifecycle.set(t,{lastAccessAt:Date.now()}),this.scheduleEviction())}scheduleEviction(){this.evictionScheduled||(this.evictionScheduled=!0,queueMicrotask(()=>{this.evictionScheduled=!1,this.runEviction()}))}pin(e){let t=F(e);t&&(this.pins.set(t,(this.pins.get(t)??0)+1),this.mark(t))}unpin(e){let t=F(e);if(!t)return;let n=(this.pins.get(t)??0)-1;if(n>0){this.pins.set(t,n);return}this.pins.delete(t),this.scheduleEviction()}pinned(e){return(this.pins.get(F(e))??0)>0}ensureChild(e,t){let n=F(e);if(!n)throw Error(`No directory provided to ensureChild`);let r=this.children.get(n);return r||(r=Kj(n),this.children.set(n,r),this.generations.set(n,(this.generations.get(n)??0)+1),this.notifyRegistrySubscribers()),this.mark(n),(t?.bootstrap??!0)&&r.getState().status===`loading`&&this.onBootstrap?.(n),r}getChild(e){return this.children.get(F(e))}captureChild(e,t){let n=F(e),r=this.ensureChild(n,t);return{directory:n,generation:this.generations.get(n)??0,store:r}}isCurrentChildCapture(e){let t=F(e.directory);return this.children.get(t)===e.store&&this.generations.get(t)===e.generation}disposeDirectory(e){let t=F(e);if(!Fj({directory:t,hasStore:this.children.has(t),pinned:this.pinned(t),booting:this.isBooting?.(t)??!1,loadingSessions:this.isLoadingSessions?.(t)??!1,hasPendingBlockingRequests:this.hasPendingBlockingRequestsForDirectory(t)}))return!1;this.lifecycle.delete(t),this.children.delete(t),this.notifyRegistrySubscribers();let n=this.disposers.get(t);return n&&(n(),this.disposers.delete(t)),this.onDispose?.(t),!0}runEviction(e){let t=[...this.children.keys()];if(t.length===0)return;let n=Pj({stores:t,state:this.lifecycle,pins:new Set(t.filter(e=>this.pinned(e))),max:30,ttl:_l,graceMs:gl,now:Date.now(),hasPendingBlockingRequests:e=>this.hasPendingBlockingRequestsForDirectory(e)}).filter(t=>t!==e);for(let e of n)this.disposeDirectory(e)}hasPendingBlockingRequestsForDirectory(e){return Nj(this.getChild(e)?.getState())}update(e,t){let n=this.getChild(e);if(!n)return;let r=t(n.getState());n.setState(r)}getState(e){return this.getChild(e)?.getState()}disposeAll(){for(let e of[...this.children.keys()])this.children.delete(e);this.notifyRegistrySubscribers(),this.lifecycle.clear(),this.pins.clear(),this.disposers.clear()}subscribeRegistry(e){return this.registrySubscribers.add(e),()=>{this.registrySubscribers.delete(e)}}subscribeAll(e){let t=new Map,n=()=>{let n=new Set(this.children.keys());for(let[e,r]of t.entries())n.has(e)||(r(),t.delete(e));for(let[n,r]of this.children.entries())t.has(n)||t.set(n,r.subscribe(e))};n();let r=this.subscribeRegistry(()=>{n(),e()});return()=>{r();for(let e of t.values())e();t.clear()}}subscribeAllSelected(e,t){let n=new Map,r=()=>{let r=new Set(this.children.keys());for(let[e,t]of n.entries())r.has(e)||(t(),n.delete(e));for(let[r,i]of this.children.entries())n.has(r)||n.set(r,i.subscribe((n,r)=>{Object.is(e(n),e(r))||t()}))};r();let i=this.subscribeRegistry(()=>{r(),t()});return()=>{i();for(let e of n.values())e();n.clear()}}},Jj=e=>{let t=e.time?.updated;if(typeof t==`number`&&Number.isFinite(t))return t;let n=e.time?.created;return typeof n==`number`&&Number.isFinite(n)?n:0},Yj=e=>{let t=e.directory??``,n=e.parentID??``;return[e.id,e.title??``,e.time?.created??0,e.time?.archived??0,t,n,e.share?.url??``].join(`|`)},Xj=e=>{switch(e?.type){case`retry`:return 4;case`busy`:return 3;case`idle`:return 1;default:return 0}},Zj=e=>{let t=e?.message;return typeof t==`string`?t:null},Qj=(e,t)=>{let n=e?.[t];return typeof n==`number`?n:null},$j=(e,t)=>e?.type===t?.type&&Zj(e)===Zj(t)&&Qj(e,`attempt`)===Qj(t,`attempt`)&&Qj(e,`next`)===Qj(t,`next`),eM=(e,t)=>{let n=e.session_status?.[t];if(!n)return null;let r=e.session.find(e=>e.id===t);return{status:n,sessionUpdatedAt:r?Jj(r):-1}},tM=(e,t)=>e?t.sessionUpdatedAt===e.sessionUpdatedAt?Xj(t.status)>=Xj(e.status):t.sessionUpdatedAt>e.sessionUpdatedAt:!0,nM=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(Yj(e[n])!==Yj(t[n]))return!1;return!0},rM=(e,t)=>{if(e===t)return!0;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n){if(!(r in t))return!1;let n=e[r],i=t[r];if(!$j(n,i))return!1}return!0};function iM(e,t){let n=new Map;for(let r of e)for(let e of r.session){if(!e?.id||t?.has(e.id)||e.parentID||!Cp(e))continue;let r=n.get(e.id);(!r||Jj(e)>=Jj(r))&&n.set(e.id,e)}return Array.from(n.values()).sort((e,t)=>Jj(t)-Jj(e))}function aM(e){let t=new Map;for(let n of e)for(let e of Object.keys(n.session_status??{})){let r=eM(n,e);r&&tM(t.get(e),r)&&t.set(e,r)}let n={};for(let[e,r]of t)n[e]=r.status;return n}function oM(e,t){if(!t)return;let n;for(let r of e){let e=r.session.find(e=>e.id===t);e&&(!n||Jj(e)>=Jj(n))&&(n=e)}return n}function sM(e,t){if(!t)return;let n;for(let r of e){let e=eM(r,t);e&&tM(n,e)&&(n=e)}return n?.status}var cM=(e,t)=>e<t?-1:+(e>t);function lM(e,t){if(e.error){let n=e.error,r=e.response?.status,i=typeof n==`object`&&n&&`message`in n?String(n.message):String(n),a=Error(`${t} failed${r?` (${r})`:``}: ${i}`);throw r!==void 0&&(a.status=r),a}if(e.data===void 0){let e=Error(`${t} returned no data`);throw e.status=503,e}return e.data}var uM=e=>!e||e.length===0?``:e.map(e=>e.id).sort(cM).join(`|`);function dM(e){return e.reduce((e,t)=>{if(!t?.id||!t.sessionID)return e;let n=e[t.sessionID];return n?n.push(t):e[t.sessionID]=[t],e},{})}function fM(e,t,n){let r=n,i=new Set([...Object.keys(e),...Object.keys(t)]);for(let a of i){let i=t[a];i!==e[a]&&(r===n&&(r={...n}),i?r[a]=i:delete r[a])}return r}function pM(e,t){return t.find(t=>t.worktree===e||t.sandboxes?.includes(e))?.id}async function mM(e,t){let n=await Promise.allSettled([cp(()=>e.path.get().then(e=>t({path:lM(e,`path.get`)}))),cp(()=>e.global.config.get().then(e=>t({config:lM(e,`global.config.get`)}))),cp(()=>e.project.list().then(e=>{t({projects:lM(e,`project.list`).filter(e=>!!e?.id).filter(e=>!!e.worktree&&!e.worktree.includes(`opencode-test`)).sort((e,t)=>cM(e.id,t.id))})}))]),r=n.filter(e=>e.status===`rejected`).map(e=>e.reason);if(r.length&&console.error(`[bootstrap] global bootstrap failed`,r[0]),r.length===n.length){let e=r[0]instanceof Error?r[0].message:String(r[0]);try{let t=await _(`/health`,{signal:AbortSignal.timeout(4e3)});if(t.ok){let n=await t.json();n.lastOpenCodeError?e=n.lastOpenCodeError:n.openCodeRunning||(e=`OpenCode process is not running`)}}catch{}t({ready:!0,error:{type:`init`,message:e}})}else t({ready:!0,error:void 0})}async function hM(e){let{directory:t,sdk:n,getState:r,set:i,global:a}=e,o=r(),s=o.status!==`complete`,c=pM(t,a.projects);if(c&&i({project:c}),Object.keys(o.config??{}).length===0&&Object.keys(a.config??{}).length>0){let e=a.config;i({config:e}),zd(t,e)}s&&i({status:`partial`});let l=await Promise.allSettled([c?Promise.resolve():cp(()=>n.project.current().then(e=>i({project:lM(e,`project.current`).id}))),cp(()=>n.config.get().then(e=>{let n=lM(e,`config.get`);i({config:n}),zd(t,n)})),cp(()=>n.path.get().then(e=>{let n=lM(e,`path.get`);i({path:n});let r=pM(n?.directory??t,a.projects);r&&i({project:r})})),cp(async()=>{let e=Date.now(),a=r().session_status,o=lM(await n.session.status(t?{directory:t}:void 0),`session.status`),s=r().session_status,c={...r().session_status_observed_at};for(let t of Object.keys(o))s[t]===a[t]&&(c[t]=e);i({session_status:fM(a,s,o),session_status_observed_at:c,session_status_snapshot_at:e})})]),u=l.filter(e=>e.status===`rejected`).map(e=>e.reason),[,,d]=l,f=d.status===`rejected`&&!r().project;if(u.length===l.length||f){console.error(`[bootstrap] directory bootstrap failed for ${t}`,u[0]);return}s&&i({status:`complete`}),Promise.allSettled([cp(()=>n.mcp.status().then(e=>i({mcp:lM(e,`mcp.status`)}))),cp(()=>n.lsp.status().then(e=>i({lsp:lM(e,`lsp.status`)}))),cp(()=>n.vcs.get().then(e=>{let t=r();if(e.error)throw Error(`vcs.get failed: ${String(e.error)}`);i({vcs:e.data??t.vcs})})),cp(async()=>{let e=r(),a=new Map(Object.entries(e.question??{}).map(([e,t])=>[e,uM(t)])),o=await n.question.list(t?{directory:t}:void 0);if(o.error){let e=o.response?.status,t=Error(`question.list failed${e?` (${e})`:``}: ${String(o.error)}`);throw e!==void 0&&(t.status=e),t}let s=dM((o.data??[]).filter(e=>!!e?.id&&!!e.sessionID)),c=r(),l={...c.question};for(let[e,t]of Object.entries(s))l[e]=t.filter(e=>!!e?.id).sort((e,t)=>cM(e.id,t.id));for(let e of a.keys()){if(s[e])continue;let t=a.get(e)??``;uM(c.question[e])===t&&delete l[e]}i({question:l})}),cp(async()=>{let e=r(),a=new Map(Object.entries(e.permission??{}).map(([e,t])=>[e,uM(t)])),o=await n.permission.list(t?{directory:t}:void 0);if(o.error){let e=o.response?.status,t=Error(`permission.list failed${e?` (${e})`:``}: ${String(o.error)}`);throw e!==void 0&&(t.status=e),t}let s=dM((o.data??[]).filter(e=>!!e?.id&&!!e?.sessionID)),c=r(),l={...c.permission};for(let[e,t]of Object.entries(s))l[e]=t.filter(e=>!!e?.id).sort((e,t)=>cM(e.id,t.id));for(let e of a.keys()){if(s[e])continue;let t=a.get(e)??``;uM(c.permission[e])===t&&delete l[e]}i({permission:l})})]).then(e=>{let n=e.filter(e=>e.status===`rejected`).map(e=>e.reason);n.length&&console.error(`[bootstrap] deferred phase failed for ${t}`,n[0])})}var gM=De()(()=>({streamingMessageIds:new Map,messageStreamStates:new Map}));function _M(){gM.setState({streamingMessageIds:new Map,messageStreamStates:new Map})}var vM=1e3;function yM(e,t){let n=Date.now(),r=gM.getState(),i=r.streamingMessageIds,a=r.messageStreamStates,o=new Map,s=new Map(a),c=!1,l=new Set;for(let[t,n]of Object.entries(e.session_status??{}))n.type===`busy`&&l.add(t);let u=(e,t)=>{o.set(e,null);let r=s.get(t);r&&r.phase===`streaming`&&s.set(t,{...r,phase:`completed`,completedAt:n}),c=!0},d=t?.directory??``,f=U();t?.store;for(let e of l){let t=[];if(f&&d&&(t=nd(f.getTranscript(G(d,e)))),t.length===0)continue;let r=null;for(let e=t.length-1;e>=0&&t[e].role!==`user`;e--)if(t[e].role===`assistant`){r=t[e];break}if(!r){let t=i.get(e);t&&u(e,t);continue}i.get(e)!==r.id&&(c=!0),o.set(e,r.id);let a=s.get(r.id);!a||a.phase!==`streaming`?(s.set(r.id,{phase:`streaming`,startedAt:a?.startedAt??n,lastUpdateAt:n}),c=!0):n-a.lastUpdateAt>=vM&&(s.set(r.id,{...a,lastUpdateAt:n}),c=!0)}for(let[e,t]of i)t&&(l.has(e)||u(e,t));c&&gM.setState({streamingMessageIds:o,messageStreamStates:s})}function bM(e){let t=e.listCanonicalScopes(e.sessionID).filter(t=>t.sessionID===e.sessionID&&t.transport===e.transport&&t.generation===e.generation);return t.length>0?[...t]:[{directory:e.resolvedDirectory,sessionID:e.sessionID,transport:e.transport,generation:e.generation}]}function xM(e){return!e.idleSessionID||!e.directory||e.directory===`global`?{action:`none`}:e.parentID?{action:`materialize-parent`,sessionID:e.parentID}:e.idleSessionID===e.activeSessionID&&e.directory===e.activeDirectory?{action:`materialize-now`,sessionID:e.idleSessionID}:{action:`defer-until-viewed`,sessionID:e.idleSessionID}}var SM=new Set,CM=(e,t)=>`${e}\n${t}`;function wM(e,t){!e||e===`global`||!t||SM.add(CM(e,t))}function TM(e,t){let n=CM(e,t);return SM.has(n)?(SM.delete(n),!0):!1}var EM=(e,t)=>{if(e.type!==`session.created`&&e.type!==`session.updated`&&e.type!==`session.deleted`)return null;let n=e.properties;if(!n||typeof n!=`object`)return null;let r=n.info;if(!r||typeof r!=`object`)return null;let i=r;if(typeof i.id!=`string`||!i.time)return null;let a=gp(i),o=typeof t==`string`&&t!==`global`?t.trim():``,s=a.directory;return!o||typeof s==`string`&&s.trim()?a:{...a,directory:o}},DM=e=>{let t=X.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null},OM=e=>{let t=e;return JSON.stringify([e.title??``,e.time?.archived??0,e.share?.url??``,t.directory??``,t.parentID??``,t.hasChildren??!1])},kM=(e,t)=>{if(e.type===`session.created`||e.type===`session.updated`){let n=EM(e,t);if(n){let e=DM(n.id);(!e||OM(e)!==OM(n))&&!xj(e,n)&&X.getState().upsertSession(n)}return}if(e.type===`session.deleted`){let t=e.properties?.sessionID??EM(e)?.id;t&&X.getState().removeSessions([t])}};function AM(e){return Object.entries(e.session_status??{}).filter(([,e])=>e&&e.type!==`idle`).map(([e])=>e)}function jM(e,t){let n=t?.viewedSession;return!n?.sessionId||n.directory!==t?.directory?[]:[n.sessionId]}function MM(e,t){let n=new Set;for(let[t,r]of Object.entries(e.session_status??{}))r&&r.type!==`idle`&&n.add(t);let r=new Set;for(let t of e.session){let e=t.parentID;e&&r.add(e)}for(let e of r)n.add(e);let i=t?.viewedSession;if(i?.sessionId&&i.directory===t?.directory){let t=i.sessionId;(e.session.some(e=>e.id===t)||Object.hasOwn(e.session_status??{},t))&&n.add(t)}return Array.from(n)}var NM=e=>{let t=new Map;for(let n of e)t.set(n.id,n);return t},PM=(e,t,n)=>{let r=n??NM(t),i=[],a=new Set,o=e;for(;o&&!a.has(o);)a.add(o),i.push(o),o=r.get(o)?.parentID;return i},FM=e=>{let{autoAccept:t,sessions:n,sessionById:r,sessionID:i}=e;if(Object.keys(t).length===0)return!1;let a=PM(i,n,r);for(let e of a)if(Object.prototype.hasOwnProperty.call(t,e))return t[e]===!0;return!1},IM=t({usePermissionStore:()=>BM}),LM=async e=>{if(!e.ok)throw Error(`Permission auto-accept request failed (${e.status})`);let t=await e.json();if(!t.sessions||typeof t.sessions!=`object`)throw Error(`Invalid permission auto-accept response`);let n={};for(let[e,r]of Object.entries(t.sessions))e&&typeof r==`boolean`&&(n[e]=r);return{sessions:n}},RM=async(e,t)=>LM(await _(e,t)),zM=(e,t,n)=>FM({autoAccept:e,sessions:[],sessionById:t,sessionID:n}),BM=De()(Oe((e,t)=>({autoAccept:{},loaded:!1,saving:!1,hydrate:async()=>{let n=await RM(`/api/permission-auto-accept`),r=Object.entries(t().autoAccept).filter(([e,t])=>!e.includes(`/`)&&typeof t==`boolean`);if(Object.keys(n.sessions).length===0&&r.length>0)for(let[e,t]of r)!e||typeof t!=`boolean`||(n=await RM(`/api/permission-auto-accept/sessions/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:t})}));e({autoAccept:n.sessions,loaded:!0})},reset:()=>{e({autoAccept:{},loaded:!1,saving:!1})},applySnapshot:t=>{let n={};for(let[e,r]of Object.entries(t.sessions??{}))e&&typeof r==`boolean`&&(n[e]=r);e({autoAccept:n,loaded:!0})},isSessionAutoAccepting:e=>{if(!e)return!1;let n=t().autoAccept;return Object.keys(n).length!==0&&zM(n,Hd(),e)},setSessionAutoAccept:async(t,n)=>{if(t){if(Se()){let r=await _(`/api/notifications/auto-accept`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionId:t,enabled:n})});if(!r.ok)throw Error(`Permission auto-accept request failed (${r.status})`);e(e=>({autoAccept:{...e.autoAccept,[t]:n},loaded:!0}));return}e({saving:!0});try{let r=$.getState().getDirectoryForSession(t)??B.getDirectory()??void 0;e({autoAccept:(await RM(`/api/permission-auto-accept/sessions/${encodeURIComponent(t)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:n,directory:r})})).sessions,loaded:!0})}finally{e({saving:!1})}}}}),{name:`permission-store`,storage:Ye(),partialize:e=>({autoAccept:e.autoAccept})})),VM=De(()=>({statusById:new Map})),HM=e=>e===`busy`?`busy`:e===`retry`?`retry`:`idle`,UM=e=>os(e)??e,WM=(e,t,n)=>{VM.setState(r=>{let i=r.statusById.get(e);if(n===`idle`){if(!i)return r;let t=new Map(r.statusById);return t.delete(e),{statusById:t}}if(i&&i.status===n&&i.directory===t)return r;let a=new Map(r.statusById);return a.set(e,{status:n,directory:t}),{statusById:a}})},GM=(e,t)=>{switch(t.type){case`session.status`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;let r=HM(n.status?.type);WM(n.sessionID,UM(e),r);return}case`session.idle`:case`session.error`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&WM(n.sessionID,UM(e),`idle`);return}default:return}},KM=(e,t,n)=>{let r=UM(e),i=new Set(n??[]);VM.setState(e=>{let n=!1,a=new Map(e.statusById);for(let[o,s]of e.statusById)(s.directory===r||i.has(o))&&!(o in t)&&(a.delete(o),n=!0);for(let[e,i]of Object.entries(t)){let t=HM(i?.type),o=a.get(e);if(t===`idle`){o&&o.directory===r&&(a.delete(e),n=!0);continue}(!o||o.status!==t||o.directory!==r)&&(a.set(e,{status:t,directory:r}),n=!0)}return n?{statusById:a}:e})},qM=e=>typeof e==`string`&&e.trim().length>0;function JM(e){let t=e.trim();return t.length<=18?t:`${t.slice(0,10)}…${t.slice(-4)}`}function YM(e,t){return vt(_t.getState().dictionary,e,t)}function XM(e,t=`missing-directory`){let n=qM(e)?JM(e):null;if(t===`missing-session-id`||!n){hE.error(YM(`sessions.toast.openFailedMissingSessionId`));return}if(t===`missing-directory`){hE.error(YM(`sessions.toast.openFailedMissingDirectory`,{sessionId:n}));return}hE.error(YM(`sessions.toast.openFailed`,{sessionId:n}))}function ZM(e,t,n={}){let r=n.notify!==!1;if(!qM(e))return r&&XM(null,`missing-session-id`),{ok:!1,reason:`missing-session-id`,sessionId:null};if(!qM(t))return r&&XM(e,`missing-directory`),{ok:!1,reason:`missing-directory`,sessionId:e.trim()};let i=e.trim(),a=t.trim();return n.phoneShell&&!Ge()?(_G.getState().openSession({sessionId:i,directory:a}),{ok:!0,sessionId:i,directory:a}):n.switchToChat!==!1&&!Je.getState().setActiveMainTab(`chat`)?(r&&XM(i,`tab-switch-blocked`),{ok:!1,reason:`tab-switch-blocked`,sessionId:i}):($.getState().setCurrentSession(i,a),{ok:!0,sessionId:i,directory:a})}var QM=null,$M=e=>{QM=e},eN=(e,t)=>typeof QM==`function`&&typeof e==`string`&&e.trim()&&typeof t==`string`&&t.trim()?(QM(e.trim(),t.trim()),{ok:!0,sessionId:e.trim(),directory:t.trim()}):ZM(e,t,{switchToChat:!0}),tN=(e,t)=>!e||!t?null:`${e}:${t}`,nN=({permission:e,directory:t,isViewed:n,pendingIds:r,show:i,openSession:a})=>{let o=tN(e.sessionID,e.id);if(n||!o||r.has(o))return!1;r.add(o);let s=typeof e.permission==`string`&&e.permission.trim().length>0?e.permission:`Agent needs your approval`;return i(`Permission needed`,{id:`permission-${o}`,description:s,action:{label:`Open session`,onClick:()=>a(e.sessionID,t)}}),!0},rN=15e3,iN=new Map,aN=(e,t)=>`${e}\n${t}`;function oN(e){if(!e.runtimeKey||!e.directory||!e.sessionId||!e.status||e.status.type===`idle`)return;let t=Date.now();for(let[e,n]of iN)n.expiresAt<=t&&iN.delete(e);iN.set(aN(e.runtimeKey,e.directory),{runtimeKey:e.runtimeKey,directory:e.directory,sessionId:e.sessionId,status:e.status,expiresAt:Date.now()+rN})}function sN(e,t){let n=iN.get(aN(e,t));return n?n.expiresAt<=Date.now()?(iN.delete(aN(e,t)),null):n:null}var cN=[],lN=[],uN=[],dN={sessionID:``,revertMessageID:void 0,records:lN,history:uN},fN=e=>{if(e?.type!==`text`)return``;let t=e.text;return typeof t==`string`?t:``},pN=e=>{for(let t of e){let e=fN(t);if(e.length>0)return e}return``},mN=(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]?.message!==t[n]?.message||e[n]?.parts!==t[n]?.parts)return!1;return!0},hN=(e,t=dN)=>{let n=e.sessionID;if(!n)return dN;let r=e.messages,i=e.revertMessageID,a=[];for(let t=r.length-1;t>=0;--t){let n=r[t];n.role===`user`&&(i&&Cs(r,n.id,i)||a.push({message:n,parts:e.parts[n.id]??cN}))}if(a.length===0)return t.sessionID===n&&t.revertMessageID===i&&t.records.length===0?t:{sessionID:n,revertMessageID:i,records:lN,history:uN};if(t.sessionID===n&&t.revertMessageID===i&&mN(t.records,a))return t;let o=[];for(let e of a){let t=pN(e.parts);t.length>0&&o.push(t)}return{sessionID:n,revertMessageID:i,records:a,history:o}};function gN(e,t){let n=e.getChild(t.directory)?.getState();if(!n)return`unknown`;let r=n.session_status?.[t.sessionID];return r?r.type:n.session_status_snapshot_at===void 0?`unknown`:`idle`}function _N(e,t){return t.map(t=>{let n=e.getChild(t.directory)?.getState();return`${t.directory}\n${t.sessionID}\n${n?.session_status?.[t.sessionID]?.type??``}\n${n?.session_status_snapshot_at??``}`}).join(`\0`)}function vN(e,t,n){let r=new Map,i=new Map;for(let e of t){let t=i.get(e.directory)??[];t.push(e),i.set(e.directory,t)}let a=()=>{let t=!1;for(let[n,a]of r)i.has(n)&&e.getChild(n)||(a(),r.delete(n),t=!0);for(let[a,o]of i){if(r.has(a))continue;let i=e.getChild(a);i&&(r.set(a,i.subscribe((e,t)=>{for(let r of o)if(e.session_status?.[r.sessionID]!==t.session_status?.[r.sessionID]||e.session_status_snapshot_at!==t.session_status_snapshot_at){n();return}})),t=!0)}return t};a();let o=e.subscribeRegistry(()=>{a()&&n()});return()=>{o();for(let e of r.values())e();r.clear()}}function yN(e,t,n){if(!e)return null;let r=t?.id===e?t:null,i=n?.id===e?n:null;return r??i}function bN(e,t,n,r){if(!t||t.id!==e||!t.parentID)return null;let i=t.parentID,a=n?.id===i?n??null:null;return{id:i,directory:a?.directory??t.directory??r??null,session:a}}var xN=`__openchamber_sync_context__`,SN=globalThis,CN=SN[xN]??(0,K.createContext)(null);SN[xN]=CN;function wN(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function TN(e,t){if(!e.error)return e.data;let n=e.response?.status;throw Error(`${t} failed${n?` (${n})`:``}: ${wN(e.error)}`)}function EN(){let e=(0,K.useContext)(CN);if(!e)throw Error(`useSyncSystem must be used within <SyncProvider>`);return e}function DN(e){return Array.from(e.children.values(),e=>e.getState())}function ON(e,t,n){let r=(0,H.c)(7),i=t===void 0?Object.is:t,{childStores:a}=EN(),o=(0,K.useRef)(void 0),s=(0,K.useRef)(!1),c;r[0]!==a||r[1]!==i||r[2]!==e?(c=()=>{let t=e(DN(a));return s.current&&i(o.current,t)?o.current:(o.current=t,s.current=!0,t)},r[0]=a,r[1]=i,r[2]=e,r[3]=c):c=r[3];let l=c,u;return r[4]!==a||r[5]!==n?(u=e=>n?n(a,e):a.subscribeAll(e),r[4]=a,r[5]=n,r[6]=u):u=r[6],K.useSyncExternalStore(u,l,l)}function kN(e){let t=(0,H.c)(4),n;t[0]===e?n=t[1]:(n=t=>sM(t,e),t[0]=e,t[1]=n);let r;return t[2]===e?r=t[3]:(r=(t,n)=>t.subscribeAllSelected(t=>t.session_status?.[e],n),t[2]=e,t[3]=r),ON(n,Object.is,r)}function AN(e){let t=(0,H.c)(5),n=kN(e),r;t[0]===e?r=t[1]:(r=t=>t.statusById.get(e)?.status,t[0]=e,t[1]=r);let i=VM(r),a;return t[2]!==i||t[3]!==n?(a=jN(n,i),t[2]=i,t[3]=n,t[4]=a):a=t[4],a}function jN(e,t){if(e)return e;if(t===`busy`)return{type:`busy`};if(t===`retry`)return{type:`retry`,attempt:0,message:``,next:0}}var MN=[],NN={};function PN(e){let t=(0,H.c)(4),n=e?.enabled??!0,r;t[0]===n?r=t[1]:(r=e=>n?aM(e):NN,t[0]=n,t[1]=r);let i;return t[2]===n?i=t[3]:(i=(e,t)=>n?e.subscribeAllSelected(FN,t):IN,t[2]=n,t[3]=i),ON(r,rM,i)}function FN(e){return e.session_status}function IN(){}function LN(e){let t=(0,H.c)(5),n=e?.enabled??!0,r=X(BN),i;t[0]!==n||t[1]!==r?(i=e=>n?iM(e,r):MN,t[0]=n,t[1]=r,t[2]=i):i=t[2];let a;return t[3]===n?a=t[4]:(a=(e,t)=>n?e.subscribeAllSelected(RN,t):zN,t[3]=n,t[4]=a),ON(i,nM,a)}function RN(e){return e.session}function zN(){}function BN(e){return e.pendingDeletionIds}var VN=!1,HN=0,UN=0,WN=1500,GN=new Set([`patch`,`step-start`,`step-finish`]),KN=5e3,qN=4e4,JN=15e3,YN=6e4,XN=6e4,ZN=e=>!e||e.length===0?``:e.map(e=>e.id).sort(QN).join(`|`),QN=(e,t)=>e<t?-1:+(e>t),$N=e=>JSON.stringify(e);function eP(e,t){return $N(e)===$N(t)}var tP=5e3,nP=new Map,rP=(e,t)=>`${e}:${t}`;function iP(e,t){try{let n=U();return n?Ll(n.getTranscript(G(e,t))):!1}catch{return!1}}async function aP(e,t){try{if(!U())return;await Iu(e,t)}catch{}}function oP(e,t,n,r){if(!e||e===`global`||!t)return;let i=rP(e,t),a=nP.get(i);if(a&&Date.now()-a.enqueuedAt<tP){Promise.resolve().then(()=>{iP(e,t)&&aP(e,t)});return}nP.set(i,{sessionID:t,directory:e,enqueuedAt:Date.now(),request:r}),Promise.resolve().then(async()=>{let a=n.getChild(e);if(!a){nP.delete(i);return}try{await cP(e,t,a,r)}catch{}finally{nP.delete(i)}})}function sP(e,t,n){let r=t.admissionHint?.sessionID??t.domainActivityHint?.sessionID??(typeof t.properties.sessionID==`string`?t.properties.sessionID:void 0);if(!(!r||!e||e===`global`)){if(t.domainActivityHint?.kind===`activity`){let t=n.getChild(e);t&&By(t,r)}t.domainActivityHint?.kind===`terminal`&&r===uP&&e===lP&&oP(e,r,n,{reason:`session-idle`})}}async function cP(e,t,n,r){let i=n.getState().session_status?.[t];As.recovery.materializing({reason:r?.reason??`ensure-session-messages`,directory:e,sessionID:t,messageID:r?.messageID,partID:r?.partID});try{let a=()=>{try{return U()?.getTranscript(G(e,t)).liveRevision}catch{return}},o=a(),s=await nx({directory:e,sessionID:t,limit:vh(),signal:AbortSignal.timeout(3e4),purpose:`materialize`});if(r?.isStale?.())return`skipped`;let c=ix({directory:e,sessionID:t,purpose:`materialize`,page:s,capturedLiveRevision:o,liveRevision:a(),skipPartTypes:GN});return iP(e,t)&&await aP(e,t),c.applied?(Ox({directory:e,sessionID:t,store:n,isStale:r?.isStale}),s.records.length===0||i&&i.type!==`idle`&&!r?.isStale?.()&&await Wy(e,n,[t]),`ready`):`skipped`}catch{return`error`}}var lP=``,uP=``,dP=null,fP=``,pP=``,mP=new Map,hP=15e3,gP=(e,t)=>`${e}\n${t}`;function _P(e=Date.now()){for(let[t,n]of mP.entries())n<=e&&mP.delete(t)}var vP=new Set,yP=new Set,bP=(e,t)=>!e||!t?null:`${e}:${t}`,xP=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},SP=(e,t)=>{if(e.type!==`openchamber:notification`)return!1;let n=e.properties;if(!n||typeof n!=`object`)return!0;let r=n;if((r.desktopNotificationDelivered===!0||r.desktopStdoutActive===!0)&&m()===`local`)return!0;let i=b()?.notifications;return i?.notifyAgentCompletion&&i.notifyAgentCompletion({title:xP(r.title),body:xP(r.body),tag:xP(r.tag),kind:xP(r.kind),sessionId:xP(r.sessionId),assistantID:xP(r.assistantID),directory:xP(r.directory)??(t&&t!==`global`?t:void 0),requireHidden:r.requireHidden===!0}).catch(e=>{console.warn(`[notifications] failed to dispatch UI notification`,e)}),!0};function CP(e,t){!e||!t||!dP||TM(e,t)&&oP(e,t,dP,{reason:`session-idle`})}function wP(e){dP=e,e&&CP(lP,uP)}function TP(e,t){lP=e,uP=t,CP(e,t)}function EP(e,t,n){if(!e||!t)return;let r=gP(e,t);if(!n){mP.delete(r);return}mP.set(r,Date.now()+hP)}function DP(e,t){if(!e||!t){fP=``,pP=``;return}fP=e,pP=t}function OP(){let e=[],t=new Set,n=(n,r)=>{if(!n||!r)return;let i=gP(n,r);t.has(i)||(t.add(i),e.push({directory:n,sessionID:r}))};return n(fP,pP),n(lP,uP),e}function kP(){return typeof document<`u`&&document.hasFocus()}function AP(e,t){return t?lP&&uP&&e===lP&&t===uP&&kP()?!0:(_P(),mP.has(gP(e,t))):!1}function jP(){return VN||Date.now()-HN<WN}function MP(e){return!lP||!uP||e!==lP?null:{directory:lP,sessionId:uP}}function NP(e,t){return MM(t,{directory:e,viewedSession:MP(e)})}function PP(e,t,n,r=qN,i=JN){return!(e<=0||n-e<r||n-t<i)}function FP({isViewed:e,status:t,lastTransportActivityAt:n,lastDomainActivityAt:r,lastFullResyncAt:i,now:a,transportStaleThresholdMs:o=qN,domainStaleThresholdMs:s=YN,recoveryCooldownMs:c=XN}){return!(!e||t?.type!==`busy`&&t?.type!==`retry`||n<=0||a-n>=o||r<=0||a-r<s||a-i<c)}var IP=Se(),LP=(e,t)=>{!IP||typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:vscode-notification-event`,{detail:{directory:e,payload:t}}))},RP=()=>({sessionDirectoryById:new Map,messageSessionById:new Map,sessionMessageIdsById:new Map}),zP=e=>{if(!e||e===`global`)return e;let t=e.replace(/\\/g,`/`).replace(/^([a-z]):/,(e,t)=>t.toUpperCase()+`:`);return t.length>1?t.replace(/\/+$/,``):t},BP=e=>{let t=e.properties;if(!t||typeof t!=`object`)return null;let n=t;if(e.type===`message.updated`){let e=n.info;if(!e||typeof e!=`object`)return null;let t=e.sessionID;return typeof t==`string`&&t.length>0?t:null}if(e.type===`message.removed`||e.type===`session.status`||e.type===`session.idle`||e.type===`session.error`||e.type===`todo.updated`||e.type===`permission.asked`||e.type===`permission.replied`||e.type===`question.asked`||e.type===`question.replied`||e.type===`question.rejected`||e.type===`session.deleted`){let e=n.sessionID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`message.part.updated`){let e=n.sessionID;if(typeof e==`string`&&e.length>0)return e;let t=n.part;if(!t||typeof t!=`object`)return null;let r=t.sessionID;return typeof r==`string`&&r.length>0?r:null}if(e.type===`message.part.delta`||e.type===`message.part.removed`){let e=n.sessionID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`session.created`||e.type===`session.updated`){let e=n.info;if(!e||typeof e!=`object`)return null;let t=e.id;return typeof t==`string`&&t.length>0?t:null}return null},VP=e=>{let t=e.properties;if(!t||typeof t!=`object`)return null;let n=t;if(e.type===`message.updated`){let e=n.info;if(!e||typeof e!=`object`)return null;let t=e.id;return typeof t==`string`&&t.length>0?t:null}if(e.type===`message.removed`||e.type===`message.part.delta`||e.type===`message.part.removed`){let e=n.messageID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`message.part.updated`){let e=n.part;if(!e||typeof e!=`object`)return null;let t=e.messageID;return typeof t==`string`&&t.length>0?t:null}return null},HP=(e,t,n)=>{!t||!n||n===`global`||e.sessionDirectoryById.set(t,n)},UP=(e,t,n,r)=>{if(!t)return;HP(e,t,n);let i=e.sessionMessageIdsById.get(t),a=new Set;for(let n of r)n?.id&&(a.add(n.id),e.messageSessionById.set(n.id,t));if(i)for(let t of i)a.has(t)||e.messageSessionById.delete(t);e.sessionMessageIdsById.set(t,a)},WP=(e,t,n,r)=>{if(!t||!n)return;HP(e,t,r),e.messageSessionById.set(n,t);let i=e.sessionMessageIdsById.get(t);i?i.add(n):e.sessionMessageIdsById.set(t,new Set([n]))},GP=(e,t,n)=>{if(!t)return;let r=n??e.messageSessionById.get(t);if(e.messageSessionById.delete(t),!r)return;let i=e.sessionMessageIdsById.get(r);i&&(i.delete(t),i.size===0&&e.sessionMessageIdsById.delete(r))},KP=(e,t)=>{if(!t)return;e.sessionDirectoryById.delete(t);let n=e.sessionMessageIdsById.get(t);if(n)for(let t of n)e.messageSessionById.delete(t);e.sessionMessageIdsById.delete(t)},qP=(e,t,n)=>{let r=new Set;for(let i of n.session)i?.id&&(r.add(i.id),HP(e,i.id,t));try{let n=U(),i=n?.getCacheBudget?.().listCanonical({directory:t});if(i)for(let a of i){if(a.scope.directory!==t)continue;r.add(a.scope.sessionID),HP(e,a.scope.sessionID,t);let i=n?.getTranscript?.(G(t,a.scope.sessionID));if(i){let n=nd(i);UP(e,a.scope.sessionID,t,n)}}}catch{}for(let[n,i]of e.sessionDirectoryById)i===t&&(r.has(n)||KP(e,n))},JP=(e,t,n)=>{for(let[r,i]of t.children){let t=i.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e))return HP(n,e,r),r}try{let t=U()?.getCacheBudget?.().listCanonical()?.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory)??[],r=[...new Set(t)];if(r.length===1){let t=r[0];return HP(n,e,t),t}}catch{}return null},YP=(e,t,n)=>{let r=e.getChild(t);if(!r)return!1;let i=r.getState();if(i.session.some(e=>e.id===n)||Object.prototype.hasOwnProperty.call(i.session_status??{},n))return!0;try{return(U()??W(t,r)).hasSession?.(G(t,n))??!1}catch{return!1}},XP=(e,t,n)=>{try{let e=U();if(e&&e.getParts(G(t,n),n).length>0)return!0}catch{}return!1},ZP=e=>!lP||!uP?null:e.getChild(lP)?lP:null,QP=(e,t,n,r)=>{let i=zP(t),a=BP(n);if(a){if(i&&i!==`global`&&YP(r,i,a))return HP(e,a,i),i;let t=e.sessionDirectoryById.get(a);if(t&&r.getChild(t))return t;let n=JP(a,r,e);if(n)return n}let o=VP(n);if(o){if(i&&i!==`global`&&XP(r,i,o))return i;let t=e.messageSessionById.get(o);if(t){let n=e.sessionDirectoryById.get(t);if(n&&r.getChild(n))return n}if(XP(r,i,o))return i;for(let[e]of r.children)if(XP(r,e,o))return e;let n=ZP(r);if(n)return n}if((a||o)&&(!i||i===`global`)&&r.children.size===1){let e=r.children.keys().next().value;if(typeof e==`string`&&e.length>0)return e}return i},$P=(e,t,n,r)=>{if(e)return e;if(t){let e=r.messageSessionById.get(t);if(e)return e}if(n&&n===lP&&uP)return uP};function eF(e,t){let n=BP(e)??(e.type===`session.deleted`?e.properties.info?.id:void 0);if(n)return n;let r=VP(e);return r?t.get(r):void 0}function tF(e,t){return e===t}var nF=e=>e.type===`session.created`||e.type===`session.updated`||e.type===`session.deleted`||e.type===`message.updated`||e.type===`message.removed`||e.type===`message.part.updated`||e.type===`message.part.removed`||e.type===`message.part.delta`,rF=(e,t,n)=>{if(!t||t===`global`)return;let r=BP(n);switch(r&&HP(e,r,t),n.type){case`session.created`:case`session.updated`:{let r=n.properties.info;r?.id&&HP(e,r.id,t);return}case`session.deleted`:{let t=n.properties.sessionID;t&&KP(e,t);return}case`message.updated`:{let r=n.properties.info;r?.id&&r.sessionID&&WP(e,r.sessionID,r.id,t);return}case`message.removed`:{let t=n.properties;t.messageID&&GP(e,t.messageID,t.sessionID);return}case`message.part.updated`:{let r=n.properties,i=r.part,a=i?.sessionID??r.sessionID,o=i?.messageID;o&&a&&WP(e,a,o,t);return}default:return}};async function iF(e,t,n){let r=t.getState(),i=new Set([...r.session.map(e=>e.id),...Object.keys(r.session_status??{}),...Object.keys(r.question??{}),...Object.keys(r.permission??{})]),a=n??Array.from(i);if(a.length!==0){try{let n=new Map(a.map(e=>[e,ZN(r.question[e])])),o=await B.listPendingQuestions({directories:[e]}),s={};for(let e of o){if(!e?.id||!e.sessionID||!i.has(e.sessionID))continue;let t=s[e.sessionID];t?t.push(e):s[e.sessionID]=[e]}for(let e of Object.keys(s))s[e].sort((e,t)=>e.id<t.id?-1:+(e.id>t.id));for(let[t,n]of Object.entries(s)){let i=new Set((r.question[t]??[]).map(e=>e.id));if(!AP(e,t))for(let r of n){if(i.has(r.id))continue;let n=bP(t,r.id);if(!n||vP.has(n))continue;vP.add(n);let a=r.questions?.[0],o=a?.header?.trim()||`Input needed`,s=a?.question?.trim()||`Agent is waiting for your response`;hE.info(o,{id:`question-${n}`,description:s,action:{label:`Open session`,onClick:()=>eN(t,e)}})}}t.setState(e=>{let t={...e.question};for(let[e,n]of Object.entries(s))t[e]=n;for(let r of a){if(s[r])continue;let i=n.get(r)??``;ZN(e.question[r])===i&&delete t[r]}return{question:t}})}catch{}try{let n=new Map(a.map(e=>[e,ZN(r.permission[e])])),o=await B.listPendingPermissions({directories:[e]}),s={};for(let e of o){if(!e?.id||!e.sessionID||!i.has(e.sessionID))continue;let t=s[e.sessionID];t?t.push(e):s[e.sessionID]=[e]}for(let e of Object.keys(s))s[e].sort((e,t)=>e.id<t.id?-1:+(e.id>t.id));let c=BM.getState(),l=Se()?Object.keys(s).filter(e=>c.isSessionAutoAccepting(e)):[];if(l.length>0){let e=new Map,t=new Map;await Promise.all(l.flatMap(n=>(s[n]??[]).map(async r=>{try{let i=await B.fetchPermission(r.sessionID,r.id);if(i.state===`ok`){await RC(r.sessionID,r.id,`once`);let t=e.get(n)??new Set;t.add(r.id),e.set(n,t)}else if(i.state===`resolved`){let e=t.get(n)??new Set;e.add(r.id),t.set(n,e)}}catch{}})));for(let n of l){let r=e.get(n),i=t.get(n);if(!r&&!i)continue;let a=e=>r?.has(e)||i?.has(e)||!1,o=(s[n]??[]).filter(e=>!a(e.id));o.length>0?s[n]=o:delete s[n]}}for(let[t,n]of Object.entries(s)){let i=new Set((r.permission[t]??[]).map(e=>e.id)),a=AP(e,t);if(!a)for(let t of n)i.has(t.id)||nN({permission:t,directory:e,isViewed:a,pendingIds:yP,show:(e,t)=>hE.info(e,t),openSession:eN})}t.setState(e=>{let t={...e.permission};for(let[e,n]of Object.entries(s))t[e]=n;for(let r of a){if(s[r])continue;let i=n.get(r)??``;ZN(e.permission[r])===i&&delete t[r]}return{permission:t}})}catch{}}}function aF(e,t,n){n?.statusOnly}function oF(e){return e.isFirstConnect&&!e.disconnectedBeforeFirstConnect}function sF(e){return{resyncBlockingRequests:!0,ingestRoutingIndex:!e?.statusOnly}}async function cF(e,t,n,r,i,a){let o=NP(e,t.getState());await Wy(e,t,o);let s=jM(NP(e,t.getState()),{directory:e,viewedSession:MP(e)});if(s.length>0){let a=B.getScopedSdkClient(e);await Promise.all(s.map(async o=>{let s=i(o);As.recovery.materializing({reason:r,directory:e,sessionID:o});let c=(await cp(async()=>{let e=await a.session.get({sessionID:o});return TN(e,`session.get`),e}).catch(()=>null))?.data;if(c&&tF(s,i(o))){let r=gp(c);t.setState(e=>{let t=e.session.findIndex(e=>e.id===r.id),n=e.session,i=!1,a=e.sessionTotal;return t>=0?eP(n[t],r)||(n=[...e.session],n[t]=r,i=!0):(n=[...e.session],n.push(r),n.sort((e,t)=>QN(e.id,t.id)),r.parentID||(a+=1),i=!0),i?{session:n,sessionTotal:a}:e}),HP(n,r.id,e)}let l=i(o),u=t.getState(),d=u.session_status?.[o],f=u.session_status_observed_at?.[o],p=()=>!tF(l,i(o)),m=l;$g(e,o);try{let r=await nx({directory:e,sessionID:o,limit:vh(),signal:AbortSignal.timeout(3e4),purpose:`recovery`});if(p()||!ix({directory:e,sessionID:o,purpose:`recovery`,page:r,capturedLiveRevision:m,liveRevision:i(o),skipPartTypes:GN}).applied)return;let a=Au().getTranscript(G(e,o));UP(n,o,e,a.messageOrder.map(e=>a.messagesByID[e]).filter(e=>!!e)),Ox({directory:e,sessionID:o,store:t,transcript:a,isStale:p}),await Gy({directory:e,sessionID:o,store:t,statusBeforePull:d,statusObservedAtBeforePull:f,hasMessages:a.messageOrder.length>0,isStale:p})}catch{}finally{e_(e,o)}}))}let c=sF(a);c.resyncBlockingRequests&&await iF(e,t,o),c.ingestRoutingIndex&&qP(n,e,t.getState())}function lF(e){try{let t=U(),n=u(),r=f();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>G(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function uF(e){let t=BP(e)??void 0;if(t)return t;if(e.type===`message.updated`)return e.properties.info?.sessionID??void 0}var dF=null,fF=0;function pF(e){return`${e.directory}\0${e.sessionID}\0${e.transport??``}\0${e.generation??``}`}function mF(){fF===0&&(dF={byScope:new Map,routing:[],debug:[]}),fF+=1}function hF(){if(fF===0||(--fF,fF>0))return;let e=dF;if(dF=null,e)try{for(let t of e.byScope.values()){let n=Mu(t.scope,{type:`sse-event-batch`,events:t.events})??{applied:!1,changed:!1};if(n.changed)for(let n of e.debug)n.transcriptSessionID===t.transcriptSessionID&&(n.changed=!0);let r=n.materialization;if(r){let e=t.eventMessageIDs.find(e=>typeof e==`string`),n=$P(r.sessionID??t.transcriptSessionID,r.messageID??e,t.scope.directory,t.routingIndex);n&&oP(t.scope.directory,n,t.childStores,{reason:r.reason,messageID:r.messageID,partID:r.partID})}}for(let t of e.debug)t.changed?As.dispatch.eventApplied(t.payloadType,t.transcriptSessionID,t.eventMessageID):As.dispatch.eventNoChange(t.payloadType,t.transcriptSessionID,t.eventMessageID);for(let t of e.routing)rF(t.routingIndex,t.resolvedDirectory,t.payload)}finally{dF=null,fF=0}}function gF(e,t,n,r,i,a){let o=bM({sessionID:t,resolvedDirectory:n,transport:u(),generation:f(),listCanonicalScopes:lF});if(dF){for(let n of o){let o=pF(n),s=dF.byScope.get(o);s||(s={scope:n,events:[],transcriptSessionID:t,eventMessageIDs:[],childStores:i,routingIndex:a},dF.byScope.set(o,s)),s.events.push(e),s.eventMessageIDs.push(r)}dF.debug.push({payloadType:e.type,transcriptSessionID:t,eventMessageID:r,changed:!1}),dF.routing.push({routingIndex:a,resolvedDirectory:n,payload:e});return}let s=!1;for(let n of o){let o=Mu(n,{type:`sse-event`,event:e})??{applied:!1,changed:!1};o.changed&&(s=!0);let c=o.materialization;if(c){let e=$P(c.sessionID??t,c.messageID??r,n.directory,a);e&&oP(n.directory,e,i,{reason:c.reason,messageID:c.messageID,partID:c.partID})}}s?As.dispatch.eventApplied(e.type,t,r):As.dispatch.eventNoChange(e.type,t,r),rF(a,n,e)}function _F(e,t,n,r){if(t.type===`openchamber:worktree-bootstrap-status`){let e=t.properties;if(e&&typeof e==`object`&&!Array.isArray(e)){let t=e,n=typeof t.directory==`string`?t.directory:``;n&&nk(n,{status:t.status,error:typeof t.error==`string`?t.error:null,updatedAt:typeof t.updatedAt==`number`?t.updatedAt:Date.now()})}return}if(t.type===`openchamber:question-auto-delegate-changed`){ij();return}if(t.type===`openchamber:permission-auto-accept.updated`){let e=t.properties;if(e&&typeof e==`object`){let t=e;t.sessions&&typeof t.sessions==`object`&&BM.getState().applySnapshot({sessions:t.sessions})}return}let i=QP(r,e,t,n);if(SP(t,i))return;if(kM(t,i),GM(i,t),i===`global`||!i){if(Vl(t.type)){let e=uF(t);if(e){gF(t,e,i||`global`,VP(t)??void 0,n,r);return}}let e=jP(),a=Tj(t);if(!a)return;if(a.type===`refresh`)e||Mj.setState({reload:`pending`});else if(a.type===`project`){let e=Mj.getState();Mj.setState({projects:Ej(e,a.project).projects})}if((t.type===`server.connected`||t.type===`global.disposed`)&&!e)for(let e of n.children.keys()){let t=n.getChild(e);t&&t.getState().status!==`loading`&&(t.setState({status:`loading`,session_status_snapshot_at:void 0}),n.ensureChild(e))}return}let a=n.getChild(i),o=i;if(!a){let e=BP(t);if(e){let t=JP(e,n,r);t&&(a=n.getChild(t),o=t)}}if(!a){if(Vl(t.type)){let e=uF(t);if(e){gF(t,e,o,VP(t)??void 0,n,r);return}}let e=Tj(t);if(e?.type===`refresh`)Mj.setState({reload:`pending`});else if(e?.type===`project`){let t=Mj.getState();Mj.setState({projects:Ej(t,e.project).projects})}return}if(n.mark(o),t.type===`permission.asked`){let e=t.properties;if(BM.getState().isSessionAutoAccepting(e.sessionID)){rF(r,o,t),Se()&&RC(e.sessionID,e.id,`once`).catch(()=>void 0);return}let n=a.getState().session.find(t=>t.id===e.sessionID)??X.getState().activeSessions.find(t=>t.id===e.sessionID);if(n&&!n.parentID){let t=AP(o,e.sessionID);nN({permission:e,directory:o,isViewed:t,pendingIds:yP,show:(e,t)=>hE.info(e,t),openSession:eN})}}if(t.type===`permission.replied`){let e=t.properties,n=tN(e.sessionID,e.requestID);n&&(yP.delete(n),hE.dismiss(`permission-${n}`))}if(t.type===`question.asked`){let e=t.properties,n=e.sessionID,r=a.getState().session.find(e=>e.id===n)??X.getState().activeSessions.find(e=>e.id===n);if(r&&!r.parentID){let t=bP(n,e.id);if(!AP(o,n)&&t&&!vP.has(t)){vP.add(t);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;hE.info(i,{id:`question-${t}`,description:a,action:{label:`Open session`,onClick:()=>eN(n,o)}})}}}if(t.type===`question.replied`||t.type===`question.rejected`){let e=t.properties,n=bP(e.sessionID,e.requestID);n&&(vP.delete(n),hE.dismiss(`question-${n}`))}if(t.type===`session.idle`){let e=t.properties.sessionID,n=a.getState().session.find(t=>t.id===e)??X.getState().activeSessions.find(t=>t.id===e);e&&n&&!n.parentID&&lA({directory:o,session:e,time:Date.now(),viewed:AP(o,e),type:`turn-complete`})}if(t.type===`session.idle`){let e=BP(t);if(e&&o&&o!==`global`){let t=a.getState().session.find(t=>t.id===e),r=t?t.parentID:null,i=xM({idleSessionID:e,directory:o,parentID:r,activeSessionID:uP,activeDirectory:lP});i.action===`materialize-parent`?oP(o,i.sessionID,n,{reason:`child-session-idle`}):i.action===`materialize-now`?oP(o,i.sessionID,n,{reason:`session-idle`}):i.action===`defer-until-viewed`&&wM(o,i.sessionID)}}let s=a.getState(),c=BP(t)??void 0,l=VP(t)??void 0;if(t.type===`session.created`){let e=t.properties.info;Rx(o,e)}if((t.type===`message.updated`||t.type===`message.removed`||t.type===`message.part.updated`||t.type===`message.part.removed`||t.type===`message.part.delta`)&&Jx(o,c,l))return;if(Vl(t.type)){let e=uF(t);if(!e){rF(r,o,t);return}gF(t,e,o,l,n,r);return}let u={...s};switch(t.type){case`session.created`:case`session.updated`:case`session.deleted`:u.session=[...s.session],u.session_status_observed_at={...s.session_status_observed_at},u.permission={...s.permission},u.todo={...s.todo};break;case`session.diff`:u.session_diff={...s.session_diff};break;case`session.status`:case`session.idle`:case`session.error`:u.session_status={...s.session_status??{}},u.session_status_observed_at={...s.session_status_observed_at},u.session_error_at={...s.session_error_at};break;case`todo.updated`:u.todo={...s.todo};break;case`vcs.branch.updated`:break;case`permission.asked`:case`permission.replied`:u.permission={...s.permission};break;case`question.asked`:case`question.replied`:case`question.rejected`:u.question={...s.question};break;case`lsp.updated`:u.lsp=[...s.lsp]}let d=Aj(u,t,{onSetSessionTodo:(e,t)=>{hx.getState().setSessionTodos(e,t)},onServerSessionIdle:e=>{$.getState().releaseQueueAbortBlocksForServerIdle(o,e)},now:Date.now}),f=typeof d==`boolean`?d:d.changed,p=typeof d==`boolean`?void 0:d.materialization;if(f){a.setState(u);let e=BP(t)??void 0,n=VP(t)??void 0;As.dispatch.eventApplied(t.type,e,n)}else{let e=BP(t)??void 0,n=VP(t)??void 0;As.dispatch.eventNoChange(t.type,e,n)}if(p){let e=$P(p.sessionID??BP(t)??void 0,p.messageID??VP(t)??void 0,o,r);e&&oP(o,e,n,{reason:p.reason,messageID:p.messageID,partID:p.partID})}rF(r,o,t)}var vF=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:opencode-update-available`,{detail:e}))},yF=null,bF=async()=>{let e=m();return(!yF||yF.runtimeKey!==e)&&(yF={runtimeKey:e,promise:_(`/api/config/opencode-resolution`,{signal:AbortSignal.timeout(4e3)}).then(async e=>{if(e.ok){let t=await e.json();return t.source===`bundled`||t.detectedSourceNow===`bundled`}let t=await _(`/health`,{signal:AbortSignal.timeout(4e3)});return t.ok?(await t.json()).opencodeBinarySource===`bundled`:!1}).catch(()=>!1)}),yF.promise},xF=e=>{typeof window>`u`||bF().then(t=>{t||vF(e)})};function SF(e,t,n){return e!==t||n!==!1}function CF(e){let t=$f(e=>e.settingsMessageStreamTransport),n=(0,K.useRef)(null);n.current||=new qj;let r=n.current,i=(0,K.useRef)(null);i.current||=RP();let a=i.current,c=(0,K.useRef)(0),l=(0,K.useRef)(new Map),d=(0,K.useRef)(new Map),p=(0,K.useRef)(new Map),h=(0,K.useRef)(new Set),g=(0,K.useRef)(null),_=(0,K.useRef)(!1),v=(0,K.useRef)(!1),y=(0,K.useRef)({directory:e.directory,enabled:e.bootstrapDirectory});y.current={directory:e.directory,enabled:e.bootstrapDirectory};let b=e=>{let t=y.current;return SF(e,t.directory,t.enabled)},x=(0,K.useMemo)(()=>({childStores:r,sdk:e.sdk,directory:e.directory}),[r,e.sdk,e.directory]);(0,K.useEffect)(()=>(wP(r),()=>{wP(null)}),[r]);let S=(0,K.useCallback)((e,t,n)=>{if(aF(e,r.children.get(e),n),!b(e))return;let i=r.children.get(e);if(!i)return;let o=h.current;o.has(e)||(n?.statusOnly||p.current.set(e,Date.now()),o.add(e),cF(e,i,a,t,t=>d.current.get(gP(e,t))??0,n).catch(()=>{}).finally(()=>{o.delete(e)}))},[r,a]);(0,K.useEffect)(()=>{Se()||BM.getState().hydrate().catch(()=>void 0)},[e.sdk]),(0,K.useEffect)(()=>{let t=new Set;r.configure({onBootstrap:n=>{if(!b(n)||t.has(n))return;t.add(n);let i=r.getChild(n);i&&(async()=>{if(await un(),!b(n))return;let t=Mj.getState();await hM({directory:n,sdk:e.sdk,getState:()=>i.getState(),set:e=>{i.setState(e),e.session&&qP(a,n,i.getState())},global:{config:t.config,projects:t.projects}})})().finally(()=>{t.delete(n)})},onDispose:e=>{t.delete(e)},isBooting:e=>t.has(e),isLoadingSessions:()=>!1})},[r,e.sdk,a]),(0,K.useEffect)(()=>{let t=++UN;VN=!0;let n=Mj.getState().actions;return un().then(()=>{if(UN===t)return mM(e.sdk,e=>{UN===t&&n.set(e)})}).then(()=>{UN===t&&(HN=Date.now())}).finally(()=>{UN===t&&(VN=!1)}),()=>{UN===t&&(VN=!1)}},[e.sdk]),(0,K.useEffect)(()=>{let n=GA({sdk:e.sdk,transport:t,routeDirectory:(e,t)=>QP(a,e,t,r),onFlushStart:()=>{mF()},onFlushEnd:()=>{hF()},onNormalizedEvent:(e,t)=>{sP(e,t,r);let n=t.domainActivityHint?.sessionID??t.admissionHint?.sessionID;n&&e===lP&&n===uP&&(t.domainActivityHint||t.admissionHint)&&l.current.set(gP(e,n),Date.now())},onEvent:(e,t)=>{let n=eF(t,a.messageSessionById)??null;if(n&&nF(t)){let t=gP(e,n);d.current.set(t,(d.current.get(t)??0)+1)}if(n&&e===lP&&n===uP&&(t.type===`message.updated`||t.type===`message.removed`||t.type===`message.part.updated`||t.type===`message.part.removed`||t.type===`message.part.delta`)&&l.current.set(gP(e,n),Date.now()),n&&e===lP&&n===uP&&t.type===`session.status`){let r=t.properties.status;if(r?.type===`busy`||r?.type===`retry`){let t=gP(e,n);l.current.has(t)||l.current.set(t,Date.now())}r?.type===`idle`&&l.current.delete(gP(e,n))}if(n&&(t.type===`session.idle`||t.type===`session.deleted`)&&l.current.delete(gP(e,n)),LP(e,t),t.type===`installation.update-available`){let e=typeof t.properties?.version==`string`?t.properties.version:``;e&&xF({version:e})}_F(e,t,r,a)},onTransportActivity:()=>{let e=Date.now();c.current=e,Zm(e)},onReconnect:()=>{$f.setState({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let e=!_.current;_.current=!0;let t=oF({isFirstConnect:e,disconnectedBeforeFirstConnect:v.current});for(let e of r.children.keys())S(e,`stream-reconnect`,{statusOnly:t})},onDisconnect:e=>{_.current||(v.current=!0);let{hasEverConnected:t}=$f.getState();$f.setState({isConnected:!1,connectionPhase:t?`reconnecting`:`connecting`,lastDisconnectReason:e})},onRecoveryContextCaptured:e=>{Hu({lastEventID:e.lastEventId,reason:e.reason,generation:e.runtimeGeneration})},onCompensation:e=>{ij(),Uu(e)},onTransportSwitch:()=>{let{hasEverConnected:e}=$f.getState();$f.setState({isConnected:!1,connectionPhase:e?`reconnecting`:`connecting`});for(let e of r.children.keys())S(e,`transport-switch`)}});g.current=n.reconnect;let i=Qm(n.reconnect);return()=>{i(),g.current===n.reconnect&&(g.current=null),n.cleanup()}},[e.sdk,r,a,t,S]),(0,K.useEffect)(()=>{let e=!1,t=!1,n=()=>{t||e||(t=!0,Promise.resolve().then(()=>{if(e)return;let t=Date.now();for(let[e,n]of r.children.entries()){let r=n.getState();if(AM(r).length===0){p.current.delete(e);continue}let i=p.current.get(e)??0;PP(c.current,i,t)&&(g.current?.(`active_stream_stale`),S(e,`stale-status-resync`));let a=MP(e);if(!a)continue;let o=r.session_status?.[a.sessionId],s=gP(e,a.sessionId),u=l.current.get(s);if((o?.type===`busy`||o?.type===`retry`)&&!u){l.current.set(s,t);continue}if(o?.type===`idle`||!o){l.current.delete(s);continue}FP({isViewed:!0,status:o,lastTransportActivityAt:c.current,lastDomainActivityAt:u??0,lastFullResyncAt:i,now:t})&&S(e,`domain-stale-resync`)}}).finally(()=>{t=!1}))},i=setInterval(n,KN);return n(),()=>{e=!0,clearInterval(i)}},[r,S]),(0,K.useEffect)(()=>{let t;if(e.directory){let n=r.ensureChild(e.directory,{bootstrap:SF(e.directory,e.directory,e.bootstrapDirectory)}),i=sN(m(),e.directory);i&&(n.setState(e=>({session_status:{...e.session_status,[i.sessionId]:e.session_status[i.sessionId]??i.status}})),t=setTimeout(()=>{n.setState(e=>e.session_status[i.sessionId]===i.status?{session_status:{...e.session_status,[i.sessionId]:{type:`idle`}}}:e)},rN)),qP(a,e.directory,n.getState())}return()=>{t&&clearTimeout(t)}},[e.directory,e.bootstrapDirectory,r,a]);let C=(0,K.useRef)(null),w=(0,K.useRef)({transport:u(),generation:f()});return(0,K.useEffect)(()=>{if(C.current)return;let e=rx({childStores:r,getViewedSession:()=>OP()[0]??null,getViewedSessions:()=>OP()});return C.current=e,w.current={transport:u(),generation:f()},()=>{let e=w.current;Gu(`provider-dispose`);let t=C.current?.repository;t&&t.purgeGeneration(e.transport,e.generation),C.current?.destroy(),C.current=null}},[r]),(0,K.useEffect)(()=>(Nd(e.sdk,r,e.directory,(e,t)=>{HP(a,e,t)}),oS(e.sdk,r,()=>B.getDirectory()||e.directory),Iy((e,t,n)=>{let r=new Set(n),i=os(e)??e,a={...t};for(let[e,t]of VM.getState().statusById)r.has(e)||t.directory===i&&(a[e]={type:t.status});KM(e,a,n)}),()=>{Iy(void 0)}),[e.sdk,e.directory,r,a]),(0,K.useEffect)(()=>s(e=>{if(!e.transportIdentityChanged){w.current={transport:u(),generation:f()};return}let t=w.current;Gu(`runtime-switch`);let n=C.current?.repository;n&&n.purgeGeneration(t.transport,t.generation),w.current={transport:u(),generation:f()}}),[]),(0,K.useEffect)(()=>o(()=>{$m(`reasoning_projection`),(C.current?.repository)?.resetReasoningProjection?.();let e=OP();for(let t of e)Pu(t.directory,t.sessionID).catch(()=>void 0)}),[]),(0,K.useEffect)(()=>{if(!e.directory)return;let t=r.getChild(e.directory);if(!t)return;let n=e.directory,i=()=>{yM(t.getState(),{directory:n,store:t})};i();let a=t.subscribe(()=>{i()}),o=[],s=()=>{for(let e of o)e();o=[];let e=U()??W(n,t),r=t.getState().session_status??{};for(let[t,a]of Object.entries(r))!a||a.type===`idle`||o.push(e.subscribe(G(n,t),i));i()};s();let c=Eu(s);return()=>{c(),a();for(let e of o)e()}},[e.directory,r]),(0,uj.jsxs)(CN.Provider,{value:x,children:[(0,uj.jsx)(hj,{}),e.children]})}function wF(e,t){let n=(0,H.c)(4),r=EN(),i=e??r.directory,a;return n[0]!==i||n[1]!==t||n[2]!==r.childStores?(a=r.childStores.ensureChild(i,t),n[0]=i,n[1]=t,n[2]=r.childStores,n[3]=a):a=n[3],a}function TF(e,t){let n=wF(t);return ke(n,e)}function EF(e){let{childStores:t}=EN(),n=e.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),r=(0,K.useRef)(e);r.current=e;let i=(0,K.useCallback)(e=>n?vN(t,r.current,e):()=>void 0,[t,n]),a=(0,K.useCallback)(()=>n?_N(t,r.current):``,[t,n]);return K.useSyncExternalStore(i,a,a)}function DF(){let e=(0,H.c)(2),{childStores:t}=EN(),n;return e[0]===t?n=e[1]:(n=e=>gN(t,e),e[0]=t,e[1]=n),n}function OF(e,t){let n=EN(),r=t??n.directory;return od(e,r,wF(r))}function kF(e,t){let n=EN(),r=t??n.directory;return gd(e,r,wF(r))}function AF(e,t){let n=(0,H.c)(8),r=EN(),i=t??r.directory,a=wF(i),o=(0,K.useRef)(void 0),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e){o.current=void 0;return}let t=(U()??W(i,a)).getRequestState?.(G(i,e)),n=t?{status:t.status===`idle`?`ready`:t.status,error:t.error,requestedLimit:t.requestedLimit??0,at:Date.now(),loadGeneration:0}:void 0,r=o.current;return r&&n&&r.status===n.status&&r.error===n.error&&r.requestedLimit===n.requestedLimit?r:(o.current=n,n)},n[0]=e,n[1]=a,n[2]=i,n[3]=s):s=n[3];let c=s,l;n[4]!==e||n[5]!==a||n[6]!==i?(l=t=>{if(!e)return jF;let n=(U()??W(i,a)).subscribe(G(i,e),()=>{t()}),r=Eu(()=>{n(),o.current=void 0,n=(U()??W(i,a)).subscribe(G(i,e),()=>{t()}),t()});return()=>{r(),n()}},n[4]=e,n[5]=a,n[6]=i,n[7]=l):l=n[7];let u=l;return K.useSyncExternalStore(u,c,c)}function jF(){}function MF(e,t,n){let r=EN(),i=t??r.directory;return vd(e,i,wF(i),n)}function NF(e,t){let n=(0,H.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=wF(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return i.getState().session_status?.[e]},n[1]=e,n[2]=i,n[3]=a):a=n[3];let o=a,s;n[4]!==e||n[5]!==i?(s=t=>e?i.subscribe(t):PF,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return K.useSyncExternalStore(c,o,o)}function PF(){}function FF(e,t){let n=(0,H.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=wF(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return i.getState().session_status_observed_at?.[e]},n[1]=e,n[2]=i,n[3]=a):a=n[3];let o=a,s;n[4]!==e||n[5]!==i?(s=t=>e?i.subscribe(t):IF,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return K.useSyncExternalStore(c,o,o)}function IF(){}function LF(e,t){let n=(0,H.c)(7),r=t===void 0||t,i;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={bootstrap:!1},n[0]=i):i=n[0];let a=wF(e,i),o;n[1]!==r||n[2]!==a?(o=()=>r?a.getState().session_status_snapshot_at:void 0,n[1]=r,n[2]=a,n[3]=o):o=n[3];let s=o,c;n[4]!==r||n[5]!==a?(c=e=>r?a.subscribe(e):RF,n[4]=r,n[5]=a,n[6]=c):c=n[6];let l=c;return K.useSyncExternalStore(l,s,s)}function RF(){}function zF(e,t,n){let r=(0,H.c)(6),i=wF(t,n),a;r[0]!==e||r[1]!==i?(a=()=>e?i.getState().permission[e]??RI:RI,r[0]=e,r[1]=i,r[2]=a):a=r[2];let o=a,s;r[3]!==e||r[4]!==i?(s=t=>e?i.subscribe(t):BF,r[3]=e,r[4]=i,r[5]=s):s=r[5];let c=s;return K.useSyncExternalStore(c,o,o)}function BF(){}function VF(e,t,n){let r=(0,H.c)(2),i=wF(t,n),a;return r[0]===e?a=r[1]:(a=t=>e?t.question[e]??zI:zI,r[0]=e,r[1]=a),ke(i,a)}function HF(e){return TF(UF,e)}function UF(e){return e.session}var WF=e=>e.permission,GF=e=>e.question;function KF(e){if(!e)return im;let t=[];for(let n of e.messageOrder){let r=e.partsByMessageID[n];if(r)for(let e of rm(r))t.push(e)}return t.length===0?im:t}function qF(){let e=null;return t=>{let n=KF(t);if(n.length===0)return im;let r=n.map(e=>`${e.parentSessionId}\u0000${e.sessionId}`).join(``);return e&&e.signature===r?e.edges:(e={signature:r,edges:n},n)}}function JF(e,t){let n=EN(),r=t??n.directory,i=wF(r),a=(0,K.useRef)(qF()).current,o=(0,K.useCallback)(()=>{if(!e)return im;try{let t=U()?.getTranscript(G(r,e));return a(t)}catch{return im}},[a,e,r]),s=(0,K.useCallback)(t=>{if(!e)return()=>void 0;let n=(U()??W(r,i))?.subscribe(G(r,e),()=>{t()})??(()=>void 0),a=Eu(()=>{n(),n=(U()??W(r,i))?.subscribe(G(r,e),()=>{t()})??(()=>void 0),t()});return()=>{a(),n()}},[e,i,r]);return K.useSyncExternalStore(s,o,o)}function YF(e,t,n,r){let i=(0,H.c)(7),a=JF(e,t),o;i[0]===r?o=i[1]:(o={sessionID:null,sessions:null,requestsBySession:null,dispatchEdges:null,result:r},i[0]=r,i[1]=o);let s=(0,K.useRef)(o),c;return i[2]!==a||i[3]!==r||i[4]!==n||i[5]!==e?(c=t=>{let i=n(t),o=s.current;if(o.sessionID===e&&o.sessions===t.session&&o.requestsBySession===i&&o.dispatchEdges===a)return o.result;let c=sm(t.session,i,e,r,a),l=om(o.result,c)?o.result:c;return s.current={sessionID:e,sessions:t.session,requestsBySession:i,dispatchEdges:a,result:l},l},i[2]=a,i[3]=r,i[4]=n,i[5]=e,i[6]=c):c=i[6],TF(c,t)}function XF(e,t){return YF(e,t,WF,RI)}function ZF(e,t){return YF(e,t,GF,zI)}function QF(e,t){let n=(0,H.c)(9),r=$F(e,t),i=$F(e),a;n[0]===e?a=n[1]:(a=t=>t.activeSessions.find(t=>t.id===e)??t.archivedSessions.find(t=>t.id===e)??null,n[0]=e,n[1]=a);let o=X(a),s=r??i??o,c=s?.parentID??null,l=$F(c,t),u=$F(c),d;n[2]===c?d=n[3]:(d=e=>e.activeSessions.find(e=>e.id===c)??e.archivedSessions.find(e=>e.id===c)??null,n[2]=c,n[3]=d);let f=X(d),p=l??u??f,m;return n[4]!==s||n[5]!==t||n[6]!==p||n[7]!==e?(m=bN(e,s,p,t),n[4]=s,n[5]=t,n[6]=p,n[7]=e,n[8]=m):m=n[8],m}function $F(e,t){let n=(0,H.c)(7),{childStores:r}=EN(),i;n[0]!==r||n[1]!==t||n[2]!==e?(i=()=>t?r.getChild(t)?.getState().session.find(t=>t.id===e):oM(DN(r),e),n[0]=r,n[1]=t,n[2]=e,n[3]=i):i=n[3];let a=i,o;n[4]!==r||n[5]!==t?(o=e=>t?r.ensureChild(t).subscribe(e):r.subscribeAllSelected(eI,e),n[4]=r,n[5]=t,n[6]=o):o=n[6];let s=o;return K.useSyncExternalStore(s,a,a)}function eI(e){return e.session}function tI(e){let t=yN(e,$F(e),X((0,K.useCallback)(t=>e?t.activeSessions.find(t=>t.id===e)??null:null,[e]))),n=(0,K.useRef)(null),[,r]=K.useState(0);if((0,K.useEffect)(()=>{if(!e){n.current=null;return}if(t){n.current={sessionID:e,session:t,expiresAt:null};return}let i=n.current;if(!i||i.sessionID!==e){n.current=null;return}let a=i.expiresAt??Date.now()+2e3;i.expiresAt=a;let o=a-Date.now(),s=window.setTimeout(()=>{n.current?.sessionID===e&&(n.current=null),r(e=>e+1)},o);return()=>window.clearTimeout(s)},[t,e]),t)return t;let i=n.current;return i&&i.sessionID===e&&(i.expiresAt===null||i.expiresAt>Date.now())?i.session:null}function nI(e,t){return $F(e,t)?.directory??void 0}function rI(){return EN().directory}function iI(){return EN().childStores}var aI=[],oI=40,sI=4,cI=30,lI=4,uI=30,dI=new WeakMap,fI=(e,t,n)=>`${e}\u0000${+!!t}\u0000${n??``}`,pI=e=>{let t=dI.get(e);return t||(t=new Map,dI.set(e,t)),t},mI=(e,t,n,r)=>{let i=dI.get(e);if(!i)return;let a=fI(t,n,r),o=i.get(a);if(o)return i.delete(a),i.set(a,o),o},hI=(e,t)=>{if(!t.sessionID)return;let n=pI(e),r=fI(t.sessionID,t.suspendPartUpdates,t.suspendedPartUpdatesMessageID),i=Se()?cI:uh()?uI:null;if(i!==null&&t.list.length>i){n.delete(r);return}n.delete(r),n.set(r,t);let a=Se()?sI:uh()?lI:oI;for(;n.size>a;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}};function gI(e,t){let n=dI.get(e);if(n)for(let e of t){if(!e)continue;let t=`${e}\u0000`;for(let e of[...n.keys()])e.startsWith(t)&&n.delete(e)}}var _I=`The following tool was executed by the user`,vI=(e,t,n)=>{if(!n||n.length!==1)return!1;let r=n[0];if(r?.type!==`tool`||typeof r.tool!=`string`||r.tool.toLowerCase()!==`bash`)return!1;let i=t.parentID;if(typeof i!=`string`||i.length===0)return!1;let a=e[i];return a?a.some(e=>{if(e?.type!==`text`||e.synthetic!==!0)return!1;let t=e.text;return typeof t==`string`&&t.trim().startsWith(_I)}):!1};function yI(e,t){if(e.length!==t.length)return!0;for(let n=0;n<t.length;n+=1){let r=e[n],i=t[n];if(!r||!i||r.id!==i.id||r.type!==i.type||i.type===`tool`&&r!==i)return!0}return!1}var bI=(e,t)=>{for(let n of e.list){let r=t.parts[n.info.id]??LI;if(e.suspendPartUpdates){let i=e.suspendedPartUpdatesMessageID;if((!i||n.info.id===i)&&!vI(t.parts,n.info,r)&&!yI(n.parts,r))continue}if(rc(n.parts,r,n.info)!==n.parts)return!1}return!0},xI=(e,t,n,r)=>{let i=mI(e,t.sessionID,n,r);if(i&&i.sourceMessages===t.messages&&i.revertMessageID===t.revertMessageID&&i.suspendPartUpdates===n&&i.suspendedPartUpdatesMessageID===r&&bI(i,t))return i};function SI(e,t){let n=e.messages,r=e.revertMessageID;if(t&&t.sourceMessages===n&&t.revertMessageID===r)return{sourceMessages:n,visibleMessages:t.visibleMessages,revertMessageID:r};let i=n;return{sourceMessages:n,visibleMessages:r?Ss(i,r):n.length===0?II:i.slice(),revertMessageID:r}}function CI(e,t,n=!1,r){let i=e.sessionID,{sourceMessages:a,visibleMessages:o,revertMessageID:s}=SI(e,t),c=new Map,l=o.map(i=>{let a=t?.byId.get(i.id),o=e.parts[i.id]??LI,s=n&&a&&(!r||i.id===r)&&!vI(e.parts,i,o)&&!yI(a.parts,o)?a.parts:rc(a?.parts,o,i),l=a&&a.info===i&&a.parts===s?a:{info:i,parts:s};return c.set(i.id,l),l});return t&&t?.visibleMessages===o&&t.suspendPartUpdates===n&&t.suspendedPartUpdatesMessageID===r&&t.list.length===l.length&&t.list.every((e,t)=>e===l[t])&&t?t:{sessionID:i,sourceMessages:a,visibleMessages:o,revertMessageID:s,suspendPartUpdates:n,suspendedPartUpdatesMessageID:r,list:l,byId:c}}function wI(e,t){let n=EN(),r=t??n.directory;return md(e,r,wF(r))}function TI(e,t){let n=EN(),r=t??n.directory;return Cd(e,r,wF(r))}function EI(e,t){let n=EN(),r=t??n.directory;return xd(e,r,wF(r))}function DI(e,t){let n=(0,H.c)(8),r=EN(),i=t??r.directory,a=wF(i),o=(0,K.useRef)(dN),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e)return o.current=dN,dN.history;let t=(U()??W(i,a)).getTranscript(G(i,e)),n=a.getState().session.find(t=>t.id===e)?.revert?.messageID,r=hN({sessionID:e,messages:nd(t),parts:t.partsByMessageID,revertMessageID:n},o.current);return o.current=r,r.history},n[0]=e,n[1]=a,n[2]=i,n[3]=s):s=n[3];let c=s,l;n[4]!==e||n[5]!==a||n[6]!==i?(l=t=>{if(!e)return OI;let n=(U()??W(i,a)).subscribe(G(i,e),()=>{t()}),r=Eu(()=>{n(),n=(U()??W(i,a)).subscribe(G(i,e),()=>{t()}),t()}),o=a.subscribe(()=>{t()});return()=>{r(),n(),o()}},n[4]=e,n[5]=a,n[6]=i,n[7]=l):l=n[7];let u=l;return K.useSyncExternalStore(u,c,c)}function OI(){}var kI=(e,t,n)=>({sessionID:e,directory:t,store:n,bindingRevision:Du(),transportIdentity:u(),generation:f()}),AI=(e,t)=>e.sessionID===t.sessionID&&e.directory===t.directory&&e.store===t.store&&e.bindingRevision===t.bindingRevision&&e.transportIdentity===t.transportIdentity&&e.generation===t.generation;function jI(e,t,n){let r=(0,H.c)(23),i=EN(),a=t??i.directory,o=wF(a),c=n?.enabled??!0,l=!!n?.suspendPartUpdates,u=n?.suspendPartUpdatesForMessageId??void 0,d,f;r[0]===Symbol.for(`react.memo_cache_sentinel`)?(d=[],f=new Map,r[0]=d,r[1]=f):(d=r[0],f=r[1]);let p;r[2]!==e||r[3]!==l||r[4]!==u?(p={sessionID:e,sourceMessages:II,visibleMessages:II,revertMessageID:void 0,suspendPartUpdates:l,suspendedPartUpdatesMessageID:u,list:d,byId:f},r[2]=e,r[3]=l,r[4]=u,r[5]=p):p=r[5];let m=(0,K.useRef)(p),h=(0,K.useRef)(null);n?.suspendPartUpdates,n?.suspendPartUpdatesForMessageId;let g;r[6]!==n?.suspendPartUpdates||r[7]!==n?.suspendPartUpdatesForMessageId||r[8]!==e||r[9]!==o||r[10]!==a?(g=()=>{if(!e)return aI;let t=(U()??W(a,o)).getTranscript(G(a,e)),r=!!n?.suspendPartUpdates,i=n?.suspendPartUpdatesForMessageId??void 0,s=nd(t,m.current.sessionID===e?m.current.sourceMessages:mI(o,e,r,i)?.sourceMessages),c=o.getState().session.find(t=>t.id===e)?.revert?.messageID,l={sessionID:e,messages:s,parts:t.partsByMessageID,revertMessageID:c},u=xI(o,l,r,i);if(u)return m.current=u,u.list;let d=CI(l,m.current.sessionID===e?m.current:mI(o,e,r,i),r,i);return m.current=d,hI(o,d),d.list},r[6]=n?.suspendPartUpdates,r[7]=n?.suspendPartUpdatesForMessageId,r[8]=e,r[9]=o,r[10]=a,r[11]=g):g=r[11];let _=g,v;r[12]!==c||r[13]!==_||r[14]!==e||r[15]!==o||r[16]!==a?(v=()=>{let t=kI(e,a,o);if(!e)return h.current={scope:t,list:aI},aI;if(!c){let e=h.current;if(e&&AI(e.scope,t))return e.list}let n=_();return h.current={scope:t,list:n},n},r[12]=c,r[13]=_,r[14]=e,r[15]=o,r[16]=a,r[17]=v):v=r[17];let y=v,b;r[18]!==c||r[19]!==e||r[20]!==o||r[21]!==a?(b=t=>{if(!e)return MI;if(!c){let e=Eu(()=>{t()}),n=s(()=>{t()});return()=>{e(),n()}}$u(a,e);let n=(U()??W(a,o)).subscribe(G(a,e),()=>{t()}),r=Eu(()=>{n(),n=(U()??W(a,o)).subscribe(G(a,e),()=>{t()}),ed(a,e),$u(a,e),t()}),i=s(()=>{t()}),l=o.subscribe(()=>{t()});return()=>{r(),i(),n(),l()}},r[18]=c,r[19]=e,r[20]=o,r[21]=a,r[22]=b):b=r[22];let x=b;return K.useSyncExternalStore(x,y,y)}function MI(){}var NI=new Set;function PI(e,t){let n=rI(),r=t??n,i=wF(r),a=K.useRef(0);K.useEffect(()=>{if(!e)return;let t=U()??W(r,i),n=G(r,e),o=t.getTranscript(n),s=t.hasSession?.(n);if(rd(o,{resolved:s===!0||void 0}).renderable){Ox({directory:r,sessionID:e,store:i});return}if(!i.getState().session.some(t=>t.id===e))return;let c=`${r}:${e}`;if(NI.has(c))return;let l=++a.current,u=()=>l!==a.current;NI.add(c),(async()=>{try{if(U())try{if(await Pu(r,e),u())return;Ox({directory:r,sessionID:e,store:i,isStale:u})}catch{if(u())return;await cP(r,e,i,{reason:`ensure-session-messages`,isStale:u})}else await cP(r,e,i,{reason:`ensure-session-messages`,isStale:u})}catch{}finally{NI.delete(c)}})()},[e,i,r])}function FI(e,t){let n=EN(),r=t??n.directory;return id(e,r,wF(r))}var II=[],LI=[],RI=[],zI=[],BI=[],VI=()=>({requestID:_e(),queueItemID:_e(),operationID:_e(),messageID:he(`msg`)}),HI=e=>({kind:`pending-admission`,requestID:e.requestID,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,createdAt:e.createdAt,phase:`admitting`,attachmentCount:e.attachmentCount,...e.composerDocument?{composerDocument:e.composerDocument}:{},...e.composerMentions?{composerMentions:e.composerMentions}:{}}),UI,WI=(e,t)=>{let n=e.establishing;if(!n||t&&n.draftID!==t||n.pending.length===0)return BI;if(UI&&UI.pending===n.pending&&UI.draftID===t)return UI.items;let r=n.pending.map(HI);return UI={pending:n.pending,draftID:t,items:r},r},GI=e=>t=>t.flights[e]??null,KI=e=>t=>!!e&&t.establishing?.draftID===e,qI=e=>t=>WI(t,e),JI=(e,t)=>({flightKind:e,inFlight:e!==null,establishing:t}),YI=De()((e,t)=>({flights:{},establishing:null,beginFlight:(n,r=`send`)=>{let i=n.trim();return!i||t().flights[i]?!1:(e(e=>({flights:{...e.flights,[i]:r}})),!0)},endFlight:n=>{let r=n.trim();!r||!t().flights[r]||e(e=>{if(!e.flights[r])return e;let t={...e.flights};return delete t[r],{flights:t}})},isInFlight:e=>!!t().flights[e.trim()],beginEstablishing:({draftID:n,primaryMessageID:r})=>{let i=n.trim(),a=r.trim();if(!i||!a)return!1;let o=t().establishing;return o?o.draftID===i&&o.primaryMessageID===a:(e({establishing:{draftID:i,primaryMessageID:a,pending:[]}}),!0)},isEstablishing:e=>e?t().establishing?.draftID===e:!1,getEstablishing:()=>t().establishing,enqueueEstablishingFollowUp:n=>{let r=t().establishing;if(!r||r.draftID!==n.draftID||!n.sendConfig.providerID||!n.sendConfig.modelID)return null;let i=n.content;if(!i.trim()&&(n.attachments?.length??0)===0)return null;let a=n.identity??VI(),o=[...n.attachments??[]],s={kind:`pending-admission`,requestID:a.requestID,queueItemID:a.queueItemID,operationID:a.operationID,messageID:a.messageID||he(`msg`),content:i,createdAt:n.createdAt??Date.now(),phase:`admitting`,attachmentCount:o.length,...n.composerDocument?{composerDocument:n.composerDocument}:{},...n.composerMentions?{composerMentions:n.composerMentions}:{},draftID:n.draftID,sendConfig:{providerID:n.sendConfig.providerID,modelID:n.sendConfig.modelID,...n.sendConfig.agent?{agent:n.sendConfig.agent}:{},...n.sendConfig.variant?{variant:n.sendConfig.variant}:{}},attachments:o};return e({establishing:{...r,pending:[...r.pending,s]}}),s},removeEstablishingFollowUp:n=>{let r=t().establishing;if(!r)return null;let i=r.pending.findIndex(e=>e.requestID===n);if(i<0)return null;let a=r.pending[i];return e({establishing:{...r,pending:[...r.pending.slice(0,i),...r.pending.slice(i+1)]}}),a??null},takeEstablishingPending:n=>{let r=t().establishing;if(!r||r.draftID!==n)return[];let i=r.pending;return e({establishing:null}),i},clearEstablishing:n=>{let r=t().establishing;if(!r||n!=null&&n!==``&&r.draftID!==n)return[];let i=r.pending;return e({establishing:null}),i},shouldBlockNewSessionDraftOpen:()=>t().establishing!==null})),XI=De((e,t)=>({armed:!1,objectiveOverride:null,setArmed:(t,n=null)=>e({armed:t,objectiveOverride:t?n:null}),consume:()=>{let{armed:n,objectiveOverride:r}=t();return n&&e({armed:!1,objectiveOverride:null}),{armed:n,objectiveOverride:r}}})),ZI=class extends Error{status;code;constructor(e,t){super(`Message queue server request failed: ${t}`),this.name=`MessageQueueServerError`,this.status=e,this.code=t}},QI=`/api/openchamber/message-queue`,$I=new Set([`validation_error`,`revision_conflict`,`row_version_conflict`,`idempotency_conflict`,`generation_conflict`,`authority_conflict`,`not_found`,`scope_locked`,`scope_limit`,`reserved`,`internal_error`,`unavailable`]),eL=new Set([`revision`,`scopeID`,`queueItemID`,`rowVersion`,`removedQueueItemID`,`projectDirectory`,`token`,`state`,`scopeCount`,`statusCounts`]),tL=new Set([`scopeID`,`revision`,`directory`,`sessionID`,`worktreeState`,`itemCount`]),nL=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Z=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,rL=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),iL=async e=>{if(e.status===501)return`unavailable`;try{let t=await e.json();if(nL(t)&&typeof t.code==`string`&&$I.has(t.code))return t.code}catch{}return`unavailable`},aL=async(e,t)=>{let n;try{n=await _(e,t)}catch{throw new ZI(0,`unavailable`)}if(!n.ok)throw new ZI(n.status,await iL(n));try{return await n.json()}catch{throw new ZI(n.status,`unavailable`)}},oL=()=>{throw new ZI(200,`unavailable`)},sL=e=>nL(e)&&Object.getPrototypeOf(e)===Object.prototype,cL=e=>{if(!(!sL(e)||typeof e.text!=`string`||!Array.isArray(e.references)||e.references.some(e=>!sL(e))))return{text:e.text,references:e.references.map(e=>({...e}))}},lL=e=>Array.isArray(e)&&e.every(sL)?e.map(e=>({...e})):void 0,uL=e=>{if(!(!nL(e)||typeof e.providerID!=`string`||typeof e.modelID!=`string`)&&!(e.agent!==void 0&&typeof e.agent!=`string`||e.variant!==void 0&&typeof e.variant!=`string`))return{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}},dL=e=>nL(e)?e.kind===`primary`&&Object.keys(e).length===1?{kind:`primary`}:e.kind===`assistant`&&Object.keys(e).every(e=>e===`kind`||e===`assistantID`)&&typeof e.assistantID==`string`&&e.assistantID?{kind:`assistant`,assistantID:e.assistantID}:null:null,fL=e=>{if(!Array.isArray(e)||e.length===0||e.length>129)return null;let t=[],n=0;for(let r of e){if(!sL(r))return null;if(r.type===`text`&&Object.keys(r).every(e=>e===`type`||e===`text`||e===`synthetic`)&&typeof r.text==`string`&&(r.synthetic===void 0||typeof r.synthetic==`boolean`)){t.push({type:`text`,text:r.text,...r.synthetic===void 0?{}:{synthetic:r.synthetic}});continue}if(r.type===`file`&&Object.keys(r).length===3&&typeof r.mime==`string`&&typeof r.attachmentID==`string`&&r.attachmentID){if(n+=1,n>64)return null;t.push({type:`file`,mime:r.mime,attachmentID:r.attachmentID});continue}if(r.type===`file`&&Object.keys(r).length===3&&typeof r.mime==`string`&&typeof r.url==`string`){if(n+=1,n>64)return null;t.push({type:`file`,mime:r.mime,url:r.url});continue}return null}return t},pL=e=>{if(!Array.isArray(e)||e.length>64)return null;let t=new Set,n=[];for(let r of e){if(!sL(r)||Object.keys(r).some(e=>![`partID`,`text`,`synthetic`,`attachmentIDs`,`deliveryPartIndexes`].includes(e))||typeof r.partID!=`string`||!r.partID||t.has(r.partID)||typeof r.text!=`string`||r.synthetic!==void 0&&typeof r.synthetic!=`boolean`||!Array.isArray(r.attachmentIDs)||r.attachmentIDs.some(e=>typeof e!=`string`||!e)||new Set(r.attachmentIDs).size!==r.attachmentIDs.length||!Array.isArray(r.deliveryPartIndexes)||r.deliveryPartIndexes.length!==r.attachmentIDs.length+1||r.deliveryPartIndexes.some(e=>!Number.isSafeInteger(e)||e<0)||new Set(r.deliveryPartIndexes).size!==r.deliveryPartIndexes.length)return null;t.add(r.partID),n.push({partID:r.partID,text:r.text,...r.synthetic===!0?{synthetic:!0}:{},attachmentIDs:[...r.attachmentIDs],deliveryPartIndexes:[...r.deliveryPartIndexes]})}return n},mL=e=>{if(!sL(e)||Object.keys(e).some(e=>![`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`locator`].includes(e))||typeof e.attachmentID!=`string`||!e.attachmentID||typeof e.filename!=`string`||!e.filename||typeof e.mimeType!=`string`||!e.mimeType||!Z(e.size)||![`local`,`vscode`,`server`].includes(String(e.source))||!sL(e.locator))return null;let t=e.occurrenceRefID;if(!(Array.isArray(t)&&(t.length===2&&t[0]===`root`&&t[1]===e.attachmentID||t.length===3&&t[0]===`part`&&typeof t[1]==`string`&&t[1]&&t[2]===e.attachmentID)))return null;let n=e.locator;return n.kind===`upload`&&Object.keys(n).every(e=>[`kind`,`uploadID`,`storageKey`].includes(e))&&typeof n.uploadID==`string`&&n.uploadID&&(n.storageKey===void 0||typeof n.storageKey==`string`)&&n.storageKey!==``?{attachmentID:e.attachmentID,occurrenceRefID:t,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source,locator:{kind:`upload`,uploadID:n.uploadID}}:n.kind===`server-path`&&Object.keys(n).every(e=>[`kind`,`path`].includes(e))&&typeof n.path==`string`&&n.path?{attachmentID:e.attachmentID,occurrenceRefID:t,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source,locator:{kind:`server-path`,path:n.path}}:null},hL=e=>Array.isArray(e)&&e.map(mL).every(e=>e!==null)?e.map(mL):null,gL=e=>{if(!nL(e)||typeof e.queueItemID!=`string`||typeof e.operationID!=`string`||typeof e.messageID!=`string`||typeof e.content!=`string`||typeof e.status!=`string`||!Z(e.attemptCount)||!Z(e.position)||!Z(e.rowVersion)||!Z(e.createdAt)||e.manualDispatchRequested!==void 0&&typeof e.manualDispatchRequested!=`boolean`)return null;let t=e.composerDocument===void 0?void 0:cL(e.composerDocument),n=e.composerMentions===void 0?void 0:lL(e.composerMentions),r=e.sendConfig===void 0?void 0:uL(e.sendConfig),i=e.deliveryTarget===void 0?{kind:`primary`}:dL(e.deliveryTarget),a=e.deliveryParts===void 0?void 0:fL(e.deliveryParts),o=e.syntheticParts===void 0?void 0:pL(e.syntheticParts),s=e.attachmentIssues===void 0?void 0:lL(e.attachmentIssues);if(e.composerDocument!==void 0&&!t||e.composerMentions!==void 0&&!n||e.sendConfig!==void 0&&!r||!i||e.deliveryParts!==void 0&&!a||i.kind===`assistant`&&!a||e.syntheticParts!==void 0&&!o||e.attachmentIssues!==void 0&&!s)return null;let c=e.attachments===void 0?void 0:hL(e.attachments);if(e.attachments!==void 0&&!c)return null;if(o&&a){let e=new Set,t=new Set;for(let n of o){let[r,...i]=n.deliveryPartIndexes;if(r===void 0||e.has(r)||a[r]?.type!==`text`||a[r].text!==n.text)return null;e.add(r);for(let t of i){if(e.has(t)||a[t]?.type!==`file`||!(`attachmentID`in a[t])||a[t].attachmentID!==n.attachmentIDs[i.indexOf(t)])return null;e.add(t)}for(let e of n.attachmentIDs){let r=c?.find(t=>t.attachmentID===e);if(!r||t.has(e)||r.occurrenceRefID[0]!==`part`||r.occurrenceRefID[1]!==n.partID||r.occurrenceRefID[2]!==e)return null;t.add(e)}}if(c?.some(e=>e.occurrenceRefID[0]===`part`&&!t.has(e.attachmentID)))return null}return{queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,status:e.status,attemptCount:e.attemptCount,position:e.position,rowVersion:e.rowVersion,createdAt:e.createdAt,deliveryTarget:i,...e.manualDispatchRequested===!0?{manualDispatchRequested:!0}:{},...t?{composerDocument:t}:{},...n?{composerMentions:n}:{},...r?{sendConfig:r}:{},...a?{deliveryParts:a}:{},...o?{syntheticParts:o}:{},...c?{attachments:c}:{},...s?{attachmentIssues:s}:{}}},_L=e=>{if(!nL(e)||typeof e.scopeID!=`string`||!Z(e.revision)||typeof e.directory!=`string`||typeof e.sessionID!=`string`||typeof e.worktreeState!=`string`||!Z(e.itemCount)||!Array.isArray(e.items)||e.items.length>8||e.nextOffset!==void 0&&(!Z(e.nextOffset)||e.nextOffset<=0))return null;let t=e.items.map(gL);return t.every(e=>e!==null)?{scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount,items:t,...e.nextOffset===void 0?{}:{nextOffset:e.nextOffset}}:null},vL=e=>nL(e)&&Object.keys(e).every(e=>tL.has(e))&&typeof e.scopeID==`string`&&Z(e.revision)&&typeof e.directory==`string`&&typeof e.sessionID==`string`&&typeof e.worktreeState==`string`&&Z(e.itemCount)?{scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount}:null,yL=e=>nL(e)&&typeof e.projectDirectory==`string`&&rL(e.orderedPaths)&&Z(e.revision)?{projectDirectory:e.projectDirectory,orderedPaths:e.orderedPaths,revision:e.revision}:null,bL=e=>{if(!nL(e)||!Z(e.revision)||!Array.isArray(e.scopes)||!Array.isArray(e.worktreeOrders))return oL();let t=e.scopes.map(vL),n=e.worktreeOrders.map(yL);return!t.every(e=>e!==null)||!n.every(e=>e!==null)?oL():{revision:e.revision,scopes:t,worktreeOrders:n}},xL=e=>!nL(e)||!Z(e.revision)||Object.keys(e).some(e=>!eL.has(e))||e.scopeID!==void 0&&typeof e.scopeID!=`string`||e.queueItemID!==void 0&&typeof e.queueItemID!=`string`||e.rowVersion!==void 0&&!Z(e.rowVersion)||e.removedQueueItemID!==void 0&&typeof e.removedQueueItemID!=`string`||e.projectDirectory!==void 0&&typeof e.projectDirectory!=`string`||e.token!==void 0&&typeof e.token!=`string`||e.state!==void 0&&typeof e.state!=`string`||e.scopeCount!==void 0&&!Z(e.scopeCount)||e.statusCounts!==void 0&&(!nL(e.statusCounts)||Object.values(e.statusCounts).some(e=>!Z(e)))?oL():{revision:e.revision,...typeof e.scopeID==`string`?{scopeID:e.scopeID}:{},...typeof e.queueItemID==`string`?{queueItemID:e.queueItemID}:{},...Z(e.rowVersion)?{rowVersion:e.rowVersion}:{},...typeof e.removedQueueItemID==`string`?{removedQueueItemID:e.removedQueueItemID}:{},...typeof e.projectDirectory==`string`?{projectDirectory:e.projectDirectory}:{},...typeof e.token==`string`?{token:e.token}:{},...typeof e.state==`string`?{state:e.state}:{},...Z(e.scopeCount)?{scopeCount:e.scopeCount}:{},...nL(e.statusCounts)?{statusCounts:e.statusCounts}:{}},SL=(e,t,n)=>({method:e,headers:{"Content-Type":`application/json`},body:JSON.stringify(t),signal:n}),CL=(e,t)=>{let{signal:n,...r}=t;return SL(e,r,n)},wL=async e=>bL(await aL(QI,{signal:e})),TL=new Map,EL=(e,t)=>`${c().api(QI)}\u0000${e}\u0000${t.offset??``}\u0000${t.limit??``}\u0000${t.expectedRevision??``}`,DL=async(e,t={})=>{if(t.signal?.aborted)throw new ZI(0,`unavailable`);let n=EL(e,t),r=TL.get(n);if(r){let e=await r;if(t.signal?.aborted)throw new ZI(0,`unavailable`);return e}let i=(async()=>_L(await aL(`${QI}/scopes/${encodeURIComponent(e)}`,{query:{offset:t.offset,limit:t.limit,expectedRevision:t.expectedRevision},signal:t.signal}))??oL())().finally(()=>{TL.get(n)===i&&TL.delete(n)});return TL.set(n,i),i},OL=15e3,kL=(e,t={})=>new Promise(n=>{let r=t.signal;if(r?.aborted){n(`aborted`);return}let i=typeof t.safetyTimeoutMs==`number`&&t.safetyTimeoutMs>0?t.safetyTimeoutMs:OL,a=!1,o=e=>{a||(a=!0,clearTimeout(l),c(),r?.removeEventListener(`abort`,s),n(e))},s=()=>o(`aborted`),c=an(t=>{if(t.type===`event-stream-ready`){o(`ready`);return}t.type===`message-queue-changed`&&t.revision>e&&o(`tip`)}),l=setTimeout(()=>o(`timeout`),i),u=Wt(`message-queue-changed`);if(u!==void 0&&u>e){o(`tip`);return}r?.addEventListener(`abort`,s,{once:!0})}),AL=async e=>{let t=await aL(`${QI}/status`,{signal:e}),n=new Set([`capability`,`authority`,`generation`,`activationEpoch`,`activatedAt`,`manifestHash`,`protocol`,`worker`]);return!nL(t)||Object.keys(t).some(e=>!n.has(e))||typeof t.capability!=`boolean`||t.authority!==void 0&&t.authority!==`shadow`&&t.authority!==`active`&&t.authority!==`paused`||t.generation!==void 0&&!Z(t.generation)||t.activationEpoch!==void 0&&!Z(t.activationEpoch)||t.activatedAt!==void 0&&!Z(t.activatedAt)||t.protocol!==void 0&&t.protocol!==4||t.manifestHash!==void 0&&typeof t.manifestHash!=`string`||t.worker!==void 0&&(!nL(t.worker)||Object.keys(t.worker).some(e=>e!==`paused`&&e!==`active`)||typeof t.worker.paused!=`boolean`||!Z(t.worker.active))?oL():{capability:t.capability,...typeof t.authority==`string`?{authority:t.authority}:{},...Z(t.generation)?{generation:t.generation}:{},...Z(t.activationEpoch)?{activationEpoch:t.activationEpoch}:{},...Z(t.activatedAt)?{activatedAt:t.activatedAt}:{},...typeof t.manifestHash==`string`?{manifestHash:t.manifestHash}:{},...t.protocol===4?{protocol:4}:{},...nL(t.worker)?{worker:{paused:t.worker.paused,active:t.worker.active}}:{}}},jL=(e,t)=>Object.keys(e).length===t.length&&Object.keys(e).every(e=>t.includes(e)),ML=e=>{let t=[`revision`,`importID`,`state`,`duplicate`,`manifestHash`,`commit`];if(!nL(e)||Object.keys(e).some(e=>!t.includes(e))||!Z(e.revision)||typeof e.importID!=`string`||![`staging`,`sealed`,`committed`,`abandoned`,`expired`].includes(String(e.state))||e.duplicate!==void 0&&typeof e.duplicate!=`boolean`||e.manifestHash!==void 0&&typeof e.manifestHash!=`string`)return oL();let n=e.commit===void 0?void 0:FL(e.commit);return e.commit!==void 0&&!n?oL():{revision:e.revision,importID:e.importID,state:e.state,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{},...typeof e.manifestHash==`string`?{manifestHash:e.manifestHash}:{},...n?{commit:n}:{}}},NL=e=>!nL(e)||!jL(e,e.duplicate===void 0?[`revision`,`importID`,`staged`]:[`revision`,`importID`,`staged`,`duplicate`])||!Z(e.revision)||typeof e.importID!=`string`||e.staged!==!0||e.duplicate!==void 0&&typeof e.duplicate!=`boolean`?oL():{revision:e.revision,importID:e.importID,staged:!0,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{}},PL=e=>!nL(e)||!jL(e,[`revision`,`importID`,`manifestHash`,`state`,`itemCount`])||!Z(e.revision)||typeof e.importID!=`string`||typeof e.manifestHash!=`string`||!/^[a-f0-9]{64}$/.test(e.manifestHash)||e.state!==`sealed`||!Z(e.itemCount)?oL():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,state:`sealed`,itemCount:e.itemCount},FL=e=>!nL(e)||!jL(e,[`revision`,`importID`,`manifestHash`,`generation`,`activationEpoch`,`added`])||!Z(e.revision)||typeof e.importID!=`string`||typeof e.manifestHash!=`string`||!/^[a-f0-9]{64}$/.test(e.manifestHash)||!Z(e.generation)||!Z(e.activationEpoch)||!Z(e.added)?oL():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,generation:e.generation,activationEpoch:e.activationEpoch,added:e.added},IL=e=>FL(e),LL=e=>FL(e),RL=(e,t)=>!nL(e)||!jL(e,[`authority`,`generation`,`revision`])||e.authority!==t||!Z(e.generation)||!Z(e.revision)?oL():{authority:t,generation:e.generation,revision:e.revision},zL=async e=>ML(await aL(`${QI}/imports`,CL(`POST`,e))),BL=async(e,t)=>{let n=await aL(`${QI}/imports/${encodeURIComponent(e)}`,{signal:t});if(!nL(n)||![`staging`,`sealed`,`committed`,`abandoned`,`expired`].includes(String(n.state))||!Z(n.itemCount)||!Array.isArray(n.staged)||n.manifestHash!==void 0&&typeof n.manifestHash!=`string`)return oL();let r=n.staged.map(e=>nL(e)&&Z(e.scopeOrdinal)&&Z(e.itemOrdinal)&&typeof e.payloadHash==`string`?{scopeOrdinal:e.scopeOrdinal,itemOrdinal:e.itemOrdinal,payloadHash:e.payloadHash}:null),i=n.commit===void 0?void 0:FL(n.commit);return!r.every(e=>e!==null)||n.commit!==void 0&&!i?oL():{state:n.state,...typeof n.manifestHash==`string`?{manifestHash:n.manifestHash}:{},itemCount:n.itemCount,staged:r,...i?{commit:i}:{}}},VL=async(e,t)=>NL(await aL(`${QI}/imports/${encodeURIComponent(e)}/items`,CL(`POST`,t))),HL=async(e,t)=>PL(await aL(`${QI}/imports/${encodeURIComponent(e)}/seal`,CL(`POST`,t))),UL=async(e,t)=>IL(await aL(`${QI}/imports/${encodeURIComponent(e)}/activate`,CL(`POST`,t))),WL=async(e,t)=>LL(await aL(`${QI}/imports/${encodeURIComponent(e)}/late-commit`,CL(`POST`,t))),GL=async e=>RL(await aL(`${QI}/authority/pause`,CL(`POST`,e)),`paused`),KL=async e=>RL(await aL(`${QI}/authority/resume`,CL(`POST`,e)),`active`),qL=async(e={})=>{let t=await aL(`${QI}/attachments/uploads`,CL(`POST`,e));return!nL(t)||typeof t.uploadID!=`string`||typeof t.uploadToken!=`string`||!Z(t.expiresAt)?oL():{uploadID:t.uploadID,uploadToken:t.uploadToken,expiresAt:t.expiresAt}},JL=async(e,t,n,r)=>{let i;try{i=await _(`${QI}/attachments/uploads/${encodeURIComponent(e.uploadID)}`,{method:`PUT`,headers:{"Content-Length":String(t.size),"X-Message-Queue-Content-Length":String(t.size),"X-Message-Queue-Upload-Token":e.uploadToken,"X-Message-Queue-Sha256":n},body:t,signal:r})}catch{throw new ZI(0,`unavailable`)}if(!i.ok)throw new ZI(i.status,await iL(i))},YL=e=>!nL(e)||!Z(e.revision)||typeof e.scopeID!=`string`||typeof e.queueItemID!=`string`||!Z(e.rowVersion)||typeof e.token!=`string`||!Z(e.expiresAt)||!Z(e.generation)?oL():{revision:e.revision,scopeID:e.scopeID,queueItemID:e.queueItemID,rowVersion:e.rowVersion,token:e.token,expiresAt:e.expiresAt,generation:e.generation},XL=e=>!nL(e)||typeof e.queueItemID!=`string`||typeof e.token!=`string`||!Z(e.generation)||!Z(e.expiresAt)?oL():{queueItemID:e.queueItemID,token:e.token,generation:e.generation,expiresAt:e.expiresAt},ZL=async(e,t)=>YL(await aL(`${QI}/items/${encodeURIComponent(e)}/reserve`,CL(`POST`,t))),QL=async(e,t)=>{await aL(`${QI}/items/${encodeURIComponent(e)}/release`,CL(`POST`,t))},$L=async(e,t)=>XL(await aL(`${QI}/items/${encodeURIComponent(e)}/edit-reservations/${encodeURIComponent(t.token)}/renew`,CL(`POST`,t))),eR=async(e,t)=>xL(await aL(`${QI}/items/${encodeURIComponent(e)}/reserved-remove`,CL(`DELETE`,t))),tR=async(e,t,n)=>{let r;try{r=await _(`${QI}/items/${encodeURIComponent(e)}/attachments/${encodeURIComponent(t.attachmentID)}/content`,{signal:n})}catch{throw new ZI(0,`unavailable`)}if(!r.ok)throw new ZI(r.status,await iL(r));let i=t.mimeType.trim().toLowerCase(),a=r.headers.get(`Content-Length`),o=r.headers.get(`Content-Type`)?.split(`;`,1)[0]?.trim().toLowerCase();if(a!==null&&a!==String(t.size)||o!==i)throw new ZI(r.status,`unavailable`);let s;try{s=await r.blob()}catch{throw new ZI(r.status,`unavailable`)}if(s.size!==t.size)throw new ZI(r.status,`unavailable`);let c=new Blob([s],{type:i});return c.type===i?c:Object.defineProperty(c,"type",{value:i})},nR=async e=>xL(await aL(`${QI}/items`,CL(`POST`,e))),rR=async(e,t)=>xL(await aL(`${QI}/items/${encodeURIComponent(e)}`,CL(`PATCH`,t))),iR=async(e,t)=>xL(await aL(`${QI}/items/${encodeURIComponent(e)}/send`,CL(`POST`,t))),aR=async(e,t)=>xL(await aL(`${QI}/items/${encodeURIComponent(e)}`,CL(`DELETE`,t))),oR=async(e,t)=>xL(await aL(`${QI}/scopes/${encodeURIComponent(e)}/order`,CL(`PUT`,t))),sR=async(e,t)=>yL(await aL(`${QI}/worktrees/order`,{query:{projectDirectory:e},signal:t}))??oL(),cR=async e=>xL(await aL(`${QI}/worktrees/order`,CL(`PUT`,e))),lR=(e=u())=>P.messageQueue.snapshot(e),uR=(e=u())=>P.messageQueue.status(e),dR=(e,t,n=u())=>P.messageQueue.scope(e,t,n),fR=(e=u())=>({queryKey:uR(e),queryFn:({signal:e})=>AL(e),retry:!1,staleTime:3e4}),pR=(e=u())=>({queryKey:lR(e),queryFn:({signal:e})=>wL(e),staleTime:5e3}),mR=(e=R,t=u())=>e.fetchQuery(fR(t)),hR=(e=R,t=u())=>e.fetchQuery(pR(t)),gR=async(e=R,t=u())=>e.fetchQuery({...fR(t),staleTime:0}),_R=async(e=R,t=u())=>e.fetchQuery({...pR(t),staleTime:0}),vR=(e,t,n=u())=>{e.setQueryData(dR(t.scopeID,t.revision,n),{pages:[t],pageParams:[0]})},yR=(e,t,n=u())=>{e.setQueryData(uR(n),t)},bR=(e,t,n=u())=>{e.setQueryData(lR(n),t)},xR=(e,t,n,r=u())=>{let i=e.getQueryData(dR(t,n,r));if(!i?.pages.length)return;let a=i.pages[0];if(!a)return;let o=i.pages.flatMap(e=>e.items);return o.length===a.itemCount&&i.pages.every(e=>e.revision===a.revision)?{...a,items:o,nextOffset:void 0}:void 0},SR=(e,t=u())=>e.removeQueries({queryKey:[t,`messageQueue`,`scope`],exact:!1}),CR=(e,t,n=u())=>e.removeQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),wR=(e,t,n=u())=>e.invalidateQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),TR=`openchamber_message_queue_ledger_v4`,ER=`message-queue-store`,DR={scopes:128,totalItems:2048,attachmentsPerItem:64,issuesPerItem:64,string:8192,content:2e5,dataURL:26214400,bytes:26214400},OR=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,kR=(e,t)=>Object.keys(e).every(e=>t.includes(e)),AR=(e,t=DR.string)=>typeof e==`string`&&e.length>0&&e.length<=t,jR=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,MR=e=>JSON.parse(JSON.stringify(e)),NR=(e,t,n,r)=>{let i=OR(t)?t:{};return{...e?{scopeKey:e}:{},...AR(i.queueItemID)?{queueItemID:i.queueItemID}:{},...AR(i.operationID)?{operationID:i.operationID}:{},path:n,reason:r}},PR=e=>e.state===`bound`?`bound:${JSON.stringify([e.transportIdentity,e.directory,e.sessionID])}`:`unbound-legacy:${JSON.stringify([e.sessionID])}`,FR=e=>{if(typeof e!=`string`)return;let t=e.startsWith(`bound:`)?(()=>{try{return JSON.parse(e.slice(6))}catch{return}})():e.startsWith(`unbound-legacy:`)?(()=>{try{return JSON.parse(e.slice(15))}catch{return}})():void 0,n=LR(e.startsWith(`bound:`)&&Array.isArray(t)&&t.length===3?{state:`bound`,transportIdentity:t[0],directory:t[1],sessionID:t[2]}:e.startsWith(`unbound-legacy:`)&&Array.isArray(t)&&t.length===1?{state:`unbound-legacy`,sessionID:t[0]}:void 0);return n&&PR(n)===e?n:void 0},IR=()=>({version:4,queues:{},migration:{v3State:`pending`}}),LR=e=>!OR(e)||!AR(e.state)?void 0:e.state===`bound`&&kR(e,[`state`,`transportIdentity`,`directory`,`sessionID`])&&AR(e.transportIdentity)&&AR(e.directory)&&AR(e.sessionID)?{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID}:e.state===`unbound-legacy`&&kR(e,[`state`,`sessionID`])&&AR(e.sessionID)?{state:`unbound-legacy`,sessionID:e.sessionID}:void 0,RR=(e,t)=>{try{let n=JSON.parse(e);return Array.isArray(n)&&(n.length===2&&n[0]===`root`&&n[1]===t||n.length===3&&typeof n[1]==`string`&&n[0]===`part`&&n[2]===t)}catch{return!1}},zR=[`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`serverPath`,`vscodePath`,`vscodeSource`],BR=e=>{if(!AR(e.attachmentID)||!AR(e.occurrenceRefID)||!RR(e.occurrenceRefID,e.attachmentID)||!AR(e.filename)||typeof e.mimeType!=`string`||e.mimeType.length>DR.string||!jR(e.size))return;let t={attachmentID:e.attachmentID,occurrenceRefID:e.occurrenceRefID,filename:e.filename,mimeType:e.mimeType,size:e.size};if(e.source===`local`&&e.serverPath===void 0&&e.vscodePath===void 0&&e.vscodeSource===void 0)return{...t,source:`local`};if(e.source===`server`&&AR(e.serverPath)&&e.vscodePath===void 0&&e.vscodeSource===void 0)return{...t,source:`server`,serverPath:e.serverPath};if(e.source===`vscode`&&e.serverPath===void 0&&AR(e.vscodePath)&&(e.vscodeSource===`file`||e.vscodeSource===`selection`))return{...t,source:`vscode`,vscodePath:e.vscodePath,vscodeSource:e.vscodeSource}},VR=e=>{if(!OR(e)||!kR(e,[...zR,`version`,`locator`])||e.version!==1)return;let t=BR(e);if(!t||!OR(e.locator))return;let n=e.locator.kind===`blob`&&kR(e.locator,[`kind`,`blobID`])&&AR(e.locator.blobID)?{kind:`blob`,blobID:e.locator.blobID}:e.locator.kind===`url`&&kR(e.locator,[`kind`,`url`])&&Te(e.locator.url)?{kind:`url`,url:e.locator.url}:void 0;return n?{version:1,...t,locator:n}:void 0},HR=e=>{if(!OR(e)||!kR(e,[...zR,`reason`]))return;let t=BR(e);return t&&[`legacy-blob-url`,`legacy-bytes-missing`,`legacy-unbound-data`,`missing-blob`].includes(e.reason)?{...t,reason:e.reason}:void 0},UR=(e,t)=>{if(!OR(e)||!kR(e,[`text`,`references`])||typeof e.text!=`string`)return;let n=C(e.text,e.references),r=n&&ue(n,`queue-canonical`);return r&&r.ok&&r.text===t?n:void 0},WR=(e,t)=>{if(e===void 0)return[];if(!t)return;let n=S(t.text,e);return!n||n.some(e=>t.references.some(t=>e.range.start<t.end&&t.start<e.range.end))?void 0:n},GR=(e,t)=>{if(!OR(e)||!kR(e,[`version`,`queueItemID`,`operationID`,`messageID`,`owner`,`content`,`composerDocument`,`composerMentions`,`attachments`,`attachmentIssues`,`createdAt`,`sendConfig`,`status`,`attemptCount`,`nextAttemptAt`,`reconciliationStartedAt`,`reconciliationDeadlineAt`,`reconciliationChecks`,`reconciliationNextCheckAt`,`failureKind`])||e.version!==1||!AR(e.queueItemID)||!AR(e.operationID)||!AR(e.messageID)||typeof e.content!=`string`||e.content.length>DR.content||!jR(e.createdAt)||!jR(e.attemptCount)||!Array.isArray(e.attachments)||e.attachments.length>DR.attachmentsPerItem||!Array.isArray(e.attachmentIssues)||e.attachmentIssues.length>DR.issuesPerItem||![`queued`,`sending`,`retrying`,`reconciling`,`unresolved`,`failed`].includes(e.status))return;let n=LR(e.owner),r=e.attachments.map(VR),i=e.attachmentIssues.map(HR),a=e.composerDocument===void 0?void 0:UR(e.composerDocument,e.content),o=WR(e.composerMentions,a);if(!n||e.composerDocument!==void 0&&!a||e.composerMentions!==void 0&&!o||!r.every(Boolean)||!i.every(Boolean))return;let s=new Set(r.map(e=>e.occurrenceRefID)),c=new Set(a?ie(a).flatMap(e=>e.type===`attachment`?[e.attachmentRefID]:[]):[]);if(s.size!==r.length||new Set(i.map(e=>e.occurrenceRefID)).size!==i.length||i.some(e=>s.has(e.occurrenceRefID))||[...c].some(e=>!s.has(e))||e.sendConfig!==void 0&&(!OR(e.sendConfig)||!kR(e.sendConfig,[`providerID`,`modelID`,`agent`,`variant`])||!AR(e.sendConfig.providerID)||!AR(e.sendConfig.modelID)||[e.sendConfig.agent,e.sendConfig.variant].some(e=>e!==void 0&&!AR(e))))return;let l=[e.nextAttemptAt,e.reconciliationStartedAt,e.reconciliationDeadlineAt,e.reconciliationChecks,e.reconciliationNextCheckAt],u=e.reconciliationStartedAt!==void 0&&e.reconciliationDeadlineAt!==void 0&&e.reconciliationChecks!==void 0&&e.reconciliationDeadlineAt>=e.reconciliationStartedAt,d=e.reconciliationStartedAt===void 0&&e.reconciliationDeadlineAt===void 0&&e.reconciliationChecks===void 0&&e.reconciliationNextCheckAt===void 0,f=e.nextAttemptAt===void 0,p=e.failureKind===void 0,m=e.status===`queued`||e.status===`sending`?f&&d&&p&&i.length===0:e.status===`retrying`?e.nextAttemptAt!==void 0&&e.failureKind===`pre-dispatch`&&d&&i.length===0:e.status===`reconciling`?f&&u&&e.failureKind===`ambiguous-dispatch`&&i.length===0:e.status===`unresolved`?f&&u&&e.failureKind===`ambiguous-dispatch`&&i.length===0||f&&d&&p&&i.length>0:f&&d&&e.failureKind===`definitive`&&i.length===0;if(l.some(e=>e!==void 0&&!jR(e))||!m)return;let h=e.status===`sending`&&t,g=h?e.createdAt+3e4:e.reconciliationDeadlineAt;if(h&&!jR(g))return;let _=h?e.createdAt:e.reconciliationStartedAt,v=h?0:e.reconciliationChecks;return{version:1,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,owner:n,content:e.content,...a?{composerDocument:a}:{},...o?.length?{composerMentions:o}:{},attachments:r,attachmentIssues:i,createdAt:e.createdAt,...e.sendConfig?{sendConfig:MR(e.sendConfig)}:{},status:h?`reconciling`:e.status,attemptCount:e.attemptCount,...e.nextAttemptAt===void 0?{}:{nextAttemptAt:e.nextAttemptAt},..._===void 0?{}:{reconciliationStartedAt:_,reconciliationDeadlineAt:g,reconciliationChecks:v,...e.reconciliationNextCheckAt===void 0?{}:{reconciliationNextCheckAt:e.reconciliationNextCheckAt}},...h?{failureKind:`ambiguous-dispatch`}:e.failureKind?{failureKind:e.failureKind}:{}}},KR=(e,t={})=>{let n=e=>({status:`corrupt`,snapshot:IR(),issues:[NR(void 0,void 0,`$`,e)],degradedScopeKeys:[]});if(!OR(e)||!kR(e,[`version`,`queues`,`migration`])||e.version!==4||!OR(e.queues)||!OR(e.migration)||!kR(e.migration,[`v3State`])||![`pending`,`complete`,`degraded`].includes(e.migration.v3State)||Object.keys(e.queues).length>DR.scopes)return n(`snapshot`);let r=0,i={},a=[],o=new Set,s=new Map,c=new Map,l=new Map,u=(e,t,n,r)=>{a.push(NR(e,t,n,r)),o.add(e)};for(let[a,d]of Object.entries(e.queues)){if(!FR(a)){u(a,d,`$.queues.${JSON.stringify(a)}`,`scope`);continue}if(!Array.isArray(d)){u(a,d,`$.queues.${JSON.stringify(a)}`,`queue`);continue}let e=[];for(let i=0;i<d.length;i++){if(++r>DR.totalItems)return n(`item-limit`);let f=d[i],p=`$.queues.${JSON.stringify(a)}[${i}]`,m=GR(f,t.normalizeSending===!0);if(!m||PR(m.owner)!==a){u(a,f,p,`item`);continue}let h=[[s,m.queueItemID,`duplicate-queue-item-id`],[c,m.operationID,`duplicate-operation-id`],[l,m.messageID,`duplicate-message-id`]].find(([e,t])=>e.has(t));if(h){let[e,,t]=h;u(a,f,p,t),o.add(e.get(h[1]));continue}s.set(m.queueItemID,a),c.set(m.operationID,a),l.set(m.messageID,a),e.push(m)}e.length&&(i[a]=e)}return{status:`ok`,snapshot:MR({version:4,queues:i,migration:{v3State:e.migration.v3State}}),issues:a,degradedScopeKeys:[...o]}},qR=e=>{let t=KR(e);if(t.status===`corrupt`||t.issues.length)return{ok:!1,error:{code:`corrupt`}};try{return{ok:!0,value:JSON.stringify(t.snapshot)}}catch{return{ok:!1,error:{code:`serialization`}}}},JR=()=>({ok:!1,error:{code:`unavailable`}}),YR=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),XR=e=>({read:async t=>{if(!e)return JR();try{return{ok:!0,value:e.getItem(t)}}catch(e){return YR(e)}},write:async(t,n)=>{if(!e)return JR();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return YR(e)}},remove:async t=>{if(!e)return JR();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return YR(e)}}}),ZR=()=>{try{return XR(typeof window>`u`?null:window.localStorage)}catch{return XR(null)}},QR=async e=>{let t=await e.read(TR);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}};try{let e=KR(JSON.parse(t.value),{normalizeSending:!0});return{ok:!0,value:{raw:t.value,snapshot:e.status===`ok`?e.snapshot:null,status:e.status===`corrupt`?`corrupt`:e.issues.length?`partial`:`ok`,issues:e.issues,degradedScopeKeys:e.degradedScopeKeys}}}catch{return{ok:!0,value:{raw:t.value,snapshot:null,status:`corrupt`,issues:[NR(void 0,void 0,`$`,`json`)],degradedScopeKeys:[]}}}},$R=async e=>{let t=await QR(e);return t.ok?t.value.status===`empty`?{ok:!0,value:null}:t.value.status===`ok`?{ok:!0,value:t.value.snapshot}:{ok:!1,error:{code:`corrupt`}}:t},ez=async(e,t)=>{let n=qR(t);return n.ok?e.write(TR,n.value):n},tz=e=>{let t=!0,n=[],r=!1,i=new Set,a=()=>{if(!r&&n.length===0){for(let e of i)e();i.clear()}},o=()=>{if(r)return;let t=n.shift();if(!t){a();return}r=!0,ez(e,t.snapshot).then(t.resolve).finally(()=>{r=!1,o()})},s=()=>{let e=n;n=[],e.forEach(e=>e.resolve({ok:!1,error:{code:`cancelled`}})),a()};return{readDetailed:()=>QR(e),read:()=>$R(e),persist:e=>{if(!t)return Promise.resolve({ok:!1,error:{code:`cancelled`}});let r=KR(e);if(r.status===`corrupt`||r.issues.length)return Promise.resolve({ok:!1,error:{code:`corrupt`}});let i=MR(r.snapshot);return new Promise(e=>{n.push({snapshot:i,resolve:e}),o()})},flush:()=>!r&&n.length===0?Promise.resolve():new Promise(e=>i.add(e)),setEnabled:async e=>{t=e,t||s(),await(!r&&n.length===0?Promise.resolve():new Promise(e=>i.add(e)))},cancelPending:s}},nz=DR.string,rz=DR.dataURL,iz=DR.bytes,az=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,oz=(e,t,n=!1)=>typeof e==`string`&&e.length<=nz&&(n||e.length>0)?e:t,sz=(e,t=0)=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0?e:t,cz=(e,t)=>PR(e)===PR(t),lz=(e,t,n,r)=>({scopeKey:e,queueItemID:t,path:n,reason:r}),uz=async(e,t)=>{let n=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(t));return`${e}-${[...new Uint8Array(n)].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`},dz=e=>typeof e==`string`&&e.length>0&&e.length<=nz,fz=e=>FR(e)??(dz(e)?{state:`unbound-legacy`,sessionID:e}:void 0),pz=e=>{if(az(e)){if(e.state===`bound`&&dz(e.transportIdentity)&&dz(e.directory)&&dz(e.sessionID))return{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID};if(e.state===`unbound-legacy`&&dz(e.sessionID))return{state:`unbound-legacy`,sessionID:e.sessionID}}},mz=e=>{if(e.length>rz)return;let t=/^data:([^,]*),(.*)$/s.exec(e);if(!t)return;let n=t[1].split(`;`),r=n.at(-1)?.toLowerCase()===`base64`,i=(r?n.slice(0,-1):n).join(`;`)||`application/octet-stream`,a=t[2];try{let e;if(r){if(!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(a))return;let t=atob(a);if(t.length>iz)return;e=Uint8Array.from(t,e=>e.charCodeAt(0))}else if(e=new TextEncoder().encode(decodeURIComponent(a)),e.byteLength>iz)return;let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),new Blob([t],{type:i})}catch{return}},hz=e=>az(e)&&dz(e.providerID)&&dz(e.modelID)&&(e.agent===void 0||dz(e.agent))&&(e.variant===void 0||dz(e.variant))?{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}:void 0,gz=async(e,t)=>{let n=await QR(e);if(!n.ok)return{status:`failed`,error:n.error,issues:[],cleanupErrors:[]};if(n.value.status===`ok`){let e=n.value.snapshot;return e.migration.v3State===`degraded`?{status:`degraded`,snapshot:e,issues:[lz(``,``,`$.migration.v3State`,`existing-degraded`)],cleanupErrors:[]}:{status:`committed`,snapshot:e,issues:[],cleanupErrors:[]}}if(n.value.status===`partial`||n.value.status===`corrupt`)return{status:`recovery-required`,issues:n.value.issues.map(e=>lz(e.scopeKey??``,e.queueItemID??``,e.path,e.reason)),cleanupErrors:[]};let r=await e.read(ER);if(!r.ok)return{status:`failed`,error:r.error,issues:[],cleanupErrors:[]};let i=[],a=[],o=[],s=async()=>{for(let e of o.reverse()){let n=await t.releaseIfMatches(e.reference,e.blobID);n.ok||a.push({...e.issue,reason:`rollback-${n.error.code}`})}};if(r.value===null){let t={...IR(),migration:{v3State:`complete`}},n=await ez(e,t);return n.ok?{status:`committed`,snapshot:t,issues:i,cleanupErrors:a}:{status:`failed`,error:n.error,issues:i,cleanupErrors:a}}let c;try{c=JSON.parse(r.value)}catch{return{status:`failed`,error:{code:`corrupt`},issues:[lz(``,``,`$`,`legacy-json`)],cleanupErrors:a}}let l=az(c)&&az(c.state)?c.state.queuedMessages:az(c)?c.queuedMessages:void 0;if(!az(l))return{status:`failed`,error:{code:`corrupt`},issues:[lz(``,``,`$.state.queuedMessages`,`legacy-state`)],cleanupErrors:a};let u={...IR(),migration:{v3State:`complete`}},d=new Set,f=new Set,p=new Set,m=0,h=Object.entries(l);for(let e=0;e<h.length;e++){let[n,r]=h[e];if(e>=DR.scopes){i.push(lz(n,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-scope-limit`));break}let c=fz(n),l=c?PR(c):n;if(!c||!Array.isArray(r)){i.push(lz(l,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-queue`));continue}for(let e=0;e<r.length;e++){if(m>=DR.totalItems){i.push(lz(l,``,`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,`legacy-item-limit`));break}m++;let h=`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,g=az(r[e])?r[e]:void 0;if(!g||typeof g.content!=`string`||g.content.length>131072){i.push(lz(l,``,h,`legacy-item`));continue}let _=pz(g.owner);if(g.owner!==void 0&&(!_||!cz(c,_))){i.push(lz(l,dz(g.queueItemID)?g.queueItemID:``,h,`owner-conflict`));continue}let v=JSON.stringify([n,e,g.content]),y=dz(g.queueItemID)?g.queueItemID:dz(g.id)?g.id:await uz(`queue`,v),b=dz(g.operationID)?g.operationID:await uz(`operation`,`${v}:operation`),x=dz(g.messageID)?g.messageID:await uz(`message`,`${v}:message`);if(d.has(y)||f.has(b)||p.has(x)){i.push(lz(l,y,h,`duplicate-id`));continue}d.add(y),f.add(b),p.add(x);let w=[],T=[],E=new Set,D=Array.isArray(g.attachments)?g.attachments:[];g.attachments!==void 0&&!Array.isArray(g.attachments)&&i.push(lz(l,y,`${h}.attachments`,`legacy-attachments`));for(let e=0;e<D.length&&e<DR.attachmentsPerItem;e++){let n=az(D[e])?D[e]:void 0,r=`${h}.attachments[${e}]`;if(!n){i.push(lz(l,y,r,`legacy-attachment`));continue}let u=dz(n.id)?n.id:await uz(`attachment`,`${v}:attachment:${e}`),d=oe(u),f=oz(n.filename,u),p=oz(n.mimeType,``,!0),m=sz(n.size);if(E.has(d)){i.push(lz(l,y,r,`duplicate-attachment-occurrence`));continue}E.add(d);let g=n.source===`local`?n.serverPath===void 0&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`server`?dz(n.serverPath)&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`vscode`&&dz(n.vscodePath)&&(n.vscodeSource===`file`||n.vscodeSource===`selection`)&&n.serverPath===void 0,_=g?n.source:`local`,b=_===`server`?n.serverPath:void 0,x=_===`vscode`?n.vscodePath:void 0,S=_===`vscode`?n.vscodeSource:void 0,C={attachmentID:u,occurrenceRefID:d,filename:f,mimeType:p,size:m,source:_,...b?{serverPath:b}:{},...x?{vscodePath:x}:{},...S?{vscodeSource:S}:{}},O=e=>{T.push({...C,reason:e}),i.push(lz(l,y,r,e))};if(c.state===`unbound-legacy`){O(`legacy-unbound-data`);continue}if(!g){i.push(lz(l,y,r,n.source===`server`?`server-metadata`:n.source===`vscode`?`vscode-metadata`:`attachment-source`)),O(`legacy-bytes-missing`);continue}let k=typeof n.dataUrl==`string`?n.dataUrl:``;if(Te(k)){w.push({version:1,...C,locator:{kind:`url`,url:k}});continue}if(k.startsWith(`blob:`)){O(`legacy-blob-url`);continue}if(!k.startsWith(`data:`)){O(`legacy-bytes-missing`);continue}let A=mz(k);if(!A){O(`legacy-bytes-missing`);continue}let j=await uz(`legacy-blob`,`${y}:${u}`),ee={transportIdentity:c.transportIdentity,owner:{kind:`queue`,ownerID:y},attachmentOccurrenceRefID:d},te=await t.readReference(ee);if(!te.ok||te.value!==void 0&&te.value!==j||!(await t.putAndRetain(ee,j,A)).ok)return await s(),{status:`failed`,error:{code:`unavailable`},issues:i,cleanupErrors:a};te.value===void 0&&o.push({reference:ee,blobID:j,issue:lz(l,y,r,`blob-retain`)}),w.push({version:1,...C,mimeType:A.type,size:A.size,locator:{kind:`blob`,blobID:j}})}D.length>DR.attachmentsPerItem&&i.push(lz(l,y,`${h}.attachments`,`legacy-attachment-limit`));let O=sz(g.createdAt),k=typeof g.status==`string`?g.status:`queued`,A=az(g.failure)?g.failure.kind:g.failureKind,j=A===`pre-dispatch`||A===`ambiguous-dispatch`||A===`definitive`?A:void 0,ee=k===`retrying`||j===`pre-dispatch`,te=k===`sending`||k===`reconciling`||j===`ambiguous-dispatch`,ne=k===`unresolved`&&T.length===0,re=T.length>0,ie=sz(g.reconciliationStartedAt,O),ae=sz(g.reconciliationDeadlineAt,-1),M=ie>2**53-1-3e4?ie:ie+3e4,se=Math.max(ie,ae>=0?ae:M),ce=sz(g.reconciliationChecks),le=sz(g.reconciliationNextCheckAt,ie);te&&ae<0&&ie>2**53-1-3e4&&i.push(lz(l,y,`${h}.reconciliationDeadlineAt`,`reconciliation-deadline-overflow`));let de=re||ne||c.state===`unbound-legacy`&&te?`unresolved`:ee?`retrying`:te?`reconciling`:k===`failed`||j===`definitive`?`failed`:`queued`,fe=de===`reconciling`||de===`unresolved`&&!re,pe=az(g.composerDocument)&&typeof g.composerDocument.text==`string`?C(g.composerDocument.text,g.composerDocument.references):void 0,N=pe&&ue(pe,`queue-canonical`);g.composerDocument!==void 0&&(!N||!N.ok||N.text!==g.content)&&i.push(lz(l,y,`${h}.composerDocument`,`degraded-composer-document`));let me=N&&N.ok&&N.text===g.content?pe:void 0,P=me?S(me.text,g.composerMentions):void 0,F=P&&!P.some(e=>me.references.some(t=>e.range.start<t.end&&t.start<e.range.end));g.composerMentions!==void 0&&!F&&i.push(lz(l,y,`${h}.composerMentions`,`degraded-composer-mentions`));let I={version:1,queueItemID:y,operationID:b,messageID:x,owner:c,content:g.content,...me?{composerDocument:me}:{},...F&&P.length?{composerMentions:P}:{},attachments:w,attachmentIssues:T,createdAt:O,...hz(g.sendConfig)?{sendConfig:hz(g.sendConfig)}:{},status:de,attemptCount:sz(g.attemptCount),...de===`retrying`?{nextAttemptAt:sz(g.nextAttemptAt,O),failureKind:`pre-dispatch`}:fe?{reconciliationStartedAt:ie,reconciliationDeadlineAt:se,reconciliationChecks:ce,reconciliationNextCheckAt:le,failureKind:`ambiguous-dispatch`}:de===`failed`?{failureKind:`definitive`}:{}};(u.queues[l]??=[]).push(I)}}i.length&&(u.migration.v3State=`degraded`);let g=await ez(e,u);return g.ok?{status:u.migration.v3State===`complete`?`committed`:`degraded`,snapshot:u,issues:i,cleanupErrors:a}:(await s(),{status:`failed`,error:g.error,issues:i,cleanupErrors:a})},_z=(e,t)=>JSON.stringify(e)===JSON.stringify(t),vz=(e,t=[])=>({status:e,errors:t,cleanupErrors:[]}),yz=e=>e.status===`sending`||e.status===`reconciling`,bz=(e,t,n={})=>{let r={hydration:`idle`,snapshot:IR(),issues:[],enabled:n.enabled??!0},i,a=Promise.resolve(),o=new Set,s=e=>{r=e,o.forEach(e=>e())},c=e=>{let t={};for(let[n,i]of Object.entries(e.queues))t[n]=_z(r.snapshot.queues[n],i)?r.snapshot.queues[n]:i;let n=_z(r.snapshot.queues,t)&&_z(r.snapshot.migration,e.migration)?r.snapshot:{...e,queues:t};s({...r,snapshot:n})},l=e=>{let t=a.then(e,e);return a=t.then(()=>void 0,()=>void 0),t},u=e=>{let t=r.snapshot.queues[e.scopeKey]?.find(t=>t.queueItemID===e.queueItemID&&t.operationID===e.operationID&&t.messageID===e.messageID);return t&&PR(t.owner)===e.scopeKey?t:void 0},d=()=>r.hydration===`idle`||r.hydration===`hydrating`?vz(`unseeded`):r.hydration===`recovery-required`?vz(`recovery-required`,[...r.issues]):r.hydration===`failed`?vz(`failed`,[...r.issues]):void 0,f=async t=>{let n=r.snapshot,i=await t();return i.status===`committed`&&c(e.getSnapshot()),i.status===`committed`&&i.current===!1?{...i,status:`stale`}:(i.status!==`committed`&&r.snapshot!==n&&s({...r,snapshot:n}),i)},p=()=>t(),m=(e,t)=>e.owner.state!==`bound`||e.owner.transportIdentity===t.transportIdentity,h=new Map,g=e=>`${e.scopeKey}\u0000${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,_=e=>h.has(g(e)),v=()=>vz(`failed`,[{phase:`identity`,code:`reserved`}]),y=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,b=async()=>{for(let[t,n]of h){let[,r,i,a]=t.split(`\0`);try{(await e.releaseSend({queueItemID:r,operationID:i,messageID:a},n.token,n.runtime)).status!==`stale`&&h.delete(t)}catch{h.delete(t)}}};return{subscribe:e=>(o.add(e),()=>o.delete(e)),getState:()=>r,captureRuntime:p,hydrate:t=>i??=l(async()=>{await b(),s({...r,hydration:`hydrating`});let n=await e.hydrate(t),i=n.errors.map(e=>({phase:e.phase,code:e.code,scopeKey:e.scopeKey,path:e.path})),a=n.status===`committed`||n.status===`disabled`?`ready`:n.status===`recovery-required`?`recovery-required`:`failed`;return c(e.getSnapshot()),s({...r,hydration:a,issues:i,enabled:r.enabled}),n}).finally(()=>{i=void 0}),flush:()=>l(()=>e.flush()),setEnabled:t=>l(async()=>{t||await b(),await e.setEnabled(t),s({...r,enabled:t})}),admit:(t,n,r=p())=>l(async()=>d()||(m(t,r)?f(()=>e.admit(t,r,n)):vz(`stale`))),materializeForEdit:(t,n=p())=>l(async()=>{let r=d(),i=u(t);if(r)return r;if(!i||!m(i,n))return vz(`stale`);if(yz(i))return vz(`failed`,[{phase:`identity`,code:`locked`}]);if(_(t))return v();let a=await e.acquireSendPayload(t,n);return a.status!==`committed`||!a.token?a.status===`committed`?vz(`failed`,[{phase:`identity`,code:`missing-send-token`}]):a:(h.set(g(t),{token:a.token,runtime:n}),{...a,item:JSON.parse(JSON.stringify(i)),values:a.values?.map(({attachment:e,value:t})=>({attachment:JSON.parse(JSON.stringify(e)),value:t}))})}),releaseEditReservation:(t,n,r=p())=>l(async()=>{let i=g(t),a=h.get(i);if(!a||a.token!==n||!y(a.runtime,r))return vz(`stale`);try{let a=await e.releaseSend(t,n,r);return a.status!==`stale`&&h.delete(i),a}catch{return h.delete(i),vz(`failed`,[{phase:`runtime`,code:`reservation-release-threw`}])}}),removeEditReservation:(t,n,i=p())=>l(async()=>{let a=g(t),o=h.get(a),l=d(),f=u(t);if(l)return{...l,durableRemoval:!1};if(!o||o.token!==n||!y(o.runtime,i)||!f||!m(f,i))return{...vz(`stale`),durableRemoval:!1};if(yz(f))return{...vz(`failed`,[{phase:`identity`,code:`locked`}]),durableRemoval:!1};let p=r.snapshot,_=await e.remove(t,i),v=_.status===`committed`;return v&&(h.delete(a),c(e.getSnapshot())),v&&_.current===!1?{..._,status:`stale`,durableRemoval:v}:(!v&&r.snapshot!==p&&s({...r,snapshot:p}),{..._,durableRemoval:v})}),remove:(t,n=p())=>l(async()=>{let i=d(),a=u(t);if(i)return{...i,durableRemoval:!1};if(!a||!m(a,n))return{...vz(`stale`),durableRemoval:!1};if(_(t))return{...v(),durableRemoval:!1};if(yz(a))return{...vz(`failed`,[{phase:`identity`,code:`locked`}]),durableRemoval:!1};let o=r.snapshot,l=await e.remove(t,n),f=l.status===`committed`;return f&&c(e.getSnapshot()),f&&l.current===!1?{...l,status:`stale`,durableRemoval:f}:(!f&&r.snapshot!==o&&s({...r,snapshot:o}),{...l,durableRemoval:f})}),reorder:(t,n,i=p())=>l(async()=>{let a=d(),o=r.snapshot.queues[t];return a||(o?o.some(e=>_({scopeKey:t,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}))?v():o.some(e=>yz(e)||!m(e,i))?vz(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.reorder(t,n,i)):vz(`failed`,[{phase:`identity`,code:`locked`}]))}),bind:(t,n,r=p())=>l(async()=>{let i=d(),a=u(t);return i||(!a||n.transportIdentity!==r.transportIdentity||!m(a,r)?vz(`stale`):_(t)?v():yz(a)?vz(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.bind(t,n,r)))}),bindMany:(t,n,r=p())=>l(async()=>{let i=d(),a=t.map(u);return i||(t.some(_)?v():!a.length||a.some(e=>!e||yz(e)||!m(e,r))||n.transportIdentity!==r.transportIdentity?vz(`stale`):f(()=>e.bindMany(t,n,r)))}),transition:(t,n,r,i=p())=>l(async()=>{let a=d(),o=u(t);return a||(!o||!m(o,i)?vz(`stale`):_(t)?vz(`failed`,[{phase:`identity`,code:`reserved`}]):(Array.isArray(n)?n:[n]).includes(o.status)?f(()=>e.transition(t,r,i)):vz(`stale`))}),confirm:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?vz(`stale`):_(t)?vz(`failed`,[{phase:`identity`,code:`reserved`}]):f(()=>e.remove(t,n)))}),acquireSendPayload:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?vz(`stale`):_(t)?vz(`failed`,[{phase:`identity`,code:`reserved`}]):e.acquireSendPayload(t,n))}),releaseSend:(t,n,r=p())=>l(async()=>e.releaseSend(t,n,r))}},xz=e=>JSON.parse(JSON.stringify(e)),Q=(e,t=[],n=[],r)=>({status:e,...r===void 0?{}:{current:r},errors:t,cleanupErrors:n}),Sz=(e,t)=>e.queueItemID===t.queueItemID&&e.operationID===t.operationID&&e.messageID===t.messageID,Cz=(e,t,n)=>e.owner.state===`bound`?{transportIdentity:e.owner.transportIdentity,owner:{kind:t,ownerID:t===`queue`?e.queueItemID:e.operationID},attachmentOccurrenceRefID:n}:void 0,wz=e=>JSON.stringify(e),Tz=e=>({owner:e.owner,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,composerDocument:e.composerDocument,composerMentions:e.composerMentions,attachments:e.attachments,attachmentIssues:e.attachmentIssues,createdAt:e.createdAt,sendConfig:e.sendConfig}),Ez=e=>`${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,Dz=e=>typeof e==`number`&&Number.isSafeInteger(e),Oz=(e,t)=>{if(wz(Tz(e))!==wz(Tz(t))||!Dz(t.attemptCount)||t.attemptCount<e.attemptCount)return!1;let n=`${e.status}:${t.status}`;return!(![`queued:sending`,`retrying:sending`,`sending:retrying`,`sending:reconciling`,`sending:failed`,`reconciling:reconciling`,`reconciling:unresolved`].includes(n)||t.status===`sending`&&t.attemptCount!==e.attemptCount+1||t.status!==`sending`&&t.attemptCount!==e.attemptCount||[t.reconciliationStartedAt,t.reconciliationDeadlineAt,t.reconciliationChecks,t.reconciliationNextCheckAt].some(e=>e!==void 0&&!Dz(e))||e.status===`reconciling`&&t.status===`reconciling`&&(t.reconciliationStartedAt!==e.reconciliationStartedAt||t.reconciliationDeadlineAt!==e.reconciliationDeadlineAt||(t.reconciliationChecks??0)<(e.reconciliationChecks??0)))},kz=e=>{if(!e.composerDocument)return!0;let t=new Set(e.composerDocument?ie(e.composerDocument).flatMap(e=>e.type===`attachment`?[e.attachmentRefID]:[]):[]),n=new Set(e.attachments.map(e=>e.occurrenceRefID));return[...t].every(e=>n.has(e))},Az=(e,t,n={})=>{let r=IR(),i=!1,a=n.enabled??!0,o=0,s=!1,c=!1,l=Promise.resolve(),u=new Map,d=new Map,f=new Map,p=0n,m=e=>{let t=l.then(e,e);return l=t.then(()=>void 0,()=>void 0),t},h=()=>Object.values(r.queues).flat(),g=e=>h().find(t=>Sz(t,e)),_=(e,t,n,r,i)=>({phase:e,code:t,...n?{scopeKey:PR(n.owner),queueItemID:n.queueItemID,operationID:n.operationID}:{},...r?{attachmentID:r.attachmentID,occurrenceRefID:r.occurrenceRefID}:{},...i?{path:i}:{}}),v=(e,t)=>e.attachments.flatMap(n=>n.locator.kind===`blob`?(()=>{let r=Cz(e,t,n.occurrenceRefID);return r?[{reference:r,blobID:n.locator.blobID,attachment:n,item:e}]:[]})():[]),y=(e,t)=>({transportIdentity:e.transportIdentity,generation:e.generation,enableGeneration:o,identity:{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID}}),b=(e,t)=>e.owner.state!==`bound`||e.owner.transportIdentity===t.transportIdentity,x=async(e,t)=>{if(!a||t.enableGeneration!==o||e.transportIdentity!==t.transportIdentity||e.generation!==t.generation||!await e.isCurrent())return!1;let n=await e.current?.();return n===void 0||n.transportIdentity===t.transportIdentity&&n.generation===t.generation},S=()=>Q(a?`stale`:`disabled`,[],[],!1),C=()=>Q(`recovery-required`,[_(`metadata`,`recovery-required`)]),w=async(t,n)=>{let r=await e.releaseIfMatches(t.reference,t.blobID);r.ok||(u.set(N(t.reference),t),n.push(_(`blob`,r.error.code,t.item,t.attachment)))},T=async e=>{let t=[];for(let n of[...e].reverse())await w(n,t);return t},E=()=>{let e=new Map;for(let t of h())for(let n of v(t,`queue`))e.set(N(n.reference),n.blobID);return e},D=(e,t,n=E())=>n.get(e)===t.blobID||d.get(e)?.blobID===t.blobID,O=async(e,n,i)=>{if(!await x(n,i))return{committed:!1,current:!1};let a=await t.persist(e);return a.ok?(r=e,{committed:!0,current:await x(n,i)}):{committed:!1,current:!0,error:_(`metadata`,a.error.code)}},k=async(t=!1)=>{if(!i)return Q(`unseeded`);if(!a)return Q(`disabled`);if(c||s)return C();let n=E(),r=t?new Map:new Map([...d].map(([e,t])=>[e,t.blobID])),o=new Map;for(let e of h())for(let t of v(e,`queue`))o.set(N(t.reference),t);let l=new Map(d),u=[];if(!s){let t=await e.reconcileReferences(n,{ownerKinds:[`queue`]});if(!t.ok)u.push(_(`blob`,t.error.code));else for(let e of t.value.missing){let t=o.get(e);u.push(_(`blob`,`missing-blob`,t?.item,t?.attachment,e))}}let f=await e.reconcileReferences(r,{ownerKinds:[`send`]});if(!f.ok)u.push(_(`blob`,f.error.code));else for(let e of f.value.missing){let t=l.get(e);u.push(_(`blob`,`missing-blob`,t?.item,t?.attachment,e))}return Q(u.length?`failed`:`committed`,u)};return{hydrate:e=>m(async()=>{let n=e===void 0?t.readDetailed?await t.readDetailed():t.read?await t.read().then(e=>e.ok?{ok:!0,value:e.value===null?{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}:{raw:null,snapshot:e.value,status:`ok`,issues:[],degradedScopeKeys:[]}}:e):void 0:void 0;if(n&&!n.ok)return Q(`failed`,[_(`metadata`,n.error.code)]);let o=n?.value??e,l=o&&`status`in o?o:void 0,u=l?.snapshot??(o&&!(`status`in o)?o:null);if(l?.snapshot===null&&l.raw!==null)try{u=JSON.parse(l.raw)}catch{u=null}let p=u?KR(u,{normalizeSending:!0}):{status:`ok`,snapshot:IR(),issues:[],degradedScopeKeys:[]},m=l?.issues??p.issues;i=!0;let h=l?.status===`corrupt`||p.status===`corrupt`,g=l?.status===`partial`||m.length>0;return d.clear(),f.clear(),h?(c=!0,s=!0,Q(`recovery-required`,m.map(e=>({phase:`metadata`,code:e.reason,...e})))):(r=p.snapshot,c=g,s=g,g?Q(`recovery-required`,m.map(e=>({phase:`metadata`,code:e.reason,...e}))):a?k(!0):Q(`disabled`,m.map(e=>({phase:`metadata`,code:e.reason,...e}))))}),getSnapshot:()=>xz(r),admit:(t,n,o)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();if(!b(t,n))return S();let s=PR(t.owner),l=xz(r);l.queues[s]=[...l.queues[s]??[],t];let d=KR(l);if(!kz(t))return Q(`failed`,[_(`identity`,`composer-attachment-mismatch`,t)]);if(d.status===`corrupt`||d.issues.length)return Q(`failed`,d.issues.map(e=>({phase:`identity`,code:e.reason,...e})));let f=y(n,t);if(!await x(n,f))return S();let p=[];for(let r of v(t,`queue`)){if(!await x(n,f))return{...S(),cleanupErrors:await T(p)};let i=await e.readReference(r.reference);if(!i.ok)return Q(`failed`,[_(`blob`,i.error.code,t,r.attachment)],await T(p));if(i.value&&i.value!==r.blobID)return Q(`failed`,[_(`blob`,`blob-id-conflict`,t,r.attachment)],await T(p));if(i.value===r.blobID){let n=await e.read(r.blobID);if(n.ok)continue;if(n.error.code!==`missing-blob`)return Q(`failed`,[_(`blob`,n.error.code,t,r.attachment)],await T(p));let i=await o?.(r.attachment);if(i===void 0)return Q(`failed`,[_(`blob`,`missing-blob`,t,r.attachment)],await T(p));let a=await e.putAndRetain(r.reference,r.blobID,i);if(!a.ok)return Q(`failed`,[_(`blob`,a.error.code,t,r.attachment)],await T(p));continue}let a=await e.read(r.blobID),s=a.ok?await e.retain(r.reference,r.blobID):a.error.code===`missing-blob`?await(async()=>{let t=await o?.(r.attachment);return t===void 0?{ok:!1,error:{code:`missing-blob`}}:e.putAndRetain(r.reference,r.blobID,t)})():a;if(!s.ok)return Q(`failed`,[_(`blob`,s.error.code,t,r.attachment)],await T(p));p.push(r)}let m=await O(d.snapshot,n,f);if(!m.committed)return m.error?Q(`failed`,[m.error],await T(p)):{...S(),cleanupErrors:await T(p)};for(let e of v(t,`queue`))u.delete(N(e.reference));return Q(`committed`,[],[],m.current)}),transition:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=g(e);if(!o||!b(o,n))return S();let s=y(n,o);if(!await x(n,s))return S();let l=t(xz(o)),u=xz(r),d=PR(o.owner);u.queues[d]=u.queues[d].map(t=>Sz(t,e)?l:t);let f=KR(u);if(!Sz(l,e)||!Oz(o,l)||f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-transition`,o)]);let p=await O(f.snapshot,n,s);return p.committed?Q(`committed`,[],[],p.current):p.error?Q(`failed`,[p.error]):S()}),reorder:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=r.queues[e];if(!o||o.length!==t.length||new Set(t).size!==o.length||o.some(e=>!t.includes(e.queueItemID)))return Q(`failed`,[_(`identity`,`invalid-reorder`)]);if(o.some(e=>!b(e,n)))return S();let s=y(n,o[0]);if(!await x(n,s))return S();let l=new Map(o.map(e=>[e.queueItemID,e])),u=xz(r);u.queues[e]=t.map(e=>l.get(e));let d=await O(u,n,s);return d.committed?Q(`committed`,[],[],d.current):d.error?Q(`failed`,[d.error]):S()}),bind:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=g(e);if(!o)return Q(`failed`,[_(`identity`,`invalid-bind`)]);if(!b(o,n)||t.transportIdentity!==n.transportIdentity)return S();if(o.owner.state!==`unbound-legacy`||o.attachments.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let s=PR(o.owner),l=r.queues[s];if(!l||l.length!==1||!Sz(l[0],e)||l[0].owner.state!==`unbound-legacy`||l[0].attachments.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let u=y(n,o);if(!await x(n,u))return S();let d={...xz(o),owner:t},f=KR({version:4,queues:{[PR(t)]:[d]},migration:r.migration});if(f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let p=xz(r),m=s,h=PR(t);p.queues[m]=p.queues[m].filter(t=>!Sz(t,e)),p.queues[m].length||delete p.queues[m],p.queues[h]=[d,...p.queues[h]??[]];let v=KR(p);if(v.status===`corrupt`||v.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let w=await O(v.snapshot,n,u);return w.committed?Q(`committed`,[],[],w.current):w.error?Q(`failed`,[w.error]):S()}),bindMany:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=e.map(g);if(!o.length||o.some(e=>!e||!b(e,n)||e.owner.state!==`unbound-legacy`)||t.transportIdentity!==n.transportIdentity)return S();let s=o[0].owner,l=r.queues[PR(s)];if(!l||l.length!==e.length||o.some(e=>wz(e.owner)!==wz(s)||e.attachments.length)||l.some((t,n)=>!Sz(t,e[n])))return Q(`failed`,[_(`identity`,`invalid-bind`)]);let u=y(n,o[0]);if(!await x(n,u))return S();let d=o,f=d.map(e=>({...xz(e),owner:t})),p=xz(r),m=PR(s),h=PR(t);p.queues[m]=p.queues[m].filter(e=>!d.some(t=>Sz(e,t))),p.queues[m].length||delete p.queues[m],p.queues[h]=[...f,...p.queues[h]??[]];let v=KR(p);if(v.status===`corrupt`||v.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`)]);let w=await O(v.snapshot,n,u);return w.committed?Q(`committed`,[],[],w.current):w.error?Q(`failed`,[w.error]):S()}),acquireSendPayload:(t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let r=g(t);if(!r||!b(r,n))return S();if(f.has(Ez(t)))return Q(`failed`,[_(`identity`,`active-send`,r)]);let o=y(n,r);if(!await x(n,o))return S();let s=[],l=[];for(let t of r.attachments){if(!await x(n,o))return{...S(),cleanupErrors:await T(s)};if(t.locator.kind===`url`){l.push({attachment:t,value:t.locator.url});continue}let i=v(r,`send`).find(e=>e.attachment.occurrenceRefID===t.occurrenceRefID),a=await e.readReference(i.reference);if(!a.ok||a.value&&a.value!==i.blobID)return Q(`failed`,[_(`blob`,a.ok?`blob-id-conflict`:a.error.code,r,t)],await T(s));if(a.value!==i.blobID){let n=await e.retain(i.reference,i.blobID);if(!n.ok)return Q(`failed`,[_(`blob`,n.error.code,r,t)],await T(s));s.push(i)}let c=await e.read(i.blobID);if(!c.ok)return Q(`failed`,[_(`blob`,c.error.code,r,t)],await T(s));l.push({attachment:t,value:c.value})}if(!await x(n,o))return{...S(),cleanupErrors:await T(s)};let u=v(r,`send`),m=`${++p}`;for(let e of u)d.set(N(e.reference),e);return f.set(Ez(t),{token:m,identity:t,held:u}),{...Q(`committed`,[],[],!0),token:m,values:l}}),releaseSend:(e,t)=>m(async()=>{let n=f.get(Ez(e));if(typeof t!=`string`||!n||n.token!==t)return Q(`stale`);f.delete(Ez(e));let r=[];for(let e of n.held)d.delete(N(e.reference)),await w(e,r);return Q(r.length?`failed`:`committed`,[],r,!0)}),remove:(e,t)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let n=g(e);if(!n||!b(n,t))return S();let o=y(t,n);if(!await x(t,o))return S();let s=xz(r);for(let[t,n]of Object.entries(s.queues)){let r=n.filter(t=>!Sz(t,e));r.length?s.queues[t]=r:delete s.queues[t]}let l=await O(s,t,o);if(!l.committed)return l.error?Q(`failed`,[l.error]):S();let u=f.get(Ez(e));f.delete(Ez(e));let p=[];for(let e of v(n,`queue`))await w(e,p);for(let e of u?.held??v(n,`send`))d.delete(N(e.reference)),await w(e,p);return Q(`committed`,[],p,l.current)}),reconcile:()=>m(()=>k(!1)),retryCleanup:()=>m(async()=>{if(!a)return Q(`disabled`);if(c||s)return C();let t=[],n=E();for(let[r,i]of u){if(D(r,i,n)){u.delete(r);continue}let a=await e.releaseIfMatches(i.reference,i.blobID);a.ok?u.delete(r):t.push(_(`blob`,a.error.code,i.item,i.attachment))}return Q(t.length?`failed`:`committed`,[],t)}),flush:()=>l.then(()=>t.flush()),setEnabled:async e=>{a=e,o++,t.cancelPending(),await t.setEnabled(e),await l}}},jz=()=>{let e=ZR(),t=tz(e),n=nr();return{controller:bz(Az(n,t),()=>{let e=u(),t=f();return{transportIdentity:e,generation:t,isCurrent:()=>u()===e&&f()===t}}),migrate:async()=>gz(e,n)}},Mz=(e=jz)=>{let t,n,r=()=>(t??=e()).controller;return{subscribe:e=>r().subscribe(e),getState:()=>r().getState(),captureRuntime:()=>r().captureRuntime(),hydrate:r=>n??=(async()=>{let n=t??=e();if(r!==void 0)return n.controller.hydrate(r);let i=await n.migrate();return i.status===`committed`?n.controller.hydrate(i.snapshot):i.status===`degraded`?n.controller.hydrate({raw:null,snapshot:i.snapshot,status:`partial`,issues:i.issues??[{path:`$.migration`,reason:`degraded`}],degradedScopeKeys:[]}):n.controller.hydrate({raw:null,snapshot:null,status:`corrupt`,issues:i.issues??[{path:`$`,reason:i.status}],degradedScopeKeys:[]})})().finally(()=>{n=void 0}),flush:()=>r().flush(),setEnabled:e=>r().setEnabled(e),admit:(e,t,n)=>r().admit(e,t,n),materializeForEdit:(e,t)=>r().materializeForEdit(e,t),releaseEditReservation:(e,t,n)=>r().releaseEditReservation(e,t,n),removeEditReservation:(e,t,n)=>r().removeEditReservation(e,t,n),remove:(e,t)=>r().remove(e,t),reorder:(e,t,n)=>r().reorder(e,t,n),bind:(e,t,n)=>r().bind(e,t,n),bindMany:(e,t,n)=>r().bindMany(e,t,n),transition:(e,t,n,i)=>r().transition(e,t,n,i),confirm:(e,t)=>r().confirm(e,t),acquireSendPayload:(e,t)=>r().acquireSendPayload(e,t),releaseSend:(e,t,n)=>r().releaseSend(e,t,n)}},Nz,Pz=()=>Nz??=Mz(),Fz=26214400,Iz=52428800,Lz=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),Rz=async(e,t)=>{let n=0;for(let t of e){let e=t.source===`local`?t.value.size:t.size;if(!Number.isSafeInteger(e)||e<0||e>Fz)throw RangeError(`message-queue-attachment-too-large`);n+=e}if(n>Iz)throw RangeError(`message-queue-attachments-too-large`);let r=[];for(let n of e){if(n.source===`server`){r.push({attachmentID:n.attachmentID,occurrenceRefID:n.occurrenceRefID??[`root`,n.attachmentID],filename:n.filename,mimeType:n.mimeType||`application/octet-stream`,size:n.size,source:`server`,locator:{kind:`server-path`,path:n.path}});continue}let e=await qL({signal:t});await JL(e,n.value,await Lz(n.value),t),r.push({attachmentID:n.attachmentID,occurrenceRefID:n.occurrenceRefID??[`root`,n.attachmentID],filename:n.filename,mimeType:n.mimeType||n.value.type||`application/octet-stream`,size:n.value.size,source:`local`,locator:{kind:`upload`,uploadID:e.uploadID}})}return{attachments:r,totalBytes:n}},zz,Bz=()=>{let e=`openchamber:message-queue-import-client-id`;try{let t=globalThis.localStorage,n=t.getItem(e);if(n)return n;let r=_e();return t.setItem(e,r),r}catch{return zz??=_e()}},Vz={queue:void 0,capture:()=>({transportIdentity:``,generation:0}),current:()=>!0,admit:nR,create:zL,details:BL,stage:VL,seal:HL,upload:Rz,resolveURL:async(e,t)=>{let n=new URL(e);if(n.protocol!==`http:`&&n.protocol!==`https:`)throw Error(`durable-url-scheme`);let r=await fetch(e,{signal:t});if(!r.ok)throw Error(`durable-url-unavailable`);return r.blob()},existing:()=>[],refresh:async()=>{},publish:()=>{}},Hz=e=>({scopeKey:PR(e.owner),queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}),Uz=async e=>`shadow-import:${[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e)))].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`,Wz=e=>({status:e.status===`sending`?`reconciling`:e.status,attemptCount:e.attemptCount,...e.nextAttemptAt===void 0?{}:{dueAt:e.nextAttemptAt},...e.reconciliationStartedAt===void 0?{}:{reconciliationStartedAt:e.reconciliationStartedAt},...e.reconciliationDeadlineAt===void 0?{}:{reconciliationDeadlineAt:e.reconciliationDeadlineAt},...e.reconciliationChecks===void 0?{}:{reconciliationChecks:e.reconciliationChecks},...e.reconciliationNextCheckAt===void 0?{}:{reconciliationNextCheckAt:e.reconciliationNextCheckAt},...e.failureKind===void 0?{}:{failureKind:e.failureKind}}),Gz=e=>Array.isArray(e)?`[${e.map(Gz).join(`,`)}]`:e&&typeof e==`object`?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${Gz(e[t])}`).join(`,`)}}`:JSON.stringify(e),Kz=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(Gz(e))))].map(e=>e.toString(16).padStart(2,`0`)).join(``),qz=e=>{let t={...Vz,...e},n=e.create!==void 0||e.stage!==void 0||e.seal!==void 0||e.admit===void 0,r=e=>(t.publish(e),e);return{run:async e=>{let i=t.capture(),a=new AbortController,o=e??a.signal,s=await t.queue.hydrate();if(!t.current(i))return r({status:`pending`,imported:0,total:0,issues:[`runtime-stale`],canActivate:!1});let c=t.queue.getState();if(s.status===`recovery-required`||c.hydration===`recovery-required`||c.snapshot.migration.v3State===`degraded`)return r({status:`degraded`,imported:0,total:0,issues:[`recovery-required`],canActivate:!1});if(c.hydration!==`ready`)return r({status:`error`,imported:0,total:0,issues:[`hydrate-failed`],canActivate:!1});let l=Object.entries(c.snapshot.queues).sort(([e],[t])=>e.localeCompare(t)).flatMap(([,e])=>e).filter(e=>e.owner.state===`bound`&&e.owner.transportIdentity===i.transportIdentity),u=t.queue.captureRuntime(),d=Object.values(c.snapshot.queues).flat().some(e=>e.owner.state!==`bound`),f=0,p=`prepare`;try{let e=[],a=new Map;for(let s of l){if(!t.current(i)||o.aborted)return r({status:`pending`,imported:f,total:l.length,issues:[`runtime-stale`],canActivate:!1});let c=t.existing().filter(e=>e.queueItemID===s.queueItemID||e.operationID===s.operationID||e.messageID===s.messageID);if(c.length){if(!c.some(e=>e.queueItemID===s.queueItemID&&e.operationID===s.operationID&&e.messageID===s.messageID))return r({status:`degraded`,imported:f,total:l.length,issues:[`cross-id-conflict`],canActivate:!1});f++;continue}if(s.attachments.some(e=>e.source===`vscode`))return r({status:`degraded`,imported:f,total:l.length,issues:[`vscode-attachment`],canActivate:!1});let d=s.owner;if(d.state!==`bound`)return r({status:`pending`,imported:f,total:l.length,issues:[`unbound-legacy`],canActivate:!1});p=`acquire`;let m=await t.queue.acquireSendPayload(Hz(s),u);if(m.status!==`committed`||!m.token)return r({status:`degraded`,imported:f,total:l.length,issues:[`payload-unavailable`],canActivate:!1});try{let i=new Map(m.values?.map(e=>[e.attachment.occurrenceRefID,e.value])),c=[];for(let e of s.attachments){let n=JSON.parse(e.occurrenceRefID);if(e.source===`server`&&e.serverPath){c.push({attachmentID:e.attachmentID,occurrenceRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`server-path`,path:e.serverPath}});continue}let a=i.get(e.occurrenceRefID),s=typeof a==`string`?await t.resolveURL(a,o):a??(e.locator.kind===`url`?await t.resolveURL(e.locator.url,o):void 0);if(!s||typeof s!=`object`||typeof s.arrayBuffer!=`function`||s.size!==e.size||s.type&&s.type!==e.mimeType)return r({status:`degraded`,imported:f,total:l.length,issues:[`attachment-bytes-unavailable`],canActivate:!1});p=`upload`;let u=await t.upload([{attachmentID:e.attachmentID,occurrenceRefID:n,filename:e.filename,mimeType:e.mimeType,source:`local`,value:s}],o);c.push(u.attachments[0])}let u=`${d.directory}\u0000${d.sessionID}`,h=a.get(u)??a.size;a.set(u,h);let g=e.filter(e=>e.scopeOrdinal===h).length,_={scope:{directory:d.directory,sessionID:d.sessionID},item:{queueItemID:s.queueItemID,operationID:s.operationID,messageID:s.messageID,content:s.content,...s.composerDocument?{composerDocument:s.composerDocument}:{},...s.composerMentions?{composerMentions:s.composerMentions}:{},...s.sendConfig?{sendConfig:s.sendConfig}:{},attachments:c,attachmentIssues:s.attachmentIssues,createdAt:s.createdAt,migrationImport:!0,migrationState:Wz(s)}};n||(p=`admit`,await t.admit({requestID:await Uz(s.operationID),..._,signal:o})),e.push({item:s,scopeOrdinal:h,itemOrdinal:g,payload:_,payloadHash:await Kz(_)}),f++}finally{await t.queue.releaseSend(Hz(s),m.token,u)}}if(!n){p=`refresh`,await t.refresh();let e=l.every(e=>t.existing().some(t=>t.queueItemID===e.queueItemID&&t.operationID===e.operationID&&t.messageID===e.messageID));return r({status:d?`pending`:e?`complete`:`error`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:e?[]:[`catalog-incomplete`],canActivate:e&&!d})}let s=await Kz(e.map(({item:e,scopeOrdinal:t,itemOrdinal:n})=>({scopeOrdinal:t,itemOrdinal:n,owner:e.owner,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,composerDocument:e.composerDocument,composerMentions:e.composerMentions,sendConfig:e.sendConfig,attachments:e.attachments.map(({attachmentID:e,occurrenceRefID:t,filename:n,mimeType:r,size:i,source:a,serverPath:o})=>({attachmentID:e,occurrenceRefID:t,filename:n,mimeType:r,size:i,source:a,serverPath:o})),attachmentIssues:e.attachmentIssues,createdAt:e.createdAt,status:e.status,attemptCount:e.attemptCount})));p=`create`;let c=t.kind??`activation`,m=Bz(),h=t.authorityGeneration?.()??i.generation,g=await t.create({requestID:`shadow-create:${c}:${h}:${m}:${s}`,kind:c,clientID:m,snapshotHash:s,itemCount:e.length,protocol:4,expectedGeneration:h,signal:o});if(g.state===`committed`)return r({status:d?`pending`:`complete`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:[],canActivate:!d,importID:g.importID,manifestHash:g.manifestHash,activationEpoch:g.commit?.activationEpoch});let _=await t.details(g.importID,o);if(_.state===`committed`)return r({status:d?`pending`:`complete`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:[],canActivate:!d,importID:g.importID,manifestHash:_.manifestHash,activationEpoch:_.commit?.activationEpoch});let v=new Set(_.staged.map(e=>`${e.scopeOrdinal}:${e.itemOrdinal}`));if(p=`stage`,_.state===`staging`){for(let n of e)if(!v.has(`${n.scopeOrdinal}:${n.itemOrdinal}`)){if(!t.current(i))return r({status:`pending`,imported:f,total:l.length,issues:[`runtime-stale`],canActivate:!1});await t.stage(g.importID,{requestID:`shadow-stage:${g.importID}:${n.scopeOrdinal}:${n.itemOrdinal}:${n.payloadHash}`,scopeOrdinal:n.scopeOrdinal,itemOrdinal:n.itemOrdinal,payload:n.payload,payloadHash:n.payloadHash,signal:o})}}p=`seal`;let y=_.state===`sealed`?{manifestHash:_.manifestHash}:await t.seal(g.importID,{requestID:`shadow-seal:${g.importID}:${s}`,signal:o});return r({status:d?`pending`:`complete`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:[],canActivate:!d,importID:g.importID,manifestHash:y.manifestHash})}catch{return r({status:`error`,imported:f,total:l.length,issues:[`shadow-${p}-failed`],canActivate:!1})}}}},Jz=e=>typeof e==`object`&&!!e&&e.kind===`pending-admission`,Yz=(e,t)=>e.then(e=>{if(t?.aborted)throw new DOMException(`Aborted`,`AbortError`);return e}),Xz={snapshot:e=>Yz(_R(R),e),status:e=>Yz(mR(R),e),scope:DL,waitInvalidation:kL,admit:nR,edit:rR,remove:aR,reserve:ZL,renew:$L,release:QL,removeReserved:eR,reorder:oR,manualSend:iR,upload:Rz,client:R,capture:()=>({transportIdentity:u(),generation:f()}),current:e=>e.transportIdentity===u()&&e.generation===f(),legacyManualSend:async()=>{},shadowQueue:Pz,admissionUploadTimeoutMs:12e4,admissionRequestTimeoutMs:2e4,admissionReconcileTimeoutMs:2e4},Zz=e=>e instanceof ZI&&(e.code===`revision_conflict`||e.code===`row_version_conflict`),Qz=e=>e instanceof ZI&&e.code===`unavailable`,$z=8,eB=(e,t)=>{if(!t)return[...e];let n=t.items.map(e=>e.queueItemID),r=new Set(n),i=e.filter(e=>r.has(e)),a=new Set(i);return[...i,...n.filter(e=>!a.has(e))]},tB=e=>`${e.transportIdentity}\u0000${F(e.directory)}\u0000${e.sessionID}`,nB=(e,t)=>new Promise(n=>{let r=setTimeout(n,e);t.addEventListener(`abort`,()=>{clearTimeout(r),n()},{once:!0})}),rB=(e,t,n)=>{let r=new AbortController,i,a=()=>r.abort();t?.aborted?a():t?.addEventListener(`abort`,a,{once:!0}),r.signal.aborted||(i=setTimeout(a,n));let o=new Promise((e,t)=>{r.signal.aborted?t(new ZI(0,`unavailable`)):r.signal.addEventListener(`abort`,()=>t(new ZI(0,`unavailable`)),{once:!0})});return Promise.race([Promise.resolve().then(()=>e(r.signal)),o]).finally(()=>{i!==void 0&&clearTimeout(i),t?.removeEventListener(`abort`,a)})},iB=(e={})=>{let t={...Xz,...e},n={...t,snapshot:e.snapshot??(e=>Yz(_R(t.client,t.capture().transportIdentity),e)),status:e.status??(e=>Yz(mR(t.client,t.capture().transportIdentity),e))},r={transportIdentity:n.capture().transportIdentity,scopes:new Map,hydration:`idle`,capability:`idle`,authority:void 0,isFetching:!1,error:void 0,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}},i,a=0,o,s=new Set,c=new Map,l=new Map,u=new Map,d=[],f=e=>c.get(e)?.forEach(e=>e()),p=(e,t)=>{let n=u.get(e)??d,r=t(n);r!==n&&(r.length?u.set(e,r):u.delete(e),f(e))},m=e=>{r={...r,...e},s.forEach(e=>e()),`scopes`in e||c.forEach(e=>e.forEach(e=>e()))},h=e=>{let t=n.capture();return r.transportIdentity===e.transportIdentity&&t.transportIdentity===e.transportIdentity&&t.generation===e.generation&&n.current(e)},g=e=>{let t=[...u.keys()];i?.abort(),i=void 0,o=void 0,l.clear(),u.clear(),m({transportIdentity:e.transportIdentity,scopes:new Map,hydration:`idle`,capability:`idle`,authority:void 0,isFetching:!1,error:void 0,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),t.forEach(f)},_=()=>{let e=n.capture();return r.transportIdentity!==e.transportIdentity&&g(e),e},v=(e,t,n)=>{let r=new Set([...e.keys(),...t.keys()]);for(let i of r){let r=e.get(i),a=t.get(i);if(r?.revision===a?.revision&&r?.directory===a?.directory&&r?.sessionID===a?.sessionID)continue;let o=a?tB({transportIdentity:n,directory:a.directory,sessionID:a.sessionID}):r?tB({transportIdentity:n,directory:r.directory,sessionID:r.sessionID}):``;c.get(o)?.forEach(e=>e())}},y=(e,t)=>{if(!h(t))return;let n=r.scopes,i=new Map(e.map(e=>[e.scopeID,e]));for(let[e,t]of l)i.get(t.scope.scopeID)?.revision!==t.revision&&l.delete(e);m({scopes:i}),v(n,i,t.transportIdentity)},b=async(e,t,r,i)=>{let a=0,o,s,c=[];do{let t=i??await n.scope(e.scopeID,{offset:a,limit:8,expectedRevision:o,signal:r});if(i=void 0,s||=t,t.revision!==e.revision||t.scopeID!==e.scopeID||o!==void 0&&t.revision!==o)throw new ZI(409,`revision_conflict`);c.push(...t.items),o=t.revision,a=t.nextOffset??-1}while(a>=0);if(!s||c.length!==s.itemCount)throw new ZI(200,`unavailable`);return{...s,items:c}},x=e=>({scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount}),S=e=>Math.max(n.client.getQueryData([e.transportIdentity,`messageQueue`,`snapshot`])?.revision??0,...[...r.scopes.values()].map(e=>e.revision)),C=(e,t)=>{if(!h(t))return;let i=r.scopes.get(e.scopeID);if(i&&i.revision>e.revision)return;vR(n.client,e,t.transportIdentity);let a=tB({transportIdentity:t.transportIdentity,directory:e.directory,sessionID:e.sessionID});return(!i||i.revision!==e.revision||i.directory!==e.directory||i.sessionID!==e.sessionID)&&y([...r.scopes.values()].filter(t=>t.scopeID!==e.scopeID).concat(x(e)),t),p(a,t=>{let n=t.filter(t=>t.phase!==`acknowledged`||e.revision<(t.acknowledgedRevision??2**53-1));return n.length===t.length?t:n}),e},w=(e,t,i)=>{if(!h(i)||e.revision<S(i))return!1;let a=new Map(e.scopes.map(e=>[e.scopeID,e]));if([...r.scopes.values()].some(e=>{let t=a.get(e.scopeID);return t!==void 0&&t.revision<e.revision}))return!1;let o=r.scopes;for(let e of t)vR(n.client,e,i.transportIdentity);if(bR(n.client,e,i.transportIdentity),e.scopes.length===0)SR(n.client,i.transportIdentity);else for(let e of o.keys())a.has(e)||CR(n.client,e,i.transportIdentity);y(e.scopes,i);for(let e of t){let t=tB({transportIdentity:i.transportIdentity,directory:e.directory,sessionID:e.sessionID});p(t,t=>{let n=t.filter(t=>t.phase!==`acknowledged`||e.revision<(t.acknowledgedRevision??2**53-1));return n.length===t.length?t:n})}return!0},T=async()=>{let e=_(),t=i?.signal??new AbortController().signal;m({isFetching:!0,hydration:`hydrating`,error:void 0});try{let i=await n.status(t);if(!h(e)||(yR(n.client,i,e.transportIdentity),m({capability:i.capability?`available`:`unsupported`,authority:i.authority}),!i.capability))return;let a=await n.snapshot(t);if(!h(e))return;let o=r.scopes,s=await Promise.all(a.scopes.filter(e=>o.get(e.scopeID)?.revision!==e.revision).map(n=>b(n,e,t)));w(a,s,e)&&m({hydration:`ready`})}catch(n){if(!h(e)||t.aborted)return;m({capability:n instanceof ZI&&n.status===501?`unsupported`:`error`,hydration:`error`,error:n})}finally{h(e)&&m({isFetching:!1})}},E=async(e,t)=>{for(;!t.aborted&&i;){if(!h(e))return`stale`;let i=n.client.getQueryData([e.transportIdentity,`messageQueue`,`snapshot`]),a=await n.snapshot(t);if(!h(e)||t.aborted)return t.aborted?`aborted`:`stale`;let o=new Map(r.scopes);if(!(i?.revision!==a.revision||a.scopes.some(e=>o.get(e.scopeID)?.revision!==e.revision)||[...o.keys()].some(e=>!a.scopes.some(t=>t.scopeID===e))))return`applied`;let s=await Promise.all(a.scopes.filter(e=>o.get(e.scopeID)?.revision!==e.revision).map(n=>b(n,e,t)));if(!h(e)||t.aborted)return t.aborted?`aborted`:`stale`;w(a,s,e)&&m({hydration:`ready`,error:void 0});let c=await n.snapshot(t);if(!h(e)||t.aborted)return t.aborted?`aborted`:`stale`;if(c.revision===a.revision)return`applied`}return`aborted`},D=async()=>{await T();let e=0,t=i;if(!t)return;let r=t.signal;for(;!r.aborted&&i===t;){let a=n.capture();try{let t=await E(a,r);if(t===`aborted`||t===`stale`)return;let i=S(a),o=await n.waitInvalidation(i,{signal:r});if(!h(a)||r.aborted||o===`aborted`)return;e=0}catch(n){if(r.aborted||i!==t||!h(a))return;if(n instanceof ZI&&n.code===`revision_conflict`){e=0;continue}m({error:n,isFetching:!1}),await nB(Math.min(3e4,500*2**e++),r)}}},O=async(e,t,a)=>{let o=await n.snapshot(i?.signal);if(!h(t))return;let s=o.scopes.find(t=>t.scopeID===e);if(!s)throw a;let c=await b(s,t,i?.signal??new AbortController().signal);return C(c,t)??xR(n.client,e,r.scopes.get(e)?.revision??s.revision,t.transportIdentity)},k=async(e,t,i,a)=>{let o=r.scopes.get(e),s=o&&o.revision>=t?xR(n.client,e,o.revision,i.transportIdentity):void 0;if(s)return s;let c=await n.scope(e,{offset:0,limit:8,signal:a});if(!h(i)||c.scopeID!==e||c.revision<t)return;let l=r.scopes.get(e);if(l&&l.revision>c.revision)return;let u=await b({scopeID:e,revision:c.revision,directory:c.directory,sessionID:c.sessionID,worktreeState:c.worktreeState,itemCount:c.itemCount},i,a,c);return C(u,i)},A=async(e,t,i)=>{let a=_(),o=t;for(let t=0;t<$z;t++){let s=r.scopes.get(e),c=s?xR(n.client,e,s.revision,a.transportIdentity):void 0,l;try{try{l=(await i(o,c)).revision}catch(e){if(!Qz(e)||!h(a))throw e;l=(await i(o,c)).revision}}catch(n){if(Zz(n)&&t+1<$z){let t=await O(e,a,n);if(!t)return{status:`stale`};o=t.revision;continue}throw await O(e,a,n).catch(()=>void 0),n}if(!h(a))return{status:`stale`};let u=e=>l===void 0?e:{...e,committedRevision:l};for(let t=0;t<2;t++)try{let t=await O(e,a,new ZI(409,`revision_conflict`));if(!t)return u({status:`stale`});await wR(n.client,e,a.transportIdentity);let i=r.scopes.get(e);return u({status:`committed`,scope:i?xR(n.client,e,i.revision,a.transportIdentity):t})}catch(r){if(Zz(r)&&!t)continue;return h(a)?(m({error:r}),wR(n.client,e,a.transportIdentity).catch(()=>{}),u({status:`committed`})):u({status:`stale`})}}throw new ZI(409,`revision_conflict`)},j,ee=()=>{i?.abort(),i=void 0,o=void 0},te=()=>{j!==void 0&&(clearTimeout(j),j=void 0),!i&&(i=new AbortController,D())},ne=()=>{j!==void 0&&clearTimeout(j),j=setTimeout(()=>{j=void 0,a||ee()},0)};return{subscribe:e=>(s.add(e),()=>s.delete(e)),subscribeScope:(e,t)=>{let n=tB(e),r=c.get(n)??new Set;return r.add(t),c.set(n,r),()=>{r.delete(t),r.size||c.delete(n)}},getState:()=>(_(),r),captureRuntime:()=>_(),getScope:e=>{let t=_();if(e.transportIdentity!==t.transportIdentity||r.transportIdentity!==e.transportIdentity)return;let i=[...r.scopes.values()].find(t=>F(t.directory)===F(e.directory)&&t.sessionID===e.sessionID);if(!i)return;let a=`${e.transportIdentity}\u0000${i.scopeID}`,o=l.get(a);if(o?.revision===i.revision)return o.scope;let s=xR(n.client,i.scopeID,i.revision,e.transportIdentity);return s&&l.set(a,{revision:i.revision,scope:s}),s},getPendingAdmissions:e=>{let t=_();return e.transportIdentity===t.transportIdentity&&r.transportIdentity===e.transportIdentity?u.get(tB(e))??d:d},start:()=>{a++,_(),te()},stop:()=>{a=Math.max(0,a-1),a||ne()},restart:()=>{j!==void 0&&(clearTimeout(j),j=void 0),ee(),g(n.capture()),a&&te()},refresh:T,runShadowImport:()=>{if(o)return o;let e=(async()=>{let e=_();if(r.capability!==`available`||r.authority!==`shadow`){let e={status:`pending`,imported:0,total:0,issues:[`shadow-unavailable`],canActivate:!1};return m({importState:e}),e}return qz({queue:n.shadowQueue(),capture:()=>e,current:h,existing:()=>[...r.scopes.values()].flatMap(t=>xR(n.client,t.scopeID,t.revision,e.transportIdentity)?.items??[]),refresh:T,publish:t=>{h(e)&&m({importState:t})}}).run(i?.signal)})().finally(()=>{o===e&&(o=void 0)});return o=e,e},pause:async e=>{await GL({expectedGeneration:e,signal:i?.signal}),await T()},resume:async e=>{await KL({expectedGeneration:e,signal:i?.signal}),await T()},stageAdmission:({requestID:e,scope:t,item:n})=>{let r=tB({transportIdentity:_().transportIdentity,...t}),i={kind:`pending-admission`,requestID:e,queueItemID:n.queueItemID,operationID:n.operationID,messageID:n.messageID,content:n.content,createdAt:n.createdAt,phase:`uploading`,attachmentCount:n.attachmentCount??0,...n.composerDocument?{composerDocument:n.composerDocument}:{},...n.composerMentions?{composerMentions:n.composerMentions}:{},...n.sendConfig?{sendConfig:n.sendConfig}:{}};p(r,t=>[...t.filter(t=>t.requestID!==e&&t.queueItemID!==n.queueItemID),i])},unstageAdmission:({requestID:e,scope:t})=>{let n=tB({transportIdentity:_().transportIdentity,...t});p(n,t=>t.filter(t=>t.requestID!==e))},admit:async({requestID:e,scope:t,item:r,attachments:a=[]})=>{let o=_(),s=tB({transportIdentity:o.transportIdentity,...t}),c=(u.get(s)??d).find(t=>t.requestID===e||t.queueItemID===r.queueItemID),l=c&&(c.requestID===e||c.queueItemID===r.queueItemID)?{...c,requestID:e,queueItemID:r.queueItemID,operationID:r.operationID,messageID:r.messageID,content:r.content,createdAt:r.createdAt,phase:`uploading`,attachmentCount:a.length,...r.composerDocument?{composerDocument:r.composerDocument}:{},...r.composerMentions?{composerMentions:r.composerMentions}:{},...r.sendConfig?{sendConfig:r.sendConfig}:{}}:{kind:`pending-admission`,requestID:e,queueItemID:r.queueItemID,operationID:r.operationID,messageID:r.messageID,content:r.content,createdAt:r.createdAt,phase:`uploading`,attachmentCount:a.length,...r.composerDocument?{composerDocument:r.composerDocument}:{},...r.composerMentions?{composerMentions:r.composerMentions}:{},...r.sendConfig?{sendConfig:r.sendConfig}:{}},f=t=>p(s,n=>n.map(n=>n.requestID===e||n.queueItemID===r.queueItemID?t:n)),m=()=>p(s,t=>t.filter(t=>t.requestID!==e&&t.queueItemID!==r.queueItemID));c?f(l):p(s,e=>[...e,l]);let g;try{g=await rB(e=>n.upload(a,e),i?.signal,n.admissionUploadTimeoutMs)}catch(e){if(m(),!h(o))return{status:`stale`};throw e}if(!h(o))return m(),{status:`stale`};let v={requestID:e,scope:t,item:{...r,attachments:g.attachments}};f({...l,phase:`admitting`});let y;try{y=await rB(e=>n.admit({...v,signal:e}),i?.signal,n.admissionRequestTimeoutMs)}catch(e){if(!h(o))return m(),{status:`stale`};if(!(e instanceof ZI)||e.code!==`unavailable`)throw m(),e;f({...l,phase:`ambiguous`});try{y=await rB(e=>n.admit({...v,signal:e}),i?.signal,n.admissionRequestTimeoutMs)}catch(e){if(m(),!h(o))return{status:`stale`};throw e}}return f({...l,phase:`acknowledged`,acknowledgedRevision:y.revision}),y.scopeID?rB(e=>k(y.scopeID,y.revision,o,e),i?.signal,n.admissionReconcileTimeoutMs).then(m,m):m(),{status:`committed`}},edit:({requestID:e,scopeID:t,revision:r,item:a,patch:o})=>A(t,r,(t,r)=>{let s=r?.items.find(e=>e.queueItemID===a.queueItemID)??a;return n.edit(s.queueItemID,{requestID:e,expectedRevision:t,expectedRowVersion:s.rowVersion,item:o,signal:i?.signal})}),remove:({requestID:e,scopeID:t,revision:r,item:a})=>A(t,r,async(r,o)=>{let s=o?.items.find(e=>e.queueItemID===a.queueItemID)??a;try{return await n.remove(s.queueItemID,{requestID:e,expectedRevision:r,expectedRowVersion:s.rowVersion,signal:i?.signal})}catch(e){if(!(e instanceof ZI)||e.code!==`not_found`)throw e;let n=await O(t,_(),e);if(!n||n.items.some(e=>e.queueItemID===a.queueItemID))throw e;return{revision:n.revision,removedQueueItemID:a.queueItemID}}}),reserveEdit:async({requestID:e,scopeID:t,revision:a,item:o,owner:s,ttlMs:c,runtime:l})=>{if(!h(l))return;let u=a;for(let a=0;a<$z;a++){let d=r.scopes.get(t),f=(d?xR(n.client,t,d.revision,l.transportIdentity):void 0)?.items.find(e=>e.queueItemID===o.queueItemID)??o;try{let t=await n.reserve(f.queueItemID,{requestID:e,expectedRevision:u,rowVersion:f.rowVersion,owner:s,ttlMs:c,signal:i?.signal});if(!h(l)){await n.release(f.queueItemID,{token:t.token,signal:i?.signal}).catch(()=>{});return}return t}catch(e){if(!Zz(e)||a+1>=$z)throw e;let n=await O(t,l,e);if(!n||!n.items.some(e=>e.queueItemID===o.queueItemID))return;u=n.revision}}},renewEdit:async({item:e,token:t,generation:r,ttlMs:a,runtime:o,signal:s})=>{if(!h(o))return;let c=await n.renew(e.queueItemID,{token:t,generation:r,ttlMs:a,signal:s??i?.signal});if(!(!h(o)||c.queueItemID!==e.queueItemID||c.token!==t||c.generation!==r))return c},releaseEdit:async({item:e,token:t,runtime:r})=>{h(r)&&(await n.release(e.queueItemID,{token:t,signal:i?.signal.aborted?void 0:i?.signal}),h(r)&&await T())},removeReserved:async({requestID:e,scopeID:t,revision:a,item:o,token:s,generation:c,runtime:l})=>{if(!h(l))return!1;let u=a;for(let a=0;a<$z;a++){let d=r.scopes.get(t),f=(d?xR(n.client,t,d.revision,l.transportIdentity):void 0)?.items.find(e=>e.queueItemID===o.queueItemID)??o;try{return await n.removeReserved(f.queueItemID,{requestID:e,expectedRevision:u,expectedRowVersion:f.rowVersion,token:s,generation:c,signal:i?.signal}),h(l)?(await O(t,l,new ZI(404,`not_found`)).catch(()=>void 0),await T(),!0):!1}catch(e){if(!Zz(e)||a+1>=$z)throw e;let n=await O(t,l,e);if(!n||!n.items.some(e=>e.queueItemID===o.queueItemID))return!1;u=n.revision}}return!1},reorder:({requestID:e,scopeID:t,revision:r,queueItemIDs:a})=>A(t,r,(r,o)=>n.reorder(t,{requestID:e,expectedRevision:r,queueItemIDs:eB(a,o),signal:i?.signal})),manualSend:async({requestID:e,scopeID:t,revision:a,item:o})=>{if(r.authority===`active`||r.authority===`paused`)return A(t,a,(t,r)=>{let a=r?.items.find(e=>e.queueItemID===o.queueItemID)??o;return n.manualSend(a.queueItemID,{requestID:e,expectedRevision:t,expectedRowVersion:a.rowVersion,signal:i?.signal})});if(r.authority===`shadow`||r.capability===`unsupported`){let e=_();return h(e)?(await n.legacyManualSend(o),h(e)?{status:`committed`}:{status:`stale`}):{status:`stale`}}throw new ZI(0,`unavailable`)}}},aB,oB=()=>aB??=iB(),sB=new WeakMap,cB=e=>{let t=e,n=sB.get(t);if(n)return n.refs++,()=>{n.refs--,n.refs||(n.unsubscribe(),sB.delete(t))};let r={refs:1,unsubscribe:s(t=>{p(t)&&e.restart()})};return sB.set(t,r),()=>{r.refs--,r.refs||(r.unsubscribe(),sB.delete(t))}},lB=(e,t)=>{let n,r=[],i=[...e.semantics];return{text:e.chunks.map((a,o)=>{if(a.provenance!==`authored`)return a.text;let s=a.text;o===0&&(s=s.replace(/^\n+/,``)),o===e.chunks.length-1&&(s=s.replace(/\n+$/,``));let c=t(s);return n??=c.agent,r.push(...c.attachments??[]),i.push(...c.semantics??[]),c.text}).join(``),agent:n,attachments:uB(r),semantics:i}},uB=e=>{let t=new Set;return e.filter(e=>{let n=e.serverPath?.replace(/\\/g,`/`).replace(/\/+/g,`/`),r=n?`path:${n}`:`id:${e.id}`;return!t.has(r)&&(t.add(r),!0)})},dB=`The user referenced these OpenCode sessions (id, title, owning directory). Entries may carry messages inlined from the client cache; an empty messages array only means the transcript was not loaded client-side — it never means the session is empty. To read any referenced session yourself, query the OpenCode SQLite store read-only (replace SESSION_ID): sqlite3 "file:$HOME/.local/share/opencode/opencode.db?mode=ro" ".timeout 5000" "SELECT json_extract(m.data,'$.role') AS role, json_extract(p.data,'$.text') AS text FROM part p JOIN message m ON m.id = p.message_id WHERE p.session_id = 'SESSION_ID' AND json_extract(p.data,'$.type') = 'text' AND json_extract(p.data,'$.synthetic') IS NULL ORDER BY p.time_created". If that file does not exist, resolve the OpenChamber-hosted store first (ls -d "$HOME/Library/Application Support/OpenChamber"*/openchamber-data/xdg-data/opencode/opencode.db) and use its path in the same file: URI. The database is live — always open it read-only as shown.
|
|
406
|
+
`,fB=e=>{if(!e.startsWith(dB))return[];try{let t=JSON.parse(e.slice(dB.length));return Array.isArray(t)?t.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;if(typeof t.id!=`string`||typeof t.title!=`string`)return[];let n=typeof t.directory==`string`?t.directory:void 0,r=Array.isArray(t.messages)?t.messages.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return typeof t.role==`string`&&typeof t.text==`string`?[{role:t.role,text:t.text}]:[]}):[];return[{id:t.id,title:t.title,...n===void 0?{}:{directory:n},messages:r}]}):[]}catch{return[]}},pB=e=>e.length===0?null:e.map(e=>`[skill:${e}]`).join(` `),mB=(e,t=36e3)=>{if(e.length===0)return null;let n=dB,r=t-n.length;if(r<2)return n.slice(0,t);let i=e.length+1,a=Math.max(2,Math.floor((r-i)/e.length));return`${n}[${e.map(e=>{let t={id:e.id,title:e.title,messages:[],...e.directory===void 0?{}:{directory:e.directory}};if(JSON.stringify(t).length>a){let e=0,n=t.title.length,r=``;for(;e<=n;){let i=Math.floor((e+n)/2),o=`${t.title.slice(0,i)}...`;JSON.stringify({...t,title:o}).length<=a?(r=o,e=i+1):n=i-1}t.title=r}for(let n of e.messages){let e=[...t.messages,n];if(JSON.stringify({...t,messages:e}).length<=a){t.messages=e;continue}let r=0,i=n.text.length,o=``;for(;r<=i;){let e=Math.floor((r+i)/2),s=`${n.text.slice(0,e)}\n[Message truncated]`,c={...t,messages:[...t.messages,{...n,text:s}]};JSON.stringify(c).length<=a?(o=s,r=e+1):i=e-1}o&&t.messages.push({...n,text:o});break}return JSON.stringify(t)}).join(`,`)}]`},hB=e=>{let t=[],n=[],r=[],i={session:new Set,skill:new Set,attachment:new Set};for(let a of e)switch(a.type){case`session`:i.session.has(a.sessionId)||(i.session.add(a.sessionId),t.push(a.sessionId));break;case`skill`:i.skill.has(a.skillName)||(i.skill.add(a.skillName),n.push(a.skillName));break;case`attachment`:i.attachment.has(a.attachmentRefID)||(i.attachment.add(a.attachmentRefID),r.push(a.attachmentRefID))}return{sessionIds:t,skillNames:n,attachmentRefIDs:r}},gB=(e,t)=>{let{sessionIds:n,skillNames:r}=hB(e),i=n.flatMap(e=>{let n=Ud(e,t);if(!n)return[];let r=Bd(n).find(t=>t.id===e);if(!r)return[];let i=Wd(e,n).flatMap(e=>{let t=Gd(e.id,n).filter(e=>e.type===`text`&&!um(e)).map(e=>`text`in e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(`
|
|
407
|
+
`);return t?[{role:e.role,text:t}]:[]});return[{id:r.id,title:r.title||r.id,directory:n,messages:i}]}),a=[],o=pB(r);o&&a.push({text:o,synthetic:!0});let s=mB(i);return s&&a.push({text:s,synthetic:!0}),a},_B=50,vB=15e4,yB=e=>{let t=0;for(let n of Object.values(e.partsByMessageID))for(let e of n){let n=e;n.type===`text`&&!um(n)&&typeof n.text==`string`&&(t+=n.text.length)}return t},bB=async(e,t,n)=>{let{sessionIds:r}=hB(e);if(r.length===0)return;let i=U();if(!i)return;let a=n?.maxPages??_B,o=n?.maxChars??vB;await Promise.all(r.map(async e=>{let n=Ud(e,t);if(!n)return;let r=G(n,e),s=i.getTranscript(r);s.messageOrder.length===0&&(await Pu(n,e),s=i.getTranscript(r));let c=0;for(;!i.getPagination(r).isComplete&&c<a&&yB(s)<o;)await Nu(n,e),s=i.getTranscript(r),c+=1}))},xB=e=>!e||/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(e),SB=(e,t)=>{if(typeof e!=`string`||e.length===0)return{sanitizedText:e,mention:null};let n=t.filter(e=>e.mode&&e.mode!==`primary`);if(n.length===0||!e.includes(`@`))return{sanitizedText:e,mention:null};let r=null;for(let t of n){let n=t.name.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),i=RegExp(`@${n}\\b`,`gi`),a;for(;(a=i.exec(e))!==null;){let n=a.index,i=n+a[0].length;if(!xB(n>0?e[n-1]:null))continue;let o={name:t.name,source:{value:a[0],start:n,end:i}};r||=o}}return r?{sanitizedText:e,mention:r}:{sanitizedText:e,mention:null}},CB=/\.[a-z0-9]{1,8}$/i,wB=new Set([`test`,`tests`,`__tests__`,`spec`,`specs`,`e2e`,`__mocks__`]),TB=/\.(?:test|spec|e2e)\./i,EB=.85,DB=3,OB=3,kB=1.25,AB=-.35,jB=-.5,MB=e=>{let t=e.trim().replace(/^\.\//,``).replace(/^[/\\]+/,``).toLowerCase(),n=/[/\\]$/.test(t),r=t.replace(/[/\\]+$/,``),i=Math.max(r.lastIndexOf(`/`),r.lastIndexOf(`\\`)),a=(i>=0?r.slice(i+1):r).match(CB),o=!n&&a!==null,s=o&&a?a[0].slice(1):null;return{raw:t,search:r,stem:o&&a?r.slice(0,r.length-a[0].length):r,extension:s,fileIntent:o,directoryIntent:n}},NB=e=>{let t=MB(e);return(t.fileIntent||t.directoryIntent)&&t.stem?t.stem:t.search},PB=e=>{let t=e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase();if(!t)return!1;let n=t.split(`/`).filter(Boolean);if(n.some(e=>wB.has(e)))return!0;let r=n.at(-1)??t;return TB.test(r)},FB=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase(),IB=(e,t)=>(e.name||t.split(`/`).filter(Boolean).pop()||t).toLowerCase(),LB=(e,t)=>e===null&&t===null?null:Math.min(e??1/0,t??1/0),RB=(e,t)=>{let n=FB(e.relativePath),r=IB(e,n),i=e.isDirectory===!0,a=LB(cj(n,t.search),cj(r,t.search)),o;if(a!==null)o=a;else if(t.stem&&t.stem!==t.search){let e=LB(cj(n,t.stem),cj(r,t.stem));if(e===null)return null;o=e+EB}else return null;return t.fileIntent&&i&&(o+=DB),t.directoryIntent&&!i&&(o+=OB),t.fileIntent&&!i&&t.extension&&e.extension===t.extension&&(o+=AB),t.directoryIntent&&i&&r===t.stem&&(o+=jB),PB(n)&&!PB(t.search)&&(o+=kB),o},zB=(e,t,n)=>{let r=n?.limit??20,i=MB(t);if(!i.search&&!i.stem)return e.slice(0,r);let a=e.flatMap(e=>{let t=RB(e,i);return t===null?[]:[{item:e,score:t,sortKey:FB(e.relativePath)}]});return a.sort((e,t)=>e.score===t.score?e.sortKey.length===t.sortKey.length?e.sortKey.localeCompare(t.sortKey,void 0,{sensitivity:`accent`}):e.sortKey.length-t.sortKey.length:e.score-t.score),a.slice(0,r).map(({item:e})=>e)},BB=/\.[a-z0-9]{1,8}$/i,VB=/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/,HB=e=>e.includes(`/`)||e.includes(`\\`)||e.includes(`.`),UB=e=>{if(!HB(e))return!1;let t=e.replace(/\\/g,`/`);if(t.endsWith(`/`))return!0;let n=t.split(`/`).filter(Boolean).pop()??t;return BB.test(n)},WB=({files:e,directories:t,query:n,excludePaths:r,limit:i=20})=>{let a=new Map;for(let e of t)!e.path||r?.has(e.path)||a.set(e.path,{...e,isDirectory:!0});for(let t of e)!t.path||r?.has(t.path)||a.has(t.path)||a.set(t.path,{...t,isDirectory:t.isDirectory===!0});return zB(Array.from(a.values()),n,{limit:i})},GB=6,KB=(e,t,n)=>zB(e,t,{limit:n?.limit??GB}),qB=(e,t)=>e===null&&t===null?null:Math.min(e??1/0,t??1/0),JB=(e,t)=>{let n=t.trim().toLowerCase();if(!n)return[...e].sort((e,t)=>e.name.localeCompare(t.name));let r=e.flatMap(e=>{let t=qB(cj(e.name,n),cj(e.description??``,n));return t===null?[]:[{agent:e,score:t}]});return r.sort((e,t)=>e.score===t.score?e.agent.name.localeCompare(t.agent.name):e.score-t.score),r.map(e=>e.agent)},YB=(e,t)=>{let n=e[t];return n!==void 0&&/\s/.test(n)},XB=({mention:e,confirmed:t,terminated:n})=>!e||e.startsWith(`session:`)?!1:t?!0:n&&HB(e),ZB=(e,{confirmedValues:t,agentNames:n})=>{if(!e.includes(`@`))return[];let r=[],i=/@([^\s]+)/g,a;for(;(a=i.exec(e))!==null;){let i=a[0],o=String(a[1]||``).trim().replace(/[),.;:!?`"'>]+$/g,``),s=a.index,c=s+i.length,l=s>0?e[s-1]:null;if(!(!l||VB.test(l))||o.length===0||o.startsWith(`session:`))continue;if(n.has(o.toLowerCase())){r.push({start:s,end:c,kind:`agent`});continue}let u=YB(e,s+1+o.length);XB({mention:o,confirmed:t.has(o),terminated:u})&&r.push({start:s,end:c,kind:`file`})}return r},QB=(e,{agentNames:t,includeUnterminatedPastedReferences:n=!1}={})=>{if(!e.includes(`@`))return[];let r=[],i=/@([^\s]+)/g,a;for(;(a=i.exec(e))!==null;){let i=String(a[1]||``).trim().replace(/[),.;:!?`"'>]+$/g,``),o=a.index,s=o>0?e[o-1]:null;if(!(!s||VB.test(s))||!i||i.startsWith(`session:`)||t?.has(i.toLowerCase()))continue;let c=o+1+i.length,l=YB(e,c),u=n&&UB(i);!l&&!u||!HB(i)&&!u||r.push({kind:i.endsWith(`/`)||i.endsWith(`\\`)?`directory`:`file`,value:i,start:o,end:c})}return r},$B=/(^|[\s([{])(@session:([A-Za-z0-9_-]+))(?=$|[\s)\]},.!?;:])/g,eV=e=>{let t=[];$B.lastIndex=0;let n;for(;(n=$B.exec(e))!==null;){let e=n.index+n[1].length;t.push({start:e,end:e+n[2].length,id:n[3]})}return t},tV=e=>{let t=[],n=new Set;for(let{id:r}of eV(e))n.has(r)||(n.add(r),t.push(r));return t},nV=(e,t)=>{let n=e;for(let r of eV(e).reverse()){let e=t.get(r.id)??r.id;n=`${n.slice(0,r.start)}@${e}${n.slice(r.end)}`}return n},rV=({sessions:e,currentSessionId:t,searchQuery:n})=>{let r=n.trim().toLowerCase();return e.filter(e=>e.id!==t).filter(e=>!r||`${e.title??``} ${e.id}`.toLowerCase().includes(r)).sort((e,t)=>(t.time.updated??t.time.created)-(e.time.updated??e.time.created)).slice(0,r?10:3)},iV=({value:e,cursorPosition:t,inputSource:n=`manual`,insertedText:r})=>{if(n===`paste`&&r?.includes(`@`))return null;let i=e.substring(0,t),a=i.lastIndexOf(`@`);if(a===-1)return null;let o=a>0?i[a-1]:null,s=i.substring(a+1);return!(!o||/\s/.test(o))||s.includes(` `)||s.includes(`
|
|
408
|
+
`)?null:s},aV=/(^|\s)\/\u2003?([a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?)/g,oV=e=>Xe(e.trim()),sV=e=>{let t=e.trim();if(t.toLowerCase().startsWith(`file://`))return t;let n=oV(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`file:///${n}`:`file://${n}`},cV=e=>({chunks:[{provenance:`authored`,text:e,start:0,end:e.length}],semantics:[]}),lV=({text:e,root:t,confirmedFilePaths:n,confirmedDirectoryPaths:r=[],agentNames:i})=>{let a=[],o=new Set,s=t?oV(t).replace(/\/+$/,``):``,c=e=>oV(e).replace(/^\.\//,``),l=new Set(n.map(e=>c(e))),u=new Set(r.map(e=>c(e))),d=/@([^\s]+)/g,f;for(;(f=d.exec(e))!==null;){let t=f.index>0?e[f.index-1]:null;if(t&&!/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(t))continue;let n=f[1].trim().replace(/^[`"'<(]+/,``).replace(/[),.;:!?`"'>]+$/g,``);if(!n||i.has(n.toLowerCase()))continue;let r=c(n),d=Ze(n)||Ze(r)?r:r.replace(/^\/+/,``);if(!(l.has(r)||l.has(d)||n.includes(`/`)||n.includes(`\\`)||n.includes(`.`)))continue;let p=Ze(n)||Ze(r)?r:s?Qe(s,d):null;if(!d||!p||o.has(p))continue;o.add(p);let m=$e(p)||d,h=u.has(r)||u.has(d)||/[/\\]$/.test(n)?Ie:`text/plain`;a.push({id:_e(),file:new File([],m,{type:h}),filename:m,mimeType:h,size:0,dataUrl:sV(p),source:`server`,serverPath:p})}return a},uV=(e,t)=>{let n=[],r=new Set;aV.lastIndex=0;let i;for(;(i=aV.exec(e))!==null;){let e=i[2]||``;t.has(e)&&!r.has(e)&&(r.add(e),n.push({type:`skill`,skillName:e}))}return n},dV=(e,t)=>{if(!e.includes(`@`)||t.length===0)return[];let n=[];for(let{id:r,title:i}of t)(e.includes(`@${i}`)||e.includes(`@${me}${i}`))&&n.push(r);return n},fV=({plan:e,agents:t,installedSkillNames:n,directory:r,root:i,confirmedFilePaths:a=[],confirmedDirectoryPaths:o=[],citationAttachments:s=[]})=>{let c=new Set(t.map(e=>e.name.toLowerCase())),l=new Map(Bd(r).map(e=>[e.id,e.title||e.id])),u=[];for(let e of Hd().values()){let t=typeof e.title==`string`?e.title.trim():``;t&&u.push({id:e.id,title:t})}return lB(e,e=>{let r=SB(e,t),d=[...new Set([...tV(e),...dV(e,u)])],f=[...uV(e,n),...d.map(e=>({type:`session`,sessionId:e}))],p=lV({text:r.sanitizedText,root:i,confirmedFilePaths:a,confirmedDirectoryPaths:o,agentNames:c});return{text:nV(We(Be(r.sanitizedText,s)),l),agent:r.mention?.name,attachments:p,semantics:f}})},pV=e=>e.map(e=>({text:e.text,...e.attachments?.length?{attachments:uB(e.attachments)}:{},synthetic:!0})),mV=({text:e,attachments:t,semanticParts:n,syntheticParts:r=[]})=>[{type:`text`,text:e},...uB(t).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id})),...n.map(e=>({type:`text`,text:e.text,synthetic:!0})),...(r??[]).flatMap(e=>[{type:`text`,text:e.text,synthetic:!0},...uB(e.attachments??[]).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id}))])],hV=(e,t)=>{let n=t.map(e=>({...e,attachments:uB(e.attachments??[])})),r=e.length-n.reduce((e,t)=>e+1+t.attachments.length,0);if(r<0)throw Error(`assistant-queue-synthetic-parts-mismatch`);return n.map(e=>{let t=[r++];for(let n of e.attachments)t.push(r++);return{partID:e.partID,text:e.text,...e.synthetic===!0?{synthetic:!0}:{},attachmentIDs:e.attachments.map(e=>e.id),deliveryPartIndexes:t}})},gV=e=>e?.trim()||void 0,_V=(e,t)=>e!==`assistant`||t===`server`,vV=(e,t,n)=>{let r=(e.current.get(t)??Promise.resolve()).catch(()=>void 0).then(n),i=r.then(()=>void 0,()=>void 0);return e.current.set(t,i),r.finally(()=>{e.current.get(t)===i&&e.current.delete(t)})},yV=({currentConfig:e,sessionID:t,selection:n})=>{let r=gV(e.currentAgentName),i=t?gV(n.getSessionAgentSelection(t))??r:r,a=t&&i?n.getAgentModelForSession(t,i):null,o=t?n.getSessionModelSelection(t):null,s=gV(a?.providerId)??gV(o?.providerId)??gV(e.currentProviderId),c=gV(a?.modelId)??gV(o?.modelId)??gV(e.currentModelId);if(!s||!c)return;let l=t&&i?gV(n.getAgentModelVariantForSession(t,i,s,c))??gV(e.currentVariant):gV(e.currentVariant);return{providerID:s,modelID:c,...i?{agent:i}:{},...l?{variant:l}:{}}},bV=e=>!!(gV(e?.providerID)&&gV(e?.modelID)),xV=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,SV=(e,t)=>xV(e,t),CV=e=>JSON.stringify([e.text,e.references]),wV=e=>JSON.stringify(e),TV=(e,t)=>e.id===t.id&&e.file===t.file&&e.dataUrl===t.dataUrl&&e.mimeType===t.mimeType&&e.filename===t.filename&&e.size===t.size&&e.source===t.source&&e.serverPath===t.serverPath&&e.vscodePath===t.vscodePath&&e.vscodeSource===t.vscodeSource,EV=({draftKey:e,runtime:t,document:n,attachments:r,inlineDrafts:i})=>({draftKey:{transportIdentity:e.transportIdentity,owner:{...e.owner}},draftKeyID:z(e),runtime:{...t},documentFingerprint:CV(n),attachments:new Map(r.map(e=>[e.id,e])),inlineDrafts:new Map(i.map(e=>[e.id,wV(e)]))}),DV=async({capture:e,admit:t,captureRuntime:n,getCurrentDraftKey:r,getDocument:i,consumeBody:a,getAttachments:o,removeAttachment:s,getInlineDrafts:c,removeInlineDraft:l})=>{let u=await t(),d=r();if(u.status!==`committed`||!SV(e.runtime,n())||!d||z(d)!==e.draftKeyID)return{status:`stale`,bodyConsumed:!1,attachmentIDsConsumed:[],inlineDraftIDsConsumed:[]};let f=CV(i())===e.documentFingerprint;f&&a();let p=[],m=[],h=new Map(o().map(e=>[e.id,e]));for(let[t,n]of e.attachments){let e=h.get(t);if(!e||!TV(n,e))continue;let r=!1;try{r=await s(t)}catch{r=!1}r?p.push(t):m.push(t)}let g=[],_=new Map(c().map(e=>[e.id,e]));for(let[t,n]of e.inlineDrafts){let e=_.get(t);!e||wV(e)!==n||(l(t),g.push(t))}return m.length>0?{status:`partial`,bodyConsumed:f,attachmentIDsConsumed:p,attachmentIDsFailed:m,inlineDraftIDsConsumed:g}:{status:`committed`,bodyConsumed:f,attachmentIDsConsumed:p,inlineDraftIDsConsumed:g}},OV=(e,t)=>e.map(e=>{let n=e.mimeType||e.file.type||`application/octet-stream`;if(e.source===`server`){if(!e.serverPath)throw Error(`message-queue-server-attachment-unavailable`);return{attachmentID:e.id,occurrenceRefID:t?[`part`,t,e.id]:[`root`,e.id],filename:e.filename||e.file.name,mimeType:n,source:`server`,path:e.serverPath,size:e.size}}if(e.source===`vscode`)throw Error(`message-queue-vscode-attachment-unsupported`);return{attachmentID:e.id,occurrenceRefID:t?[`part`,t,e.id]:[`root`,e.id],filename:e.filename||e.file.name,mimeType:n,source:`local`,value:e.file.slice(0,e.file.size,n)}}),kV=(e=_e,t=()=>he(`msg`),n=Date.now())=>({requestID:e(),queueItemID:`queued-${e()}`,operationID:`operation-${e()}`,messageID:t(),createdAt:n}),AV=({stage:e,clearComposer:t,postClear:n})=>{let r=e();return t(),n?.(),r},jV=`blocked`,MV=new Set,NV=()=>jV,PV=e=>{if(jV!==e){jV=e;for(let e of MV)e()}},FV=e=>(MV.add(e),()=>MV.delete(e)),IV=()=>jV===`legacy-enabled`,LV=2e3,RV=6e4,zV=5e3,BV=3,VV=e=>Math.min(LV*2**Math.max(e-1,0),RV),HV=new Map,UV=new Map,WV=new Set,GV=new Set,KV=0,qV=()=>{KV+=1;for(let e of GV)e()},JV=(e,t)=>JSON.stringify([E(e),t.queueItemID,t.operationID]),YV=e=>`scope:${E(e)}`,XV=()=>new Set([...HV.keys(),...UV.keys()]),ZV=e=>(GV.add(e),()=>GV.delete(e)),QV=e=>{let t=(0,H.c)(2),n;return t[0]===e?n=t[1]:(n=()=>e?UV.has(YV(e)):!1,t[0]=e,t[1]=n),K.useSyncExternalStore(ZV,n,yH)},$V=()=>structuredClone(M.getState().queuedMessages),eH=async()=>{for(PV(`blocked`);HV.size||UV.size||WV.size;)await Promise.allSettled([...new Set([...HV.values(),...UV.values(),...WV])]);return y(),$V()},tH=e=>e===`idle`,nH=e=>{if(e===void 0)return`unknown`;let t=e[e.length-1];return!t||t.role===`assistant`?`settled`:`unsettled`},rH=(e,t,n,r,i=!1,a=`settled`)=>e?e.status===`sending`?i?{}:{recover:!0}:e.status===`queued`?tH(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`retrying`?e.nextAttemptAt&&e.nextAttemptAt>r?{nextWakeAt:e.nextAttemptAt}:tH(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`reconciling`?(e.reconciliationChecks??0)>=BV||(e.reconciliationDeadlineAt??1/0)<=r?{resolve:!0}:(e.reconciliationNextCheckAt??0)>r?{nextWakeAt:e.reconciliationNextCheckAt}:i?{}:{query:!0}:{}:{},iH=(e,t)=>{let n=new Set;for(let[r,i]of Object.entries(e))i?.status===`running`&&i.runtimeKey===t&&n.add(r);return n},aH=(e,t)=>{let n;for(let r of Wd(e,t)){let e=typeof r?.id==`string`?r.id:``;/^msg_[0-9a-f]{12}[0-9A-Za-z]{14}$/.test(e)&&(!n||e>n)&&(n=e)}return n},oH=(e,t)=>{let n;for(let r of e.values())r.expiresAt>t&&(!n||r.expiresAt<n)&&(n=r.expiresAt);return n},sH=({queuedMessages:e,activeTransportIdentity:t,getStatus:n,getTurnState:r=()=>`settled`,previous:i,inFlight:a,dispatchInFlight:o=XV(),blockedSessions:s,blockedScopeKeys:c=new Set,now:l})=>{let u={dispatchScopes:[],queryOperations:[],resolveOperations:[],recoverOperations:[],inspectedScopeCount:0},d=new Set;for(let[f,p]of Object.entries(e)){let e=p[0],m=e?.owner;if(!e||m?.state!==`bound`||m.transportIdentity!==t)continue;u.inspectedScopeCount+=1;let h=`${f}:${e.queueItemID}`,g=JV(m,e),_=YV(m);d.add(h);let v=n(m),y=rH(e,v,i.get(f),l,o.has(g),r(m));i.set(f,v),y.nextWakeAt&&(!u.nextWakeAt||y.nextWakeAt<u.nextWakeAt)&&(u.nextWakeAt=y.nextWakeAt),y.dispatch&&!s.has(m.sessionID)&&!c.has(E(m))&&!o.has(g)&&!o.has(_)&&u.dispatchScopes.push(m),y.query&&!a.has(h)&&u.queryOperations.push({scope:m,item:e,key:h}),y.resolve&&u.resolveOperations.push({scope:m,item:e,key:h}),y.recover&&!a.has(h)&&u.recoverOperations.push({scope:m,item:e,key:h})}for(let e of a)d.has(e)||a.delete(e);for(let t of i.keys())e[t]||i.delete(t);return u},cH=e=>{let t=e[0];if(!t)return null;let n=t.composerDocument&&ue(t.composerDocument,`direct-send-display`),r=t.owner?.state===`bound`?t.owner.directory:``,i=fV({plan:n?.ok?{chunks:n.chunks??[],semantics:n.semantics??[]}:cV(t.content),agents:$f.getState().getVisibleAgents(),installedSkillNames:new Set(oo(R,r).map(e=>e.name)),directory:r,root:r,confirmedFilePaths:t.composerMentions?.filter(e=>e.kind===`file`||e.kind===`directory`).map(e=>e.path||e.value),confirmedDirectoryPaths:t.composerMentions?.filter(e=>e.kind===`directory`).map(e=>e.path||e.value),citationAttachments:t.attachments}),a=gB(i.semantics,r);return{queuedMessageId:t.id,messageID:t.messageID,operationID:t.operationID,primaryText:i.text,primaryAttachments:uB([...t.attachments??[],...i.attachments]),agentMentionName:i.agent,additionalParts:a,sendConfig:t.sendConfig}},lH=(e,t,n,r)=>$.getState().sendMessage(t.primaryText,n.providerID,n.modelID,n.agent,t.primaryAttachments,t.agentMentionName,t.additionalParts,n.variant,`normal`,{sessionId:e,directoryHint:r.directory,delivery:r.delivery,messageID:t.messageID,ticket:r.ticket,preserveOptimisticOnAmbiguous:!0,onSendConfirmed:r.onSendConfirmed}),uH=(e,t)=>t?{...t}:yV({currentConfig:$f.getState(),sessionID:e,selection:as.getState()})??{providerID:``,modelID:``},dH=e=>{let t=$.getState().getDirectoryForSession(e);return t?{state:`bound`,transportIdentity:u(),directory:t,sessionID:e}:null},fH=(e,t)=>!!(e===`queued`||e===`retrying`||t&&(e===`failed`||e===`unresolved`)),pH=e=>e.status===`sending`||e.status===`reconciling`,mH=(e,t,n,r)=>{if(!r||r.sessionID!==t)return null;let i=e.getQueueForScope(r),a=n?i.find(e=>e.queueItemID===n||e.id===n):i[0];return!a||a.owner?.state!==`bound`||E(a.owner)!==E(r)?null:{scope:r,item:a}};function hH(e,t={}){if(!IV())return Promise.resolve();let n=M.getState(),r=t.scope??dH(e),i=t.manual===!0||t.delivery===`steer`;if(!r||r.transportIdentity!==u())return Promise.resolve();let a=mH(n,e,t.queueItemID,r??void 0);if((i||!t.scope)&&!UV.has(YV(r))){let i=n.getQueueForScope({state:`unbound-legacy`,sessionID:e}),o=n.getQueueForScope(r),s=t.queueItemID?i.find(e=>e.queueItemID===t.queueItemID||e.id===t.queueItemID):i[0];(a||s)&&!i.some(pH)&&!o.some(pH)&&(n.bindLegacyQueue({state:`unbound-legacy`,sessionID:e},r),a=mH(n,e,t.queueItemID,r))}if(!a||a.scope.transportIdentity!==u())return Promise.resolve();let o=a.scope;if(o.deliveryTarget?.kind===`assistant`)return Promise.resolve();let s=a.item,c={queueItemID:s.queueItemID,operationID:s.operationID,messageID:s.messageID},l=JV(o,c),d=HV.get(l);if(d)return d;if(UV.has(YV(o))||!fH(s.status,i)||s.status===`retrying`&&!i&&(s.nextAttemptAt??0)>Date.now())return Promise.resolve();let p,m=new Promise(e=>{p=e});return HV.set(l,m),UV.set(YV(o),m),qV(),(async()=>{try{let r=aH(e,o.directory),a=FH(e),l=a?.queueItemID===s.queueItemID?a.messageID:pe(`msg`,r),d=n.beginQueueItemDispatch(o,c,l,i);if(!d)return;s=d;let p={queueItemID:d.queueItemID,operationID:d.operationID,messageID:d.messageID};if(!y()){n.markQueueItemPreDispatchRetry(o,p,Date.now()+VV(d.attemptCount+1));return}let m=f(),h=cH([d]);if(!h)return;let g=uH(e,d.sendConfig);if(!g.providerID||!g.modelID){n.markQueueItemPreDispatchRetry(o,p,Date.now()+VV(d.attemptCount+1));return}if(!IV()){n.markQueueItemPreDispatchRetry(o,p,Date.now()+VV(d.attemptCount+1));return}let _=()=>{let e=M.getState().getQueueForScope(o)[0];return u()===o.transportIdentity&&f()===m&&e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&E(e.owner)===E(o)},v=()=>{let e=M.getState().getQueueForScope(o)[0];return e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&E(e.owner)===E(o)},b=t=>{_()&&t===p.messageID&&(M.getState().confirmQueueItem(o,p),YH(e))};try{await lH(e,h,g,{directory:o.directory,delivery:t.delivery,onSendConfirmed:b}),b(p.messageID)}catch(e){if(!v())return;let t=CS(e);t===`pre-dispatch`?n.markQueueItemPreDispatchRetry(o,p,Date.now()+VV(d.attemptCount+1)):t===`definitive-rejection`?n.markQueueItemDefinitiveFailure(o,p):n.markQueueItemReconciling(o,p)}}finally{let e=!1;HV.get(l)===m&&(HV.delete(l),e=!0),UV.get(YV(o))===m&&(UV.delete(YV(o)),e=!0),e&&qV(),p?.()}})(),m}async function gH(e,t=f()){if(!IV())return;let n=Math.min(e.item.reconciliationDeadlineAt??1/0,Date.now()+zV),r=new AbortController,i=setTimeout(()=>r.abort(),Math.max(0,n-Date.now())),a=null;try{a=await kC(e.scope.sessionID,e.item.messageID,e.scope.directory,{signal:r.signal,timeoutMs:Math.max(0,n-Date.now())})}catch{a=null}finally{clearTimeout(i)}let o=M.getState().getQueueForScope(e.scope)[0];o?.queueItemID===e.item.queueItemID&&o.operationID===e.item.operationID&&o.messageID===e.item.messageID&&E(o.owner)===E(e.scope)&&u()===e.scope.transportIdentity&&f()===t&&(a?.some(t=>t.info.id===e.item.messageID)?(pW(e.scope.sessionID,e.item.messageID),M.getState().confirmQueueItem(e.scope,{queueItemID:o.queueItemID,operationID:o.operationID,messageID:o.messageID})):M.getState().recordQueueItemReconciliationCheck(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID}))}var _H=(e,t)=>{cS({sessionID:e.sessionID,messageID:t.messageID,directory:e.directory}),M.getState().resolveQueueItemReconciliation(e,{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID})};function vH(e){let t=typeof e==`boolean`?e:e?.enabled??!0,n=K.useSyncExternalStore(FV,NV,NV),r=M(e=>e.queuedMessages),i=em(e=>e.runsByOriginalSessionID),a=$(e=>e.queueAbortBlocks),o=K.useSyncExternalStore(s,u,u),c=K.useSyncExternalStore(s,m,m),l=K.useSyncExternalStore(ZV,()=>KV,()=>KV),d=K.useMemo(()=>Object.values(r).flatMap(e=>{let t=e[0]?.owner;return t?.state===`bound`&&t.transportIdentity===o?[t]:[]}),[o,r]),p=EF(d),h=DF(),g=iI(),_=K.useMemo(()=>d.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),[d]),v=K.useRef(d);v.current=d;let y=K.useSyncExternalStore(K.useMemo(()=>e=>_?fd(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e,e=>g.getChild(e),{subscribeRebuild:e=>g.subscribeRegistry(e)}):()=>void 0,[g,_]),K.useMemo(()=>()=>_?pd(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e=>g.getChild(e)):``,[g,_]),()=>``),b=K.useCallback(e=>h(e),[h]),x=K.useCallback(e=>nH(Td(e.directory,e.sessionID,g.getChild(e.directory))),[g]),[S,C]=K.useState(0),w=K.useRef(new Map),T=K.useRef(new Set);K.useEffect(()=>{if(!t||n!==`legacy-enabled`)return;let e=Date.now();$.getState().pruneQueueAbortBlocks(e);let s=new Set,l=new Set;for(let[t,n]of a)n.expiresAt>e&&l.add(t);for(let e of iH(i,c))s.add(e);let u=sH({queuedMessages:r,activeTransportIdentity:o,getStatus:b,getTurnState:x,previous:w.current,inFlight:T.current,blockedSessions:s,blockedScopeKeys:l,now:e});for(let e of u.recoverOperations)M.getState().markQueueItemReconciling(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID});for(let e of u.dispatchScopes)M.getState().getQueueForScope(e)[0]&&hH(e.sessionID,{scope:e}).finally(()=>{C(e=>e+1)});for(let e of u.resolveOperations)_H(e.scope,e.item);for(let e of u.queryOperations){T.current.add(e.key);let t=gH(e,f()).finally(()=>{T.current.delete(e.key),WV.delete(t),C(e=>e+1)});WV.add(t)}let d=oH(a,e),p=u.nextWakeAt?d?Math.min(u.nextWakeAt,d):u.nextWakeAt:d,m;return p&&(m=setTimeout(()=>{$.getState().pruneQueueAbortBlocks(),C(e=>e+1)},Math.max(0,p-Date.now()))),()=>{m&&clearTimeout(m)}},[c,o,g,l,t,n,r,a,i,p,y,b,x,S])}function yH(){return!1}var bH={server:oB(),queue:Pz(),status:e=>mR(R).then(t=>{if(e?.aborted)throw new DOMException(`Aborted`,`AbortError`);return t}),activate:UL,lateCommit:WL,capture:()=>({transportIdentity:u(),generation:f()}),current:e=>e.transportIdentity===u()&&e.generation===f(),quiesce:async()=>{await eH()},flush:async()=>{y()},prepare:w,resolveDirectory:e=>$.getState().getDirectoryForSession(e)},xH=()=>({ownership:`probing`,migration:`idle`,frozen:!0,admission:`frozen`,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),SH=(e={})=>{let t={...bH,...e},n=xH(),r=0,i,a,o,c=500,l,u=!1,d=new Set,f=e=>{n={...n,...e};let r=n.ownership===`legacy-unsupported`;PV(r?`legacy-enabled`:`blocked`),O(r?`open`:n.migration===`freezing`||n.ownership===`probing`||n.ownership===`blocked`?`quiescing`:`recovery-read-only`),(n.ownership===`server-active`||n.ownership===`server-paused`)&&ne(t.capture().transportIdentity),d.forEach(e=>e())},m=()=>{clearTimeout(o),o=setTimeout(()=>{y()},c),c=Math.min(3e4,c*2)},h=e=>{f({ownership:`blocked`,migration:`idle`,frozen:!0,admission:`frozen`,error:e}),m()},g=(e,n,r,i,a)=>{t.current(e)&&(n.authority===`active`||n.authority===`paused`||r===`late`?f({ownership:n.authority===`paused`?`server-paused`:`server-active`,migration:`late-importing`,frozen:!1,admission:`server`,status:n,importState:i,error:a}):f({ownership:`probing`,migration:i.status===`error`||i.status===`degraded`?`error`:`staging`,frozen:!0,admission:`frozen`,status:n,importState:i,error:a}),m())},_=async e=>{await t.quiesce();let n=t.prepare(e.transportIdentity,t.resolveDirectory);return n.ok?(await t.flush(),t.current(e)):(h(Error(`unresolved-legacy-queue-directories:${n.unresolvedSessionIDs.join(`,`)}`)),!1)},v=async()=>{let e=t.capture();i?.abort(),i=new AbortController;try{if(await t.server.refresh(),!t.current(e)||i.signal.aborted)return n;let r=await t.status(i.signal);return!t.current(e)||i.signal.aborted?n:r.capability?r.protocol!==void 0&&r.protocol!==4?(h(Error(`protocol-unsupported`)),n):(f({ownership:`probing`,migration:`freezing`,frozen:!0,admission:`frozen`,status:r,error:void 0}),await _(e)?r.authority===`active`||r.authority===`paused`?(f({ownership:r.authority===`active`?`server-active`:`server-paused`,migration:`late-importing`,frozen:!1,admission:`server`,status:r,error:void 0}),await b(e,r,`late`),n):(f({migration:`staging`}),await b(e,r,`activation`),n):n):(h(Error(`capability-unavailable`)),n)}catch(r){return!t.current(e)||i?.signal.aborted?n:r instanceof ZI&&r.status===501?(f({ownership:`legacy-unsupported`,migration:`idle`,frozen:!1,admission:`legacy`,error:void 0}),n):(h(r),n)}},y=()=>l?(u=!0,l):(l=v().finally(()=>{l=void 0,u&&(u=!1,y())}),l),b=async(e,n,r)=>{let a=await qz({queue:t.queue,capture:()=>e,current:t.current,kind:r,authorityGeneration:()=>n.generation??0,publish:e=>f({importState:e})}).run(i?.signal);if(t.current(e)){if(f({importState:a}),!a.canActivate||!a.importID||!a.manifestHash){g(e,n,r,a);return}f({migration:r===`activation`?`activating`:`late-importing`});try{let o=r===`activation`?await t.activate(a.importID,{requestID:`shadow-activate:${a.manifestHash}`,expectedGeneration:n.generation??0,manifestHash:a.manifestHash,protocol:4,signal:i?.signal}):await t.lateCommit(a.importID,{requestID:`shadow-late:${a.manifestHash}`,expectedGeneration:n.generation??0,manifestHash:a.manifestHash,protocol:4,signal:i?.signal});if(!t.current(e))return;c=500,f({ownership:r===`activation`?`server-active`:n.authority===`paused`?`server-paused`:`server-active`,migration:`complete`,frozen:!1,admission:`server`,importState:{...a,activationEpoch:o.activationEpoch}})}catch(i){if(!t.current(e))return;let o=await gR(R).catch(()=>void 0);if(o?.manifestHash===a.manifestHash&&o.activationEpoch!==void 0&&(o.authority===`active`||o.authority===`paused`)){c=500,f({ownership:o.authority===`paused`?`server-paused`:`server-active`,migration:`complete`,frozen:!1,admission:`server`,status:o,importState:{...a,activationEpoch:o.activationEpoch}});return}if(o?.authority===`active`||o?.authority===`paused`){g(e,o,`late`,a,i);return}g(e,n,r,a,i)}}},x,S=()=>{i?.abort(),i=void 0,clearTimeout(o),o=void 0,a?.(),a=void 0};return{subscribe:e=>(d.add(e),()=>d.delete(e)),getSnapshot:()=>n,start:()=>{r++,x!==void 0&&(clearTimeout(x),x=void 0),!(r>1)&&(a=s(e=>{p(e)&&(i?.abort(),f(xH()),setTimeout(()=>{y()},0))}),y())},stop:()=>{r=Math.max(0,r-1),!r&&(x!==void 0&&clearTimeout(x),x=setTimeout(()=>{x=void 0,r||S()},0))},refresh:y}},CH,wH=()=>CH??=SH(),TH=t({confirmQueueAbortOptimistic:()=>YH,getQueueAbortOptimisticPresentation:()=>FH,getQueueAbortOptimisticRevision:()=>PH,inspectQueueAbortOptimisticTranscript:()=>GH,isQueueItemSendPendingByAbortOptimistic:()=>IH,planQueueAbortOptimisticReconcile:()=>KH,promoteQueueHeadOnAbort:()=>tU,reconcileQueueAbortOptimistic:()=>eU,rollbackQueueAbortOptimistic:()=>JH,subscribeQueueAbortOptimistic:()=>NH,useQueueAbortOptimisticReconcile:()=>nU}),EH=new Set([`queued`,`retrying`]),DH=new Set([`sending`,`reconciling`]),OH=new Set([`failed`,`unresolved`]),kH=new Map,AH=new Set,jH=0,MH=()=>{jH+=1;for(let e of AH)e()},NH=e=>(AH.add(e),()=>{AH.delete(e)}),PH=()=>jH,FH=e=>kH.get(e),IH=(e,t)=>kH.get(e)?.queueItemID===t,LH=(e,t)=>{let n;for(let r of Wd(e,t)){let e=typeof r?.id==`string`?r.id:``;/^msg_[0-9a-f]{12}[0-9A-Za-z]{14}$/.test(e)&&(!n||e>n)&&(n=e)}return n},RH=e=>{let t=e?.[0];if(!(!t||!EH.has(t.status))&&t.deliveryTarget?.kind!==`assistant`)return t},zH=(e,t)=>{let n=M.getState(),r={state:`bound`,transportIdentity:u(),directory:t,sessionID:e};return RH(n.getQueueForScope(r))??RH(n.getQueueForScope(j(e)))},BH=(e,t)=>{let n=wH().getSnapshot().ownership;return n!==`server-active`&&n!==`server-paused`?void 0:RH(oB().getScope({transportIdentity:u(),directory:t,sessionID:e})?.items)},VH=e=>{let t=e.sendConfig?.providerID,n=e.sendConfig?.modelID;return!t||!n?null:{providerID:t,modelID:n,agent:e.sendConfig?.agent}},HH=e=>!!e&&typeof e==`object`&&e.__openchamberOptimistic===!0,UH=(e,t,n)=>{try{let r=U();return r?r.getTranscript(G(t,e)).partsByMessageID[n]??[]:[]}catch{return[]}},WH=(e,t,n)=>{let r=typeof e.id==`string`?e.id:``;if(!r||e.role!==`user`)return!1;let i=UH(t,n,r);return i.length!==0&&i.some(e=>!HH(e))},GH=(e,t)=>{let n=!1,r=!1;for(let i of t){let t=typeof i.id==`string`?i.id:``,a=i.optimistic!==!0;t===e&&a&&(n=!0),i.role===`user`&&t&&t>e&&a&&(r=!0)}return{hasPinnedMessage:n,hasLaterUserMessage:r}},KH=(e,t,n)=>{let r=e?.messageID;return e&&(EH.has(e.status)||DH.has(e.status))?r&&n&&r!==n?`rebind`:DH.has(e.status)||t.hasPinnedMessage?`confirm`:`keep`:e&&OH.has(e.status)?`rollback`:t.hasPinnedMessage?`confirm`:t.hasLaterUserMessage?`rollback`:`keep`},qH=e=>{let t=kH.get(e);if(t)return kH.delete(e),MH(),t},JH=e=>{qH(e)},YH=e=>{qH(e)},XH=e=>{if(e.source===`server`){let t=oB().getScope({transportIdentity:u(),directory:e.directory,sessionID:e.sessionID})?.items.find(t=>t.queueItemID===e.queueItemID);return t?{queueItemID:t.queueItemID,status:t.status,messageID:t.messageID}:null}let t={state:`bound`,transportIdentity:u(),directory:e.directory,sessionID:e.sessionID},n=k(M.getState(),t).find(t=>t.queueItemID===e.queueItemID)??k(M.getState(),j(e.sessionID)).find(t=>t.queueItemID===e.queueItemID);return n?{queueItemID:n.queueItemID,status:n.status,messageID:n.messageID}:null},ZH=e=>{let t=Wd(e.sessionID,e.directory).map(t=>({id:typeof t?.id==`string`?t.id:void 0,role:t?.role,optimistic:!WH(t,e.sessionID,e.directory)}));return GH(e.messageID,t)},QH=(e,t)=>{let n=kH.get(e);!n||!t||n.messageID===t||(kH.set(e,{...n,messageID:t}),MH())},$H=(e,t,n)=>{if(t===`confirm`)YH(e.sessionID);else if(t===`rollback`)JH(e.sessionID);else if(t===`rebind`&&n?.messageID){QH(e.sessionID,n.messageID);let t=kH.get(e.sessionID);if(!t)return;let r=KH(XH(t),ZH(t),t.messageID);if(r===`rebind`)return;$H(t,r,XH(t))}},eU=e=>{let t=e?[kH.get(e)].filter(e=>!!e):[...kH.values()];for(let e of t){let t=XH(e);$H(e,KH(t,ZH(e),e.messageID),t)}},tU=e=>{if(!e||kH.has(e))return kH.get(e)??null;let t=$.getState().getDirectoryForSession(e);if(!t)return null;let n=BH(e,t),r=n?void 0:zH(e,t),i=n??r;if(!i)return null;let a=VH(i);if(!a)return null;let o=typeof i.content==`string`?i.content:``,s=(typeof i.messageID==`string`&&i.messageID.startsWith(`msg_`)?i.messageID:void 0)??pe(`msg`,LH(e,t)),c={sessionID:e,directory:t,queueItemID:i.queueItemID,operationID:`operationID`in i?i.operationID:void 0,messageID:s,content:o,providerID:a.providerID,modelID:a.modelID,agent:a.agent,source:n?`server`:`legacy`};return kH.set(e,c),MH(),c};function nU(){let e=(0,H.c)(6),t=K.useSyncExternalStore(NH,PH,PH),n=M(uU),r;e[0]!==t||e[1]!==n?(r=[t,n],e[0]=t,e[1]=n,e[2]=r):r=e[2],K.useEffect(lU,r);let i;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[3]=i):i=e[3],K.useEffect(oU,i);let a;e[4]===t?a=e[5]:(a=[t],e[4]=t,e[5]=a),K.useEffect(rU,a)}function rU(){return fd([...kH.values()].map(aU),iU)}function iU(){eU()}function aU(e){return{directory:e.directory,sessionID:e.sessionID}}function oU(){let e=oB().subscribe(cU),t=s(sU);return()=>{e(),t()}}function sU(){for(let e of[...kH.keys()])JH(e)}function cU(){eU()}function lU(){eU()}function uU(e){return e.queuedMessages}var dU=[`You distill a large task description (a prompt, plan, or assignment) into the COMPLETION CRITERIA a progress auditor will judge against.`,`Return ONLY the criteria text — no preamble, no headers, no markdown fences.`,`Capture: the end goals, what must exist and work when the task is fully done, and how each major part is verified. Omit implementation steps and how-to details.`,`Preserve verbatim any file paths, commands, and identifiers that define the task — especially ones from the opening lines.`,`Stay under 4000 characters.`,`Write in the same language as the task text. Ignore any other language preferences or personalization — only the task text decides the language.`].join(`
|
|
409
|
+
`);async function fU(e){try{let{currentProviderId:t,currentModelId:n}=$f.getState(),r=await _(`/api/small-model/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:e,system:dU,restrictToPreferredProvider:!0,...t?{preferredProviderID:t}:{},...n?{preferredModelID:n}:{}})});if(!r.ok)return null;let i=await r.json().catch(()=>null);return(typeof i?.text==`string`?i.text.trim():``)||null}catch{return null}}var pU=[`active`,`paused`,`blocked`,`budgetLimited`,`complete`],mU=5e3,hU=e=>!!e&&typeof e==`object`&&!Array.isArray(e),gU=e=>typeof e==`string`&&pU.includes(e);function _U(e){let t=e?.metadata;if(!hU(t))return null;let n=t.openchamber;if(!hU(n))return null;let r=n.goal;if(!hU(r))return null;let i=typeof r.id==`string`?r.id:``,a=typeof r.objective==`string`?r.objective.trim():``,o=r.objectiveFile===!0;if(!i||!a&&!o||!gU(r.status))return null;let s=typeof r.tokenBudget==`number`&&Number.isFinite(r.tokenBudget)&&r.tokenBudget>0?Math.floor(r.tokenBudget):null,c=e=>typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):0;return{id:i,objective:a.slice(0,mU),objectiveFile:o,status:r.status,tokenBudget:s,tokensUsed:c(r.tokensUsed),turnsUsed:c(r.turnsUsed),blockedStreak:c(r.blockedStreak),note:typeof r.note==`string`?r.note:``,statusReason:typeof r.statusReason==`string`?r.statusReason:``,lastAccountedMessageID:typeof r.lastAccountedMessageID==`string`?r.lastAccountedMessageID:``,createdAt:typeof r.createdAt==`number`?r.createdAt:0,updatedAt:typeof r.updatedAt==`number`?r.updatedAt:0}}function vU(e){if(!Number.isFinite(e)||e<=0)return`0`;if(e>=1e9){let t=e/1e9;return`${t>=10?Math.round(t):t.toFixed(1).replace(/\.0$/,``)}B`}if(e>=1e6){let t=e/1e6;return`${t>=10?Math.round(t):t.toFixed(1).replace(/\.0$/,``)}M`}if(e>=1e3){let t=e/1e3;return`${t>=10?Math.round(t):t.toFixed(1).replace(/\.0$/,``)}K`}return String(Math.floor(e))}function yU(e){if(!Number.isFinite(e)||e<0)return`0s`;let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60){let e=t%60;return e>0?`${n}m${e}s`:`${n}m`}let r=Math.floor(n/60),i=n%60;return i>0?`${r}h${i}m`:`${r}h`}var bU=e=>!!e&&typeof e==`object`&&!Array.isArray(e),xU=()=>`${Date.now().toString(36)}${Math.random().toString(36).slice(2,8)}`,SU=(e,t,n)=>ZS(e,t,e=>{let t=bU(e.openchamber)?e.openchamber:{},r=n(bU(t.goal)?t.goal:null),i={...t};return r?i.goal=r:delete i.goal,{...e,openchamber:i}}),CU=async(e,t)=>{try{return(await _(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({content:t})})).ok}catch{return!1}},wU=e=>{_(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`DELETE`}).catch(()=>void 0)};async function TU(e){try{let t=await _(`/api/goals/objective/${encodeURIComponent(e)}`);if(!t.ok)return null;let n=await t.json().catch(()=>null);return typeof n?.content==`string`?n.content:null}catch{return null}}var EU=`
|
|
410
|
+
|
|
411
|
+
[… objective trimmed for the auditor — the full text was delivered in the chat message …]
|
|
412
|
+
|
|
413
|
+
`,DU=async e=>{if(e.length<=5e3)return e;let t=await fU(e);if(t)return t.slice(0,mU);let n=Math.max(0,Math.floor((mU-93)/2)),r=_t.getState().dictionary;return hE.error(vt(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${EU}${e.slice(-n)}`};async function OU(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await DU(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await CU(e,a),c=Date.now();await SU(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:xU(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function kU(e,t){await SU(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`&&(tU(e),LC(e)),await SU(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 jU(e,t){let n=!1;await SU(e,t,e=>(n=e?.status===`active`,null)),wU(e),n&&(tU(e),LC(e))}var MU=`<system-reminder>`,NU=`</system-reminder>`,PU=e=>{let t=e.trim();return t?t.startsWith(MU)&&t.endsWith(NU)?t:`${MU}\n${t}\n${NU}`:``},FU=(e,t=m())=>`${t}\n${e}`,IU=(e,t)=>{let n=LU.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(FU(e))??n.sessionMemoryState.get(e)},LU=De()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??FU(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}})})),RU=De((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}})})),zU=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function BU(e,t){if(e){if(!e.degraded&&e.cwd)return zU(e.cwd);if(e.worktreeRoot)return zU(e.worktreeRoot);if(e.cwd)return zU(e.cwd)}return t?zU(t):null}function VU(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function HU(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 UU(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?zU(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=zU(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 WU=`openchamber.session-switch.start`,GU=`openchamber.session-switch.highlight-painted`,KU=`openchamber.session-switch.content-committed`,qU=`data-openchamber-session-switch-highlight-ms`,JU=`data-openchamber-session-switch-content-ms`,YU=`openchamber.session-switch.highlight-latency`,XU=`openchamber.session-switch.content-latency`,ZU=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,QU=()=>ZU()&&performance.getEntriesByName(WU,`mark`).length>0,$U=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},eW=(e=!1)=>{ZU()&&(!e&&performance.getEntriesByName(WU,`mark`).length>0&&performance.getEntriesByName(KU,`mark`).length===0||(performance.clearMarks(WU),performance.clearMarks(GU),performance.clearMarks(KU),performance.clearMeasures(YU),performance.clearMeasures(XU),typeof document<`u`&&(document.documentElement.removeAttribute(qU),document.documentElement.removeAttribute(JU)),performance.mark(WU)))},tW=()=>{if(!QU())return;performance.mark(GU),performance.measure(YU,WU,GU);let e=performance.getEntriesByName(YU,`measure`).at(-1);e&&$U(qU,e.duration)},nW=()=>{if(!QU())return;performance.mark(KU),performance.measure(XU,WU,KU);let e=performance.getEntriesByName(XU,`measure`).at(-1);e&&$U(JU,e.duration)},rW={revision:0,sessionId:null},iW=new Set,aW=e=>{rW={revision:rW.revision+1,sessionId:e};for(let e of iW)e(rW);return rW},oW=()=>rW,sW=e=>(iW.add(e),()=>iW.delete(e)),cW=6e3;function lW(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:he(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:he(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:he(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:he(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:he(`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 uW(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function dW(e,t){if(!e)return;let n=uW(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 fW(e){let t=e.directory??void 0,n=mW(e.sessionId,e.onSendConfirmed),r=e.content;if(e.inputMode===`shell`){let r=e.messageID??he(`msg`);return B.shellSession({sessionId:e.sessionId,directory:t,agent:e.agent??``,model:{providerID:e.providerID,modelID:e.modelID},command:e.content}).then(()=>{n(r)})}let i=ye(e.content);if(i){let a=i.commandName.toLowerCase(),o=i.argumentsText,s=t??Ne.getState().currentDirectory??null,c=u(),l=zi(s,c),d=io(s,c),f=R.getQueryState(l.queryKey),p=R.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(Vi(s,c)):R.fetchQuery({...l,staleTime:1/0}),h?Promise.resolve(oo(R,s,c)):R.fetchQuery({...d,staleTime:1/0})]);if(u()!==c)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===a)?void 0:g.find(e=>e.name.toLowerCase()===a);if(v?.isBuiltIn===!1)r=`[command:${v.reference??v.name}]${o?` ${o}`:``}`;else if(v)return EC({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=>B.sendCommand({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,command:v.name,arguments:o,agent:e.agent,variant:e.variant,files:e.files,messageId:n,directory:t}).then(()=>{})})}return EC({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=>B.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 pW(e,t){_(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function mW(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{pW(e,r)}}}}var hW=e=>{let t=e;return L(t.directory??null)??L(t.project?.worktree??null)},gW=qe(),_W=`oc.chatInput.lastDraftTarget`,vW=()=>{try{let e=gW.getItem(_W);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:L(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},yW=e=>{try{gW.setItem(_W,JSON.stringify(e))}catch{}},bW=ls,xW=e=>{if(e)return RU.getState().getAttachment(e)},SW=(e,t,n)=>{if(!e)return null;let r=BU(xW(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return L(i);if(n?.includeRuntimeMemory!==!1){let t=OW.get(kW());if(t?.sessionId===e&&t.directory)return L(t.directory)}let a=Vd().find(t=>t.id===e);return a?hW(a):null},CW=e=>{let t=Vd().find(t=>t.id===e);if(t)return t;let n=X.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},wW=async(e,t)=>{await $f.getState().activateDirectory(L(e),t)},TW={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},EW=new Map,DW=0,OW=new Map,kW=e=>(e??m()).trim()||`default`,AW=e=>({...e}),jW=(e,t)=>{let n=OW.get(e);OW.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?AW(n.draft):{...TW},...t})},MW=(e,t)=>{let n=Fi.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=ls(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},NW=async(e,t)=>{if(!e)return;let n=MW(e,t);n&&await Gk(n)&&await mk(e)},PW=(e,t)=>{let n=Fi.getState(),r=ls(n.projects,t,e);r&&n.moveProjectToTop(r.id)},FW=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,IW=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,LW=(e,t)=>IW(e,t)&&FW(Br.getState().captureDraftRuntime(),t.runtime);async function RW(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?lW({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return jW(kW(),{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 zW(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return jW(kW(),{draft:n}),{newSessionDraft:n}})}async function BW(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=kW(),t=s.draftID,n=o,jW(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=Br.getState().captureDraftRuntime(),o=se(a,t),s=Br.getState().getDraft(o);return{token:n,draftID:t,draft:AW(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function VW(e){$.setState(t=>{let n=t.newSessionDraft;if(LW(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=OW.get(e.runtimeMemoryKey);return r&&IW(r.draft,e)&&jW(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=OW.get(e.runtimeMemoryKey);t&&IW(t.draft,e)&&jW(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function HW(e){let t=OW.get(e.runtimeMemoryKey);t&&IW(t.draft,e)&&jW(e.runtimeMemoryKey,{draft:{...TW}})}async function UW(e,t,n){if(!e.source)return null;let r;try{r=await Br.getState().finalizeDraftOwnership({source:e.source.key,destination:ge(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 WW(e,t){let n=t??e.directory??null;n&&Pd(e.id,n),X.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function GW(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=L(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!LW(l,r);WW(e,c);let f=$f.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&OO.getState().addSessionToFolder(t,a,e.id)}return d||(yW({projectId:o??null,directory:c}),wW(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),as.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(as.getState().saveSessionAgentSelection(e.id,p),as.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),as.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),PW(c,$.getState().availableWorktreesByProject),u&&nt(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>IM);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&&HW(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function KW(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await RO(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await NW(t,n);let r=t??B.getDirectory();return{directory:L(r),projectId:n}}async function qW(e,t){let n=await BW(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 KW(r),o=a??B.getDirectory(),s=await XS(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&DC({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 GW(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return VW(n),null}}async function JW(e){let t=await qW(e);return t?(await UW(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var YW=2,XW=300;async function ZW(e){let{useI18nStore:t,formatMessage:n}=await nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-BoixGrYS.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 QW(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=$f.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??he(`msg`),h=lW({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 BW(h);if(!g)throw await ZW(`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 KW(_),f=await B.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=b()?.conversations;if(!v?.createWithPrompt)throw await ZW(`chat.chatInput.toast.messageSendFailed`);let y=d??B.getDirectory()??``,x=dS(y,{bootstrap:!1}),S=()=>FW(Br.getState().captureDraftRuntime(),g.runtime),C;for(let e=0;e<=YW;e++){e>0&&await new Promise(e=>setTimeout(e,XW));try{if(C=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}),!C||C.ok||C.phase!==`unavailable`||(C=void 0,e===YW))break}catch{if(e===YW)break}}if(!C)throw VW(g),Br.getState().setPendingInputText(t,`replace`),await ZW(`chat.chatInput.toast.messageSendFailed`);if(C.ok){let e=C.session,t=d??e.directory??null,i=t??y;WW(e,t);let a=i===y?x:dS(i,{bootstrap:!1});dW(e.id,h);let s=await GW(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 UW(g,e.id,`consume`),pW(e.id,m),s.selected&&gm(e.id),IC({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:S}).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(!C.ok){let e=C.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw VW(g),Br.getState().setPendingInputText(t,`replace`),await ZW(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=C,i=e.session,a=d??i.directory??null,s=await GW(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 kC(i.id,m,a,{isCurrent:S});if(e&&S()){await UW(g,i.id,`consume`),pW(i.id,m),s.selected&&gm(i.id),AC(dS(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await UW(g,i.id,`preserve`),Br.getState().setPendingInputText(t,`replace`),await ZW(`chat.chatInput.toast.sendStatusUnknown`)}throw await UW(g,i.id,`preserve`),Br.getState().setPendingInputText(t,`replace`),await ZW(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw VW(g),e}}var $W=`oc.worktreeMap`,eG=()=>{try{let e=qe().getItem($W);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}},tG=e=>{try{qe().setItem($W,e)}catch{}},nG=e=>{let t=[];for(let n of e.values())t.push(...n);return t},rG=eG(),$=De()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...TW},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:nG(rG),availableWorktreesByProject:rG,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,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,i)=>{aW(n),v(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(eW(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Br.getState().setActiveAttachmentDraft(n?ge({transportIdentity:u()},n):null);let s=kW();EW.set(s,n);let c=Ne.getState(),l=SW(n,e=>t().worktreeMetadata.get(e)),d=B.getDirectory()??c.currentDirectory??null,f=(r?L(r):null)??l??d,p=Fi.getState(),m=f?ls(p.projects,t().availableWorktreesByProject,f):null;e({currentSessionId:n,currentSessionDirectory:n?f??null:null}),jW(s,{sessionId:n,directory:f??null}),a!==n&&Je.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?f??null:null}),n&&i?.skipMessageFetch!==!0&&ew(n,f);try{f&&c.currentDirectory!==f&&c.setDirectory(f,{showOverlay:!1}),m&&i?.preserveActiveProject!==!0&&p.activeProjectId!==m.id&&p.setActiveProjectIdOnly(m.id),B.setDirectory(f??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!IU(e)?.isStreaming){let t=Wd(e);t.length>0&&LU.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(uA(n),TP(f??``,n))},prepareForRuntimeSwitch:n=>{let r=kW(n),i=Ne.getState().currentDirectory||null,a=t().currentSessionId,o=i?Id(i):null;oN({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),EW.set(r,t().currentSessionId),jW(r,{sessionId:a,directory:i,draft:AW(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=kW(t),r=OW.get(n),i=r?.sessionId??EW.get(n)??null;v(i);let a=r?.draft?AW(r.draft):{...TW},o=r?.directory??null;o&&Ne.getState().setDirectory(o,{showOverlay:!1}),e({currentSessionId:i,currentSessionDirectory:i?o:null,newSessionDraft:i?{...TW}:a,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}),Br.getState().setActiveAttachmentDraft(i?ge({transportIdentity:u()},i):a.open&&a.draftID?se({transportIdentity:u()},a.draftID):null),i?TP(o??B.getDirectory()??``,i):TP(``,``)},openNewSessionDraft:n=>{if(YI.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let i=Fi.getState(),a=i.projects,o=t().availableWorktreesByProject,s=L(t().currentSessionDirectory??null),c=L(Ne.getState().currentDirectory??null),l=vW(),d=n?.directoryOverride===void 0?null:L(n.directoryOverride),f=bW(a,o,d),p=n?.ensureProjectForDirectory&&d&&!f?i.addProject(d):null;p&&(i=Fi.getState());let m=i.projects,h=i.getActiveProject(),g=n?.selectedProjectId?m.find(e=>e.id===n.selectedProjectId)??null:null,_=h||(i.activeProjectId?m.find(e=>e.id===i.activeProjectId)??null:m[0]??null),y=l?.projectId?m.find(e=>e.id===l.projectId)??null:null,b=bW(m,o,l?.directory??null),x=bW(m,o,s),S=bW(m,o,c),C=g||(d===null?x||(c?S:b??y??_):p??f),w=d===null?g?L(g.path??null):s||c||(l?.directory?l.directory:L(C?.path??null)):d;yW({projectId:C?.id??null,directory:w}),C&&i.activeProjectId!==C.id&&i.setActiveProjectIdOnly(C.id);let T=Ee({projectId:C?.id??null,directory:w}),E=se({transportIdentity:u()},T),D=Br.getState().getDraft(E),O={open:!0,draftID:T,selectedProjectId:C?.id??null,directoryOverride:w,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:L(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===T?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},k=t().currentSessionId,A=t().currentSessionDirectory;e({newSessionDraft:{...O},currentSessionId:null,currentSessionDirectory:null,error:null}),v(null),Je.getState().setActiveMainTab(`chat`),k&&Je.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:k,previousDirectory:A,nextSessionId:null,nextDirectory:null}),jW(kW(),{sessionId:null,directory:w,draft:O}),Br.getState().setActiveAttachmentDraft(E),D||Br.getState().clearAttachedFiles(),n?.initialPrompt&&Br.getState().setPendingInputText(n.initialPrompt);let j=L(C?.path??null)??w,ee=C?L(j):null,te=O.draftID,ne=u();wW(j,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=L($f.getState().activeDirectoryKey);!e.open||e.draftID!==te||u()!==ne||!ee||n!==ee||$f.getState().applyDefaultModelAgentSelection({projectDefaultModel:C?.defaultModel})}),w&&w!==Ne.getState().currentDirectory&&Ne.getState().setDirectory(w)},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}),jW(kW(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=L(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}:{}}}}),wW(r,{source:`setNewSessionDraftTarget`}),r&&r!==Ne.getState().currentDirectory&&Ne.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=cW)=>{let r=_e(),i=E(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=E(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=Wd(r);if(i.length===0)return null;let a=rA(i,e=>Gd(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($k(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?RU.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}):RU.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=L(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),wW(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Ne.getState().currentDirectory&&Ne.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:L(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:L(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:L(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,m=d?.commitStagedMessageEdit&&f&&f.sessionId===p?f:null,h=d?.sessionId??t().currentSessionId;if(h){let n=new Map(t().pendingChangesBarDismissed);n.delete(h),e({pendingChangesBarDismissed:n})}let g=t().newSessionDraft,_=typeof a==`string`&&a.trim().length>0?a.trim():void 0,v=u!==`shell`&&n.trim().length>0?XI.getState().consume():{armed:!1,objectiveOverride:null},y=v.armed;if(y){let e=Je.getState(),t=PU(`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 x=(e,t)=>{if(!y)return;let r=Je.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=v.objectiveOverride?.trim()||n;OU(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&&g?.open){if(u!==`shell`&&!n.trimStart().startsWith(`/`)&&!d?.delivery&&b()?.conversations?.createWithPrompt){await QW({content:n,providerID:r,modelID:i,agent:_,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:d?.messageID,onSessionReady:x});return}let e=d?.messageID??g.pendingUserMessage?.info.id??he(`msg`),a=lW({messageID:e,sessionID:`draft:pending`,providerID:r,modelID:i,agent:_,text:n,attachments:o,additionalParts:g.syntheticParts?.length?[...c||[],...g.syntheticParts]:c,agentMentionName:s}),f=await qW({providerID:r,modelID:i,agent:_,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;gm(p.sessionId);let v=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await fW({sessionId:p.sessionId,directory:p.directory,content:n,providerID:r,modelID:i,agent:p.agent,agentMentionName:s,variant:l,inputMode:u,files:v,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 UW(m,p.sessionId,`consume`)}catch(e){throw await UW(m,p.sessionId,`preserve`),e}PW(p.directory,t().availableWorktreesByProject),x(p.sessionId,p.directory);return}let S=d?.sessionId??t().currentSessionId,C=S?as.getState().getSessionAgentSelection(S):null,w=$f.getState().currentAgentName,T=_||C||w||void 0;if(S&&as.getState().saveSessionModelSelection(S,r,i),S&&T&&(as.getState().saveSessionAgentSelection(S,T),as.getState().saveAgentModelForSession(S,T,r,i),as.getState().saveAgentModelVariantForSession(S,T,r,i,l)),S){let e=LU.getState(),t=IU(S);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(FU(S),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),LU.setState({sessionMemoryState:n})}}let E=S?L(d?.directoryHint)??L(t().getDirectoryForSession(S)):null;S&&!d?.ticket&&gm(S);let D=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(m)try{await JC(m.sessionId,m.messageId,{directory:E??void 0}),t().stagedMessageEdit===m&&e({stagedMessageEdit:null})}catch(e){throw t().endMessageEditCommit(m.sessionId,m.messageId),e}try{await fW({sessionId:S||``,directory:E,content:n,providerID:r,modelID:i,agent:T,agentMentionName:s,variant:l,inputMode:u,files:D,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{m&&t().endMessageEditCommit(m.sessionId,m.messageId)}PW(E,t().availableWorktreesByProject),S&&x(S,E)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await XS(n,r??B.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),jW(kW(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&OO.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}}),jW(kW(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>lC(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await lC(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>fC(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await fC(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await mC(e,t)},requestSessionSmartTitle:async e=>{await hC(e)},shareSession:async e=>gC(e),unshareSession:async e=>_C(e),revertToMessage:async(e,t,n)=>{await HC(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await WC(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Wd(e),r=Bd().find(t=>t.id===e)?.revert?.messageID,i=ws(n,r);if(!i)return;let a=Gd(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 nt(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 nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-BoixGrYS.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 nt(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>kx);return{unrevertSession:e}},void 0);await t(e);let{toast:n}=await nt(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 nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-BoixGrYS.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=Bd().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=Ts(Wd(e),r);if(i){await t().revertToMessage(e,i.id,{skipRedoPush:!0});let{toast:n}=await nt(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 nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-BoixGrYS.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 ZC(e);let{toast:a}=await nt(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 nt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-BoixGrYS.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=CW(n),s=++DW;try{let a=i?.directory??t().getDirectoryForSession(n)??B.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await nt(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 QC(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await nt(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 nt(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=CW(n),a=++DW;try{let r=t().getDirectoryForSession(n)??B.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await nt(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 QC(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await nt(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 nt(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=L(e);return t?Vd().filter(e=>hW(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=SW(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=X.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?hD(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:SW(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Wd(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=>as.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Wd(e);Bd().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=L(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),jW(kW(),{sessionId:n,directory:i}))}}));$M((e,t)=>{$.getState().setCurrentSession(e,t)});var iG=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==iG&&(iG=t,tG(t))}});function aG(e){return e.settingsReturnTo?e.settingsReturnTo:e.activeTab===`settings`?null:{tab:e.activeTab,secondary:e.secondary}}function oG(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function sG(e){return e.length>1?e.slice(0,-1):[]}function cG(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function lG(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 uG={activeTab:`projects`,secondary:null,settingsReturnTo:null},dG=0,fG=null,pG=e=>{let t=++dG;return fG={generation:t,sessionId:e.sessionId,directory:L(e.directory)??null},t},mG=e=>{let t=fG;return t&&t.generation===dG&&t.sessionId===e.sessionId&&t.directory===(L(e.directory)??null)?(fG=null,`internal`):(fG=null,`external`)},hG=()=>{dG+=1,fG=null},gG=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&L(n)===L(e.directory)?hG():pG(e),t.setCurrentSession(e.sessionId,e.directory??null,{preserveActiveProject:e.preserveActiveProject})},_G=De((e,t)=>({...uG,setActiveTab:t=>{hG(),e({activeTab:t,secondary:null,settingsReturnTo:null})},openSettingsFromCurrent:()=>{hG(),e(e=>({activeTab:`settings`,secondary:null,settingsReturnTo:aG(e)}))},restoreSettingsReturnTo:()=>{let n=t().settingsReturnTo;return n?(hG(),e({activeTab:n.tab,secondary:n.secondary,settingsReturnTo:null}),n):null},openSession:t=>{e({secondary:{kind:`chat`,routes:[yG(t,`root`)]}}),gG(t)},pushSession:t=>{e(e=>{let n=yG(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?oG(e.secondary.routes,n):[n]}}}),gG(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=sG(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=_G.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&gG(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=lG(e.secondary.routes,yG(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:cG(e.secondary.routes,yG(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=>{hG(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{hG(),yt.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{hG(),e({secondary:{kind:`instances`}})},pushAssistantSettings:t=>e(e=>e.secondary?.kind!==`assistant`||e.secondary.settingsAssistantID===t?e:{secondary:{...e.secondary,settingsAssistantID:t}}),popAssistantSettings:()=>e(e=>e.secondary?.kind!==`assistant`||!e.secondary.settingsAssistantID?e:{secondary:{kind:`assistant`}}),closeSecondary:()=>{hG(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{hG(),e({...uG})}})),vG=1,yG=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${vG++}`,sessionId:e.sessionId,directory:e.directory??null}),bG=e=>!Ue()||Ge()?!1:(_G.getState().pushSession(e),!0);export{hV as $,Ao as $a,gp as $i,ek as $n,kS as $r,FI as $t,vU as A,Cs as Aa,n_ as Ai,lj as An,Br as Ao,Aw as Ar,KI as At,FV as B,ls as Ba,Sm as Bi,Uk as Bn,XS as Br,PN as Bt,PU as C,W as Ca,P_ as Ci,gM as Cn,ei as Co,lE as Cr,sR as Ct,AU as D,fu as Da,S_ as Di,yj as Dn,Ur as Do,TT as Dr,JI as Dt,kU as E,G as Ea,w_ as Ei,_j as En,Qr as Eo,xT as Er,XI as Et,NH as F,fs as Fa,ah as Fi,dA as Fn,LC as Fr,iF as Ft,OV as G,es as Ga,Wp as Gi,Kk as Gn,hC as Gr,PI as Gt,vH as H,ts as Ha,dm as Hi,Xk as Hn,qS as Hr,tI as Ht,nU as I,_s as Ia,qm as Ii,$k as In,fC as Ir,TP as It,kV as J,Go as Ja,Lp as Ji,ak as Jn,wC as Jr,QF as Jt,AV as K,Yo as Ka,Ip as Ki,Zk as Kn,RC as Kr,AN as Kt,wH as L,us as La,Bm as Li,rA as Ln,SC as Lr,DP as Lt,PH as M,ds as Ma,Og as Mi,tj as Mn,dn as Mo,Bw as Mr,CF as Mt,IH as N,ys as Na,xh as Ni,uA as Nn,un as No,zw as Nr,CI as Nt,mU as O,pu as Oa,r_ as Oi,mj as On,Wr as Oo,ST as Or,GI as Ot,tU as P,ps as Pa,uh as Pi,cA as Pn,an as Po,nC as Pr,gI as Pt,mV as Q,po as Qa,Vp as Qi,pk as Qn,mC as Qr,nI as Qt,hH as R,os as Ra,Im as Ri,Yk as Rn,dC as Rr,EP as Rt,FU as S,Iu as Sa,F_ as Si,_M as Sn,Zr as So,oE as Sr,tR as St,TU as T,Eu as Ta,T_ as Ti,vj as Tn,$r as To,ET as Tr,kL as Tt,DV as U,$o as Ua,um as Ui,Jk as Un,KS as Ur,wF as Ut,QV as V,as as Va,fm as Vi,Gk as Vn,VC as Vr,iI as Vt,_V as W,Zo as Wa,em as Wi,Wk as Wn,BC as Wr,TF as Wt,bV as X,mo as Xa,Up as Xi,ik as Xn,sS as Xr,ZF as Xt,vV as Y,qo as Ya,Bp as Yi,ok as Yn,uC as Yr,XF as Yt,xV as Z,fo as Za,Hp as Zi,tk as Zn,pC as Zr,$F as Zt,HU as _,Ru as _a,B_ as _i,ZM as _n,Vi as _o,kE as _r,cB as _t,zW as a,Vd as aa,Gy as ai,MF as an,ao,OO as ar,iV as at,IU as b,Lu as ba,V_ as bi,BM as bn,Bi as bo,nE as br,_R as bt,$ as c,Gd as ca,dy as ci,NF as cn,Ka as co,ZD as cr,JB as ct,sW as d,Ud as da,ly as di,EI as dn,Na as do,qD as dr,NB as dt,cp as ea,Ox as ei,wI as en,jo as eo,mk as er,pV as et,eW as f,nd as fa,ty as fi,TI as fn,Ba as fo,hD as fr,gB as ft,BU as g,Nu as ga,zv as gi,XM as gn,Da as go,PE as gr,oB as gt,UU as h,Pu as ha,_v as hi,DI as hn,Ea as ho,X as hr,fB as ht,RW as i,Hd as ia,nb as ii,kF as in,to as io,QD as ir,QB as it,_U as j,bs as ja,kg as ji,ij as jn,ln as jo,Vw as jr,YI as jt,yU as k,rc as ka,t_ as ki,dj as kn,Hr as ko,$w as kr,qI as kt,aW as l,Bd as la,uy as li,FF as ln,Ga as lo,_D as lr,KB as lt,tW as m,Mu as ma,Fv as mi,rI as mn,Oa as mo,JD as mr,bB as mt,bG as n,kf as na,fx as ni,jI as nn,oo as no,LO as nr,cV as nt,JW as o,Fd as oa,_y as oi,zF as on,ja as oo,WD as or,rV as ot,nW as p,ud as pa,cy as pi,HF as pn,za as po,KD as pr,uB as pt,EV as q,Jo as qa,Rp as qi,nk as qn,zC as qr,kN as qt,_G as r,$f as ra,$b as ri,OF as rn,so as ro,IO as rr,ZB as rt,fW as s,Wd as sa,iy as si,VF as sn,Va as so,GD as sr,WB as st,mG as t,ap as ta,hx as ti,AF as tn,wo as to,FO as tr,fV as tt,oW as u,Pd as ua,sy as ui,LF as un,Wa as uo,XD as ur,XB as ut,VU as v,U as va,z_ as vi,KM as vn,Hi as vo,AE as vr,Jz as vt,jU as w,Fu as wa,C_ as wi,Mj as wn,Xr as wo,UT as wr,cR as wt,LU as x,zu as xa,I_ as xi,FM as xn,Fi as xo,iE as xr,ZI as xt,RU as y,Du as ya,W_ as yi,VM as yn,Li as yo,hE as yr,hR as yt,NV as z,ss as za,xm as zi,qk as zn,JC as zr,LN as zt};
|