@openchambery/web 2.0.0-beta.13 → 2.0.0-beta.15
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-pLaqWWmB.js → AgentAvatar-Cxm7uMtK.js} +1 -1
- package/dist/assets/AssistantView-Ck0B33VC.js +3 -0
- package/dist/assets/{DiagramView-Bj1zf453.js → DiagramView-B_axat3i.js} +1 -1
- package/dist/assets/{FadeInOnReveal-MuJAzJq_.js → FadeInOnReveal-FAZTMV12.js} +1 -1
- package/dist/assets/{Icon-Dz2kO9RN.js → Icon-DKd015RD.js} +1 -1
- package/dist/assets/{MarkdownRenderer-BudbVo-U.js → MarkdownRenderer-Cr5OVKst.js} +2 -2
- package/dist/assets/{MarkdownRendererImpl-D09xfKaU.js → MarkdownRendererImpl-CJUjp1Kl.js} +3 -3
- package/dist/assets/{MarkstreamRendererImpl-35rp3c50.js → MarkstreamRendererImpl-xEVeK8b5.js} +1 -1
- package/dist/assets/{MobileDetailNavigation-DcPqj1Bx.js → MobileDetailNavigation-AxTBUyCz.js} +1 -1
- package/dist/assets/{MobileShareBridge-B8PXA73O.js → MobileShareBridge-B3q5Bvca.js} +2 -2
- package/dist/assets/MobileSurface-BnUkDsjU.js +2 -0
- package/dist/assets/{MultiRunWindow-BPbfJ2bK.js → MultiRunWindow-CPCjWcLe.js} +1 -1
- package/dist/assets/{OnboardingScreen-XWkr7MjT.js → OnboardingScreen-BGHwdpXe.js} +1 -1
- package/dist/assets/{OverlayScrollbar-DCWyGseO.js → OverlayScrollbar-SUdC3Pqe.js} +1 -1
- package/dist/assets/SettingsView-DvHCyZ1l.js +25 -0
- package/dist/assets/{SettingsWindow-BZ9yV0f_.js → SettingsWindow-D7nv9VG2.js} +1 -1
- package/dist/assets/{TerminalView-BrS9460h.js → TerminalView-Cukq-9MG.js} +1 -1
- package/dist/assets/{ToolOutputDialog-nN6aDoxI.js → ToolOutputDialog-BBudjfdJ.js} +1 -1
- package/dist/assets/appThemeRegistry-B7iM6Wwn.js +1 -0
- package/dist/assets/{assistant-attachment-cache-DphJleHr.js → assistant-attachment-cache-sG8YQsVs.js} +1 -1
- package/dist/assets/{button-Doq9FI1I.js → button-EzCcYrQl.js} +1 -1
- package/dist/assets/{collapsible-CYUeu3_N.js → collapsible-BwvSZkMC.js} +1 -1
- package/dist/assets/{context-menu-C8kOMVtC.js → context-menu-DSrUbCPh.js} +1 -1
- package/dist/assets/{desktopHosts-DbxnIQdS.js → desktopHosts-C8vf9vRY.js} +1 -1
- package/dist/assets/desktopRelayRestore-DDJtljeu.js +1 -0
- package/dist/assets/{diagram-B1p9Yn1h.js → diagram-Brtt6ms7.js} +1 -1
- package/dist/assets/{dialog-D08-Lg-e.js → dialog-Cpu-rKij.js} +1 -1
- package/dist/assets/{fileMentionTouchSelection-CCTLgGd0.js → fileMentionTouchSelection-DJnbFm0E.js} +1 -1
- package/dist/assets/{fileQueries-X773xxvX.js → fileQueries-CBu-ytXS.js} +1 -1
- package/dist/assets/{gitApi-BswJP9it.js → gitApi-BiPCMFjN.js} +3 -3
- package/dist/assets/{imageSource-BMztRu0c.js → imageSource-BpUsiwFd.js} +1 -1
- package/dist/assets/{input-DZZuQ1IL.js → input-DksVnckl.js} +1 -1
- package/dist/assets/insertionBoundaries-DN60qQpt.js +1 -0
- package/dist/assets/main-NeJv9nvF.js +169 -0
- package/dist/assets/{main-CCTwNDHO.js → main-cVprFo3G.js} +2 -2
- package/dist/assets/{markdownHeightCache-DBgXGze8.js → markdownHeightCache-emzgqB2K.js} +1 -1
- package/dist/assets/{mcpQueries-CReP__hz.js → mcpQueries-CR7_Jav7.js} +1 -1
- package/dist/assets/miniChat-C5tTnNNM.js +2 -0
- package/dist/assets/mobile-D1KqMgLm.js +2 -0
- package/dist/assets/multirun-Bp2dQfKE.js +4 -0
- package/dist/assets/persistence-CMWO3jFo.js +3 -0
- package/dist/assets/platform-BxU3ZvQ0.js +6 -0
- package/dist/assets/{projectMeta-BiJbg_ie.js → projectMeta-CdRGrq5D.js} +2 -2
- package/dist/assets/{relay-image-stream-DrdVj99c.js → relay-image-stream-D2XooXKZ.js} +1 -1
- package/dist/assets/{renderElectronMiniChatApp-oYsMEjL_.js → renderElectronMiniChatApp-BWDU5JMe.js} +2 -2
- package/dist/assets/renderMobileApp-OdRhHvr4.js +28 -0
- package/dist/assets/{runtime-fetch-Fs9ZV2V8.js → runtime-fetch-CiqQd__Y.js} +1 -1
- package/dist/assets/runtime-switch-BJM2k_uH.js +1 -0
- package/dist/assets/{runtimeConfig-Cx52HiWa.js → runtimeConfig-D4tlo3iY.js} +1 -1
- package/dist/assets/{runtimeEndpointReset-BgKWAwGQ.js → runtimeEndpointReset-FgHH1wMh.js} +7 -7
- package/dist/assets/{sessionChangeSummary-fFllnvNf.js → sessionChangeSummary-DrefB13y.js} +1 -1
- package/dist/assets/{sessionLookup-Dl_UfCLx.js → sessionLookup-CwaDQtYl.js} +1 -1
- package/dist/assets/{sortable-tabs-strip-Q3bb6MVj.js → sortable-tabs-strip-Bc0lATi8.js} +1 -1
- package/dist/assets/src-iyTfdRD7.css +2 -0
- package/dist/assets/{terminalApi-Da_DO_Uh.js → terminalApi-C6zlKnK1.js} +1 -1
- package/dist/assets/{textarea--CYehp07.js → textarea-B9pCxe-7.js} +1 -1
- package/dist/assets/{tooltip-CGLzBwEK.js → tooltip-DwUy2erJ.js} +1 -1
- package/dist/assets/{url-Byz3kd29.js → url-DF1NFwt_.js} +1 -1
- package/dist/assets/{useAppFontEffects-DyZT4Zce.js → useAppFontEffects-BMRvJWlG.js} +55 -55
- package/dist/assets/{useAssistantUIStore-Bz4tRflF.js → useAssistantUIStore-B75cQm_z.js} +1 -1
- package/dist/assets/{useDesktopWindowControlsLayout-DPNBtrcj.js → useDesktopWindowControlsLayout-BYCorgSr.js} +1 -1
- package/dist/assets/{useEffectiveDirectory-B83S8xIE.js → useEffectiveDirectory-Djy7IP9p.js} +1 -1
- package/dist/assets/{useFontPreferences-D9OIZs1p.js → useFontPreferences-DFsjAsxC.js} +1 -1
- package/dist/assets/useMobileNavigationStore-DrdLEZXl.js +414 -0
- package/dist/assets/{useSessionAutoCleanup-Cxxs_YCY.js → useSessionAutoCleanup-BzidHXhR.js} +2 -2
- package/dist/assets/{useUIStore-syVmbuDA.js → useUIStore-Brsa2mKs.js} +1 -1
- package/dist/assets/{useWorkerHighlightedLines-f3nJ97tF.js → useWorkerHighlightedLines-C8k8KbYV.js} +1 -1
- package/dist/index.html +11 -11
- package/dist/mini-chat.html +11 -11
- package/dist/mobile.html +11 -11
- package/package.json +1 -1
- package/server/lib/message-queue/service.js +1 -1
- package/server/lib/relay/DOCUMENTATION.md +2 -1
- package/dist/assets/AssistantView-TmFg5bqF.js +0 -3
- package/dist/assets/MobileSurface-CXPQMY6f.js +0 -2
- package/dist/assets/SettingsView-UGoAWaMq.js +0 -25
- package/dist/assets/appThemeRegistry-Bqmraipr.js +0 -1
- package/dist/assets/desktopRelayRestore-dvxF4V2p.js +0 -1
- package/dist/assets/insertionBoundaries-BsH1Vl76.js +0 -1
- package/dist/assets/main-BZj_mfSt.js +0 -169
- package/dist/assets/miniChat-CvKDN7sq.js +0 -2
- package/dist/assets/mobile-K1l-_BAf.js +0 -2
- package/dist/assets/multirun-BQ48Q4TR.js +0 -4
- package/dist/assets/persistence-DznVIKwz.js +0 -3
- package/dist/assets/platform-DSTtx-DI.js +0 -6
- package/dist/assets/renderMobileApp-BG8wjuhs.js +0 -28
- package/dist/assets/runtime-switch-LvWDU-SL.js +0 -1
- package/dist/assets/src-CEwVcUv-.css +0 -2
- package/dist/assets/useMobileNavigationStore-avw5PK-Q.js +0 -414
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mcpQueries-CR7_Jav7.js","assets/rolldown-runtime-C0FnF6B9.js","assets/runtime-switch-BJM2k_uH.js","assets/runtime-auth-D66yq6ie.js","assets/runtime-fetch-CiqQd__Y.js","assets/persistence-CMWO3jFo.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-base-ui-CnHfUmDN.js","assets/useUIStore-Brsa2mKs.js","assets/vendor-react-DLPElpoQ.js","assets/vendor-pathe-vBmvQE8f.js","assets/vendor-tanstack-query-core-BWz0ose6.js","assets/platform-BxU3ZvQ0.js","assets/vendor-opencode-client-C12gfjag.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/vendor-tanstack-react-query-D7pys_c9.js","assets/vendor-sonner-DVzioF3d.js","assets/store-jaP79mqI.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-BJM2k_uH.js";import{n as _,r as v}from"./runtime-fetch-CiqQd__Y.js";import{$ as y,At as b,Ct as x,En as S,Et as C,F as w,Ft as T,I as E,It as D,L as O,Lt as k,Mt as A,N as j,Ot as M,P as N,R as ee,Rt as te,T as ne,Tt as re,W as P,Wt as ie,X as ae,at as oe,bt as se,d as F,en as ce,f as I,i as le,in as L,it as ue,j as de,jt as fe,kt as pe,lt as R,mt as me,nt as z,o as he,ot as ge,r as _e,rt as ve,tn as ye,tt as be,vt as B,wt as xe,xt as Se,yt as Ce,z as we,zt as Te}from"./persistence-CMWO3jFo.js";import{a as Ee,i as De,o as Oe,r as ke}from"./vendor-zustand-B4dlGEM2.js";import{nt as Ae,rt as je}from"./vendor-base-ui-CnHfUmDN.js";import{$n as Me,$r as Ne,$t as Pe,Ai as Fe,Ar as Ie,Br as Le,Bt as Re,Cr as ze,Ct as Be,Di as Ve,Dr as He,Ei as Ue,Er as We,Fi as Ge,Fn as Ke,Ft as qe,Gn as Je,Gr as Ye,Gt as Xe,Hn as Ze,Hr as Qe,Ht as $e,In as et,Ir as tt,It as nt,Jn as rt,Jr as it,Kn as at,Kr as ot,Kt as st,Li as ct,Ln as lt,Lr as ut,Lt as dt,Mi as ft,Mr as pt,Ni as mt,Nn as ht,Nr as gt,Nt as V,Oi as _t,Or as vt,Ot as yt,Pi as bt,Pn as xt,Pt as St,Qn as Ct,Qr as wt,Qt as Tt,R as Et,Ri as Dt,Rn as Ot,Rr as kt,Rt as At,Si as jt,Sr as Mt,St as Nt,Tn as Pt,Un as Ft,Ur as It,Ut as Lt,Vn as Rt,Vr as zt,Vt as Bt,Wn as Vt,Wr as Ht,Wt as Ut,Xn as Wt,Xr as Gt,Yn as Kt,Yr as qt,Yt as Jt,Zn as Yt,Zr as Xt,_i as Zt,_r as Qt,ai as $t,an as en,ar as tn,ci as nn,cr as rn,di as an,ei as on,en as sn,er as cn,fi as ln,fr as un,gi as dn,gr as fn,hi as pn,hr as mn,ii as hn,ir as gn,ji as _n,jn as vn,jr as H,ki as yn,li as bn,lr as xn,mi as Sn,mn as Cn,mr as wn,n as Tn,ni as En,nr as Dn,oi as On,on as kn,or as An,pi as jn,pn as Mn,pr as Nn,qn as Pn,qr as Fn,qt as In,r as Ln,ri as Rn,si as zn,sr as Bn,t as Vn,ti as Hn,tr as Un,ui as Wn,ur as Gn,vn as U,vr as Kn,wi as qn,wr as Jn,xi as Yn,xn as Xn,xr as W,yi as Zn,yn as Qn,yr as $n,zi as er,zn as tr,zr as nr,zt as rr}from"./platform-BxU3ZvQ0.js";import{b as ir,n as ar,x as or}from"./useUIStore-Brsa2mKs.js";import{n as sr}from"./vendor-react-DLPElpoQ.js";import{i as cr,n as lr,r as ur,t as dr}from"./vendor-pathe-vBmvQE8f.js";import{a as fr,n as pr,o as mr}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{r as hr}from"./vendor-tanstack-query-core-BWz0ose6.js";import{a as gr,l as _r,n as vr,o as yr,s as br,t as xr}from"./vendor-tanstack-react-query-D7pys_c9.js";import{r as Sr}from"./vendor-sonner-DVzioF3d.js";import{a as Cr,n as wr}from"./vendor-reactuses-core-Dq5ocTF8.js";import{d as Tr,f as Er,t as Dr}from"./button-EzCcYrQl.js";import{i as Or,t as kr}from"./store-jaP79mqI.js";import{i as Ar}from"./useAssistantUIStore-B75cQm_z.js";import{a as jr,i as Mr,n as Nr,o as Pr,r as Fr,s as Ir,t as Lr}from"./vendor-zod-Dzk5kdUU.js";import{t as Rr}from"./vendor-fuse.js-DB5wDJbI.js";var zr=1048576,Br=new TextEncoder,Vr=e=>e instanceof Error&&e.name===`AbortError`,Hr=e=>Vr(e)?e:new DOMException(`The operation was aborted.`,`AbortError`),Ur=async e=>{try{await e?.cancel()}catch{}},Wr=async e=>{try{await e.cancel()}catch{}},Gr=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||Vr(e)?Hr(e):Error(`SSE request failed`)}if(!r.ok)throw await Ur(r.body),Error(`SSE response failed`);if(!/^text\/event-stream(?:\s*;|\s*$)/i.test(r.headers.get(`content-type`)??``))throw await Ur(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 Wr(i),i.releaseLock(),t.signal?.aborted||Vr(e)?Hr(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>zr)throw Error(`SSE response exceeds buffer limit`);u=i,l.push(a)}},h=e=>{if(e.length===0)return;o+=e,s+=Br.encode(e).byteLength;let t=o===`data`?4:o.startsWith(`data:`)?5+ +(o.charAt(5)===` `):0;if(u+s-t>zr)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||Vr(e)?Hr(e):e instanceof Error&&e.message===`SSE response exceeds buffer limit`?e:Error(`SSE response read failed`)}finally{d||await Wr(i),i.releaseLock()}},Kr=null,qr=null,Jr=null,Yr=0,Xr=null,Zr=new Set,Qr=new Map,$r=e=>e===`session-index-changed`||e===`message-queue-changed`||e===`assistants-changed`,ei=()=>{Qr.clear()},ti=e=>Qr.get(e),ni=(e,t)=>{let n=Qr.get(e);(n===void 0||t>n)&&Qr.set(e,t)},ri=3e4,ii=45e3,ai=()=>{Jr&&=(clearTimeout(Jr),null)},oi=()=>{if(qr||Zr.size===0)return;let e=Math.min(1e3*2**Math.min(Yr,5),ri);qr=setTimeout(()=>{qr=null,Yr+=1,fi()},e)},si=()=>{ai();let e=Kr;Kr=null,e?.controller.abort()},ci=e=>{if(ai(),Zr.size===0||Kr!==e)return;let t=setTimeout(()=>{Kr===e&&Jr===t&&(Jr=null,si(),oi())},ii);Jr=t},li=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}},ui=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}:{}}},di=e=>{let t=ui(e);if(t){t.type===`event-stream-ready`&&(Yr=0),$r(t.type)&&`revision`in t&&ni(t.type,t.revision);for(let e of Zr)try{e(t)}catch{}}},fi=()=>{if(typeof window>`u`||Zr.size===0||Kr)return;let e={controller:new AbortController};Kr=e,Gr(`/api/openchamber/events`,{signal:e.controller.signal,onOpen:()=>{Kr===e&&ci(e)},onActivity:()=>{Kr===e&&ci(e)},onMessage:t=>{if(Kr!==e)return;let n=li(t);n&&di(n)}}).then(()=>{Kr===e&&(Kr=null,ai(),oi())},()=>{Kr===e&&(Kr=null,ai(),e.controller.signal.aborted||oi())})},pi=()=>{Xr||typeof window>`u`||(Xr=s(()=>{ei(),qr&&=(clearTimeout(qr),null),si(),Yr=0,fi()}))},mi=()=>{Xr?.(),Xr=null},hi=e=>(Zr.add(e),pi(),fi(),()=>{Zr.delete(e),Zr.size===0&&(ei(),qr&&=(clearTimeout(qr),null),Yr=0,si(),mi())}),gi=!1,_i=Promise.resolve(),vi=null,yi=()=>{gi||(gi=!0,_i=new Promise(e=>{vi=e}))},bi=async()=>_i,xi=()=>{if(!gi)return;gi=!1;let e=vi;vi=null,e?.()},Si=`openchamber_input_draft_metadata_v1`,Ci=`openchamber_input_draft_metadata_migration_v1`,wi=`openchamber_chat_input_draft_`,Ti=`openchamber_chat_confirmed_mentions_`,Ei=()=>({ok:!1,error:{code:`unavailable`}}),Di=()=>({ok:!1,error:{code:`cancelled`}}),Oi=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),ki=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),Ai=(e,t)=>Object.keys(e).every(e=>t.includes(e)),ji=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,Mi=e=>typeof e==`string`&&e.length>0,Ni=e=>({read:async t=>{if(!e)return Ei();try{return{ok:!0,value:e.getItem(t)}}catch(e){return Oi(e)}},write:async(t,n)=>{if(!e)return Ei();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return Oi(e)}},remove:async t=>{if(!e)return Ei();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return Oi(e)}},keys:async()=>{if(!e)return Ei();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 Oi(e)}}}),Pi=()=>{try{return Ni(typeof window>`u`?null:window.localStorage)}catch{return Ni(null)}},Fi=(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}},Ii=async e=>{let t=await e.keys();if(!t.ok)return t;let n=new Set;for(let e of t.value)e.startsWith(wi)&&n.add(e.slice(29)),e.startsWith(Ti)&&n.add(e.slice(36));let r=[];for(let i of n){let n=`${wi}${i}`,a=`${Ti}${i}`,[o,s]=await Promise.all([e.read(n),e.read(a)]);if(!o.ok)return o;if(!s.ok)return s;r.push(Fi(i,o.value,s.value,[n,a].filter(e=>t.value.includes(e))))}return{ok:!0,value:r}},Li=e=>{if(!(!ki(e)||!Ai(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]}},Ri=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&Mi(t[0])&&(t[1]===`session`||t[1]===`draft`)&&Mi(t[2])&&e===JSON.stringify(t)}catch{return!1}},zi=e=>{if(!ki(e)||!Ai(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)&&!Mi(e.claimedTransportIdentity))&&!(r&&!n)&&!(t&&(!n||!r)))return{complete:t,claimedTransportIdentity:e.claimedTransportIdentity,captured:n,markerCommitted:r,cleanupComplete:t}},Bi=e=>{if(!ki(e)||!Ai(e,[`version`,`drafts`,`tombstones`,`migration`,`legacy`])||e.version!==1||!ki(e.drafts)||!ki(e.tombstones)||!ki(e.legacy)||!Ai(e.legacy,[`new`,`entries`])||!ki(e.legacy.entries))return;let t=zi(e.migration);if(!t)return;let n={};for(let[t,r]of Object.entries(e.drafts)){let e=fe(r);if(!e||t!==x(e.key))return;n[t]=e}let r={};for(let[t,n]of Object.entries(e.tombstones)){if(!Ri(t)||!ji(n))return;r[t]=n}let i={};for(let[t,n]of Object.entries(e.legacy.entries)){let e=Li(n);if(!e||t!==e.suffix||t===`new`)return;i[t]=e}let a=e.legacy.new===void 0?void 0:Li(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}}},Vi=(e=``)=>({version:1,drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:e,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),Hi=e=>{try{return{ok:!0,value:JSON.stringify(e)}}catch{return{ok:!1,error:{code:`serialization`}}}},Ui=async e=>{let t=await e.read(Si);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:null};try{let e=Bi(JSON.parse(t.value));return e?{ok:!0,value:e}:{ok:!1,error:{code:`corrupt`}}}catch{return{ok:!1,error:{code:`corrupt`}}}},Wi=async(e,t)=>{let n=Bi(t);if(!n)return{ok:!1,error:{code:`corrupt`}};let r=Hi(n);return r.ok?e.write(Si,r.value):r},Gi=e=>ki(e)&&Ai(e,[`version`,`claimedTransportIdentity`])&&e.version===1&&Mi(e.claimedTransportIdentity)?{version:1,claimedTransportIdentity:e.claimedTransportIdentity}:void 0,Ki=e=>Hi({version:1,claimedTransportIdentity:e}),qi=(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}}},Ji=e=>[...new Set([e.legacy.new,...Object.values(e.legacy.entries)].flatMap(e=>e?.keys??[]))],Yi=new WeakMap,Xi=e=>{let t=Yi.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=Bi(t);return n?i?a(async()=>i?Wi(e,n):Ei()):Promise.resolve(Ei()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},migrate:(t,n={})=>{if(r)return r;let o=a(async()=>{let r=await Ui(e);if(!r.ok)return r;let a=r.value??Vi(),o=i&&(n.persistenceEnabled??!0);if(!a.migration.captured){let n=await Ii(e);if(!n.ok)return n;if(!o)return{ok:!0,value:qi(a,n.value,``)};if(a=qi(a,n.value,t),!i)return{ok:!0,value:a};let r=await Wi(e,a);if(!r.ok)return r}if(!i||!(n.persistenceEnabled??!0)){let t=await Ii(e);return t.ok?{ok:!0,value:a}:t}let s=await e.read(Ci);if(!s.ok)return s;if(s.value!==null)try{let t=Gi(JSON.parse(s.value));if(!t)return{ok:!1,error:{code:`corrupt`}};if(t.claimedTransportIdentity!==a.migration.claimedTransportIdentity){let t=Ki(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Ci,t.value);if(!n.ok)return n}}catch{return{ok:!1,error:{code:`corrupt`}}}else{let t=Ki(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Ci,t.value);if(!n.ok)return n}if(a.migration.cleanupComplete)return{ok:!0,value:a};for(let t of Ji(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 Wi(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 Yi.set(e,o),o},Zi=e=>{let t=Xi(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=Bi(e);return t?n?new Promise(e=>{i.push({snapshot:t,resolve:e}),s()}):Promise.resolve(Ei()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},cancelPending:()=>{let e=i;i=[],e.forEach(({resolve:e})=>e(Di())),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(Di()))}await(r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve()),await t.setEnabled(e),await t.flush()}}},Qi=`openchamber-input-drafts`,$i=1,ea=`blobs`,ta=`blobRefs`,na=class extends Error{code;constructor(e){super(e),this.code=e}},ra=e=>({ok:!1,error:{code:e instanceof na?e.code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota-exceeded`:e instanceof DOMException&&e.name===`AbortError`?`transaction-aborted`:`transaction-failed`}}),ia=e=>{if(!(e instanceof Blob)&&!C(e))throw new na(`invalid-value`)},aa=e=>{if(!e)throw new na(`invalid-value`)},oa=(e,t)=>({id:Se(e),blobID:t,transportIdentity:e.transportIdentity,ownerKind:e.owner.kind,ownerID:e.owner.ownerID}),sa=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}`},ca=async(e,t)=>(e.fingerprint??await sa(e.value))===t,la=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)}},ua=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}},da=(e,t)=>{let n=ua(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))},fa=(e=pa())=>{let t=async(t,n)=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=await e.getBlobRef(Se(t));return!r||n!==void 0&&r.blobID!==n?!1:(await e.deleteBlobRef(r.id),await la(e),(await e.getAllBlobRefs()).some(e=>e.blobID===r.blobID)||await e.deleteBlob(r.blobID),!0)})}}catch(e){return ra(e)}};return{put:async(t,n)=>{try{aa(t),ia(n);let r=await sa(n);return await e.transaction(async e=>{let i=await e.getBlob(t);if(i&&!await ca(i,r))throw new na(`blob-id-conflict`);i||await e.putBlob({id:t,value:n,refCount:0,fingerprint:r})}),{ok:!0,value:void 0}}catch(e){return ra(e)}},putAndRetain:async(t,n,r)=>{try{aa(n),ia(r);let i=await sa(r);return await e.transaction(async e=>{let a=Se(t),o=await e.getBlobRef(a);if(o&&o.blobID!==n)throw new na(`blob-id-conflict`);let s=await e.getBlob(n);if(s&&!await ca(s,i))throw new na(`blob-id-conflict`);s||await e.putBlob({id:n,value:r,refCount:0,fingerprint:i}),o||await e.putBlobRef(oa(t,n)),await la(e)}),{ok:!0,value:void 0}}catch(e){return ra(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 ra(e)}},readReference:async t=>{try{return{ok:!0,value:(await e.transaction(e=>e.getBlobRef(Se(t))))?.blobID}}catch(e){return ra(e)}},retain:async(t,n)=>{try{return aa(n),await e.transaction(async e=>{let r=await e.getBlobRef(Se(t));if(r&&r.blobID!==n)throw new na(`blob-id-conflict`);if(!await e.getBlob(n))throw new na(`missing-blob`);r||await e.putBlobRef(oa(t,n)),await la(e)}),{ok:!0,value:void 0}}catch(e){return ra(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)da(a,n)&&t.get(i)!==a.blobID&&(await e.deleteBlobRef(i),r.push(i));for(let[r,s]of t){let t=ua(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 la(e,!0),{released:r,repaired:i,missing:a}})}}catch(e){return ra(e)}},reconcileOwnerReferences:async(t,n)=>{let r=new Map;for(let[e,i]of n)r.set(Se({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 la(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 ra(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 ra(e)}}}},pa=()=>({transaction:async e=>{let t=await ma(),n=t.transaction([ea,ta],`readwrite`),r=n.objectStore(ea),i=n.objectStore(ta),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()}}}),ma=()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(new na(`database-unavailable`));return}let n=indexedDB.open(Qi,$i),r=!1,i=()=>{r||(r=!0,t(new na(`database-unavailable`)))};n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(ea)||e.createObjectStore(ea,{keyPath:`id`}),e.objectStoreNames.contains(ta)||e.createObjectStore(ta,{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}),ha=()=>({drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:``,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),ga=e=>({version:1,drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}),_a=e=>{let t=ga(e),n=va(JSON.parse(JSON.stringify(t)));return{drafts:n.drafts,tombstones:n.tombstones,migration:n.migration,legacy:n.legacy}},va=e=>{let t=Bi(e);if(!t)throw Error(`invalid draft snapshot`);return t},ya=e=>e instanceof Map?[...e.entries()]:Object.entries(e??{}),ba=e=>typeof e==`string`?e:x(e),xa=[`session`,`draft`,`surface`],Sa=e=>({transportIdentity:e.transportIdentity,owner:{kind:e.owner.kind,ownerID:e.owner.ownerID},attachmentOccurrenceRefID:e.attachmentOccurrenceRefID}),Ca=e=>JSON.parse(JSON.stringify(e)),wa=e=>e.phase===`metadata`?{phase:`metadata`,error:{code:e.error.code}}:{phase:`blob`,error:{...e.error},...e.reference?{reference:Sa(e.reference)}:{}},Ta=e=>({status:e.status,keys:[...e.keys],errors:e.errors.map(wa),cleanupErrors:e.cleanupErrors.map(wa)}),Ea=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,Da=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&xa.includes(t[1])&&typeof t[2]==`string`&&t[0].length>0&&t[2].length>0}catch{return!1}},Oa=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:Ca(t)}]:[]),ka=e=>{let t=new Map;for(let n of Object.values(e))for(let e of Oa(n))t.set(Se(e.reference),e);return t},Aa=(e,t)=>({phase:`blob`,error:{...e},...t?{reference:Sa(t)}:{}}),ja=(e,t=[])=>({status:e,keys:t,errors:[],cleanupErrors:[]}),Ma=e=>e?.attachment.locator.kind===`blob`?e.attachment.locator.blobID:``,Na=(e,t,n={})=>{let r=ha(),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?Ta(e):e)},u=async(t=r.drafts)=>{let n=[],i=new Map([...ka(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(Sa(r.reference),r.expectedBlobID);a.ok?c.delete(t):n.push(Aa(a.error,r.reference))}return n},d=async(t,n,r,i)=>{let o=Sa(t),s=await e.releaseIfMatches(o,n);s.ok||(c.set(Se(o),{reference:Sa(o),expectedBlobID:n,generation:a,reason:i}),r.push(Aa(s.error,o)))},f=async(t,n)=>{let r=t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,i=Sa(t.reference),a=Ca(t.attachment),o=await e.readReference(i);if(!o.ok)return{acquired:!1,error:Aa(o.error,i)};if(o.value&&o.value!==r)return{acquired:!1,error:Aa({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:Aa(t.error,i)};let o=await n?.(Sa(i),Ca(a));if(o===void 0)return{acquired:!1,error:Aa({code:`runtime-value-missing`},i)};let s=await e.putAndRetain(i,r,o);return s.ok?{acquired:!0}:{acquired:!1,error:Aa(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:Aa(t.error,i)}}if(s.error.code!==`missing-blob`)return{acquired:!1,error:Aa(s.error,i)};let c=await n?.(Sa(i),Ca(a));if(c===void 0)return{acquired:!1,error:Aa({code:`runtime-value-missing`},i)};let l=await e.putAndRetain(i,r,c);return l.ok?{acquired:!0}:{acquired:!1,error:Aa(l.error,i)}};return{seed:t=>l(async()=>{if(!i)return ja(`disabled`);if(o)return{...ja(`failed`),errors:[Aa({code:`invalid-record`})]};let n;try{if(!t)n=ha();else{let e=va(JSON.parse(JSON.stringify(t)));n={drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}}}catch{return{...ja(`failed`),errors:[Aa({code:`invalid-record`})]}}let a=ka(n.drafts),s=await e.reconcileReferences(new Map([...a].map(([e,t])=>[e,Ma(t)])),{ownerKinds:xa});return s.ok?(r=n,o=!0,{...ja(`committed`),errors:s.value.missing.map(e=>Aa({code:`missing-blob`},a.get(e)?.reference))}):{...ja(`failed`),errors:[Aa(s.error)]}}),commit:e=>{let n=[...ya(e.drafts).map(([e])=>e),...(e.delete??[]).map(ba)];return i?l(async()=>{if(!o)return ja(`unseeded`,n);if(!i)return ja(`disabled`,n);let s=a,c=[],l=_a(r),p=ya(e.drafts),m=ya(e.tombstones),h=(e.delete??[]).map(ba);if(p.some(([e,t])=>!Da(e)||!Ea(t.revision))||m.some(([e,t])=>!Da(e)||!Ea(t))||h.some(e=>!Da(e))||new Set(p.map(([e])=>e)).size!==p.length||m.some(([e])=>p.some(([t])=>t===e)))return{...ja(`failed`,n),errors:[Aa({code:`invalid-record`})]};try{for(let[e,t]of p){let n=fe(t);if(!n||e!==x(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=va(ga(l));l.drafts=t.drafts,l.tombstones=t.tombstones,l.migration=t.migration,l.legacy=t.legacy}catch{return{...ja(`failed`,n),errors:[Aa({code:`invalid-record`})],cleanupErrors:c}}if(!await e.isCurrent())return ja(`stale`,n);let g=ka(r.drafts),_=ka(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,Ma(_.get(Se(e))),c,`acquire-failed`);return{...ja(`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,Ma(_.get(Se(e))),c,`stale`);return{...ja(`stale`,n),cleanupErrors:c}}if(!i||s!==a){for(let e of v.reverse())await d(e,Ma(_.get(Se(e))),c,`disabled`);return{...ja(`disabled`,n),cleanupErrors:c}}let y=await t.persist(ga(l));if(!y.ok){for(let e of v.reverse())await d(e,Ma(_.get(Se(e))),c,`metadata-failed`);return{...ja(`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{...ja(`committed`,n),cleanupErrors:c}}):Promise.resolve(Ta(ja(`disabled`,n)))},reconcile:()=>l(async()=>{if(!o)return ja(`unseeded`);if(!i)return ja(`disabled`);let t=await u(),n=new Map([...ka(r.drafts)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``])),a=await e.reconcileReferences(n,{ownerKinds:xa}),s=a.ok?a.value.missing.map(e=>Aa({code:`missing-blob`},ka(r.drafts).get(e)?.reference)):[Aa(a.error)];return{status:a.ok?`committed`:`failed`,keys:[],errors:s,cleanupErrors:t}}),retryCleanup:()=>l(async()=>({...ja(`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}}},Pa=`openchamber-composer-reference-draft`,Fa=`openchamber-pasted-text-draft`,Ia=e=>Array.from(e).length,La=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),Ra=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,za=(e,t)=>{let n=[],r=[],i=0;for(let a=0;a<Math.min(t.length,B.referenceCount);a+=1){let o=t[a];if(!(!La(o)||!Ra(o.id,B.idLength)||!Ra(o.token,B.displayLength)||typeof o.text!=`string`||o.text.length>B.pastePayloadLength||typeof o.characterCount!=`number`||!Number.isSafeInteger(o.characterCount)||o.characterCount!==Ia(o.text)||typeof o.index!=`number`||!Number.isSafeInteger(o.index)||o.index<1))for(let t=e.indexOf(o.token);t>=0&&n.length<B.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>B.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)},Ba=e=>{try{let t=JSON.parse(e);if(!La(t)||typeof t.text!=`string`)return{text:e,references:[]};if(t.type===Pa)return(t.version===2?pe(t.text,t.references):void 0)??{text:t.text,references:[]};if(t.type===Fa){let e=t.version===1&&Array.isArray(t.references)?za(t.text,t.references):[];return pe(t.text,e)??{text:t.text,references:[]}}}catch{}return{text:e,references:[]}},Va=`file://`,Ha=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(`/`)},Ua=e=>{let t=e.replace(/\\/g,`/`).trim();return t.toLowerCase().startsWith(Va)?t:`${Va}${Ha(t)}`},Wa=(e,t)=>`${e}\u0000${t}`,Ga=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)}),Ka=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)},qa=(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,Ja=e=>({version:1,key:e,revision:1,text:``,attachments:[],syntheticParts:[],mentions:[]}),Ya=(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}),Xa=((e={})=>{let t=e.sink??Pi(),n=e.repository??Xi(t),r=e.coordinator??Zi(t),i=e.blobStore??fa(),a=e.durability??Na(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,w=new Set,T=new Map,E=new Set;return Ee()((t,r)=>{let D=e=>o.set(e,(o.get(e)??0)+1),O=(...e)=>{for(let t of e)c.set(t,(c.get(t)??0)+1),l.delete(t)},k=e=>fe(e),A=()=>e.runtimeCapture?.()??{transportIdentity:u(),generation:f()},j=e=>{let t=A();return t.transportIdentity===e.transportIdentity&&t.generation===e.generation},M=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)],N=e=>new Set(M(e).map(e=>e.attachmentRefID)),ee=(e,t,n)=>{let r=N(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))}}},te=()=>e.createID?.()??ve(),ne=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 Ga(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}:{}}},P=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`},ie=(e,n)=>{let i=r(),s=_,c=n??A(),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=>w.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=>w.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&&j(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&&j(c);return(!i||n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)&&l.forEach(e=>w.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:P(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:P(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},ae=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}}))},oe=()=>{h&&clearTimeout(h),h=void 0;let e=[...m];m.clear();let t=g;return g=void 0,e.length?ie(e,t).then(()=>void 0):Promise.resolve()},se=e=>{if(!r().persistenceEnabled){w.add(e);return}m.add(e),ae([e]),!h&&(g=A(),h=setTimeout(()=>{oe()},40))},F=e=>{let t=[...e];return t.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),ie(t)},ce=(e,n,i,a=`immediate`)=>{let o=x(e),s=r().drafts[o];if(!s||i!==void 0&&s.revision!==i)return;let c=k(n(s));if(!(!c||x(c.key)!==o))return D(o),t(e=>({drafts:{...e.drafts,[o]:c},...ee(e,o,c)})),a===`deferred`?se(o):F([o]),c},I=e=>e?Ce(e):void 0,le=(e=[])=>JSON.parse(JSON.stringify(e)),L=(e,t,n,r=!1,i=!1)=>({status:e,...I(n)?{record:I(n)}:{},errors:le(t?.errors),cleanupErrors:le(t?.cleanupErrors),current:r,durable:i}),ue=(e,t,n,r,i=!1,a=!1)=>({status:e,errors:le(t?.errors),cleanupErrors:le(t?.cleanupErrors),current:i,durable:a,source:I(n),destination:I(r)}),de=e=>e.status,pe=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,R=(e,...t)=>{let n={...e};for(let e of t)delete n[e];return n},me=async(e,t)=>{let n={},i=r().draftAttachmentViews[x(e.key)]??{};for(let r of M(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`&&C(i[r.attachmentRefID].dataUrl)?i[r.attachmentRefID].dataUrl:void 0);if(r.locator.kind===`url`&&e!==void 0&&(e!==r.locator.url||!C(e))||r.locator.kind===`blob`&&e!==void 0&&!(e instanceof Blob)&&!(typeof e==`string`&&C(e)))return;e!==void 0&&(n[r.attachmentRefID]=await ne(r,e))}return n},z=e=>e?x(e):`legacy-unowned`,he=e=>T.get(e)??0,ge=e=>{T.set(e,he(e)+1)},_e=(e,n,r=!1)=>{r&&ge(e),t(t=>{let r=n(t.attachmentBuckets[e]??[]);return{attachmentBuckets:{...t.attachmentBuckets,[e]:r},...z(t.activeAttachmentDraft)===e?{attachedFiles:r}:{}}})};return{drafts:{},tombstones:{},draftHydration:{},draftPersistence:{},draftAttachmentViews:{},draftMissingAttachmentRefIDs:{},draftAttachmentPersistence:{},persistenceEnabled:e.persistenceEnabled??!0,legacyDraftEntries:{},migration:{complete:!1,claimedTransportIdentity:``},captureDraftRuntime:()=>A(),commitDraftSnapshot:async e=>{let n=x(e.key),i=e.runtime;if(i.transportIdentity!==e.key.transportIdentity||!j(i))return L(`stale`,void 0);let s=r(),c=s.drafts[n],l=s.tombstones[n]??0;if(e.expectedRevision!==`absent`&&!pe(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return L(`failed`,void 0);if(e.expectedRevision===`absent`?c:c?.revision!==e.expectedRevision)return L(`conflict`,void 0,c);let u=e.expectedRevision===`absent`?l+1:e.expectedRevision+1;if(!pe(u))return L(`failed`,void 0);let d=k({version:1,key:e.key,revision:u,...e.snapshot});if(!d)return L(`failed`,void 0);let f=await me(d,e.values);if(!f)return L(`failed`,void 0);let p=o.get(n)??0,m=c?.revision??l,h=await a.commit({drafts:{[n]:d},isCurrent:()=>j(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 L(de(h),h,c);let g=(o.get(n)??0)===p&&(r().drafts[n]?.revision??r().tombstones[n]??0)===m,_=j(i);if(!g)return _||t(e=>({draftAttachmentViews:R(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:R(e.draftMissingAttachmentRefIDs,n),draftHydration:R(e.draftHydration,n),draftPersistence:R(e.draftPersistence,n),draftAttachmentPersistence:R(e.draftAttachmentPersistence,n)})),L(`stale`,h,d,!1,!0);let v=Ce(d);return v?(D(n),O(n),t(e=>({drafts:{...e.drafts,[n]:v},tombstones:(()=>{let t={...e.tombstones};return delete t[n],t})(),draftAttachmentViews:_?{...e.draftAttachmentViews,[n]:f}:R(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:_?{...e.draftMissingAttachmentRefIDs,[n]:[]}:R(e.draftMissingAttachmentRefIDs,n),draftHydration:_?e.draftHydration:R(e.draftHydration,n),draftPersistence:_?{...e.draftPersistence,[n]:{status:`saved`,revision:v.revision}}:R(e.draftPersistence,n),draftAttachmentPersistence:_?{...e.draftAttachmentPersistence,[n]:h.cleanupErrors.length?{status:`error`,revision:v.revision,errorCode:P(h)}:{status:`saved`,revision:v.revision}}:R(e.draftAttachmentPersistence,n)})),L(_?`committed`:`stale`,h,v,_,!0)):L(`failed`,h)},deleteDraftSnapshot:async e=>{let n=x(e.key),i=e.runtime;if(i.transportIdentity!==e.key.transportIdentity||!j(i))return L(`stale`,void 0);let s=r(),c=s.drafts[n],l=s.tombstones[n]??0;if(!pe(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return L(`failed`,void 0);if(!c||c.revision!==e.expectedRevision)return L(`conflict`,void 0);let u=e.expectedRevision+1;if(!pe(u))return L(`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:()=>j(i)&&(o.get(n)??0)===d&&r().drafts[n]?.revision===f&&(r().tombstones[n]??0)===l});if(m.status!==`committed`)return L(de(m),m);let h=(o.get(n)??0)===d&&r().drafts[n]?.revision===f&&(r().tombstones[n]??0)===l,g=j(i);return h?(D(n),O(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:R(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:R(e.draftMissingAttachmentRefIDs,n),draftHydration:R(e.draftHydration,n),draftPersistence:R(e.draftPersistence,n),draftAttachmentPersistence:R(e.draftAttachmentPersistence,n)}}),L(g?`committed`:`stale`,m,void 0,g,!0)):(g||t(e=>({draftAttachmentViews:R(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:R(e.draftMissingAttachmentRefIDs,n),draftHydration:R(e.draftHydration,n),draftPersistence:R(e.draftPersistence,n),draftAttachmentPersistence:R(e.draftAttachmentPersistence,n)})),L(`stale`,m,void 0,!1,!0))},finalizeDraftOwnership:async e=>{let n=x(e.source),i=x(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||!j(s))return ue(`stale`,void 0,l,u);if(!pe(e.expectedSourceRevision))return ue(`failed`,void 0,l,u);if(!l||l.revision!==e.expectedSourceRevision||u)return ue(`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 ue(`failed`,void 0,l,u);let h=Math.max(l.revision+1,m+1);if(!pe(h))return ue(`failed`,void 0,l,u);let g=k(e.disposition===`preserve`?{...l,key:e.destination,revision:h}:{...Ja(e.destination),revision:h});if(!g)return ue(`failed`,void 0,l,u);let _=await a.commit({drafts:{[i]:g},tombstones:{[n]:Math.max(p,h)},delete:[n],isCurrent:()=>j(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 ue(de(_),_,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=j(s),S=Ce(g);if(!S)return ue(`failed`,_,l,u);if(b&&!v&&!y)return ue(`stale`,_,l,g,!1,!0);v&&(D(n),O(n)),y&&(D(i),O(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]=S,delete a[i]);let o=t.draftHydration,s=t.draftPersistence,c=t.draftAttachmentViews,l=t.draftMissingAttachmentRefIDs,u=t.draftAttachmentPersistence;return b?(v&&(o=R(o,n),s=R(s,n),c=R(c,n),l=R(l,n),u=R(u,n)),y&&(o=R(o,i),s={...R(s,i),[i]:{status:`saved`,revision:S.revision}},c=R(c,i),l=R(l,i),u={...R(u,i),[i]:_.cleanupErrors.length?{status:`error`,revision:S.revision,errorCode:P(_)}:{status:`saved`,revision:S.revision}},b&&v&&e.disposition===`preserve`&&(c={...c,[i]:t.draftAttachmentViews[n]??{}},l={...l,[i]:t.draftMissingAttachmentRefIDs[n]??[]}))):(o=R(o,n,i),s=R(s,n,i),c=R(c,n,i),l=R(l,n,i),u=R(u,n,i)),{drafts:r,tombstones:a,draftHydration:o,draftPersistence:s,draftAttachmentViews:c,draftMissingAttachmentRefIDs:l,draftAttachmentPersistence:u}});let C=v&&y&&b;return ue(C?`committed`:`stale`,_,l,g,C,!0)},flushDraftPersistence:async()=>{for(await oe();p.size;)await Promise.all([...p]);await a.flush()},ensureDraft:e=>{let n=x(e),i=r().drafts[n];if(i)return i;let a=k({...Ja(e),revision:(r().tombstones[n]??0)+1});if(!a)throw Error(`Invalid empty draft`);return D(n),t(e=>({drafts:{...e.drafts,[n]:a}})),F([n]),a},getDraft:e=>r().drafts[x(e)],setDraftText:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return ce(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 ce(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)=>ce(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)=>ce(e,e=>({...e,revision:e.revision+1,mentions:t})),addDraftMention:(e,t)=>ce(e,e=>({...e,revision:e.revision+1,mentions:[...e.mentions,t]})),removeDraftMention:(e,t)=>ce(e,e=>({...e,revision:e.revision+1,mentions:e.mentions.filter(e=>e.value!==t)})),setDraftSyntheticParts:(e,t)=>ce(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 ce(e,e=>({...e,revision:e.revision+1,syntheticParts:a}),n.revision)?i:null},setDraftAttachments:(e,t)=>ce(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=x(e),c=o.get(s)??0,l=r().tombstones[s]??0,u=A(),d=n instanceof File?n:new File([n],i.filename??`attachment`,{type:n.type}),f;try{f=await Ga(d)}catch{let e=r().drafts[s];if(j(u)&&(r().tombstones[s]??0)===l&&(e?x(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(!j(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(x(m.key)!==s||i.partID&&!m.syntheticParts.some(e=>e.partID===i.partID))return;let h=i.attachmentID??te(),g=i.partID?re(i.partID,h):xe(h),_=te(),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=k(y);if(!b)return;D(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 ie([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??te(),o=n.partID?re(n.partID,a):xe(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=k(c);if(!l)return;let u=x(e);D(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}}})),ie([u]),s},getDraftAttachmentViews:e=>{let t=x(e),n=r().drafts[t],i=r().draftAttachmentViews[t]??{};return n?M(n).flatMap(e=>i[e.attachmentRefID]?[i[e.attachmentRefID]]:[]):[]},retryDraftAttachmentPersistence:async e=>{let n=x(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:P(i)}}})),await ie([n])},hydrateDraftAttachments:async e=>{let n=x(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=A(),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 M(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&&j(u)&&r().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}continue}try{a[f.attachmentRefID]=await ne(f,p.value)}catch{c.get(n)===s&&_===d&&j(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&&j(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=x(e),a=r().drafts[i],o=a&&M(a).find(e=>e.attachmentRefID===n);if(!a||!o)return!1;let s=ht(o)?xt(a.text,[o.filename],a.mentions,a.composerReferences):void 0,c=k({...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?(D(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 ie([i])).status===`committed`):!1},replaceDraftAttachment:async(e,n,i,a)=>{let o=x(e),s=r().drafts[o],c=s&&M(s).find(e=>e.attachmentRefID===n);if(!s||!c)return;let l=A(),u=r().tombstones[o]??0,d=i instanceof File?i:new File([i],a?.filename??`attachment`,{type:i.type}),f;try{f=await Ga(d)}catch{let e=r().drafts[o],i=e&&M(e).find(e=>e.attachmentRefID===n);j(l)&&(r().tombstones[o]??0)===u&&e&&i?.attachmentID===c.attachmentID&&i.attachmentRefID===c.attachmentRefID&&x(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&&M(p).find(e=>e.attachmentRefID===n);if(!j(l)||(r().tombstones[o]??0)!==u||!p||m?.attachmentID!==c.attachmentID||m.attachmentRefID!==c.attachmentRefID||x(p.key)!==o)return;let h=p.syntheticParts.find(e=>e.attachments.some(e=>e.attachmentRefID===n)),g=te(),_={attachmentID:g,attachmentRefID:h?re(h.partID,g):xe(g),filename:a?.filename??d.name,mimeType:d.type,size:d.size,locator:{kind:`blob`,blobID:te()},source:a?.source??`local`,...a?.vscodePath?{vscodePath:a.vscodePath}:{},...a?.vscodeSource?{vscodeSource:a.vscodeSource}:{}},v=k({...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;D(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 ie([o])).status===`committed`?_:void 0},replaceDraftRootAttachments:async(e,t)=>{let n=x(e),i=A();if(i.transportIdentity!==e.transportIdentity||!j(i))return L(`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=xe(t);if(e.source===`server`&&e.dataUrl&&C(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&&C(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=te();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=x(e),i=A();if(i.transportIdentity!==e.transportIdentity||!j(i))return L(`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=xe(t);if(e.source===`server`&&e.dataUrl&&C(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&&C(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=te();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`&&C(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=x(e),a=r().drafts[i];if(!a||n!==void 0&&a.revision!==n)return!1;let o=a.revision+1;return pe(o)?(D(i),O(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}}),ie([i]),!0):!1},moveDraft:(e,n,i)=>{let a=x(e),o=x(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=k({...s,key:n,revision:s.revision+1});if(c)return D(a),D(o),O(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)}}),ie([a,o]),c},moveDraftWithAttachments:async(e,n,i)=>{let a=x(e),o=x(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=k({...s,key:n,revision:s.revision+1});if(c)return D(a),D(o),O(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 ie([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=A();b||await r().hydrateDraftMetadata(n.transportIdentity);let i=new Set([...Object.keys(r().drafts),...Object.keys(r().tombstones),...w]);w.clear(),await ie(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=A();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||!j(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||!j(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(),C={...g.drafts},T={...g.tombstones},E=new Set;for(let[e,t]of Object.entries(h.tombstones))(o.get(e)??0)===(u.get(e)??0)&&(t>=(T[e]??0)&&(T[e]=t,(C[e]?.revision??0)<=t&&delete C[e]),E.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=C[t],i=k(n);i&&(!r||r.revision<i.revision)&&(T[t]??0)<i.revision&&(C[t]=i),E.add(t)}let D=v===d?{...h.legacy.entries}:{...g.legacyDraftEntries};if(h.migration.claimedTransportIdentity===e&&v===d)for(let[t,n]of Object.entries(D)){let r={transportIdentity:e,owner:{kind:`session`,ownerID:t}},i=x(r),a=Ba(n.text),s=k({...Ja(r),text:a.text,composerReferences:a.references,mentions:Ya(a.text,n.mentions)});s&&!C[i]&&!T[i]&&(o.get(i)??0)===(u.get(i)??0)&&(C[i]=s),delete D[t],E.add(i)}t(e=>({drafts:C,tombstones:T,legacyNewDraft:v===d&&!y?h.legacy.new:e.legacyNewDraft,legacyDraftEntries:D,migration:v===d?h.migration:e.migration,draftHydration:{...e.draftHydration,...Object.fromEntries([...E].map(e=>[e,`ready`]))}}));let O=[...w];for(let e of O)E.add(e);w.clear();try{await ie(E),await a.flush()}catch{return!1}return s.get(e)===i&&_===l&&j(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=x(e),a=r().drafts[i];if(v+=1,y=!0,a||r().tombstones[i])return t({legacyNewDraft:void 0}),ie([i]),a;let o=Ba(n.text),s=k({...Ja(e),text:o.text,composerReferences:o.references,mentions:Ya(o.text,n.mentions)});if(s)return D(i),t(e=>({drafts:{...e.drafts,[i]:s},legacyNewDraft:void 0})),ie([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=z(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=z(t),i=he(n),a=await r().addDraftLocalAttachment(t,e);i!==he(n)&&a&&r().removeDraftAttachment(t,a.attachmentRefID);return}let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,i=z(null),a=he(i),o;try{o=await Ga(e)}catch{return}if(a!==he(i))return;let s={id:n,file:e,dataUrl:o,mimeType:e.type,filename:e.name,size:e.size,source:`local`};_e(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}_e(z(null),t=>t.filter(t=>t.id!==e))},setAttachedFiles:e=>{_e(z(r().activeAttachmentDraft),()=>e,!0)},clearAttachedFiles:()=>{let e=r().activeAttachmentDraft;if(e){ge(z(e)),r().getDraft(e)||r().ensureDraft(e),r().setDraftAttachments(e,[]);return}_e(z(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=Ua(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=x(e),a=he(i),o=`${i}\u0000${Wa(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)||E.has(o))){E.add(o);try{let o=await r().addDraftLocalAttachment(e,n,{source:`vscode`,vscodePath:t,vscodeSource:`selection`});a!==he(i)&&o&&r().removeDraftAttachment(e,o.attachmentRefID)}finally{E.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=z(null);if((r().attachmentBuckets[o]??[]).some(t=>t.source===`vscode`&&t.vscodeSource===`file`&&(t.vscodePath||``)===e))return;let s=Ua(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`};_e(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=z(null),o=he(a),s=`${a}\u0000${Wa(e,t.name)}`;if((r().attachmentBuckets[a]??[]).some(n=>n.source===`vscode`&&n.vscodeSource===`selection`&&n.filename===t.name&&n.vscodePath===e)||E.has(s))return;E.add(s);let c;try{c=await Ga(t)}catch{return}finally{E.delete(s)}if(o!==he(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`};_e(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=>{qa(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=x(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||x(c)!==a)return;await r().addDraftLocalAttachment(i,s)}catch{}})();return}if(!C(e))return;r().addDraftDurableAttachment(i,{filename:n,mimeType:t,size:Ka(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:Ka(e),source:`local`,serverPath:e};_e(z(null),e=>[...e,a])}}})})(),Za=new Set;function Qa(e){return Za.add(e),()=>{Za.delete(e)}}function $a(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 Za)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 eo(e,t){return e.scopes.includes(`all`)||e.scopes.includes(t)}var to=`Updating OpenCode configuration...`,no=0,ro=to,io=new Set;function ao(){let e={isUpdating:no>0,message:ro};io.forEach(t=>t(e))}function oo(e){no+=1,no===1?(ro=e||to,ao()):e&&(ro=e,ao())}function so(){no!==0&&(--no,no===0&&(ro=to,ao()))}function co(e){ro===e&&no>0||(ro=e,no>0&&ao())}function lo(e){return io.add(e),e({isUpdating:no>0,message:ro}),()=>{io.delete(e)}}function uo(){return{isUpdating:no>0,message:ro}}var fo=or(),po=`projects`,mo=`activeProjectId`,ho=`projects:manualOrder`,go=(e,t)=>{let n=e.trim();return!n.startsWith(`~`)||!t?n:n===`~`?t:n.startsWith(`~/`)||n.startsWith(`~\\`)?`${t}${n.slice(1)}`:n},_o=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,vo=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},yo=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t&&_o.test(t)?t.toLowerCase():null},bo=e=>{let t=e.trim();if(!t)return``;let n=go(t,k(`homeDirectory`,{storage:fo})||Be.getState().homeDirectory||``).replace(/\\/g,`/`);return n===`/`?`/`:n.length>1?n.replace(/\/+$/,``):n},xo=e=>{let t=bo(e);if(!t||t===`/`)return`Root`;let n=t.split(`/`).filter(Boolean);return n[n.length-1]||t},So=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}},Co=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},wo=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)}),To=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=bo(a);if(!o)continue;let s=ue(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=So(e.iconImage);t&&(c.iconImage=t)}typeof e.color==`string`&&e.color.trim().length>0&&(c.color=e.color.trim());let l=vo(e.defaultModel);if(l&&(c.defaultModel=l),e.iconBackground===null)c.iconBackground=null;else{let t=yo(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},Eo=()=>{try{let e=k(po,{storage:fo});return e?To(JSON.parse(e)):[]}catch{return[]}},Do=()=>{if(!D())return null;let e=g().trim().replace(/\/+$/,``);return e?fo.getItem(`${po}:${encodeURIComponent(e)}:manualOrder`):null},Oo=()=>{try{let e=k(ho,{storage:fo})||Do();if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}},ko=()=>{try{let e=k(mo,{storage:fo});if(typeof e==`string`&&e.trim().length>0)return e.trim()}catch{return null}return null},Ao=(e,t)=>{try{Te(po,JSON.stringify(e),{storage:fo})}catch{}try{t?Te(mo,t,{storage:fo}):te(mo,{storage:fo})}catch{}},jo=(e,t,n)=>{Ao(e,t),n&&Mo(n),_e({projects:e,activeProjectId:t??void 0})},Mo=e=>{try{Te(ho,JSON.stringify(e),{storage:fo})}catch{}},No=Eo(),Po=(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},Fo=e=>{let t=[],n=new Set;for(let r of e){let e=bo(r.path);!e||n.has(e)||(n.add(e),t.push({name:r.name?.trim(),path:e}))}return t},Io=(e,t,n,r)=>{let i=bo(e.path);if(!i)return null;let a=ue(i),o=r===i;return{...t,id:a,path:i,label:xo(i),addedAt:t?.addedAt??n,lastOpenedAt:o?n:t?.lastOpenedAt??n}},Lo=()=>{if(typeof window>`u`||!S()?.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 Fo(t);let n=e?.workspaceFolder;return typeof n!=`string`||n.trim().length===0?null:Fo([{path:n}])},Ro=(e,t,n)=>{let r=Fo(e),i=n?bo(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=>Io(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 yt(),{projects:s,activeProjectId:l,activeProject:c??s[0]??null}},zo=(e,t)=>e===t?!0:!e||!t?e===t:e.mime===t.mime&&e.updatedAt===t.updatedAt&&e.source===t.source,Bo=(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&&zo(e.iconImage,r.iconImage):!1}),Vo=(()=>{let e=Lo();if(!e)return null;let t=Ro(e,[]);return t?{projects:t.projects,activeProjectId:t.activeProjectId}:null})(),Ho=typeof window>`u`?!1:!!S()?.runtime?.isVSCode,Uo=Vo?.projects??(Ho?[]:No),Wo=Vo?.activeProjectId??(Ho?null:ko()),Go=Uo.some(e=>e.id===Wo)?Wo:Uo[0]?.id??null;Vo&&Ao(Uo,Go);var Ko=Ee()(ke((e,t)=>({projects:Uo,activeProjectId:Go,manualProjectOrder:Oo(),validateProjectPath:e=>{if(typeof e!=`string`||e.trim().length===0)return{ok:!1,reason:`Provide a directory path.`};let t=bo(e);return t?{ok:!0,normalizedPath:t}:{ok:!1,reason:`Directory path cannot be empty.`}},addProject:(n,r)=>{if(Ho)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()||xo(o),u={id:ue(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)]}),yt(),t().setActiveProject(u.id),t().discoverProjectIcon(u.id),u},removeProject:n=>{if(Ho)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}),jo(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&&(V.setDirectory(e.path),Be.getState().setDirectory(e.path,{showOverlay:!1}))}else Be.getState().goHome()},setActiveProject:n=>{if(Ho)return;let{projects:r,activeProjectId:i}=t();if(i===n)return;let a=r.find(e=>e.id===n);a&&(e({activeProjectId:n}),jo(r,n,t().manualProjectOrder),V.setDirectory(a.path),Be.getState().setDirectory(a.path,{showOverlay:!1}))},setActiveProjectIdOnly:n=>{if(Ho)return;let{projects:r,activeProjectId:i}=t();i!==n&&r.find(e=>e.id===n)&&(e({activeProjectId:n}),jo(r,n,t().manualProjectOrder))},renameProject:(n,r)=>{if(Ho)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}),jo(s,o,t().manualProjectOrder)},updateProjectMeta:(n,r)=>{if(Ho)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=yo(r.iconBackground)),r.defaultModel!==void 0){let e=vo(r.defaultModel);e?t.defaultModel=e:delete t.defaultModel}return t});e({projects:o}),jo(o,a,t().manualProjectOrder)},uploadProjectIcon:async(e,n)=>{if(Ho)return{ok:!1,error:`Custom icons are not supported in this runtime`};let r=Co(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 wo(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(Ho)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(Ho)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(Ho)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}),jo(o,a,c)},reorderProjectsById:(n,r)=>{if(Ho)return;let{projects:i,activeProjectId:a}=t(),o=Po(i,n,r);if(o===i)return;let s=o.map(e=>e.id);e({projects:o,manualProjectOrder:s}),jo(o,a,s)},moveProjectToTop:n=>{if(Ho)return;let{projects:r,activeProjectId:i,manualProjectOrder:a}=t(),o=r.findIndex(e=>e.id===n);if(o===-1)return;let s=a.indexOf(n),c=o>0,l=a.length>0&&s!==0;if(!c&&!l)return;let u=c?(()=>{let e=[...r],[t]=e.splice(o,1);return e.unshift(t),e})():r,d=l?[n,...a.filter(e=>e!==n)]:a;(u!==r||d!==a)&&(e({projects:u,manualProjectOrder:d}),jo(u,i,d))},resetForRuntimeSwitch:()=>{if(Ho)return;let t=Eo(),n=ko(),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:Oo().filter(e=>i.has(e))})},synchronizeFromSettings:n=>{if(Ho)return;let r=To(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}),Ao(a.projects,i),Mo(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}),Ao(r,i),Mo(l),i){let e=r.find(e=>e.id===i);e&&(V.setDirectory(e.path),Be.getState().setDirectory(e.path,{showOverlay:!1}))}},syncVSCodeWorkspaceFolders:(n,r)=>{if(!Ho)return null;let i=t(),a=i.activeProjectId?i.projects.find(e=>e.id===i.activeProjectId)??null:null,o=r??a?.path??null,s=Ro(n,i.projects,o);if(!s)return n.length===0&&!r&&i.projects.length>0&&(e({projects:[],activeProjectId:null}),Ao([],null)),null;let c=!Bo(i.projects,s.projects),l=i.activeProjectId!==s.activeProjectId;return(c||l)&&(e({projects:s.projects,activeProjectId:s.activeProjectId}),Ao(s.projects,s.activeProjectId)),s.activeProject&&(V.setDirectory(s.activeProject.path),Be.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`&&Ko.getState().synchronizeFromSettings(t)});var G=sr(),qo=e=>e?.trim()||null,Jo=()=>{let e=Ko.getState().getActiveProject?.();return qo(e?.path)??qo(V.getDirectory())},Yo=(e,t=u())=>I.commands.list(e,t),Xo=(e=Jo(),t=u())=>{let n=qo(e);return{queryKey:Yo(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}},Zo=e=>{let t=(0,G.c)(3),n=e===void 0?{}:e,r=Ko(es),i=qo(n.directory)??qo(r)??qo(V.getDirectory()),a=n.enabled!==!1&&!!i,o=Xo(i),s;return t[0]!==a||t[1]!==o?(s={...o,enabled:a},t[0]=a,t[1]=o,t[2]=s):s=t[2],br(s)},Qo=(e=Jo(),t=u())=>F.getQueryData(Yo(qo(e),t))??[],$o=async(e,t,n)=>{let r=qo(t);if(u()!==n)return e.getQueryData(Yo(r,n))??[];let i=Xo(r,n);return e.fetchQuery({...i,staleTime:0})};function es(e){return e.getActiveProject?.()?.path??null}var ts=200,ns=500,rs=512,is=1024,as=64,os=100,ss=100,cs=new Set([`__proto__`,`prototype`,`constructor`]),ls=new Set([`text`,`audio`,`image`,`video`,`pdf`]),us=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},ds=e=>typeof e==`object`&&e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype?e:void 0,fs=e=>{if(typeof e==`string`)return e.length>0&&e.length<=rs&&e.trim()===e&&!us(e)&&!cs.has(e)?e:void 0},ps=e=>typeof e==`string`&&e.length>0&&e.length<=is&&e.trim()===e&&!us(e)?e:void 0,ms=e=>typeof e==`string`&&e.length>0&&e.length<=as&&e.trim()===e&&!us(e)?e:void 0,hs=e=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=1e9?e:void 0,gs=e=>{let t=ds(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))!ls.has(e)||typeof r!=`boolean`||(n[e]=r);return Object.keys(n).length?n:void 0},_s=e=>{if(!Array.isArray(e))return;let t={};for(let n of e)typeof n!=`string`||!ls.has(n)||(t[n]=!0);return Object.keys(t).length?t:void 0},vs=e=>{let t=ds(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]);n.toolcall===void 0&&typeof t.tools==`boolean`&&(n.toolcall=t.tools);let r=Array.isArray(t.input)?_s(t.input):gs(t.input),i=Array.isArray(t.output)?_s(t.output):gs(t.output);return r&&(n.input=r),i&&(n.output=i),Object.keys(n).length?n:void 0},ys=e=>ds(Array.isArray(e)?e.find(e=>ds(e)&&!ds(e.tier))??e.find(e=>ds(e)):e),bs=e=>{if(Array.isArray(e))return e.map(e=>{if(typeof e==`string`)return e;let t=ds(e);return typeof t?.id==`string`?t.id:void 0});let t=ds(e);return t?Object.keys(t):null},xs=e=>{let t=ds(e),n=fs(t?.id),r=ps(t?.name);if(!t||!n||!r)return{partial:!0};let i={id:n,name:r},a=!1,o=vs(t.capabilities);o&&(i.capabilities=o);let s=ys(t.cost);if(s){let e={},t=hs(s.input);t!==void 0&&(e.input=t);let n=hs(s.output);n!==void 0&&(e.output=n);let r=ds(s.cache);if(r){let t={},n=hs(r.read);n!==void 0&&(t.read=n);let i=hs(r.write);i!==void 0&&(t.write=i),Object.keys(t).length&&(e.cache=t)}Object.keys(e).length&&(i.cost=e)}let c=ds(t.limit);if(c){let e={},t=hs(c.context);t!==void 0&&(e.context=t);let n=hs(c.output);n!==void 0&&(e.output=n),Object.keys(e).length&&(i.limit=e)}let l=ms(t.release_date);l&&(i.release_date=l);let u=bs(t.variants);if(u){let e={},n=ds(t.variants);for(let[t,r]of u.entries()){if(t>=ss){a=!0;break}let i=fs(r);!i||Object.prototype.hasOwnProperty.call(e,i)||n&&!ds(n[i])||(e[i]={})}Object.keys(e).length&&(i.variants=e)}return{value:i,partial:a}},Ss=e=>{let t=ds(e);if(!t||t.schemaVersion!==1||!Array.isArray(t.providers)||!ds(t.default)||typeof t.partial!=`boolean`)throw Error(`Invalid provider catalog response`);let n=[],r=new Set,i=t.providers.length>ts;for(let[e,a]of t.providers.entries()){if(e>=ts)continue;let t=ds(a),o=fs(t?.id),s=ps(t?.name),c=ds(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>=ns||!fs(t)||Object.prototype.hasOwnProperty.call(l,t)){i=!0;continue}let r=xs(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=ds(t.default),o={};for(let[e,[t,n]]of Object.entries(a).entries()){let r=fs(t),a=fs(n);if(e>=os||!r||!a){i=!0;continue}o[r]=a}return{schemaVersion:1,providers:n,default:o,partial:t.partial||i}},Cs=e=>(t=>e(t.state.data)?1/0:0),ws=e=>{let t=e;return!!(t&&t.providers.length>0)},Ts=e=>{if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},Es=e=>e?{location:{directory:e}}:void 0,Ds=async(e,t)=>{let n=V.getSdkClient(),r=Es(e),i={signal:t},[a,o,s]=await Promise.all([n.provider.list(r,i),n.model.list(r,i),n.config.get(r,i)]);if(!Array.isArray(a.data)||!Array.isArray(o.data)||!Array.isArray(s))throw Error(`v2 provider catalog request failed`);let c=new Map;for(let e of o.data){let t=typeof e?.providerID==`string`?e.providerID:``,n=typeof e?.id==`string`&&e.id?e.id:typeof e?.modelID==`string`?e.modelID:``,r=typeof e?.name==`string`?e.name:n;if(!t||!n||!r)continue;let i=c.get(t)??{},a={id:n,name:r};e.capabilities&&(a.capabilities=e.capabilities),e.cost&&typeof e.cost==`object`&&(a.cost=e.cost),e.limit&&typeof e.limit==`object`&&(a.limit=e.limit),e.variants&&typeof e.variants==`object`&&(a.variants=e.variants);let o=e.time&&typeof e.time==`object`?e.time.released:void 0;typeof o==`number`&&Number.isFinite(o)&&(a.release_date=new Date(o).toISOString().slice(0,10)),i[n]=a,c.set(t,i)}let l={};for(let e of s){let t=e?.type===`document`?e.info?.model:void 0;if(t&&typeof t==`object`&&!Array.isArray(t)){let e=typeof t.providerID==`string`?t.providerID:``,n=typeof t.model==`string`?t.model:``;e&&n&&(l[e]=n)}}return{schemaVersion:1,providers:a.data.map(e=>({id:e.id,name:e.name,models:c.get(e.id)??{}})),default:l,partial:!1}},Os=(e,t=u())=>{let n=Ts(e);return{queryKey:I.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=Ss(await r.json());else{if(r.status!==404&&r.status!==501)throw Error(`Provider catalog request failed (${r.status})`);i=Ss(await Ds(n,e))}let a=F.getQueryData(I.configCatalog.providers(n,t));if(i.partial&&a&&!a.partial)throw Error(`Partial provider catalog refresh retained the complete snapshot`);return i},staleTime:Cs(ws),gcTime:1/0,retry:2,retryDelay:100}},ks=(e,t=u())=>{let n=Ts(e);return{queryKey:I.agents.raw(n,t),queryFn:({signal:e})=>V.listAgents(n,e),staleTime:Cs(e=>Array.isArray(e)&&e.length>0),gcTime:1/0,retry:2,retryDelay:100}},As=(e,t,n=u())=>{if(t.providerCatalogPartial===!0)return;let r=Os(e,n);if(F.getQueryData(r.queryKey)===void 0)try{let e=Ss({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;F.setQueryData(r.queryKey,e)}catch{}},js=(e,t=u())=>F.fetchQuery(Os(e,t)),Ms=(e,t=u())=>F.fetchQuery(ks(e,t)),Ns=async(e,t=u())=>{let n=Os(e,t);return await F.invalidateQueries({queryKey:n.queryKey,exact:!0}),F.fetchQuery(n)},Ps=async(e,t=u())=>{let n=ks(e,t);return await F.invalidateQueries({queryKey:n.queryKey,exact:!0}),F.fetchQuery(n)},Fs=(e,t=u())=>F.invalidateQueries({queryKey:Os(e,t).queryKey,exact:!0}),Is=e=>e?.trim()||null,Ls=(e,t=u())=>I.agents.list(e,t),Rs=(e,t=u())=>I.providers.list(e,t);function zs(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 Bs=(e=Jo(),t=u())=>{let n=Is(e);return{queryKey:Ls(n,t),queryFn:async({signal:e})=>{let r=await F.fetchQuery(ks(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(),o=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=zs(t.sources?.md?.path),i=n===`project`||n===`user`?{...e,scope:n,group:r}:{...e,group:r};return t.sources?.document?{...i,document:t.sources.document}:i}),s=new Set(o.map(e=>e.name)),c=(a.disabled??[]).flatMap(e=>{if(typeof e.name!=`string`||!e.name.trim()||s.has(e.name))return[];let t=e.mode===`primary`||e.mode===`subagent`||e.mode===`all`?e.mode:`primary`,n=e.scope===`project`||e.scope===`user`?e.scope:void 0;return[{id:e.name,name:e.name,displayName:e.name,mode:t,hidden:!1,permissions:[],request:{settings:{},headers:{},body:{}},description:typeof e.description==`string`?e.description:void 0,disabledOverride:!0,...n?{scope:n}:{}}]});return[...o,...c]},retry:2,staleTime:(e=>{let t=e.state.data;return t&&t.length>0?1/0:0}),gcTime:1/0}},Vs=(e,t=u())=>{let n=Is(e);return{queryKey:Rs(n,t),queryFn:async()=>{let e=await V.getProvidersForConfig(n);return(Array.isArray(e.providers)?e.providers:[]).map(e=>({...e,models:Object.values(e.models??{})}))},retry:2}},Hs=e=>{let t=(0,G.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=Ko(Ks),a;t[2]===i?a=t[3]:(a=Bs(Is(i)??Is(V.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],br(o)},Us=(e,t)=>{let n=(0,G.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=Vs(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],br(o)},Ws=(e=Jo(),t=u())=>F.getQueryData(Ls(Is(e),t))??[],Gs=async(e,t,n)=>{let r=Is(t);if(u()!==n)return e.getQueryData(Ls(r,n))??[];let i=Bs(r,n);return await e.invalidateQueries({queryKey:i.queryKey,exact:!0}),e.fetchQuery(i)};function Ks(e){return e.getActiveProject?.()?.path??null}var qs=[{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`}],Js=e=>e?.trim()||null,Ys=()=>{let e=Ko.getState().getActiveProject?.();return Js(e?.path)??Js(V.getDirectory())},Xs=(e,t=u())=>I.skillsCatalog.sources(e,t),Zs=(e,t,n=u())=>I.skillsCatalog.source(e,t,n),Qs=new Map,$s=(e=Ys(),t=u(),n=!1)=>{let r=Js(e);return{queryKey:Xs(r,t),queryFn:({signal:e})=>lc(r,n,e),staleTime:5e3,retry:2}},ec=(e,t,n=u(),r=!1)=>{let i=Js(e);return gr({queryKey:Zs(i,t,n),queryFn:({signal:e,pageParam:n})=>uc(i,t,n,r,e),initialPageParam:null,getNextPageParam:(e,t)=>dc(e,t),staleTime:5e3,retry:2})},tc=e=>{let t=(0,G.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=Ko(mc),a;t[2]===i?a=t[3]:(a=$s(Js(i)??Js(V.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],br(o)},nc=(e,t)=>{let n=(0,G.c)(8),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a=Ko(hc),o;n[2]!==a||n[3]!==e?(o=ec(Js(a)??Js(V.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],xr(c)},rc=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())},ic=(e=F,t=Ys(),n=u())=>e.getQueryData(Xs(Js(t),n))??qs,ac=(e=F,t,n,r=u())=>e.getQueryData(Zs(Js(t),n,r)),oc=async(e,t,n)=>{let r=Js(t);return u()===n?e.fetchQuery({...$s(r,n,!0),staleTime:0}):ic(e,r,n)},sc=async(e,t,n,r)=>{let i=Js(t);if(u()!==r)return ac(e,i,n,r);let a=Zs(i,n,r),o=JSON.stringify(a),s=(Qs.get(o)??0)+1;Qs.set(o,s),await e.cancelQueries({queryKey:a,exact:!0});let c=await uc(i,n,null,!0,new AbortController().signal);if(u()!==r||Qs.get(o)!==s)return ac(e,i,n,r);let l={pages:[c],pageParams:[null]};return e.setQueryData(a,l),l},cc=(e,t,n)=>Promise.all([e.invalidateQueries({queryKey:Xs(Js(t),n)}),e.invalidateQueries({queryKey:[n,`skillsCatalog`,`source`,Js(t)],exact:!1})]);async function lc(e,t,n){let r=await pc(fc(`/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:qs}async function uc(e,t,n,r,i){let a={directory:e,sourceId:t,cursor:n,refresh:r},o=await pc(fc(`/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 pc(fc(`/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 dc(e,t){let n=e.nextCursor;if(!(!n||e.items.length===0)&&!t.slice(0,-1).some(e=>e.nextCursor===n))return n}function fc(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 pc(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 mc(e){return e.getActiveProject?.()?.path??null}function hc(e){return e.getActiveProject?.()?.path??null}var gc=e=>e?.trim()||null,_c=()=>{let e=Ko.getState().getActiveProject?.();return gc(e?.path)??gc(V.getDirectory())},vc=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},yc=(e,t=u())=>I.skills.list(e,t),bc=(e=_c(),t=u())=>{let n=gc(e);return{queryKey:yc(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:vc(e.path)}))},retry:2}},xc=e=>{let t=(0,G.c)(3),n=e===void 0?{}:e,r=Ko(wc),i=bc(gc(n.directory)??gc(r)??gc(V.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],br(a)},Sc=(e=F,t=_c(),n=u())=>e.getQueryData(yc(gc(t),n))??[],Cc=async(e,t,n=u())=>{let r=gc(t);return u()===n?e.fetchQuery({...bc(r,n),staleTime:0}):Sc(e,r,n)};function wc(e){return e.getActiveProject?.()?.path??null}var Tc=()=>{let e=V.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},Ec=Jo,Dc=e=>{let t=e;return t.native===!0||t.builtIn===!0},Oc=e=>{let t=e;return t.hidden===!0||t.options?.hidden===!0},kc=e=>e.filter(e=>!Oc(e)),Ac=`useAgentsStore`,jc=e=>new Promise(t=>setTimeout(t,e)),Mc=2e4,Nc=300,Pc=4,Fc=800,Ic=200,Lc=2e3,Rc=Ee()(ke(De(e=>({selectedAgentName:null,agentDraft:null,setSelectedAgent:t=>e({selectedAgentName:t}),setAgentDraft:t=>e({agentDraft:t}),loadAgents:async()=>{let e=Ec(),t=u();try{return await Gs(F,e,t),!0}catch{return!1}},createAgent:async t=>Bc(`POST`,t.name,t,e),updateAgent:async(t,n)=>Bc(`PATCH`,t,n,e),deleteAgent:async(t,n)=>Bc(`DELETE`,t,{scope:n},e),getAgentByName:e=>Ws().find(t=>t.name===e),getVisibleAgents:()=>kc(Ws())}),{name:`agents-store`,storage:ir(),partialize:e=>({selectedAgentName:e.selectedAgentName})}),{name:`agents-store`}));typeof window<`u`&&(window.__zustand_agents_store__=Rc);async function zc(e,t){await Gs(F,e,t),u()===t&&$a(`agents`,{source:Ac})}async function Bc(e,t,n,r){let i=Ec(),a=u();try{let o={};for(let e of[`description`,`mode`,`model`,`system`,`steps`,`hidden`,`disabled`,`color`,`permissions`])n&&e in n&&n[e]!==void 0&&(o[e]=n[e]);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}:{native:o,...n?.scope?{scope:n.scope}:{},...n?.confirmDrop?{confirmDrop:!0}:{}})}),l=await c.json().catch(()=>null);if(!c.ok)throw Error(l?.error||`Failed to ${e.toLowerCase()} agent`);return u()===a?(e===`DELETE`&&Rc.getState().selectedAgentName===t&&r({selectedAgentName:null}),l?.requiresManualRestart?{ok:!0,requiresManualRestart:!0}:(await zc(i,a),{ok:!0})):{ok:!0,...l?.requiresManualRestart?{requiresManualRestart:!0}:{}}}catch(t){return console.error(`[AgentsStore] ${e} agent failed:`,t),{ok:!1}}}async function Vc(e){let t=typeof e==`number`&&e>0?Math.min(e,Nc):0;t>0&&await jc(t);let n=Date.now(),r=0,i=null;for(;Date.now()-n<Mc;){r+=1,co(`Waiting for OpenCode… (attempt ${r})`);try{if(await V.checkHealth())return;i=Error(`OpenCode health check reported not ready`)}catch(e){i=e}let e=Date.now()-n;await jc(r<=Pc&&e<1200?Nc:Math.min(Fc+Math.max(0,r-Pc)*Ic,Lc))}throw i||Error(`OpenCode did not become ready in time`)}var Hc=e=>{if(!e||e.length===0)return[`all`];let t=Array.from(new Set(e));return t.includes(`all`)?[`all`]:t};async function Uc(e={}){let{message:t,delayMs:n}=e,r=e.transportIdentity??u(),i=e.queryDirectory??Ec(),a=Hc(e.scopes),o=e.mode??(a.includes(`all`)?`projects`:`active`),s=e.silent===!0;if(!s)try{co(t||`Refreshing configuration…`)}catch{}try{if(u()!==r||(e.waitForConnection!==!1&&await Vc(n),u()!==r))return;let t=K.getState(),c=a.includes(`all`)||a.includes(`providers`),l=a.includes(`all`)||a.includes(`agents`),d=a.includes(`all`)||a.includes(`agents`),f=a.includes(`all`)||a.includes(`commands`),p=a.includes(`all`)||a.includes(`skills`),m=a.includes(`all`)||a.includes(`mcp`),h=Tc(),g=o===`projects`?Ko.getState().projects:[],_=Array.from(new Set([...i?[i]:h?[h]:[],...g.map(e=>e.path).filter(Boolean)]));a.includes(`all`)&&o===`projects`&&K.setState({directoryScoped:{}}),c&&K.getState().invalidateProviderCache(o===`active`?h:void 0);let v=[];for(let e of _)c&&v.push(t.loadProviders({directory:e,source:`agentsStore:refreshConfig`,forceRefresh:!0,allowEmpty:!0}).then(()=>void 0)),l&&v.push(t.loadAgents({directory:e,source:`agentsStore:refreshConfig`,forceRefresh:!0}).then(()=>void 0));let y=[];if(d&&y.push(Gs(F,i,r).then(()=>void 0)),f&&y.push($o(F,i,r).then(()=>void 0)),p&&(y.push(Cc(F,i,r).then(()=>void 0)),y.push(cc(F,i,r).then(()=>void 0))),m){let{refreshMcpConfigsQuery:e,refreshMcpStatusQuery:t}=await mr(async()=>{let{refreshMcpConfigsQuery:e,refreshMcpStatusQuery:t}=await import(`./mcpQueries-CR7_Jav7.js`).then(e=>e.t);return{refreshMcpConfigsQuery:e,refreshMcpStatusQuery:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]));if(u()!==r)return;y.push(e(F,i,r).then(()=>void 0)),y.push(t(F,i,r).then(()=>void 0))}s||co(`Refreshing configuration…`),await Promise.all([...v,...y])}catch(e){throw s||(co(`OpenCode refresh failed. Please retry.`),await jc(1500)),e}finally{s||so()}}async function Wc(e){await Uc(e)}async function Gc(e){await Uc({...e,silent:!0,waitForConnection:!1})}async function Kc(){await V.getSdkClient().location.reload()}async function qc(e){oo(e?.message||`Reloading OpenCode configuration…`);let t=e?.transportIdentity??u(),n=e?.queryDirectory??Ec();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){so();return}let a={...e,transportIdentity:t,queryDirectory:n,scopes:e?.scopes??[`all`],mode:e?.mode??`projects`};i?.requiresReload?await Wc({...a,message:i.message,delayMs:i.reloadDelayMs}):await Wc(a)}catch(e){throw console.error(`[restartOpenCodeService] Failed:`,e),co(`Failed to reload configuration. Please try again.`),await jc(2e3),so(),e}}var Jc=null;Jc||=Qa(e=>{if(e.source!==Ac&&eo(e,`agents`)){let{loadAgents:e}=Rc.getState();e()}});var Yc=e=>typeof e==`string`?e.trim():``,Xc=(e,t)=>!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`,Zc={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`},Qc=e=>e?e[0].toUpperCase()+e.slice(1).toLowerCase():``,$c=e=>{let t=e.startsWith(`~`)?e.slice(1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t},el=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)}},tl=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},nl=e=>{let t=e.toLowerCase(),n=Zc[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)?Qc(t).replace(/([a-z])(\d)/i,`$1$2`):Qc(e)},rl=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},il=e=>{let t=Yc(e).toLowerCase();return t?t===`free`||t===`thinking`?t:al(t):``},al=e=>{let t=Yc(e);if(!t)return``;let{base:n,suffix:r}=el($c(t)),i=rl(tl(n).map(nl));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=il(r);return s?`${o} (${s})`:o},ol=e=>!/\s/.test(e)&&/[-_]/.test(e),sl=(e,t,n={})=>{let r=Yc(e?.name),i=Yc(e?.id)||Yc(t);return r&&!ol(r)?Xc(r,n.maxLength):i?Xc(al(i),n.maxLength):r?Xc(al(r.toLowerCase()),n.maxLength):n.fallbackLabel??``},cl=(e,t)=>{let n=e?.models;if(!(!n||!t))return Array.isArray(n)?n.find(e=>Yc(e.id)===t):n[t]},ll=(e,t,n={})=>{let r=Yc(t);return sl(cl(e,r),r,n)},ul=(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}},dl=e=>e===`primary`||e===`all`||e==null,fl=e=>e.filter(e=>dl(e.mode)),pl=(e,t,n=1)=>{let r=fl(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},ml=e=>e.charAt(0).toUpperCase()+e.slice(1),hl=(e,t)=>{if(t){let n=e.find(e=>e.name===t);return ml(n?n.name:t)}let n=e.filter(e=>dl(e.mode)),r=n.find(e=>e.name===`build`)||n[0]||e[0];return r?ml(r.name):`Select agent`},gl=(e,t,n=``)=>ll(e,t,{fallbackLabel:n}),_l=e=>{if(!e||e.trim().length===0)return`Default`;let t=e.trim();return/^\d+(\.\d+)?$/.test(t)?t:ml(t)},vl=e=>typeof e==`object`&&!!e,yl=e=>typeof e==`string`&&e.length>0,bl=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(!yl(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(!yl(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;!yl(t)||!yl(n)||r.set(t,n)}r.size>0&&i.set(t,r)}i.size>0&&t.set(e,i)}return t},xl=Ee()(De((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:ir(),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=vl(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(!yl(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;!yl(t)||typeof n!=`object`||!n||!yl(n.providerId)||!yl(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:bl(n?.sessionAgentModelVariantSelections)}},migrate:e=>e})),Sl=z,Cl=(e,t)=>{let n=Sl(t);if(!n)return null;let r=null;for(let t of e){let e=Sl(t.path);e&&(n!==e&&!n.startsWith(`${e}/`)||(!r||e.length>(Sl(r.path)?.length??0))&&(r=t))}return r},wl=(e,t,n)=>{let r=Sl(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=Sl(t.path);n&&(r!==n&&!r.startsWith(`${n}/`)||n.length>o&&(o=n.length,i=t,a=Sl(e)))}if(!i)return null;let s=[Sl(i.projectDirectory),a].filter(e=>!!e);for(let t of s){let n=e.find(e=>Sl(e.path)===t)??null;if(n)return n;let r=Cl(e,t);if(r)return r}return null},Tl=(e,t,n)=>wl(e,t,n)??Cl(e,n),El=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)}},Dl=[`concise`,`detailed`,`mentor`,`pushback`,`noFiller`,`matchEnergy`,`warmPeer`],Ol=e=>typeof e==`string`&&Dl.includes(e),kl=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.`}},Al=new Map,jl=new Map,Ml=({enabled:e,preset:t,customInstructions:n})=>e?t===`custom`?(typeof n==`string`?n.trim():``)||null:Ol(t)?kl(t):null:null,Nl=(e,t=u())=>{Al.set(t,{enabled:e.enabled===!0,preset:e.preset,customInstructions:e.customInstructions})},Pl=(e=u())=>{let t=Al.get(e);if(t)return Ml(t)},Fl=async()=>{let e=u(),t=Pl(e);if(t!==void 0)return t;let n=jl.get(e);if(n)return n;let r=(async()=>{let t=await le(e);return Nl({enabled:t.responseStyleEnabled,preset:t.responseStylePreset,customInstructions:t.responseStyleCustomInstructions},e),Pl(e)??null})();jl.set(e,r);try{return await r}finally{jl.get(e)===r&&jl.delete(e)}},Il=`opencode`,Ll=`big-pickle`,Rl=`__add_provider__`,zl=`zen`,Bl=`big-pickle`,Vl=async(e,t)=>{U(`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 U(`config.defaults:end`,{source:e,durationMs:Math.round(r-n),hasDefaultModel:!!t.defaultModel,hasDefaultAgent:!!t.defaultAgent}),t};try{let t=await le(e);return Nl({enabled:t?.responseStyleEnabled,preset:t?.responseStylePreset,customInstructions:t?.responseStyleCustomInstructions},e),r(`settings-bootstrap-query`,t)}catch(n){U(`config.defaults:error`,{error:n instanceof Error?n.message:String(n)});let i=he(e);return i&&Nl({enabled:i.responseStyleEnabled,preset:i.responseStylePreset,customInstructions:i.responseStyleCustomInstructions},e),r(i?`retained-settings-bootstrap`:`retained-store-settings`,i??t)}},Hl=e=>El(e),Ul=e=>e===Rl?``:e??``,Wl=(e,t)=>e===Rl?Rl:t,Gl=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},Kl=e=>{if(!Array.isArray(e))return[];let t=e.map(e=>{if(!Ql(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 Ss({schemaVersion:1,providers:t,default:{},partial:!1}).providers.map(e=>({id:e.id,name:e.name,models:Object.values(e.models)}))}catch{return[]}},ql=e=>{try{return Ss({schemaVersion:1,providers:[],default:e,partial:!1}).default}catch{return{}}},Jl=(e,t,n)=>{let r=e.find(e=>e.id===t);return r?r.models.some(e=>e.id===n):!1},Yl=({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&&Jl(e,t,n))return{providerId:t,modelId:n,variant:o(t,n,r)};if(i){let t=Hl(i);if(t&&Jl(e,t.providerId,t.modelId))return{providerId:t.providerId,modelId:t.modelId,variant:o(t.providerId,t.modelId,a)}}if(Jl(e,Il,Ll))return{providerId:Il,modelId:Ll};let s=e[0],c=s?.models[0];return s&&c?{providerId:s.id,modelId:c.id}:null},Xl=({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=ct(e,n.agentName);return!r||!dl(r.mode)||r.hidden===!0||!Jl(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=>dl(e.mode)),h;if(r&&(h=ct(e,r)),!h&&o){let t=ct(e,o);t&&dl(t.mode)&&t.hidden!==!0&&(h=t)}if(h||=ct(m,`build`)||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=Hl(y);e&&Jl(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&&Jl(t,h.model.providerID,h.model.modelID)&&(g=h.model.providerID,_=h.model.modelID,v=u(g,_,h.variant)),!g&&s){let e=Hl(s);e&&Jl(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId)}if(!g)if(Jl(t,Il,Ll))g=Il,_=Ll;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}},Zl=({providers:e,settingsZenModel:t})=>{let n=Gl(t);if(!Array.isArray(e)||e.length===0)return n?{providerId:zl,modelId:n}:null;if(n&&Jl(e,zl,n))return{providerId:zl,modelId:n};if(Jl(e,zl,Bl))return{providerId:zl,modelId:Bl};let r=e.find(e=>e.id===zl);if(r?.models.length){let e=Math.floor(Math.random()*r.models.length),t=Gl(r.models[e]?.id);if(t)return{providerId:zl,modelId:t}}return null},Ql=e=>typeof e==`object`&&!!e,$l=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},eu=(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:$l(t.capabilities.input),output:$l(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}),tu=e=>new Promise(t=>setTimeout(t,e)),nu=800,ru=async(e=nu)=>Promise.race([V.checkHealth().catch(()=>!1),tu(Math.max(1,e)).then(()=>!1)]),iu=`__global__`,au=e=>{let t=typeof e==`string`?e.trim():``;return t.length>0?t:iu},ou=e=>e===iu?null:e,su=()=>typeof window>`u`?iu:gu(V.getDirectory()??Be.getState().currentDirectory),cu=`oc.worktreeProjectMap`,lu=null,uu=()=>{if(lu===null)try{let e=typeof localStorage<`u`?localStorage.getItem(cu):null;lu=e?JSON.parse(e):{}}catch{lu={}}return lu},du=(e,t)=>{if(!e||!t||e===t)return;let n=uu();if(n[e]!==t){n[e]=t;try{localStorage.setItem(cu,JSON.stringify(n))}catch{}}},fu=e=>{let t=z(e);return t===null?null:t||`/`},pu=()=>{try{return Ko.getState().projects.map(e=>fu(e.path)).filter(e=>!!e)}catch{return[]}},mu=()=>{try{let{projects:e,activeProjectId:t}=Ko.getState();return fu((t?e.find(e=>e.id===t):null)?.path??e[0]?.path??null)}catch{return null}},hu=e=>{let t=fu(e),n=pu();if(!t)return null;if(n.includes(t))return t;let r=fu(uu()[t]);if(r)return r;try{let e=fu(Tl(Ko.getState().projects,$.getState().availableWorktreesByProject,t)?.path??null);if(e&&e!==t)return du(t,e),e}catch{return null}return null},gu=e=>au(hu(e)),_u=e=>gu(e),vu=1e3,yu=125e4,bu=100,xu=256,Su=new Set([`__proto__`,`prototype`,`constructor`]),Cu=/[\u0000-\u001F\u007F]/u,wu=new TextEncoder,Tu=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&&As(ou(n),{providers:a,defaultProviders:i.defaultProviders??{},providerCatalogPartial:!1}),i},Eu=(e,t=!1)=>{if(typeof e!=`string`)return;let n=e.trim();if(!(n.length===0||n.length>xu||t&&n!==e||Cu.test(n)||Su.has(n)))return n},Du=e=>{if(!Ql(e))return{};let t=[];for(let[n,r]of Object.entries(e)){if(t.length>=bu||!Ql(r))continue;let e=Eu(n,!0),i=Eu(r.providerId),a=Eu(r.modelId),o=Eu(r.variant);!e||!i||!a||r.variant!==void 0&&!o||t.push([e,{providerId:i,modelId:a,...o?{variant:o}:{}}])}return Object.fromEntries(t)},Ou=e=>{if(!Ql(e))return;let t=Eu(e.agentName,!0),n=Eu(e.providerId),r=Eu(e.modelId),i=Eu(e.variant);if(!(!t||!n||!r||e.variant!==void 0&&!i))return{agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}}},ku=(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}:{}}},Au=(e,t,n)=>Ou(e)??ku(t,n),ju=(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`}),Mu=e=>{let t={};for(let[n,r]of Object.entries(e)){let e=r.lastUserSelection??ku(r.lastSelectedAgentName,r.agentModelSelections);!e&&!r.lastSelectedAgentName||(t[n]={...ju(),agentModelSelections:{},lastSelectedAgentName:e?.agentName??r.lastSelectedAgentName,lastUserSelection:e,selectionSource:r.selectionSource===`manual`?`manual`:`auto`})}return t},Nu=e=>{if(!Ql(e))return{};let t=Gl(e.catalogTransportIdentity),n={};for(let t of[`activeDirectoryKey`,`settingsDefaultModel`,`settingsDefaultVariant`,`settingsDefaultAgent`,`settingsZenModel`]){let r=Gl(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(Ql(e.directoryScoped))for(let[t,n]of Object.entries(e.directoryScoped)){if(!Ql(n))continue;let e=n.providerCatalogPartial===!0,i=e?[]:Kl(n.providers),a=e?{}:ql(n.defaultProviders),o=Du(n.agentModelSelections),s=Eu(n.lastSelectedAgentName,!0),c=Au(n.lastUserSelection,s,o);r[t]={...ju(),providers:i,agents:[],currentProviderId:Gl(n.currentProviderId)??``,currentModelId:Gl(n.currentModelId)??``,currentVariant:Gl(n.currentVariant),currentAgentName:Gl(n.currentAgentName),selectedProviderId:Ul(Gl(n.selectedProviderId)),agentModelSelections:o,lastSelectedAgentName:c?.agentName??s,lastUserSelection:c,defaultProviders:a,providerCatalogPartial:e,opencodeDefaultAgent:Gl(n.opencodeDefaultAgent),opencodeDefaultModel:Gl(n.opencodeDefaultModel),selectionSource:n.selectionSource===`manual`?`manual`:`auto`}}let i=Du(e.agentModelSelections),a=Eu(e.lastSelectedAgentName,!0),o=Au(e.globalLastUserSelection,a,i)??(()=>{let t=Gl(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),s=u();if(t!==s){let t=Mu(r),i=Gl(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:Gl(e.currentProviderId)??``,currentModelId:Gl(e.currentModelId)??``,currentVariant:Gl(e.currentVariant),currentAgentName:Gl(e.currentAgentName),selectedProviderId:Ul(Gl(e.selectedProviderId)),agentModelSelections:i,lastSelectedAgentName:o?.agentName??a,lastUserSelection:(()=>{let t=Gl(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),globalLastUserSelection:o}},Pu=(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)},Fu=({agents:e,providers:t,currentAgentName:n,currentProviderId:r,currentModelId:i,currentVariant:a,selectionSource:o,resolvedAgentName:s,resolvedProviderId:c,resolvedModelId:l,resolvedVariant:u})=>{let d=ct(e,n)?.name,f=!!r&&!!i&&Jl(t,r,i)&&Pu(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`}},Iu=null,Lu=null,Ru=null,zu={},Bu={},K=Ee()(ke(De((e,t)=>({activeDirectoryKey:su(),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=hu(n);if(!i){U(`activateDirectory:skippedUnknownDirectory`,{directory:n});return}let a=au(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:ou(a),source:r?.source??`activateDirectory`,forceRefresh:r?.refreshProviders}),s||await t().loadAgents({directory:ou(a),source:`activateDirectory`}))},invalidateProviderCache:e=>{let t=u();Fs(e??null,t)},loadProviders:async n=>{let r=n?.directory??ou(t().activeDirectoryKey),i=hu(r);if(!i){U(`loadProviders:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`});return}let a=i??V.getDirectory()??null,o=au(i),s=n?.source??`unknown`,c=u(),l=f(),d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&hu(r)===i,p=(zu[o]??0)+1;zu[o]=p,U(`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();U(`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 Qn(`loadProviders:api`,()=>n?.forceRefresh?Ns(ou(o),c):js(ou(o),c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),l=Kl(t.providers),f=ql(t.default);if(!d()||t.partial&&u.length>0||l.length===0&&(!n?.allowEmpty||t.partial)||(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=Yl({providers:l,currentProviderId:r,currentModelId:i,currentVariant:a,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant}),u=e.activeDirectoryKey===o?e.selectedProviderId:n.selectedProviderId,p=u===Rl||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();U(`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),U(`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=Hl(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(()=>{zu[o]===p&&e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:!1}}))})},refreshMissingCatalogs:e=>{if(Lu)return Lu;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(()=>{Lu=null});return Lu=r,r},refreshCatalogsOnPickerOpen:e=>{if(Ru)return Ru;let n=e?.source??`refreshCatalogsOnPickerOpen`,r=Promise.all([t().loadProviders({source:n,forceRefresh:!0}),t().loadAgents({source:n,forceRefresh:!0})]).then(()=>void 0).finally(()=>{Ru=null});return Ru=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??ou(t().activeDirectoryKey),i=hu(r);if(!i)return U(`loadAgents:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`}),!1;let a=i??V.getDirectory()??null,o=au(i),s=n?.source??`unknown`,c=u(),l=f(),d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&hu(r)===i,p=(Bu[o]??0)+1;Bu[o]=p,U(`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();U(`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=ou(o);(Rt(r??void 0)??Rt(l??void 0))&&U(`loadAgents:syncConfigHit`,{directoryKey:o,source:s});let[f,p]=await Promise.all([Qn(`loadAgents:api`,()=>n?.forceRefresh?Ps(l,c):Ms(l,c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),Vl(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:[]).map(Dt);if(!d())return!1;let h=Rt(r??void 0)??Rt(l??void 0),g=h!==void 0,_=g?Gl(h.default_agent):void 0,v=g?Gl(h.model):void 0,y=t().activeDirectoryKey===o?t().providers:t().directoryScoped[o]?.providers??[],b=Gl(t().settingsZenModel),x=Gl(p.zenModel),S=Zl({providers:y,settingsZenModel:b}),C=Zl({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&&_e({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 U(`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 U(`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&&!ct(m,p.defaultAgent)&&(j.defaultAgent=``),p.defaultModel){let e=Hl(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 M=t(),N=M.directoryScoped[o]?.lastUserSelection??(M.activeDirectoryKey===o?M.lastUserSelection:void 0),ee=Xl({agents:m,providers:y,settingsDefaultAgent:p.defaultAgent,settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,opencodeDefaultAgent:D,opencodeDefaultModel:O,projectLastUserSelection:N,globalLastUserSelection:M.globalLastUserSelection}),te=ee.agentName??m[0].name,ne=ee.providerId,re=ee.modelId,P=ee.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=Fu({agents:m,providers:y,currentAgentName:r,currentProviderId:i,currentModelId:a,currentVariant:s,selectionSource:l,resolvedAgentName:te,resolvedProviderId:ne,resolvedModelId:re,resolvedVariant:P}),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}),_e(j).catch(()=>{})),!d())return!1;let ie=typeof performance<`u`?performance.now():Date.now();return U(`loadAgents:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(ie-i),agents:m.length}),!0}catch(t){return!d()||(console.error(`Failed to load agents:`,t),U(`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(()=>{Bu[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(),l=er(r,n)??n;if(e(e=>{let t=e.activeDirectoryKey,n={...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:l,selectionSource:`manual`};return{currentAgentName:l,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:n}}}),l){let{currentSessionId:e}=$.getState(),t=xl.getState();e&&t.saveSessionAgentSelection(e,l),e&&$.getState().isOpenChamberCreatedSession(e)&&(t.getAgentModelForSession(e,l)||$.getState().initializeNewOpenChamberSession(e,r))}if(l){let{currentSessionId:n}=$.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:Wl(e.selectedProviderId,t),selectionSource:`manual`};return{currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:Wl(e.selectedProviderId,t),selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[i]:a}}})},d=ct(r,l),f=(e,t,r=[])=>{let a=i.find(t=>t.id===e)?.models.find(e=>e.id===t)?.variants;if(!a)return;let s=n?xl.getState().getAgentModelVariantForSession(n,l,e,t):void 0;for(let e of[s,...r,o])if(e&&Object.prototype.hasOwnProperty.call(a,e))return e};if(n){let e=xl.getState().getAgentModelForSession(n,l);if(e&&Jl(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=Hl(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}=Xl({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:Wl(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=Wl(e.selectedProviderId,p)),r})},applyOpenCodeConfigDefaults:(n,r=`syncConfig`,i)=>{let a=n??ou(t().activeDirectoryKey),o=gu(a),s=ou(o),c=i??Rt(a??void 0)??Rt(s??void 0);if(!c)return;let l=Gl(c.default_agent),u=Gl(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??ju(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=Xl({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=Fu({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:Wl(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!==Wl(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=Wl(x,S.providerId))),U(`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 Zl({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)),_e({dictationEnabled:t}).catch(()=>{})},setSttProvider:t=>{e({sttProvider:t}),typeof window<`u`&&localStorage.setItem(`sttProvider`,t),_e({sttProvider:t}).catch(()=>{})},setSttServerUrl:t=>{e({sttServerUrl:t}),typeof window<`u`&&localStorage.setItem(`sttServerUrl`,t),_e({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),_e({sttModel:t}).catch(()=>{})},setSttLocalModel:t=>{e({sttLocalModel:t}),typeof window<`u`&&localStorage.setItem(`sttLocalModel`,t),_e({sttLocalModel:t}).catch(()=>{})},setSttLanguage:t=>{e({sttLanguage:t}),typeof window<`u`&&localStorage.setItem(`sttLanguage`,t),_e({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 ru(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()=>{U(`checkConnection:start`);let n=0,r=null;for(;n<5;)try{U(`checkConnection:attempt`,{attempt:n+1});let r=await Qn(`checkConnection:health`,()=>V.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 tu(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`}),U(`checkConnection:end`,{healthy:r,attempts:n+1}),r}catch(e){r=e,n+=1,await tu(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`}),U(`checkConnection:end`,{healthy:!1,attempts:5}),!1},initializeApp:async()=>{if(Iu)return U(`initializeApp:deduped`),Iu;let n=(async()=>{let n=typeof performance<`u`?performance.now():Date.now();U(`initializeApp:start`);try{if(yt(),!await t().checkConnection()){e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`});return}U(`initApp:skipped`,{reason:`checkConnection already verified health`});let r=V.getDirectory()??Be.getState().currentDirectory??ou(t().activeDirectoryKey),i=hu(Tl(Ko.getState().projects,$.getState().availableWorktreesByProject,r??null)?.path??r??null),a=i??mu();if(!a){U(`initializeApp:noProjectConfigDirectory`),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});return}!i&&r!==a&&(U(`initializeApp:normalizedUnknownDirectoryToProject`,{initialDirectory:r,configDirectory:a}),V.setDirectory(a),Be.getState().setDirectory(a,{showOverlay:!1}));let o=au(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();U(`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`}),U(`initializeApp:error`,{error:n instanceof Error?n.message:String(n)})}})().finally(()=>{Iu=null});return Iu=n,n},prewarmProjectConfigs:async e=>{if(!t().isConnected)return;let n=gu(e??ou(t().activeDirectoryKey)),r=Ko.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=gu(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=ou(n);o&&a.push(o)}for(let e of a){if(await tu(vu),!t().isConnected)return;let n=gu(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 ct(e,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 eu(e,i)},getVisibleAgents:()=>{let{agents:e}=t();return kc(e)}}),{name:`config-store`,version:4,storage:ir(),migrate:e=>Nu(e),merge:(e,t)=>Tu({...t,...Nu(e)}),partialize:e=>{let t=e.directoryScoped[e.activeDirectoryKey],n=e.providers.length>0?{providers:Kl(e.providers),defaultProviders:ql(e.defaultProviders),providerCatalogPartial:!1}:t&&t.providerCatalogPartial!==!0?{providers:Kl(t.providers),defaultProviders:ql(t.defaultProviders),providerCatalogPartial:!1}:{providers:[],defaultProviders:{},providerCatalogPartial:!0},r=(t,r)=>{let i=Ou(r?.lastUserSelection)??ku(Eu(r?.lastSelectedAgentName,!0),Du(r?.agentModelSelections))??(t===e.activeDirectoryKey?Ou(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:Ul(r?.selectedProviderId??(t===e.activeDirectoryKey?e.selectedProviderId:``)),agentModelSelections:{},lastSelectedAgentName:i?.agentName??Eu(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(wu.encode(a).byteLength>yu){let t=i[e.activeDirectoryKey];t&&(t.providers=[],t.defaultProviders={},t.providerCatalogPartial=!0)}let o=Ou(e.globalLastUserSelection)??Ou(e.lastUserSelection);return{activeDirectoryKey:e.activeDirectoryKey,catalogTransportIdentity:u(),directoryScoped:i,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:Ul(e.selectedProviderId),agentModelSelections:{},lastSelectedAgentName:o?.agentName??Eu(e.lastSelectedAgentName,!0),lastUserSelection:Ou(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__=K);var Vu=async e=>{await K.getState().loadProviders({source:e,forceRefresh:!0})},Hu=null;Hu||=Qa(async e=>{let t=[];if(V.clearConfigCache(),eo(e,`agents`)){let{loadAgents:e}=K.getState();t.push(e({source:`configChange:agents`,forceRefresh:!0}).then(()=>{}))}eo(e,`providers`)&&t.push(Vu(`configChange:providers`)),t.length>0&&await Promise.all(t)});var Uu=null,Wu=null;Wu||=Kt((e,t)=>{K.getState().applyOpenCodeConfigDefaults(e,`syncConfig`,t)}),typeof window<`u`&&!Uu&&(Uu=Be.subscribe((e,t)=>{let n=au(e.currentDirectory),r=au(t.currentDirectory);n!==r&&(U(`directoryStore:changed`,{previous:r,next:n}),K.getState().activateDirectory(e.currentDirectory))}));var Gu=e=>typeof e==`number`&&Number.isFinite(e)?e:null,Ku=e=>{let t=e.metadata;return Gu(t?.openchamber?.titleRefresh?.activityUpdatedAt)??Gu(e.time?.updated)??Gu(e.time?.created)??0},qu=[`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 Ju(e){if(!e)return!1;let t=String(e instanceof Error?e.message:e).toLowerCase();if(qu.some(e=>t.includes(e)))return!0;let n=e?.status;return typeof n==`number`&&n>=500&&n<600}async function Yu(e,t={}){let{attempts:n=3,delay:r=500,factor:i=2,maxDelay:a=1e4,retryIf:o=Ju}=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 Xu=[`file`,`status`,`additions`,`deletions`],Zu=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},Qu=e=>e===void 0?!1:!e||typeof e!=`object`||Array.isArray(e)?!0:Object.keys(e).some(e=>e!==`messageID`&&e!==`partID`),$u=e=>typeof e.before==`string`||typeof e.after==`string`||typeof e.from==`string`||typeof e.to==`string`||typeof e.patch==`string`;function ed(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!$u(t))return e;let n={};for(let e of Xu)e in t&&t[e]!==void 0&&(n[e]=t[e]);return n}function td(e){if(!Array.isArray(e))return e;let t=!1,n=e.map(e=>{let n=ed(e);return n!==e&&(t=!0),n});return t?n:e}function nd(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=td(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 rd(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=nd(r?n:e);return i===(r?n:e)?n:i}function id(e){let t=e;if(!(Qu(t.revert)||Array.isArray(t.summary?.diffs)||typeof t.summary?.diffCount==`number`||typeof t.summary?.hasDiffs==`boolean`||`permission`in t))return e;let n=rd(e),r={...n};delete r.permission;let i=Zu(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 ad(e){return nd(e)}var od=new Set([`smartfetch-secondary`]),sd=e=>typeof e==`string`&&e.length>0,cd=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`&&!!(sd(r.assistant?.assistantID)||sd(r.scheduledTask?.taskID)||sd(r.smallModel?.purpose)||sd(r.llm?.purpose))},ld=e=>{let t=e.parentID;return typeof t==`string`&&t.trim()?t:null},ud=e=>!(e.title&&od.has(e.title)||ld(e)||cd(e)),dd=e=>{let t=e.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:0},fd=e=>{let t=e.time?.archived;return typeof t==`number`&&Number.isFinite(t)&&t>0},pd=e=>{let t=bt(e);return id({...t,directory:t.directory||e.directory})};async function md(e,t){let n=[],r=new Set,i=t.cursor,a;for(;;){let o=t.maxItems===void 0?t.pageSize:Math.max(0,t.maxItems-n.length);if(o===0)break;let s=Math.min(t.pageSize,o),c=await Yu(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,i=await e.session.list({...t.directory?{directory:t.directory}:{},...t.roots===!0?{parentID:null}:{},limit:s,...a?{cursor:a}:{}},r?{signal:r}:void 0);if(!i||!Array.isArray(i.data)){let e=Error(`session.list returned no data`);throw e.status=503,e}return i},{attempts:t.retryAttempts??3,delay:500}),l=c.data.map(e=>pd(e));if(l.length===0)break;let u=l.filter(e=>(t.archived?!fd(e):fd(e))||t.start!==void 0&&dd(e)<t.start||i!==void 0&&dd(e)>=i?!1:ud(e)),d=0;for(let e of u)!e?.id||r.has(e.id)||(r.add(e.id),n.push(e),d+=1);if(d>0&&t.onPage?.(u),t.maxItems!==void 0&&n.length>=t.maxItems||l.length<s)break;let f=typeof c.cursor?.next==`string`&&c.cursor.next.length>0?c.cursor.next:void 0;if(!f||f===a)break;a=f}return n}var hd=`/api/magic-prompts`,gd=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])),_d={"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`}},vd=null,yd=null,bd=(e,t)=>e.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g,(e,n)=>Object.prototype.hasOwnProperty.call(t,n)?t[n]??``:``),xd=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(_d)){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},Sd=async()=>vd||(yd||=_(hd,{method:`GET`,headers:{Accept:`application/json`}}).then(async e=>{if(!e.ok)throw Error(`Failed to load magic prompts`);let t=xd(await e.json().catch(()=>({})));return vd=t,t}).finally(()=>{yd=null}),yd),Cd=e=>{let t=gd.get(e);if(!t)throw Error(`Unknown magic prompt id: ${e}`);return t},wd=e=>Cd(e).template,Td=async e=>{let t=(await Sd().catch(()=>({})))[e];return typeof t==`string`?t:wd(e)},Ed=async(e,t={})=>bd(await Td(e),t),Dd=async(e,t)=>{let n=await _(`${hd}/${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 vd=xd(r),{version:typeof r?.version==`number`?r.version:1,overrides:vd}},Od=async e=>{let t=await _(`${hd}/${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 vd=xd(n),{version:typeof n?.version==`number`?n.version:1,overrides:vd}},kd=async()=>{let e=await _(hd,{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 vd=xd(t),{version:typeof t?.version==`number`?t.version:1,overrides:vd}},Ad=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
|
+
`),jd=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Md=e=>{let t=e?.metadata;return jd(t)?t:{}},Nd=e=>{let t=e.openchamber;return jd(t)?t:{}},Pd=e=>{let t=Nd(Md(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Fd=e=>{let t=Nd(Md(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Id=e=>Nd(Md(e)).kind===`review`&&!!Fd(e),Ld=(e,t)=>{let n=Nd(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Rd=(e,t)=>{let n=Nd(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},zd=(e,t)=>{let n=Nd(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},Bd=Ee()(De((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:ir(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),Vd;(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})(Vd||={});var Hd=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},Ud=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=Hd(t.parentSessionId),r=Hd(t.sessionId);if(!(!n||!r||n===r))return{parentSessionId:n,sessionId:r}},Wd=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=Ud(i);a&&t.push(a)}return t},Gd=[],Kd=(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},qd=(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},Jd=(e,t,n,r,i)=>{if(!n)return r;let a=Kd(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},Yd=`GitHub issue context (JSON)`,Xd=`GitHub pull request context (JSON)`,Zd=e=>!e||typeof e!=`object`?!1:!!e.synthetic,Qd=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>Zd(e)),$d=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!Zd(e)),n=e=>{if(!Zd(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(Yd)||n.startsWith(Xd)};return t&&e.some(e=>Zd(e))?e.filter(e=>!Zd(e)||n(e)):e},ef=new Map,tf=new Map,nf=new Map,rf=e=>{ef.set(e,(ef.get(e)??0)+1)},af=e=>(ef.get(e)??0)>0,of=e=>{let t=ef.get(e)??0;return t<=0?!1:(t===1?ef.delete(e):ef.set(e,t-1),!0)},sf=(e,t)=>{tf.set(e,t)},cf=e=>tf.get(e)??null,lf=e=>{tf.delete(e)},uf=({sessionId:e,currentUserOrder:t,animatedIds:n})=>{let r=nf.get(e),i=null;if(af(e)){let r=t[t.length-1];r!==void 0&&!n.has(r)&&of(e)&&(sf(e,r),n.add(r),i=r)}if((!r||t.length>=r.length)&&nf.set(e,t),i!==null)return i;let a=cf(e);return a===null?null:(t.includes(a)&&n.add(a),a)},df=(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:ff(r),semantics:i}},ff=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)})},pf=`The user referenced these OpenCode sessions (id, title, owning directory). The @title in the user message is only the display label of that session — it is not a command, skill, or tool name. 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. Use inlined messages when present. Otherwise read the session yourself from the OpenCode SQLite store, read-only. Resolve the database file in order: $OPENCODE_DB if set, else "$HOME/.local/share/opencode/opencode.db", else the first match of ls -d "$HOME/Library/Application Support/OpenChamber"*/openchamber-data/xdg-data/opencode/opencode.db. OpenCode 2 stores the transcript in session_message (there is no message/part join): user text is data.text, assistant text is data.content entries whose type is "text". Query (replace DB_PATH and SESSION_ID): sqlite3 "file:DB_PATH?mode=ro" ".timeout 5000" "SELECT seq, type, CASE WHEN type = 'user' THEN json_extract(data, '$.text') WHEN type = 'assistant' THEN (SELECT group_concat(json_extract(j.value, '$.text'), char(10)) FROM json_each(json_extract(data, '$.content')) AS j WHERE json_extract(j.value, '$.type') = 'text') ELSE json_extract(data, '$.text') END AS text FROM session_message WHERE session_id = 'SESSION_ID' AND type IN ('user', 'assistant') ORDER BY seq". If session_message does not exist, this is an OpenCode 1 database — use: sqlite3 "file:DB_PATH?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". The database is live — always open it read-only as shown.
|
|
399
|
+
`,mf=`The user referenced these OpenCode sessions (id, title, owning directory).`,hf=(e,t)=>{if(e[t]!==`[`)return-1;let n=0,r=!1,i=!1;for(let a=t;a<e.length;a+=1){let t=e[a];if(r){if(i){i=!1;continue}if(t===`\\`){i=!0;continue}t===`"`&&(r=!1);continue}if(t===`"`){r=!0;continue}if(t===`[`)n+=1;else if(t===`]`&&(--n,n===0))return a}return-1},gf=e=>{let t=e,n=t.indexOf(mf);for(;n!==-1;){let e=t.indexOf(`[`,n+74),r=e===-1?-1:hf(t,e),i=r===-1?t.length:r+1,a=t.slice(0,n).replace(/[ \t]*\n*$/,``),o=t.slice(i).replace(/^\n+/,``);t=a.length>0&&o.length>0?`${a}\n${o}`:`${a}${o}`,n=t.indexOf(mf)}return t},_f=e=>{if(!e.startsWith(pf))return[];try{let t=JSON.parse(e.slice(pf.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[]}},vf=e=>e.length===0?null:e.map(e=>`[skill:${e}]`).join(` `),yf=(e,t=36e3)=>{if(e.length===0)return null;let n=pf,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(`,`)}]`},bf=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}},xf=(e,t)=>{let{sessionIds:n,skillNames:r}=bf(e),i=n.map(e=>{let n=Pn(e,t),r=n?Je(n).find(t=>t.id===e):void 0,i=n?Ze(e,n).flatMap(e=>{let t=Ft(e.id,n).filter(e=>e.type===`text`&&!Zd(e)).map(e=>`text`in e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(`
|
|
400
|
+
`);return t?[{role:e.role,text:t}]:[]}):[];return{id:e,title:r?.title||e,...n?{directory:n}:{},messages:i}}),a=[],o=vf(r);o&&a.push({text:o,synthetic:!0});let s=yf(i);return s&&a.push({text:s,synthetic:!0}),a},Sf=50,Cf=15e4,wf=e=>{let t=0;for(let n of Object.values(e.partsByMessageID))for(let e of n){let n=e;n.type===`text`&&!Zd(n)&&typeof n.text==`string`&&(t+=n.text.length)}return t},Tf=async(e,t,n)=>{let{sessionIds:r}=bf(e);if(r.length===0)return;let i=W();if(!i)return;let a=n?.maxPages??Sf,o=n?.maxChars??Cf;await Promise.all(r.map(async e=>{let n=Pn(e,t);if(!n)return;let r=H(n,e),s=i.getTranscript(r);s.messageOrder.length===0&&(await Kn(n,e),s=i.getTranscript(r));let c=0;for(;!i.getPagination(r).isComplete&&c<a&&wf(s)<o;)await $n(n,e),s=i.getTranscript(r),c+=1}))},Ef=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},Df=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,Of=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},kf=e=>e.replace(/\\/g,`/`),Af=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,jf=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}`}`),kf(n)}catch{return null}},Mf=(e,t)=>{let n=Af(kf(e)),r=Af(kf(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},Nf=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),Pf=(e,t)=>{let n=kf(e),r=Af(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=Mf(n,t);if(r!==null){let t=Af(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return Nf(a)},Ff=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},If=(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},Lf=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},Rf=async(e,t={})=>{let n=t.createID??ve,r=t.directory??t.root??null,i=e.filter(e=>!Zd(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(e=>gf(Df(e))).filter(e=>e.trim().length>0).join(`
|
|
401
|
+
`),l=[];for(let e of o){let t=Lf(e);t&&l.push(t)}for(let e of[...l].reverse())If(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=P(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=If(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:`)?jf(t):null;if(o){let e=Pf(o,r),t=null;for(let n of e){let e=If(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=Of(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=xe(s);if(t.startsWith(`data:`)){let e=await Ff(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(Ef(t)){if(!C(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=b(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=pe(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},zf=async(e,t={})=>{let n=t.createID??ve,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=pe(r,i),o=b(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=xe(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await Ff(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(Ef(i)){if(!C(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}},Bf=e=>e?JSON.parse(JSON.stringify(e)):null,Vf=e=>e?{...e}:{},Hf=(e,t=Xa.getState())=>{let n=t.getDraft?.(e)??null,r=Vf(t.draftAttachmentViews?.[x(e)]);return{record:Bf(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},Uf=async e=>{let t=e.input??Xa.getState(),n=Hf(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}},Wf=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}}},Gf=async e=>{let t=e.input??Xa.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?Wf({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},Kf=(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},qf=e=>e?.status===`committed`&&e.current===!0,Jf=new Map,Yf=async(e,t)=>{let n=x(e),r=Jf.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Jf.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Jf.get(n)===o&&Jf.delete(n)}},Xf=(e,t)=>({key:e,addLocal:async n=>{await Yf(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Yf(e,async()=>{let r=t(),i=Kf(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 Yf(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 Yf(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:qf(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Yf(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Yf(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Yf(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Zf=4e4,Qf=0,$f=null;function ep(e=Date.now()){Qf=e}function tp(e){return $f=e,()=>{$f===e&&($f=null)}}function np(e){$f?.(e)}function rp(e=Date.now(),t=Zf){return Qf<=0?!1:e-Qf>=t}var ip=3e4,ap=200,op=new Map;function sp(e,t,n){return`${n?.transport??u()}\n${n?.generation??f()}\n${e.trim()}\n${t}`}function cp(e,t,n){if(!e||!t)return!1;let r=op.get(sp(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<ip}function lp(e,t,n){if(!e||!t)return;let r=sp(e,t,n);for(op.has(r)&&op.delete(r);op.size>=ap;){let e=op.keys().next().value;if(typeof e!=`string`)break;op.delete(e)}op.set(r,n?.now??Date.now())}var up=768,dp=()=>{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},fp=()=>{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(ye())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=up&&dp()?`mobile`:`desktop`},pp=()=>fp()===`mobile`,mp=3,hp=2,gp=4,_p=4,vp=100,yp=30;function bp(){return a()?`relay`:`local`}function xp(e=bp()){return e===`relay`?hp:mp}function Sp(e=bp()){return e===`relay`?_p:gp}function Cp(e){return xp(Ep(e))}function wp(){return vp}function Tp(){return yp}function Ep(e){return e===`relay`||e===`local`?e:bp()}var Dp=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function Op(){return{pages:[],pageParams:[]}}function kp(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 Ap(e){return{pages:Object.freeze(e.pages.map(kp)),pageParams:Object.freeze([...e.pageParams])}}function jp(e,t,n=Dp){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 kp({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function Mp(e){if(!e||e.pages.length===0)return qt;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 Np(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=Mp(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function Pp(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function Fp(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 kp({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:Pp(t)}})}function Ip(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,d=r===`initial`?Lp(e,i):null;if(!e||e.pages.length===0||r===`initial`&&!d)return Ap({pages:[Fp(`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=[],f=new Set;for(let e of i.records){let t=e.info.id;if(!t||r.has(t)||f.has(t))continue;let n=o.find(e=>e.id===t)??e.info;f.add(t),d.push(n)}for(let e of o)!e?.id||r.has(e.id)||f.has(e.id)||i.records.some(t=>t.info.id===e.id)||(f.add(e.id),d.push(e));let p=e.pages.find(e=>e.messageOrder.length>0)?.messageOrder[0],m=p?o.find(e=>e.id===p):void 0;if(m&&d.some(e=>e.time.created>m.time.created)){let t=new Map(o.map(e=>[e.id,e]));return Ap({pages:[Fp(`tail`,Rp(e.pages.flatMap(e=>e.messageOrder).map(e=>t.get(e)).filter(e=>!!e),d),s,l,u,n.boundary?.loadedTurns??c,a)],pageParams:[null]})}let h=[Fp(`history`,d,s,l,u,c,a)],g=[l];for(let r=0;r<e.pages.length;r+=1){let i=e.pages[r],o=[];for(let e of i.messageOrder){let r=n.message[t]?.find(t=>t.id===e)??i.messagesByID[e];r&&o.push(r)}h.push(zp(i,o,s,a)),g.push(e.pageParams[r]??null)}return Ap({pages:h,pageParams:g})}let f=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)f.has(n)||f.set(n,t)});let p=e.pages.map(()=>[]),m=[];for(let e of o){let t=f.get(e.id);t===void 0?m.push(e):p[t].push(e)}let h=e.pages.map((t,n)=>{let i=p[n]??[];return n===e.pages.length-1&&m.length>0?zp(t,r===`reconcile-page`||r===`initial`?Rp(i,m):[...i,...m],s,a):zp(t,i,s,a)}),g=d??n.boundary;if(h.length>0&&g){let e=h[0],t=g.kind===`has-more`?g.cursor:null,n=g.kind===`exhausted`;(e.cursor!==t||e.complete!==n)&&(h[0]=kp({...e,cursor:t,complete:n,sync:{...e.sync,liveRevision:a}}))}return Ap({pages:h,pageParams:[...e.pageParams]})}function Lp(e,t){if(!e||e.pages.length===0)return null;let n=Mp(e);if(n.kind===`unknown`)return null;let r=t.records.find(e=>e.info?.id)?.info.id;return r&&e.pages.some(e=>e.messageOrder.includes(r))?n:null}function Rp(e,t){let n=e.slice();for(let e of t){let t=Wn(e),r=n.length;for(let e=0;e<n.length;e+=1)if(Ne(t,Wn(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function zp(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&&Bp(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||Hp(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:kp({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:Pp(t)}})}function Bp(e,t){return e===t||e.id===t.id&&e===t}function Vp(e,t){return e===t?!0:!e||!t||e.id!==t.id||e.type!==t.type?!1:e.type===`compaction`&&t.type===`compaction`?e.status===t.status&&e.reason===t.reason&&e.summary===t.summary&&e.recent===t.recent&&e.error===t.error:e.text===t.text&&e.state===t.state&&e.shellAction===t.shellAction&&e.output===t.output&&e.metadata===t.metadata&&e.time===t.time&&e.url===t.url&&e.slim===t.slim}function Hp(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!Vp(e[n],t[n]))return!1;return!0}function Up(e){return e.filter(e=>!!e?.id)}function Wp(e,t,n){let r=e.properties;if(r){if(typeof r.messageID==`string`)return r.messageID;if(typeof r.assistantMessageID==`string`)return r.assistantMessageID;if(typeof r.info?.id==`string`)return r.info.id;if(typeof r.part?.messageID==`string`)return r.part.messageID;if(typeof r.shell?.id==`string`)return dn(t,n,r.shell.id);if(e.type.startsWith(`session.compaction.`)){if(r.inputID)return r.inputID;let e=t.message[n]??[];for(let n=e.length-1;n>=0;--n){let r=e[n];if(t.part[r.id]?.some(e=>e.type===`compaction`))return r.id}}}}function Gp(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=Ip(e??Op(),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&&Hp(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 Ap({pages:e.pages.map((t,n)=>zp(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function Kp(e,t){let n=Np(e,t),r=Mp(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 qp(e,t,n,r){if(!nr(n.type))return{data:e,result:{applied:!1,changed:!1}};if(n.type===`session.revert.committed`){let i=typeof n.properties?.to==`string`?n.properties.to:void 0;return i?tm(e,t,i,r):{data:e,result:{applied:!1,changed:!1}}}let{draft:i,previousBoundary:a}=Kp(e,t),o=pn(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=Wp(n,i,t),c=new Set;return s&&c.add(s),{data:Gp(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function Jp(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 Yp(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 Xp(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=Kp(e,t),o=!1,s=0,c,l=new Set,u=Jp(e),d=Yp(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 v=0;v<n.length;v+=1){let y=n[v];if(!nr(y.type))continue;if(y.type===`session.revert.committed`){let o=typeof y.properties?.to==`string`?y.properties.to:void 0;if(!o)continue;let u=r+s+1,d=tm(s>0||l.size>0?Gp(e,t,i,a,u,l):e,t,o,u+1),f=n.slice(v+1);if(f.length===0)return{data:d.data,result:{applied:!0,changed:!!(d.result.changed||s>0),materialization:c}};let p=Xp(d.data,t,f,(d.data?.pages[d.data.pages.length-1]?.sync.liveRevision??u)+1);return{data:p.data??d.data,result:{applied:!0,changed:!!(d.result.changed||p.result.changed||s>0),materialization:c??p.result.materialization}}}o=!0;let b=pn(i,y),x=typeof b==`boolean`?b:b.changed,S=typeof b==`boolean`?void 0:b.materialization;if(S&&!c&&(c=S),!x)continue;let C=i.message[t]??[];C!==f&&(f=C,g(C));let w=Wp(y,i,t),T=h.length!==_.length||h.some((e,t)=>e!==_[t]),E=T;if(w){let e=i.part[w],t=u.get(w);e&&t&&Hp(t,e)?i.part[w]=[...t]:e?(E=!0,u.set(w,e)):t&&(E=!0,u.delete(w));let n=p.get(w),r=d.get(w);if(!(n&&r&&r===n))if(n&&r&&Bp(r,n)){let e=m.get(w);e!==void 0&&f[e]&&(f[e]=r,p.set(w,r))}else n?(E=!0,d.set(w,n)):r&&(E=!0,d.delete(w))}else E=!0;if(T){_=h.slice();for(let e of f)e?.id&&!d.has(e.id)&&d.set(e.id,e)}E&&(s+=1,w&&l.add(w))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:Gp(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function Zp(e,t,n,r,i){let a=e&&e.pages.length>0?e:Ap({pages:[Fp(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=Np(a,t),s=o.message[t]?[...o.message[t]]:[],c=s.findIndex(e=>e.id===n.id);c<0?s.push(n):s[c]=Zt(s[c],n);let l={...o.part,[n.id]:Up(r)};return{data:Ap({pages:a.pages.map((e,t)=>t===a.pages.length-1?zp(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}),l,i):e.messagesByID[n.id]?zp(e,e.messageOrder.filter(e=>e!==n.id).map(t=>e.messagesByID[t]).filter(Boolean),l,i):e),pageParams:[...a.pageParams]}),result:{applied:!0,changed:!0}}}function Qp(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:Ap({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 zp(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function $p(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=Np(e,t),i=Gt({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:Mp(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=Ap({pages:[Fp(`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:Mp(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=Ap({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?zp(t,Rp(r,l),o,a):zp(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:Mp(u)}}}function em(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=Np(e,t),a=Ht(i,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 a.applied?{data:Ip(e,t,{message:a.message,part:a.part,messages:a.messages,boundary:a.boundary},n.purpose,n.page,r),result:{applied:!0,changed:a.changed,boundary:a.boundary,meta:a.meta,confirmedOptimisticIDs:a.confirmedOptimisticIDs}}:{data:e,result:{applied:!1,changed:!1,error:a.error}}}case`sse-event`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return qp(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Xp(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Zp(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 Qp(e,n.messageID,t)}case`durable-seed`:return $p(e,t,n);case`reset`:return n.page?em(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)}};case`revert-committed`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return tm(e,t,n.to,r+1)}default:return{data:e,result:{applied:!1,changed:!1}}}}function tm(e,t,n,r){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1},needsAuthorityRecovery:!0};let i=lm(e,t),a=i.messageOrder,o=a.findIndex(e=>e===n),s=Mp(e),c=s.kind!==`exhausted`;if(!(o>=0))return c?{data:void 0,result:{applied:!0,changed:!0},needsAuthorityRecovery:!0}:{data:e,result:{applied:!0,changed:!1}};let l=a.slice(0,o);if(l.length===a.length)return{data:e,result:{applied:!0,changed:!1}};let u={},d={};for(let e of l){let t=i.messagesByID[e];if(!t)continue;u[e]=t;let n=i.partsByMessageID[e];n&&(d[e]=n)}let f=l.filter(e=>qn(u[e],d[e])).length,p=e.pages[0],m=s.kind===`exhausted`||l.length===0;return{data:{pages:[{kind:`tail`,messageOrder:l,messagesByID:u,partsByMessageID:d,cursor:m?null:p?.cursor??null,complete:m,turnCount:f,sync:{liveRevision:r,confirmedHeadMessageID:l.length>0?l[l.length-1]:null}}],pageParams:[null]},result:{applied:!0,changed:!0}}}function nm(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 rm(e,t,n,r=`materialize`){return em(e,n,{type:`http-page`,purpose:r,page:nm(t),liveRevision:t.sync.liveRevision}).data}function im(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return Ap(t);if(t.pages.length===e.pages.length){let r=cm(e,t);if(r===e)return e;if(sm(e,t)||om(e,t))return r;let i=t.pages[t.pages.length-1];return rm(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0],i=em(e,n,{type:`http-page`,purpose:`prepend`,page:nm(r),liveRevision:r.sync.liveRevision});return i.data?i.data:e}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return rm(e,r,n)??Ap(t)}return Ap(t)}function am(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function om(e,t){let n=am(e),r=am(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=lm(e,``),a=lm(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function sm(e,t){let n=am(e);if(n.size===0)return!1;let r=am(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=lm(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||Ne(Wn(t),Wn(n))>0)return!1}return!0}function cm(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,kp(t))});return!n&&e.pageParams.length===t.pageParams.length?e:Ap({pages:r,pageParams:[...t.pageParams]})}function lm(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:Mp(e),liveRevision:a}}var um=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},dm=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},fm=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},pm=e=>e.trim(),mm=e=>e?.trim()||`tail`,hm=new Set([502,503,504]),gm=[`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 _m(e){if(!e||e instanceof um||e instanceof dm)return!1;if(e instanceof fm)return e.status>=400&&e.status<500?!1:hm.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(hm.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(hm.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:gm.some(e=>n.includes(e))}function vm(e,t){return e>=2?!1:_m(t)}var ym=(e,t=u(),n=f())=>[t,n,`sessionMessages`,`page`,pm(e.directory),e.sessionID,e.limit,mm(e.before)],bm=(e,t=u(),n=f())=>[t,n,`session-transcript`,pm(e.directory),e.sessionID];function xm(e){if(!e||typeof e!=`object`)throw new dm(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new dm(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new dm(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new dm(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new dm(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new dm(`session message page: cursor must be string when set`);return e}function Sm(e,t){let n=typeof e==`string`?e.trim():``;if(!n||t.complete===!0)return;let r=typeof t.cursor==`string`?t.cursor.trim():``;if(!r)throw new dm(`session message page: complete=false requires non-empty cursor`);if(r===n)throw new dm(`session message page: prepend returned the same cursor without progress`)}var Cm=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}:{}})},wm=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw new um},Tm=(e,t,n=u(),r={},i=(r.getGeneration??f)())=>{let a=pm(e.directory),o=e.sessionID,s=e.limit,c=e.before?.trim()||void 0;return{queryKey:ym({directory:a,sessionID:o,limit:s,before:c},n,i),queryFn:async({signal:e})=>{wm(n,i,r);let l=await t({directory:a,sessionID:o,limit:s,before:c,signal:e});wm(n,i,r);let u=xm(l);return Sm(c,u),Cm(u)},staleTime:1/0,gcTime:3e5,retry:vm,retryDelay:e=>Math.min(500*2**e,4e3)}},Em=(e,t,n=F,r=u(),i={},a=(i.getGeneration??f)())=>n.fetchQuery(Tm(e,t,r,i,a));function Dm(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 Om(e){return Cm({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function km(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function Am(e){let t=pm(e.directory),n=e.sessionID,r=e.transport??u(),i=e.probe??{},a=e.generation??(i.getGeneration??f)(),o=e.initialLimit??xp(),s=e.historyLimit??Sp(),c=e.client??F,l=bm({directory:t,sessionID:n},r,a),d=async t=>Om(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:l,queryFn:async e=>{wm(r,a,i);let l=e.pageParam?.trim()||void 0,u=l?s:o,f=l?`prepend`:`initial`,p=await Em({directory:t,sessionID:n,limit:u,before:l},d,c,r,i,a);wm(r,a,i);let m=Dm(p);return jp(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:km,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:!1,maxPages:void 0,structuralSharing:(e,t)=>im(e,t,n)}}function jm(e){let t=e.client??F,n=Am({...e,client:t}),r=new hr(t,{...n,structuralSharing:(t,n)=>im(t,n,e.sessionID)});return{queryKey:n.queryKey,observer:r,ensureInitial:async()=>{let e=r.getCurrentResult().data;if(e&&e.pages.length>0)return Ap(e);let t=await r.refetch(),n=t.data??r.getCurrentResult().data;if(n&&n.pages.length>0)return Ap(n);throw t.error??r.getCurrentResult().error??Error(`transcript initial fetch failed`)},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:Ap(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return Ap(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:Ap(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function Mm(e,t,n,r){let i=e.getQueryData(t),a=em(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 Nm(e,t=F,n=u(),r=f()){return t.getQueryData(bm(e,n,r))}function Pm(){return L()||pp()}function Fm(){return L()?4:pp()?12:40}var Im=1048576,Lm=4*Im,Rm=12*Im,zm=40*Im;function Bm(){return L()?Lm:pp()?Rm:zm}var Vm=e=>e.trim();function Hm(e){return{transport:e.transport,generation:e.generation,directory:Vm(e.directory),sessionID:e.sessionID}}function Um(e){let t=Hm(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function Wm(e){return`${e.transport}\n${e.generation}\n${Vm(e.directory)}`}var Gm={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function Km(e,t,n){return[t,n,Gm.checkpoint,Vm(e.directory),e.sessionID]}function qm(e){let t=Hm(e);return[{queryKey:bm({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,Gm.transportPageRoot,Gm.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Gm.taskRoot,Gm.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Gm.taskRoot,Gm.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:Km({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function Jm(){let e=new Map;return{retain(t){let n=Hm(t),r=Um(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(Um(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(Um(t))?.count??0},clear(){e.clear()}}}function Ym(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Xm=3e4;function Zm(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function Qm(e){return!Array.isArray(e)||e.length<5||e[2]!==Gm.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 $m(e){let t=e.client,n=e.activeRegistry??Jm(),r=e.counters??Ym(),i=e.getLimit??Fm,a=e.now??Date.now,o=e.minResidencyMs??Xm,s=new Map,c=new Map,l=e=>{let t=Hm(e),n=Um(t),r=c.get(t.sessionID);r||(r=new Map,c.set(t.sessionID,r)),r.set(n,t)},u=e=>{let t=Hm(e),n=Um(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=Qm(e.queryKey);t&&l(t)}let f=t.getQueryCache().subscribe(e=>{if(e.type===`added`||e.type===`updated`){let t=Qm(e.query.queryKey);t&&l(t);return}if(e.type===`removed`){let t=Qm(e.query.queryKey);t&&u(t)}}),p=e=>{let t=Um(Hm(e));s.set(t,a())},m=e=>{let t=Um(Hm(e)),n=s.get(t);return n!==void 0&&a()-n<o},h=e=>{let r=Hm(e);if(n.isRetained(r))return!0;let i=bm({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:Vm(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=Qm(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:Zm(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:Vm(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=Hm(e);s.delete(Um(t)),u(t);for(let t of qm(e))v(t)},b=(e,t)=>{r.purgeGeneration+=1,d(e,t);let n=[[e,t,Gm.canonical],[e,t,Gm.transportPageRoot,Gm.transportPageKind],[e,t,Gm.taskRoot],[e,t,Gm.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=>Um(Hm(e)))),o=g({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=Wm(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=Um(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(Um(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 eh=new Map,th=new Set;function nh(e,t){return`${e}\n${t}`}function rh(){for(let e of th)e()}function ih(e,t){if(!e||!t)return;let n=nh(e,t),r=eh.get(n)??0;eh.set(n,r+1),r===0&&rh()}function ah(e,t){if(!e||!t)return;let n=nh(e,t),r=eh.get(n);if(r){if(r<=1){eh.delete(n),rh();return}eh.set(n,r-1)}}function oh(e,t){if(!e)return!1;if(t)return eh.has(nh(t,e));let n=`\n${e}`;for(let e of eh.keys())if(e.endsWith(n))return!0;return!1}function sh(e){return th.add(e),()=>{th.delete(e)}}function ch(e){let t=e.directory.trim(),n=new Set;for(let r of[...e.viewedSessions??[],...e.viewed?[e.viewed]:[]])r.directory.trim()===t&&n.add(r.sessionID);for(let t of e.busyOrRetrySessionIDs??[])n.add(t);for(let r of e.activeScopes)r.directory.trim()===t&&n.add(r.sessionID);return[...n].map(e=>({directory:t,sessionID:e}))}function lh(e){let t=e.repository,n=e.cacheBudget??t.getCacheBudget?.(),r=e.now??Date.now,i=Math.max(1,e.directoryConcurrency??2),a=()=>({transport:e.probe?.getTransport?.()??e.transport??u(),generation:e.probe?.getGeneration?.()??e.generation??f()}),o=e=>({...a(),...e,directory:e.directory.trim()}),s=e=>JSON.stringify([e.transport,e.generation,e.directory,e.sessionID]),c=0,l=!1,d=new Set,p=new Map,m=new Map,h=new Map,g=new Map,_=new Set,v=e=>!l&&e.epoch===c&&e.scope.transport===a().transport&&e.scope.generation===a().generation,y=n=>{let a=m.get(n);for(;a?.length&&(h.get(n)??0)<i;){let i=a.shift();if(!v(i)){i.resolve(null);continue}h.set(n,(h.get(n)??0)+1),i.gap&&ih(n,i.scope.sessionID);let o=()=>{_.delete(o)&&i.gap&&ah(n,i.scope.sessionID)};_.add(o),(async()=>{try{let n=t.hasSession?.(i.scope)?await t.refreshFromAuthority(i.scope):await t.ensureInitial(i.scope);if(!v(i)){i.resolve(null);return}d.delete(s(i.scope)),p.set(s(i.scope),r());let a=n.messagesByID[n.messageOrder.at(-1)??``];try{await e.confirmSessionStatus?.(i.scope,{tailOpen:!!(a?.role===`assistant`&&jn(a))})}catch{}i.resolve(n)}catch(t){v(i)?(d.add(s(i.scope)),e.onError?.(t,{...i.scope,phase:`native-refresh`}),i.reject(t)):i.resolve(null)}finally{o(),i.epoch===c&&(h.set(n,Math.max(0,(h.get(n)??1)-1)),y(n))}})()}},b=(e,t)=>{let n=o(e),r=s(n),i=g.get(r);if(i)return i;let a,l,u=new Promise((e,t)=>{a=e,l=t}).finally(()=>{g.get(r)===u&&g.delete(r)});g.set(r,u);let d=m.get(n.directory)??[];return d.push({scope:n,gap:t,epoch:c,resolve:a,reject:l}),m.set(n.directory,d),y(n.directory),u},x=()=>{let t=a(),r=n?.listCanonical(t)??[],i=n?.activeRegistry.listRetained()??[],o=[...e.getViewedSessions?.()??[],...e.getViewedSession()?[e.getViewedSession()]:[]],s=new Set([...e.listDirectories(),...r.map(e=>e.scope.directory),...i.map(e=>e.directory),...o.map(e=>e.directory)]),c=[];for(let n of s)c.push(...ch({directory:n,viewedSessions:o,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(n),activeScopes:[...r.filter(e=>e.active).map(e=>e.scope),...i.filter(e=>e.transport===t.transport&&e.generation===t.generation)]}));return{canonical:r,immediate:c}},S=()=>{let{canonical:e,immediate:t}=x();for(let n of[...e.map(e=>e.scope),...t])d.add(s(o(n)))},C=()=>{c+=1;for(let e of _)e();for(let e of m.values())for(let t of e)t.resolve(null);m.clear(),h.clear(),g.clear(),d.clear(),p.clear()};return{captureCheckpoints:()=>{l||S()},onCompensation(e){if(!(l||!e.isReconnect||e.runtimeGeneration!==a().generation)){S();for(let e of x().immediate)b(e,!0).catch(()=>void 0)}},ensureOnObserve(e){if(l)return Promise.resolve(null);let n=o(e),i=s(n),a=g.get(i);if(a)return a;let c=d.has(i);return!c&&(!t.hasSession?.(n)||r()-(p.get(i)??-1/0)<6e4)?Promise.resolve(null):b(n,c)},cancelAll:C,isSessionInFlight:(e,t)=>g.has(s(o({directory:e,sessionID:t}))),destroy(){l=!0,C()}}}var uh=e=>e.trim(),dh=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session status runtime changed`)},fh=(e,t={})=>{let n=uh(e),r=t.transport??u(),i=t.loadSnapshot??((e,t)=>V.getSessionStatusForDirectory(e,t)),a=t.now??Date.now,o=t.runtimeProbe??{},s=(o.getGeneration??f)();return yr({queryKey:I.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{dh(r,s,o);let t=a(),c=await i(n,e);if(dh(r,s,o),c===null)throw Error(`session status snapshot unavailable`);return{snapshot:c,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},ph=(e,t={})=>{let{client:n=F,...r}=t;return n.fetchQuery(fh(e,r))},mh=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session active runtime changed`)},hh=(e={})=>{let t=e.transport??u(),n=e.loadActive??(e=>V.getSessionActive(e)),r=e.now??Date.now,i=e.runtimeProbe??{},a=(i.getGeneration??f)();return yr({queryKey:I.sessionActive.snapshot(t,a),queryFn:async({signal:e})=>{mh(t,a,i);let o=r(),s=await n(e);return mh(t,a,i),{result:s,requestedAt:o}},staleTime:0,gcTime:3e5,retry:!1})},gh=(e={})=>{let{client:t=F,...n}=e;return t.fetchQuery(hh(n))},_h;function vh(e){_h=e}function yh(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 bh(e,t){return JSON.stringify(e)===JSON.stringify(t)}function xh(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Sh(e,t,n){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}})}function Ch(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(Sh(e,t,n),!0)}function wh(e,t,n=Date.now()){let r=e.getState().session_status?.[t];return r?.type===`busy`?!1:r?.type===`retry`?Ch(e,t,n):(Sh(e,t,n),!0)}function Th(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=yh(o[e]);if(t){c[e]=n&&xh(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 Eh(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=yh(t[o]);if(n&&n.type!==`idle`){bh(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 Dh(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Oh(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 ph(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 gh({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}=Th(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=Dh(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Eh(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??_h;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 kh({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?.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:Oh(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Ah(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function jh(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 Mh(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 Nh(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(zn(e))??Promise.resolve(),r.get($t(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=zn(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=$t(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??Bm)();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 Ph=new Map;function Fh(e,t){let n=Ph.get(e);if(n)return n;let r=t().finally(()=>{Ph.get(e)===r&&Ph.delete(e)});return Ph.set(e,r),r}var Ih=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Lh(e){return Fh(Ih(e),e.request)}function Rh(e,t){return`${e}\n${t}`}var zh=new Map;function Bh(e){return zh.get(e)}async function Vh(e){return Lh({runtimeKey:Rh(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 zh.set(r.id,i),{info:ad(r),parts:i}}})}function Hh(e,t){let n=e.info;return n.role===t||n.clientRole===t}function Uh(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Hh(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 Wh(e){if(e.complete){let t=e.records.some(e=>Hh(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=Uh(e.records);if(t.length===0){let t=e.records.some(e=>Hh(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=>Hh(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Gh(e){return e.slim===!0}var Kh=/bearer|token|authorization|password|secret|cookie/i,qh=new Set([`message.part.delta`]);function Jh(e){return typeof e==`string`&&e.includes(`-`)}var Yh=`openchamber.client-diagnostics.enabled`;function Xh(e){return e===`true`||e!==`false`&&null}function Zh(e){return e.preference===!0||e.preference!==!1&&Jh(e.version)}function Qh(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function $h(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function eg(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 tg(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return Kh.test(t)?`redacted-error`:t}function ng(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)Gh(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function rg(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function ig(e){let t=0;for(let n of e.messageOrder)vg(e.messagesByID[n])===!0&&(t+=1);return t}function ag(e){let t=e.transcript?ng(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:rg(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:ig(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...tg(e.error??e.request?.error)?{error:tg(e.error??e.request?.error)}:{},...eg(e.error)===void 0?{}:{httpStatus:eg(e.error)}}}function og(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 sg(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 cg(e){return typeof e==`string`&&qh.has(e)}function lg(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return cg(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>cg(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;case`revert-committed`:return`purge`;default:return null}}function ug(e){if(e.type===`http-page`)return e.purpose}function dg(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function fg(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 pg(e){return e.__openchamberOptimistic===!0}function mg(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(`
|
|
402
|
+
`).trim();if(n)return Kh.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function hg(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function gg(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var _g=e=>typeof e==`string`&&e.trim().length>0;function vg(e){if(!e||hg(e)!==`assistant`)return;let t=e,n=!_g(t.mode)&&!_g(t.agent),r=!_g(t.modelID)||!_g(t.providerID);return n||r}function yg(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function bg(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)Gh(e)?r+=1:i+=1,pg(e)&&(a=!0);let o=e.messagesByID[t],s=hg(o),c=vg(o),l=s===`user`?mg(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:gg(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 xg(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:yg(e),after:yg(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 Sg(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:xg(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 Cg(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function wg(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function Tg(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Eg(e){let t=Tg(e.partID),n=Tg(e.messageID),r=Tg(e.directory),i=Tg(e.childSessionID),a=Tg(e.toolStatus),o=Tg(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 Dg(e){return[e.sessionID,Tg(e.partID)??``,e.childSessionPresent?`1`:`0`,Tg(e.childSessionID)??``,Tg(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`,Tg(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Og(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Eg(e)}}function kg(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:wg(e),...Eg(e)}}var Ag=`openchamber-transcript-diagnostics`,jg=`events`,Mg=1,Ng=(e,t)=>{try{return e.error??Error(t)}catch{return Error(t)}},Pg=(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`))}}}),Fg=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Mg),i=!1,a=()=>{i||(i=!0,n(Ng(r,`IndexedDB open failed`)))};r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(jg)||e.createObjectStore(jg,{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}),Ig=(e=Ag)=>{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=Fg(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(jg,e)}catch(e){throw l(),e}let i=r.objectStore(jg),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 Pg(n.add(t),n.transaction);let r=await Pg(n.getAllKeys(),n.transaction),i=r.length-t;if(i>0)for(let e of r.slice(0,i))await Pg(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=>Pg(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 Pg(e.clear(),e.transaction)})}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})}}};function Lg(e={}){let t=e.driver??Ig(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Rg=fr(`OpenChamberMedia`);function zg(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Bg(){return Tn()&&pr!==void 0&&pr.isPluginAvailable(`OpenChamberMedia`)}function Vg(){return`2.0.0-beta.15`}function Hg(){if(typeof localStorage>`u`)return null;try{return Xh(localStorage.getItem(Yh))}catch{return null}}function Ug(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(Yh,e?`true`:`false`)}catch{}}function Wg(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var Gg;function Kg(e=Vg()){return Zh({version:e,preference:Hg()})}function qg(e={}){return sg({sink:Wg()===`indexeddb`?(e.createIndexedDBSink??Lg)():(e.createMemorySink??og)(),isEnabled:e.isEnabled??Kg})}function Jg(){return Gg??=qg(),Gg}function Yg(e){Jg().record(e)}function Xg(e){try{return Kg()?bg(e()):void 0}catch{return}}function Zg(e){try{Yg(Sg(e))}catch{}}function Qg(e){try{Yg(Og(e))}catch{}}function $g(e){try{Yg(kg(e))}catch{}}function e_(e){if(e!==void 0)return typeof e==`function`?e():e}function t_(e){return!lg(e.command)||e.changed===!1&&(e.command.type===`sse-event`||e.command.type===`sse-event-batch`)?!1:(e.isEnabled??(()=>Jg().isEnabled()))()}function n_(e){if(!t_(e))return;let t=lg(e.command);t&&Yg(ag({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:e_(e.transcript),request:e_(e.request),hydration:e_(e.hydration),command:e.command.type,purpose:ug(e.command),sseType:dg(e.command),source:fg(e.command),error:e.error}))}async function r_(){let e=await Jg().exportReport(),t=S()?.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 i_(e,t=Qh()){if(Bg())return(await Rg.saveFile({dataBase64:zg(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 a_(){let e=await r_(),t=Qh();return{content:e,fileName:t,outcome:await i_(e,t),eventCount:$h(e)}}function o_(e){return e.trim()}function s_(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??u)(),r=e.generation??t.generation??(t.probe?.getGeneration??f)();return{directory:o_(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 c_(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:qt,liveRevision:0}}function l_(e,t){if(!e||e.pages.length===0)return c_(t);let n=lm(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function u_(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function d_(e,t,n){let r=new Set,i=new Set([...Object.keys(e),...Object.keys(t),...n.messageOrder,...Object.keys(n.messagesByID),...Object.keys(n.partsByMessageID)]);for(let a of i)e[a]!==n.messagesByID[a]&&r.add(a),t[a]!==n.partsByMessageID[a]&&r.add(a);for(let e of n.messageOrder)u_(n.partsByMessageID[e])&&r.add(e);return r}function f_(e){let t=[];for(let n of e.messageOrder){let r=e.messagesByID[n];r?.id&&t.push({info:r,parts:[...e.partsByMessageID[n]??[]]})}return t}function p_(e){let t=[];for(let n of e.records)n.info?.id&&t.push({info:n.info,parts:[...n.parts??[]]});return t}function m_(e,t){let n=[];for(let r of e.messageOrder)t.has(r)||u_(e.partsByMessageID[r])||n.push(r);return n}function h_(e={}){let t=e.client??F,n=e.cacheBudget??$m({client:t,activeRegistry:e.activeRegistry??Jm()}),r=n.activeRegistry,i=new Map,a=new Map,o=new Map,s=new Map,c=new Map,p=e.durableStore?Nh(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Ah),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=new Map,w=new Set,T=new Map,E=e=>C.get(e)??0,D=e=>{let t=E(e)+1;return C.set(e,t),t},O=e=>{let t=E(e);return T.set(e,t),t},k=(e,t)=>E(e)===t,A=(e,t)=>{let n=q(t);if(x.has(n))return;let r=ce(e);!ut(r)&&!b.has(n)||(x.add(n),Yg(ag({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},j=0,M=e=>{let t=c.get(e);return t||(t={messages:new Map,parts:new Map},c.set(e,t)),t},N=n=>{let r=s_(n,e);return Nm({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},ee=t=>{let n=s_(t,e);return bm({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},te=t=>{let n=s_(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},ne=e=>{let t=te(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},re=n=>{let r=e.probe??{getTransport:u,getGeneration:f},a=s_(n,{...e,transport:void 0,generation:void 0,probe:r}),o=q(a),s=i.get(o);if(s)return s;let c=e.fetcher;if(!c)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=jm({directory:a.directory,sessionID:a.sessionID,fetcher:async e=>{if(!e.before)return c(e);let t=E(o),n=await c(e);if(!k(o,t))throw new um(`read_epoch_retired`);return n},transport:a.transport,generation:a.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return i.set(o,l),l},P=t=>{let n=q(s_(t,e)),r=a.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},ie=n=>{let r=q(s_(n,e));if(o.has(r))return;let i=ee(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]&&P(n)});o.set(r,a)},ae=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)},oe=(e,t)=>{let n=M(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},se=(e,t)=>{let n=M(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)},ce=t=>{let n=s_(t,e),r=q(n),i=N(t),a=M(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=l_(i,n.sessionID),s=oe(r,o);return a.cachedFrom=i,a.hasTranscriptCache=!0,s},I=(e,t)=>`${q(e)}\n${t}`,le=(e,t)=>{let n=q(e),r=v.get(n);r&&(r.delete(t),r.size===0&&v.delete(n))},L=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t)},ue=e=>{for(let t of g.keys())t.startsWith(e)&&g.delete(t);for(let t of _.keys())t.startsWith(e)&&_.delete(t)},de=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)},fe=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},pe=!1,R=t=>{let n=s_({directory:t.directory,sessionID:t.sessionID},e);return!pe&&n.transport===t.transport&&n.generation===t.generation},me=(e,t,n)=>{p&&d()&&p.persistSettled(Ah(e),t,n??[])},z=(e,t,n,r)=>{if(!p||j>0||!d()||!r.applied||!r.changed)return;let i=Ah(t);if(n.type===`remove-message`){p.removeMessage(i,n.messageID);return}if(n.type===`reset`||n.type===`revert-committed`){if(p.clearSession(i),n.type===`reset`&&n.page){let r=ce(e);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;me(t,n,r.partsByMessageID[e.info.id]??e.parts)}}else if(n.type===`revert-committed`){let n=ce(e);for(let e of n.messageOrder){let r=n.messagesByID[e];r&&me(t,r,n.partsByMessageID[e])}}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=ce(e);for(let e of r){let n=Mh(e);if(n.action===`remove`){p.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&me(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=ce(e),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&me(t,n,r.partsByMessageID[e.info.id])}}}},he=async n=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let r=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}},i=e.probe??{getTransport:u,getGeneration:f};return jh(await Em({directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??xp()},r,t,n.transport,i,n.generation))},ge=(e,t)=>{for(let n of t){let t=`${e.directory}\n${e.sessionID}\n${n}`;gt(t,()=>B.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)}},_e=(e,t)=>{let r=q(t),i=h.get(r);if(i)return i;let a=l(),o=O(r),s=(async()=>{let i=Date.now();m.set(r,{status:`loading`});try{let i=await he(t);if(!R(t)||l()!==a||!k(r,o))return m.delete(r),B.getTranscript(e);B.apply(e,{type:`http-page`,purpose:`initial`,page:i}),lp(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let s=v.get(r);if(s&&s.size>0){let n=[],r=0;for(let a of i.records){let i=a.info.id;if(!i||!s.has(i))continue;let o=B.getParts(e,i),c=B.getMessage(e,i)??a.info;if(!zt(o,c)){le(t,i),g.set(I(t,i),{status:`ready`}),r+=1;continue}n.push(i)}r>0&&P(e),ge(e,n)}return m.delete(r),n.noteScopeObserved(te(e)),ne(e),B.getTranscript(e)}catch(n){if(n instanceof um||!R(t))return m.delete(r),B.getTranscript(e);throw m.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Yg(ag({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:ce(e),request:B.getRequestState?.(e),hydration:B.getHydrationState?.(e),error:n})),n}finally{h.delete(r)}})();return h.set(r,s),s},ve=new Map,ye=(e,t)=>{let r=q(t),i=h.get(r);if(i)return i;let a=l(),o=O(r),s=(async()=>{let i=Date.now();m.set(r,{status:`loading`});try{return await B.refreshFromAuthority(e),!R(t)||l()!==a||!k(r,o)?(m.delete(r),B.getTranscript(e)):(lp(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),m.delete(r),n.noteScopeObserved(te(e)),ne(e),B.getTranscript(e))}catch(n){return m.delete(r),n instanceof um||!R(t)||Yg(ag({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:ce(e),request:B.getRequestState?.(e),hydration:B.getHydrationState?.(e),error:n})),B.getTranscript(e)}finally{h.delete(r)}})();return h.set(r,s),s},be=t=>{let n=N(t);return!n||n.pages.length===0||y.has(q(s_(t,e)))?!0:Mp(n).kind===`unknown`},B={getTranscript(e){return ce(e)},getPagination(t){let n=s_(t,e),r=q(n),i=B.getTranscript(t);return se(r,Qe(n.sessionID,i.boundary))},getRequestState(t){let n=s_(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=N(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=s_(t,e),r=q(n),i=B.getTranscript(t);ut(i)&&b.set(r,!0);let a=b.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:It({p0Satisfied:a,prependActive:S.has(r),materializeActive:fe(n),earlierHistoryLoaded:tt(i)>1})}},hasSession(e){return N(e)!==void 0},getMessage(t,n){let r=q(s_(t,e)),i=M(r),a=B.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(s_(t,e)),i=M(r),a=B.getTranscript(t).partsByMessageID[n]??g_,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=s_(t,e),i=g.get(I(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!B.getMessage(t,n)||v.get(q(r))?.has(n)||Le(B.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=s_(t,e),i=l(),a=I(r,n),o=Xg(()=>B.getTranscript(t)),s=e=>{try{let t=Xg(e);if(!o||!t)return;Zg({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(!B.getMessage(t,n))return g.set(a,{status:`idle`}),B.getTranscript(t);if(!Le(B.getParts(t,n))&&!v.get(q(r))?.has(n))return g.set(a,{status:`ready`}),B.getTranscript(t);g.set(a,{status:`loading`}),P(t);try{let o=await Vh({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??[]]}}}let t=await V.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n}),i=Ue(r.sessionID,t);if(!i?.info?.id)throw Error(`session.message failed: empty response`);return{data:{info:i.info,parts:[...i.parts??[]]}}}});return!R(r)||l()!==i?(g.delete(a),B.getTranscript(t)):(B.apply(t,{type:`materialize-snapshots`,records:[{info:o.info,parts:o.parts??[]}]}),Le(B.getParts(t,n))?g.set(a,{status:`error`,error:`session.message failed: slim parts remain`}):g.set(a,{status:`ready`}),P(t),B.getTranscript(t))}catch(e){if(!R(r)||l()!==i)return g.delete(a),B.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return g.set(a,{status:`error`,error:n}),P(t),B.getTranscript(t)}}finally{le(r,n)}})();return _.set(a,u),u.then(e=>s(()=>e)).catch(()=>void 0),u.finally(()=>{_.get(a)===u&&_.delete(a)}),u},apply(r,a){let o=s_(r,e),s=ee(r),c=(()=>{switch(a.type){case`http-page`:{let e=q(o),n=T.get(e);if(typeof n==`number`&&!k(e,n))return{applied:!1,changed:!1,error:`stale-read-epoch`};let i=Mm(t,s,o.sessionID,{type:`http-page`,purpose:a.purpose,page:a.page,capturedLiveRevision:a.capturedLiveRevision,liveRevision:a.liveRevision,skipPartTypes:a.skipPartTypes,optimistic:a.optimistic});return i.result.applied&&y.delete(e),i.result.changed&&(P(r),ne(r)),i.result}case`sse-event`:{if(a.event.type===`session.revert.committed`){let e=typeof a.event.properties?.to==`string`?a.event.properties.to:void 0;return e?B.apply(r,{type:`revert-committed`,to:e}):{applied:!1,changed:!1}}let e=Mm(t,s,o.sessionID,{type:`sse-event`,event:a.event});return e.result.applied&&y.delete(q(o)),e.result.changed&&P(r),e.result}case`sse-event-batch`:{let e=a.events,n=!1,i=!1,c=[],l=()=>{if(c.length===0)return;let e=Mm(t,s,o.sessionID,{type:`sse-event-batch`,events:c});c=[],e.result.applied&&(i=!0,y.delete(q(o))),e.result.changed&&(n=!0,P(r))};for(let t of e){if(t.type===`session.revert.committed`){l();let e=typeof t.properties?.to==`string`?t.properties.to:void 0;if(!e)continue;let a=B.apply(r,{type:`revert-committed`,to:e});a.applied&&(i=!0),a.changed&&(n=!0);continue}c.push(t)}return l(),{applied:i,changed:n}}case`optimistic-add`:{e.setOptimisticShadow?.({directory:o.directory,sessionID:o.sessionID,message:a.message,parts:a.parts});let n=Mm(t,s,o.sessionID,{type:`optimistic-add`,message:a.message,parts:a.parts});return n.result.changed&&P(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:o.directory,sessionID:o.sessionID,messageID:a.messageID}),Mm(t,s,o.sessionID,{type:`optimistic-confirm`,messageID:a.messageID}).result;case`optimistic-remove`:{e.clearOptimisticShadow?.({directory:o.directory,sessionID:o.sessionID,messageID:a.messageID});let n=Mm(t,s,o.sessionID,{type:`optimistic-remove`,messageID:a.messageID});return n.result.changed&&P(r),n.result}case`reset`:{if(S.delete(q(o)),v.delete(q(o)),y.delete(q(o)),n.purgeSession(te(r)),!a.page)return P(r),{applied:!0,changed:!0};let e=Mm(t,s,o.sessionID,{type:`reset`,page:a.page,capturedLiveRevision:a.capturedLiveRevision,liveRevision:a.liveRevision,skipPartTypes:a.skipPartTypes});return(e.result.changed||e.result.applied)&&(P(r),ne(r)),e.result}case`materialize-snapshots`:return __(t,s,o.sessionID,a,()=>P(r));case`remove-message`:{let e=Mm(t,s,o.sessionID,{type:`optimistic-remove`,messageID:a.messageID});return e.result.changed&&P(r),e.result}case`revert-committed`:{let c=q(o),l=`${c}\n${a.to}`;if(w.has(l))return{applied:!0,changed:!1};w.add(l),w.size>256&&w.delete(w.values().next().value),D(c),h.delete(c),m.delete(c),S.delete(c),i.delete(c),ue(`${c}\n`);let u=Mm(t,s,o.sessionID,{type:`revert-committed`,to:a.to});return u.needsAuthorityRecovery?(n.purgeSession(te(r)),y.delete(c),v.delete(c),e.durableStore&&e.durableStore.clearSession(Ah(o)).catch(()=>void 0),P(r),e.fetcher&&B.ensureInitial(r).catch(()=>void 0),{applied:!0,changed:!0}):(u.result.applied&&y.delete(c),u.result.changed&&(P(r),ne(r)),{applied:!0,changed:u.result.changed})}default:return{applied:!1,changed:!1}}})();return z(r,o,a,c),c.applied&&(n_({directory:o.directory,sessionID:o.sessionID,transport:o.transport,generation:o.generation,command:a,transcript:()=>B.getTranscript(r),request:()=>B.getRequestState?.(r),hydration:()=>B.getHydrationState?.(r),error:c.error,changed:c.changed}),A(r,o)),c},subscribe(t,i){let o=q(s_(t,e)),c=a.get(o);if(!c){c=new Set,a.set(o,c);let e=te(t);s.set(o,r.retain(e)),n.noteScopeObserved(e)}return c.add(i),ie(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))}ae(o)}}},async ensureInitial(t){let a=s_(t,e),o=l(),s=q(a);if(p&&await p.wait(Ah(a)),l()!==o)return B.getTranscript(t);if(N(t)===void 0&&e.durableStore&&d())try{let n=await e.durableStore.readSession(Ah(a));if(R(a)&&l()===o&&N(t)===void 0&&n.records.length>0){j+=1;try{B.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)zt(t.parts,t.info)&&e.add(t.info.id);e.size>0&&v.set(s,e),y.add(s)}finally{--j}}}catch(e){Yg(ag({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 B.getTranscript(t);if(be(t)&&N(t)!==void 0){let e=Date.now(),n=await _e(t,a);return Yg(ag({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:B.getRequestState?.(t),hydration:B.getHydrationState?.(t)})),A(t,a),n}let u=N(t);if(u&&u.pages.length>0&&!be(t)&&e.fetcher&&!r.isRetained(te(t))){let e=Date.now(),n=await ye(t,a);return Yg(ag({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:B.getRequestState?.(t),hydration:B.getHydrationState?.(t)})),A(t,a),n}let f=re(t),h=Date.now(),g=N(t)!==void 0;m.delete(s);try{await f.ensureInitial()}catch(e){if(l()!==o)return B.getTranscript(t);throw Yg(ag({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:ce(t),request:B.getRequestState?.(t),hydration:B.getHydrationState?.(t),error:e})),e}if(l()!==o)return i.get(s)===f&&(n.purgeSession(te(t)),c.delete(s),P(t)),B.getTranscript(t);m.delete(s),g||lp(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(te(t)),ne(t);let _=B.getTranscript(t);return Yg(ag({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:B.getRequestState?.(t),hydration:B.getHydrationState?.(t)})),A(t,a),_},async fetchPreviousPage(n){if(be(n)&&await B.ensureInitial(n),Mp(N(n)).kind!==`has-more`)return B.getTranscript(n);let r=s_(n,e),i=q(r),a=O(i);S.add(i),P(n);let o=Date.now();try{if(await re(n).fetchPreviousPage(),!k(i,a))return B.getTranscript(n);ne(n);let e=B.getTranscript(n);return Yg(ag({kind:`http-page`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-o,purpose:`prepend`,command:`http-page`,transcript:e,request:B.getRequestState?.(n),hydration:B.getHydrationState?.(n)})),e}catch(e){if(!k(i,a)){let e=N(n);return e&&t.setQueryData(ee(n),e),B.getTranscript(n)}throw Yg(ag({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-o,purpose:`prepend`,error:e})),e}finally{S.delete(i),P(n)}},getController(t){let n=s_(t,e);return i.get(q(n))},getCacheBudget(){return n},async refreshFromAuthority(r){let i=e.fetcher;if(!i)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let a=s_(r,e),o=q(a),s=O(o),c=`${o}\n${s}\n${l()}`,u=ve.get(c);if(u)return u;let d=(async()=>{let c=l(),u=Xg(()=>B.getTranscript(r)),d=B.getTranscript(r),f={...d.messagesByID},p={...d.partsByMessageID},m=await i({directory:a.directory,sessionID:a.sessionID,limit:e.initialLimit??xp(),signal:new AbortController().signal});if(l()!==c||!k(o,s))return B.getTranscript(r);if(!R(a))return B.getTranscript({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation});let h=B.getTranscript(r),g=d_(f,p,h),_=(m.coverageMessageIDs??m.records.map(e=>e.info.id)).some(e=>h.messagesByID[e]!==void 0),v=Ve({fetched:p_(m),previous:f_(h),touched:g,coverageMessageIDs:m.coverageMessageIDs,completeTail:m.complete===!0}),y=h.liveRevision;B.apply(r,{type:`http-page`,purpose:`reconcile-page`,page:{records:v.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:y,liveRevision:y});let b=new Set(v.map(e=>e.info.id)),x=m_(B.getTranscript(r),b);for(let t of x)B.apply(r,{type:`remove-message`,messageID:t}),e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:t});if(h.boundary.kind===`unknown`||!m.complete&&!_){let e=N(r);e?.pages.length&&(t.setQueryData(ee(r),{...e,pages:e.pages.map((e,t)=>t===0?{...e,cursor:m.complete?null:m.cursor??null,complete:m.complete}:e)}),P(r))}let S=B.getTranscript(r);lp(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(te(r)),en(a.sessionID,S.messageOrder);try{let e=Xg(()=>S);u&&e&&Zg({trigger:`user-refresh`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,purpose:`refresh-from-authority`,before:u,after:e})}catch{}return S})();ve.set(c,d);try{return await d}finally{ve.get(c)===d&&ve.delete(c)}},async destructiveReset(t){let r=Xg(()=>B.getTranscript(t)),a=te(t);return p&&await p.clearSession(Ah(s_(t,e))),n.destructiveReset(a,async()=>{let n=s_(t,e),a=q(n),o=i.get(a);if(o&&(o.destroy(),i.delete(a)),c.delete(a),de(a),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await B.ensureInitial(t);try{let e=Xg(()=>s);r&&e&&Zg({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(s_(t,e)),a=i.get(r);a&&(a.destroy(),i.delete(r)),c.delete(r),ue(`${r}\n`),v.delete(r),de(r),n.purgeSession(te(t)),P(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(`
|
|
403
|
+
`);if(r.length>=4){let e={transport:r[0],generation:Number(r[1]),directory:r[2],sessionID:r[3]};n.purgeSession(te(e)),P(e)}}ue(t),L(t),de(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 of w)n.startsWith(`${e}\n${t}\n`)&&w.delete(n);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)}ue(`${e}\n${t}\n`),L(`${e}\n${t}\n`),de(`${e}\n${t}\n`),n.purgeGeneration(e,t),p&&p.clearGeneration({transport:e,generation:t})},destroy(){pe=!0,ve.clear();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(),w.clear(),n.dispose()}};return B}var g_=Object.freeze([]);function __(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=Mm(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var v_=`/api/openchamber/transcript-cache`,y_=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),b_=e=>typeof e==`object`&&!!e&&!Array.isArray(e),x_=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},S_=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},C_=e=>{if(!b_(e))throw Error(`Invalid transcript cache scope`);return{transport:x_(e.transport,`scope`),generation:S_(e.generation,`scope`),directory:x_(e.directory,`scope`),sessionID:x_(e.sessionID,`scope`)}},w_=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},T_=e=>{if(!b_(e)||!b_(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!b_(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:C_(e.scope),messageID:x_(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>w_(e,`part completeness`)),completeness:w_(e.completeness,`completeness`),contentHash:x_(e.contentHash,`content hash`),byteSize:S_(e.byteSize,`byte size`),lastAccessedAt:S_(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:S_(e.sortKey.created,`sort key`),messageID:x_(e.sortKey.messageID,`sort key`)}}},E_=(e,t)=>{if(!b_(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(T_);return{scope:e.scope===void 0?Xt(t):C_(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},D_=e=>{if(!b_(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:T_(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!y_.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:T_(e.record)}}}throw Error(`Invalid transcript cache upsert`)},O_=e=>{if(!b_(e))throw Error(`Invalid transcript cache evict`);return{evicted:S_(e.evicted,`evict`),freedBytes:S_(e.freedBytes,`evict`),remainingBytes:S_(e.remainingBytes,`evict`)}},k_=e=>({scope:Xt(e),records:[],byteSize:0}),A_=(e,t)=>b_(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,j_=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`)}},M_=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 j_(r)};let i=await j_(r).catch(()=>void 0);throw Error(A_(i,`Transcript cache request failed (${r.status})`))},N_=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),P_=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function F_(e={}){let t=e.fetch??_;return{async readSession(e){let n=await M_(t,`${v_}/session`,{method:`GET`,query:N_(e)});return n.kind===`disabled`||n.kind===`not-found`?k_(e):E_(n.payload,e)},async readMessage(e,n){let r=await M_(t,`${v_}/message`,{method:`GET`,query:{...N_(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!b_(r.payload))throw Error(`Invalid transcript cache record`);return T_(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await M_(t,`${v_}/message`,P_(`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 D_(i.payload)},async removeMessage(e,n){let r=await M_(t,`${v_}/message`,P_(`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 M_(t,`${v_}/session`,P_(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await M_(t,`${v_}/generation`,P_(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await M_(t,`${v_}/evict`,P_(`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 O_(r.payload)},async clearAll(){let e=await M_(t,`${v_}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var I_=`openchamber-transcript-durable`,L_=1,R_=`transcriptIndex`,z_=`transcriptContent`,B_=class extends Error{code;constructor(e){super(e),this.code=e}},V_=e=>({id:On(e.scope,e.messageID),scope:Xt(e.scope),scopeKey:zn(e.scope),generationKey:$t(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}),H_=(e,t)=>({scope:Xt(e.scope),messageID:e.messageID,info:wt(t.info),parts:wt(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}}),U_=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return H_(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},W_=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},G_=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),K_=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new B_(`database-unavailable`));return}let r=indexedDB.open(e,L_),i=!1,a=()=>{i||(i=!0,n(new B_(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(R_)){let t=e.createObjectStore(R_,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(z_)||e.createObjectStore(z_,{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}),q_=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new B_(`database-unavailable`)),r.onblocked=()=>void 0}),J_=(e=I_)=>({transaction:async t=>{let n=await K_(e),r=n.transaction([R_,z_],`readwrite`),i=r.objectStore(R_),a=r.objectStore(z_),o=e=>G_(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:()=>q_(e)});function Y_(e,t={}){let n=on(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(V_(t)),hn(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(zn(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=H_(t,r);a.lastAccessedAt=n(),await e.putIndex(V_(a)),i.push(a)}return Rn(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await U_(e,On(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=Hn({info:i,incomingCompleteness:bn(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=wt(a.slice()),c=bn(s),l=await En(i,s),u=On(t,i.id);return e.transaction(async e=>{let a=await U_(e,u),o=Hn({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:hn(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:Xt(t),messageID:i.id,info:wt(i),parts:s,partCompleteness:s.map(nn),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:Wn(i)};return await e.putIndex(V_(d)),await e.putContent({id:u,info:wt(i),parts:s}),{status:`written`,record:hn(d)}})},async removeMessage(t,n){await e.transaction(e=>W_(e,On(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(zn(t));for(let t of n)await W_(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration($t(t));for(let t of n)await W_(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(zn)),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?Ne(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await W_(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 X_(e={}){return Y_(e.driver??J_(e.databaseName),e)}function Z_(e={}){let t=e.isDesktopShell??ye,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??L,i=e.isCapacitorApp??Tn;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Q_=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function $_(e={}){let t,n,r=()=>(t??=(e.createHttpStore??F_)(),t),i=()=>(n??=(e.createIndexedDBStore??X_)(),n),a=()=>Z_(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=>Q_([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function ev(e={}){await $_(e).clearAll()}var tv=3e4;async function nv(e,t=tv){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)}}function rv(e){return e.filter(e=>!!e?.id)}function iv(e){return typeof e.info?.time?.created==`number`?e.info.time.created:0}function av(e,t){if(!t||t.records.length===0)return e;let n=new Map(t.records.map(e=>[e.info.id,e]));if(e.records.length===0)return{records:t.records,coverageMessageIDs:e.coverageMessageIDs??[],cursor:e.cursor,complete:e.complete,turnCount:t.turnCount,requestedTurnLimit:e.requestedTurnLimit??t.requestedTurnLimit};let r=new Set(e.records.map(e=>e.info.id).filter(e=>typeof e==`string`)),i=e.records.map(e=>n.get(e.info.id)??e),a=-1;t.records.forEach((e,t)=>{r.has(e.info?.id)&&(a=t)});let o=iv(e.records[e.records.length-1]);for(let e=a+1;e<t.records.length;e+=1){let n=t.records[e],s=n.info?.id;typeof s!=`string`||r.has(s)||a<0&&iv(n)<o||i.push(n)}let s=i.filter(e=>qn(e.info,e.parts)).length;return{records:i,coverageMessageIDs:e.coverageMessageIDs??e.records.map(e=>e.info.id),cursor:e.cursor,complete:e.complete,turnCount:s,requestedTurnLimit:e.requestedTurnLimit??t.requestedTurnLimit}}async function ov(e,t){let n=e;for(let e=0;e<4&&n.turnCount===0&&n.cursor&&!n.complete;e+=1){let e=await jt({sessionID:t.sessionID,directory:t.directory,cursor:n.cursor,signal:t.signal}),r=new Set(n.records.map(e=>e.info.id)),i=[...e.records.filter(e=>!r.has(e.info.id)),...n.records];n={...n,records:i,coverageMessageIDs:[...e.coverageMessageIDs??e.records.map(e=>e.info.id),...n.coverageMessageIDs??n.records.map(e=>e.info.id)],cursor:e.cursor,complete:e.complete,turnCount:i.filter(e=>qn(e.info,e.parts)).length}}return n}async function sv(e){let t=new AbortController,n=()=>t.abort(e.signal.reason);e.signal.aborted?n():e.signal.addEventListener(`abort`,n,{once:!0});let r=setTimeout(()=>t.abort(),tv);try{return await nv(cv({...e,signal:t.signal}))}finally{clearTimeout(r),e.signal.removeEventListener(`abort`,n),t.abort()}}async function cv(e){e.before||e.purpose;let t=await jt({sessionID:e.sessionID,directory:e.directory,...e.before?{cursor:e.before}:{},signal:e.signal});e.signal.throwIfAborted();let n=e.before?null:await Yn({sessionID:e.sessionID,directory:e.directory,signal:e.signal});e.signal.throwIfAborted();let r=av(t,n),i=e.before?r:await ov(r,e),a=i.records.map(e=>({info:ad(e.info),parts:rv(e.parts??[])}));if(!e.before&&!i.complete&&Uh(a).length>0){let t=V.getScopedSdkClient(e.directory);a=(await Wh({records:a,complete:i.complete,requestMessage:async n=>{let r=await Vh({transport:u(),generation:f(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:async()=>{let r=await t.session.message({sessionID:e.sessionID,messageID:n}),i=Ue(e.sessionID,r);if(!i?.info?.id)throw Error(`session.message failed: empty response`);return{info:ad(i.info),parts:rv(i.parts??[])}}});return{info:r.info,parts:rv(r.parts??[])}}})).records.map(e=>({info:e.info,parts:rv(e.parts??[])}))}return e.signal.throwIfAborted(),Zn(e.sessionID,a),{records:a,coverageMessageIDs:i.coverageMessageIDs??i.records.map(e=>e.info.id),cursor:i.cursor??void 0,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:e.limit}}function lv(e){let t=e.client??F,n=Jm(),r=$m({client:t,activeRegistry:n}),i=h_({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:u,getGeneration:f},fetcher:e=>sv({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:xp(),historyLimit:Sp(),durableStore:e.durableStore??$_()}),a=lh({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 Oh(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return Qt(i),mn(a),{repository:i,destroy:()=>{a.cancelAll(`dispose`),mn(null),i.destroy(),pt()}}}function uv(e){return He().apply(H(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 dv=new Map;function fv(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function pv(e,t,n,r={}){let i=r.getTransportIdentity??u,a=r.getGeneration??f,o=i(),s=a(),c=fv(e,t,o,s),l=()=>i()===o&&a()===s,d=dv.get(c)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=d.catch(()=>void 0).then(()=>m);dv.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(),dv.get(c)===h&&dv.delete(c)}}var mv=()=>!1,hv=new Set,gv=new Set,_v=new Set,vv=new Set,yv={onDeleteRequest(e){return hv.add(e),()=>{hv.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||hv.forEach(t=>t(e))},onCreateRequest(e){return gv.add(e),()=>{gv.delete(e)}},requestCreate(e){let t=e??{};gv.forEach(e=>e(t))},onDirectoryRequest(e){return _v.add(e),()=>{_v.delete(e)}},requestDirectoryDialog(){_v.forEach(e=>e())},onGitRefreshHint(e){return vv.add(e),()=>{vv.delete(e)}},requestGitRefresh(e){e.directory.trim()&&vv.forEach(t=>t(e))}},bv=50,xv=e=>{let t=Object.keys(e);if(t.length<=bv)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-bv).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},Sv=Ee()(ke(De((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:xv(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:ir(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),Cv=new Set([`todowrite`,`todoread`]),wv=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),Tv=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Ev=(e,t)=>{Sv.getState().setSessionTodos(e,t)},Dv=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Ov=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},kv=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},Av=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=kv(n);e&&t.push(e)}return t},jv=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Av(t);if(t&&typeof t==`object`)return Av(t.todos)}catch{}return[]},Mv=e=>{if(!Cv.has(Dv(e)))return[];let t=Ov(e);if(t&&wv.has(t))return[];let n=e.state,r=Av(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Av(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Av(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?jv(i):[]};function Nv(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=Mv(r[e]);if(t.length>0)return t}}return[]}function Pv(e){if(!e.sessionID||e.isStale?.()||Tv(e.store.getState().todo,e.sessionID))return!1;let t=Nv(e.transcript);return t.length===0||e.isStale?.()||Tv(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Fv(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??W()?.getTranscript(H(e.directory,e.sessionID));return t?Pv({sessionID:e.sessionID,store:e.store,transcript:t,persist:Ev,isStale:e.isStale}):!1}var Iv=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>Bb,COMBINED_SEND_PRESENCE_GRACE_MS:()=>zb,SESSION_DELETE_UNDO_MS:()=>cb,abortBusySessionForMessageEdit:()=>ex,abortCurrentOperation:()=>Gb,archiveSession:()=>vb,beginOptimisticSend:()=>Ab,cancelScheduledSessionDeletes:()=>_b,classifySendFailure:()=>jy,combinedSendConfirmationOptions:()=>Vb,commitMessageEdit:()=>nx,commitStagedRevertBeforeSend:()=>Sb,createSession:()=>nb,deleteSession:()=>hb,dirStoreForDirectory:()=>_y,dismissOpenQuestionsForSession:()=>Xb,dismissQuestion:()=>Jb,ensureSentUserMessagePresence:()=>Wb,fetchMessagesForSession:()=>sx,fetchRecentSendConfirmationRecords:()=>Lb,forkSession:()=>ax,getSendFailureKind:()=>ky,isQuestionRequestNotFoundError:()=>$y,isQuestionSubmissionClaimedError:()=>Qy,materializeConfirmedSendRecords:()=>Rb,mirrorSessionIntoLiveStores:()=>wy,optimisticInsertUserMessage:()=>Fb,optimisticSend:()=>Pb,patchSessionMetadata:()=>rb,refetchSessionMessages:()=>rx,rejectQuestion:()=>Yb,releaseUnconfirmedQueueSend:()=>my,requestSessionSmartTitle:()=>xb,resolveForkMessageId:()=>$v,respondToPermission:()=>Kb,respondToQuestion:()=>qb,revertToMessage:()=>Zb,rollbackOptimisticSend:()=>Mb,scheduleSessionDeletes:()=>gb,setActionRefs:()=>fy,setOptimisticRefs:()=>py,settleOptimisticSend:()=>Nb,settleSessionPromptAfterSend:()=>dy,shareSession:()=>Cb,shouldSuppressForkCopyEvent:()=>ty,stageMessageEdit:()=>$b,trackForkCopySessionCreated:()=>Gv,unarchiveSession:()=>yb,unrevertSession:()=>ix,unshareSession:()=>wb,updateSessionTitle:()=>bb,waitForConnectionOrThrow:()=>Fy,waitForSessionIdleForMessageEdit:()=>tx}),Lv=2,Rv=150,zv=new Set([`patch`,`step-start`,`step-finish`]),Bv=3,Vv=150,Hv=null,Uv=new Map,Wv=3e4;function Gv(e,t){let n=t?.id;!Hv||Hv.runtimeKey!==m()||Hv.directory!==e||!n||t?.title!==Hv.expectedTargetTitle||n===Hv.sourceSessionID||Hv.targetSessionID||(Hv.targetSessionID=n)}function Kv(e){let t=e?.trim()||`session`,n=t.match(/^(.+) \(fork #(\d+)\)$/);return n?`${n[1]} (fork #${Number.parseInt(n[2],10)+1})`:`${t} (fork #1)`}async function qv(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function Jv(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Yv(e){return e?.type===`busy`||e?.type===`retry`}function Xv(e){for(let t=e.length-1;t>=0;--t)if(e[t]?.role===`user`)return t;return-1}function Zv(e){let t=e.at(-1);return t?.role===`assistant`&&t.time.completed==null}function Qv(e,t){return Yv(e)||e==null&&Zv(t)}function $v(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(!Qv(n,t))return;let r=Xv(t);if(r!==-1)return t[r+1]?.id}async function ey(e,t){let n=Md(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return V.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function ty(e,t,n){if(Hv&&Hv.runtimeKey===m()&&Hv.directory===e&&t&&t===Hv.targetSessionID)return!0;if(!t||!n)return!1;let r=`${m()}:${e}:${t}`,i=Uv.get(r);return i?i.expiresAt<=Date.now()?(Uv.delete(r),!1):n<=i.messageID:!1}var ny=null,ry=null,iy=()=>``,ay=new Map,oy=null,sy=null,cy=null,ly=e=>new Promise(t=>setTimeout(t,e));async function uy(e){return(await jt({sessionID:e.sessionID,directory:e.directory??``,limit:e.limit,...e.signal?{signal:e.signal}:{}})).records.filter(e=>!!e?.info?.id)}async function dy(e){let t=Eb(),n=()=>Db(t);e.inboxID&&n()&&Mn({id:e.inboxID,sessionID:e.sessionId,timeCreated:Date.now(),type:`user`,delivery:e.delivery===`queue`?`queue`:`steer`,payload:{text:e.text??``}});let r=!!e.inboxID;if(e.inboxID)try{let t=await Pe({sessionID:e.sessionId,directory:e.directory});if(!n()||!t.current)return;let i=t.items.find(t=>t.id===e.inboxID);i?(Cn(i,{startedMark:t.startedMark}),r=!0):r=!1}catch{r=!0}let i=[];try{let t=await uy({sessionID:e.sessionId,directory:e.directory,limit:Tp()});if(!n())return;i=t.map(e=>e.info.id)}catch{return}e.delivery!==`queue`&&e.inboxID&&!r&&i.includes(e.inboxID)&&kn(e.sessionId,e.inboxID,`consumed`);try{await Tt({optimisticID:e.optimisticID,promotedIDs:i,removeOptimistic:t=>{n()&&sy?.({sessionID:e.sessionId,directory:e.directory,messageID:t})},refreshFromAuthority:async()=>{n()&&await rx(e.sessionId,e.directory??void 0)}})}catch{}}function fy(e,t,n){if(ny=e,ry=t,iy=n,ay.size>0){let e=[...ay.values()];ay.clear(),queueMicrotask(()=>{for(let t of e)sx(t.sessionID,t.directory)})}}function py(e,t,n){oy=e,sy=t,cy=n??null}function my(e){let t=e.directory??null;sy?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function hy(){if(!ny)throw Error(`SDK not initialized — is SyncProvider mounted?`);return ny}function gy(){if(!ry)throw Error(`Child stores not initialized`);let e=iy();if(!e)throw Error(`No current directory`);return ry.ensureChild(e)}function _y(e,t){if(!ry)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return ry.ensureChild(e,t)}function vy(e,t){let n=t??Vy(e);return n?{store:_y(n),directory:n}:{store:gy(),directory:Ty()}}function yy(e,t){let{store:n,directory:r}=vy(e,t??void 0),i=r??Ty()??``;return{repository:W()??vt(i,n),directory:i,store:n}}function by(e,t){let{repository:n,directory:r,store:i}=yy(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(H(r,e))}}function xy(e,t){return Yt(by(e,t).data)}function Sy(e,t){return by(e,t).data.messageOrder.length}function Cy(e,t){let n=ry;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]=ww(e,n[r]),t.setState({session:i}),!0}return!1}function wy(e,t){t&&Cy(e,t)||Cy(e)}function Ty(){return iy()||void 0}function Ey(){let{hasEverConnected:e,lastDisconnectReason:t}=K.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function Dy(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 Oy=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 ky(e){return e instanceof Oy?e.kind:null}function Ay(e){let t=Dy(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 jy(e,t){return t?Ay(e)||Dy(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var My=2e3,Ny=5e3,Py=3e4;async function Fy(){let e=rp();e&&np(`send_stream_stale`);let t=Date.now()+(e?Ny:My);for(;Date.now()<t;){if(K.getState().isConnected&&!rp()||n()&&!rp())return;let e=t-Date.now();if(e<=0)break;if(await K.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!rp())return;let r=Math.min(100,t-Date.now());r>0&&await new Promise(e=>setTimeout(e,r))}throw Ey()}function Iy(e){return new Promise((t,n)=>{let r=setTimeout(()=>{np(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},Py);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function Ly(e){let t=X.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Ry(e){e&&X.getState().upsertSession(e)}function zy(e,t){let n=rd(t),r=[...e.getState().session],i=Vd.search(r,n.id,e=>e.id);if(i.found){let t=ww(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 By(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=Ly(e);if(i)return zy(t,i);try{return zy(t,await V.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 Vy(e){return Hy(e)||$.getState().getDirectoryForSession(e)||Ty()}function Hy(e){let t=ry;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=W()?.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 Uy(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?V.getScopedSdkClient(t):hy()}function Wy(e){Xa.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&&Xa.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var Gy=()=>new Map(Array.from(lt(),([e,t])=>[e,t.title||e]));function Ky(e){return!(e.type!==`file`||Zd(e))}function qy(e){return Ky(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function Jy(e){return e.some(qy)}async function Yy(e){let t=[...e.parts];if(!Jy(t))return t;let n=f(),r=e.directory??``;try{await Jn(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}=yy(e.sessionID,r);if(t=[...i.getParts(H(a,e.sessionID),e.messageID)],Jy(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function Xy(e){if(Jy(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await Rf(e.parts,{sessionTitles:Gy(),directory:e.directory}),n=Xa.getState(),r=n.getDraft(e.key);return{payload:t,commit:await Uf({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function Zy(e,t,n){let r=ry;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 Qy(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.status===409&&t.code===`question_submission_claimed`}function $y(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 eb(e,t){let n=ry;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 tb(e,t,n,r){let i=(typeof r==`string`&&r.trim().length>0?r.trim():null)||Zy(e,t,n)||Vy(t)||Ty();return i?V.getScopedSdkClient(i):Uy(t)}async function nb(e,t,n,r){try{let i=await V.createSession({title:e,parentID:n??void 0,metadata:r},t??Ty()),a=i.directory??null;return a&&at(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 rb(e,t,n){let r=t??Vy(e),i=n(Md(await V.getSession(e,r))),a=await V.updateSession(e,{metadata:i},r);X.getState().upsertSession(a);let o=a.directory??r;return o&&at(a.id,o),a}async function ib(e,t){let n;try{n=await V.getSession(e,t??Vy(e))}catch{return}if(!Id(n))return;let r=Fd(n);if(r)try{await rb(r,t??Vy(r),t=>zd(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 ab(e,t){if(!ry)return[];let n=[],r=new Set,i=[];if(t){let e=ry.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of ry.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 ob(e){if(ry)for(let t of e){let e=ry.children.get(t.directory);e&&e.setState({session:t.sessions})}}function sb(e){$.getState().setWorktreeMetadata(e,null)}var cb=1e4,lb=new Map,ub=0;function db(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function fb(e){X.getState().clearSessionsPendingDeletion([e.sessionId]),ob(e.listSnapshots),Ry(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function pb(e,t){let n=t??Vy(e);X.getState().markSessionsPendingDeletion([e]);let r=ab(e,n),i=Ly(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 mb(e,t){try{if(await ib(e,t),await V.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return ab(e,t),X.getState().removeSessions([e]),sb(e),X.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(ab(e,t),X.getState().removeSessions([e]),sb(e),X.getState().clearSessionsPendingDeletion([e]),!0)}}async function hb(e,t){let n=pb(e);return await mb(e,n.directory)?!0:(fb(n),!1)}function gb(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>pb(e)),i=`session-delete-${Date.now()}-${ub+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=lb.get(i);if(!e)return;lb.delete(i);let t=[],n=[];for(let r of e.entries)await mb(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),fb(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return lb.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function _b(e){if(!e)return!1;let t=lb.get(e);if(!t)return!1;clearTimeout(t.timer),lb.delete(e);for(let e of[...t.entries].reverse())fb(e);return!0}async function vb(e){let t=Vy(e),n=ab(e,t),r=Ly(e),i=Date.now(),a=Eb(),o=()=>f()===a.generation&&u()===a.identity;X.getState().archiveSessions([e],i);let s=$.getState();s.currentSessionId===e&&s.setCurrentSession(null);try{if(await ib(e,t),!o())throw Error(`session archive aborted because the runtime changed`);let n=await V.updateSession(e,{time:{archived:i}},t);if(!o())throw Error(`session archive aborted because the runtime changed`);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),o()?(ob(n),Ry(r),!1):!1}}async function yb(e){let t=Vy(e),n=Ly(e),r=n?db(n):null,i=Eb(),a=()=>f()===i.generation&&u()===i.identity;if(r&&(X.getState().upsertSession(r),t&&ry)){let e=ry.children.get(t);e&&zy(e,r)}try{let n=await V.updateSession(e,{time:{archived:0}},t);if(!a())throw Error(`session unarchive aborted because the runtime changed`);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=db(n);if(X.getState().upsertSession(r),t&&ry){let e=ry.children.get(t);e?zy(e,r):wy(r,t)}else wy(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),a()&&n&&(X.getState().upsertSession(n),typeof n.time?.archived==`number`&&n.time.archived>0&&ab(e,t)),!1}}async function bb(e,t){let n=Vy(e),r=Ly(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Ku(r):0,c=await V.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);X.getState().upsertSession(c),wy(c,n)}async function xb(e){let t=Vy(e),n=Ly(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 V.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);X.getState().upsertSession(s),wy(s,t)}async function Sb(e,t){let n;try{n=vy(e,t??void 0)}catch{return}let{store:r,directory:i}=n;return pv(e,i,async({isCurrent:t})=>{let n=r.getState().session?.find(t=>t.id===e);if(!n?.revert)return;let a=typeof n.revert.messageID==`string`&&n.revert.messageID.length>0?n.revert.messageID:null;if(await st({sessionID:e,directory:i}),!t())throw Error(`Session history mutation aborted because the runtime changed`);let o=[...r.getState().session],s=o.findIndex(t=>t.id===e);if(s>=0&&(o[s]={...o[s],revert:void 0},r.setState({session:o})),a)try{let{repository:t,directory:n}=yy(e,i);t.apply(H(n,e),{type:`revert-committed`,to:a})}catch{}})}async function Cb(e){if(!mv())return null;throw $e(`session.share`)}async function wb(e){throw $e(`session.unshare`)}function Tb(e){let t=ry,n=e??iy();if(!t||!n)return{store:e?_y(e):gy(),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 Eb(){return{identity:u(),generation:f()}}function Db(e){return u()===e.identity&&f()===e.generation}function Ob(e,t){return e.isCurrent()&&Db(t)}function kb(e,t){if(!Ob(e,t))throw Error(`Send target changed before transport dispatch`)}function Ab(e){if(!oy||!sy)throw new Oy(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??Ty()??null,n=Tb(t),r=Eb();kb(n,r),e.beforeOptimisticInsert?.(),kb(n,r);let i=e.messageID??oe(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),rf(e.sessionId),Fb({sessionId:e.sessionId,messageID:i,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant,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 Oy?e:new Oy(ky(e)??jy(e,!1),e)}}function jb(e){if(!Ob(e.capture,e.transport)||!sy)return;sy({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 Mb(e){jb(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function Nb(e){if(!oy||!sy)throw new Oy(`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 Fy(),kb(n,r),s=!0,await Iy(e.send(i)),!Ob(n,r))throw new Oy(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=ky(c)??jy(c,s),u=c instanceof Oy?c:new Oy(l,c,i);if(!Ob(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await Lb(a,i,o):null;if(d&&Ob(n,r)){Rb(n.store,a,i,d,{directory:o??void 0}),cy?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||jb(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function Pb(e){if(e.delivery===`queue`){let t=Tb(e.directory),n=Eb(),r=e.messageID??oe(`msg`),i=!1;try{e.onMessageID?.(r),await Fy(),kb(t,n),i=!0,await Iy(e.send(r)),kb(t,n),e.onSendConfirmed?.(r)}catch(e){throw e instanceof Oy?e:new Oy(jy(e,i),e,r)}return}await Nb({ticket:e.ticket??Ab({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 Fb(e){if(!oy)return!1;let t=e.directory??Ty(),n=t?_y(t):gy(),r=t??Ty()??``;if(Hb(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:oe(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:oe(`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:oe(`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=typeof e.variant==`string`&&e.variant.trim().length>0?e.variant.trim():void 0,s={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,...o?{variant:o}:{},model:{providerID:e.providerID,modelID:e.modelID,...o?{variant:o}:{}},metadata:{},time:{created:a,completed:0}},c=Xg(()=>by(e.sessionId,t).data);oy({sessionID:e.sessionId,directory:t,message:s,parts:i});let l=Xg(()=>by(e.sessionId,t).data);try{c&&l&&Zg({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:u(),generation:f(),before:c,after:l})}catch{}let d=n.getState();return n.setState({session_status:{...d.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...d.session_status_observed_at,[e.sessionId]:a}}),!0}function Ib(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function Lb(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??Lv,c=r?.retryDelayMs??Rv;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!Ib(r?.isCurrent)||a>0&&(await ly(c),i?.signal.aborted||!Ib(r?.isCurrent)))return null;try{let a=await uy({sessionID:e,directory:n,limit:Tp(),...i?{signal:i.signal}:{}});if(!Ib(r?.isCurrent))return null;if(a.some(e=>e.info.id===t))return a}catch{}}return null}finally{o&&clearTimeout(o),r?.signal?.removeEventListener(`abort`,a)}}function Rb(e,t,n,r,i){if(!r.length)return;let a=i?.directory??Vy(t)??iy(),o=H(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:ad(e.info),parts:e.parts??[]})),skipPartTypes:zv,merge:i?.gapFillOnly===!0?an:ln({purpose:`recovery`})};fn(o,s)||vt(a,e).apply(o,s)}var zb=2e3,Bb={attempts:12,retryDelayMs:500},Vb={presenceGraceMs:zb,recovery:{...Bb}};function Hb(e,t,n,r){let i=r??Vy(t)??iy()??``,a=W()??vt(i,e),o=H(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function Ub(e,t,n,r){let i=r?.directory??Vy(t)??iy()??``;if(Hb(e,t,n,i))return Promise.resolve(!0);if(!Ib(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=W()??vt(i,e),f=H(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!Ib(r?.isCurrent)){l(!1);return}Hb(e,t,n,i)&&l(!0)}),Hb(e,t,n,i)&&l(!0)})}async function Wb(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await Ub(t,n,r,{timeoutMs:e.graceMs??Vb.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!Ib(a))return`cancelled`;let o=await Lb(n,r,i,{...Vb.recovery,isCurrent:a});return o?Ib(a)?(Rb(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:Ib(a)?`missing`:`cancelled`}async function Gb(e){let{store:t,directory:n}=vy(e),r=n?{state:`bound`,transportIdentity:u(),directory:n,sessionID:e}:null,i=r?$.getState().beginQueueAbortBlock(r):null;try{await sn({sessionID:e,directory:n});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),mr(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>dB);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function Kb(e,t,n){await Fy();let r=Zy(`permission`,e,t)||Vy(e)||Ty();await Lt({sessionID:e,requestID:t,reply:n,directory:r})}async function qb(e,t,n,r){await Fy();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n],a=tb(`question`,e,t,r),o=await a.session.form.get({sessionID:e,formID:t});await a.session.form.reply({sessionID:e,formID:t,answer:qe(i,o.fields)})}catch(n){throw $y(n)&&eb(e,t),n}}async function Jb(e,t,n){let r=f(),i=u(),a=tb(`question`,e,t,n),o=()=>r===f()&&i===u();if(await Fy(),!o())throw Error(`Question dismissal runtime changed`);try{let n=await a.session.interrupt({sessionID:e,resume:!1});if(!o())return;n.interrupted||await a.session.form.cancel({sessionID:e,formID:t}),o()&&eb(e,t)}catch(n){throw o()&&$y(n)&&eb(e,t),n}}async function Yb(e,t,n){await Fy();try{await tb(`question`,e,t,n).session.form.cancel({sessionID:e,formID:t})}catch(n){throw $y(n)&&eb(e,t),n}}async function Xb(e){if(!e)return!1;let t=ry;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Kd(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)eb(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await Yb(e,t)}catch(e){if($y(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function Zb(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 pv(e,r??(()=>{try{return vy(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:a,directory:s}=vy(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 sn({sessionID:e,directory:s})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let l=xy(e,s).find(e=>e.id===t),d=xy(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}=yy(e,s),m=[...f.getParts(H(p,e),t)],h=i===void 0?o?A({transportIdentity:u()},e):null:i,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await Yy({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await Rf(m,{sessionTitles:Gy(),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=Xa.getState(),r=await Uf({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 Gf({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 In({sessionID:e,messageID:t,directory: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 Gf({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]={...i[o],revert:r},a.setState({session:i})),s&&yv.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 Gf({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(a.setState({session:r}),h&&v&&_!==void 0&&await Gf({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function Qb(e,t,n,r){let i=r??Vy(t)??iy(),a=H(i,t),o=[...ze(t)];o.some(e=>e.directory===i&&e.sessionID===t)||o.push(a);let s=!1;for(let e of o)fn(e,{type:`revert-committed`,to:n})!=null&&(s=!0);s||vt(i,e).apply(a,{type:`revert-committed`,to:n})}async function $b(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=vy(e,o).directory}else{s=vy(e,o).directory;let{data:n}=by(e,s),r=Yt(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??A({transportIdentity:u()},e),{commit:l}=await Xy({key:c,parts:await Yy({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 Gf({key:c,restoredRevision:d,previous:f})).status})}}async function ex(e,t){let n=t?.directory,{store:r,directory:i}=vy(e,n),a=r.getState().session_status[e];!a||a.type===`idle`||await sn({sessionID:e,directory:i})}async function tx(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=vy(e,n),o=Date.now()+r,s=Eb();for(;Date.now()<o;){if(!Db(s))throw Error(`Session history mutation aborted because the runtime changed`);let t=a.getState().session_status[e];if(!t||t.type===`idle`)return;await new Promise(e=>setTimeout(e,i))}let c=a.getState().session_status[e];if(!(!c||c.type===`idle`))throw Error(`Session is still busy after waiting to edit: ${e}`)}async function nx(e,t,n){let{store:r,directory:i}=vy(e,n?.directory);return pv(e,i,async({isCurrent:a})=>{let o=()=>{if(!a())throw Error(`Session history mutation aborted because the runtime changed`)},s=()=>{let r=xy(e,i),a=r.find(e=>e.id===t);if(!a||a.role!==`user`)throw Error(`The selected user message is unavailable`);let o=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e);if(o&&r.some(e=>e.id===o))throw Error(`Message edit must commit before the replacement is admitted`)},c=t=>{o(),r.setState(n=>({session:n.session.map(n=>n.id===e?{...n,revert:t}:n)}))};s(),await ex(e,{directory:i}),o(),await tx(e,{directory:i}),o(),s();let l=r.getState().session.find(t=>t.id===e)?.revert;if(l?.files?.length)throw Error(`The selected user message is unavailable`);let d=Xg(()=>by(e,i).data),p=await In({sessionID:e,messageID:t,directory:i,files:!1});o(),c(p);try{s(),await st({sessionID:e,directory:i})}catch(n){if(o(),Ay(n))try{await V.getApiClient().session.message({sessionID:e,messageID:t}),o()}catch(a){if(o(),!(typeof a==`object`&&a&&`_tag`in a&&a._tag===`MessageNotFoundError`))throw n;c(void 0),Qb(r,e,t,i);return}try{l?c(await In({sessionID:e,messageID:l.messageID,directory:i,files:!!l.files?.length})):(await Xe({sessionID:e,directory:i}),c(void 0))}catch{o()}throw n}o(),c(void 0),Qb(r,e,t,i);try{let t=Xg(()=>by(e,i).data);d&&t&&Zg({trigger:`user-edit`,sessionID:e,directory:i,transport:u(),generation:f(),before:d,after:t})}catch{}})}async function rx(e,t){let{store:n,directory:r}=vy(e,t),i=Xg(()=>by(e,t).data),a=await uy({sessionID:e,directory:r,limit:wp()});if(a.length===0){try{let n=Xg(()=>by(e,t).data);i&&n&&Zg({trigger:`materialize`,sessionID:e,directory:r,transport:u(),generation:f(),purpose:`refetch`,before:i,after:n})}catch{}return[]}let o=a.map(e=>({info:ad(e.info),parts:e.parts??[]})),s=H(r??iy(),e);fn(s,{type:`materialize-snapshots`,records:o,skipPartTypes:zv})||vt(r??iy(),n).apply(s,{type:`materialize-snapshots`,records:o,skipPartTypes:zv});try{let n=Xg(()=>by(e,t).data);i&&n&&Zg({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 ix(e,t){return pv(e,t??(()=>{try{return vy(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=vy(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Sy(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await sn({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}if(await Xe({sessionID:e,directory:i}),!n())throw Error(`Session history mutation aborted because the runtime changed`);let c=[...r.getState().session],l=c.findIndex(t=>t.id===e);l>=0&&(c[l]={...c[l],revert:void 0},r.setState({session:c}));for(let r=0;r<Bv;r+=1){if(r>0&&(await ly(Vv),!n())||(await rx(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Sy(e,i)>o)return}if(Sy(e,i)<=o){let n=i??iy(),a=W()??vt(n,r),o=H(n,e),s=a.destructiveReset;typeof s==`function`?await s(o):await rx(e,t)}})}async function ax(e,t,n,r){let i=m(),{store:a,directory:o}=vy(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await By(e,a,o);at(e,o);let c=a.getState(),l=c.session_status[e],u=xy(e,o);l?.type,u.length;let d=$v(n,u,l);if(!n&&Qv(l,u)&&Xv(u)===-1&&(await rx(e),c=a.getState(),l=c.session_status[e],u=xy(e,o),d=$v(void 0,u,l)),!n&&Qv(l,u)&&Xv(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:Sy(e,o)}),Error(`Fork source user message is unavailable`);c.session_status[e]?.type;let{repository:f,data:p}=by(e,o),h=n?p.messagesByID[n]??u.find(e=>e.id===n):void 0,g=n?[...f.getParts(H(o,e),n)]:[],_=qn(h,g),v=_?g:[],y=``;y=v.filter(e=>e.type===`text`&&!Zd(e)).map(e=>e.text||e.content||``).join(`
|
|
404
|
+
`).trim();let b=v.filter(e=>e.type===`file`&&!Zd(e));Hv={operationId:t,runtimeKey:i,directory:o,sourceSessionID:e,expectedTargetTitle:Kv(s.title)},await qv(t,`copying`);let x;try{if(x=await V.forkSession(e,d,o),x.id,m()!==i)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:x.id}),Hv?.operationId===t&&(Hv=null),!1;let n=[...a.getState().session],r=Vd.search(n,x.id,e=>e.id);r.found||(n.splice(r.index,0,x),a.setState({session:n})),Jv(t,x.id);let s=$.getState().currentSessionId;(s===e||s===x.id)&&$.getState().setCurrentSession(x.id,o,{skipMessageFetch:!0}),await qv(t,`opening`);try{x=await ey(x,o)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw Hv?.operationId===t&&(Hv=null),e}try{let e=H(o,x.id),r=W(),i=r?.destructiveReset;r&&typeof i==`function`?await i(e):fn(e,{type:`reset`}),await qv(t,`loading`),x.id,$.getState().currentSessionId,x.id;let s=W()??vt(o,a),c=H(o,x.id),l=s.getRequestState?.(c);(!(s.hasSession?.(c)??!1)||l?.status===`error`)&&await sx(x.id,o);let u=xy(x.id,o).at(-1)?.id;u&&Uv.set(`${m()}:${o}:${x.id}`,{messageID:u,expiresAt:Date.now()+Wv});let d=$.getState().currentSessionId===x.id;d&&_&&y&&Xa.setState({pendingInputText:y,pendingInputMode:`replace`}),d&&_&&n&&Wy(b)}finally{Hv?.operationId===t&&(Hv=null)}return x.id,!0}var ox=new Map;async function sx(e,t){let n=t??Ty();if(!n)return;let r=m(),i=Cp(),a=JSON.stringify([u(),f(),n,e,i]);if(!ny||!ry){ay.set(a,{sessionID:e,directory:n});return}let o=ox.get(a);if(o)return o;let s=cx(e,n,r,i).finally(()=>{ox.get(a)===s&&ox.delete(a)});return ox.set(a,s),s}async function cx(e,t,n,r){hy();let i=_y(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=W()??vt(t,i),l=H(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(cp(t,e)){Fv({directory:t,sessionID:e,store:i,transcript:u});return}if(W()){try{await Kn(t,e)}catch{return}if(y())return;Fv({directory:t,sessionID:e,store:i,isStale:y}),await kh({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}Fv({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{if(W())await Kn(t,e),b=c.getTranscript(l).messageOrder.length;else{let n=await sv({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:zv}),b=n.records.length,lp(t,e)}}catch{return}y()||(Fv({directory:t,sessionID:e,store:i,isStale:y}),await kh({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var lx=18e4,ux=400,dx=300,fx=15,px=`FINAL_REVIEW_STATUS: no_remaining_findings`,mx=px.toLowerCase(),hx=new Set,gx=new Set,_x=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},vx=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},yx=e=>{let t=e.role;return typeof t==`string`?t:``},bx=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},xx=(e,t)=>Ft(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`}),Sx=(e,t,n,r=0,i)=>{let a=Ze(e,t),o=new Set;for(let e of a)xx(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(yx(s)!==`assistant`||!_x(s)||vx(s)<r-1e3)continue;let c=bx(s);if(!Ax(s,i)||c&&o.has(c))continue;let l=Ad(Ft(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},Cx=(e,t)=>Vt(e,t)?.type===`idle`,wx=e=>e===m(),Tx=e=>{Bd.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},Ex=e=>{if(e&&!wx(e))throw Error(`Auto-review stopped because the runtime changed.`)},Dx=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),Ox=e=>e.trim().split(`
|
|
405
|
+
`).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===mx,kx=e=>{let t=e.trimEnd().split(`
|
|
406
|
+
`);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===mx&&t.pop(),t.join(`
|
|
407
|
+
`).trim()},Ax=(e,t)=>!t||bx(e)===t,jx=(e,t)=>[e.runtimeKey,e.originalSessionID,e.phase,e.expectedAssistantParentID??``,t].join(`:`),Mx=(e,t)=>{let n=jx(e,t);return gx.has(n)?null:(gx.add(n),n)},Nx=e=>{gx.delete(e)},Px=()=>[{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${px}\nIf you found issues that require changes, do not include that final status line.`}],Fx=async e=>{for(;;){let t=Bd.getState().runsByOriginalSessionID[e];if(!t||t.status!==`running`)return;if(!wx(t.runtimeKey)){Tx(t);return}let n=t.phase===`waiting_for_reviewer`?t.reviewSessionID:t.originalSessionID;if(!Cx(n,t.directory)){await new Promise(e=>setTimeout(e,dx));continue}let r=Sx(n,t.directory,t.lastForwardedMessageID,t.waitAfterCreatedAt,t.expectedAssistantParentID);if(!r){await new Promise(e=>setTimeout(e,dx));continue}if(t.phase===`waiting_for_reviewer`){let e=Mx(t,r.id);if(!e){await new Promise(e=>setTimeout(e,dx));continue}if(!wx(t.runtimeKey)){Nx(e),Tx(t);return}try{let e=Date.now(),n=Ox(r.text),i=n?kx(r.text):r.text,a=await qx(t.reviewSessionID,t.directory,i,t.runtimeKey);if(n){Bd.getState().completeRun(t.originalSessionID);return}Bd.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_implementer`,lastForwardedMessageID:r.id,expectedAssistantParentID:a,waitAfterCreatedAt:e}))}finally{Nx(e)}}else{if(t.iteration>=t.maxIterations){Bd.getState().stopRun(t.originalSessionID);return}let e=Mx(t,r.id);if(!e){await new Promise(e=>setTimeout(e,dx));continue}if(!wx(t.runtimeKey)){Nx(e),Tx(t);return}try{let e=Date.now(),n=await Jx(t.originalSessionID,t.directory,r.text,!0,t.runtimeKey);Bd.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_reviewer`,iteration:t.iteration+1,lastForwardedMessageID:r.id,expectedAssistantParentID:n,waitAfterCreatedAt:e}))}finally{Nx(e)}}}},Ix=e=>{Bd.getState().upsertRun(e),Lx(e.originalSessionID)},Lx=e=>{let t=Bd.getState().runsByOriginalSessionID[e];!t||t.status!==`running`||!wx(t.runtimeKey)||hx.has(e)||(hx.add(e),Fx(t.originalSessionID).catch(e=>{console.error(`[review-flow] auto-review loop failed`,e),Bd.getState().updateRun(t.originalSessionID,t=>({...t,status:Dx(e)?`stopped`:`error`,error:e instanceof Error?e.message:String(e)}))}).finally(()=>{hx.delete(e)}))},Rx=async(e,t,n)=>{let r=Date.now()+lx;for(;Date.now()<r;){let r=Ze(e,t).filter(e=>yx(e)===`assistant`).filter(e=>vx(e)>=n-1e3).filter(_x).sort((e,t)=>vx(t)-vx(e));for(let e of r){let n=Ad(Ft(e.id,t)).trim();if(n)return n}await new Promise(e=>setTimeout(e,ux))}throw Error(`Timed out waiting for handoff response`)},zx=e=>{let t=xl.getState(),n=K.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}},Bx=async(e,t,n,r,i,a)=>{Ex(a);let o=r??zx(e);if(!o)throw Error(`Select a model before sending review flow messages`);let s=xl.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)),rf(e);let c=null;if(await Pb({sessionId:e,content:n,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,onMessageID:e=>{c=e},beforeOptimisticInsert:()=>Ex(a),onOptimisticInsert:()=>Vx(e),send:r=>(Ex(a),V.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},Vx=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:chat-force-scroll-bottom`,{detail:{sessionId:e}}))},Hx=(e,t)=>{ar.getState().openContextPanelTab(e,{mode:`chat`,dedupeKey:`session:${t.id}`,label:t.title??null,sessionTitleFallback:t.title??null})},Ux=async(e,t)=>{try{return await V.getSession(e,t)}catch{return null}},Wx=e=>`Review: ${e.title?.trim()||e.id}`,Gx=async(e,t,n)=>{Ex(n);let r=await V.getSession(e,t);Ex(n);let i=Pd(r);if(i){let r=await Ux(i,t);if(Ex(n),r&&Id(r))return r;await rb(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})}Ex(n);let a=await V.createSession({title:Wx(r),metadata:Rd({},e)},t);Ex(n),at(a.id,t);try{Ex(n),await rb(e,t,e=>Ld(e,a.id))}catch(e){throw Ex(n),await V.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},Kx=async e=>{await Fy();let t=e.autoReview?m():void 0,n;if(e.generateHandoff??!0){let n=await Ed(`session.reviewHandoff.visible`),r=await Ed(`session.reviewHandoff.instructions`),i=Date.now();await Bx(e.originalSessionID,e.directory,n,null,[{text:r,synthetic:!0}],t);let a=async()=>{let n=await Rx(e.originalSessionID,e.directory,i);Ex(t);let r=await Ed(`session.reviewSession.visible`,{handoff:n}),a=await Gx(e.originalSessionID,e.directory,t),o=t??m(),s=Date.now(),c=await Bx(a.id,e.directory,r,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?Px():void 0,e.autoReview?o:void 0);e.autoReview&&Ix({originalSessionID:e.originalSessionID,reviewSessionID:a.id,directory:e.directory,runtimeKey:o,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:fx,expectedAssistantParentID:c,waitAfterCreatedAt:s}),e.autoReview||Hx(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 Ed(`session.reviewSessionWithoutHandoff.visible`);let r=await Gx(e.originalSessionID,e.directory,t),i=t??m(),a=Date.now(),o=await Bx(r.id,e.directory,n,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?Px():void 0,e.autoReview?i:void 0);e.autoReview&&Ix({originalSessionID:e.originalSessionID,reviewSessionID:r.id,directory:e.directory,runtimeKey:i,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:fx,expectedAssistantParentID:o,waitAfterCreatedAt:a}),e.autoReview||Hx(e.directory,r)},qx=async(e,t,n,r)=>{Ex(r);let i=Fd(await V.getSession(e,t));if(!i)throw Error(`Original session is missing`);let a=await Ed(`session.reviewFeedbackToImplementer.visible`,{review_feedback:n});return Ex(r),Bx(i,t,a,void 0,void 0,r)},Jx=async(e,t,n,r=!1,i)=>{Ex(i);let a=Pd(await V.getSession(e,t));if(!a)throw Error(`Review session is missing`);let o;try{o=await V.getSession(a,t)}catch(n){throw Ex(i),await rb(e,t,e=>zd(e,a)),n}let s=await Ed(`session.implementationResponseToReviewer.visible`,{implementation_response:n});Ex(i);let c=await Bx(a,t,s,void 0,r?Px():void 0,i);return r||Hx(t,o),c},Yx=e=>Id(e)?`review-to-original`:Pd(e)?`original-to-review`:null,Xx=[0,250,500,1e3,2e3,2e3,2e3,2e3],Zx=5e3,Qx=(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??Zx,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??Xx,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:()=>V.checkHealth(),wait:e=>new Promise(t=>setTimeout(t,e))}),$x=()=>Qx.waitUntilReady(m()),eS=e=>{Qx.reset(e)},tS=100,nS=1500,rS=async e=>{if(!e.ok)throw Error(`session index request failed (${e.status})`)},iS=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}:{}}},aS,oS=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 rS(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}},sS=async e=>{if(typeof window>`u`)return null;if(aS)return aS;let t=(async()=>{let t=await _(`/api/openchamber/session-index`,{signal:e?.signal});return t.status===501?null:(await rS(t),iS(await t.json()))})().finally(()=>{aS===t&&(aS=void 0)});return aS=t,t},cS=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 rS(t),t.json())},lS=(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:nS,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)},tS)},l=()=>s(`aborted`),u=i===null?void 0:setTimeout(()=>s(`timeout`),i),d=hi(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})}),uS=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 rS(r)},dS=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 rS(r)},fS=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 rS(t)},pS=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 rS(t)},mS=1,hS=`oc.sessionIndexStartupCache`,gS=1e6,_S=e=>!!e&&typeof e==`object`&&!Array.isArray(e),vS=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),yS=e=>!(!_S(e)||typeof e.active!=`boolean`||typeof e.completed!=`number`||!Number.isFinite(e.completed)||typeof e.total!=`number`||!Number.isFinite(e.total)||!vS(e.pendingDirectories)||!vS(e.completedDirectories)||!vS(e.failedDirectories)||e.enriching!==void 0&&typeof e.enriching!=`boolean`),bS=e=>_S(e)&&typeof e.id==`string`&&e.id.length>0&&typeof e.title==`string`&&typeof e.directory==`string`&&e.directory.length>0&&_S(e.time)&&typeof e.time.created==`number`&&Number.isFinite(e.time.created)&&typeof e.time.updated==`number`&&Number.isFinite(e.time.updated),xS=e=>!_S(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(bS),SS=e=>!_S(e)||typeof e.revision!=`number`||!Number.isFinite(e.revision)||!yS(e.sync)||!Array.isArray(e.directories)||e.pinnedSessionIds!==void 0&&!vS(e.pinnedSessionIds)?!1:e.directories.every(xS),CS=e=>_S(e)&&e.version===mS&&_S(e.entries),wS=e=>{if(!e)return null;try{let t=JSON.parse(e);return CS(t)?{version:mS,entries:t.entries}:null}catch{return null}},TS=(e,t)=>{try{let n=JSON.stringify(t);if(n.length>gS)return;e.setItem(hS,n)}catch{}},ES=(e,t)=>{if(!e)return null;let n;try{n=t.getItem(hS)}catch{return null}let r=wS(n);if(!r)return null;let i=r.entries[e];return SS(i)?i:null},DS=(e,t,n)=>{if(!e||!SS(t))return;let r=null;try{r=n.getItem(hS)}catch{return}let i={...wS(r)?.entries??{},[e]:t},a=Object.keys(i).slice(-8);TS(n,{version:mS,entries:Object.fromEntries(a.map(e=>[e,i[e]]))})},OS=(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}}},kS=(e,t)=>!e||t,AS=(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}},jS=new Set,MS=()=>jS.size>0,NS=e=>{for(let t of jS)t(e)},PS=e=>(jS.add(e),()=>jS.delete(e)),FS=3e4,IS=3e3,LS=1e3,RS=0,zS=0,BS=0,VS=null;function HS(e){try{if(e===`medium`){zS+=1;return}if(e===`heavy`){BS+=1;return}RS+=1}catch{}}function US(){return{light:RS,medium:zS,heavy:BS}}function WS(){RS=0,zS=0,BS=0}function GS(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 KS(){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=GS(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 qS(){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 JS(){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 YS(e){let t=qS(),n=JS();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 XS(e={}){if(VS)return VS;let t=e.isEnabled??Kg,n=e.record??Yg,r=e.now??(()=>Date.now()),i=e.getPlatform??(()=>Vn()),a=KS(),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()+IS,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})},IS)},g=()=>{p(()=>{let e=a.snapshotWindow(),o=US();t()&&n(YS({at:r(),snapshot:e,haptics:o,platform:i()})),WS(),a.reset()})},_=()=>{s=setTimeout(()=>{o||(g(),h(),_())},FS)},v=()=>{let e=r()+LS;c=setTimeout(()=>{o||(p(()=>{let t=Math.max(0,r()-e);a.addLagMs(t)}),v())},LS)};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}VS===y&&(VS=null)}};return VS=y,y}var J=e(je(),1),ZS=typeof window<`u`?J.useLayoutEffect:J.useEffect,QS=fr(`OpenChamberHaptics`),$S=null,eC=()=>($S??=pr.isPluginAvailable(`OpenChamberHaptics`),$S);function tC(e){switch(e){case`medium`:return`impactMedium`;case`heavy`:return`impactHeavy`;default:return`impactLight`}}function nC(){return typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0}function rC(){if(!nC())return!1;let e=window.Capacitor?.getPlatform?.();return e===`ios`||e===`android`}function iC(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 aC=20,oC=750;function sC(e,t){return t-e>=aC}function cC(e,t){return t-e>=oC}function lC(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 uC=-1/0;function dC(e=`light`,t){if(!rC()||!eC()||document.visibilityState!==`visible`||!document.documentElement.classList.contains(`oc-native-app-active`))return!1;let n=Date.now();return!t?.bypassCadence&&!sC(uC,n)?!1:(uC=n,QS[tC(e)]().catch(()=>void 0),HS(e),!0)}var fC=`button, [role="button"], [role="menuitem"]`;function pC(){let e=(0,G.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],J.useEffect(mC,t)}function mC(){if(!rC())return;let e=hC;return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}function hC(e){if(!e.isTrusted||!(e.target instanceof Element))return;let t=e.target.closest(fC);t&&(t.matches(`:disabled, [aria-disabled="true"], [data-mobile-press-feedback="none"]`)||dC(`light`))}function gC(){let e=(0,G.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],ZS(_C,t)}function _C(){if(!rC())return;let e=AS(),t=Vn()===`android`,n=-1/0;return PS(r=>{if(!e(r))return;let i=$.getState().currentSessionId,a=document.documentElement.classList.contains(`oc-native-app-active`);if(iC({eventSessionId:r.sessionID,currentSessionId:i,isForeground:a,isVisible:document.visibilityState===`visible`}).shouldTrigger){if(t&&r.kind===`text`){let e=Date.now();if(!cC(n,e))return;dC()&&(n=e);return}dC()}})}var vC=async e=>{let t=await Tr(e);t.ok||console.error(`Failed to copy to clipboard:`,t.error)},yC=e=>e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(yC).join(` `).trim():(0,J.isValidElement)(e)?yC(e.props?.children):``,bC=e=>typeof e==`function`?e():e,xC=(e,t)=>{let n=yC(bC(t?.description));return n.length>0?n:yC(e)},SC=Object.assign((...e)=>(dC(),Sr(...e)),{...Sr,success:(...e)=>{let[t,n]=e;return dC(),Sr.success(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},info:(...e)=>{let[t,n]=e;return dC(),Sr.info(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},error:(...e)=>{let[t,n]=e;return dC(),Sr.error(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>vC(xC(t,n))}})},warning:(...e)=>{let[t,n]=e;return dC(),Sr.warning(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>vC(xC(t,n))}})},loading:(...e)=>(dC(),Sr.loading(...e)),custom:(...e)=>(dC(),Sr.custom(...e)),promise:(...e)=>(dC(),Sr.promise(...e))}),CC=new Set,wC,TC=CC,EC=null,DC=(e,t)=>kr(Or.getState().dictionary,e,t),OC=e=>{let t=e?.time?.pinned;return t!=null&&t!==``},kC=e=>{if(!e)return CC;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)OC(e)&&t.add(e.id);return t.size===0?CC:t},AC=(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},jC=(e=F,t=u())=>{let n=HC(e,t);if(n===wC&&t===EC)return TC;let r=kC(n);return wC=n,EC=t,TC=AC(TC,r)?TC:r,TC},MC=(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=kC(e),o=new Set(a);return n==null||n===``?o.delete(t):o.add(t),AC(a,o)||(r=!0),r?{...e,directories:i,pinnedSessionIds:[...o]}:e},NC=(e,t,n,r)=>{let i=HC(e,t);if(!i)return null;let a=MC(i,n,r?new Date().toISOString():null);return a!==i&&WC(a,{client:e,transport:t,persist:!1}),i},PC=e=>F.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()}),FC=()=>jC(),IC=()=>(0,J.useSyncExternalStore)(PC,FC,RC),LC=()=>{let e=(0,G.c)(6),t=_r(),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:zC,onMutate:e=>{let{sessionId:n,nextPinned:r,transport:i}=e;return{previous:NC(t,i,n,r),transport:i}},onError:(e,n,r)=>{r?.previous&&WC(r.previous,{client:t,transport:r.transport,persist:!1}),SC.error(e instanceof Error?e.message:DC(n.nextPinned?`sessions.sidebar.session.pin.error`:`sessions.sidebar.session.unpin.error`))}},e[1]=t,e[2]=r);let i=vr(r),a;return e[3]!==t||e[4]!==i?(a=e=>{let n=e.trim();if(!n)return;let r=u(),a=HC(t,r);if(!a)return;let o=kC(a).has(n);i.mutate({sessionId:n,nextPinned:!o,transport:r})},e[3]=t,e[4]=i,e[5]=a):a=e[5],wr(a)};function RC(){return CC}async function zC(e){let{sessionId:t,nextPinned:n}=e;n?await uS(t):await dS(t)}var BC=(e=u())=>I.sessionIndex.snapshot(e),VC=(e=u(),t=m(),n=or(),r=sS)=>{let i=t,a=n,o=r;return{queryKey:BC(e),queryFn:async({signal:e})=>{let t=await o({signal:e});return t&&DS(i,t,a),t},staleTime:0,gcTime:1/0,initialData:()=>ES(i,a)??void 0,initialDataUpdatedAt:0}},HC=(e=F,t=u())=>e.getQueryData(BC(t))??null,UC=(e=F,t=u(),n=m(),r=or())=>{let i=VC(t,n,r);return e.getQueryCache().build(e,i),e.getQueryData(i.queryKey)??null},WC=(e,t)=>{if(!SS(e))return;let n=t?.client??F,r=t?.transport??u(),i=t?.runtimeKey??m(),a=t?.storage??or();n.setQueryData(BC(r),e),t?.persist!==!1&&DS(i,e,a)},GC=(e=F,t=u(),n=m(),r=or(),i=sS)=>{let a={...VC(t,n,r,i),staleTime:0};return e.getQueryCache().build(e,a),e.fetchQuery(a)},KC=500,qC=20,JC=6e3,YC=7,XC=3,ZC=1,QC=2,$C=750,ew=500,tw=1e4,nw=2,rw=(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})}),iw=null,aw=0,ow=new Map,sw=new Map,cw=new Map,lw=[],uw=new Set,dw=0,fw=XC,pw=0,mw=null,hw,gw=new Map,_w=()=>({loadGeneration:aw,runtimeGeneration:f(),transportIdentity:u()}),Y=e=>e.loadGeneration===aw&&e.runtimeGeneration===f()&&e.transportIdentity===u(),vw=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`)},yw=e=>{pw=0,vw(e)&&(fw=fw>XC?XC:ZC)},bw=()=>{pw+=1,!(pw<QC||fw>=YC)&&(fw+=1,pw=0)},xw=()=>{for(;dw<fw&&lw.length>0;){let e=lw.shift();if(!e)return;dw+=1,e()}},Sw=e=>new Promise((t,n)=>{lw.push(()=>{e().then(t,n).finally(()=>{--dw,xw()})}),xw()}),Cw=e=>{let t=e;return z(t.directory??null)??z(t.project?.worktree??null)},ww=(e,t)=>{if(!t)return e;let n=e,r=t,i=z(n.directory??null),a=z(n.project?.worktree??null),o=z(r.directory??null),s=z(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=Ku(t);if(f>Ku(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},Tw=(e,t)=>{let n=ww(e,t);return n.share===t.share?n:{...n,share:t.share}},Ew=(e,t)=>{if(t.length===0)return e.slice();let n=new Map(t.map(e=>[e.id,e])),r=e.map(e=>{let t=n.get(e.id);return t?Tw(t,e):e}),i=new Set(r.map(e=>e.id));for(let e of t)i.has(e.id)||(r.push(e),i.add(e.id));return r},Dw=e=>{let t=new Map;for(let n of e){let e=Cw(n);if(!e)continue;let r=t.get(e);if(r){r.push(n);continue}t.set(e,[n])}return t},Ow=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),Cw(e)??``].join(`:`),kw=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),Cw(e)??``].join(`:`)},Aw=(e,t)=>e.time?.updated!==t.time?.updated&&kw(e)===kw(t),jw=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(Ow(e[n])!==Ow(t[n]))return!1;return!0},Mw=e=>{let t=e.time?.archived;return typeof t==`number`&&Number.isFinite(t)&&t>0},Nw=(e,t)=>{let n=new Set,r=!1;for(let t of e){if(!t?.id||n.has(t.id)||Mw(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)||!Mw(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?ww(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;Mw(t)?o.push(t):a.push(t)};return e.forEach(c),t.forEach(c),{activeSessions:a,archivedSessions:o}},Pw=(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))},Fw=e=>[...e].sort((e,t)=>{let n=Ku(t)-Ku(e);return n===0?t.id.localeCompare(e.id):n}),Iw=e=>{let t=new Set;for(let n of e){let e=z(n);e&&t.add(e)}return t},Lw=e=>{let t=Iw(e);for(let e of t)gw.set(e,(gw.get(e)??0)+1);return t},Rw=e=>{let t=new Set;for(let n of e){let e=gw.get(n)??0;if(e<=1){gw.delete(n),t.add(n);continue}gw.set(n,e-1)}return t},zw=(e,t)=>{let n=e.loadingDirectories,r=e.refreshingDirectories;for(let i of t)ow.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}},Bw=e=>{let t=e[e.length-1]?.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:null},Vw=(e,t)=>{let n=Bw(e);return{cursor:n,hasMore:e.length===qC&&n!==null&&(t==null||n<t),loadingMore:!1}},Hw=(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,ww(e,r.get(e.id)));let a=e.filter(e=>{if(i.has(e.id))return!1;let t=Cw(e);return!t||!n.has(t)});return Fw([...i.values(),...a])},Uw=(e,t)=>e.cursor===null?!e.hasMore&&(t.hasMore||t.cursor!==null):t.cursor===null||e.cursor<t.cursor,Ww=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;if(e.length===0)return null;let n=Fw(e),r=n[n.length-1];return r?Ku(r):null},Gw=(e,t)=>Ku(e)<=t,Kw=(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,ww(t,a.get(t.id)));let s=e.filter(e=>{if(o.has(e.id))return!1;let t=Cw(e);if(!t||!n.has(t))return!0;if(!i.has(t))return!1;let a=r.get(t);return a!=null&&Gw(e,a)});return Fw([...o.values(),...s])},qw=(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,Pw(n.sessions,e.pendingDeletionIds));let a=[...i.values()].flat(),o=new Map;if(n)for(let t of e.activeSessions){let e=Cw(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)>qC;n.hasMore&&a&&r&&Uw(r,t)&&c.add(n.directory),s.set(n.directory,Ww(i.get(n.directory)??[],n.cursor))}let l=n?Kw(e.activeSessions,i,r,s,c):Fw(Xw(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=>Cw(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 gw.keys())h.has(e)||ow.has(e)||(p.delete(e),m.delete(e));return{activeSessions:l,sessionsByDirectory:Dw(l),reviewTransferBySessionId:Qw(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}},Jw=(e,t)=>{let n=Pw(t.activeSessions,e.pendingDeletionIds),r=Pw(t.fallbackActive??[],e.pendingDeletionIds),i=t.mergeOnly?Fw(Xw(e.activeSessions,n)):Hw(e.activeSessions,n,t.directories);i=Xw(i,r);let a=t.archivedSessions===void 0?void 0:Pw(t.archivedSessions,e.pendingDeletionIds),o=a===void 0?e.archivedSessions:Hw(e.archivedSessions,a,t.directories),s=Nw(i,o);i=s.activeSessions,o=s.archivedSessions,jw(e.activeSessions,i)&&(i=e.activeSessions),jw(e.archivedSessions,o)&&(o=e.archivedSessions);let c=i===e.activeSessions?e.sessionsByDirectory:Dw(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:Qw(i),loadedDirectories:l,loadingDirectories:d,hasLoaded:m,status:p}},Yw=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[t,...e];let r=e[n],i=ww(t,r);if(Aw(r,i)||Ow(r)===Ow(i))return e;let a=[...e];return a[n]=i,a},Xw=(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,ww(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},Zw=(e,t,n,r)=>{let i=Nw(t,n),a=Pw(i.activeSessions,e.pendingDeletionIds),o=Pw(i.archivedSessions,e.pendingDeletionIds),s=jw(e.activeSessions,a)?e.activeSessions:a,c=jw(e.archivedSessions,o)?e.archivedSessions:o,l=s===e.activeSessions?e.sessionsByDirectory:Dw(s),u=s===e.activeSessions?e.reviewTransferBySessionId:Qw(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}},Qw=e=>{let t=new Map,n=new Set(e.map(e=>e.id));for(let r of e){let e=Yx(r);if(!e)continue;let i=e===`review-to-original`?Fd(r):Pd(r);!i||!n.has(i)||t.set(r.id,e)}return t},X=Ee((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=>Zw(e,t,n,r))},resetForRuntimeSwitch:()=>{aw+=1,eS(),iw=null,ow.clear(),sw.clear(),cw.clear(),uw.forEach(e=>e.abort()),uw.clear(),fw=XC,pw=0,mw?.abort(),mw=null,hw=void 0,gw.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(hw)return hw;if(t().hasHydratedSessionIndex)return;let n=_w(),r=u(),i=m(),a=UC(void 0,r,i);a&&Y(n)&&e(e=>({...qw(e,a,!1),hasCachedSessionIndex:!0}));let o=(async()=>{try{let t;try{t=await GC(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=>({...qw(e,t,!1),hasCachedSessionIndex:t.directories.length>0,hasHydratedSessionIndex:!0}))}catch(e){console.warn(`[GlobalSessions] Failed to hydrate runtime session index:`,e)}})();return hw=o.finally(()=>{hw===o&&(hw=void 0)}),hw},startSessionIndexStartup:async(n,r)=>{let i=_w();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=Iw([...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?Iw(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=_w();try{if(f=await cS([...l]),!Y(i)||!Y(p))return{activeSessions:[],archivedSessions:[]};f&&WC(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=iT(l,d.activeSessions,{retryFailed:!o});if(o)e.then(()=>{m()});else{if(await e,!Y(i))return{activeSessions:[],archivedSessions:[]};m()}return d}mw?.abort();let h=new AbortController;mw=h;let g=Lw(l),_=()=>{if(!Y(i))return;let t=Rw(g);t.size!==0&&e(e=>zw(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=ew;for(;!h.signal.aborted&&Y(i);){e(e=>({...qw(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=_w(),a=await lS(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=_w();try{o=await GC()}catch{if(h.signal.aborted||!Y(i)){o=void 0;break}if(await rw(n,h.signal),h.signal.aborted||!Y(i)){o=void 0;break}n=Math.min(n*nw,tw);continue}if(!Y(e)){o=void 0;break}if(!o)break;n=ew;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(),mw===h&&(mw=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(iw)return iw;e(e=>e.status===`loading`?e:{status:`loading`});let r=aw,i=Promise.resolve().then(async()=>{let a=t();try{if(await $x(),r!==aw)return{activeSessions:[],archivedSessions:[]};let i=V.getSdkClient(),[o,s]=await Promise.allSettled([md(i,{archived:!1,pageSize:KC}),md(i,{archived:!0,pageSize:KC})]),c=Xw(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===aw?(e(e=>{let t=o.status===`fulfilled`&&s.status===`fulfilled`?`ready`:`error`,n=Zw(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!==aw)return{activeSessions:[],archivedSessions:[]};let o=Xw(a.activeSessions,n),s=a.archivedSessions;return console.warn(`[GlobalSessions] Failed to load sessions, using fallback snapshot:`,i),e(e=>Zw(e,o,s,`error`)),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}}finally{iw===i&&(iw=null)}});return iw=i,i},refreshSessionsForDirectories:async(n,r,i)=>{let a=Iw(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=aw;e(e=>{let t=Xw(e.activeSessions,Pw(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=>Cw(e)===t)||n.add(t);return{...t===e.activeSessions?{}:{activeSessions:t,sessionsByDirectory:Dw(t),reviewTransferBySessionId:Qw(t)},loadingDirectories:n,refreshingDirectories:i,status:e.status===`idle`?`loading`:e.status}});let s=[...a].map(n=>{let r=ow.get(n);if(r)return r;let a=Sw(async()=>{let r=new AbortController;uw.add(r);try{if(o!==aw||(await $x(),o!==aw))return!1;let a=await md(V.getSdkClient(),{directory:n,archived:!1,roots:!0,...i?.incrementalStart===void 0?{}:{start:i.incrementalStart},pageSize:qC,maxItems:qC,timeoutMs:JC,retryAttempts:2,signal:r.signal});if(o!==aw)return!1;if(e(e=>{let t=Jw(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,Vw(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)??Vw(a);try{await fS({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 bw(),!0}catch(t){return yw(t),o===aw&&(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{uw.delete(r)}});return ow.set(n,a),a.finally(()=>{ow.get(n)===a&&ow.delete(n)}),a}),c=await Promise.all(s);return o===aw?([...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=_w(),a=Iw(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=null,s=_w();try{if(o=await cS([...a]),!Y(i)||!Y(s))return{activeSessions:[],archivedSessions:[]};o&&WC(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;uw.add(c);let l=Lw(a),u=()=>{if(!Y(i))return;let t=Rw(l);t.size!==0&&e(e=>zw(e,t))};try{let t=o;for(;!c.signal.aborted&&Y(i)&&(e(e=>qw(e,t,!0)),t.sync.active);){let e=_w(),n=await lS(t.revision,c.signal);if(!Y(i)||!Y(e)||n===`aborted`)break;let r=_w(),a;try{a=await GC()}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(),uw.delete(c)}return Y(i)?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},loadMoreSessionsForDirectory:async n=>{let r=z(n);if(!r){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=cw.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=aw;e(e=>{let t=new Map(e.activePaginationByDirectory);return t.set(r,{...a,loadingMore:!0}),{activePaginationByDirectory:t}});let s=Sw(async()=>{let t=new AbortController;uw.add(t);try{if(await $x(),o!==aw)return!1;let n=await md(V.getSdkClient(),{directory:r,archived:!1,roots:!0,cursor:a.cursor??void 0,pageSize:qC,maxItems:qC,timeoutMs:JC,retryAttempts:2,signal:t.signal});return o===aw&&(e(e=>{let t=e.activeSessions.filter(e=>Cw(e)===r),i=new Map(t.map(e=>[e.id,e]));Pw(n,e.pendingDeletionIds).forEach(e=>{i.set(e.id,ww(e,i.get(e.id)))});let o=Fw([...i.values()]),s=Hw(e.activeSessions,o,new Set([r])),c=new Map(e.activePaginationByDirectory);return c.set(r,Vw(n,a.cursor)),{activeSessions:jw(e.activeSessions,s)?e.activeSessions:s,sessionsByDirectory:Dw(s),reviewTransferBySessionId:Qw(s),activePaginationByDirectory:c}}),bw(),!0)}catch(t){return yw(t),o===aw&&(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{uw.delete(t)}});cw.set(r,s);try{await s}finally{cw.get(r)===s&&cw.delete(r)}return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},refreshArchivedSessionsForDirectories:async n=>{let r=Iw(n);if(r.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=aw;e(e=>{let t=new Set(e.archivedLoadingDirectories);return r.forEach(e=>t.add(e)),{archivedLoadingDirectories:t}});let a=[...r].map(t=>{let n=sw.get(t);if(n)return n;let r=Sw(async()=>{let n=new AbortController;uw.add(n);try{if(i!==aw||(await $x(),i!==aw))return!1;let r=await md(V.getSdkClient(),{directory:t,archived:!0,roots:!0,pageSize:qC,maxItems:qC,timeoutMs:JC,retryAttempts:2,signal:n.signal});return i===aw&&(e(e=>{let n=Hw(e.archivedSessions,Pw(r,e.pendingDeletionIds),new Set([t])),i=Nw(e.activeSessions,n),a=jw(e.activeSessions,i.activeSessions)?e.activeSessions:i.activeSessions,o=jw(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:Dw(a),reviewTransferBySessionId:a===e.activeSessions?e.reviewTransferBySessionId:Qw(a),archivedLoadedDirectories:s,archivedLoadingDirectories:c}}),!0)}catch(n){return i===aw&&(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{uw.delete(n)}});return sw.set(t,r),r.finally(()=>{sw.get(t)===r&&sw.delete(t)}),r});return await Promise.all(a),i===aw?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},upsertSession:n=>{if(!ud(n)){t().removeSessions([n.id]);return}e(e=>{if(e.pendingDeletionIds.has(n.id))return e;let t=ww(n,e.activeSessions.find(e=>e.id===n.id)??e.archivedSessions.find(e=>e.id===n.id)??null),r=Mw(t),i=r?e.activeSessions.filter(e=>e.id!==n.id):Yw(e.activeSessions,t),a=r?Yw(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:Dw(i),reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:Qw(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:Dw(t),reviewTransferBySessionId:Qw(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:Dw(i),reviewTransferBySessionId:Qw(i)}})}})),$w=async e=>{let t=X.getState();return t.hasLoadedFullCatalog&&t.status!==`error`?{activeSessions:t.activeSessions,archivedSessions:t.archivedSessions}:t.loadSessions(e)},eT=async()=>{await X.getState().hydrateSessionIndex()},tT=async(e,t)=>X.getState().startSessionIndexStartup(e,t),nT=async(e,t)=>X.getState().refreshSessionsForDirectories(e,t),rT=async(e,t)=>X.getState().syncSessionsForDirectories(e,t),iT=async(e,t,n)=>{let r=Iw(e),i=aw;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===aw&&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===aw&&await new Promise(e=>setTimeout(e,$C));while(o.size>0&&n?.retryFailed===!0&&i===aw);if(i===aw){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 pS(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===aw&&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}},aT=async e=>X.getState().refreshArchivedSessionsForDirectories(e),oT=async e=>X.getState().loadMoreSessionsForDirectory(e),sT=(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])},cT=`oc.sessions.folders`,lT=`oc.sessions.folderCollapse`,uT=`oc.sessions.order`,dT=`oc.sessions.orderActivity`,fT=`/api/session-folders`,pT=250,mT=`__archived__:`,hT=T(or()),gT=null,_T=!1,vT=!1,yT=0,bT,xT,ST=null,CT=null,wT=()=>typeof window>`u`?!1:L()?!0:window.__VSCODE_CONFIG__!==void 0,TT=(e,t)=>{if(typeof window>`u`||wT())return;gT&&clearTimeout(gT);let n=JSON.parse(JSON.stringify(e)),r=Array.from(t);gT=setTimeout(()=>{gT=null,_(fT,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({version:1,foldersMap:n,collapsedFolderIds:r,updatedAt:Date.now()})}).catch(()=>{})},pT)},ET=()=>{try{let e=hT.getItem(cT);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{}}},DT=()=>{try{let e=hT.getItem(lT);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}},OT=()=>{try{let e=hT.getItem(uT);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{}}},kT=()=>{try{let e=hT.getItem(dT);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{}}},AT=(e,t)=>{try{hT.setItem(uT,JSON.stringify(e)),hT.setItem(dT,JSON.stringify(t))}catch{}},jT=e=>{ST=e,clearTimeout(bT),bT=setTimeout(()=>{try{hT.setItem(cT,JSON.stringify(e)),ST=null}catch{}},300)},MT=e=>{CT=e,clearTimeout(xT),xT=setTimeout(()=>{try{hT.setItem(lT,JSON.stringify(Array.from(e))),CT=null}catch{}},300)};typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{if(ST!==null){clearTimeout(bT);try{hT.setItem(cT,JSON.stringify(ST))}catch{}ST=null}if(CT!==null){clearTimeout(xT);try{hT.setItem(lT,JSON.stringify(Array.from(CT)))}catch{}CT=null}});var NT=(e,t)=>{jT(e),MT(t),TT(e,t)},PT=()=>ve(),FT=(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},IT=(e,t)=>e.startsWith(mT)?t.filter(e=>e.sessionIds.length>0):t,LT=Ee()(ke((e,t)=>({foldersMap:ET(),collapsedFolderIds:DT(),sessionOrderByScope:OT(),sessionOrderActivityByScope:kT(),getFoldersForScope:e=>e?t().foldersMap[e]??[]:[],createFolder:(n,r,i)=>{let a=r.trim()||`New folder`,o={id:PT(),name:a,sessionIds:[],createdAt:Date.now(),parentId:i??null},s=t().foldersMap,c=s[n]??[],l={...s,[n]:[...c,o]};return e({foldersMap:l}),NT(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}),NT(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}),NT(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}),NT(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=FT(o,l,t().collapsedFolderIds);e(d?{foldersMap:u,collapsedFolderIds:d}:{foldersMap:u}),NT(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=FT(o,u,t().collapsedFolderIds);e(f?{foldersMap:d,collapsedFolderIds:f}:{foldersMap:d}),NT(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=FT(a,c,t().collapsedFolderIds);e(u?{foldersMap:l,collapsedFolderIds:u}:{foldersMap:l}),NT(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=FT(a,s,t().collapsedFolderIds);e(l?{foldersMap:c,collapsedFolderIds:l}:{foldersMap:c}),NT(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}),NT(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=IT(n,l);u.length!==l.length&&(c=!0);let d=o.filter(e=>r.has(e)),f=d.length!==o.length,p=Object.entries(s).filter(([e])=>r.has(e)),m=p.length!==Object.keys(s).length;if(!c&&!f&&!m)return;let h={...i,[n]:u},g=FT(a??[],u,t().collapsedFolderIds),_=f?d.length>0?{...t().sessionOrderByScope,[n]:d}:Object.fromEntries(Object.entries(t().sessionOrderByScope).filter(([e])=>e!==n)):t().sessionOrderByScope,v=t().sessionOrderActivityByScope;(m||f&&d.length===0)&&(v=p.length===0||d.length===0?Object.fromEntries(Object.entries(t().sessionOrderActivityByScope).filter(([e])=>e!==n)):{...t().sessionOrderActivityByScope,[n]:Object.fromEntries(p)}),e(g?{foldersMap:h,collapsedFolderIds:g,sessionOrderByScope:_,sessionOrderActivityByScope:v}:{foldersMap:h,sessionOrderByScope:_,sessionOrderActivityByScope:v}),NT(h,g??t().collapsedFolderIds),AT(_,v)},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=sT(o,d)&&u.length>0?[...u.filter(e=>s.includes(e)),...s.filter(e=>!u.includes(e))]:s,p=f.indexOf(i),m=f.indexOf(a);if(p===-1||m===-1||p===m)return;let h=[...f];h.splice(p,1),h.splice(m,0,i);let g=new Set(s),_=u.filter(e=>!g.has(e)),v={...t().sessionOrderByScope,[n]:[...h,..._]},y={...t().sessionOrderActivityByScope,[n]:{...o}};e({sessionOrderByScope:v,sessionOrderActivityByScope:y}),AT(v,y)}}),{name:`session-folders-store`})),RT=async()=>{if(_T||vT||typeof window>`u`)return;if(wT()){_T=!0;return}vT=!0;let e=yT;try{let t=await _(fT).catch(()=>null);if(e!==yT||!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!==yT||!(Object.keys(r).length>0||i.size>0))return;LT.setState({foldersMap:r,collapsedFolderIds:i}),jT(r),MT(i)}catch{}finally{e===yT&&(vT=!1,_T=!0)}},zT=()=>{typeof window>`u`||RT()},BT=()=>{yT+=1,_T=!1,vT=!1,ST=null,CT=null,bT&&=(clearTimeout(bT),void 0),xT&&=(clearTimeout(xT),void 0),LT.setState({foldersMap:ET(),collapsedFolderIds:DT(),sessionOrderByScope:OT(),sessionOrderActivityByScope:kT()}),RT()};typeof window<`u`&&s(e=>{h(e)&&BT()}),zT();var VT=new Map,HT=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},UT=()=>`worktree_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,WT=()=>{let e=UT();return VT.set(e,HT()),e},GT=(e,t)=>{let n=VT.get(e);n&&(VT.delete(e),n.resolve(t))},KT=(e,t)=>{let n=VT.get(e);n&&(VT.delete(e),n.reject(t))},qT=e=>{let t=VT.get(e);return t?t.promise:Promise.reject(Error(`Pending worktree request not found`))},JT=3e5,YT=5e3,XT=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``)||e,ZT=new Map,QT=new Map,$T=new Map,eE=new Map,tE=new Set,nE=null,rE=!1,iE=e=>XT(e),aE=e=>eE.get(e)??0,oE=e=>{let t=aE(e)+1;return eE.set(e,t),t},sE=async e=>{let t=S()?.git;return t?.worktree?.bootstrapStatus?t.worktree.bootstrapStatus(e):t?.getGitWorktreeBootstrapStatus?t.getGitWorktreeBootstrapStatus(e):Et(e)},cE=(e,t)=>{for(let n of tE)try{n(e,t)}catch{}},lE=e=>(tE.add(e),()=>{tE.delete(e)}),uE=(e,t)=>{let n=iE(e);if(!n)return!1;let r=ZT.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:(ZT.set(n,t),t.status!==`pending`&&QT.delete(n),cE(n,t),!0)},dE=(e,t)=>{let n=iE(e);if(!n)return!1;let r=t.status===`pending`||t.status===`ready`||t.status===`failed`?t.status:null;return r?uE(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},fE=()=>{nE||=hi(e=>{e.type===`worktree-bootstrap-status`&&dE(e.directory,e)}),!(typeof window>`u`||rE)&&(rE=!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&&dE(r,{status:n.status,error:typeof n.error==`string`?n.error:null,updatedAt:typeof n.updatedAt==`number`?n.updatedAt:Date.now()})})))},pE=e=>{let t=iE(e);t&&(fE(),uE(t,{status:`pending`,error:null,updatedAt:Date.now()}))},mE=e=>{let t=iE(e);if(!t)return;oE(t);let n=$T.get(t);n&&(n.cancelled=!0,n.disposeSettlement?.(),n.disposeSettlement=null,$T.delete(t));let r=QT.get(t);r&&(r.dispose(),QT.delete(t)),ZT.delete(t)},hE=e=>{let t=iE(e);return t?ZT.get(t)??null:null},gE=(e,t)=>{let n=Or.getState().dictionary;return kr(n,e,t)},_E=e=>({status:`failed`,error:e,updatedAt:Date.now()}),vE=(e,t,n)=>{let r=_E(t);return uE(e,r),n?.(r),r},yE=async(e,t=()=>!0)=>{try{let n=await sE(e);return t()?uE(e,n)?n:hE(e):null}catch{return null}},bE=(e,t,n=YT)=>{let r=iE(e),i=aE(r);fE();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,yE(e,()=>!a&&aE(r)===i).finally(()=>{c=!1}))},Number.isFinite(n)?Math.max(1,n):YT))},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=lE((e,t)=>{iE(e)===r&&d(t)}),o=setTimeout(()=>{s(()=>{let t=vE(e,gE(`worktree.bootstrap.toast.timeoutDescription`));i(Error(t.error||`Timed out waiting for worktree bootstrap`))})},Math.max(0,t)),d(ZT.get(r))});return h.catch(()=>void 0),{promise:h,startCompensation:p,dispose:()=>m(Error(`Worktree bootstrap wait cancelled`))}},xE=async(e,t,n,r,i,a)=>{let o=iE(e),s=bE(e,n,r);t.disposeSettlement=s.dispose;let c=await yE(e,()=>!t.cancelled&&$T.get(o)===t&&aE(o)===t.epoch);if(t.cancelled||$T.get(o)!==t){s.dispose();return}if(c?.status===`ready`){s.dispose(),a?.(c);return}if(c?.status===`failed`){s.dispose(),i?.(c),SC.error(gE(`worktree.bootstrap.toast.failed`),{description:c.error||gE(`worktree.bootstrap.toast.failedDescription`)});return}s.startCompensation();try{let e=await s.promise;if(t.cancelled||$T.get(o)!==t)return;a?.(e)}catch(n){if(t.cancelled||$T.get(o)!==t)return;let r=hE(e);if(r?.status===`failed`){i?.(r),SC.error(gE(`worktree.bootstrap.toast.failed`),{description:r.error||gE(`worktree.bootstrap.toast.failedDescription`)});return}let a=vE(e,n instanceof Error?n.message:String(n),i);SC.error(gE(`worktree.bootstrap.toast.failed`),{description:a.error||gE(`worktree.bootstrap.toast.failedDescription`)})}},SE=(e,t)=>{let n=iE(e);if(!n||ZT.get(n)?.status!==`pending`||$T.has(n))return;let r={cancelled:!1,epoch:aE(n),promise:Promise.resolve(),disposeSettlement:null};r.promise=xE(e,r,t?.timeoutMs??JT,t?.pollIntervalMs??YT,t?.onFailed,t?.onReady).finally(()=>{$T.get(n)===r&&$T.delete(n)}),$T.set(n,r)},CE=async(e,t=JT)=>{let n=iE(e);if(!n)return;let r=ZT.get(n);if(!r||r.status===`ready`)return;if(r.status===`failed`)throw Error(r.error||`Worktree bootstrap failed`);let i=QT.get(n);if(i)return i.promise;let a=()=>{},o=aE(n),s=(async()=>{let r=bE(e,t,YT);a=r.dispose;let i=await yE(e,()=>aE(n)===o);if(aE(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(()=>{QT.get(n)?.promise===s&&QT.delete(n)});return QT.set(n,{promise:s,dispose:()=>a()}),s},wE=`openchamber.json`,TE=`.openchamber`,EE=[`.config`,`openchamber`,`projects`];function DE(){let e=S();return e?.files?e.files:null}var OE=80,kE=4e3,AE=2e3,jE=300,ME=new Set([`macos`,`linux`,`windows`]),NE=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)},PE=(e,t)=>{let n=NE(e),r=t.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/\/+$/,``);return!n||n===`/`?`/${r}`:`${n}/${r}`},FE=e=>PE(PE(e,TE),wE),IE=()=>{let e=`/api`;return e.startsWith(`/`),e},LE=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}}},RE=async e=>{let t=DE();if(t?.createDirectory)try{if((await t.createDirectory(e))?.success)return!0}catch{}return!!(await LE(`${IE()}/fs/mkdir`,{path:e})).ok},zE=async e=>{let t=DE();if(t?.readFile)try{let n=await t.readFile(e);return typeof n?.content==`string`?n.content:``}catch{return null}try{let t=await _(`${IE()}/fs/read?path=${encodeURIComponent(e)}`,{cache:`no-store`});return t.ok?await t.text():null}catch{return null}},BE=async(e,t)=>{let n=DE();if(n?.writeFile)try{if((await n.writeFile(e,t))?.success)return!0}catch{}return!!(await LE(`${IE()}/fs/write`,{path:e,content:t})).ok},VE=async()=>{try{let e=await _(`${IE()}/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 NE(n)}catch{}if(!L()){let e=await ie().catch(()=>null);if(e&&e.trim().length>0)return NE(e)}return null},HE=async()=>{let e=await VE();return e?EE.reduce((e,t)=>PE(e,t),e):null},UE=e=>{let t=typeof e?.path==`string`?e.path.trim():``,n=t?NE(t):``;return n&&ue(n)||null},WE=async e=>{let t=await HE();if(!t)return null;let n=UE(e);return n?PE(t,`${n}.json`):null},GE=(e,t)=>e.length<=t?e:e.slice(0,t),KE=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();!ME.has(e)||n.has(e)||(n.add(e),t.push(e))}return t},qE=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=GE(typeof e.name==`string`?e.name.trim():``,OE),o=GE(typeof e.command==`string`?e.command.trim():``,kE);if(!i||!a||!o||n.has(i))continue;n.add(i);let s=typeof e.icon==`string`?e.icon.trim():``,c=KE(e.platforms),l=e.autoOpenUrl===!0,u=GE(typeof e.openUrl==`string`?e.openUrl.trim():``,AE),d=GE(typeof e.desktopOpenSshForward==`string`?e.desktopOpenSshForward.trim():``,jE);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},JE=e=>{let t=qE(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 YE(e){let t=typeof e?.path==`string`?e.path.trim():``;if(!t)return null;let n=await WE(e),r=async e=>{let t=await zE(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(FE(t)));if(!a)return null;try{await XE(e,a)&&await sD(t)}catch{}return a}async function XE(e,t){let n=typeof e?.path==`string`?e.path.trim():``;if(!n)return!1;let r=await HE(),i=await WE(e);if(!r||!i)return!1;try{if(!await RE(r))return!1;let e=await zE(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 BE(i,JSON.stringify({...a,...t,...o,projectPath:NE(n)},null,2))}catch(e){return console.error(`Failed to write openchamber config:`,e),!1}}async function ZE(e,t){return XE(e,{...await YE(e)||{},...t})}async function QE(e){return(await YE(e))?.[`setup-worktree`]??[]}async function $E(e,t){return ZE(e,{"setup-worktree":t.filter(e=>e.trim().length>0)})}async function eD(e){return(await YE(e))?.[`setup-worktree-wait`]===!0}async function tD(e,t){return ZE(e,{"setup-worktree-wait":t})}async function nD(e){let t=await YE(e);return ne(t?.draftStarters)}async function rD(e,t){return ZE(e,{draftStarters:ne(t)})}async function iD(e){let t=await YE(e);return JE({actions:t?.projectActions,primaryActionId:t?.projectActionsPrimaryId})}async function aD(e,t){let n=JE({actions:t.actions,primaryActionId:t.primaryActionId});return ZE(e,{projectActions:n.actions,projectActionsPrimaryId:n.primaryActionId??void 0})}function oD(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 sD(e){let t=FE(e),n=DE();if(n?.delete)try{await n.delete(t);return}catch{}try{await LE(`${IE()}/fs/delete`,{path:t})}catch{}}var cD=e=>typeof e==`number`&&Number.isFinite(e)?e:0,lD=e=>cD(e.input)+cD(e.output)+cD(e.reasoning)+cD(e.cache?.read)+cD(e.cache?.write),uD=e=>e?.type===`compaction`,dD=e=>!!e&&e.some(uD),fD=(e,t)=>e.clientRole===`compaction`||e.type===`compaction`||dD(t),pD=(e,t)=>{for(let n=e.length-1;n>=0;--n){let r=e[n];if(fD(r,r.id?t(r.id):void 0))return{compacted:!0};if(r.role!==`assistant`)continue;let i=r.tokens;if(!i)continue;let a=lD(i);if(a>0)return{messageId:r.id??``,totalTokens:a,tokens:i}}return null},mD=500,hD=2592e6;function gD(e){let t=Date.now()-hD,n=e.filter(e=>e.time>=t);return n.length<=mD?n:n.slice(n.length-mD)}function _D(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 vD=Ee((e,t)=>({list:[],index:{session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}},append:n=>{let r=t().list,i=gD([...r,n]);e({list:i,index:_D(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:_D(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:_D(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 yD(e){vD.getState().append(e)}function bD(e){vD.getState().markSessionViewed(e)}function xD(e){if(!e)return;let t=vD.getState().list,n=!1,r=t.filter(t=>t.session===e&&t.type===`error`?(n=!0,!1):!0);n&&vD.setState({list:r,index:_D(r)})}function SD(e){let t=(0,G.c)(2),n;return t[0]===e?n=t[1]:(n=t=>t.index.session.unseenCount[e]??0,t[0]=e,t[1]=n),vD(n)}function CD(e){let t=(0,G.c)(2),n;return t[0]===e?n=t[1]:(n=t=>{if(!e)return null;for(let n=t.list.length-1;n>=0;--n){let r=t.list[n];if(r.session===e&&r.type===`error`)return r}return null},t[0]=e,t[1]=n),vD(n)}var wD=/^(.*)\.(\d+)$/,TD=[`session.next.step.`,`session.next.text.`,`session.next.reasoning.`,`session.next.tool.`,`session.next.shell.`,`session.next.compaction.`,`session.step.`,`session.text.`,`session.reasoning.`,`session.tool.`,`session.shell.`,`session.compaction.`],ED=new Set([`session.next.step.ended`,`session.next.step.failed`,`session.step.ended`,`session.step.failed`,`session.shell.ended`]);function DD(e){return wD.exec(e)?.[1]??e}function OD(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function kD(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 AD(e){let t=OD(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 jD(e){let t=OD(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 MD(e){let t=OD(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`&&!jD(e)?{directory:t.directory}:{}}}return e}function ND(e,t){if(e===`session.status`){let e=kD(t),n=t.status;if(e&&n&&typeof n==`object`)return{sessionID:e,status:n}}return t}function PD(e,t){let n=kD(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`}}:ED.has(e)?{domainActivityHint:{sessionID:n,kind:`terminal`}}:TD.some(t=>e.startsWith(t))||e.startsWith(`session.next.`)?{domainActivityHint:{sessionID:n,kind:`activity`}}:{}:{}}function FD(e){let t=OD(MD(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(AD(t))return{action:`drop`,reason:`sync-duplicate`};let r=DD(n),i=OD(t.data),a=OD(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:jD(t)}}:{action:`drop`,reason:`invalid`};let s={...ND(r,o)};typeof t.created==`number`&&Number.isFinite(t.created)&&t.created>0&&typeof s.eventCreated!=`number`&&(s.eventCreated=t.created);let c=jD(t)??jD(o)??(()=>{let e=OD(s.info);return typeof e?.directory==`string`?e.directory:void 0})(),l=PD(r,s);return{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:s,locationDirectory:c,...l}}}function ID(e){return{...e.id?{id:e.id}:{},type:e.type,properties:e.properties}}var LD=33,RD=200,zD=1e4,BD=8,VD=250,HD=3e4,UD=6e4,WD=2,GD=2e3,KD=8e3,qD=250,JD=5e3,YD=6e4,XD=8,ZD=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},QD=e=>{let t=e;if(t.type!==`openchamber:session-metadata`)return null;let n=typeof t.properties?.sessionID==`string`&&t.properties.sessionID.length>0?t.properties.sessionID:``,r=t.properties?.metadata;return!n||!r||typeof r!=`object`||Array.isArray(r)?null:{id:typeof t.id==`string`&&t.id.length>0?t.id:`openchamber-metadata-${n}-${Date.now()}`,type:`openchamber:session-metadata`,properties:{sessionID:n,metadata:r}}},$D=e=>{if(!e||typeof e!=`object`)return{status:`unusable`};let t=ZD(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=QD(e);if(n){let e=n.properties;return{status:`event`,event:n,normalized:{id:typeof n.id==`string`?n.id:void 0,type:`openchamber:session-metadata`,properties:e}}}let r=FD(e);return r.action===`drop`?r.reason===`sync-duplicate`?{status:`declined`}:{status:`unusable`}:{status:`event`,event:ID(r.event),normalized:r.event}};function eO(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 tO(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 nO(e){let t=`/api`;try{let e=V;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 rO(e){let t=nO(e);return Nt(t)}function iO(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=HD,reconnectDelayMs:y=VD,wsReadyTimeoutMs:b}=e,x=b??(a()?KD:GD),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}`}if(e.type===`session.text.delta`||e.type===`session.reasoning.delta`){let t=e.properties;return t.assistantMessageID?`${e.type}:${t.assistantMessageID}:${t.ordinal??0}`:void 0}if(e.type===`session.tool.input.delta`){let t=e.properties;return!t.assistantMessageID||!t.id?void 0:`session.tool.input.delta:${t.assistantMessageID}:${t.id}`}},M=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(),_t.pipeline.flush(r.length),o?.();try{for(let t of r)try{n(e,t)}catch(e){console.error(`[sync] event handler failed`,t.type,e)}}finally{s?.()}t.buffer.length=0},N=()=>{for(let e of k.keys())M(e)},ee=()=>{for(let e of k.values())e.timer&&=(clearTimeout(e.timer),void 0),e.queue.length=0,e.buffer.length=0,e.coalesced.clear()},te=e=>{let t=A(e);if(t.timer)return;let n=Date.now()-t.last;t.timer=setTimeout(()=>M(e),Math.max(0,(Date.now()<pe?RD:LD)-n))},ne=e=>new Promise(t=>setTimeout(t,e)),re=e=>e instanceof DOMException&&e.name===`AbortError`||typeof e==`object`&&!!e&&e.name===`AbortError`,P=()=>typeof navigator==`object`&&navigator!==null&&navigator.onLine===!1,ie=()=>typeof document<`u`&&document.visibilityState!==`visible`,ae=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},oe=e=>!(e<400||e>=500||e===408||e===429),se=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})}),F=e=>{if(e<=0)return 0;if(P())return YD;let t=ie()?YD:JD,n=Math.min(e-1,XD);return Math.min(t,qD*2**n)},ce=!1,I,le=Date.now(),L,ue=_===`ws`?`ws`:`sse`,de=null,fe=0,pe=0,R=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}))},me=e=>{C||(C=!0,R(e),p?.(e))},z=()=>{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:ue,isReconnect:t})},he=()=>{C=!1,fe=0,N(),l?.(),z()},ge=(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`||r.type===`session.text.delta`||r.type===`session.reasoning.delta`||r.type===`session.tool.input.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;_t.pipeline.coalesced(r.type,o);return}a.coalesced.set(o,a.queue.length)}a.queue.push(r),te(i)},_e=(e,t)=>{let n=tO(t);if(!n)return`unusable`;let r=$D(n);if(r.status!==`event`)return r.status===`declined`?`declined`:`unusable`;let i=eO(e,n,r.event,r.normalized.locationDirectory);return ge(i,r.event,r.normalized),`ingested`},ve=()=>{le=Date.now(),L&&clearTimeout(L),L=setTimeout(()=>{de=`${ue}_heartbeat_timeout`,I?.abort()},v)},ye=()=>{ve(),m?.()},be=()=>{L&&=(clearTimeout(L),void 0)},B=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)}},xe=async e=>{ve();let n=await B(Promise.resolve(t.event.subscribe({signal:e,...w&&w.length>0?{headers:{"Last-Event-ID":w}}:{}})),e);he();let r=Date.now();ye();for await(let e of n){ye(),ce=!1;let t=typeof e.id==`string`?e.id:void 0;t&&t.length>0&&(w=t),_e(e,e.payload??e),!(Date.now()-r<BD)&&(r=Date.now(),await ne(0))}if(!e.aborted){let e=Error(`Global event SSE stream closed`);throw e.reason=`sse_stream_closed`,e}},Se=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()+UD,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=rO(w),c=(e,t=!1)=>{(t||!a)&&_===`auto`&&(T=Date.now()+UD,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()+UD);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`){ye(),a=!0,o=Date.now(),l&&=(clearTimeout(l),void 0),ce=!1,he();return}if(t.type===`error`){ye();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`){ye(),pe=Date.now()+zD;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(_e({directory:t.directory,payload:t.payload},t.payload)===`unusable`){n&&(D=E===n?D+1:1,E=n,D>=WD&&(w=n,E=void 0,D=0)),m(`ws_invalid_frame:event_payload`);return}E=void 0,D=0,ye(),ce=!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)}})},Ce=()=>typeof WebSocket==`function`?_===`ws`?`ws`:_===`sse`||a()||T>Date.now()?`sse`:`ws`:`sse`;(async()=>{for(;!S.signal.aborted;){I=new AbortController,le=Date.now(),de=null;let e=y,t=Ce();ue=t;let n=()=>{de=`pipeline_stopped`,I?.abort()};S.signal.addEventListener(`abort`,n);try{t===`ws`?await Se(I.signal):await xe(I.signal)}catch(n){let r=typeof n==`object`&&n?n.code:void 0;if(t===`ws`&&r===`WS_FALLBACK`)e=0,h?.();else if(!re(n)){fe+=1,ce||(ce=!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`;me(a);let o=ae(n);e=o!==void 0&&oe(o)?YD:F(fe)}}finally{S.signal.removeEventListener(`abort`,n),I=void 0,be()}if(S.signal.aborted)return;de&&de!==`pipeline_stopped`&&(me(de),fe+=1,e=y>0?F(fe):0,de=null),e>0&&await se(e)}})().finally(N);let we=()=>{if(!(typeof document>`u`)){if(document.visibilityState===`hidden`){R(`visibility_hidden`);return}document.visibilityState===`visible`&&(Date.now()-le<v||I?.abort())}},Te=e=>{e.persisted&&(R(`pageshow_persisted`),I?.abort())},Ee=()=>{R(`system_resume`),I&&(de=`${ue}_system_resume`,I.abort())},De=()=>{C&&(R(`online`),I?.abort())},Oe=()=>{I?.abort()};return typeof document<`u`&&(document.addEventListener(`visibilitychange`,we),window.addEventListener(`pageshow`,Te)),globalThis.window!==void 0&&(globalThis.window.addEventListener(`openchamber:system-resume`,Ee),globalThis.window.addEventListener(`online`,De),globalThis.window.addEventListener(`offline`,Oe)),{cleanup:()=>{typeof document<`u`&&(document.removeEventListener(`visibilitychange`,we),window.removeEventListener(`pageshow`,Te)),globalThis.window!==void 0&&(globalThis.window.removeEventListener(`openchamber:system-resume`,Ee),globalThis.window.removeEventListener(`online`,De),globalThis.window.removeEventListener(`offline`,Oe)),S.abort(),be(),N()},reconnect:(e=`manual`)=>{e===`reasoning_projection`&&ee(),de=`${ue}_${e}`,I?.abort()}}}var aO=Pr({epoch:Ir().min(1),revision:jr().int().nonnegative(),serverNow:jr(),enabled:Fr(),delayMs:Mr(3e4),coverage:Pr({state:Lr([`ready`,`reconciling`,`partial`]),failedDirectories:Nr(Ir())}),requests:Nr(Pr({requestID:Ir(),sessionID:Ir(),directory:Ir(),questionCount:jr(),state:Lr([`counting`,`paused`,`disabled`,`submitting`,`uncertain`,`settled`]),deadlineAt:jr().nullable(),pauseReason:Lr([`interaction`,`user`,`goal`]).nullable(),submittedBy:Lr([`manual`,`auto`]).nullable(),resolution:Lr([`replied`,`rejected`,`external`]).nullable()}))}),oO=Pr({outcome:Lr([`ok`,`paused`,`delegated`,`submitted`,`claimed`,`uncertain`,`settled`,`not_found`,`disabled`,`error`]),snapshot:aO}),sO=0,cO=()=>({transport:u(),generation:f()}),lO=e=>e.transport===u()&&e.generation===f(),uO=e=>[e.transport,`question-auto-delegate`,e.generation];function dO(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 fO=(e,t)=>({snapshot:e,receivedAt:performance.now(),sequence:t,retiredEpochs:[]});function pO(e=cO()){return yr({queryKey:uO(e),queryFn:async({signal:t})=>{if(!lO(e))throw Error(`Runtime changed`);let n=++sO,r=await _(`/api/question-auto-delegate`,{signal:t});if(!r.ok)throw Error(`Question snapshot: ${r.status}`);let i=aO.parse(await r.json());if(!lO(e)||t.aborted)throw Error(`Runtime changed`);return fO(i,n)},structuralSharing:(e,t)=>dO(e,t),staleTime:1/0,retry:1,refetchOnWindowFocus:`always`})}function mO(){let e=(0,G.c)(1);(0,J.useSyncExternalStore)(s,f,f);let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=pO(),e[0]=t):t=e[0],br(t,F)}var hO=()=>F.getQueryData(pO().queryKey),gO=()=>F.ensureQueryData(pO()),_O=async()=>{let e=uO(cO());await F.cancelQueries({queryKey:e,exact:!0},{revert:!1}),await F.invalidateQueries({queryKey:e,exact:!0})};async function vO(e,t,n){let r=cO(),i=++sO,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=oO.parse(await a.json());if(!lO(r))throw Error(`Runtime changed`);if(F.setQueryData(uO(r),e=>dO(e,fO(o.snapshot,i))),_O(),!a.ok&&![`claimed`,`uncertain`,`not_found`].includes(o.outcome))throw Error(`Question ${e}: ${a.status}`);return o.outcome}var yO=new Set([`/`,`-`,`_`,`.`,` `,`:`,`\\`]);function bO(e){return e==null?[]:typeof e==`string`?e?[e]:[]:e.filter(e=>typeof e==`string`&&e.length>0)}function xO(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(yO.has(o)?0:.5)+i/1e3+a}function SO(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=bO(n(t));if(e.length===0)continue;let r=null,i=e[0].toLowerCase();for(let t of e){let e=t.toLowerCase(),n=xO(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 Rr(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 CO=Ae(),wO=3e4,TO=(e,t)=>e?.find(e=>e.requestID===t.id);function EO(e){let t=mO(),n=TO(t.data?.snapshot.requests,e),r=`${f()}:${e.sessionID}:${e.id}`,[i,a]=J.useState({scope:r,pending:null,failed:null}),o=i.scope===r?i.pending:null,s=i.scope===r?i.failed:null,[c,l]=J.useState(null),u=c?.scope===r&&(!c.epoch||c.epoch===t.data?.snapshot.epoch),d=u&&(!n||![`submitting`,`uncertain`,`settled`].includes(n.state)),[p,m]=J.useState(null),h=p?.scope===r,g=J.useRef(null),_=J.useRef(null),v=J.useRef(r);v.current=r;let y=wr(()=>{u||m(e=>e?.scope===r?e:{scope:r})}),b=wr(async(t,n=`user`)=>{if(u||(t===`pause`&&y(),g.current===r||n===`interaction`&&_.current===r))return;let i=hO(),o=TO(i?.snapshot.requests,e);if(o&&(t===`pause`&&o.state!==`counting`||[`submitting`,`uncertain`,`settled`].includes(o.state))){n===`user`&&(a({scope:r,pending:null,failed:null}),_.current=null,_O());return}let s=f();g.current=r,_.current=null,a({scope:r,pending:t,failed:null});let c=r;try{let r={requestID:e.id,sessionID:o?.sessionID||e.sessionID,directory:o?.directory||``};if(t===`delegate`&&!o){let t=i??await gO();if(s!==f())throw Error(`Runtime changed`);let n=TO(t.snapshot.requests,e);if(!n)throw Error(`Question identity unavailable`);r={requestID:n.requestID,sessionID:n.sessionID,directory:n.directory}}let a=await vO(t,r,t===`pause`?n:void 0);if(a===`not_found`&&t===`pause`&&n===`interaction`)return;if([`error`,`not_found`,`disabled`].includes(a))throw Error(`Question operation failed`)}catch{v.current===c&&(_.current=c,a({scope:c,pending:t,failed:t}))}finally{g.current===c&&(g.current=null),v.current===c&&a(e=>({...e,pending:null}))}}),x=wr(e=>{e.target.closest(`[data-question-delegation-controls]`)||h||y()}),S=wr(async n=>{n===`${f()}:${e.sessionID}:${e.id}`&&(l({scope:r,epoch:t.data?.snapshot.epoch}),a({scope:r,pending:null,failed:null}),await _O())});return J.useEffect(()=>{!h||u||n&&n.state!==`counting`||b(`pause`,`interaction`)},[h,u,n?.state,n?.requestID]),{query:t,request:n,pending:o,failed:s,run:b,interaction:x,submissionClaimed:S,claimed:u,awaitingClaim:d,scope:r,held:h}}function DO(e){let t=(0,G.c)(2),{remaining:n,delayMs:r}=e,i=`scaleX(${r>0?Math.min(1,n/r):0})`,a;return t[0]===i?a=t[1]:(a=(0,CO.jsx)(`div`,{"data-question-delegate-bar":!0,"aria-hidden":!0,className:`h-1 w-full overflow-hidden rounded-full bg-muted/40`,children:(0,CO.jsx)(`div`,{className:`h-full origin-left bg-primary/70 transition-transform duration-300 ease-linear motion-reduce:transition-none`,style:{transform:i}})}),t[0]=i,t[1]=a),a}function OO(e){let t=(0,G.c)(11),{data:n,deadlineAt:r,startedAt:i,delayMs:a}=e,{t:o}=Er(),[,s]=J.useReducer(kO,0),c=Math.max(0,r!=null&&n?r-n.snapshot.serverNow-(performance.now()-n.receivedAt):a-(performance.now()-i));Cr(s,c>0?250:null);let l;t[0]!==c||t[1]!==o?(l=c>0?o(`chat.questionDelegate.countdown`,{seconds:Math.ceil(c/1e3)}):o(`chat.questionDelegate.awaiting`),t[0]=c,t[1]=o,t[2]=l):l=t[2];let u;t[3]===l?u=t[4]:(u=(0,CO.jsx)(`span`,{className:`typography-micro tabular-nums text-muted-foreground`,role:`status`,children:l}),t[3]=l,t[4]=u);let d;t[5]!==a||t[6]!==c?(d=(0,CO.jsx)(DO,{remaining:c,delayMs:a}),t[5]=a,t[6]=c,t[7]=d):d=t[7];let f;return t[8]!==u||t[9]!==d?(f=(0,CO.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[u,d]}),t[8]=u,t[9]=d,t[10]=f):f=t[10],f}function kO(e){return e+1}function AO({delegation:e}){let{t}=Er(),{query:n,request:r,pending:i,failed:a,run:o,claimed:s,awaitingClaim:c,scope:l,held:u}=e,d=J.useRef(performance.now()),f=J.useRef(l);f.current!==l&&(f.current=l,d.current=performance.now());let p=s||r?.state===`submitting`||r?.state===`uncertain`||r?.state===`settled`,m=n.data?.snapshot.enabled!==!1,h=m&&!c&&!i&&!u&&(!r||r.state===`counting`),g=n.data?.snapshot.delayMs??wO,_=c?`chat.questionDelegate.uncertain`:i?i===`pause`?`chat.questionDelegate.pausing`:`chat.questionDelegate.submitting`:r?.state===`submitting`?`chat.questionDelegate.submitting`:r?.state===`uncertain`?`chat.questionDelegate.uncertain`:r?.state===`settled`&&r.submittedBy===`auto`&&r.resolution===`replied`?`chat.questionDelegate.success`:r?.state===`settled`?`chat.questionDelegate.settled`:m?u||r?.state===`paused`?`chat.questionDelegate.paused`:r?.state===`disabled`?`chat.questionDelegate.disabled`:`chat.questionDelegate.settled`:`chat.questionDelegate.disabled`;return(0,CO.jsxs)(`div`,{"data-question-delegation-controls":!0,className:`flex flex-col gap-1.5 border-t border-border/20 px-2 py-1.5`,children:[h?(0,CO.jsx)(OO,{data:n.data,deadlineAt:r?.deadlineAt??null,startedAt:d.current,delayMs:g}):null,(0,CO.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[h?null:(0,CO.jsx)(`div`,{className:`min-w-0 flex-1 basis-40 typography-micro text-muted-foreground`,children:(0,CO.jsx)(`span`,{role:`status`,children:t(_)})}),n.isError||a?(0,CO.jsx)(`div`,{role:`alert`,className:`min-w-0 flex-1 basis-40 typography-micro text-[var(--status-error)]`,children:t(a===`pause`?`chat.questionDelegate.pauseFailed`:a===`delegate`?`chat.questionDelegate.delegateFailed`:`chat.questionDelegate.loadFailed`)}):null,(n.isError||a||c)&&(0,CO.jsx)(Dr,{variant:`ghost`,size:`xs`,disabled:!!i||n.isFetching,onClick:()=>a&&!s?void o(a):void n.refetch(),children:t(s?`chat.questionDelegate.refreshStatus`:`chat.questionDelegate.retry`)}),r?.state===`counting`&&!p&&m&&!u&&(0,CO.jsx)(Dr,{variant:`ghost`,size:`xs`,disabled:!!i,onClick:()=>void o(`pause`),children:t(`chat.questionDelegate.pause`)}),r&&!p&&(0,CO.jsx)(Dr,{variant:`outline`,size:`xs`,disabled:!!i,onClick:()=>void o(`delegate`),children:t(`chat.questionDelegate.delegate`)})]})]})}function jO(){let e=(0,G.c)(5),t=mO(),{t:n}=Er(),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=f(),e[0]=r):r=e[0];let i=r,a=J.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(MO));for(let t of e.snapshot.requests)s.get(t.requestID)?.state!==`settled`&&t.state===`settled`&&t.submittedBy===`auto`&&t.resolution===`replied`&&SC.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]),J.useEffect(o,s),null}function MO(e){return[e.requestID,e]}function NO(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 PO(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 FO(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 IO=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},LO=(e,t)=>e?IO(t)<IO(e):!1;function RO(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function zO(e){return typeof e==`string`&&e.length>0?e:void 0}function BO(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function VO(e){let t=RO(e);if(!t)return null;let n=zO(t.id),r=zO(t.sessionID)??zO(t.sessionId),i=zO(t.permission)??zO(t.action);if(!n||!r||!i)return null;let a=RO(t.source)??RO(t.tool),o=BO(t.patterns),s=BO(t.resources),c=BO(t.always),l=BO(t.save);return At({id:n,sessionID:r,action:i,resources:o.length>0?o:s,save:c.length>0?c:l,metadata:RO(t.metadata)??{},source:a?{messageID:zO(a.messageID),id:zO(a.callID)??zO(a.id)}:void 0})}function HO(e){let t=RO(e);if(!t)return null;let n=zO(t.id),r=zO(t.sessionID)??zO(t.sessionId);if(!n||!r)return null;let i=(Array.isArray(t.questions)?t.questions:[]).flatMap(e=>{let t=RO(e);if(!t)return[];let n=Array.isArray(t.options)?t.options.flatMap(e=>{let t=RO(e);if(!t)return[];let n=zO(t.label);return n?[{label:n,description:typeof t.description==`string`?t.description:``}]:[]}):[];return[{question:zO(t.question)??``,header:zO(t.header)??``,options:n,...t.multiple===!0?{multiple:!0}:{}}]}),a=RO(t.tool);return Re({id:n,sessionID:r,questions:i,tool:a?{messageID:zO(a.messageID),id:zO(a.callID)??zO(a.id)}:void 0})}function UO(e){let t=RO(e);if(!t)return null;let n=RO(t.form)??t;if(!nt(n.metadata))return null;let r=zO(n.id),i=zO(n.sessionID)??zO(n.sessionId);if(!r||!i)return null;let a=RO(n.metadata)??void 0,o=Array.isArray(n.fields)?n.fields.flatMap(e=>{let t=RO(e),n=t?zO(t.key):void 0;if(!t||!n)return[];let r=Array.isArray(t.options)?t.options.flatMap(e=>{let t=RO(e);return t?[{...typeof t.label==`string`?{label:t.label}:{},...typeof t.value==`string`?{value:t.value}:{},...typeof t.description==`string`?{description:t.description}:{}}]:[]}):void 0;return[{key:n,...typeof t.type==`string`?{type:t.type}:{},...typeof t.title==`string`?{title:t.title}:{},...typeof t.description==`string`?{description:t.description}:{},...r&&r.length>0?{options:r}:{}}]}):void 0;return Re({id:r,sessionID:i,title:typeof n.title==`string`?n.title:void 0,...o&&o.length>0?{fields:o}:{},...a?{metadata:a}:{}})}function WO(e,t){let n=[...e.question[t.sessionID]??[]],r=Vd.search(n,t.id,e=>e.id);return r.found?n[r.index]=t:n.splice(r.index,0,t),e.question[t.sessionID]=n,!0}function GO(e,t,n){if(!t||!n)return!1;let r=e.question[t];if(!r)return!1;let i=Vd.search(r,n,e=>e.id);if(!i.found)return!1;let a=[...r];return a.splice(i.index,1),e.question[t]=a,!0}function KO(e,t,n){return e.session_error_at?.[t]!==n&&(e.session_error_at={...e.session_error_at,[t]:n},!0)}function qO(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 JO(e,t,n){let r=e.session_execution_recovery?.[t];return r&&r.reason===n.reason&&r.observedAt===n.observedAt?!1:(e.session_execution_recovery={...e.session_execution_recovery,[t]:n},!0)}function YO(e,t){if(e.session_execution_recovery?.[t]===void 0)return!1;let n={...e.session_execution_recovery};return delete n[t],e.session_execution_recovery=n,!0}function XO(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 ZO(e){return e.type===`global.disposed`||e.type===`server.connected`?{type:`refresh`}:e.type===`project.updated`?{type:`project`,project:e.properties}:null}function QO(e,t){let n=[...e.projects],r=Vd.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 $O(e,t,n){t&&(n?.(t,void 0),PO(e,[t]))}var ek=e=>e.title===`smartfetch-secondary`;function tk(e,t,n,r){return n.found?(e.session.splice(n.index,1),ek(t)&&$O(e,t.id,r),t.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0):!1}function nk(e){let t=e.properties?.info;if(!(!t||typeof t!=`object`))return typeof t.id==`string`?t:void 0}function rk(e,t,n){switch(t.type){case`server.instance.disposed`:return n?.onRefresh?.(``),!1;case`session.created`:{let r=nk(t);if(!r)return!1;let i=rd(r),a=e.session,o=Vd.search(a,i.id,e=>e.id);return ud(i)?o.found&&LO(a[o.index],i)?!1:(o.found?a[o.index]=i:(a.splice(o.index,0,i),ik(e),i.parentID||(e.sessionTotal+=1)),!0):tk(e,i,o,n?.onSetSessionTodo)}case`session.updated`:{let r=nk(t);if(!r)return!1;let i=rd(r),a=e.session,o=Vd.search(a,i.id,e=>e.id);if(o.found&&LO(a[o.index],i))return!1;{let t=i.time?.archived,r=typeof t==`number`&&Number.isFinite(t)&&t>0;if(!ud(i)||r)return tk(e,i,o,n?.onSetSessionTodo)}return o.found?a[o.index]=i:(a.splice(o.index,0,i),ik(e)),!0}case`openchamber:session-metadata`:{let r=t.properties,i=typeof r.sessionID==`string`?r.sessionID:``;if(!i||r.metadata===void 0)return!1;let a=e.session,o=Vd.search(a,i,e=>e.id);if(!o.found)return!1;let s={...a[o.index],metadata:r.metadata};return a[o.index]=s,ud(s)?!0:tk(e,s,o,n?.onSetSessionTodo)}case`session.deleted`:{let r=t.properties.info,i=e.session,a=Vd.search(i,r.id,e=>e.id);return a.found&&i.splice(a.index,1),$O(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]=td(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;(r.status.type===`busy`||r.status.type===`retry`)&&(i=qO(e,r.sessionID));let a=YO(e,r.sessionID);return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),XO(e.session_status[r.sessionID],r.status)?!!n?.now||i||a:(e.session_status[r.sessionID]=r.status,!0)}case`session.idle`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i=YO(e,r.sessionID),a={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),XO(e.session_status[r.sessionID],a)?!!n?.now||i:(e.session_status[r.sessionID]=a,!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&&KO(e,r.sessionID,a);return XO(e.session_status[r.sessionID],i)?a!==void 0||o:(e.session_status[r.sessionID]=i,!0)}case`session.execution.started`:{let r=t.properties,i={type:`busy`},a=qO(e,r.sessionID),o=YO(e,r.sessionID);return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),XO(e.session_status[r.sessionID],i)?!!n?.now||a||o:(e.session_status[r.sessionID]=i,!0)}case`session.execution.succeeded`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i=YO(e,r.sessionID),a={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),XO(e.session_status[r.sessionID],a)?!!n?.now||i:(e.session_status[r.sessionID]=a,!0)}case`session.execution.interrupted`:{let r=t.properties,i=r.reason,a=n?.now?.();if(a!==void 0&&(e.session_status_observed_at[r.sessionID]=a),i===`shutdown`){let t={type:`busy`},n=JO(e,r.sessionID,{reason:`shutdown`,observedAt:a??Date.now()});return XO(e.session_status[r.sessionID],t)?n||a!==void 0:(e.session_status[r.sessionID]=t,!0)}n?.onServerSessionIdle?.(r.sessionID);let o=YO(e,r.sessionID),s={type:`idle`};return XO(e.session_status[r.sessionID],s)?o||a!==void 0:(e.session_status[r.sessionID]=s,!0)}case`session.execution.failed`:{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&&KO(e,r.sessionID,a),s=YO(e,r.sessionID);return XO(e.session_status[r.sessionID],i)?a!==void 0||o||s:(e.session_status[r.sessionID]=i,!0)}case`session.revert.staged`:{let n=t.properties,r=typeof n.sessionID==`string`?n.sessionID:void 0,i=typeof n.revert?.messageID==`string`?n.revert.messageID:void 0;if(!r||!i)return!1;let a=e.session,o=Vd.search(a,r,e=>e.id);if(!o.found)return!1;let s=a[o.index],c={messageID:i,...typeof n.revert?.partID==`string`?{partID:n.revert.partID}:{}},l=s.revert;return l&&l.messageID===c.messageID&&l.partID===c.partID?!1:(a[o.index]={...s,revert:c},!0)}case`session.revert.cleared`:case`session.revert.committed`:{let n=t.properties,r=typeof n.sessionID==`string`?n.sessionID:void 0;if(!r)return!1;let i=e.session,a=Vd.search(i,r,e=>e.id);if(!a.found)return!1;let o=i[a.index];return o.revert?(i[a.index]={...o,revert:void 0},!0):!1}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=zO(RO(t.properties)?.branch);return!n||e.vcs?.branch?.current===n?!1:(e.vcs={...e.vcs,branch:{...e.vcs?.branch,current:n}},!0)}case`permission.asked`:{let n=VO(t.properties);if(!n)return!1;let r=[...e.permission[n.sessionID]??[]],i=Vd.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=Vd.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=HO(t.properties);return n?WO(e,n):!1}case`form.created`:{let n=UO(t.properties);return n?WO(e,n):!1}case`question.replied`:case`question.rejected`:{let n=t.properties;return GO(e,n.sessionID,n.requestID)}case`form.replied`:case`form.cancelled`:{let n=t.properties;return GO(e,n.sessionID,n.id??n.requestID)}case`lsp.updated`:return n?.onLoadLsp?.(),!1;default:return!1}}function ik(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 ak=Ee()(e=>({...Fn,actions:{set:t=>e(t),reset:()=>e(Fn)}}));function ok(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 sk(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 ck(e){return!(!e.directory||!e.hasStore||e.pinned||e.booting||e.loadingSessions||e.hasPendingBlockingRequests)}function lk(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 uk(e){let t=e.slice(0,12).replace(/[^a-zA-Z0-9]/g,`_`);return`oc.dir.${lk(m().trim()||`default`)}.${t}.${lk(e)}`}function dk(e,t){return`${uk(e)}.${t}`}function fk(e,t){try{let n=localStorage.getItem(dk(e,t));return n?JSON.parse(n):void 0}catch{return}}function pk(e,t,n){try{let r=dk(e,t);n===void 0?localStorage.removeItem(r):localStorage.setItem(r,JSON.stringify(n))}catch{}}function mk(e){return{vcs:fk(e,`vcs`),projectMeta:fk(e,`projectMeta`),icon:fk(e,`icon`)}}function hk(e){try{localStorage.removeItem(`${uk(e)}.sessions`)}catch{}}function gk(e,t){pk(e,`vcs`,t)}function _k(e,t){pk(e,`projectMeta`,t)}function vk(e,t){pk(e,`icon`,t)}function yk(e){let t=mk(e);hk(e);let n=Ee()(e=>({...it,vcs:t.vcs??it.vcs,projectMeta:t.projectMeta??it.projectMeta,icon:t.icon??it.icon,patch:t=>e(t),replace:t=>e(t)}));return n.subscribe((t,n)=>{t.vcs!==n.vcs&&gk(e,t.vcs),t.projectMeta!==n.projectMeta&&_k(e,t.projectMeta),t.icon!==n.icon&&vk(e,t.icon)}),n}var bk=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=be(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=be(e);t&&(this.pins.set(t,(this.pins.get(t)??0)+1),this.mark(t))}unpin(e){let t=be(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(be(e))??0)>0}ensureChild(e,t){let n=be(e);if(!n)throw Error(`No directory provided to ensureChild`);let r=this.children.get(n);return r||(r=yk(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(be(e))}captureChild(e,t){let n=be(e),r=this.ensureChild(n,t);return{directory:n,generation:this.generations.get(n)??0,store:r}}isCurrentChildCapture(e){let t=be(e.directory);return this.children.get(t)===e.store&&this.generations.get(t)===e.generation}disposeDirectory(e){let t=be(e);if(!ck({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=sk({stores:t,state:this.lifecycle,pins:new Set(t.filter(e=>this.pinned(e))),max:30,ttl:Ye,graceMs:ot,now:Date.now(),hasPendingBlockingRequests:e=>this.hasPendingBlockingRequestsForDirectory(e)}).filter(t=>t!==e);for(let e of n)this.disposeDirectory(e)}hasPendingBlockingRequestsForDirectory(e){return ok(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()}}},xk=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},Sk=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(`|`)},Ck=e=>{switch(e?.type){case`retry`:return 4;case`busy`:return 3;case`idle`:return 1;default:return 0}},wk=e=>{let t=e?.message;return typeof t==`string`?t:null},Tk=(e,t)=>{let n=e?.[t];return typeof n==`number`?n:null},Ek=(e,t)=>e?.type===t?.type&&wk(e)===wk(t)&&Tk(e,`attempt`)===Tk(t,`attempt`)&&Tk(e,`next`)===Tk(t,`next`),Dk=(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?xk(r):-1}},Ok=(e,t)=>e?t.sessionUpdatedAt===e.sessionUpdatedAt?Ck(t.status)>=Ck(e.status):t.sessionUpdatedAt>e.sessionUpdatedAt:!0,kk=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(Sk(e[n])!==Sk(t[n]))return!1;return!0},Ak=(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(!Ek(n,i))return!1}return!0};function jk(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||!ud(e))continue;let r=n.get(e.id);(!r||xk(e)>=xk(r))&&n.set(e.id,e)}return Array.from(n.values()).sort((e,t)=>xk(t)-xk(e))}function Mk(e){let t=new Map;for(let n of e)for(let e of Object.keys(n.session_status??{})){let r=Dk(n,e);r&&Ok(t.get(e),r)&&t.set(e,r)}let n={};for(let[e,r]of t)n[e]=r.status;return n}function Nk(e,t){if(!t)return;let n;for(let r of e){let e=r.session.find(e=>e.id===t);e&&(!n||xk(e)>=xk(n))&&(n=e)}return n}function Pk(e,t){if(!t)return;let n;for(let r of e){let e=Dk(r,t);e&&Ok(n,e)&&(n=e)}return n?.status}var Fk=(e,t)=>e<t?-1:+(e>t);function Ik(e){if(typeof e==`string`&&e.trim().length!==0)return{location:{directory:e}}}var Lk=e=>!e||e.length===0?``:e.map(e=>e.id).sort(Fk).join(`|`);function Rk(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 zk(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 Bk(e,t){return t.find(t=>Bt(t)===e||t.sandboxes?.includes(e))?.id}async function Vk(e,t){let n=await Promise.allSettled([Yu(()=>e.location.get().then(e=>t({path:dt(e)}))),Yu(()=>e.config.get().then(e=>t({config:mt(e)}))),Yu(()=>e.project.list().then(e=>{t({projects:e.filter(e=>!!e?.id).map(rr).filter(e=>!!Bt(e)&&!Bt(e).includes(`opencode-test`)).sort((e,t)=>Fk(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();if(n.lastOpenCodeError)e=n.lastOpenCodeError;else if(n.runtimeContract?.executionAllowed===!1){let t=typeof n.runtimeContract?.phase==`string`?n.runtimeContract.phase:`incompatible`,r=typeof n.runtimeContract?.serveVersion==`string`?n.runtimeContract.serveVersion:null;e=r?`OpenCode runtime contract limits execution (phase=${t}, serve=${r})`:`OpenCode runtime contract limits execution (phase=${t})`}else 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 Hk(e){let{directory:t,sdk:n,getState:r,set:i,global:a}=e,o=r(),s=o.status!==`complete`,c=Bk(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}),et(t,e)}s&&i({status:`partial`});let l=await Promise.allSettled([c?Promise.resolve():Yu(()=>n.location.get(Ik(t)).then(e=>{let t=e?.project?.id;t&&i({project:t})})),Yu(()=>n.config.get(Ik(t)).then(e=>{let n=mt(e);i({config:n}),et(t,n)})),Yu(()=>n.location.get(Ik(t)).then(e=>{let n=dt(e);i({path:n});let r=Bk(n.directory||t,a.projects);r&&i({project:r})})),Yu(async()=>{let e=Date.now(),t=r().session_status,a=await n.session.active(),o=new Set([...Object.keys(t),...r().session.map(e=>e.id)]);if(o.size===0)return;let s=St(a,o),c=r().session_status,l={...r().session_status_observed_at};for(let n of Object.keys(s))c[n]===t[n]&&(l[n]=e);i({session_status:zk(t,c,s),session_status_observed_at:l,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([Yu(async()=>{throw $e(`lsp.status`)}),Yu(async()=>{let e=await n.vcs.get(Ik(t));if(!e?.data)throw Error(`vcs.get returned no data`);i({vcs:e.data})}),Yu(async()=>{let e=r(),a=new Map(Object.entries(e.question??{}).map(([e,t])=>[e,Lk(t)])),o=Rk((await n.form.list(Ik(t))).data.filter(e=>!!e?.id&&!!e?.sessionID&&nt(e.metadata)).map(e=>Re({id:e.id,sessionID:e.sessionID,title:e.title,fields:e.fields,...e.metadata?{metadata:e.metadata}:{}}))),s=r(),c={...s.question};for(let[e,t]of Object.entries(o))c[e]=t.filter(e=>!!e?.id).sort((e,t)=>Fk(e.id,t.id));for(let e of a.keys()){if(o[e])continue;let t=a.get(e)??``;Lk(s.question[e])===t&&delete c[e]}i({question:c})}),Yu(async()=>{let e=r(),a=new Map(Object.entries(e.permission??{}).map(([e,t])=>[e,Lk(t)])),o=Rk((await n.permission.request.list(Ik(t))).data.filter(e=>!!e?.id&&!!e?.sessionID).map(At)),s=r(),c={...s.permission};for(let[e,t]of Object.entries(o))c[e]=t.filter(e=>!!e?.id).sort((e,t)=>Fk(e.id,t.id));for(let e of a.keys()){if(o[e])continue;let t=a.get(e)??``;Lk(s.permission[e])===t&&delete c[e]}i({permission:c})})]).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 Uk=Ee()(()=>({streamingMessageIds:new Map,messageStreamStates:new Map}));function Wk(){Uk.setState({streamingMessageIds:new Map,messageStreamStates:new Map})}var Gk=1e3;function Kk(e,t){let n=Date.now(),r=Uk.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=W();t?.store;for(let e of l){let t=[];if(f&&d&&(t=Yt(f.getTranscript(H(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>=Gk&&(s.set(r.id,{...a,lastUpdateAt:n}),c=!0)}for(let[e,t]of i)t&&(l.has(e)||u(e,t));c&&Uk.setState({streamingMessageIds:o,messageStreamStates:s})}function qk(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 Jk(e){if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null}function Yk(e){if(e[1]===`commands`)return Jk(e[2]);if(e[1]===`mcp`&&(e[2]===`configs`||e[2]===`status`))return Jk(e[3])}function Xk(e,t){let n=t.directory===void 0?void 0:Jk(t.directory);return t.directory!==void 0&&!n?Promise.resolve():e.invalidateQueries({predicate:e=>{if(e.queryKey[0]!==t.transport)return!1;let r=Yk(e.queryKey);return r===void 0?!1:n===void 0||r===n},refetchType:`active`})}function Zk(e,t){if(e.type!==`location.shutdown`&&e.type!==`server.instance.disposed`)return null;let n=e.properties?.directory,r=typeof n==`string`&&n.trim()?n:t;return r&&r!==`global`?r:null}var Qk={"credential.updated":[`providers`],"credential.switched":[`providers`],"integration.updated":[`providers`],"provider.updated":[`providers`],"model.updated":[`providers`],"config.updated":[`providers`,`agents`,`plugins`],"agent.updated":[`agents`],"command.updated":[`commands`],"skill.updated":[`skills`],"mcp.status.changed":[`mcp`],"mcp.resources.changed":[`mcp`],"plugin.updated":[`plugins`]},$k=[`providers`,`agents`,`commands`,`skills`,`mcp`,`plugins`];function eA(e){if(e[2]===`provider-connections`||e[1]===`configCatalog`&&e[2]===`providers`)return{domain:`providers`,directory:z(e[3])};if(e[1]===`providers`)return{domain:`providers`,directory:z(e[2])};if(e[1]===`agents`)return{domain:`agents`,directory:e[2]===`raw`?null:z(e[2])};if(e[1]===`commands`||e[1]===`skills`)return{domain:e[1],directory:z(e[2])};if(e[1]===`mcp`||e[1]===`plugins`)return{domain:e[1],directory:z(e[3])};if(e[1]===`skillsCatalog`)return{domain:`skills`,directory:z(e[3])}}function tA(e){let t=new Map,n,r=e.identity(),i=!1,a=t=>{let n=e.identity();return n.transport===t.transport&&n.generation===t.generation},o=()=>{n||i||(n=setTimeout(()=>{n=void 0,s()},100))},s=async()=>{if(!a(r)){t.clear();return}let n=t,s=r;t=new Map;let c=n.get(void 0);if(c){for(let[e,t]of n)if(e!==void 0){for(let e of c)t.delete(e);t.size||n.delete(e)}}i=!0;try{if(await e.client.invalidateQueries({predicate:e=>{if(e.queryKey[0]!==s.transport)return!1;let t=eA(e.queryKey);return t?[...n].some(([e,n])=>n.has(t.domain)&&(e===void 0||t.directory===null||t.directory===e)):!1},refetchType:`active`}),!a(s))return;await Promise.all([...n].map(([t,n])=>e.refreshProjections(t,n)))}catch(t){a(s)&&e.onError(t)}finally{i=!1,t.size&&o()}};return{event(n,i){let s=n===`server.connected`?$k:Object.hasOwn(Qk,n)?Qk[n]:void 0;if(!s)return!1;a(r)||(t.clear(),r=e.identity());let c=n.startsWith(`credential.`)||!i||i===`global`?void 0:z(i)??void 0,l=t.get(c)??new Set;for(let e of s)l.add(e);return t.set(c,l),o(),!0},dispose(){n&&clearTimeout(n),n=void 0,t.clear()}}}function nA(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 rA=new Set,iA=(e,t)=>`${e}\n${t}`;function aA(e,t){!e||e===`global`||!t||rA.add(iA(e,t))}function oA(e,t){let n=iA(e,t);return rA.has(n)?(rA.delete(n),!0):!1}var sA=(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=rd(i),o=typeof t==`string`&&t!==`global`?t.trim():``,s=a.directory;return!o||typeof s==`string`&&s.trim()?a:{...a,directory:o}},cA=e=>{let t=X.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null},lA=e=>{let t=e;return JSON.stringify([e.title??``,e.time?.archived??0,e.share?.url??``,t.directory??``,t.parentID??``,t.hasChildren??!1])},uA=(e,t)=>{if(e.type===`session.created`||e.type===`session.updated`){let n=sA(e,t);if(n){let e=cA(n.id);(!e||lA(e)!==lA(n))&&!LO(e,n)&&X.getState().upsertSession(n)}return}if(e.type===`openchamber:session-metadata`){let t=e.properties,n=typeof t?.sessionID==`string`?t.sessionID:``,r=t?.metadata;if(!n||!r||typeof r!=`object`||Array.isArray(r))return;let i=cA(n);if(!i)return;X.getState().upsertSession({...i,metadata:r});return}if(e.type===`session.deleted`){let t=e.properties?.sessionID??sA(e)?.id;t&&X.getState().removeSessions([t])}};function dA(e){return Object.entries(e.session_status??{}).filter(([,e])=>e&&e.type!==`idle`).map(([e])=>e)}function fA(e,t){let n=t?.viewedSession;return!n?.sessionId||n.directory!==t?.directory?[]:[n.sessionId]}function pA(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)}function mA(e,t){let n=new Set(pA(e,t));for(let t of e.session)t?.id&&n.add(t.id);let r=t?.viewedSession;r?.sessionId&&r.directory===t?.directory&&n.add(r.sessionId);for(let e of t?.extraSessionIds??[])e&&n.add(e);return Array.from(n)}var hA=e=>{let t=new Map;for(let n of e)t.set(n.id,n);return t},gA=(e,t,n)=>{let r=n??hA(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},_A=e=>{let{autoAccept:t,sessions:n,sessionById:r,sessionID:i}=e,a=gA(i,n,r);for(let e of a)if(Object.prototype.hasOwnProperty.call(t,e))return t[e]===!0;return!0},vA=t({usePermissionStore:()=>SA}),yA=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}},bA=async(e,t)=>yA(await _(e,t)),xA=(e,t,n)=>_A({autoAccept:e,sessions:[],sessionById:t,sessionID:n}),SA=Ee()(De((e,t)=>({autoAccept:{},loaded:!1,saving:!1,hydrate:async()=>{let n=await bA(`/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 bA(`/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&&xA(n,lt(),e)},setSessionAutoAccept:async(t,n)=>{if(t){if(L()){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)??V.getDirectory()??void 0;e({autoAccept:(await bA(`/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:ir(),partialize:e=>({autoAccept:e.autoAccept})})),CA=20,wA=400;function TA(e){if(!e||typeof e!=`object`||Array.isArray(e))return{name:null,message:null};let t=e,n=typeof t.type==`string`?t.type.trim():``,r=typeof t.name==`string`?t.name.trim():``,i=n||r||null,a=typeof t.message==`string`?t.message.trim():``;return{name:i,message:a?a.slice(0,wA):null,...n?{type:n}:{},...typeof t.status==`number`&&Number.isInteger(t.status)&&t.status>=100&&t.status<=599?{status:t.status}:{}}}var EA=[];function DA(e){EA.push({...e,at:Date.now()}),EA.length>CA&&EA.splice(0,EA.length-CA)}var OA=Ee(()=>({statusById:new Map})),kA=e=>e===`busy`?`busy`:e===`retry`?`retry`:`idle`,AA=e=>Sl(e)??e,jA=(e,t,n)=>{OA.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}})},MA=(e,t)=>{switch(t.type){case`session.status`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;let r=kA(n.status?.type);jA(n.sessionID,AA(e),r);return}case`session.idle`:case`session.error`:case`session.execution.succeeded`:case`session.execution.failed`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&jA(n.sessionID,AA(e),`idle`);return}case`session.execution.interrupted`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;if(n.reason===`shutdown`){jA(n.sessionID,AA(e),`busy`);return}jA(n.sessionID,AA(e),`idle`);return}case`session.execution.started`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&jA(n.sessionID,AA(e),`busy`);return}default:return}},NA=(e,t,n)=>{let r=AA(e),i=new Set(n??[]);OA.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=kA(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})},PA=e=>typeof e==`string`&&e.trim().length>0;function FA(e){let t=e.trim();return t.length<=18?t:`${t.slice(0,10)}…${t.slice(-4)}`}function IA(e,t){return kr(Or.getState().dictionary,e,t)}function LA(e,t=`missing-directory`){let n=PA(e)?FA(e):null;if(t===`missing-session-id`||!n){SC.error(IA(`sessions.toast.openFailedMissingSessionId`));return}if(t===`missing-directory`){SC.error(IA(`sessions.toast.openFailedMissingDirectory`,{sessionId:n}));return}SC.error(IA(`sessions.toast.openFailed`,{sessionId:n}))}function RA(e,t,n={}){let r=n.notify!==!1;if(!PA(e))return r&&LA(null,`missing-session-id`),{ok:!1,reason:`missing-session-id`,sessionId:null};if(!PA(t))return r&&LA(e,`missing-directory`),{ok:!1,reason:`missing-directory`,sessionId:e.trim()};let i=e.trim(),a=t.trim();return n.phoneShell&&!Ln()?(sU.getState().openSession({sessionId:i,directory:a}),{ok:!0,sessionId:i,directory:a}):n.switchToChat!==!1&&!ar.getState().setActiveMainTab(`chat`)?(r&&LA(i,`tab-switch-blocked`),{ok:!1,reason:`tab-switch-blocked`,sessionId:i}):($.getState().setCurrentSession(i,a),{ok:!0,sessionId:i,directory:a})}var zA=null,BA=e=>{zA=e},VA=(e,t)=>typeof zA==`function`&&typeof e==`string`&&e.trim()&&typeof t==`string`&&t.trim()?(zA(e.trim(),t.trim()),{ok:!0,sessionId:e.trim(),directory:t.trim()}):RA(e,t,{switchToChat:!0}),HA=(e,t)=>!e||!t?null:`${e}:${t}`,UA=({permission:e,directory:t,isViewed:n,pendingIds:r,show:i,openSession:a})=>{let o=HA(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},WA=15e3,GA=new Map,KA=(e,t)=>`${e}\n${t}`;function qA(e){if(!e.runtimeKey||!e.directory||!e.sessionId||!e.status||e.status.type===`idle`)return;let t=Date.now();for(let[e,n]of GA)n.expiresAt<=t&&GA.delete(e);GA.set(KA(e.runtimeKey,e.directory),{runtimeKey:e.runtimeKey,directory:e.directory,sessionId:e.sessionId,status:e.status,expiresAt:Date.now()+WA})}function JA(e,t){let n=GA.get(KA(e,t));return n?n.expiresAt<=Date.now()?(GA.delete(KA(e,t)),null):n:null}var YA=[],XA=[],ZA=[],QA={sessionID:``,revertMessageID:void 0,records:XA,history:ZA},$A=e=>{if(e?.type!==`text`)return``;let t=e.text;return typeof t==`string`?t:``},ej=e=>{for(let t of e){let e=$A(t);if(e.length>0)return e}return``},tj=(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},nj=(e,t=QA)=>{let n=e.sessionID;if(!n)return QA;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&&yn(r,n.id,i)||a.push({message:n,parts:e.parts[n.id]??YA}))}if(a.length===0)return t.sessionID===n&&t.revertMessageID===i&&t.records.length===0?t:{sessionID:n,revertMessageID:i,records:XA,history:ZA};if(t.sessionID===n&&t.revertMessageID===i&&tj(t.records,a))return t;let o=[];for(let e of a){let t=ej(e.parts);t.length>0&&o.push(t)}return{sessionID:n,revertMessageID:i,records:a,history:o}};function rj(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 ij(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 aj(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 oj(e,t,n){if(!e)return null;let r=t?.id===e?t:null,i=n?.id===e?n:null;return r??i}function sj(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 cj=`__openchamber_sync_context__`,lj=globalThis,uj=lj[cj]??(0,J.createContext)(null);lj[cj]=uj;function dj(){let e=(0,J.useContext)(uj);if(!e)throw Error(`useSyncSystem must be used within <SyncProvider>`);return e}function fj(e){return Array.from(e.children.values(),e=>e.getState())}function pj(e,t,n){let r=(0,G.c)(7),i=t===void 0?Object.is:t,{childStores:a}=dj(),o=(0,J.useRef)(void 0),s=(0,J.useRef)(!1),c;r[0]!==a||r[1]!==i||r[2]!==e?(c=()=>{let t=e(fj(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],J.useSyncExternalStore(u,l,l)}function mj(e){let t=(0,G.c)(4),n;t[0]===e?n=t[1]:(n=t=>Pk(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),pj(n,Object.is,r)}function hj(e){let t=(0,G.c)(5),n=mj(e),r;t[0]===e?r=t[1]:(r=t=>t.statusById.get(e)?.status,t[0]=e,t[1]=r);let i=OA(r),a;return t[2]!==i||t[3]!==n?(a=gj(n,i),t[2]=i,t[3]=n,t[4]=a):a=t[4],a}function gj(e,t){if(e)return e;if(t===`busy`)return{type:`busy`};if(t===`retry`)return{type:`retry`,attempt:0,message:``,next:0}}var _j=[],vj={};function yj(e){let t=(0,G.c)(4),n=e?.enabled??!0,r;t[0]===n?r=t[1]:(r=e=>n?Mk(e):vj,t[0]=n,t[1]=r);let i;return t[2]===n?i=t[3]:(i=(e,t)=>n?e.subscribeAllSelected(bj,t):xj,t[2]=n,t[3]=i),pj(r,Ak,i)}function bj(e){return e.session_status}function xj(){}function Sj(e){let t=(0,G.c)(5),n=e?.enabled??!0,r=X(Tj),i;t[0]!==n||t[1]!==r?(i=e=>n?jk(e,r):_j,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(Cj,t):wj,t[3]=n,t[4]=a),pj(i,kk,a)}function Cj(e){return e.session}function wj(){}function Tj(e){return e.pendingDeletionIds}var Ej=!1,Dj=0,Oj=0,kj=1500,Aj=new Set([`patch`,`step-start`,`step-finish`]),jj=5e3,Mj=4e4,Nj=15e3,Pj=6e4,Fj=6e4,Ij=e=>!e||e.length===0?``:e.map(e=>e.id).sort(Lj).join(`|`),Lj=(e,t)=>e<t?-1:+(e>t),Rj=e=>JSON.stringify(e);function zj(e,t){return Rj(e)===Rj(t)}var Bj=5e3,Vj=new Map,Hj=(e,t)=>`${e}:${t}`;function Uj(e,t){try{let n=W();return n?kt(n.getTranscript(H(e,t))):!1}catch{return!1}}async function Wj(e,t){try{if(!W())return;await We(e,t)}catch{}}function Gj(e,t,n,r){if(!e||e===`global`||!t)return;let i=Hj(e,t),a=Vj.get(i);if(a&&Date.now()-a.enqueuedAt<Bj){Promise.resolve().then(()=>{Uj(e,t)&&Wj(e,t)});return}Vj.set(i,{sessionID:t,directory:e,enqueuedAt:Date.now(),request:r}),Promise.resolve().then(async()=>{let a=n.getChild(e);if(!a){Vj.delete(i);return}try{await qj(e,t,a,r)}catch{}finally{Vj.delete(i)}})}function Kj(e,t,n){let r=t.admissionHint?.sessionID??t.domainActivityHint?.sessionID??(typeof t.properties.sessionID==`string`?t.properties.sessionID:void 0);!r||!e||e===`global`||(t.domainActivityHint?.kind===`activity`&&wh(n.getChild(e)??n.ensureChild(e,{bootstrap:!1}),r),t.domainActivityHint?.kind===`terminal`&&r===Yj&&e===Jj&&Gj(e,r,n,{reason:`session-idle`}))}async function qj(e,t,n,r){let i=n.getState().session_status?.[t];_t.recovery.materializing({reason:r?.reason??`ensure-session-messages`,directory:e,sessionID:t,messageID:r?.messageID,partID:r?.partID});try{let a=()=>{try{return W()?.getTranscript(H(e,t)).liveRevision}catch{return}},o=a(),s=await sv({directory:e,sessionID:t,limit:xp(),signal:AbortSignal.timeout(3e4),purpose:`materialize`});if(r?.isStale?.())return`skipped`;let c=uv({directory:e,sessionID:t,purpose:`materialize`,page:s,capturedLiveRevision:o,liveRevision:a(),skipPartTypes:Aj});return Uj(e,t)&&await Wj(e,t),c.applied?(Fv({directory:e,sessionID:t,store:n,isStale:r?.isStale}),s.records.length===0||!r?.isStale?.()&&i?.type!==`idle`&&await Oh(e,n,[t]),`ready`):`skipped`}catch{return`error`}}var Jj=``,Yj=``,Xj=null,Zj=``,Qj=``,$j=new Map,eM=new Set,tM=15e3,nM=(e,t)=>`${e}\n${t}`;function rM(e=Date.now()){for(let[t,n]of $j.entries())n<=e&&$j.delete(t)}var iM=new Set,aM=new Set,oM=(e,t)=>!e||!t?null:`${e}:${t}`,sM=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},cM=(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=S()?.notifications;return i?.notifyAgentCompletion&&i.notifyAgentCompletion({title:sM(r.title),body:sM(r.body),tag:sM(r.tag),kind:sM(r.kind),sessionId:sM(r.sessionId),assistantID:sM(r.assistantID),directory:sM(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 lM(e,t){!e||!t||!Xj||oA(e,t)&&Gj(e,t,Xj,{reason:`session-idle`})}function uM(e){Xj=e,e&&lM(Jj,Yj)}function dM(e,t){Jj=e,Yj=t,lM(e,t)}function fM(e,t,n){if(!e||!t)return;let r=nM(e,t);if(!n){$j.delete(r);return}$j.set(r,Date.now()+tM)}function pM(e,t){if(!e||!t){Zj=``,Qj=``;return}Zj=e,Qj=t}function mM(){let e=[],t=new Set,n=(n,r)=>{if(!n||!r)return;let i=nM(n,r);t.has(i)||(t.add(i),e.push({directory:n,sessionID:r}))};return n(Zj,Qj),n(Jj,Yj),e}function hM(){return typeof document<`u`&&document.hasFocus()}function gM(e,t){return t?Jj&&Yj&&e===Jj&&t===Yj&&hM()?!0:(rM(),$j.has(nM(e,t))):!1}function _M(){return Ej||Date.now()-Dj<kj}function vM(e){return!Jj||!Yj||e!==Jj?null:{directory:Jj,sessionId:Yj}}function yM(e,t){return pA(t,{directory:e,viewedSession:vM(e)})}function bM(e){let t=Sl(e)??e,n=[];for(let e of X.getState().activeSessions){let r=e.directory||e.location?.directory;r&&(Sl(r)??r)===t&&n.push(e.id)}return n}function xM(e,t){return mA(t,{directory:e,viewedSession:vM(e),extraSessionIds:bM(e)})}function SM(e,t,n,r=Mj,i=Nj){return!(e<=0||n-e<r||n-t<i)}function CM({isViewed:e,status:t,lastTransportActivityAt:n,lastDomainActivityAt:r,lastFullResyncAt:i,now:a,transportStaleThresholdMs:o=Mj,domainStaleThresholdMs:s=Pj,recoveryCooldownMs:c=Fj}){return!(!e||t?.type!==`busy`&&t?.type!==`retry`||n<=0||a-n>=o||r<=0||a-r<s||a-i<c)}var wM=L(),TM=(e,t)=>{!wM||typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:vscode-notification-event`,{detail:{directory:e,payload:t}}))},EM=()=>({sessionDirectoryById:new Map,messageSessionById:new Map,sessionMessageIdsById:new Map}),DM=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},OM=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===`form.replied`||e.type===`form.cancelled`||e.type===`session.deleted`){let e=n.sessionID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`form.created`){let e=n.form;if(e&&typeof e==`object`){let t=e.sessionID;return typeof t==`string`&&t.length>0?t:null}return 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}let r=n.sessionID;return typeof r==`string`&&r.length>0?r:null},kM=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}let r=n.messageID??n.assistantMessageID;return typeof r==`string`&&r.length>0?r:null},AM=(e,t,n)=>{!t||!n||n===`global`||e.sessionDirectoryById.set(t,n)},jM=(e,t,n,r)=>{if(!t)return;AM(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)},MM=(e,t,n,r)=>{if(!t||!n)return;AM(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]))},NM=(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))},PM=(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)},FM=(e,t,n)=>{let r=new Set;for(let i of n.session)i?.id&&(r.add(i.id),AM(e,i.id,t));try{let n=W(),i=n?.getCacheBudget?.().listCanonical({directory:t});if(i)for(let a of i){if(a.scope.directory!==t)continue;r.add(a.scope.sessionID),AM(e,a.scope.sessionID,t);let i=n?.getTranscript?.(H(t,a.scope.sessionID));if(i){let n=Yt(i);jM(e,a.scope.sessionID,t,n)}}}catch{}for(let[n,i]of e.sessionDirectoryById)i===t&&(r.has(n)||PM(e,n))},IM=(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 AM(n,e,r),r}try{let t=W()?.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 AM(n,e,t),t}}catch{}return null},LM=(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(W()??vt(t,r)).hasSession?.(H(t,n))??!1}catch{return!1}},RM=(e,t,n)=>{try{let e=W();if(e&&e.getParts(H(t,n),n).length>0)return!0}catch{}return!1},zM=e=>!Jj||!Yj?null:e.getChild(Jj)?Jj:null,BM=(e,t,n,r)=>{let i=DM(t),a=OM(n);if(a){if(i&&i!==`global`&&LM(r,i,a))return AM(e,a,i),i;let t=e.sessionDirectoryById.get(a);if(t&&r.getChild(t))return t;let n=IM(a,r,e);if(n)return n}let o=kM(n);if(o){if(i&&i!==`global`&&RM(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(RM(r,i,o))return i;for(let[e]of r.children)if(RM(r,e,o))return e;let n=zM(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},VM=(e,t,n,r)=>{if(e)return e;if(t){let e=r.messageSessionById.get(t);if(e)return e}if(n&&n===Jj&&Yj)return Yj};function HM(e,t){let n=OM(e)??(e.type===`session.deleted`?e.properties.info?.id:void 0);if(n)return n;let r=kM(e);return r?t.get(r):void 0}function UM(e,t){return e===t}var WM=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`,GM=(e,t,n)=>{if(!t||t===`global`)return;let r=OM(n);switch(r&&AM(e,r,t),n.type){case`session.created`:case`session.updated`:{let r=n.properties.info;r?.id&&AM(e,r.id,t);return}case`session.deleted`:{let t=n.properties.sessionID;t&&PM(e,t);return}case`message.updated`:{let r=n.properties.info;r?.id&&r.sessionID&&MM(e,r.sessionID,r.id,t);return}case`message.removed`:{let t=n.properties;t.messageID&&NM(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&&MM(e,a,o,t);return}default:return}};async function KM(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,Ij(r.question[e])])),o=await V.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(!gM(e,t))for(let r of n){if(i.has(r.id))continue;let n=oM(t,r.id);if(!n||iM.has(n))continue;iM.add(n);let a=r.questions?.[0],o=a?.header?.trim()||`Input needed`,s=a?.question?.trim()||`Agent is waiting for your response`;SC.info(o,{id:`question-${n}`,description:s,action:{label:`Open session`,onClick:()=>VA(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)??``;Ij(e.question[r])===i&&delete t[r]}return{question:t}})}catch{}try{let n=new Map(a.map(e=>[e,Ij(r.permission[e])])),o=await V.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=SA.getState(),l=L()?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 V.fetchPermission(r.sessionID,r.id);if(i.state===`ok`){await Kb(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=gM(e,t);if(!a)for(let t of n)i.has(t.id)||UA({permission:t,directory:e,isViewed:a,pendingIds:aM,show:(e,t)=>SC.info(e,t),openSession:VA})}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)??``;Ij(e.permission[r])===i&&delete t[r]}return{permission:t}})}catch{}}}function qM(e,t,n){n?.statusOnly}function JM(e){return e.isFirstConnect&&!e.disconnectedBeforeFirstConnect}function YM(e){return{resyncBlockingRequests:!0,ingestRoutingIndex:!e?.statusOnly}}async function XM(e,t,n,r,i,a){let o=xM(e,t.getState());await Oh(e,t,o);let s=fA(yM(e,t.getState()),{directory:e,viewedSession:vM(e)});if(s.length>0){let a=V.getScopedSdkClient(e);await Promise.all(s.map(async o=>{let s=i(o);_t.recovery.materializing({reason:r,directory:e,sessionID:o});let c=await Yu(async()=>await a.session.get({sessionID:o})).catch(()=>null);if(c&&UM(s,i(o))){let r=rd(bt(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?zj(n[t],r)||(n=[...e.session],n[t]=r,i=!0):(n=[...e.session],n.push(r),n.sort((e,t)=>Lj(e.id,t.id)),r.parentID||(a+=1),i=!0),i?{session:n,sessionTotal:a}:e}),AM(n,r.id,e)}let l=i(o),u=t.getState(),d=u.session_status?.[o],f=u.session_status_observed_at?.[o],p=()=>!UM(l,i(o)),m=l;ih(e,o);try{let r=await sv({directory:e,sessionID:o,limit:xp(),signal:AbortSignal.timeout(3e4),purpose:`recovery`});if(p()||!uv({directory:e,sessionID:o,purpose:`recovery`,page:r,capturedLiveRevision:m,liveRevision:i(o),skipPartTypes:Aj}).applied)return;let a=He().getTranscript(H(e,o));jM(n,o,e,a.messageOrder.map(e=>a.messagesByID[e]).filter(e=>!!e)),Fv({directory:e,sessionID:o,store:t,transcript:a,isStale:p}),await kh({directory:e,sessionID:o,store:t,statusBeforePull:d,statusObservedAtBeforePull:f,hasMessages:a.messageOrder.length>0,isStale:p})}catch{}finally{ah(e,o)}}))}let c=YM(a);c.resyncBlockingRequests&&await KM(e,t,o),c.ingestRoutingIndex&&FM(n,e,t.getState())}function ZM(e){try{let t=W(),n=u(),r=f();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>H(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function QM(e){let t=OM(e)??void 0;if(t)return t;if(e.type===`message.updated`)return e.properties.info?.sessionID??void 0}var $M=null,eN=0;function tN(e){return`${e.directory}\0${e.sessionID}\0${e.transport??``}\0${e.generation??``}`}function nN(){eN===0&&($M={byScope:new Map,routing:[],debug:[]}),eN+=1}function rN(){if(eN===0||(--eN,eN>0))return;let e=$M;if($M=null,e)try{for(let t of e.byScope.values()){let n=fn(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=VM(r.sessionID??t.transcriptSessionID,r.messageID??e,t.scope.directory,t.routingIndex);n&&Gj(t.scope.directory,n,t.childStores,{reason:r.reason,messageID:r.messageID,partID:r.partID})}}for(let t of e.debug)t.changed?_t.dispatch.eventApplied(t.payloadType,t.transcriptSessionID,t.eventMessageID):_t.dispatch.eventNoChange(t.payloadType,t.transcriptSessionID,t.eventMessageID);for(let t of e.routing)GM(t.routingIndex,t.resolvedDirectory,t.payload)}finally{$M=null,eN=0}}function iN(e,t,n,r,i,a){let o=qk({sessionID:t,resolvedDirectory:n,transport:u(),generation:f(),listCanonicalScopes:ZM});if($M){for(let n of o){let o=tN(n),s=$M.byScope.get(o);s||(s={scope:n,events:[],transcriptSessionID:t,eventMessageIDs:[],childStores:i,routingIndex:a},$M.byScope.set(o,s)),s.events.push(e),s.eventMessageIDs.push(r)}$M.debug.push({payloadType:e.type,transcriptSessionID:t,eventMessageID:r,changed:!1}),$M.routing.push({routingIndex:a,resolvedDirectory:n,payload:e});return}let s=!1;for(let n of o){let o=fn(n,{type:`sse-event`,event:e})??{applied:!1,changed:!1};o.changed&&(s=!0);let c=o.materialization;if(c){let e=VM(c.sessionID??t,c.messageID??r,n.directory,a);e&&Gj(n.directory,e,i,{reason:c.reason,messageID:c.messageID,partID:c.partID})}}s?_t.dispatch.eventApplied(e.type,t,r):_t.dispatch.eventNoChange(e.type,t,r),GM(a,n,e)}var aN=tA({client:F,identity:()=>({transport:u(),generation:f()}),refreshProjections:async(e,t)=>{if(!t.has(`providers`)&&!t.has(`agents`))return;let n=K.getState(),r=u(),i=f(),a=[...new Set([...Object.keys(n.directoryScoped),...V.getDirectory()?[V.getDirectory()]:[]])].filter(t=>t&&t!==`__global__`&&(!e||z(t)===z(e)));for(let e=0;e<a.length;e+=4){if(u()!==r||f()!==i)return;await Promise.all(a.slice(e,e+4).flatMap(e=>[...t.has(`providers`)?[n.loadProviders({directory:e,source:`config-event`,forceRefresh:!0,allowEmpty:!0})]:[],...t.has(`agents`)?[n.loadAgents({directory:e,source:`config-event`,forceRefresh:!0})]:[]]))}},onError:()=>console.warn(`[sync] Configuration refresh failed; retaining previous catalogs`)});function oN(e,t,n,r){if(aN.event(t.type,e)&&t.type!==`server.connected`)return;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&&dE(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`){_O();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`&&SA.getState().applySnapshot({sessions:t.sessions})}return}let i=Zk(t,e);i&&Xk(F,{transport:u(),directory:i});let a=BM(r,e,t,n);if(cM(t,a))return;uA(t,a);let o=t.type===`session.status`||t.type===`session.idle`||t.type===`session.error`?OM(t):void 0,s=o?n.getChild(a)?.getState().session_status[o]?.type??OA.getState().statusById.get(o)?.status??`idle`:void 0;if(MA(a,t),o&&a&&a!==`global`&&s!==(OA.getState().statusById.get(o)?.status??`idle`)&&wH(a,$.getState().availableWorktreesByProject),a===`global`||!a){if(nr(t.type)){let e=QM(t);if(e){iN(t,e,a||`global`,kM(t)??void 0,n,r);return}}let e=_M(),i=ZO(t);if(!i)return;if(i.type===`refresh`)e||ak.setState({reload:`pending`});else if(i.type===`project`){let e=ak.getState();ak.setState({projects:QO(e,i.project).projects})}if((t.type===`server.connected`||t.type===`global.disposed`)&&!e){Xk(F,{transport:u()});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 c=n.getChild(a),l=a;if(!c){let e=OM(t);if(e){let t=IM(e,n,r);t&&(c=n.getChild(t),l=t)}}if(!c){if(nr(t.type)){let e=QM(t);if(e){iN(t,e,l,kM(t)??void 0,n,r);return}}let e=ZO(t);if(e?.type===`refresh`)ak.setState({reload:`pending`});else if(e?.type===`project`){let t=ak.getState();ak.setState({projects:QO(t,e.project).projects})}return}if(n.mark(l),t.type===`permission.asked`){let e=VO(t.properties);if(!e)return;if(SA.getState().isSessionAutoAccepting(e.sessionID)){GM(r,l,t),L()&&Kb(e.sessionID,e.id,`once`).catch(()=>void 0);return}let n=c.getState().session.find(t=>t.id===e.sessionID)??X.getState().activeSessions.find(t=>t.id===e.sessionID);if(n&&!n.parentID){let t=gM(l,e.sessionID);UA({permission:e,directory:l,isViewed:t,pendingIds:aM,show:(e,t)=>SC.info(e,t),openSession:VA})}}if(t.type===`permission.replied`){let e=t.properties,n=HA(e.sessionID,e.requestID);n&&(aM.delete(n),SC.dismiss(`permission-${n}`))}if(t.type===`question.asked`){let e=HO(t.properties);if(!e)return;let n=e.sessionID,r=c.getState().session.find(e=>e.id===n)??X.getState().activeSessions.find(e=>e.id===n);if(r&&!r.parentID){let t=oM(n,e.id);if(!gM(l,n)&&t&&!iM.has(t)){iM.add(t);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;SC.info(i,{id:`question-${t}`,description:a,action:{label:`Open session`,onClick:()=>VA(n,l)}})}}}if(t.type===`question.replied`||t.type===`question.rejected`){let e=t.properties,n=oM(e.sessionID,e.requestID);n&&(iM.delete(n),SC.dismiss(`question-${n}`))}if(t.type===`form.created`){let e=UO(t.properties);if(e){let t=e.sessionID,n=c.getState().session.find(e=>e.id===t)??X.getState().activeSessions.find(e=>e.id===t);if(n&&!n.parentID){let n=oM(t,e.id);if(!gM(l,t)&&n&&!iM.has(n)){iM.add(n);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;SC.info(i,{id:`question-${n}`,description:a,action:{label:`Open session`,onClick:()=>VA(t,l)}})}}}}if(t.type===`form.replied`||t.type===`form.cancelled`){let e=t.properties,n=oM(e.sessionID,e.id??e.requestID);n&&(iM.delete(n),SC.dismiss(`question-${n}`))}if(t.type===`session.execution.started`){let e=t.properties.sessionID;e&&(xD(e),eM.delete(e))}if(t.type===`session.status`){let e=t.properties;e.sessionID&&(e.status?.type===`busy`||e.status?.type===`retry`)&&eM.delete(e.sessionID)}if(t.type===`session.idle`||t.type===`session.execution.succeeded`||t.type===`session.error`||t.type===`session.execution.failed`){let e=t.properties,n=e.sessionID,r=t.type===`session.idle`||t.type===`session.execution.succeeded`,i=r?null:TA(e.error),a=!!(i&&(i.message||i.name));a&&i&&n&&DA({sessionId:n,directory:l??null,...i});let o=c.getState().session.find(e=>e.id===n)??X.getState().activeSessions.find(e=>e.id===n);n&&o&&!o.parentID&&(r&&t.type===`session.idle`&&eM.has(n)?eM.delete(n):(yD({directory:l,session:n,time:Date.now(),viewed:!r&&gM(l,n),...a&&i?{type:`error`,error:i}:{type:`turn-complete`}}),t.type===`session.execution.succeeded`&&eM.add(n)))}if(t.type===`session.idle`){let e=OM(t);if(e&&l&&l!==`global`){let t=c.getState().session.find(t=>t.id===e),r=t?t.parentID:null,i=nA({idleSessionID:e,directory:l,parentID:r,activeSessionID:Yj,activeDirectory:Jj});i.action===`materialize-parent`?Gj(l,i.sessionID,n,{reason:`child-session-idle`}):i.action===`materialize-now`?Gj(l,i.sessionID,n,{reason:`session-idle`}):i.action===`defer-until-viewed`&&aA(l,i.sessionID)}}let d=c.getState(),f=OM(t)??void 0,p=kM(t)??void 0;if(t.type===`session.created`){let e=t.properties.info;Gv(l,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`)&&ty(l,f,p))return;if(t.type===`session.inbox.enqueued`||t.type===`session.inbox.cancelled`||t.type===`session.inbox.delivered`||t.type===`session.inbox.delivery.changed`){Jt({type:t.type,properties:t.properties??null}),GM(r,l,t);return}if(t.type===`session.revert.committed`||t.type===`session.revert.staged`||t.type===`session.revert.cleared`){let e={...d,session:[...d.session]};if(rk(e,t,{now:Date.now})&&c.setState(e),t.type===`session.revert.committed`){let e=QM(t)??t.properties.sessionID,i=t.properties.to;e&&typeof i==`string`&&i.length>0&&iN(t,e,l,p,n,r)}GM(r,l,t);return}if(nr(t.type)){let e=QM(t);if(!e){GM(r,l,t);return}iN(t,e,l,p,n,r);return}let m={...d};switch(t.type){case`session.created`:case`session.updated`:case`session.deleted`:case`openchamber:session-metadata`:m.session=[...d.session],m.session_status_observed_at={...d.session_status_observed_at},m.permission={...d.permission},m.todo={...d.todo};break;case`session.diff`:m.session_diff={...d.session_diff};break;case`session.status`:case`session.idle`:case`session.error`:case`session.execution.started`:case`session.execution.succeeded`:case`session.execution.failed`:case`session.execution.interrupted`:m.session_status={...d.session_status??{}},m.session_status_observed_at={...d.session_status_observed_at},m.session_error_at={...d.session_error_at},m.session_execution_recovery={...d.session_execution_recovery??{}};break;case`todo.updated`:m.todo={...d.todo};break;case`vcs.branch.updated`:break;case`permission.asked`:case`permission.replied`:m.permission={...d.permission};break;case`question.asked`:case`question.replied`:case`question.rejected`:case`form.created`:case`form.replied`:case`form.cancelled`:m.question={...d.question};break;case`lsp.updated`:m.lsp=[...d.lsp]}let h=rk(m,t,{onSetSessionTodo:(e,t)=>{Sv.getState().setSessionTodos(e,t)},onServerSessionIdle:e=>{$.getState().releaseQueueAbortBlocksForServerIdle(l,e)},now:Date.now}),g=typeof h==`boolean`?h:h.changed,_=typeof h==`boolean`?void 0:h.materialization;if(g){c.setState(m);let e=OM(t)??void 0,n=kM(t)??void 0;_t.dispatch.eventApplied(t.type,e,n)}else{let e=OM(t)??void 0,n=kM(t)??void 0;_t.dispatch.eventNoChange(t.type,e,n)}if(_){let e=VM(_.sessionID??OM(t)??void 0,_.messageID??kM(t)??void 0,l,r);e&&Gj(l,e,n,{reason:_.reason,messageID:_.messageID,partID:_.partID})}GM(r,l,t)}var sN=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:opencode-update-available`,{detail:e}))},cN=null,lN=async()=>{let e=m();return(!cN||cN.runtimeKey!==e)&&(cN={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)}),cN.promise},uN=e=>{typeof window>`u`||lN().then(t=>{t||sN(e)})};function dN(e,t,n){return e!==t||n!==!1}function fN(e){let t=K(e=>e.settingsMessageStreamTransport),n=(0,J.useRef)(null);n.current||=new bk;let r=n.current,i=(0,J.useRef)(null);i.current||=EM();let a=i.current,c=(0,J.useRef)(0),l=(0,J.useRef)(new Map),d=(0,J.useRef)(new Map),p=(0,J.useRef)(new Map),h=(0,J.useRef)(new Set),g=(0,J.useRef)(null),_=(0,J.useRef)(!1),v=(0,J.useRef)(!1),y=(0,J.useRef)({directory:e.directory,enabled:e.bootstrapDirectory});y.current={directory:e.directory,enabled:e.bootstrapDirectory};let b=e=>{let t=y.current;return dN(e,t.directory,t.enabled)},x=(0,J.useMemo)(()=>({childStores:r,sdk:e.sdk,directory:e.directory}),[r,e.sdk,e.directory]);(0,J.useEffect)(()=>(uM(r),()=>{uM(null)}),[r]);let S=(0,J.useCallback)((e,t,n)=>{if(qM(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),XM(e,i,a,t,t=>d.current.get(nM(e,t))??0,n).catch(()=>{}).finally(()=>{o.delete(e)}))},[r,a]);(0,J.useEffect)(()=>{L()||SA.getState().hydrate().catch(()=>void 0)},[e.sdk]),(0,J.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 bi(),!b(n))return;let t=ak.getState();await Hk({directory:n,sdk:e.sdk,getState:()=>i.getState(),set:e=>{i.setState(e),e.session&&FM(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,J.useEffect)(()=>{let t=++Oj;Ej=!0;let n=ak.getState().actions;return bi().then(()=>{if(Oj===t)return Vk(e.sdk,e=>{Oj===t&&n.set(e)})}).then(()=>{Oj===t&&(Dj=Date.now())}).finally(()=>{Oj===t&&(Ej=!1)}),()=>{Oj===t&&(Ej=!1)}},[e.sdk]),(0,J.useEffect)(()=>{let n=iO({sdk:e.sdk,transport:t,routeDirectory:(e,t)=>BM(a,e,t,r),onFlushStart:()=>{nN()},onFlushEnd:()=>{rN()},onNormalizedEvent:(e,t)=>{Kj(e,t,r);let n=t.domainActivityHint?.sessionID??t.admissionHint?.sessionID;n&&e===Jj&&n===Yj&&(t.domainActivityHint||t.admissionHint)&&l.current.set(nM(e,n),Date.now())},onEvent:(e,t)=>{let n=HM(t,a.messageSessionById)??null;if(n&&WM(t)){let t=nM(e,n);d.current.set(t,(d.current.get(t)??0)+1)}if(n&&e===Jj&&n===Yj&&(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(nM(e,n),Date.now()),n&&e===Jj&&n===Yj&&t.type===`session.status`){let r=t.properties.status;if(r?.type===`busy`||r?.type===`retry`){let t=nM(e,n);l.current.has(t)||l.current.set(t,Date.now())}r?.type===`idle`&&l.current.delete(nM(e,n))}if(n&&(t.type===`session.idle`||t.type===`session.deleted`)&&l.current.delete(nM(e,n)),TM(e,t),t.type===`installation.update-available`){let e=typeof t.properties?.version==`string`?t.properties.version:``;e&&uN({version:e})}oN(e,t,r,a)},onTransportActivity:()=>{let e=Date.now();c.current=e,ep(e)},onReconnect:()=>{aN.event(`server.connected`),K.setState({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let e=!_.current;_.current=!0;let t=JM({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}=K.getState();K.setState({isConnected:!1,connectionPhase:t?`reconnecting`:`connecting`,lastDisconnectReason:e})},onRecoveryContextCaptured:e=>{wn({lastEventID:e.lastEventId,reason:e.reason,generation:e.runtimeGeneration})},onCompensation:e=>{_O(),Nn(e)},onTransportSwitch:()=>{let{hasEverConnected:e}=K.getState();K.setState({isConnected:!1,connectionPhase:e?`reconnecting`:`connecting`});for(let e of r.children.keys())S(e,`transport-switch`)}});g.current=n.reconnect;let i=tp(n.reconnect);return()=>{i(),g.current===n.reconnect&&(g.current=null),n.cleanup()}},[e.sdk,r,a,t,S]),(0,J.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(dA(r).length===0){p.current.delete(e);continue}let i=p.current.get(e)??0;SM(c.current,i,t)&&(g.current?.(`active_stream_stale`),S(e,`stale-status-resync`));let a=vM(e);if(!a)continue;let o=r.session_status?.[a.sessionId],s=nM(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}CM({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,jj);return n(),()=>{e=!0,clearInterval(i)}},[r,S]),(0,J.useEffect)(()=>{let t;if(e.directory){let n=r.ensureChild(e.directory,{bootstrap:dN(e.directory,e.directory,e.bootstrapDirectory)}),i=JA(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)},WA)),FM(a,e.directory,n.getState())}return()=>{t&&clearTimeout(t)}},[e.directory,e.bootstrapDirectory,r,a]);let C=(0,J.useRef)(null),w=(0,J.useRef)({transport:u(),generation:f()});return(0,J.useEffect)(()=>{if(C.current)return;let e=lv({childStores:r,getViewedSession:()=>mM()[0]??null,getViewedSessions:()=>mM()});return C.current=e,w.current={transport:u(),generation:f()},()=>{let e=w.current;un(`provider-dispose`);let t=C.current?.repository;t&&t.purgeGeneration(e.transport,e.generation),C.current?.destroy(),C.current=null}},[r]),(0,J.useEffect)(()=>(rt(e.sdk,r,e.directory,(e,t)=>{AM(a,e,t)}),fy(e.sdk,r,()=>V.getDirectory()||e.directory),vh((e,t,n)=>{let r=new Set(n),i=Sl(e)??e,a={...t};for(let[e,t]of OA.getState().statusById)r.has(e)||t.directory===i&&(a[e]={type:t.status});NA(e,a,n)}),()=>{vh(void 0)}),[e.sdk,e.directory,r,a]),(0,J.useEffect)(()=>s(e=>{if(!e.transportIdentityChanged){w.current={transport:u(),generation:f()};return}let t=w.current;un(`runtime-switch`);let n=C.current?.repository;n&&n.purgeGeneration(t.transport,t.generation),w.current={transport:u(),generation:f()}}),[]),(0,J.useEffect)(()=>o(()=>{np(`reasoning_projection`),(C.current?.repository)?.resetReasoningProjection?.();let e=mM();for(let t of e)Kn(t.directory,t.sessionID).catch(()=>void 0)}),[]),(0,J.useEffect)(()=>{if(!e.directory)return;let t=r.getChild(e.directory);if(!t)return;let n=e.directory,i=()=>{Kk(t.getState(),{directory:n,store:t})};i();let a=t.subscribe(()=>{i()}),o=[],s=()=>{for(let e of o)e();o=[];let e=W()??vt(n,t),r=t.getState().session_status??{};for(let[t,a]of Object.entries(r))!a||a.type===`idle`||o.push(e.subscribe(H(n,t),i));i()};s();let c=Ie(s);return()=>{c(),a();for(let e of o)e()}},[e.directory,r]),(0,CO.jsxs)(uj.Provider,{value:x,children:[(0,CO.jsx)(jO,{}),e.children]})}function pN(e,t){let n=(0,G.c)(4),r=dj(),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 mN(e,t){let n=pN(t);return Oe(n,e)}function hN(e){let{childStores:t}=dj(),n=e.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),r=(0,J.useRef)(e);r.current=e;let i=(0,J.useCallback)(e=>n?aj(t,r.current,e):()=>void 0,[t,n]),a=(0,J.useCallback)(()=>n?ij(t,r.current):``,[t,n]);return J.useSyncExternalStore(i,a,a)}function gN(){let e=(0,G.c)(2),{childStores:t}=dj(),n;return e[0]===t?n=e[1]:(n=e=>rj(t,e),e[0]=t,e[1]=n),n}function _N(e,t){let n=dj(),r=t??n.directory,i=pN(r);return Bn(e,r,i)}function vN(e,t){let n=dj(),r=t??n.directory,i=pN(r);return rn(e,r,i)}function yN(e,t){let n=(0,G.c)(8),r=dj(),i=t??r.directory,a=pN(i),o=(0,J.useRef)(void 0),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(Mt(),!e){o.current=void 0;return}let t=(W()??vt(i,a)).getRequestState?.(H(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 bN;let n=(W()??vt(i,a)).subscribe(H(i,e),()=>{t()}),r=Ie(()=>{n(),o.current=void 0,n=(W()??vt(i,a)).subscribe(H(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 J.useSyncExternalStore(u,c,c)}function bN(){}function xN(e,t,n){let r=dj(),i=t??r.directory,a=pN(i);return Gn(e,i,a,n)}function SN(e,t){let n=(0,G.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=pN(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):CN,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return J.useSyncExternalStore(c,o,o)}function CN(){}function wN(e,t){let n=(0,G.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=pN(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):TN,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return J.useSyncExternalStore(c,o,o)}function TN(){}function EN(e,t){let n=(0,G.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=pN(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return i.getState().session_error_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((n,r)=>{n.session_error_at?.[e]!==r.session_error_at?.[e]&&t()}):DN,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return J.useSyncExternalStore(c,o,o)}function DN(){}function ON(e,t){let n=(0,G.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=pN(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):kN,n[4]=r,n[5]=a,n[6]=c):c=n[6];let l=c;return J.useSyncExternalStore(l,s,s)}function kN(){}function AN(e,t,n){let r=(0,G.c)(6),i=pN(t,n),a;r[0]!==e||r[1]!==i?(a=()=>e?i.getState().permission[e]??AP:AP,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):jN,r[3]=e,r[4]=i,r[5]=s):s=r[5];let c=s;return J.useSyncExternalStore(c,o,o)}function jN(){}function MN(e,t,n){let r=(0,G.c)(2),i=pN(t,n),a;return r[0]===e?a=r[1]:(a=t=>e?t.question[e]??jP:jP,r[0]=e,r[1]=a),Oe(i,a)}function NN(e){return mN(PN,e)}function PN(e){return e.session}var FN=e=>e.permission,IN=e=>e.question;function LN(e){if(!e)return Gd;let t=[];for(let n of e.messageOrder){let r=e.partsByMessageID[n];if(r)for(let e of Wd(r))t.push(e)}return t.length===0?Gd:t}function RN(){let e=null;return t=>{let n=LN(t);if(n.length===0)return Gd;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 zN(e,t){let n=dj(),r=t??n.directory,i=pN(r),a=(0,J.useRef)(RN()).current,o=(0,J.useCallback)(()=>{if(!e)return Gd;try{let t=W()?.getTranscript(H(r,e));return a(t)}catch{return Gd}},[a,e,r]),s=(0,J.useCallback)(t=>{if(!e)return()=>void 0;let n=(W()??vt(r,i))?.subscribe(H(r,e),()=>{t()})??(()=>void 0),a=Ie(()=>{n(),n=(W()??vt(r,i))?.subscribe(H(r,e),()=>{t()})??(()=>void 0),t()});return()=>{a(),n()}},[e,i,r]);return J.useSyncExternalStore(s,o,o)}function BN(e,t,n,r){let i=(0,G.c)(7),a=zN(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,J.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=Jd(t.session,i,e,r,a),l=qd(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],mN(c,t)}function VN(e,t){return BN(e,t,FN,AP)}function HN(e,t){return BN(e,t,IN,jP)}function UN(e,t){let n=(0,G.c)(9),r=WN(e,t),i=WN(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=WN(c,t),u=WN(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=sj(e,s,p,t),n[4]=s,n[5]=t,n[6]=p,n[7]=e,n[8]=m):m=n[8],m}function WN(e,t){let n=(0,G.c)(7),{childStores:r}=dj(),i;n[0]!==r||n[1]!==t||n[2]!==e?(i=()=>{if(typeof window<`u`){let n=window;n.__snapCalls=(n.__snapCalls??0)+1;let i=t?r.getChild(t)?.getState().session.find(t=>t.id===e):Nk(fj(r),e);return n.__prevSnap!==void 0&&!Object.is(n.__prevSnap,i)&&(n.__snapChanges=(n.__snapChanges??0)+1,performance.now()-(n.__lastNotifyAt??0)>100&&(n.__selfDriven=(n.__selfDriven??0)+1)),n.__prevSnap=i,i}return t?r.getChild(t)?.getState().session.find(t=>t.id===e):Nk(fj(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=>{if(typeof window<`u`){let n=window;n.__notifySubs=(n.__notifySubs??0)+1;let i=()=>{n.__notifyCalls=(n.__notifyCalls??0)+1,e()};return t?r.ensureChild(t).subscribe(i):r.subscribeAllSelected(KN,i)}return t?r.ensureChild(t).subscribe(e):r.subscribeAllSelected(GN,e)},n[4]=r,n[5]=t,n[6]=o):o=n[6];let s=o;return J.useSyncExternalStore(s,a,a)}function GN(e){return e.session}function KN(e){return e.session}function qN(e){let t=oj(e,WN(e),X((0,J.useCallback)(t=>e?t.activeSessions.find(t=>t.id===e)??null:null,[e]))),n=(0,J.useRef)(null),[,r]=J.useState(0);if((0,J.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 JN(e,t){return WN(e,t)?.directory??void 0}function YN(){return dj().directory}function XN(){return dj().childStores}var ZN=[],QN=40,$N=4,eP=30,tP=4,nP=30,rP=new WeakMap,iP=(e,t,n)=>`${e}\u0000${+!!t}\u0000${n??``}`,aP=e=>{let t=rP.get(e);return t||(t=new Map,rP.set(e,t)),t},oP=(e,t,n,r)=>{let i=rP.get(e);if(!i)return;let a=iP(t,n,r),o=i.get(a);if(o)return i.delete(a),i.set(a,o),o},sP=(e,t)=>{if(!t.sessionID)return;let n=aP(e),r=iP(t.sessionID,t.suspendPartUpdates,t.suspendedPartUpdatesMessageID),i=L()?eP:pp()?nP:null;if(i!==null&&t.list.length>i){n.delete(r);return}n.delete(r),n.set(r,t);let a=L()?$N:pp()?tP:QN;for(;n.size>a;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}};function cP(e,t){let n=rP.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 lP=`The following tool was executed by the user`,uP=(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(lP)}):!1};function dP(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 fP=(e,t)=>{for(let n of e.list){let r=t.parts[n.info.id]??kP;if(e.suspendPartUpdates){let i=e.suspendedPartUpdatesMessageID;if((!i||n.info.id===i)&&!uP(t.parts,n.info,r)&&!dP(n.parts,r))continue}if(Sn(n.parts,r,n.info)!==n.parts)return!1}return!0},pP=(e,t,n,r)=>{let i=oP(e,t.sessionID,n,r);if(i&&i.sourceMessages===t.messages&&i.revertMessageID===t.revertMessageID&&i.suspendPartUpdates===n&&i.suspendedPartUpdatesMessageID===r&&fP(i,t))return i};function mP(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?Fe(i,r):n.length===0?OP:i.slice(),revertMessageID:r}}function hP(e,t,n=!1,r){let i=e.sessionID,{sourceMessages:a,visibleMessages:o,revertMessageID:s}=mP(e,t),c=new Map,l=o.map(i=>{let a=t?.byId.get(i.id),o=e.parts[i.id]??kP,s=n&&a&&(!r||i.id===r)&&!uP(e.parts,i,o)&&!dP(a.parts,o)?a.parts:Sn(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 gP(e,t){let n=dj(),r=t??n.directory,i=pN(r);return An(e,r,i)}function _P(e,t){let n=dj(),r=t??n.directory,i=pN(r);return xn(e,r,i)}function vP(e,t){let n=dj(),r=t??n.directory,i=pN(r);return gn(e,r,i)}function yP(e,t){let n=(0,G.c)(8),r=dj(),i=t??r.directory,a=pN(i),o=(0,J.useRef)(QA),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(Mt(),!e)return o.current=QA,QA.history;let t=(W()??vt(i,a)).getTranscript(H(i,e)),n=a.getState().session.find(t=>t.id===e)?.revert?.messageID,r=nj({sessionID:e,messages:Yt(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 bP;let n=(W()??vt(i,a)).subscribe(H(i,e),()=>{t()}),r=Ie(()=>{n(),n=(W()??vt(i,a)).subscribe(H(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 J.useSyncExternalStore(u,c,c)}function bP(){}var xP=(e,t,n)=>({sessionID:e,directory:t,store:n,bindingRevision:Mt(),transportIdentity:u(),generation:f()}),SP=(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 CP(e,t,n){let r=(0,G.c)(23),i=dj(),a=t??i.directory,o=pN(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:OP,visibleMessages:OP,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,J.useRef)(p),h=(0,J.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 ZN;let t=(W()??vt(a,o)).getTranscript(H(a,e)),r=!!n?.suspendPartUpdates,i=n?.suspendPartUpdatesForMessageId??void 0,s=m.current.sessionID===e?m.current.sourceMessages:oP(o,e,r,i)?.sourceMessages,c=Yt(t,s),l=o.getState().session.find(t=>t.id===e)?.revert?.messageID,u={sessionID:e,messages:c,parts:t.partsByMessageID,revertMessageID:l},d=pP(o,u,r,i);if(d)return m.current=d,d.list;let f=hP(u,m.current.sessionID===e?m.current:oP(o,e,r,i),r,i);return m.current=f,sP(o,f),f.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=xP(e,a,o);if(!e)return h.current={scope:t,list:ZN},ZN;if(!c){let e=h.current;if(e&&SP(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 wP;if(!c){let e=Ie(()=>{t()}),n=s(()=>{t()});return()=>{e(),n()}}Un(a,e);let n=(W()??vt(a,o)).subscribe(H(a,e),()=>{t()}),r=Ie(()=>{n(),n=(W()??vt(a,o)).subscribe(H(a,e),()=>{t()}),cn(a,e),Un(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 J.useSyncExternalStore(x,y,y)}function wP(){}var TP=new Set;function EP(e,t){let n=YN(),r=t??n,i=pN(r),a=J.useRef(0);J.useEffect(()=>{if(!e)return;let t=W()??vt(r,i),n=H(r,e),o=t.getTranscript(n),s=t.hasSession?.(n);if(Wt(o,{resolved:s===!0||void 0}).renderable){Fv({directory:r,sessionID:e,store:i});return}if(!i.getState().session.some(t=>t.id===e))return;let c=`${r}:${e}`;if(TP.has(c))return;let l=++a.current,u=()=>l!==a.current;TP.add(c),(async()=>{try{if(W())try{if(await Kn(r,e),u())return;Fv({directory:r,sessionID:e,store:i,isStale:u})}catch{if(u())return;await qj(r,e,i,{reason:`ensure-session-messages`,isStale:u})}else await qj(r,e,i,{reason:`ensure-session-messages`,isStale:u})}catch{}finally{TP.delete(c)}})()},[e,i,r])}function DP(e,t){let n=dj(),r=t??n.directory,i=pN(r);return tn(e,r,i)}var OP=[],kP=[],AP=[],jP=[],MP=[],NP=()=>({requestID:ve(),queueItemID:ve(),operationID:ve(),messageID:oe(`msg`)}),PP=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}:{}}),FP,IP=(e,t)=>{let n=e.establishing;if(!n||t&&n.draftID!==t||n.pending.length===0)return MP;if(FP&&FP.pending===n.pending&&FP.draftID===t)return FP.items;let r=n.pending.map(PP);return FP={pending:n.pending,draftID:t,items:r},r},LP=e=>t=>t.flights[e]??null,RP=e=>t=>!!e&&t.establishing?.draftID===e,zP=e=>t=>IP(t,e),BP=(e,t)=>({flightKind:e,inFlight:e!==null,establishing:t}),VP=Ee()((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??NP(),o=[...n.attachments??[]],s={kind:`pending-admission`,requestID:a.requestID,queueItemID:a.queueItemID,operationID:a.operationID,messageID:a.messageID||oe(`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})),HP=Ee((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}}})),UP=class extends Error{status;code;constructor(e,t){super(`Message queue server request failed: ${t}`),this.name=`MessageQueueServerError`,this.status=e,this.code=t}},WP=`/api/openchamber/message-queue`,GP=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`]),KP=new Set([`revision`,`scopeID`,`queueItemID`,`rowVersion`,`removedQueueItemID`,`projectDirectory`,`token`,`state`,`scopeCount`,`statusCounts`]),qP=new Set([`scopeID`,`revision`,`directory`,`sessionID`,`worktreeState`,`itemCount`]),JP=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Z=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,YP=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),XP=async e=>{if(e.status===501)return`unavailable`;try{let t=await e.json();if(JP(t)&&typeof t.code==`string`&&GP.has(t.code))return t.code}catch{}return`unavailable`},ZP=async(e,t)=>{let n;try{n=await _(e,t)}catch{throw new UP(0,`unavailable`)}if(!n.ok)throw new UP(n.status,await XP(n));try{return await n.json()}catch{throw new UP(n.status,`unavailable`)}},QP=()=>{throw new UP(200,`unavailable`)},$P=e=>JP(e)&&Object.getPrototypeOf(e)===Object.prototype,eF=e=>{if(!(!$P(e)||typeof e.text!=`string`||!Array.isArray(e.references)||e.references.some(e=>!$P(e))))return{text:e.text,references:e.references.map(e=>({...e}))}},tF=e=>Array.isArray(e)&&e.every($P)?e.map(e=>({...e})):void 0,nF=e=>{if(!(!JP(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}}},rF=e=>JP(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,iF=e=>{if(!Array.isArray(e)||e.length===0||e.length>129)return null;let t=[],n=0;for(let r of e){if(!$P(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},aF=e=>{if(!Array.isArray(e)||e.length>64)return null;let t=new Set,n=[];for(let r of e){if(!$P(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},oF=e=>{if(!$P(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))||!$P(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},sF=e=>Array.isArray(e)&&e.map(oF).every(e=>e!==null)?e.map(oF):null,cF=e=>{if(!JP(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:eF(e.composerDocument),n=e.composerMentions===void 0?void 0:tF(e.composerMentions),r=e.sendConfig===void 0?void 0:nF(e.sendConfig),i=e.deliveryTarget===void 0?{kind:`primary`}:rF(e.deliveryTarget),a=e.deliveryParts===void 0?void 0:iF(e.deliveryParts),o=e.syntheticParts===void 0?void 0:aF(e.syntheticParts),s=e.attachmentIssues===void 0?void 0:tF(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:sF(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}:{}}},lF=e=>{if(!JP(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(cF);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},uF=e=>JP(e)&&Object.keys(e).every(e=>qP.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,dF=e=>JP(e)&&typeof e.projectDirectory==`string`&&YP(e.orderedPaths)&&Z(e.revision)?{projectDirectory:e.projectDirectory,orderedPaths:e.orderedPaths,revision:e.revision}:null,fF=e=>{if(!JP(e)||!Z(e.revision)||!Array.isArray(e.scopes)||!Array.isArray(e.worktreeOrders))return QP();let t=e.scopes.map(uF),n=e.worktreeOrders.map(dF);return!t.every(e=>e!==null)||!n.every(e=>e!==null)?QP():{revision:e.revision,scopes:t,worktreeOrders:n}},pF=e=>!JP(e)||!Z(e.revision)||Object.keys(e).some(e=>!KP.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&&(!JP(e.statusCounts)||Object.values(e.statusCounts).some(e=>!Z(e)))?QP():{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}:{},...JP(e.statusCounts)?{statusCounts:e.statusCounts}:{}},mF=(e,t,n)=>({method:e,headers:{"Content-Type":`application/json`},body:JSON.stringify(t),signal:n}),hF=(e,t)=>{let{signal:n,...r}=t;return mF(e,r,n)},gF=async e=>fF(await ZP(WP,{signal:e})),_F=new Map,vF=(e,t)=>`${c().api(WP)}\u0000${e}\u0000${t.offset??``}\u0000${t.limit??``}\u0000${t.expectedRevision??``}`,yF=async(e,t={})=>{if(t.signal?.aborted)throw new UP(0,`unavailable`);let n=vF(e,t),r=_F.get(n);if(r){let e=await r;if(t.signal?.aborted)throw new UP(0,`unavailable`);return e}let i=(async()=>lF(await ZP(`${WP}/scopes/${encodeURIComponent(e)}`,{query:{offset:t.offset,limit:t.limit,expectedRevision:t.expectedRevision},signal:t.signal}))??QP())().finally(()=>{_F.get(n)===i&&_F.delete(n)});return _F.set(n,i),i},bF=15e3,xF=(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:bF,a=!1,o=e=>{a||(a=!0,clearTimeout(l),c(),r?.removeEventListener(`abort`,s),n(e))},s=()=>o(`aborted`),c=hi(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=ti(`message-queue-changed`);if(u!==void 0&&u>e){o(`tip`);return}r?.addEventListener(`abort`,s,{once:!0})}),SF=async e=>{let t=await ZP(`${WP}/status`,{signal:e}),n=new Set([`capability`,`authority`,`generation`,`activationEpoch`,`activatedAt`,`manifestHash`,`protocol`,`worker`]);return!JP(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&&(!JP(t.worker)||Object.keys(t.worker).some(e=>e!==`paused`&&e!==`active`)||typeof t.worker.paused!=`boolean`||!Z(t.worker.active))?QP():{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}:{},...JP(t.worker)?{worker:{paused:t.worker.paused,active:t.worker.active}}:{}}},CF=(e,t)=>Object.keys(e).length===t.length&&Object.keys(e).every(e=>t.includes(e)),wF=e=>{let t=[`revision`,`importID`,`state`,`duplicate`,`manifestHash`,`commit`];if(!JP(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 QP();let n=e.commit===void 0?void 0:DF(e.commit);return e.commit!==void 0&&!n?QP():{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}:{}}},TF=e=>!JP(e)||!CF(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`?QP():{revision:e.revision,importID:e.importID,staged:!0,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{}},EF=e=>!JP(e)||!CF(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)?QP():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,state:`sealed`,itemCount:e.itemCount},DF=e=>!JP(e)||!CF(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)?QP():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,generation:e.generation,activationEpoch:e.activationEpoch,added:e.added},OF=e=>DF(e),kF=e=>DF(e),AF=(e,t)=>!JP(e)||!CF(e,[`authority`,`generation`,`revision`])||e.authority!==t||!Z(e.generation)||!Z(e.revision)?QP():{authority:t,generation:e.generation,revision:e.revision},jF=async e=>wF(await ZP(`${WP}/imports`,hF(`POST`,e))),MF=async(e,t)=>{let n=await ZP(`${WP}/imports/${encodeURIComponent(e)}`,{signal:t});if(!JP(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 QP();let r=n.staged.map(e=>JP(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:DF(n.commit);return!r.every(e=>e!==null)||n.commit!==void 0&&!i?QP():{state:n.state,...typeof n.manifestHash==`string`?{manifestHash:n.manifestHash}:{},itemCount:n.itemCount,staged:r,...i?{commit:i}:{}}},NF=async(e,t)=>TF(await ZP(`${WP}/imports/${encodeURIComponent(e)}/items`,hF(`POST`,t))),PF=async(e,t)=>EF(await ZP(`${WP}/imports/${encodeURIComponent(e)}/seal`,hF(`POST`,t))),FF=async(e,t)=>OF(await ZP(`${WP}/imports/${encodeURIComponent(e)}/activate`,hF(`POST`,t))),IF=async(e,t)=>kF(await ZP(`${WP}/imports/${encodeURIComponent(e)}/late-commit`,hF(`POST`,t))),LF=async e=>AF(await ZP(`${WP}/authority/pause`,hF(`POST`,e)),`paused`),RF=async e=>AF(await ZP(`${WP}/authority/resume`,hF(`POST`,e)),`active`),zF=async(e={})=>{let t=await ZP(`${WP}/attachments/uploads`,hF(`POST`,e));return!JP(t)||typeof t.uploadID!=`string`||typeof t.uploadToken!=`string`||!Z(t.expiresAt)?QP():{uploadID:t.uploadID,uploadToken:t.uploadToken,expiresAt:t.expiresAt}},BF=async(e,t,n,r)=>{let i;try{i=await _(`${WP}/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 UP(0,`unavailable`)}if(!i.ok)throw new UP(i.status,await XP(i))},VF=e=>!JP(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)?QP():{revision:e.revision,scopeID:e.scopeID,queueItemID:e.queueItemID,rowVersion:e.rowVersion,token:e.token,expiresAt:e.expiresAt,generation:e.generation},HF=e=>!JP(e)||typeof e.queueItemID!=`string`||typeof e.token!=`string`||!Z(e.generation)||!Z(e.expiresAt)?QP():{queueItemID:e.queueItemID,token:e.token,generation:e.generation,expiresAt:e.expiresAt},UF=async(e,t)=>VF(await ZP(`${WP}/items/${encodeURIComponent(e)}/reserve`,hF(`POST`,t))),WF=async(e,t)=>{await ZP(`${WP}/items/${encodeURIComponent(e)}/release`,hF(`POST`,t))},GF=async(e,t)=>HF(await ZP(`${WP}/items/${encodeURIComponent(e)}/edit-reservations/${encodeURIComponent(t.token)}/renew`,hF(`POST`,t))),KF=async(e,t)=>pF(await ZP(`${WP}/items/${encodeURIComponent(e)}/reserved-remove`,hF(`DELETE`,t))),qF=async(e,t,n)=>{let r;try{r=await _(`${WP}/items/${encodeURIComponent(e)}/attachments/${encodeURIComponent(t.attachmentID)}/content`,{signal:n})}catch{throw new UP(0,`unavailable`)}if(!r.ok)throw new UP(r.status,await XP(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 UP(r.status,`unavailable`);let s;try{s=await r.blob()}catch{throw new UP(r.status,`unavailable`)}if(s.size!==t.size)throw new UP(r.status,`unavailable`);let c=new Blob([s],{type:i});return c.type===i?c:Object.defineProperty(c,"type",{value:i})},JF=async e=>pF(await ZP(`${WP}/items`,hF(`POST`,e))),YF=async(e,t)=>pF(await ZP(`${WP}/items/${encodeURIComponent(e)}`,hF(`PATCH`,t))),XF=async(e,t)=>pF(await ZP(`${WP}/items/${encodeURIComponent(e)}/send`,hF(`POST`,t))),ZF=async(e,t)=>pF(await ZP(`${WP}/items/${encodeURIComponent(e)}`,hF(`DELETE`,t))),QF=async(e,t)=>pF(await ZP(`${WP}/scopes/${encodeURIComponent(e)}/order`,hF(`PUT`,t))),$F=async(e,t)=>dF(await ZP(`${WP}/worktrees/order`,{query:{projectDirectory:e},signal:t}))??QP(),eI=async e=>pF(await ZP(`${WP}/worktrees/order`,hF(`PUT`,e))),tI=(e=u())=>I.messageQueue.snapshot(e),nI=(e=u())=>I.messageQueue.status(e),rI=(e,t,n=u())=>I.messageQueue.scope(e,t,n),iI=(e=u())=>({queryKey:nI(e),queryFn:({signal:e})=>SF(e),retry:!1,staleTime:3e4}),aI=(e=u())=>({queryKey:tI(e),queryFn:({signal:e})=>gF(e),staleTime:5e3}),oI=(e=F,t=u())=>e.fetchQuery(iI(t)),sI=(e=F,t=u())=>e.fetchQuery(aI(t)),cI=async(e=F,t=u())=>e.fetchQuery({...iI(t),staleTime:0}),lI=async(e=F,t=u())=>e.fetchQuery({...aI(t),staleTime:0}),uI=(e,t,n=u())=>{e.setQueryData(rI(t.scopeID,t.revision,n),{pages:[t],pageParams:[0]})},dI=(e,t,n=u())=>{e.setQueryData(nI(n),t)},fI=(e,t,n=u())=>{e.setQueryData(tI(n),t)},pI=(e,t,n,r=u())=>{let i=e.getQueryData(rI(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},mI=(e,t=u())=>e.removeQueries({queryKey:[t,`messageQueue`,`scope`],exact:!1}),hI=(e,t,n=u())=>e.removeQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),gI=(e,t,n=u())=>e.invalidateQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),_I=`openchamber_message_queue_ledger_v4`,vI=`message-queue-store`,yI={scopes:128,totalItems:2048,attachmentsPerItem:64,issuesPerItem:64,string:8192,content:2e5,dataURL:26214400,bytes:26214400},bI=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,xI=(e,t)=>Object.keys(e).every(e=>t.includes(e)),SI=(e,t=yI.string)=>typeof e==`string`&&e.length>0&&e.length<=t,CI=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,wI=e=>JSON.parse(JSON.stringify(e)),TI=(e,t,n,r)=>{let i=bI(t)?t:{};return{...e?{scopeKey:e}:{},...SI(i.queueItemID)?{queueItemID:i.queueItemID}:{},...SI(i.operationID)?{operationID:i.operationID}:{},path:n,reason:r}},EI=e=>e.state===`bound`?`bound:${JSON.stringify([e.transportIdentity,e.directory,e.sessionID])}`:`unbound-legacy:${JSON.stringify([e.sessionID])}`,DI=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=kI(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&&EI(n)===e?n:void 0},OI=()=>({version:4,queues:{},migration:{v3State:`pending`}}),kI=e=>!bI(e)||!SI(e.state)?void 0:e.state===`bound`&&xI(e,[`state`,`transportIdentity`,`directory`,`sessionID`])&&SI(e.transportIdentity)&&SI(e.directory)&&SI(e.sessionID)?{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID}:e.state===`unbound-legacy`&&xI(e,[`state`,`sessionID`])&&SI(e.sessionID)?{state:`unbound-legacy`,sessionID:e.sessionID}:void 0,AI=(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}},jI=[`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`serverPath`,`vscodePath`,`vscodeSource`],MI=e=>{if(!SI(e.attachmentID)||!SI(e.occurrenceRefID)||!AI(e.occurrenceRefID,e.attachmentID)||!SI(e.filename)||typeof e.mimeType!=`string`||e.mimeType.length>yI.string||!CI(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`&&SI(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&&SI(e.vscodePath)&&(e.vscodeSource===`file`||e.vscodeSource===`selection`))return{...t,source:`vscode`,vscodePath:e.vscodePath,vscodeSource:e.vscodeSource}},NI=e=>{if(!bI(e)||!xI(e,[...jI,`version`,`locator`])||e.version!==1)return;let t=MI(e);if(!t||!bI(e.locator))return;let n=e.locator.kind===`blob`&&xI(e.locator,[`kind`,`blobID`])&&SI(e.locator.blobID)?{kind:`blob`,blobID:e.locator.blobID}:e.locator.kind===`url`&&xI(e.locator,[`kind`,`url`])&&C(e.locator.url)?{kind:`url`,url:e.locator.url}:void 0;return n?{version:1,...t,locator:n}:void 0},PI=e=>{if(!bI(e)||!xI(e,[...jI,`reason`]))return;let t=MI(e);return t&&[`legacy-blob-url`,`legacy-bytes-missing`,`legacy-unbound-data`,`missing-blob`].includes(e.reason)?{...t,reason:e.reason}:void 0},FI=(e,t)=>{if(!bI(e)||!xI(e,[`text`,`references`])||typeof e.text!=`string`)return;let n=pe(e.text,e.references),r=n&&ae(n,`queue-canonical`);return r&&r.ok&&r.text===t?n:void 0},II=(e,t)=>{if(e===void 0)return[];if(!t)return;let n=b(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},LI=(e,t)=>{if(!bI(e)||!xI(e,[`version`,`queueItemID`,`operationID`,`messageID`,`owner`,`content`,`composerDocument`,`composerMentions`,`attachments`,`attachmentIssues`,`createdAt`,`sendConfig`,`status`,`attemptCount`,`nextAttemptAt`,`reconciliationStartedAt`,`reconciliationDeadlineAt`,`reconciliationChecks`,`reconciliationNextCheckAt`,`failureKind`])||e.version!==1||!SI(e.queueItemID)||!SI(e.operationID)||!SI(e.messageID)||typeof e.content!=`string`||e.content.length>yI.content||!CI(e.createdAt)||!CI(e.attemptCount)||!Array.isArray(e.attachments)||e.attachments.length>yI.attachmentsPerItem||!Array.isArray(e.attachmentIssues)||e.attachmentIssues.length>yI.issuesPerItem||![`queued`,`sending`,`retrying`,`reconciling`,`unresolved`,`failed`].includes(e.status))return;let n=kI(e.owner),r=e.attachments.map(NI),i=e.attachmentIssues.map(PI),a=e.composerDocument===void 0?void 0:FI(e.composerDocument,e.content),o=II(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?y(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&&(!bI(e.sendConfig)||!xI(e.sendConfig,[`providerID`,`modelID`,`agent`,`variant`])||!SI(e.sendConfig.providerID)||!SI(e.sendConfig.modelID)||[e.sendConfig.agent,e.sendConfig.variant].some(e=>e!==void 0&&!SI(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&&!CI(e))||!m)return;let h=e.status===`sending`&&t,g=h?e.createdAt+3e4:e.reconciliationDeadlineAt;if(h&&!CI(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:wI(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}:{}}},RI=(e,t={})=>{let n=e=>({status:`corrupt`,snapshot:OI(),issues:[TI(void 0,void 0,`$`,e)],degradedScopeKeys:[]});if(!bI(e)||!xI(e,[`version`,`queues`,`migration`])||e.version!==4||!bI(e.queues)||!bI(e.migration)||!xI(e.migration,[`v3State`])||![`pending`,`complete`,`degraded`].includes(e.migration.v3State)||Object.keys(e.queues).length>yI.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(TI(e,t,n,r)),o.add(e)};for(let[a,d]of Object.entries(e.queues)){if(!DI(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>yI.totalItems)return n(`item-limit`);let f=d[i],p=`$.queues.${JSON.stringify(a)}[${i}]`,m=LI(f,t.normalizeSending===!0);if(!m||EI(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:wI({version:4,queues:i,migration:{v3State:e.migration.v3State}}),issues:a,degradedScopeKeys:[...o]}},zI=e=>{let t=RI(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`}}}},BI=()=>({ok:!1,error:{code:`unavailable`}}),VI=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),HI=e=>({read:async t=>{if(!e)return BI();try{return{ok:!0,value:e.getItem(t)}}catch(e){return VI(e)}},write:async(t,n)=>{if(!e)return BI();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return VI(e)}},remove:async t=>{if(!e)return BI();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return VI(e)}}}),UI=()=>{try{return HI(typeof window>`u`?null:window.localStorage)}catch{return HI(null)}},WI=async e=>{let t=await e.read(_I);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}};try{let e=RI(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:[TI(void 0,void 0,`$`,`json`)],degradedScopeKeys:[]}}}},GI=async e=>{let t=await WI(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},KI=async(e,t)=>{let n=zI(t);return n.ok?e.write(_I,n.value):n},qI=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,KI(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:()=>WI(e),read:()=>GI(e),persist:e=>{if(!t)return Promise.resolve({ok:!1,error:{code:`cancelled`}});let r=RI(e);if(r.status===`corrupt`||r.issues.length)return Promise.resolve({ok:!1,error:{code:`corrupt`}});let i=wI(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}},JI=yI.string,YI=yI.dataURL,XI=yI.bytes,ZI=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,QI=(e,t,n=!1)=>typeof e==`string`&&e.length<=JI&&(n||e.length>0)?e:t,$I=(e,t=0)=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0?e:t,eL=(e,t)=>EI(e)===EI(t),tL=(e,t,n,r)=>({scopeKey:e,queueItemID:t,path:n,reason:r}),nL=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(``)}`},rL=e=>typeof e==`string`&&e.length>0&&e.length<=JI,iL=e=>DI(e)??(rL(e)?{state:`unbound-legacy`,sessionID:e}:void 0),aL=e=>{if(ZI(e)){if(e.state===`bound`&&rL(e.transportIdentity)&&rL(e.directory)&&rL(e.sessionID))return{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID};if(e.state===`unbound-legacy`&&rL(e.sessionID))return{state:`unbound-legacy`,sessionID:e.sessionID}}},oL=e=>{if(e.length>YI)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>XI)return;e=Uint8Array.from(t,e=>e.charCodeAt(0))}else if(e=new TextEncoder().encode(decodeURIComponent(a)),e.byteLength>XI)return;let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),new Blob([t],{type:i})}catch{return}},sL=e=>ZI(e)&&rL(e.providerID)&&rL(e.modelID)&&(e.agent===void 0||rL(e.agent))&&(e.variant===void 0||rL(e.variant))?{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}:void 0,cL=async(e,t)=>{let n=await WI(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:[tL(``,``,`$.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=>tL(e.scopeKey??``,e.queueItemID??``,e.path,e.reason)),cleanupErrors:[]};let r=await e.read(vI);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={...OI(),migration:{v3State:`complete`}},n=await KI(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:[tL(``,``,`$`,`legacy-json`)],cleanupErrors:a}}let l=ZI(c)&&ZI(c.state)?c.state.queuedMessages:ZI(c)?c.queuedMessages:void 0;if(!ZI(l))return{status:`failed`,error:{code:`corrupt`},issues:[tL(``,``,`$.state.queuedMessages`,`legacy-state`)],cleanupErrors:a};let u={...OI(),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>=yI.scopes){i.push(tL(n,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-scope-limit`));break}let c=iL(n),l=c?EI(c):n;if(!c||!Array.isArray(r)){i.push(tL(l,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-queue`));continue}for(let e=0;e<r.length;e++){if(m>=yI.totalItems){i.push(tL(l,``,`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,`legacy-item-limit`));break}m++;let h=`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,g=ZI(r[e])?r[e]:void 0;if(!g||typeof g.content!=`string`||g.content.length>131072){i.push(tL(l,``,h,`legacy-item`));continue}let _=aL(g.owner);if(g.owner!==void 0&&(!_||!eL(c,_))){i.push(tL(l,rL(g.queueItemID)?g.queueItemID:``,h,`owner-conflict`));continue}let v=JSON.stringify([n,e,g.content]),y=rL(g.queueItemID)?g.queueItemID:rL(g.id)?g.id:await nL(`queue`,v),x=rL(g.operationID)?g.operationID:await nL(`operation`,`${v}:operation`),S=rL(g.messageID)?g.messageID:await nL(`message`,`${v}:message`);if(d.has(y)||f.has(x)||p.has(S)){i.push(tL(l,y,h,`duplicate-id`));continue}d.add(y),f.add(x),p.add(S);let w=[],T=[],E=new Set,D=Array.isArray(g.attachments)?g.attachments:[];g.attachments!==void 0&&!Array.isArray(g.attachments)&&i.push(tL(l,y,`${h}.attachments`,`legacy-attachments`));for(let e=0;e<D.length&&e<yI.attachmentsPerItem;e++){let n=ZI(D[e])?D[e]:void 0,r=`${h}.attachments[${e}]`;if(!n){i.push(tL(l,y,r,`legacy-attachment`));continue}let u=rL(n.id)?n.id:await nL(`attachment`,`${v}:attachment:${e}`),d=xe(u),f=QI(n.filename,u),p=QI(n.mimeType,``,!0),m=$I(n.size);if(E.has(d)){i.push(tL(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`?rL(n.serverPath)&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`vscode`&&rL(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,O={attachmentID:u,occurrenceRefID:d,filename:f,mimeType:p,size:m,source:_,...b?{serverPath:b}:{},...x?{vscodePath:x}:{},...S?{vscodeSource:S}:{}},k=e=>{T.push({...O,reason:e}),i.push(tL(l,y,r,e))};if(c.state===`unbound-legacy`){k(`legacy-unbound-data`);continue}if(!g){i.push(tL(l,y,r,n.source===`server`?`server-metadata`:n.source===`vscode`?`vscode-metadata`:`attachment-source`)),k(`legacy-bytes-missing`);continue}let A=typeof n.dataUrl==`string`?n.dataUrl:``;if(C(A)){w.push({version:1,...O,locator:{kind:`url`,url:A}});continue}if(A.startsWith(`blob:`)){k(`legacy-blob-url`);continue}if(!A.startsWith(`data:`)){k(`legacy-bytes-missing`);continue}let j=oL(A);if(!j){k(`legacy-bytes-missing`);continue}let M=await nL(`legacy-blob`,`${y}:${u}`),N={transportIdentity:c.transportIdentity,owner:{kind:`queue`,ownerID:y},attachmentOccurrenceRefID:d},ee=await t.readReference(N);if(!ee.ok||ee.value!==void 0&&ee.value!==M||!(await t.putAndRetain(N,M,j)).ok)return await s(),{status:`failed`,error:{code:`unavailable`},issues:i,cleanupErrors:a};ee.value===void 0&&o.push({reference:N,blobID:M,issue:tL(l,y,r,`blob-retain`)}),w.push({version:1,...O,mimeType:j.type,size:j.size,locator:{kind:`blob`,blobID:M}})}D.length>yI.attachmentsPerItem&&i.push(tL(l,y,`${h}.attachments`,`legacy-attachment-limit`));let O=$I(g.createdAt),k=typeof g.status==`string`?g.status:`queued`,A=ZI(g.failure)?g.failure.kind:g.failureKind,j=A===`pre-dispatch`||A===`ambiguous-dispatch`||A===`definitive`?A:void 0,M=k===`retrying`||j===`pre-dispatch`,N=k===`sending`||k===`reconciling`||j===`ambiguous-dispatch`,ee=k===`unresolved`&&T.length===0,te=T.length>0,ne=$I(g.reconciliationStartedAt,O),re=$I(g.reconciliationDeadlineAt,-1),P=ne>2**53-1-3e4?ne:ne+3e4,ie=Math.max(ne,re>=0?re:P),oe=$I(g.reconciliationChecks),se=$I(g.reconciliationNextCheckAt,ne);N&&re<0&&ne>2**53-1-3e4&&i.push(tL(l,y,`${h}.reconciliationDeadlineAt`,`reconciliation-deadline-overflow`));let F=te||ee||c.state===`unbound-legacy`&&N?`unresolved`:M?`retrying`:N?`reconciling`:k===`failed`||j===`definitive`?`failed`:`queued`,ce=F===`reconciling`||F===`unresolved`&&!te,I=ZI(g.composerDocument)&&typeof g.composerDocument.text==`string`?pe(g.composerDocument.text,g.composerDocument.references):void 0,le=I&&ae(I,`queue-canonical`);g.composerDocument!==void 0&&(!le||!le.ok||le.text!==g.content)&&i.push(tL(l,y,`${h}.composerDocument`,`degraded-composer-document`));let L=le&&le.ok&&le.text===g.content?I:void 0,ue=L?b(L.text,g.composerMentions):void 0,de=ue&&!ue.some(e=>L.references.some(t=>e.range.start<t.end&&t.start<e.range.end));g.composerMentions!==void 0&&!de&&i.push(tL(l,y,`${h}.composerMentions`,`degraded-composer-mentions`));let fe={version:1,queueItemID:y,operationID:x,messageID:S,owner:c,content:g.content,...L?{composerDocument:L}:{},...de&&ue.length?{composerMentions:ue}:{},attachments:w,attachmentIssues:T,createdAt:O,...sL(g.sendConfig)?{sendConfig:sL(g.sendConfig)}:{},status:F,attemptCount:$I(g.attemptCount),...F===`retrying`?{nextAttemptAt:$I(g.nextAttemptAt,O),failureKind:`pre-dispatch`}:ce?{reconciliationStartedAt:ne,reconciliationDeadlineAt:ie,reconciliationChecks:oe,reconciliationNextCheckAt:se,failureKind:`ambiguous-dispatch`}:F===`failed`?{failureKind:`definitive`}:{}};(u.queues[l]??=[]).push(fe)}}i.length&&(u.migration.v3State=`degraded`);let g=await KI(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})},lL=(e,t)=>JSON.stringify(e)===JSON.stringify(t),uL=(e,t=[])=>({status:e,errors:t,cleanupErrors:[]}),dL=e=>e.status===`sending`||e.status===`reconciling`,fL=(e,t,n={})=>{let r={hydration:`idle`,snapshot:OI(),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]=lL(r.snapshot.queues[n],i)?r.snapshot.queues[n]:i;let n=lL(r.snapshot.queues,t)&&lL(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&&EI(t.owner)===e.scopeKey?t:void 0},d=()=>r.hydration===`idle`||r.hydration===`hydrating`?uL(`unseeded`):r.hydration===`recovery-required`?uL(`recovery-required`,[...r.issues]):r.hydration===`failed`?uL(`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=()=>uL(`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)):uL(`stale`))),materializeForEdit:(t,n=p())=>l(async()=>{let r=d(),i=u(t);if(r)return r;if(!i||!m(i,n))return uL(`stale`);if(dL(i))return uL(`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`?uL(`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 uL(`stale`);try{let a=await e.releaseSend(t,n,r);return a.status!==`stale`&&h.delete(i),a}catch{return h.delete(i),uL(`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{...uL(`stale`),durableRemoval:!1};if(dL(f))return{...uL(`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{...uL(`stale`),durableRemoval:!1};if(_(t))return{...v(),durableRemoval:!1};if(dL(a))return{...uL(`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=>dL(e)||!m(e,i))?uL(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.reorder(t,n,i)):uL(`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)?uL(`stale`):_(t)?v():dL(a)?uL(`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||dL(e)||!m(e,r))||n.transportIdentity!==r.transportIdentity?uL(`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)?uL(`stale`):_(t)?uL(`failed`,[{phase:`identity`,code:`reserved`}]):(Array.isArray(n)?n:[n]).includes(o.status)?f(()=>e.transition(t,r,i)):uL(`stale`))}),confirm:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?uL(`stale`):_(t)?uL(`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)?uL(`stale`):_(t)?uL(`failed`,[{phase:`identity`,code:`reserved`}]):e.acquireSendPayload(t,n))}),releaseSend:(t,n,r=p())=>l(async()=>e.releaseSend(t,n,r))}},pL=e=>JSON.parse(JSON.stringify(e)),Q=(e,t=[],n=[],r)=>({status:e,...r===void 0?{}:{current:r},errors:t,cleanupErrors:n}),mL=(e,t)=>e.queueItemID===t.queueItemID&&e.operationID===t.operationID&&e.messageID===t.messageID,hL=(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,gL=e=>JSON.stringify(e),_L=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}),vL=e=>`${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,yL=e=>typeof e==`number`&&Number.isSafeInteger(e),bL=(e,t)=>{if(gL(_L(e))!==gL(_L(t))||!yL(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&&!yL(e))||e.status===`reconciling`&&t.status===`reconciling`&&(t.reconciliationStartedAt!==e.reconciliationStartedAt||t.reconciliationDeadlineAt!==e.reconciliationDeadlineAt||(t.reconciliationChecks??0)<(e.reconciliationChecks??0)))},xL=e=>{if(!e.composerDocument)return!0;let t=new Set(e.composerDocument?y(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))},SL=(e,t,n={})=>{let r=OI(),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=>mL(t,e)),_=(e,t,n,r,i)=>({phase:e,code:t,...n?{scopeKey:EI(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=hL(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(Se(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(Se(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(Se(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?RI(u,{normalizeSending:!0}):{status:`ok`,snapshot:OI(),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:()=>pL(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=EI(t.owner),l=pL(r);l.queues[s]=[...l.queues[s]??[],t];let d=RI(l);if(!xL(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(Se(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(pL(o)),u=pL(r),d=EI(o.owner);u.queues[d]=u.queues[d].map(t=>mL(t,e)?l:t);let f=RI(u);if(!mL(l,e)||!bL(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=pL(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=EI(o.owner),l=r.queues[s];if(!l||l.length!==1||!mL(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={...pL(o),owner:t},f=RI({version:4,queues:{[EI(t)]:[d]},migration:r.migration});if(f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let p=pL(r),m=s,h=EI(t);p.queues[m]=p.queues[m].filter(t=>!mL(t,e)),p.queues[m].length||delete p.queues[m],p.queues[h]=[d,...p.queues[h]??[]];let v=RI(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[EI(s)];if(!l||l.length!==e.length||o.some(e=>gL(e.owner)!==gL(s)||e.attachments.length)||l.some((t,n)=>!mL(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=>({...pL(e),owner:t})),p=pL(r),m=EI(s),h=EI(t);p.queues[m]=p.queues[m].filter(e=>!d.some(t=>mL(e,t))),p.queues[m].length||delete p.queues[m],p.queues[h]=[...f,...p.queues[h]??[]];let v=RI(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(vL(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(Se(e.reference),e);return f.set(vL(t),{token:m,identity:t,held:u}),{...Q(`committed`,[],[],!0),token:m,values:l}}),releaseSend:(e,t)=>m(async()=>{let n=f.get(vL(e));if(typeof t!=`string`||!n||n.token!==t)return Q(`stale`);f.delete(vL(e));let r=[];for(let e of n.held)d.delete(Se(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=pL(r);for(let[t,n]of Object.entries(s.queues)){let r=n.filter(t=>!mL(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(vL(e));f.delete(vL(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(Se(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}}},CL=()=>{let e=UI(),t=qI(e),n=fa();return{controller:fL(SL(n,t),()=>{let e=u(),t=f();return{transportIdentity:e,generation:t,isCurrent:()=>u()===e&&f()===t}}),migrate:async()=>cL(e,n)}},wL=(e=CL)=>{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)}},TL,EL=()=>TL??=wL(),DL=26214400,OL=52428800,kL=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),AL=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>DL)throw RangeError(`message-queue-attachment-too-large`);n+=e}if(n>OL)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 zF({signal:t});await BF(e,n.value,await kL(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}},jL,ML=()=>{let e=`openchamber:message-queue-import-client-id`;try{let t=globalThis.localStorage,n=t.getItem(e);if(n)return n;let r=ve();return t.setItem(e,r),r}catch{return jL??=ve()}},NL={queue:void 0,capture:()=>({transportIdentity:``,generation:0}),current:()=>!0,admit:JF,create:jF,details:MF,stage:NF,seal:PF,upload:AL,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:()=>{}},PL=e=>({scopeKey:EI(e.owner),queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}),FL=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(``)}`,IL=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}}),LL=e=>Array.isArray(e)?`[${e.map(LL).join(`,`)}]`:e&&typeof e==`object`?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${LL(e[t])}`).join(`,`)}}`:JSON.stringify(e),RL=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(LL(e))))].map(e=>e.toString(16).padStart(2,`0`)).join(``),zL=e=>{let t={...NL,...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(PL(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:IL(s)}};n||(p=`admit`,await t.admit({requestID:await FL(s.operationID),..._,signal:o})),e.push({item:s,scopeOrdinal:h,itemOrdinal:g,payload:_,payloadHash:await RL(_)}),f++}finally{await t.queue.releaseSend(PL(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 RL(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=ML(),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})}}}},BL=e=>typeof e==`object`&&!!e&&e.kind===`pending-admission`,VL=(e,t)=>e.then(e=>{if(t?.aborted)throw new DOMException(`Aborted`,`AbortError`);return e}),HL={snapshot:e=>VL(lI(F),e),status:e=>VL(oI(F),e),scope:yF,waitInvalidation:xF,admit:JF,edit:YF,remove:ZF,reserve:UF,renew:GF,release:WF,removeReserved:KF,reorder:QF,manualSend:XF,upload:AL,client:F,capture:()=>({transportIdentity:u(),generation:f()}),current:e=>e.transportIdentity===u()&&e.generation===f(),legacyManualSend:async()=>{},shadowQueue:EL,admissionUploadTimeoutMs:12e4,admissionRequestTimeoutMs:2e4,admissionReconcileTimeoutMs:2e4},UL=e=>e instanceof UP&&(e.code===`revision_conflict`||e.code===`row_version_conflict`),WL=e=>e instanceof UP&&e.code===`unavailable`,GL=8,KL=(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))]},qL=e=>`${e.transportIdentity}\u0000${be(e.directory)}\u0000${e.sessionID}`,JL=(e,t)=>new Promise(n=>{let r=setTimeout(n,e);t.addEventListener(`abort`,()=>{clearTimeout(r),n()},{once:!0})}),YL=(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 UP(0,`unavailable`)):r.signal.addEventListener(`abort`,()=>t(new UP(0,`unavailable`)),{once:!0})});return Promise.race([Promise.resolve().then(()=>e(r.signal)),o]).finally(()=>{i!==void 0&&clearTimeout(i),t?.removeEventListener(`abort`,a)})},XL=(e={})=>{let t={...HL,...e},n={...t,snapshot:e.snapshot??(e=>VL(lI(t.client,t.capture().transportIdentity),e)),status:e.status??(e=>VL(oI(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?qL({transportIdentity:n,directory:a.directory,sessionID:a.sessionID}):r?qL({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 UP(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 UP(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;uI(n.client,e,t.transportIdentity);let a=qL({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)uI(n.client,e,i.transportIdentity);if(fI(n.client,e,i.transportIdentity),e.scopes.length===0)mI(n.client,i.transportIdentity);else for(let e of o.keys())a.has(e)||hI(n.client,e,i.transportIdentity);y(e.scopes,i);for(let e of t){let t=qL({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)||(dI(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 UP&&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 UP&&n.code===`revision_conflict`){e=0;continue}m({error:n,isFetching:!1}),await JL(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)??pI(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?pI(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<GL;t++){let s=r.scopes.get(e),c=s?pI(n.client,e,s.revision,a.transportIdentity):void 0,l;try{try{l=(await i(o,c)).revision}catch(e){if(!WL(e)||!h(a))throw e;l=(await i(o,c)).revision}}catch(n){if(UL(n)&&t+1<GL){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 UP(409,`revision_conflict`));if(!t)return u({status:`stale`});await gI(n.client,e,a.transportIdentity);let i=r.scopes.get(e);return u({status:`committed`,scope:i?pI(n.client,e,i.revision,a.transportIdentity):t})}catch(r){if(UL(r)&&!t)continue;return h(a)?(m({error:r}),gI(n.client,e,a.transportIdentity).catch(()=>{}),u({status:`committed`})):u({status:`stale`})}}throw new UP(409,`revision_conflict`)},j,M=()=>{i?.abort(),i=void 0,o=void 0},N=()=>{j!==void 0&&(clearTimeout(j),j=void 0),!i&&(i=new AbortController,D())},ee=()=>{j!==void 0&&clearTimeout(j),j=setTimeout(()=>{j=void 0,a||M()},0)};return{subscribe:e=>(s.add(e),()=>s.delete(e)),subscribeScope:(e,t)=>{let n=qL(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=>be(t.directory)===be(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=pI(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(qL(e))??d:d},start:()=>{a++,_(),N()},stop:()=>{a=Math.max(0,a-1),a||ee()},restart:()=>{j!==void 0&&(clearTimeout(j),j=void 0),M(),g(n.capture()),a&&N()},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 zL({queue:n.shadowQueue(),capture:()=>e,current:h,existing:()=>[...r.scopes.values()].flatMap(t=>pI(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 LF({expectedGeneration:e,signal:i?.signal}),await T()},resume:async e=>{await RF({expectedGeneration:e,signal:i?.signal}),await T()},stageAdmission:({requestID:e,scope:t,item:n})=>{let r=qL({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=qL({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=qL({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 YL(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 YL(e=>n.admit({...v,signal:e}),i?.signal,n.admissionRequestTimeoutMs)}catch(e){if(!h(o))return m(),{status:`stale`};if(!(e instanceof UP)||e.code!==`unavailable`)throw m(),e;f({...l,phase:`ambiguous`});try{y=await YL(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?YL(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 UP)||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<GL;a++){let d=r.scopes.get(t),f=(d?pI(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(!UL(e)||a+1>=GL)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<GL;a++){let d=r.scopes.get(t),f=(d?pI(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 UP(404,`not_found`)).catch(()=>void 0),await T(),!0):!1}catch(e){if(!UL(e)||a+1>=GL)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:KL(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 UP(0,`unavailable`)}}},ZL,QL=()=>ZL??=XL(),$L=new WeakMap,eR=e=>{let t=e,n=$L.get(t);if(n)return n.refs++,()=>{n.refs--,n.refs||(n.unsubscribe(),$L.delete(t))};let r={refs:1,unsubscribe:s(t=>{p(t)&&e.restart()})};return $L.set(t,r),()=>{r.refs--,r.refs||(r.unsubscribe(),$L.delete(t))}},tR=e=>!e||/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(e),nR=(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(!tR(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}},rR=/\.[a-z0-9]{1,8}$/i,iR=new Set([`test`,`tests`,`__tests__`,`spec`,`specs`,`e2e`,`__mocks__`]),aR=/\.(?:test|spec|e2e)\./i,oR=.85,sR=3,cR=3,lR=1.25,uR=-.35,dR=-.5,fR=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(rR),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}},pR=e=>{let t=fR(e);return(t.fileIntent||t.directoryIntent)&&t.stem?t.stem:t.search},mR=e=>{let t=e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase();if(!t)return!1;let n=t.split(`/`).filter(Boolean);if(n.some(e=>iR.has(e)))return!0;let r=n.at(-1)??t;return aR.test(r)},hR=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase(),gR=(e,t)=>(e.name||t.split(`/`).filter(Boolean).pop()||t).toLowerCase(),_R=(e,t)=>e===null&&t===null?null:Math.min(e??1/0,t??1/0),vR=(e,t)=>{let n=hR(e.relativePath),r=gR(e,n),i=e.isDirectory===!0,a=_R(xO(n,t.search),xO(r,t.search)),o;if(a!==null)o=a;else if(t.stem&&t.stem!==t.search){let e=_R(xO(n,t.stem),xO(r,t.stem));if(e===null)return null;o=e+oR}else return null;return t.fileIntent&&i&&(o+=sR),t.directoryIntent&&!i&&(o+=cR),t.fileIntent&&!i&&t.extension&&e.extension===t.extension&&(o+=uR),t.directoryIntent&&i&&r===t.stem&&(o+=dR),mR(n)&&!mR(t.search)&&(o+=lR),o},yR=(e,t,n)=>{let r=n?.limit??20,i=fR(t);if(!i.search&&!i.stem)return e.slice(0,r);let a=e.flatMap(e=>{let t=vR(e,i);return t===null?[]:[{item:e,score:t,sortKey:hR(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)},bR=/\.[a-z0-9]{1,8}$/i,xR=/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/,SR=e=>e.includes(`/`)||e.includes(`\\`)||e.includes(`.`),CR=e=>{if(!SR(e))return!1;let t=e.replace(/\\/g,`/`);if(t.endsWith(`/`))return!0;let n=t.split(`/`).filter(Boolean).pop()??t;return bR.test(n)},wR=e=>{let t=e.replace(/\\/g,`/`);return/^[A-Za-z]:\//.test(t)?t.slice(3).includes(`/`):t.startsWith(`//`)?t.replace(/^\/+/,``).includes(`/`):t.startsWith(`/`)?t.slice(1).includes(`/`):!1},TR=(e,t,n)=>{if(!n||n.size===0||e[t]!==`@`)return null;let r=e.slice(t+1),i=null;for(let a of n){if(!a||!a.includes(` `)&&!a.includes(` `)||!r.startsWith(a))continue;let n=e[t+1+a.length];n!==void 0&&!/\s/.test(n)||(!i||a.length>i.length)&&(i=a)}if(!i)return null;let a=t+1+i.length;return{value:i,end:a,highlightEnd:a}},ER=(e,t)=>{let n=e.slice(t+1),r=n.search(/\s/),i=r===-1?n:n.slice(0,r);if(!i||/[\r\n]/.test(i)||!wR(i))return null;let a=t+1+i.length,o=i;if(CR(o))return{value:o,end:a,highlightEnd:a};for(;a<e.length&&/[ \t]/.test(e[a]);){let n=a+1;for(;n<e.length&&!/\s/.test(e[n]);)n+=1;if(n===a+1)break;let r=e.slice(t+1,n);if(r.length>4096)break;if(o=r,a=n,CR(o))return{value:o,end:a,highlightEnd:a}}return null},DR=(e,t)=>{let n=/^([^\s]+)/.exec(e.slice(t+1))?.[1]??``;if(!n)return null;let r=n.trim().replace(/[),.;:!?`"'>]+$/g,``);return r?{value:r,end:t+1+r.length,highlightEnd:t+1+n.length}:null},OR=(e,{confirmedValues:t,allowSpacedPastedPaths:n=!1})=>{let r=[],i=0;for(;i<e.length;){let a=e.indexOf(`@`,i);if(a<0)break;let o=a>0?e[a-1]:null;if(!(!o||xR.test(o))){i=a+1;continue}let s=TR(e,a,t)??(n?ER(e,a):null)??DR(e,a);if(!s){i=a+1;continue}r.push({start:a,...s}),i=Math.max(s.highlightEnd,s.end,a+1)}return r},kR=({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 yR(Array.from(a.values()),n,{limit:i})},AR=6,jR=(e,t,n)=>yR(e,t,{limit:n?.limit??AR}),MR=(e,t)=>e===null&&t===null?null:Math.min(e??1/0,t??1/0),NR=(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=MR(xO(e.name,n),xO(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)},PR=(e,t)=>{let n=e[t];return n!==void 0&&/\s/.test(n)},FR=({mention:e,confirmed:t,terminated:n})=>!e||e.startsWith(`session:`)?!1:t?!0:n&&SR(e),IR=(e,{confirmedValues:t,agentNames:n})=>{if(!e.includes(`@`))return[];let r=[];for(let i of OR(e,{confirmedValues:t})){let{start:a,value:o,end:s,highlightEnd:c}=i;if(o.startsWith(`session:`))continue;if(n.has(o.toLowerCase())){r.push({start:a,end:c,kind:`agent`});continue}let l=PR(e,s);FR({mention:o,confirmed:t.has(o),terminated:l})&&r.push({start:a,end:c,kind:`file`})}return r},LR=(e,{agentNames:t,includeUnterminatedPastedReferences:n=!1,confirmedValues:r}={})=>{if(!e.includes(`@`))return[];let i=[];for(let a of OR(e,{confirmedValues:r,allowSpacedPastedPaths:n})){let{start:o,value:s,end:c}=a;if(!s||s.startsWith(`session:`)||t?.has(s.toLowerCase()))continue;let l=s.includes(` `)||s.includes(` `),u=PR(e,c),d=n&&(l||CR(s)),f=r?.has(s)===!0;!u&&!d&&!f||!SR(s)&&!d||i.push({kind:s.endsWith(`/`)||s.endsWith(`\\`)?`directory`:`file`,value:s,start:o,end:c})}return i},RR=/(^|[\s([{])(@session:([A-Za-z0-9_-]+))(?=$|[\s)\]},.!?;:])/g,zR=e=>{let t=[];RR.lastIndex=0;let n;for(;(n=RR.exec(e))!==null;){let e=n.index+n[1].length;t.push({start:e,end:e+n[2].length,id:n[3]})}return t},BR=e=>{let t=[],n=new Set;for(let{id:r}of zR(e))n.has(r)||(n.add(r),t.push(r));return t},VR=(e,t)=>{let n=e;for(let r of zR(e).reverse()){let e=t.get(r.id)??r.id;n=`${n.slice(0,r.start)}@${e}${n.slice(r.end)}`}return n},HR=({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??0)-(e.time?.updated??e.time?.created??0)).slice(0,r?10:3)},UR=({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},WR=/(^|\s)\/\u2003?([a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?)|(^|\s)@\u2003?([a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?)(?=$|\s|[),.;:!?])/g,GR=e=>cr(e.trim()),KR=e=>{let t=e.trim();if(t.toLowerCase().startsWith(`file://`))return t;let n=GR(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`file:///${n}`:`file://${n}`},qR=e=>({chunks:[{provenance:`authored`,text:e,start:0,end:e.length}],semantics:[]}),JR=({text:e,root:t,confirmedFilePaths:n,confirmedDirectoryPaths:r=[],agentNames:i})=>{let a=[],o=new Set,s=t?GR(t).replace(/\/+$/,``):``,c=e=>GR(e).replace(/^\.\//,``),l=new Set(n.map(e=>c(e))),u=new Set(r.map(e=>c(e))),d=e=>{if(!e||i.has(e.toLowerCase()))return;let t=c(e),n=lr(e)||lr(t)?t:t.replace(/^\/+/,``);if(!(l.has(t)||l.has(n)||e.includes(`/`)||e.includes(`\\`)||e.includes(`.`)))return;let r=lr(e)||lr(t)?t:s?ur(s,n):null;if(!n||!r||o.has(r))return;o.add(r);let d=dr(r)||n,f=u.has(t)||u.has(n)||/[/\\]$/.test(e)?Xn:`text/plain`;a.push({id:ve(),file:new File([],d,{type:f}),filename:d,mimeType:f,size:0,dataUrl:KR(r),source:`server`,serverPath:r})},f=[];for(let t of n){if(!t.includes(` `)&&!t.includes(` `))continue;let n=`@${t}`,r=0;for(;r<e.length;){let i=e.indexOf(n,r);if(i<0)break;let a=i>0?e[i-1]:null,o=e[i+n.length],s=!a||/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(a),c=o===void 0||/\s/.test(o);s&&c&&(f.push({start:i,end:i+n.length}),d(t)),r=i+n.length}}let p=/@([^\s]+)/g,m;for(;(m=p.exec(e))!==null;){let t=m;if(f.some(e=>t.index>=e.start&&t.index<e.end))continue;let n=t.index>0?e[t.index-1]:null;n&&!/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(n)||d(t[1].trim().replace(/^[`"'<(]+/,``).replace(/[),.;:!?`"'>]+$/g,``))}return a},YR=(e,t)=>{let n=[],r=new Set;WR.lastIndex=0;let i;for(;(i=WR.exec(e))!==null;){let e=i[2]||i[4]||``;t.has(e)&&!r.has(e)&&(r.add(e),n.push({type:`skill`,skillName:e}))}return n},XR=(e,t)=>{if(!e.includes(`@`)||t.length===0)return[];let n=[];for(let{id:r,title:i}of t)(e.includes(`@${i}`)||e.includes(`@${R}${i}`))&&n.push(r);return n},ZR=({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(Je(r).map(e=>[e.id,e.title||e.id])),u=[];for(let e of lt().values()){let t=typeof e.title==`string`?e.title.trim():``;t&&u.push({id:e.id,title:t})}return df(e,e=>{let r=nR(e,t),d=[...new Set([...BR(e),...XR(e,u)])],f=[...YR(e,n),...d.map(e=>({type:`session`,sessionId:e}))],p=JR({text:r.sanitizedText,root:i,confirmedFilePaths:a,confirmedDirectoryPaths:o,agentNames:c});return{text:VR(vn(Pt(r.sanitizedText,s)),l),agent:r.mention?.name,attachments:p,semantics:f}})},QR=e=>e.map(e=>({text:e.text,...e.attachments?.length?{attachments:ff(e.attachments)}:{},synthetic:!0})),$R=({text:e,attachments:t,semanticParts:n,syntheticParts:r=[]})=>[{type:`text`,text:e},...ff(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},...ff(e.attachments??[]).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id}))])],ez=(e,t)=>{let n=t.map(e=>({...e,attachments:ff(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}})},tz=e=>e?.trim()||void 0,nz=e=>e.hasQueuedMessages&&(e.sessionIsRunning||e.autoReviewRunning)&&!e.queuedOnly&&e.delivery!==`steer`,rz=(e,t)=>e!==`assistant`||t===`server`,iz=(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)})},az=({currentConfig:e,sessionID:t,selection:n})=>{let r=tz(e.currentAgentName),i=t?tz(n.getSessionAgentSelection(t))??r:r,a=t&&i?n.getAgentModelForSession(t,i):null,o=t?n.getSessionModelSelection(t):null,s=tz(a?.providerId)??tz(o?.providerId)??tz(e.currentProviderId),c=tz(a?.modelId)??tz(o?.modelId)??tz(e.currentModelId);if(!s||!c)return;let l=t&&i?tz(n.getAgentModelVariantForSession(t,i,s,c))??tz(e.currentVariant):tz(e.currentVariant);return{providerID:s,modelID:c,...i?{agent:i}:{},...l?{variant:l}:{}}},oz=e=>!!(tz(e?.providerID)&&tz(e?.modelID)),sz=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,cz=(e,t)=>sz(e,t),lz=e=>JSON.stringify([e.text,e.references]),uz=e=>JSON.stringify(e),dz=(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,fz=({draftKey:e,runtime:t,document:n,attachments:r,inlineDrafts:i})=>({draftKey:{transportIdentity:e.transportIdentity,owner:{...e.owner}},draftKeyID:x(e),runtime:{...t},documentFingerprint:lz(n),attachments:new Map(r.map(e=>[e.id,e])),inlineDrafts:new Map(i.map(e=>[e.id,uz(e)]))}),pz=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`||!cz(e.runtime,n())||!d||x(d)!==e.draftKeyID)return{status:`stale`,bodyConsumed:!1,attachmentIDsConsumed:[],inlineDraftIDsConsumed:[]};let f=lz(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||!dz(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||uz(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}},mz=(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)}}),hz=(e=ve,t=()=>oe(`msg`),n=Date.now())=>({requestID:e(),queueItemID:`queued-${e()}`,operationID:`operation-${e()}`,messageID:t(),createdAt:n}),gz=({stage:e,clearComposer:t,postClear:n})=>{let r=e();return t(),n?.(),r},_z=`blocked`,vz=new Set,yz=()=>_z,bz=e=>{if(_z!==e){_z=e;for(let e of vz)e()}},xz=e=>(vz.add(e),()=>vz.delete(e)),Sz=()=>_z===`legacy-enabled`,Cz=2e3,wz=6e4,Tz=5e3,Ez=3,Dz=e=>Math.min(Cz*2**Math.max(e-1,0),wz),Oz=new Map,kz=new Map,Az=new Set,jz=new Set,Mz=0,Nz=()=>{Mz+=1;for(let e of jz)e()},Pz=(e,t)=>JSON.stringify([O(e),t.queueItemID,t.operationID]),Fz=e=>`scope:${O(e)}`,Iz=()=>new Set([...Oz.keys(),...kz.keys()]),Lz=e=>(jz.add(e),()=>jz.delete(e)),Rz=e=>{let t=(0,G.c)(2),n;return t[0]===e?n=t[1]:(n=()=>e?kz.has(Fz(e)):!1,t[0]=e,t[1]=n),J.useSyncExternalStore(Lz,n,aB)},zz=()=>structuredClone(we.getState().queuedMessages),Bz=async()=>{for(bz(`blocked`);Oz.size||kz.size||Az.size;)await Promise.allSettled([...new Set([...Oz.values(),...kz.values(),...Az])]);return de(),zz()},Vz=e=>e===`idle`,Hz=e=>{if(e===void 0)return`unknown`;let t=e[e.length-1];return!t||t.role===`assistant`?`settled`:`unsettled`},Uz=(e,t,n,r,i=!1,a=`settled`)=>e?e.status===`sending`?i?{}:{recover:!0}:e.status===`queued`?Vz(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`retrying`?e.nextAttemptAt&&e.nextAttemptAt>r?{nextWakeAt:e.nextAttemptAt}:Vz(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`reconciling`?(e.reconciliationChecks??0)>=Ez||(e.reconciliationDeadlineAt??1/0)<=r?{resolve:!0}:(e.reconciliationNextCheckAt??0)>r?{nextWakeAt:e.reconciliationNextCheckAt}:i?{}:{query:!0}:{}:{},Wz=(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},Gz=(e,t)=>{let n;for(let r of Ze(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},Kz=(e,t)=>{let n;for(let r of e.values())r.expiresAt>t&&(!n||r.expiresAt<n)&&(n=r.expiresAt);return n},qz=({queuedMessages:e,activeTransportIdentity:t,getStatus:n,getTurnState:r=()=>`settled`,previous:i,inFlight:a,dispatchInFlight:o=Iz(),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=Pz(m,e),_=Fz(m);d.add(h);let v=n(m),y=Uz(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(O(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},Jz=e=>{let t=e[0];if(!t)return null;let n=t.composerDocument&&ae(t.composerDocument,`direct-send-display`),r=t.owner?.state===`bound`?t.owner.directory:``,i=ZR({plan:n?.ok?{chunks:n.chunks??[],semantics:n.semantics??[]}:qR(t.content),agents:K.getState().getVisibleAgents(),installedSkillNames:new Set(Sc(F,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=xf(i.semantics,r);return{queuedMessageId:t.id,messageID:t.messageID,operationID:t.operationID,primaryText:i.text,primaryAttachments:ff([...t.attachments??[],...i.attachments]),agentMentionName:i.agent,additionalParts:a,sendConfig:t.sendConfig}},Yz=(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}),Xz=(e,t)=>t?{...t}:az({currentConfig:K.getState(),sessionID:e,selection:xl.getState()})??{providerID:``,modelID:``},Zz=e=>{let t=$.getState().getDirectoryForSession(e);return t?{state:`bound`,transportIdentity:u(),directory:t,sessionID:e}:null},Qz=(e,t)=>!!(e===`queued`||e===`retrying`||t&&(e===`failed`||e===`unresolved`)),$z=e=>e.status===`sending`||e.status===`reconciling`,eB=(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`||O(a.owner)!==O(r)?null:{scope:r,item:a}};function tB(e,t={}){if(!Sz())return Promise.resolve();let n=we.getState(),r=t.scope??Zz(e),i=t.manual===!0||t.delivery===`steer`;if(!r||r.transportIdentity!==u())return Promise.resolve();let a=eB(n,e,t.queueItemID,r??void 0);if((i||!t.scope)&&!kz.has(Fz(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($z)&&!o.some($z)&&(n.bindLegacyQueue({state:`unbound-legacy`,sessionID:e},r),a=eB(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=Pz(o,c),d=Oz.get(l);if(d)return d;if(kz.has(Fz(o))||!Qz(s.status,i)||s.status===`retrying`&&!i&&(s.nextAttemptAt??0)>Date.now())return Promise.resolve();let p,m=new Promise(e=>{p=e});return Oz.set(l,m),kz.set(Fz(o),m),Nz(),(async()=>{try{let r=Gz(e,o.directory),a=xB(e),l=a?.queueItemID===s.queueItemID?a.messageID:ge(`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(!de()){n.markQueueItemPreDispatchRetry(o,p,Date.now()+Dz(d.attemptCount+1));return}let m=f(),h=Jz([d]);if(!h)return;let g=Xz(e,d.sendConfig);if(!g.providerID||!g.modelID){n.markQueueItemPreDispatchRetry(o,p,Date.now()+Dz(d.attemptCount+1));return}if(!Sz()){n.markQueueItemPreDispatchRetry(o,p,Date.now()+Dz(d.attemptCount+1));return}let _=()=>{let e=we.getState().getQueueForScope(o)[0];return u()===o.transportIdentity&&f()===m&&e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&O(e.owner)===O(o)},v=()=>{let e=we.getState().getQueueForScope(o)[0];return e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&O(e.owner)===O(o)},y=t=>{_()&&t===p.messageID&&(we.getState().confirmQueueItem(o,p),FB(e))};try{await Yz(e,h,g,{directory:o.directory,delivery:t.delivery,onSendConfirmed:y}),y(p.messageID)}catch(e){if(!v())return;let t=ky(e);t===`pre-dispatch`?n.markQueueItemPreDispatchRetry(o,p,Date.now()+Dz(d.attemptCount+1)):t===`definitive-rejection`?n.markQueueItemDefinitiveFailure(o,p):n.markQueueItemReconciling(o,p)}}finally{let e=!1;Oz.get(l)===m&&(Oz.delete(l),e=!0),kz.get(Fz(o))===m&&(kz.delete(Fz(o)),e=!0),e&&Nz(),p?.()}})(),m}async function nB(e,t=f()){if(!Sz())return;let n=Math.min(e.item.reconciliationDeadlineAt??1/0,Date.now()+Tz),r=new AbortController,i=setTimeout(()=>r.abort(),Math.max(0,n-Date.now())),a=null;try{a=await Lb(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=we.getState().getQueueForScope(e.scope)[0];o?.queueItemID===e.item.queueItemID&&o.operationID===e.item.operationID&&o.messageID===e.item.messageID&&O(o.owner)===O(e.scope)&&u()===e.scope.transportIdentity&&f()===t&&(a?.some(t=>t.info.id===e.item.messageID)?(rH(e.scope.sessionID,e.item.messageID),we.getState().confirmQueueItem(e.scope,{queueItemID:o.queueItemID,operationID:o.operationID,messageID:o.messageID})):we.getState().recordQueueItemReconciliationCheck(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID}))}var rB=(e,t)=>{my({sessionID:e.sessionID,messageID:t.messageID,directory:e.directory}),we.getState().resolveQueueItemReconciliation(e,{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID})};function iB(e){let t=typeof e==`boolean`?e:e?.enabled??!0,n=J.useSyncExternalStore(xz,yz,yz),r=we(e=>e.queuedMessages),i=Bd(e=>e.runsByOriginalSessionID),a=$(e=>e.queueAbortBlocks),o=J.useSyncExternalStore(s,u,u),c=J.useSyncExternalStore(s,m,m),l=J.useSyncExternalStore(Lz,()=>Mz,()=>Mz),d=J.useMemo(()=>Object.values(r).flatMap(e=>{let t=e[0]?.owner;return t?.state===`bound`&&t.transportIdentity===o?[t]:[]}),[o,r]),p=hN(d),h=gN(),g=XN(),_=J.useMemo(()=>d.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),[d]),v=J.useRef(d);v.current=d;let y=J.useSyncExternalStore(J.useMemo(()=>e=>{if(!_)return()=>void 0;let t=v.current.map(e=>({directory:e.directory,sessionID:e.sessionID}));return Dn(t,e,e=>g.getChild(e),{subscribeRebuild:e=>g.subscribeRegistry(e)})},[g,_]),J.useMemo(()=>()=>{if(!_)return``;let e=v.current.map(e=>({directory:e.directory,sessionID:e.sessionID}));return Ct(e,e=>g.getChild(e))},[g,_]),()=>``),b=J.useCallback(e=>h(e),[h]),x=J.useCallback(e=>Hz(Me(e.directory,e.sessionID,g.getChild(e.directory))),[g]),[S,C]=J.useState(0),w=J.useRef(new Map),T=J.useRef(new Set);J.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 Wz(i,c))s.add(e);let u=qz({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)we.getState().markQueueItemReconciling(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID});for(let e of u.dispatchScopes)we.getState().getQueueForScope(e)[0]&&tB(e.sessionID,{scope:e}).finally(()=>{C(e=>e+1)});for(let e of u.resolveOperations)rB(e.scope,e.item);for(let e of u.queryOperations){T.current.add(e.key);let t=nB(e,f()).finally(()=>{T.current.delete(e.key),Az.delete(t),C(e=>e+1)});Az.add(t)}let d=Kz(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 aB(){return!1}var oB={server:QL(),queue:EL(),status:e=>oI(F).then(t=>{if(e?.aborted)throw new DOMException(`Aborted`,`AbortError`);return t}),activate:FF,lateCommit:IF,capture:()=>({transportIdentity:u(),generation:f()}),current:e=>e.transportIdentity===u()&&e.generation===f(),quiesce:async()=>{await Bz()},flush:async()=>{de()},prepare:E,resolveDirectory:e=>$.getState().getDirectoryForSession(e)},sB=()=>({ownership:`probing`,migration:`idle`,frozen:!0,admission:`frozen`,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),cB=(e={})=>{let t={...oB,...e},n=sB(),r=0,i,a,o,c=500,l,u=!1,d=new Set,f=e=>{n={...n,...e};let r=n.ownership===`legacy-unsupported`;bz(r?`legacy-enabled`:`blocked`),ee(r?`open`:n.migration===`freezing`||n.ownership===`probing`||n.ownership===`blocked`?`quiescing`:`recovery-read-only`),(n.ownership===`server-active`||n.ownership===`server-paused`)&&w(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 UP&&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 zL({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 cI(F).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(sB()),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}},lB,uB=()=>lB??=cB(),dB=t({confirmQueueAbortOptimistic:()=>FB,getQueueAbortOptimisticPresentation:()=>xB,getQueueAbortOptimisticRevision:()=>bB,inspectQueueAbortOptimisticTranscript:()=>jB,isQueueItemSendPendingByAbortOptimistic:()=>SB,planQueueAbortOptimisticReconcile:()=>MB,promoteQueueHeadOnAbort:()=>VB,reconcileQueueAbortOptimistic:()=>BB,rollbackQueueAbortOptimistic:()=>PB,subscribeQueueAbortOptimistic:()=>yB,useQueueAbortOptimisticReconcile:()=>HB}),fB=new Set([`queued`,`retrying`]),pB=new Set([`sending`,`reconciling`]),mB=new Set([`failed`,`unresolved`]),hB=new Map,gB=new Set,_B=0,vB=()=>{_B+=1;for(let e of gB)e()},yB=e=>(gB.add(e),()=>{gB.delete(e)}),bB=()=>_B,xB=e=>hB.get(e),SB=(e,t)=>hB.get(e)?.queueItemID===t,CB=(e,t)=>{let n;for(let r of Ze(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},wB=e=>{let t=e?.[0];if(!(!t||!fB.has(t.status))&&t.deliveryTarget?.kind!==`assistant`)return t},TB=(e,t)=>{let n=we.getState(),r={state:`bound`,transportIdentity:u(),directory:t,sessionID:e};return wB(n.getQueueForScope(r))??wB(n.getQueueForScope(N(e)))},EB=(e,t)=>{let n=uB().getSnapshot().ownership;return n!==`server-active`&&n!==`server-paused`?void 0:wB(QL().getScope({transportIdentity:u(),directory:t,sessionID:e})?.items)},DB=e=>{let t=e.sendConfig?.providerID,n=e.sendConfig?.modelID;return!t||!n?null:{providerID:t,modelID:n,agent:e.sendConfig?.agent}},OB=e=>!!e&&typeof e==`object`&&e.__openchamberOptimistic===!0,kB=(e,t,n)=>{try{let r=W();return r?r.getTranscript(H(t,e)).partsByMessageID[n]??[]:[]}catch{return[]}},AB=(e,t,n)=>{let r=typeof e.id==`string`?e.id:``;if(!r||e.role!==`user`)return!1;let i=kB(t,n,r);return i.length!==0&&i.some(e=>!OB(e))},jB=(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}},MB=(e,t,n)=>{let r=e?.messageID;return e&&(fB.has(e.status)||pB.has(e.status))?r&&n&&r!==n?`rebind`:pB.has(e.status)||t.hasPinnedMessage?`confirm`:`keep`:e&&mB.has(e.status)?`rollback`:t.hasPinnedMessage?`confirm`:t.hasLaterUserMessage?`rollback`:`keep`},NB=e=>{let t=hB.get(e);if(t)return hB.delete(e),vB(),t},PB=e=>{NB(e)},FB=e=>{NB(e)},IB=e=>{if(e.source===`server`){let t=QL().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=j(we.getState(),t).find(t=>t.queueItemID===e.queueItemID)??j(we.getState(),N(e.sessionID)).find(t=>t.queueItemID===e.queueItemID);return n?{queueItemID:n.queueItemID,status:n.status,messageID:n.messageID}:null},LB=e=>{let t=Ze(e.sessionID,e.directory).map(t=>({id:typeof t?.id==`string`?t.id:void 0,role:t?.role,optimistic:!AB(t,e.sessionID,e.directory)}));return jB(e.messageID,t)},RB=(e,t)=>{let n=hB.get(e);!n||!t||n.messageID===t||(hB.set(e,{...n,messageID:t}),vB())},zB=(e,t,n)=>{if(t===`confirm`)FB(e.sessionID);else if(t===`rollback`)PB(e.sessionID);else if(t===`rebind`&&n?.messageID){RB(e.sessionID,n.messageID);let t=hB.get(e.sessionID);if(!t)return;let r=MB(IB(t),LB(t),t.messageID);if(r===`rebind`)return;zB(t,r,IB(t))}},BB=e=>{let t=e?[hB.get(e)].filter(e=>!!e):[...hB.values()];for(let e of t){let t=IB(e);zB(e,MB(t,LB(e),e.messageID),t)}},VB=e=>{if(!e||hB.has(e))return hB.get(e)??null;let t=$.getState().getDirectoryForSession(e);if(!t)return null;let n=EB(e,t),r=n?void 0:TB(e,t),i=n??r;if(!i)return null;let a=DB(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)??ge(`msg`,CB(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 hB.set(e,c),vB(),c};function HB(){let e=(0,G.c)(6),t=J.useSyncExternalStore(yB,bB,bB),n=we(XB),r;e[0]!==t||e[1]!==n?(r=[t,n],e[0]=t,e[1]=n,e[2]=r):r=e[2],J.useEffect(YB,r);let i;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[3]=i):i=e[3],J.useEffect(KB,i);let a;e[4]===t?a=e[5]:(a=[t],e[4]=t,e[5]=a),J.useEffect(UB,a)}function UB(){let e=[...hB.values()].map(GB);return Dn(e,WB)}function WB(){BB()}function GB(e){return{directory:e.directory,sessionID:e.sessionID}}function KB(){let e=QL().subscribe(JB),t=s(qB);return()=>{e(),t()}}function qB(){for(let e of[...hB.keys()])PB(e)}function JB(){BB()}function YB(){BB()}function XB(e){return e.queuedMessages}var ZB=[`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 QB(e){try{let{currentProviderId:t,currentModelId:n}=K.getState(),r=await _(`/api/small-model/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:e,system:ZB,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 $B=[`active`,`paused`,`blocked`,`budgetLimited`,`complete`],eV=5e3,tV=e=>!!e&&typeof e==`object`&&!Array.isArray(e),nV=e=>typeof e==`string`&&$B.includes(e);function rV(e){let t=e?.metadata;if(!tV(t))return null;let n=t.openchamber;if(!tV(n))return null;let r=n.goal;if(!tV(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||!nV(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,eV),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 iV(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 aV(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 oV=e=>!!e&&typeof e==`object`&&!Array.isArray(e),sV=()=>`${Date.now().toString(36)}${Math.random().toString(36).slice(2,8)}`,cV=(e,t,n)=>rb(e,t,e=>{let t=oV(e.openchamber)?e.openchamber:{},r=n(oV(t.goal)?t.goal:null),i={...t};return r?i.goal=r:delete i.goal,{...e,openchamber:i}}),lV=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}},uV=e=>{_(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`DELETE`}).catch(()=>void 0)};async function dV(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 fV=`
|
|
410
|
+
|
|
411
|
+
[… objective trimmed for the auditor — the full text was delivered in the chat message …]
|
|
412
|
+
|
|
413
|
+
`,pV=async e=>{if(e.length<=5e3)return e;let t=await QB(e);if(t)return t.slice(0,eV);let n=Math.max(0,Math.floor((eV-93)/2)),r=Or.getState().dictionary;return SC.error(kr(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${fV}${e.slice(-n)}`};async function mV(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await pV(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await lV(e,a),c=Date.now();await cV(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:sV(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function hV(e,t){await cV(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function gV(e,t,n){n===`paused`&&(VB(e),Gb(e)),await cV(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 _V(e,t){let n=!1;await cV(e,t,e=>(n=e?.status===`active`,null)),uV(e),n&&(VB(e),Gb(e))}var vV=`<system-reminder>`,yV=`</system-reminder>`,bV=/[ \t]*<system-reminder>[\s\S]*?<\/system-reminder>[ \t]*/g,xV=/[ \t]*<system-reminder>[\s\S]*$/,SV=e=>{let t=e.trim();return t?t.startsWith(vV)&&t.endsWith(yV)?t:`${vV}\n${t}\n${yV}`:``},CV=e=>e.includes(vV)?e.replace(bV,``).replace(xV,``).trim():e,wV=(e,t=m())=>`${t}\n${e}`,TV=(e,t)=>{let n=EV.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(wV(e))??n.sessionMemoryState.get(e)},EV=Ee()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??wV(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}})})),DV=Ee((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}})})),OV=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function kV(e,t){if(e){if(!e.degraded&&e.cwd)return OV(e.cwd);if(e.worktreeRoot)return OV(e.worktreeRoot);if(e.cwd)return OV(e.cwd)}return t?OV(t):null}function AV(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function jV(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 MV(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?OV(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=OV(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 NV=`openchamber.session-switch.start`,PV=`openchamber.session-switch.highlight-painted`,FV=`openchamber.session-switch.content-committed`,IV=`data-openchamber-session-switch-highlight-ms`,LV=`data-openchamber-session-switch-content-ms`,RV=`openchamber.session-switch.highlight-latency`,zV=`openchamber.session-switch.content-latency`,BV=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,VV=()=>BV()&&performance.getEntriesByName(NV,`mark`).length>0,HV=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},UV=(e=!1)=>{BV()&&(!e&&performance.getEntriesByName(NV,`mark`).length>0&&performance.getEntriesByName(FV,`mark`).length===0||(performance.clearMarks(NV),performance.clearMarks(PV),performance.clearMarks(FV),performance.clearMeasures(RV),performance.clearMeasures(zV),typeof document<`u`&&(document.documentElement.removeAttribute(IV),document.documentElement.removeAttribute(LV)),performance.mark(NV)))},WV=()=>{if(!VV())return;performance.mark(PV),performance.measure(RV,NV,PV);let e=performance.getEntriesByName(RV,`measure`).at(-1);e&&HV(IV,e.duration)},GV=()=>{if(!VV())return;performance.mark(FV),performance.measure(zV,NV,FV);let e=performance.getEntriesByName(zV,`measure`).at(-1);e&&HV(LV,e.duration)},KV={revision:0,sessionId:null},qV=new Set,JV=e=>{KV={revision:KV.revision+1,sessionId:e};for(let e of qV)e(KV);return KV},YV=()=>KV,XV=e=>(qV.add(e),()=>qV.delete(e)),ZV=6e3;function QV(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:{providerID:e.providerID,modelID:e.modelID},metadata:{},time:{created:Date.now(),completed:0}},parts:t};e.text!==void 0&&t.push({id:oe(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:oe(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:oe(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:oe(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:oe(`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:{providerID:e.providerID,modelID:e.modelID},metadata:{},time:{created:Date.now(),completed:0}},parts:t}}function $V(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function eH(e,t){if(!e)return;let n=$V(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 tH(e){if(!Ut(e))return;let{toast:t}=await mr(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([16,1,7])),{useI18nStore:n,formatMessage:r}=await mr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-jaP79mqI.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([17,1,6,7,14])),{dictionary:i}=n.getState();t.error(r(i,`chat.revert.toast.busy`))}async function nH(e){let t=e.directory??void 0;await Sb(e.sessionId,t);let n=iH(e.sessionId,e.onSendConfirmed),r=e.content,i=er(K.getState().agents,e.agent)??e.agent,a=e.delivery!==`queue`,o=a?Ke(e.sessionId,t,{providerID:e.providerID,modelID:e.modelID,variant:e.variant,agent:i}):{model:void 0,agent:void 0};if(e.inputMode===`shell`){let r=e.messageID??oe(`msg`);return V.shellSession({sessionId:e.sessionId,directory:t,agent:i??``,model:{providerID:e.providerID,modelID:e.modelID},command:e.content}).then(()=>{n(r)})}let s=me(e.content);if(s){let c=s.commandName.toLowerCase(),l=s.argumentsText,d=t??Be.getState().currentDirectory??null,f=u(),p=Xo(d,f),m=bc(d,f),h=F.getQueryState(p.queryKey),g=F.getQueryState(m.queryKey),_=h?.data!==void 0,v=g?.data!==void 0,[y,b]=await Promise.all([_?Promise.resolve(Qo(d,f)):F.fetchQuery({...p,staleTime:1/0}),v?Promise.resolve(Sc(F,d,f)):F.fetchQuery({...m,staleTime:1/0})]);if(u()!==f)throw Error(`Runtime changed while resolving slash command`);let x=b.find(e=>e.name.toLowerCase()===c);x&&(r=`[skill:${x.name}]${l?` ${l}`:``}`);let S=x?void 0:y.find(e=>e.name.toLowerCase()===c);if(S?.isBuiltIn===!1)r=`[command:${S.reference??S.name}]${l?` ${l}`:``}`;else if(S)return Pb({sessionId:e.sessionId,delivery:e.delivery,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:i,directory:t,files:e.files,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:async n=>{a&&(o.model||o.agent)&&await V.applySendSelection(e.sessionId,{model:o.model,agent:o.agent},t),await V.sendCommand({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,command:S.name,arguments:l,agent:i,variant:e.variant,files:e.files,messageId:n,directory:t})}})}return Pb({sessionId:e.sessionId,delivery:e.delivery,content:r,providerID:e.providerID,modelID:e.modelID,agent:i,directory:t,files:e.files,parts:e.optimisticParts,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:async n=>{let s=await V.sendMessage({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,text:r,agent:i,...a?{switchModel:o.model,switchAgent:o.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});await dy({sessionId:e.sessionId,directory:t,optimisticID:n,inboxID:s,text:r,delivery:e.delivery})}})}function rH(e,t){_(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function iH(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{rH(e,r)}}}}var aH=e=>{let t=e;return z(t.directory??null)??z(t.project?.worktree??null)},oH=or(),sH=`oc.chatInput.lastDraftTarget`,cH=()=>{try{let e=oH.getItem(sH);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:z(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},lH=e=>{try{oH.setItem(sH,JSON.stringify(e))}catch{}},uH=Tl,dH=e=>{if(e)return DV.getState().getAttachment(e)},fH=(e,t,n)=>{if(!e)return null;let r=kV(dH(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return z(i);if(n?.includeRuntimeMemory!==!1){let t=vH.get(yH());if(t?.sessionId===e&&t.directory)return z(t.directory)}let a=Ot().find(t=>t.id===e);return a?aH(a):null},pH=e=>{let t=Ot().find(t=>t.id===e);if(t)return t;let n=X.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},mH=async(e,t)=>{await K.getState().activateDirectory(z(e),t)},hH={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},gH=new Map,_H=0,vH=new Map,yH=e=>(e??m()).trim()||`default`,bH=e=>({...e}),xH=(e,t)=>{let n=vH.get(e);vH.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?bH(n.draft):{...hH},...t})},SH=(e,t)=>{let n=Ko.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=Tl(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},CH=async(e,t)=>{if(!e)return;let n=SH(e,t);n&&await eD(n)&&await CE(e)},wH=(e,t)=>{let n=Ko.getState(),r=Tl(n.projects,t,e);r&&n.moveProjectToTop(r.id)},TH=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,EH=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,DH=(e,t)=>EH(e,t)&&TH(Xa.getState().captureDraftRuntime(),t.runtime);async function OH(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?QV({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return xH(yH(),{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 kH(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return xH(yH(),{draft:n}),{newSessionDraft:n}})}async function AH(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=yH(),t=s.draftID,n=o,xH(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=Xa.getState().captureDraftRuntime(),o=M(a,t),s=Xa.getState().getDraft(o);return{token:n,draftID:t,draft:bH(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function jH(e){$.setState(t=>{let n=t.newSessionDraft;if(DH(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=vH.get(e.runtimeMemoryKey);return r&&EH(r.draft,e)&&xH(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=vH.get(e.runtimeMemoryKey);t&&EH(t.draft,e)&&xH(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function MH(e){let t=vH.get(e.runtimeMemoryKey);t&&EH(t.draft,e)&&xH(e.runtimeMemoryKey,{draft:{...hH}})}async function NH(e,t,n){if(!e.source)return null;let r;try{r=await Xa.getState().finalizeDraftOwnership({source:e.source.key,destination:A(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 PH(e,t){let n=t??e.directory??null;n&&at(e.id,n),X.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function FH(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=z(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!DH(l,r);PH(e,c);let f=K.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&<.getState().addSessionToFolder(t,a,e.id)}return d||(lH({projectId:o??null,directory:c}),mH(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),xl.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(xl.getState().saveSessionAgentSelection(e.id,p),xl.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),xl.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),wH(c,$.getState().availableWorktreesByProject),u&&mr(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>vA);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&&MH(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function IH(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await qT(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await CH(t,n);let r=t??V.getDirectory();return{directory:z(r),projectId:n}}async function LH(e,t){let n=await AH(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 IH(r),o=a??V.getDirectory(),s=await nb(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&Fb({sessionId:s.id,messageID:t.info.id,content:``,providerID:e.providerID,modelID:e.modelID,agent:i,variant:e.variant,directory:a??s.directory??null,parts:t.parts}),{materialized:await FH(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return jH(n),null}}async function RH(e){let t=await LH(e);return t?(await NH(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var zH=2,BH=300;async function VH(e){let{useI18nStore:t,formatMessage:n}=await mr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-jaP79mqI.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([17,1,6,7,14])),{dictionary:r}=t.getState();return Error(n(r,e))}async function HH(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=K.getState(),p=er(f.agents,d??f.currentAgentName),m=e.messageID??u.pendingUserMessage?.info.id??oe(`msg`),h=QV({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 AH(h);if(!g)throw await VH(`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 IH(_),f=await V.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=Ge(f.flatMap(e=>e.type===`text`&&!e.synthetic?[e.text]:[]).join(`
|
|
414
|
+
`)),y=S()?.conversations;if(!y?.createWithPrompt)throw await VH(`chat.chatInput.toast.messageSendFailed`);let b=d??V.getDirectory()??``,x=_y(b,{bootstrap:!1}),C=()=>TH(Xa.getState().captureDraftRuntime(),g.runtime),w;for(let e=0;e<=zH;e++){e>0&&await new Promise(e=>setTimeout(e,BH));try{if(w=await y.createWithPrompt({input:{type:`prompt`},directory:b,..._.title?{title:_.title}:{},..._.parentID?{parentID:_.parentID}:{},messageID:m,model:{providerID:n,modelID:r},...p?{agent:p}:{},...o?{variant:o}:{},...v.length?{skills:v}:{},parts:f}),!w||w.ok||w.phase!==`unavailable`||(w=void 0,e===zH))break}catch{if(e===zH)break}}if(!w)throw jH(g),Xa.getState().setPendingInputText(t,`replace`),await VH(`chat.chatInput.toast.messageSendFailed`);if(w.ok){let e=w.session,t=d??e.directory??null,i=t??b;PH(e,t);let a=i===b?x:_y(i,{bootstrap:!1});eH(e.id,h);let s=await FH(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 NH(g,e.id,`consume`),rH(e.id,m),s.selected&&rf(e.id),Wb({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:C}).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(!w.ok){let e=w.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw jH(g),Xa.getState().setPendingInputText(t,`replace`),await VH(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=w,i=e.session,a=d??i.directory??null,s=await FH(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 Lb(i.id,m,a,{isCurrent:C});if(e&&C()){await NH(g,i.id,`consume`),rH(i.id,m),s.selected&&rf(i.id),Rb(_y(a??b,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??b}),l?.(i.id,a);return}throw await NH(g,i.id,`preserve`),Xa.getState().setPendingInputText(t,`replace`),await VH(`chat.chatInput.toast.sendStatusUnknown`)}throw await NH(g,i.id,`preserve`),Xa.getState().setPendingInputText(t,`replace`),await VH(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw jH(g),e}}var UH=`oc.worktreeMap`,WH=()=>{try{let e=or().getItem(UH);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}},GH=e=>{try{or().setItem(UH,e)}catch{}},KH=e=>{let t=[];for(let n of e.values())t.push(...n);return t},qH=WH(),$=Ee()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...hH},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:KH(qH),availableWorktreesByProject:qH,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)=>{JV(n),v(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(UV(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Xa.getState().setActiveAttachmentDraft(n?A({transportIdentity:u()},n):null);let s=yH();gH.set(s,n);let c=Be.getState(),l=fH(n,e=>t().worktreeMetadata.get(e)),d=V.getDirectory()??c.currentDirectory??null,f=(r?z(r):null)??l??d,p=Ko.getState(),m=f?Tl(p.projects,t().availableWorktreesByProject,f):null;e({currentSessionId:n,currentSessionDirectory:n?f??null:null}),xH(s,{sessionId:n,directory:f??null}),a!==n&&ar.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?f??null:null}),n&&i?.skipMessageFetch!==!0&&sx(n,f);try{f&&c.currentDirectory!==f&&c.setDirectory(f,{showOverlay:!1}),m&&i?.preserveActiveProject!==!0&&p.activeProjectId!==m.id&&p.setActiveProjectIdOnly(m.id),V.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(!TV(e)?.isStreaming){let t=Ze(e);t.length>0&&EV.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(bD(n),dM(f??``,n))},prepareForRuntimeSwitch:n=>{let r=yH(n),i=Be.getState().currentDirectory||null,a=t().currentSessionId,o=i?tr(i):null;qA({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),gH.set(r,t().currentSessionId),xH(r,{sessionId:a,directory:i,draft:bH(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=yH(t),r=vH.get(n),i=r?.sessionId??gH.get(n)??null;v(i);let a=r?.draft?bH(r.draft):{...hH},o=r?.directory??null;o&&Be.getState().setDirectory(o,{showOverlay:!1}),e({currentSessionId:i,currentSessionDirectory:i?o:null,newSessionDraft:i?{...hH}: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}),Xa.getState().setActiveAttachmentDraft(i?A({transportIdentity:u()},i):a.open&&a.draftID?M({transportIdentity:u()},a.draftID):null),i?dM(o??V.getDirectory()??``,i):dM(``,``)},openNewSessionDraft:n=>{if(VP.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let i=Ko.getState(),a=i.projects,o=t().availableWorktreesByProject,s=z(t().currentSessionDirectory??null),c=z(Be.getState().currentDirectory??null),l=cH(),d=n?.directoryOverride===void 0?null:z(n.directoryOverride),f=uH(a,o,d),p=n?.ensureProjectForDirectory&&d&&!f?i.addProject(d):null;p&&(i=Ko.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=uH(m,o,l?.directory??null),x=uH(m,o,s),S=uH(m,o,c),C=g||(d===null?x||(c?S:b??y??_):p??f),w=d===null?g?z(g.path??null):s||c||(l?.directory?l.directory:z(C?.path??null)):d;lH({projectId:C?.id??null,directory:w}),C&&i.activeProjectId!==C.id&&i.setActiveProjectIdOnly(C.id);let T=se({projectId:C?.id??null,directory:w}),E=M({transportIdentity:u()},T),D=Xa.getState().getDraft(E),O={open:!0,draftID:T,selectedProjectId:C?.id??null,directoryOverride:w,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:z(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),ar.getState().setActiveMainTab(`chat`),k&&ar.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:k,previousDirectory:A,nextSessionId:null,nextDirectory:null}),xH(yH(),{sessionId:null,directory:w,draft:O}),Xa.getState().setActiveAttachmentDraft(E),D||Xa.getState().clearAttachedFiles(),n?.initialPrompt&&Xa.getState().setPendingInputText(n.initialPrompt);let j=z(C?.path??null)??w,N=C?z(j):null,ee=O.draftID,te=u();mH(j,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=z(K.getState().activeDirectoryKey);!e.open||e.draftID!==ee||u()!==te||!N||n!==N||K.getState().applyDefaultModelAgentSelection({projectDefaultModel:C?.defaultModel})}),w&&w!==Be.getState().currentDirectory&&Be.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}),xH(yH(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=z(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}:{}}}}),mH(r,{source:`setNewSessionDraftTarget`}),r&&r!==Be.getState().currentDirectory&&Be.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=ZV)=>{let r=ve(),i=O(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=O(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=Ze(r);if(i.length===0)return null;let a=pD(i,e=>Ft(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(cD(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?DV.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}):DV.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=z(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),mH(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Be.getState().currentDirectory&&Be.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:z(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:z(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:z(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,d,p)=>{let m=t().stagedMessageEdit,h=p?.sessionId??t().currentSessionId,g=p?.commitStagedMessageEdit&&m&&m.sessionId===h?m:null,_=p?.sessionId??t().currentSessionId;if(_){let n=new Map(t().pendingChangesBarDismissed);n.delete(_),e({pendingChangesBarDismissed:n})}let v=t().newSessionDraft,y=typeof a==`string`&&a.trim().length>0?a.trim():void 0,b=d!==`shell`&&n.trim().length>0?HP.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=ar.getState(),t=SV(`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 C=(e,t)=>{if(!x)return;let r=ar.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;mV(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(!p?.sessionId&&v?.open){if(d!==`shell`&&!n.trimStart().startsWith(`/`)&&!p?.delivery&&S()?.conversations?.createWithPrompt){await HH({content:n,providerID:r,modelID:i,agent:y,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:p?.messageID,onSessionReady:C});return}let e=p?.messageID??v.pendingUserMessage?.info.id??oe(`msg`),a=QV({messageID:e,sessionID:`draft:pending`,providerID:r,modelID:i,agent:y,text:n,attachments:o,additionalParts:v.syntheticParts?.length?[...c||[],...v.syntheticParts]:c,agentMentionName:s}),u=await LH({providerID:r,modelID:i,agent:y,variant:l},a);if(!u)throw Error(`Failed to create session`);let{materialized:f,claim:m}=u,h=f.syntheticParts?.length?[...c||[],...f.syntheticParts]:c;rf(f.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await nH({sessionId:f.sessionId,directory:f.directory,content:n,providerID:r,modelID:i,agent:f.agent,agentMentionName:s,variant:l,inputMode:d,files:g,delivery:p?.delivery,messageID:e,optimisticParts:a.parts,preserveOptimisticOnAmbiguous:p?.preserveOptimisticOnAmbiguous,onSendConfirmed:p?.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 NH(m,f.sessionId,`consume`)}catch(e){throw await NH(m,f.sessionId,`preserve`),e}wH(f.directory,t().availableWorktreesByProject),C(f.sessionId,f.directory);return}let w=p?.sessionId??t().currentSessionId,T=w?xl.getState().getSessionAgentSelection(w):null,E=K.getState(),D=E.currentAgentName,O=er(E.agents,y||T||D||void 0);if(w&&xl.getState().saveSessionModelSelection(w,r,i),w&&O&&(xl.getState().saveSessionAgentSelection(w,O),xl.getState().saveAgentModelForSession(w,O,r,i),xl.getState().saveAgentModelVariantForSession(w,O,r,i,l)),w){let e=EV.getState(),t=TV(w);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(wV(w),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),EV.setState({sessionMemoryState:n})}}let k=w?z(p?.directoryHint)??z(t().getDirectoryForSession(w)):null;w&&!p?.ticket&&p?.delivery!==`queue`&&rf(w);let A=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})),j=u(),M=f(),N=()=>j===u()&&M===f();if(g)try{if(await nx(g.sessionId,g.messageId,{directory:k??void 0}),!N())throw Error(`Session history mutation aborted because the runtime changed`);t().stagedMessageEdit===g&&e({stagedMessageEdit:null})}catch(e){throw N()&&t().endMessageEditCommit(g.sessionId,g.messageId),e}try{await nH({sessionId:w||``,directory:k,content:n,providerID:r,modelID:i,agent:O,agentMentionName:s,variant:l,inputMode:d,files:A,delivery:p?.delivery,messageID:p?.messageID,ticket:p?.ticket,preserveOptimisticOnAmbiguous:p?.preserveOptimisticOnAmbiguous,onSendConfirmed:p?.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{g&&N()&&t().endMessageEditCommit(g.sessionId,g.messageId)}wH(k,t().availableWorktreesByProject),w&&C(w,k)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await nb(n,r??V.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),xH(yH(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&<.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}}),xH(yH(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>hb(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await hb(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>vb(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await vb(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await bb(e,t)},requestSessionSmartTitle:async e=>{await xb(e)},shareSession:async e=>Cb(e),unshareSession:async e=>wb(e),revertToMessage:async(e,t,n)=>{try{await Zb(e,t,n?.directory)}catch(e){throw await tH(e),e}},editMessagePreservingChanges:async(t,n,r)=>{await $b(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Ze(e),r=Je().find(t=>t.id===e)?.revert?.messageID,i=ft(n,r);if(!i)return;let a=Ft(i.id).find(e=>e.type===`text`),o=a?.text?String(a.text).slice(0,50)+(a.text.length>50?`...`:``):`[No text]`;try{await t().revertToMessage(e,i.id)}catch(e){if(Ut(e))return;throw e}let{toast:s}=await mr(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([16,1,7])),{useI18nStore:c,formatMessage:l}=await mr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-jaP79mqI.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([17,1,6,7,14])),{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 mr(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>Iv);return{unrevertSession:e}},void 0);try{await t(e)}catch(e){throw await tH(e),e}let{toast:n}=await mr(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([16,1,7])),{useI18nStore:r,formatMessage:i}=await mr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-jaP79mqI.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([17,1,6,7,14])),{dictionary:a}=r.getState();n.success(i(a,`chat.revert.toast.restored`));return}let r=Je().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=Ze(e),a=_n(i,r);if(a){try{await t().revertToMessage(e,a.id,{skipRedoPush:!0})}catch(e){if(Ut(e))return;throw e}let{toast:n}=await mr(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([16,1,7])),{useI18nStore:r,formatMessage:i}=await mr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-jaP79mqI.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([17,1,6,7,14])),{dictionary:o}=r.getState();n.success(i(o,`chat.revert.toast.redo`));return}try{await ix(e)}catch(e){throw await tH(e),e}let{toast:o}=await mr(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([16,1,7])),{useI18nStore:s,formatMessage:c}=await mr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-jaP79mqI.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([17,1,6,7,14])),{dictionary:l}=s.getState();o.success(c(l,`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=pH(n),s=++_H;try{let a=i?.directory??t().getDirectoryForSession(n)??V.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await mr(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([16,1,7]));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 ax(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await mr(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([16,1,7]));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 mr(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([16,1,7]));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=pH(n),a=++_H;try{let r=t().getDirectoryForSession(n)??V.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await mr(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([16,1,7]));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 ax(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await mr(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([16,1,7]));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 mr(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([16,1,7]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===a?{forkTransition:null}:e)}},getSessionsByDirectory:e=>{let t=z(e);return t?Ot().filter(e=>aH(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=fH(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?Cw(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:fH(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=t().getDirectoryForSession(e)??void 0,r=Ze(e,n);for(let e=r.length-1;e>=0;--e){let t=r[e];if(t.role!==`user`)continue;let n=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:n,modelID:i,variant:s}}return null},getCurrentAgent:e=>xl.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Ze(e);Je().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=z(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),xH(yH(),{sessionId:n,directory:i}))}}));BA((e,t)=>{$.getState().setCurrentSession(e,t)});var JH=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==JH&&(JH=t,GH(t))}});function YH(e){return e.settingsReturnTo?e.settingsReturnTo:e.activeTab===`settings`?null:{tab:e.activeTab,secondary:e.secondary}}function XH(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function ZH(e){return e.length>1?e.slice(0,-1):[]}function QH(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function $H(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 eU={activeTab:`projects`,secondary:null,settingsReturnTo:null},tU=0,nU=null,rU=e=>{let t=++tU;return nU={generation:t,sessionId:e.sessionId,directory:z(e.directory)??null},t},iU=e=>{let t=nU;return t&&t.generation===tU&&t.sessionId===e.sessionId&&t.directory===(z(e.directory)??null)?(nU=null,`internal`):(nU=null,`external`)},aU=()=>{tU+=1,nU=null},oU=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&z(n)===z(e.directory)?aU():rU(e),t.setCurrentSession(e.sessionId,e.directory??null,{preserveActiveProject:e.preserveActiveProject})},sU=Ee((e,t)=>({...eU,setActiveTab:t=>{aU(),e({activeTab:t,secondary:null,settingsReturnTo:null})},openSettingsFromCurrent:()=>{aU(),e(e=>({activeTab:`settings`,secondary:null,settingsReturnTo:YH(e)}))},restoreSettingsReturnTo:()=>{let n=t().settingsReturnTo;return n?(aU(),e({activeTab:n.tab,secondary:n.secondary,settingsReturnTo:null}),n):null},openSession:t=>{e({secondary:{kind:`chat`,routes:[lU(t,`root`)]}}),oU(t)},pushSession:t=>{e(e=>{let n=lU(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?XH(e.secondary.routes,n):[n]}}}),oU(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=ZH(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=sU.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&oU(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=$H(e.secondary.routes,lU(t,`parent`));return n===e.secondary.routes?e:{secondary:{...e.secondary,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:QH(e.secondary.routes,lU(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=>{aU(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{aU(),Ar.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{aU(),e({secondary:{kind:`instances`}})},pushBtw:n=>{let r=t().secondary;return r?.kind===`chat`&&(e({secondary:{...r,btw:{sessionId:n.sessionId,directory:n.directory??null}}}),!0)},popBtw:()=>e(e=>e.secondary?.kind!==`chat`||!e.secondary.btw?e:{secondary:{kind:`chat`,routes:e.secondary.routes}}),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:()=>{aU(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{aU(),e({...eU})}})),cU=1,lU=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${cU++}`,sessionId:e.sessionId,directory:e.directory??null}),uU=0,dU=()=>(uU+=1,()=>{--uU}),fU=e=>uU>0&&sU.getState().pushBtw(e),pU=e=>{let t=sU.getState().secondary;return t?.kind===`chat`&&t.btw?.sessionId===e.sessionId&&z(t.btw.directory)===z(e.directory)},mU=e=>!Tn()||Ln()?!1:(sU.getState().pushSession(e),!0);export{iz as $,$a,Od as $i,pE as $n,gb as $r,JN as $t,hV as A,Rc as Aa,Xf as Ai,AO as An,OS as Ar,zP as At,HB as B,Ys as Ba,lf as Bi,pD as Bn,vb as Br,Sj as Bt,TV as C,ll as Ca,oh as Ci,_A as Cn,SC as Cr,qF as Ct,SV as D,Gc as Da,wp as Di,PO as Dn,gC as Dr,HP as Dt,CV as E,Oc as Ea,Pm as Ei,ak as En,pC as Er,xF as Et,rV as F,qs as Fa,xf as Fi,bD as Fn,Jx as Fr,cP as Ft,Rz as G,Us as Ga,Vd as Gi,aD as Gn,Xb as Gr,mN as Gt,tB as H,tc as Ha,$d as Hi,nD as Hn,_b as Hr,XN as Ht,bB as I,rc as Ia,ff as Ii,CD as In,qx as Ir,KM as It,rz as J,Jo as Ja,Sd as Ji,tD as Jn,Qy as Jr,mj as Jt,iB as K,Qo as Ka,Bd as Ki,rD as Kn,Jb as Kr,EP as Kt,SB as L,cc as La,Tf as Li,vD as Ln,Kx as Lr,dM as Lt,eV as M,Cc as Ma,Gf as Mi,SO as Mn,kS as Mr,VP as Mt,aV as N,_c as Na,zf as Ni,_O as Nn,oS as Nr,fN as Nt,_V as O,Kc as Oa,pp as Oi,NO as On,XS as Or,BP as Ot,iV as P,xc as Pa,Rf as Pi,mO as Pn,Lx as Pr,hP as Pt,hz as Q,lo as Qa,kd as Qi,hE as Qn,Mb as Qr,WN as Qt,VB as R,sc as Ra,_f as Ri,SD as Rn,cb as Rr,pM as Rt,DV as S,sl as Sa,kh as Si,SA as Sn,LC as Sr,UP as St,wV as T,Dc as Ta,Fm as Ti,Uk as Tn,dC as Tr,eI as Tt,yz as U,Ws as Ua,Qd as Ui,QE as Un,nx as Ur,qN as Ut,uB as V,nc as Va,uf as Vi,iD as Vn,Ab as Vr,yj as Vt,xz as W,Hs as Wa,Zd as Wi,eD as Wn,nb as Wr,pN as Wt,gz as X,Ko as Xa,Cd as Xi,dE as Xn,Kb as Xr,VN as Xt,mz as Y,Zo as Ya,wd as Yi,oD as Yn,xb as Yr,UN as Yt,fz as Z,uo as Za,Ed as Zi,mE as Zn,qb as Zr,HN as Zt,WV as _,hl as _a,Xg as _i,yP as _n,tT as _r,QL as _t,dU as a,K as aa,Sv as ai,_N as an,bi as ao,KT as ar,QR as at,jV as b,dl as ba,Dg as bi,NA as bn,VC as br,sI as bt,kH as c,kl as ca,tv as ci,AN as cn,LT as cr,IR as ct,$ as d,El as da,Kg as di,wN as dn,oT as dr,HR as dt,Dd as ea,py as ei,EN as en,eo,uE as er,oz as et,JV as f,Sl as fa,$g as fi,ON as fn,Ew as fr,kR as ft,GV as g,_l as ga,Ug as gi,YN as gn,Cw as gr,pR as gt,UV as h,xl as ha,Zg as hi,NN as hn,nT as hr,FR as ht,mU as i,_u as ia,Fv as ii,CP as in,xi as io,WT as ir,ez as it,gV as j,Sc as ja,Uf as ji,EO as jn,MS as jr,RP as jt,dV as k,qc as ka,cp as ki,FO as kn,NS as kr,LP as kt,RH as l,Ol as la,ev as li,MN as ln,$w as lr,LR as lt,XV as m,Tl as ma,Yg as mi,_P as mn,aT as mr,jR as mt,pU as n,Yu as na,bb as ni,gP as nn,Xa as no,lE as nr,nz as nt,sU as o,Dl as oa,yv as oi,vN as on,hi as oo,GT as or,ZR as ot,YV as p,Cl as pa,Qg as pi,vP as pn,Tw as pr,NR as pt,pz as q,$o as qa,Ad as qi,$E as qn,$y as qr,hj as qt,fU as r,Ku as ra,Fy as ri,yN as rn,yi as ro,CE as rr,$R as rt,OH as s,Fl as sa,mv as si,xN as sn,sT as sr,qR as st,iU as t,rd as ta,yb as ti,DP as tn,Qa as to,SE as tr,sz as tt,nH as u,Nl as ua,a_ as ui,SN as un,eT as ur,UR as ut,MV as v,pl as va,Cg as vi,LA as vn,rT as vr,eR as vt,EV as w,kc as wa,sh as wi,Wk as wn,lC as wr,$F as wt,AV as x,ul as xa,Bh as xi,OA as xn,IC as xr,lI as xt,kV as y,gl as ya,ag as yi,RA as yn,X as yr,BL as yt,yB as z,oc as za,gf as zi,cD as zn,Gb as zr,fM as zt};
|