@openchambery/web 2.0.2-beta.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AssistantView-nQrigS4V.js → AssistantView-CWviBCAP.js} +3 -3
- package/dist/assets/{DiagramView-DjTaMDNe.js → DiagramView-Cm7xDZ5t.js} +1 -1
- package/dist/assets/MarkdownRenderer-CJ5t5GCJ.js +2 -0
- package/dist/assets/{MarkdownRendererImpl-DyIUIr4N.js → MarkdownRendererImpl-De4VmTtg.js} +1 -1
- package/dist/assets/{MarkstreamRendererImpl-DO9IukOP.js → MarkstreamRendererImpl-B0zZVAuv.js} +1 -1
- package/dist/assets/{MobileDetailNavigation-CsmkM6q9.js → MobileDetailNavigation-BOuvF4sv.js} +1 -1
- package/dist/assets/{MobileShareBridge-WU4cZ2YS.js → MobileShareBridge-Brsf5H1u.js} +1 -1
- package/dist/assets/MobileTabPageHeader-BLlFC_jN.js +2 -0
- package/dist/assets/{MultiRunWindow-X7nbM3XI.js → MultiRunWindow-BUdK_rVf.js} +1 -1
- package/dist/assets/{SettingsView-Z1JssjqY.js → SettingsView-LnqgjCmk.js} +1 -1
- package/dist/assets/{SettingsWindow-BhfyWkL2.js → SettingsWindow-AfOCGfXC.js} +1 -1
- package/dist/assets/{TerminalView-CqxD82fz.js → TerminalView-Csox-OUH.js} +1 -1
- package/dist/assets/{ToolOutputDialog-WgwI-9al.js → ToolOutputDialog-DYnLpM-I.js} +1 -1
- package/dist/assets/{appThemeRegistry-BoxYSKnf.js → appThemeRegistry-Dh7evuFT.js} +1 -1
- package/dist/assets/{fileMentionTouchSelection-Du5yXyiw.js → fileMentionTouchSelection-DGcKhwNg.js} +1 -1
- package/dist/assets/{gitApi-0zlv_uGd.js → gitApi-DJiNTnOw.js} +1 -1
- package/dist/assets/{insertionBoundaries-DEmm2KEx.js → insertionBoundaries-BZ4y7_dO.js} +1 -1
- package/dist/assets/{main-D4XFK0Ul.js → main-C5K1b2p3.js} +4 -4
- package/dist/assets/{main-BTIowmls.js → main-D10YD-D5.js} +2 -2
- package/dist/assets/{mcpQueries-Ct1GVJ1_.js → mcpQueries-om4qg52L.js} +1 -1
- package/dist/assets/{miniChat-B076IsbD.js → miniChat-YtAlWDXn.js} +2 -2
- package/dist/assets/{mobile-Ch9Y067K.js → mobile-Bix-1h3p.js} +2 -2
- package/dist/assets/{multirun-DU_s2vv-.js → multirun-Cl0qI_UR.js} +1 -1
- package/dist/assets/{projectMeta-Br-6p4Ek.js → projectMeta-ClpG1g5k.js} +1 -1
- package/dist/assets/{renderElectronMiniChatApp-2SCJo2V5.js → renderElectronMiniChatApp-knc9ALFK.js} +2 -2
- package/dist/assets/{renderMobileApp-So0sDER7.js → renderMobileApp-DvPGytV9.js} +4 -4
- package/dist/assets/{runtimeConfig-BNgQOf6h.js → runtimeConfig-CkGIFPXV.js} +1 -1
- package/dist/assets/{runtimeEndpointReset-CJh46Mcc.js → runtimeEndpointReset-BFrS_Yci.js} +1 -1
- package/dist/assets/{sessionChangeSummary-DLDfqKFw.js → sessionChangeSummary-DYAsA6Bi.js} +1 -1
- package/dist/assets/{sessionLookup-DSwSyWLE.js → sessionLookup-Bc8f5Scn.js} +1 -1
- package/dist/assets/{useAppFontEffects-F8byXxse.js → useAppFontEffects-CU_CeyJe.js} +5 -5
- package/dist/assets/{useDesktopWindowControlsLayout-CLQU_f5A.js → useDesktopWindowControlsLayout-D5pQxhEz.js} +1 -1
- package/dist/assets/{useEffectiveDirectory-CePbms3i.js → useEffectiveDirectory-Cn5YmSaO.js} +1 -1
- package/dist/assets/{useMobileNavigationStore-Bjq9HvrR.js → useMobileNavigationStore-Bww4SOiv.js} +19 -19
- package/dist/assets/{useSessionAutoCleanup-DdiIB8Vv.js → useSessionAutoCleanup--P_vAP6v.js} +1 -1
- package/dist/assets/{useWorkerHighlightedLines-CKjzXbrt.js → useWorkerHighlightedLines-DOkM0xy4.js} +1 -1
- package/dist/index.html +2 -2
- package/dist/mini-chat.html +2 -2
- package/dist/mobile.html +2 -2
- package/package.json +1 -1
- package/server/lib/session-index/DOCUMENTATION.md +10 -4
- package/server/lib/session-index/service.js +19 -2
- package/server/lib/session-index/service.test.js +52 -0
- package/server/lib/session-index/sync-runtime.js +3 -17
- package/server/lib/session-index/sync-runtime.test.js +29 -0
- package/server/lib/session-metadata/DOCUMENTATION.md +6 -4
- package/dist/assets/MarkdownRenderer-DejwwmAe.js +0 -2
- package/dist/assets/MobileTabPageHeader-8v-HjesS.js +0 -2
package/dist/assets/{useMobileNavigationStore-Bjq9HvrR.js → useMobileNavigationStore-Bww4SOiv.js}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mcpQueries-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mcpQueries-om4qg52L.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-CwHY3fDg.js","assets/vendor-zustand-DzRqcymP.js","assets/vendor-base-ui-CnHfUmDN.js","assets/useUIStore-DNkuudYO.js","assets/vendor-react-DLPElpoQ.js","assets/vendor-pathe-vBmvQE8f.js","assets/vendor-tanstack-query-core-BWz0ose6.js","assets/platform-Bxaalnc8.js","assets/vendor-opencode-client-MF2GBrFx.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/vendor-tanstack-react-query-D7pys_c9.js","assets/vendor-sonner-DVzioF3d.js","assets/store-l_X_jQNz.js"])))=>i.map(i=>d[i]);
|
|
2
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{At as y,B as b,Bt as x,Ct as S,D as C,Dt as w,Et as T,F as E,I as D,K as O,Kt as k,L as A,Lt as j,Mt as M,N,Nt as ee,On as te,Ot as ne,Pt as re,Q as ie,R as ae,Rt as oe,St as se,Tt as P,V as F,Vt as ce,at as le,bt as ue,ct as de,d as I,dt as fe,f as L,g as pe,gt as me,i as he,it as R,jt as ge,nn as _e,o as ve,on as ye,ot as be,r as xe,rn as z,rt as Se,st as Ce,tt as we,v as Te,xt as Ee,z as De,zt as Oe}from"./persistence-CwHY3fDg.js";import{a as ke,i as Ae,o as je,r as Me}from"./vendor-zustand-DzRqcymP.js";import{nt as Ne,rt as Pe}from"./vendor-base-ui-CnHfUmDN.js";import{$n as Fe,$r as Ie,$t as Le,Ai as Re,An as ze,Ar as Be,Bi as Ve,Bn as He,Br as Ue,Bt as We,Cr as Ge,Ct as Ke,Di as qe,Dr as Je,Er as Ye,Fi as Xe,Fn as Ze,Ft as Qe,Gn as $e,Gr as et,Gt as tt,Hn as nt,Hr as rt,Ht as it,Ii as at,In as ot,Ir as st,It as ct,Jn as lt,Jr as ut,Jt as dt,Kn as ft,Kr as pt,Kt as mt,Ln as ht,Lr as gt,Lt as _t,Mi as vt,Mn as yt,Mr as bt,Ni as xt,Nn as St,Nr as Ct,Nt as B,Oi as wt,On as Tt,Or as Et,Ot as Dt,Pi as Ot,Pn as kt,Pt as At,Qn as jt,Qr as Mt,Qt as Nt,R as Pt,Ri as Ft,Rn as It,Rr as Lt,Rt,Si as zt,Sn as Bt,Sr as Vt,St as Ht,Un as Ut,Ur as Wt,Ut as Gt,Vn as Kt,Vr as qt,Vt as Jt,Wn as Yt,Wr as Xt,Wt as Zt,Xn as Qt,Xr as $t,Yn as en,Yr as tn,Zn as nn,Zr as rn,Zt as an,_i as on,_r as sn,ai as cn,an as ln,ar as un,ci as dn,cr as fn,di as pn,dn as mn,dr as hn,ei as gn,er as _n,fi as vn,fr as yn,gi as bn,gn as xn,gr as Sn,hi as Cn,hn as wn,hr as Tn,ii as En,in as Dn,ir as On,ji as kn,jn as An,jr as V,ki as jn,li as Mn,ln as Nn,mi as Pn,mn as Fn,mr as In,n as Ln,ni as Rn,nr as zn,oi as Bn,or as Vn,pi as Hn,pr as Un,qn as Wn,qr as Gn,r as Kn,ri as qn,rn as Jn,rr as Yn,si as Xn,sn as Zn,sr as Qn,t as $n,ti as er,ui as tr,un as nr,ur as rr,vn as ir,vr as ar,wi as or,wr as sr,xi as cr,xr as H,yi as lr,yr as ur,zi as dr,zn as fr,zr as pr,zt as mr}from"./platform-Bxaalnc8.js";import{b as hr,n as gr,x as _r}from"./useUIStore-DNkuudYO.js";import{n as vr}from"./vendor-react-DLPElpoQ.js";import{i as yr,n as br,r as xr,t as Sr}from"./vendor-pathe-vBmvQE8f.js";import{a as Cr,n as wr,o as Tr}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{r as Er}from"./vendor-tanstack-query-core-BWz0ose6.js";import{a as Dr,l as Or,n as kr,o as Ar,s as jr,t as Mr}from"./vendor-tanstack-react-query-D7pys_c9.js";import{r as Nr}from"./vendor-sonner-DVzioF3d.js";import{a as Pr,n as Fr}from"./vendor-reactuses-core-Dq5ocTF8.js";import{d as Ir,f as Lr,t as Rr}from"./button-CcOoDLE1.js";import{i as zr,t as Br}from"./store-l_X_jQNz.js";import{i as Vr}from"./useAssistantUIStore-CXj8c_tt.js";import{a as Hr,i as Ur,n as Wr,o as Gr,r as Kr,s as qr,t as Jr}from"./vendor-zod-Dzk5kdUU.js";import{t as Yr}from"./vendor-fuse.js-DB5wDJbI.js";var Xr=1048576,Zr=new TextEncoder,Qr=e=>e instanceof Error&&e.name===`AbortError`,$r=e=>Qr(e)?e:new DOMException(`The operation was aborted.`,`AbortError`),ei=async e=>{try{await e?.cancel()}catch{}},ti=async e=>{try{await e.cancel()}catch{}},ni=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||Qr(e)?$r(e):Error(`SSE request failed`)}if(!r.ok)throw await ei(r.body),Error(`SSE response failed`);if(!/^text\/event-stream(?:\s*;|\s*$)/i.test(r.headers.get(`content-type`)??``))throw await ei(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 ti(i),i.releaseLock(),t.signal?.aborted||Qr(e)?$r(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
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>Xr)throw Error(`SSE response exceeds buffer limit`);u=i,l.push(a)}},h=e=>{if(e.length===0)return;o+=e,s+=Zr.encode(e).byteLength;let t=o===`data`?4:o.startsWith(`data:`)?5+ +(o.charAt(5)===` `):0;if(u+s-t>Xr)throw Error(`SSE response exceeds buffer limit`)},g=e=>{let t=0;c&&(c=!1,e.charAt(0)===`
|
|
4
4
|
`&&(t=1));for(let n=t;n<e.length;n+=1){let r=e.charAt(n);(r===`\r`||r===`
|
|
5
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||Qr(e)?$r(e):e instanceof Error&&e.message===`SSE response exceeds buffer limit`?e:Error(`SSE response read failed`)}finally{d||await ti(i),i.releaseLock()}},ri=null,ii=null,ai=null,oi=0,si=null,ci=new Set,li=new Map,ui=e=>e===`session-index-changed`||e===`message-queue-changed`||e===`assistants-changed`,di=()=>{li.clear()},fi=e=>li.get(e),pi=(e,t)=>{let n=li.get(e);(n===void 0||t>n)&&li.set(e,t)},mi=3e4,hi=45e3,gi=()=>{ai&&=(clearTimeout(ai),null)},_i=()=>{if(ii||ci.size===0)return;let e=Math.min(1e3*2**Math.min(oi,5),mi);ii=setTimeout(()=>{ii=null,oi+=1,Ci()},e)},vi=()=>{gi();let e=ri;ri=null,e?.controller.abort()},yi=e=>{if(gi(),ci.size===0||ri!==e)return;let t=setTimeout(()=>{ri===e&&ai===t&&(ai=null,vi(),_i())},hi);ai=t},bi=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}},xi=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}:{}}},Si=e=>{let t=xi(e);if(t){t.type===`event-stream-ready`&&(oi=0),ui(t.type)&&`revision`in t&&pi(t.type,t.revision);for(let e of ci)try{e(t)}catch{}}},Ci=()=>{if(typeof window>`u`||ci.size===0||ri)return;let e={controller:new AbortController};ri=e,ni(`/api/openchamber/events`,{signal:e.controller.signal,onOpen:()=>{ri===e&&yi(e)},onActivity:()=>{ri===e&&yi(e)},onMessage:t=>{if(ri!==e)return;let n=bi(t);n&&Si(n)}}).then(()=>{ri===e&&(ri=null,gi(),_i())},()=>{ri===e&&(ri=null,gi(),e.controller.signal.aborted||_i())})},wi=()=>{si||typeof window>`u`||(si=s(()=>{di(),ii&&=(clearTimeout(ii),null),vi(),oi=0,Ci()}))},Ti=()=>{si?.(),si=null},Ei=e=>(ci.add(e),wi(),Ci(),()=>{ci.delete(e),ci.size===0&&(di(),ii&&=(clearTimeout(ii),null),oi=0,vi(),Ti())}),Di=!1,Oi=Promise.resolve(),ki=null,Ai=()=>{Di||(Di=!0,Oi=new Promise(e=>{ki=e}))},ji=async()=>Oi,Mi=()=>{if(!Di)return;Di=!1;let e=ki;ki=null,e?.()},Ni=`openchamber_input_draft_metadata_v1`,Pi=`openchamber_input_draft_metadata_migration_v1`,Fi=`openchamber_chat_input_draft_`,Ii=`openchamber_chat_confirmed_mentions_`,Li=()=>({ok:!1,error:{code:`unavailable`}}),Ri=()=>({ok:!1,error:{code:`cancelled`}}),zi=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),Bi=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),Vi=(e,t)=>Object.keys(e).every(e=>t.includes(e)),Hi=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,Ui=e=>typeof e==`string`&&e.length>0,Wi=e=>({read:async t=>{if(!e)return Li();try{return{ok:!0,value:e.getItem(t)}}catch(e){return zi(e)}},write:async(t,n)=>{if(!e)return Li();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return zi(e)}},remove:async t=>{if(!e)return Li();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return zi(e)}},keys:async()=>{if(!e)return Li();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 zi(e)}}}),Gi=()=>{try{return Wi(typeof window>`u`?null:window.localStorage)}catch{return Wi(null)}},Ki=(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}},qi=async e=>{let t=await e.keys();if(!t.ok)return t;let n=new Set;for(let e of t.value)e.startsWith(Fi)&&n.add(e.slice(29)),e.startsWith(Ii)&&n.add(e.slice(36));let r=[];for(let i of n){let n=`${Fi}${i}`,a=`${Ii}${i}`,[o,s]=await Promise.all([e.read(n),e.read(a)]);if(!o.ok)return o;if(!s.ok)return s;r.push(Ki(i,o.value,s.value,[n,a].filter(e=>t.value.includes(e))))}return{ok:!0,value:r}},Ji=e=>{if(!(!Bi(e)||!Vi(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]}},Yi=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&Ui(t[0])&&(t[1]===`session`||t[1]===`draft`)&&Ui(t[2])&&e===JSON.stringify(t)}catch{return!1}},Xi=e=>{if(!Bi(e)||!Vi(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)&&!Ui(e.claimedTransportIdentity))&&!(r&&!n)&&!(t&&(!n||!r)))return{complete:t,claimedTransportIdentity:e.claimedTransportIdentity,captured:n,markerCommitted:r,cleanupComplete:t}},Zi=e=>{if(!Bi(e)||!Vi(e,[`version`,`drafts`,`tombstones`,`migration`,`legacy`])||e.version!==1||!Bi(e.drafts)||!Bi(e.tombstones)||!Bi(e.legacy)||!Vi(e.legacy,[`new`,`entries`])||!Bi(e.legacy.entries))return;let t=Xi(e.migration);if(!t)return;let n={};for(let[t,r]of Object.entries(e.drafts)){let e=ee(r);if(!e||t!==P(e.key))return;n[t]=e}let r={};for(let[t,n]of Object.entries(e.tombstones)){if(!Yi(t)||!Hi(n))return;r[t]=n}let i={};for(let[t,n]of Object.entries(e.legacy.entries)){let e=Ji(n);if(!e||t!==e.suffix||t===`new`)return;i[t]=e}let a=e.legacy.new===void 0?void 0:Ji(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}}},Qi=(e=``)=>({version:1,drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:e,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),$i=e=>{try{return{ok:!0,value:JSON.stringify(e)}}catch{return{ok:!1,error:{code:`serialization`}}}},ea=async e=>{let t=await e.read(Ni);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:null};try{let e=Zi(JSON.parse(t.value));return e?{ok:!0,value:e}:{ok:!1,error:{code:`corrupt`}}}catch{return{ok:!1,error:{code:`corrupt`}}}},ta=async(e,t)=>{let n=Zi(t);if(!n)return{ok:!1,error:{code:`corrupt`}};let r=$i(n);return r.ok?e.write(Ni,r.value):r},na=e=>Bi(e)&&Vi(e,[`version`,`claimedTransportIdentity`])&&e.version===1&&Ui(e.claimedTransportIdentity)?{version:1,claimedTransportIdentity:e.claimedTransportIdentity}:void 0,ra=e=>$i({version:1,claimedTransportIdentity:e}),ia=(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}}},aa=e=>[...new Set([e.legacy.new,...Object.values(e.legacy.entries)].flatMap(e=>e?.keys??[]))],oa=new WeakMap,sa=e=>{let t=oa.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=Zi(t);return n?i?a(async()=>i?ta(e,n):Li()):Promise.resolve(Li()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},migrate:(t,n={})=>{if(r)return r;let o=a(async()=>{let r=await ea(e);if(!r.ok)return r;let a=r.value??Qi(),o=i&&(n.persistenceEnabled??!0);if(!a.migration.captured){let n=await qi(e);if(!n.ok)return n;if(!o)return{ok:!0,value:ia(a,n.value,``)};if(a=ia(a,n.value,t),!i)return{ok:!0,value:a};let r=await ta(e,a);if(!r.ok)return r}if(!i||!(n.persistenceEnabled??!0)){let t=await qi(e);return t.ok?{ok:!0,value:a}:t}let s=await e.read(Pi);if(!s.ok)return s;if(s.value!==null)try{let t=na(JSON.parse(s.value));if(!t)return{ok:!1,error:{code:`corrupt`}};if(t.claimedTransportIdentity!==a.migration.claimedTransportIdentity){let t=ra(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Pi,t.value);if(!n.ok)return n}}catch{return{ok:!1,error:{code:`corrupt`}}}else{let t=ra(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Pi,t.value);if(!n.ok)return n}if(a.migration.cleanupComplete)return{ok:!0,value:a};for(let t of aa(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 ta(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 oa.set(e,o),o},ca=e=>{let t=sa(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=Zi(e);return t?n?new Promise(e=>{i.push({snapshot:t,resolve:e}),s()}):Promise.resolve(Li()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},cancelPending:()=>{let e=i;i=[],e.forEach(({resolve:e})=>e(Ri())),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(Ri()))}await(r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve()),await t.setEnabled(e),await t.flush()}}},la=`openchamber-input-drafts`,ua=1,da=`blobs`,fa=`blobRefs`,pa=class extends Error{code;constructor(e){super(e),this.code=e}},ma=e=>({ok:!1,error:{code:e instanceof pa?e.code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota-exceeded`:e instanceof DOMException&&e.name===`AbortError`?`transaction-aborted`:`transaction-failed`}}),ha=e=>{if(!(e instanceof Blob)&&!ne(e))throw new pa(`invalid-value`)},ga=e=>{if(!e)throw new pa(`invalid-value`)},_a=(e,t)=>({id:S(e),blobID:t,transportIdentity:e.transportIdentity,ownerKind:e.owner.kind,ownerID:e.owner.ownerID}),va=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}`},ya=async(e,t)=>(e.fingerprint??await va(e.value))===t,ba=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)}},xa=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}},Sa=(e,t)=>{let n=xa(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))},Ca=(e=wa())=>{let t=async(t,n)=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=await e.getBlobRef(S(t));return!r||n!==void 0&&r.blobID!==n?!1:(await e.deleteBlobRef(r.id),await ba(e),(await e.getAllBlobRefs()).some(e=>e.blobID===r.blobID)||await e.deleteBlob(r.blobID),!0)})}}catch(e){return ma(e)}};return{put:async(t,n)=>{try{ga(t),ha(n);let r=await va(n);return await e.transaction(async e=>{let i=await e.getBlob(t);if(i&&!await ya(i,r))throw new pa(`blob-id-conflict`);i||await e.putBlob({id:t,value:n,refCount:0,fingerprint:r})}),{ok:!0,value:void 0}}catch(e){return ma(e)}},putAndRetain:async(t,n,r)=>{try{ga(n),ha(r);let i=await va(r);return await e.transaction(async e=>{let a=S(t),o=await e.getBlobRef(a);if(o&&o.blobID!==n)throw new pa(`blob-id-conflict`);let s=await e.getBlob(n);if(s&&!await ya(s,i))throw new pa(`blob-id-conflict`);s||await e.putBlob({id:n,value:r,refCount:0,fingerprint:i}),o||await e.putBlobRef(_a(t,n)),await ba(e)}),{ok:!0,value:void 0}}catch(e){return ma(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 ma(e)}},readReference:async t=>{try{return{ok:!0,value:(await e.transaction(e=>e.getBlobRef(S(t))))?.blobID}}catch(e){return ma(e)}},retain:async(t,n)=>{try{return ga(n),await e.transaction(async e=>{let r=await e.getBlobRef(S(t));if(r&&r.blobID!==n)throw new pa(`blob-id-conflict`);if(!await e.getBlob(n))throw new pa(`missing-blob`);r||await e.putBlobRef(_a(t,n)),await ba(e)}),{ok:!0,value:void 0}}catch(e){return ma(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)Sa(a,n)&&t.get(i)!==a.blobID&&(await e.deleteBlobRef(i),r.push(i));for(let[r,s]of t){let t=xa(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 ba(e,!0),{released:r,repaired:i,missing:a}})}}catch(e){return ma(e)}},reconcileOwnerReferences:async(t,n)=>{let r=new Map;for(let[e,i]of n)r.set(S({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 ba(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 ma(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 ma(e)}}}},wa=()=>({transaction:async e=>{let t=await Ta(),n=t.transaction([da,fa],`readwrite`),r=n.objectStore(da),i=n.objectStore(fa),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()}}}),Ta=()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(new pa(`database-unavailable`));return}let n=indexedDB.open(la,ua),r=!1,i=()=>{r||(r=!0,t(new pa(`database-unavailable`)))};n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(da)||e.createObjectStore(da,{keyPath:`id`}),e.objectStoreNames.contains(fa)||e.createObjectStore(fa,{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}),Ea=()=>({drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:``,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),Da=e=>({version:1,drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}),Oa=e=>{let t=Da(e),n=ka(JSON.parse(JSON.stringify(t)));return{drafts:n.drafts,tombstones:n.tombstones,migration:n.migration,legacy:n.legacy}},ka=e=>{let t=Zi(e);if(!t)throw Error(`invalid draft snapshot`);return t},Aa=e=>e instanceof Map?[...e.entries()]:Object.entries(e??{}),ja=e=>typeof e==`string`?e:P(e),Ma=[`session`,`draft`,`surface`],Na=e=>({transportIdentity:e.transportIdentity,owner:{kind:e.owner.kind,ownerID:e.owner.ownerID},attachmentOccurrenceRefID:e.attachmentOccurrenceRefID}),Pa=e=>JSON.parse(JSON.stringify(e)),Fa=e=>e.phase===`metadata`?{phase:`metadata`,error:{code:e.error.code}}:{phase:`blob`,error:{...e.error},...e.reference?{reference:Na(e.reference)}:{}},Ia=e=>({status:e.status,keys:[...e.keys],errors:e.errors.map(Fa),cleanupErrors:e.cleanupErrors.map(Fa)}),La=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,Ra=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&Ma.includes(t[1])&&typeof t[2]==`string`&&t[0].length>0&&t[2].length>0}catch{return!1}},za=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:Pa(t)}]:[]),Ba=e=>{let t=new Map;for(let n of Object.values(e))for(let e of za(n))t.set(S(e.reference),e);return t},Va=(e,t)=>({phase:`blob`,error:{...e},...t?{reference:Na(t)}:{}}),Ha=(e,t=[])=>({status:e,keys:t,errors:[],cleanupErrors:[]}),Ua=e=>e?.attachment.locator.kind===`blob`?e.attachment.locator.blobID:``,Wa=(e,t,n={})=>{let r=Ea(),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?Ia(e):e)},u=async(t=r.drafts)=>{let n=[],i=new Map([...Ba(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(Na(r.reference),r.expectedBlobID);a.ok?c.delete(t):n.push(Va(a.error,r.reference))}return n},d=async(t,n,r,i)=>{let o=Na(t),s=await e.releaseIfMatches(o,n);s.ok||(c.set(S(o),{reference:Na(o),expectedBlobID:n,generation:a,reason:i}),r.push(Va(s.error,o)))},f=async(t,n)=>{let r=t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,i=Na(t.reference),a=Pa(t.attachment),o=await e.readReference(i);if(!o.ok)return{acquired:!1,error:Va(o.error,i)};if(o.value&&o.value!==r)return{acquired:!1,error:Va({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:Va(t.error,i)};let o=await n?.(Na(i),Pa(a));if(o===void 0)return{acquired:!1,error:Va({code:`runtime-value-missing`},i)};let s=await e.putAndRetain(i,r,o);return s.ok?{acquired:!0}:{acquired:!1,error:Va(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:Va(t.error,i)}}if(s.error.code!==`missing-blob`)return{acquired:!1,error:Va(s.error,i)};let c=await n?.(Na(i),Pa(a));if(c===void 0)return{acquired:!1,error:Va({code:`runtime-value-missing`},i)};let l=await e.putAndRetain(i,r,c);return l.ok?{acquired:!0}:{acquired:!1,error:Va(l.error,i)}};return{seed:t=>l(async()=>{if(!i)return Ha(`disabled`);if(o)return{...Ha(`failed`),errors:[Va({code:`invalid-record`})]};let n;try{if(!t)n=Ea();else{let e=ka(JSON.parse(JSON.stringify(t)));n={drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}}}catch{return{...Ha(`failed`),errors:[Va({code:`invalid-record`})]}}let a=Ba(n.drafts),s=await e.reconcileReferences(new Map([...a].map(([e,t])=>[e,Ua(t)])),{ownerKinds:Ma});return s.ok?(r=n,o=!0,{...Ha(`committed`),errors:s.value.missing.map(e=>Va({code:`missing-blob`},a.get(e)?.reference))}):{...Ha(`failed`),errors:[Va(s.error)]}}),commit:e=>{let n=[...Aa(e.drafts).map(([e])=>e),...(e.delete??[]).map(ja)];return i?l(async()=>{if(!o)return Ha(`unseeded`,n);if(!i)return Ha(`disabled`,n);let s=a,c=[],l=Oa(r),p=Aa(e.drafts),m=Aa(e.tombstones),h=(e.delete??[]).map(ja);if(p.some(([e,t])=>!Ra(e)||!La(t.revision))||m.some(([e,t])=>!Ra(e)||!La(t))||h.some(e=>!Ra(e))||new Set(p.map(([e])=>e)).size!==p.length||m.some(([e])=>p.some(([t])=>t===e)))return{...Ha(`failed`,n),errors:[Va({code:`invalid-record`})]};try{for(let[e,t]of p){let n=ee(t);if(!n||e!==P(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=ka(Da(l));l.drafts=t.drafts,l.tombstones=t.tombstones,l.migration=t.migration,l.legacy=t.legacy}catch{return{...Ha(`failed`,n),errors:[Va({code:`invalid-record`})],cleanupErrors:c}}if(!await e.isCurrent())return Ha(`stale`,n);let g=Ba(r.drafts),_=Ba(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,Ua(_.get(S(e))),c,`acquire-failed`);return{...Ha(`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,Ua(_.get(S(e))),c,`stale`);return{...Ha(`stale`,n),cleanupErrors:c}}if(!i||s!==a){for(let e of v.reverse())await d(e,Ua(_.get(S(e))),c,`disabled`);return{...Ha(`disabled`,n),cleanupErrors:c}}let y=await t.persist(Da(l));if(!y.ok){for(let e of v.reverse())await d(e,Ua(_.get(S(e))),c,`metadata-failed`);return{...Ha(`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{...Ha(`committed`,n),cleanupErrors:c}}):Promise.resolve(Ia(Ha(`disabled`,n)))},reconcile:()=>l(async()=>{if(!o)return Ha(`unseeded`);if(!i)return Ha(`disabled`);let t=await u(),n=new Map([...Ba(r.drafts)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``])),a=await e.reconcileReferences(n,{ownerKinds:Ma}),s=a.ok?a.value.missing.map(e=>Va({code:`missing-blob`},Ba(r.drafts).get(e)?.reference)):[Va(a.error)];return{status:a.ok?`committed`:`failed`,keys:[],errors:s,cleanupErrors:t}}),retryCleanup:()=>l(async()=>({...Ha(`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}}},Ga=`openchamber-composer-reference-draft`,Ka=`openchamber-pasted-text-draft`,qa=e=>Array.from(e).length,Ja=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),Ya=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,Xa=(e,t)=>{let n=[],r=[],i=0;for(let a=0;a<Math.min(t.length,ue.referenceCount);a+=1){let o=t[a];if(!(!Ja(o)||!Ya(o.id,ue.idLength)||!Ya(o.token,ue.displayLength)||typeof o.text!=`string`||o.text.length>ue.pastePayloadLength||typeof o.characterCount!=`number`||!Number.isSafeInteger(o.characterCount)||o.characterCount!==qa(o.text)||typeof o.index!=`number`||!Number.isSafeInteger(o.index)||o.index<1))for(let t=e.indexOf(o.token);t>=0&&n.length<ue.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>ue.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)},Za=e=>{try{let t=JSON.parse(e);if(!Ja(t)||typeof t.text!=`string`)return{text:e,references:[]};if(t.type===Ga)return(t.version===2?ge(t.text,t.references):void 0)??{text:t.text,references:[]};if(t.type===Ka){let e=t.version===1&&Array.isArray(t.references)?Xa(t.text,t.references):[];return ge(t.text,e)??{text:t.text,references:[]}}}catch{}return{text:e,references:[]}},Qa=`file://`,$a=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(`/`)},eo=e=>{let t=e.replace(/\\/g,`/`).trim();return t.toLowerCase().startsWith(Qa)?t:`${Qa}${$a(t)}`},to=(e,t)=>`${e}\u0000${t}`,no=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)}),ro=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)},io=(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,ao=e=>({version:1,key:e,revision:1,text:``,attachments:[],syntheticParts:[],mentions:[]}),oo=(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}),so=((e={})=>{let t=e.sink??Gi(),n=e.repository??sa(t),r=e.coordinator??ca(t),i=e.blobStore??Ca(),a=e.durability??Wa(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,x,S=new Set,C=new Map,E=new Set;return ke()((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=>ee(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)),te=(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))}}},re=()=>e.createID?.()??le(),ie=async(e,t)=>{let n=t instanceof File?t:new File([t],e.filename,{type:e.mimeType});return{id:e.attachmentID,file:n,dataUrl:typeof t==`string`?t:await no(n),mimeType:e.mimeType,filename:e.filename,size:e.size,source:e.source,...e.serverPath?{serverPath:e.serverPath}:{},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource?{vscodeSource:e.vscodeSource}:{}}},ae=e=>{let t=e.errors[0]??e.cleanupErrors[0];return t?.phase===`metadata`||t?.phase===`blob`&&[`blob-id-conflict`,`database-unavailable`,`invalid-value`,`missing-blob`,`quota-exceeded`,`transaction-aborted`,`transaction-failed`].includes(t.error.code)?t.error.code:`unavailable`},oe=(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=>S.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=>S.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=>S.add(e)),i&&t(e=>{let t={...e.draftPersistence};for(let e of f){if((o.get(e)??0)!==u.get(e))continue;let r=d.get(e);if(n.status===`committed`)t[e]={status:`saved`,revision:r};else if(n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)continue;else t[e]={status:`error`,revision:r,errorCode:ae(n)}}let r={...e.draftAttachmentPersistence};for(let e of f){if((o.get(e)??0)!==u.get(e))continue;let t=d.get(e);r[e]=n.status===`committed`&&n.cleanupErrors.length===0?{status:`saved`,revision:t}:n.status===`failed`||n.cleanupErrors.length>0?{status:`error`,revision:t,errorCode:ae(n)}:r[e]??{status:`idle`,revision:t}}return{draftPersistence:t,draftAttachmentPersistence:r}}),n})();return p.add(x),x.then(()=>p.delete(x),()=>p.delete(x)),x},se=e=>{let n=r(),i=Object.fromEntries(e.flatMap(e=>{let t=n.drafts[e];return t?[[e,{status:`saving`,revision:t.revision}]]:[]}));Object.keys(i).length&&t(e=>({draftPersistence:{...e.draftPersistence,...i}}))},F=()=>{h&&clearTimeout(h),h=void 0;let e=[...m];m.clear();let t=g;return g=void 0,e.length?oe(e,t).then(()=>void 0):Promise.resolve()},ce=e=>{if(!r().persistenceEnabled){S.add(e);return}m.add(e),se([e]),!h&&(g=A(),h=setTimeout(()=>{F()},40))},ue=e=>{let t=[...e];return t.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),oe(t)},de=(e,n,i,a=`immediate`)=>{let o=P(e),s=r().drafts[o];if(!s||i!==void 0&&s.revision!==i)return;let c=k(n(s));if(!(!c||P(c.key)!==o))return D(o),t(e=>({drafts:{...e.drafts,[o]:c},...te(e,o,c)})),a===`deferred`?ce(o):ue([o]),c},I=e=>e?Ee(e):void 0,fe=(e=[])=>JSON.parse(JSON.stringify(e)),L=(e,t,n,r=!1,i=!1)=>({status:e,...I(n)?{record:I(n)}:{},errors:fe(t?.errors),cleanupErrors:fe(t?.cleanupErrors),current:r,durable:i}),pe=(e,t,n,r,i=!1,a=!1)=>({status:e,errors:fe(t?.errors),cleanupErrors:fe(t?.cleanupErrors),current:i,durable:a,source:I(n),destination:I(r)}),me=e=>e.status,he=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},ge=async(e,t)=>{let n={},i=r().draftAttachmentViews[P(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`&&ne(i[r.attachmentRefID].dataUrl)?i[r.attachmentRefID].dataUrl:void 0);if(r.locator.kind===`url`&&e!==void 0&&(e!==r.locator.url||!ne(e))||r.locator.kind===`blob`&&e!==void 0&&!(e instanceof Blob)&&!(typeof e==`string`&&ne(e)))return;e!==void 0&&(n[r.attachmentRefID]=await ie(r,e))}return n},_e=e=>e?P(e):`legacy-unowned`,ve=e=>C.get(e)??0,ye=e=>{C.set(e,ve(e)+1)},be=(e,n,r=!1)=>{r&&ye(e),t(t=>{let r=n(t.attachmentBuckets[e]??[]);return{attachmentBuckets:{...t.attachmentBuckets,[e]:r},..._e(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=P(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`&&!he(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(!he(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 ge(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(me(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=Ee(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:ae(h)}:{status:`saved`,revision:v.revision}}:R(e.draftAttachmentPersistence,n)})),L(_?`committed`:`stale`,h,v,_,!0)):L(`failed`,h)},deleteDraftSnapshot:async e=>{let n=P(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(!he(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(!he(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(me(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=P(e.source),i=P(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 pe(`stale`,void 0,l,u);if(!he(e.expectedSourceRevision))return pe(`failed`,void 0,l,u);if(!l||l.revision!==e.expectedSourceRevision||u)return pe(`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 pe(`failed`,void 0,l,u);let h=Math.max(l.revision+1,m+1);if(!he(h))return pe(`failed`,void 0,l,u);let g=k(e.disposition===`preserve`?{...l,key:e.destination,revision:h}:{...ao(e.destination),revision:h});if(!g)return pe(`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 pe(me(_),_,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),x=Ee(g);if(!x)return pe(`failed`,_,l,u);if(b&&!v&&!y)return pe(`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]=x,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:x.revision}},c=R(c,i),l=R(l,i),u={...R(u,i),[i]:_.cleanupErrors.length?{status:`error`,revision:x.revision,errorCode:ae(_)}:{status:`saved`,revision:x.revision}},b&&v&&e.disposition===`preserve`&&(c={...c,[i]:t.draftAttachmentViews[n]??{}},l={...l,[i]:t.draftMissingAttachmentRefIDs[n]??[]}))):(o=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 S=v&&y&&b;return pe(S?`committed`:`stale`,_,l,g,S,!0)},flushDraftPersistence:async()=>{for(await F();p.size;)await Promise.all([...p]);await a.flush()},ensureDraft:e=>{let n=P(e),i=r().drafts[n];if(i)return i;let a=k({...ao(e),revision:(r().tombstones[n]??0)+1});if(!a)throw Error(`Invalid empty draft`);return D(n),t(e=>({drafts:{...e.drafts,[n]:a}})),ue([n]),a},getDraft:e=>r().drafts[P(e)],setDraftText:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return de(e,e=>({...e,revision:e.revision+1,text:t,mentions:e.mentions.filter(e=>e.range.end<=t.length&&t.slice(e.range.start,e.range.end)===`@${e.value}`),composerReferences:[]}),n.revision,`deferred`)??n},setDraftComposerDocument:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return r().setDraftComposerState(e,{document:t,mentions:n.mentions})},setDraftComposerState:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return de(e,e=>({...e,revision:e.revision+1,text:t.document.text,composerReferences:t.document.references,mentions:t.mentions}),n.revision,`deferred`)},replaceDraft:(e,t,n)=>de(e,e=>({version:1,key:e.key,revision:e.revision+1,text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}}),t),setDraftMentions:(e,t)=>de(e,e=>({...e,revision:e.revision+1,mentions:t})),addDraftMention:(e,t)=>de(e,e=>({...e,revision:e.revision+1,mentions:[...e.mentions,t]})),removeDraftMention:(e,t)=>de(e,e=>({...e,revision:e.revision+1,mentions:e.mentions.filter(e=>e.value!==t)})),setDraftSyntheticParts:(e,t)=>de(e,e=>({...e,revision:e.revision+1,syntheticParts:t})),consumeDraftSyntheticParts:(e,t)=>{let n=r().getDraft(e);if(!n)return null;let i=n.syntheticParts.filter(e=>!t?.(e)),a=n.syntheticParts.filter(e=>t?.(e));return de(e,e=>({...e,revision:e.revision+1,syntheticParts:a}),n.revision)?i:null},setDraftAttachments:(e,t)=>de(e,e=>({...e,revision:e.revision+1,attachments:t})),addDraftLocalAttachment:async(e,n,i={})=>{let a=r().getDraft(e);if(i.partID&&!a?.syntheticParts.some(e=>e.partID===i.partID))return;let s=P(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 no(d)}catch{let e=r().drafts[s];if(j(u)&&(r().tombstones[s]??0)===l&&(e?P(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(P(m.key)!==s||i.partID&&!m.syntheticParts.some(e=>e.partID===i.partID))return;let h=i.attachmentID??re(),g=i.partID?w(i.partID,h):T(h),_=re(),v={attachmentID:h,attachmentRefID:g,filename:i.filename??(n instanceof File?n.name:`attachment`),mimeType:n.type,size:n.size,locator:{kind:`blob`,blobID:_},source:i.source??`local`,...i.vscodePath?{vscodePath:i.vscodePath}:{},...i.vscodeSource?{vscodeSource:i.vscodeSource}:{}},y=i.partID?{...m,revision:m.revision+1,syntheticParts:m.syntheticParts.map(e=>e.partID===i.partID?{...e,attachments:[...e.attachments,v]}:e)}:{...m,revision:m.revision+1,attachments:[...m.attachments,v]},b=k(y);if(!b)return;D(s);let x={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]:x}}})),await oe([s]),v},addDraftDurableAttachment:(e,n)=>{let i=r().getDraft(e)??r().ensureDraft(e);if(n.partID&&!i.syntheticParts.some(e=>e.partID===n.partID))return;let a=n.attachmentID??re(),o=n.partID?w(n.partID,a):T(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=P(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}}})),oe([u]),s},getDraftAttachmentViews:e=>{let t=P(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=P(e);if(!r().persistenceEnabled||!r().drafts[n]&&!r().tombstones[n])return;let i=await a.retryCleanup();i.cleanupErrors.length&&t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[n]:{status:`error`,revision:e.drafts[n]?.revision??e.tombstones[n],errorCode:ae(i)}}})),await oe([n])},hydrateDraftAttachments:async e=>{let n=P(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 ie(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=P(e),a=r().drafts[i],o=a&&M(a).find(e=>e.attachmentRefID===n);if(!a||!o)return!1;let s=ze(o)?An(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 oe([i])).status===`committed`):!1},replaceDraftAttachment:async(e,n,i,a)=>{let o=P(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 no(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&&P(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||P(p.key)!==o)return;let h=p.syntheticParts.find(e=>e.attachments.some(e=>e.attachmentRefID===n)),g=re(),_={attachmentID:g,attachmentRefID:h?w(h.partID,g):T(g),filename:a?.filename??d.name,mimeType:d.type,size:d.size,locator:{kind:`blob`,blobID:re()},source:a?.source??`local`,...a?.vscodePath?{vscodePath:a.vscodePath}:{},...a?.vscodeSource?{vscodeSource:a.vscodeSource}:{}},v=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 oe([o])).status===`committed`?_:void 0},replaceDraftRootAttachments:async(e,t)=>{let n=P(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=T(t);if(e.source===`server`&&e.dataUrl&&ne(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&&ne(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),c.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=re();s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),c.set(n,r)}}let l=a?.syntheticParts??[];for(let e of l)for(let t of e.attachments)t.locator.kind===`url`&&!c.has(t.attachmentRefID)&&c.set(t.attachmentRefID,t.locator.url);let u={text:a?.text??``,attachments:s,syntheticParts:l,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return r().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:u,values:c,runtime:i})},restoreDraftRootAttachments:async(e,t)=>{let n=P(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=T(t);if(e.source===`server`&&e.dataUrl&&ne(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&&ne(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),l.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=re();c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),l.set(n,r)}}let u=r().draftAttachmentViews[n]??{};for(let e of a?.attachments??[])if(!s.has(e.attachmentID))if(c.push(JSON.parse(JSON.stringify(e))),e.locator.kind===`url`)l.set(e.attachmentRefID,e.locator.url);else{let t=u[e.attachmentRefID];t?.file instanceof Blob?l.set(e.attachmentRefID,t.file):typeof t?.dataUrl==`string`&&ne(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=P(e),a=r().drafts[i];if(!a||n!==void 0&&a.revision!==n)return!1;let o=a.revision+1;return he(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}}),oe([i]),!0):!1},moveDraft:(e,n,i)=>{let a=P(e),o=P(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)}}),oe([a,o]),c},moveDraftWithAttachments:async(e,n,i)=>{let a=P(e),o=P(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 oe([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),...S]);S.clear(),await oe(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){x??=a.seed(h).finally(()=>{x=void 0});let n;try{n=await x}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},w={...g.tombstones},T=new Set;for(let[e,t]of Object.entries(h.tombstones))(o.get(e)??0)===(u.get(e)??0)&&(t>=(w[e]??0)&&(w[e]=t,(C[e]?.revision??0)<=t&&delete C[e]),T.add(e));for(let[t,n]of Object.entries(h.drafts)){if(n.key.transportIdentity!==e||(o.get(t)??0)!==(u.get(t)??0))continue;let r=C[t],i=k(n);i&&(!r||r.revision<i.revision)&&(w[t]??0)<i.revision&&(C[t]=i),T.add(t)}let E=v===d?{...h.legacy.entries}:{...g.legacyDraftEntries};if(h.migration.claimedTransportIdentity===e&&v===d)for(let[t,n]of Object.entries(E)){let r={transportIdentity:e,owner:{kind:`session`,ownerID:t}},i=P(r),a=Za(n.text),s=k({...ao(r),text:a.text,composerReferences:a.references,mentions:oo(a.text,n.mentions)});s&&!C[i]&&!w[i]&&(o.get(i)??0)===(u.get(i)??0)&&(C[i]=s),delete E[t],T.add(i)}t(e=>({drafts:C,tombstones:w,legacyNewDraft:v===d&&!y?h.legacy.new:e.legacyNewDraft,legacyDraftEntries:E,migration:v===d?h.migration:e.migration,draftHydration:{...e.draftHydration,...Object.fromEntries([...T].map(e=>[e,`ready`]))}}));let D=[...S];for(let e of D)T.add(e);S.clear();try{await oe(T),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=P(e),a=r().drafts[i];if(v+=1,y=!0,a||r().tombstones[i])return t({legacyNewDraft:void 0}),oe([i]),a;let o=Za(n.text),s=k({...ao(e),text:o.text,composerReferences:o.references,mentions:oo(o.text,n.mentions)});if(s)return D(i),t(e=>({drafts:{...e.drafts,[i]:s},legacyNewDraft:void 0})),oe([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=_e(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=_e(t),i=ve(n),a=await r().addDraftLocalAttachment(t,e);i!==ve(n)&&a&&r().removeDraftAttachment(t,a.attachmentRefID);return}let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,i=_e(null),a=ve(i),o;try{o=await no(e)}catch{return}if(a!==ve(i))return;let s={id:n,file:e,dataUrl:o,mimeType:e.type,filename:e.name,size:e.size,source:`local`};be(i,e=>[...e,s])},removeAttachedFile:e=>{let t=r().activeAttachmentDraft;if(t){let n=r().getDraft(t),i=n?[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)].find(t=>t.attachmentID===e):void 0;i&&r().removeDraftAttachment(t,i.attachmentRefID);return}be(_e(null),t=>t.filter(t=>t.id!==e))},setAttachedFiles:e=>{be(_e(r().activeAttachmentDraft),()=>e,!0)},clearAttachedFiles:()=>{let e=r().activeAttachmentDraft;if(e){ye(_e(e)),r().getDraft(e)||r().ensureDraft(e),r().setDraftAttachments(e,[]);return}be(_e(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=eo(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=P(e),a=ve(i),o=`${i}\u0000${to(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!==ve(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=_e(null);if((r().attachmentBuckets[o]??[]).some(t=>t.source===`vscode`&&t.vscodeSource===`file`&&(t.vscodePath||``)===e))return;let s=eo(e),c={id:a,file:new File([],t,{type:`text/plain`}),dataUrl:s,mimeType:`text/plain`,filename:t,size:n||0,source:`vscode`,vscodePath:e,vscodeSource:`file`};be(o,e=>[...e,c])},addVSCodeSelectionAttachment:async(e,t)=>{let n=r().activeAttachmentDraft;if(n){await r().addDraftVSCodeSelectionAttachment(n,e,t);return}let i=`${Date.now()}-${Math.random().toString(36).slice(2)}`,a=_e(null),o=ve(a),s=`${a}\u0000${to(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 no(t)}catch{return}finally{E.delete(s)}if(o!==ve(a))return;let l={id:i,file:t,dataUrl:c,mimeType:t.type,filename:t.name,size:t.size,source:`vscode`,vscodePath:e,vscodeSource:`selection`};be(a,e=>[...e,l])},addCodeSelectionAttachment:async(e,t,n)=>{let i=new File([n],t,{type:`text/plain`});await r().addVSCodeSelectionAttachment(e,i)},setActiveEditorFile:e=>{io(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=P(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||P(c)!==a)return;await r().addDraftLocalAttachment(i,s)}catch{}})();return}if(!ne(e))return;r().addDraftDurableAttachment(i,{filename:n,mimeType:t,size:ro(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:ro(e),source:`local`,serverPath:e};be(_e(null),e=>[...e,a])}}})})(),co=[`session_status`,`session_status_observed_at`,`session_status_event_at`,`session_status_event_sequence`,`session_interrupt_acknowledged_at`,`session_execution_version`,`session_error_at`,`session_execution_recovery`,`session_diff`,`todo`,`permission`,`question`];function lo(e,t,n){if(!po().size)return n;let r=n;n.session&&n.session!==t.session&&n.session.some(t=>!_o(t.id,e))&&(r={...r,session:n.session.filter(t=>_o(t.id,e))});for(let i of co){let a=n[i];if(!a||a===t[i])continue;let o=Object.keys(a).filter(t=>!_o(t,e));if(!o.length)continue;let s={...a};for(let e of o)delete s[e];r={...r,[i]:s}}return r}var uo=``,fo=new Map;function po(){let e=`${u()}:${f()}`;return uo!==e&&(uo=e,fo.clear()),fo}function mo(e){return po().get(e)?.directory}function ho(e,t,n){let r=po().get(e);return r&&t&&typeof n==`number`&&n>r.clock&&Se(t)!==r.directory&&go(e,t,n),mo(e)}function go(e,t,n,r){let i=po(),a=i.get(e);return t=Se(t),a&&(r!==void 0&&a.sequence!==void 0?r<=a.sequence:n<a.clock||n===a.clock&&t===a.directory)?!1:(i.set(e,{directory:t,clock:n,sequence:r}),!0)}function _o(e,t){let n=mo(e);return!n||n===Se(t)}var vo=new Set;function yo(e){return vo.add(e),()=>{vo.delete(e)}}function bo(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 vo)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 xo(e,t){return e.scopes.includes(`all`)||e.scopes.includes(t)}var So=`Updating OpenCode configuration...`,Co=0,wo=So,To=new Set;function Eo(){let e={isUpdating:Co>0,message:wo};To.forEach(t=>t(e))}function Do(e){Co+=1,Co===1?(wo=e||So,Eo()):e&&(wo=e,Eo())}function Oo(){Co!==0&&(--Co,Co===0&&(wo=So,Eo()))}function ko(e){wo===e&&Co>0||(wo=e,Co>0&&Eo())}function Ao(e){return To.add(e),e({isUpdating:Co>0,message:wo}),()=>{To.delete(e)}}function jo(){return{isUpdating:Co>0,message:wo}}var Mo=_r(),No=`projects`,Po=`activeProjectId`,Fo=`projects:manualOrder`,Io=(e,t)=>{let n=e.trim();return!n.startsWith(`~`)||!t?n:n===`~`?t:n.startsWith(`~/`)||n.startsWith(`~\\`)?`${t}${n.slice(1)}`:n},Lo=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,Ro=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},zo=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t&&Lo.test(t)?t.toLowerCase():null},Bo=e=>{let t=e.trim();if(!t)return``;let n=Io(t,Oe(`homeDirectory`,{storage:Mo})||Ke.getState().homeDirectory||``).replace(/\\/g,`/`);return n===`/`?`/`:n.length>1?n.replace(/\/+$/,``):n},Vo=e=>{let t=Bo(e);if(!t||t===`/`)return`Root`;let n=t.split(`/`).filter(Boolean);return n[n.length-1]||t},Ho=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}},Uo=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)}),Go=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=be(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=Ho(e.iconImage);t&&(c.iconImage=t)}typeof e.color==`string`&&e.color.trim().length>0&&(c.color=e.color.trim());let l=Ro(e.defaultModel);if(l&&(c.defaultModel=l),e.iconBackground===null)c.iconBackground=null;else{let t=zo(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},Ko=()=>{try{let e=Oe(No,{storage:Mo});return e?Go(JSON.parse(e)):[]}catch{return[]}},qo=()=>{if(!oe())return null;let e=g().trim().replace(/\/+$/,``);return e?Mo.getItem(`${No}:${encodeURIComponent(e)}:manualOrder`):null},Jo=()=>{try{let e=Oe(Fo,{storage:Mo})||qo();if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}},Yo=()=>{try{let e=Oe(Po,{storage:Mo});if(typeof e==`string`&&e.trim().length>0)return e.trim()}catch{return null}return null},Xo=(e,t)=>{try{ce(No,JSON.stringify(e),{storage:Mo})}catch{}try{t?ce(Po,t,{storage:Mo}):x(Po,{storage:Mo})}catch{}},Zo=(e,t,n)=>{Xo(e,t),n&&Qo(n),xe({projects:e,activeProjectId:t??void 0})},Qo=e=>{try{ce(Fo,JSON.stringify(e),{storage:Mo})}catch{}},$o=Ko(),es=(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},ts=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},ns=(e,t,n,r)=>{let i=Bo(e.path);if(!i)return null;let a=be(i),o=r===i;return{...t,id:a,path:i,label:Vo(i),addedAt:t?.addedAt??n,lastOpenedAt:o?n:t?.lastOpenedAt??n}},rs=()=>{if(typeof window>`u`||!te()?.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 ts(t);let n=e?.workspaceFolder;return typeof n!=`string`||n.trim().length===0?null:ts([{path:n}])},is=(e,t,n)=>{let r=ts(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=>ns(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 Dt(),{projects:s,activeProjectId:l,activeProject:c??s[0]??null}},as=(e,t)=>e===t?!0:!e||!t?e===t:e.mime===t.mime&&e.updatedAt===t.updatedAt&&e.source===t.source,os=(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&&as(e.iconImage,r.iconImage):!1}),ss=(()=>{let e=rs();if(!e)return null;let t=is(e,[]);return t?{projects:t.projects,activeProjectId:t.activeProjectId}:null})(),cs=typeof window>`u`?!1:!!te()?.runtime?.isVSCode,ls=ss?.projects??(cs?[]:$o),us=ss?.activeProjectId??(cs?null:Yo()),ds=ls.some(e=>e.id===us)?us:ls[0]?.id??null;ss&&Xo(ls,ds);var fs=ke()(Me((e,t)=>({projects:ls,activeProjectId:ds,manualProjectOrder:Jo(),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(cs)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()||Vo(o),u={id:be(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)]}),Dt(),t().setActiveProject(u.id),t().discoverProjectIcon(u.id),u},removeProject:n=>{if(cs)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}),Zo(a,o,s),i){let e=i.path.replace(/\\/g,`/`).replace(/\/+$/,``)||`/`;$.setState(t=>{let n=new Map(t.availableWorktreesByProject);return n.delete(e),{availableWorktreesByProject:n}})}if(o){let e=a.find(e=>e.id===o);e&&(B.setDirectory(e.path),Ke.getState().setDirectory(e.path,{showOverlay:!1}))}else Ke.getState().goHome()},setActiveProject:n=>{if(cs)return;let{projects:r,activeProjectId:i}=t();if(i===n)return;let a=r.find(e=>e.id===n);a&&(e({activeProjectId:n}),Zo(r,n,t().manualProjectOrder),B.setDirectory(a.path),Ke.getState().setDirectory(a.path,{showOverlay:!1}))},setActiveProjectIdOnly:n=>{if(cs)return;let{projects:r,activeProjectId:i}=t();i!==n&&r.find(e=>e.id===n)&&(e({activeProjectId:n}),Zo(r,n,t().manualProjectOrder))},renameProject:(n,r)=>{if(cs)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}),Zo(s,o,t().manualProjectOrder)},updateProjectMeta:(n,r)=>{if(cs)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=zo(r.iconBackground)),r.defaultModel!==void 0){let e=Ro(r.defaultModel);e?t.defaultModel=e:delete t.defaultModel}return t});e({projects:o}),Zo(o,a,t().manualProjectOrder)},uploadProjectIcon:async(e,n)=>{if(cs)return{ok:!1,error:`Custom icons are not supported in this runtime`};let r=Uo(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(cs)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(cs)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(cs)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}),Zo(o,a,c)},reorderProjectsById:(n,r)=>{if(cs)return;let{projects:i,activeProjectId:a}=t(),o=es(i,n,r);if(o===i)return;let s=o.map(e=>e.id);e({projects:o,manualProjectOrder:s}),Zo(o,a,s)},moveProjectToTop:n=>{if(cs)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}),Zo(u,i,d))},resetForRuntimeSwitch:()=>{if(cs)return;let t=Ko(),n=Yo(),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:Jo().filter(e=>i.has(e))})},synchronizeFromSettings:n=>{if(cs)return;let r=Go(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}),Xo(a.projects,i),Qo(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}),Xo(r,i),Qo(l),i){let e=r.find(e=>e.id===i);e&&(B.setDirectory(e.path),Ke.getState().setDirectory(e.path,{showOverlay:!1}))}},syncVSCodeWorkspaceFolders:(n,r)=>{if(!cs)return null;let i=t(),a=i.activeProjectId?i.projects.find(e=>e.id===i.activeProjectId)??null:null,o=r??a?.path??null,s=is(n,i.projects,o);if(!s)return n.length===0&&!r&&i.projects.length>0&&(e({projects:[],activeProjectId:null}),Xo([],null)),null;let c=!os(i.projects,s.projects),l=i.activeProjectId!==s.activeProjectId;return(c||l)&&(e({projects:s.projects,activeProjectId:s.activeProjectId}),Xo(s.projects,s.activeProjectId)),s.activeProject&&(B.setDirectory(s.activeProject.path),Ke.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`&&fs.getState().synchronizeFromSettings(t)});var U=vr(),ps=e=>e?.trim()||null,ms=()=>{let e=fs.getState().getActiveProject?.();return ps(e?.path)??ps(B.getDirectory())},hs=(e,t=u())=>L.commands.list(e,t),gs=(e=ms(),t=u())=>{let n=ps(e);return{queryKey:hs(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}},_s=e=>{let t=(0,U.c)(3),n=e===void 0?{}:e,r=fs(bs),i=ps(n.directory)??ps(r)??ps(B.getDirectory()),a=n.enabled!==!1&&!!i,o=gs(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],jr(s)},vs=(e=ms(),t=u())=>I.getQueryData(hs(ps(e),t))??[],ys=async(e,t,n)=>{let r=ps(t);if(u()!==n)return e.getQueryData(hs(r,n))??[];let i=gs(r,n);return e.fetchQuery({...i,staleTime:0})};function bs(e){return e.getActiveProject?.()?.path??null}var xs=200,Ss=500,Cs=512,ws=1024,Ts=64,Es=100,Ds=100,Os=new Set([`__proto__`,`prototype`,`constructor`]),ks=new Set([`text`,`audio`,`image`,`video`,`pdf`]),As=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},js=e=>typeof e==`object`&&e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype?e:void 0,Ms=e=>{if(typeof e==`string`)return e.length>0&&e.length<=Cs&&e.trim()===e&&!As(e)&&!Os.has(e)?e:void 0},Ns=e=>typeof e==`string`&&e.length>0&&e.length<=ws&&e.trim()===e&&!As(e)?e:void 0,Ps=e=>typeof e==`string`&&e.length>0&&e.length<=Ts&&e.trim()===e&&!As(e)?e:void 0,Fs=e=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=1e9?e:void 0,Is=e=>{let t=js(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))!ks.has(e)||typeof r!=`boolean`||(n[e]=r);return Object.keys(n).length?n:void 0},Ls=e=>{if(!Array.isArray(e))return;let t={};for(let n of e)typeof n!=`string`||!ks.has(n)||(t[n]=!0);return Object.keys(t).length?t:void 0},Rs=e=>{let t=js(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)?Ls(t.input):Is(t.input),i=Array.isArray(t.output)?Ls(t.output):Is(t.output);return r&&(n.input=r),i&&(n.output=i),Object.keys(n).length?n:void 0},zs=e=>js(Array.isArray(e)?e.find(e=>js(e)&&!js(e.tier))??e.find(e=>js(e)):e),Bs=e=>{if(Array.isArray(e))return e.map(e=>{if(typeof e==`string`)return e;let t=js(e);return typeof t?.id==`string`?t.id:void 0});let t=js(e);return t?Object.keys(t):null},Vs=e=>{let t=js(e),n=Ms(t?.id),r=Ns(t?.name);if(!t||!n||!r)return{partial:!0};let i={id:n,name:r},a=!1,o=Rs(t.capabilities);o&&(i.capabilities=o);let s=zs(t.cost);if(s){let e={},t=Fs(s.input);t!==void 0&&(e.input=t);let n=Fs(s.output);n!==void 0&&(e.output=n);let r=js(s.cache);if(r){let t={},n=Fs(r.read);n!==void 0&&(t.read=n);let i=Fs(r.write);i!==void 0&&(t.write=i),Object.keys(t).length&&(e.cache=t)}Object.keys(e).length&&(i.cost=e)}let c=js(t.limit);if(c){let e={},t=Fs(c.context);t!==void 0&&(e.context=t);let n=Fs(c.output);n!==void 0&&(e.output=n),Object.keys(e).length&&(i.limit=e)}let l=Ps(t.release_date);l&&(i.release_date=l);let u=Bs(t.variants);if(u){let e={},n=js(t.variants);for(let[t,r]of u.entries()){if(t>=Ds){a=!0;break}let i=Ms(r);!i||Object.prototype.hasOwnProperty.call(e,i)||n&&!js(n[i])||(e[i]={})}Object.keys(e).length&&(i.variants=e)}return{value:i,partial:a}},Hs=e=>{let t=js(e);if(!t||t.schemaVersion!==1||!Array.isArray(t.providers)||!js(t.default)||typeof t.partial!=`boolean`)throw Error(`Invalid provider catalog response`);let n=[],r=new Set,i=t.providers.length>xs;for(let[e,a]of t.providers.entries()){if(e>=xs)continue;let t=js(a),o=Ms(t?.id),s=Ns(t?.name),c=js(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>=Ss||!Ms(t)||Object.prototype.hasOwnProperty.call(l,t)){i=!0;continue}let r=Vs(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=js(t.default),o={};for(let[e,[t,n]]of Object.entries(a).entries()){let r=Ms(t),a=Ms(n);if(e>=Es||!r||!a){i=!0;continue}o[r]=a}return{schemaVersion:1,providers:n,default:o,partial:t.partial||i}},Us=e=>{if(typeof e==`object`&&e&&!Array.isArray(e)){let t=e;return typeof t.providerID!=`string`||typeof t.model!=`string`||t.providerID.includes(`/`)||t.model.includes(`#`)||t.variant!==void 0&&typeof t.variant!=`string`?null:Us(`${t.providerID}/${t.model}${t.variant===void 0?``:`#${t.variant}`}`)}if(typeof e!=`string`)return null;let t=e.trim(),n=t.indexOf(`/`);if(n<=0)return null;let[r,i,a]=t.slice(n+1).split(`#`),o=t.slice(0,n);return!r||/[\s#]/u.test(o)||/\s/u.test(r)||a!==void 0||i!==void 0&&(!i||/\s/u.test(i))?null:{providerId:o,modelId:r,...i===void 0?{}:{variant:i}}},Ws=e=>{let t=Us(e);return t?`${t.providerId}/${t.modelId}${t.variant?`#${t.variant}`:``}`:void 0},Gs=e=>(t=>e(t.state.data)?1/0:0),Ks=e=>{let t=e;return!!(t&&!t.partial&&t.providers.length>0)},qs=e=>{if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},Js=e=>e?{location:{directory:e}}:void 0,Ys=async(e,t)=>{let n=B.getSdkClient(),r=Js(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).catch(()=>void 0)]);if(!Array.isArray(a.data)||!Array.isArray(o.data))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 Array.isArray(s)?s:[]){let t=Us(e?.type===`document`?e.info?.model:void 0);t&&(l[t.providerId]=t.modelId)}return{schemaVersion:1,providers:a.data.map(e=>({id:e.id,name:e.name,models:c.get(e.id)??{}})),default:l,partial:!1}},Xs=(e,t=u())=>{let n=qs(e);return{queryKey:L.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=Hs(await r.json());else{if(r.status!==404&&r.status!==501)throw Error(`Provider catalog request failed (${r.status})`);i=Hs(await Ys(n,e))}let a=I.getQueryData(L.configCatalog.providers(n,t));if(i.partial&&a&&!a.partial)throw Error(`Partial provider catalog refresh retained the complete snapshot`);return i},staleTime:Gs(Ks),gcTime:1/0,retry:2,retryDelay:100}},Zs=(e,t=u())=>{let n=qs(e);return{queryKey:L.agents.raw(n,t),queryFn:({signal:e})=>B.listAgents(n,e),staleTime:Gs(e=>Array.isArray(e)&&e.length>0),gcTime:1/0,retry:2,retryDelay:100}},Qs=(e,t=u())=>I.fetchQuery(Xs(e,t)),$s=(e,t=u())=>I.fetchQuery(Zs(e,t)),ec=async(e,t=u())=>{let n=Xs(e,t);return await I.invalidateQueries({queryKey:n.queryKey,exact:!0}),I.fetchQuery(n)},tc=async(e,t=u())=>{let n=Zs(e,t);return await I.invalidateQueries({queryKey:n.queryKey,exact:!0}),I.fetchQuery(n)},nc=(e,t=u())=>I.invalidateQueries({queryKey:Xs(e,t).queryKey,exact:!0}),rc=e=>e?.trim()||null,ic=(e,t=u())=>L.agents.list(e,t),ac=(e,t=u())=>L.providers.list(e,t);function oc(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 sc=(e=ms(),t=u())=>{let n=rc(e);return{queryKey:ic(n,t),queryFn:async({signal:e})=>{let r=await I.fetchQuery(Zs(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=oc(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}},cc=(e,t=u())=>{let n=rc(e);return{queryKey:ac(n,t),queryFn:async()=>{let e=await B.getProvidersForConfig(n);return(Array.isArray(e.providers)?e.providers:[]).map(e=>({...e,models:Object.values(e.models??{})}))},retry:2}},lc=e=>{let t=(0,U.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=fs(pc),a;t[2]===i?a=t[3]:(a=sc(rc(i)??rc(B.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],jr(o)},uc=(e,t)=>{let n=(0,U.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=cc(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],jr(o)},dc=(e=ms(),t=u())=>I.getQueryData(ic(rc(e),t))??[],fc=async(e,t,n)=>{let r=rc(t);if(u()!==n)return e.getQueryData(ic(r,n))??[];let i=sc(r,n);return await e.invalidateQueries({queryKey:i.queryKey,exact:!0}),e.fetchQuery(i)};function pc(e){return e.getActiveProject?.()?.path??null}var mc=[{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`}],hc=e=>e?.trim()||null,gc=()=>{let e=fs.getState().getActiveProject?.();return hc(e?.path)??hc(B.getDirectory())},_c=(e,t=u())=>L.skillsCatalog.sources(e,t),vc=(e,t,n=u())=>L.skillsCatalog.source(e,t,n),yc=new Map,bc=(e=gc(),t=u(),n=!1)=>{let r=hc(e);return{queryKey:_c(r,t),queryFn:({signal:e})=>Ac(r,n,e),staleTime:5e3,retry:2}},xc=(e,t,n=u(),r=!1)=>{let i=hc(e);return Dr({queryKey:vc(i,t,n),queryFn:({signal:e,pageParam:n})=>jc(i,t,n,r,e),initialPageParam:null,getNextPageParam:(e,t)=>Mc(e,t),staleTime:5e3,retry:2})},Sc=e=>{let t=(0,U.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=fs(Fc),a;t[2]===i?a=t[3]:(a=bc(hc(i)??hc(B.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],jr(o)},Cc=(e,t)=>{let n=(0,U.c)(8),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a=fs(Ic),o;n[2]!==a||n[3]!==e?(o=xc(hc(a)??hc(B.getDirectory()),e),n[2]=a,n[3]=e,n[4]=o):o=n[4];let s=i.enabled&&!!e,c;return n[5]!==o||n[6]!==s?(c={...o,enabled:s},n[5]=o,n[6]=s,n[7]=c):c=n[7],Mr(c)},wc=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())},Tc=(e=I,t=gc(),n=u())=>e.getQueryData(_c(hc(t),n))??mc,Ec=(e=I,t,n,r=u())=>e.getQueryData(vc(hc(t),n,r)),Dc=async(e,t,n)=>{let r=hc(t);return u()===n?e.fetchQuery({...bc(r,n,!0),staleTime:0}):Tc(e,r,n)},Oc=async(e,t,n,r)=>{let i=hc(t);if(u()!==r)return Ec(e,i,n,r);let a=vc(i,n,r),o=JSON.stringify(a),s=(yc.get(o)??0)+1;yc.set(o,s),await e.cancelQueries({queryKey:a,exact:!0});let c=await jc(i,n,null,!0,new AbortController().signal);if(u()!==r||yc.get(o)!==s)return Ec(e,i,n,r);let l={pages:[c],pageParams:[null]};return e.setQueryData(a,l),l},kc=(e,t,n)=>Promise.all([e.invalidateQueries({queryKey:_c(hc(t),n)}),e.invalidateQueries({queryKey:[n,`skillsCatalog`,`source`,hc(t)],exact:!1})]);async function Ac(e,t,n){let r=await Pc(Nc(`/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:mc}async function jc(e,t,n,r,i){let a={directory:e,sourceId:t,cursor:n,refresh:r},o=await Pc(Nc(`/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(Nc(`/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 Mc(e,t){let n=e.nextCursor;if(!(!n||e.items.length===0)&&!t.slice(0,-1).some(e=>e.nextCursor===n))return n}function Nc(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 Fc(e){return e.getActiveProject?.()?.path??null}function Ic(e){return e.getActiveProject?.()?.path??null}var Lc=e=>e?.trim()||null,Rc=()=>{let e=fs.getState().getActiveProject?.();return Lc(e?.path)??Lc(B.getDirectory())},zc=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},Bc=(e,t=u())=>L.skills.list(e,t),Vc=(e=Rc(),t=u())=>{let n=Lc(e);return{queryKey:Bc(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:zc(e.path)}))},retry:2}},Hc=e=>{let t=(0,U.c)(3),n=e===void 0?{}:e,r=fs(Gc),i=Vc(Lc(n.directory)??Lc(r)??Lc(B.getDirectory())),a;return t[0]!==n.enabled||t[1]!==i?(a={...i,enabled:n.enabled},t[0]=n.enabled,t[1]=i,t[2]=a):a=t[2],jr(a)},Uc=(e=I,t=Rc(),n=u())=>e.getQueryData(Bc(Lc(t),n))??[],Wc=async(e,t,n=u())=>{let r=Lc(t);return u()===n?e.fetchQuery({...Vc(r,n),staleTime:0}):Uc(e,r,n)};function Gc(e){return e.getActiveProject?.()?.path??null}var Kc=()=>{let e=B.getDirectory();if(typeof e==`string`&&e.trim().length>0)return e;try{let e=window.__zustand_directory_store__;if(e)return e.getState().currentDirectory}catch{}return null},qc=ms,Jc=e=>{let t=e;return t.native===!0||t.builtIn===!0},Yc=e=>{let t=e;return t.hidden===!0||t.options?.hidden===!0},Xc=e=>e.filter(e=>!Yc(e)),Zc=`useAgentsStore`,Qc=e=>new Promise(t=>setTimeout(t,e)),$c=2e4,el=300,tl=4,nl=800,rl=200,il=2e3,al=ke()(Me(Ae(e=>({selectedAgentName:null,agentDraft:null,setSelectedAgent:t=>e({selectedAgentName:t}),setAgentDraft:t=>e({agentDraft:t}),loadAgents:async()=>{let e=qc(),t=u();try{return await fc(I,e,t),!0}catch{return!1}},createAgent:async t=>sl(`POST`,t.name,t,e),updateAgent:async(t,n)=>sl(`PATCH`,t,n,e),deleteAgent:async(t,n)=>sl(`DELETE`,t,{scope:n},e),getAgentByName:e=>dc().find(t=>t.name===e),getVisibleAgents:()=>Xc(dc())}),{name:`agents-store`,storage:hr(),partialize:e=>({selectedAgentName:e.selectedAgentName})}),{name:`agents-store`}));typeof window<`u`&&(window.__zustand_agents_store__=al);async function ol(e,t){await fc(I,e,t),u()===t&&bo(`agents`,{source:Zc})}async function sl(e,t,n,r){let i=qc(),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`&&al.getState().selectedAgentName===t&&r({selectedAgentName:null}),l?.requiresManualRestart?{ok:!0,requiresManualRestart:!0}:(await ol(i,a),{ok:!0})):{ok:!0,...l?.requiresManualRestart?{requiresManualRestart:!0}:{}}}catch(t){return console.error(`[AgentsStore] ${e} agent failed:`,t),{ok:!1}}}async function cl(e){let t=typeof e==`number`&&e>0?Math.min(e,el):0;t>0&&await Qc(t);let n=Date.now(),r=0,i=null;for(;Date.now()-n<$c;){r+=1,ko(`Waiting for OpenCode… (attempt ${r})`);try{if(await B.checkHealth())return;i=Error(`OpenCode health check reported not ready`)}catch(e){i=e}let e=Date.now()-n;await Qc(r<=tl&&e<1200?el:Math.min(nl+Math.max(0,r-tl)*rl,il))}throw i||Error(`OpenCode did not become ready in time`)}var ll=e=>{if(!e||e.length===0)return[`all`];let t=Array.from(new Set(e));return t.includes(`all`)?[`all`]:t};async function ul(e={}){let{message:t,delayMs:n}=e,r=e.transportIdentity??u(),i=e.queryDirectory??qc(),a=ll(e.scopes),o=e.mode??(a.includes(`all`)?`projects`:`active`),s=e.silent===!0;if(!s)try{ko(t||`Refreshing configuration…`)}catch{}try{if(u()!==r||(e.waitForConnection!==!1&&await cl(n),u()!==r))return;let t=W.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=Kc(),g=o===`projects`?fs.getState().projects:[],_=Array.from(new Set([...i?[i]:h?[h]:[],...g.map(e=>e.path).filter(Boolean)]));a.includes(`all`)&&o===`projects`&&W.setState({directoryScoped:{}}),c&&W.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(fc(I,i,r).then(()=>void 0)),f&&y.push(ys(I,i,r).then(()=>void 0)),p&&(y.push(Wc(I,i,r).then(()=>void 0)),y.push(kc(I,i,r).then(()=>void 0))),m){let{refreshMcpConfigsQuery:e,refreshMcpStatusQuery:t}=await Tr(async()=>{let{refreshMcpConfigsQuery:e,refreshMcpStatusQuery:t}=await import(`./mcpQueries-Ct1GVJ1_.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(I,i,r).then(()=>void 0)),y.push(t(I,i,r).then(()=>void 0))}s||ko(`Refreshing configuration…`),await Promise.all([...v,...y])}catch(e){throw s||(ko(`OpenCode refresh failed. Please retry.`),await Qc(1500)),e}finally{s||Oo()}}async function dl(e){await ul(e)}async function fl(e){await ul({...e,silent:!0,waitForConnection:!1})}async function pl(){await B.getSdkClient().location.reload()}async function ml(e){Do(e?.message||`Reloading OpenCode configuration…`);let t=e?.transportIdentity??u(),n=e?.queryDirectory??qc();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){Oo();return}let a={...e,transportIdentity:t,queryDirectory:n,scopes:e?.scopes??[`all`],mode:e?.mode??`projects`};i?.requiresReload?await dl({...a,message:i.message,delayMs:i.reloadDelayMs}):await dl(a)}catch(e){throw console.error(`[restartOpenCodeService] Failed:`,e),ko(`Failed to reload configuration. Please try again.`),await Qc(2e3),Oo(),e}}var hl=null;hl||=yo(e=>{if(e.source!==Zc&&xo(e,`agents`)){let{loadAgents:e}=al.getState();e()}});var gl=e=>typeof e==`string`?e.trim():``,_l=(e,t)=>!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`,vl={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`},yl=e=>e?e[0].toUpperCase()+e.slice(1).toLowerCase():``,bl=e=>{let t=e.startsWith(`~`)?e.slice(1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t},xl=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)}},Sl=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},Cl=e=>{let t=e.toLowerCase(),n=vl[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)?yl(t).replace(/([a-z])(\d)/i,`$1$2`):yl(e)},wl=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},Tl=e=>{let t=gl(e).toLowerCase();return t?t===`free`||t===`thinking`?t:El(t):``},El=e=>{let t=gl(e);if(!t)return``;let{base:n,suffix:r}=xl(bl(t)),i=wl(Sl(n).map(Cl));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=Tl(r);return s?`${o} (${s})`:o},Dl=e=>!/\s/.test(e)&&/[-_]/.test(e),Ol=(e,t,n={})=>{let r=gl(e?.name),i=gl(e?.id)||gl(t);return r&&!Dl(r)?_l(r,n.maxLength):i?_l(El(i),n.maxLength):r?_l(El(r.toLowerCase()),n.maxLength):n.fallbackLabel??``},kl=(e,t)=>{let n=e?.models;if(!(!n||!t))return Array.isArray(n)?n.find(e=>gl(e.id)===t):n[t]},Al=(e,t,n={})=>{let r=gl(t);return Ol(kl(e,r),r,n)},jl=(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}},Ml=e=>e===`primary`||e===`all`||e==null,Nl=e=>e.filter(e=>Ml(e.mode)),Pl=(e,t,n=1)=>{let r=Nl(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},Fl=e=>e.charAt(0).toUpperCase()+e.slice(1),Il=(e,t)=>{if(t){let n=e.find(e=>e.name===t);return Fl(n?n.name:t)}let n=e.filter(e=>Ml(e.mode)),r=n.find(e=>e.name===`build`)||n[0]||e[0];return r?Fl(r.name):`Select agent`},Ll=(e,t,n=``)=>Al(e,t,{fallbackLabel:n}),Rl=e=>{if(!e||e.trim().length===0)return`Default`;let t=e.trim();return/^\d+(\.\d+)?$/.test(t)?t:Fl(t)},zl=e=>typeof e==`object`&&!!e,Bl=e=>typeof e==`string`&&e.length>0,Vl=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(!Bl(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(!Bl(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;!Bl(t)||!Bl(n)||r.set(t,n)}r.size>0&&i.set(t,r)}i.size>0&&t.set(e,i)}return t},Hl=ke()(Ae((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:hr(),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=zl(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(!Bl(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;!Bl(t)||typeof n!=`object`||!n||!Bl(n.providerId)||!Bl(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:Vl(n?.sessionAgentModelVariantSelections)}},migrate:e=>e})),Ul=[`concise`,`detailed`,`mentor`,`pushback`,`noFiller`,`matchEnergy`,`warmPeer`],Wl=e=>typeof e==`string`&&Ul.includes(e),Gl=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.`}},Kl=new Map,ql=new Map,Jl=({enabled:e,preset:t,customInstructions:n})=>e?t===`custom`?(typeof n==`string`?n.trim():``)||null:Wl(t)?Gl(t):null:null,Yl=(e,t=u())=>{Kl.set(t,{enabled:e.enabled===!0,preset:e.preset,customInstructions:e.customInstructions})},Xl=(e=u())=>{let t=Kl.get(e);if(t)return Jl(t)},Zl=async()=>{let e=u(),t=Xl(e);if(t!==void 0)return t;let n=ql.get(e);if(n)return n;let r=(async()=>{let t=await he(e);return Yl({enabled:t.responseStyleEnabled,preset:t.responseStylePreset,customInstructions:t.responseStyleCustomInstructions},e),Xl(e)??null})();ql.set(e,r);try{return await r}finally{ql.get(e)===r&&ql.delete(e)}},Ql=`opencode`,$l=`big-pickle`,eu=`__add_provider__`,tu=`zen`,nu=`big-pickle`,ru=async(e,t)=>{wn(`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 wn(`config.defaults:end`,{source:e,durationMs:Math.round(r-n),hasDefaultModel:!!t.defaultModel,hasDefaultAgent:!!t.defaultAgent}),t};try{let t=await he(e);return Yl({enabled:t?.responseStyleEnabled,preset:t?.responseStylePreset,customInstructions:t?.responseStyleCustomInstructions},e),r(`settings-bootstrap-query`,t)}catch(n){wn(`config.defaults:error`,{error:n instanceof Error?n.message:String(n)});let i=ve(e);return i&&Yl({enabled:i.responseStyleEnabled,preset:i.responseStylePreset,customInstructions:i.responseStyleCustomInstructions},e),r(i?`retained-settings-bootstrap`:`retained-store-settings`,i??t)}},iu=e=>Us(e),au=e=>e===eu?``:e??``,ou=(e,t)=>e===eu?eu:t,su=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},cu=e=>{if(!Array.isArray(e))return[];let t=e.map(e=>{if(!mu(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 Hs({schemaVersion:1,providers:t,default:{},partial:!1}).providers.map(e=>({id:e.id,name:e.name,models:Object.values(e.models)}))}catch{return[]}},lu=e=>{try{return Hs({schemaVersion:1,providers:[],default:e,partial:!1}).default}catch{return{}}},uu=(e,t,n)=>{let r=e.find(e=>e.id===t);return r?r.models.some(e=>e.id===n):!1},du=({providers:e,currentProviderId:t,currentModelId:n,currentVariant:r,settingsDefaultModel:i,settingsDefaultVariant:a})=>{if(t&&n)return{providerId:t,modelId:n,variant:r};if(i){let e=iu(i);if(e)return{providerId:e.providerId,modelId:e.modelId,variant:e.variant??a}}if(uu(e,Ql,$l))return{providerId:Ql,modelId:$l};let o=e[0],s=o?.models[0];return o&&s?{providerId:o.id,modelId:s.id}:null},fu=({agents:e,providers:t,projectDefaultModel:n,settingsDefaultAgent:r,settingsDefaultModel:i,settingsDefaultVariant:a,opencodeDefaultAgent:o,opencodeDefaultModel:s,projectLastUserSelection:c,globalLastUserSelection:l})=>{let u=t=>{if(!t)return null;let n=Ft(e,t.agentName);return n&&(!Ml(n.mode)||n.hidden===!0)?null:{agentName:n?.name??t.agentName,providerId:t.providerId,modelId:t.modelId,variant:t.variant}},d=u(c);if(d)return d;let f=u(l);if(f)return f;let p=e.filter(e=>Ml(e.mode)),m;if(r&&(m=Ft(e,r)),!m&&o){let t=Ft(e,o);t&&Ml(t.mode)&&t.hidden!==!0&&(m=t)}m||=Ft(p,`build`)||p.find(e=>e.name===`build`)||p[0]||e[0];let h,g,_,v=n||i;if(v){let e=iu(v);e&&(h=e.providerId,g=e.modelId,_=e.variant??(n?void 0:a))}if(!h&&m?.model?.providerID&&m.model?.modelID&&(h=m.model.providerID,g=m.model.modelID,_=m.variant),!h&&s){let e=iu(s);e&&(h=e.providerId,g=e.modelId,_=e.variant)}if(!h)if(uu(t,Ql,$l))h=Ql,g=$l;else{let e=t[0],n=e?.models[0];e&&n&&(h=e.id,g=n.id)}return{agentName:(r&&!Ft(e,r)?r:!r&&o&&!Ft(e,o)?o:void 0)??m?.name,providerId:h,modelId:g,variant:_}},pu=({providers:e,settingsZenModel:t})=>{let n=su(t);if(!Array.isArray(e)||e.length===0)return n?{providerId:tu,modelId:n}:null;if(n&&uu(e,tu,n))return{providerId:tu,modelId:n};if(uu(e,tu,nu))return{providerId:tu,modelId:nu};let r=e.find(e=>e.id===tu);if(r?.models.length){let e=Math.floor(Math.random()*r.models.length),t=su(r.models[e]?.id);if(t)return{providerId:tu,modelId:t}}return null},mu=e=>typeof e==`object`&&!!e,hu=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},gu=(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:hu(t.capabilities.input),output:hu(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}),_u=e=>new Promise(t=>setTimeout(t,e)),vu=800,yu=async(e=vu)=>Promise.race([B.checkHealth().catch(()=>!1),_u(Math.max(1,e)).then(()=>!1)]),bu=`__global__`,xu=e=>{let t=typeof e==`string`?e.trim():``;return t.length>0?t:bu},Su=e=>e===bu?null:e,Cu=()=>typeof window>`u`?bu:Du(B.getDirectory()??Ke.getState().currentDirectory),wu=e=>{let t=R(e);return t===null?null:t||`/`},Tu=()=>{try{let{projects:e,activeProjectId:t}=fs.getState();return wu((t?e.find(e=>e.id===t):null)?.path??e[0]?.path??null)}catch{return null}},Eu=e=>wu(e),Du=e=>xu(Eu(e)),Ou=e=>Du(e),ku=100,Au=256,ju=new Set([`__proto__`,`prototype`,`constructor`]),Mu=/[\u0000-\u001F\u007F]/u,Nu=e=>{let t=e.directoryScoped,n=e.activeDirectoryKey;if(!t||!n)return e;let r=t[n];if(!r)return e;let i={...e};return i.providers=[],i.agents=[],i.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=void 0,i.opencodeDefaultModel=void 0,i.selectionSource=r.selectionSource??`auto`,i},Pu=(e,t=!1)=>{if(typeof e!=`string`)return;let n=e.trim();if(!(n.length===0||n.length>Au||t&&n!==e||Mu.test(n)||ju.has(n)))return n},Fu=e=>{if(!mu(e))return{};let t=[];for(let[n,r]of Object.entries(e)){if(t.length>=ku||!mu(r))continue;let e=Pu(n,!0),i=Pu(r.providerId),a=Pu(r.modelId),o=Pu(r.variant);!e||!i||!a||r.variant!==void 0&&!o||t.push([e,{providerId:i,modelId:a,...o?{variant:o}:{}}])}return Object.fromEntries(t)},Iu=e=>{if(!mu(e))return;let t=Pu(e.agentName,!0),n=Pu(e.providerId),r=Pu(e.modelId),i=Pu(e.variant);if(!(!t||!n||!r||e.variant!==void 0&&!i))return{agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}}},Lu=(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}:{}}},Ru=(e,t,n)=>Iu(e)??Lu(t,n),zu=(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`}),Bu=e=>{if(!mu(e))return{};let t=su(e.catalogTransportIdentity),n={};for(let t of[`activeDirectoryKey`]){let r=su(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(mu(e.directoryScoped))for(let[t,n]of Object.entries(e.directoryScoped)){if(!mu(n))continue;let e=Fu(n.agentModelSelections),i=Pu(n.lastSelectedAgentName,!0),a=Ru(n.lastUserSelection,i,e);r[t]={...zu(),providers:[],agents:[],currentProviderId:su(n.currentProviderId)??``,currentModelId:su(n.currentModelId)??``,currentVariant:su(n.currentVariant),currentAgentName:su(n.currentAgentName),selectedProviderId:au(su(n.selectedProviderId)),agentModelSelections:e,lastSelectedAgentName:a?.agentName??i,lastUserSelection:a,defaultProviders:{},selectionSource:n.selectionSource===`manual`?`manual`:`auto`}}let i=Fu(e.agentModelSelections),a=Pu(e.lastSelectedAgentName,!0),o=Ru(e.globalLastUserSelection,a,i)??(()=>{let t=su(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),s=u();return t&&t!==s?{...n,catalogTransportIdentity:s,directoryScoped:{},providers:[],agents:[],defaultProviders:{},currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,globalLastUserSelection:void 0,providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{}}:{...n,catalogTransportIdentity:s,directoryScoped:r,providers:[],agents:[],defaultProviders:{},currentProviderId:su(e.currentProviderId)??``,currentModelId:su(e.currentModelId)??``,currentVariant:su(e.currentVariant),currentAgentName:su(e.currentAgentName),selectedProviderId:au(su(e.selectedProviderId)),agentModelSelections:i,lastSelectedAgentName:o?.agentName??a,lastUserSelection:(()=>{let t=su(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),globalLastUserSelection:o}},Vu=({agents:e,currentAgentName:t,currentProviderId:n,currentModelId:r,currentVariant:i,selectionSource:a,resolvedAgentName:o,resolvedProviderId:s,resolvedModelId:c,resolvedVariant:l})=>{let u=Ft(e,t)?.name??t,d=!!n&&!!r,f=a===`manual`&&(!!u||d);return{agentName:f?u??o:o,providerId:f&&d?n:s,modelId:f&&d?r:c,variant:f&&d?i:l,selectionSource:f?`manual`:`auto`}},Hu=null,Uu=new Map,Wu=new Map,Gu={},Ku={},qu=hr(),Ju=qu&&{flush:()=>qu.flush(),getItem:e=>{let t=u(),n=qu.getItem(Te(e,t)),r=n=>u()===t?n||!pe()?n:qu.getItem(e):null;return n instanceof Promise?n.then(r):r(n)},setItem:(e,t)=>qu.setItem(Te(e,t.state.catalogTransportIdentity??u()),t),removeItem:e=>qu.removeItem(Te(e))},W=ke()(Me(Ae((e,t)=>({activeDirectoryKey:Cu(),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=f(),a=Eu(n);if(!a){wn(`activateDirectory:skippedUnknownDirectory`,{directory:n});return}let o=xu(a),s=!1,c=!1,l=!1;e(e=>{let t=e.directoryScoped[o],n=t?.providers??[],r=t?.defaultProviders??{},i=t?.agents??[];s=n.length>0,c=i.length>0,l=!!t?.agents.length;let a=e.isConnected&&!s,u=e.isConnected&&!c;return t?{activeDirectoryKey:o,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,[o]:a},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[o]:u}}:{activeDirectoryKey:o,providers:n,defaultProviders:r,agents:i,currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:a},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[o]:u}}}),c&&s&&!l&&t().applyDefaultModelAgentSelection(),t().isConnected&&((!s||r?.refreshProviders)&&await t().loadProviders({directory:Su(o),source:r?.source??`activateDirectory`,forceRefresh:r?.refreshProviders}),f()===i&&t().activeDirectoryKey===o&&(c||await t().loadAgents({directory:Su(o),source:`activateDirectory`})))},invalidateProviderCache:e=>{let t=u();nc(e??null,t)},loadProviders:async n=>{let r=n?.directory??Su(t().activeDirectoryKey),i=Eu(r);if(!i){wn(`loadProviders:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`});return}let a=i??B.getDirectory()??null,o=xu(i),s=n?.source??`unknown`,c=u(),l=f(),d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&Gu[o]===p&&Eu(r)===i,p=(Gu[o]??0)+1;Gu[o]=p,wn(`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();wn(`loadProviders:start`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let l=t().directoryScoped[o],u=l?.providers??[],f=l?.defaultProviders??{};try{let t=await xn(`loadProviders:api`,()=>n?.forceRefresh?ec(Su(o),c):Qs(Su(o),c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),l=cu(t.providers),f=lu(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=du({providers:l,currentProviderId:r,currentModelId:i,currentVariant:a,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant}),u=e.activeDirectoryKey===o?e.selectedProviderId:n.selectedProviderId,p=u===eu||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={directoryScoped:{...e.directoryScoped,[o]:m}};return e.activeDirectoryKey===o&&(h.providers=l,h.defaultProviders=f,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();wn(`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),wn(`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={directoryScoped:{...e.directoryScoped,[o]:t}};if(e.activeDirectoryKey===o&&(n.providers=u,n.defaultProviders=f,!e.currentProviderId&&!e.currentModelId&&e.settingsDefaultModel)){let r=iu(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(()=>{Gu[o]===p&&e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:!1}}))})},refreshMissingCatalogs:e=>{let n=Su(t().activeDirectoryKey),r=f(),i=JSON.stringify([u(),r,n]),a=Uu.get(i);if(a)return a;let o=e?.source??`refreshMissingCatalogs`,s=(async()=>{t().providers.length===0&&await t().loadProviders({directory:n,source:o,forceRefresh:!0}),f()===r&&Su(t().activeDirectoryKey)===n&&t().agents.length===0&&await t().loadAgents({directory:n,source:o,forceRefresh:!0})})().finally(()=>{Uu.delete(i)});return Uu.set(i,s),s},refreshCatalogsOnPickerOpen:e=>{let n=Su(t().activeDirectoryKey),r=JSON.stringify([u(),f(),n]),i=Wu.get(r);if(i)return i;let a=e?.source??`refreshCatalogsOnPickerOpen`,o=Promise.all([t().loadProviders({directory:n,source:a,forceRefresh:!0}),t().loadAgents({directory:n,source:a,forceRefresh:!0})]).then(()=>void 0).finally(()=>{Wu.delete(r)});return Wu.set(r,o),o},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??Su(t().activeDirectoryKey),i=Eu(r);if(!i)return wn(`loadAgents:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`}),!1;let a=i??B.getDirectory()??null,o=xu(i),s=n?.source??`unknown`,c=u(),l=f(),d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&Ku[o]===p&&Eu(r)===i,p=(Ku[o]??0)+1;Ku[o]=p,wn(`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();wn(`loadAgents:start`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let l=t().directoryScoped[o]?.agents??[];try{let u=Su(o);(It(r??void 0)??It(u??void 0))&&wn(`loadAgents:syncConfigHit`,{directoryKey:o,source:s});let[f,p]=await Promise.all([xn(`loadAgents:api`,()=>n?.forceRefresh?tc(u,c):$s(u,c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),ru(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(dr);if(!d())return!1;if(m.length===0)return!0;let h=It(r??void 0)??It(u??void 0),g=h!==void 0,_=g?su(h.default_agent):void 0,v=g?Ws(h.model):void 0,y=t().activeDirectoryKey===o?t().providers:t().directoryScoped[o]?.providers??[],b=su(t().settingsZenModel),x=su(p.zenModel),S=pu({providers:y,settingsZenModel:b}),C=pu({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:l,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;d()&&k&&w&&xe({zenModel:w,gitProviderId:``,gitModelId:``}).catch(()=>{});let A=t(),j=A.directoryScoped[o]?.lastUserSelection??(A.activeDirectoryKey===o?A.lastUserSelection:void 0),M=fu({agents:m,providers:y,settingsDefaultAgent:p.defaultAgent,settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,opencodeDefaultAgent:D,opencodeDefaultModel:O,projectLastUserSelection:j,globalLastUserSelection:A.globalLastUserSelection}),N=M.agentName??m[0].name,ee=M.providerId,te=M.modelId,ne=M.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=Vu({agents:m,providers:y,currentAgentName:r,currentProviderId:i,currentModelId:a,currentVariant:s,selectionSource:l,resolvedAgentName:N,resolvedProviderId:ee,resolvedModelId:te,resolvedVariant:ne}),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())return!1;let re=typeof performance<`u`?performance.now():Date.now();return wn(`loadAgents:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(re-i),agents:m.length}),!0}catch(t){return!d()||(console.error(`Failed to load agents:`,t),wn(`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:l},r={directoryScoped:{...e.directoryScoped,[o]:n}};return e.activeDirectoryKey===o&&(r.agents=l),r}),!1}})().finally(()=>{Ku[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=Ve(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=Hl.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:ou(e.selectedProviderId,t),selectionSource:`manual`};return{currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:ou(e.selectedProviderId,t),selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[i]:a}}})},d=Ft(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?Hl.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=Hl.getState().getAgentModelForSession(n,l);if(e&&uu(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=iu(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}=fu({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:ou(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=ou(e.selectedProviderId,p)),r})},applyOpenCodeConfigDefaults:(n,r=`syncConfig`,i)=>{let a=n??Su(t().activeDirectoryKey),o=Du(a),s=Su(o),c=i??It(a??void 0)??It(s??void 0);if(!c)return;let l=su(c.default_agent),u=Ws(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??zu(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=fu({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=Vu({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:ou(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!==ou(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=ou(x,S.providerId))),wn(`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 pu({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)),xe({dictationEnabled:t}).catch(()=>{})},setSttProvider:t=>{e({sttProvider:t}),typeof window<`u`&&localStorage.setItem(`sttProvider`,t),xe({sttProvider:t}).catch(()=>{})},setSttServerUrl:t=>{e({sttServerUrl:t}),typeof window<`u`&&localStorage.setItem(`sttServerUrl`,t),xe({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),xe({sttModel:t}).catch(()=>{})},setSttLocalModel:t=>{e({sttLocalModel:t}),typeof window<`u`&&localStorage.setItem(`sttLocalModel`,t),xe({sttLocalModel:t}).catch(()=>{})},setSttLanguage:t=>{e({sttLanguage:t}),typeof window<`u`&&localStorage.setItem(`sttLanguage`,t),xe({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 yu(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()=>{wn(`checkConnection:start`);let n=0,r=null;for(;n<5;)try{wn(`checkConnection:attempt`,{attempt:n+1});let r=await xn(`checkConnection:health`,()=>B.checkHealth(),{attempt:n+1});if(!r&&n<4){let r=t().hasEverConnected;e({isConnected:!1,connectionPhase:r?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),n+=1,await _u(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`}),wn(`checkConnection:end`,{healthy:r,attempts:n+1}),r}catch(e){r=e,n+=1,await _u(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`}),wn(`checkConnection:end`,{healthy:!1,attempts:5}),!1},initializeApp:async()=>{if(Hu)return wn(`initializeApp:deduped`),Hu;let n=(async()=>{let n=typeof performance<`u`?performance.now():Date.now();wn(`initializeApp:start`);try{if(Dt(),!await t().checkConnection()){e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`});return}wn(`initApp:skipped`,{reason:`checkConnection already verified health`});let r=B.getDirectory()??Ke.getState().currentDirectory??Su(t().activeDirectoryKey),i=Eu(r),a=i??Tu();if(!a){wn(`initializeApp:noProjectConfigDirectory`),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});return}!i&&r!==a&&(wn(`initializeApp:normalizedUnknownDirectoryToProject`,{initialDirectory:r,configDirectory:a}),B.setDirectory(a),Ke.getState().setDirectory(a,{showOverlay:!1}));let o=xu(a);t().activeDirectoryKey!==o&&e(e=>{let t=e.directoryScoped[o]??zu();return{activeDirectoryKey:o,providers:t.providers,agents:t.agents,defaultProviders:t.defaultProviders,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`}}),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();wn(`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`}),wn(`initializeApp:error`,{error:n instanceof Error?n.message:String(n)})}})().finally(()=>{Hu=null});return Hu=n,n},prewarmProjectConfigs:async e=>{!t().isConnected||Du(e??Su(t().activeDirectoryKey))!==t().activeDirectoryKey||await t().refreshMissingCatalogs({source:`activeConfigPrewarm`})},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 Ft(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 gu(e,i)},getVisibleAgents:()=>{let{agents:e}=t();return Xc(e)}}),{name:`config-store`,version:5,storage:Ju,migrate:e=>Bu(e),merge:(e,t)=>Nu({...t,...Bu(e)}),partialize:e=>{let t=(t,n)=>{let r=Iu(n?.lastUserSelection)??Lu(Pu(n?.lastSelectedAgentName,!0),Fu(n?.agentModelSelections))??(t===e.activeDirectoryKey?Iu(e.lastUserSelection):void 0);return{currentProviderId:n?.currentProviderId??(t===e.activeDirectoryKey?e.currentProviderId:``),currentModelId:n?.currentModelId??(t===e.activeDirectoryKey?e.currentModelId:``),currentVariant:n?.currentVariant??(t===e.activeDirectoryKey?e.currentVariant:void 0),currentAgentName:n?.currentAgentName??(t===e.activeDirectoryKey?e.currentAgentName:void 0),selectedProviderId:au(n?.selectedProviderId??(t===e.activeDirectoryKey?e.selectedProviderId:``)),agentModelSelections:{},lastSelectedAgentName:r?.agentName??Pu(n?.lastSelectedAgentName,!0),lastUserSelection:r,selectionSource:n?.selectionSource??(t===e.activeDirectoryKey?e.selectionSource:void 0)}},n=Object.fromEntries(Object.entries(e.directoryScoped).map(([e,n])=>[e,t(e,n)]));e.activeDirectoryKey&&!n[e.activeDirectoryKey]&&(n[e.activeDirectoryKey]=t(e.activeDirectoryKey,void 0));let r=Iu(e.globalLastUserSelection)??Iu(e.lastUserSelection);return{activeDirectoryKey:e.activeDirectoryKey,catalogTransportIdentity:e.catalogTransportIdentity,directoryScoped:n,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:au(e.selectedProviderId),agentModelSelections:{},lastSelectedAgentName:r?.agentName??Pu(e.lastSelectedAgentName,!0),lastUserSelection:Iu(e.lastUserSelection)??r,globalLastUserSelection:r,speechRate:e.speechRate,speechPitch:e.speechPitch,speechVolume:e.speechVolume}}})));typeof window<`u`&&(window.__zustand_config_store__=W);var Yu=async e=>{await W.getState().loadProviders({source:e,forceRefresh:!0})},Xu=null;Xu||=yo(async e=>{let t=[];if(B.clearConfigCache(),xo(e,`agents`)){let{loadAgents:e}=W.getState();t.push(e({source:`configChange:agents`,forceRefresh:!0}).then(()=>{}))}xo(e,`providers`)&&t.push(Yu(`configChange:providers`)),t.length>0&&await Promise.all(t)});var Zu=null,Qu=null;Qu||=ft((e,t)=>{W.getState().applyOpenCodeConfigDefaults(e,`syncConfig`,t)}),typeof window<`u`&&!Zu&&(Zu=Ke.subscribe((e,t)=>{let n=xu(e.currentDirectory),r=xu(t.currentDirectory);n!==r&&(wn(`directoryStore:changed`,{previous:r,next:n}),W.getState().activateDirectory(e.currentDirectory))}));var $u=e=>typeof e==`number`&&Number.isFinite(e)?e:null,ed=e=>{let t=e.metadata;return $u(t?.openchamber?.titleRefresh?.activityUpdatedAt)??$u(e.time?.updated)??$u(e.time?.created)??0},td=[`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 nd(e){if(!e)return!1;let t=String(e instanceof Error?e.message:e).toLowerCase();if(td.some(e=>t.includes(e)))return!0;let n=e?.status;return typeof n==`number`&&n>=500&&n<600}async function rd(e,t={}){let{attempts:n=3,delay:r=500,factor:i=2,maxDelay:a=1e4,retryIf:o=nd}=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 id=[`file`,`status`,`additions`,`deletions`],ad=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},od=e=>e===void 0?!1:!e||typeof e!=`object`||Array.isArray(e)?!0:Object.keys(e).some(e=>e!==`messageID`&&e!==`partID`),sd=e=>typeof e.before==`string`||typeof e.after==`string`||typeof e.from==`string`||typeof e.to==`string`||typeof e.patch==`string`;function cd(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!sd(t))return e;let n={};for(let e of id)e in t&&t[e]!==void 0&&(n[e]=t[e]);return n}function ld(e){if(!Array.isArray(e))return e;let t=!1,n=e.map(e=>{let n=cd(e);return n!==e&&(t=!0),n});return t?n:e}function ud(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=ld(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 dd(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=ud(r?n:e);return i===(r?n:e)?n:i}function fd(e){let t=e;if(!(od(t.revert)||Array.isArray(t.summary?.diffs)||typeof t.summary?.diffCount==`number`||typeof t.summary?.hasDiffs==`boolean`||`permission`in t))return e;let n=dd(e),r={...n};delete r.permission;let i=ad(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 pd(e){return ud(e)}var md=new Set([`smartfetch-secondary`]),hd=e=>typeof e==`string`&&e.length>0,gd=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`&&!!(hd(r.assistant?.assistantID)||hd(r.scheduledTask?.taskID)||hd(r.smallModel?.purpose)||hd(r.llm?.purpose))},_d=e=>{let t=e.parentID;return typeof t==`string`&&t.trim()?t:null},vd=e=>!(e.title&&md.has(e.title)||_d(e)||gd(e)),yd=e=>{let t=e.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:0},bd=e=>{let t=e.time?.archived;return typeof t==`number`&&Number.isFinite(t)&&t>0},xd=e=>{let t=Xe(e);return fd({...t,directory:t.directory||e.directory})};async function Sd(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 rd(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=>xd(e));if(l.length===0)break;let u=l.filter(e=>(t.archived?!bd(e):bd(e))||t.start!==void 0&&yd(e)<t.start||i!==void 0&&yd(e)>=i?!1:vd(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 Cd=`/api/magic-prompts`,wd=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.
|
|
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||Qr(e)?$r(e):e instanceof Error&&e.message===`SSE response exceeds buffer limit`?e:Error(`SSE response read failed`)}finally{d||await ti(i),i.releaseLock()}},ri=null,ii=null,ai=null,oi=0,si=null,ci=new Set,li=new Map,ui=e=>e===`session-index-changed`||e===`message-queue-changed`||e===`assistants-changed`,di=()=>{li.clear()},fi=e=>li.get(e),pi=(e,t)=>{let n=li.get(e);(n===void 0||t>n)&&li.set(e,t)},mi=3e4,hi=45e3,gi=()=>{ai&&=(clearTimeout(ai),null)},_i=()=>{if(ii||ci.size===0)return;let e=Math.min(1e3*2**Math.min(oi,5),mi);ii=setTimeout(()=>{ii=null,oi+=1,Ci()},e)},vi=()=>{gi();let e=ri;ri=null,e?.controller.abort()},yi=e=>{if(gi(),ci.size===0||ri!==e)return;let t=setTimeout(()=>{ri===e&&ai===t&&(ai=null,vi(),_i())},hi);ai=t},bi=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}},xi=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}:{}}},Si=e=>{let t=xi(e);if(t){t.type===`event-stream-ready`&&(oi=0),ui(t.type)&&`revision`in t&&pi(t.type,t.revision);for(let e of ci)try{e(t)}catch{}}},Ci=()=>{if(typeof window>`u`||ci.size===0||ri)return;let e={controller:new AbortController};ri=e,ni(`/api/openchamber/events`,{signal:e.controller.signal,onOpen:()=>{ri===e&&yi(e)},onActivity:()=>{ri===e&&yi(e)},onMessage:t=>{if(ri!==e)return;let n=bi(t);n&&Si(n)}}).then(()=>{ri===e&&(ri=null,gi(),_i())},()=>{ri===e&&(ri=null,gi(),e.controller.signal.aborted||_i())})},wi=()=>{si||typeof window>`u`||(si=s(()=>{di(),ii&&=(clearTimeout(ii),null),vi(),oi=0,Ci()}))},Ti=()=>{si?.(),si=null},Ei=e=>(ci.add(e),wi(),Ci(),()=>{ci.delete(e),ci.size===0&&(di(),ii&&=(clearTimeout(ii),null),oi=0,vi(),Ti())}),Di=!1,Oi=Promise.resolve(),ki=null,Ai=()=>{Di||(Di=!0,Oi=new Promise(e=>{ki=e}))},ji=async()=>Oi,Mi=()=>{if(!Di)return;Di=!1;let e=ki;ki=null,e?.()},Ni=`openchamber_input_draft_metadata_v1`,Pi=`openchamber_input_draft_metadata_migration_v1`,Fi=`openchamber_chat_input_draft_`,Ii=`openchamber_chat_confirmed_mentions_`,Li=()=>({ok:!1,error:{code:`unavailable`}}),Ri=()=>({ok:!1,error:{code:`cancelled`}}),zi=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),Bi=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),Vi=(e,t)=>Object.keys(e).every(e=>t.includes(e)),Hi=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,Ui=e=>typeof e==`string`&&e.length>0,Wi=e=>({read:async t=>{if(!e)return Li();try{return{ok:!0,value:e.getItem(t)}}catch(e){return zi(e)}},write:async(t,n)=>{if(!e)return Li();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return zi(e)}},remove:async t=>{if(!e)return Li();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return zi(e)}},keys:async()=>{if(!e)return Li();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 zi(e)}}}),Gi=()=>{try{return Wi(typeof window>`u`?null:window.localStorage)}catch{return Wi(null)}},Ki=(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}},qi=async e=>{let t=await e.keys();if(!t.ok)return t;let n=new Set;for(let e of t.value)e.startsWith(Fi)&&n.add(e.slice(29)),e.startsWith(Ii)&&n.add(e.slice(36));let r=[];for(let i of n){let n=`${Fi}${i}`,a=`${Ii}${i}`,[o,s]=await Promise.all([e.read(n),e.read(a)]);if(!o.ok)return o;if(!s.ok)return s;r.push(Ki(i,o.value,s.value,[n,a].filter(e=>t.value.includes(e))))}return{ok:!0,value:r}},Ji=e=>{if(!(!Bi(e)||!Vi(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]}},Yi=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&Ui(t[0])&&(t[1]===`session`||t[1]===`draft`)&&Ui(t[2])&&e===JSON.stringify(t)}catch{return!1}},Xi=e=>{if(!Bi(e)||!Vi(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)&&!Ui(e.claimedTransportIdentity))&&!(r&&!n)&&!(t&&(!n||!r)))return{complete:t,claimedTransportIdentity:e.claimedTransportIdentity,captured:n,markerCommitted:r,cleanupComplete:t}},Zi=e=>{if(!Bi(e)||!Vi(e,[`version`,`drafts`,`tombstones`,`migration`,`legacy`])||e.version!==1||!Bi(e.drafts)||!Bi(e.tombstones)||!Bi(e.legacy)||!Vi(e.legacy,[`new`,`entries`])||!Bi(e.legacy.entries))return;let t=Xi(e.migration);if(!t)return;let n={};for(let[t,r]of Object.entries(e.drafts)){let e=ee(r);if(!e||t!==P(e.key))return;n[t]=e}let r={};for(let[t,n]of Object.entries(e.tombstones)){if(!Yi(t)||!Hi(n))return;r[t]=n}let i={};for(let[t,n]of Object.entries(e.legacy.entries)){let e=Ji(n);if(!e||t!==e.suffix||t===`new`)return;i[t]=e}let a=e.legacy.new===void 0?void 0:Ji(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}}},Qi=(e=``)=>({version:1,drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:e,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),$i=e=>{try{return{ok:!0,value:JSON.stringify(e)}}catch{return{ok:!1,error:{code:`serialization`}}}},ea=async e=>{let t=await e.read(Ni);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:null};try{let e=Zi(JSON.parse(t.value));return e?{ok:!0,value:e}:{ok:!1,error:{code:`corrupt`}}}catch{return{ok:!1,error:{code:`corrupt`}}}},ta=async(e,t)=>{let n=Zi(t);if(!n)return{ok:!1,error:{code:`corrupt`}};let r=$i(n);return r.ok?e.write(Ni,r.value):r},na=e=>Bi(e)&&Vi(e,[`version`,`claimedTransportIdentity`])&&e.version===1&&Ui(e.claimedTransportIdentity)?{version:1,claimedTransportIdentity:e.claimedTransportIdentity}:void 0,ra=e=>$i({version:1,claimedTransportIdentity:e}),ia=(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}}},aa=e=>[...new Set([e.legacy.new,...Object.values(e.legacy.entries)].flatMap(e=>e?.keys??[]))],oa=new WeakMap,sa=e=>{let t=oa.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=Zi(t);return n?i?a(async()=>i?ta(e,n):Li()):Promise.resolve(Li()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},migrate:(t,n={})=>{if(r)return r;let o=a(async()=>{let r=await ea(e);if(!r.ok)return r;let a=r.value??Qi(),o=i&&(n.persistenceEnabled??!0);if(!a.migration.captured){let n=await qi(e);if(!n.ok)return n;if(!o)return{ok:!0,value:ia(a,n.value,``)};if(a=ia(a,n.value,t),!i)return{ok:!0,value:a};let r=await ta(e,a);if(!r.ok)return r}if(!i||!(n.persistenceEnabled??!0)){let t=await qi(e);return t.ok?{ok:!0,value:a}:t}let s=await e.read(Pi);if(!s.ok)return s;if(s.value!==null)try{let t=na(JSON.parse(s.value));if(!t)return{ok:!1,error:{code:`corrupt`}};if(t.claimedTransportIdentity!==a.migration.claimedTransportIdentity){let t=ra(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Pi,t.value);if(!n.ok)return n}}catch{return{ok:!1,error:{code:`corrupt`}}}else{let t=ra(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Pi,t.value);if(!n.ok)return n}if(a.migration.cleanupComplete)return{ok:!0,value:a};for(let t of aa(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 ta(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 oa.set(e,o),o},ca=e=>{let t=sa(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=Zi(e);return t?n?new Promise(e=>{i.push({snapshot:t,resolve:e}),s()}):Promise.resolve(Li()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},cancelPending:()=>{let e=i;i=[],e.forEach(({resolve:e})=>e(Ri())),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(Ri()))}await(r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve()),await t.setEnabled(e),await t.flush()}}},la=`openchamber-input-drafts`,ua=1,da=`blobs`,fa=`blobRefs`,pa=class extends Error{code;constructor(e){super(e),this.code=e}},ma=e=>({ok:!1,error:{code:e instanceof pa?e.code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota-exceeded`:e instanceof DOMException&&e.name===`AbortError`?`transaction-aborted`:`transaction-failed`}}),ha=e=>{if(!(e instanceof Blob)&&!ne(e))throw new pa(`invalid-value`)},ga=e=>{if(!e)throw new pa(`invalid-value`)},_a=(e,t)=>({id:S(e),blobID:t,transportIdentity:e.transportIdentity,ownerKind:e.owner.kind,ownerID:e.owner.ownerID}),va=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}`},ya=async(e,t)=>(e.fingerprint??await va(e.value))===t,ba=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)}},xa=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}},Sa=(e,t)=>{let n=xa(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))},Ca=(e=wa())=>{let t=async(t,n)=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=await e.getBlobRef(S(t));return!r||n!==void 0&&r.blobID!==n?!1:(await e.deleteBlobRef(r.id),await ba(e),(await e.getAllBlobRefs()).some(e=>e.blobID===r.blobID)||await e.deleteBlob(r.blobID),!0)})}}catch(e){return ma(e)}};return{put:async(t,n)=>{try{ga(t),ha(n);let r=await va(n);return await e.transaction(async e=>{let i=await e.getBlob(t);if(i&&!await ya(i,r))throw new pa(`blob-id-conflict`);i||await e.putBlob({id:t,value:n,refCount:0,fingerprint:r})}),{ok:!0,value:void 0}}catch(e){return ma(e)}},putAndRetain:async(t,n,r)=>{try{ga(n),ha(r);let i=await va(r);return await e.transaction(async e=>{let a=S(t),o=await e.getBlobRef(a);if(o&&o.blobID!==n)throw new pa(`blob-id-conflict`);let s=await e.getBlob(n);if(s&&!await ya(s,i))throw new pa(`blob-id-conflict`);s||await e.putBlob({id:n,value:r,refCount:0,fingerprint:i}),o||await e.putBlobRef(_a(t,n)),await ba(e)}),{ok:!0,value:void 0}}catch(e){return ma(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 ma(e)}},readReference:async t=>{try{return{ok:!0,value:(await e.transaction(e=>e.getBlobRef(S(t))))?.blobID}}catch(e){return ma(e)}},retain:async(t,n)=>{try{return ga(n),await e.transaction(async e=>{let r=await e.getBlobRef(S(t));if(r&&r.blobID!==n)throw new pa(`blob-id-conflict`);if(!await e.getBlob(n))throw new pa(`missing-blob`);r||await e.putBlobRef(_a(t,n)),await ba(e)}),{ok:!0,value:void 0}}catch(e){return ma(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)Sa(a,n)&&t.get(i)!==a.blobID&&(await e.deleteBlobRef(i),r.push(i));for(let[r,s]of t){let t=xa(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 ba(e,!0),{released:r,repaired:i,missing:a}})}}catch(e){return ma(e)}},reconcileOwnerReferences:async(t,n)=>{let r=new Map;for(let[e,i]of n)r.set(S({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 ba(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 ma(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 ma(e)}}}},wa=()=>({transaction:async e=>{let t=await Ta(),n=t.transaction([da,fa],`readwrite`),r=n.objectStore(da),i=n.objectStore(fa),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()}}}),Ta=()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(new pa(`database-unavailable`));return}let n=indexedDB.open(la,ua),r=!1,i=()=>{r||(r=!0,t(new pa(`database-unavailable`)))};n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(da)||e.createObjectStore(da,{keyPath:`id`}),e.objectStoreNames.contains(fa)||e.createObjectStore(fa,{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}),Ea=()=>({drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:``,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),Da=e=>({version:1,drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}),Oa=e=>{let t=Da(e),n=ka(JSON.parse(JSON.stringify(t)));return{drafts:n.drafts,tombstones:n.tombstones,migration:n.migration,legacy:n.legacy}},ka=e=>{let t=Zi(e);if(!t)throw Error(`invalid draft snapshot`);return t},Aa=e=>e instanceof Map?[...e.entries()]:Object.entries(e??{}),ja=e=>typeof e==`string`?e:P(e),Ma=[`session`,`draft`,`surface`],Na=e=>({transportIdentity:e.transportIdentity,owner:{kind:e.owner.kind,ownerID:e.owner.ownerID},attachmentOccurrenceRefID:e.attachmentOccurrenceRefID}),Pa=e=>JSON.parse(JSON.stringify(e)),Fa=e=>e.phase===`metadata`?{phase:`metadata`,error:{code:e.error.code}}:{phase:`blob`,error:{...e.error},...e.reference?{reference:Na(e.reference)}:{}},Ia=e=>({status:e.status,keys:[...e.keys],errors:e.errors.map(Fa),cleanupErrors:e.cleanupErrors.map(Fa)}),La=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,Ra=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&Ma.includes(t[1])&&typeof t[2]==`string`&&t[0].length>0&&t[2].length>0}catch{return!1}},za=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:Pa(t)}]:[]),Ba=e=>{let t=new Map;for(let n of Object.values(e))for(let e of za(n))t.set(S(e.reference),e);return t},Va=(e,t)=>({phase:`blob`,error:{...e},...t?{reference:Na(t)}:{}}),Ha=(e,t=[])=>({status:e,keys:t,errors:[],cleanupErrors:[]}),Ua=e=>e?.attachment.locator.kind===`blob`?e.attachment.locator.blobID:``,Wa=(e,t,n={})=>{let r=Ea(),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?Ia(e):e)},u=async(t=r.drafts)=>{let n=[],i=new Map([...Ba(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(Na(r.reference),r.expectedBlobID);a.ok?c.delete(t):n.push(Va(a.error,r.reference))}return n},d=async(t,n,r,i)=>{let o=Na(t),s=await e.releaseIfMatches(o,n);s.ok||(c.set(S(o),{reference:Na(o),expectedBlobID:n,generation:a,reason:i}),r.push(Va(s.error,o)))},f=async(t,n)=>{let r=t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,i=Na(t.reference),a=Pa(t.attachment),o=await e.readReference(i);if(!o.ok)return{acquired:!1,error:Va(o.error,i)};if(o.value&&o.value!==r)return{acquired:!1,error:Va({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:Va(t.error,i)};let o=await n?.(Na(i),Pa(a));if(o===void 0)return{acquired:!1,error:Va({code:`runtime-value-missing`},i)};let s=await e.putAndRetain(i,r,o);return s.ok?{acquired:!0}:{acquired:!1,error:Va(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:Va(t.error,i)}}if(s.error.code!==`missing-blob`)return{acquired:!1,error:Va(s.error,i)};let c=await n?.(Na(i),Pa(a));if(c===void 0)return{acquired:!1,error:Va({code:`runtime-value-missing`},i)};let l=await e.putAndRetain(i,r,c);return l.ok?{acquired:!0}:{acquired:!1,error:Va(l.error,i)}};return{seed:t=>l(async()=>{if(!i)return Ha(`disabled`);if(o)return{...Ha(`failed`),errors:[Va({code:`invalid-record`})]};let n;try{if(!t)n=Ea();else{let e=ka(JSON.parse(JSON.stringify(t)));n={drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}}}catch{return{...Ha(`failed`),errors:[Va({code:`invalid-record`})]}}let a=Ba(n.drafts),s=await e.reconcileReferences(new Map([...a].map(([e,t])=>[e,Ua(t)])),{ownerKinds:Ma});return s.ok?(r=n,o=!0,{...Ha(`committed`),errors:s.value.missing.map(e=>Va({code:`missing-blob`},a.get(e)?.reference))}):{...Ha(`failed`),errors:[Va(s.error)]}}),commit:e=>{let n=[...Aa(e.drafts).map(([e])=>e),...(e.delete??[]).map(ja)];return i?l(async()=>{if(!o)return Ha(`unseeded`,n);if(!i)return Ha(`disabled`,n);let s=a,c=[],l=Oa(r),p=Aa(e.drafts),m=Aa(e.tombstones),h=(e.delete??[]).map(ja);if(p.some(([e,t])=>!Ra(e)||!La(t.revision))||m.some(([e,t])=>!Ra(e)||!La(t))||h.some(e=>!Ra(e))||new Set(p.map(([e])=>e)).size!==p.length||m.some(([e])=>p.some(([t])=>t===e)))return{...Ha(`failed`,n),errors:[Va({code:`invalid-record`})]};try{for(let[e,t]of p){let n=ee(t);if(!n||e!==P(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=ka(Da(l));l.drafts=t.drafts,l.tombstones=t.tombstones,l.migration=t.migration,l.legacy=t.legacy}catch{return{...Ha(`failed`,n),errors:[Va({code:`invalid-record`})],cleanupErrors:c}}if(!await e.isCurrent())return Ha(`stale`,n);let g=Ba(r.drafts),_=Ba(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,Ua(_.get(S(e))),c,`acquire-failed`);return{...Ha(`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,Ua(_.get(S(e))),c,`stale`);return{...Ha(`stale`,n),cleanupErrors:c}}if(!i||s!==a){for(let e of v.reverse())await d(e,Ua(_.get(S(e))),c,`disabled`);return{...Ha(`disabled`,n),cleanupErrors:c}}let y=await t.persist(Da(l));if(!y.ok){for(let e of v.reverse())await d(e,Ua(_.get(S(e))),c,`metadata-failed`);return{...Ha(`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{...Ha(`committed`,n),cleanupErrors:c}}):Promise.resolve(Ia(Ha(`disabled`,n)))},reconcile:()=>l(async()=>{if(!o)return Ha(`unseeded`);if(!i)return Ha(`disabled`);let t=await u(),n=new Map([...Ba(r.drafts)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``])),a=await e.reconcileReferences(n,{ownerKinds:Ma}),s=a.ok?a.value.missing.map(e=>Va({code:`missing-blob`},Ba(r.drafts).get(e)?.reference)):[Va(a.error)];return{status:a.ok?`committed`:`failed`,keys:[],errors:s,cleanupErrors:t}}),retryCleanup:()=>l(async()=>({...Ha(`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}}},Ga=`openchamber-composer-reference-draft`,Ka=`openchamber-pasted-text-draft`,qa=e=>Array.from(e).length,Ja=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),Ya=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,Xa=(e,t)=>{let n=[],r=[],i=0;for(let a=0;a<Math.min(t.length,ue.referenceCount);a+=1){let o=t[a];if(!(!Ja(o)||!Ya(o.id,ue.idLength)||!Ya(o.token,ue.displayLength)||typeof o.text!=`string`||o.text.length>ue.pastePayloadLength||typeof o.characterCount!=`number`||!Number.isSafeInteger(o.characterCount)||o.characterCount!==qa(o.text)||typeof o.index!=`number`||!Number.isSafeInteger(o.index)||o.index<1))for(let t=e.indexOf(o.token);t>=0&&n.length<ue.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>ue.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)},Za=e=>{try{let t=JSON.parse(e);if(!Ja(t)||typeof t.text!=`string`)return{text:e,references:[]};if(t.type===Ga)return(t.version===2?ge(t.text,t.references):void 0)??{text:t.text,references:[]};if(t.type===Ka){let e=t.version===1&&Array.isArray(t.references)?Xa(t.text,t.references):[];return ge(t.text,e)??{text:t.text,references:[]}}}catch{}return{text:e,references:[]}},Qa=`file://`,$a=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(`/`)},eo=e=>{let t=e.replace(/\\/g,`/`).trim();return t.toLowerCase().startsWith(Qa)?t:`${Qa}${$a(t)}`},to=(e,t)=>`${e}\u0000${t}`,no=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)}),ro=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)},io=(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,ao=e=>({version:1,key:e,revision:1,text:``,attachments:[],syntheticParts:[],mentions:[]}),oo=(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}),so=((e={})=>{let t=e.sink??Gi(),n=e.repository??sa(t),r=e.coordinator??ca(t),i=e.blobStore??Ca(),a=e.durability??Wa(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,x,S=new Set,C=new Map,E=new Set;return ke()((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=>ee(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)),te=(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))}}},re=()=>e.createID?.()??le(),ie=async(e,t)=>{let n=t instanceof File?t:new File([t],e.filename,{type:e.mimeType});return{id:e.attachmentID,file:n,dataUrl:typeof t==`string`?t:await no(n),mimeType:e.mimeType,filename:e.filename,size:e.size,source:e.source,...e.serverPath?{serverPath:e.serverPath}:{},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource?{vscodeSource:e.vscodeSource}:{}}},ae=e=>{let t=e.errors[0]??e.cleanupErrors[0];return t?.phase===`metadata`||t?.phase===`blob`&&[`blob-id-conflict`,`database-unavailable`,`invalid-value`,`missing-blob`,`quota-exceeded`,`transaction-aborted`,`transaction-failed`].includes(t.error.code)?t.error.code:`unavailable`},oe=(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=>S.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=>S.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=>S.add(e)),i&&t(e=>{let t={...e.draftPersistence};for(let e of f){if((o.get(e)??0)!==u.get(e))continue;let r=d.get(e);if(n.status===`committed`)t[e]={status:`saved`,revision:r};else if(n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)continue;else t[e]={status:`error`,revision:r,errorCode:ae(n)}}let r={...e.draftAttachmentPersistence};for(let e of f){if((o.get(e)??0)!==u.get(e))continue;let t=d.get(e);r[e]=n.status===`committed`&&n.cleanupErrors.length===0?{status:`saved`,revision:t}:n.status===`failed`||n.cleanupErrors.length>0?{status:`error`,revision:t,errorCode:ae(n)}:r[e]??{status:`idle`,revision:t}}return{draftPersistence:t,draftAttachmentPersistence:r}}),n})();return p.add(x),x.then(()=>p.delete(x),()=>p.delete(x)),x},se=e=>{let n=r(),i=Object.fromEntries(e.flatMap(e=>{let t=n.drafts[e];return t?[[e,{status:`saving`,revision:t.revision}]]:[]}));Object.keys(i).length&&t(e=>({draftPersistence:{...e.draftPersistence,...i}}))},F=()=>{h&&clearTimeout(h),h=void 0;let e=[...m];m.clear();let t=g;return g=void 0,e.length?oe(e,t).then(()=>void 0):Promise.resolve()},ce=e=>{if(!r().persistenceEnabled){S.add(e);return}m.add(e),se([e]),!h&&(g=A(),h=setTimeout(()=>{F()},40))},ue=e=>{let t=[...e];return t.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),oe(t)},de=(e,n,i,a=`immediate`)=>{let o=P(e),s=r().drafts[o];if(!s||i!==void 0&&s.revision!==i)return;let c=k(n(s));if(!(!c||P(c.key)!==o))return D(o),t(e=>({drafts:{...e.drafts,[o]:c},...te(e,o,c)})),a===`deferred`?ce(o):ue([o]),c},I=e=>e?Ee(e):void 0,fe=(e=[])=>JSON.parse(JSON.stringify(e)),L=(e,t,n,r=!1,i=!1)=>({status:e,...I(n)?{record:I(n)}:{},errors:fe(t?.errors),cleanupErrors:fe(t?.cleanupErrors),current:r,durable:i}),pe=(e,t,n,r,i=!1,a=!1)=>({status:e,errors:fe(t?.errors),cleanupErrors:fe(t?.cleanupErrors),current:i,durable:a,source:I(n),destination:I(r)}),me=e=>e.status,he=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},ge=async(e,t)=>{let n={},i=r().draftAttachmentViews[P(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`&&ne(i[r.attachmentRefID].dataUrl)?i[r.attachmentRefID].dataUrl:void 0);if(r.locator.kind===`url`&&e!==void 0&&(e!==r.locator.url||!ne(e))||r.locator.kind===`blob`&&e!==void 0&&!(e instanceof Blob)&&!(typeof e==`string`&&ne(e)))return;e!==void 0&&(n[r.attachmentRefID]=await ie(r,e))}return n},_e=e=>e?P(e):`legacy-unowned`,ve=e=>C.get(e)??0,ye=e=>{C.set(e,ve(e)+1)},be=(e,n,r=!1)=>{r&&ye(e),t(t=>{let r=n(t.attachmentBuckets[e]??[]);return{attachmentBuckets:{...t.attachmentBuckets,[e]:r},..._e(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=P(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`&&!he(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(!he(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 ge(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(me(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=Ee(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:ae(h)}:{status:`saved`,revision:v.revision}}:R(e.draftAttachmentPersistence,n)})),L(_?`committed`:`stale`,h,v,_,!0)):L(`failed`,h)},deleteDraftSnapshot:async e=>{let n=P(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(!he(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(!he(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(me(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=P(e.source),i=P(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 pe(`stale`,void 0,l,u);if(!he(e.expectedSourceRevision))return pe(`failed`,void 0,l,u);if(!l||l.revision!==e.expectedSourceRevision||u)return pe(`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 pe(`failed`,void 0,l,u);let h=Math.max(l.revision+1,m+1);if(!he(h))return pe(`failed`,void 0,l,u);let g=k(e.disposition===`preserve`?{...l,key:e.destination,revision:h}:{...ao(e.destination),revision:h});if(!g)return pe(`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 pe(me(_),_,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),x=Ee(g);if(!x)return pe(`failed`,_,l,u);if(b&&!v&&!y)return pe(`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]=x,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:x.revision}},c=R(c,i),l=R(l,i),u={...R(u,i),[i]:_.cleanupErrors.length?{status:`error`,revision:x.revision,errorCode:ae(_)}:{status:`saved`,revision:x.revision}},b&&v&&e.disposition===`preserve`&&(c={...c,[i]:t.draftAttachmentViews[n]??{}},l={...l,[i]:t.draftMissingAttachmentRefIDs[n]??[]}))):(o=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 S=v&&y&&b;return pe(S?`committed`:`stale`,_,l,g,S,!0)},flushDraftPersistence:async()=>{for(await F();p.size;)await Promise.all([...p]);await a.flush()},ensureDraft:e=>{let n=P(e),i=r().drafts[n];if(i)return i;let a=k({...ao(e),revision:(r().tombstones[n]??0)+1});if(!a)throw Error(`Invalid empty draft`);return D(n),t(e=>({drafts:{...e.drafts,[n]:a}})),ue([n]),a},getDraft:e=>r().drafts[P(e)],setDraftText:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return de(e,e=>({...e,revision:e.revision+1,text:t,mentions:e.mentions.filter(e=>e.range.end<=t.length&&t.slice(e.range.start,e.range.end)===`@${e.value}`),composerReferences:[]}),n.revision,`deferred`)??n},setDraftComposerDocument:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return r().setDraftComposerState(e,{document:t,mentions:n.mentions})},setDraftComposerState:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return de(e,e=>({...e,revision:e.revision+1,text:t.document.text,composerReferences:t.document.references,mentions:t.mentions}),n.revision,`deferred`)},replaceDraft:(e,t,n)=>de(e,e=>({version:1,key:e.key,revision:e.revision+1,text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}}),t),setDraftMentions:(e,t)=>de(e,e=>({...e,revision:e.revision+1,mentions:t})),addDraftMention:(e,t)=>de(e,e=>({...e,revision:e.revision+1,mentions:[...e.mentions,t]})),removeDraftMention:(e,t)=>de(e,e=>({...e,revision:e.revision+1,mentions:e.mentions.filter(e=>e.value!==t)})),setDraftSyntheticParts:(e,t)=>de(e,e=>({...e,revision:e.revision+1,syntheticParts:t})),consumeDraftSyntheticParts:(e,t)=>{let n=r().getDraft(e);if(!n)return null;let i=n.syntheticParts.filter(e=>!t?.(e)),a=n.syntheticParts.filter(e=>t?.(e));return de(e,e=>({...e,revision:e.revision+1,syntheticParts:a}),n.revision)?i:null},setDraftAttachments:(e,t)=>de(e,e=>({...e,revision:e.revision+1,attachments:t})),addDraftLocalAttachment:async(e,n,i={})=>{let a=r().getDraft(e);if(i.partID&&!a?.syntheticParts.some(e=>e.partID===i.partID))return;let s=P(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 no(d)}catch{let e=r().drafts[s];if(j(u)&&(r().tombstones[s]??0)===l&&(e?P(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(P(m.key)!==s||i.partID&&!m.syntheticParts.some(e=>e.partID===i.partID))return;let h=i.attachmentID??re(),g=i.partID?w(i.partID,h):T(h),_=re(),v={attachmentID:h,attachmentRefID:g,filename:i.filename??(n instanceof File?n.name:`attachment`),mimeType:n.type,size:n.size,locator:{kind:`blob`,blobID:_},source:i.source??`local`,...i.vscodePath?{vscodePath:i.vscodePath}:{},...i.vscodeSource?{vscodeSource:i.vscodeSource}:{}},y=i.partID?{...m,revision:m.revision+1,syntheticParts:m.syntheticParts.map(e=>e.partID===i.partID?{...e,attachments:[...e.attachments,v]}:e)}:{...m,revision:m.revision+1,attachments:[...m.attachments,v]},b=k(y);if(!b)return;D(s);let x={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]:x}}})),await oe([s]),v},addDraftDurableAttachment:(e,n)=>{let i=r().getDraft(e)??r().ensureDraft(e);if(n.partID&&!i.syntheticParts.some(e=>e.partID===n.partID))return;let a=n.attachmentID??re(),o=n.partID?w(n.partID,a):T(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=P(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}}})),oe([u]),s},getDraftAttachmentViews:e=>{let t=P(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=P(e);if(!r().persistenceEnabled||!r().drafts[n]&&!r().tombstones[n])return;let i=await a.retryCleanup();i.cleanupErrors.length&&t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[n]:{status:`error`,revision:e.drafts[n]?.revision??e.tombstones[n],errorCode:ae(i)}}})),await oe([n])},hydrateDraftAttachments:async e=>{let n=P(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 ie(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=P(e),a=r().drafts[i],o=a&&M(a).find(e=>e.attachmentRefID===n);if(!a||!o)return!1;let s=ze(o)?An(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 oe([i])).status===`committed`):!1},replaceDraftAttachment:async(e,n,i,a)=>{let o=P(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 no(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&&P(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||P(p.key)!==o)return;let h=p.syntheticParts.find(e=>e.attachments.some(e=>e.attachmentRefID===n)),g=re(),_={attachmentID:g,attachmentRefID:h?w(h.partID,g):T(g),filename:a?.filename??d.name,mimeType:d.type,size:d.size,locator:{kind:`blob`,blobID:re()},source:a?.source??`local`,...a?.vscodePath?{vscodePath:a.vscodePath}:{},...a?.vscodeSource?{vscodeSource:a.vscodeSource}:{}},v=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 oe([o])).status===`committed`?_:void 0},replaceDraftRootAttachments:async(e,t)=>{let n=P(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=T(t);if(e.source===`server`&&e.dataUrl&&ne(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&&ne(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),c.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=re();s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),c.set(n,r)}}let l=a?.syntheticParts??[];for(let e of l)for(let t of e.attachments)t.locator.kind===`url`&&!c.has(t.attachmentRefID)&&c.set(t.attachmentRefID,t.locator.url);let u={text:a?.text??``,attachments:s,syntheticParts:l,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return r().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:u,values:c,runtime:i})},restoreDraftRootAttachments:async(e,t)=>{let n=P(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=T(t);if(e.source===`server`&&e.dataUrl&&ne(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&&ne(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),l.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=re();c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),l.set(n,r)}}let u=r().draftAttachmentViews[n]??{};for(let e of a?.attachments??[])if(!s.has(e.attachmentID))if(c.push(JSON.parse(JSON.stringify(e))),e.locator.kind===`url`)l.set(e.attachmentRefID,e.locator.url);else{let t=u[e.attachmentRefID];t?.file instanceof Blob?l.set(e.attachmentRefID,t.file):typeof t?.dataUrl==`string`&&ne(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=P(e),a=r().drafts[i];if(!a||n!==void 0&&a.revision!==n)return!1;let o=a.revision+1;return he(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}}),oe([i]),!0):!1},moveDraft:(e,n,i)=>{let a=P(e),o=P(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)}}),oe([a,o]),c},moveDraftWithAttachments:async(e,n,i)=>{let a=P(e),o=P(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 oe([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),...S]);S.clear(),await oe(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){x??=a.seed(h).finally(()=>{x=void 0});let n;try{n=await x}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},w={...g.tombstones},T=new Set;for(let[e,t]of Object.entries(h.tombstones))(o.get(e)??0)===(u.get(e)??0)&&(t>=(w[e]??0)&&(w[e]=t,(C[e]?.revision??0)<=t&&delete C[e]),T.add(e));for(let[t,n]of Object.entries(h.drafts)){if(n.key.transportIdentity!==e||(o.get(t)??0)!==(u.get(t)??0))continue;let r=C[t],i=k(n);i&&(!r||r.revision<i.revision)&&(w[t]??0)<i.revision&&(C[t]=i),T.add(t)}let E=v===d?{...h.legacy.entries}:{...g.legacyDraftEntries};if(h.migration.claimedTransportIdentity===e&&v===d)for(let[t,n]of Object.entries(E)){let r={transportIdentity:e,owner:{kind:`session`,ownerID:t}},i=P(r),a=Za(n.text),s=k({...ao(r),text:a.text,composerReferences:a.references,mentions:oo(a.text,n.mentions)});s&&!C[i]&&!w[i]&&(o.get(i)??0)===(u.get(i)??0)&&(C[i]=s),delete E[t],T.add(i)}t(e=>({drafts:C,tombstones:w,legacyNewDraft:v===d&&!y?h.legacy.new:e.legacyNewDraft,legacyDraftEntries:E,migration:v===d?h.migration:e.migration,draftHydration:{...e.draftHydration,...Object.fromEntries([...T].map(e=>[e,`ready`]))}}));let D=[...S];for(let e of D)T.add(e);S.clear();try{await oe(T),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=P(e),a=r().drafts[i];if(v+=1,y=!0,a||r().tombstones[i])return t({legacyNewDraft:void 0}),oe([i]),a;let o=Za(n.text),s=k({...ao(e),text:o.text,composerReferences:o.references,mentions:oo(o.text,n.mentions)});if(s)return D(i),t(e=>({drafts:{...e.drafts,[i]:s},legacyNewDraft:void 0})),oe([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=_e(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=_e(t),i=ve(n),a=await r().addDraftLocalAttachment(t,e);i!==ve(n)&&a&&r().removeDraftAttachment(t,a.attachmentRefID);return}let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,i=_e(null),a=ve(i),o;try{o=await no(e)}catch{return}if(a!==ve(i))return;let s={id:n,file:e,dataUrl:o,mimeType:e.type,filename:e.name,size:e.size,source:`local`};be(i,e=>[...e,s])},removeAttachedFile:e=>{let t=r().activeAttachmentDraft;if(t){let n=r().getDraft(t),i=n?[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)].find(t=>t.attachmentID===e):void 0;i&&r().removeDraftAttachment(t,i.attachmentRefID);return}be(_e(null),t=>t.filter(t=>t.id!==e))},setAttachedFiles:e=>{be(_e(r().activeAttachmentDraft),()=>e,!0)},clearAttachedFiles:()=>{let e=r().activeAttachmentDraft;if(e){ye(_e(e)),r().getDraft(e)||r().ensureDraft(e),r().setDraftAttachments(e,[]);return}be(_e(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=eo(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=P(e),a=ve(i),o=`${i}\u0000${to(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!==ve(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=_e(null);if((r().attachmentBuckets[o]??[]).some(t=>t.source===`vscode`&&t.vscodeSource===`file`&&(t.vscodePath||``)===e))return;let s=eo(e),c={id:a,file:new File([],t,{type:`text/plain`}),dataUrl:s,mimeType:`text/plain`,filename:t,size:n||0,source:`vscode`,vscodePath:e,vscodeSource:`file`};be(o,e=>[...e,c])},addVSCodeSelectionAttachment:async(e,t)=>{let n=r().activeAttachmentDraft;if(n){await r().addDraftVSCodeSelectionAttachment(n,e,t);return}let i=`${Date.now()}-${Math.random().toString(36).slice(2)}`,a=_e(null),o=ve(a),s=`${a}\u0000${to(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 no(t)}catch{return}finally{E.delete(s)}if(o!==ve(a))return;let l={id:i,file:t,dataUrl:c,mimeType:t.type,filename:t.name,size:t.size,source:`vscode`,vscodePath:e,vscodeSource:`selection`};be(a,e=>[...e,l])},addCodeSelectionAttachment:async(e,t,n)=>{let i=new File([n],t,{type:`text/plain`});await r().addVSCodeSelectionAttachment(e,i)},setActiveEditorFile:e=>{io(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=P(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||P(c)!==a)return;await r().addDraftLocalAttachment(i,s)}catch{}})();return}if(!ne(e))return;r().addDraftDurableAttachment(i,{filename:n,mimeType:t,size:ro(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:ro(e),source:`local`,serverPath:e};be(_e(null),e=>[...e,a])}}})})(),co=[`session_status`,`session_status_observed_at`,`session_status_event_at`,`session_status_event_sequence`,`session_interrupt_acknowledged_at`,`session_execution_version`,`session_error_at`,`session_execution_recovery`,`session_diff`,`todo`,`permission`,`question`];function lo(e,t,n){if(!po().size)return n;let r=n;n.session&&n.session!==t.session&&n.session.some(t=>!_o(t.id,e))&&(r={...r,session:n.session.filter(t=>_o(t.id,e))});for(let i of co){let a=n[i];if(!a||a===t[i])continue;let o=Object.keys(a).filter(t=>!_o(t,e));if(!o.length)continue;let s={...a};for(let e of o)delete s[e];r={...r,[i]:s}}return r}var uo=``,fo=new Map;function po(){let e=`${u()}:${f()}`;return uo!==e&&(uo=e,fo.clear()),fo}function mo(e){return po().get(e)?.directory}function ho(e,t,n){let r=po().get(e);return r&&t&&typeof n==`number`&&n>r.clock&&Se(t)!==r.directory&&go(e,t,n),mo(e)}function go(e,t,n,r){let i=po(),a=i.get(e);return t=Se(t),a&&(r!==void 0&&a.sequence!==void 0?r<=a.sequence:n<a.clock||n===a.clock&&t===a.directory)?!1:(i.set(e,{directory:t,clock:n,sequence:r}),!0)}function _o(e,t){let n=mo(e);return!n||n===Se(t)}var vo=new Set;function yo(e){return vo.add(e),()=>{vo.delete(e)}}function bo(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 vo)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 xo(e,t){return e.scopes.includes(`all`)||e.scopes.includes(t)}var So=`Updating OpenCode configuration...`,Co=0,wo=So,To=new Set;function Eo(){let e={isUpdating:Co>0,message:wo};To.forEach(t=>t(e))}function Do(e){Co+=1,Co===1?(wo=e||So,Eo()):e&&(wo=e,Eo())}function Oo(){Co!==0&&(--Co,Co===0&&(wo=So,Eo()))}function ko(e){wo===e&&Co>0||(wo=e,Co>0&&Eo())}function Ao(e){return To.add(e),e({isUpdating:Co>0,message:wo}),()=>{To.delete(e)}}function jo(){return{isUpdating:Co>0,message:wo}}var Mo=_r(),No=`projects`,Po=`activeProjectId`,Fo=`projects:manualOrder`,Io=(e,t)=>{let n=e.trim();return!n.startsWith(`~`)||!t?n:n===`~`?t:n.startsWith(`~/`)||n.startsWith(`~\\`)?`${t}${n.slice(1)}`:n},Lo=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,Ro=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},zo=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t&&Lo.test(t)?t.toLowerCase():null},Bo=e=>{let t=e.trim();if(!t)return``;let n=Io(t,Oe(`homeDirectory`,{storage:Mo})||Ke.getState().homeDirectory||``).replace(/\\/g,`/`);return n===`/`?`/`:n.length>1?n.replace(/\/+$/,``):n},Vo=e=>{let t=Bo(e);if(!t||t===`/`)return`Root`;let n=t.split(`/`).filter(Boolean);return n[n.length-1]||t},Ho=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}},Uo=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)}),Go=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=be(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=Ho(e.iconImage);t&&(c.iconImage=t)}typeof e.color==`string`&&e.color.trim().length>0&&(c.color=e.color.trim());let l=Ro(e.defaultModel);if(l&&(c.defaultModel=l),e.iconBackground===null)c.iconBackground=null;else{let t=zo(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},Ko=()=>{try{let e=Oe(No,{storage:Mo});return e?Go(JSON.parse(e)):[]}catch{return[]}},qo=()=>{if(!oe())return null;let e=g().trim().replace(/\/+$/,``);return e?Mo.getItem(`${No}:${encodeURIComponent(e)}:manualOrder`):null},Jo=()=>{try{let e=Oe(Fo,{storage:Mo})||qo();if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}},Yo=()=>{try{let e=Oe(Po,{storage:Mo});if(typeof e==`string`&&e.trim().length>0)return e.trim()}catch{return null}return null},Xo=(e,t)=>{try{ce(No,JSON.stringify(e),{storage:Mo})}catch{}try{t?ce(Po,t,{storage:Mo}):x(Po,{storage:Mo})}catch{}},Zo=(e,t,n)=>{Xo(e,t),n&&Qo(n),xe({projects:e,activeProjectId:t??void 0})},Qo=e=>{try{ce(Fo,JSON.stringify(e),{storage:Mo})}catch{}},$o=Ko(),es=(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},ts=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},ns=(e,t,n,r)=>{let i=Bo(e.path);if(!i)return null;let a=be(i),o=r===i;return{...t,id:a,path:i,label:Vo(i),addedAt:t?.addedAt??n,lastOpenedAt:o?n:t?.lastOpenedAt??n}},rs=()=>{if(typeof window>`u`||!te()?.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 ts(t);let n=e?.workspaceFolder;return typeof n!=`string`||n.trim().length===0?null:ts([{path:n}])},is=(e,t,n)=>{let r=ts(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=>ns(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 Dt(),{projects:s,activeProjectId:l,activeProject:c??s[0]??null}},as=(e,t)=>e===t?!0:!e||!t?e===t:e.mime===t.mime&&e.updatedAt===t.updatedAt&&e.source===t.source,os=(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&&as(e.iconImage,r.iconImage):!1}),ss=(()=>{let e=rs();if(!e)return null;let t=is(e,[]);return t?{projects:t.projects,activeProjectId:t.activeProjectId}:null})(),cs=typeof window>`u`?!1:!!te()?.runtime?.isVSCode,ls=ss?.projects??(cs?[]:$o),us=ss?.activeProjectId??(cs?null:Yo()),ds=ls.some(e=>e.id===us)?us:ls[0]?.id??null;ss&&Xo(ls,ds);var fs=ke()(Me((e,t)=>({projects:ls,activeProjectId:ds,manualProjectOrder:Jo(),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(cs)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()||Vo(o),u={id:be(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)]}),Dt(),t().setActiveProject(u.id),t().discoverProjectIcon(u.id),u},removeProject:n=>{if(cs)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}),Zo(a,o,s),i){let e=i.path.replace(/\\/g,`/`).replace(/\/+$/,``)||`/`;$.setState(t=>{let n=new Map(t.availableWorktreesByProject);return n.delete(e),{availableWorktreesByProject:n}})}if(o){let e=a.find(e=>e.id===o);e&&(B.setDirectory(e.path),Ke.getState().setDirectory(e.path,{showOverlay:!1}))}else Ke.getState().goHome()},setActiveProject:n=>{if(cs)return;let{projects:r,activeProjectId:i}=t();if(i===n)return;let a=r.find(e=>e.id===n);a&&(e({activeProjectId:n}),Zo(r,n,t().manualProjectOrder),B.setDirectory(a.path),Ke.getState().setDirectory(a.path,{showOverlay:!1}))},setActiveProjectIdOnly:n=>{if(cs)return;let{projects:r,activeProjectId:i}=t();i!==n&&r.find(e=>e.id===n)&&(e({activeProjectId:n}),Zo(r,n,t().manualProjectOrder))},renameProject:(n,r)=>{if(cs)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}),Zo(s,o,t().manualProjectOrder)},updateProjectMeta:(n,r)=>{if(cs)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=zo(r.iconBackground)),r.defaultModel!==void 0){let e=Ro(r.defaultModel);e?t.defaultModel=e:delete t.defaultModel}return t});e({projects:o}),Zo(o,a,t().manualProjectOrder)},uploadProjectIcon:async(e,n)=>{if(cs)return{ok:!1,error:`Custom icons are not supported in this runtime`};let r=Uo(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(cs)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(cs)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(cs)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}),Zo(o,a,c)},reorderProjectsById:(n,r)=>{if(cs)return;let{projects:i,activeProjectId:a}=t(),o=es(i,n,r);if(o===i)return;let s=o.map(e=>e.id);e({projects:o,manualProjectOrder:s}),Zo(o,a,s)},moveProjectToTop:n=>{if(cs)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}),Zo(u,i,d))},resetForRuntimeSwitch:()=>{if(cs)return;let t=Ko(),n=Yo(),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:Jo().filter(e=>i.has(e))})},synchronizeFromSettings:n=>{if(cs)return;let r=Go(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}),Xo(a.projects,i),Qo(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}),Xo(r,i),Qo(l),i){let e=r.find(e=>e.id===i);e&&(B.setDirectory(e.path),Ke.getState().setDirectory(e.path,{showOverlay:!1}))}},syncVSCodeWorkspaceFolders:(n,r)=>{if(!cs)return null;let i=t(),a=i.activeProjectId?i.projects.find(e=>e.id===i.activeProjectId)??null:null,o=r??a?.path??null,s=is(n,i.projects,o);if(!s)return n.length===0&&!r&&i.projects.length>0&&(e({projects:[],activeProjectId:null}),Xo([],null)),null;let c=!os(i.projects,s.projects),l=i.activeProjectId!==s.activeProjectId;return(c||l)&&(e({projects:s.projects,activeProjectId:s.activeProjectId}),Xo(s.projects,s.activeProjectId)),s.activeProject&&(B.setDirectory(s.activeProject.path),Ke.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`&&fs.getState().synchronizeFromSettings(t)});var U=vr(),ps=e=>e?.trim()||null,ms=()=>{let e=fs.getState().getActiveProject?.();return ps(e?.path)??ps(B.getDirectory())},hs=(e,t=u())=>L.commands.list(e,t),gs=(e=ms(),t=u())=>{let n=ps(e);return{queryKey:hs(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}},_s=e=>{let t=(0,U.c)(3),n=e===void 0?{}:e,r=fs(bs),i=ps(n.directory)??ps(r)??ps(B.getDirectory()),a=n.enabled!==!1&&!!i,o=gs(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],jr(s)},vs=(e=ms(),t=u())=>I.getQueryData(hs(ps(e),t))??[],ys=async(e,t,n)=>{let r=ps(t);if(u()!==n)return e.getQueryData(hs(r,n))??[];let i=gs(r,n);return e.fetchQuery({...i,staleTime:0})};function bs(e){return e.getActiveProject?.()?.path??null}var xs=200,Ss=500,Cs=512,ws=1024,Ts=64,Es=100,Ds=100,Os=new Set([`__proto__`,`prototype`,`constructor`]),ks=new Set([`text`,`audio`,`image`,`video`,`pdf`]),As=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},js=e=>typeof e==`object`&&e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype?e:void 0,Ms=e=>{if(typeof e==`string`)return e.length>0&&e.length<=Cs&&e.trim()===e&&!As(e)&&!Os.has(e)?e:void 0},Ns=e=>typeof e==`string`&&e.length>0&&e.length<=ws&&e.trim()===e&&!As(e)?e:void 0,Ps=e=>typeof e==`string`&&e.length>0&&e.length<=Ts&&e.trim()===e&&!As(e)?e:void 0,Fs=e=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=1e9?e:void 0,Is=e=>{let t=js(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))!ks.has(e)||typeof r!=`boolean`||(n[e]=r);return Object.keys(n).length?n:void 0},Ls=e=>{if(!Array.isArray(e))return;let t={};for(let n of e)typeof n!=`string`||!ks.has(n)||(t[n]=!0);return Object.keys(t).length?t:void 0},Rs=e=>{let t=js(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)?Ls(t.input):Is(t.input),i=Array.isArray(t.output)?Ls(t.output):Is(t.output);return r&&(n.input=r),i&&(n.output=i),Object.keys(n).length?n:void 0},zs=e=>js(Array.isArray(e)?e.find(e=>js(e)&&!js(e.tier))??e.find(e=>js(e)):e),Bs=e=>{if(Array.isArray(e))return e.map(e=>{if(typeof e==`string`)return e;let t=js(e);return typeof t?.id==`string`?t.id:void 0});let t=js(e);return t?Object.keys(t):null},Vs=e=>{let t=js(e),n=Ms(t?.id),r=Ns(t?.name);if(!t||!n||!r)return{partial:!0};let i={id:n,name:r},a=!1,o=Rs(t.capabilities);o&&(i.capabilities=o);let s=zs(t.cost);if(s){let e={},t=Fs(s.input);t!==void 0&&(e.input=t);let n=Fs(s.output);n!==void 0&&(e.output=n);let r=js(s.cache);if(r){let t={},n=Fs(r.read);n!==void 0&&(t.read=n);let i=Fs(r.write);i!==void 0&&(t.write=i),Object.keys(t).length&&(e.cache=t)}Object.keys(e).length&&(i.cost=e)}let c=js(t.limit);if(c){let e={},t=Fs(c.context);t!==void 0&&(e.context=t);let n=Fs(c.output);n!==void 0&&(e.output=n),Object.keys(e).length&&(i.limit=e)}let l=Ps(t.release_date);l&&(i.release_date=l);let u=Bs(t.variants);if(u){let e={},n=js(t.variants);for(let[t,r]of u.entries()){if(t>=Ds){a=!0;break}let i=Ms(r);!i||Object.prototype.hasOwnProperty.call(e,i)||n&&!js(n[i])||(e[i]={})}Object.keys(e).length&&(i.variants=e)}return{value:i,partial:a}},Hs=e=>{let t=js(e);if(!t||t.schemaVersion!==1||!Array.isArray(t.providers)||!js(t.default)||typeof t.partial!=`boolean`)throw Error(`Invalid provider catalog response`);let n=[],r=new Set,i=t.providers.length>xs;for(let[e,a]of t.providers.entries()){if(e>=xs)continue;let t=js(a),o=Ms(t?.id),s=Ns(t?.name),c=js(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>=Ss||!Ms(t)||Object.prototype.hasOwnProperty.call(l,t)){i=!0;continue}let r=Vs(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=js(t.default),o={};for(let[e,[t,n]]of Object.entries(a).entries()){let r=Ms(t),a=Ms(n);if(e>=Es||!r||!a){i=!0;continue}o[r]=a}return{schemaVersion:1,providers:n,default:o,partial:t.partial||i}},Us=e=>{if(typeof e==`object`&&e&&!Array.isArray(e)){let t=e;return typeof t.providerID!=`string`||typeof t.model!=`string`||t.providerID.includes(`/`)||t.model.includes(`#`)||t.variant!==void 0&&typeof t.variant!=`string`?null:Us(`${t.providerID}/${t.model}${t.variant===void 0?``:`#${t.variant}`}`)}if(typeof e!=`string`)return null;let t=e.trim(),n=t.indexOf(`/`);if(n<=0)return null;let[r,i,a]=t.slice(n+1).split(`#`),o=t.slice(0,n);return!r||/[\s#]/u.test(o)||/\s/u.test(r)||a!==void 0||i!==void 0&&(!i||/\s/u.test(i))?null:{providerId:o,modelId:r,...i===void 0?{}:{variant:i}}},Ws=e=>{let t=Us(e);return t?`${t.providerId}/${t.modelId}${t.variant?`#${t.variant}`:``}`:void 0},Gs=e=>(t=>e(t.state.data)?1/0:0),Ks=e=>{let t=e;return!!(t&&!t.partial&&t.providers.length>0)},qs=e=>{if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},Js=e=>e?{location:{directory:e}}:void 0,Ys=async(e,t)=>{let n=B.getSdkClient(),r=Js(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).catch(()=>void 0)]);if(!Array.isArray(a.data)||!Array.isArray(o.data))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 Array.isArray(s)?s:[]){let t=Us(e?.type===`document`?e.info?.model:void 0);t&&(l[t.providerId]=t.modelId)}return{schemaVersion:1,providers:a.data.map(e=>({id:e.id,name:e.name,models:c.get(e.id)??{}})),default:l,partial:!1}},Xs=(e,t=u())=>{let n=qs(e);return{queryKey:L.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=Hs(await r.json());else{if(r.status!==404&&r.status!==501)throw Error(`Provider catalog request failed (${r.status})`);i=Hs(await Ys(n,e))}let a=I.getQueryData(L.configCatalog.providers(n,t));if(i.partial&&a&&!a.partial)throw Error(`Partial provider catalog refresh retained the complete snapshot`);return i},staleTime:Gs(Ks),gcTime:1/0,retry:2,retryDelay:100}},Zs=(e,t=u())=>{let n=qs(e);return{queryKey:L.agents.raw(n,t),queryFn:({signal:e})=>B.listAgents(n,e),staleTime:Gs(e=>Array.isArray(e)&&e.length>0),gcTime:1/0,retry:2,retryDelay:100}},Qs=(e,t=u())=>I.fetchQuery(Xs(e,t)),$s=(e,t=u())=>I.fetchQuery(Zs(e,t)),ec=async(e,t=u())=>{let n=Xs(e,t);return await I.invalidateQueries({queryKey:n.queryKey,exact:!0}),I.fetchQuery(n)},tc=async(e,t=u())=>{let n=Zs(e,t);return await I.invalidateQueries({queryKey:n.queryKey,exact:!0}),I.fetchQuery(n)},nc=(e,t=u())=>I.invalidateQueries({queryKey:Xs(e,t).queryKey,exact:!0}),rc=e=>e?.trim()||null,ic=(e,t=u())=>L.agents.list(e,t),ac=(e,t=u())=>L.providers.list(e,t);function oc(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 sc=(e=ms(),t=u())=>{let n=rc(e);return{queryKey:ic(n,t),queryFn:async({signal:e})=>{let r=await I.fetchQuery(Zs(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=oc(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}},cc=(e,t=u())=>{let n=rc(e);return{queryKey:ac(n,t),queryFn:async()=>{let e=await B.getProvidersForConfig(n);return(Array.isArray(e.providers)?e.providers:[]).map(e=>({...e,models:Object.values(e.models??{})}))},retry:2}},lc=e=>{let t=(0,U.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=fs(pc),a;t[2]===i?a=t[3]:(a=sc(rc(i)??rc(B.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],jr(o)},uc=(e,t)=>{let n=(0,U.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=cc(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],jr(o)},dc=(e=ms(),t=u())=>I.getQueryData(ic(rc(e),t))??[],fc=async(e,t,n)=>{let r=rc(t);if(u()!==n)return e.getQueryData(ic(r,n))??[];let i=sc(r,n);return await e.invalidateQueries({queryKey:i.queryKey,exact:!0}),e.fetchQuery(i)};function pc(e){return e.getActiveProject?.()?.path??null}var mc=[{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`}],hc=e=>e?.trim()||null,gc=()=>{let e=fs.getState().getActiveProject?.();return hc(e?.path)??hc(B.getDirectory())},_c=(e,t=u())=>L.skillsCatalog.sources(e,t),vc=(e,t,n=u())=>L.skillsCatalog.source(e,t,n),yc=new Map,bc=(e=gc(),t=u(),n=!1)=>{let r=hc(e);return{queryKey:_c(r,t),queryFn:({signal:e})=>Ac(r,n,e),staleTime:5e3,retry:2}},xc=(e,t,n=u(),r=!1)=>{let i=hc(e);return Dr({queryKey:vc(i,t,n),queryFn:({signal:e,pageParam:n})=>jc(i,t,n,r,e),initialPageParam:null,getNextPageParam:(e,t)=>Mc(e,t),staleTime:5e3,retry:2})},Sc=e=>{let t=(0,U.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=fs(Fc),a;t[2]===i?a=t[3]:(a=bc(hc(i)??hc(B.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],jr(o)},Cc=(e,t)=>{let n=(0,U.c)(8),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a=fs(Ic),o;n[2]!==a||n[3]!==e?(o=xc(hc(a)??hc(B.getDirectory()),e),n[2]=a,n[3]=e,n[4]=o):o=n[4];let s=i.enabled&&!!e,c;return n[5]!==o||n[6]!==s?(c={...o,enabled:s},n[5]=o,n[6]=s,n[7]=c):c=n[7],Mr(c)},wc=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())},Tc=(e=I,t=gc(),n=u())=>e.getQueryData(_c(hc(t),n))??mc,Ec=(e=I,t,n,r=u())=>e.getQueryData(vc(hc(t),n,r)),Dc=async(e,t,n)=>{let r=hc(t);return u()===n?e.fetchQuery({...bc(r,n,!0),staleTime:0}):Tc(e,r,n)},Oc=async(e,t,n,r)=>{let i=hc(t);if(u()!==r)return Ec(e,i,n,r);let a=vc(i,n,r),o=JSON.stringify(a),s=(yc.get(o)??0)+1;yc.set(o,s),await e.cancelQueries({queryKey:a,exact:!0});let c=await jc(i,n,null,!0,new AbortController().signal);if(u()!==r||yc.get(o)!==s)return Ec(e,i,n,r);let l={pages:[c],pageParams:[null]};return e.setQueryData(a,l),l},kc=(e,t,n)=>Promise.all([e.invalidateQueries({queryKey:_c(hc(t),n)}),e.invalidateQueries({queryKey:[n,`skillsCatalog`,`source`,hc(t)],exact:!1})]);async function Ac(e,t,n){let r=await Pc(Nc(`/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:mc}async function jc(e,t,n,r,i){let a={directory:e,sourceId:t,cursor:n,refresh:r},o=await Pc(Nc(`/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(Nc(`/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 Mc(e,t){let n=e.nextCursor;if(!(!n||e.items.length===0)&&!t.slice(0,-1).some(e=>e.nextCursor===n))return n}function Nc(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 Fc(e){return e.getActiveProject?.()?.path??null}function Ic(e){return e.getActiveProject?.()?.path??null}var Lc=e=>e?.trim()||null,Rc=()=>{let e=fs.getState().getActiveProject?.();return Lc(e?.path)??Lc(B.getDirectory())},zc=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},Bc=(e,t=u())=>L.skills.list(e,t),Vc=(e=Rc(),t=u())=>{let n=Lc(e);return{queryKey:Bc(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:zc(e.path)}))},retry:2}},Hc=e=>{let t=(0,U.c)(3),n=e===void 0?{}:e,r=fs(Gc),i=Vc(Lc(n.directory)??Lc(r)??Lc(B.getDirectory())),a;return t[0]!==n.enabled||t[1]!==i?(a={...i,enabled:n.enabled},t[0]=n.enabled,t[1]=i,t[2]=a):a=t[2],jr(a)},Uc=(e=I,t=Rc(),n=u())=>e.getQueryData(Bc(Lc(t),n))??[],Wc=async(e,t,n=u())=>{let r=Lc(t);return u()===n?e.fetchQuery({...Vc(r,n),staleTime:0}):Uc(e,r,n)};function Gc(e){return e.getActiveProject?.()?.path??null}var Kc=()=>{let e=B.getDirectory();if(typeof e==`string`&&e.trim().length>0)return e;try{let e=window.__zustand_directory_store__;if(e)return e.getState().currentDirectory}catch{}return null},qc=ms,Jc=e=>{let t=e;return t.native===!0||t.builtIn===!0},Yc=e=>{let t=e;return t.hidden===!0||t.options?.hidden===!0},Xc=e=>e.filter(e=>!Yc(e)),Zc=`useAgentsStore`,Qc=e=>new Promise(t=>setTimeout(t,e)),$c=2e4,el=300,tl=4,nl=800,rl=200,il=2e3,al=ke()(Me(Ae(e=>({selectedAgentName:null,agentDraft:null,setSelectedAgent:t=>e({selectedAgentName:t}),setAgentDraft:t=>e({agentDraft:t}),loadAgents:async()=>{let e=qc(),t=u();try{return await fc(I,e,t),!0}catch{return!1}},createAgent:async t=>sl(`POST`,t.name,t,e),updateAgent:async(t,n)=>sl(`PATCH`,t,n,e),deleteAgent:async(t,n)=>sl(`DELETE`,t,{scope:n},e),getAgentByName:e=>dc().find(t=>t.name===e),getVisibleAgents:()=>Xc(dc())}),{name:`agents-store`,storage:hr(),partialize:e=>({selectedAgentName:e.selectedAgentName})}),{name:`agents-store`}));typeof window<`u`&&(window.__zustand_agents_store__=al);async function ol(e,t){await fc(I,e,t),u()===t&&bo(`agents`,{source:Zc})}async function sl(e,t,n,r){let i=qc(),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`&&al.getState().selectedAgentName===t&&r({selectedAgentName:null}),l?.requiresManualRestart?{ok:!0,requiresManualRestart:!0}:(await ol(i,a),{ok:!0})):{ok:!0,...l?.requiresManualRestart?{requiresManualRestart:!0}:{}}}catch(t){return console.error(`[AgentsStore] ${e} agent failed:`,t),{ok:!1}}}async function cl(e){let t=typeof e==`number`&&e>0?Math.min(e,el):0;t>0&&await Qc(t);let n=Date.now(),r=0,i=null;for(;Date.now()-n<$c;){r+=1,ko(`Waiting for OpenCode… (attempt ${r})`);try{if(await B.checkHealth())return;i=Error(`OpenCode health check reported not ready`)}catch(e){i=e}let e=Date.now()-n;await Qc(r<=tl&&e<1200?el:Math.min(nl+Math.max(0,r-tl)*rl,il))}throw i||Error(`OpenCode did not become ready in time`)}var ll=e=>{if(!e||e.length===0)return[`all`];let t=Array.from(new Set(e));return t.includes(`all`)?[`all`]:t};async function ul(e={}){let{message:t,delayMs:n}=e,r=e.transportIdentity??u(),i=e.queryDirectory??qc(),a=ll(e.scopes),o=e.mode??(a.includes(`all`)?`projects`:`active`),s=e.silent===!0;if(!s)try{ko(t||`Refreshing configuration…`)}catch{}try{if(u()!==r||(e.waitForConnection!==!1&&await cl(n),u()!==r))return;let t=W.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=Kc(),g=o===`projects`?fs.getState().projects:[],_=Array.from(new Set([...i?[i]:h?[h]:[],...g.map(e=>e.path).filter(Boolean)]));a.includes(`all`)&&o===`projects`&&W.setState({directoryScoped:{}}),c&&W.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(fc(I,i,r).then(()=>void 0)),f&&y.push(ys(I,i,r).then(()=>void 0)),p&&(y.push(Wc(I,i,r).then(()=>void 0)),y.push(kc(I,i,r).then(()=>void 0))),m){let{refreshMcpConfigsQuery:e,refreshMcpStatusQuery:t}=await Tr(async()=>{let{refreshMcpConfigsQuery:e,refreshMcpStatusQuery:t}=await import(`./mcpQueries-om4qg52L.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(I,i,r).then(()=>void 0)),y.push(t(I,i,r).then(()=>void 0))}s||ko(`Refreshing configuration…`),await Promise.all([...v,...y])}catch(e){throw s||(ko(`OpenCode refresh failed. Please retry.`),await Qc(1500)),e}finally{s||Oo()}}async function dl(e){await ul(e)}async function fl(e){await ul({...e,silent:!0,waitForConnection:!1})}async function pl(){await B.getSdkClient().location.reload()}async function ml(e){Do(e?.message||`Reloading OpenCode configuration…`);let t=e?.transportIdentity??u(),n=e?.queryDirectory??qc();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){Oo();return}let a={...e,transportIdentity:t,queryDirectory:n,scopes:e?.scopes??[`all`],mode:e?.mode??`projects`};i?.requiresReload?await dl({...a,message:i.message,delayMs:i.reloadDelayMs}):await dl(a)}catch(e){throw console.error(`[restartOpenCodeService] Failed:`,e),ko(`Failed to reload configuration. Please try again.`),await Qc(2e3),Oo(),e}}var hl=null;hl||=yo(e=>{if(e.source!==Zc&&xo(e,`agents`)){let{loadAgents:e}=al.getState();e()}});var gl=e=>typeof e==`string`?e.trim():``,_l=(e,t)=>!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`,vl={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`},yl=e=>e?e[0].toUpperCase()+e.slice(1).toLowerCase():``,bl=e=>{let t=e.startsWith(`~`)?e.slice(1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t},xl=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)}},Sl=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},Cl=e=>{let t=e.toLowerCase(),n=vl[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)?yl(t).replace(/([a-z])(\d)/i,`$1$2`):yl(e)},wl=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},Tl=e=>{let t=gl(e).toLowerCase();return t?t===`free`||t===`thinking`?t:El(t):``},El=e=>{let t=gl(e);if(!t)return``;let{base:n,suffix:r}=xl(bl(t)),i=wl(Sl(n).map(Cl));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=Tl(r);return s?`${o} (${s})`:o},Dl=e=>!/\s/.test(e)&&/[-_]/.test(e),Ol=(e,t,n={})=>{let r=gl(e?.name),i=gl(e?.id)||gl(t);return r&&!Dl(r)?_l(r,n.maxLength):i?_l(El(i),n.maxLength):r?_l(El(r.toLowerCase()),n.maxLength):n.fallbackLabel??``},kl=(e,t)=>{let n=e?.models;if(!(!n||!t))return Array.isArray(n)?n.find(e=>gl(e.id)===t):n[t]},Al=(e,t,n={})=>{let r=gl(t);return Ol(kl(e,r),r,n)},jl=(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}},Ml=e=>e===`primary`||e===`all`||e==null,Nl=e=>e.filter(e=>Ml(e.mode)),Pl=(e,t,n=1)=>{let r=Nl(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},Fl=e=>e.charAt(0).toUpperCase()+e.slice(1),Il=(e,t)=>{if(t){let n=e.find(e=>e.name===t);return Fl(n?n.name:t)}let n=e.filter(e=>Ml(e.mode)),r=n.find(e=>e.name===`build`)||n[0]||e[0];return r?Fl(r.name):`Select agent`},Ll=(e,t,n=``)=>Al(e,t,{fallbackLabel:n}),Rl=e=>{if(!e||e.trim().length===0)return`Default`;let t=e.trim();return/^\d+(\.\d+)?$/.test(t)?t:Fl(t)},zl=e=>typeof e==`object`&&!!e,Bl=e=>typeof e==`string`&&e.length>0,Vl=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(!Bl(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(!Bl(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;!Bl(t)||!Bl(n)||r.set(t,n)}r.size>0&&i.set(t,r)}i.size>0&&t.set(e,i)}return t},Hl=ke()(Ae((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:hr(),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=zl(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(!Bl(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;!Bl(t)||typeof n!=`object`||!n||!Bl(n.providerId)||!Bl(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:Vl(n?.sessionAgentModelVariantSelections)}},migrate:e=>e})),Ul=[`concise`,`detailed`,`mentor`,`pushback`,`noFiller`,`matchEnergy`,`warmPeer`],Wl=e=>typeof e==`string`&&Ul.includes(e),Gl=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.`}},Kl=new Map,ql=new Map,Jl=({enabled:e,preset:t,customInstructions:n})=>e?t===`custom`?(typeof n==`string`?n.trim():``)||null:Wl(t)?Gl(t):null:null,Yl=(e,t=u())=>{Kl.set(t,{enabled:e.enabled===!0,preset:e.preset,customInstructions:e.customInstructions})},Xl=(e=u())=>{let t=Kl.get(e);if(t)return Jl(t)},Zl=async()=>{let e=u(),t=Xl(e);if(t!==void 0)return t;let n=ql.get(e);if(n)return n;let r=(async()=>{let t=await he(e);return Yl({enabled:t.responseStyleEnabled,preset:t.responseStylePreset,customInstructions:t.responseStyleCustomInstructions},e),Xl(e)??null})();ql.set(e,r);try{return await r}finally{ql.get(e)===r&&ql.delete(e)}},Ql=`opencode`,$l=`big-pickle`,eu=`__add_provider__`,tu=`zen`,nu=`big-pickle`,ru=async(e,t)=>{wn(`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 wn(`config.defaults:end`,{source:e,durationMs:Math.round(r-n),hasDefaultModel:!!t.defaultModel,hasDefaultAgent:!!t.defaultAgent}),t};try{let t=await he(e);return Yl({enabled:t?.responseStyleEnabled,preset:t?.responseStylePreset,customInstructions:t?.responseStyleCustomInstructions},e),r(`settings-bootstrap-query`,t)}catch(n){wn(`config.defaults:error`,{error:n instanceof Error?n.message:String(n)});let i=ve(e);return i&&Yl({enabled:i.responseStyleEnabled,preset:i.responseStylePreset,customInstructions:i.responseStyleCustomInstructions},e),r(i?`retained-settings-bootstrap`:`retained-store-settings`,i??t)}},iu=e=>Us(e),au=e=>e===eu?``:e??``,ou=(e,t)=>e===eu?eu:t,su=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},cu=e=>{if(!Array.isArray(e))return[];let t=e.map(e=>{if(!mu(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 Hs({schemaVersion:1,providers:t,default:{},partial:!1}).providers.map(e=>({id:e.id,name:e.name,models:Object.values(e.models)}))}catch{return[]}},lu=e=>{try{return Hs({schemaVersion:1,providers:[],default:e,partial:!1}).default}catch{return{}}},uu=(e,t,n)=>{let r=e.find(e=>e.id===t);return r?r.models.some(e=>e.id===n):!1},du=({providers:e,currentProviderId:t,currentModelId:n,currentVariant:r,settingsDefaultModel:i,settingsDefaultVariant:a})=>{if(t&&n)return{providerId:t,modelId:n,variant:r};if(i){let e=iu(i);if(e)return{providerId:e.providerId,modelId:e.modelId,variant:e.variant??a}}if(uu(e,Ql,$l))return{providerId:Ql,modelId:$l};let o=e[0],s=o?.models[0];return o&&s?{providerId:o.id,modelId:s.id}:null},fu=({agents:e,providers:t,projectDefaultModel:n,settingsDefaultAgent:r,settingsDefaultModel:i,settingsDefaultVariant:a,opencodeDefaultAgent:o,opencodeDefaultModel:s,projectLastUserSelection:c,globalLastUserSelection:l})=>{let u=t=>{if(!t)return null;let n=Ft(e,t.agentName);return n&&(!Ml(n.mode)||n.hidden===!0)?null:{agentName:n?.name??t.agentName,providerId:t.providerId,modelId:t.modelId,variant:t.variant}},d=u(c);if(d)return d;let f=u(l);if(f)return f;let p=e.filter(e=>Ml(e.mode)),m;if(r&&(m=Ft(e,r)),!m&&o){let t=Ft(e,o);t&&Ml(t.mode)&&t.hidden!==!0&&(m=t)}m||=Ft(p,`build`)||p.find(e=>e.name===`build`)||p[0]||e[0];let h,g,_,v=n||i;if(v){let e=iu(v);e&&(h=e.providerId,g=e.modelId,_=e.variant??(n?void 0:a))}if(!h&&m?.model?.providerID&&m.model?.modelID&&(h=m.model.providerID,g=m.model.modelID,_=m.variant),!h&&s){let e=iu(s);e&&(h=e.providerId,g=e.modelId,_=e.variant)}if(!h)if(uu(t,Ql,$l))h=Ql,g=$l;else{let e=t[0],n=e?.models[0];e&&n&&(h=e.id,g=n.id)}return{agentName:(r&&!Ft(e,r)?r:!r&&o&&!Ft(e,o)?o:void 0)??m?.name,providerId:h,modelId:g,variant:_}},pu=({providers:e,settingsZenModel:t})=>{let n=su(t);if(!Array.isArray(e)||e.length===0)return n?{providerId:tu,modelId:n}:null;if(n&&uu(e,tu,n))return{providerId:tu,modelId:n};if(uu(e,tu,nu))return{providerId:tu,modelId:nu};let r=e.find(e=>e.id===tu);if(r?.models.length){let e=Math.floor(Math.random()*r.models.length),t=su(r.models[e]?.id);if(t)return{providerId:tu,modelId:t}}return null},mu=e=>typeof e==`object`&&!!e,hu=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},gu=(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:hu(t.capabilities.input),output:hu(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}),_u=e=>new Promise(t=>setTimeout(t,e)),vu=800,yu=async(e=vu)=>Promise.race([B.checkHealth().catch(()=>!1),_u(Math.max(1,e)).then(()=>!1)]),bu=`__global__`,xu=e=>{let t=typeof e==`string`?e.trim():``;return t.length>0?t:bu},Su=e=>e===bu?null:e,Cu=()=>typeof window>`u`?bu:Du(B.getDirectory()??Ke.getState().currentDirectory),wu=e=>{let t=R(e);return t===null?null:t||`/`},Tu=()=>{try{let{projects:e,activeProjectId:t}=fs.getState();return wu((t?e.find(e=>e.id===t):null)?.path??e[0]?.path??null)}catch{return null}},Eu=e=>wu(e),Du=e=>xu(Eu(e)),Ou=e=>Du(e),ku=100,Au=256,ju=new Set([`__proto__`,`prototype`,`constructor`]),Mu=/[\u0000-\u001F\u007F]/u,Nu=e=>{let t=e.directoryScoped,n=e.activeDirectoryKey;if(!t||!n)return e;let r=t[n];if(!r)return e;let i={...e};return i.providers=[],i.agents=[],i.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=void 0,i.opencodeDefaultModel=void 0,i.selectionSource=r.selectionSource??`auto`,i},Pu=(e,t=!1)=>{if(typeof e!=`string`)return;let n=e.trim();if(!(n.length===0||n.length>Au||t&&n!==e||Mu.test(n)||ju.has(n)))return n},Fu=e=>{if(!mu(e))return{};let t=[];for(let[n,r]of Object.entries(e)){if(t.length>=ku||!mu(r))continue;let e=Pu(n,!0),i=Pu(r.providerId),a=Pu(r.modelId),o=Pu(r.variant);!e||!i||!a||r.variant!==void 0&&!o||t.push([e,{providerId:i,modelId:a,...o?{variant:o}:{}}])}return Object.fromEntries(t)},Iu=e=>{if(!mu(e))return;let t=Pu(e.agentName,!0),n=Pu(e.providerId),r=Pu(e.modelId),i=Pu(e.variant);if(!(!t||!n||!r||e.variant!==void 0&&!i))return{agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}}},Lu=(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}:{}}},Ru=(e,t,n)=>Iu(e)??Lu(t,n),zu=(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`}),Bu=e=>{if(!mu(e))return{};let t=su(e.catalogTransportIdentity),n={};for(let t of[`activeDirectoryKey`]){let r=su(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(mu(e.directoryScoped))for(let[t,n]of Object.entries(e.directoryScoped)){if(!mu(n))continue;let e=Fu(n.agentModelSelections),i=Pu(n.lastSelectedAgentName,!0),a=Ru(n.lastUserSelection,i,e);r[t]={...zu(),providers:[],agents:[],currentProviderId:su(n.currentProviderId)??``,currentModelId:su(n.currentModelId)??``,currentVariant:su(n.currentVariant),currentAgentName:su(n.currentAgentName),selectedProviderId:au(su(n.selectedProviderId)),agentModelSelections:e,lastSelectedAgentName:a?.agentName??i,lastUserSelection:a,defaultProviders:{},selectionSource:n.selectionSource===`manual`?`manual`:`auto`}}let i=Fu(e.agentModelSelections),a=Pu(e.lastSelectedAgentName,!0),o=Ru(e.globalLastUserSelection,a,i)??(()=>{let t=su(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),s=u();return t&&t!==s?{...n,catalogTransportIdentity:s,directoryScoped:{},providers:[],agents:[],defaultProviders:{},currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,globalLastUserSelection:void 0,providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{}}:{...n,catalogTransportIdentity:s,directoryScoped:r,providers:[],agents:[],defaultProviders:{},currentProviderId:su(e.currentProviderId)??``,currentModelId:su(e.currentModelId)??``,currentVariant:su(e.currentVariant),currentAgentName:su(e.currentAgentName),selectedProviderId:au(su(e.selectedProviderId)),agentModelSelections:i,lastSelectedAgentName:o?.agentName??a,lastUserSelection:(()=>{let t=su(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),globalLastUserSelection:o}},Vu=({agents:e,currentAgentName:t,currentProviderId:n,currentModelId:r,currentVariant:i,selectionSource:a,resolvedAgentName:o,resolvedProviderId:s,resolvedModelId:c,resolvedVariant:l})=>{let u=Ft(e,t)?.name??t,d=!!n&&!!r,f=a===`manual`&&(!!u||d);return{agentName:f?u??o:o,providerId:f&&d?n:s,modelId:f&&d?r:c,variant:f&&d?i:l,selectionSource:f?`manual`:`auto`}},Hu=null,Uu=new Map,Wu=new Map,Gu={},Ku={},qu=hr(),Ju=qu&&{flush:()=>qu.flush(),getItem:e=>{let t=u(),n=qu.getItem(Te(e,t)),r=n=>u()===t?n||!pe()?n:qu.getItem(e):null;return n instanceof Promise?n.then(r):r(n)},setItem:(e,t)=>qu.setItem(Te(e,t.state.catalogTransportIdentity??u()),t),removeItem:e=>qu.removeItem(Te(e))},W=ke()(Me(Ae((e,t)=>({activeDirectoryKey:Cu(),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=f(),a=Eu(n);if(!a){wn(`activateDirectory:skippedUnknownDirectory`,{directory:n});return}let o=xu(a),s=!1,c=!1,l=!1;e(e=>{let t=e.directoryScoped[o],n=t?.providers??[],r=t?.defaultProviders??{},i=t?.agents??[];s=n.length>0,c=i.length>0,l=!!t?.agents.length;let a=e.isConnected&&!s,u=e.isConnected&&!c;return t?{activeDirectoryKey:o,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,[o]:a},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[o]:u}}:{activeDirectoryKey:o,providers:n,defaultProviders:r,agents:i,currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:a},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[o]:u}}}),c&&s&&!l&&t().applyDefaultModelAgentSelection(),t().isConnected&&((!s||r?.refreshProviders)&&await t().loadProviders({directory:Su(o),source:r?.source??`activateDirectory`,forceRefresh:r?.refreshProviders}),f()===i&&t().activeDirectoryKey===o&&(c||await t().loadAgents({directory:Su(o),source:`activateDirectory`})))},invalidateProviderCache:e=>{let t=u();nc(e??null,t)},loadProviders:async n=>{let r=n?.directory??Su(t().activeDirectoryKey),i=Eu(r);if(!i){wn(`loadProviders:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`});return}let a=i??B.getDirectory()??null,o=xu(i),s=n?.source??`unknown`,c=u(),l=f(),d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&Gu[o]===p&&Eu(r)===i,p=(Gu[o]??0)+1;Gu[o]=p,wn(`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();wn(`loadProviders:start`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let l=t().directoryScoped[o],u=l?.providers??[],f=l?.defaultProviders??{};try{let t=await xn(`loadProviders:api`,()=>n?.forceRefresh?ec(Su(o),c):Qs(Su(o),c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),l=cu(t.providers),f=lu(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=du({providers:l,currentProviderId:r,currentModelId:i,currentVariant:a,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant}),u=e.activeDirectoryKey===o?e.selectedProviderId:n.selectedProviderId,p=u===eu||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={directoryScoped:{...e.directoryScoped,[o]:m}};return e.activeDirectoryKey===o&&(h.providers=l,h.defaultProviders=f,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();wn(`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),wn(`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={directoryScoped:{...e.directoryScoped,[o]:t}};if(e.activeDirectoryKey===o&&(n.providers=u,n.defaultProviders=f,!e.currentProviderId&&!e.currentModelId&&e.settingsDefaultModel)){let r=iu(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(()=>{Gu[o]===p&&e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:!1}}))})},refreshMissingCatalogs:e=>{let n=Su(t().activeDirectoryKey),r=f(),i=JSON.stringify([u(),r,n]),a=Uu.get(i);if(a)return a;let o=e?.source??`refreshMissingCatalogs`,s=(async()=>{t().providers.length===0&&await t().loadProviders({directory:n,source:o,forceRefresh:!0}),f()===r&&Su(t().activeDirectoryKey)===n&&t().agents.length===0&&await t().loadAgents({directory:n,source:o,forceRefresh:!0})})().finally(()=>{Uu.delete(i)});return Uu.set(i,s),s},refreshCatalogsOnPickerOpen:e=>{let n=Su(t().activeDirectoryKey),r=JSON.stringify([u(),f(),n]),i=Wu.get(r);if(i)return i;let a=e?.source??`refreshCatalogsOnPickerOpen`,o=Promise.all([t().loadProviders({directory:n,source:a,forceRefresh:!0}),t().loadAgents({directory:n,source:a,forceRefresh:!0})]).then(()=>void 0).finally(()=>{Wu.delete(r)});return Wu.set(r,o),o},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??Su(t().activeDirectoryKey),i=Eu(r);if(!i)return wn(`loadAgents:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`}),!1;let a=i??B.getDirectory()??null,o=xu(i),s=n?.source??`unknown`,c=u(),l=f(),d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&Ku[o]===p&&Eu(r)===i,p=(Ku[o]??0)+1;Ku[o]=p,wn(`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();wn(`loadAgents:start`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let l=t().directoryScoped[o]?.agents??[];try{let u=Su(o);(It(r??void 0)??It(u??void 0))&&wn(`loadAgents:syncConfigHit`,{directoryKey:o,source:s});let[f,p]=await Promise.all([xn(`loadAgents:api`,()=>n?.forceRefresh?tc(u,c):$s(u,c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),ru(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(dr);if(!d())return!1;if(m.length===0)return!0;let h=It(r??void 0)??It(u??void 0),g=h!==void 0,_=g?su(h.default_agent):void 0,v=g?Ws(h.model):void 0,y=t().activeDirectoryKey===o?t().providers:t().directoryScoped[o]?.providers??[],b=su(t().settingsZenModel),x=su(p.zenModel),S=pu({providers:y,settingsZenModel:b}),C=pu({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:l,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;d()&&k&&w&&xe({zenModel:w,gitProviderId:``,gitModelId:``}).catch(()=>{});let A=t(),j=A.directoryScoped[o]?.lastUserSelection??(A.activeDirectoryKey===o?A.lastUserSelection:void 0),M=fu({agents:m,providers:y,settingsDefaultAgent:p.defaultAgent,settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,opencodeDefaultAgent:D,opencodeDefaultModel:O,projectLastUserSelection:j,globalLastUserSelection:A.globalLastUserSelection}),N=M.agentName??m[0].name,ee=M.providerId,te=M.modelId,ne=M.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=Vu({agents:m,providers:y,currentAgentName:r,currentProviderId:i,currentModelId:a,currentVariant:s,selectionSource:l,resolvedAgentName:N,resolvedProviderId:ee,resolvedModelId:te,resolvedVariant:ne}),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())return!1;let re=typeof performance<`u`?performance.now():Date.now();return wn(`loadAgents:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(re-i),agents:m.length}),!0}catch(t){return!d()||(console.error(`Failed to load agents:`,t),wn(`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:l},r={directoryScoped:{...e.directoryScoped,[o]:n}};return e.activeDirectoryKey===o&&(r.agents=l),r}),!1}})().finally(()=>{Ku[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=Ve(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=Hl.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:ou(e.selectedProviderId,t),selectionSource:`manual`};return{currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:ou(e.selectedProviderId,t),selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[i]:a}}})},d=Ft(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?Hl.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=Hl.getState().getAgentModelForSession(n,l);if(e&&uu(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=iu(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}=fu({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:ou(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=ou(e.selectedProviderId,p)),r})},applyOpenCodeConfigDefaults:(n,r=`syncConfig`,i)=>{let a=n??Su(t().activeDirectoryKey),o=Du(a),s=Su(o),c=i??It(a??void 0)??It(s??void 0);if(!c)return;let l=su(c.default_agent),u=Ws(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??zu(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=fu({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=Vu({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:ou(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!==ou(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=ou(x,S.providerId))),wn(`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 pu({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)),xe({dictationEnabled:t}).catch(()=>{})},setSttProvider:t=>{e({sttProvider:t}),typeof window<`u`&&localStorage.setItem(`sttProvider`,t),xe({sttProvider:t}).catch(()=>{})},setSttServerUrl:t=>{e({sttServerUrl:t}),typeof window<`u`&&localStorage.setItem(`sttServerUrl`,t),xe({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),xe({sttModel:t}).catch(()=>{})},setSttLocalModel:t=>{e({sttLocalModel:t}),typeof window<`u`&&localStorage.setItem(`sttLocalModel`,t),xe({sttLocalModel:t}).catch(()=>{})},setSttLanguage:t=>{e({sttLanguage:t}),typeof window<`u`&&localStorage.setItem(`sttLanguage`,t),xe({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 yu(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()=>{wn(`checkConnection:start`);let n=0,r=null;for(;n<5;)try{wn(`checkConnection:attempt`,{attempt:n+1});let r=await xn(`checkConnection:health`,()=>B.checkHealth(),{attempt:n+1});if(!r&&n<4){let r=t().hasEverConnected;e({isConnected:!1,connectionPhase:r?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),n+=1,await _u(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`}),wn(`checkConnection:end`,{healthy:r,attempts:n+1}),r}catch(e){r=e,n+=1,await _u(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`}),wn(`checkConnection:end`,{healthy:!1,attempts:5}),!1},initializeApp:async()=>{if(Hu)return wn(`initializeApp:deduped`),Hu;let n=(async()=>{let n=typeof performance<`u`?performance.now():Date.now();wn(`initializeApp:start`);try{if(Dt(),!await t().checkConnection()){e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`});return}wn(`initApp:skipped`,{reason:`checkConnection already verified health`});let r=B.getDirectory()??Ke.getState().currentDirectory??Su(t().activeDirectoryKey),i=Eu(r),a=i??Tu();if(!a){wn(`initializeApp:noProjectConfigDirectory`),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});return}!i&&r!==a&&(wn(`initializeApp:normalizedUnknownDirectoryToProject`,{initialDirectory:r,configDirectory:a}),B.setDirectory(a),Ke.getState().setDirectory(a,{showOverlay:!1}));let o=xu(a);t().activeDirectoryKey!==o&&e(e=>{let t=e.directoryScoped[o]??zu();return{activeDirectoryKey:o,providers:t.providers,agents:t.agents,defaultProviders:t.defaultProviders,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`}}),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();wn(`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`}),wn(`initializeApp:error`,{error:n instanceof Error?n.message:String(n)})}})().finally(()=>{Hu=null});return Hu=n,n},prewarmProjectConfigs:async e=>{!t().isConnected||Du(e??Su(t().activeDirectoryKey))!==t().activeDirectoryKey||await t().refreshMissingCatalogs({source:`activeConfigPrewarm`})},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 Ft(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 gu(e,i)},getVisibleAgents:()=>{let{agents:e}=t();return Xc(e)}}),{name:`config-store`,version:5,storage:Ju,migrate:e=>Bu(e),merge:(e,t)=>Nu({...t,...Bu(e)}),partialize:e=>{let t=(t,n)=>{let r=Iu(n?.lastUserSelection)??Lu(Pu(n?.lastSelectedAgentName,!0),Fu(n?.agentModelSelections))??(t===e.activeDirectoryKey?Iu(e.lastUserSelection):void 0);return{currentProviderId:n?.currentProviderId??(t===e.activeDirectoryKey?e.currentProviderId:``),currentModelId:n?.currentModelId??(t===e.activeDirectoryKey?e.currentModelId:``),currentVariant:n?.currentVariant??(t===e.activeDirectoryKey?e.currentVariant:void 0),currentAgentName:n?.currentAgentName??(t===e.activeDirectoryKey?e.currentAgentName:void 0),selectedProviderId:au(n?.selectedProviderId??(t===e.activeDirectoryKey?e.selectedProviderId:``)),agentModelSelections:{},lastSelectedAgentName:r?.agentName??Pu(n?.lastSelectedAgentName,!0),lastUserSelection:r,selectionSource:n?.selectionSource??(t===e.activeDirectoryKey?e.selectionSource:void 0)}},n=Object.fromEntries(Object.entries(e.directoryScoped).map(([e,n])=>[e,t(e,n)]));e.activeDirectoryKey&&!n[e.activeDirectoryKey]&&(n[e.activeDirectoryKey]=t(e.activeDirectoryKey,void 0));let r=Iu(e.globalLastUserSelection)??Iu(e.lastUserSelection);return{activeDirectoryKey:e.activeDirectoryKey,catalogTransportIdentity:e.catalogTransportIdentity,directoryScoped:n,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:au(e.selectedProviderId),agentModelSelections:{},lastSelectedAgentName:r?.agentName??Pu(e.lastSelectedAgentName,!0),lastUserSelection:Iu(e.lastUserSelection)??r,globalLastUserSelection:r,speechRate:e.speechRate,speechPitch:e.speechPitch,speechVolume:e.speechVolume}}})));typeof window<`u`&&(window.__zustand_config_store__=W);var Yu=async e=>{await W.getState().loadProviders({source:e,forceRefresh:!0})},Xu=null;Xu||=yo(async e=>{let t=[];if(B.clearConfigCache(),xo(e,`agents`)){let{loadAgents:e}=W.getState();t.push(e({source:`configChange:agents`,forceRefresh:!0}).then(()=>{}))}xo(e,`providers`)&&t.push(Yu(`configChange:providers`)),t.length>0&&await Promise.all(t)});var Zu=null,Qu=null;Qu||=ft((e,t)=>{W.getState().applyOpenCodeConfigDefaults(e,`syncConfig`,t)}),typeof window<`u`&&!Zu&&(Zu=Ke.subscribe((e,t)=>{let n=xu(e.currentDirectory),r=xu(t.currentDirectory);n!==r&&(wn(`directoryStore:changed`,{previous:r,next:n}),W.getState().activateDirectory(e.currentDirectory))}));var $u=e=>typeof e==`number`&&Number.isFinite(e)?e:null,ed=e=>{let t=e.metadata;return $u(t?.openchamber?.titleRefresh?.activityUpdatedAt)??$u(e.time?.updated)??$u(e.time?.created)??0},td=[`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 nd(e){if(!e)return!1;let t=String(e instanceof Error?e.message:e).toLowerCase();if(td.some(e=>t.includes(e)))return!0;let n=e?.status;return typeof n==`number`&&n>=500&&n<600}async function rd(e,t={}){let{attempts:n=3,delay:r=500,factor:i=2,maxDelay:a=1e4,retryIf:o=nd}=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 id=[`file`,`status`,`additions`,`deletions`],ad=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},od=e=>e===void 0?!1:!e||typeof e!=`object`||Array.isArray(e)?!0:Object.keys(e).some(e=>e!==`messageID`&&e!==`partID`),sd=e=>typeof e.before==`string`||typeof e.after==`string`||typeof e.from==`string`||typeof e.to==`string`||typeof e.patch==`string`;function cd(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!sd(t))return e;let n={};for(let e of id)e in t&&t[e]!==void 0&&(n[e]=t[e]);return n}function ld(e){if(!Array.isArray(e))return e;let t=!1,n=e.map(e=>{let n=cd(e);return n!==e&&(t=!0),n});return t?n:e}function ud(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=ld(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 dd(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=ud(r?n:e);return i===(r?n:e)?n:i}function fd(e){let t=e;if(!(od(t.revert)||Array.isArray(t.summary?.diffs)||typeof t.summary?.diffCount==`number`||typeof t.summary?.hasDiffs==`boolean`||`permission`in t))return e;let n=dd(e),r={...n};delete r.permission;let i=ad(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 pd(e){return ud(e)}var md=new Set([`smartfetch-secondary`]),hd=/^\[(?:Scheduled|Assistant|openchamber-llm)\]/,gd=e=>typeof e==`string`&&e.length>0,_d=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`&&!!(gd(r.assistant?.assistantID)||gd(r.scheduledTask?.taskID)||gd(r.smallModel?.purpose)||gd(r.llm?.purpose))},vd=e=>{let t=e.parentID;return typeof t==`string`&&t.trim()?t:null},yd=e=>!(e.title&&md.has(e.title)||e.title&&hd.test(e.title)||vd(e)||_d(e)),bd=e=>{let t=e.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:0},xd=e=>{let t=e.time?.archived;return typeof t==`number`&&Number.isFinite(t)&&t>0},Sd=e=>{let t=Xe(e);return fd({...t,directory:t.directory||e.directory})};async function Cd(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 rd(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=>Sd(e));if(l.length===0)break;let u=l.filter(e=>(t.archived?!xd(e):xd(e))||t.start!==void 0&&bd(e)<t.start||i!==void 0&&bd(e)>=i?!1:yd(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 wd=`/api/magic-prompts`,Td=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
7
|
|
|
8
8
|
The JSON object must have exactly this shape:
|
|
9
9
|
{"subject": string, "highlights": string[]}
|
|
@@ -392,24 +392,24 @@ Goal: produce the strongest possible final answer by combining complementary inf
|
|
|
392
392
|
|
|
393
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
394
|
|
|
395
|
-
--- FUSION INPUTS START ---`}].map(e=>[e.id,e])),
|
|
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},
|
|
395
|
+
--- FUSION INPUTS START ---`}].map(e=>[e.id,e])),Ed={"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`}},Dd=null,Od=null,kd=(e,t)=>e.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g,(e,n)=>Object.prototype.hasOwnProperty.call(t,n)?t[n]??``:``),Ad=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(Ed)){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},jd=async()=>Dd||(Od||=_(wd,{method:`GET`,headers:{Accept:`application/json`}}).then(async e=>{if(!e.ok)throw Error(`Failed to load magic prompts`);let t=Ad(await e.json().catch(()=>({})));return Dd=t,t}).finally(()=>{Od=null}),Od),Md=e=>{let t=Td.get(e);if(!t)throw Error(`Unknown magic prompt id: ${e}`);return t},Nd=e=>Md(e).template,Pd=async e=>{let t=(await jd().catch(()=>({})))[e];return typeof t==`string`?t:Nd(e)},Fd=async(e,t={})=>kd(await Pd(e),t),Id=async(e,t)=>{let n=await _(`${wd}/${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 Dd=Ad(r),{version:typeof r?.version==`number`?r.version:1,overrides:Dd}},Ld=async e=>{let t=await _(`${wd}/${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 Dd=Ad(n),{version:typeof n?.version==`number`?n.version:1,overrides:Dd}},Rd=async()=>{let e=await _(wd,{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 Dd=Ad(t),{version:typeof t?.version==`number`?t.version:1,overrides:Dd}},zd=e=>e.filter(e=>e?.type===`text`).map(e=>(e.text||e.content||``).trim()).filter(e=>e.length>0).join(`
|
|
397
397
|
`).replace(/\n\s*\n+/g,`
|
|
398
|
-
`),
|
|
399
|
-
`,
|
|
400
|
-
`);return t?[{role:e.role,text:t}]:[]}):[];return{id:e,title:r?.title||e,...n?{directory:n}:{},messages:i}}),a=[],o=
|
|
401
|
-
`),l=[];for(let e of o){let t=ep(e);t&&l.push(t)}for(let e of[...l].reverse())$f(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=O(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=$f(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=Zf(o,r),t=null;for(let n of e){let e=$f(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=Gf(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=T(s);if(t.startsWith(`data:`)){let e=await Qf(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(Uf(t)){if(!ne(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=M(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=ge(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},np=async(e,t={})=>{let n=t.createID??le,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=ge(r,i),o=M(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=T(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await Qf(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(Uf(i)){if(!ne(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}},rp=e=>e?JSON.parse(JSON.stringify(e)):null,ip=e=>e?{...e}:{},ap=(e,t=so.getState())=>{let n=t.getDraft?.(e)??null,r=ip(t.draftAttachmentViews?.[P(e)]);return{record:rp(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},op=async e=>{let t=e.input??so.getState(),n=ap(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}},sp=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}}},cp=async e=>{let t=e.input??so.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?sp({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},lp=(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},up=e=>e?.status===`committed`&&e.current===!0,dp=new Map,fp=async(e,t)=>{let n=P(e),r=dp.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);dp.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),dp.get(n)===o&&dp.delete(n)}},pp=(e,t)=>({key:e,addLocal:async n=>{await fp(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await fp(e,async()=>{let r=t(),i=lp(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 fp(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 fp(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:up(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await fp(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await fp(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await fp(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),mp=4e4,hp=0,gp=null;function _p(e=Date.now()){hp=e}function vp(e){return gp=e,()=>{gp===e&&(gp=null)}}function yp(e){gp?.(e)}function bp(e=Date.now(),t=mp){return hp<=0?!1:e-hp>=t}var xp=3e4,Sp=200,Cp=new Map;function wp(e,t,n){return`${n?.transport??u()}\n${n?.generation??f()}\n${e.trim()}\n${t}`}function Tp(e,t,n){if(!e||!t)return!1;let r=Cp.get(wp(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<xp}function Ep(e,t,n){if(!e||!t)return;let r=wp(e,t,n);for(Cp.has(r)&&Cp.delete(r);Cp.size>=Sp;){let e=Cp.keys().next().value;if(typeof e!=`string`)break;Cp.delete(e)}Cp.set(r,n?.now??Date.now())}var Dp=768,Op=()=>{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},kp=()=>{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(z())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=Dp&&Op()?`mobile`:`desktop`},Ap=()=>kp()===`mobile`,jp=3,Mp=2,Np=4,Pp=4,Fp=100,Ip=30;function Lp(){return a()?`relay`:`local`}function Rp(e=Lp()){return e===`relay`?Mp:jp}function zp(e=Lp()){return e===`relay`?Pp:Np}function Bp(e){return Rp(Up(e))}function Vp(){return Fp}function Hp(){return Ip}function Up(e){return e===`relay`||e===`local`?e:Lp()}var Wp=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function Gp(){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 qp(e){return{pages:Object.freeze(e.pages.map(Kp)),pageParams:Object.freeze([...e.pageParams])}}function Jp(e,t,n=Wp){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 Yp(e){if(!e||e.pages.length===0)return tn;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 Xp(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=Yp(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function Zp(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function Qp(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:Zp(t)}})}function $p(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`?em(e,i):null;if(!e||e.pages.length===0||r===`initial`&&!d)return qp({pages:[Qp(`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 qp({pages:[Qp(`tail`,tm(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=[Qp(`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(nm(i,o,s,a)),g.push(e.pageParams[r]??null)}return qp({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?nm(t,r===`reconcile-page`||r===`initial`?tm(i,m):[...i,...m],s,a):nm(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 qp({pages:h,pageParams:[...e.pageParams]})}function em(e,t){if(!e||e.pages.length===0)return null;let n=Yp(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 tm(e,t){let n=e.slice();for(let e of t){let t=tr(e),r=n.length;for(let e=0;e<n.length;e+=1)if(Ie(t,tr(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function nm(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&&rm(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||am(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:Zp(t)}})}function rm(e,t){return e===t||e.id===t.id&&e===t}function im(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 am(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!im(e[n],t[n]))return!1;return!0}function om(e){return e.filter(e=>!!e?.id)}function sm(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 bn(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 cm(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=$p(e??Gp(),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&&am(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 qp({pages:e.pages.map((t,n)=>nm(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function lm(e,t){let n=Xp(e,t),r=Yp(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 um(e,t,n,r){if(!pr(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?vm(e,t,i,r):{data:e,result:{applied:!1,changed:!1}}}let{draft:i,previousBoundary:a}=lm(e,t),o=Cn(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=sm(n,i,t),c=new Set;return s&&c.add(s),{data:cm(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function dm(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 fm(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 pm(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=lm(e,t),o=!1,s=0,c,l=new Set,u=dm(e),d=fm(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(!pr(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=vm(s>0||l.size>0?cm(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=pm(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=Cn(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=sm(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&&am(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&&rm(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:cm(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function mm(e,t,n,r,i){let a=e&&e.pages.length>0?e:qp({pages:[Qp(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=Xp(a,t),s=o.message[t]?[...o.message[t]]:[],c=s.findIndex(e=>e.id===n.id);c<0?s.push(n):s[c]=on(s[c],n);let l={...o.part,[n.id]:om(r)};return{data:qp({pages:a.pages.map((e,t)=>t===a.pages.length-1?nm(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]?nm(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 hm(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:qp({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 nm(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function gm(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=Xp(e,t),i=$t({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:Yp(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=qp({pages:[Qp(`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:Yp(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=qp({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?nm(t,tm(r,l),o,a):nm(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:Yp(u)}}}function _m(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=Xp(e,t),a=Xt(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:$p(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 um(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return pm(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return mm(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 hm(e,n.messageID,t)}case`durable-seed`:return gm(e,t,n);case`reset`:return n.page?_m(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 vm(e,t,n.to,r+1)}default:return{data:e,result:{applied:!1,changed:!1}}}}function vm(e,t,n,r){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1},needsAuthorityRecovery:!0};let i=Em(e,t),a=i.messageOrder,o=a.findIndex(e=>e===n),s=Yp(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=>or(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 ym(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 bm(e,t,n,r=`materialize`){return _m(e,n,{type:`http-page`,purpose:r,page:ym(t),liveRevision:t.sync.liveRevision}).data}function xm(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return qp(t);if(t.pages.length===e.pages.length){let r=Tm(e,t);if(r===e)return e;if(wm(e,t)||Cm(e,t))return r;let i=t.pages[t.pages.length-1];return bm(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0],i=_m(e,n,{type:`http-page`,purpose:`prepend`,page:ym(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 bm(e,r,n)??qp(t)}return qp(t)}function Sm(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Cm(e,t){let n=Sm(e),r=Sm(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=Em(e,``),a=Em(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function wm(e,t){let n=Sm(e);if(n.size===0)return!1;let r=Sm(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=Em(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||Ie(tr(t),tr(n))>0)return!1}return!0}function Tm(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:qp({pages:r,pageParams:[...t.pageParams]})}function Em(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:Yp(e),liveRevision:a}}var Dm=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Om=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},km=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Am=e=>e.trim(),jm=e=>e?.trim()||`tail`,Mm=new Set([502,503,504]),Nm=[`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 Pm(e){if(!e||e instanceof Dm||e instanceof Om)return!1;if(e instanceof km)return e.status>=400&&e.status<500?!1:Mm.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(Mm.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(Mm.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:Nm.some(e=>n.includes(e))}function Fm(e,t){return e>=2?!1:Pm(t)}var Im=(e,t=u(),n=f())=>[t,n,`sessionMessages`,`page`,Am(e.directory),e.sessionID,e.limit,jm(e.before)],Lm=(e,t=u(),n=f())=>[t,n,`session-transcript`,Am(e.directory),e.sessionID];function Rm(e){if(!e||typeof e!=`object`)throw new Om(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Om(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Om(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Om(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Om(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Om(`session message page: cursor must be string when set`);return e}function zm(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 Om(`session message page: complete=false requires non-empty cursor`);if(r===n)throw new Om(`session message page: prepend returned the same cursor without progress`)}var Bm=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}:{}})},Vm=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw new Dm},Hm=(e,t,n=u(),r={},i=(r.getGeneration??f)())=>{let a=Am(e.directory),o=e.sessionID,s=e.limit,c=e.before?.trim()||void 0;return{queryKey:Im({directory:a,sessionID:o,limit:s,before:c},n,i),queryFn:async({signal:e})=>{Vm(n,i,r);let l=await t({directory:a,sessionID:o,limit:s,before:c,signal:e});Vm(n,i,r);let u=Rm(l);return zm(c,u),Bm(u)},staleTime:1/0,gcTime:3e5,retry:Fm,retryDelay:e=>Math.min(500*2**e,4e3)}},Um=(e,t,n=I,r=u(),i={},a=(i.getGeneration??f)())=>n.fetchQuery(Hm(e,t,r,i,a));function Wm(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 Gm(e){return Bm({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 qm(e){let t=Am(e.directory),n=e.sessionID,r=e.transport??u(),i=e.probe??{},a=e.generation??(i.getGeneration??f)(),o=e.initialLimit??Rp(),s=e.historyLimit??zp(),c=e.client??I,l=Lm({directory:t,sessionID:n},r,a),d=async t=>Gm(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:l,queryFn:async e=>{Vm(r,a,i);let l=e.pageParam?.trim()||void 0,u=l?s:o,f=l?`prepend`:`initial`,p=await Um({directory:t,sessionID:n,limit:u,before:l},d,c,r,i,a);Vm(r,a,i);let m=Wm(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)=>xm(e,t,n)}}function Jm(e){let t=e.client??I,n=qm({...e,client:t}),r=new Er(t,{...n,structuralSharing:(t,n)=>xm(t,n,e.sessionID)});return{queryKey:n.queryKey,observer:r,ensureInitial:async()=>{let e=r.getCurrentResult().data;if(e&&e.pages.length>0)return qp(e);let t=await r.refetch(),n=t.data??r.getCurrentResult().data;if(n&&n.pages.length>0)return qp(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:qp(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return qp(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:qp(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function Ym(e,t,n,r){let i=e.getQueryData(t),a=_m(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 Xm(e,t=I,n=u(),r=f()){return t.getQueryData(Lm(e,n,r))}function Zm(){return ye()||Ap()}function Qm(){return ye()?4:Ap()?12:40}var $m=1048576,eh=4*$m,th=12*$m,nh=40*$m;function rh(){return ye()?eh:Ap()?th:nh}var ih=e=>e.trim();function ah(e){return{transport:e.transport,generation:e.generation,directory:ih(e.directory),sessionID:e.sessionID}}function oh(e){let t=ah(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function sh(e){return`${e.transport}\n${e.generation}\n${ih(e.directory)}`}var ch={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function lh(e,t,n){return[t,n,ch.checkpoint,ih(e.directory),e.sessionID]}function uh(e){let t=ah(e);return[{queryKey:Lm({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,ch.transportPageRoot,ch.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,ch.taskRoot,ch.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,ch.taskRoot,ch.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:lh({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function dh(){let e=new Map;return{retain(t){let n=ah(t),r=oh(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(oh(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(oh(t))?.count??0},clear(){e.clear()}}}function fh(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var ph=3e4;function mh(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function hh(e){return!Array.isArray(e)||e.length<5||e[2]!==ch.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 gh(e){let t=e.client,n=e.activeRegistry??dh(),r=e.counters??fh(),i=e.getLimit??Qm,a=e.now??Date.now,o=e.minResidencyMs??ph,s=new Map,c=new Map,l=e=>{let t=ah(e),n=oh(t),r=c.get(t.sessionID);r||(r=new Map,c.set(t.sessionID,r)),r.set(n,t)},u=e=>{let t=ah(e),n=oh(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=hh(e.queryKey);t&&l(t)}let f=t.getQueryCache().subscribe(e=>{if(e.type===`added`||e.type===`updated`){let t=hh(e.query.queryKey);t&&l(t);return}if(e.type===`removed`){let t=hh(e.query.queryKey);t&&u(t)}}),p=e=>{let t=oh(ah(e));s.set(t,a())},m=e=>{let t=oh(ah(e)),n=s.get(t);return n!==void 0&&a()-n<o},h=e=>{let r=ah(e);if(n.isRetained(r))return!0;let i=Lm({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:ih(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=hh(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:mh(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:ih(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=ah(e);s.delete(oh(t)),u(t);for(let t of uh(e))v(t)},b=(e,t)=>{r.purgeGeneration+=1,d(e,t);let n=[[e,t,ch.canonical],[e,t,ch.transportPageRoot,ch.transportPageKind],[e,t,ch.taskRoot],[e,t,ch.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=>oh(ah(e)))),o=g({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=sh(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=oh(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(oh(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 _h=new Map,vh=new Set;function yh(e,t){return`${e}\n${t}`}function bh(){for(let e of vh)e()}function xh(e,t){if(!e||!t)return;let n=yh(e,t),r=_h.get(n)??0;_h.set(n,r+1),r===0&&bh()}function Sh(e,t){if(!e||!t)return;let n=yh(e,t),r=_h.get(n);if(r){if(r<=1){_h.delete(n),bh();return}_h.set(n,r-1)}}function Ch(e,t){if(!e)return!1;if(t)return _h.has(yh(t,e));let n=`\n${e}`;for(let e of _h.keys())if(e.endsWith(n))return!0;return!1}function wh(e){return vh.add(e),()=>{vh.delete(e)}}function Th(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 Eh(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&&xh(n,i.scope.sessionID);let o=()=>{_.delete(o)&&i.gap&&Sh(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`&&Hn(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(...Th({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 Dh=e=>e.trim(),Oh=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session status runtime changed`)},kh=(e,t={})=>{let n=Dh(e),r=t.transport??u(),i=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),a=t.now??Date.now,o=t.runtimeProbe??{},s=(o.getGeneration??f)();return Ar({queryKey:L.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{Oh(r,s,o);let t=a(),c=await i(n,e);if(Oh(r,s,o),c===null)throw Error(`session status snapshot unavailable`);return{snapshot:c,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},Ah=(e,t={})=>{let{client:n=I,...r}=t;return n.fetchQuery(kh(e,r))},jh=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session active runtime changed`)},Mh=(e={})=>{let t=e.transport??u(),n=e.loadActive??(e=>B.getSessionActive(e)),r=e.now??Date.now,i=e.runtimeProbe??{},a=(i.getGeneration??f)();return Ar({queryKey:L.sessionActive.snapshot(t,a),queryFn:async({signal:e})=>{jh(t,a,i);let o=r(),s=await n(e);return jh(t,a,i),{result:s,requestedAt:o}},staleTime:0,gcTime:3e5,retry:!1})},Nh=(e={})=>{let{client:t=I,...n}=e;return t.fetchQuery(Mh(n))},Ph;function Fh(e){Ph=e}function Ih(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 Lh(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Rh(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function zh(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 Bh(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(zh(e,t,n),!0)}function Vh(e,t,n=Date.now()){let r=e.getState().session_status?.[t];return r?.type===`busy`?!1:r?.type===`retry`?Bh(e,t,n):(zh(e,t,n),!0)}function Hh(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=Ih(o[e]);if(t){c[e]=n&&Rh(n,r)?n:{type:`busy`};continue}if(i?.tailOpenSessionIds?.has(e)&&(n?.type===`retry`||n?.type===`busy`)){c[e]=n;continue}c[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:c,source:`fused`}}function Uh(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=Ih(t[o]);if(n&&n.type!==`idle`){Lh(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 Wh(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Gh(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 Ah(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 Nh({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}=Hh(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=Wh(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Uh(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Ph;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:Gh(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function qh(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 Yh(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 Xh(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(Xn(e))??Promise.resolve(),r.get(cn(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=Xn(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=cn(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??rh)();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 Zh=new Map;function Qh(e,t){let n=Zh.get(e);if(n)return n;let r=t().finally(()=>{Zh.get(e)===r&&Zh.delete(e)});return Zh.set(e,r),r}var $h=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function eg(e){return Qh($h(e),e.request)}function tg(e,t){return`${e}\n${t}`}var ng=new Map;function rg(e){return ng.get(e)}async function ig(e){return eg({runtimeKey:tg(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 ng.set(r.id,i),{info:pd(r),parts:i}}})}function ag(e,t){let n=e.info;return n.role===t||n.clientRole===t}function og(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!ag(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 sg(e){if(e.complete){let t=e.records.some(e=>ag(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=og(e.records);if(t.length===0){let t=e.records.some(e=>ag(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=>ag(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function cg(e){return e.slim===!0}var lg=/bearer|token|authorization|password|secret|cookie/i,ug=new Set([`message.part.delta`]);function dg(e){return typeof e==`string`&&e.includes(`-`)}var fg=`openchamber.client-diagnostics.enabled`;function pg(e){return e===`true`||e!==`false`&&null}function mg(e){return e.preference===!0||e.preference!==!1&&dg(e.version)}function hg(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function gg(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function _g(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 vg(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return lg.test(t)?`redacted-error`:t}function yg(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)cg(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function bg(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function xg(e){let t=0;for(let n of e.messageOrder)Fg(e.messagesByID[n])===!0&&(t+=1);return t}function Sg(e){let t=e.transcript?yg(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:bg(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:xg(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...vg(e.error??e.request?.error)?{error:vg(e.error??e.request?.error)}:{},..._g(e.error)===void 0?{}:{httpStatus:_g(e.error)}}}function Cg(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 wg(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 Tg(e){return typeof e==`string`&&ug.has(e)}function Eg(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return Tg(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>Tg(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 Dg(e){if(e.type===`http-page`)return e.purpose}function Og(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function kg(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 Ag(e){return e.__openchamberOptimistic===!0}function jg(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 lg.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function Mg(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function Ng(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var Pg=e=>typeof e==`string`&&e.trim().length>0;function Fg(e){if(!e||Mg(e)!==`assistant`)return;let t=e,n=!Pg(t.mode)&&!Pg(t.agent),r=!Pg(t.modelID)||!Pg(t.providerID);return n||r}function Ig(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function Lg(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)cg(e)?r+=1:i+=1,Ag(e)&&(a=!0);let o=e.messagesByID[t],s=Mg(o),c=Fg(o),l=s===`user`?jg(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:Ng(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 Rg(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:Ig(e),after:Ig(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 zg(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:Rg(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 Bg(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function Vg(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function Hg(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Ug(e){let t=Hg(e.partID),n=Hg(e.messageID),r=Hg(e.directory),i=Hg(e.childSessionID),a=Hg(e.toolStatus),o=Hg(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 Wg(e){return[e.sessionID,Hg(e.partID)??``,e.childSessionPresent?`1`:`0`,Hg(e.childSessionID)??``,Hg(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`,Hg(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Gg(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Ug(e)}}function Kg(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:Vg(e),...Ug(e)}}var qg=`openchamber-transcript-diagnostics`,Jg=`events`,Yg=1,Xg=(e,t)=>{try{return e.error??Error(t)}catch{return Error(t)}},Zg=(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`))}}}),Qg=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Yg),i=!1,a=()=>{i||(i=!0,n(Xg(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}),$g=(e=qg)=>{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=Qg(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 Zg(n.add(t),n.transaction);let r=await Zg(n.getAllKeys(),n.transaction),i=r.length-t;if(i>0)for(let e of r.slice(0,i))await Zg(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=>Zg(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 Zg(e.clear(),e.transaction)})}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})}}};function e_(e={}){let t=e.driver??$g(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var t_=Cr(`OpenChamberMedia`);function n_(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function r_(){return Ln()&&wr!==void 0&&wr.isPluginAvailable(`OpenChamberMedia`)}function i_(){return`2.0.2-beta.1`}function a_(){if(typeof localStorage>`u`)return null;try{return pg(localStorage.getItem(fg))}catch{return null}}function o_(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(fg,e?`true`:`false`)}catch{}}function s_(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var c_;function l_(e=i_()){return mg({version:e,preference:a_()})}function u_(e={}){return wg({sink:s_()===`indexeddb`?(e.createIndexedDBSink??e_)():(e.createMemorySink??Cg)(),isEnabled:e.isEnabled??l_})}function d_(){return c_??=u_(),c_}function f_(e){d_().record(e)}function p_(e){try{return l_()?Lg(e()):void 0}catch{return}}function m_(e){try{f_(zg(e))}catch{}}function h_(e){try{f_(Gg(e))}catch{}}function g_(e){try{f_(Kg(e))}catch{}}function __(e){if(e!==void 0)return typeof e==`function`?e():e}function v_(e){return!Eg(e.command)||e.changed===!1&&(e.command.type===`sse-event`||e.command.type===`sse-event-batch`)?!1:(e.isEnabled??(()=>d_().isEnabled()))()}function y_(e){if(!v_(e))return;let t=Eg(e.command);t&&f_(Sg({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:__(e.transcript),request:__(e.request),hydration:__(e.hydration),command:e.command.type,purpose:Dg(e.command),sseType:Og(e.command),source:kg(e.command),error:e.error}))}async function b_(){let e=await d_().exportReport(),t=te()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function x_(e,t=hg()){if(r_())return(await t_.saveFile({dataBase64:n_(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 S_(){let e=await b_(),t=hg();return{content:e,fileName:t,outcome:await x_(e,t),eventCount:gg(e)}}function C_(e){return e.trim()}function w_(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??u)(),r=e.generation??t.generation??(t.probe?.getGeneration??f)();return{directory:C_(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function G(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function T_(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:tn,liveRevision:0}}function E_(e,t){if(!e||e.pages.length===0)return T_(t);let n=Em(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function D_(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function O_(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)D_(n.partsByMessageID[e])&&r.add(e);return r}function k_(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 A_(e){let t=[];for(let n of e.records)n.info?.id&&t.push({info:n.info,parts:[...n.parts??[]]});return t}function j_(e,t){let n=[];for(let r of e.messageOrder)t.has(r)||D_(e.partsByMessageID[r])||n.push(r);return n}function M_(e={}){let t=e.client??I,n=e.cacheBudget??gh({client:t,activeRegistry:e.activeRegistry??dh()}),r=n.activeRegistry,i=new Map,a=new Map,o=new Map,s=new Map,c=new Map,p=e.durableStore?Xh(e.durableStore,{getProtectScopes:()=>r.listRetained().map(qh),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=G(t);if(x.has(n))return;let r=F(e);!gt(r)&&!b.has(n)||(x.add(n),f_(Sg({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=w_(n,e);return Xm({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},ee=t=>{let n=w_(t,e);return Lm({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},te=t=>{let n=w_(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=w_(n,{...e,transport:void 0,generation:void 0,probe:r}),o=G(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 Dm(`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},ie=t=>{let n=G(w_(t,e)),r=a.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},ae=n=>{let r=G(w_(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]&&ie(n)});o.set(r,a)},oe=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)},se=(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},P=(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)},F=t=>{let n=w_(t,e),r=G(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=E_(i,n.sessionID),s=se(r,o);return a.cachedFrom=i,a.hasTranscriptCache=!0,s},ce=(e,t)=>`${G(e)}\n${t}`,le=(e,t)=>{let n=G(e),r=v.get(n);r&&(r.delete(t),r.size===0&&v.delete(n))},ue=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t)},de=e=>{for(let t of g.keys())t.startsWith(e)&&g.delete(t);for(let t of _.keys())t.startsWith(e)&&_.delete(t)},fe=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)},L=e=>{let t=`${G(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,me=t=>{let n=w_({directory:t.directory,sessionID:t.sessionID},e);return!pe&&n.transport===t.transport&&n.generation===t.generation},he=(e,t,n)=>{p&&d()&&p.persistSettled(qh(e),t,n??[])},R=(e,t,n,r)=>{if(!p||j>0||!d()||!r.applied||!r.changed)return;let i=qh(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=F(e);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;he(t,n,r.partsByMessageID[e.info.id]??e.parts)}}else if(n.type===`revert-committed`){let n=F(e);for(let e of n.messageOrder){let r=n.messagesByID[e];r&&he(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=F(e);for(let e of r){let n=Yh(e);if(n.action===`remove`){p.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&he(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=F(e),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&he(t,n,r.partsByMessageID[e.info.id])}}}},ge=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 Um({directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??Rp()},r,t,n.transport,i,n.generation))},_e=(e,t)=>{for(let n of t){let t=`${e.directory}\n${e.sessionID}\n${n}`;Ct(t,()=>z.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)}},ve=(e,t)=>{let r=G(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 ge(t);if(!me(t)||l()!==a||!k(r,o))return m.delete(r),z.getTranscript(e);z.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Ep(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=z.getParts(e,i),c=z.getMessage(e,i)??a.info;if(!qt(o,c)){le(t,i),g.set(ce(t,i),{status:`ready`}),r+=1;continue}n.push(i)}r>0&&ie(e),_e(e,n)}return m.delete(r),n.noteScopeObserved(te(e)),ne(e),z.getTranscript(e)}catch(n){if(n instanceof Dm||!me(t))return m.delete(r),z.getTranscript(e);throw m.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),f_(Sg({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:F(e),request:z.getRequestState?.(e),hydration:z.getHydrationState?.(e),error:n})),n}finally{h.delete(r)}})();return h.set(r,s),s},ye=new Map,be=(e,t)=>{let r=G(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 z.refreshFromAuthority(e),!me(t)||l()!==a||!k(r,o)?(m.delete(r),z.getTranscript(e)):(Ep(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),m.delete(r),n.noteScopeObserved(te(e)),ne(e),z.getTranscript(e))}catch(n){return m.delete(r),n instanceof Dm||!me(t)||f_(Sg({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:F(e),request:z.getRequestState?.(e),hydration:z.getHydrationState?.(e),error:n})),z.getTranscript(e)}finally{h.delete(r)}})();return h.set(r,s),s},xe=t=>{let n=N(t);return!n||n.pages.length===0||y.has(G(w_(t,e)))?!0:Yp(n).kind===`unknown`},z={getTranscript(e){return F(e)},getPagination(t){let n=w_(t,e),r=G(n),i=z.getTranscript(t);return P(r,rt(n.sessionID,i.boundary))},getRequestState(t){let n=w_(t,e),r=m.get(G(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(G(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=w_(t,e),r=G(n),i=z.getTranscript(t);gt(i)&&b.set(r,!0);let a=b.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Wt({p0Satisfied:a,prependActive:S.has(r),materializeActive:L(n),earlierHistoryLoaded:st(i)>1})}},hasSession(e){return N(e)!==void 0},getMessage(t,n){let r=G(w_(t,e)),i=M(r),a=z.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=G(w_(t,e)),i=M(r),a=z.getTranscript(t).partsByMessageID[n]??N_,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=w_(t,e),i=g.get(ce(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!z.getMessage(t,n)||v.get(G(r))?.has(n)||Ue(z.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=w_(t,e),i=l(),a=ce(r,n),o=p_(()=>z.getTranscript(t)),s=e=>{try{let t=p_(e);if(!o||!t)return;m_({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(!z.getMessage(t,n))return g.set(a,{status:`idle`}),z.getTranscript(t);if(!Ue(z.getParts(t,n))&&!v.get(G(r))?.has(n))return g.set(a,{status:`ready`}),z.getTranscript(t);g.set(a,{status:`loading`}),ie(t);try{let o=await ig({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 B.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n}),i=qe(r.sessionID,t);if(!i?.info?.id)throw Error(`session.message failed: empty response`);return{data:{info:i.info,parts:[...i.parts??[]]}}}});return!me(r)||l()!==i?(g.delete(a),z.getTranscript(t)):(z.apply(t,{type:`materialize-snapshots`,records:[{info:o.info,parts:o.parts??[]}]}),Ue(z.getParts(t,n))?g.set(a,{status:`error`,error:`session.message failed: slim parts remain`}):g.set(a,{status:`ready`}),ie(t),z.getTranscript(t))}catch(e){if(!me(r)||l()!==i)return g.delete(a),z.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return g.set(a,{status:`error`,error:n}),ie(t),z.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=w_(r,e),s=ee(r),c=(()=>{switch(a.type){case`http-page`:{let e=G(o),n=T.get(e);if(typeof n==`number`&&!k(e,n))return{applied:!1,changed:!1,error:`stale-read-epoch`};let i=Ym(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&&(ie(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?z.apply(r,{type:`revert-committed`,to:e}):{applied:!1,changed:!1}}let e=Ym(t,s,o.sessionID,{type:`sse-event`,event:a.event});return e.result.applied&&y.delete(G(o)),e.result.changed&&ie(r),e.result}case`sse-event-batch`:{let e=a.events,n=!1,i=!1,c=[],l=()=>{if(c.length===0)return;let e=Ym(t,s,o.sessionID,{type:`sse-event-batch`,events:c});c=[],e.result.applied&&(i=!0,y.delete(G(o))),e.result.changed&&(n=!0,ie(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=z.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=Ym(t,s,o.sessionID,{type:`optimistic-add`,message:a.message,parts:a.parts});return n.result.changed&&ie(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:o.directory,sessionID:o.sessionID,messageID:a.messageID}),Ym(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=Ym(t,s,o.sessionID,{type:`optimistic-remove`,messageID:a.messageID});return n.result.changed&&ie(r),n.result}case`reset`:{if(S.delete(G(o)),v.delete(G(o)),y.delete(G(o)),n.purgeSession(te(r)),!a.page)return ie(r),{applied:!0,changed:!0};let e=Ym(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)&&(ie(r),ne(r)),e.result}case`materialize-snapshots`:return P_(t,s,o.sessionID,a,()=>ie(r));case`remove-message`:{let e=Ym(t,s,o.sessionID,{type:`optimistic-remove`,messageID:a.messageID});return e.result.changed&&ie(r),e.result}case`revert-committed`:{let c=G(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),de(`${c}\n`);let u=Ym(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(qh(o)).catch(()=>void 0),ie(r),e.fetcher&&z.ensureInitial(r).catch(()=>void 0),{applied:!0,changed:!0}):(u.result.applied&&y.delete(c),u.result.changed&&(ie(r),ne(r)),{applied:!0,changed:u.result.changed})}default:return{applied:!1,changed:!1}}})();return R(r,o,a,c),c.applied&&(y_({directory:o.directory,sessionID:o.sessionID,transport:o.transport,generation:o.generation,command:a,transcript:()=>z.getTranscript(r),request:()=>z.getRequestState?.(r),hydration:()=>z.getHydrationState?.(r),error:c.error,changed:c.changed}),A(r,o)),c},subscribe(t,i){let o=G(w_(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),ae(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))}oe(o)}}},async ensureInitial(t){let a=w_(t,e),o=l(),s=G(a);if(p&&await p.wait(qh(a)),l()!==o)return z.getTranscript(t);if(N(t)===void 0&&e.durableStore&&d())try{let n=await e.durableStore.readSession(qh(a));if(me(a)&&l()===o&&N(t)===void 0&&n.records.length>0){j+=1;try{z.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)qt(t.parts,t.info)&&e.add(t.info.id);e.size>0&&v.set(s,e),y.add(s)}finally{--j}}}catch(e){f_(Sg({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 z.getTranscript(t);if(xe(t)&&N(t)!==void 0){let e=Date.now(),n=await ve(t,a);return f_(Sg({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:z.getRequestState?.(t),hydration:z.getHydrationState?.(t)})),A(t,a),n}let u=N(t);if(u&&u.pages.length>0&&!xe(t)&&e.fetcher&&!r.isRetained(te(t))){let e=Date.now(),n=await be(t,a);return f_(Sg({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:z.getRequestState?.(t),hydration:z.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 z.getTranscript(t);throw f_(Sg({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:F(t),request:z.getRequestState?.(t),hydration:z.getHydrationState?.(t),error:e})),e}if(l()!==o)return i.get(s)===f&&(n.purgeSession(te(t)),c.delete(s),ie(t)),z.getTranscript(t);m.delete(s),g||Ep(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(te(t)),ne(t);let _=z.getTranscript(t);return f_(Sg({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:z.getRequestState?.(t),hydration:z.getHydrationState?.(t)})),A(t,a),_},async fetchPreviousPage(n){if(xe(n)&&await z.ensureInitial(n),Yp(N(n)).kind!==`has-more`)return z.getTranscript(n);let r=w_(n,e),i=G(r),a=O(i);S.add(i),ie(n);let o=Date.now();try{if(await re(n).fetchPreviousPage(),!k(i,a))return z.getTranscript(n);ne(n);let e=z.getTranscript(n);return f_(Sg({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:z.getRequestState?.(n),hydration:z.getHydrationState?.(n)})),e}catch(e){if(!k(i,a)){let e=N(n);return e&&t.setQueryData(ee(n),e),z.getTranscript(n)}throw f_(Sg({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),ie(n)}},getController(t){let n=w_(t,e);return i.get(G(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=w_(r,e),o=G(a),s=O(o),c=`${o}\n${s}\n${l()}`,u=ye.get(c);if(u)return u;let d=(async()=>{let c=l(),u=p_(()=>z.getTranscript(r)),d=z.getTranscript(r),f={...d.messagesByID},p={...d.partsByMessageID},m=await i({directory:a.directory,sessionID:a.sessionID,limit:e.initialLimit??Rp(),signal:new AbortController().signal});if(l()!==c||!k(o,s))return z.getTranscript(r);if(!me(a))return z.getTranscript({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation});let h=z.getTranscript(r),g=O_(f,p,h),_=(m.coverageMessageIDs??m.records.map(e=>e.info.id)).some(e=>h.messagesByID[e]!==void 0),v=wt({fetched:A_(m),previous:k_(h),touched:g,coverageMessageIDs:m.coverageMessageIDs,completeTail:m.complete===!0}),y=h.liveRevision;z.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=j_(z.getTranscript(r),b);for(let t of x)z.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)}),ie(r))}let S=z.getTranscript(r);Ep(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(te(r)),Dn(a.sessionID,S.messageOrder);try{let e=p_(()=>S);u&&e&&m_({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})();ye.set(c,d);try{return await d}finally{ye.get(c)===d&&ye.delete(c)}},async destructiveReset(t){let r=p_(()=>z.getTranscript(t)),a=te(t);return p&&await p.clearSession(qh(w_(t,e))),n.destructiveReset(a,async()=>{let n=w_(t,e),a=G(n),o=i.get(a);if(o&&(o.destroy(),i.delete(a)),c.delete(a),fe(a),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await z.ensureInitial(t);try{let e=p_(()=>s);r&&e&&m_({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=G(w_(t,e)),a=i.get(r);a&&(a.destroy(),i.delete(r)),c.delete(r),de(`${r}\n`),v.delete(r),fe(r),n.purgeSession(te(t)),ie(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)),ie(e)}}de(t),ue(t),fe(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)}de(`${e}\n${t}\n`),ue(`${e}\n${t}\n`),fe(`${e}\n${t}\n`),n.purgeGeneration(e,t),p&&p.clearGeneration({transport:e,generation:t})},destroy(){pe=!0,ye.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 z}var N_=Object.freeze([]);function P_(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=Ym(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var F_=`/api/openchamber/transcript-cache`,I_=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),L_=e=>typeof e==`object`&&!!e&&!Array.isArray(e),R_=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},z_=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},B_=e=>{if(!L_(e))throw Error(`Invalid transcript cache scope`);return{transport:R_(e.transport,`scope`),generation:z_(e.generation,`scope`),directory:R_(e.directory,`scope`),sessionID:R_(e.sessionID,`scope`)}},V_=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},H_=e=>{if(!L_(e)||!L_(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!L_(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:B_(e.scope),messageID:R_(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>V_(e,`part completeness`)),completeness:V_(e.completeness,`completeness`),contentHash:R_(e.contentHash,`content hash`),byteSize:z_(e.byteSize,`byte size`),lastAccessedAt:z_(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:z_(e.sortKey.created,`sort key`),messageID:R_(e.sortKey.messageID,`sort key`)}}},U_=(e,t)=>{if(!L_(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(H_);return{scope:e.scope===void 0?rn(t):B_(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},W_=e=>{if(!L_(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:H_(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!I_.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:H_(e.record)}}}throw Error(`Invalid transcript cache upsert`)},G_=e=>{if(!L_(e))throw Error(`Invalid transcript cache evict`);return{evicted:z_(e.evicted,`evict`),freedBytes:z_(e.freedBytes,`evict`),remainingBytes:z_(e.remainingBytes,`evict`)}},K_=e=>({scope:rn(e),records:[],byteSize:0}),q_=(e,t)=>L_(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`)}},Y_=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(q_(i,`Transcript cache request failed (${r.status})`))},X_=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Z_=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Q_(e={}){let t=e.fetch??_;return{async readSession(e){let n=await Y_(t,`${F_}/session`,{method:`GET`,query:X_(e)});return n.kind===`disabled`||n.kind===`not-found`?K_(e):U_(n.payload,e)},async readMessage(e,n){let r=await Y_(t,`${F_}/message`,{method:`GET`,query:{...X_(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!L_(r.payload))throw Error(`Invalid transcript cache record`);return H_(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Y_(t,`${F_}/message`,Z_(`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 W_(i.payload)},async removeMessage(e,n){let r=await Y_(t,`${F_}/message`,Z_(`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 Y_(t,`${F_}/session`,Z_(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Y_(t,`${F_}/generation`,Z_(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Y_(t,`${F_}/evict`,Z_(`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 G_(r.payload)},async clearAll(){let e=await Y_(t,`${F_}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var $_=`openchamber-transcript-durable`,ev=1,tv=`transcriptIndex`,nv=`transcriptContent`,rv=class extends Error{code;constructor(e){super(e),this.code=e}},iv=e=>({id:Bn(e.scope,e.messageID),scope:rn(e.scope),scopeKey:Xn(e.scope),generationKey:cn(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}),av=(e,t)=>({scope:rn(e.scope),messageID:e.messageID,info:Mt(t.info),parts:Mt(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}}),ov=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return av(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},sv=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},cv=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),lv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new rv(`database-unavailable`));return}let r=indexedDB.open(e,ev),i=!1,a=()=>{i||(i=!0,n(new rv(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(tv)){let t=e.createObjectStore(tv,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(nv)||e.createObjectStore(nv,{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}),uv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new rv(`database-unavailable`)),r.onblocked=()=>void 0}),dv=(e=$_)=>({transaction:async t=>{let n=await lv(e),r=n.transaction([tv,nv],`readwrite`),i=r.objectStore(tv),a=r.objectStore(nv),o=e=>cv(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:()=>uv(e)});function fv(e,t={}){let n=gn(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(iv(t)),En(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(Xn(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=av(t,r);a.lastAccessedAt=n(),await e.putIndex(iv(a)),i.push(a)}return qn(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await ov(e,Bn(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=er({info:i,incomingCompleteness:Mn(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=Mt(a.slice()),c=Mn(s),l=await Rn(i,s),u=Bn(t,i.id);return e.transaction(async e=>{let a=await ov(e,u),o=er({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:En(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:rn(t),messageID:i.id,info:Mt(i),parts:s,partCompleteness:s.map(dn),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:tr(i)};return await e.putIndex(iv(d)),await e.putContent({id:u,info:Mt(i),parts:s}),{status:`written`,record:En(d)}})},async removeMessage(t,n){await e.transaction(e=>sv(e,Bn(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(Xn(t));for(let t of n)await sv(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(cn(t));for(let t of n)await sv(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(Xn)),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?Ie(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await sv(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 pv(e={}){return fv(e.driver??dv(e.databaseName),e)}function mv(e={}){let t=e.isDesktopShell??z,n=e.isDesktopLocalOriginActive??_e,r=e.isVSCodeRuntime??ye,i=e.isCapacitorApp??Ln;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var hv=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function gv(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Q_)(),t),i=()=>(n??=(e.createIndexedDBStore??pv)(),n),a=()=>mv(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=>hv([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function _v(e={}){await gv(e).clearAll()}var vv=3e4;async function yv(e,t=vv){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 bv(e){return e.filter(e=>!!e?.id)}function xv(e){return typeof e.info?.time?.created==`number`?e.info.time.created:0}function Sv(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=xv(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&&xv(n)<o||i.push(n)}let s=i.filter(e=>or(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 Cv(e,t){let n=e;for(let e=0;e<4&&n.turnCount===0&&n.cursor&&!n.complete;e+=1){let e=await zt({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=>or(e.info,e.parts)).length}}return n}async function wv(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(),vv);try{return await yv(Tv({...e,signal:t.signal}))}finally{clearTimeout(r),e.signal.removeEventListener(`abort`,n),t.abort()}}async function Tv(e){e.before||e.purpose;let t=await zt({sessionID:e.sessionID,directory:e.directory,...e.before?{cursor:e.before}:{},signal:e.signal});e.signal.throwIfAborted();let n=e.before?null:await cr({sessionID:e.sessionID,directory:e.directory,signal:e.signal});e.signal.throwIfAborted();let r=Sv(t,n),i=e.before?r:await Cv(r,e),a=i.records.map(e=>({info:pd(e.info),parts:bv(e.parts??[])}));if(!e.before&&!i.complete&&og(a).length>0){let t=B.getScopedSdkClient(e.directory);a=(await sg({records:a,complete:i.complete,requestMessage:async n=>{let r=await ig({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=qe(e.sessionID,r);if(!i?.info?.id)throw Error(`session.message failed: empty response`);return{info:pd(i.info),parts:bv(i.parts??[])}}});return{info:r.info,parts:bv(r.parts??[])}}})).records.map(e=>({info:e.info,parts:bv(e.parts??[])}))}return e.signal.throwIfAborted(),lr(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 Ev(e){let t=e.client??I,n=dh(),r=gh({client:t,activeRegistry:n}),i=M_({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:u,getGeneration:f},fetcher:e=>wv({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:Rp(),historyLimit:zp(),durableStore:e.durableStore??gv()}),a=Eh({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 Gh(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return sn(i),Tn(a),{repository:i,destroy:()=>{a.cancelAll(`dispose`),Tn(null),i.destroy(),bt()}}}function Dv(e){return Je().apply(V(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 Ov=new Map;function kv(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Av(e,t,n,r={}){let i=r.getTransportIdentity??u,a=r.getGeneration??f,o=i(),s=a(),c=kv(e,t,o,s),l=()=>i()===o&&a()===s,d=Ov.get(c)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=d.catch(()=>void 0).then(()=>m);Ov.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(),Ov.get(c)===h&&Ov.delete(c)}}function jv(e){let t=Jn(),n=e.directory.trim();return Ar({queryKey:[t.transportIdentity,t.generation,`session-inbox`,n,e.sessionID],queryFn:async({signal:r})=>{if(!Zn(t))throw Error(`Runtime changed`);let i=Fn.getState().list(e.sessionID),a=await Nt({sessionID:e.sessionID,directory:n,signal:AbortSignal.any([r,AbortSignal.timeout(1e4)])});if(r.aborted||!a.current||!Zn(t))throw Error(`Runtime changed`);return mn(e.sessionID,a.items,{startedMark:a.startedMark,observedItems:i}),a},staleTime:0,gcTime:6e4,retry:1,retryDelay:250})}function Mv(e){return I.fetchQuery(jv(e))}var Nv=()=>!1,Pv=new Set,Fv=new Set,Iv=new Set,Lv=new Set,Rv={onDeleteRequest(e){return Pv.add(e),()=>{Pv.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||Pv.forEach(t=>t(e))},onCreateRequest(e){return Fv.add(e),()=>{Fv.delete(e)}},requestCreate(e){let t=e??{};Fv.forEach(e=>e(t))},onDirectoryRequest(e){return Iv.add(e),()=>{Iv.delete(e)}},requestDirectoryDialog(){Iv.forEach(e=>e())},onGitRefreshHint(e){return Lv.add(e),()=>{Lv.delete(e)}},requestGitRefresh(e){e.directory.trim()&&Lv.forEach(t=>t(e))}},zv=50,Bv=e=>{let t=Object.keys(e);if(t.length<=zv)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-zv).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},Vv=ke()(Me(Ae((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:Bv(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:hr(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),Hv=new Set([`todowrite`,`todoread`]),Uv=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),Wv=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Gv=(e,t)=>{Vv.getState().setSessionTodos(e,t)},Kv=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},qv=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Jv=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},Yv=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Jv(n);e&&t.push(e)}return t},Xv=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Yv(t);if(t&&typeof t==`object`)return Yv(t.todos)}catch{}return[]},Zv=e=>{if(!Hv.has(Kv(e)))return[];let t=qv(e);if(t&&Uv.has(t))return[];let n=e.state,r=Yv(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Yv(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Yv(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?Xv(i):[]};function Qv(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=Zv(r[e]);if(t.length>0)return t}}return[]}function $v(e){if(!e.sessionID||e.isStale?.()||Wv(e.store.getState().todo,e.sessionID))return!1;let t=Qv(e.transcript);return t.length===0||e.isStale?.()||Wv(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function ey(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(V(e.directory,e.sessionID));return t?$v({sessionID:e.sessionID,store:e.store,transcript:t,persist:Gv,isStale:e.isStale}):!1}var ty=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>tx,COMBINED_SEND_PRESENCE_GRACE_MS:()=>ex,SESSION_DELETE_UNDO_MS:()=>Cb,abortBusySessionForMessageEdit:()=>gx,abortCurrentOperation:()=>sx,archiveSession:()=>Nb,beginOptimisticSend:()=>Gb,cancelScheduledSessionDeletes:()=>Mb,classifySendFailure:()=>Ky,combinedSendConfirmationOptions:()=>nx,commitMessageEdit:()=>vx,commitStagedRevertBeforeSend:()=>Lb,createSession:()=>_b,deleteSession:()=>Ab,dirStoreForDirectory:()=>My,dismissOpenQuestionsForSession:()=>fx,dismissQuestion:()=>ux,ensureSentUserMessagePresence:()=>ax,fetchMessagesForSession:()=>Cx,fetchRecentSendConfirmationRecords:()=>Qb,forkSession:()=>xx,getSendFailureKind:()=>Wy,isQuestionRequestNotFoundError:()=>mb,isQuestionSubmissionClaimedError:()=>pb,materializeConfirmedSendRecords:()=>$b,mirrorSessionIntoLiveStores:()=>zy,optimisticInsertUserMessage:()=>Xb,optimisticSend:()=>Yb,patchSessionMetadata:()=>vb,refetchSessionMessages:()=>yx,rejectQuestion:()=>dx,releaseUnconfirmedQueueSend:()=>ky,requestSessionSmartTitle:()=>Ib,respondToPermission:()=>cx,respondToQuestion:()=>lx,revertToMessage:()=>px,rollbackOptimisticSend:()=>qb,scheduleSessionDeletes:()=>jb,setActionRefs:()=>Dy,setOptimisticRefs:()=>Oy,settleOptimisticSend:()=>Jb,settleSessionPromptAfterSend:()=>Ey,shareSession:()=>Rb,shouldSuppressForkCopyEvent:()=>gy,stageMessageEdit:()=>hx,trackForkCopySessionCreated:()=>uy,unarchiveSession:()=>Pb,unrevertSession:()=>bx,unshareSession:()=>zb,updateSessionTitle:()=>Fb,waitForConnectionOrThrow:()=>Xy,waitForSessionIdleForMessageEdit:()=>_x}),ny=2,ry=150,iy=new Set([`patch`,`step-start`,`step-finish`]),ay=3,oy=150,sy=null,cy=new Map,ly=3e4;function uy(e,t){let n=t?.id;!sy||sy.runtimeKey!==m()||sy.directory!==e||!n||t?.title!==sy.expectedTargetTitle||n===sy.sourceSessionID||sy.targetSessionID||(sy.targetSessionID=n)}function dy(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 fy(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function py(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function my(e){return e?.type===`busy`||e?.type===`retry`}async function hy(e,t){let n=Bd(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return B.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function gy(e,t,n){if(sy&&sy.runtimeKey===m()&&sy.directory===e&&t&&t===sy.targetSessionID)return!0;if(!t||!n)return!1;let r=`${m()}:${e}:${t}`,i=cy.get(r);return i?i.expiresAt<=Date.now()?(cy.delete(r),!1):i.messageIDs.has(n):!1}var _y=null,vy=null,yy=()=>``,by=new Map,xy=null,Sy=null,Cy=null,wy=e=>new Promise(t=>setTimeout(t,e));async function Ty(e){return(await zt({sessionID:e.sessionID,directory:e.directory??``,limit:e.limit,...e.signal?{signal:e.signal}:{}})).records.filter(e=>!!e?.info?.id)}async function Ey(e){let t=Vb(),n=()=>Hb(t);e.inboxID&&n()&&Nn({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 Nt({sessionID:e.sessionId,directory:e.directory});if(!n()||!t.current)return;let i=t.items.find(t=>t.id===e.inboxID);i?(nr(i,{startedMark:t.startedMark}),r=!0):r=!1}catch{r=!0}let i=[];try{let t=await Ty({sessionID:e.sessionId,directory:e.directory,limit:Hp()});if(!n())return;i=t.map(e=>e.info.id)}catch{return}e.delivery!==`queue`&&e.inboxID&&!r&&i.includes(e.inboxID)&&ln(e.sessionId,e.inboxID,`consumed`);try{await an({optimisticID:e.optimisticID,promotedIDs:i,removeOptimistic:t=>{n()&&Sy?.({sessionID:e.sessionId,directory:e.directory,messageID:t})},refreshFromAuthority:async()=>{n()&&await yx(e.sessionId,e.directory??void 0)}})}catch{}}function Dy(e,t,n){if(_y=e,vy=t,yy=n,by.size>0){let e=[...by.values()];by.clear(),queueMicrotask(()=>{for(let t of e)Cx(t.sessionID,t.directory)})}}function Oy(e,t,n){xy=e,Sy=t,Cy=n??null}function ky(e){let t=e.directory??null;Sy?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Ay(){if(!_y)throw Error(`SDK not initialized — is SyncProvider mounted?`);return _y}function jy(){if(!vy)throw Error(`Child stores not initialized`);let e=yy();if(!e)throw Error(`No current directory`);return vy.ensureChild(e)}function My(e,t){if(!vy)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return vy.ensureChild(e,t)}function Ny(e,t){let n=mo(e)??t??nb(e);return n?{store:My(n),directory:n}:{store:jy(),directory:By()}}function Py(e,t){let{store:n,directory:r}=Ny(e,t??void 0),i=r??By()??``;return{repository:H()??Et(i,n),directory:i,store:n}}function Fy(e,t){let{repository:n,directory:r,store:i}=Py(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(V(r,e))}}function Iy(e,t){return lt(Fy(e,t).data)}function Ly(e,t){return Fy(e,t).data.messageOrder.length}function Ry(e,t){let n=vy;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]=zw(e,n[r]),t.setState({session:i}),!0}return!1}function zy(e,t){t&&Ry(e,t)||Ry(e)}function By(){return yy()||void 0}function Vy(){let{hasEverConnected:e,lastDisconnectReason:t}=W.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function Hy(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 Uy=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 Wy(e){return e instanceof Uy?e.kind:null}function Gy(e){let t=Hy(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 Ky(e,t){return t?Gy(e)||Hy(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var qy=2e3,Jy=5e3,Yy=3e4;async function Xy(){let e=bp();e&&yp(`send_stream_stale`);let t=Date.now()+(e?Jy:qy);for(;Date.now()<t;){if(W.getState().isConnected&&!bp()||n()&&!bp())return;let e=t-Date.now();if(e<=0)break;if(await W.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!bp())return;let r=Math.min(100,t-Date.now());r>0&&await new Promise(e=>setTimeout(e,r))}throw Vy()}function Zy(e){return new Promise((t,n)=>{let r=setTimeout(()=>{yp(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},Yy);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function Qy(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function $y(e){e&&Y.getState().upsertSession(e)}function eb(e,t){let n=dd(t),r=[...e.getState().session],i=Yd.search(r,n.id,e=>e.id);if(i.found){let t=zw(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 tb(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=Qy(e);if(i)return eb(t,i);try{return eb(t,await B.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function nb(e){return mo(e)||rb(e)||$.getState().getDirectoryForSession(e)||By()}function rb(e){let t=vy;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=H()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function ib(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):Ay()}function ab(e){so.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&&so.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var ob=()=>new Map(Array.from(kt(),([e,t])=>[e,t.title||e]));function sb(e){return!(e.type!==`file`||hf(e))}function cb(e){return sb(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function lb(e){return e.some(cb)}async function ub(e){let t=[...e.parts];if(!lb(t))return t;let n=f(),r=e.directory??``;try{await sr(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}=Py(e.sessionID,r);if(t=[...i.getParts(V(a,e.sessionID),e.messageID)],lb(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function db(e){if(lb(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await tp(e.parts,{sessionTitles:ob(),directory:e.directory}),n=so.getState(),r=n.getDraft(e.key);return{payload:t,commit:await op({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function fb(e,t,n){let r=vy;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 pb(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.status===409&&t.code===`question_submission_claimed`}function mb(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 hb(e,t){let n=vy;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 gb(e,t,n,r){let i=mo(t)||(typeof r==`string`&&r.trim().length>0?r.trim():null)||fb(e,t,n)||nb(t)||By();return i?B.getScopedSdkClient(i):ib(t)}async function _b(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??By()),a=i.directory??null;return a&&Ut(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),Y.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function vb(e,t,n){let r=t??nb(e),i=n(Bd(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Ut(a.id,o),a}async function yb(e,t){let n;try{n=await B.getSession(e,t??nb(e))}catch{return}if(!Wd(n))return;let r=Ud(n);if(r)try{await vb(r,t??nb(r),t=>qd(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 bb(e,t){if(!vy)return[];let n=[],r=new Set,i=[];if(t){let e=vy.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of vy.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 xb(e){if(vy)for(let t of e){let e=vy.children.get(t.directory);e&&e.setState({session:t.sessions})}}function Sb(e){$.getState().setWorktreeMetadata(e,null)}var Cb=1e4,wb=new Map,Tb=0;function Eb(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function Db(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),xb(e.listSnapshots),$y(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function Ob(e,t){let n=t??nb(e);Y.getState().markSessionsPendingDeletion([e]);let r=bb(e,n),i=Qy(e);Y.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function kb(e,t){try{if(await yb(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return bb(e,t),Y.getState().removeSessions([e]),Sb(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(bb(e,t),Y.getState().removeSessions([e]),Sb(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function Ab(e,t){let n=Ob(e);return await kb(e,n.directory)?!0:(Db(n),!1)}function jb(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>Ob(e)),i=`session-delete-${Date.now()}-${Tb+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=wb.get(i);if(!e)return;wb.delete(i);let t=[],n=[];for(let r of e.entries)await kb(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),Db(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return wb.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function Mb(e){if(!e)return!1;let t=wb.get(e);if(!t)return!1;clearTimeout(t.timer),wb.delete(e);for(let e of[...t.entries].reverse())Db(e);return!0}async function Nb(e){let t=nb(e),n=bb(e,t),r=Qy(e),i=Date.now(),a=Vb(),o=()=>f()===a.generation&&u()===a.identity;Y.getState().archiveSessions([e],i);let s=$.getState();s.currentSessionId===e&&s.setCurrentSession(null);try{if(await yb(e,t),!o())throw Error(`session archive aborted because the runtime changed`);let n=await B.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 Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),o()?(xb(n),$y(r),!1):!1}}async function Pb(e){let t=nb(e),n=Qy(e),r=n?Eb(n):null,i=Vb(),a=()=>f()===i.generation&&u()===i.identity;if(r&&(Y.getState().upsertSession(r),t&&vy)){let e=vy.children.get(t);e&&eb(e,r)}try{let n=await B.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=Eb(n);if(Y.getState().upsertSession(r),t&&vy){let e=vy.children.get(t);e?eb(e,r):zy(r,t)}else zy(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),a()&&n&&(Y.getState().upsertSession(n),typeof n.time?.archived==`number`&&n.time.archived>0&&bb(e,t)),!1}}async function Fb(e,t){let n=nb(e),r=Qy(e),i=r?ed(r):0;await B.updateSession(e,{metadata:{openchamber:{titleAuthority:{sessionID:e,title:t,revision:le(),source:`manual`},titleRefresh:{activityUpdatedAt:i}}}},n);let a=await B.updateSession(e,{title:t},n);Y.getState().upsertSession(a),zy(a,n)}async function Ib(e){let t=nb(e),n=Qy(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await B.updateSession(e,{metadata:{openchamber:{titleRefresh:{...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),zy(s,t)}async function Lb(e,t){let n;try{n=Ny(e,t??void 0)}catch{return}let{store:r,directory:i}=n;return Av(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 tt({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}=Py(e,i);t.apply(V(n,e),{type:`revert-committed`,to:a})}catch{}})}async function Rb(e){if(!Nv())return null;throw Jt(`session.share`)}async function zb(e){throw Jt(`session.unshare`)}function Bb(e){let t=vy,n=e??yy();if(!t||!n)return{store:e?My(e):jy(),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 Vb(){return{identity:u(),generation:f()}}function Hb(e){return u()===e.identity&&f()===e.generation}function Ub(e,t){return e.isCurrent()&&Hb(t)}function Wb(e,t){if(!Ub(e,t))throw Error(`Send target changed before transport dispatch`)}function Gb(e){if(!xy||!Sy)throw new Uy(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??By()??null,n=Bb(t),r=Vb();Wb(n,r),e.beforeOptimisticInsert?.(),Wb(n,r);let i=e.messageID??Ce(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),xf(e.sessionId),Xb({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 Uy?e:new Uy(Wy(e)??Ky(e,!1),e)}}function Kb(e){if(!Ub(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 qb(e){Kb(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function Jb(e){if(!xy||!Sy)throw new Uy(`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 Xy(),Wb(n,r),s=!0,await Zy(e.send(i)),!Ub(n,r))throw new Uy(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Wy(c)??Ky(c,s),u=c instanceof Uy?c:new Uy(l,c,i);if(!Ub(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await Qb(a,i,o):null;if(d&&Ub(n,r)){$b(n.store,a,i,d,{directory:o??void 0}),Cy?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||Kb(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function Yb(e){if(e.delivery===`queue`){let t=Bb(e.directory),n=Vb(),r=e.messageID??Ce(`msg`),i=!1;try{e.onMessageID?.(r),await Xy(),Wb(t,n),i=!0,await Zy(e.send(r)),Wb(t,n),e.onSendConfirmed?.(r)}catch(e){throw e instanceof Uy?e:new Uy(Ky(e,i),e,r)}return}await Jb({ticket:e.ticket??Gb({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 Xb(e){if(!xy)return!1;let t=e.directory??By(),n=t?My(t):jy(),r=t??By()??``;if(rx(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now(),i={...t};return rf(i,e.sessionId),n.setState({session_interrupt_acknowledged_at:i.session_interrupt_acknowledged_at,session_execution_version:{...t.session_execution_version,[e.sessionId]:(t.session_execution_version?.[e.sessionId]??0)+1},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:Ce(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:Ce(`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:Ce(`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=p_(()=>Fy(e.sessionId,t).data);xy({sessionID:e.sessionId,directory:t,message:s,parts:i});let l=p_(()=>Fy(e.sessionId,t).data);try{c&&l&&m_({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:u(),generation:f(),before:c,after:l})}catch{}let d=n.getState(),p={...d};return rf(p,e.sessionId),n.setState({session_interrupt_acknowledged_at:p.session_interrupt_acknowledged_at,session_execution_version:{...d.session_execution_version,[e.sessionId]:(d.session_execution_version?.[e.sessionId]??0)+1},session_status:{...d.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...d.session_status_observed_at,[e.sessionId]:a}}),!0}function Zb(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function Qb(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??ny,c=r?.retryDelayMs??ry;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!Zb(r?.isCurrent)||a>0&&(await wy(c),i?.signal.aborted||!Zb(r?.isCurrent)))return null;try{let a=await Ty({sessionID:e,directory:n,limit:Hp(),...i?{signal:i.signal}:{}});if(!Zb(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 $b(e,t,n,r,i){if(!r.length)return;let a=i?.directory??nb(t)??yy(),o=V(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:pd(e.info),parts:e.parts??[]})),skipPartTypes:iy,merge:i?.gapFillOnly===!0?pn:vn({purpose:`recovery`})};Sn(o,s)||Et(a,e).apply(o,s)}var ex=2e3,tx={attempts:12,retryDelayMs:500},nx={presenceGraceMs:ex,recovery:{...tx}};function rx(e,t,n,r){let i=r??nb(t)??yy()??``,a=H()??Et(i,e),o=V(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function ix(e,t,n,r){let i=r?.directory??nb(t)??yy()??``;if(rx(e,t,n,i))return Promise.resolve(!0);if(!Zb(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=H()??Et(i,e),f=V(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!Zb(r?.isCurrent)){l(!1);return}rx(e,t,n,i)&&l(!0)}),rx(e,t,n,i)&&l(!0)})}async function ax(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await ix(t,n,r,{timeoutMs:e.graceMs??nx.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!Zb(a))return`cancelled`;let o=await Qb(n,r,i,{...nx.recovery,isCurrent:a});return o?Zb(a)?($b(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:Zb(a)?`missing`:`cancelled`}var ox=new WeakMap;function sx(e){let{store:t,directory:n}=Ny(e),r=Vb(),i=vy,a=t.getState().session_execution_version?.[e]??0,o=()=>Hb(r)&&i===vy&&(!n||i?.getChild(n)===t)&&(t.getState().session_execution_version?.[e]??0)===a,s=ox.get(t);s||(s=new Map,ox.set(t,s));let c=s.get(e);if(c?.current())return c.promise;let l=n?{state:`bound`,transportIdentity:u(),directory:n,sessionID:e}:null,d=l?$.getState().beginQueueAbortBlock(l):null,f=()=>{o()&&(l&&d&&$.getState().clearQueueAbortBlock(l,d),Tr(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>aV);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{o()&&t(e)}).catch(()=>{}),Nr.error(Br(zr.getState().dictionary,`chat.chatInput.stopUnconfirmed`)))},p=af({store:t,sessionID:e,isCurrent:o,request:t=>Le({sessionID:e,directory:n,signal:t})}).then(e=>{e===`unconfirmed`&&f()},()=>f()).finally(()=>{s.get(e)?.promise===p&&s.delete(e)});return s.set(e,{current:o,promise:p}),p}async function cx(e,t,n){await Xy();let r=fb(`permission`,e,t)||nb(e)||By();await it({sessionID:e,requestID:t,reply:n,directory:r})}async function lx(e,t,n,r){await Xy();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n],a=gb(`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 mb(n)&&hb(e,t),n}}async function ux(e,t,n){let r=f(),i=u(),a=gb(`question`,e,t,n),o=()=>r===f()&&i===u();if(await Xy(),!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()&&hb(e,t)}catch(n){throw o()&&mb(n)&&hb(e,t),n}}async function dx(e,t,n){await Xy();try{await gb(`question`,e,t,n).session.form.cancel({sessionID:e,formID:t})}catch(n){throw mb(n)&&hb(e,t),n}}async function fx(e){if(!e)return!1;let t=vy;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=uf(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)hb(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await dx(e,t)}catch(e){if(mb(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function px(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 Av(e,r??(()=>{try{return Ny(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:a,directory:s}=Ny(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 Le({sessionID:e,directory:s})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let l=Iy(e,s).find(e=>e.id===t),d=Iy(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}=Py(e,s),m=[...f.getParts(V(p,e),t)],h=i===void 0?o?re({transportIdentity:u()},e):null:i,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await ub({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await tp(m,{sessionTitles:ob(),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=so.getState(),r=await op({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 cp({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 mt({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 cp({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&&Rv.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 cp({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(a.setState({session:r}),h&&v&&_!==void 0&&await cp({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function mx(e,t,n,r){let i=r??nb(t)??yy(),a=V(i,t),o=[...Ge(t)];o.some(e=>e.directory===i&&e.sessionID===t)||o.push(a);let s=!1;for(let e of o)Sn(e,{type:`revert-committed`,to:n})!=null&&(s=!0);s||Et(i,e).apply(a,{type:`revert-committed`,to:n})}async function hx(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=Ny(e,o).directory}else{s=Ny(e,o).directory;let{data:n}=Fy(e,s),r=lt(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??re({transportIdentity:u()},e),{commit:l}=await db({key:c,parts:await ub({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 cp({key:c,restoredRevision:d,previous:f})).status})}}async function gx(e,t){let n=t?.directory,{store:r,directory:i}=Ny(e,n),a=r.getState().session_status[e];!a||a.type===`idle`||await Le({sessionID:e,directory:i})}async function _x(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=Ny(e,n),o=Date.now()+r,s=Vb();for(;Date.now()<o;){if(!Hb(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 vx(e,t,n){let{store:r,directory:i}=Ny(e,n?.directory);return Av(e,i,async({isCurrent:a})=>{let o=()=>{if(!a())throw Error(`Session history mutation aborted because the runtime changed`)},s=()=>{let r=Iy(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 gx(e,{directory:i}),o(),await _x(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=p_(()=>Fy(e,i).data),p=await mt({sessionID:e,messageID:t,directory:i,files:!1});o(),c(p);try{s(),await tt({sessionID:e,directory:i})}catch(n){if(o(),Gy(n))try{await B.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),mx(r,e,t,i);return}try{l?c(await mt({sessionID:e,messageID:l.messageID,directory:i,files:!!l.files?.length})):(await Zt({sessionID:e,directory:i}),c(void 0))}catch{o()}throw n}o(),c(void 0),mx(r,e,t,i);try{let t=p_(()=>Fy(e,i).data);d&&t&&m_({trigger:`user-edit`,sessionID:e,directory:i,transport:u(),generation:f(),before:d,after:t})}catch{}})}async function yx(e,t){let{store:n,directory:r}=Ny(e,t),i=p_(()=>Fy(e,t).data),a=await Ty({sessionID:e,directory:r,limit:Vp()});if(a.length===0){try{let n=p_(()=>Fy(e,t).data);i&&n&&m_({trigger:`materialize`,sessionID:e,directory:r,transport:u(),generation:f(),purpose:`refetch`,before:i,after:n})}catch{}return[]}let o=a.map(e=>({info:pd(e.info),parts:e.parts??[]})),s=V(r??yy(),e);Sn(s,{type:`materialize-snapshots`,records:o,skipPartTypes:iy})||Et(r??yy(),n).apply(s,{type:`materialize-snapshots`,records:o,skipPartTypes:iy});try{let n=p_(()=>Fy(e,t).data);i&&n&&m_({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 bx(e,t){return Av(e,t??(()=>{try{return Ny(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=Ny(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Ly(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Le({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}if(await Zt({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<ay;r+=1){if(r>0&&(await wy(oy),!n())||(await yx(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Ly(e,i)>o)return}if(Ly(e,i)<=o){let n=i??yy(),a=H()??Et(n,r),o=V(n,e),s=a.destructiveReset;typeof s==`function`?await s(o):await yx(e,t)}})}async function xx(e,t,n,r){let i=m(),a=Vb(),{store:o,directory:s}=Ny(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await tb(e,o,s);if(!Hb(a)||c.directory&&c.directory!==s)throw Error(`Fork source changed while reading identity`);Ut(e,s);let l=o.getState(),u=l.session_status[e],d=Iy(e,s);u?.type,d.length;let f=()=>Hb(a)&&nb(e)===s,p=await Qd(B.getScopedSdkClient(s),e,n,my(u),f);l.session_status[e]?.type;let{repository:h,data:g}=Fy(e,s),_=n?g.messagesByID[n]??d.find(e=>e.id===n):void 0,v=n?[...h.getParts(V(s,e),n)]:[];if(n&&(!_||lb(v))){let t=await B.getScopedSdkClient(s).session.message.get({sessionID:e,messageID:n});if(!f())throw Error(`Fork source changed while reading the selected message`);let r=qe(e,t);if(r&&(_=r.info,v=r.parts),lb(v))throw Error(`Fork attachment is unavailable`)}let y=or(_,v),b=y?v:[],x=``;x=b.filter(e=>e.type===`text`&&!hf(e)).map(e=>e.text||e.content||``).join(`
|
|
404
|
-
`).trim();let S=b.filter(e=>e.type===`file`&&!
|
|
405
|
-
`).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===
|
|
406
|
-
`);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===
|
|
407
|
-
`).trim()},Kx=(e,t)=>!t||Ix(e)===t,qx=(e,t)=>[e.runtimeKey,e.originalSessionID,e.phase,e.expectedAssistantParentID??``,t].join(`:`),Jx=(e,t)=>{let n=qx(e,t);return Mx.has(n)?null:(Mx.add(n),n)},Yx=e=>{Mx.delete(e)},Xx=()=>[{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${kx}\nIf you found issues that require changes, do not include that final status line.`}],Zx=async e=>{for(;;){let t=Jd.getState().runsByOriginalSessionID[e];if(!t||t.status!==`running`)return;if(!Bx(t.runtimeKey)){Vx(t);return}let n=t.phase===`waiting_for_reviewer`?t.reviewSessionID:t.originalSessionID;if(!zx(n,t.directory)){await new Promise(e=>setTimeout(e,Dx));continue}let r=Rx(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=Jx(t,r.id);if(!e){await new Promise(e=>setTimeout(e,Dx));continue}if(!Bx(t.runtimeKey)){Yx(e),Vx(t);return}try{let e=Date.now(),n=Wx(r.text),i=n?Gx(r.text):r.text,a=await lS(t.reviewSessionID,t.directory,i,t.runtimeKey);if(n){Jd.getState().completeRun(t.originalSessionID);return}Jd.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_implementer`,lastForwardedMessageID:r.id,expectedAssistantParentID:a,waitAfterCreatedAt:e}))}finally{Yx(e)}}else{if(t.iteration>=t.maxIterations){Jd.getState().stopRun(t.originalSessionID);return}let e=Jx(t,r.id);if(!e){await new Promise(e=>setTimeout(e,Dx));continue}if(!Bx(t.runtimeKey)){Yx(e),Vx(t);return}try{let e=Date.now(),n=await uS(t.originalSessionID,t.directory,r.text,!0,t.runtimeKey);Jd.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_reviewer`,iteration:t.iteration+1,lastForwardedMessageID:r.id,expectedAssistantParentID:n,waitAfterCreatedAt:e}))}finally{Yx(e)}}}},Qx=e=>{Jd.getState().upsertRun(e),$x(e.originalSessionID)},$x=e=>{let t=Jd.getState().runsByOriginalSessionID[e];!t||t.status!==`running`||!Bx(t.runtimeKey)||jx.has(e)||(jx.add(e),Zx(t.originalSessionID).catch(e=>{console.error(`[review-flow] auto-review loop failed`,e),Jd.getState().updateRun(t.originalSessionID,t=>({...t,status:Ux(e)?`stopped`:`error`,error:e instanceof Error?e.message:String(e)}))}).finally(()=>{jx.delete(e)}))},eS=async(e,t,n)=>{let r=Date.now()+Tx;for(;Date.now()<r;){let r=fr(e,t).filter(e=>Fx(e)===`assistant`).filter(e=>Px(e)>=n-1e3).filter(Nx).sort((e,t)=>Px(t)-Px(e));for(let e of r){let n=Rd(He(e.id,t)).trim();if(n)return n}await new Promise(e=>setTimeout(e,Ex))}throw Error(`Timed out waiting for handoff response`)},tS=e=>{let t=Hl.getState(),n=W.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}},nS=async(e,t,n,r,i,a)=>{Hx(a);let o=r??tS(e);if(!o)throw Error(`Select a model before sending review flow messages`);let s=Hl.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)),xf(e);let c=null;if(await Yb({sessionId:e,content:n,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,onMessageID:e=>{c=e},beforeOptimisticInsert:()=>Hx(a),onOptimisticInsert:()=>rS(e),send:r=>(Hx(a),B.sendMessage({id:e,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,variant:o.variant,text:n,additionalParts:i,messageId:r}).then(()=>void 0))}),!c)throw Error(`Failed to prepare review flow message`);return c},rS=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:chat-force-scroll-bottom`,{detail:{sessionId:e}}))},iS=(e,t)=>{gr.getState().openContextPanelTab(e,{mode:`chat`,dedupeKey:`session:${t.id}`,label:t.title??null,sessionTitleFallback:t.title??null})},aS=async(e,t)=>{try{return await B.getSession(e,t)}catch{return null}},oS=e=>`Review: ${e.title?.trim()||e.id}`,sS=async(e,t,n)=>{Hx(n);let r=await B.getSession(e,t);Hx(n);let i=Hd(r);if(i){let r=await aS(i,t);if(Hx(n),r&&Wd(r))return r;await vb(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})}Hx(n);let a=await B.createSession({title:oS(r),metadata:Kd({},e)},t);Hx(n),Ut(a.id,t);try{Hx(n),await vb(e,t,e=>Gd(e,a.id))}catch(e){throw Hx(n),await B.deleteSession(a.id,t).catch(e=>{console.warn(`[review-flow] failed to delete unlinked review session after link failure`,e)}),e}return Y.getState().upsertSession(a),a},cS=async e=>{await Xy();let t=e.autoReview?m():void 0,n;if(e.generateHandoff??!0){let n=await Pd(`session.reviewHandoff.visible`),r=await Pd(`session.reviewHandoff.instructions`),i=Date.now();await nS(e.originalSessionID,e.directory,n,null,[{text:r,synthetic:!0}],t);let a=async()=>{let n=await eS(e.originalSessionID,e.directory,i);Hx(t);let r=await Pd(`session.reviewSession.visible`,{handoff:n}),a=await sS(e.originalSessionID,e.directory,t),o=t??m(),s=Date.now(),c=await nS(a.id,e.directory,r,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?Xx():void 0,e.autoReview?o:void 0);e.autoReview&&Qx({originalSessionID:e.originalSessionID,reviewSessionID:a.id,directory:e.directory,runtimeKey:o,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:Ox,expectedAssistantParentID:c,waitAfterCreatedAt:s}),e.autoReview||iS(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 Pd(`session.reviewSessionWithoutHandoff.visible`);let r=await sS(e.originalSessionID,e.directory,t),i=t??m(),a=Date.now(),o=await nS(r.id,e.directory,n,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?Xx():void 0,e.autoReview?i:void 0);e.autoReview&&Qx({originalSessionID:e.originalSessionID,reviewSessionID:r.id,directory:e.directory,runtimeKey:i,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:Ox,expectedAssistantParentID:o,waitAfterCreatedAt:a}),e.autoReview||iS(e.directory,r)},lS=async(e,t,n,r)=>{Hx(r);let i=Ud(await B.getSession(e,t));if(!i)throw Error(`Original session is missing`);let a=await Pd(`session.reviewFeedbackToImplementer.visible`,{review_feedback:n});return Hx(r),nS(i,t,a,void 0,void 0,r)},uS=async(e,t,n,r=!1,i)=>{Hx(i);let a=Hd(await B.getSession(e,t));if(!a)throw Error(`Review session is missing`);let o;try{o=await B.getSession(a,t)}catch(n){throw Hx(i),await vb(e,t,e=>qd(e,a)),n}let s=await Pd(`session.implementationResponseToReviewer.visible`,{implementation_response:n});Hx(i);let c=await nS(a,t,s,void 0,r?Xx():void 0,i);return r||iS(t,o),c},dS=e=>Wd(e)?`review-to-original`:Hd(e)?`original-to-review`:null,fS=[0,250,500,1e3,2e3,2e3,2e3,2e3],pS=5e3,mS=(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??pS,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??fS,d=o(i),f=(async()=>{for(let t of u){if(o(i)!==d||(t>0&&await e.wait(t),o(i)!==d))return;if(await e.probe(i)){o(i)===d&&(n.add(i),r.delete(i));return}}throw r.set(i,s()),Error(`OpenCode did not become ready for runtime ${i}`)})();return t.set(i,f),f.finally(()=>{t.get(i)===f&&t.delete(i)}).catch(()=>{}),f},reset:e=>{if(e){i.set(e,(i.get(e)??0)+1),t.delete(e),n.delete(e),r.delete(e);return}a+=1,t.clear(),n.clear(),r.clear()}}})({probe:()=>B.checkHealth(),wait:e=>new Promise(t=>setTimeout(t,e))}),hS=()=>mS.waitUntilReady(m()),gS=e=>{mS.reset(e)},_S=100,vS=1500,yS=async e=>{if(!e.ok)throw Error(`session index request failed (${e.status})`)},bS=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}:{}}},xS,SS=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 yS(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}},CS=async e=>{if(typeof window>`u`)return null;if(xS)return xS;let t=(async()=>{let t=await _(`/api/openchamber/session-index`,{signal:e?.signal});return t.status===501?null:(await yS(t),bS(await t.json()))})().finally(()=>{xS===t&&(xS=void 0)});return xS=t,t},wS=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 yS(t),t.json())},TS=(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:vS,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)},_S)},l=()=>s(`aborted`),u=i===null?void 0:setTimeout(()=>s(`timeout`),i),d=Ei(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})}),ES=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 yS(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 yS(r)},OS=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 yS(t)},kS=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 yS(t)},AS=1,jS=`oc.sessionIndexStartupCache`,MS=1e6,NS=e=>!!e&&typeof e==`object`&&!Array.isArray(e),PS=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),FS=e=>!(!NS(e)||typeof e.active!=`boolean`||typeof e.completed!=`number`||!Number.isFinite(e.completed)||typeof e.total!=`number`||!Number.isFinite(e.total)||!PS(e.pendingDirectories)||!PS(e.completedDirectories)||!PS(e.failedDirectories)||e.enriching!==void 0&&typeof e.enriching!=`boolean`),IS=e=>NS(e)&&typeof e.id==`string`&&e.id.length>0&&typeof e.title==`string`&&typeof e.directory==`string`&&e.directory.length>0&&NS(e.time)&&typeof e.time.created==`number`&&Number.isFinite(e.time.created)&&typeof e.time.updated==`number`&&Number.isFinite(e.time.updated),LS=e=>!NS(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(IS),RS=e=>!NS(e)||typeof e.revision!=`number`||!Number.isFinite(e.revision)||!FS(e.sync)||!Array.isArray(e.directories)||e.pinnedSessionIds!==void 0&&!PS(e.pinnedSessionIds)?!1:e.directories.every(LS),zS=e=>NS(e)&&e.version===AS&&NS(e.entries),BS=e=>{if(!e)return null;try{let t=JSON.parse(e);return zS(t)?{version:AS,entries:t.entries}:null}catch{return null}},VS=(e,t)=>{try{let n=JSON.stringify(t);if(n.length>MS)return;e.setItem(jS,n)}catch{}},HS=(e,t)=>{if(!e)return null;let n;try{n=t.getItem(jS)}catch{return null}let r=BS(n);if(!r)return null;let i=r.entries[e];return RS(i)?i:null},US=(e,t,n)=>{if(!e||!RS(t))return;let r=null;try{r=n.getItem(jS)}catch{return}let i={...BS(r)?.entries??{},[e]:t},a=Object.keys(i).slice(-8);VS(n,{version:AS,entries:Object.fromEntries(a.map(e=>[e,i[e]]))})},WS=(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}}},GS=(e,t)=>!e||t,KS=(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}},qS=new Set,JS=()=>qS.size>0,YS=e=>{for(let t of qS)t(e)},XS=e=>(qS.add(e),()=>qS.delete(e)),ZS=3e4,QS=3e3,$S=1e3,eC=0,tC=0,nC=0,rC=null;function iC(e){try{if(e===`medium`){tC+=1;return}if(e===`heavy`){nC+=1;return}eC+=1}catch{}}function aC(){return{light:eC,medium:tC,heavy:nC}}function oC(){eC=0,tC=0,nC=0}function sC(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 cC(){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=sC(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 lC(){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 uC(){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 dC(e){let t=lC(),n=uC();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 fC(e={}){if(rC)return rC;let t=e.isEnabled??l_,n=e.record??f_,r=e.now??(()=>Date.now()),i=e.getPlatform??(()=>$n()),a=cC(),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()+QS,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})},QS)},g=()=>{p(()=>{let e=a.snapshotWindow(),o=aC();t()&&n(dC({at:r(),snapshot:e,haptics:o,platform:i()})),oC(),a.reset()})},_=()=>{s=setTimeout(()=>{o||(g(),h(),_())},ZS)},v=()=>{let e=r()+$S;c=setTimeout(()=>{o||(p(()=>{let t=Math.max(0,r()-e);a.addLagMs(t)}),v())},$S)};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}rC===y&&(rC=null)}};return rC=y,y}var K=e(Pe(),1),pC=typeof window<`u`?K.useLayoutEffect:K.useEffect,mC=Cr(`OpenChamberHaptics`),hC=null,gC=()=>(hC??=wr.isPluginAvailable(`OpenChamberHaptics`),hC);function _C(e){switch(e){case`medium`:return`impactMedium`;case`heavy`:return`impactHeavy`;default:return`impactLight`}}function vC(){return typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0}function yC(){if(!vC())return!1;let e=window.Capacitor?.getPlatform?.();return e===`ios`||e===`android`}function bC(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 xC=20,SC=750;function CC(e,t){return t-e>=xC}function wC(e,t){return t-e>=SC}function TC(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 EC=-1/0;function DC(e=`light`,t){if(!yC()||!gC()||document.visibilityState!==`visible`||!document.documentElement.classList.contains(`oc-native-app-active`))return!1;let n=Date.now();return!t?.bypassCadence&&!CC(EC,n)?!1:(EC=n,mC[_C(e)]().catch(()=>void 0),iC(e),!0)}var OC=`button, [role="button"], [role="menuitem"]`;function kC(){let e=(0,U.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],K.useEffect(AC,t)}function AC(){if(!yC())return;let e=jC;return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}function jC(e){if(!e.isTrusted||!(e.target instanceof Element))return;let t=e.target.closest(OC);t&&(t.matches(`:disabled, [aria-disabled="true"], [data-mobile-press-feedback="none"]`)||DC(`light`))}function MC(){let e=(0,U.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],pC(NC,t)}function NC(){if(!yC())return;let e=KS(),t=$n()===`android`,n=-1/0;return XS(r=>{if(!e(r))return;let i=$.getState().currentSessionId,a=document.documentElement.classList.contains(`oc-native-app-active`);if(bC({eventSessionId:r.sessionID,currentSessionId:i,isForeground:a,isVisible:document.visibilityState===`visible`}).shouldTrigger){if(t&&r.kind===`text`){let e=Date.now();if(!wC(n,e))return;DC()&&(n=e);return}DC()}})}var PC=async e=>{let t=await Ir(e);t.ok||console.error(`Failed to copy to clipboard:`,t.error)},FC=e=>e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(FC).join(` `).trim():(0,K.isValidElement)(e)?FC(e.props?.children):``,IC=e=>typeof e==`function`?e():e,LC=(e,t)=>{let n=FC(IC(t?.description));return n.length>0?n:FC(e)},RC=Object.assign((...e)=>(DC(),Nr(...e)),{...Nr,success:(...e)=>{let[t,n]=e;return DC(),Nr.success(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},info:(...e)=>{let[t,n]=e;return DC(),Nr.info(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},error:(...e)=>{let[t,n]=e;return DC(),Nr.error(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>PC(LC(t,n))}})},warning:(...e)=>{let[t,n]=e;return DC(),Nr.warning(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>PC(LC(t,n))}})},loading:(...e)=>(DC(),Nr.loading(...e)),custom:(...e)=>(DC(),Nr.custom(...e)),promise:(...e)=>(DC(),Nr.promise(...e))}),zC=new Set,BC,VC=zC,HC=null,UC=(e,t)=>Br(zr.getState().dictionary,e,t),WC=e=>{let t=e?.time?.pinned;return t!=null&&t!==``},GC=e=>{if(!e)return zC;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)WC(e)&&t.add(e.id);return t.size===0?zC:t},KC=(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},qC=(e=I,t=u())=>{let n=iw(e,t);if(n===BC&&t===HC)return VC;let r=GC(n);return BC=n,HC=t,VC=KC(VC,r)?VC:r,VC},JC=(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=GC(e),o=new Set(a);return n==null||n===``?o.delete(t):o.add(t),KC(a,o)||(r=!0),r?{...e,directories:i,pinnedSessionIds:[...o]}:e},YC=(e,t,n,r)=>{let i=iw(e,t);if(!i)return null;let a=JC(i,n,r?new Date().toISOString():null);return a!==i&&ow(a,{client:e,transport:t,persist:!1}),i},XC=e=>I.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()}),ZC=()=>qC(),QC=()=>(0,K.useSyncExternalStore)(XC,ZC,ew),$C=()=>{let e=(0,U.c)(6),t=Or(),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:tw,onMutate:e=>{let{sessionId:n,nextPinned:r,transport:i}=e;return{previous:YC(t,i,n,r),transport:i}},onError:(e,n,r)=>{r?.previous&&ow(r.previous,{client:t,transport:r.transport,persist:!1}),RC.error(e instanceof Error?e.message:UC(n.nextPinned?`sessions.sidebar.session.pin.error`:`sessions.sidebar.session.unpin.error`))}},e[1]=t,e[2]=r);let i=kr(r),a;return e[3]!==t||e[4]!==i?(a=e=>{let n=e.trim();if(!n)return;let r=u(),a=iw(t,r);if(!a)return;let o=GC(a).has(n);i.mutate({sessionId:n,nextPinned:!o,transport:r})},e[3]=t,e[4]=i,e[5]=a):a=e[5],Fr(a)};function ew(){return zC}async function tw(e){let{sessionId:t,nextPinned:n}=e;n?await ES(t):await DS(t)}var nw=(e=u())=>L.sessionIndex.snapshot(e),rw=(e=u(),t=m(),n=_r(),r=CS)=>{let i=t,a=n,o=r;return{queryKey:nw(e),queryFn:async({signal:e})=>{let t=await o({signal:e});return t&&US(i,t,a),t},staleTime:0,gcTime:1/0,initialData:()=>HS(i,a)??void 0,initialDataUpdatedAt:0}},iw=(e=I,t=u())=>e.getQueryData(nw(t))??null,aw=(e=I,t=u(),n=m(),r=_r())=>{let i=rw(t,n,r);return e.getQueryCache().build(e,i),e.getQueryData(i.queryKey)??null},ow=(e,t)=>{if(!RS(e))return;let n=t?.client??I,r=t?.transport??u(),i=t?.runtimeKey??m(),a=t?.storage??_r();n.setQueryData(nw(r),e),t?.persist!==!1&&US(i,e,a)},sw=(e=I,t=u(),n=m(),r=_r(),i=CS)=>{let a={...rw(t,n,r,i),staleTime:0};return e.getQueryCache().build(e,a),e.fetchQuery(a)},cw=500,lw=20,uw=6e3,dw=7,fw=3,pw=1,mw=2,hw=750,gw=500,_w=1e4,vw=2,yw=(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})}),bw=null,q=0,xw=new Map,Sw=new Map,Cw=new Map,ww=[],Tw=new Set,Ew=0,Dw=fw,Ow=0,kw=null,Aw,jw=new Map,Mw=()=>({loadGeneration:q,runtimeGeneration:f(),transportIdentity:u()}),J=e=>e.loadGeneration===q&&e.runtimeGeneration===f()&&e.transportIdentity===u(),Nw=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`)},Pw=e=>{Ow=0,Nw(e)&&(Dw=Dw>fw?fw:pw)},Fw=()=>{Ow+=1,!(Ow<mw||Dw>=dw)&&(Dw+=1,Ow=0)},Iw=()=>{for(;Ew<Dw&&ww.length>0;){let e=ww.shift();if(!e)return;Ew+=1,e()}},Lw=e=>new Promise((t,n)=>{ww.push(()=>{e().then(t,n).finally(()=>{--Ew,Iw()})}),Iw()}),Rw=e=>{let t=e;return R(t.directory??null)??R(t.project?.worktree??null)},zw=(e,t)=>{let n=ho(e.id,e.directory,e.time?.updated);if(n&&e.directory!==n&&(e=t?.directory===n?t:{...e,directory:n}),!t)return e;let r=e,i=t,a=R(r.directory??null),o=R(r.project?.worktree??null),s=R(i.directory??null),c=R(i.project?.worktree??null),l=!1,u={...r};!a&&s&&(u.directory=i.directory,l=!0),!o&&c?(u.project={...i.project??{},...r.project??{},worktree:i.project?.worktree},l=!0):!r.project&&i.project&&(u.project=i.project,l=!0);let d=r.hasChildren,f=i.hasChildren;typeof d!=`boolean`&&typeof f==`boolean`&&(u.hasChildren=f,l=!0);let p=ed(t);if(p>ed(e)){let e=r.metadata&&typeof r.metadata==`object`?r.metadata:{},t=e.openchamber&&typeof e.openchamber==`object`?e.openchamber:{},n=t.titleRefresh&&typeof t.titleRefresh==`object`?t.titleRefresh:{};u.metadata={...e,openchamber:{...t,titleRefresh:{...n,activityUpdatedAt:p}}},l=!0}return l?u:e},Bw=(e,t)=>{let n=zw(e,t);return n.share===t.share?n:{...n,share:t.share}},Vw=(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?Bw(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},Hw=e=>{let t=new Map;for(let n of e){let e=Rw(n);if(!e)continue;let r=t.get(e);if(r){r.push(n);continue}t.set(e,[n])}return t},Uw=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),Rw(e)??``].join(`:`),Ww=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),Rw(e)??``].join(`:`)},Gw=(e,t)=>e.time?.updated!==t.time?.updated&&Ww(e)===Ww(t),Kw=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(Uw(e[n])!==Uw(t[n]))return!1;return!0},qw=e=>{let t=e.time?.archived;return typeof t==`number`&&Number.isFinite(t)&&t>0},Jw=(e,t)=>{let n=new Set,r=!1;for(let t of e){if(!t?.id||n.has(t.id)||qw(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)||!qw(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?zw(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;qw(t)?o.push(t):a.push(t)};return e.forEach(c),t.forEach(c),{activeSessions:a,archivedSessions:o}},Yw=(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))},Xw=e=>[...e].sort((e,t)=>{let n=ed(t)-ed(e);return n===0?t.id.localeCompare(e.id):n}),Zw=e=>{let t=new Set;for(let n of e){let e=R(n);e&&t.add(e)}return t},Qw=e=>{let t=Zw(e);for(let e of t)jw.set(e,(jw.get(e)??0)+1);return t},$w=e=>{let t=new Set;for(let n of e){let e=jw.get(n)??0;if(e<=1){jw.delete(n),t.add(n);continue}jw.set(n,e-1)}return t},eT=(e,t)=>{let n=e.loadingDirectories,r=e.refreshingDirectories;for(let i of t)xw.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}},tT=e=>{let t=e[e.length-1]?.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:null},nT=(e,t)=>{let n=tT(e);return{cursor:n,hasMore:e.length===lw&&n!==null&&(t==null||n<t),loadingMore:!1}},rT=(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,zw(e,r.get(e.id)));let a=e.filter(e=>{if(i.has(e.id))return!1;let t=Rw(e);return!t||!n.has(t)});return Xw([...i.values(),...a])},iT=(e,t)=>e.cursor===null?!e.hasMore&&(t.hasMore||t.cursor!==null):t.cursor===null||e.cursor<t.cursor,aT=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;if(e.length===0)return null;let n=Xw(e),r=n[n.length-1];return r?ed(r):null},oT=(e,t)=>ed(e)<=t,sT=(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,zw(t,a.get(t.id)));let s=e.filter(e=>{if(o.has(e.id))return!1;let t=Rw(e);if(!t||!n.has(t))return!0;if(!i.has(t))return!1;let a=r.get(t);return a!=null&&oT(e,a)});return Xw([...o.values(),...s])},cT=(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,Yw(n.sessions,e.pendingDeletionIds));let a=[...i.values()].flat(),o=new Map;if(n)for(let t of e.activeSessions){let e=Rw(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)>lw;n.hasMore&&a&&r&&iT(r,t)&&c.add(n.directory),s.set(n.directory,aT(i.get(n.directory)??[],n.cursor))}let l=n?sT(e.activeSessions,i,r,s,c):Xw(dT(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=>Rw(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 jw.keys())h.has(e)||xw.has(e)||(p.delete(e),m.delete(e));return{activeSessions:l,sessionsByDirectory:Hw(l),reviewTransferBySessionId:pT(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}},lT=(e,t)=>{let n=Yw(t.activeSessions,e.pendingDeletionIds),r=Yw(t.fallbackActive??[],e.pendingDeletionIds),i=t.mergeOnly?Xw(dT(e.activeSessions,n)):rT(e.activeSessions,n,t.directories);i=dT(i,r);let a=t.archivedSessions===void 0?void 0:Yw(t.archivedSessions,e.pendingDeletionIds),o=a===void 0?e.archivedSessions:rT(e.archivedSessions,a,t.directories),s=Jw(i,o);i=s.activeSessions,o=s.archivedSessions,Kw(e.activeSessions,i)&&(i=e.activeSessions),Kw(e.archivedSessions,o)&&(o=e.archivedSessions);let c=i===e.activeSessions?e.sessionsByDirectory:Hw(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:pT(i),loadedDirectories:l,loadingDirectories:d,hasLoaded:m,status:p}},uT=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[t,...e];let r=e[n],i=zw(t,r);if(Gw(r,i)||Uw(r)===Uw(i))return e;let a=[...e];return a[n]=i,a},dT=(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,zw(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},fT=(e,t,n,r)=>{let i=Jw(t,n),a=Yw(i.activeSessions,e.pendingDeletionIds),o=Yw(i.archivedSessions,e.pendingDeletionIds),s=Kw(e.activeSessions,a)?e.activeSessions:a,c=Kw(e.archivedSessions,o)?e.archivedSessions:o,l=s===e.activeSessions?e.sessionsByDirectory:Hw(s),u=s===e.activeSessions?e.reviewTransferBySessionId:pT(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}},pT=e=>{let t=new Map,n=new Set(e.map(e=>e.id));for(let r of e){let e=dS(r);if(!e)continue;let i=e===`review-to-original`?Ud(r):Hd(r);!i||!n.has(i)||t.set(r.id,e)}return t},Y=ke((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=>fT(e,t,n,r))},resetForRuntimeSwitch:()=>{q+=1,gS(),bw=null,xw.clear(),Sw.clear(),Cw.clear(),Tw.forEach(e=>e.abort()),Tw.clear(),Dw=fw,Ow=0,kw?.abort(),kw=null,Aw=void 0,jw.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(Aw)return Aw;if(t().hasHydratedSessionIndex)return;let n=Mw(),r=u(),i=m(),a=aw(void 0,r,i);a&&J(n)&&e(e=>({...cT(e,a,!1),hasCachedSessionIndex:!0}));let o=(async()=>{try{let t;try{t=await sw(void 0,r,i)}catch(e){if(!J(n))return;if(a){console.warn(`[GlobalSessions] Failed to refresh runtime session index; keeping stale seed:`,e);return}throw e}if(!J(n))return;if(!t){e(e=>e.hasHydratedSessionIndex?e:{hasHydratedSessionIndex:!0});return}e(e=>({...cT(e,t,!1),hasCachedSessionIndex:t.directories.length>0,hasHydratedSessionIndex:!0}))}catch(e){console.warn(`[GlobalSessions] Failed to hydrate runtime session index:`,e)}})();return Aw=o.finally(()=>{Aw===o&&(Aw=void 0)}),Aw},startSessionIndexStartup:async(n,r)=>{let i=Mw();if(e({startupSyncProgress:{active:!0,phase:`restoring`,completed:0,total:0}}),await t().hydrateSessionIndex(),!J(i))return{activeSessions:[],archivedSessions:[]};t().hasHydratedSessionIndex||e({hasHydratedSessionIndex:!0});let a=Zw([...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?Zw(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=Mw();try{if(f=await wS([...l]),!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};f&&ow(f)}catch(e){if(!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}let m=()=>{if(u.size===0)return;let e=[...u],n=()=>{J(i)&&t().syncSessionsForDirectories(e,d.activeSessions)};typeof globalThis.setTimeout==`function`?globalThis.setTimeout(n,0):Promise.resolve().then(n)};if(!f){let e=yT(l,d.activeSessions,{retryFailed:!o});if(o)e.then(()=>{m()});else{if(await e,!J(i))return{activeSessions:[],archivedSessions:[]};m()}return d}kw?.abort();let h=new AbortController;kw=h;let g=Qw(l),_=()=>{if(!J(i))return;let t=$w(g);t.size!==0&&e(e=>eT(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=gw;for(;!h.signal.aborted&&J(i);){e(e=>({...cT(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=Mw(),a=await TS(t.revision,h.signal,{safetyTimeoutMs:t.sync.active?void 0:null});if(!J(i)||!J(r)||a===`aborted`)break;let o;for(;!h.signal.aborted&&J(i);){let e=Mw();try{o=await sw()}catch{if(h.signal.aborted||!J(i)){o=void 0;break}if(await yw(n,h.signal),h.signal.aborted||!J(i)){o=void 0;break}n=Math.min(n*vw,_w);continue}if(!J(e)){o=void 0;break}if(!o)break;n=gw;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(),kw===h&&(kw=null),v&&J(i)&&e(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:e.startupSyncProgress.completed,total:e.startupSyncProgress.total}}))}),v){if(await x,!J(i))return{activeSessions:[],archivedSessions:[]};m()}else m();return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},loadSessions:async n=>{if(bw)return bw;e(e=>e.status===`loading`?e:{status:`loading`});let r=q,i=Promise.resolve().then(async()=>{let a=t();try{if(await hS(),r!==q)return{activeSessions:[],archivedSessions:[]};let i=B.getSdkClient(),[o,s]=await Promise.allSettled([Sd(i,{archived:!1,pageSize:cw}),Sd(i,{archived:!0,pageSize:cw})]),c=dT(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===q?(e(e=>{let t=o.status===`fulfilled`&&s.status===`fulfilled`?`ready`:`error`,n=fT(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!==q)return{activeSessions:[],archivedSessions:[]};let o=dT(a.activeSessions,n),s=a.archivedSessions;return console.warn(`[GlobalSessions] Failed to load sessions, using fallback snapshot:`,i),e(e=>fT(e,o,s,`error`)),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}}finally{bw===i&&(bw=null)}});return bw=i,i},refreshSessionsForDirectories:async(n,r,i)=>{let a=Zw(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=q;e(e=>{let t=dT(e.activeSessions,Yw(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=>Rw(e)===t)||n.add(t);return{...t===e.activeSessions?{}:{activeSessions:t,sessionsByDirectory:Hw(t),reviewTransferBySessionId:pT(t)},loadingDirectories:n,refreshingDirectories:i,status:e.status===`idle`?`loading`:e.status}});let s=[...a].map(n=>{let r=xw.get(n);if(r)return r;let a=Lw(async()=>{let r=new AbortController;Tw.add(r);try{if(o!==q||(await hS(),o!==q))return!1;let a=await Sd(B.getSdkClient(),{directory:n,archived:!1,roots:!0,...i?.incrementalStart===void 0?{}:{start:i.incrementalStart},pageSize:lw,maxItems:lw,timeoutMs:uw,retryAttempts:2,signal:r.signal});if(o!==q)return!1;if(e(e=>{let t=lT(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,nT(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)??nT(a);try{await OS({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 Fw(),!0}catch(t){return Pw(t),o===q&&(console.warn(`[GlobalSessions] Failed to refresh active sessions for ${n}:`,t),e(e=>{let t=new Set(e.loadingDirectories),r=new Set(e.refreshingDirectories);return t.delete(n),r.delete(n),{loadingDirectories:t,refreshingDirectories:r}})),!1}finally{Tw.delete(r)}});return xw.set(n,a),a.finally(()=>{xw.get(n)===a&&xw.delete(n)}),a}),c=await Promise.all(s);return o===q?([...a].forEach((e,t)=>{i?.onDirectoryResult?.(e,c[t]??!1)}),e(e=>({status:e.status===`loading`?c.some(Boolean)?`ready`:`error`:e.status,hasLoaded:!0})),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}):{activeSessions:[],archivedSessions:[]}},syncSessionsForDirectories:async(n,r)=>{let i=Mw(),a=Zw(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=null,s=Mw();try{if(o=await wS([...a]),!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};o&&ow(o)}catch(e){if(!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}if(!o)return t().refreshSessionsForDirectories(a,r);let c=new AbortController;Tw.add(c);let l=Qw(a),u=()=>{if(!J(i))return;let t=$w(l);t.size!==0&&e(e=>eT(e,t))};try{let t=o;for(;!c.signal.aborted&&J(i)&&(e(e=>cT(e,t,!0)),t.sync.active);){let e=Mw(),n=await TS(t.revision,c.signal);if(!J(i)||!J(e)||n===`aborted`)break;let r=Mw(),a;try{a=await sw()}catch{break}if(!J(i)||!J(r)||!a)break;t=a}}catch(e){!c.signal.aborted&&J(i)&&console.warn(`[GlobalSessions] Session index sync failed:`,e)}finally{u(),Tw.delete(c)}return J(i)?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},loadMoreSessionsForDirectory:async n=>{let r=R(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=q;e(e=>{let t=new Map(e.activePaginationByDirectory);return t.set(r,{...a,loadingMore:!0}),{activePaginationByDirectory:t}});let s=Lw(async()=>{let t=new AbortController;Tw.add(t);try{if(await hS(),o!==q)return!1;let n=await Sd(B.getSdkClient(),{directory:r,archived:!1,roots:!0,cursor:a.cursor??void 0,pageSize:lw,maxItems:lw,timeoutMs:uw,retryAttempts:2,signal:t.signal});return o===q&&(e(e=>{let t=e.activeSessions.filter(e=>Rw(e)===r),i=new Map(t.map(e=>[e.id,e]));Yw(n,e.pendingDeletionIds).forEach(e=>{i.set(e.id,zw(e,i.get(e.id)))});let o=Xw([...i.values()]),s=rT(e.activeSessions,o,new Set([r])),c=new Map(e.activePaginationByDirectory);return c.set(r,nT(n,a.cursor)),{activeSessions:Kw(e.activeSessions,s)?e.activeSessions:s,sessionsByDirectory:Hw(s),reviewTransferBySessionId:pT(s),activePaginationByDirectory:c}}),Fw(),!0)}catch(t){return Pw(t),o===q&&(console.warn(`[GlobalSessions] Failed to load more sessions for ${r}:`,t),e(e=>{let t=e.activePaginationByDirectory.get(r);if(!t)return e;let n=new Map(e.activePaginationByDirectory);return n.set(r,{...t,loadingMore:!1}),{activePaginationByDirectory:n}})),!1}finally{Tw.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=Zw(n);if(r.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=q;e(e=>{let t=new Set(e.archivedLoadingDirectories);return r.forEach(e=>t.add(e)),{archivedLoadingDirectories:t}});let a=[...r].map(t=>{let n=Sw.get(t);if(n)return n;let r=Lw(async()=>{let n=new AbortController;Tw.add(n);try{if(i!==q||(await hS(),i!==q))return!1;let r=await Sd(B.getSdkClient(),{directory:t,archived:!0,roots:!0,pageSize:lw,maxItems:lw,timeoutMs:uw,retryAttempts:2,signal:n.signal});return i===q&&(e(e=>{let n=rT(e.archivedSessions,Yw(r,e.pendingDeletionIds),new Set([t])),i=Jw(e.activeSessions,n),a=Kw(e.activeSessions,i.activeSessions)?e.activeSessions:i.activeSessions,o=Kw(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:Hw(a),reviewTransferBySessionId:a===e.activeSessions?e.reviewTransferBySessionId:pT(a),archivedLoadedDirectories:s,archivedLoadingDirectories:c}}),!0)}catch(n){return i===q&&(console.warn(`[GlobalSessions] Failed to refresh archived sessions for ${t}:`,n),e(e=>{let n=new Set(e.archivedLoadingDirectories);return n.delete(t),{archivedLoadingDirectories:n}})),!1}finally{Tw.delete(n)}});return Sw.set(t,r),r.finally(()=>{Sw.get(t)===r&&Sw.delete(t)}),r});return await Promise.all(a),i===q?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},upsertSession:n=>{if(!vd(n)){t().removeSessions([n.id]);return}e(e=>{if(e.pendingDeletionIds.has(n.id))return e;let t=zw(n,e.activeSessions.find(e=>e.id===n.id)??e.archivedSessions.find(e=>e.id===n.id)??null),r=qw(t),i=r?e.activeSessions.filter(e=>e.id!==n.id):uT(e.activeSessions,t),a=r?uT(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:Hw(i),reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:pT(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:Hw(t),reviewTransferBySessionId:pT(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:Hw(i),reviewTransferBySessionId:pT(i)}})}})),mT=async e=>{let t=Y.getState();return t.hasLoadedFullCatalog&&t.status!==`error`?{activeSessions:t.activeSessions,archivedSessions:t.archivedSessions}:t.loadSessions(e)},hT=async()=>{await Y.getState().hydrateSessionIndex()},gT=async(e,t)=>Y.getState().startSessionIndexStartup(e,t),_T=async(e,t)=>Y.getState().refreshSessionsForDirectories(e,t),vT=async(e,t)=>Y.getState().syncSessionsForDirectories(e,t),yT=async(e,t,n)=>{let r=Zw(e),i=q;if(r.size===0){Y.setState({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let e=Y.getState();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}Y.setState({startupSyncProgress:{active:!0,phase:`syncing`,completed:0,total:r.size}});let a=new Set,o=new Set(r);try{do await Promise.all([...o].map(async e=>{let r=!1;await Y.getState().refreshSessionsForDirectories([e],t,{persist:!1,incrementalStart:n?.incrementalStartByDirectory?.get(e),onDirectoryResult:(e,t)=>{r=t}}),i===q&&r&&!a.has(e)&&(a.add(e),Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,completed:a.size}})))})),o=new Set([...r].filter(e=>!a.has(e))),o.size>0&&n?.retryFailed===!0&&i===q&&await new Promise(e=>setTimeout(e,hw));while(o.size>0&&n?.retryFailed===!0&&i===q);if(i===q){Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,phase:`committing`}}));let e=Y.getState(),t=[...a].flatMap(t=>{let r=e.sessionsByDirectory.get(t)??[],i=e.activePaginationByDirectory.get(t);return[{directory:t,sessions:r,cursor:i?.cursor??null,hasMore:i?.hasMore??!1,fullSync:!n?.incrementalStartByDirectory?.has(t)}]});try{await kS(t);let e=Date.now();Y.setState(n=>{let r=new Map(n.sessionIndexSyncByDirectory);for(let n of t){let t=r.get(n.directory);r.set(n.directory,{lastSyncedAt:e,lastFullSyncedAt:n.fullSync?e:t?.lastFullSyncedAt??0})}return{sessionIndexSyncByDirectory:r}})}catch(e){console.warn(`[GlobalSessions] Failed to persist cold-start session index batch:`,e)}}}finally{i===q&&Y.setState(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:a.size,total:e.startupSyncProgress.total}}))}let s=Y.getState();return{activeSessions:s.activeSessions,archivedSessions:s.archivedSessions}},bT=async e=>Y.getState().refreshArchivedSessionsForDirectories(e),xT=async e=>Y.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`,wT=`oc.sessions.folderCollapse`,TT=`oc.sessions.order`,ET=`oc.sessions.orderActivity`,DT=`/api/session-folders`,OT=250,kT=`__archived__:`,AT=j(_r()),jT=null,MT=!1,NT=!1,PT=0,FT,IT,LT=null,RT=null,zT=()=>typeof window>`u`?!1:ye()?!0:window.__VSCODE_CONFIG__!==void 0,BT=(e,t)=>{if(typeof window>`u`||zT())return;jT&&clearTimeout(jT);let n=JSON.parse(JSON.stringify(e)),r=Array.from(t);jT=setTimeout(()=>{jT=null,_(DT,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({version:1,foldersMap:n,collapsedFolderIds:r,updatedAt:Date.now()})}).catch(()=>{})},OT)},VT=()=>{try{let e=AT.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{}}},HT=()=>{try{let e=AT.getItem(wT);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}},UT=()=>{try{let e=AT.getItem(TT);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{}}},WT=()=>{try{let e=AT.getItem(ET);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{}}},GT=(e,t)=>{try{AT.setItem(TT,JSON.stringify(e)),AT.setItem(ET,JSON.stringify(t))}catch{}},KT=e=>{LT=e,clearTimeout(FT),FT=setTimeout(()=>{try{AT.setItem(CT,JSON.stringify(e)),LT=null}catch{}},300)},qT=e=>{RT=e,clearTimeout(IT),IT=setTimeout(()=>{try{AT.setItem(wT,JSON.stringify(Array.from(e))),RT=null}catch{}},300)};typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{if(LT!==null){clearTimeout(FT);try{AT.setItem(CT,JSON.stringify(LT))}catch{}LT=null}if(RT!==null){clearTimeout(IT);try{AT.setItem(wT,JSON.stringify(Array.from(RT)))}catch{}RT=null}});var JT=(e,t)=>{KT(e),qT(t),BT(e,t)},YT=()=>le(),XT=(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},ZT=(e,t)=>e.startsWith(kT)?t.filter(e=>e.sessionIds.length>0):t,QT=ke()(Me((e,t)=>({foldersMap:VT(),collapsedFolderIds:HT(),sessionOrderByScope:UT(),sessionOrderActivityByScope:WT(),getFoldersForScope:e=>e?t().foldersMap[e]??[]:[],createFolder:(n,r,i)=>{let a=r.trim()||`New folder`,o={id:YT(),name:a,sessionIds:[],createdAt:Date.now(),parentId:i??null},s=t().foldersMap,c=s[n]??[],l={...s,[n]:[...c,o]};return e({foldersMap:l}),JT(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}),JT(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}),JT(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}),JT(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=XT(o,l,t().collapsedFolderIds);e(d?{foldersMap:u,collapsedFolderIds:d}:{foldersMap:u}),JT(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=XT(o,u,t().collapsedFolderIds);e(f?{foldersMap:d,collapsedFolderIds:f}:{foldersMap:d}),JT(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=XT(a,c,t().collapsedFolderIds);e(u?{foldersMap:l,collapsedFolderIds:u}:{foldersMap:l}),JT(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=XT(a,s,t().collapsedFolderIds);e(l?{foldersMap:c,collapsedFolderIds:l}:{foldersMap:c}),JT(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}),JT(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=ZT(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=XT(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}),JT(h,g??t().collapsedFolderIds),GT(_,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}),GT(v,y)}}),{name:`session-folders-store`})),$T=async()=>{if(MT||NT||typeof window>`u`)return;if(zT()){MT=!0;return}NT=!0;let e=PT;try{let t=await _(DT).catch(()=>null);if(e!==PT||!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!==PT||!(Object.keys(r).length>0||i.size>0))return;QT.setState({foldersMap:r,collapsedFolderIds:i}),KT(r),qT(i)}catch{}finally{e===PT&&(NT=!1,MT=!0)}},eE=()=>{typeof window>`u`||$T()},tE=()=>{PT+=1,MT=!1,NT=!1,LT=null,RT=null,FT&&=(clearTimeout(FT),void 0),IT&&=(clearTimeout(IT),void 0),QT.setState({foldersMap:VT(),collapsedFolderIds:HT(),sessionOrderByScope:UT(),sessionOrderActivityByScope:WT()}),$T()};typeof window<`u`&&s(e=>{h(e)&&tE()}),eE();var nE=new Map,rE=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},iE=()=>`worktree_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,aE=()=>{let e=iE();return nE.set(e,rE()),e},oE=(e,t)=>{let n=nE.get(e);n&&(nE.delete(e),n.resolve(t))},sE=(e,t)=>{let n=nE.get(e);n&&(nE.delete(e),n.reject(t))},cE=e=>{let t=nE.get(e);return t?t.promise:Promise.reject(Error(`Pending worktree request not found`))},lE=3e5,uE=5e3,dE=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``)||e,fE=new Map,pE=new Map,mE=new Map,hE=new Map,gE=new Set,_E=null,vE=!1,yE=e=>dE(e),bE=e=>hE.get(e)??0,xE=e=>{let t=bE(e)+1;return hE.set(e,t),t},SE=async e=>{let t=te()?.git;return t?.worktree?.bootstrapStatus?t.worktree.bootstrapStatus(e):t?.getGitWorktreeBootstrapStatus?t.getGitWorktreeBootstrapStatus(e):Pt(e)},CE=(e,t)=>{for(let n of gE)try{n(e,t)}catch{}},wE=e=>(gE.add(e),()=>{gE.delete(e)}),TE=(e,t)=>{let n=yE(e);if(!n)return!1;let r=fE.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:(fE.set(n,t),t.status!==`pending`&&pE.delete(n),CE(n,t),!0)},EE=(e,t)=>{let n=yE(e);if(!n)return!1;let r=t.status===`pending`||t.status===`ready`||t.status===`failed`?t.status:null;return r?TE(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},DE=()=>{_E||=Ei(e=>{e.type===`worktree-bootstrap-status`&&EE(e.directory,e)}),!(typeof window>`u`||vE)&&(vE=!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&&EE(r,{status:n.status,error:typeof n.error==`string`?n.error:null,updatedAt:typeof n.updatedAt==`number`?n.updatedAt:Date.now()})})))},OE=e=>{let t=yE(e);t&&(DE(),TE(t,{status:`pending`,error:null,updatedAt:Date.now()}))},kE=e=>{let t=yE(e);if(!t)return;xE(t);let n=mE.get(t);n&&(n.cancelled=!0,n.disposeSettlement?.(),n.disposeSettlement=null,mE.delete(t));let r=pE.get(t);r&&(r.dispose(),pE.delete(t)),fE.delete(t)},AE=e=>{let t=yE(e);return t?fE.get(t)??null:null},jE=(e,t)=>{let n=zr.getState().dictionary;return Br(n,e,t)},ME=e=>({status:`failed`,error:e,updatedAt:Date.now()}),NE=(e,t,n)=>{let r=ME(t);return TE(e,r),n?.(r),r},PE=async(e,t=()=>!0)=>{try{let n=await SE(e);return t()?TE(e,n)?n:AE(e):null}catch{return null}},FE=(e,t,n=uE)=>{let r=yE(e),i=bE(r);DE();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,PE(e,()=>!a&&bE(r)===i).finally(()=>{c=!1}))},Number.isFinite(n)?Math.max(1,n):uE))},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=wE((e,t)=>{yE(e)===r&&d(t)}),o=setTimeout(()=>{s(()=>{let t=NE(e,jE(`worktree.bootstrap.toast.timeoutDescription`));i(Error(t.error||`Timed out waiting for worktree bootstrap`))})},Math.max(0,t)),d(fE.get(r))});return h.catch(()=>void 0),{promise:h,startCompensation:p,dispose:()=>m(Error(`Worktree bootstrap wait cancelled`))}},IE=async(e,t,n,r,i,a)=>{let o=yE(e),s=FE(e,n,r);t.disposeSettlement=s.dispose;let c=await PE(e,()=>!t.cancelled&&mE.get(o)===t&&bE(o)===t.epoch);if(t.cancelled||mE.get(o)!==t){s.dispose();return}if(c?.status===`ready`){s.dispose(),a?.(c);return}if(c?.status===`failed`){s.dispose(),i?.(c),RC.error(jE(`worktree.bootstrap.toast.failed`),{description:c.error||jE(`worktree.bootstrap.toast.failedDescription`)});return}s.startCompensation();try{let e=await s.promise;if(t.cancelled||mE.get(o)!==t)return;a?.(e)}catch(n){if(t.cancelled||mE.get(o)!==t)return;let r=AE(e);if(r?.status===`failed`){i?.(r),RC.error(jE(`worktree.bootstrap.toast.failed`),{description:r.error||jE(`worktree.bootstrap.toast.failedDescription`)});return}let a=NE(e,n instanceof Error?n.message:String(n),i);RC.error(jE(`worktree.bootstrap.toast.failed`),{description:a.error||jE(`worktree.bootstrap.toast.failedDescription`)})}},LE=(e,t)=>{let n=yE(e);if(!n||fE.get(n)?.status!==`pending`||mE.has(n))return;let r={cancelled:!1,epoch:bE(n),promise:Promise.resolve(),disposeSettlement:null};r.promise=IE(e,r,t?.timeoutMs??lE,t?.pollIntervalMs??uE,t?.onFailed,t?.onReady).finally(()=>{mE.get(n)===r&&mE.delete(n)}),mE.set(n,r)},RE=async(e,t=lE)=>{let n=yE(e);if(!n)return;let r=fE.get(n);if(!r||r.status===`ready`)return;if(r.status===`failed`)throw Error(r.error||`Worktree bootstrap failed`);let i=pE.get(n);if(i)return i.promise;let a=()=>{},o=bE(n),s=(async()=>{let r=FE(e,t,uE);a=r.dispose;let i=await PE(e,()=>bE(n)===o);if(bE(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(()=>{pE.get(n)?.promise===s&&pE.delete(n)});return pE.set(n,{promise:s,dispose:()=>a()}),s},zE=`openchamber.json`,BE=`.openchamber`,VE=[`.config`,`openchamber`,`projects`];function HE(){let e=te();return e?.files?e.files:null}var UE=80,WE=4e3,GE=2e3,KE=300,qE=new Set([`macos`,`linux`,`windows`]),JE=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)},YE=(e,t)=>{let n=JE(e),r=t.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/\/+$/,``);return!n||n===`/`?`/${r}`:`${n}/${r}`},XE=e=>YE(YE(e,BE),zE),ZE=()=>{let e=`/api`;return e.startsWith(`/`),e},QE=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}}},$E=async e=>{let t=HE();if(t?.createDirectory)try{if((await t.createDirectory(e))?.success)return!0}catch{}return!!(await QE(`${ZE()}/fs/mkdir`,{path:e})).ok},eD=async e=>{let t=HE();if(t?.readFile)try{let n=await t.readFile(e);return typeof n?.content==`string`?n.content:``}catch{return null}try{let t=await _(`${ZE()}/fs/read?path=${encodeURIComponent(e)}`,{cache:`no-store`});return t.ok?await t.text():null}catch{return null}},tD=async(e,t)=>{let n=HE();if(n?.writeFile)try{if((await n.writeFile(e,t))?.success)return!0}catch{}return!!(await QE(`${ZE()}/fs/write`,{path:e,content:t})).ok},nD=async()=>{try{let e=await _(`${ZE()}/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 JE(n)}catch{}if(!ye()){let e=await k().catch(()=>null);if(e&&e.trim().length>0)return JE(e)}return null},rD=async()=>{let e=await nD();return e?VE.reduce((e,t)=>YE(e,t),e):null},iD=e=>{let t=typeof e?.path==`string`?e.path.trim():``,n=t?JE(t):``;return n&&be(n)||null},aD=async e=>{let t=await rD();if(!t)return null;let n=iD(e);return n?YE(t,`${n}.json`):null},oD=(e,t)=>e.length<=t?e:e.slice(0,t),sD=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();!qE.has(e)||n.has(e)||(n.add(e),t.push(e))}return t},cD=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=oD(typeof e.name==`string`?e.name.trim():``,UE),o=oD(typeof e.command==`string`?e.command.trim():``,WE);if(!i||!a||!o||n.has(i))continue;n.add(i);let s=typeof e.icon==`string`?e.icon.trim():``,c=sD(e.platforms),l=e.autoOpenUrl===!0,u=oD(typeof e.openUrl==`string`?e.openUrl.trim():``,GE),d=oD(typeof e.desktopOpenSshForward==`string`?e.desktopOpenSshForward.trim():``,KE);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},lD=e=>{let t=cD(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 uD(e){let t=typeof e?.path==`string`?e.path.trim():``;if(!t)return null;let n=await aD(e),r=async e=>{let t=await eD(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(XE(t)));if(!a)return null;try{await dD(e,a)&&await SD(t)}catch{}return a}async function dD(e,t){let n=typeof e?.path==`string`?e.path.trim():``;if(!n)return!1;let r=await rD(),i=await aD(e);if(!r||!i)return!1;try{if(!await $E(r))return!1;let e=await eD(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 tD(i,JSON.stringify({...a,...t,...o,projectPath:JE(n)},null,2))}catch(e){return console.error(`Failed to write openchamber config:`,e),!1}}async function fD(e,t){return dD(e,{...await uD(e)||{},...t})}async function pD(e){return(await uD(e))?.[`setup-worktree`]??[]}async function mD(e,t){return fD(e,{"setup-worktree":t.filter(e=>e.trim().length>0)})}async function hD(e){return(await uD(e))?.[`setup-worktree-wait`]===!0}async function gD(e,t){return fD(e,{"setup-worktree-wait":t})}async function _D(e){let t=await uD(e);return C(t?.draftStarters)}async function vD(e,t){return fD(e,{draftStarters:C(t)})}async function yD(e){let t=await uD(e);return lD({actions:t?.projectActions,primaryActionId:t?.projectActionsPrimaryId})}async function bD(e,t){let n=lD({actions:t.actions,primaryActionId:t.primaryActionId});return fD(e,{projectActions:n.actions,projectActionsPrimaryId:n.primaryActionId??void 0})}function xD(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=XE(e),n=HE();if(n?.delete)try{await n.delete(t);return}catch{}try{await QE(`${ZE()}/fs/delete`,{path:t})}catch{}}var CD=R,wD=(e,t)=>{let n=CD(t);if(!n)return null;let r=null;for(let t of e){let e=CD(t.path);e&&(n!==e&&!n.startsWith(`${e}/`)||(!r||e.length>(CD(r.path)?.length??0))&&(r=t))}return r},TD=(e,t,n)=>{let r=CD(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=CD(t.path);n&&(r!==n&&!r.startsWith(`${n}/`)||n.length>o&&(o=n.length,i=t,a=CD(e)))}if(!i)return null;let s=[CD(i.projectDirectory),a].filter(e=>!!e);for(let t of s){let n=e.find(e=>CD(e.path)===t)??null;if(n)return n;let r=wD(e,t);if(r)return r}return null},ED=(e,t,n)=>TD(e,t,n)??wD(e,n),DD=500,OD=2592e6;function kD(e){let t=Date.now()-OD,n=e.filter(e=>e.time>=t);return n.length<=DD?n:n.slice(n.length-DD)}function AD(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 jD=ke((e,t)=>({list:[],index:{session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}},append:n=>{let r=t().list,i=kD([...r,n]);e({list:i,index:AD(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:AD(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:AD(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 MD(e){jD.getState().append(e)}function ND(e){jD.getState().markSessionViewed(e)}function PD(e){if(!e)return;let t=jD.getState().list,n=!1,r=t.filter(t=>t.session===e&&t.type===`error`?(n=!0,!1):!0);n&&jD.setState({list:r,index:AD(r)})}function FD(e){let t=(0,U.c)(2),n;return t[0]===e?n=t[1]:(n=t=>t.index.session.unseenCount[e]??0,t[0]=e,t[1]=n),jD(n)}function ID(e){let t=(0,U.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),jD(n)}var LD=/^(.*)\.(\d+)$/,RD=[`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.`],zD=new Set([`session.next.step.ended`,`session.next.step.failed`,`session.step.ended`,`session.step.failed`,`session.shell.ended`,`session.compaction.ended`,`session.compaction.failed`]);function BD(e){return LD.exec(e)?.[1]??e}function VD(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function HD(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 UD(e){let t=VD(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 WD(e){let t=VD(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 GD(e){let t=VD(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`&&!WD(e)?{directory:t.directory}:{}}}return e}function KD(e,t){if(e===`session.status`){let e=HD(t),n=t.status;if(e&&n&&typeof n==`object`)return{sessionID:e,status:n}}return t}function qD(e,t){let n=HD(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`}}:zD.has(e)?{domainActivityHint:{sessionID:n,kind:`terminal`}}:RD.some(t=>e.startsWith(t))||e.startsWith(`session.next.`)?{domainActivityHint:{sessionID:n,kind:`activity`}}:{}:{}}function JD(e){let t=VD(GD(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(UD(t))return{action:`drop`,reason:`sync-duplicate`};let r=BD(n),i=VD(t.data),a=VD(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:WD(t)}}:{action:`drop`,reason:`invalid`};let s={...KD(r,o)},c=VD(t.durable);if(typeof c?.seq==`number`&&Number.isSafeInteger(c.seq)&&c.seq>=0&&(s.eventSequence=c.seq),r===`session.retry.scheduled`){let e=VD(o.error);if(!HD(o)||typeof o.attempt!=`number`||!Number.isFinite(o.attempt)||typeof o.at!=`number`||!Number.isFinite(o.at))return{action:`drop`,reason:`invalid`};r=`session.status`,s.status={type:`retry`,attempt:o.attempt,next:o.at,message:typeof e?.message==`string`?e.message:``}}typeof t.created==`number`&&Number.isFinite(t.created)&&t.created>0&&typeof s.eventCreated!=`number`&&(s.eventCreated=t.created);let l=WD(t)??WD(o)??(()=>{let e=VD(s.info);return typeof e?.directory==`string`?e.directory:void 0})(),u=qD(r,s);return{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:s,locationDirectory:l,...u}}}function YD(e){return{...e.id?{id:e.id}:{},type:e.type,properties:e.properties}}var XD=33,ZD=200,QD=1e4,$D=8,eO=250,tO=3e4,nO=6e4,rO=2,iO=2e3,aO=8e3,oO=250,sO=5e3,cO=6e4,lO=8,uO=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},dO=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}}},fO=e=>{if(!e||typeof e!=`object`)return{status:`unusable`};let t=uO(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=dO(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=JD(e);return r.action===`drop`?r.reason===`sync-duplicate`?{status:`declined`}:{status:`unusable`}:{status:`event`,event:YD(r.event),normalized:r.event}};function pO(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 mO(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 hO(e){let t=`/api`;try{let e=B;typeof e.getBaseUrl==`function`&&(t=e.getBaseUrl())}catch{t=`/api`}let n=t.endsWith(`/`)?t:`${t}/`,r={};return e&&e.length>0&&(r.lastEventId=e),d()||(r.includeReasoning=`false`),c().websocket(`${n}global/event/ws`,Object.keys(r).length>0?r:void 0)}function gO(e){let t=hO(e);return Ht(t)}function _O(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=tO,reconnectDelayMs:y=eO,wsReadyTimeoutMs:b}=e,x=b??(a()?aO:iO),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(),jn.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?ZD:XD)-n))},ne=e=>new Promise(t=>setTimeout(t,e)),re=e=>e instanceof DOMException&&e.name===`AbortError`||typeof e==`object`&&!!e&&e.name===`AbortError`,ie=()=>typeof navigator==`object`&&navigator!==null&&navigator.onLine===!1,ae=()=>typeof document<`u`&&document.visibilityState!==`visible`,oe=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},se=e=>!(e<400||e>=500||e===408||e===429),P=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(ie())return cO;let t=ae()?cO:sO,n=Math.min(e-1,lO);return Math.min(t,oO*2**n)},ce=!1,le,ue=Date.now(),de,I=_===`ws`?`ws`:`sse`,fe=null,L=0,pe=0,me=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}))},he=e=>{C||(C=!0,me(e),p?.(e))},R=()=>{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:I,isReconnect:t})},ge=()=>{C=!1,L=0,N(),l?.(),R()},_e=(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;jn.pipeline.coalesced(r.type,o);return}a.coalesced.set(o,a.queue.length)}a.queue.push(r),te(i)},ve=(e,t)=>{let n=mO(t);if(!n)return`unusable`;let r=fO(n);if(r.status!==`event`)return r.status===`declined`?`declined`:`unusable`;let i=pO(e,n,r.event,r.normalized.locationDirectory);return _e(i,r.event,r.normalized),`ingested`},ye=()=>{ue=Date.now(),de&&clearTimeout(de),de=setTimeout(()=>{fe=`${I}_heartbeat_timeout`,le?.abort()},v)},be=()=>{ye(),m?.()},xe=()=>{de&&=(clearTimeout(de),void 0)},z=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)}},Se=async e=>{ye();let n=await z(Promise.resolve(t.event.subscribe({signal:e,...w&&w.length>0?{headers:{"Last-Event-ID":w}}:{}})),e);ge();let r=Date.now();be();for await(let e of n){be(),ce=!1;let t=typeof e.id==`string`?e.id:void 0;t&&t.length>0&&(w=t),ve(e,e.payload??e),!(Date.now()-r<$D)&&(r=Date.now(),await ne(0))}if(!e.aborted){let e=Error(`Global event SSE stream closed`);throw e.reason=`sse_stream_closed`,e}},Ce=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()+nO,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=gO(w),c=(e,t=!1)=>{(t||!a)&&_===`auto`&&(T=Date.now()+nO,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()+nO);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`){be(),a=!0,o=Date.now(),l&&=(clearTimeout(l),void 0),ce=!1,ge();return}if(t.type===`error`){be();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`){be(),pe=Date.now()+QD;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(ve({directory:t.directory,payload:t.payload},t.payload)===`unusable`){n&&(D=E===n?D+1:1,E=n,D>=rO&&(w=n,E=void 0,D=0)),m(`ws_invalid_frame:event_payload`);return}E=void 0,D=0,be(),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)}})},we=()=>typeof WebSocket==`function`?_===`ws`?`ws`:_===`sse`||a()||T>Date.now()?`sse`:`ws`:`sse`;(async()=>{for(;!S.signal.aborted;){le=new AbortController,ue=Date.now(),fe=null;let e=y,t=we();I=t;let n=()=>{fe=`pipeline_stopped`,le?.abort()};S.signal.addEventListener(`abort`,n);try{t===`ws`?await Ce(le.signal):await Se(le.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)){L+=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`;he(a);let o=oe(n);e=o!==void 0&&se(o)?cO:F(L)}}finally{S.signal.removeEventListener(`abort`,n),le=void 0,xe()}if(S.signal.aborted)return;fe&&fe!==`pipeline_stopped`&&(he(fe),L+=1,e=y>0?F(L):0,fe=null),e>0&&await P(e)}})().finally(N);let Te=()=>{if(!(typeof document>`u`)){if(document.visibilityState===`hidden`){me(`visibility_hidden`);return}document.visibilityState===`visible`&&(Date.now()-ue<v||le?.abort())}},Ee=e=>{e.persisted&&(me(`pageshow_persisted`),le?.abort())},De=()=>{me(`system_resume`),le&&(fe=`${I}_system_resume`,le.abort())},Oe=()=>{C&&(me(`online`),le?.abort())},ke=()=>{le?.abort()};return typeof document<`u`&&(document.addEventListener(`visibilitychange`,Te),window.addEventListener(`pageshow`,Ee)),globalThis.window!==void 0&&(globalThis.window.addEventListener(`openchamber:system-resume`,De),globalThis.window.addEventListener(`online`,Oe),globalThis.window.addEventListener(`offline`,ke)),{cleanup:()=>{typeof document<`u`&&(document.removeEventListener(`visibilitychange`,Te),window.removeEventListener(`pageshow`,Ee)),globalThis.window!==void 0&&(globalThis.window.removeEventListener(`openchamber:system-resume`,De),globalThis.window.removeEventListener(`online`,Oe),globalThis.window.removeEventListener(`offline`,ke)),S.abort(),xe(),N()},reconnect:(e=`manual`)=>{e===`reasoning_projection`&&ee(),fe=`${I}_${e}`,le?.abort()}}}var vO=Gr({epoch:qr().min(1),revision:Hr().int().nonnegative(),serverNow:Hr(),enabled:Kr(),delayMs:Ur(3e4),coverage:Gr({state:Jr([`ready`,`reconciling`,`partial`]),failedDirectories:Wr(qr())}),requests:Wr(Gr({requestID:qr(),sessionID:qr(),directory:qr(),questionCount:Hr(),state:Jr([`counting`,`paused`,`disabled`,`submitting`,`uncertain`,`settled`]),deadlineAt:Hr().nullable(),pauseReason:Jr([`interaction`,`user`,`goal`]).nullable(),submittedBy:Jr([`manual`,`auto`]).nullable(),resolution:Jr([`replied`,`rejected`,`external`]).nullable()}))}),yO=Gr({outcome:Jr([`ok`,`paused`,`delegated`,`submitted`,`claimed`,`uncertain`,`settled`,`not_found`,`disabled`,`error`]),snapshot:vO}),bO=0,xO=()=>({transport:u(),generation:f()}),SO=e=>e.transport===u()&&e.generation===f(),CO=e=>[e.transport,`question-auto-delegate`,e.generation];function wO(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 TO=(e,t)=>({snapshot:e,receivedAt:performance.now(),sequence:t,retiredEpochs:[]});function EO(e=xO()){return Ar({queryKey:CO(e),queryFn:async({signal:t})=>{if(!SO(e))throw Error(`Runtime changed`);let n=++bO,r=await _(`/api/question-auto-delegate`,{signal:t});if(!r.ok)throw Error(`Question snapshot: ${r.status}`);let i=vO.parse(await r.json());if(!SO(e)||t.aborted)throw Error(`Runtime changed`);return TO(i,n)},structuralSharing:(e,t)=>wO(e,t),staleTime:1/0,retry:1,refetchOnWindowFocus:`always`})}function DO(){let e=(0,U.c)(1);(0,K.useSyncExternalStore)(s,f,f);let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=EO(),e[0]=t):t=e[0],jr(t,I)}var OO=()=>I.getQueryData(EO().queryKey),kO=()=>I.ensureQueryData(EO()),AO=async()=>{let e=CO(xO());await I.cancelQueries({queryKey:e,exact:!0},{revert:!1}),await I.invalidateQueries({queryKey:e,exact:!0})};async function jO(e,t,n){let r=xO(),i=++bO,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=yO.parse(await a.json());if(!SO(r))throw Error(`Runtime changed`);if(I.setQueryData(CO(r),e=>wO(e,TO(o.snapshot,i))),AO(),!a.ok&&![`claimed`,`uncertain`,`not_found`].includes(o.outcome))throw Error(`Question ${e}: ${a.status}`);return o.outcome}var MO=new Set([`/`,`-`,`_`,`.`,` `,`:`,`\\`]);function NO(e){return e==null?[]:typeof e==`string`?e?[e]:[]:e.filter(e=>typeof e==`string`&&e.length>0)}function PO(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(MO.has(o)?0:.5)+i/1e3+a}function FO(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=NO(n(t));if(e.length===0)continue;let r=null,i=e[0].toLowerCase();for(let t of e){let e=t.toLowerCase(),n=PO(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 Yr(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 IO=Ne(),LO=3e4,RO=(e,t)=>e?.find(e=>e.requestID===t.id);function zO(e){let t=DO(),n=RO(t.data?.snapshot.requests,e),r=`${f()}:${e.sessionID}:${e.id}`,[i,a]=K.useState({scope:r,pending:null,failed:null}),o=i.scope===r?i.pending:null,s=i.scope===r?i.failed:null,[c,l]=K.useState(null),u=c?.scope===r&&(!c.epoch||c.epoch===t.data?.snapshot.epoch),d=u&&(!n||![`submitting`,`uncertain`,`settled`].includes(n.state)),[p,m]=K.useState(null),h=p?.scope===r,g=K.useRef(null),_=K.useRef(null),v=K.useRef(r);v.current=r;let y=Fr(()=>{u||m(e=>e?.scope===r?e:{scope:r})}),b=Fr(async(t,n=`user`)=>{if(u||(t===`pause`&&y(),g.current===r||n===`interaction`&&_.current===r))return;let i=OO(),o=RO(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,AO());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 kO();if(s!==f())throw Error(`Runtime changed`);let n=RO(t.snapshot.requests,e);if(!n)throw Error(`Question identity unavailable`);r={requestID:n.requestID,sessionID:n.sessionID,directory:n.directory}}let a=await jO(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=Fr(e=>{e.target.closest(`[data-question-delegation-controls]`)||h||y()}),S=Fr(async n=>{n===`${f()}:${e.sessionID}:${e.id}`&&(l({scope:r,epoch:t.data?.snapshot.epoch}),a({scope:r,pending:null,failed:null}),await AO())});return K.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 BO(e){let t=(0,U.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,IO.jsx)(`div`,{"data-question-delegate-bar":!0,"aria-hidden":!0,className:`h-1 w-full overflow-hidden rounded-full bg-muted/40`,children:(0,IO.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 VO(e){let t=(0,U.c)(11),{data:n,deadlineAt:r,startedAt:i,delayMs:a}=e,{t:o}=Lr(),[,s]=K.useReducer(HO,0),c=Math.max(0,r!=null&&n?r-n.snapshot.serverNow-(performance.now()-n.receivedAt):a-(performance.now()-i));Pr(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,IO.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,IO.jsx)(BO,{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,IO.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 HO(e){return e+1}function UO({delegation:e}){let{t}=Lr(),{query:n,request:r,pending:i,failed:a,run:o,claimed:s,awaitingClaim:c,scope:l,held:u}=e,d=K.useRef(performance.now()),f=K.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??LO,_=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,IO.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,IO.jsx)(VO,{data:n.data,deadlineAt:r?.deadlineAt??null,startedAt:d.current,delayMs:g}):null,(0,IO.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[h?null:(0,IO.jsx)(`div`,{className:`min-w-0 flex-1 basis-40 typography-micro text-muted-foreground`,children:(0,IO.jsx)(`span`,{role:`status`,children:t(_)})}),n.isError||a?(0,IO.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,IO.jsx)(Rr,{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,IO.jsx)(Rr,{variant:`ghost`,size:`xs`,disabled:!!i,onClick:()=>void o(`pause`),children:t(`chat.questionDelegate.pause`)}),r&&!p&&(0,IO.jsx)(Rr,{variant:`outline`,size:`xs`,disabled:!!i,onClick:()=>void o(`delegate`),children:t(`chat.questionDelegate.delegate`)})]})]})}function WO(){let e=(0,U.c)(5),t=DO(),{t:n}=Lr(),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=f(),e[0]=r):r=e[0];let i=r,a=K.useRef(void 0),o,s;return e[1]!==t.data||e[2]!==n?(o=()=>{let e=t.data;if(!e)return;let r=a.current;if(a.current={generation:i,data:e},!r||r.generation!==i)return;let o=r.data;if(o.snapshot.epoch!==e.snapshot.epoch||o.snapshot.revision===e.snapshot.revision||document.visibilityState!==`visible`)return;let s=new Map(o.snapshot.requests.map(GO));for(let t of e.snapshot.requests)s.get(t.requestID)?.state!==`settled`&&t.state===`settled`&&t.submittedBy===`auto`&&t.resolution===`replied`&&RC.success(n(`chat.questionDelegate.success`),{id:`question-delegate:${e.snapshot.epoch}:${t.requestID}`})},s=[i,t.data,n],e[1]=t.data,e[2]=n,e[3]=o,e[4]=s):(o=e[3],s=e[4]),K.useEffect(o,s),null}function GO(e){return[e.requestID,e]}function KO(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 qO(e,t){let n=new Set(Array.from(t).filter(Boolean));if(n.size===0)return;let r=e.session_interrupt_acknowledged_at,i=e.session_execution_version,a=e.session_status_event_at,o=e.session_status_event_sequence;for(let t of n)r?.[t]!==void 0&&e.session_interrupt_acknowledged_at===r&&(e.session_interrupt_acknowledged_at={...r}),i?.[t]!==void 0&&e.session_execution_version===i&&(e.session_execution_version={...i}),a?.[t]!==void 0&&e.session_status_event_at===a&&(e.session_status_event_at={...a}),o?.[t]!==void 0&&e.session_status_event_sequence===o&&(e.session_status_event_sequence={...o}),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_status_event_at&&delete e.session_status_event_at[t],e.session_status_event_sequence&&delete e.session_status_event_sequence[t],e.session_interrupt_acknowledged_at&&delete e.session_interrupt_acknowledged_at[t],e.session_execution_version&&delete e.session_execution_version[t],e.session_error_at&&delete e.session_error_at[t],delete e.permission[t],delete e.question[t]}function JO(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 YO=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},XO=(e,t)=>e?YO(t)<YO(e):!1,ZO=(e,t)=>{if(t.sessionID!==e.id||typeof t.title!=`string`)return e;let n=typeof t.eventCreated==`number`&&Number.isFinite(t.eventCreated)?t.eventCreated:YO(e);return n<YO(e)||e.title===t.title&&n===YO(e)?e:{...e,title:t.title,time:{...e.time,updated:n}}};function QO(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function $O(e){return typeof e==`string`&&e.length>0?e:void 0}function ek(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function tk(e){let t=QO(e);if(!t)return null;let n=$O(t.id),r=$O(t.sessionID)??$O(t.sessionId),i=$O(t.permission)??$O(t.action);if(!n||!r||!i)return null;let a=QO(t.source)??QO(t.tool),o=ek(t.patterns),s=ek(t.resources),c=ek(t.always),l=ek(t.save);return Rt({id:n,sessionID:r,action:i,resources:o.length>0?o:s,save:c.length>0?c:l,metadata:QO(t.metadata)??{},source:a?{messageID:$O(a.messageID),id:$O(a.callID)??$O(a.id)}:void 0})}function nk(e){let t=QO(e);if(!t)return null;let n=$O(t.id),r=$O(t.sessionID)??$O(t.sessionId);if(!n||!r)return null;let i=(Array.isArray(t.questions)?t.questions:[]).flatMap(e=>{let t=QO(e);if(!t)return[];let n=Array.isArray(t.options)?t.options.flatMap(e=>{let t=QO(e);if(!t)return[];let n=$O(t.label);return n?[{label:n,description:typeof t.description==`string`?t.description:``}]:[]}):[];return[{question:$O(t.question)??``,header:$O(t.header)??``,options:n,...t.multiple===!0?{multiple:!0}:{}}]}),a=QO(t.tool);return mr({id:n,sessionID:r,questions:i,tool:a?{messageID:$O(a.messageID),id:$O(a.callID)??$O(a.id)}:void 0})}function rk(e){let t=QO(e);if(!t)return null;let n=QO(t.form)??t;if(!ct(n.metadata))return null;let r=$O(n.id),i=$O(n.sessionID)??$O(n.sessionId);if(!r||!i)return null;let a=QO(n.metadata)??void 0,o=Array.isArray(n.fields)?n.fields.flatMap(e=>{let t=QO(e),n=t?$O(t.key):void 0;if(!t||!n)return[];let r=Array.isArray(t.options)?t.options.flatMap(e=>{let t=QO(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 mr({id:r,sessionID:i,title:typeof n.title==`string`?n.title:void 0,...o&&o.length>0?{fields:o}:{},...a?{metadata:a}:{}})}function ik(e,t){let n=[...e.question[t.sessionID]??[]],r=Yd.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 ak(e,t,n){if(!t||!n)return!1;let r=e.question[t];if(!r)return!1;let i=Yd.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 ok(e,t,n){return e.session_error_at?.[t]!==n&&(e.session_error_at={...e.session_error_at,[t]:n},!0)}function sk(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 ck(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 lk(e,t){let n=rf(e,t);if(e.session_execution_recovery?.[t]===void 0)return n;let r={...e.session_execution_recovery};return delete r[t],e.session_execution_recovery=r,!0}function uk(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 dk(e){return e.type===`global.disposed`||e.type===`server.connected`?{type:`refresh`}:e.type===`project.updated`?{type:`project`,project:e.properties}:null}function fk(e,t){let n=[...e.projects],r=Yd.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 pk(e,t,n){t&&(n?.(t,void 0),qO(e,[t]))}var mk=e=>e.title===`smartfetch-secondary`;function hk(e,t,n,r){return n.found?(e.session.splice(n.index,1),mk(t)&&pk(e,t.id,r),t.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0):!1}function gk(e){let t=e.properties?.info;if(!(!t||typeof t!=`object`))return typeof t.id==`string`?t:void 0}function _k(e,t,n){if(t.type===`session.status`||t.type===`session.idle`||t.type===`session.error`||t.type.startsWith(`session.execution.`)){let n=t.properties;if(n.sessionID&&typeof n.eventSequence==`number`){if(n.eventSequence<=(e.session_status_event_sequence?.[n.sessionID]??-1))return!1;e.session_status_event_sequence={...e.session_status_event_sequence,[n.sessionID]:n.eventSequence}}if(n.sessionID&&typeof n.eventCreated==`number`){if(n.eventSequence===void 0&&n.eventCreated<(e.session_status_event_at?.[n.sessionID]??0))return!1;e.session_status_event_at={...e.session_status_event_at,[n.sessionID]:n.eventCreated}}}switch(t.type){case`server.instance.disposed`:return n?.onRefresh?.(``),!1;case`session.created`:{let r=gk(t);if(!r)return!1;let i=dd(r),a=e.session,o=Yd.search(a,i.id,e=>e.id);return vd(i)?o.found&&XO(a[o.index],i)?!1:(o.found?a[o.index]=i:(a.splice(o.index,0,i),vk(e),i.parentID||(e.sessionTotal+=1)),!0):hk(e,i,o,n?.onSetSessionTodo)}case`session.renamed`:{let r=t.properties;if(typeof r.sessionID!=`string`)return!1;let i=Yd.search(e.session,r.sessionID,e=>e.id);if(!i.found)return!1;let a=e.session[i.index],o=ZO(a,r);return o===a?!1:vd(o)?(e.session[i.index]=o,!0):hk(e,o,i,n?.onSetSessionTodo)}case`session.updated`:{let r=gk(t);if(!r)return!1;let i=dd(r),a=e.session,o=Yd.search(a,i.id,e=>e.id);if(o.found&&XO(a[o.index],i))return!1;{let t=i.time?.archived,r=typeof t==`number`&&Number.isFinite(t)&&t>0;if(!vd(i)||r)return hk(e,i,o,n?.onSetSessionTodo)}return o.found?a[o.index]=i:(a.splice(o.index,0,i),vk(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=Yd.search(a,i,e=>e.id);if(!o.found)return!1;let s={...a[o.index],metadata:r.metadata};return a[o.index]=s,vd(s)?!0:hk(e,s,o,n?.onSetSessionTodo)}case`session.deleted`:{let r=t.properties.info,i=e.session,a=Yd.search(i,r.id,e=>e.id);return a.found&&i.splice(a.index,1),pk(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]=ld(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`)&&(rf(e,r.sessionID),i=sk(e,r.sessionID));let a=lk(e,r.sessionID);return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),uk(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=lk(e,r.sessionID),a={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),uk(e.session_status[r.sessionID],a)?!!n?.now||i:(e.session_status[r.sessionID]=a,!0)}case`session.error`:{let r=t.properties,i=rf(e,r.sessionID);n?.onServerSessionIdle?.(r.sessionID);let a={type:`idle`},o=n?.now?.();o!==void 0&&(e.session_status_observed_at[r.sessionID]=o);let s=o!==void 0&&ok(e,r.sessionID,o);return uk(e.session_status[r.sessionID],a)?o!==void 0||s||i:(e.session_status[r.sessionID]=a,!0)}case`session.execution.started`:{let r=t.properties;e.session_execution_version={...e.session_execution_version,[r.sessionID]:(e.session_execution_version?.[r.sessionID]??0)+1};let i={type:`busy`};return sk(e,r.sessionID),lk(e,r.sessionID),n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),uk(e.session_status[r.sessionID],i)||(e.session_status[r.sessionID]=i),!0}case`session.execution.succeeded`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i=lk(e,r.sessionID),a={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),uk(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=rf(e,r.sessionID),n={type:`busy`},i=ck(e,r.sessionID,{reason:`shutdown`,observedAt:a??Date.now()});return uk(e.session_status[r.sessionID],n)?i||t||a!==void 0:(e.session_status[r.sessionID]=n,!0)}n?.onServerSessionIdle?.(r.sessionID);let o=lk(e,r.sessionID),s={type:`idle`};return uk(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&&ok(e,r.sessionID,a),s=lk(e,r.sessionID);return uk(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=Yd.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=Yd.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=$O(QO(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=tk(t.properties);if(!n)return!1;let r=[...e.permission[n.sessionID]??[]],i=Yd.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=Yd.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=nk(t.properties);return n?ik(e,n):!1}case`form.created`:{let n=rk(t.properties);return n?ik(e,n):!1}case`question.replied`:case`question.rejected`:{let n=t.properties;return ak(e,n.sessionID,n.requestID)}case`form.replied`:case`form.cancelled`:{let n=t.properties;return ak(e,n.sessionID,n.id??n.requestID)}case`lsp.updated`:return n?.onLoadLsp?.(),!1;default:return!1}}function vk(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 yk=ke()(e=>({...Gn,actions:{set:t=>e(t),reset:()=>e(Gn)}}));function bk(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 xk(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 Sk(e){return!(!e.directory||!e.hasStore||e.pinned||e.booting||e.loadingSessions||e.hasPendingBlockingRequests)}function Ck(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 wk(e){let t=e.slice(0,12).replace(/[^a-zA-Z0-9]/g,`_`);return`oc.dir.${Ck(m().trim()||`default`)}.${t}.${Ck(e)}`}function Tk(e,t){return`${wk(e)}.${t}`}function Ek(e,t){try{let n=localStorage.getItem(Tk(e,t));return n?JSON.parse(n):void 0}catch{return}}function Dk(e,t,n){try{let r=Tk(e,t);n===void 0?localStorage.removeItem(r):localStorage.setItem(r,JSON.stringify(n))}catch{}}function Ok(e){return{vcs:Ek(e,`vcs`),projectMeta:Ek(e,`projectMeta`),icon:Ek(e,`icon`)}}function kk(e){try{localStorage.removeItem(`${wk(e)}.sessions`)}catch{}}function Ak(e,t){Dk(e,`vcs`,t)}function jk(e,t){Dk(e,`projectMeta`,t)}function Mk(e,t){Dk(e,`icon`,t)}function Nk(e){let t=Ok(e);kk(e);let n=ke()(e=>({...ut,vcs:t.vcs??ut.vcs,projectMeta:t.projectMeta??ut.projectMeta,icon:t.icon??ut.icon,patch:t=>e(t),replace:t=>e(t)})),r=n.setState;return n.setState=((t,i)=>{let a=typeof t==`function`?t(n.getState()):t;r(lo(e,n.getState(),a),i)}),n.setState({patch:e=>n.setState(e),replace:e=>n.setState(e)}),n.subscribe((t,n)=>{t.vcs!==n.vcs&&Ak(e,t.vcs),t.projectMeta!==n.projectMeta&&jk(e,t.projectMeta),t.icon!==n.icon&&Mk(e,t.icon)}),n}var Pk=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=Se(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=Se(e);t&&(this.pins.set(t,(this.pins.get(t)??0)+1),this.mark(t))}unpin(e){let t=Se(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(Se(e))??0)>0}ensureChild(e,t){let n=Se(e);if(!n)throw Error(`No directory provided to ensureChild`);let r=this.children.get(n);return r||(r=Nk(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(Se(e))}captureChild(e,t){let n=Se(e),r=this.ensureChild(n,t);return{directory:n,generation:this.generations.get(n)??0,store:r}}isCurrentChildCapture(e){let t=Se(e.directory);return this.children.get(t)===e.store&&this.generations.get(t)===e.generation}disposeDirectory(e){let t=Se(e);if(!Sk({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=xk({stores:t,state:this.lifecycle,pins:new Set(t.filter(e=>this.pinned(e))),max:30,ttl:et,graceMs:pt,now:Date.now(),hasPendingBlockingRequests:e=>this.hasPendingBlockingRequestsForDirectory(e)}).filter(t=>t!==e);for(let e of n)this.disposeDirectory(e)}hasPendingBlockingRequestsForDirectory(e){return bk(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()}}},Fk=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},Ik=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(`|`)},Lk=e=>{switch(e?.type){case`retry`:return 4;case`busy`:return 3;case`idle`:return 1;default:return 0}},Rk=e=>{let t=e?.message;return typeof t==`string`?t:null},zk=(e,t)=>{let n=e?.[t];return typeof n==`number`?n:null},Bk=(e,t)=>e?.type===t?.type&&Rk(e)===Rk(t)&&zk(e,`attempt`)===zk(t,`attempt`)&&zk(e,`next`)===zk(t,`next`),Vk=(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?Fk(r):-1}},Hk=(e,t)=>e?t.sessionUpdatedAt===e.sessionUpdatedAt?Lk(t.status)>=Lk(e.status):t.sessionUpdatedAt>e.sessionUpdatedAt:!0,Uk=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(Ik(e[n])!==Ik(t[n]))return!1;return!0},Wk=(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(!Bk(n,i))return!1}return!0};function Gk(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||!vd(e))continue;let r=n.get(e.id);(!r||Fk(e)>=Fk(r))&&n.set(e.id,e)}return Array.from(n.values()).sort((e,t)=>Fk(t)-Fk(e))}function Kk(e){let t=new Map;for(let n of e)for(let e of Object.keys(n.session_status??{})){let r=Vk(n,e);r&&Hk(t.get(e),r)&&t.set(e,r)}let n={};for(let[e,r]of t)n[e]=r.status;return n}function qk(e,t){if(!t)return;let n;for(let r of e){let e=r.session.find(e=>e.id===t);e&&(!n||Fk(e)>=Fk(n))&&(n=e)}return n}function Jk(e,t){if(!t)return;let n;for(let r of e){let e=Vk(r,t);e&&Hk(n,e)&&(n=e)}return n?.status}var Yk=(e,t)=>e<t?-1:+(e>t);function Xk(e){if(typeof e==`string`&&e.trim().length!==0)return{location:{directory:e}}}var Zk=e=>!e||e.length===0?``:e.map(e=>e.id).sort(Yk).join(`|`);function Qk(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 $k(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 eA(e,t){return t.find(t=>We(t)===e||t.sandboxes?.includes(e))?.id}async function tA(e,t){let n=await Promise.allSettled([rd(()=>e.server.info())]),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 nA(e){let{directory:t,sdk:n,getState:r,set:i,global:a}=e;if(!t.trim())throw Error(`Directory bootstrap requires an explicit directory`);let o=r(),s=o.status!==`complete`,c=eA(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}),St(t,e)}s&&i({status:`partial`});let l=await Promise.allSettled([c?Promise.resolve():rd(()=>n.location.get(Xk(t)).then(e=>{let t=e?.project?.id;t&&i({project:t})})),rd(()=>n.config.get(Xk(t)).then(e=>{let n=Ot(e);i({config:n}),St(t,n)})),rd(()=>n.location.get(Xk(t)).then(e=>{let n=_t(e);i({path:n});let r=eA(n.directory||t,a.projects);r&&i({project:r})})),rd(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=At(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:$k(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([rd(async()=>{let e=await n.vcs.get(Xk(t));if(!e?.data)throw Error(`vcs.get returned no data`);i({vcs:e.data})}),rd(async()=>{let e=r(),a=new Map(Object.entries(e.question??{}).map(([e,t])=>[e,Zk(t)])),o=Qk((await n.form.list(Xk(t))).data.filter(e=>!!e?.id&&!!e?.sessionID&&ct(e.metadata)).map(e=>mr({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)=>Yk(e.id,t.id));for(let e of a.keys()){if(o[e])continue;let t=a.get(e)??``;Zk(s.question[e])===t&&delete c[e]}i({question:c})}),rd(async()=>{let e=r(),a=new Map(Object.entries(e.permission??{}).map(([e,t])=>[e,Zk(t)])),o=Qk((await n.permission.request.list(Xk(t))).data.filter(e=>!!e?.id&&!!e?.sessionID).map(Rt)),s=r(),c={...s.permission};for(let[e,t]of Object.entries(o))c[e]=t.filter(e=>!!e?.id).sort((e,t)=>Yk(e.id,t.id));for(let e of a.keys()){if(o[e])continue;let t=a.get(e)??``;Zk(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])})}function rA(e,t,n,r){let i=n[e][t];i!==void 0&&(r[e]={...r[e],[t]:i},n[e]={...n[e]},delete n[e][t])}function iA(e,t){let n=e.directory;if(!n)return;let r=t.ensureChild(n,{bootstrap:!1}),i={...r.getState()};for(let[n,a]of t.children){if(a===r)continue;let t={...a.getState()};if(t.session.some(t=>t.id===e.id)||co.some(n=>t[n][e.id]!==void 0)){t.session=t.session.filter(t=>t.id!==e.id);for(let n of co)rA(n,e.id,t,i);a.setState(t),H()?.apply(V(n,e.id),{type:`reset`})}}i.session=[...i.session.filter(t=>t.id!==e.id),e].sort((e,t)=>e.id.localeCompare(t.id)),r.setState(i),Ut(e.id,n),Y.getState().upsertSession(e),$.getState().setSessionDirectory(e.id,n)}var aA=ke()(()=>({streamingMessageIds:new Map,messageStreamStates:new Map}));function oA(){aA.setState({streamingMessageIds:new Map,messageStreamStates:new Map})}var sA=1e3;function cA(e,t){let n=Date.now(),r=aA.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=H();t?.store;for(let e of l){let t=[];if(f&&d&&(t=lt(f.getTranscript(V(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>=sA&&(s.set(r.id,{...a,lastUpdateAt:n}),c=!0)}for(let[e,t]of i)t&&(l.has(e)||u(e,t));c&&aA.setState({streamingMessageIds:o,messageStreamStates:s})}function lA(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 uA(e){if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null}function dA(e){if(e[1]===`commands`)return uA(e[2]);if(e[1]===`mcp`&&(e[2]===`configs`||e[2]===`status`))return uA(e[3])}function fA(e,t){let n=t.directory===void 0?void 0:uA(t.directory);return t.directory!==void 0&&!n?Promise.resolve():e.invalidateQueries({predicate:e=>{if(e.queryKey[0]!==t.transport)return!1;let r=dA(e.queryKey);return r===void 0?!1:n===void 0||r===n},refetchType:`active`})}function pA(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 mA={"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`]},hA=[`providers`,`agents`,`commands`,`skills`,`mcp`,`plugins`];function gA(e){if(e[2]===`provider-connections`||e[1]===`configCatalog`&&e[2]===`providers`)return{domain:`providers`,directory:R(e[3])};if(e[1]===`providers`)return{domain:`providers`,directory:R(e[2])};if(e[1]===`agents`)return{domain:`agents`,directory:R(e[2]===`raw`?e[3]:e[2])};if(e[1]===`commands`||e[1]===`skills`)return{domain:e[1],directory:R(e[2])};if(e[1]===`mcp`||e[1]===`plugins`)return{domain:e[1],directory:R(e[3])};if(e[1]===`skillsCatalog`)return{domain:`skills`,directory:R(e[3])}}function _A(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=gA(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`?hA:Object.hasOwn(mA,n)?mA[n]:void 0;if(!s)return!1;a(r)||(t.clear(),r=e.identity());let c=n.startsWith(`credential.`)||!i||i===`global`?void 0:R(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()}}}var vA=``,yA=new Map,bA=new Map,xA=new Set([`session.status`,`session.idle`,`session.error`,`session.step.started`,`session.execution.started`,`session.execution.succeeded`,`session.execution.failed`,`session.execution.interrupted`]),SA=ke(()=>({statusById:new Map})),CA=e=>e===`busy`?`busy`:e===`retry`?`retry`:`idle`,wA=e=>CD(e)??e,TA=(e,t,n)=>{SA.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}})},EA=(e,t)=>{if(xA.has(t.type)){let e=`${u()}:${f()}`;vA!==e&&(vA=e,yA.clear(),bA.clear());let n=t.properties;if(n.sessionID&&typeof n.eventSequence==`number`){if(n.eventSequence<=(bA.get(n.sessionID)??-1))return;bA.set(n.sessionID,n.eventSequence)}if(n.sessionID&&typeof n.eventCreated==`number`){if(n.eventSequence===void 0&&n.eventCreated<(yA.get(n.sessionID)??0))return;yA.set(n.sessionID,n.eventCreated)}}switch(t.type){case`session.moved`:{let e=t.properties,n=e.sessionID?SA.getState().statusById.get(e.sessionID):void 0;n&&e.sessionID&&e.location?.directory&&TA(e.sessionID,wA(e.location.directory),n.status);return}case`session.status`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;let r=CA(n.status?.type);TA(n.sessionID,wA(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&&TA(n.sessionID,wA(e),`idle`);return}case`session.execution.interrupted`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;if(n.reason===`shutdown`){TA(n.sessionID,wA(e),`busy`);return}TA(n.sessionID,wA(e),`idle`);return}case`session.step.started`:case`session.execution.started`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&TA(n.sessionID,wA(e),`busy`);return}default:return}},DA=(e,t,n)=>{let r=wA(e),i=new Set(n??[]);SA.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=CA(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})},OA=e=>e?e.toLowerCase().includes(`text/html`):!1;function kA(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function AA(e){return typeof e==`string`&&e.length>0?e:void 0}function jA(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function MA(e){try{return(await e.text()).trim()}catch{return``}}async function NA(e,t){if(OA(e.headers.get(`content-type`)))throw Error(`${t}: unexpected HTML response`);if(e.status===204)return null;let n=await e.text();if(!n.trim()){if(e.ok)return null;throw Error(`${t}: empty response`)}try{return JSON.parse(n)}catch{throw Error(`${t}: malformed JSON`)}}function PA(e){return e?{directory:e}:{}}function FA(e){if(!kA(e))return null;let t=AA(e.value),n=AA(e.label);return!t||!n?null:{value:t,label:n,...AA(e.description)?{description:AA(e.description)}:{}}}function IA(e){if(!kA(e))return null;let t=AA(e.key),n=AA(e.type);if(!t||!n)return null;let r=AA(e.title),i=AA(e.description);if(n===`external`){let a=AA(e.url);return a?{key:t,type:n,url:a,...r?{title:r}:{},...i?{description:i}:{}}:null}if(n===`string`){let a=Array.isArray(e.options)?e.options.flatMap(e=>{let t=FA(e);return t?[t]:[]}):void 0;return{key:t,type:n,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...AA(e.placeholder)?{placeholder:AA(e.placeholder)}:{},...typeof e.default==`string`?{default:e.default}:{},...a&&a.length>0?{options:a}:{},...typeof e.custom==`boolean`?{custom:e.custom}:{}}}if(n===`number`||n===`integer`)return{key:t,type:n,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...typeof e.default==`number`?{default:e.default}:{}};if(n===`boolean`)return{key:t,type:n,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...typeof e.default==`boolean`?{default:e.default}:{}};if(n===`multiselect`){let a=Array.isArray(e.options)?e.options.flatMap(e=>{let t=FA(e);return t?[t]:[]}):[];return a.length===0?null:{key:t,type:n,options:a,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...Array.isArray(e.default)?{default:e.default.filter(e=>typeof e==`string`)}:{}}}return null}function LA(e){let t=kA(e)?e:null,n=t&&kA(t.data)?t.data:t&&kA(t.form)?t.form:t;if(!n)throw Error(`session form: expected form payload`);let r=AA(n.id),i=AA(n.sessionID),a=AA(n.title);if(!r||!r.startsWith(`frm_`)||!i||!a)throw Error(`session form: missing id, sessionID, or title`);let o=Array.isArray(n.fields)?n.fields.flatMap(e=>{let t=IA(e);return t?[t]:[]}):[];if(o.length===0)throw Error(`session form: expected fields`);return{id:r,sessionID:i,title:a,fields:o,...kA(n.metadata)?{metadata:n.metadata}:{}}}function RA(e){let t=kA(e)?e:null,n=t&&Array.isArray(t.data)?t.data:Array.isArray(e)?e:null;if(!n)throw Error(`session form: expected list payload`);return n.map(e=>LA(e))}function zA(e){return`/api/session/${encodeURIComponent(e)}/form`}function BA(e,t){return`/api/session/${encodeURIComponent(e)}/form/${encodeURIComponent(t)}/reply`}function VA(e,t){return`/api/session/${encodeURIComponent(e)}/form/${encodeURIComponent(t)}/cancel`}async function HA(e){let t=await _(zA(e.sessionID),{method:`GET`,query:PA(e.directory),signal:e.signal});return t.ok||jA(`session form list`,t.status,await MA(t)),RA(await NA(t,`session form list`))}async function UA(e){let t=await _(BA(e.sessionID,e.formID),{method:`POST`,headers:{"Content-Type":`application/json`},query:PA(e.directory),body:JSON.stringify({answer:e.answer}),signal:e.signal});t.ok||jA(`session form reply`,t.status,await MA(t))}async function WA(e){let t=await _(VA(e.sessionID,e.formID),{method:`POST`,query:PA(e.directory),signal:e.signal});t.ok||jA(`session form cancel`,t.status,await MA(t))}var GA=ke((e,t)=>({forms:{},upsert:t=>e(e=>{let n=e.forms[t.sessionID]??[],r=n.findIndex(e=>e.id===t.id),i=r>=0?n.map((e,n)=>n===r?t:e):[...n,t];return{forms:{...e.forms,[t.sessionID]:i}}}),remove:(t,n)=>e(e=>{let r=e.forms[t];if(!r?.length)return e;let i=r.filter(e=>e.id!==n);if(i.length===r.length)return e;let a={...e.forms};return i.length>0?a[t]=i:delete a[t],{forms:a}}),replaceSession:(t,n)=>e(e=>({forms:{...e.forms,[t]:n}})),formsForSession:e=>t().forms[e]??[]}));async function KA(e){let t=(await HA(e)).filter(e=>!ct(e.metadata));GA.getState().replaceSession(e.sessionID,t)}var qA=3e5,JA=1e4;function YA(e,t){let n=R(e);return!n||[...t.keys()].some(e=>R(e)===n)?!1:[...t.values()].some(e=>e.some(e=>R(e.path)===n))}function XA(e,t){if(!t||t.status!==`complete`||t.session_status_snapshot_at===void 0)return`unknown`;if(Object.values(t.session_status).some(e=>e.type===`busy`||e.type===`retry`)||Object.values(t.permission).some(e=>e.length>0)||Object.values(t.question).some(e=>e.length>0))return`busy`;let n=GA.getState().forms;if(t.session.some(e=>n[e.id]?.length))return`busy`;for(let t of SA.getState().statusById.values())if(R(t.directory)===R(e))return`busy`;return`free`}function ZA(e){let t=new Map,n=!1,r=e=>{let n=t.get(e);n&&(clearTimeout(n.timer),clearTimeout(n.deadline),n.controller.abort(),n.finish?.(),t.delete(e))},i=a=>{r(a);let o={controller:new AbortController};t.set(a,o);let s=()=>!n&&!o.controller.signal.aborted&&t.get(a)===o&&e.isRuntimeCurrent()&&!e.isCurrentDirectory(a)&&e.eligible(a),c=async()=>{try{if(!s())return;let t=e.directoryUse(a);if(t===`unknown`)return;if(t===`busy`){i(a);return}let n=new Promise(e=>{o.finish=()=>e(`unknown`),o.deadline=setTimeout(()=>{o.controller.abort(),e(`unknown`)},JA)}),r=await Promise.race([e.checkRemoteUse(a,o.controller.signal),n]);if(!s())return;let c=e.directoryUse(a);if(r===`unknown`||c===`unknown`)return;if(r===`busy`||c===`busy`){i(a);return}await Promise.race([e.release(a,o.controller.signal),n])}catch{}finally{clearTimeout(o.deadline),o.controller.abort(),t.get(a)===o&&t.delete(a)}};o.timer=setTimeout(()=>{c()},qA)};return{directoryChanged(t,a){if(n)return;let o=R(t??``),s=R(a??``);o!==s&&(s&&r(s),o&&e.eligible(o)&&i(o))},dispose(){n=!0;for(let e of t.keys())r(e)}}}function QA(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 $A=new Set,ej=(e,t)=>`${e}\n${t}`;function tj(e,t){!e||e===`global`||!t||$A.add(ej(e,t))}function nj(e,t){let n=ej(e,t);return $A.has(n)?($A.delete(n),!0):!1}var rj=(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=dd(i),o=typeof t==`string`&&t!==`global`?t.trim():``,s=a.directory;return!o||typeof s==`string`&&s.trim()?a:{...a,directory:o}},ij=e=>{let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null},aj=e=>{let t=e;return JSON.stringify([e.title??``,e.time?.archived??0,e.share?.url??``,t.directory??``,t.parentID??``,t.hasChildren??!1])},oj=(e,t)=>{if(e.type===`session.renamed`){let t=e.properties;if(typeof t.sessionID!=`string`)return;let n=ij(t.sessionID);if(!n)return;let r=ZO(n,t);r!==n&&Y.getState().upsertSession(r);return}if(e.type===`session.created`||e.type===`session.updated`){let n=rj(e,t);if(n){let e=ij(n.id);(!e||aj(e)!==aj(n))&&!XO(e,n)&&Y.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=ij(n);if(!i)return;Y.getState().upsertSession({...i,metadata:r});return}if(e.type===`session.deleted`){let t=e.properties?.sessionID??rj(e)?.id;t&&Y.getState().removeSessions([t])}};function sj(e){return Object.entries(e.session_status??{}).filter(([,e])=>e&&e.type!==`idle`).map(([e])=>e)}function cj(e,t){let n=t?.viewedSession;return!n?.sessionId||n.directory!==t?.directory?[]:[n.sessionId]}function lj(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 uj(e,t){let n=new Set(lj(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 dj=e=>{let t=new Map;for(let n of e)t.set(n.id,n);return t},fj=(e,t,n)=>{let r=n??dj(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},pj=e=>{let{autoAccept:t,sessions:n,sessionById:r,sessionID:i}=e,a=fj(i,n,r);for(let e of a)if(Object.prototype.hasOwnProperty.call(t,e))return t[e]===!0;return!0},mj=t({usePermissionStore:()=>vj}),hj=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}},gj=async(e,t)=>hj(await _(e,t)),_j=(e,t,n)=>pj({autoAccept:e,sessions:[],sessionById:t,sessionID:n}),vj=ke()(Ae((e,t)=>({autoAccept:{},loaded:!1,saving:!1,hydrate:async()=>{let n=await gj(`/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 gj(`/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&&_j(n,kt(),e)},setSessionAutoAccept:async(t,n)=>{if(t){if(ye()){let r=await _(`/api/notifications/auto-accept`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionId:t,enabled:n})});if(!r.ok)throw Error(`Permission auto-accept request failed (${r.status})`);e(e=>({autoAccept:{...e.autoAccept,[t]:n},loaded:!0}));return}e({saving:!0});try{let r=$.getState().getDirectoryForSession(t)??B.getDirectory()??void 0;e({autoAccept:(await gj(`/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:hr(),partialize:e=>({autoAccept:e.autoAccept})})),yj=20,bj=400;function xj(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,bj):null,...n?{type:n}:{},...typeof t.status==`number`&&Number.isInteger(t.status)&&t.status>=100&&t.status<=599?{status:t.status}:{}}}var Sj=[];function Cj(e){Sj.push({...e,at:Date.now()}),Sj.length>yj&&Sj.splice(0,Sj.length-yj)}var wj=e=>typeof e==`string`&&e.trim().length>0;function Tj(e){let t=e.trim();return t.length<=18?t:`${t.slice(0,10)}…${t.slice(-4)}`}function Ej(e,t){return Br(zr.getState().dictionary,e,t)}function Dj(e,t=`missing-directory`){let n=wj(e)?Tj(e):null;if(t===`missing-session-id`||!n){RC.error(Ej(`sessions.toast.openFailedMissingSessionId`));return}if(t===`missing-directory`){RC.error(Ej(`sessions.toast.openFailedMissingDirectory`,{sessionId:n}));return}RC.error(Ej(`sessions.toast.openFailed`,{sessionId:n}))}function Oj(e,t,n={}){let r=n.notify!==!1;if(!wj(e))return r&&Dj(null,`missing-session-id`),{ok:!1,reason:`missing-session-id`,sessionId:null};if(!wj(t))return r&&Dj(e,`missing-directory`),{ok:!1,reason:`missing-directory`,sessionId:e.trim()};let i=e.trim(),a=t.trim();return n.phoneShell&&!Kn()?(tW.getState().openSession({sessionId:i,directory:a}),{ok:!0,sessionId:i,directory:a}):n.switchToChat!==!1&&!gr.getState().setActiveMainTab(`chat`)?(r&&Dj(i,`tab-switch-blocked`),{ok:!1,reason:`tab-switch-blocked`,sessionId:i}):($.getState().setCurrentSession(i,a),{ok:!0,sessionId:i,directory:a})}var kj=null,Aj=e=>{kj=e},jj=(e,t)=>typeof kj==`function`&&typeof e==`string`&&e.trim()&&typeof t==`string`&&t.trim()?(kj(e.trim(),t.trim()),{ok:!0,sessionId:e.trim(),directory:t.trim()}):Oj(e,t,{switchToChat:!0}),Mj=(e,t)=>!e||!t?null:`${e}:${t}`,Nj=({permission:e,directory:t,isViewed:n,pendingIds:r,show:i,openSession:a})=>{let o=Mj(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},Pj=15e3,Fj=new Map,Ij=(e,t)=>`${e}\n${t}`;function Lj(e){if(!e.runtimeKey||!e.directory||!e.sessionId||!e.status||e.status.type===`idle`)return;let t=Date.now();for(let[e,n]of Fj)n.expiresAt<=t&&Fj.delete(e);Fj.set(Ij(e.runtimeKey,e.directory),{runtimeKey:e.runtimeKey,directory:e.directory,sessionId:e.sessionId,status:e.status,expiresAt:Date.now()+Pj})}function Rj(e,t){let n=Fj.get(Ij(e,t));return n?n.expiresAt<=Date.now()?(Fj.delete(Ij(e,t)),null):n:null}var zj=[],Bj=[],Vj=[],Hj={sessionID:``,revertMessageID:void 0,records:Bj,history:Vj},Uj=e=>{if(e?.type!==`text`)return``;let t=e.text;return typeof t==`string`?t:``},Wj=e=>{for(let t of e){let e=Uj(t);if(e.length>0)return e}return``},Gj=(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},Kj=(e,t=Hj)=>{let n=e.sessionID;if(!n)return Hj;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&&Re(r,n.id,i)||a.push({message:n,parts:e.parts[n.id]??zj}))}if(a.length===0)return t.sessionID===n&&t.revertMessageID===i&&t.records.length===0?t:{sessionID:n,revertMessageID:i,records:Bj,history:Vj};if(t.sessionID===n&&t.revertMessageID===i&&Gj(t.records,a))return t;let o=[];for(let e of a){let t=Wj(e.parts);t.length>0&&o.push(t)}return{sessionID:n,revertMessageID:i,records:a,history:o}};function qj(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 Jj(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 Yj(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 Xj(e,t,n){if(!e)return null;let r=t?.id===e?t:null,i=n?.id===e?n:null;return r??i}function Zj(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 Qj=`__openchamber_sync_context__`,$j=globalThis,eM=$j[Qj]??(0,K.createContext)(null);$j[Qj]=eM;function tM(){let e=(0,K.useContext)(eM);if(!e)throw Error(`useSyncSystem must be used within <SyncProvider>`);return e}function nM(e){return Array.from(e.children.values(),e=>e.getState())}function rM(e,t,n){let r=(0,U.c)(7),i=t===void 0?Object.is:t,{childStores:a}=tM(),o=(0,K.useRef)(void 0),s=(0,K.useRef)(!1),c;r[0]!==a||r[1]!==i||r[2]!==e?(c=()=>{let t=e(nM(a));return s.current&&i(o.current,t)?o.current:(o.current=t,s.current=!0,t)},r[0]=a,r[1]=i,r[2]=e,r[3]=c):c=r[3];let l=c,u;return r[4]!==a||r[5]!==n?(u=e=>n?n(a,e):a.subscribeAll(e),r[4]=a,r[5]=n,r[6]=u):u=r[6],K.useSyncExternalStore(u,l,l)}function iM(e){let t=(0,U.c)(4),n;t[0]===e?n=t[1]:(n=t=>Jk(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),rM(n,Object.is,r)}function aM(e){let t=(0,U.c)(5),n=iM(e),r;t[0]===e?r=t[1]:(r=t=>t.statusById.get(e)?.status,t[0]=e,t[1]=r);let i=SA(r),a;return t[2]!==i||t[3]!==n?(a=oM(n,i),t[2]=i,t[3]=n,t[4]=a):a=t[4],a}function oM(e,t){if(e)return e;if(t===`busy`)return{type:`busy`};if(t===`retry`)return{type:`retry`,attempt:0,message:``,next:0}}var sM=[],cM={};function lM(e){let t=(0,U.c)(4),n;t[0]===e?n=t[1]:(n=t=>e.reduce((e,n)=>{let r=Jk(t,n)?.type;return e+Number(r===`busy`||r===`retry`)},0),t[0]=e,t[1]=n);let r=n,i;return t[2]===e?i=t[3]:(i=(t,n)=>e.length===0?uM:t.subscribeAllSelected(t=>e.map(e=>t.session_status[e]?.type??``).join(`,`),n),t[2]=e,t[3]=i),rM(r,Object.is,i)}function uM(){}function dM(e){let t=(0,U.c)(4),n=e?.enabled??!0,r;t[0]===n?r=t[1]:(r=e=>n?Kk(e):cM,t[0]=n,t[1]=r);let i;return t[2]===n?i=t[3]:(i=(e,t)=>n?e.subscribeAllSelected(fM,t):pM,t[2]=n,t[3]=i),rM(r,Wk,i)}function fM(e){return e.session_status}function pM(){}function mM(e){let t=(0,U.c)(5),n=e?.enabled??!0,r=Y(_M),i;t[0]!==n||t[1]!==r?(i=e=>n?Gk(e,r):sM,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(hM,t):gM,t[3]=n,t[4]=a),rM(i,Uk,a)}function hM(e){return e.session}function gM(){}function _M(e){return e.pendingDeletionIds}var vM=!1,yM=0,bM=0,xM=1500,SM=new Set([`patch`,`step-start`,`step-finish`]),CM=5e3,wM=4e4,TM=15e3,EM=6e4,DM=6e4,OM=e=>!e||e.length===0?``:e.map(e=>e.id).sort(kM).join(`|`),kM=(e,t)=>e<t?-1:+(e>t),AM=e=>JSON.stringify(e);function jM(e,t){return AM(e)===AM(t)}var MM=5e3,NM=new Map,PM=(e,t)=>`${e}:${t}`;function FM(e,t){try{let n=H();return n?Lt(n.getTranscript(V(e,t))):!1}catch{return!1}}async function IM(e,t){try{if(!H())return;await Ye(e,t)}catch{}}function LM(e,t,n,r){if(!e||e===`global`||!t)return;let i=PM(e,t),a=NM.get(i);if(a&&Date.now()-a.enqueuedAt<MM){Promise.resolve().then(()=>{FM(e,t)&&IM(e,t)});return}NM.set(i,{sessionID:t,directory:e,enqueuedAt:Date.now(),request:r}),Promise.resolve().then(async()=>{let a=n.getChild(e);if(!a){NM.delete(i);return}try{await zM(e,t,a,r)}catch{}finally{NM.delete(i)}})}function RM(e,t,n){let r=t.admissionHint?.sessionID??t.domainActivityHint?.sessionID??(typeof t.properties.sessionID==`string`?t.properties.sessionID:void 0);if(!(!r||!e||e===`global`)){if(t.domainActivityHint?.kind===`activity`){let i=n.getChild(e)??n.ensureChild(e,{bootstrap:!1}),a=t.type===`session.step.started`||/^session\.(?:next\.)?(?:text|reasoning)\./.test(t.type),o=t.properties.eventCreated,s=t.properties.eventSequence;if(typeof s==`number`){if(s<=(i.getState().session_status_event_sequence?.[r]??-1))return;t.type===`session.step.started`&&i.setState({session_status_event_sequence:{...i.getState().session_status_event_sequence,[r]:s}})}if(typeof o==`number`){if(s===void 0&&o<(i.getState().session_status_event_at?.[r]??0))return;a&&(t.type===`session.step.started`||i.getState().session_status?.[r]?.type!==`busy`)&&i.setState({session_status_event_at:{...i.getState().session_status_event_at,[r]:o}})}if(i.getState().session_status?.[r]?.type===`retry`&&!a)return;Vh(i,r)}t.domainActivityHint?.kind===`terminal`&&r===VM&&e===BM&&LM(e,r,n,{reason:`session-idle`})}}async function zM(e,t,n,r){let i=n.getState().session_status?.[t];jn.recovery.materializing({reason:r?.reason??`ensure-session-messages`,directory:e,sessionID:t,messageID:r?.messageID,partID:r?.partID});try{let a=()=>{try{return H()?.getTranscript(V(e,t)).liveRevision}catch{return}},o=a(),s=await wv({directory:e,sessionID:t,limit:Rp(),signal:AbortSignal.timeout(3e4),purpose:`materialize`});if(r?.isStale?.())return`skipped`;let c=Dv({directory:e,sessionID:t,purpose:`materialize`,page:s,capturedLiveRevision:o,liveRevision:a(),skipPartTypes:SM});return FM(e,t)&&await IM(e,t),c.applied?(ey({directory:e,sessionID:t,store:n,isStale:r?.isStale}),s.records.length===0||!r?.isStale?.()&&i?.type!==`idle`&&await Gh(e,n,[t]),`ready`):`skipped`}catch{return`error`}}var BM=``,VM=``,HM=null,UM=``,WM=``,GM=new Map,KM=new Set,qM=15e3,JM=(e,t)=>`${e}\n${t}`;function YM(e=Date.now()){for(let[t,n]of GM.entries())n<=e&&GM.delete(t)}var XM=new Set,ZM=new Set,QM=(e,t)=>!e||!t?null:`${e}:${t}`,$M=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},eN=(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=te()?.notifications;return i?.notifyAgentCompletion&&i.notifyAgentCompletion({title:$M(r.title),body:$M(r.body),tag:$M(r.tag),kind:$M(r.kind),sessionId:$M(r.sessionId),assistantID:$M(r.assistantID),directory:$M(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 tN(e,t){!e||!t||!HM||nj(e,t)&&LM(e,t,HM,{reason:`session-idle`})}function nN(e){HM=e,e&&tN(BM,VM)}function rN(e,t){BM=e,VM=t,tN(e,t)}function iN(e,t,n){if(!e||!t)return;let r=JM(e,t);if(!n){GM.delete(r);return}GM.set(r,Date.now()+qM)}function aN(e,t){if(!e||!t){UM=``,WM=``;return}UM=e,WM=t}function oN(){let e=[],t=new Set,n=(n,r)=>{if(!n||!r)return;let i=JM(n,r);t.has(i)||(t.add(i),e.push({directory:n,sessionID:r}))};return n(UM,WM),n(BM,VM),e}function sN(){return typeof document<`u`&&document.hasFocus()}function cN(e,t){return t?BM&&VM&&e===BM&&t===VM&&sN()?!0:(YM(),GM.has(JM(e,t))):!1}function lN(){return vM||Date.now()-yM<xM}function uN(e){return!BM||!VM||e!==BM?null:{directory:BM,sessionId:VM}}function dN(e,t){return lj(t,{directory:e,viewedSession:uN(e)})}function fN(e){let t=CD(e)??e,n=[];for(let e of Y.getState().activeSessions){let r=e.directory||e.location?.directory;r&&(CD(r)??r)===t&&n.push(e.id)}return n}function pN(e,t){return uj(t,{directory:e,viewedSession:uN(e),extraSessionIds:fN(e)})}function mN(e,t,n,r=wM,i=TM){return!(e<=0||n-e<r||n-t<i)}function hN({isViewed:e,status:t,lastTransportActivityAt:n,lastDomainActivityAt:r,lastFullResyncAt:i,now:a,transportStaleThresholdMs:o=wM,domainStaleThresholdMs:s=EM,recoveryCooldownMs:c=DM}){return!(!e||t?.type!==`busy`&&t?.type!==`retry`||n<=0||a-n>=o||r<=0||a-r<s||a-i<c)}var gN=ye(),_N=(e,t)=>{!gN||typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:vscode-notification-event`,{detail:{directory:e,payload:t}}))},vN=()=>({sessionDirectoryById:new Map,messageSessionById:new Map,sessionMessageIdsById:new Map}),yN=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},bN=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},xN=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},SN=(e,t,n)=>{!t||!n||n===`global`||e.sessionDirectoryById.set(t,n)},CN=(e,t,n,r)=>{if(!t)return;SN(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)},wN=(e,t,n,r)=>{if(!t||!n)return;SN(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]))},TN=(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))},EN=(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)},DN=(e,t,n)=>{let r=new Set;for(let i of n.session)i?.id&&(r.add(i.id),SN(e,i.id,t));try{let n=H(),i=n?.getCacheBudget?.().listCanonical({directory:t});if(i)for(let a of i){if(a.scope.directory!==t)continue;r.add(a.scope.sessionID),SN(e,a.scope.sessionID,t);let i=n?.getTranscript?.(V(t,a.scope.sessionID));if(i){let n=lt(i);CN(e,a.scope.sessionID,t,n)}}}catch{}for(let[n,i]of e.sessionDirectoryById)i===t&&(r.has(n)||EN(e,n))},ON=(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 SN(n,e,r),r}try{let t=H()?.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 SN(n,e,t),t}}catch{}return null},kN=(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(H()??Et(t,r)).hasSession?.(V(t,n))??!1}catch{return!1}},AN=(e,t,n)=>{try{let e=H();if(e&&e.getParts(V(t,n),n).length>0)return!0}catch{}return!1},jN=e=>!BM||!VM?null:e.getChild(BM)?BM:null,MN=(e,t,n,r)=>{let i=yN(t),a=bN(n);if(a){let t=mo(a);if(t)return t;if(i&&i!==`global`&&kN(r,i,a))return SN(e,a,i),i;let n=e.sessionDirectoryById.get(a);if(n&&r.getChild(n))return n;let o=ON(a,r,e);if(o)return o}let o=xN(n);if(o){if(i&&i!==`global`&&AN(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(AN(r,i,o))return i;for(let[e]of r.children)if(AN(r,e,o))return e;let n=jN(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},NN=(e,t,n,r)=>{if(e)return e;if(t){let e=r.messageSessionById.get(t);if(e)return e}if(n&&n===BM&&VM)return VM};function PN(e,t){let n=bN(e)??(e.type===`session.deleted`?e.properties.info?.id:void 0);if(n)return n;let r=xN(e);return r?t.get(r):void 0}function FN(e,t){return e===t}var IN=e=>e.type===`session.created`||e.type===`session.renamed`||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`,LN=(e,t,n)=>{if(!t||t===`global`)return;let r=bN(n);switch(r&&SN(e,r,t),n.type){case`session.created`:case`session.updated`:{let r=n.properties.info;r?.id&&SN(e,r.id,t);return}case`session.deleted`:{let t=n.properties.sessionID;t&&EN(e,t);return}case`message.updated`:{let r=n.properties.info;r?.id&&r.sessionID&&wN(e,r.sessionID,r.id,t);return}case`message.removed`:{let t=n.properties;t.messageID&&TN(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&&wN(e,a,o,t);return}default:return}};async function RN(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,OM(r.question[e])])),o=await B.listPendingQuestions({directories:[e]}),s={};for(let e of o){if(!e?.id||!e.sessionID||!i.has(e.sessionID))continue;let t=s[e.sessionID];t?t.push(e):s[e.sessionID]=[e]}for(let e of Object.keys(s))s[e].sort((e,t)=>e.id<t.id?-1:+(e.id>t.id));for(let[t,n]of Object.entries(s)){let i=new Set((r.question[t]??[]).map(e=>e.id));if(!cN(e,t))for(let r of n){if(i.has(r.id))continue;let n=QM(t,r.id);if(!n||XM.has(n))continue;XM.add(n);let a=r.questions?.[0],o=a?.header?.trim()||`Input needed`,s=a?.question?.trim()||`Agent is waiting for your response`;RC.info(o,{id:`question-${n}`,description:s,action:{label:`Open session`,onClick:()=>jj(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)??``;OM(e.question[r])===i&&delete t[r]}return{question:t}})}catch{}try{let n=new Map(a.map(e=>[e,OM(r.permission[e])])),o=await B.listPendingPermissions({directories:[e]}),s={};for(let e of o){if(!e?.id||!e.sessionID||!i.has(e.sessionID))continue;let t=s[e.sessionID];t?t.push(e):s[e.sessionID]=[e]}for(let e of Object.keys(s))s[e].sort((e,t)=>e.id<t.id?-1:+(e.id>t.id));let c=vj.getState(),l=ye()?Object.keys(s).filter(e=>c.isSessionAutoAccepting(e)):[];if(l.length>0){let e=new Map,t=new Map;await Promise.all(l.flatMap(n=>(s[n]??[]).map(async r=>{try{let i=await B.fetchPermission(r.sessionID,r.id);if(i.state===`ok`){await cx(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=cN(e,t);if(!a)for(let t of n)i.has(t.id)||Nj({permission:t,directory:e,isViewed:a,pendingIds:ZM,show:(e,t)=>RC.info(e,t),openSession:jj})}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)??``;OM(e.permission[r])===i&&delete t[r]}return{permission:t}})}catch{}}}function zN(e,t,n){n?.statusOnly}function BN(e){return e.isFirstConnect&&!e.disconnectedBeforeFirstConnect}function VN(e){return{resyncBlockingRequests:!0,ingestRoutingIndex:!e?.statusOnly}}async function HN(e,t,n,r,i,a){let o=f(),s=u(),c=pN(e,t.getState());await Promise.all([Gh(e,t,c),...oN().filter(t=>yN(t.directory)===yN(e)).map(e=>Mv(e).catch(()=>void 0))]);let l=cj(dN(e,t.getState()),{directory:e,viewedSession:uN(e)});if(l.length>0){let a=B.getScopedSdkClient(e);await Promise.all(l.map(async c=>{let l=mo(c),d=i(c);jn.recovery.materializing({reason:r,directory:e,sessionID:c});let p=await rd(async()=>await a.session.get({sessionID:c})).catch(()=>null);if(o!==f()||s!==u())return;if(p&&FN(d,i(c))){let r=dd(Xe(p));if(l!==mo(c))return;if(r.directory&&yN(r.directory)!==yN(e)){go(c,r.directory,Date.now()),iA(r,ht()),SN(n,c,r.directory);return}t.setState(e=>{let t=e.session.findIndex(e=>e.id===r.id),n=e.session,i=!1,a=e.sessionTotal;return t>=0?jM(n[t],r)||(n=[...e.session],n[t]=r,i=!0):(n=[...e.session],n.push(r),n.sort((e,t)=>kM(e.id,t.id)),r.parentID||(a+=1),i=!0),i?{session:n,sessionTotal:a}:e}),SN(n,r.id,e)}let m=i(c),h=t.getState(),g=h.session_status?.[c],_=h.session_status_observed_at?.[c],v=()=>!FN(m,i(c)),y=m;xh(e,c);try{let r=await wv({directory:e,sessionID:c,limit:Rp(),signal:AbortSignal.timeout(3e4),purpose:`recovery`});if(v()||!Dv({directory:e,sessionID:c,purpose:`recovery`,page:r,capturedLiveRevision:y,liveRevision:i(c),skipPartTypes:SM}).applied)return;let a=Je().getTranscript(V(e,c));CN(n,c,e,a.messageOrder.map(e=>a.messagesByID[e]).filter(e=>!!e)),ey({directory:e,sessionID:c,store:t,transcript:a,isStale:v}),await Kh({directory:e,sessionID:c,store:t,statusBeforePull:g,statusObservedAtBeforePull:_,hasMessages:a.messageOrder.length>0,isStale:v})}catch{}finally{Sh(e,c)}}))}let d=VN(a);d.resyncBlockingRequests&&await RN(e,t,c),d.ingestRoutingIndex&&DN(n,e,t.getState())}function UN(e){try{let t=H(),n=u(),r=f();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>V(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function WN(e){let t=bN(e)??void 0;if(t)return t;if(e.type===`message.updated`)return e.properties.info?.sessionID??void 0}var GN=null,KN=0;function qN(e){return`${e.directory}\0${e.sessionID}\0${e.transport??``}\0${e.generation??``}`}function JN(){KN===0&&(GN={byScope:new Map,routing:[],debug:[]}),KN+=1}function YN(){if(KN===0||(--KN,KN>0))return;let e=GN;if(GN=null,e)try{for(let t of e.byScope.values()){let n=Sn(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=NN(r.sessionID??t.transcriptSessionID,r.messageID??e,t.scope.directory,t.routingIndex);n&&LM(t.scope.directory,n,t.childStores,{reason:r.reason,messageID:r.messageID,partID:r.partID})}}for(let t of e.debug)t.changed?jn.dispatch.eventApplied(t.payloadType,t.transcriptSessionID,t.eventMessageID):jn.dispatch.eventNoChange(t.payloadType,t.transcriptSessionID,t.eventMessageID);for(let t of e.routing)LN(t.routingIndex,t.resolvedDirectory,t.payload)}finally{GN=null,KN=0}}function XN(e,t,n,r,i,a){let o=lA({sessionID:t,resolvedDirectory:n,transport:u(),generation:f(),listCanonicalScopes:UN});if(GN){for(let n of o){let o=qN(n),s=GN.byScope.get(o);s||(s={scope:n,events:[],transcriptSessionID:t,eventMessageIDs:[],childStores:i,routingIndex:a},GN.byScope.set(o,s)),s.events.push(e),s.eventMessageIDs.push(r)}GN.debug.push({payloadType:e.type,transcriptSessionID:t,eventMessageID:r,changed:!1}),GN.routing.push({routingIndex:a,resolvedDirectory:n,payload:e});return}let s=!1;for(let n of o){let o=Sn(n,{type:`sse-event`,event:e})??{applied:!1,changed:!1};o.changed&&(s=!0);let c=o.materialization;if(c){let e=NN(c.sessionID??t,c.messageID??r,n.directory,a);e&&LM(n.directory,e,i,{reason:c.reason,messageID:c.messageID,partID:c.partID})}}s?jn.dispatch.eventApplied(e.type,t,r):jn.dispatch.eventNoChange(e.type,t,r),LN(a,n,e)}var ZN=_A({client:I,identity:()=>({transport:u(),generation:f()}),refreshProjections:async(e,t)=>{if(!t.has(`providers`)&&!t.has(`agents`))return;let n=W.getState(),r=u(),i=f(),a=[...new Set([...Object.keys(n.directoryScoped),...B.getDirectory()?[B.getDirectory()]:[]])].filter(t=>t&&t!==`__global__`&&(!e||R(t)===R(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 QN(e,t,n,r){if(t.type===`session.moved`){let e=t.properties,i=e.sessionID,a=e.location?.directory;if(!i||!a||!go(i,a,e.eventCreated??Date.now(),e.eventSequence))return;let o=f(),s=u();SN(r,i,a),EA(a,t);let c=[...n.children.values()].map(e=>e.getState().session.find(e=>e.id===i)).find(Boolean)??Y.getState().activeSessions.find(e=>e.id===i);c?iA({...c,directory:a,location:{...e.location,directory:a},projectID:e.projectID??c.projectID,subpath:e.subpath},n):$.getState().setSessionDirectory(i,a),B.getSession(i,a).then(e=>{o!==f()||s!==u()||!_o(i,a)||!_o(i,e.directory??a)||iA(e,n)}).catch(()=>{});return}if(ZN.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&&EE(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`){AO();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`&&vj.getState().applySnapshot({sessions:t.sessions})}return}let i=pA(t,e);i&&fA(I,{transport:u(),directory:i});let a=MN(r,e,t,n);if(eN(t,a))return;oj(t,a);let o=t.type===`session.status`||t.type===`session.idle`||t.type===`session.error`?bN(t):void 0,s=o?n.getChild(a)?.getState().session_status[o]?.type??SA.getState().statusById.get(o)?.status??`idle`:void 0;if(EA(a,t),o&&a&&a!==`global`&&s!==(SA.getState().statusById.get(o)?.status??`idle`)&&vU(a,$.getState().availableWorktreesByProject),a===`global`||!a){if(pr(t.type)){let e=WN(t);if(e){XN(t,e,a||`global`,xN(t)??void 0,n,r);return}}let e=lN(),i=dk(t);if(!i)return;if(i.type===`refresh`)e||yk.setState({reload:`pending`});else if(i.type===`project`){let e=yk.getState();yk.setState({projects:fk(e,i.project).projects})}if((t.type===`server.connected`||t.type===`global.disposed`)&&!e){fA(I,{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=bN(t);if(e){let t=ON(e,n,r);t&&(c=n.getChild(t),l=t)}}if(!c){if(pr(t.type)){let e=WN(t);if(e){XN(t,e,l,xN(t)??void 0,n,r);return}}let e=dk(t);if(e?.type===`refresh`)yk.setState({reload:`pending`});else if(e?.type===`project`){let t=yk.getState();yk.setState({projects:fk(t,e.project).projects})}return}if(n.mark(l),t.type===`permission.asked`){let e=tk(t.properties);if(!e)return;if(vj.getState().isSessionAutoAccepting(e.sessionID)){LN(r,l,t),ye()&&cx(e.sessionID,e.id,`once`).catch(()=>void 0);return}let n=c.getState().session.find(t=>t.id===e.sessionID)??Y.getState().activeSessions.find(t=>t.id===e.sessionID);if(n&&!n.parentID){let t=cN(l,e.sessionID);Nj({permission:e,directory:l,isViewed:t,pendingIds:ZM,show:(e,t)=>RC.info(e,t),openSession:jj})}}if(t.type===`permission.replied`){let e=t.properties,n=Mj(e.sessionID,e.requestID);n&&(ZM.delete(n),RC.dismiss(`permission-${n}`))}if(t.type===`question.asked`){let e=nk(t.properties);if(!e)return;let n=e.sessionID,r=c.getState().session.find(e=>e.id===n)??Y.getState().activeSessions.find(e=>e.id===n);if(r&&!r.parentID){let t=QM(n,e.id);if(!cN(l,n)&&t&&!XM.has(t)){XM.add(t);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;RC.info(i,{id:`question-${t}`,description:a,action:{label:`Open session`,onClick:()=>jj(n,l)}})}}}if(t.type===`question.replied`||t.type===`question.rejected`){let e=t.properties,n=QM(e.sessionID,e.requestID);n&&(XM.delete(n),RC.dismiss(`question-${n}`))}if(t.type===`form.created`){let e=rk(t.properties);if(e){let t=e.sessionID,n=c.getState().session.find(e=>e.id===t)??Y.getState().activeSessions.find(e=>e.id===t);if(n&&!n.parentID){let n=QM(t,e.id);if(!cN(l,t)&&n&&!XM.has(n)){XM.add(n);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;RC.info(i,{id:`question-${n}`,description:a,action:{label:`Open session`,onClick:()=>jj(t,l)}})}}}}if(t.type===`form.replied`||t.type===`form.cancelled`){let e=t.properties,n=QM(e.sessionID,e.id??e.requestID);n&&(XM.delete(n),RC.dismiss(`question-${n}`))}if(t.type===`session.execution.started`){let e=t.properties.sessionID;e&&(PD(e),KM.delete(e))}if(t.type===`session.status`){let e=t.properties;e.sessionID&&(e.status?.type===`busy`||e.status?.type===`retry`)&&KM.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:xj(e.error),a=!!(i&&(i.message||i.name));a&&i&&n&&Cj({sessionId:n,directory:l??null,...i});let o=c.getState().session.find(e=>e.id===n)??Y.getState().activeSessions.find(e=>e.id===n);n&&o&&!o.parentID&&(r&&t.type===`session.idle`&&KM.has(n)?KM.delete(n):(MD({directory:l,session:n,time:Date.now(),viewed:!r&&cN(l,n),...a&&i?{type:`error`,error:i}:{type:`turn-complete`}}),t.type===`session.execution.succeeded`&&KM.add(n)))}if(t.type===`session.idle`){let e=bN(t);if(e&&l&&l!==`global`){let t=c.getState().session.find(t=>t.id===e),r=t?t.parentID:null,i=QA({idleSessionID:e,directory:l,parentID:r,activeSessionID:VM,activeDirectory:BM});i.action===`materialize-parent`?LM(l,i.sessionID,n,{reason:`child-session-idle`}):i.action===`materialize-now`?LM(l,i.sessionID,n,{reason:`session-idle`}):i.action===`defer-until-viewed`&&tj(l,i.sessionID)}}let d=c.getState(),p=bN(t)??void 0,m=xN(t)??void 0;if(t.type===`session.created`){let e=t.properties.info;uy(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`)&&gy(l,p,m))return;if(t.type===`session.inbox.enqueued`||t.type===`session.inbox.cancelled`||t.type===`session.inbox.delivered`||t.type===`session.inbox.delivery.changed`){dt({type:t.type,properties:t.properties??null}),LN(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(_k(e,t,{now:Date.now})&&c.setState(e),t.type===`session.revert.committed`){let e=WN(t)??t.properties.sessionID,i=t.properties.to;e&&typeof i==`string`&&i.length>0&&XN(t,e,l,m,n,r)}LN(r,l,t);return}if(pr(t.type)){let e=WN(t);if(!e){LN(r,l,t);return}XN(t,e,l,m,n,r);return}let h={...d};switch(t.type){case`session.created`:case`session.updated`:case`session.deleted`:case`session.renamed`:case`openchamber:session-metadata`:h.session=[...d.session],h.session_status_observed_at={...d.session_status_observed_at},h.permission={...d.permission},h.todo={...d.todo};break;case`session.diff`:h.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`:h.session_status={...d.session_status??{}},h.session_status_observed_at={...d.session_status_observed_at},h.session_error_at={...d.session_error_at},h.session_execution_recovery={...d.session_execution_recovery??{}};break;case`todo.updated`:h.todo={...d.todo};break;case`vcs.branch.updated`:break;case`permission.asked`:case`permission.replied`:h.permission={...d.permission};break;case`question.asked`:case`question.replied`:case`question.rejected`:case`form.created`:case`form.replied`:case`form.cancelled`:h.question={...d.question};break;case`lsp.updated`:h.lsp=[...d.lsp]}let g=_k(h,t,{onSetSessionTodo:(e,t)=>{Vv.getState().setSessionTodos(e,t)},onServerSessionIdle:e=>{$.getState().releaseQueueAbortBlocksForServerIdle(l,e)},now:Date.now}),_=typeof g==`boolean`?g:g.changed,v=typeof g==`boolean`?void 0:g.materialization;if(_){c.setState(h);let e=bN(t)??void 0,n=xN(t)??void 0;jn.dispatch.eventApplied(t.type,e,n)}else{let e=bN(t)??void 0,n=xN(t)??void 0;jn.dispatch.eventNoChange(t.type,e,n)}if(v){let e=NN(v.sessionID??bN(t)??void 0,v.messageID??xN(t)??void 0,l,r);e&&LM(l,e,n,{reason:v.reason,messageID:v.messageID,partID:v.partID})}LN(r,l,t)}var $N=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:opencode-update-available`,{detail:e}))},eP=null,tP=async()=>{let e=m();return(!eP||eP.runtimeKey!==e)&&(eP={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)}),eP.promise},nP=e=>{typeof window>`u`||tP().then(t=>{t||$N(e)})};function rP(e,t,n){return e!==t||n!==!1}function iP(e){let t=W(e=>e.settingsMessageStreamTransport),n=(0,K.useRef)(null);n.current||=new Pk;let r=n.current,i=(0,K.useRef)(e.directory);i.current=e.directory;let a=(0,K.useRef)(e.directory),c=(0,K.useRef)(null);(0,K.useEffect)(()=>{let e=()=>{c.current?.dispose(),a.current=i.current;let e=f(),t=m(),n=B.getSdkClient();c.current=ZA({eligible:e=>YA(e,$.getState().availableWorktreesByProject),isCurrentDirectory:e=>R(e)===R(i.current),isRuntimeCurrent:()=>e===f()&&t===m()&&n===B.getSdkClient(),directoryUse:e=>{if(YM(),R(UM)===e||[...GM.keys()].some(t=>R(t.split(`
|
|
408
|
-
`)[0])===e))return`busy`;let t=[...r.children.entries()].find(([t])=>R(t)===e)?.[1];return XA(e,t?.getState())},checkRemoteUse:(e,t)=>B.checkLocationReleaseUse(e,t),release:(e,t)=>B.releaseLocation(e,t)})};e();let t=s(e);return()=>{t(),c.current?.dispose(),c.current=null}},[r,e.sdk]),(0,K.useEffect)(()=>{let t=a.current;a.current=e.directory,c.current?.directoryChanged(t,e.directory)},[e.directory]);let l=(0,K.useRef)(null);l.current||=vN();let d=l.current,p=(0,K.useRef)(0),h=(0,K.useRef)(new Map),g=(0,K.useRef)(new Map),_=(0,K.useRef)(new Map),v=(0,K.useRef)(new Set),y=(0,K.useRef)(null),b=(0,K.useRef)(!1),x=(0,K.useRef)(!1),S=(0,K.useRef)({directory:e.directory,enabled:e.bootstrapDirectory});S.current={directory:e.directory,enabled:e.bootstrapDirectory};let C=e=>{let t=S.current;return rP(e,t.directory,t.enabled)},w=(0,K.useMemo)(()=>({childStores:r,sdk:e.sdk,directory:e.directory}),[r,e.sdk,e.directory]);(0,K.useEffect)(()=>(nN(r),()=>{nN(null)}),[r]);let T=(0,K.useCallback)((e,t,n)=>{if(zN(e,r.children.get(e),n),!C(e))return;let i=r.children.get(e);if(!i)return;let a=v.current;a.has(e)||(n?.statusOnly||_.current.set(e,Date.now()),a.add(e),HN(e,i,d,t,t=>g.current.get(JM(e,t))??0,n).catch(()=>{}).finally(()=>{a.delete(e)}))},[r,d]);(0,K.useEffect)(()=>{ye()||vj.getState().hydrate().catch(()=>void 0)},[e.sdk]),(0,K.useEffect)(()=>{let t=new Set;r.configure({onBootstrap:n=>{if(!C(n)||t.has(n))return;t.add(n);let i=r.getChild(n);i&&(async()=>{if(await ji(),!C(n))return;let t=yk.getState();await nA({directory:n,sdk:e.sdk,getState:()=>i.getState(),set:e=>{i.setState(e),e.session&&DN(d,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,d]),(0,K.useEffect)(()=>{let t=++bM;vM=!0;let n=yk.getState().actions;return ji().then(()=>{if(bM===t)return tA(e.sdk,e=>{bM===t&&n.set(e)})}).then(()=>{bM===t&&(yM=Date.now())}).finally(()=>{bM===t&&(vM=!1)}),()=>{bM===t&&(vM=!1)}},[e.sdk]),(0,K.useEffect)(()=>{let n=_O({sdk:e.sdk,transport:t,routeDirectory:(e,t)=>MN(d,e,t,r),onFlushStart:()=>{JN()},onFlushEnd:()=>{YN()},onNormalizedEvent:(e,t)=>{RM(e,t,r);let n=t.domainActivityHint?.sessionID??t.admissionHint?.sessionID;n&&e===BM&&n===VM&&(t.domainActivityHint||t.admissionHint)&&h.current.set(JM(e,n),Date.now())},onEvent:(e,t)=>{let n=PN(t,d.messageSessionById)??null;if(n&&IN(t)){let t=JM(e,n);g.current.set(t,(g.current.get(t)??0)+1)}if(n&&e===BM&&n===VM&&(t.type===`message.updated`||t.type===`message.removed`||t.type===`message.part.updated`||t.type===`message.part.removed`||t.type===`message.part.delta`)&&h.current.set(JM(e,n),Date.now()),n&&e===BM&&n===VM&&t.type===`session.status`){let r=t.properties.status;if(r?.type===`busy`||r?.type===`retry`){let t=JM(e,n);h.current.has(t)||h.current.set(t,Date.now())}r?.type===`idle`&&h.current.delete(JM(e,n))}if(n&&(t.type===`session.idle`||t.type===`session.deleted`)&&h.current.delete(JM(e,n)),_N(e,t),t.type===`installation.update-available`){let e=typeof t.properties?.version==`string`?t.properties.version:``;e&&nP({version:e})}QN(e,t,r,d)},onTransportActivity:()=>{let e=Date.now();p.current=e,_p(e)},onReconnect:()=>{ZN.event(`server.connected`),W.setState({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let e=!b.current;b.current=!0;let t=BN({isFirstConnect:e,disconnectedBeforeFirstConnect:x.current});for(let e of r.children.keys())T(e,`stream-reconnect`,{statusOnly:t})},onDisconnect:e=>{b.current||(x.current=!0);let{hasEverConnected:t}=W.getState();W.setState({isConnected:!1,connectionPhase:t?`reconnecting`:`connecting`,lastDisconnectReason:e})},onRecoveryContextCaptured:e=>{In({lastEventID:e.lastEventId,reason:e.reason,generation:e.runtimeGeneration})},onCompensation:e=>{AO(),Un(e)},onTransportSwitch:()=>{let{hasEverConnected:e}=W.getState();W.setState({isConnected:!1,connectionPhase:e?`reconnecting`:`connecting`});for(let e of r.children.keys())T(e,`transport-switch`)}});y.current=n.reconnect;let i=vp(n.reconnect);return()=>{i(),y.current===n.reconnect&&(y.current=null),n.cleanup()}},[e.sdk,r,d,t,T]),(0,K.useEffect)(()=>{let e=!1,t=!1,n=()=>{t||e||(t=!0,Promise.resolve().then(()=>{if(e)return;let t=Date.now();for(let[e,n]of r.children.entries()){let r=n.getState();if(sj(r).length===0){_.current.delete(e);continue}let i=_.current.get(e)??0;mN(p.current,i,t)&&(y.current?.(`active_stream_stale`),T(e,`stale-status-resync`));let a=uN(e);if(!a)continue;let o=r.session_status?.[a.sessionId],s=JM(e,a.sessionId),c=h.current.get(s);if((o?.type===`busy`||o?.type===`retry`)&&!c){h.current.set(s,t);continue}if(o?.type===`idle`||!o){h.current.delete(s);continue}hN({isViewed:!0,status:o,lastTransportActivityAt:p.current,lastDomainActivityAt:c??0,lastFullResyncAt:i,now:t})&&T(e,`domain-stale-resync`)}}).finally(()=>{t=!1}))},i=setInterval(n,CM);return n(),()=>{e=!0,clearInterval(i)}},[r,T]),(0,K.useEffect)(()=>{let t;if(e.directory){let n=r.ensureChild(e.directory,{bootstrap:rP(e.directory,e.directory,e.bootstrapDirectory)}),i=Rj(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)},Pj)),DN(d,e.directory,n.getState())}return()=>{t&&clearTimeout(t)}},[e.directory,e.bootstrapDirectory,r,d]);let E=(0,K.useRef)(null),D=(0,K.useRef)({transport:u(),generation:f()});return(0,K.useEffect)(()=>{if(E.current)return;let e=Ev({childStores:r,getViewedSession:()=>oN()[0]??null,getViewedSessions:()=>oN()});return E.current=e,D.current={transport:u(),generation:f()},()=>{let e=D.current;yn(`provider-dispose`);let t=E.current?.repository;t&&t.purgeGeneration(e.transport,e.generation),E.current?.destroy(),E.current=null}},[r]),(0,K.useEffect)(()=>($e(e.sdk,r,e.directory,(e,t)=>{SN(d,e,t)}),Dy(e.sdk,r,()=>B.getDirectory()||e.directory),Fh((e,t,n)=>{let r=new Set(n),i=CD(e)??e,a={...t};for(let[e,t]of SA.getState().statusById)r.has(e)||t.directory===i&&(a[e]={type:t.status});DA(e,a,n)}),()=>{Fh(void 0)}),[e.sdk,e.directory,r,d]),(0,K.useEffect)(()=>s(e=>{if(!e.transportIdentityChanged){D.current={transport:u(),generation:f()};return}let t=D.current;yn(`runtime-switch`);let n=E.current?.repository;n&&n.purgeGeneration(t.transport,t.generation),D.current={transport:u(),generation:f()}}),[]),(0,K.useEffect)(()=>o(()=>{yp(`reasoning_projection`),(E.current?.repository)?.resetReasoningProjection?.();let e=oN();for(let t of e)ar(t.directory,t.sessionID).catch(()=>void 0)}),[]),(0,K.useEffect)(()=>{if(!e.directory)return;let t=r.getChild(e.directory);if(!t)return;let n=e.directory,i=()=>{cA(t.getState(),{directory:n,store:t})};i();let a=t.subscribe(()=>{i()}),o=[],s=()=>{for(let e of o)e();o=[];let e=H()??Et(n,t),r=t.getState().session_status??{};for(let[t,a]of Object.entries(r))!a||a.type===`idle`||o.push(e.subscribe(V(n,t),i));i()};s();let c=Be(s);return()=>{c(),a();for(let e of o)e()}},[e.directory,r]),(0,IO.jsxs)(eM.Provider,{value:w,children:[(0,IO.jsx)(WO,{}),e.children]})}function aP(e,t){let n=(0,U.c)(4),r=tM(),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 oP(e,t){let n=aP(t);return je(n,e)}function sP(e){let{childStores:t}=tM(),n=e.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),r=(0,K.useRef)(e);r.current=e;let i=(0,K.useCallback)(e=>n?Yj(t,r.current,e):()=>void 0,[t,n]),a=(0,K.useCallback)(()=>n?Jj(t,r.current):``,[t,n]);return K.useSyncExternalStore(i,a,a)}function cP(){let e=(0,U.c)(2),{childStores:t}=tM(),n;return e[0]===t?n=e[1]:(n=e=>qj(t,e),e[0]=t,e[1]=n),n}function lP(e,t,n,r){let i=tM(),a=r??i.directory,o=aP(a);return _n(e,a,o,t,n)}function uP(e,t){let n=tM(),r=t??n.directory,i=aP(r);return un(e,r,i)}function dP(e,t){let n=tM(),r=t??n.directory,i=aP(r);return Vn(e,r,i)}function fP(e,t){let n=(0,U.c)(8),r=tM(),i=t??r.directory,a=aP(i),o=(0,K.useRef)(void 0),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(Vt(),!e){o.current=void 0;return}let t=(H()??Et(i,a)).getRequestState?.(V(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 pP;let n=(H()??Et(i,a)).subscribe(V(i,e),()=>{t()}),r=Be(()=>{n(),o.current=void 0,n=(H()??Et(i,a)).subscribe(V(i,e),()=>{t()}),t()});return()=>{r(),n()}},n[4]=e,n[5]=a,n[6]=i,n[7]=l):l=n[7];let u=l;return K.useSyncExternalStore(u,c,c)}function pP(){}function mP(e,t,n){let r=tM(),i=t??r.directory,a=aP(i);return fn(e,i,a,n)}function hP(e,t){let n=(0,U.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=aP(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return tf(i.getState(),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):gP,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return K.useSyncExternalStore(c,o,o)}function gP(){}function _P(e,t){let n=(0,U.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=aP(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return nf(i.getState(),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):vP,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return K.useSyncExternalStore(c,o,o)}function vP(){}function yP(e,t){let n=(0,U.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=aP(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()}):bP,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return K.useSyncExternalStore(c,o,o)}function bP(){}function xP(e,t){let n=(0,U.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=aP(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):SP,n[4]=r,n[5]=a,n[6]=c):c=n[6];let l=c;return K.useSyncExternalStore(l,s,s)}function SP(){}function CP(e,t,n){let r=(0,U.c)(6),i=aP(t,n),a;r[0]!==e||r[1]!==i?(a=()=>e?i.getState().permission[e]??CF:CF,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):wP,r[3]=e,r[4]=i,r[5]=s):s=r[5];let c=s;return K.useSyncExternalStore(c,o,o)}function wP(){}function TP(e,t,n){let r=(0,U.c)(2),i=aP(t,n),a;return r[0]===e?a=r[1]:(a=t=>e?t.question[e]??wF:wF,r[0]=e,r[1]=a),je(i,a)}function EP(e){return oP(DP,e)}function DP(e){return e.session}var OP=e=>e.permission,kP=e=>e.question;function AP(e){if(!e)return lf;let t=[];for(let n of e.messageOrder){let r=e.partsByMessageID[n];if(r)for(let e of cf(r))t.push(e)}return t.length===0?lf:t}function jP(){let e=null;return t=>{let n=AP(t);if(n.length===0)return lf;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 MP(e,t){let n=tM(),r=t??n.directory,i=aP(r),a=(0,K.useRef)(jP()).current,o=(0,K.useCallback)(()=>{if(!e)return lf;try{let t=H()?.getTranscript(V(r,e));return a(t)}catch{return lf}},[a,e,r]),s=(0,K.useCallback)(t=>{if(!e)return()=>void 0;let n=(H()??Et(r,i))?.subscribe(V(r,e),()=>{t()})??(()=>void 0),a=Be(()=>{n(),n=(H()??Et(r,i))?.subscribe(V(r,e),()=>{t()})??(()=>void 0),t()});return()=>{a(),n()}},[e,i,r]);return K.useSyncExternalStore(s,o,o)}function NP(e,t,n,r){let i=(0,U.c)(7),a=MP(e,t),o;i[0]===r?o=i[1]:(o={sessionID:null,sessions:null,requestsBySession:null,dispatchEdges:null,result:r},i[0]=r,i[1]=o);let s=(0,K.useRef)(o),c;return i[2]!==a||i[3]!==r||i[4]!==n||i[5]!==e?(c=t=>{let i=n(t),o=s.current;if(o.sessionID===e&&o.sessions===t.session&&o.requestsBySession===i&&o.dispatchEdges===a)return o.result;let c=ff(t.session,i,e,r,a),l=df(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],oP(c,t)}function PP(e,t){return NP(e,t,OP,CF)}function FP(e,t){return NP(e,t,kP,wF)}function IP(e,t){let n=(0,U.c)(9),r=LP(e,t),i=LP(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=Y(a),s=r??i??o,c=s?.parentID??null,l=LP(c,t),u=LP(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=Y(d),p=l??u??f,m;return n[4]!==s||n[5]!==t||n[6]!==p||n[7]!==e?(m=Zj(e,s,p,t),n[4]=s,n[5]=t,n[6]=p,n[7]=e,n[8]=m):m=n[8],m}function LP(e,t){let n=(0,U.c)(7),{childStores:r}=tM(),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):qk(nM(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):qk(nM(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(zP,i)}return t?r.ensureChild(t).subscribe(e):r.subscribeAllSelected(RP,e)},n[4]=r,n[5]=t,n[6]=o):o=n[6];let s=o;return K.useSyncExternalStore(s,a,a)}function RP(e){return e.session}function zP(e){return e.session}function BP(e){let t=Xj(e,LP(e),Y((0,K.useCallback)(t=>e?t.activeSessions.find(t=>t.id===e)??null:null,[e]))),n=(0,K.useRef)(null),[,r]=K.useState(0);if((0,K.useEffect)(()=>{if(!e){n.current=null;return}if(t){n.current={sessionID:e,session:t,expiresAt:null};return}let i=n.current;if(!i||i.sessionID!==e){n.current=null;return}let a=i.expiresAt??Date.now()+2e3;i.expiresAt=a;let o=a-Date.now(),s=window.setTimeout(()=>{n.current?.sessionID===e&&(n.current=null),r(e=>e+1)},o);return()=>window.clearTimeout(s)},[t,e]),t)return t;let i=n.current;return i&&i.sessionID===e&&(i.expiresAt===null||i.expiresAt>Date.now())?i.session:null}function VP(e,t){return LP(e,t)?.directory??void 0}function HP(){return tM().directory}function UP(){return tM().childStores}var WP=[],GP=40,KP=4,qP=30,JP=4,YP=30,XP=new WeakMap,ZP=(e,t,n)=>`${e}\u0000${+!!t}\u0000${n??``}`,QP=e=>{let t=XP.get(e);return t||(t=new Map,XP.set(e,t)),t},$P=(e,t,n,r)=>{let i=XP.get(e);if(!i)return;let a=ZP(t,n,r),o=i.get(a);if(o)return i.delete(a),i.set(a,o),o},eF=(e,t)=>{if(!t.sessionID)return;let n=QP(e),r=ZP(t.sessionID,t.suspendPartUpdates,t.suspendedPartUpdatesMessageID),i=ye()?qP:Ap()?YP:null;if(i!==null&&t.list.length>i){n.delete(r);return}n.delete(r),n.set(r,t);let a=ye()?KP:Ap()?JP:GP;for(;n.size>a;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}};function tF(e,t){let n=XP.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 nF=`The following tool was executed by the user`,rF=(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(nF)}):!1};function iF(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 aF=(e,t)=>{for(let n of e.list){let r=t.parts[n.info.id]??SF;if(e.suspendPartUpdates){let i=e.suspendedPartUpdatesMessageID;if((!i||n.info.id===i)&&!rF(t.parts,n.info,r)&&!iF(n.parts,r))continue}if(Pn(n.parts,r,n.info)!==n.parts)return!1}return!0},oF=(e,t,n,r)=>{let i=$P(e,t.sessionID,n,r);if(i&&i.sourceMessages===t.messages&&i.revertMessageID===t.revertMessageID&&i.suspendPartUpdates===n&&i.suspendedPartUpdatesMessageID===r&&aF(i,t))return i};function sF(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?kn(i,r):n.length===0?xF:i.slice(),revertMessageID:r}}function cF(e,t,n=!1,r){let i=e.sessionID,{sourceMessages:a,visibleMessages:o,revertMessageID:s}=sF(e,t),c=new Map,l=o.map(i=>{let a=t?.byId.get(i.id),o=e.parts[i.id]??SF,s=n&&a&&(!r||i.id===r)&&!rF(e.parts,i,o)&&!iF(a.parts,o)?a.parts:Pn(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 lF(e,t){let n=tM(),r=t??n.directory,i=aP(r);return On(e,r,i)}function uF(e,t){let n=tM(),r=t??n.directory,i=aP(r);return Qn(e,r,i)}function dF(e,t){let n=tM(),r=t??n.directory,i=aP(r);return zn(e,r,i)}function fF(e,t){let n=(0,U.c)(8),r=tM(),i=t??r.directory,a=aP(i),o=(0,K.useRef)(Hj),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(Vt(),!e)return o.current=Hj,Hj.history;let t=(H()??Et(i,a)).getTranscript(V(i,e)),n=a.getState().session.find(t=>t.id===e)?.revert?.messageID,r=Kj({sessionID:e,messages:lt(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 pF;let n=(H()??Et(i,a)).subscribe(V(i,e),()=>{t()}),r=Be(()=>{n(),n=(H()??Et(i,a)).subscribe(V(i,e),()=>{t()}),t()}),o=a.subscribe(()=>{t()});return()=>{r(),n(),o()}},n[4]=e,n[5]=a,n[6]=i,n[7]=l):l=n[7];let u=l;return K.useSyncExternalStore(u,c,c)}function pF(){}var mF=(e,t,n)=>({sessionID:e,directory:t,store:n,bindingRevision:Vt(),transportIdentity:u(),generation:f()}),hF=(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 gF(e,t,n){let r=(0,U.c)(23),i=tM(),a=t??i.directory,o=aP(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:xF,visibleMessages:xF,revertMessageID:void 0,suspendPartUpdates:l,suspendedPartUpdatesMessageID:u,list:d,byId:f},r[2]=e,r[3]=l,r[4]=u,r[5]=p):p=r[5];let m=(0,K.useRef)(p),h=(0,K.useRef)(null);n?.suspendPartUpdates,n?.suspendPartUpdatesForMessageId;let g;r[6]!==n?.suspendPartUpdates||r[7]!==n?.suspendPartUpdatesForMessageId||r[8]!==e||r[9]!==o||r[10]!==a?(g=()=>{if(!e)return WP;let t=(H()??Et(a,o)).getTranscript(V(a,e)),r=!!n?.suspendPartUpdates,i=n?.suspendPartUpdatesForMessageId??void 0,s=m.current.sessionID===e?m.current.sourceMessages:$P(o,e,r,i)?.sourceMessages,c=lt(t,s),l=o.getState().session.find(t=>t.id===e)?.revert?.messageID,u={sessionID:e,messages:c,parts:t.partsByMessageID,revertMessageID:l},d=oF(o,u,r,i);if(d)return m.current=d,d.list;let f=cF(u,m.current.sessionID===e?m.current:$P(o,e,r,i),r,i);return m.current=f,eF(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=mF(e,a,o);if(!e)return h.current={scope:t,list:WP},WP;if(!c){let e=h.current;if(e&&hF(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 _F;if(!c){let e=Be(()=>{t()}),n=s(()=>{t()});return()=>{e(),n()}}jt(a,e);let n=(H()??Et(a,o)).subscribe(V(a,e),()=>{t()}),r=Be(()=>{n(),n=(H()??Et(a,o)).subscribe(V(a,e),()=>{t()}),nn(a,e),jt(a,e),t()}),i=s(()=>{t()}),l=o.subscribe(()=>{t()});return()=>{r(),i(),n(),l()}},r[18]=c,r[19]=e,r[20]=o,r[21]=a,r[22]=b):b=r[22];let x=b;return K.useSyncExternalStore(x,y,y)}function _F(){}var vF=new Set;function yF(e,t){let n=HP(),r=t??n,i=aP(r),a=K.useRef(0);K.useEffect(()=>{if(!e)return;let t=H()??Et(r,i),n=V(r,e),o=t.getTranscript(n),s=t.hasSession?.(n);if(Wn(o,{resolved:s===!0||void 0}).renderable){ey({directory:r,sessionID:e,store:i});return}if(!i.getState().session.some(t=>t.id===e))return;let c=`${r}:${e}`;if(vF.has(c))return;let l=++a.current,u=()=>l!==a.current;vF.add(c),(async()=>{try{if(H())try{if(await ar(r,e),u())return;ey({directory:r,sessionID:e,store:i,isStale:u})}catch{if(u())return;await zM(r,e,i,{reason:`ensure-session-messages`,isStale:u})}else await zM(r,e,i,{reason:`ensure-session-messages`,isStale:u})}catch{}finally{vF.delete(c)}})()},[e,i,r])}function bF(e,t){let n=tM(),r=t??n.directory,i=aP(r);return Yn(e,r,i)}var xF=[],SF=[],CF=[],wF=[],TF=[],EF=()=>({requestID:le(),queueItemID:le(),operationID:le(),messageID:Ce(`msg`)}),DF=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}:{}}),OF,kF=(e,t)=>{let n=e.establishing;if(!n||t&&n.draftID!==t||n.pending.length===0)return TF;if(OF&&OF.pending===n.pending&&OF.draftID===t)return OF.items;let r=n.pending.map(DF);return OF={pending:n.pending,draftID:t,items:r},r},AF=e=>t=>t.flights[e]??null,jF=e=>t=>!!e&&t.establishing?.draftID===e,MF=e=>t=>kF(t,e),NF=(e,t)=>({flightKind:e,inFlight:e!==null,establishing:t}),PF=ke()((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??EF(),o=[...n.attachments??[]],s={kind:`pending-admission`,requestID:a.requestID,queueItemID:a.queueItemID,operationID:a.operationID,messageID:a.messageID||Ce(`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})),FF=ke((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}}})),X=class extends Error{status;code;constructor(e,t){super(`Message queue server request failed: ${t}`),this.name=`MessageQueueServerError`,this.status=e,this.code=t}},IF=`/api/openchamber/message-queue`,LF=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`]),RF=new Set([`revision`,`scopeID`,`queueItemID`,`rowVersion`,`removedQueueItemID`,`projectDirectory`,`token`,`state`,`scopeCount`,`statusCounts`]),zF=new Set([`scopeID`,`revision`,`directory`,`sessionID`,`worktreeState`,`itemCount`]),BF=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Z=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,VF=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),HF=async e=>{if(e.status===501)return`unavailable`;try{let t=await e.json();if(BF(t)&&typeof t.code==`string`&&LF.has(t.code))return t.code}catch{}return`unavailable`},UF=async(e,t)=>{let n;try{n=await _(e,t)}catch{throw new X(0,`unavailable`)}if(!n.ok)throw new X(n.status,await HF(n));try{return await n.json()}catch{throw new X(n.status,`unavailable`)}},WF=()=>{throw new X(200,`unavailable`)},GF=e=>BF(e)&&Object.getPrototypeOf(e)===Object.prototype,KF=e=>{if(!(!GF(e)||typeof e.text!=`string`||!Array.isArray(e.references)||e.references.some(e=>!GF(e))))return{text:e.text,references:e.references.map(e=>({...e}))}},qF=e=>Array.isArray(e)&&e.every(GF)?e.map(e=>({...e})):void 0,JF=e=>{if(!(!BF(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}}},YF=e=>BF(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,XF=e=>{if(!Array.isArray(e)||e.length===0||e.length>129)return null;let t=[],n=0;for(let r of e){if(!GF(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},ZF=e=>{if(!Array.isArray(e)||e.length>64)return null;let t=new Set,n=[];for(let r of e){if(!GF(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},QF=e=>{if(!GF(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))||!GF(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},$F=e=>Array.isArray(e)&&e.map(QF).every(e=>e!==null)?e.map(QF):null,eI=e=>{if(!BF(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:KF(e.composerDocument),n=e.composerMentions===void 0?void 0:qF(e.composerMentions),r=e.sendConfig===void 0?void 0:JF(e.sendConfig),i=e.deliveryTarget===void 0?{kind:`primary`}:YF(e.deliveryTarget),a=e.deliveryParts===void 0?void 0:XF(e.deliveryParts),o=e.syntheticParts===void 0?void 0:ZF(e.syntheticParts),s=e.attachmentIssues===void 0?void 0:qF(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:$F(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}:{}}},tI=e=>{if(!BF(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(eI);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},nI=e=>BF(e)&&Object.keys(e).every(e=>zF.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,rI=e=>BF(e)&&typeof e.projectDirectory==`string`&&VF(e.orderedPaths)&&Z(e.revision)?{projectDirectory:e.projectDirectory,orderedPaths:e.orderedPaths,revision:e.revision}:null,iI=e=>{if(!BF(e)||!Z(e.revision)||!Array.isArray(e.scopes)||!Array.isArray(e.worktreeOrders))return WF();let t=e.scopes.map(nI),n=e.worktreeOrders.map(rI);return!t.every(e=>e!==null)||!n.every(e=>e!==null)?WF():{revision:e.revision,scopes:t,worktreeOrders:n}},aI=e=>!BF(e)||!Z(e.revision)||Object.keys(e).some(e=>!RF.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&&(!BF(e.statusCounts)||Object.values(e.statusCounts).some(e=>!Z(e)))?WF():{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}:{},...BF(e.statusCounts)?{statusCounts:e.statusCounts}:{}},oI=(e,t,n)=>({method:e,headers:{"Content-Type":`application/json`},body:JSON.stringify(t),signal:n}),sI=(e,t)=>{let{signal:n,...r}=t;return oI(e,r,n)},cI=async e=>iI(await UF(IF,{signal:e})),lI=new Map,uI=(e,t)=>`${c().api(IF)}\u0000${e}\u0000${t.offset??``}\u0000${t.limit??``}\u0000${t.expectedRevision??``}`,dI=async(e,t={})=>{if(t.signal?.aborted)throw new X(0,`unavailable`);let n=uI(e,t),r=lI.get(n);if(r){let e=await r;if(t.signal?.aborted)throw new X(0,`unavailable`);return e}let i=(async()=>tI(await UF(`${IF}/scopes/${encodeURIComponent(e)}`,{query:{offset:t.offset,limit:t.limit,expectedRevision:t.expectedRevision},signal:t.signal}))??WF())().finally(()=>{lI.get(n)===i&&lI.delete(n)});return lI.set(n,i),i},fI=15e3,pI=(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:fI,a=!1,o=e=>{a||(a=!0,clearTimeout(l),c(),r?.removeEventListener(`abort`,s),n(e))},s=()=>o(`aborted`),c=Ei(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=fi(`message-queue-changed`);if(u!==void 0&&u>e){o(`tip`);return}r?.addEventListener(`abort`,s,{once:!0})}),mI=async e=>{let t=await UF(`${IF}/status`,{signal:e}),n=new Set([`capability`,`authority`,`generation`,`activationEpoch`,`activatedAt`,`manifestHash`,`protocol`,`worker`]);return!BF(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&&(!BF(t.worker)||Object.keys(t.worker).some(e=>e!==`paused`&&e!==`active`)||typeof t.worker.paused!=`boolean`||!Z(t.worker.active))?WF():{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}:{},...BF(t.worker)?{worker:{paused:t.worker.paused,active:t.worker.active}}:{}}},hI=(e,t)=>Object.keys(e).length===t.length&&Object.keys(e).every(e=>t.includes(e)),gI=e=>{let t=[`revision`,`importID`,`state`,`duplicate`,`manifestHash`,`commit`];if(!BF(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 WF();let n=e.commit===void 0?void 0:yI(e.commit);return e.commit!==void 0&&!n?WF():{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}:{}}},_I=e=>!BF(e)||!hI(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`?WF():{revision:e.revision,importID:e.importID,staged:!0,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{}},vI=e=>!BF(e)||!hI(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)?WF():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,state:`sealed`,itemCount:e.itemCount},yI=e=>!BF(e)||!hI(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)?WF():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,generation:e.generation,activationEpoch:e.activationEpoch,added:e.added},bI=e=>yI(e),xI=e=>yI(e),SI=(e,t)=>!BF(e)||!hI(e,[`authority`,`generation`,`revision`])||e.authority!==t||!Z(e.generation)||!Z(e.revision)?WF():{authority:t,generation:e.generation,revision:e.revision},CI=async e=>gI(await UF(`${IF}/imports`,sI(`POST`,e))),wI=async(e,t)=>{let n=await UF(`${IF}/imports/${encodeURIComponent(e)}`,{signal:t});if(!BF(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 WF();let r=n.staged.map(e=>BF(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:yI(n.commit);return!r.every(e=>e!==null)||n.commit!==void 0&&!i?WF():{state:n.state,...typeof n.manifestHash==`string`?{manifestHash:n.manifestHash}:{},itemCount:n.itemCount,staged:r,...i?{commit:i}:{}}},TI=async(e,t)=>_I(await UF(`${IF}/imports/${encodeURIComponent(e)}/items`,sI(`POST`,t))),EI=async(e,t)=>vI(await UF(`${IF}/imports/${encodeURIComponent(e)}/seal`,sI(`POST`,t))),DI=async(e,t)=>bI(await UF(`${IF}/imports/${encodeURIComponent(e)}/activate`,sI(`POST`,t))),OI=async(e,t)=>xI(await UF(`${IF}/imports/${encodeURIComponent(e)}/late-commit`,sI(`POST`,t))),kI=async e=>SI(await UF(`${IF}/authority/pause`,sI(`POST`,e)),`paused`),AI=async e=>SI(await UF(`${IF}/authority/resume`,sI(`POST`,e)),`active`),jI=async(e={})=>{let t=await UF(`${IF}/attachments/uploads`,sI(`POST`,e));return!BF(t)||typeof t.uploadID!=`string`||typeof t.uploadToken!=`string`||!Z(t.expiresAt)?WF():{uploadID:t.uploadID,uploadToken:t.uploadToken,expiresAt:t.expiresAt}},MI=async(e,t,n,r)=>{let i;try{i=await _(`${IF}/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 X(0,`unavailable`)}if(!i.ok)throw new X(i.status,await HF(i))},NI=e=>!BF(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)?WF():{revision:e.revision,scopeID:e.scopeID,queueItemID:e.queueItemID,rowVersion:e.rowVersion,token:e.token,expiresAt:e.expiresAt,generation:e.generation},PI=e=>!BF(e)||typeof e.queueItemID!=`string`||typeof e.token!=`string`||!Z(e.generation)||!Z(e.expiresAt)?WF():{queueItemID:e.queueItemID,token:e.token,generation:e.generation,expiresAt:e.expiresAt},FI=async(e,t)=>NI(await UF(`${IF}/items/${encodeURIComponent(e)}/reserve`,sI(`POST`,t))),II=async(e,t)=>{await UF(`${IF}/items/${encodeURIComponent(e)}/release`,sI(`POST`,t))},LI=async(e,t)=>PI(await UF(`${IF}/items/${encodeURIComponent(e)}/edit-reservations/${encodeURIComponent(t.token)}/renew`,sI(`POST`,t))),RI=async(e,t)=>aI(await UF(`${IF}/items/${encodeURIComponent(e)}/reserved-remove`,sI(`DELETE`,t))),zI=async(e,t,n)=>{let r;try{r=await _(`${IF}/items/${encodeURIComponent(e)}/attachments/${encodeURIComponent(t.attachmentID)}/content`,{signal:n})}catch{throw new X(0,`unavailable`)}if(!r.ok)throw new X(r.status,await HF(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 X(r.status,`unavailable`);let s;try{s=await r.blob()}catch{throw new X(r.status,`unavailable`)}if(s.size!==t.size)throw new X(r.status,`unavailable`);let c=new Blob([s],{type:i});return c.type===i?c:Object.defineProperty(c,"type",{value:i})},BI=async e=>aI(await UF(`${IF}/items`,sI(`POST`,e))),VI=async(e,t)=>aI(await UF(`${IF}/items/${encodeURIComponent(e)}`,sI(`PATCH`,t))),HI=async(e,t)=>aI(await UF(`${IF}/items/${encodeURIComponent(e)}/send`,sI(`POST`,t))),UI=async(e,t)=>aI(await UF(`${IF}/items/${encodeURIComponent(e)}`,sI(`DELETE`,t))),WI=async(e,t)=>aI(await UF(`${IF}/scopes/${encodeURIComponent(e)}/order`,sI(`PUT`,t))),GI=async(e,t)=>rI(await UF(`${IF}/worktrees/order`,{query:{projectDirectory:e},signal:t}))??WF(),KI=async e=>aI(await UF(`${IF}/worktrees/order`,sI(`PUT`,e))),qI=(e=u())=>L.messageQueue.snapshot(e),JI=(e=u())=>L.messageQueue.status(e),YI=(e,t,n=u())=>L.messageQueue.scope(e,t,n),XI=(e=u())=>({queryKey:JI(e),queryFn:({signal:e})=>mI(e),retry:!1,staleTime:3e4}),ZI=(e=u())=>({queryKey:qI(e),queryFn:({signal:e})=>cI(e),staleTime:5e3}),QI=(e=I,t=u())=>e.fetchQuery(XI(t)),$I=(e=I,t=u())=>e.fetchQuery(ZI(t)),eL=async(e=I,t=u())=>e.fetchQuery({...XI(t),staleTime:0}),tL=async(e=I,t=u())=>e.fetchQuery({...ZI(t),staleTime:0}),nL=(e,t,n=u())=>{e.setQueryData(YI(t.scopeID,t.revision,n),{pages:[t],pageParams:[0]})},rL=(e,t,n=u())=>{e.setQueryData(JI(n),t)},iL=(e,t,n=u())=>{e.setQueryData(qI(n),t)},aL=(e,t,n,r=u())=>{let i=e.getQueryData(YI(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},oL=(e,t=u())=>e.removeQueries({queryKey:[t,`messageQueue`,`scope`],exact:!1}),sL=(e,t,n=u())=>e.removeQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),cL=(e,t,n=u())=>e.invalidateQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),lL=`openchamber_message_queue_ledger_v4`,uL=`message-queue-store`,dL={scopes:128,totalItems:2048,attachmentsPerItem:64,issuesPerItem:64,string:8192,content:2e5,dataURL:26214400,bytes:26214400},fL=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,pL=(e,t)=>Object.keys(e).every(e=>t.includes(e)),mL=(e,t=dL.string)=>typeof e==`string`&&e.length>0&&e.length<=t,hL=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,gL=e=>JSON.parse(JSON.stringify(e)),_L=(e,t,n,r)=>{let i=fL(t)?t:{};return{...e?{scopeKey:e}:{},...mL(i.queueItemID)?{queueItemID:i.queueItemID}:{},...mL(i.operationID)?{operationID:i.operationID}:{},path:n,reason:r}},vL=e=>e.state===`bound`?`bound:${JSON.stringify([e.transportIdentity,e.directory,e.sessionID])}`:`unbound-legacy:${JSON.stringify([e.sessionID])}`,yL=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=xL(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&&vL(n)===e?n:void 0},bL=()=>({version:4,queues:{},migration:{v3State:`pending`}}),xL=e=>!fL(e)||!mL(e.state)?void 0:e.state===`bound`&&pL(e,[`state`,`transportIdentity`,`directory`,`sessionID`])&&mL(e.transportIdentity)&&mL(e.directory)&&mL(e.sessionID)?{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID}:e.state===`unbound-legacy`&&pL(e,[`state`,`sessionID`])&&mL(e.sessionID)?{state:`unbound-legacy`,sessionID:e.sessionID}:void 0,SL=(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}},CL=[`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`serverPath`,`vscodePath`,`vscodeSource`],wL=e=>{if(!mL(e.attachmentID)||!mL(e.occurrenceRefID)||!SL(e.occurrenceRefID,e.attachmentID)||!mL(e.filename)||typeof e.mimeType!=`string`||e.mimeType.length>dL.string||!hL(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`&&mL(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&&mL(e.vscodePath)&&(e.vscodeSource===`file`||e.vscodeSource===`selection`))return{...t,source:`vscode`,vscodePath:e.vscodePath,vscodeSource:e.vscodeSource}},TL=e=>{if(!fL(e)||!pL(e,[...CL,`version`,`locator`])||e.version!==1)return;let t=wL(e);if(!t||!fL(e.locator))return;let n=e.locator.kind===`blob`&&pL(e.locator,[`kind`,`blobID`])&&mL(e.locator.blobID)?{kind:`blob`,blobID:e.locator.blobID}:e.locator.kind===`url`&&pL(e.locator,[`kind`,`url`])&&ne(e.locator.url)?{kind:`url`,url:e.locator.url}:void 0;return n?{version:1,...t,locator:n}:void 0},EL=e=>{if(!fL(e)||!pL(e,[...CL,`reason`]))return;let t=wL(e);return t&&[`legacy-blob-url`,`legacy-bytes-missing`,`legacy-unbound-data`,`missing-blob`].includes(e.reason)?{...t,reason:e.reason}:void 0},DL=(e,t)=>{if(!fL(e)||!pL(e,[`text`,`references`])||typeof e.text!=`string`)return;let n=ge(e.text,e.references),r=n&&ie(n,`queue-canonical`);return r&&r.ok&&r.text===t?n:void 0},OL=(e,t)=>{if(e===void 0)return[];if(!t)return;let n=M(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},kL=(e,t)=>{if(!fL(e)||!pL(e,[`version`,`queueItemID`,`operationID`,`messageID`,`owner`,`content`,`composerDocument`,`composerMentions`,`attachments`,`attachmentIssues`,`createdAt`,`sendConfig`,`status`,`attemptCount`,`nextAttemptAt`,`reconciliationStartedAt`,`reconciliationDeadlineAt`,`reconciliationChecks`,`reconciliationNextCheckAt`,`failureKind`])||e.version!==1||!mL(e.queueItemID)||!mL(e.operationID)||!mL(e.messageID)||typeof e.content!=`string`||e.content.length>dL.content||!hL(e.createdAt)||!hL(e.attemptCount)||!Array.isArray(e.attachments)||e.attachments.length>dL.attachmentsPerItem||!Array.isArray(e.attachmentIssues)||e.attachmentIssues.length>dL.issuesPerItem||![`queued`,`sending`,`retrying`,`reconciling`,`unresolved`,`failed`].includes(e.status))return;let n=xL(e.owner),r=e.attachments.map(TL),i=e.attachmentIssues.map(EL),a=e.composerDocument===void 0?void 0:DL(e.composerDocument,e.content),o=OL(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?we(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&&(!fL(e.sendConfig)||!pL(e.sendConfig,[`providerID`,`modelID`,`agent`,`variant`])||!mL(e.sendConfig.providerID)||!mL(e.sendConfig.modelID)||[e.sendConfig.agent,e.sendConfig.variant].some(e=>e!==void 0&&!mL(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&&!hL(e))||!m)return;let h=e.status===`sending`&&t,g=h?e.createdAt+3e4:e.reconciliationDeadlineAt;if(h&&!hL(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:gL(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}:{}}},AL=(e,t={})=>{let n=e=>({status:`corrupt`,snapshot:bL(),issues:[_L(void 0,void 0,`$`,e)],degradedScopeKeys:[]});if(!fL(e)||!pL(e,[`version`,`queues`,`migration`])||e.version!==4||!fL(e.queues)||!fL(e.migration)||!pL(e.migration,[`v3State`])||![`pending`,`complete`,`degraded`].includes(e.migration.v3State)||Object.keys(e.queues).length>dL.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(_L(e,t,n,r)),o.add(e)};for(let[a,d]of Object.entries(e.queues)){if(!yL(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>dL.totalItems)return n(`item-limit`);let f=d[i],p=`$.queues.${JSON.stringify(a)}[${i}]`,m=kL(f,t.normalizeSending===!0);if(!m||vL(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:gL({version:4,queues:i,migration:{v3State:e.migration.v3State}}),issues:a,degradedScopeKeys:[...o]}},jL=e=>{let t=AL(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`}}}},ML=()=>({ok:!1,error:{code:`unavailable`}}),NL=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),PL=e=>({read:async t=>{if(!e)return ML();try{return{ok:!0,value:e.getItem(t)}}catch(e){return NL(e)}},write:async(t,n)=>{if(!e)return ML();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return NL(e)}},remove:async t=>{if(!e)return ML();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return NL(e)}}}),FL=()=>{try{return PL(typeof window>`u`?null:window.localStorage)}catch{return PL(null)}},IL=async e=>{let t=await e.read(lL);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}};try{let e=AL(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:[_L(void 0,void 0,`$`,`json`)],degradedScopeKeys:[]}}}},LL=async e=>{let t=await IL(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},RL=async(e,t)=>{let n=jL(t);return n.ok?e.write(lL,n.value):n},zL=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,RL(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:()=>IL(e),read:()=>LL(e),persist:e=>{if(!t)return Promise.resolve({ok:!1,error:{code:`cancelled`}});let r=AL(e);if(r.status===`corrupt`||r.issues.length)return Promise.resolve({ok:!1,error:{code:`corrupt`}});let i=gL(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}},BL=dL.string,VL=dL.dataURL,HL=dL.bytes,UL=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,WL=(e,t,n=!1)=>typeof e==`string`&&e.length<=BL&&(n||e.length>0)?e:t,GL=(e,t=0)=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0?e:t,KL=(e,t)=>vL(e)===vL(t),qL=(e,t,n,r)=>({scopeKey:e,queueItemID:t,path:n,reason:r}),JL=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(``)}`},YL=e=>typeof e==`string`&&e.length>0&&e.length<=BL,XL=e=>yL(e)??(YL(e)?{state:`unbound-legacy`,sessionID:e}:void 0),ZL=e=>{if(UL(e)){if(e.state===`bound`&&YL(e.transportIdentity)&&YL(e.directory)&&YL(e.sessionID))return{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID};if(e.state===`unbound-legacy`&&YL(e.sessionID))return{state:`unbound-legacy`,sessionID:e.sessionID}}},QL=e=>{if(e.length>VL)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>HL)return;e=Uint8Array.from(t,e=>e.charCodeAt(0))}else if(e=new TextEncoder().encode(decodeURIComponent(a)),e.byteLength>HL)return;let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),new Blob([t],{type:i})}catch{return}},$L=e=>UL(e)&&YL(e.providerID)&&YL(e.modelID)&&(e.agent===void 0||YL(e.agent))&&(e.variant===void 0||YL(e.variant))?{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}:void 0,eR=async(e,t)=>{let n=await IL(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:[qL(``,``,`$.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=>qL(e.scopeKey??``,e.queueItemID??``,e.path,e.reason)),cleanupErrors:[]};let r=await e.read(uL);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={...bL(),migration:{v3State:`complete`}},n=await RL(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:[qL(``,``,`$`,`legacy-json`)],cleanupErrors:a}}let l=UL(c)&&UL(c.state)?c.state.queuedMessages:UL(c)?c.queuedMessages:void 0;if(!UL(l))return{status:`failed`,error:{code:`corrupt`},issues:[qL(``,``,`$.state.queuedMessages`,`legacy-state`)],cleanupErrors:a};let u={...bL(),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>=dL.scopes){i.push(qL(n,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-scope-limit`));break}let c=XL(n),l=c?vL(c):n;if(!c||!Array.isArray(r)){i.push(qL(l,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-queue`));continue}for(let e=0;e<r.length;e++){if(m>=dL.totalItems){i.push(qL(l,``,`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,`legacy-item-limit`));break}m++;let h=`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,g=UL(r[e])?r[e]:void 0;if(!g||typeof g.content!=`string`||g.content.length>131072){i.push(qL(l,``,h,`legacy-item`));continue}let _=ZL(g.owner);if(g.owner!==void 0&&(!_||!KL(c,_))){i.push(qL(l,YL(g.queueItemID)?g.queueItemID:``,h,`owner-conflict`));continue}let v=JSON.stringify([n,e,g.content]),y=YL(g.queueItemID)?g.queueItemID:YL(g.id)?g.id:await JL(`queue`,v),b=YL(g.operationID)?g.operationID:await JL(`operation`,`${v}:operation`),x=YL(g.messageID)?g.messageID:await JL(`message`,`${v}:message`);if(d.has(y)||f.has(b)||p.has(x)){i.push(qL(l,y,h,`duplicate-id`));continue}d.add(y),f.add(b),p.add(x);let S=[],C=[],w=new Set,E=Array.isArray(g.attachments)?g.attachments:[];g.attachments!==void 0&&!Array.isArray(g.attachments)&&i.push(qL(l,y,`${h}.attachments`,`legacy-attachments`));for(let e=0;e<E.length&&e<dL.attachmentsPerItem;e++){let n=UL(E[e])?E[e]:void 0,r=`${h}.attachments[${e}]`;if(!n){i.push(qL(l,y,r,`legacy-attachment`));continue}let u=YL(n.id)?n.id:await JL(`attachment`,`${v}:attachment:${e}`),d=T(u),f=WL(n.filename,u),p=WL(n.mimeType,``,!0),m=GL(n.size);if(w.has(d)){i.push(qL(l,y,r,`duplicate-attachment-occurrence`));continue}w.add(d);let g=n.source===`local`?n.serverPath===void 0&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`server`?YL(n.serverPath)&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`vscode`&&YL(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,D=_===`vscode`?n.vscodeSource:void 0,O={attachmentID:u,occurrenceRefID:d,filename:f,mimeType:p,size:m,source:_,...b?{serverPath:b}:{},...x?{vscodePath:x}:{},...D?{vscodeSource:D}:{}},k=e=>{C.push({...O,reason:e}),i.push(qL(l,y,r,e))};if(c.state===`unbound-legacy`){k(`legacy-unbound-data`);continue}if(!g){i.push(qL(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(ne(A)){S.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=QL(A);if(!j){k(`legacy-bytes-missing`);continue}let M=await JL(`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:qL(l,y,r,`blob-retain`)}),S.push({version:1,...O,mimeType:j.type,size:j.size,locator:{kind:`blob`,blobID:M}})}E.length>dL.attachmentsPerItem&&i.push(qL(l,y,`${h}.attachments`,`legacy-attachment-limit`));let D=GL(g.createdAt),O=typeof g.status==`string`?g.status:`queued`,k=UL(g.failure)?g.failure.kind:g.failureKind,A=k===`pre-dispatch`||k===`ambiguous-dispatch`||k===`definitive`?k:void 0,j=O===`retrying`||A===`pre-dispatch`,N=O===`sending`||O===`reconciling`||A===`ambiguous-dispatch`,ee=O===`unresolved`&&C.length===0,te=C.length>0,re=GL(g.reconciliationStartedAt,D),ae=GL(g.reconciliationDeadlineAt,-1),oe=re>2**53-1-3e4?re:re+3e4,se=Math.max(re,ae>=0?ae:oe),P=GL(g.reconciliationChecks),F=GL(g.reconciliationNextCheckAt,re);N&&ae<0&&re>2**53-1-3e4&&i.push(qL(l,y,`${h}.reconciliationDeadlineAt`,`reconciliation-deadline-overflow`));let ce=te||ee||c.state===`unbound-legacy`&&N?`unresolved`:j?`retrying`:N?`reconciling`:O===`failed`||A===`definitive`?`failed`:`queued`,le=ce===`reconciling`||ce===`unresolved`&&!te,ue=UL(g.composerDocument)&&typeof g.composerDocument.text==`string`?ge(g.composerDocument.text,g.composerDocument.references):void 0,de=ue&&ie(ue,`queue-canonical`);g.composerDocument!==void 0&&(!de||!de.ok||de.text!==g.content)&&i.push(qL(l,y,`${h}.composerDocument`,`degraded-composer-document`));let I=de&&de.ok&&de.text===g.content?ue:void 0,fe=I?M(I.text,g.composerMentions):void 0,L=fe&&!fe.some(e=>I.references.some(t=>e.range.start<t.end&&t.start<e.range.end));g.composerMentions!==void 0&&!L&&i.push(qL(l,y,`${h}.composerMentions`,`degraded-composer-mentions`));let pe={version:1,queueItemID:y,operationID:b,messageID:x,owner:c,content:g.content,...I?{composerDocument:I}:{},...L&&fe.length?{composerMentions:fe}:{},attachments:S,attachmentIssues:C,createdAt:D,...$L(g.sendConfig)?{sendConfig:$L(g.sendConfig)}:{},status:ce,attemptCount:GL(g.attemptCount),...ce===`retrying`?{nextAttemptAt:GL(g.nextAttemptAt,D),failureKind:`pre-dispatch`}:le?{reconciliationStartedAt:re,reconciliationDeadlineAt:se,reconciliationChecks:P,reconciliationNextCheckAt:F,failureKind:`ambiguous-dispatch`}:ce===`failed`?{failureKind:`definitive`}:{}};(u.queues[l]??=[]).push(pe)}}i.length&&(u.migration.v3State=`degraded`);let g=await RL(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})},tR=(e,t)=>JSON.stringify(e)===JSON.stringify(t),nR=(e,t=[])=>({status:e,errors:t,cleanupErrors:[]}),rR=e=>e.status===`sending`||e.status===`reconciling`,iR=(e,t,n={})=>{let r={hydration:`idle`,snapshot:bL(),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]=tR(r.snapshot.queues[n],i)?r.snapshot.queues[n]:i;let n=tR(r.snapshot.queues,t)&&tR(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&&vL(t.owner)===e.scopeKey?t:void 0},d=()=>r.hydration===`idle`||r.hydration===`hydrating`?nR(`unseeded`):r.hydration===`recovery-required`?nR(`recovery-required`,[...r.issues]):r.hydration===`failed`?nR(`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=()=>nR(`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)):nR(`stale`))),materializeForEdit:(t,n=p())=>l(async()=>{let r=d(),i=u(t);if(r)return r;if(!i||!m(i,n))return nR(`stale`);if(rR(i))return nR(`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`?nR(`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 nR(`stale`);try{let a=await e.releaseSend(t,n,r);return a.status!==`stale`&&h.delete(i),a}catch{return h.delete(i),nR(`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{...nR(`stale`),durableRemoval:!1};if(rR(f))return{...nR(`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{...nR(`stale`),durableRemoval:!1};if(_(t))return{...v(),durableRemoval:!1};if(rR(a))return{...nR(`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=>rR(e)||!m(e,i))?nR(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.reorder(t,n,i)):nR(`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)?nR(`stale`):_(t)?v():rR(a)?nR(`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||rR(e)||!m(e,r))||n.transportIdentity!==r.transportIdentity?nR(`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)?nR(`stale`):_(t)?nR(`failed`,[{phase:`identity`,code:`reserved`}]):(Array.isArray(n)?n:[n]).includes(o.status)?f(()=>e.transition(t,r,i)):nR(`stale`))}),confirm:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?nR(`stale`):_(t)?nR(`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)?nR(`stale`):_(t)?nR(`failed`,[{phase:`identity`,code:`reserved`}]):e.acquireSendPayload(t,n))}),releaseSend:(t,n,r=p())=>l(async()=>e.releaseSend(t,n,r))}},aR=e=>JSON.parse(JSON.stringify(e)),Q=(e,t=[],n=[],r)=>({status:e,...r===void 0?{}:{current:r},errors:t,cleanupErrors:n}),oR=(e,t)=>e.queueItemID===t.queueItemID&&e.operationID===t.operationID&&e.messageID===t.messageID,sR=(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,cR=e=>JSON.stringify(e),lR=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}),uR=e=>`${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,dR=e=>typeof e==`number`&&Number.isSafeInteger(e),fR=(e,t)=>{if(cR(lR(e))!==cR(lR(t))||!dR(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&&!dR(e))||e.status===`reconciling`&&t.status===`reconciling`&&(t.reconciliationStartedAt!==e.reconciliationStartedAt||t.reconciliationDeadlineAt!==e.reconciliationDeadlineAt||(t.reconciliationChecks??0)<(e.reconciliationChecks??0)))},pR=e=>{if(!e.composerDocument)return!0;let t=new Set(e.composerDocument?we(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))},mR=(e,t,n={})=>{let r=bL(),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=>oR(t,e)),_=(e,t,n,r,i)=>({phase:e,code:t,...n?{scopeKey:vL(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=sR(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},C=()=>Q(a?`stale`:`disabled`,[],[],!1),w=()=>Q(`recovery-required`,[_(`metadata`,`recovery-required`)]),T=async(t,n)=>{let r=await e.releaseIfMatches(t.reference,t.blobID);r.ok||(u.set(S(t.reference),t),n.push(_(`blob`,r.error.code,t.item,t.attachment)))},E=async e=>{let t=[];for(let n of[...e].reverse())await T(n,t);return t},D=()=>{let e=new Map;for(let t of h())for(let n of v(t,`queue`))e.set(S(n.reference),n.blobID);return e},O=(e,t,n=D())=>n.get(e)===t.blobID||d.get(e)?.blobID===t.blobID,k=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)}},A=async(t=!1)=>{if(!i)return Q(`unseeded`);if(!a)return Q(`disabled`);if(c||s)return w();let n=D(),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(S(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?AL(u,{normalizeSending:!0}):{status:`ok`,snapshot:bL(),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?A(!0):Q(`disabled`,m.map(e=>({phase:`metadata`,code:e.reason,...e}))))}),getSnapshot:()=>aR(r),admit:(t,n,o)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return w();if(!b(t,n))return C();let s=vL(t.owner),l=aR(r);l.queues[s]=[...l.queues[s]??[],t];let d=AL(l);if(!pR(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 C();let p=[];for(let r of v(t,`queue`)){if(!await x(n,f))return{...C(),cleanupErrors:await E(p)};let i=await e.readReference(r.reference);if(!i.ok)return Q(`failed`,[_(`blob`,i.error.code,t,r.attachment)],await E(p));if(i.value&&i.value!==r.blobID)return Q(`failed`,[_(`blob`,`blob-id-conflict`,t,r.attachment)],await E(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 E(p));let i=await o?.(r.attachment);if(i===void 0)return Q(`failed`,[_(`blob`,`missing-blob`,t,r.attachment)],await E(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 E(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 E(p));p.push(r)}let m=await k(d.snapshot,n,f);if(!m.committed)return m.error?Q(`failed`,[m.error],await E(p)):{...C(),cleanupErrors:await E(p)};for(let e of v(t,`queue`))u.delete(S(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 w();let o=g(e);if(!o||!b(o,n))return C();let s=y(n,o);if(!await x(n,s))return C();let l=t(aR(o)),u=aR(r),d=vL(o.owner);u.queues[d]=u.queues[d].map(t=>oR(t,e)?l:t);let f=AL(u);if(!oR(l,e)||!fR(o,l)||f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-transition`,o)]);let p=await k(f.snapshot,n,s);return p.committed?Q(`committed`,[],[],p.current):p.error?Q(`failed`,[p.error]):C()}),reorder:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return w();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 C();let s=y(n,o[0]);if(!await x(n,s))return C();let l=new Map(o.map(e=>[e.queueItemID,e])),u=aR(r);u.queues[e]=t.map(e=>l.get(e));let d=await k(u,n,s);return d.committed?Q(`committed`,[],[],d.current):d.error?Q(`failed`,[d.error]):C()}),bind:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return w();let o=g(e);if(!o)return Q(`failed`,[_(`identity`,`invalid-bind`)]);if(!b(o,n)||t.transportIdentity!==n.transportIdentity)return C();if(o.owner.state!==`unbound-legacy`||o.attachments.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let s=vL(o.owner),l=r.queues[s];if(!l||l.length!==1||!oR(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 C();let d={...aR(o),owner:t},f=AL({version:4,queues:{[vL(t)]:[d]},migration:r.migration});if(f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let p=aR(r),m=s,h=vL(t);p.queues[m]=p.queues[m].filter(t=>!oR(t,e)),p.queues[m].length||delete p.queues[m],p.queues[h]=[d,...p.queues[h]??[]];let v=AL(p);if(v.status===`corrupt`||v.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let S=await k(v.snapshot,n,u);return S.committed?Q(`committed`,[],[],S.current):S.error?Q(`failed`,[S.error]):C()}),bindMany:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return w();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 C();let s=o[0].owner,l=r.queues[vL(s)];if(!l||l.length!==e.length||o.some(e=>cR(e.owner)!==cR(s)||e.attachments.length)||l.some((t,n)=>!oR(t,e[n])))return Q(`failed`,[_(`identity`,`invalid-bind`)]);let u=y(n,o[0]);if(!await x(n,u))return C();let d=o,f=d.map(e=>({...aR(e),owner:t})),p=aR(r),m=vL(s),h=vL(t);p.queues[m]=p.queues[m].filter(e=>!d.some(t=>oR(e,t))),p.queues[m].length||delete p.queues[m],p.queues[h]=[...f,...p.queues[h]??[]];let v=AL(p);if(v.status===`corrupt`||v.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`)]);let S=await k(v.snapshot,n,u);return S.committed?Q(`committed`,[],[],S.current):S.error?Q(`failed`,[S.error]):C()}),acquireSendPayload:(t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return w();let r=g(t);if(!r||!b(r,n))return C();if(f.has(uR(t)))return Q(`failed`,[_(`identity`,`active-send`,r)]);let o=y(n,r);if(!await x(n,o))return C();let s=[],l=[];for(let t of r.attachments){if(!await x(n,o))return{...C(),cleanupErrors:await E(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 E(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 E(s));s.push(i)}let c=await e.read(i.blobID);if(!c.ok)return Q(`failed`,[_(`blob`,c.error.code,r,t)],await E(s));l.push({attachment:t,value:c.value})}if(!await x(n,o))return{...C(),cleanupErrors:await E(s)};let u=v(r,`send`),m=`${++p}`;for(let e of u)d.set(S(e.reference),e);return f.set(uR(t),{token:m,identity:t,held:u}),{...Q(`committed`,[],[],!0),token:m,values:l}}),releaseSend:(e,t)=>m(async()=>{let n=f.get(uR(e));if(typeof t!=`string`||!n||n.token!==t)return Q(`stale`);f.delete(uR(e));let r=[];for(let e of n.held)d.delete(S(e.reference)),await T(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 w();let n=g(e);if(!n||!b(n,t))return C();let o=y(t,n);if(!await x(t,o))return C();let s=aR(r);for(let[t,n]of Object.entries(s.queues)){let r=n.filter(t=>!oR(t,e));r.length?s.queues[t]=r:delete s.queues[t]}let l=await k(s,t,o);if(!l.committed)return l.error?Q(`failed`,[l.error]):C();let u=f.get(uR(e));f.delete(uR(e));let p=[];for(let e of v(n,`queue`))await T(e,p);for(let e of u?.held??v(n,`send`))d.delete(S(e.reference)),await T(e,p);return Q(`committed`,[],p,l.current)}),reconcile:()=>m(()=>A(!1)),retryCleanup:()=>m(async()=>{if(!a)return Q(`disabled`);if(c||s)return w();let t=[],n=D();for(let[r,i]of u){if(O(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}}},hR=()=>{let e=FL(),t=zL(e),n=Ca();return{controller:iR(mR(n,t),()=>{let e=u(),t=f();return{transportIdentity:e,generation:t,isCurrent:()=>u()===e&&f()===t}}),migrate:async()=>eR(e,n)}},gR=(e=hR)=>{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)}},_R,vR=()=>_R??=gR(),yR=26214400,bR=52428800,xR=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),SR=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>yR)throw RangeError(`message-queue-attachment-too-large`);n+=e}if(n>bR)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 jI({signal:t});await MI(e,n.value,await xR(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}},CR,wR=()=>{let e=`openchamber:message-queue-import-client-id`;try{let t=globalThis.localStorage,n=t.getItem(e);if(n)return n;let r=le();return t.setItem(e,r),r}catch{return CR??=le()}},TR={queue:void 0,capture:()=>({transportIdentity:``,generation:0}),current:()=>!0,admit:BI,create:CI,details:wI,stage:TI,seal:EI,upload:SR,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:()=>{}},ER=e=>({scopeKey:vL(e.owner),queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}),DR=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(``)}`,OR=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}}),kR=e=>Array.isArray(e)?`[${e.map(kR).join(`,`)}]`:e&&typeof e==`object`?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${kR(e[t])}`).join(`,`)}}`:JSON.stringify(e),AR=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(kR(e))))].map(e=>e.toString(16).padStart(2,`0`)).join(``),jR=e=>{let t={...TR,...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(ER(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:OR(s)}};n||(p=`admit`,await t.admit({requestID:await DR(s.operationID),..._,signal:o})),e.push({item:s,scopeOrdinal:h,itemOrdinal:g,payload:_,payloadHash:await AR(_)}),f++}finally{await t.queue.releaseSend(ER(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 AR(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=wR(),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})}}}},MR=e=>typeof e==`object`&&!!e&&e.kind===`pending-admission`,NR=(e,t)=>e.then(e=>{if(t?.aborted)throw new DOMException(`Aborted`,`AbortError`);return e}),PR={snapshot:e=>NR(tL(I),e),status:e=>NR(QI(I),e),scope:dI,waitInvalidation:pI,admit:BI,edit:VI,remove:UI,reserve:FI,renew:LI,release:II,removeReserved:RI,reorder:WI,manualSend:HI,upload:SR,client:I,capture:()=>({transportIdentity:u(),generation:f()}),current:e=>e.transportIdentity===u()&&e.generation===f(),legacyManualSend:async()=>{},shadowQueue:vR,admissionUploadTimeoutMs:12e4,admissionRequestTimeoutMs:2e4,admissionReconcileTimeoutMs:2e4},FR=e=>e instanceof X&&(e.code===`revision_conflict`||e.code===`row_version_conflict`),IR=e=>e instanceof X&&e.code===`unavailable`,LR=8,RR=(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))]},zR=e=>`${e.transportIdentity}\u0000${Se(e.directory)}\u0000${e.sessionID}`,BR=(e,t)=>new Promise(n=>{let r=setTimeout(n,e);t.addEventListener(`abort`,()=>{clearTimeout(r),n()},{once:!0})}),VR=(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 X(0,`unavailable`)):r.signal.addEventListener(`abort`,()=>t(new X(0,`unavailable`)),{once:!0})});return Promise.race([Promise.resolve().then(()=>e(r.signal)),o]).finally(()=>{i!==void 0&&clearTimeout(i),t?.removeEventListener(`abort`,a)})},HR=(e={})=>{let t={...PR,...e},n={...t,snapshot:e.snapshot??(e=>NR(tL(t.client,t.capture().transportIdentity),e)),status:e.status??(e=>NR(QI(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?zR({transportIdentity:n,directory:a.directory,sessionID:a.sessionID}):r?zR({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 X(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 X(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;nL(n.client,e,t.transportIdentity);let a=zR({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)nL(n.client,e,i.transportIdentity);if(iL(n.client,e,i.transportIdentity),e.scopes.length===0)oL(n.client,i.transportIdentity);else for(let e of o.keys())a.has(e)||sL(n.client,e,i.transportIdentity);y(e.scopes,i);for(let e of t){let t=zR({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)||(rL(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 X&&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 X&&n.code===`revision_conflict`){e=0;continue}m({error:n,isFetching:!1}),await BR(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)??aL(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?aL(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<LR;t++){let s=r.scopes.get(e),c=s?aL(n.client,e,s.revision,a.transportIdentity):void 0,l;try{try{l=(await i(o,c)).revision}catch(e){if(!IR(e)||!h(a))throw e;l=(await i(o,c)).revision}}catch(n){if(FR(n)&&t+1<LR){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 X(409,`revision_conflict`));if(!t)return u({status:`stale`});await cL(n.client,e,a.transportIdentity);let i=r.scopes.get(e);return u({status:`committed`,scope:i?aL(n.client,e,i.revision,a.transportIdentity):t})}catch(r){if(FR(r)&&!t)continue;return h(a)?(m({error:r}),cL(n.client,e,a.transportIdentity).catch(()=>{}),u({status:`committed`})):u({status:`stale`})}}throw new X(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=zR(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=>Se(t.directory)===Se(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=aL(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(zR(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 jR({queue:n.shadowQueue(),capture:()=>e,current:h,existing:()=>[...r.scopes.values()].flatMap(t=>aL(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 kI({expectedGeneration:e,signal:i?.signal}),await T()},resume:async e=>{await AI({expectedGeneration:e,signal:i?.signal}),await T()},stageAdmission:({requestID:e,scope:t,item:n})=>{let r=zR({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=zR({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=zR({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 VR(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 VR(e=>n.admit({...v,signal:e}),i?.signal,n.admissionRequestTimeoutMs)}catch(e){if(!h(o))return m(),{status:`stale`};if(!(e instanceof X)||e.code!==`unavailable`)throw m(),e;f({...l,phase:`ambiguous`});try{y=await VR(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?VR(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 X)||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<LR;a++){let d=r.scopes.get(t),f=(d?aL(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(!FR(e)||a+1>=LR)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<LR;a++){let d=r.scopes.get(t),f=(d?aL(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 X(404,`not_found`)).catch(()=>void 0),await T(),!0):!1}catch(e){if(!FR(e)||a+1>=LR)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:RR(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 X(0,`unavailable`)}}},UR,WR=()=>UR??=HR(),GR=new WeakMap,KR=e=>{let t=e,n=GR.get(t);if(n)return n.refs++,()=>{n.refs--,n.refs||(n.unsubscribe(),GR.delete(t))};let r={refs:1,unsubscribe:s(t=>{p(t)&&e.restart()})};return GR.set(t,r),()=>{r.refs--,r.refs||(r.unsubscribe(),GR.delete(t))}},qR=e=>!e||/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(e),JR=(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(!qR(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}},YR=/\.[a-z0-9]{1,8}$/i,XR=/^([a-z0-9][a-z0-9._-]*)\/([a-z0-9][a-z0-9._-]*)(?:@[^\s/\\]+)?$/i,ZR=e=>{let t=XR.exec(e);return t?!YR.test(t[2]):!1},QR=new Set([`test`,`tests`,`__tests__`,`spec`,`specs`,`e2e`,`__mocks__`]),$R=/\.(?:test|spec|e2e)\./i,ez=.85,tz=3,nz=3,rz=1.25,iz=-.35,az=-.5,oz=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(YR),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}},sz=e=>{let t=oz(e);return(t.fileIntent||t.directoryIntent)&&t.stem?t.stem:t.search},cz=e=>{let t=e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase();if(!t)return!1;let n=t.split(`/`).filter(Boolean);if(n.some(e=>QR.has(e)))return!0;let r=n.at(-1)??t;return $R.test(r)},lz=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase(),uz=(e,t)=>(e.name||t.split(`/`).filter(Boolean).pop()||t).toLowerCase(),dz=(e,t)=>e===null&&t===null?null:Math.min(e??1/0,t??1/0),fz=(e,t)=>{let n=lz(e.relativePath),r=uz(e,n),i=e.isDirectory===!0,a=dz(PO(n,t.search),PO(r,t.search)),o;if(a!==null)o=a;else if(t.stem&&t.stem!==t.search){let e=dz(PO(n,t.stem),PO(r,t.stem));if(e===null)return null;o=e+ez}else return null;return t.fileIntent&&i&&(o+=tz),t.directoryIntent&&!i&&(o+=nz),t.fileIntent&&!i&&t.extension&&e.extension===t.extension&&(o+=iz),t.directoryIntent&&i&&r===t.stem&&(o+=az),cz(n)&&!cz(t.search)&&(o+=rz),o},pz=(e,t,n)=>{let r=n?.limit??20,i=oz(t);if(!i.search&&!i.stem)return e.slice(0,r);let a=e.flatMap(e=>{let t=fz(e,i);return t===null?[]:[{item:e,score:t,sortKey:lz(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)},mz=/\.[a-z0-9]{1,8}$/i,hz=/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/,gz=e=>!ZR(e)&&(e.includes(`/`)||e.includes(`\\`)||e.includes(`.`)),_z=e=>{if(!gz(e))return!1;let t=e.replace(/\\/g,`/`);if(t.endsWith(`/`))return!0;let n=t.split(`/`).filter(Boolean).pop()??t;return mz.test(n)},vz=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},yz=(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}},bz=(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)||!vz(i))return null;let a=t+1+i.length,o=i;if(_z(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,_z(o))return{value:o,end:a,highlightEnd:a}}return null},xz=(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},Sz=(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||hz.test(o))){i=a+1;continue}let s=yz(e,a,t)??(n?bz(e,a):null)??xz(e,a);if(!s){i=a+1;continue}r.push({start:a,...s}),i=Math.max(s.highlightEnd,s.end,a+1)}return r},Cz=({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 pz(Array.from(a.values()),n,{limit:i})},wz=6,Tz=(e,t,n)=>pz(e,t,{limit:n?.limit??wz}),Ez=(e,t)=>e===null&&t===null?null:Math.min(e??1/0,t??1/0),Dz=(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=Ez(PO(e.name,n),PO(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)},Oz=(e,t)=>{let n=e[t];return n!==void 0&&/\s/.test(n)},kz=({mention:e,confirmed:t,terminated:n})=>!e||e.startsWith(`session:`)?!1:t?!0:n&&gz(e),Az=(e,{confirmedValues:t,agentNames:n})=>{if(!e.includes(`@`))return[];let r=[];for(let i of Sz(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=Oz(e,s);kz({mention:o,confirmed:t.has(o),terminated:l})&&r.push({start:a,end:c,kind:`file`})}return r},jz=(e,{agentNames:t,includeUnterminatedPastedReferences:n=!1,confirmedValues:r}={})=>{if(!e.includes(`@`))return[];let i=[];for(let a of Sz(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=Oz(e,c),d=n&&(l||_z(s)),f=r?.has(s)===!0;!u&&!d&&!f||!gz(s)&&!d||i.push({kind:s.endsWith(`/`)||s.endsWith(`\\`)?`directory`:`file`,value:s,start:o,end:c})}return i},Mz=/(^|[\s([{])(@session:([A-Za-z0-9_-]+))(?=$|[\s)\]},.!?;:])/g,Nz=e=>{let t=[];Mz.lastIndex=0;let n;for(;(n=Mz.exec(e))!==null;){let e=n.index+n[1].length;t.push({start:e,end:e+n[2].length,id:n[3]})}return t},Pz=e=>{let t=[],n=new Set;for(let{id:r}of Nz(e))n.has(r)||(n.add(r),t.push(r));return t},Fz=(e,t)=>{let n=e;for(let r of Nz(e).reverse()){let e=t.get(r.id)??r.id;n=`${n.slice(0,r.start)}@${e}${n.slice(r.end)}`}return n},Iz=({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)},Lz=({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(`
|
|
409
|
-
`)?null:s},Rz=/(^|\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,zz=e=>yr(e.trim()),Bz=e=>{let t=e.trim();if(t.toLowerCase().startsWith(`file://`))return t;let n=zz(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`file:///${n}`:`file://${n}`},Vz=e=>({chunks:[{provenance:`authored`,text:e,start:0,end:e.length}],semantics:[]}),Hz=({text:e,root:t,confirmedFilePaths:n,confirmedDirectoryPaths:r=[],agentNames:i})=>{let a=[],o=new Set,s=t?zz(t).replace(/\/+$/,``):``,c=e=>zz(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=br(e)||br(t)?t:t.replace(/^\/+/,``);if(!(l.has(t)||l.has(n)||!ZR(e)&&(e.includes(`/`)||e.includes(`\\`)||e.includes(`.`))))return;let r=br(e)||br(t)?t:s?xr(s,n):null;if(!n||!r||o.has(r))return;o.add(r);let d=Sr(r)||n,f=u.has(t)||u.has(n)||/[/\\]$/.test(e)?ir:`text/plain`;a.push({id:le(),file:new File([],d,{type:f}),filename:d,mimeType:f,size:0,dataUrl:Bz(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},Uz=(e,t)=>{let n=[],r=new Set;Rz.lastIndex=0;let i;for(;(i=Rz.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},Wz=(e,t)=>{if(!e.includes(`@`)||t.length===0)return[];let n=[];for(let{id:r,title:i}of t)(e.includes(`@${i}`)||e.includes(`@${fe}${i}`))&&n.push(r);return n},Gz=({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(nt(r).map(e=>[e.id,e.title||e.id])),u=[];for(let e of kt().values()){let t=typeof e.title==`string`?e.title.trim():``;t&&u.push({id:e.id,title:t})}return Of(e,e=>{let r=JR(e,t),d=[...new Set([...Pz(e),...Wz(e,u)])],f=[...Uz(e,n),...d.map(e=>({type:`session`,sessionId:e}))],p=Hz({text:r.sanitizedText,root:i,confirmedFilePaths:a,confirmedDirectoryPaths:o,agentNames:c});return{text:Fz(Tt(Bt(r.sanitizedText,s)),l),agent:r.mention?.name,attachments:p,semantics:f}})},Kz=e=>e.map(e=>({text:e.text,...e.attachments?.length?{attachments:kf(e.attachments)}:{},synthetic:!0})),qz=({text:e,attachments:t,semanticParts:n,syntheticParts:r=[]})=>[{type:`text`,text:e},...kf(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},...kf(e.attachments??[]).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id}))])],Jz=(e,t)=>{let n=t.map(e=>({...e,attachments:kf(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}})},Yz=e=>e?.trim()||void 0,Xz=e=>e.hasQueuedMessages&&(e.sessionIsRunning||e.autoReviewRunning)&&!e.queuedOnly&&e.delivery!==`steer`,Zz=(e,t)=>e!==`assistant`||t===`server`,Qz=(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)})},$z=({currentConfig:e,sessionID:t,selection:n})=>{let r=Yz(e.currentAgentName),i=t?Yz(n.getSessionAgentSelection(t))??r:r,a=t&&i?n.getAgentModelForSession(t,i):null,o=t?n.getSessionModelSelection(t):null,s=Yz(a?.providerId)??Yz(o?.providerId)??Yz(e.currentProviderId),c=Yz(a?.modelId)??Yz(o?.modelId)??Yz(e.currentModelId);if(!s||!c)return;let l=t&&i?Yz(n.getAgentModelVariantForSession(t,i,s,c))??Yz(e.currentVariant):Yz(e.currentVariant);return{providerID:s,modelID:c,...i?{agent:i}:{},...l?{variant:l}:{}}},eB=e=>!!(Yz(e?.providerID)&&Yz(e?.modelID)),tB=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,nB=(e,t)=>tB(e,t),rB=e=>JSON.stringify([e.text,e.references]),iB=e=>JSON.stringify(e),aB=(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,oB=({draftKey:e,runtime:t,document:n,attachments:r,inlineDrafts:i})=>({draftKey:{transportIdentity:e.transportIdentity,owner:{...e.owner}},draftKeyID:P(e),runtime:{...t},documentFingerprint:rB(n),attachments:new Map(r.map(e=>[e.id,e])),inlineDrafts:new Map(i.map(e=>[e.id,iB(e)]))}),sB=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`||!nB(e.runtime,n())||!d||P(d)!==e.draftKeyID)return{status:`stale`,bodyConsumed:!1,attachmentIDsConsumed:[],inlineDraftIDsConsumed:[]};let f=rB(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||!aB(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||iB(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}},cB=(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)}}),lB=(e=le,t=()=>Ce(`msg`),n=Date.now())=>({requestID:e(),queueItemID:`queued-${e()}`,operationID:`operation-${e()}`,messageID:t(),createdAt:n}),uB=({stage:e,clearComposer:t,postClear:n})=>{let r=e();return t(),n?.(),r},dB=`blocked`,fB=new Set,pB=()=>dB,mB=e=>{if(dB!==e){dB=e;for(let e of fB)e()}},hB=e=>(fB.add(e),()=>fB.delete(e)),gB=()=>dB===`legacy-enabled`,_B=2e3,vB=6e4,yB=5e3,bB=3,xB=e=>Math.min(_B*2**Math.max(e-1,0),vB),SB=new Map,CB=new Map,wB=new Set,TB=new Set,EB=0,DB=()=>{EB+=1;for(let e of TB)e()},OB=(e,t)=>JSON.stringify([De(e),t.queueItemID,t.operationID]),kB=e=>`scope:${De(e)}`,AB=()=>new Set([...SB.keys(),...CB.keys()]),jB=e=>(TB.add(e),()=>TB.delete(e)),MB=e=>{let t=(0,U.c)(2),n;return t[0]===e?n=t[1]:(n=()=>e?CB.has(kB(e)):!1,t[0]=e,t[1]=n),K.useSyncExternalStore(jB,n,$B)},NB=()=>structuredClone(F.getState().queuedMessages),PB=async()=>{for(mB(`blocked`);SB.size||CB.size||wB.size;)await Promise.allSettled([...new Set([...SB.values(),...CB.values(),...wB])]);return N(),NB()},FB=e=>e===`idle`,IB=e=>{if(e===void 0)return`unknown`;let t=e[e.length-1];return!t||t.role===`assistant`?`settled`:`unsettled`},LB=(e,t,n,r,i=!1,a=`settled`)=>e?e.status===`sending`?i?{}:{recover:!0}:e.status===`queued`?FB(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`retrying`?e.nextAttemptAt&&e.nextAttemptAt>r?{nextWakeAt:e.nextAttemptAt}:FB(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`reconciling`?(e.reconciliationChecks??0)>=bB||(e.reconciliationDeadlineAt??1/0)<=r?{resolve:!0}:(e.reconciliationNextCheckAt??0)>r?{nextWakeAt:e.reconciliationNextCheckAt}:i?{}:{query:!0}:{}:{},RB=(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},zB=(e,t)=>{let n;for(let r of fr(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},BB=(e,t)=>{let n;for(let r of e.values())r.expiresAt>t&&(!n||r.expiresAt<n)&&(n=r.expiresAt);return n},VB=({queuedMessages:e,activeTransportIdentity:t,getStatus:n,getTurnState:r=()=>`settled`,previous:i,inFlight:a,dispatchInFlight:o=AB(),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=OB(m,e),_=kB(m);d.add(h);let v=n(m),y=LB(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(De(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},HB=e=>{let t=e[0];if(!t)return null;let n=t.composerDocument&&ie(t.composerDocument,`direct-send-display`),r=t.owner?.state===`bound`?t.owner.directory:``,i=Gz({plan:n?.ok?{chunks:n.chunks??[],semantics:n.semantics??[]}:Vz(t.content),agents:W.getState().getVisibleAgents(),installedSkillNames:new Set(Uc(I,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=Rf(i.semantics,r);return{queuedMessageId:t.id,messageID:t.messageID,operationID:t.operationID,primaryText:i.text,primaryAttachments:kf([...t.attachments??[],...i.attachments]),agentMentionName:i.agent,additionalParts:a,sendConfig:t.sendConfig}},UB=(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}),WB=(e,t)=>t?{...t}:$z({currentConfig:W.getState(),sessionID:e,selection:Hl.getState()})??{providerID:``,modelID:``},GB=e=>{let t=$.getState().getDirectoryForSession(e);return t?{state:`bound`,transportIdentity:u(),directory:t,sessionID:e}:null},KB=(e,t)=>!!(e===`queued`||e===`retrying`||t&&(e===`failed`||e===`unresolved`)),qB=e=>e.status===`sending`||e.status===`reconciling`,JB=(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`||De(a.owner)!==De(r)?null:{scope:r,item:a}};function YB(e,t={}){if(!gB())return Promise.resolve();let n=F.getState(),r=t.scope??GB(e),i=t.manual===!0||t.delivery===`steer`;if(!r||r.transportIdentity!==u())return Promise.resolve();let a=JB(n,e,t.queueItemID,r??void 0);if((i||!t.scope)&&!CB.has(kB(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(qB)&&!o.some(qB)&&(n.bindLegacyQueue({state:`unbound-legacy`,sessionID:e},r),a=JB(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=OB(o,c),d=SB.get(l);if(d)return d;if(CB.has(kB(o))||!KB(s.status,i)||s.status===`retrying`&&!i&&(s.nextAttemptAt??0)>Date.now())return Promise.resolve();let p,m=new Promise(e=>{p=e});return SB.set(l,m),CB.set(kB(o),m),DB(),(async()=>{try{let r=zB(e,o.directory),a=hV(e),l=a?.queueItemID===s.queueItemID?a.messageID:de(`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(!N()){n.markQueueItemPreDispatchRetry(o,p,Date.now()+xB(d.attemptCount+1));return}let m=f(),h=HB([d]);if(!h)return;let g=WB(e,d.sendConfig);if(!g.providerID||!g.modelID){n.markQueueItemPreDispatchRetry(o,p,Date.now()+xB(d.attemptCount+1));return}if(!gB()){n.markQueueItemPreDispatchRetry(o,p,Date.now()+xB(d.attemptCount+1));return}let _=()=>{let e=F.getState().getQueueForScope(o)[0];return u()===o.transportIdentity&&f()===m&&e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&De(e.owner)===De(o)},v=()=>{let e=F.getState().getQueueForScope(o)[0];return e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&De(e.owner)===De(o)},y=t=>{_()&&t===p.messageID&&(F.getState().confirmQueueItem(o,p),kV(e))};try{await UB(e,h,g,{directory:o.directory,delivery:t.delivery,onSendConfirmed:y}),y(p.messageID)}catch(e){if(!v())return;let t=Wy(e);t===`pre-dispatch`?n.markQueueItemPreDispatchRetry(o,p,Date.now()+xB(d.attemptCount+1)):t===`definitive-rejection`?n.markQueueItemDefinitiveFailure(o,p):n.markQueueItemReconciling(o,p)}}finally{let e=!1;SB.get(l)===m&&(SB.delete(l),e=!0),CB.get(kB(o))===m&&(CB.delete(kB(o)),e=!0),e&&DB(),p?.()}})(),m}async function XB(e,t=f()){if(!gB())return;let n=Math.min(e.item.reconciliationDeadlineAt??1/0,Date.now()+yB),r=new AbortController,i=setTimeout(()=>r.abort(),Math.max(0,n-Date.now())),a=null;try{a=await Qb(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=F.getState().getQueueForScope(e.scope)[0];o?.queueItemID===e.item.queueItemID&&o.operationID===e.item.operationID&&o.messageID===e.item.messageID&&De(o.owner)===De(e.scope)&&u()===e.scope.transportIdentity&&f()===t&&(a?.some(t=>t.info.id===e.item.messageID)?(ZH(e.scope.sessionID,e.item.messageID),F.getState().confirmQueueItem(e.scope,{queueItemID:o.queueItemID,operationID:o.operationID,messageID:o.messageID})):F.getState().recordQueueItemReconciliationCheck(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID}))}var ZB=(e,t)=>{ky({sessionID:e.sessionID,messageID:t.messageID,directory:e.directory}),F.getState().resolveQueueItemReconciliation(e,{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID})};function QB(e){let t=typeof e==`boolean`?e:e?.enabled??!0,n=K.useSyncExternalStore(hB,pB,pB),r=F(e=>e.queuedMessages),i=Jd(e=>e.runsByOriginalSessionID),a=$(e=>e.queueAbortBlocks),o=K.useSyncExternalStore(s,u,u),c=K.useSyncExternalStore(s,m,m),l=K.useSyncExternalStore(jB,()=>EB,()=>EB),d=K.useMemo(()=>Object.values(r).flatMap(e=>{let t=e[0]?.owner;return t?.state===`bound`&&t.transportIdentity===o?[t]:[]}),[o,r]),p=sP(d),h=cP(),g=UP(),_=K.useMemo(()=>d.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),[d]),v=K.useRef(d);v.current=d;let y=K.useSyncExternalStore(K.useMemo(()=>e=>{if(!_)return()=>void 0;let t=v.current.map(e=>({directory:e.directory,sessionID:e.sessionID}));return Fe(t,e,e=>g.getChild(e),{subscribeRebuild:e=>g.subscribeRegistry(e)})},[g,_]),K.useMemo(()=>()=>{if(!_)return``;let e=v.current.map(e=>({directory:e.directory,sessionID:e.sessionID}));return en(e,e=>g.getChild(e))},[g,_]),()=>``),b=K.useCallback(e=>h(e),[h]),x=K.useCallback(e=>IB(Qt(e.directory,e.sessionID,g.getChild(e.directory))),[g]),[S,C]=K.useState(0),w=K.useRef(new Map),T=K.useRef(new Set);K.useEffect(()=>{if(!t||n!==`legacy-enabled`)return;let e=Date.now();$.getState().pruneQueueAbortBlocks(e);let s=new Set,l=new Set;for(let[t,n]of a)n.expiresAt>e&&l.add(t);for(let e of RB(i,c))s.add(e);let u=VB({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)F.getState().markQueueItemReconciling(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID});for(let e of u.dispatchScopes)F.getState().getQueueForScope(e)[0]&&YB(e.sessionID,{scope:e}).finally(()=>{C(e=>e+1)});for(let e of u.resolveOperations)ZB(e.scope,e.item);for(let e of u.queryOperations){T.current.add(e.key);let t=XB(e,f()).finally(()=>{T.current.delete(e.key),wB.delete(t),C(e=>e+1)});wB.add(t)}let d=BB(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 $B(){return!1}var eV={server:WR(),queue:vR(),status:e=>QI(I).then(t=>{if(e?.aborted)throw new DOMException(`Aborted`,`AbortError`);return t}),activate:DI,lateCommit:OI,capture:()=>({transportIdentity:u(),generation:f()}),current:e=>e.transportIdentity===u()&&e.generation===f(),quiesce:async()=>{await PB()},flush:async()=>{N()},prepare:ae,resolveDirectory:e=>$.getState().getDirectoryForSession(e)},tV=()=>({ownership:`probing`,migration:`idle`,frozen:!0,admission:`frozen`,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),nV=(e={})=>{let t={...eV,...e},n=tV(),r=0,i,a,o,c=500,l,u=!1,d=new Set,f=e=>{n={...n,...e};let r=n.ownership===`legacy-unsupported`;mB(r?`legacy-enabled`:`blocked`),b(r?`open`:n.migration===`freezing`||n.ownership===`probing`||n.ownership===`blocked`?`quiescing`:`recovery-read-only`),(n.ownership===`server-active`||n.ownership===`server-paused`)&&A(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 x(e,r,`late`),n):(f({migration:`staging`}),await x(e,r,`activation`),n):n):(h(Error(`capability-unavailable`)),n)}catch(r){return!t.current(e)||i?.signal.aborted?n:r instanceof X&&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),x=async(e,n,r)=>{let a=await jR({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 eL(I).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)}}},S,C=()=>{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++,S!==void 0&&(clearTimeout(S),S=void 0),!(r>1)&&(a=s(e=>{p(e)&&(i?.abort(),f(tV()),setTimeout(()=>{y()},0))}),y())},stop:()=>{r=Math.max(0,r-1),!r&&(S!==void 0&&clearTimeout(S),S=setTimeout(()=>{S=void 0,r||C()},0))},refresh:y}},rV,iV=()=>rV??=nV(),aV=t({confirmQueueAbortOptimistic:()=>kV,getQueueAbortOptimisticPresentation:()=>hV,getQueueAbortOptimisticRevision:()=>mV,inspectQueueAbortOptimisticTranscript:()=>TV,isQueueItemSendPendingByAbortOptimistic:()=>gV,planQueueAbortOptimisticReconcile:()=>EV,promoteQueueHeadOnAbort:()=>FV,reconcileQueueAbortOptimistic:()=>PV,rollbackQueueAbortOptimistic:()=>OV,subscribeQueueAbortOptimistic:()=>pV,useQueueAbortOptimisticReconcile:()=>IV}),oV=new Set([`queued`,`retrying`]),sV=new Set([`sending`,`reconciling`]),cV=new Set([`failed`,`unresolved`]),lV=new Map,uV=new Set,dV=0,fV=()=>{dV+=1;for(let e of uV)e()},pV=e=>(uV.add(e),()=>{uV.delete(e)}),mV=()=>dV,hV=e=>lV.get(e),gV=(e,t)=>lV.get(e)?.queueItemID===t,_V=(e,t)=>{let n;for(let r of fr(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},vV=e=>{let t=e?.[0];if(!(!t||!oV.has(t.status))&&t.deliveryTarget?.kind!==`assistant`)return t},yV=(e,t)=>{let n=F.getState(),r={state:`bound`,transportIdentity:u(),directory:t,sessionID:e};return vV(n.getQueueForScope(r))??vV(n.getQueueForScope(D(e)))},bV=(e,t)=>{let n=iV().getSnapshot().ownership;return n!==`server-active`&&n!==`server-paused`?void 0:vV(WR().getScope({transportIdentity:u(),directory:t,sessionID:e})?.items)},xV=e=>{let t=e.sendConfig?.providerID,n=e.sendConfig?.modelID;return!t||!n?null:{providerID:t,modelID:n,agent:e.sendConfig?.agent}},SV=e=>!!e&&typeof e==`object`&&e.__openchamberOptimistic===!0,CV=(e,t,n)=>{try{let r=H();return r?r.getTranscript(V(t,e)).partsByMessageID[n]??[]:[]}catch{return[]}},wV=(e,t,n)=>{let r=typeof e.id==`string`?e.id:``;if(!r||e.role!==`user`)return!1;let i=CV(t,n,r);return i.length!==0&&i.some(e=>!SV(e))},TV=(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}},EV=(e,t,n)=>{let r=e?.messageID;return e&&(oV.has(e.status)||sV.has(e.status))?r&&n&&r!==n?`rebind`:sV.has(e.status)||t.hasPinnedMessage?`confirm`:`keep`:e&&cV.has(e.status)?`rollback`:t.hasPinnedMessage?`confirm`:t.hasLaterUserMessage?`rollback`:`keep`},DV=e=>{let t=lV.get(e);if(t)return lV.delete(e),fV(),t},OV=e=>{DV(e)},kV=e=>{DV(e)},AV=e=>{if(e.source===`server`){let t=WR().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=E(F.getState(),t).find(t=>t.queueItemID===e.queueItemID)??E(F.getState(),D(e.sessionID)).find(t=>t.queueItemID===e.queueItemID);return n?{queueItemID:n.queueItemID,status:n.status,messageID:n.messageID}:null},jV=e=>{let t=fr(e.sessionID,e.directory).map(t=>({id:typeof t?.id==`string`?t.id:void 0,role:t?.role,optimistic:!wV(t,e.sessionID,e.directory)}));return TV(e.messageID,t)},MV=(e,t)=>{let n=lV.get(e);!n||!t||n.messageID===t||(lV.set(e,{...n,messageID:t}),fV())},NV=(e,t,n)=>{if(t===`confirm`)kV(e.sessionID);else if(t===`rollback`)OV(e.sessionID);else if(t===`rebind`&&n?.messageID){MV(e.sessionID,n.messageID);let t=lV.get(e.sessionID);if(!t)return;let r=EV(AV(t),jV(t),t.messageID);if(r===`rebind`)return;NV(t,r,AV(t))}},PV=e=>{let t=e?[lV.get(e)].filter(e=>!!e):[...lV.values()];for(let e of t){let t=AV(e);NV(e,EV(t,jV(e),e.messageID),t)}},FV=e=>{if(!e||lV.has(e))return lV.get(e)??null;let t=$.getState().getDirectoryForSession(e);if(!t)return null;let n=bV(e,t),r=n?void 0:yV(e,t),i=n??r;if(!i)return null;let a=xV(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)??de(`msg`,_V(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 lV.set(e,c),fV(),c};function IV(){let e=(0,U.c)(6),t=K.useSyncExternalStore(pV,mV,mV),n=F(WV),r;e[0]!==t||e[1]!==n?(r=[t,n],e[0]=t,e[1]=n,e[2]=r):r=e[2],K.useEffect(UV,r);let i;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[3]=i):i=e[3],K.useEffect(BV,i);let a;e[4]===t?a=e[5]:(a=[t],e[4]=t,e[5]=a),K.useEffect(LV,a)}function LV(){let e=[...lV.values()].map(zV);return Fe(e,RV)}function RV(){PV()}function zV(e){return{directory:e.directory,sessionID:e.sessionID}}function BV(){let e=WR().subscribe(HV),t=s(VV);return()=>{e(),t()}}function VV(){for(let e of[...lV.keys()])OV(e)}function HV(){PV()}function UV(){PV()}function WV(e){return e.queuedMessages}var GV=[`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(`
|
|
410
|
-
`);async function
|
|
398
|
+
`),Bd=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Vd=e=>{let t=e?.metadata;return Bd(t)?t:{}},Hd=e=>{let t=e.openchamber;return Bd(t)?t:{}},Ud=e=>{let t=Hd(Vd(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Wd=e=>{let t=Hd(Vd(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Gd=e=>Hd(Vd(e)).kind===`review`&&!!Wd(e),Kd=(e,t)=>{let n=Hd(e);return{...e,openchamber:{...n,reviewSessionID:t}}},qd=(e,t)=>{let n=Hd(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},Jd=(e,t)=>{let n=Hd(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},Yd=ke()(Ae((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:hr(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),Xd;(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})(Xd||={});var Zd=e=>e.type===`user`||e.type===`shell`;function Qd(e,t,n){if(!t&&!n)return;let r=t?e.findIndex(e=>e.id===t):-1;if(!t){let t=0;for(let n=e.length-1;n>=0;--n){let i=e[n];if(i.type===`idle`){t=n+1;break}if(Zd(i)){r=n,t=n+1;break}}let n=e[r];if(n?.type===`shell`&&n.status===`running`)return n.id;let i=e.slice(t).find(e=>e.type===`assistant`||e.type===`compaction`||e.type===`idle`||Zd(e))?.id;if(!i)throw Error(`Fork live boundary is not yet available`);return i}if(r<0)throw Error(`Fork boundary is not available in authoritative history`);let i=e[r];if(i.type===`user`)return i.id;if(i.type===`shell`)return e[r+1]?.id;for(let t=r+1;t<e.length;t+=1){let n=e[t];if(Zd(n))return n.id;if(n.type===`idle`)return e[t+1]?.id;if(n.type===`compaction`&&e[t-1]?.finish===`stop`)return n.id}if(n)throw Error(`Fork selected turn is still running`)}async function $d(e,t,n,r,i){if(!n&&!r)return;let a=[],o,s=new Set,c=AbortSignal.timeout(3e4);for(let l=0;l<1e3;l+=1){let l=await e.message.list({sessionID:t,limit:100,...o?{cursor:o}:{order:`desc`}},{signal:c});if(!i())throw Error(`Fork source changed while reading history`);if(a=[...l.data].reverse().concat(a),n?a.some(e=>e.id===n):a.some(e=>Zd(e)||e.type===`idle`))return Qd(a,n,r);if(l.data.length<100||!l.cursor.next){if(!n&&a.length)return Qd(a,n,r);break}if(s.has(l.cursor.next))throw Error(`Fork history cursor did not advance`);o=l.cursor.next,s.add(o)}throw Error(`Fork boundary is not available in authoritative history`)}var ef={type:`idle`};function tf(e,t){let n=e.session_interrupt_acknowledged_at?.[t],r=Math.max(e.session_status_observed_at[t]??0,e.session_status_snapshot_at??0);return n!==void 0&&n>=r?n:void 0}function nf(e,t){return tf(e,t)===void 0?e.session_status[t]:ef}function rf(e,t){return tf(e,t)??e.session_status_observed_at[t]}function af(e,t){return e.session_interrupt_acknowledged_at?.[t]!==void 0&&(e.session_interrupt_acknowledged_at={...e.session_interrupt_acknowledged_at},delete e.session_interrupt_acknowledged_at[t],!0)}function of(e){let{store:t,sessionID:n,isCurrent:r,request:i}=e,a=t.getState(),o=a.session_execution_version?.[n]??0,s=a.session_status[n]!==void 0,c=a.session_execution_recovery?.[n],l=new AbortController;return new Promise((e,a)=>{let u=!1,d=()=>{},f=()=>{let e=t.getState();return r()&&(e.session_execution_version?.[n]??0)===o&&(!s||e.session_status[n]!==void 0)&&e.session_execution_recovery?.[n]===c},p=(r,i)=>{u||(u=!0,d(),clearTimeout(m),l.abort(),r===`accepted`&&t.setState(e=>({session_interrupt_acknowledged_at:{...e.session_interrupt_acknowledged_at,[n]:Date.now()}})),i===void 0?e(r):a(i))};d=t.subscribe((e,t)=>{if(!f())return p(`superseded`);e.session_status[n]?.type===`idle`&&(e.session_status[n]!==t.session_status[n]||e.session_status_observed_at[n]!==t.session_status_observed_at[n])&&p(`settled`)});let m=setTimeout(()=>p(f()?`unconfirmed`:`superseded`),5e3);try{i(l.signal).then(()=>p(f()?`accepted`:`superseded`),e=>f()?p(`unconfirmed`,e):p(`superseded`))}catch(e){p(`unconfirmed`,e)}})}var sf=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},cf=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=sf(t.parentSessionId),r=sf(t.sessionId);if(!(!n||!r||n===r))return{parentSessionId:n,sessionId:r}},lf=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=cf(i);a&&t.push(a)}return t},uf=[],df=(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},ff=(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},pf=(e,t,n,r,i)=>{if(!n)return r;let a=df(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},mf=`GitHub issue context (JSON)`,hf=`GitHub pull request context (JSON)`,gf=e=>!e||typeof e!=`object`?!1:!!e.synthetic,_f=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>gf(e)),vf=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!gf(e)),n=e=>{if(!gf(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(mf)||n.startsWith(hf)};return t&&e.some(e=>gf(e))?e.filter(e=>!gf(e)||n(e)):e},yf=new Map,bf=new Map,xf=new Map,Sf=e=>{yf.set(e,(yf.get(e)??0)+1)},Cf=e=>(yf.get(e)??0)>0,wf=e=>{let t=yf.get(e)??0;return t<=0?!1:(t===1?yf.delete(e):yf.set(e,t-1),!0)},Tf=(e,t)=>{bf.set(e,t)},Ef=e=>bf.get(e)??null,Df=e=>{bf.delete(e)},Of=({sessionId:e,currentUserOrder:t,animatedIds:n})=>{let r=xf.get(e),i=null;if(Cf(e)){let r=t[t.length-1];r!==void 0&&!n.has(r)&&wf(e)&&(Tf(e,r),n.add(r),i=r)}if((!r||t.length>=r.length)&&xf.set(e,t),i!==null)return i;let a=Ef(e);return a===null?null:(t.includes(a)&&n.add(a),a)},kf=(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:Af(r),semantics:i}},Af=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)})},jf=`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).`,Nf=(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},Pf=e=>{let t=e,n=t.indexOf(Mf);for(;n!==-1;){let e=t.indexOf(`[`,n+74),r=e===-1?-1:Nf(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},Ff=e=>{if(!e.startsWith(jf))return[];try{let t=JSON.parse(e.slice(jf.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[]}},If=e=>e.length===0?null:e.map(e=>`[skill:${e}]`).join(` `),Lf=(e,t=36e3)=>{if(e.length===0)return null;let n=jf,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(`,`)}]`},Rf=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}},zf=(e,t)=>{let{sessionIds:n,skillNames:r}=Rf(e),i=n.map(e=>{let n=Yt(e,t),r=n?nt(n).find(t=>t.id===e):void 0,i=n?fr(e,n).flatMap(e=>{let t=He(e.id,n).filter(e=>e.type===`text`&&!gf(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=If(r);o&&a.push({text:o,synthetic:!0});let s=Lf(i);return s&&a.push({text:s,synthetic:!0}),a},Bf=50,Vf=15e4,Hf=e=>{let t=0;for(let n of Object.values(e.partsByMessageID))for(let e of n){let n=e;n.type===`text`&&!gf(n)&&typeof n.text==`string`&&(t+=n.text.length)}return t},Uf=async(e,t,n)=>{let{sessionIds:r}=Rf(e);if(r.length===0)return;let i=H();if(!i)return;let a=n?.maxPages??Bf,o=n?.maxChars??Vf;await Promise.all(r.map(async e=>{let n=Yt(e,t);if(!n)return;let r=V(n,e),s=i.getTranscript(r);s.messageOrder.length===0&&(await ar(n,e),s=i.getTranscript(r));let c=0;for(;!i.getPagination(r).isComplete&&c<a&&Hf(s)<o;)await ur(n,e),s=i.getTranscript(r),c+=1}))},Wf=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},Gf=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,Kf=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},qf=e=>e.replace(/\\/g,`/`),Jf=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,Yf=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}`}`),qf(n)}catch{return null}},Xf=(e,t)=>{let n=Jf(qf(e)),r=Jf(qf(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},Zf=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),Qf=(e,t)=>{let n=qf(e),r=Jf(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=Xf(n,t);if(r!==null){let t=Jf(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return Zf(a)},$f=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},ep=(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},tp=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},np=async(e,t={})=>{let n=t.createID??le,r=t.directory??t.root??null,i=e.filter(e=>!gf(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=>Pf(Gf(e))).filter(e=>e.trim().length>0).join(`
|
|
401
|
+
`),l=[];for(let e of o){let t=tp(e);t&&l.push(t)}for(let e of[...l].reverse())ep(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=O(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=ep(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:`)?Yf(t):null;if(o){let e=Qf(o,r),t=null;for(let n of e){let e=ep(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=Kf(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=T(s);if(t.startsWith(`data:`)){let e=await $f(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(Wf(t)){if(!ne(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=M(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=ge(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},rp=async(e,t={})=>{let n=t.createID??le,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=ge(r,i),o=M(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=T(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await $f(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(Wf(i)){if(!ne(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}},ip=e=>e?JSON.parse(JSON.stringify(e)):null,ap=e=>e?{...e}:{},op=(e,t=so.getState())=>{let n=t.getDraft?.(e)??null,r=ap(t.draftAttachmentViews?.[P(e)]);return{record:ip(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},sp=async e=>{let t=e.input??so.getState(),n=op(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}},cp=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}}},lp=async e=>{let t=e.input??so.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?cp({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},up=(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},dp=e=>e?.status===`committed`&&e.current===!0,fp=new Map,pp=async(e,t)=>{let n=P(e),r=fp.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);fp.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),fp.get(n)===o&&fp.delete(n)}},mp=(e,t)=>({key:e,addLocal:async n=>{await pp(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await pp(e,async()=>{let r=t(),i=up(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 pp(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 pp(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:dp(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await pp(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await pp(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await pp(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),hp=4e4,gp=0,_p=null;function vp(e=Date.now()){gp=e}function yp(e){return _p=e,()=>{_p===e&&(_p=null)}}function bp(e){_p?.(e)}function xp(e=Date.now(),t=hp){return gp<=0?!1:e-gp>=t}var Sp=3e4,Cp=200,wp=new Map;function Tp(e,t,n){return`${n?.transport??u()}\n${n?.generation??f()}\n${e.trim()}\n${t}`}function Ep(e,t,n){if(!e||!t)return!1;let r=wp.get(Tp(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Sp}function Dp(e,t,n){if(!e||!t)return;let r=Tp(e,t,n);for(wp.has(r)&&wp.delete(r);wp.size>=Cp;){let e=wp.keys().next().value;if(typeof e!=`string`)break;wp.delete(e)}wp.set(r,n?.now??Date.now())}var Op=768,kp=()=>{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},Ap=()=>{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(z())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=Op&&kp()?`mobile`:`desktop`},jp=()=>Ap()===`mobile`,Mp=3,Np=2,Pp=4,Fp=4,Ip=100,Lp=30;function Rp(){return a()?`relay`:`local`}function zp(e=Rp()){return e===`relay`?Np:Mp}function Bp(e=Rp()){return e===`relay`?Fp:Pp}function Vp(e){return zp(Wp(e))}function Hp(){return Ip}function Up(){return Lp}function Wp(e){return e===`relay`||e===`local`?e:Rp()}var Gp=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function Kp(){return{pages:[],pageParams:[]}}function qp(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 Jp(e){return{pages:Object.freeze(e.pages.map(qp)),pageParams:Object.freeze([...e.pageParams])}}function Yp(e,t,n=Gp){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 qp({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function Xp(e){if(!e||e.pages.length===0)return tn;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 Zp(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=Xp(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function Qp(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function $p(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 qp({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:Qp(t)}})}function em(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`?tm(e,i):null;if(!e||e.pages.length===0||r===`initial`&&!d)return Jp({pages:[$p(`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 Jp({pages:[$p(`tail`,nm(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=[$p(`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(rm(i,o,s,a)),g.push(e.pageParams[r]??null)}return Jp({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?rm(t,r===`reconcile-page`||r===`initial`?nm(i,m):[...i,...m],s,a):rm(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]=qp({...e,cursor:t,complete:n,sync:{...e.sync,liveRevision:a}}))}return Jp({pages:h,pageParams:[...e.pageParams]})}function tm(e,t){if(!e||e.pages.length===0)return null;let n=Xp(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 nm(e,t){let n=e.slice();for(let e of t){let t=tr(e),r=n.length;for(let e=0;e<n.length;e+=1)if(Ie(t,tr(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function rm(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&&im(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||om(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:qp({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:Qp(t)}})}function im(e,t){return e===t||e.id===t.id&&e===t}function am(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 om(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!am(e[n],t[n]))return!1;return!0}function sm(e){return e.filter(e=>!!e?.id)}function cm(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 bn(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 lm(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=em(e??Kp(),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&&om(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 Jp({pages:e.pages.map((t,n)=>rm(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function um(e,t){let n=Zp(e,t),r=Xp(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 dm(e,t,n,r){if(!pr(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?ym(e,t,i,r):{data:e,result:{applied:!1,changed:!1}}}let{draft:i,previousBoundary:a}=um(e,t),o=Cn(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=cm(n,i,t),c=new Set;return s&&c.add(s),{data:lm(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function fm(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 pm(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 mm(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=um(e,t),o=!1,s=0,c,l=new Set,u=fm(e),d=pm(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(!pr(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=ym(s>0||l.size>0?lm(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=mm(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=Cn(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=cm(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&&om(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&&im(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:lm(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function hm(e,t,n,r,i){let a=e&&e.pages.length>0?e:Jp({pages:[$p(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=Zp(a,t),s=o.message[t]?[...o.message[t]]:[],c=s.findIndex(e=>e.id===n.id);c<0?s.push(n):s[c]=on(s[c],n);let l={...o.part,[n.id]:sm(r)};return{data:Jp({pages:a.pages.map((e,t)=>t===a.pages.length-1?rm(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]?rm(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 gm(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:Jp({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 rm(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function _m(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=Zp(e,t),i=$t({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:Xp(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=Jp({pages:[$p(`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:Xp(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=Jp({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?rm(t,nm(r,l),o,a):rm(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:Xp(u)}}}function vm(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=Zp(e,t),a=Xt(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:em(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 dm(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return mm(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return hm(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 gm(e,n.messageID,t)}case`durable-seed`:return _m(e,t,n);case`reset`:return n.page?vm(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 ym(e,t,n.to,r+1)}default:return{data:e,result:{applied:!1,changed:!1}}}}function ym(e,t,n,r){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1},needsAuthorityRecovery:!0};let i=Dm(e,t),a=i.messageOrder,o=a.findIndex(e=>e===n),s=Xp(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=>or(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 bm(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 xm(e,t,n,r=`materialize`){return vm(e,n,{type:`http-page`,purpose:r,page:bm(t),liveRevision:t.sync.liveRevision}).data}function Sm(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return Jp(t);if(t.pages.length===e.pages.length){let r=Em(e,t);if(r===e)return e;if(Tm(e,t)||wm(e,t))return r;let i=t.pages[t.pages.length-1];return xm(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0],i=vm(e,n,{type:`http-page`,purpose:`prepend`,page:bm(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 xm(e,r,n)??Jp(t)}return Jp(t)}function Cm(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function wm(e,t){let n=Cm(e),r=Cm(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=Dm(e,``),a=Dm(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Tm(e,t){let n=Cm(e);if(n.size===0)return!1;let r=Cm(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=Dm(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||Ie(tr(t),tr(n))>0)return!1}return!0}function Em(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,qp(t))});return!n&&e.pageParams.length===t.pageParams.length?e:Jp({pages:r,pageParams:[...t.pageParams]})}function Dm(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:Xp(e),liveRevision:a}}var Om=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},km=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Am=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},jm=e=>e.trim(),Mm=e=>e?.trim()||`tail`,Nm=new Set([502,503,504]),Pm=[`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 Fm(e){if(!e||e instanceof Om||e instanceof km)return!1;if(e instanceof Am)return e.status>=400&&e.status<500?!1:Nm.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(Nm.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(Nm.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:Pm.some(e=>n.includes(e))}function Im(e,t){return e>=2?!1:Fm(t)}var Lm=(e,t=u(),n=f())=>[t,n,`sessionMessages`,`page`,jm(e.directory),e.sessionID,e.limit,Mm(e.before)],Rm=(e,t=u(),n=f())=>[t,n,`session-transcript`,jm(e.directory),e.sessionID];function zm(e){if(!e||typeof e!=`object`)throw new km(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new km(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new km(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new km(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new km(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new km(`session message page: cursor must be string when set`);return e}function Bm(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 km(`session message page: complete=false requires non-empty cursor`);if(r===n)throw new km(`session message page: prepend returned the same cursor without progress`)}var Vm=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}:{}})},Hm=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw new Om},Um=(e,t,n=u(),r={},i=(r.getGeneration??f)())=>{let a=jm(e.directory),o=e.sessionID,s=e.limit,c=e.before?.trim()||void 0;return{queryKey:Lm({directory:a,sessionID:o,limit:s,before:c},n,i),queryFn:async({signal:e})=>{Hm(n,i,r);let l=await t({directory:a,sessionID:o,limit:s,before:c,signal:e});Hm(n,i,r);let u=zm(l);return Bm(c,u),Vm(u)},staleTime:1/0,gcTime:3e5,retry:Im,retryDelay:e=>Math.min(500*2**e,4e3)}},Wm=(e,t,n=I,r=u(),i={},a=(i.getGeneration??f)())=>n.fetchQuery(Um(e,t,r,i,a));function Gm(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 Km(e){return Vm({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function qm(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function Jm(e){let t=jm(e.directory),n=e.sessionID,r=e.transport??u(),i=e.probe??{},a=e.generation??(i.getGeneration??f)(),o=e.initialLimit??zp(),s=e.historyLimit??Bp(),c=e.client??I,l=Rm({directory:t,sessionID:n},r,a),d=async t=>Km(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:l,queryFn:async e=>{Hm(r,a,i);let l=e.pageParam?.trim()||void 0,u=l?s:o,f=l?`prepend`:`initial`,p=await Wm({directory:t,sessionID:n,limit:u,before:l},d,c,r,i,a);Hm(r,a,i);let m=Gm(p);return Yp(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:qm,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:!1,maxPages:void 0,structuralSharing:(e,t)=>Sm(e,t,n)}}function Ym(e){let t=e.client??I,n=Jm({...e,client:t}),r=new Er(t,{...n,structuralSharing:(t,n)=>Sm(t,n,e.sessionID)});return{queryKey:n.queryKey,observer:r,ensureInitial:async()=>{let e=r.getCurrentResult().data;if(e&&e.pages.length>0)return Jp(e);let t=await r.refetch(),n=t.data??r.getCurrentResult().data;if(n&&n.pages.length>0)return Jp(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:Jp(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return Jp(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:Jp(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function Xm(e,t,n,r){let i=e.getQueryData(t),a=vm(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 Zm(e,t=I,n=u(),r=f()){return t.getQueryData(Rm(e,n,r))}function Qm(){return ye()||jp()}function $m(){return ye()?4:jp()?12:40}var eh=1048576,th=4*eh,nh=12*eh,rh=40*eh;function ih(){return ye()?th:jp()?nh:rh}var ah=e=>e.trim();function oh(e){return{transport:e.transport,generation:e.generation,directory:ah(e.directory),sessionID:e.sessionID}}function sh(e){let t=oh(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function ch(e){return`${e.transport}\n${e.generation}\n${ah(e.directory)}`}var lh={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function uh(e,t,n){return[t,n,lh.checkpoint,ah(e.directory),e.sessionID]}function dh(e){let t=oh(e);return[{queryKey:Rm({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,lh.transportPageRoot,lh.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,lh.taskRoot,lh.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,lh.taskRoot,lh.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:uh({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function fh(){let e=new Map;return{retain(t){let n=oh(t),r=sh(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(sh(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(sh(t))?.count??0},clear(){e.clear()}}}function ph(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var mh=3e4;function hh(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function gh(e){return!Array.isArray(e)||e.length<5||e[2]!==lh.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 _h(e){let t=e.client,n=e.activeRegistry??fh(),r=e.counters??ph(),i=e.getLimit??$m,a=e.now??Date.now,o=e.minResidencyMs??mh,s=new Map,c=new Map,l=e=>{let t=oh(e),n=sh(t),r=c.get(t.sessionID);r||(r=new Map,c.set(t.sessionID,r)),r.set(n,t)},u=e=>{let t=oh(e),n=sh(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=gh(e.queryKey);t&&l(t)}let f=t.getQueryCache().subscribe(e=>{if(e.type===`added`||e.type===`updated`){let t=gh(e.query.queryKey);t&&l(t);return}if(e.type===`removed`){let t=gh(e.query.queryKey);t&&u(t)}}),p=e=>{let t=sh(oh(e));s.set(t,a())},m=e=>{let t=sh(oh(e)),n=s.get(t);return n!==void 0&&a()-n<o},h=e=>{let r=oh(e);if(n.isRetained(r))return!0;let i=Rm({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:ah(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=gh(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:hh(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:ah(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=oh(e);s.delete(sh(t)),u(t);for(let t of dh(e))v(t)},b=(e,t)=>{r.purgeGeneration+=1,d(e,t);let n=[[e,t,lh.canonical],[e,t,lh.transportPageRoot,lh.transportPageKind],[e,t,lh.taskRoot],[e,t,lh.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=>sh(oh(e)))),o=g({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=ch(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=sh(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(sh(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 vh=new Map,yh=new Set;function bh(e,t){return`${e}\n${t}`}function xh(){for(let e of yh)e()}function Sh(e,t){if(!e||!t)return;let n=bh(e,t),r=vh.get(n)??0;vh.set(n,r+1),r===0&&xh()}function Ch(e,t){if(!e||!t)return;let n=bh(e,t),r=vh.get(n);if(r){if(r<=1){vh.delete(n),xh();return}vh.set(n,r-1)}}function wh(e,t){if(!e)return!1;if(t)return vh.has(bh(t,e));let n=`\n${e}`;for(let e of vh.keys())if(e.endsWith(n))return!0;return!1}function Th(e){return yh.add(e),()=>{yh.delete(e)}}function Eh(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 Dh(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&&Sh(n,i.scope.sessionID);let o=()=>{_.delete(o)&&i.gap&&Ch(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`&&Hn(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(...Eh({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 Oh=e=>e.trim(),kh=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session status runtime changed`)},Ah=(e,t={})=>{let n=Oh(e),r=t.transport??u(),i=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),a=t.now??Date.now,o=t.runtimeProbe??{},s=(o.getGeneration??f)();return Ar({queryKey:L.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{kh(r,s,o);let t=a(),c=await i(n,e);if(kh(r,s,o),c===null)throw Error(`session status snapshot unavailable`);return{snapshot:c,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},jh=(e,t={})=>{let{client:n=I,...r}=t;return n.fetchQuery(Ah(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`)},Nh=(e={})=>{let t=e.transport??u(),n=e.loadActive??(e=>B.getSessionActive(e)),r=e.now??Date.now,i=e.runtimeProbe??{},a=(i.getGeneration??f)();return Ar({queryKey:L.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})},Ph=(e={})=>{let{client:t=I,...n}=e;return t.fetchQuery(Nh(n))},Fh;function Ih(e){Fh=e}function Lh(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 Rh(e,t){return JSON.stringify(e)===JSON.stringify(t)}function zh(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Bh(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 Vh(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(Bh(e,t,n),!0)}function Hh(e,t,n=Date.now()){let r=e.getState().session_status?.[t];return r?.type===`busy`?!1:r?.type===`retry`?Vh(e,t,n):(Bh(e,t,n),!0)}function Uh(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=Lh(o[e]);if(t){c[e]=n&&zh(n,r)?n:{type:`busy`};continue}if(i?.tailOpenSessionIds?.has(e)&&(n?.type===`retry`||n?.type===`busy`)){c[e]=n;continue}c[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:c,source:`fused`}}function Wh(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=Lh(t[o]);if(n&&n.type!==`idle`){Rh(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 Gh(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Kh(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 jh(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 Ph({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}=Uh(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=Gh(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Wh(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Fh;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 qh({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:Kh(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Jh(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Yh(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 Xh(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 Zh(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(Xn(e))??Promise.resolve(),r.get(cn(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=Xn(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=cn(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??ih)();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 Qh=new Map;function $h(e,t){let n=Qh.get(e);if(n)return n;let r=t().finally(()=>{Qh.get(e)===r&&Qh.delete(e)});return Qh.set(e,r),r}var eg=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function tg(e){return $h(eg(e),e.request)}function ng(e,t){return`${e}\n${t}`}var rg=new Map;function ig(e){return rg.get(e)}async function ag(e){return tg({runtimeKey:ng(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 rg.set(r.id,i),{info:pd(r),parts:i}}})}function og(e,t){let n=e.info;return n.role===t||n.clientRole===t}function sg(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!og(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 cg(e){if(e.complete){let t=e.records.some(e=>og(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=sg(e.records);if(t.length===0){let t=e.records.some(e=>og(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=>og(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function lg(e){return e.slim===!0}var ug=/bearer|token|authorization|password|secret|cookie/i,dg=new Set([`message.part.delta`]);function fg(e){return typeof e==`string`&&e.includes(`-`)}var pg=`openchamber.client-diagnostics.enabled`;function mg(e){return e===`true`||e!==`false`&&null}function hg(e){return e.preference===!0||e.preference!==!1&&fg(e.version)}function gg(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function _g(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function vg(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 yg(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return ug.test(t)?`redacted-error`:t}function bg(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)lg(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function xg(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function Sg(e){let t=0;for(let n of e.messageOrder)Ig(e.messagesByID[n])===!0&&(t+=1);return t}function Cg(e){let t=e.transcript?bg(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:xg(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:Sg(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...yg(e.error??e.request?.error)?{error:yg(e.error??e.request?.error)}:{},...vg(e.error)===void 0?{}:{httpStatus:vg(e.error)}}}function wg(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 Tg(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 Eg(e){return typeof e==`string`&&dg.has(e)}function Dg(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return Eg(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>Eg(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 Og(e){if(e.type===`http-page`)return e.purpose}function kg(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function Ag(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 jg(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 ug.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function Ng(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function Pg(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var Fg=e=>typeof e==`string`&&e.trim().length>0;function Ig(e){if(!e||Ng(e)!==`assistant`)return;let t=e,n=!Fg(t.mode)&&!Fg(t.agent),r=!Fg(t.modelID)||!Fg(t.providerID);return n||r}function Lg(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function Rg(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)lg(e)?r+=1:i+=1,jg(e)&&(a=!0);let o=e.messagesByID[t],s=Ng(o),c=Ig(o),l=s===`user`?Mg(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:Pg(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 zg(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:Lg(e),after:Lg(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 Bg(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:zg(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 Vg(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function Hg(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function Ug(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Wg(e){let t=Ug(e.partID),n=Ug(e.messageID),r=Ug(e.directory),i=Ug(e.childSessionID),a=Ug(e.toolStatus),o=Ug(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 Gg(e){return[e.sessionID,Ug(e.partID)??``,e.childSessionPresent?`1`:`0`,Ug(e.childSessionID)??``,Ug(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`,Ug(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Kg(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Wg(e)}}function qg(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:Hg(e),...Wg(e)}}var Jg=`openchamber-transcript-diagnostics`,Yg=`events`,Xg=1,Zg=(e,t)=>{try{return e.error??Error(t)}catch{return Error(t)}},Qg=(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`))}}}),$g=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Xg),i=!1,a=()=>{i||(i=!0,n(Zg(r,`IndexedDB open failed`)))};r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Yg)||e.createObjectStore(Yg,{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}),e_=(e=Jg)=>{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=$g(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(Yg,e)}catch(e){throw l(),e}let i=r.objectStore(Yg),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 Qg(n.add(t),n.transaction);let r=await Qg(n.getAllKeys(),n.transaction),i=r.length-t;if(i>0)for(let e of r.slice(0,i))await Qg(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=>Qg(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 Qg(e.clear(),e.transaction)})}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})}}};function t_(e={}){let t=e.driver??e_(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var n_=Cr(`OpenChamberMedia`);function r_(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function i_(){return Ln()&&wr!==void 0&&wr.isPluginAvailable(`OpenChamberMedia`)}function a_(){return`2.0.2`}function o_(){if(typeof localStorage>`u`)return null;try{return mg(localStorage.getItem(pg))}catch{return null}}function s_(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(pg,e?`true`:`false`)}catch{}}function c_(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var l_;function u_(e=a_()){return hg({version:e,preference:o_()})}function d_(e={}){return Tg({sink:c_()===`indexeddb`?(e.createIndexedDBSink??t_)():(e.createMemorySink??wg)(),isEnabled:e.isEnabled??u_})}function f_(){return l_??=d_(),l_}function p_(e){f_().record(e)}function m_(e){try{return u_()?Rg(e()):void 0}catch{return}}function h_(e){try{p_(Bg(e))}catch{}}function g_(e){try{p_(Kg(e))}catch{}}function __(e){try{p_(qg(e))}catch{}}function v_(e){if(e!==void 0)return typeof e==`function`?e():e}function y_(e){return!Dg(e.command)||e.changed===!1&&(e.command.type===`sse-event`||e.command.type===`sse-event-batch`)?!1:(e.isEnabled??(()=>f_().isEnabled()))()}function b_(e){if(!y_(e))return;let t=Dg(e.command);t&&p_(Cg({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:v_(e.transcript),request:v_(e.request),hydration:v_(e.hydration),command:e.command.type,purpose:Og(e.command),sseType:kg(e.command),source:Ag(e.command),error:e.error}))}async function x_(){let e=await f_().exportReport(),t=te()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function S_(e,t=gg()){if(i_())return(await n_.saveFile({dataBase64:r_(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 C_(){let e=await x_(),t=gg();return{content:e,fileName:t,outcome:await S_(e,t),eventCount:_g(e)}}function w_(e){return e.trim()}function T_(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??u)(),r=e.generation??t.generation??(t.probe?.getGeneration??f)();return{directory:w_(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function G(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function E_(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:tn,liveRevision:0}}function D_(e,t){if(!e||e.pages.length===0)return E_(t);let n=Dm(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function O_(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function k_(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)O_(n.partsByMessageID[e])&&r.add(e);return r}function A_(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 j_(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)||O_(e.partsByMessageID[r])||n.push(r);return n}function N_(e={}){let t=e.client??I,n=e.cacheBudget??_h({client:t,activeRegistry:e.activeRegistry??fh()}),r=n.activeRegistry,i=new Map,a=new Map,o=new Map,s=new Map,c=new Map,p=e.durableStore?Zh(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Jh),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=G(t);if(x.has(n))return;let r=F(e);!gt(r)&&!b.has(n)||(x.add(n),p_(Cg({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=T_(n,e);return Zm({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},ee=t=>{let n=T_(t,e);return Rm({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},te=t=>{let n=T_(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=T_(n,{...e,transport:void 0,generation:void 0,probe:r}),o=G(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=Ym({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 Om(`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},ie=t=>{let n=G(T_(t,e)),r=a.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},ae=n=>{let r=G(T_(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]&&ie(n)});o.set(r,a)},oe=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)},se=(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},P=(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)},F=t=>{let n=T_(t,e),r=G(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=D_(i,n.sessionID),s=se(r,o);return a.cachedFrom=i,a.hasTranscriptCache=!0,s},ce=(e,t)=>`${G(e)}\n${t}`,le=(e,t)=>{let n=G(e),r=v.get(n);r&&(r.delete(t),r.size===0&&v.delete(n))},ue=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t)},de=e=>{for(let t of g.keys())t.startsWith(e)&&g.delete(t);for(let t of _.keys())t.startsWith(e)&&_.delete(t)},fe=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)},L=e=>{let t=`${G(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,me=t=>{let n=T_({directory:t.directory,sessionID:t.sessionID},e);return!pe&&n.transport===t.transport&&n.generation===t.generation},he=(e,t,n)=>{p&&d()&&p.persistSettled(Jh(e),t,n??[])},R=(e,t,n,r)=>{if(!p||j>0||!d()||!r.applied||!r.changed)return;let i=Jh(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=F(e);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;he(t,n,r.partsByMessageID[e.info.id]??e.parts)}}else if(n.type===`revert-committed`){let n=F(e);for(let e of n.messageOrder){let r=n.messagesByID[e];r&&he(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=F(e);for(let e of r){let n=Xh(e);if(n.action===`remove`){p.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&he(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=F(e),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&he(t,n,r.partsByMessageID[e.info.id])}}}},ge=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 Yh(await Wm({directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??zp()},r,t,n.transport,i,n.generation))},_e=(e,t)=>{for(let n of t){let t=`${e.directory}\n${e.sessionID}\n${n}`;Ct(t,()=>z.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)}},ve=(e,t)=>{let r=G(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 ge(t);if(!me(t)||l()!==a||!k(r,o))return m.delete(r),z.getTranscript(e);z.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Dp(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=z.getParts(e,i),c=z.getMessage(e,i)??a.info;if(!qt(o,c)){le(t,i),g.set(ce(t,i),{status:`ready`}),r+=1;continue}n.push(i)}r>0&&ie(e),_e(e,n)}return m.delete(r),n.noteScopeObserved(te(e)),ne(e),z.getTranscript(e)}catch(n){if(n instanceof Om||!me(t))return m.delete(r),z.getTranscript(e);throw m.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),p_(Cg({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:F(e),request:z.getRequestState?.(e),hydration:z.getHydrationState?.(e),error:n})),n}finally{h.delete(r)}})();return h.set(r,s),s},ye=new Map,be=(e,t)=>{let r=G(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 z.refreshFromAuthority(e),!me(t)||l()!==a||!k(r,o)?(m.delete(r),z.getTranscript(e)):(Dp(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),m.delete(r),n.noteScopeObserved(te(e)),ne(e),z.getTranscript(e))}catch(n){return m.delete(r),n instanceof Om||!me(t)||p_(Cg({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:F(e),request:z.getRequestState?.(e),hydration:z.getHydrationState?.(e),error:n})),z.getTranscript(e)}finally{h.delete(r)}})();return h.set(r,s),s},xe=t=>{let n=N(t);return!n||n.pages.length===0||y.has(G(T_(t,e)))?!0:Xp(n).kind===`unknown`},z={getTranscript(e){return F(e)},getPagination(t){let n=T_(t,e),r=G(n),i=z.getTranscript(t);return P(r,rt(n.sessionID,i.boundary))},getRequestState(t){let n=T_(t,e),r=m.get(G(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(G(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=T_(t,e),r=G(n),i=z.getTranscript(t);gt(i)&&b.set(r,!0);let a=b.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Wt({p0Satisfied:a,prependActive:S.has(r),materializeActive:L(n),earlierHistoryLoaded:st(i)>1})}},hasSession(e){return N(e)!==void 0},getMessage(t,n){let r=G(T_(t,e)),i=M(r),a=z.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=G(T_(t,e)),i=M(r),a=z.getTranscript(t).partsByMessageID[n]??P_,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=T_(t,e),i=g.get(ce(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!z.getMessage(t,n)||v.get(G(r))?.has(n)||Ue(z.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=T_(t,e),i=l(),a=ce(r,n),o=m_(()=>z.getTranscript(t)),s=e=>{try{let t=m_(e);if(!o||!t)return;h_({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(!z.getMessage(t,n))return g.set(a,{status:`idle`}),z.getTranscript(t);if(!Ue(z.getParts(t,n))&&!v.get(G(r))?.has(n))return g.set(a,{status:`ready`}),z.getTranscript(t);g.set(a,{status:`loading`}),ie(t);try{let o=await ag({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 B.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n}),i=qe(r.sessionID,t);if(!i?.info?.id)throw Error(`session.message failed: empty response`);return{data:{info:i.info,parts:[...i.parts??[]]}}}});return!me(r)||l()!==i?(g.delete(a),z.getTranscript(t)):(z.apply(t,{type:`materialize-snapshots`,records:[{info:o.info,parts:o.parts??[]}]}),Ue(z.getParts(t,n))?g.set(a,{status:`error`,error:`session.message failed: slim parts remain`}):g.set(a,{status:`ready`}),ie(t),z.getTranscript(t))}catch(e){if(!me(r)||l()!==i)return g.delete(a),z.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return g.set(a,{status:`error`,error:n}),ie(t),z.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=T_(r,e),s=ee(r),c=(()=>{switch(a.type){case`http-page`:{let e=G(o),n=T.get(e);if(typeof n==`number`&&!k(e,n))return{applied:!1,changed:!1,error:`stale-read-epoch`};let i=Xm(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&&(ie(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?z.apply(r,{type:`revert-committed`,to:e}):{applied:!1,changed:!1}}let e=Xm(t,s,o.sessionID,{type:`sse-event`,event:a.event});return e.result.applied&&y.delete(G(o)),e.result.changed&&ie(r),e.result}case`sse-event-batch`:{let e=a.events,n=!1,i=!1,c=[],l=()=>{if(c.length===0)return;let e=Xm(t,s,o.sessionID,{type:`sse-event-batch`,events:c});c=[],e.result.applied&&(i=!0,y.delete(G(o))),e.result.changed&&(n=!0,ie(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=z.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=Xm(t,s,o.sessionID,{type:`optimistic-add`,message:a.message,parts:a.parts});return n.result.changed&&ie(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:o.directory,sessionID:o.sessionID,messageID:a.messageID}),Xm(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=Xm(t,s,o.sessionID,{type:`optimistic-remove`,messageID:a.messageID});return n.result.changed&&ie(r),n.result}case`reset`:{if(S.delete(G(o)),v.delete(G(o)),y.delete(G(o)),n.purgeSession(te(r)),!a.page)return ie(r),{applied:!0,changed:!0};let e=Xm(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)&&(ie(r),ne(r)),e.result}case`materialize-snapshots`:return F_(t,s,o.sessionID,a,()=>ie(r));case`remove-message`:{let e=Xm(t,s,o.sessionID,{type:`optimistic-remove`,messageID:a.messageID});return e.result.changed&&ie(r),e.result}case`revert-committed`:{let c=G(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),de(`${c}\n`);let u=Xm(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(Jh(o)).catch(()=>void 0),ie(r),e.fetcher&&z.ensureInitial(r).catch(()=>void 0),{applied:!0,changed:!0}):(u.result.applied&&y.delete(c),u.result.changed&&(ie(r),ne(r)),{applied:!0,changed:u.result.changed})}default:return{applied:!1,changed:!1}}})();return R(r,o,a,c),c.applied&&(b_({directory:o.directory,sessionID:o.sessionID,transport:o.transport,generation:o.generation,command:a,transcript:()=>z.getTranscript(r),request:()=>z.getRequestState?.(r),hydration:()=>z.getHydrationState?.(r),error:c.error,changed:c.changed}),A(r,o)),c},subscribe(t,i){let o=G(T_(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),ae(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))}oe(o)}}},async ensureInitial(t){let a=T_(t,e),o=l(),s=G(a);if(p&&await p.wait(Jh(a)),l()!==o)return z.getTranscript(t);if(N(t)===void 0&&e.durableStore&&d())try{let n=await e.durableStore.readSession(Jh(a));if(me(a)&&l()===o&&N(t)===void 0&&n.records.length>0){j+=1;try{z.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)qt(t.parts,t.info)&&e.add(t.info.id);e.size>0&&v.set(s,e),y.add(s)}finally{--j}}}catch(e){p_(Cg({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 z.getTranscript(t);if(xe(t)&&N(t)!==void 0){let e=Date.now(),n=await ve(t,a);return p_(Cg({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:z.getRequestState?.(t),hydration:z.getHydrationState?.(t)})),A(t,a),n}let u=N(t);if(u&&u.pages.length>0&&!xe(t)&&e.fetcher&&!r.isRetained(te(t))){let e=Date.now(),n=await be(t,a);return p_(Cg({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:z.getRequestState?.(t),hydration:z.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 z.getTranscript(t);throw p_(Cg({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:F(t),request:z.getRequestState?.(t),hydration:z.getHydrationState?.(t),error:e})),e}if(l()!==o)return i.get(s)===f&&(n.purgeSession(te(t)),c.delete(s),ie(t)),z.getTranscript(t);m.delete(s),g||Dp(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(te(t)),ne(t);let _=z.getTranscript(t);return p_(Cg({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:z.getRequestState?.(t),hydration:z.getHydrationState?.(t)})),A(t,a),_},async fetchPreviousPage(n){if(xe(n)&&await z.ensureInitial(n),Xp(N(n)).kind!==`has-more`)return z.getTranscript(n);let r=T_(n,e),i=G(r),a=O(i);S.add(i),ie(n);let o=Date.now();try{if(await re(n).fetchPreviousPage(),!k(i,a))return z.getTranscript(n);ne(n);let e=z.getTranscript(n);return p_(Cg({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:z.getRequestState?.(n),hydration:z.getHydrationState?.(n)})),e}catch(e){if(!k(i,a)){let e=N(n);return e&&t.setQueryData(ee(n),e),z.getTranscript(n)}throw p_(Cg({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),ie(n)}},getController(t){let n=T_(t,e);return i.get(G(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=T_(r,e),o=G(a),s=O(o),c=`${o}\n${s}\n${l()}`,u=ye.get(c);if(u)return u;let d=(async()=>{let c=l(),u=m_(()=>z.getTranscript(r)),d=z.getTranscript(r),f={...d.messagesByID},p={...d.partsByMessageID},m=await i({directory:a.directory,sessionID:a.sessionID,limit:e.initialLimit??zp(),signal:new AbortController().signal});if(l()!==c||!k(o,s))return z.getTranscript(r);if(!me(a))return z.getTranscript({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation});let h=z.getTranscript(r),g=k_(f,p,h),_=(m.coverageMessageIDs??m.records.map(e=>e.info.id)).some(e=>h.messagesByID[e]!==void 0),v=wt({fetched:j_(m),previous:A_(h),touched:g,coverageMessageIDs:m.coverageMessageIDs,completeTail:m.complete===!0}),y=h.liveRevision;z.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_(z.getTranscript(r),b);for(let t of x)z.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)}),ie(r))}let S=z.getTranscript(r);Dp(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(te(r)),Dn(a.sessionID,S.messageOrder);try{let e=m_(()=>S);u&&e&&h_({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})();ye.set(c,d);try{return await d}finally{ye.get(c)===d&&ye.delete(c)}},async destructiveReset(t){let r=m_(()=>z.getTranscript(t)),a=te(t);return p&&await p.clearSession(Jh(T_(t,e))),n.destructiveReset(a,async()=>{let n=T_(t,e),a=G(n),o=i.get(a);if(o&&(o.destroy(),i.delete(a)),c.delete(a),fe(a),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await z.ensureInitial(t);try{let e=m_(()=>s);r&&e&&h_({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=G(T_(t,e)),a=i.get(r);a&&(a.destroy(),i.delete(r)),c.delete(r),de(`${r}\n`),v.delete(r),fe(r),n.purgeSession(te(t)),ie(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)),ie(e)}}de(t),ue(t),fe(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)}de(`${e}\n${t}\n`),ue(`${e}\n${t}\n`),fe(`${e}\n${t}\n`),n.purgeGeneration(e,t),p&&p.clearGeneration({transport:e,generation:t})},destroy(){pe=!0,ye.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 z}var P_=Object.freeze([]);function F_(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=Xm(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var I_=`/api/openchamber/transcript-cache`,L_=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),R_=e=>typeof e==`object`&&!!e&&!Array.isArray(e),z_=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},B_=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},V_=e=>{if(!R_(e))throw Error(`Invalid transcript cache scope`);return{transport:z_(e.transport,`scope`),generation:B_(e.generation,`scope`),directory:z_(e.directory,`scope`),sessionID:z_(e.sessionID,`scope`)}},H_=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},U_=e=>{if(!R_(e)||!R_(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!R_(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:V_(e.scope),messageID:z_(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>H_(e,`part completeness`)),completeness:H_(e.completeness,`completeness`),contentHash:z_(e.contentHash,`content hash`),byteSize:B_(e.byteSize,`byte size`),lastAccessedAt:B_(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:B_(e.sortKey.created,`sort key`),messageID:z_(e.sortKey.messageID,`sort key`)}}},W_=(e,t)=>{if(!R_(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(U_);return{scope:e.scope===void 0?rn(t):V_(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},G_=e=>{if(!R_(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:U_(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!L_.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:U_(e.record)}}}throw Error(`Invalid transcript cache upsert`)},K_=e=>{if(!R_(e))throw Error(`Invalid transcript cache evict`);return{evicted:B_(e.evicted,`evict`),freedBytes:B_(e.freedBytes,`evict`),remainingBytes:B_(e.remainingBytes,`evict`)}},q_=e=>({scope:rn(e),records:[],byteSize:0}),J_=(e,t)=>R_(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Y_=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`)}},X_=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 Y_(r)};let i=await Y_(r).catch(()=>void 0);throw Error(J_(i,`Transcript cache request failed (${r.status})`))},Z_=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Q_=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function $_(e={}){let t=e.fetch??_;return{async readSession(e){let n=await X_(t,`${I_}/session`,{method:`GET`,query:Z_(e)});return n.kind===`disabled`||n.kind===`not-found`?q_(e):W_(n.payload,e)},async readMessage(e,n){let r=await X_(t,`${I_}/message`,{method:`GET`,query:{...Z_(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!R_(r.payload))throw Error(`Invalid transcript cache record`);return U_(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await X_(t,`${I_}/message`,Q_(`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 G_(i.payload)},async removeMessage(e,n){let r=await X_(t,`${I_}/message`,Q_(`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 X_(t,`${I_}/session`,Q_(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await X_(t,`${I_}/generation`,Q_(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await X_(t,`${I_}/evict`,Q_(`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 K_(r.payload)},async clearAll(){let e=await X_(t,`${I_}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var ev=`openchamber-transcript-durable`,tv=1,nv=`transcriptIndex`,rv=`transcriptContent`,iv=class extends Error{code;constructor(e){super(e),this.code=e}},av=e=>({id:Bn(e.scope,e.messageID),scope:rn(e.scope),scopeKey:Xn(e.scope),generationKey:cn(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}),ov=(e,t)=>({scope:rn(e.scope),messageID:e.messageID,info:Mt(t.info),parts:Mt(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}}),sv=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return ov(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},cv=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},lv=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),uv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new iv(`database-unavailable`));return}let r=indexedDB.open(e,tv),i=!1,a=()=>{i||(i=!0,n(new iv(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(nv)){let t=e.createObjectStore(nv,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(rv)||e.createObjectStore(rv,{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}),dv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new iv(`database-unavailable`)),r.onblocked=()=>void 0}),fv=(e=ev)=>({transaction:async t=>{let n=await uv(e),r=n.transaction([nv,rv],`readwrite`),i=r.objectStore(nv),a=r.objectStore(rv),o=e=>lv(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:()=>dv(e)});function pv(e,t={}){let n=gn(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(av(t)),En(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(Xn(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=ov(t,r);a.lastAccessedAt=n(),await e.putIndex(av(a)),i.push(a)}return qn(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await sv(e,Bn(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=er({info:i,incomingCompleteness:Mn(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=Mt(a.slice()),c=Mn(s),l=await Rn(i,s),u=Bn(t,i.id);return e.transaction(async e=>{let a=await sv(e,u),o=er({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:En(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:rn(t),messageID:i.id,info:Mt(i),parts:s,partCompleteness:s.map(dn),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:tr(i)};return await e.putIndex(av(d)),await e.putContent({id:u,info:Mt(i),parts:s}),{status:`written`,record:En(d)}})},async removeMessage(t,n){await e.transaction(e=>cv(e,Bn(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(Xn(t));for(let t of n)await cv(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(cn(t));for(let t of n)await cv(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(Xn)),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?Ie(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await cv(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 mv(e={}){return pv(e.driver??fv(e.databaseName),e)}function hv(e={}){let t=e.isDesktopShell??z,n=e.isDesktopLocalOriginActive??_e,r=e.isVSCodeRuntime??ye,i=e.isCapacitorApp??Ln;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var gv=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function _v(e={}){let t,n,r=()=>(t??=(e.createHttpStore??$_)(),t),i=()=>(n??=(e.createIndexedDBStore??mv)(),n),a=()=>hv(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=>gv([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function vv(e={}){await _v(e).clearAll()}var yv=3e4;async function bv(e,t=yv){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 xv(e){return e.filter(e=>!!e?.id)}function Sv(e){return typeof e.info?.time?.created==`number`?e.info.time.created:0}function Cv(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=Sv(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&&Sv(n)<o||i.push(n)}let s=i.filter(e=>or(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 wv(e,t){let n=e;for(let e=0;e<4&&n.turnCount===0&&n.cursor&&!n.complete;e+=1){let e=await zt({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=>or(e.info,e.parts)).length}}return n}async function Tv(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(),yv);try{return await bv(Ev({...e,signal:t.signal}))}finally{clearTimeout(r),e.signal.removeEventListener(`abort`,n),t.abort()}}async function Ev(e){e.before||e.purpose;let t=await zt({sessionID:e.sessionID,directory:e.directory,...e.before?{cursor:e.before}:{},signal:e.signal});e.signal.throwIfAborted();let n=e.before?null:await cr({sessionID:e.sessionID,directory:e.directory,signal:e.signal});e.signal.throwIfAborted();let r=Cv(t,n),i=e.before?r:await wv(r,e),a=i.records.map(e=>({info:pd(e.info),parts:xv(e.parts??[])}));if(!e.before&&!i.complete&&sg(a).length>0){let t=B.getScopedSdkClient(e.directory);a=(await cg({records:a,complete:i.complete,requestMessage:async n=>{let r=await ag({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=qe(e.sessionID,r);if(!i?.info?.id)throw Error(`session.message failed: empty response`);return{info:pd(i.info),parts:xv(i.parts??[])}}});return{info:r.info,parts:xv(r.parts??[])}}})).records.map(e=>({info:e.info,parts:xv(e.parts??[])}))}return e.signal.throwIfAborted(),lr(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 Dv(e){let t=e.client??I,n=fh(),r=_h({client:t,activeRegistry:n}),i=N_({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:u,getGeneration:f},fetcher:e=>Tv({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:zp(),historyLimit:Bp(),durableStore:e.durableStore??_v()}),a=Dh({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 Kh(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return sn(i),Tn(a),{repository:i,destroy:()=>{a.cancelAll(`dispose`),Tn(null),i.destroy(),bt()}}}function Ov(e){return Je().apply(V(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 kv=new Map;function Av(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function jv(e,t,n,r={}){let i=r.getTransportIdentity??u,a=r.getGeneration??f,o=i(),s=a(),c=Av(e,t,o,s),l=()=>i()===o&&a()===s,d=kv.get(c)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=d.catch(()=>void 0).then(()=>m);kv.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(),kv.get(c)===h&&kv.delete(c)}}function Mv(e){let t=Jn(),n=e.directory.trim();return Ar({queryKey:[t.transportIdentity,t.generation,`session-inbox`,n,e.sessionID],queryFn:async({signal:r})=>{if(!Zn(t))throw Error(`Runtime changed`);let i=Fn.getState().list(e.sessionID),a=await Nt({sessionID:e.sessionID,directory:n,signal:AbortSignal.any([r,AbortSignal.timeout(1e4)])});if(r.aborted||!a.current||!Zn(t))throw Error(`Runtime changed`);return mn(e.sessionID,a.items,{startedMark:a.startedMark,observedItems:i}),a},staleTime:0,gcTime:6e4,retry:1,retryDelay:250})}function Nv(e){return I.fetchQuery(Mv(e))}var Pv=()=>!1,Fv=new Set,Iv=new Set,Lv=new Set,Rv=new Set,zv={onDeleteRequest(e){return Fv.add(e),()=>{Fv.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||Fv.forEach(t=>t(e))},onCreateRequest(e){return Iv.add(e),()=>{Iv.delete(e)}},requestCreate(e){let t=e??{};Iv.forEach(e=>e(t))},onDirectoryRequest(e){return Lv.add(e),()=>{Lv.delete(e)}},requestDirectoryDialog(){Lv.forEach(e=>e())},onGitRefreshHint(e){return Rv.add(e),()=>{Rv.delete(e)}},requestGitRefresh(e){e.directory.trim()&&Rv.forEach(t=>t(e))}},Bv=50,Vv=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},Hv=ke()(Me(Ae((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:Vv(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:hr(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),Uv=new Set([`todowrite`,`todoread`]),Wv=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),Gv=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Kv=(e,t)=>{Hv.getState().setSessionTodos(e,t)},qv=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Jv=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Yv=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},Xv=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Yv(n);e&&t.push(e)}return t},Zv=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Xv(t);if(t&&typeof t==`object`)return Xv(t.todos)}catch{}return[]},Qv=e=>{if(!Uv.has(qv(e)))return[];let t=Jv(e);if(t&&Wv.has(t))return[];let n=e.state,r=Xv(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Xv(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Xv(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?Zv(i):[]};function $v(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=Qv(r[e]);if(t.length>0)return t}}return[]}function ey(e){if(!e.sessionID||e.isStale?.()||Gv(e.store.getState().todo,e.sessionID))return!1;let t=$v(e.transcript);return t.length===0||e.isStale?.()||Gv(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function ty(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(V(e.directory,e.sessionID));return t?ey({sessionID:e.sessionID,store:e.store,transcript:t,persist:Kv,isStale:e.isStale}):!1}var ny=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>nx,COMBINED_SEND_PRESENCE_GRACE_MS:()=>tx,SESSION_DELETE_UNDO_MS:()=>wb,abortBusySessionForMessageEdit:()=>_x,abortCurrentOperation:()=>cx,archiveSession:()=>Pb,beginOptimisticSend:()=>Kb,cancelScheduledSessionDeletes:()=>Nb,classifySendFailure:()=>qy,combinedSendConfirmationOptions:()=>rx,commitMessageEdit:()=>yx,commitStagedRevertBeforeSend:()=>Rb,createSession:()=>vb,deleteSession:()=>jb,dirStoreForDirectory:()=>Ny,dismissOpenQuestionsForSession:()=>px,dismissQuestion:()=>dx,ensureSentUserMessagePresence:()=>ox,fetchMessagesForSession:()=>wx,fetchRecentSendConfirmationRecords:()=>$b,forkSession:()=>Sx,getSendFailureKind:()=>Gy,isQuestionRequestNotFoundError:()=>hb,isQuestionSubmissionClaimedError:()=>mb,materializeConfirmedSendRecords:()=>ex,mirrorSessionIntoLiveStores:()=>By,optimisticInsertUserMessage:()=>Zb,optimisticSend:()=>Xb,patchSessionMetadata:()=>yb,refetchSessionMessages:()=>bx,rejectQuestion:()=>fx,releaseUnconfirmedQueueSend:()=>Ay,requestSessionSmartTitle:()=>Lb,respondToPermission:()=>lx,respondToQuestion:()=>ux,revertToMessage:()=>mx,rollbackOptimisticSend:()=>Jb,scheduleSessionDeletes:()=>Mb,setActionRefs:()=>Oy,setOptimisticRefs:()=>ky,settleOptimisticSend:()=>Yb,settleSessionPromptAfterSend:()=>Dy,shareSession:()=>zb,shouldSuppressForkCopyEvent:()=>_y,stageMessageEdit:()=>gx,trackForkCopySessionCreated:()=>dy,unarchiveSession:()=>Fb,unrevertSession:()=>xx,unshareSession:()=>Bb,updateSessionTitle:()=>Ib,waitForConnectionOrThrow:()=>Zy,waitForSessionIdleForMessageEdit:()=>vx}),ry=2,iy=150,ay=new Set([`patch`,`step-start`,`step-finish`]),oy=3,sy=150,cy=null,ly=new Map,uy=3e4;function dy(e,t){let n=t?.id;!cy||cy.runtimeKey!==m()||cy.directory!==e||!n||t?.title!==cy.expectedTargetTitle||n===cy.sourceSessionID||cy.targetSessionID||(cy.targetSessionID=n)}function fy(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 py(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function my(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function hy(e){return e?.type===`busy`||e?.type===`retry`}async function gy(e,t){let n=Vd(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return B.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function _y(e,t,n){if(cy&&cy.runtimeKey===m()&&cy.directory===e&&t&&t===cy.targetSessionID)return!0;if(!t||!n)return!1;let r=`${m()}:${e}:${t}`,i=ly.get(r);return i?i.expiresAt<=Date.now()?(ly.delete(r),!1):i.messageIDs.has(n):!1}var vy=null,yy=null,by=()=>``,xy=new Map,Sy=null,Cy=null,wy=null,Ty=e=>new Promise(t=>setTimeout(t,e));async function Ey(e){return(await zt({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=Hb(),n=()=>Ub(t);e.inboxID&&n()&&Nn({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 Nt({sessionID:e.sessionId,directory:e.directory});if(!n()||!t.current)return;let i=t.items.find(t=>t.id===e.inboxID);i?(nr(i,{startedMark:t.startedMark}),r=!0):r=!1}catch{r=!0}let i=[];try{let t=await Ey({sessionID:e.sessionId,directory:e.directory,limit:Up()});if(!n())return;i=t.map(e=>e.info.id)}catch{return}e.delivery!==`queue`&&e.inboxID&&!r&&i.includes(e.inboxID)&&ln(e.sessionId,e.inboxID,`consumed`);try{await an({optimisticID:e.optimisticID,promotedIDs:i,removeOptimistic:t=>{n()&&Cy?.({sessionID:e.sessionId,directory:e.directory,messageID:t})},refreshFromAuthority:async()=>{n()&&await bx(e.sessionId,e.directory??void 0)}})}catch{}}function Oy(e,t,n){if(vy=e,yy=t,by=n,xy.size>0){let e=[...xy.values()];xy.clear(),queueMicrotask(()=>{for(let t of e)wx(t.sessionID,t.directory)})}}function ky(e,t,n){Sy=e,Cy=t,wy=n??null}function Ay(e){let t=e.directory??null;Cy?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function jy(){if(!vy)throw Error(`SDK not initialized — is SyncProvider mounted?`);return vy}function My(){if(!yy)throw Error(`Child stores not initialized`);let e=by();if(!e)throw Error(`No current directory`);return yy.ensureChild(e)}function Ny(e,t){if(!yy)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return yy.ensureChild(e,t)}function Py(e,t){let n=mo(e)??t??rb(e);return n?{store:Ny(n),directory:n}:{store:My(),directory:Vy()}}function Fy(e,t){let{store:n,directory:r}=Py(e,t??void 0),i=r??Vy()??``;return{repository:H()??Et(i,n),directory:i,store:n}}function Iy(e,t){let{repository:n,directory:r,store:i}=Fy(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(V(r,e))}}function Ly(e,t){return lt(Iy(e,t).data)}function Ry(e,t){return Iy(e,t).data.messageOrder.length}function zy(e,t){let n=yy;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]=Bw(e,n[r]),t.setState({session:i}),!0}return!1}function By(e,t){t&&zy(e,t)||zy(e)}function Vy(){return by()||void 0}function Hy(){let{hasEverConnected:e,lastDisconnectReason:t}=W.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function Uy(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 Wy=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 Gy(e){return e instanceof Wy?e.kind:null}function Ky(e){let t=Uy(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 qy(e,t){return t?Ky(e)||Uy(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var Jy=2e3,Yy=5e3,Xy=3e4;async function Zy(){let e=xp();e&&bp(`send_stream_stale`);let t=Date.now()+(e?Yy:Jy);for(;Date.now()<t;){if(W.getState().isConnected&&!xp()||n()&&!xp())return;let e=t-Date.now();if(e<=0)break;if(await W.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!xp())return;let r=Math.min(100,t-Date.now());r>0&&await new Promise(e=>setTimeout(e,r))}throw Hy()}function Qy(e){return new Promise((t,n)=>{let r=setTimeout(()=>{bp(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},Xy);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function $y(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function eb(e){e&&Y.getState().upsertSession(e)}function tb(e,t){let n=dd(t),r=[...e.getState().session],i=Xd.search(r,n.id,e=>e.id);if(i.found){let t=Bw(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 nb(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=$y(e);if(i)return tb(t,i);try{return tb(t,await B.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function rb(e){return mo(e)||ib(e)||$.getState().getDirectoryForSession(e)||Vy()}function ib(e){let t=yy;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=H()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function ab(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):jy()}function ob(e){so.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&&so.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var sb=()=>new Map(Array.from(kt(),([e,t])=>[e,t.title||e]));function cb(e){return!(e.type!==`file`||gf(e))}function lb(e){return cb(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function ub(e){return e.some(lb)}async function db(e){let t=[...e.parts];if(!ub(t))return t;let n=f(),r=e.directory??``;try{await sr(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}=Fy(e.sessionID,r);if(t=[...i.getParts(V(a,e.sessionID),e.messageID)],ub(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function fb(e){if(ub(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await np(e.parts,{sessionTitles:sb(),directory:e.directory}),n=so.getState(),r=n.getDraft(e.key);return{payload:t,commit:await sp({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function pb(e,t,n){let r=yy;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 mb(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.status===409&&t.code===`question_submission_claimed`}function hb(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 gb(e,t){let n=yy;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 _b(e,t,n,r){let i=mo(t)||(typeof r==`string`&&r.trim().length>0?r.trim():null)||pb(e,t,n)||rb(t)||Vy();return i?B.getScopedSdkClient(i):ab(t)}async function vb(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??Vy()),a=i.directory??null;return a&&Ut(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),Y.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function yb(e,t,n){let r=t??rb(e),i=n(Vd(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Ut(a.id,o),a}async function bb(e,t){let n;try{n=await B.getSession(e,t??rb(e))}catch{return}if(!Gd(n))return;let r=Wd(n);if(r)try{await yb(r,t??rb(r),t=>Jd(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 xb(e,t){if(!yy)return[];let n=[],r=new Set,i=[];if(t){let e=yy.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of yy.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 Sb(e){if(yy)for(let t of e){let e=yy.children.get(t.directory);e&&e.setState({session:t.sessions})}}function Cb(e){$.getState().setWorktreeMetadata(e,null)}var wb=1e4,Tb=new Map,Eb=0;function Db(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function Ob(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),Sb(e.listSnapshots),eb(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function kb(e,t){let n=t??rb(e);Y.getState().markSessionsPendingDeletion([e]);let r=xb(e,n),i=$y(e);Y.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function Ab(e,t){try{if(await bb(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return xb(e,t),Y.getState().removeSessions([e]),Cb(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(xb(e,t),Y.getState().removeSessions([e]),Cb(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function jb(e,t){let n=kb(e);return await Ab(e,n.directory)?!0:(Ob(n),!1)}function Mb(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>kb(e)),i=`session-delete-${Date.now()}-${Eb+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=Tb.get(i);if(!e)return;Tb.delete(i);let t=[],n=[];for(let r of e.entries)await Ab(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),Ob(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return Tb.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function Nb(e){if(!e)return!1;let t=Tb.get(e);if(!t)return!1;clearTimeout(t.timer),Tb.delete(e);for(let e of[...t.entries].reverse())Ob(e);return!0}async function Pb(e){let t=rb(e),n=xb(e,t),r=$y(e),i=Date.now(),a=Hb(),o=()=>f()===a.generation&&u()===a.identity;Y.getState().archiveSessions([e],i);let s=$.getState();s.currentSessionId===e&&s.setCurrentSession(null);try{if(await bb(e,t),!o())throw Error(`session archive aborted because the runtime changed`);let n=await B.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 Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),o()?(Sb(n),eb(r),!1):!1}}async function Fb(e){let t=rb(e),n=$y(e),r=n?Db(n):null,i=Hb(),a=()=>f()===i.generation&&u()===i.identity;if(r&&(Y.getState().upsertSession(r),t&&yy)){let e=yy.children.get(t);e&&tb(e,r)}try{let n=await B.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(Y.getState().upsertSession(r),t&&yy){let e=yy.children.get(t);e?tb(e,r):By(r,t)}else By(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),a()&&n&&(Y.getState().upsertSession(n),typeof n.time?.archived==`number`&&n.time.archived>0&&xb(e,t)),!1}}async function Ib(e,t){let n=rb(e),r=$y(e),i=r?ed(r):0;await B.updateSession(e,{metadata:{openchamber:{titleAuthority:{sessionID:e,title:t,revision:le(),source:`manual`},titleRefresh:{activityUpdatedAt:i}}}},n);let a=await B.updateSession(e,{title:t},n);Y.getState().upsertSession(a),By(a,n)}async function Lb(e){let t=rb(e),n=$y(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await B.updateSession(e,{metadata:{openchamber:{titleRefresh:{...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),By(s,t)}async function Rb(e,t){let n;try{n=Py(e,t??void 0)}catch{return}let{store:r,directory:i}=n;return jv(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 tt({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}=Fy(e,i);t.apply(V(n,e),{type:`revert-committed`,to:a})}catch{}})}async function zb(e){if(!Pv())return null;throw Jt(`session.share`)}async function Bb(e){throw Jt(`session.unshare`)}function Vb(e){let t=yy,n=e??by();if(!t||!n)return{store:e?Ny(e):My(),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 Hb(){return{identity:u(),generation:f()}}function Ub(e){return u()===e.identity&&f()===e.generation}function Wb(e,t){return e.isCurrent()&&Ub(t)}function Gb(e,t){if(!Wb(e,t))throw Error(`Send target changed before transport dispatch`)}function Kb(e){if(!Sy||!Cy)throw new Wy(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??Vy()??null,n=Vb(t),r=Hb();Gb(n,r),e.beforeOptimisticInsert?.(),Gb(n,r);let i=e.messageID??Ce(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),Sf(e.sessionId),Zb({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 Wy?e:new Wy(Gy(e)??qy(e,!1),e)}}function qb(e){if(!Wb(e.capture,e.transport)||!Cy)return;Cy({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 Jb(e){qb(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function Yb(e){if(!Sy||!Cy)throw new Wy(`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 Zy(),Gb(n,r),s=!0,await Qy(e.send(i)),!Wb(n,r))throw new Wy(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Gy(c)??qy(c,s),u=c instanceof Wy?c:new Wy(l,c,i);if(!Wb(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await $b(a,i,o):null;if(d&&Wb(n,r)){ex(n.store,a,i,d,{directory:o??void 0}),wy?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||qb(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function Xb(e){if(e.delivery===`queue`){let t=Vb(e.directory),n=Hb(),r=e.messageID??Ce(`msg`),i=!1;try{e.onMessageID?.(r),await Zy(),Gb(t,n),i=!0,await Qy(e.send(r)),Gb(t,n),e.onSendConfirmed?.(r)}catch(e){throw e instanceof Wy?e:new Wy(qy(e,i),e,r)}return}await Yb({ticket:e.ticket??Kb({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 Zb(e){if(!Sy)return!1;let t=e.directory??Vy(),n=t?Ny(t):My(),r=t??Vy()??``;if(ix(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now(),i={...t};return af(i,e.sessionId),n.setState({session_interrupt_acknowledged_at:i.session_interrupt_acknowledged_at,session_execution_version:{...t.session_execution_version,[e.sessionId]:(t.session_execution_version?.[e.sessionId]??0)+1},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:Ce(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:Ce(`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:Ce(`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=m_(()=>Iy(e.sessionId,t).data);Sy({sessionID:e.sessionId,directory:t,message:s,parts:i});let l=m_(()=>Iy(e.sessionId,t).data);try{c&&l&&h_({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:u(),generation:f(),before:c,after:l})}catch{}let d=n.getState(),p={...d};return af(p,e.sessionId),n.setState({session_interrupt_acknowledged_at:p.session_interrupt_acknowledged_at,session_execution_version:{...d.session_execution_version,[e.sessionId]:(d.session_execution_version?.[e.sessionId]??0)+1},session_status:{...d.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...d.session_status_observed_at,[e.sessionId]:a}}),!0}function Qb(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function $b(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??ry,c=r?.retryDelayMs??iy;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!Qb(r?.isCurrent)||a>0&&(await Ty(c),i?.signal.aborted||!Qb(r?.isCurrent)))return null;try{let a=await Ey({sessionID:e,directory:n,limit:Up(),...i?{signal:i.signal}:{}});if(!Qb(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 ex(e,t,n,r,i){if(!r.length)return;let a=i?.directory??rb(t)??by(),o=V(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:pd(e.info),parts:e.parts??[]})),skipPartTypes:ay,merge:i?.gapFillOnly===!0?pn:vn({purpose:`recovery`})};Sn(o,s)||Et(a,e).apply(o,s)}var tx=2e3,nx={attempts:12,retryDelayMs:500},rx={presenceGraceMs:tx,recovery:{...nx}};function ix(e,t,n,r){let i=r??rb(t)??by()??``,a=H()??Et(i,e),o=V(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function ax(e,t,n,r){let i=r?.directory??rb(t)??by()??``;if(ix(e,t,n,i))return Promise.resolve(!0);if(!Qb(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=H()??Et(i,e),f=V(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!Qb(r?.isCurrent)){l(!1);return}ix(e,t,n,i)&&l(!0)}),ix(e,t,n,i)&&l(!0)})}async function ox(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await ax(t,n,r,{timeoutMs:e.graceMs??rx.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!Qb(a))return`cancelled`;let o=await $b(n,r,i,{...rx.recovery,isCurrent:a});return o?Qb(a)?(ex(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:Qb(a)?`missing`:`cancelled`}var sx=new WeakMap;function cx(e){let{store:t,directory:n}=Py(e),r=Hb(),i=yy,a=t.getState().session_execution_version?.[e]??0,o=()=>Ub(r)&&i===yy&&(!n||i?.getChild(n)===t)&&(t.getState().session_execution_version?.[e]??0)===a,s=sx.get(t);s||(s=new Map,sx.set(t,s));let c=s.get(e);if(c?.current())return c.promise;let l=n?{state:`bound`,transportIdentity:u(),directory:n,sessionID:e}:null,d=l?$.getState().beginQueueAbortBlock(l):null,f=()=>{o()&&(l&&d&&$.getState().clearQueueAbortBlock(l,d),Tr(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>oV);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{o()&&t(e)}).catch(()=>{}),Nr.error(Br(zr.getState().dictionary,`chat.chatInput.stopUnconfirmed`)))},p=of({store:t,sessionID:e,isCurrent:o,request:t=>Le({sessionID:e,directory:n,signal:t})}).then(e=>{e===`unconfirmed`&&f()},()=>f()).finally(()=>{s.get(e)?.promise===p&&s.delete(e)});return s.set(e,{current:o,promise:p}),p}async function lx(e,t,n){await Zy();let r=pb(`permission`,e,t)||rb(e)||Vy();await it({sessionID:e,requestID:t,reply:n,directory:r})}async function ux(e,t,n,r){await Zy();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n],a=_b(`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 hb(n)&&gb(e,t),n}}async function dx(e,t,n){let r=f(),i=u(),a=_b(`question`,e,t,n),o=()=>r===f()&&i===u();if(await Zy(),!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()&&gb(e,t)}catch(n){throw o()&&hb(n)&&gb(e,t),n}}async function fx(e,t,n){await Zy();try{await _b(`question`,e,t,n).session.form.cancel({sessionID:e,formID:t})}catch(n){throw hb(n)&&gb(e,t),n}}async function px(e){if(!e)return!1;let t=yy;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=df(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)gb(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await fx(e,t)}catch(e){if(hb(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function mx(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 jv(e,r??(()=>{try{return Py(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:a,directory:s}=Py(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 Le({sessionID:e,directory:s})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let l=Ly(e,s).find(e=>e.id===t),d=Ly(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}=Fy(e,s),m=[...f.getParts(V(p,e),t)],h=i===void 0?o?re({transportIdentity:u()},e):null:i,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await db({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await np(m,{sessionTitles:sb(),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=so.getState(),r=await sp({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 lp({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 mt({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 lp({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&&zv.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 lp({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(a.setState({session:r}),h&&v&&_!==void 0&&await lp({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function hx(e,t,n,r){let i=r??rb(t)??by(),a=V(i,t),o=[...Ge(t)];o.some(e=>e.directory===i&&e.sessionID===t)||o.push(a);let s=!1;for(let e of o)Sn(e,{type:`revert-committed`,to:n})!=null&&(s=!0);s||Et(i,e).apply(a,{type:`revert-committed`,to:n})}async function gx(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=Py(e,o).directory}else{s=Py(e,o).directory;let{data:n}=Iy(e,s),r=lt(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??re({transportIdentity:u()},e),{commit:l}=await fb({key:c,parts:await db({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 lp({key:c,restoredRevision:d,previous:f})).status})}}async function _x(e,t){let n=t?.directory,{store:r,directory:i}=Py(e,n),a=r.getState().session_status[e];!a||a.type===`idle`||await Le({sessionID:e,directory:i})}async function vx(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=Py(e,n),o=Date.now()+r,s=Hb();for(;Date.now()<o;){if(!Ub(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 yx(e,t,n){let{store:r,directory:i}=Py(e,n?.directory);return jv(e,i,async({isCurrent:a})=>{let o=()=>{if(!a())throw Error(`Session history mutation aborted because the runtime changed`)},s=()=>{let r=Ly(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 _x(e,{directory:i}),o(),await vx(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=m_(()=>Iy(e,i).data),p=await mt({sessionID:e,messageID:t,directory:i,files:!1});o(),c(p);try{s(),await tt({sessionID:e,directory:i})}catch(n){if(o(),Ky(n))try{await B.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),hx(r,e,t,i);return}try{l?c(await mt({sessionID:e,messageID:l.messageID,directory:i,files:!!l.files?.length})):(await Zt({sessionID:e,directory:i}),c(void 0))}catch{o()}throw n}o(),c(void 0),hx(r,e,t,i);try{let t=m_(()=>Iy(e,i).data);d&&t&&h_({trigger:`user-edit`,sessionID:e,directory:i,transport:u(),generation:f(),before:d,after:t})}catch{}})}async function bx(e,t){let{store:n,directory:r}=Py(e,t),i=m_(()=>Iy(e,t).data),a=await Ey({sessionID:e,directory:r,limit:Hp()});if(a.length===0){try{let n=m_(()=>Iy(e,t).data);i&&n&&h_({trigger:`materialize`,sessionID:e,directory:r,transport:u(),generation:f(),purpose:`refetch`,before:i,after:n})}catch{}return[]}let o=a.map(e=>({info:pd(e.info),parts:e.parts??[]})),s=V(r??by(),e);Sn(s,{type:`materialize-snapshots`,records:o,skipPartTypes:ay})||Et(r??by(),n).apply(s,{type:`materialize-snapshots`,records:o,skipPartTypes:ay});try{let n=m_(()=>Iy(e,t).data);i&&n&&h_({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 xx(e,t){return jv(e,t??(()=>{try{return Py(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=Py(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Ry(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Le({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}if(await Zt({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<oy;r+=1){if(r>0&&(await Ty(sy),!n())||(await bx(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Ry(e,i)>o)return}if(Ry(e,i)<=o){let n=i??by(),a=H()??Et(n,r),o=V(n,e),s=a.destructiveReset;typeof s==`function`?await s(o):await bx(e,t)}})}async function Sx(e,t,n,r){let i=m(),a=Hb(),{store:o,directory:s}=Py(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await nb(e,o,s);if(!Ub(a)||c.directory&&c.directory!==s)throw Error(`Fork source changed while reading identity`);Ut(e,s);let l=o.getState(),u=l.session_status[e],d=Ly(e,s);u?.type,d.length;let f=()=>Ub(a)&&rb(e)===s,p=await $d(B.getScopedSdkClient(s),e,n,hy(u),f);l.session_status[e]?.type;let{repository:h,data:g}=Iy(e,s),_=n?g.messagesByID[n]??d.find(e=>e.id===n):void 0,v=n?[...h.getParts(V(s,e),n)]:[];if(n&&(!_||ub(v))){let t=await B.getScopedSdkClient(s).session.message.get({sessionID:e,messageID:n});if(!f())throw Error(`Fork source changed while reading the selected message`);let r=qe(e,t);if(r&&(_=r.info,v=r.parts),ub(v))throw Error(`Fork attachment is unavailable`)}let y=or(_,v),b=y?v:[],x=``;x=b.filter(e=>e.type===`text`&&!gf(e)).map(e=>e.text||e.content||``).join(`
|
|
404
|
+
`).trim();let S=b.filter(e=>e.type===`file`&&!gf(e));cy={operationId:t,runtimeKey:i,directory:s,sourceSessionID:e,expectedTargetTitle:fy(c.title)},await py(t,`copying`);let C;try{if(!f())throw Error(`Fork source changed before copying`);if(C=await B.forkSession(e,p,s),C.id,m()!==i)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:C.id}),cy?.operationId===t&&(cy=null),!1;let n=[...o.getState().session],r=Xd.search(n,C.id,e=>e.id);r.found||(n.splice(r.index,0,C),o.setState({session:n})),my(t,C.id);let a=$.getState().currentSessionId;(a===e||a===C.id)&&$.getState().setCurrentSession(C.id,s,{skipMessageFetch:!0}),await py(t,`opening`);try{C=await gy(C,s)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw cy?.operationId===t&&(cy=null),e}try{let e=V(s,C.id),r=H(),i=r?.destructiveReset;r&&typeof i==`function`?await i(e):Sn(e,{type:`reset`}),await py(t,`loading`),C.id,$.getState().currentSessionId,C.id;let a=H()??Et(s,o),c=V(s,C.id),l=a.getRequestState?.(c);(!(a.hasSession?.(c)??!1)||l?.status===`error`)&&await wx(C.id,s);let u=Ly(C.id,s);u.at(-1)?.id&&ly.set(`${m()}:${s}:${C.id}`,{messageIDs:new Set(u.map(e=>e.id)),expiresAt:Date.now()+uy});let d=$.getState().currentSessionId===C.id;d&&y&&x&&so.setState({pendingInputText:x,pendingInputMode:`replace`}),d&&y&&n&&ob(S)}finally{cy?.operationId===t&&(cy=null)}return C.id,!0}var Cx=new Map;async function wx(e,t){let n=mo(e)??t??Vy();if(!n)return;let r=m(),i=Vp(),a=JSON.stringify([u(),f(),n,e,i]);if(!vy||!yy){xy.set(a,{sessionID:e,directory:n});return}let o=Cx.get(a);if(o)return o;let s=Promise.all([Tx(e,n,r,i),Nv({sessionID:e,directory:n}).catch(()=>void 0)]).then(()=>void 0).finally(()=>{Cx.get(a)===s&&Cx.delete(a)});return Cx.set(a,s),s}async function Tx(e,t,n,r){jy();let i=Ny(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=H()??Et(t,i),l=V(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(Ep(t,e)){ty({directory:t,sessionID:e,store:i,transcript:u});return}if(H()){try{await ar(t,e)}catch{return}if(y())return;ty({directory:t,sessionID:e,store:i,isStale:y}),await qh({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}ty({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{if(H())await ar(t,e),b=c.getTranscript(l).messageOrder.length;else{let n=await Tv({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:ay}),b=n.records.length,Dp(t,e)}}catch{return}y()||(ty({directory:t,sessionID:e,store:i,isStale:y}),await qh({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var Ex=18e4,Dx=400,Ox=300,kx=15,Ax=`FINAL_REVIEW_STATUS: no_remaining_findings`,jx=Ax.toLowerCase(),Mx=new Set,Nx=new Set,Px=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},Fx=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},Ix=e=>{let t=e.role;return typeof t==`string`?t:``},Lx=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},Rx=(e,t)=>He(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`}),zx=(e,t,n,r=0,i)=>{let a=fr(e,t),o=new Set;for(let e of a)Rx(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(Ix(s)!==`assistant`||!Px(s)||Fx(s)<r-1e3)continue;let c=Lx(s);if(!qx(s,i)||c&&o.has(c))continue;let l=zd(He(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},Bx=(e,t)=>Kt(e,t)?.type===`idle`,Vx=e=>e===m(),Hx=e=>{Yd.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},Ux=e=>{if(e&&!Vx(e))throw Error(`Auto-review stopped because the runtime changed.`)},Wx=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),Gx=e=>e.trim().split(`
|
|
405
|
+
`).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===jx,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()===jx&&t.pop(),t.join(`
|
|
407
|
+
`).trim()},qx=(e,t)=>!t||Lx(e)===t,Jx=(e,t)=>[e.runtimeKey,e.originalSessionID,e.phase,e.expectedAssistantParentID??``,t].join(`:`),Yx=(e,t)=>{let n=Jx(e,t);return Nx.has(n)?null:(Nx.add(n),n)},Xx=e=>{Nx.delete(e)},Zx=()=>[{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${Ax}\nIf you found issues that require changes, do not include that final status line.`}],Qx=async e=>{for(;;){let t=Yd.getState().runsByOriginalSessionID[e];if(!t||t.status!==`running`)return;if(!Vx(t.runtimeKey)){Hx(t);return}let n=t.phase===`waiting_for_reviewer`?t.reviewSessionID:t.originalSessionID;if(!Bx(n,t.directory)){await new Promise(e=>setTimeout(e,Ox));continue}let r=zx(n,t.directory,t.lastForwardedMessageID,t.waitAfterCreatedAt,t.expectedAssistantParentID);if(!r){await new Promise(e=>setTimeout(e,Ox));continue}if(t.phase===`waiting_for_reviewer`){let e=Yx(t,r.id);if(!e){await new Promise(e=>setTimeout(e,Ox));continue}if(!Vx(t.runtimeKey)){Xx(e),Hx(t);return}try{let e=Date.now(),n=Gx(r.text),i=n?Kx(r.text):r.text,a=await uS(t.reviewSessionID,t.directory,i,t.runtimeKey);if(n){Yd.getState().completeRun(t.originalSessionID);return}Yd.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_implementer`,lastForwardedMessageID:r.id,expectedAssistantParentID:a,waitAfterCreatedAt:e}))}finally{Xx(e)}}else{if(t.iteration>=t.maxIterations){Yd.getState().stopRun(t.originalSessionID);return}let e=Yx(t,r.id);if(!e){await new Promise(e=>setTimeout(e,Ox));continue}if(!Vx(t.runtimeKey)){Xx(e),Hx(t);return}try{let e=Date.now(),n=await dS(t.originalSessionID,t.directory,r.text,!0,t.runtimeKey);Yd.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_reviewer`,iteration:t.iteration+1,lastForwardedMessageID:r.id,expectedAssistantParentID:n,waitAfterCreatedAt:e}))}finally{Xx(e)}}}},$x=e=>{Yd.getState().upsertRun(e),eS(e.originalSessionID)},eS=e=>{let t=Yd.getState().runsByOriginalSessionID[e];!t||t.status!==`running`||!Vx(t.runtimeKey)||Mx.has(e)||(Mx.add(e),Qx(t.originalSessionID).catch(e=>{console.error(`[review-flow] auto-review loop failed`,e),Yd.getState().updateRun(t.originalSessionID,t=>({...t,status:Wx(e)?`stopped`:`error`,error:e instanceof Error?e.message:String(e)}))}).finally(()=>{Mx.delete(e)}))},tS=async(e,t,n)=>{let r=Date.now()+Ex;for(;Date.now()<r;){let r=fr(e,t).filter(e=>Ix(e)===`assistant`).filter(e=>Fx(e)>=n-1e3).filter(Px).sort((e,t)=>Fx(t)-Fx(e));for(let e of r){let n=zd(He(e.id,t)).trim();if(n)return n}await new Promise(e=>setTimeout(e,Dx))}throw Error(`Timed out waiting for handoff response`)},nS=e=>{let t=Hl.getState(),n=W.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}},rS=async(e,t,n,r,i,a)=>{Ux(a);let o=r??nS(e);if(!o)throw Error(`Select a model before sending review flow messages`);let s=Hl.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)),Sf(e);let c=null;if(await Xb({sessionId:e,content:n,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,onMessageID:e=>{c=e},beforeOptimisticInsert:()=>Ux(a),onOptimisticInsert:()=>iS(e),send:r=>(Ux(a),B.sendMessage({id:e,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,variant:o.variant,text:n,additionalParts:i,messageId:r}).then(()=>void 0))}),!c)throw Error(`Failed to prepare review flow message`);return c},iS=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:chat-force-scroll-bottom`,{detail:{sessionId:e}}))},aS=(e,t)=>{gr.getState().openContextPanelTab(e,{mode:`chat`,dedupeKey:`session:${t.id}`,label:t.title??null,sessionTitleFallback:t.title??null})},oS=async(e,t)=>{try{return await B.getSession(e,t)}catch{return null}},sS=e=>`Review: ${e.title?.trim()||e.id}`,cS=async(e,t,n)=>{Ux(n);let r=await B.getSession(e,t);Ux(n);let i=Ud(r);if(i){let r=await oS(i,t);if(Ux(n),r&&Gd(r))return r;await yb(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})}Ux(n);let a=await B.createSession({title:sS(r),metadata:qd({},e)},t);Ux(n),Ut(a.id,t);try{Ux(n),await yb(e,t,e=>Kd(e,a.id))}catch(e){throw Ux(n),await B.deleteSession(a.id,t).catch(e=>{console.warn(`[review-flow] failed to delete unlinked review session after link failure`,e)}),e}return Y.getState().upsertSession(a),a},lS=async e=>{await Zy();let t=e.autoReview?m():void 0,n;if(e.generateHandoff??!0){let n=await Fd(`session.reviewHandoff.visible`),r=await Fd(`session.reviewHandoff.instructions`),i=Date.now();await rS(e.originalSessionID,e.directory,n,null,[{text:r,synthetic:!0}],t);let a=async()=>{let n=await tS(e.originalSessionID,e.directory,i);Ux(t);let r=await Fd(`session.reviewSession.visible`,{handoff:n}),a=await cS(e.originalSessionID,e.directory,t),o=t??m(),s=Date.now(),c=await rS(a.id,e.directory,r,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?Zx():void 0,e.autoReview?o:void 0);e.autoReview&&$x({originalSessionID:e.originalSessionID,reviewSessionID:a.id,directory:e.directory,runtimeKey:o,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:kx,expectedAssistantParentID:c,waitAfterCreatedAt:s}),e.autoReview||aS(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 Fd(`session.reviewSessionWithoutHandoff.visible`);let r=await cS(e.originalSessionID,e.directory,t),i=t??m(),a=Date.now(),o=await rS(r.id,e.directory,n,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?Zx():void 0,e.autoReview?i:void 0);e.autoReview&&$x({originalSessionID:e.originalSessionID,reviewSessionID:r.id,directory:e.directory,runtimeKey:i,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:kx,expectedAssistantParentID:o,waitAfterCreatedAt:a}),e.autoReview||aS(e.directory,r)},uS=async(e,t,n,r)=>{Ux(r);let i=Wd(await B.getSession(e,t));if(!i)throw Error(`Original session is missing`);let a=await Fd(`session.reviewFeedbackToImplementer.visible`,{review_feedback:n});return Ux(r),rS(i,t,a,void 0,void 0,r)},dS=async(e,t,n,r=!1,i)=>{Ux(i);let a=Ud(await B.getSession(e,t));if(!a)throw Error(`Review session is missing`);let o;try{o=await B.getSession(a,t)}catch(n){throw Ux(i),await yb(e,t,e=>Jd(e,a)),n}let s=await Fd(`session.implementationResponseToReviewer.visible`,{implementation_response:n});Ux(i);let c=await rS(a,t,s,void 0,r?Zx():void 0,i);return r||aS(t,o),c},fS=e=>Gd(e)?`review-to-original`:Ud(e)?`original-to-review`:null,pS=[0,250,500,1e3,2e3,2e3,2e3,2e3],mS=5e3,hS=(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??mS,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??pS,d=o(i),f=(async()=>{for(let t of u){if(o(i)!==d||(t>0&&await e.wait(t),o(i)!==d))return;if(await e.probe(i)){o(i)===d&&(n.add(i),r.delete(i));return}}throw r.set(i,s()),Error(`OpenCode did not become ready for runtime ${i}`)})();return t.set(i,f),f.finally(()=>{t.get(i)===f&&t.delete(i)}).catch(()=>{}),f},reset:e=>{if(e){i.set(e,(i.get(e)??0)+1),t.delete(e),n.delete(e),r.delete(e);return}a+=1,t.clear(),n.clear(),r.clear()}}})({probe:()=>B.checkHealth(),wait:e=>new Promise(t=>setTimeout(t,e))}),gS=()=>hS.waitUntilReady(m()),_S=e=>{hS.reset(e)},vS=100,yS=1500,bS=async e=>{if(!e.ok)throw Error(`session index request failed (${e.status})`)},xS=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}:{}}},SS,CS=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 bS(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}},wS=async e=>{if(typeof window>`u`)return null;if(SS)return SS;let t=(async()=>{let t=await _(`/api/openchamber/session-index`,{signal:e?.signal});return t.status===501?null:(await bS(t),xS(await t.json()))})().finally(()=>{SS===t&&(SS=void 0)});return SS=t,t},TS=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 bS(t),t.json())},ES=(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:yS,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)},vS)},l=()=>s(`aborted`),u=i===null?void 0:setTimeout(()=>s(`timeout`),i),d=Ei(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})}),DS=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 bS(r)},OS=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 bS(r)},kS=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 bS(t)},AS=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 bS(t)},jS=1,MS=`oc.sessionIndexStartupCache`,NS=1e6,PS=e=>!!e&&typeof e==`object`&&!Array.isArray(e),FS=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),IS=e=>!(!PS(e)||typeof e.active!=`boolean`||typeof e.completed!=`number`||!Number.isFinite(e.completed)||typeof e.total!=`number`||!Number.isFinite(e.total)||!FS(e.pendingDirectories)||!FS(e.completedDirectories)||!FS(e.failedDirectories)||e.enriching!==void 0&&typeof e.enriching!=`boolean`),LS=e=>PS(e)&&typeof e.id==`string`&&e.id.length>0&&typeof e.title==`string`&&typeof e.directory==`string`&&e.directory.length>0&&PS(e.time)&&typeof e.time.created==`number`&&Number.isFinite(e.time.created)&&typeof e.time.updated==`number`&&Number.isFinite(e.time.updated),RS=e=>!PS(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(LS),zS=e=>!PS(e)||typeof e.revision!=`number`||!Number.isFinite(e.revision)||!IS(e.sync)||!Array.isArray(e.directories)||e.pinnedSessionIds!==void 0&&!FS(e.pinnedSessionIds)?!1:e.directories.every(RS),BS=e=>PS(e)&&e.version===jS&&PS(e.entries),VS=e=>{if(!e)return null;try{let t=JSON.parse(e);return BS(t)?{version:jS,entries:t.entries}:null}catch{return null}},HS=(e,t)=>{try{let n=JSON.stringify(t);if(n.length>NS)return;e.setItem(MS,n)}catch{}},US=(e,t)=>{if(!e)return null;let n;try{n=t.getItem(MS)}catch{return null}let r=VS(n);if(!r)return null;let i=r.entries[e];return zS(i)?i:null},WS=(e,t,n)=>{if(!e||!zS(t))return;let r=null;try{r=n.getItem(MS)}catch{return}let i={...VS(r)?.entries??{},[e]:t},a=Object.keys(i).slice(-8);HS(n,{version:jS,entries:Object.fromEntries(a.map(e=>[e,i[e]]))})},GS=(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,qS=(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,YS=()=>JS.size>0,XS=e=>{for(let t of JS)t(e)},ZS=e=>(JS.add(e),()=>JS.delete(e)),QS=3e4,$S=3e3,eC=1e3,tC=0,nC=0,rC=0,iC=null;function aC(e){try{if(e===`medium`){nC+=1;return}if(e===`heavy`){rC+=1;return}tC+=1}catch{}}function oC(){return{light:tC,medium:nC,heavy:rC}}function sC(){tC=0,nC=0,rC=0}function cC(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 lC(){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=cC(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 uC(){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 dC(){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 fC(e){let t=uC(),n=dC();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 pC(e={}){if(iC)return iC;let t=e.isEnabled??u_,n=e.record??p_,r=e.now??(()=>Date.now()),i=e.getPlatform??(()=>$n()),a=lC(),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()+$S,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})},$S)},g=()=>{p(()=>{let e=a.snapshotWindow(),o=oC();t()&&n(fC({at:r(),snapshot:e,haptics:o,platform:i()})),sC(),a.reset()})},_=()=>{s=setTimeout(()=>{o||(g(),h(),_())},QS)},v=()=>{let e=r()+eC;c=setTimeout(()=>{o||(p(()=>{let t=Math.max(0,r()-e);a.addLagMs(t)}),v())},eC)};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}iC===y&&(iC=null)}};return iC=y,y}var K=e(Pe(),1),mC=typeof window<`u`?K.useLayoutEffect:K.useEffect,hC=Cr(`OpenChamberHaptics`),gC=null,_C=()=>(gC??=wr.isPluginAvailable(`OpenChamberHaptics`),gC);function vC(e){switch(e){case`medium`:return`impactMedium`;case`heavy`:return`impactHeavy`;default:return`impactLight`}}function yC(){return typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0}function bC(){if(!yC())return!1;let e=window.Capacitor?.getPlatform?.();return e===`ios`||e===`android`}function xC(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 SC=20,CC=750;function wC(e,t){return t-e>=SC}function TC(e,t){return t-e>=CC}function EC(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 DC=-1/0;function OC(e=`light`,t){if(!bC()||!_C()||document.visibilityState!==`visible`||!document.documentElement.classList.contains(`oc-native-app-active`))return!1;let n=Date.now();return!t?.bypassCadence&&!wC(DC,n)?!1:(DC=n,hC[vC(e)]().catch(()=>void 0),aC(e),!0)}var kC=`button, [role="button"], [role="menuitem"]`;function AC(){let e=(0,U.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],K.useEffect(jC,t)}function jC(){if(!bC())return;let e=MC;return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}function MC(e){if(!e.isTrusted||!(e.target instanceof Element))return;let t=e.target.closest(kC);t&&(t.matches(`:disabled, [aria-disabled="true"], [data-mobile-press-feedback="none"]`)||OC(`light`))}function NC(){let e=(0,U.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],mC(PC,t)}function PC(){if(!bC())return;let e=qS(),t=$n()===`android`,n=-1/0;return ZS(r=>{if(!e(r))return;let i=$.getState().currentSessionId,a=document.documentElement.classList.contains(`oc-native-app-active`);if(xC({eventSessionId:r.sessionID,currentSessionId:i,isForeground:a,isVisible:document.visibilityState===`visible`}).shouldTrigger){if(t&&r.kind===`text`){let e=Date.now();if(!TC(n,e))return;OC()&&(n=e);return}OC()}})}var FC=async e=>{let t=await Ir(e);t.ok||console.error(`Failed to copy to clipboard:`,t.error)},IC=e=>e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(IC).join(` `).trim():(0,K.isValidElement)(e)?IC(e.props?.children):``,LC=e=>typeof e==`function`?e():e,RC=(e,t)=>{let n=IC(LC(t?.description));return n.length>0?n:IC(e)},zC=Object.assign((...e)=>(OC(),Nr(...e)),{...Nr,success:(...e)=>{let[t,n]=e;return OC(),Nr.success(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},info:(...e)=>{let[t,n]=e;return OC(),Nr.info(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},error:(...e)=>{let[t,n]=e;return OC(),Nr.error(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>FC(RC(t,n))}})},warning:(...e)=>{let[t,n]=e;return OC(),Nr.warning(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>FC(RC(t,n))}})},loading:(...e)=>(OC(),Nr.loading(...e)),custom:(...e)=>(OC(),Nr.custom(...e)),promise:(...e)=>(OC(),Nr.promise(...e))}),BC=new Set,VC,HC=BC,UC=null,WC=(e,t)=>Br(zr.getState().dictionary,e,t),GC=e=>{let t=e?.time?.pinned;return t!=null&&t!==``},KC=e=>{if(!e)return BC;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)GC(e)&&t.add(e.id);return t.size===0?BC:t},qC=(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=I,t=u())=>{let n=aw(e,t);if(n===VC&&t===UC)return HC;let r=KC(n);return VC=n,UC=t,HC=qC(HC,r)?HC:r,HC},YC=(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),qC(a,o)||(r=!0),r?{...e,directories:i,pinnedSessionIds:[...o]}:e},XC=(e,t,n,r)=>{let i=aw(e,t);if(!i)return null;let a=YC(i,n,r?new Date().toISOString():null);return a!==i&&sw(a,{client:e,transport:t,persist:!1}),i},ZC=e=>I.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()}),QC=()=>JC(),$C=()=>(0,K.useSyncExternalStore)(ZC,QC,tw),ew=()=>{let e=(0,U.c)(6),t=Or(),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:nw,onMutate:e=>{let{sessionId:n,nextPinned:r,transport:i}=e;return{previous:XC(t,i,n,r),transport:i}},onError:(e,n,r)=>{r?.previous&&sw(r.previous,{client:t,transport:r.transport,persist:!1}),zC.error(e instanceof Error?e.message:WC(n.nextPinned?`sessions.sidebar.session.pin.error`:`sessions.sidebar.session.unpin.error`))}},e[1]=t,e[2]=r);let i=kr(r),a;return e[3]!==t||e[4]!==i?(a=e=>{let n=e.trim();if(!n)return;let r=u(),a=aw(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],Fr(a)};function tw(){return BC}async function nw(e){let{sessionId:t,nextPinned:n}=e;n?await DS(t):await OS(t)}var rw=(e=u())=>L.sessionIndex.snapshot(e),iw=(e=u(),t=m(),n=_r(),r=wS)=>{let i=t,a=n,o=r;return{queryKey:rw(e),queryFn:async({signal:e})=>{let t=await o({signal:e});return t&&WS(i,t,a),t},staleTime:0,gcTime:1/0,initialData:()=>US(i,a)??void 0,initialDataUpdatedAt:0}},aw=(e=I,t=u())=>e.getQueryData(rw(t))??null,ow=(e=I,t=u(),n=m(),r=_r())=>{let i=iw(t,n,r);return e.getQueryCache().build(e,i),e.getQueryData(i.queryKey)??null},sw=(e,t)=>{if(!zS(e))return;let n=t?.client??I,r=t?.transport??u(),i=t?.runtimeKey??m(),a=t?.storage??_r();n.setQueryData(rw(r),e),t?.persist!==!1&&WS(i,e,a)},cw=(e=I,t=u(),n=m(),r=_r(),i=wS)=>{let a={...iw(t,n,r,i),staleTime:0};return e.getQueryCache().build(e,a),e.fetchQuery(a)},lw=500,uw=20,dw=6e3,fw=7,pw=3,mw=1,hw=2,gw=750,_w=500,vw=1e4,yw=2,bw=(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})}),xw=null,q=0,Sw=new Map,Cw=new Map,ww=new Map,Tw=[],Ew=new Set,Dw=0,Ow=pw,kw=0,Aw=null,jw,Mw=new Map,Nw=()=>({loadGeneration:q,runtimeGeneration:f(),transportIdentity:u()}),J=e=>e.loadGeneration===q&&e.runtimeGeneration===f()&&e.transportIdentity===u(),Pw=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`)},Fw=e=>{kw=0,Pw(e)&&(Ow=Ow>pw?pw:mw)},Iw=()=>{kw+=1,!(kw<hw||Ow>=fw)&&(Ow+=1,kw=0)},Lw=()=>{for(;Dw<Ow&&Tw.length>0;){let e=Tw.shift();if(!e)return;Dw+=1,e()}},Rw=e=>new Promise((t,n)=>{Tw.push(()=>{e().then(t,n).finally(()=>{--Dw,Lw()})}),Lw()}),zw=e=>{let t=e;return R(t.directory??null)??R(t.project?.worktree??null)},Bw=(e,t)=>{let n=ho(e.id,e.directory,e.time?.updated);if(n&&e.directory!==n&&(e=t?.directory===n?t:{...e,directory:n}),!t)return e;let r=e,i=t,a=R(r.directory??null),o=R(r.project?.worktree??null),s=R(i.directory??null),c=R(i.project?.worktree??null),l=!1,u={...r};!a&&s&&(u.directory=i.directory,l=!0),!o&&c?(u.project={...i.project??{},...r.project??{},worktree:i.project?.worktree},l=!0):!r.project&&i.project&&(u.project=i.project,l=!0);let d=r.hasChildren,f=i.hasChildren;typeof d!=`boolean`&&typeof f==`boolean`&&(u.hasChildren=f,l=!0);let p=ed(t);if(p>ed(e)){let e=r.metadata&&typeof r.metadata==`object`?r.metadata:{},t=e.openchamber&&typeof e.openchamber==`object`?e.openchamber:{},n=t.titleRefresh&&typeof t.titleRefresh==`object`?t.titleRefresh:{};u.metadata={...e,openchamber:{...t,titleRefresh:{...n,activityUpdatedAt:p}}},l=!0}return l?u:e},Vw=(e,t)=>{let n=Bw(e,t);return n.share===t.share?n:{...n,share:t.share}},Hw=(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?Vw(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},Uw=e=>{let t=new Map;for(let n of e){let e=zw(n);if(!e)continue;let r=t.get(e);if(r){r.push(n);continue}t.set(e,[n])}return t},Ww=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),zw(e)??``].join(`:`),Gw=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),zw(e)??``].join(`:`)},Kw=(e,t)=>e.time?.updated!==t.time?.updated&&Gw(e)===Gw(t),qw=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(Ww(e[n])!==Ww(t[n]))return!1;return!0},Jw=e=>{let t=e.time?.archived;return typeof t==`number`&&Number.isFinite(t)&&t>0},Yw=(e,t)=>{let n=new Set,r=!1;for(let t of e){if(!t?.id||n.has(t.id)||Jw(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)||!Jw(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?Bw(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;Jw(t)?o.push(t):a.push(t)};return e.forEach(c),t.forEach(c),{activeSessions:a,archivedSessions:o}},Xw=(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))},Zw=e=>[...e].sort((e,t)=>{let n=ed(t)-ed(e);return n===0?t.id.localeCompare(e.id):n}),Qw=e=>{let t=new Set;for(let n of e){let e=R(n);e&&t.add(e)}return t},$w=e=>{let t=Qw(e);for(let e of t)Mw.set(e,(Mw.get(e)??0)+1);return t},eT=e=>{let t=new Set;for(let n of e){let e=Mw.get(n)??0;if(e<=1){Mw.delete(n),t.add(n);continue}Mw.set(n,e-1)}return t},tT=(e,t)=>{let n=e.loadingDirectories,r=e.refreshingDirectories;for(let i of t)Sw.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}},nT=e=>{let t=e[e.length-1]?.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:null},rT=(e,t)=>{let n=nT(e);return{cursor:n,hasMore:e.length===uw&&n!==null&&(t==null||n<t),loadingMore:!1}},iT=(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,Bw(e,r.get(e.id)));let a=e.filter(e=>{if(i.has(e.id))return!1;let t=zw(e);return!t||!n.has(t)});return Zw([...i.values(),...a])},aT=(e,t)=>e.cursor===null?!e.hasMore&&(t.hasMore||t.cursor!==null):t.cursor===null||e.cursor<t.cursor,oT=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;if(e.length===0)return null;let n=Zw(e),r=n[n.length-1];return r?ed(r):null},sT=(e,t)=>ed(e)<=t,cT=(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,Bw(t,a.get(t.id)));let s=e.filter(e=>{if(o.has(e.id))return!1;let t=zw(e);if(!t||!n.has(t))return!0;if(!i.has(t))return!1;let a=r.get(t);return a!=null&&sT(e,a)});return Zw([...o.values(),...s])},lT=(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,Xw(n.sessions,e.pendingDeletionIds));let a=[...i.values()].flat(),o=new Map;if(n)for(let t of e.activeSessions){let e=zw(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)>uw;n.hasMore&&a&&r&&aT(r,t)&&c.add(n.directory),s.set(n.directory,oT(i.get(n.directory)??[],n.cursor))}let l=n?cT(e.activeSessions,i,r,s,c):Zw(fT(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=>zw(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 Mw.keys())h.has(e)||Sw.has(e)||(p.delete(e),m.delete(e));return{activeSessions:l,sessionsByDirectory:Uw(l),reviewTransferBySessionId:mT(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}},uT=(e,t)=>{let n=Xw(t.activeSessions,e.pendingDeletionIds),r=Xw(t.fallbackActive??[],e.pendingDeletionIds),i=t.mergeOnly?Zw(fT(e.activeSessions,n)):iT(e.activeSessions,n,t.directories);i=fT(i,r);let a=t.archivedSessions===void 0?void 0:Xw(t.archivedSessions,e.pendingDeletionIds),o=a===void 0?e.archivedSessions:iT(e.archivedSessions,a,t.directories),s=Yw(i,o);i=s.activeSessions,o=s.archivedSessions,qw(e.activeSessions,i)&&(i=e.activeSessions),qw(e.archivedSessions,o)&&(o=e.archivedSessions);let c=i===e.activeSessions?e.sessionsByDirectory:Uw(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:mT(i),loadedDirectories:l,loadingDirectories:d,hasLoaded:m,status:p}},dT=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[t,...e];let r=e[n],i=Bw(t,r);if(Kw(r,i)||Ww(r)===Ww(i))return e;let a=[...e];return a[n]=i,a},fT=(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,Bw(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},pT=(e,t,n,r)=>{let i=Yw(t,n),a=Xw(i.activeSessions,e.pendingDeletionIds),o=Xw(i.archivedSessions,e.pendingDeletionIds),s=qw(e.activeSessions,a)?e.activeSessions:a,c=qw(e.archivedSessions,o)?e.archivedSessions:o,l=s===e.activeSessions?e.sessionsByDirectory:Uw(s),u=s===e.activeSessions?e.reviewTransferBySessionId:mT(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}},mT=e=>{let t=new Map,n=new Set(e.map(e=>e.id));for(let r of e){let e=fS(r);if(!e)continue;let i=e===`review-to-original`?Wd(r):Ud(r);!i||!n.has(i)||t.set(r.id,e)}return t},Y=ke((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=>pT(e,t,n,r))},resetForRuntimeSwitch:()=>{q+=1,_S(),xw=null,Sw.clear(),Cw.clear(),ww.clear(),Ew.forEach(e=>e.abort()),Ew.clear(),Ow=pw,kw=0,Aw?.abort(),Aw=null,jw=void 0,Mw.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(jw)return jw;if(t().hasHydratedSessionIndex)return;let n=Nw(),r=u(),i=m(),a=ow(void 0,r,i);a&&J(n)&&e(e=>({...lT(e,a,!1),hasCachedSessionIndex:!0}));let o=(async()=>{try{let t;try{t=await cw(void 0,r,i)}catch(e){if(!J(n))return;if(a){console.warn(`[GlobalSessions] Failed to refresh runtime session index; keeping stale seed:`,e);return}throw e}if(!J(n))return;if(!t){e(e=>e.hasHydratedSessionIndex?e:{hasHydratedSessionIndex:!0});return}e(e=>({...lT(e,t,!1),hasCachedSessionIndex:t.directories.length>0,hasHydratedSessionIndex:!0}))}catch(e){console.warn(`[GlobalSessions] Failed to hydrate runtime session index:`,e)}})();return jw=o.finally(()=>{jw===o&&(jw=void 0)}),jw},startSessionIndexStartup:async(n,r)=>{let i=Nw();if(e({startupSyncProgress:{active:!0,phase:`restoring`,completed:0,total:0}}),await t().hydrateSessionIndex(),!J(i))return{activeSessions:[],archivedSessions:[]};t().hasHydratedSessionIndex||e({hasHydratedSessionIndex:!0});let a=Qw([...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?Qw(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=Nw();try{if(f=await TS([...l]),!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};f&&sw(f)}catch(e){if(!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}let m=()=>{if(u.size===0)return;let e=[...u],n=()=>{J(i)&&t().syncSessionsForDirectories(e,d.activeSessions)};typeof globalThis.setTimeout==`function`?globalThis.setTimeout(n,0):Promise.resolve().then(n)};if(!f){let e=bT(l,d.activeSessions,{retryFailed:!o});if(o)e.then(()=>{m()});else{if(await e,!J(i))return{activeSessions:[],archivedSessions:[]};m()}return d}Aw?.abort();let h=new AbortController;Aw=h;let g=$w(l),_=()=>{if(!J(i))return;let t=eT(g);t.size!==0&&e(e=>tT(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=_w;for(;!h.signal.aborted&&J(i);){e(e=>({...lT(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=Nw(),a=await ES(t.revision,h.signal,{safetyTimeoutMs:t.sync.active?void 0:null});if(!J(i)||!J(r)||a===`aborted`)break;let o;for(;!h.signal.aborted&&J(i);){let e=Nw();try{o=await cw()}catch{if(h.signal.aborted||!J(i)){o=void 0;break}if(await bw(n,h.signal),h.signal.aborted||!J(i)){o=void 0;break}n=Math.min(n*yw,vw);continue}if(!J(e)){o=void 0;break}if(!o)break;n=_w;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(),Aw===h&&(Aw=null),v&&J(i)&&e(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:e.startupSyncProgress.completed,total:e.startupSyncProgress.total}}))}),v){if(await x,!J(i))return{activeSessions:[],archivedSessions:[]};m()}else m();return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},loadSessions:async n=>{if(xw)return xw;e(e=>e.status===`loading`?e:{status:`loading`});let r=q,i=Promise.resolve().then(async()=>{let a=t();try{if(await gS(),r!==q)return{activeSessions:[],archivedSessions:[]};let i=B.getSdkClient(),[o,s]=await Promise.allSettled([Cd(i,{archived:!1,pageSize:lw}),Cd(i,{archived:!0,pageSize:lw})]),c=fT(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===q?(e(e=>{let t=o.status===`fulfilled`&&s.status===`fulfilled`?`ready`:`error`,n=pT(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!==q)return{activeSessions:[],archivedSessions:[]};let o=fT(a.activeSessions,n),s=a.archivedSessions;return console.warn(`[GlobalSessions] Failed to load sessions, using fallback snapshot:`,i),e(e=>pT(e,o,s,`error`)),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}}finally{xw===i&&(xw=null)}});return xw=i,i},refreshSessionsForDirectories:async(n,r,i)=>{let a=Qw(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=q;e(e=>{let t=fT(e.activeSessions,Xw(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=>zw(e)===t)||n.add(t);return{...t===e.activeSessions?{}:{activeSessions:t,sessionsByDirectory:Uw(t),reviewTransferBySessionId:mT(t)},loadingDirectories:n,refreshingDirectories:i,status:e.status===`idle`?`loading`:e.status}});let s=[...a].map(n=>{let r=Sw.get(n);if(r)return r;let a=Rw(async()=>{let r=new AbortController;Ew.add(r);try{if(o!==q||(await gS(),o!==q))return!1;let a=await Cd(B.getSdkClient(),{directory:n,archived:!1,roots:!0,...i?.incrementalStart===void 0?{}:{start:i.incrementalStart},pageSize:uw,maxItems:uw,timeoutMs:dw,retryAttempts:2,signal:r.signal});if(o!==q)return!1;if(e(e=>{let t=uT(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,rT(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)??rT(a);try{await kS({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 Iw(),!0}catch(t){return Fw(t),o===q&&(console.warn(`[GlobalSessions] Failed to refresh active sessions for ${n}:`,t),e(e=>{let t=new Set(e.loadingDirectories),r=new Set(e.refreshingDirectories);return t.delete(n),r.delete(n),{loadingDirectories:t,refreshingDirectories:r}})),!1}finally{Ew.delete(r)}});return Sw.set(n,a),a.finally(()=>{Sw.get(n)===a&&Sw.delete(n)}),a}),c=await Promise.all(s);return o===q?([...a].forEach((e,t)=>{i?.onDirectoryResult?.(e,c[t]??!1)}),e(e=>({status:e.status===`loading`?c.some(Boolean)?`ready`:`error`:e.status,hasLoaded:!0})),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}):{activeSessions:[],archivedSessions:[]}},syncSessionsForDirectories:async(n,r)=>{let i=Nw(),a=Qw(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=null,s=Nw();try{if(o=await TS([...a]),!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};o&&sw(o)}catch(e){if(!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}if(!o)return t().refreshSessionsForDirectories(a,r);let c=new AbortController;Ew.add(c);let l=$w(a),u=()=>{if(!J(i))return;let t=eT(l);t.size!==0&&e(e=>tT(e,t))};try{let t=o;for(;!c.signal.aborted&&J(i)&&(e(e=>lT(e,t,!0)),t.sync.active);){let e=Nw(),n=await ES(t.revision,c.signal);if(!J(i)||!J(e)||n===`aborted`)break;let r=Nw(),a;try{a=await cw()}catch{break}if(!J(i)||!J(r)||!a)break;t=a}}catch(e){!c.signal.aborted&&J(i)&&console.warn(`[GlobalSessions] Session index sync failed:`,e)}finally{u(),Ew.delete(c)}return J(i)?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},loadMoreSessionsForDirectory:async n=>{let r=R(n);if(!r){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=ww.get(r);if(i)return await i,{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions};let a=t().activePaginationByDirectory.get(r);if(!a?.hasMore||a.cursor===null){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=q;e(e=>{let t=new Map(e.activePaginationByDirectory);return t.set(r,{...a,loadingMore:!0}),{activePaginationByDirectory:t}});let s=Rw(async()=>{let t=new AbortController;Ew.add(t);try{if(await gS(),o!==q)return!1;let n=await Cd(B.getSdkClient(),{directory:r,archived:!1,roots:!0,cursor:a.cursor??void 0,pageSize:uw,maxItems:uw,timeoutMs:dw,retryAttempts:2,signal:t.signal});return o===q&&(e(e=>{let t=e.activeSessions.filter(e=>zw(e)===r),i=new Map(t.map(e=>[e.id,e]));Xw(n,e.pendingDeletionIds).forEach(e=>{i.set(e.id,Bw(e,i.get(e.id)))});let o=Zw([...i.values()]),s=iT(e.activeSessions,o,new Set([r])),c=new Map(e.activePaginationByDirectory);return c.set(r,rT(n,a.cursor)),{activeSessions:qw(e.activeSessions,s)?e.activeSessions:s,sessionsByDirectory:Uw(s),reviewTransferBySessionId:mT(s),activePaginationByDirectory:c}}),Iw(),!0)}catch(t){return Fw(t),o===q&&(console.warn(`[GlobalSessions] Failed to load more sessions for ${r}:`,t),e(e=>{let t=e.activePaginationByDirectory.get(r);if(!t)return e;let n=new Map(e.activePaginationByDirectory);return n.set(r,{...t,loadingMore:!1}),{activePaginationByDirectory:n}})),!1}finally{Ew.delete(t)}});ww.set(r,s);try{await s}finally{ww.get(r)===s&&ww.delete(r)}return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},refreshArchivedSessionsForDirectories:async n=>{let r=Qw(n);if(r.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=q;e(e=>{let t=new Set(e.archivedLoadingDirectories);return r.forEach(e=>t.add(e)),{archivedLoadingDirectories:t}});let a=[...r].map(t=>{let n=Cw.get(t);if(n)return n;let r=Rw(async()=>{let n=new AbortController;Ew.add(n);try{if(i!==q||(await gS(),i!==q))return!1;let r=await Cd(B.getSdkClient(),{directory:t,archived:!0,roots:!0,pageSize:uw,maxItems:uw,timeoutMs:dw,retryAttempts:2,signal:n.signal});return i===q&&(e(e=>{let n=iT(e.archivedSessions,Xw(r,e.pendingDeletionIds),new Set([t])),i=Yw(e.activeSessions,n),a=qw(e.activeSessions,i.activeSessions)?e.activeSessions:i.activeSessions,o=qw(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:Uw(a),reviewTransferBySessionId:a===e.activeSessions?e.reviewTransferBySessionId:mT(a),archivedLoadedDirectories:s,archivedLoadingDirectories:c}}),!0)}catch(n){return i===q&&(console.warn(`[GlobalSessions] Failed to refresh archived sessions for ${t}:`,n),e(e=>{let n=new Set(e.archivedLoadingDirectories);return n.delete(t),{archivedLoadingDirectories:n}})),!1}finally{Ew.delete(n)}});return Cw.set(t,r),r.finally(()=>{Cw.get(t)===r&&Cw.delete(t)}),r});return await Promise.all(a),i===q?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},upsertSession:n=>{if(!yd(n)){t().removeSessions([n.id]);return}e(e=>{if(e.pendingDeletionIds.has(n.id))return e;let t=Bw(n,e.activeSessions.find(e=>e.id===n.id)??e.archivedSessions.find(e=>e.id===n.id)??null),r=Jw(t),i=r?e.activeSessions.filter(e=>e.id!==n.id):dT(e.activeSessions,t),a=r?dT(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:Uw(i),reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:mT(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:Uw(t),reviewTransferBySessionId:mT(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:Uw(i),reviewTransferBySessionId:mT(i)}})}})),hT=async e=>{let t=Y.getState();return t.hasLoadedFullCatalog&&t.status!==`error`?{activeSessions:t.activeSessions,archivedSessions:t.archivedSessions}:t.loadSessions(e)},gT=async()=>{await Y.getState().hydrateSessionIndex()},_T=async(e,t)=>Y.getState().startSessionIndexStartup(e,t),vT=async(e,t)=>Y.getState().refreshSessionsForDirectories(e,t),yT=async(e,t)=>Y.getState().syncSessionsForDirectories(e,t),bT=async(e,t,n)=>{let r=Qw(e),i=q;if(r.size===0){Y.setState({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let e=Y.getState();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}Y.setState({startupSyncProgress:{active:!0,phase:`syncing`,completed:0,total:r.size}});let a=new Set,o=new Set(r);try{do await Promise.all([...o].map(async e=>{let r=!1;await Y.getState().refreshSessionsForDirectories([e],t,{persist:!1,incrementalStart:n?.incrementalStartByDirectory?.get(e),onDirectoryResult:(e,t)=>{r=t}}),i===q&&r&&!a.has(e)&&(a.add(e),Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,completed:a.size}})))})),o=new Set([...r].filter(e=>!a.has(e))),o.size>0&&n?.retryFailed===!0&&i===q&&await new Promise(e=>setTimeout(e,gw));while(o.size>0&&n?.retryFailed===!0&&i===q);if(i===q){Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,phase:`committing`}}));let e=Y.getState(),t=[...a].flatMap(t=>{let r=e.sessionsByDirectory.get(t)??[],i=e.activePaginationByDirectory.get(t);return[{directory:t,sessions:r,cursor:i?.cursor??null,hasMore:i?.hasMore??!1,fullSync:!n?.incrementalStartByDirectory?.has(t)}]});try{await AS(t);let e=Date.now();Y.setState(n=>{let r=new Map(n.sessionIndexSyncByDirectory);for(let n of t){let t=r.get(n.directory);r.set(n.directory,{lastSyncedAt:e,lastFullSyncedAt:n.fullSync?e:t?.lastFullSyncedAt??0})}return{sessionIndexSyncByDirectory:r}})}catch(e){console.warn(`[GlobalSessions] Failed to persist cold-start session index batch:`,e)}}}finally{i===q&&Y.setState(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:a.size,total:e.startupSyncProgress.total}}))}let s=Y.getState();return{activeSessions:s.activeSessions,archivedSessions:s.archivedSessions}},xT=async e=>Y.getState().refreshArchivedSessionsForDirectories(e),ST=async e=>Y.getState().loadMoreSessionsForDirectory(e),CT=(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])},wT=`oc.sessions.folders`,TT=`oc.sessions.folderCollapse`,ET=`oc.sessions.order`,DT=`oc.sessions.orderActivity`,OT=`/api/session-folders`,kT=250,AT=`__archived__:`,jT=j(_r()),MT=null,NT=!1,PT=!1,FT=0,IT,LT,RT=null,zT=null,BT=()=>typeof window>`u`?!1:ye()?!0:window.__VSCODE_CONFIG__!==void 0,VT=(e,t)=>{if(typeof window>`u`||BT())return;MT&&clearTimeout(MT);let n=JSON.parse(JSON.stringify(e)),r=Array.from(t);MT=setTimeout(()=>{MT=null,_(OT,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({version:1,foldersMap:n,collapsedFolderIds:r,updatedAt:Date.now()})}).catch(()=>{})},kT)},HT=()=>{try{let e=jT.getItem(wT);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{}}},UT=()=>{try{let e=jT.getItem(TT);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}},WT=()=>{try{let e=jT.getItem(ET);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{}}},GT=()=>{try{let e=jT.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{}}},KT=(e,t)=>{try{jT.setItem(ET,JSON.stringify(e)),jT.setItem(DT,JSON.stringify(t))}catch{}},qT=e=>{RT=e,clearTimeout(IT),IT=setTimeout(()=>{try{jT.setItem(wT,JSON.stringify(e)),RT=null}catch{}},300)},JT=e=>{zT=e,clearTimeout(LT),LT=setTimeout(()=>{try{jT.setItem(TT,JSON.stringify(Array.from(e))),zT=null}catch{}},300)};typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{if(RT!==null){clearTimeout(IT);try{jT.setItem(wT,JSON.stringify(RT))}catch{}RT=null}if(zT!==null){clearTimeout(LT);try{jT.setItem(TT,JSON.stringify(Array.from(zT)))}catch{}zT=null}});var YT=(e,t)=>{qT(e),JT(t),VT(e,t)},XT=()=>le(),ZT=(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},QT=(e,t)=>e.startsWith(AT)?t.filter(e=>e.sessionIds.length>0):t,$T=ke()(Me((e,t)=>({foldersMap:HT(),collapsedFolderIds:UT(),sessionOrderByScope:WT(),sessionOrderActivityByScope:GT(),getFoldersForScope:e=>e?t().foldersMap[e]??[]:[],createFolder:(n,r,i)=>{let a=r.trim()||`New folder`,o={id:XT(),name:a,sessionIds:[],createdAt:Date.now(),parentId:i??null},s=t().foldersMap,c=s[n]??[],l={...s,[n]:[...c,o]};return e({foldersMap:l}),YT(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}),YT(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}),YT(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}),YT(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=ZT(o,l,t().collapsedFolderIds);e(d?{foldersMap:u,collapsedFolderIds:d}:{foldersMap:u}),YT(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=ZT(o,u,t().collapsedFolderIds);e(f?{foldersMap:d,collapsedFolderIds:f}:{foldersMap:d}),YT(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=ZT(a,c,t().collapsedFolderIds);e(u?{foldersMap:l,collapsedFolderIds:u}:{foldersMap:l}),YT(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=ZT(a,s,t().collapsedFolderIds);e(l?{foldersMap:c,collapsedFolderIds:l}:{foldersMap:c}),YT(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}),YT(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=QT(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=ZT(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}),YT(h,g??t().collapsedFolderIds),KT(_,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=CT(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}),KT(v,y)}}),{name:`session-folders-store`})),eE=async()=>{if(NT||PT||typeof window>`u`)return;if(BT()){NT=!0;return}PT=!0;let e=FT;try{let t=await _(OT).catch(()=>null);if(e!==FT||!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!==FT||!(Object.keys(r).length>0||i.size>0))return;$T.setState({foldersMap:r,collapsedFolderIds:i}),qT(r),JT(i)}catch{}finally{e===FT&&(PT=!1,NT=!0)}},tE=()=>{typeof window>`u`||eE()},nE=()=>{FT+=1,NT=!1,PT=!1,RT=null,zT=null,IT&&=(clearTimeout(IT),void 0),LT&&=(clearTimeout(LT),void 0),$T.setState({foldersMap:HT(),collapsedFolderIds:UT(),sessionOrderByScope:WT(),sessionOrderActivityByScope:GT()}),eE()};typeof window<`u`&&s(e=>{h(e)&&nE()}),tE();var rE=new Map,iE=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},aE=()=>`worktree_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,oE=()=>{let e=aE();return rE.set(e,iE()),e},sE=(e,t)=>{let n=rE.get(e);n&&(rE.delete(e),n.resolve(t))},cE=(e,t)=>{let n=rE.get(e);n&&(rE.delete(e),n.reject(t))},lE=e=>{let t=rE.get(e);return t?t.promise:Promise.reject(Error(`Pending worktree request not found`))},uE=3e5,dE=5e3,fE=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``)||e,pE=new Map,mE=new Map,hE=new Map,gE=new Map,_E=new Set,vE=null,yE=!1,bE=e=>fE(e),xE=e=>gE.get(e)??0,SE=e=>{let t=xE(e)+1;return gE.set(e,t),t},CE=async e=>{let t=te()?.git;return t?.worktree?.bootstrapStatus?t.worktree.bootstrapStatus(e):t?.getGitWorktreeBootstrapStatus?t.getGitWorktreeBootstrapStatus(e):Pt(e)},wE=(e,t)=>{for(let n of _E)try{n(e,t)}catch{}},TE=e=>(_E.add(e),()=>{_E.delete(e)}),EE=(e,t)=>{let n=bE(e);if(!n)return!1;let r=pE.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:(pE.set(n,t),t.status!==`pending`&&mE.delete(n),wE(n,t),!0)},DE=(e,t)=>{let n=bE(e);if(!n)return!1;let r=t.status===`pending`||t.status===`ready`||t.status===`failed`?t.status:null;return r?EE(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},OE=()=>{vE||=Ei(e=>{e.type===`worktree-bootstrap-status`&&DE(e.directory,e)}),!(typeof window>`u`||yE)&&(yE=!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()})})))},kE=e=>{let t=bE(e);t&&(OE(),EE(t,{status:`pending`,error:null,updatedAt:Date.now()}))},AE=e=>{let t=bE(e);if(!t)return;SE(t);let n=hE.get(t);n&&(n.cancelled=!0,n.disposeSettlement?.(),n.disposeSettlement=null,hE.delete(t));let r=mE.get(t);r&&(r.dispose(),mE.delete(t)),pE.delete(t)},jE=e=>{let t=bE(e);return t?pE.get(t)??null:null},ME=(e,t)=>{let n=zr.getState().dictionary;return Br(n,e,t)},NE=e=>({status:`failed`,error:e,updatedAt:Date.now()}),PE=(e,t,n)=>{let r=NE(t);return EE(e,r),n?.(r),r},FE=async(e,t=()=>!0)=>{try{let n=await CE(e);return t()?EE(e,n)?n:jE(e):null}catch{return null}},IE=(e,t,n=dE)=>{let r=bE(e),i=xE(r);OE();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,FE(e,()=>!a&&xE(r)===i).finally(()=>{c=!1}))},Number.isFinite(n)?Math.max(1,n):dE))},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=TE((e,t)=>{bE(e)===r&&d(t)}),o=setTimeout(()=>{s(()=>{let t=PE(e,ME(`worktree.bootstrap.toast.timeoutDescription`));i(Error(t.error||`Timed out waiting for worktree bootstrap`))})},Math.max(0,t)),d(pE.get(r))});return h.catch(()=>void 0),{promise:h,startCompensation:p,dispose:()=>m(Error(`Worktree bootstrap wait cancelled`))}},LE=async(e,t,n,r,i,a)=>{let o=bE(e),s=IE(e,n,r);t.disposeSettlement=s.dispose;let c=await FE(e,()=>!t.cancelled&&hE.get(o)===t&&xE(o)===t.epoch);if(t.cancelled||hE.get(o)!==t){s.dispose();return}if(c?.status===`ready`){s.dispose(),a?.(c);return}if(c?.status===`failed`){s.dispose(),i?.(c),zC.error(ME(`worktree.bootstrap.toast.failed`),{description:c.error||ME(`worktree.bootstrap.toast.failedDescription`)});return}s.startCompensation();try{let e=await s.promise;if(t.cancelled||hE.get(o)!==t)return;a?.(e)}catch(n){if(t.cancelled||hE.get(o)!==t)return;let r=jE(e);if(r?.status===`failed`){i?.(r),zC.error(ME(`worktree.bootstrap.toast.failed`),{description:r.error||ME(`worktree.bootstrap.toast.failedDescription`)});return}let a=PE(e,n instanceof Error?n.message:String(n),i);zC.error(ME(`worktree.bootstrap.toast.failed`),{description:a.error||ME(`worktree.bootstrap.toast.failedDescription`)})}},RE=(e,t)=>{let n=bE(e);if(!n||pE.get(n)?.status!==`pending`||hE.has(n))return;let r={cancelled:!1,epoch:xE(n),promise:Promise.resolve(),disposeSettlement:null};r.promise=LE(e,r,t?.timeoutMs??uE,t?.pollIntervalMs??dE,t?.onFailed,t?.onReady).finally(()=>{hE.get(n)===r&&hE.delete(n)}),hE.set(n,r)},zE=async(e,t=uE)=>{let n=bE(e);if(!n)return;let r=pE.get(n);if(!r||r.status===`ready`)return;if(r.status===`failed`)throw Error(r.error||`Worktree bootstrap failed`);let i=mE.get(n);if(i)return i.promise;let a=()=>{},o=xE(n),s=(async()=>{let r=IE(e,t,dE);a=r.dispose;let i=await FE(e,()=>xE(n)===o);if(xE(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(()=>{mE.get(n)?.promise===s&&mE.delete(n)});return mE.set(n,{promise:s,dispose:()=>a()}),s},BE=`openchamber.json`,VE=`.openchamber`,HE=[`.config`,`openchamber`,`projects`];function UE(){let e=te();return e?.files?e.files:null}var WE=80,GE=4e3,KE=2e3,qE=300,JE=new Set([`macos`,`linux`,`windows`]),YE=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)},XE=(e,t)=>{let n=YE(e),r=t.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/\/+$/,``);return!n||n===`/`?`/${r}`:`${n}/${r}`},ZE=e=>XE(XE(e,VE),BE),QE=()=>{let e=`/api`;return e.startsWith(`/`),e},$E=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}}},eD=async e=>{let t=UE();if(t?.createDirectory)try{if((await t.createDirectory(e))?.success)return!0}catch{}return!!(await $E(`${QE()}/fs/mkdir`,{path:e})).ok},tD=async e=>{let t=UE();if(t?.readFile)try{let n=await t.readFile(e);return typeof n?.content==`string`?n.content:``}catch{return null}try{let t=await _(`${QE()}/fs/read?path=${encodeURIComponent(e)}`,{cache:`no-store`});return t.ok?await t.text():null}catch{return null}},nD=async(e,t)=>{let n=UE();if(n?.writeFile)try{if((await n.writeFile(e,t))?.success)return!0}catch{}return!!(await $E(`${QE()}/fs/write`,{path:e,content:t})).ok},rD=async()=>{try{let e=await _(`${QE()}/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 YE(n)}catch{}if(!ye()){let e=await k().catch(()=>null);if(e&&e.trim().length>0)return YE(e)}return null},iD=async()=>{let e=await rD();return e?HE.reduce((e,t)=>XE(e,t),e):null},aD=e=>{let t=typeof e?.path==`string`?e.path.trim():``,n=t?YE(t):``;return n&&be(n)||null},oD=async e=>{let t=await iD();if(!t)return null;let n=aD(e);return n?XE(t,`${n}.json`):null},sD=(e,t)=>e.length<=t?e:e.slice(0,t),cD=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();!JE.has(e)||n.has(e)||(n.add(e),t.push(e))}return t},lD=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=sD(typeof e.name==`string`?e.name.trim():``,WE),o=sD(typeof e.command==`string`?e.command.trim():``,GE);if(!i||!a||!o||n.has(i))continue;n.add(i);let s=typeof e.icon==`string`?e.icon.trim():``,c=cD(e.platforms),l=e.autoOpenUrl===!0,u=sD(typeof e.openUrl==`string`?e.openUrl.trim():``,KE),d=sD(typeof e.desktopOpenSshForward==`string`?e.desktopOpenSshForward.trim():``,qE);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},uD=e=>{let t=lD(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 dD(e){let t=typeof e?.path==`string`?e.path.trim():``;if(!t)return null;let n=await oD(e),r=async e=>{let t=await tD(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(ZE(t)));if(!a)return null;try{await fD(e,a)&&await CD(t)}catch{}return a}async function fD(e,t){let n=typeof e?.path==`string`?e.path.trim():``;if(!n)return!1;let r=await iD(),i=await oD(e);if(!r||!i)return!1;try{if(!await eD(r))return!1;let e=await tD(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 nD(i,JSON.stringify({...a,...t,...o,projectPath:YE(n)},null,2))}catch(e){return console.error(`Failed to write openchamber config:`,e),!1}}async function pD(e,t){return fD(e,{...await dD(e)||{},...t})}async function mD(e){return(await dD(e))?.[`setup-worktree`]??[]}async function hD(e,t){return pD(e,{"setup-worktree":t.filter(e=>e.trim().length>0)})}async function gD(e){return(await dD(e))?.[`setup-worktree-wait`]===!0}async function _D(e,t){return pD(e,{"setup-worktree-wait":t})}async function vD(e){let t=await dD(e);return C(t?.draftStarters)}async function yD(e,t){return pD(e,{draftStarters:C(t)})}async function bD(e){let t=await dD(e);return uD({actions:t?.projectActions,primaryActionId:t?.projectActionsPrimaryId})}async function xD(e,t){let n=uD({actions:t.actions,primaryActionId:t.primaryActionId});return pD(e,{projectActions:n.actions,projectActionsPrimaryId:n.primaryActionId??void 0})}function SD(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 CD(e){let t=ZE(e),n=UE();if(n?.delete)try{await n.delete(t);return}catch{}try{await $E(`${QE()}/fs/delete`,{path:t})}catch{}}var wD=R,TD=(e,t)=>{let n=wD(t);if(!n)return null;let r=null;for(let t of e){let e=wD(t.path);e&&(n!==e&&!n.startsWith(`${e}/`)||(!r||e.length>(wD(r.path)?.length??0))&&(r=t))}return r},ED=(e,t,n)=>{let r=wD(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=wD(t.path);n&&(r!==n&&!r.startsWith(`${n}/`)||n.length>o&&(o=n.length,i=t,a=wD(e)))}if(!i)return null;let s=[wD(i.projectDirectory),a].filter(e=>!!e);for(let t of s){let n=e.find(e=>wD(e.path)===t)??null;if(n)return n;let r=TD(e,t);if(r)return r}return null},DD=(e,t,n)=>ED(e,t,n)??TD(e,n),OD=500,kD=2592e6;function AD(e){let t=Date.now()-kD,n=e.filter(e=>e.time>=t);return n.length<=OD?n:n.slice(n.length-OD)}function jD(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 MD=ke((e,t)=>({list:[],index:{session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}},append:n=>{let r=t().list,i=AD([...r,n]);e({list:i,index:jD(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:jD(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:jD(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 ND(e){MD.getState().append(e)}function PD(e){MD.getState().markSessionViewed(e)}function FD(e){if(!e)return;let t=MD.getState().list,n=!1,r=t.filter(t=>t.session===e&&t.type===`error`?(n=!0,!1):!0);n&&MD.setState({list:r,index:jD(r)})}function ID(e){let t=(0,U.c)(2),n;return t[0]===e?n=t[1]:(n=t=>t.index.session.unseenCount[e]??0,t[0]=e,t[1]=n),MD(n)}function LD(e){let t=(0,U.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),MD(n)}var RD=/^(.*)\.(\d+)$/,zD=[`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.`],BD=new Set([`session.next.step.ended`,`session.next.step.failed`,`session.step.ended`,`session.step.failed`,`session.shell.ended`,`session.compaction.ended`,`session.compaction.failed`]);function VD(e){return RD.exec(e)?.[1]??e}function HD(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function UD(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 WD(e){let t=HD(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 GD(e){let t=HD(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 KD(e){let t=HD(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`&&!GD(e)?{directory:t.directory}:{}}}return e}function qD(e,t){if(e===`session.status`){let e=UD(t),n=t.status;if(e&&n&&typeof n==`object`)return{sessionID:e,status:n}}return t}function JD(e,t){let n=UD(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`}}:BD.has(e)?{domainActivityHint:{sessionID:n,kind:`terminal`}}:zD.some(t=>e.startsWith(t))||e.startsWith(`session.next.`)?{domainActivityHint:{sessionID:n,kind:`activity`}}:{}:{}}function YD(e){let t=HD(KD(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(WD(t))return{action:`drop`,reason:`sync-duplicate`};let r=VD(n),i=HD(t.data),a=HD(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:GD(t)}}:{action:`drop`,reason:`invalid`};let s={...qD(r,o)},c=HD(t.durable);if(typeof c?.seq==`number`&&Number.isSafeInteger(c.seq)&&c.seq>=0&&(s.eventSequence=c.seq),r===`session.retry.scheduled`){let e=HD(o.error);if(!UD(o)||typeof o.attempt!=`number`||!Number.isFinite(o.attempt)||typeof o.at!=`number`||!Number.isFinite(o.at))return{action:`drop`,reason:`invalid`};r=`session.status`,s.status={type:`retry`,attempt:o.attempt,next:o.at,message:typeof e?.message==`string`?e.message:``}}typeof t.created==`number`&&Number.isFinite(t.created)&&t.created>0&&typeof s.eventCreated!=`number`&&(s.eventCreated=t.created);let l=GD(t)??GD(o)??(()=>{let e=HD(s.info);return typeof e?.directory==`string`?e.directory:void 0})(),u=JD(r,s);return{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:s,locationDirectory:l,...u}}}function XD(e){return{...e.id?{id:e.id}:{},type:e.type,properties:e.properties}}var ZD=33,QD=200,$D=1e4,eO=8,tO=250,nO=3e4,rO=6e4,iO=2,aO=2e3,oO=8e3,sO=250,cO=5e3,lO=6e4,uO=8,dO=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},fO=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}}},pO=e=>{if(!e||typeof e!=`object`)return{status:`unusable`};let t=dO(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=fO(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=YD(e);return r.action===`drop`?r.reason===`sync-duplicate`?{status:`declined`}:{status:`unusable`}:{status:`event`,event:XD(r.event),normalized:r.event}};function mO(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 hO(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 gO(e){let t=`/api`;try{let e=B;typeof e.getBaseUrl==`function`&&(t=e.getBaseUrl())}catch{t=`/api`}let n=t.endsWith(`/`)?t:`${t}/`,r={};return e&&e.length>0&&(r.lastEventId=e),d()||(r.includeReasoning=`false`),c().websocket(`${n}global/event/ws`,Object.keys(r).length>0?r:void 0)}function _O(e){let t=gO(e);return Ht(t)}function vO(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=nO,reconnectDelayMs:y=tO,wsReadyTimeoutMs:b}=e,x=b??(a()?oO:aO),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(),jn.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?QD:ZD)-n))},ne=e=>new Promise(t=>setTimeout(t,e)),re=e=>e instanceof DOMException&&e.name===`AbortError`||typeof e==`object`&&!!e&&e.name===`AbortError`,ie=()=>typeof navigator==`object`&&navigator!==null&&navigator.onLine===!1,ae=()=>typeof document<`u`&&document.visibilityState!==`visible`,oe=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},se=e=>!(e<400||e>=500||e===408||e===429),P=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(ie())return lO;let t=ae()?lO:cO,n=Math.min(e-1,uO);return Math.min(t,sO*2**n)},ce=!1,le,ue=Date.now(),de,I=_===`ws`?`ws`:`sse`,fe=null,L=0,pe=0,me=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}))},he=e=>{C||(C=!0,me(e),p?.(e))},R=()=>{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:I,isReconnect:t})},ge=()=>{C=!1,L=0,N(),l?.(),R()},_e=(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;jn.pipeline.coalesced(r.type,o);return}a.coalesced.set(o,a.queue.length)}a.queue.push(r),te(i)},ve=(e,t)=>{let n=hO(t);if(!n)return`unusable`;let r=pO(n);if(r.status!==`event`)return r.status===`declined`?`declined`:`unusable`;let i=mO(e,n,r.event,r.normalized.locationDirectory);return _e(i,r.event,r.normalized),`ingested`},ye=()=>{ue=Date.now(),de&&clearTimeout(de),de=setTimeout(()=>{fe=`${I}_heartbeat_timeout`,le?.abort()},v)},be=()=>{ye(),m?.()},xe=()=>{de&&=(clearTimeout(de),void 0)},z=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)}},Se=async e=>{ye();let n=await z(Promise.resolve(t.event.subscribe({signal:e,...w&&w.length>0?{headers:{"Last-Event-ID":w}}:{}})),e);ge();let r=Date.now();be();for await(let e of n){be(),ce=!1;let t=typeof e.id==`string`?e.id:void 0;t&&t.length>0&&(w=t),ve(e,e.payload??e),!(Date.now()-r<eO)&&(r=Date.now(),await ne(0))}if(!e.aborted){let e=Error(`Global event SSE stream closed`);throw e.reason=`sse_stream_closed`,e}},Ce=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()+rO,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=_O(w),c=(e,t=!1)=>{(t||!a)&&_===`auto`&&(T=Date.now()+rO,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()+rO);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`){be(),a=!0,o=Date.now(),l&&=(clearTimeout(l),void 0),ce=!1,ge();return}if(t.type===`error`){be();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`){be(),pe=Date.now()+$D;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(ve({directory:t.directory,payload:t.payload},t.payload)===`unusable`){n&&(D=E===n?D+1:1,E=n,D>=iO&&(w=n,E=void 0,D=0)),m(`ws_invalid_frame:event_payload`);return}E=void 0,D=0,be(),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)}})},we=()=>typeof WebSocket==`function`?_===`ws`?`ws`:_===`sse`||a()||T>Date.now()?`sse`:`ws`:`sse`;(async()=>{for(;!S.signal.aborted;){le=new AbortController,ue=Date.now(),fe=null;let e=y,t=we();I=t;let n=()=>{fe=`pipeline_stopped`,le?.abort()};S.signal.addEventListener(`abort`,n);try{t===`ws`?await Ce(le.signal):await Se(le.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)){L+=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`;he(a);let o=oe(n);e=o!==void 0&&se(o)?lO:F(L)}}finally{S.signal.removeEventListener(`abort`,n),le=void 0,xe()}if(S.signal.aborted)return;fe&&fe!==`pipeline_stopped`&&(he(fe),L+=1,e=y>0?F(L):0,fe=null),e>0&&await P(e)}})().finally(N);let Te=()=>{if(!(typeof document>`u`)){if(document.visibilityState===`hidden`){me(`visibility_hidden`);return}document.visibilityState===`visible`&&(Date.now()-ue<v||le?.abort())}},Ee=e=>{e.persisted&&(me(`pageshow_persisted`),le?.abort())},De=()=>{me(`system_resume`),le&&(fe=`${I}_system_resume`,le.abort())},Oe=()=>{C&&(me(`online`),le?.abort())},ke=()=>{le?.abort()};return typeof document<`u`&&(document.addEventListener(`visibilitychange`,Te),window.addEventListener(`pageshow`,Ee)),globalThis.window!==void 0&&(globalThis.window.addEventListener(`openchamber:system-resume`,De),globalThis.window.addEventListener(`online`,Oe),globalThis.window.addEventListener(`offline`,ke)),{cleanup:()=>{typeof document<`u`&&(document.removeEventListener(`visibilitychange`,Te),window.removeEventListener(`pageshow`,Ee)),globalThis.window!==void 0&&(globalThis.window.removeEventListener(`openchamber:system-resume`,De),globalThis.window.removeEventListener(`online`,Oe),globalThis.window.removeEventListener(`offline`,ke)),S.abort(),xe(),N()},reconnect:(e=`manual`)=>{e===`reasoning_projection`&&ee(),fe=`${I}_${e}`,le?.abort()}}}var yO=Gr({epoch:qr().min(1),revision:Hr().int().nonnegative(),serverNow:Hr(),enabled:Kr(),delayMs:Ur(3e4),coverage:Gr({state:Jr([`ready`,`reconciling`,`partial`]),failedDirectories:Wr(qr())}),requests:Wr(Gr({requestID:qr(),sessionID:qr(),directory:qr(),questionCount:Hr(),state:Jr([`counting`,`paused`,`disabled`,`submitting`,`uncertain`,`settled`]),deadlineAt:Hr().nullable(),pauseReason:Jr([`interaction`,`user`,`goal`]).nullable(),submittedBy:Jr([`manual`,`auto`]).nullable(),resolution:Jr([`replied`,`rejected`,`external`]).nullable()}))}),bO=Gr({outcome:Jr([`ok`,`paused`,`delegated`,`submitted`,`claimed`,`uncertain`,`settled`,`not_found`,`disabled`,`error`]),snapshot:yO}),xO=0,SO=()=>({transport:u(),generation:f()}),CO=e=>e.transport===u()&&e.generation===f(),wO=e=>[e.transport,`question-auto-delegate`,e.generation];function TO(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 EO=(e,t)=>({snapshot:e,receivedAt:performance.now(),sequence:t,retiredEpochs:[]});function DO(e=SO()){return Ar({queryKey:wO(e),queryFn:async({signal:t})=>{if(!CO(e))throw Error(`Runtime changed`);let n=++xO,r=await _(`/api/question-auto-delegate`,{signal:t});if(!r.ok)throw Error(`Question snapshot: ${r.status}`);let i=yO.parse(await r.json());if(!CO(e)||t.aborted)throw Error(`Runtime changed`);return EO(i,n)},structuralSharing:(e,t)=>TO(e,t),staleTime:1/0,retry:1,refetchOnWindowFocus:`always`})}function OO(){let e=(0,U.c)(1);(0,K.useSyncExternalStore)(s,f,f);let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=DO(),e[0]=t):t=e[0],jr(t,I)}var kO=()=>I.getQueryData(DO().queryKey),AO=()=>I.ensureQueryData(DO()),jO=async()=>{let e=wO(SO());await I.cancelQueries({queryKey:e,exact:!0},{revert:!1}),await I.invalidateQueries({queryKey:e,exact:!0})};async function MO(e,t,n){let r=SO(),i=++xO,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=bO.parse(await a.json());if(!CO(r))throw Error(`Runtime changed`);if(I.setQueryData(wO(r),e=>TO(e,EO(o.snapshot,i))),jO(),!a.ok&&![`claimed`,`uncertain`,`not_found`].includes(o.outcome))throw Error(`Question ${e}: ${a.status}`);return o.outcome}var NO=new Set([`/`,`-`,`_`,`.`,` `,`:`,`\\`]);function PO(e){return e==null?[]:typeof e==`string`?e?[e]:[]:e.filter(e=>typeof e==`string`&&e.length>0)}function FO(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(NO.has(o)?0:.5)+i/1e3+a}function IO(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=PO(n(t));if(e.length===0)continue;let r=null,i=e[0].toLowerCase();for(let t of e){let e=t.toLowerCase(),n=FO(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 Yr(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 LO=Ne(),RO=3e4,zO=(e,t)=>e?.find(e=>e.requestID===t.id);function BO(e){let t=OO(),n=zO(t.data?.snapshot.requests,e),r=`${f()}:${e.sessionID}:${e.id}`,[i,a]=K.useState({scope:r,pending:null,failed:null}),o=i.scope===r?i.pending:null,s=i.scope===r?i.failed:null,[c,l]=K.useState(null),u=c?.scope===r&&(!c.epoch||c.epoch===t.data?.snapshot.epoch),d=u&&(!n||![`submitting`,`uncertain`,`settled`].includes(n.state)),[p,m]=K.useState(null),h=p?.scope===r,g=K.useRef(null),_=K.useRef(null),v=K.useRef(r);v.current=r;let y=Fr(()=>{u||m(e=>e?.scope===r?e:{scope:r})}),b=Fr(async(t,n=`user`)=>{if(u||(t===`pause`&&y(),g.current===r||n===`interaction`&&_.current===r))return;let i=kO(),o=zO(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,jO());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 AO();if(s!==f())throw Error(`Runtime changed`);let n=zO(t.snapshot.requests,e);if(!n)throw Error(`Question identity unavailable`);r={requestID:n.requestID,sessionID:n.sessionID,directory:n.directory}}let a=await MO(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=Fr(e=>{e.target.closest(`[data-question-delegation-controls]`)||h||y()}),S=Fr(async n=>{n===`${f()}:${e.sessionID}:${e.id}`&&(l({scope:r,epoch:t.data?.snapshot.epoch}),a({scope:r,pending:null,failed:null}),await jO())});return K.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 VO(e){let t=(0,U.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,LO.jsx)(`div`,{"data-question-delegate-bar":!0,"aria-hidden":!0,className:`h-1 w-full overflow-hidden rounded-full bg-muted/40`,children:(0,LO.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 HO(e){let t=(0,U.c)(11),{data:n,deadlineAt:r,startedAt:i,delayMs:a}=e,{t:o}=Lr(),[,s]=K.useReducer(UO,0),c=Math.max(0,r!=null&&n?r-n.snapshot.serverNow-(performance.now()-n.receivedAt):a-(performance.now()-i));Pr(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,LO.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,LO.jsx)(VO,{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,LO.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 UO(e){return e+1}function WO({delegation:e}){let{t}=Lr(),{query:n,request:r,pending:i,failed:a,run:o,claimed:s,awaitingClaim:c,scope:l,held:u}=e,d=K.useRef(performance.now()),f=K.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??RO,_=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,LO.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,LO.jsx)(HO,{data:n.data,deadlineAt:r?.deadlineAt??null,startedAt:d.current,delayMs:g}):null,(0,LO.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[h?null:(0,LO.jsx)(`div`,{className:`min-w-0 flex-1 basis-40 typography-micro text-muted-foreground`,children:(0,LO.jsx)(`span`,{role:`status`,children:t(_)})}),n.isError||a?(0,LO.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,LO.jsx)(Rr,{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,LO.jsx)(Rr,{variant:`ghost`,size:`xs`,disabled:!!i,onClick:()=>void o(`pause`),children:t(`chat.questionDelegate.pause`)}),r&&!p&&(0,LO.jsx)(Rr,{variant:`outline`,size:`xs`,disabled:!!i,onClick:()=>void o(`delegate`),children:t(`chat.questionDelegate.delegate`)})]})]})}function GO(){let e=(0,U.c)(5),t=OO(),{t:n}=Lr(),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=f(),e[0]=r):r=e[0];let i=r,a=K.useRef(void 0),o,s;return e[1]!==t.data||e[2]!==n?(o=()=>{let e=t.data;if(!e)return;let r=a.current;if(a.current={generation:i,data:e},!r||r.generation!==i)return;let o=r.data;if(o.snapshot.epoch!==e.snapshot.epoch||o.snapshot.revision===e.snapshot.revision||document.visibilityState!==`visible`)return;let s=new Map(o.snapshot.requests.map(KO));for(let t of e.snapshot.requests)s.get(t.requestID)?.state!==`settled`&&t.state===`settled`&&t.submittedBy===`auto`&&t.resolution===`replied`&&zC.success(n(`chat.questionDelegate.success`),{id:`question-delegate:${e.snapshot.epoch}:${t.requestID}`})},s=[i,t.data,n],e[1]=t.data,e[2]=n,e[3]=o,e[4]=s):(o=e[3],s=e[4]),K.useEffect(o,s),null}function KO(e){return[e.requestID,e]}function qO(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 JO(e,t){let n=new Set(Array.from(t).filter(Boolean));if(n.size===0)return;let r=e.session_interrupt_acknowledged_at,i=e.session_execution_version,a=e.session_status_event_at,o=e.session_status_event_sequence;for(let t of n)r?.[t]!==void 0&&e.session_interrupt_acknowledged_at===r&&(e.session_interrupt_acknowledged_at={...r}),i?.[t]!==void 0&&e.session_execution_version===i&&(e.session_execution_version={...i}),a?.[t]!==void 0&&e.session_status_event_at===a&&(e.session_status_event_at={...a}),o?.[t]!==void 0&&e.session_status_event_sequence===o&&(e.session_status_event_sequence={...o}),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_status_event_at&&delete e.session_status_event_at[t],e.session_status_event_sequence&&delete e.session_status_event_sequence[t],e.session_interrupt_acknowledged_at&&delete e.session_interrupt_acknowledged_at[t],e.session_execution_version&&delete e.session_execution_version[t],e.session_error_at&&delete e.session_error_at[t],delete e.permission[t],delete e.question[t]}function YO(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 XO=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},ZO=(e,t)=>e?XO(t)<XO(e):!1,QO=(e,t)=>{if(t.sessionID!==e.id||typeof t.title!=`string`)return e;let n=typeof t.eventCreated==`number`&&Number.isFinite(t.eventCreated)?t.eventCreated:XO(e);return n<XO(e)||e.title===t.title&&n===XO(e)?e:{...e,title:t.title,time:{...e.time,updated:n}}};function $O(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function ek(e){return typeof e==`string`&&e.length>0?e:void 0}function tk(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function nk(e){let t=$O(e);if(!t)return null;let n=ek(t.id),r=ek(t.sessionID)??ek(t.sessionId),i=ek(t.permission)??ek(t.action);if(!n||!r||!i)return null;let a=$O(t.source)??$O(t.tool),o=tk(t.patterns),s=tk(t.resources),c=tk(t.always),l=tk(t.save);return Rt({id:n,sessionID:r,action:i,resources:o.length>0?o:s,save:c.length>0?c:l,metadata:$O(t.metadata)??{},source:a?{messageID:ek(a.messageID),id:ek(a.callID)??ek(a.id)}:void 0})}function rk(e){let t=$O(e);if(!t)return null;let n=ek(t.id),r=ek(t.sessionID)??ek(t.sessionId);if(!n||!r)return null;let i=(Array.isArray(t.questions)?t.questions:[]).flatMap(e=>{let t=$O(e);if(!t)return[];let n=Array.isArray(t.options)?t.options.flatMap(e=>{let t=$O(e);if(!t)return[];let n=ek(t.label);return n?[{label:n,description:typeof t.description==`string`?t.description:``}]:[]}):[];return[{question:ek(t.question)??``,header:ek(t.header)??``,options:n,...t.multiple===!0?{multiple:!0}:{}}]}),a=$O(t.tool);return mr({id:n,sessionID:r,questions:i,tool:a?{messageID:ek(a.messageID),id:ek(a.callID)??ek(a.id)}:void 0})}function ik(e){let t=$O(e);if(!t)return null;let n=$O(t.form)??t;if(!ct(n.metadata))return null;let r=ek(n.id),i=ek(n.sessionID)??ek(n.sessionId);if(!r||!i)return null;let a=$O(n.metadata)??void 0,o=Array.isArray(n.fields)?n.fields.flatMap(e=>{let t=$O(e),n=t?ek(t.key):void 0;if(!t||!n)return[];let r=Array.isArray(t.options)?t.options.flatMap(e=>{let t=$O(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 mr({id:r,sessionID:i,title:typeof n.title==`string`?n.title:void 0,...o&&o.length>0?{fields:o}:{},...a?{metadata:a}:{}})}function ak(e,t){let n=[...e.question[t.sessionID]??[]],r=Xd.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 ok(e,t,n){if(!t||!n)return!1;let r=e.question[t];if(!r)return!1;let i=Xd.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 sk(e,t,n){return e.session_error_at?.[t]!==n&&(e.session_error_at={...e.session_error_at,[t]:n},!0)}function ck(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 lk(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 uk(e,t){let n=af(e,t);if(e.session_execution_recovery?.[t]===void 0)return n;let r={...e.session_execution_recovery};return delete r[t],e.session_execution_recovery=r,!0}function dk(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 fk(e){return e.type===`global.disposed`||e.type===`server.connected`?{type:`refresh`}:e.type===`project.updated`?{type:`project`,project:e.properties}:null}function pk(e,t){let n=[...e.projects],r=Xd.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 mk(e,t,n){t&&(n?.(t,void 0),JO(e,[t]))}var hk=e=>e.title===`smartfetch-secondary`;function gk(e,t,n,r){return n.found?(e.session.splice(n.index,1),hk(t)&&mk(e,t.id,r),t.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0):!1}function _k(e){let t=e.properties?.info;if(!(!t||typeof t!=`object`))return typeof t.id==`string`?t:void 0}function vk(e,t,n){if(t.type===`session.status`||t.type===`session.idle`||t.type===`session.error`||t.type.startsWith(`session.execution.`)){let n=t.properties;if(n.sessionID&&typeof n.eventSequence==`number`){if(n.eventSequence<=(e.session_status_event_sequence?.[n.sessionID]??-1))return!1;e.session_status_event_sequence={...e.session_status_event_sequence,[n.sessionID]:n.eventSequence}}if(n.sessionID&&typeof n.eventCreated==`number`){if(n.eventSequence===void 0&&n.eventCreated<(e.session_status_event_at?.[n.sessionID]??0))return!1;e.session_status_event_at={...e.session_status_event_at,[n.sessionID]:n.eventCreated}}}switch(t.type){case`server.instance.disposed`:return n?.onRefresh?.(``),!1;case`session.created`:{let r=_k(t);if(!r)return!1;let i=dd(r),a=e.session,o=Xd.search(a,i.id,e=>e.id);return yd(i)?o.found&&ZO(a[o.index],i)?!1:(o.found?a[o.index]=i:(a.splice(o.index,0,i),yk(e),i.parentID||(e.sessionTotal+=1)),!0):gk(e,i,o,n?.onSetSessionTodo)}case`session.renamed`:{let r=t.properties;if(typeof r.sessionID!=`string`)return!1;let i=Xd.search(e.session,r.sessionID,e=>e.id);if(!i.found)return!1;let a=e.session[i.index],o=QO(a,r);return o===a?!1:yd(o)?(e.session[i.index]=o,!0):gk(e,o,i,n?.onSetSessionTodo)}case`session.updated`:{let r=_k(t);if(!r)return!1;let i=dd(r),a=e.session,o=Xd.search(a,i.id,e=>e.id);if(o.found&&ZO(a[o.index],i))return!1;{let t=i.time?.archived,r=typeof t==`number`&&Number.isFinite(t)&&t>0;if(!yd(i)||r)return gk(e,i,o,n?.onSetSessionTodo)}return o.found?a[o.index]=i:(a.splice(o.index,0,i),yk(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=Xd.search(a,i,e=>e.id);if(!o.found)return!1;let s={...a[o.index],metadata:r.metadata};return a[o.index]=s,yd(s)?!0:gk(e,s,o,n?.onSetSessionTodo)}case`session.deleted`:{let r=t.properties.info,i=e.session,a=Xd.search(i,r.id,e=>e.id);return a.found&&i.splice(a.index,1),mk(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]=ld(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`)&&(af(e,r.sessionID),i=ck(e,r.sessionID));let a=uk(e,r.sessionID);return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),dk(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=uk(e,r.sessionID),a={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),dk(e.session_status[r.sessionID],a)?!!n?.now||i:(e.session_status[r.sessionID]=a,!0)}case`session.error`:{let r=t.properties,i=af(e,r.sessionID);n?.onServerSessionIdle?.(r.sessionID);let a={type:`idle`},o=n?.now?.();o!==void 0&&(e.session_status_observed_at[r.sessionID]=o);let s=o!==void 0&&sk(e,r.sessionID,o);return dk(e.session_status[r.sessionID],a)?o!==void 0||s||i:(e.session_status[r.sessionID]=a,!0)}case`session.execution.started`:{let r=t.properties;e.session_execution_version={...e.session_execution_version,[r.sessionID]:(e.session_execution_version?.[r.sessionID]??0)+1};let i={type:`busy`};return ck(e,r.sessionID),uk(e,r.sessionID),n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),dk(e.session_status[r.sessionID],i)||(e.session_status[r.sessionID]=i),!0}case`session.execution.succeeded`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i=uk(e,r.sessionID),a={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),dk(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=af(e,r.sessionID),n={type:`busy`},i=lk(e,r.sessionID,{reason:`shutdown`,observedAt:a??Date.now()});return dk(e.session_status[r.sessionID],n)?i||t||a!==void 0:(e.session_status[r.sessionID]=n,!0)}n?.onServerSessionIdle?.(r.sessionID);let o=uk(e,r.sessionID),s={type:`idle`};return dk(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&&sk(e,r.sessionID,a),s=uk(e,r.sessionID);return dk(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=Xd.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=Xd.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=ek($O(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=nk(t.properties);if(!n)return!1;let r=[...e.permission[n.sessionID]??[]],i=Xd.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=Xd.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=rk(t.properties);return n?ak(e,n):!1}case`form.created`:{let n=ik(t.properties);return n?ak(e,n):!1}case`question.replied`:case`question.rejected`:{let n=t.properties;return ok(e,n.sessionID,n.requestID)}case`form.replied`:case`form.cancelled`:{let n=t.properties;return ok(e,n.sessionID,n.id??n.requestID)}case`lsp.updated`:return n?.onLoadLsp?.(),!1;default:return!1}}function yk(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 bk=ke()(e=>({...Gn,actions:{set:t=>e(t),reset:()=>e(Gn)}}));function xk(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 wk(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 Tk(e){let t=e.slice(0,12).replace(/[^a-zA-Z0-9]/g,`_`);return`oc.dir.${wk(m().trim()||`default`)}.${t}.${wk(e)}`}function Ek(e,t){return`${Tk(e)}.${t}`}function Dk(e,t){try{let n=localStorage.getItem(Ek(e,t));return n?JSON.parse(n):void 0}catch{return}}function Ok(e,t,n){try{let r=Ek(e,t);n===void 0?localStorage.removeItem(r):localStorage.setItem(r,JSON.stringify(n))}catch{}}function kk(e){return{vcs:Dk(e,`vcs`),projectMeta:Dk(e,`projectMeta`),icon:Dk(e,`icon`)}}function Ak(e){try{localStorage.removeItem(`${Tk(e)}.sessions`)}catch{}}function jk(e,t){Ok(e,`vcs`,t)}function Mk(e,t){Ok(e,`projectMeta`,t)}function Nk(e,t){Ok(e,`icon`,t)}function Pk(e){let t=kk(e);Ak(e);let n=ke()(e=>({...ut,vcs:t.vcs??ut.vcs,projectMeta:t.projectMeta??ut.projectMeta,icon:t.icon??ut.icon,patch:t=>e(t),replace:t=>e(t)})),r=n.setState;return n.setState=((t,i)=>{let a=typeof t==`function`?t(n.getState()):t;r(lo(e,n.getState(),a),i)}),n.setState({patch:e=>n.setState(e),replace:e=>n.setState(e)}),n.subscribe((t,n)=>{t.vcs!==n.vcs&&jk(e,t.vcs),t.projectMeta!==n.projectMeta&&Mk(e,t.projectMeta),t.icon!==n.icon&&Nk(e,t.icon)}),n}var Fk=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=Se(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=Se(e);t&&(this.pins.set(t,(this.pins.get(t)??0)+1),this.mark(t))}unpin(e){let t=Se(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(Se(e))??0)>0}ensureChild(e,t){let n=Se(e);if(!n)throw Error(`No directory provided to ensureChild`);let r=this.children.get(n);return r||(r=Pk(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(Se(e))}captureChild(e,t){let n=Se(e),r=this.ensureChild(n,t);return{directory:n,generation:this.generations.get(n)??0,store:r}}isCurrentChildCapture(e){let t=Se(e.directory);return this.children.get(t)===e.store&&this.generations.get(t)===e.generation}disposeDirectory(e){let t=Se(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:et,graceMs:pt,now:Date.now(),hasPendingBlockingRequests:e=>this.hasPendingBlockingRequestsForDirectory(e)}).filter(t=>t!==e);for(let e of n)this.disposeDirectory(e)}hasPendingBlockingRequestsForDirectory(e){return xk(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()}}},Ik=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},Lk=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(`|`)},Rk=e=>{switch(e?.type){case`retry`:return 4;case`busy`:return 3;case`idle`:return 1;default:return 0}},zk=e=>{let t=e?.message;return typeof t==`string`?t:null},Bk=(e,t)=>{let n=e?.[t];return typeof n==`number`?n:null},Vk=(e,t)=>e?.type===t?.type&&zk(e)===zk(t)&&Bk(e,`attempt`)===Bk(t,`attempt`)&&Bk(e,`next`)===Bk(t,`next`),Hk=(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?Ik(r):-1}},Uk=(e,t)=>e?t.sessionUpdatedAt===e.sessionUpdatedAt?Rk(t.status)>=Rk(e.status):t.sessionUpdatedAt>e.sessionUpdatedAt:!0,Wk=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(Lk(e[n])!==Lk(t[n]))return!1;return!0},Gk=(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(!Vk(n,i))return!1}return!0};function Kk(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||!yd(e))continue;let r=n.get(e.id);(!r||Ik(e)>=Ik(r))&&n.set(e.id,e)}return Array.from(n.values()).sort((e,t)=>Ik(t)-Ik(e))}function qk(e){let t=new Map;for(let n of e)for(let e of Object.keys(n.session_status??{})){let r=Hk(n,e);r&&Uk(t.get(e),r)&&t.set(e,r)}let n={};for(let[e,r]of t)n[e]=r.status;return n}function Jk(e,t){if(!t)return;let n;for(let r of e){let e=r.session.find(e=>e.id===t);e&&(!n||Ik(e)>=Ik(n))&&(n=e)}return n}function Yk(e,t){if(!t)return;let n;for(let r of e){let e=Hk(r,t);e&&Uk(n,e)&&(n=e)}return n?.status}var Xk=(e,t)=>e<t?-1:+(e>t);function Zk(e){if(typeof e==`string`&&e.trim().length!==0)return{location:{directory:e}}}var Qk=e=>!e||e.length===0?``:e.map(e=>e.id).sort(Xk).join(`|`);function $k(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 eA(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 tA(e,t){return t.find(t=>We(t)===e||t.sandboxes?.includes(e))?.id}async function nA(e,t){let n=await Promise.allSettled([rd(()=>e.server.info())]),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 rA(e){let{directory:t,sdk:n,getState:r,set:i,global:a}=e;if(!t.trim())throw Error(`Directory bootstrap requires an explicit directory`);let o=r(),s=o.status!==`complete`,c=tA(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}),St(t,e)}s&&i({status:`partial`});let l=await Promise.allSettled([c?Promise.resolve():rd(()=>n.location.get(Zk(t)).then(e=>{let t=e?.project?.id;t&&i({project:t})})),rd(()=>n.config.get(Zk(t)).then(e=>{let n=Ot(e);i({config:n}),St(t,n)})),rd(()=>n.location.get(Zk(t)).then(e=>{let n=_t(e);i({path:n});let r=tA(n.directory||t,a.projects);r&&i({project:r})})),rd(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=At(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:eA(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([rd(async()=>{let e=await n.vcs.get(Zk(t));if(!e?.data)throw Error(`vcs.get returned no data`);i({vcs:e.data})}),rd(async()=>{let e=r(),a=new Map(Object.entries(e.question??{}).map(([e,t])=>[e,Qk(t)])),o=$k((await n.form.list(Zk(t))).data.filter(e=>!!e?.id&&!!e?.sessionID&&ct(e.metadata)).map(e=>mr({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)=>Xk(e.id,t.id));for(let e of a.keys()){if(o[e])continue;let t=a.get(e)??``;Qk(s.question[e])===t&&delete c[e]}i({question:c})}),rd(async()=>{let e=r(),a=new Map(Object.entries(e.permission??{}).map(([e,t])=>[e,Qk(t)])),o=$k((await n.permission.request.list(Zk(t))).data.filter(e=>!!e?.id&&!!e?.sessionID).map(Rt)),s=r(),c={...s.permission};for(let[e,t]of Object.entries(o))c[e]=t.filter(e=>!!e?.id).sort((e,t)=>Xk(e.id,t.id));for(let e of a.keys()){if(o[e])continue;let t=a.get(e)??``;Qk(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])})}function iA(e,t,n,r){let i=n[e][t];i!==void 0&&(r[e]={...r[e],[t]:i},n[e]={...n[e]},delete n[e][t])}function aA(e,t){let n=e.directory;if(!n)return;let r=t.ensureChild(n,{bootstrap:!1}),i={...r.getState()};for(let[n,a]of t.children){if(a===r)continue;let t={...a.getState()};if(t.session.some(t=>t.id===e.id)||co.some(n=>t[n][e.id]!==void 0)){t.session=t.session.filter(t=>t.id!==e.id);for(let n of co)iA(n,e.id,t,i);a.setState(t),H()?.apply(V(n,e.id),{type:`reset`})}}i.session=[...i.session.filter(t=>t.id!==e.id),e].sort((e,t)=>e.id.localeCompare(t.id)),r.setState(i),Ut(e.id,n),Y.getState().upsertSession(e),$.getState().setSessionDirectory(e.id,n)}var oA=ke()(()=>({streamingMessageIds:new Map,messageStreamStates:new Map}));function sA(){oA.setState({streamingMessageIds:new Map,messageStreamStates:new Map})}var cA=1e3;function lA(e,t){let n=Date.now(),r=oA.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=H();t?.store;for(let e of l){let t=[];if(f&&d&&(t=lt(f.getTranscript(V(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>=cA&&(s.set(r.id,{...a,lastUpdateAt:n}),c=!0)}for(let[e,t]of i)t&&(l.has(e)||u(e,t));c&&oA.setState({streamingMessageIds:o,messageStreamStates:s})}function uA(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 dA(e){if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null}function fA(e){if(e[1]===`commands`)return dA(e[2]);if(e[1]===`mcp`&&(e[2]===`configs`||e[2]===`status`))return dA(e[3])}function pA(e,t){let n=t.directory===void 0?void 0:dA(t.directory);return t.directory!==void 0&&!n?Promise.resolve():e.invalidateQueries({predicate:e=>{if(e.queryKey[0]!==t.transport)return!1;let r=fA(e.queryKey);return r===void 0?!1:n===void 0||r===n},refetchType:`active`})}function mA(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 hA={"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`]},gA=[`providers`,`agents`,`commands`,`skills`,`mcp`,`plugins`];function _A(e){if(e[2]===`provider-connections`||e[1]===`configCatalog`&&e[2]===`providers`)return{domain:`providers`,directory:R(e[3])};if(e[1]===`providers`)return{domain:`providers`,directory:R(e[2])};if(e[1]===`agents`)return{domain:`agents`,directory:R(e[2]===`raw`?e[3]:e[2])};if(e[1]===`commands`||e[1]===`skills`)return{domain:e[1],directory:R(e[2])};if(e[1]===`mcp`||e[1]===`plugins`)return{domain:e[1],directory:R(e[3])};if(e[1]===`skillsCatalog`)return{domain:`skills`,directory:R(e[3])}}function vA(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=_A(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`?gA:Object.hasOwn(hA,n)?hA[n]:void 0;if(!s)return!1;a(r)||(t.clear(),r=e.identity());let c=n.startsWith(`credential.`)||!i||i===`global`?void 0:R(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()}}}var yA=``,bA=new Map,xA=new Map,SA=new Set([`session.status`,`session.idle`,`session.error`,`session.step.started`,`session.execution.started`,`session.execution.succeeded`,`session.execution.failed`,`session.execution.interrupted`]),CA=ke(()=>({statusById:new Map})),wA=e=>e===`busy`?`busy`:e===`retry`?`retry`:`idle`,TA=e=>wD(e)??e,EA=(e,t,n)=>{CA.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}})},DA=(e,t)=>{if(SA.has(t.type)){let e=`${u()}:${f()}`;yA!==e&&(yA=e,bA.clear(),xA.clear());let n=t.properties;if(n.sessionID&&typeof n.eventSequence==`number`){if(n.eventSequence<=(xA.get(n.sessionID)??-1))return;xA.set(n.sessionID,n.eventSequence)}if(n.sessionID&&typeof n.eventCreated==`number`){if(n.eventSequence===void 0&&n.eventCreated<(bA.get(n.sessionID)??0))return;bA.set(n.sessionID,n.eventCreated)}}switch(t.type){case`session.moved`:{let e=t.properties,n=e.sessionID?CA.getState().statusById.get(e.sessionID):void 0;n&&e.sessionID&&e.location?.directory&&EA(e.sessionID,TA(e.location.directory),n.status);return}case`session.status`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;let r=wA(n.status?.type);EA(n.sessionID,TA(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&&EA(n.sessionID,TA(e),`idle`);return}case`session.execution.interrupted`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;if(n.reason===`shutdown`){EA(n.sessionID,TA(e),`busy`);return}EA(n.sessionID,TA(e),`idle`);return}case`session.step.started`:case`session.execution.started`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&EA(n.sessionID,TA(e),`busy`);return}default:return}},OA=(e,t,n)=>{let r=TA(e),i=new Set(n??[]);CA.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=wA(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})},kA=e=>e?e.toLowerCase().includes(`text/html`):!1;function AA(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function jA(e){return typeof e==`string`&&e.length>0?e:void 0}function MA(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function NA(e){try{return(await e.text()).trim()}catch{return``}}async function PA(e,t){if(kA(e.headers.get(`content-type`)))throw Error(`${t}: unexpected HTML response`);if(e.status===204)return null;let n=await e.text();if(!n.trim()){if(e.ok)return null;throw Error(`${t}: empty response`)}try{return JSON.parse(n)}catch{throw Error(`${t}: malformed JSON`)}}function FA(e){return e?{directory:e}:{}}function IA(e){if(!AA(e))return null;let t=jA(e.value),n=jA(e.label);return!t||!n?null:{value:t,label:n,...jA(e.description)?{description:jA(e.description)}:{}}}function LA(e){if(!AA(e))return null;let t=jA(e.key),n=jA(e.type);if(!t||!n)return null;let r=jA(e.title),i=jA(e.description);if(n===`external`){let a=jA(e.url);return a?{key:t,type:n,url:a,...r?{title:r}:{},...i?{description:i}:{}}:null}if(n===`string`){let a=Array.isArray(e.options)?e.options.flatMap(e=>{let t=IA(e);return t?[t]:[]}):void 0;return{key:t,type:n,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...jA(e.placeholder)?{placeholder:jA(e.placeholder)}:{},...typeof e.default==`string`?{default:e.default}:{},...a&&a.length>0?{options:a}:{},...typeof e.custom==`boolean`?{custom:e.custom}:{}}}if(n===`number`||n===`integer`)return{key:t,type:n,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...typeof e.default==`number`?{default:e.default}:{}};if(n===`boolean`)return{key:t,type:n,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...typeof e.default==`boolean`?{default:e.default}:{}};if(n===`multiselect`){let a=Array.isArray(e.options)?e.options.flatMap(e=>{let t=IA(e);return t?[t]:[]}):[];return a.length===0?null:{key:t,type:n,options:a,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...Array.isArray(e.default)?{default:e.default.filter(e=>typeof e==`string`)}:{}}}return null}function RA(e){let t=AA(e)?e:null,n=t&&AA(t.data)?t.data:t&&AA(t.form)?t.form:t;if(!n)throw Error(`session form: expected form payload`);let r=jA(n.id),i=jA(n.sessionID),a=jA(n.title);if(!r||!r.startsWith(`frm_`)||!i||!a)throw Error(`session form: missing id, sessionID, or title`);let o=Array.isArray(n.fields)?n.fields.flatMap(e=>{let t=LA(e);return t?[t]:[]}):[];if(o.length===0)throw Error(`session form: expected fields`);return{id:r,sessionID:i,title:a,fields:o,...AA(n.metadata)?{metadata:n.metadata}:{}}}function zA(e){let t=AA(e)?e:null,n=t&&Array.isArray(t.data)?t.data:Array.isArray(e)?e:null;if(!n)throw Error(`session form: expected list payload`);return n.map(e=>RA(e))}function BA(e){return`/api/session/${encodeURIComponent(e)}/form`}function VA(e,t){return`/api/session/${encodeURIComponent(e)}/form/${encodeURIComponent(t)}/reply`}function HA(e,t){return`/api/session/${encodeURIComponent(e)}/form/${encodeURIComponent(t)}/cancel`}async function UA(e){let t=await _(BA(e.sessionID),{method:`GET`,query:FA(e.directory),signal:e.signal});return t.ok||MA(`session form list`,t.status,await NA(t)),zA(await PA(t,`session form list`))}async function WA(e){let t=await _(VA(e.sessionID,e.formID),{method:`POST`,headers:{"Content-Type":`application/json`},query:FA(e.directory),body:JSON.stringify({answer:e.answer}),signal:e.signal});t.ok||MA(`session form reply`,t.status,await NA(t))}async function GA(e){let t=await _(HA(e.sessionID,e.formID),{method:`POST`,query:FA(e.directory),signal:e.signal});t.ok||MA(`session form cancel`,t.status,await NA(t))}var KA=ke((e,t)=>({forms:{},upsert:t=>e(e=>{let n=e.forms[t.sessionID]??[],r=n.findIndex(e=>e.id===t.id),i=r>=0?n.map((e,n)=>n===r?t:e):[...n,t];return{forms:{...e.forms,[t.sessionID]:i}}}),remove:(t,n)=>e(e=>{let r=e.forms[t];if(!r?.length)return e;let i=r.filter(e=>e.id!==n);if(i.length===r.length)return e;let a={...e.forms};return i.length>0?a[t]=i:delete a[t],{forms:a}}),replaceSession:(t,n)=>e(e=>({forms:{...e.forms,[t]:n}})),formsForSession:e=>t().forms[e]??[]}));async function qA(e){let t=(await UA(e)).filter(e=>!ct(e.metadata));KA.getState().replaceSession(e.sessionID,t)}var JA=3e5,YA=1e4;function XA(e,t){let n=R(e);return!n||[...t.keys()].some(e=>R(e)===n)?!1:[...t.values()].some(e=>e.some(e=>R(e.path)===n))}function ZA(e,t){if(!t||t.status!==`complete`||t.session_status_snapshot_at===void 0)return`unknown`;if(Object.values(t.session_status).some(e=>e.type===`busy`||e.type===`retry`)||Object.values(t.permission).some(e=>e.length>0)||Object.values(t.question).some(e=>e.length>0))return`busy`;let n=KA.getState().forms;if(t.session.some(e=>n[e.id]?.length))return`busy`;for(let t of CA.getState().statusById.values())if(R(t.directory)===R(e))return`busy`;return`free`}function QA(e){let t=new Map,n=!1,r=e=>{let n=t.get(e);n&&(clearTimeout(n.timer),clearTimeout(n.deadline),n.controller.abort(),n.finish?.(),t.delete(e))},i=a=>{r(a);let o={controller:new AbortController};t.set(a,o);let s=()=>!n&&!o.controller.signal.aborted&&t.get(a)===o&&e.isRuntimeCurrent()&&!e.isCurrentDirectory(a)&&e.eligible(a),c=async()=>{try{if(!s())return;let t=e.directoryUse(a);if(t===`unknown`)return;if(t===`busy`){i(a);return}let n=new Promise(e=>{o.finish=()=>e(`unknown`),o.deadline=setTimeout(()=>{o.controller.abort(),e(`unknown`)},YA)}),r=await Promise.race([e.checkRemoteUse(a,o.controller.signal),n]);if(!s())return;let c=e.directoryUse(a);if(r===`unknown`||c===`unknown`)return;if(r===`busy`||c===`busy`){i(a);return}await Promise.race([e.release(a,o.controller.signal),n])}catch{}finally{clearTimeout(o.deadline),o.controller.abort(),t.get(a)===o&&t.delete(a)}};o.timer=setTimeout(()=>{c()},JA)};return{directoryChanged(t,a){if(n)return;let o=R(t??``),s=R(a??``);o!==s&&(s&&r(s),o&&e.eligible(o)&&i(o))},dispose(){n=!0;for(let e of t.keys())r(e)}}}function $A(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 ej=new Set,tj=(e,t)=>`${e}\n${t}`;function nj(e,t){!e||e===`global`||!t||ej.add(tj(e,t))}function rj(e,t){let n=tj(e,t);return ej.has(n)?(ej.delete(n),!0):!1}var ij=(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=dd(i),o=typeof t==`string`&&t!==`global`?t.trim():``,s=a.directory;return!o||typeof s==`string`&&s.trim()?a:{...a,directory:o}},aj=e=>{let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null},oj=e=>{let t=e;return JSON.stringify([yd(e),e.title??``,e.time?.archived??0,e.share?.url??``,t.directory??``,t.parentID??``,t.hasChildren??!1])},sj=(e,t)=>{if(e.type===`session.renamed`){let t=e.properties;if(typeof t.sessionID!=`string`)return;let n=aj(t.sessionID);if(!n)return;let r=QO(n,t);r!==n&&Y.getState().upsertSession(r);return}if(e.type===`session.created`||e.type===`session.updated`){let n=ij(e,t);if(n){let e=aj(n.id);(!e||oj(e)!==oj(n))&&!ZO(e,n)&&Y.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=aj(n);if(!i)return;Y.getState().upsertSession({...i,metadata:r});return}if(e.type===`session.deleted`){let t=e.properties?.sessionID??ij(e)?.id;t&&Y.getState().removeSessions([t])}};function cj(e){return Object.entries(e.session_status??{}).filter(([,e])=>e&&e.type!==`idle`).map(([e])=>e)}function lj(e,t){let n=t?.viewedSession;return!n?.sessionId||n.directory!==t?.directory?[]:[n.sessionId]}function uj(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 dj(e,t){let n=new Set(uj(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 fj=e=>{let t=new Map;for(let n of e)t.set(n.id,n);return t},pj=(e,t,n)=>{let r=n??fj(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},mj=e=>{let{autoAccept:t,sessions:n,sessionById:r,sessionID:i}=e,a=pj(i,n,r);for(let e of a)if(Object.prototype.hasOwnProperty.call(t,e))return t[e]===!0;return!0},hj=t({usePermissionStore:()=>yj}),gj=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}},_j=async(e,t)=>gj(await _(e,t)),vj=(e,t,n)=>mj({autoAccept:e,sessions:[],sessionById:t,sessionID:n}),yj=ke()(Ae((e,t)=>({autoAccept:{},loaded:!1,saving:!1,hydrate:async()=>{let n=await _j(`/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 _j(`/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&&vj(n,kt(),e)},setSessionAutoAccept:async(t,n)=>{if(t){if(ye()){let r=await _(`/api/notifications/auto-accept`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionId:t,enabled:n})});if(!r.ok)throw Error(`Permission auto-accept request failed (${r.status})`);e(e=>({autoAccept:{...e.autoAccept,[t]:n},loaded:!0}));return}e({saving:!0});try{let r=$.getState().getDirectoryForSession(t)??B.getDirectory()??void 0;e({autoAccept:(await _j(`/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:hr(),partialize:e=>({autoAccept:e.autoAccept})})),bj=20,xj=400;function Sj(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,xj):null,...n?{type:n}:{},...typeof t.status==`number`&&Number.isInteger(t.status)&&t.status>=100&&t.status<=599?{status:t.status}:{}}}var Cj=[];function wj(e){Cj.push({...e,at:Date.now()}),Cj.length>bj&&Cj.splice(0,Cj.length-bj)}var Tj=e=>typeof e==`string`&&e.trim().length>0;function Ej(e){let t=e.trim();return t.length<=18?t:`${t.slice(0,10)}…${t.slice(-4)}`}function Dj(e,t){return Br(zr.getState().dictionary,e,t)}function Oj(e,t=`missing-directory`){let n=Tj(e)?Ej(e):null;if(t===`missing-session-id`||!n){zC.error(Dj(`sessions.toast.openFailedMissingSessionId`));return}if(t===`missing-directory`){zC.error(Dj(`sessions.toast.openFailedMissingDirectory`,{sessionId:n}));return}zC.error(Dj(`sessions.toast.openFailed`,{sessionId:n}))}function kj(e,t,n={}){let r=n.notify!==!1;if(!Tj(e))return r&&Oj(null,`missing-session-id`),{ok:!1,reason:`missing-session-id`,sessionId:null};if(!Tj(t))return r&&Oj(e,`missing-directory`),{ok:!1,reason:`missing-directory`,sessionId:e.trim()};let i=e.trim(),a=t.trim();return n.phoneShell&&!Kn()?(nW.getState().openSession({sessionId:i,directory:a}),{ok:!0,sessionId:i,directory:a}):n.switchToChat!==!1&&!gr.getState().setActiveMainTab(`chat`)?(r&&Oj(i,`tab-switch-blocked`),{ok:!1,reason:`tab-switch-blocked`,sessionId:i}):($.getState().setCurrentSession(i,a),{ok:!0,sessionId:i,directory:a})}var Aj=null,jj=e=>{Aj=e},Mj=(e,t)=>typeof Aj==`function`&&typeof e==`string`&&e.trim()&&typeof t==`string`&&t.trim()?(Aj(e.trim(),t.trim()),{ok:!0,sessionId:e.trim(),directory:t.trim()}):kj(e,t,{switchToChat:!0}),Nj=(e,t)=>!e||!t?null:`${e}:${t}`,Pj=({permission:e,directory:t,isViewed:n,pendingIds:r,show:i,openSession:a})=>{let o=Nj(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},Fj=15e3,Ij=new Map,Lj=(e,t)=>`${e}\n${t}`;function Rj(e){if(!e.runtimeKey||!e.directory||!e.sessionId||!e.status||e.status.type===`idle`)return;let t=Date.now();for(let[e,n]of Ij)n.expiresAt<=t&&Ij.delete(e);Ij.set(Lj(e.runtimeKey,e.directory),{runtimeKey:e.runtimeKey,directory:e.directory,sessionId:e.sessionId,status:e.status,expiresAt:Date.now()+Fj})}function zj(e,t){let n=Ij.get(Lj(e,t));return n?n.expiresAt<=Date.now()?(Ij.delete(Lj(e,t)),null):n:null}var Bj=[],Vj=[],Hj=[],Uj={sessionID:``,revertMessageID:void 0,records:Vj,history:Hj},Wj=e=>{if(e?.type!==`text`)return``;let t=e.text;return typeof t==`string`?t:``},Gj=e=>{for(let t of e){let e=Wj(t);if(e.length>0)return e}return``},Kj=(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},qj=(e,t=Uj)=>{let n=e.sessionID;if(!n)return Uj;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&&Re(r,n.id,i)||a.push({message:n,parts:e.parts[n.id]??Bj}))}if(a.length===0)return t.sessionID===n&&t.revertMessageID===i&&t.records.length===0?t:{sessionID:n,revertMessageID:i,records:Vj,history:Hj};if(t.sessionID===n&&t.revertMessageID===i&&Kj(t.records,a))return t;let o=[];for(let e of a){let t=Gj(e.parts);t.length>0&&o.push(t)}return{sessionID:n,revertMessageID:i,records:a,history:o}};function Jj(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 Yj(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 Xj(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 Zj(e,t,n){if(!e)return null;let r=t?.id===e?t:null,i=n?.id===e?n:null;return r??i}function Qj(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 $j=`__openchamber_sync_context__`,eM=globalThis,tM=eM[$j]??(0,K.createContext)(null);eM[$j]=tM;function nM(){let e=(0,K.useContext)(tM);if(!e)throw Error(`useSyncSystem must be used within <SyncProvider>`);return e}function rM(e){return Array.from(e.children.values(),e=>e.getState())}function iM(e,t,n){let r=(0,U.c)(7),i=t===void 0?Object.is:t,{childStores:a}=nM(),o=(0,K.useRef)(void 0),s=(0,K.useRef)(!1),c;r[0]!==a||r[1]!==i||r[2]!==e?(c=()=>{let t=e(rM(a));return s.current&&i(o.current,t)?o.current:(o.current=t,s.current=!0,t)},r[0]=a,r[1]=i,r[2]=e,r[3]=c):c=r[3];let l=c,u;return r[4]!==a||r[5]!==n?(u=e=>n?n(a,e):a.subscribeAll(e),r[4]=a,r[5]=n,r[6]=u):u=r[6],K.useSyncExternalStore(u,l,l)}function aM(e){let t=(0,U.c)(4),n;t[0]===e?n=t[1]:(n=t=>Yk(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),iM(n,Object.is,r)}function oM(e){let t=(0,U.c)(5),n=aM(e),r;t[0]===e?r=t[1]:(r=t=>t.statusById.get(e)?.status,t[0]=e,t[1]=r);let i=CA(r),a;return t[2]!==i||t[3]!==n?(a=sM(n,i),t[2]=i,t[3]=n,t[4]=a):a=t[4],a}function sM(e,t){if(e)return e;if(t===`busy`)return{type:`busy`};if(t===`retry`)return{type:`retry`,attempt:0,message:``,next:0}}var cM=[],lM={};function uM(e){let t=(0,U.c)(4),n;t[0]===e?n=t[1]:(n=t=>e.reduce((e,n)=>{let r=Yk(t,n)?.type;return e+Number(r===`busy`||r===`retry`)},0),t[0]=e,t[1]=n);let r=n,i;return t[2]===e?i=t[3]:(i=(t,n)=>e.length===0?dM:t.subscribeAllSelected(t=>e.map(e=>t.session_status[e]?.type??``).join(`,`),n),t[2]=e,t[3]=i),iM(r,Object.is,i)}function dM(){}function fM(e){let t=(0,U.c)(4),n=e?.enabled??!0,r;t[0]===n?r=t[1]:(r=e=>n?qk(e):lM,t[0]=n,t[1]=r);let i;return t[2]===n?i=t[3]:(i=(e,t)=>n?e.subscribeAllSelected(pM,t):mM,t[2]=n,t[3]=i),iM(r,Gk,i)}function pM(e){return e.session_status}function mM(){}function hM(e){let t=(0,U.c)(5),n=e?.enabled??!0,r=Y(vM),i;t[0]!==n||t[1]!==r?(i=e=>n?Kk(e,r):cM,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(gM,t):_M,t[3]=n,t[4]=a),iM(i,Wk,a)}function gM(e){return e.session}function _M(){}function vM(e){return e.pendingDeletionIds}var yM=!1,bM=0,xM=0,SM=1500,CM=new Set([`patch`,`step-start`,`step-finish`]),wM=5e3,TM=4e4,EM=15e3,DM=6e4,OM=6e4,kM=e=>!e||e.length===0?``:e.map(e=>e.id).sort(AM).join(`|`),AM=(e,t)=>e<t?-1:+(e>t),jM=e=>JSON.stringify(e);function MM(e,t){return jM(e)===jM(t)}var NM=5e3,PM=new Map,FM=(e,t)=>`${e}:${t}`;function IM(e,t){try{let n=H();return n?Lt(n.getTranscript(V(e,t))):!1}catch{return!1}}async function LM(e,t){try{if(!H())return;await Ye(e,t)}catch{}}function RM(e,t,n,r){if(!e||e===`global`||!t)return;let i=FM(e,t),a=PM.get(i);if(a&&Date.now()-a.enqueuedAt<NM){Promise.resolve().then(()=>{IM(e,t)&&LM(e,t)});return}PM.set(i,{sessionID:t,directory:e,enqueuedAt:Date.now(),request:r}),Promise.resolve().then(async()=>{let a=n.getChild(e);if(!a){PM.delete(i);return}try{await BM(e,t,a,r)}catch{}finally{PM.delete(i)}})}function zM(e,t,n){let r=t.admissionHint?.sessionID??t.domainActivityHint?.sessionID??(typeof t.properties.sessionID==`string`?t.properties.sessionID:void 0);if(!(!r||!e||e===`global`)){if(t.domainActivityHint?.kind===`activity`){let i=n.getChild(e)??n.ensureChild(e,{bootstrap:!1}),a=t.type===`session.step.started`||/^session\.(?:next\.)?(?:text|reasoning)\./.test(t.type),o=t.properties.eventCreated,s=t.properties.eventSequence;if(typeof s==`number`){if(s<=(i.getState().session_status_event_sequence?.[r]??-1))return;t.type===`session.step.started`&&i.setState({session_status_event_sequence:{...i.getState().session_status_event_sequence,[r]:s}})}if(typeof o==`number`){if(s===void 0&&o<(i.getState().session_status_event_at?.[r]??0))return;a&&(t.type===`session.step.started`||i.getState().session_status?.[r]?.type!==`busy`)&&i.setState({session_status_event_at:{...i.getState().session_status_event_at,[r]:o}})}if(i.getState().session_status?.[r]?.type===`retry`&&!a)return;Hh(i,r)}t.domainActivityHint?.kind===`terminal`&&r===HM&&e===VM&&RM(e,r,n,{reason:`session-idle`})}}async function BM(e,t,n,r){let i=n.getState().session_status?.[t];jn.recovery.materializing({reason:r?.reason??`ensure-session-messages`,directory:e,sessionID:t,messageID:r?.messageID,partID:r?.partID});try{let a=()=>{try{return H()?.getTranscript(V(e,t)).liveRevision}catch{return}},o=a(),s=await Tv({directory:e,sessionID:t,limit:zp(),signal:AbortSignal.timeout(3e4),purpose:`materialize`});if(r?.isStale?.())return`skipped`;let c=Ov({directory:e,sessionID:t,purpose:`materialize`,page:s,capturedLiveRevision:o,liveRevision:a(),skipPartTypes:CM});return IM(e,t)&&await LM(e,t),c.applied?(ty({directory:e,sessionID:t,store:n,isStale:r?.isStale}),s.records.length===0||!r?.isStale?.()&&i?.type!==`idle`&&await Kh(e,n,[t]),`ready`):`skipped`}catch{return`error`}}var VM=``,HM=``,UM=null,WM=``,GM=``,KM=new Map,qM=new Set,JM=15e3,YM=(e,t)=>`${e}\n${t}`;function XM(e=Date.now()){for(let[t,n]of KM.entries())n<=e&&KM.delete(t)}var ZM=new Set,QM=new Set,$M=(e,t)=>!e||!t?null:`${e}:${t}`,eN=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},tN=(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=te()?.notifications;return i?.notifyAgentCompletion&&i.notifyAgentCompletion({title:eN(r.title),body:eN(r.body),tag:eN(r.tag),kind:eN(r.kind),sessionId:eN(r.sessionId),assistantID:eN(r.assistantID),directory:eN(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 nN(e,t){!e||!t||!UM||rj(e,t)&&RM(e,t,UM,{reason:`session-idle`})}function rN(e){UM=e,e&&nN(VM,HM)}function iN(e,t){VM=e,HM=t,nN(e,t)}function aN(e,t,n){if(!e||!t)return;let r=YM(e,t);if(!n){KM.delete(r);return}KM.set(r,Date.now()+JM)}function oN(e,t){if(!e||!t){WM=``,GM=``;return}WM=e,GM=t}function sN(){let e=[],t=new Set,n=(n,r)=>{if(!n||!r)return;let i=YM(n,r);t.has(i)||(t.add(i),e.push({directory:n,sessionID:r}))};return n(WM,GM),n(VM,HM),e}function cN(){return typeof document<`u`&&document.hasFocus()}function lN(e,t){return t?VM&&HM&&e===VM&&t===HM&&cN()?!0:(XM(),KM.has(YM(e,t))):!1}function uN(){return yM||Date.now()-bM<SM}function dN(e){return!VM||!HM||e!==VM?null:{directory:VM,sessionId:HM}}function fN(e,t){return uj(t,{directory:e,viewedSession:dN(e)})}function pN(e){let t=wD(e)??e,n=[];for(let e of Y.getState().activeSessions){let r=e.directory||e.location?.directory;r&&(wD(r)??r)===t&&n.push(e.id)}return n}function mN(e,t){return dj(t,{directory:e,viewedSession:dN(e),extraSessionIds:pN(e)})}function hN(e,t,n,r=TM,i=EM){return!(e<=0||n-e<r||n-t<i)}function gN({isViewed:e,status:t,lastTransportActivityAt:n,lastDomainActivityAt:r,lastFullResyncAt:i,now:a,transportStaleThresholdMs:o=TM,domainStaleThresholdMs:s=DM,recoveryCooldownMs:c=OM}){return!(!e||t?.type!==`busy`&&t?.type!==`retry`||n<=0||a-n>=o||r<=0||a-r<s||a-i<c)}var _N=ye(),vN=(e,t)=>{!_N||typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:vscode-notification-event`,{detail:{directory:e,payload:t}}))},yN=()=>({sessionDirectoryById:new Map,messageSessionById:new Map,sessionMessageIdsById:new Map}),bN=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},xN=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},SN=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},CN=(e,t,n)=>{!t||!n||n===`global`||e.sessionDirectoryById.set(t,n)},wN=(e,t,n,r)=>{if(!t)return;CN(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)},TN=(e,t,n,r)=>{if(!t||!n)return;CN(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]))},EN=(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))},DN=(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)},ON=(e,t,n)=>{let r=new Set;for(let i of n.session)i?.id&&(r.add(i.id),CN(e,i.id,t));try{let n=H(),i=n?.getCacheBudget?.().listCanonical({directory:t});if(i)for(let a of i){if(a.scope.directory!==t)continue;r.add(a.scope.sessionID),CN(e,a.scope.sessionID,t);let i=n?.getTranscript?.(V(t,a.scope.sessionID));if(i){let n=lt(i);wN(e,a.scope.sessionID,t,n)}}}catch{}for(let[n,i]of e.sessionDirectoryById)i===t&&(r.has(n)||DN(e,n))},kN=(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 CN(n,e,r),r}try{let t=H()?.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 CN(n,e,t),t}}catch{}return null},AN=(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(H()??Et(t,r)).hasSession?.(V(t,n))??!1}catch{return!1}},jN=(e,t,n)=>{try{let e=H();if(e&&e.getParts(V(t,n),n).length>0)return!0}catch{}return!1},MN=e=>!VM||!HM?null:e.getChild(VM)?VM:null,NN=(e,t,n,r)=>{let i=bN(t),a=xN(n);if(a){let t=mo(a);if(t)return t;if(i&&i!==`global`&&AN(r,i,a))return CN(e,a,i),i;let n=e.sessionDirectoryById.get(a);if(n&&r.getChild(n))return n;let o=kN(a,r,e);if(o)return o}let o=SN(n);if(o){if(i&&i!==`global`&&jN(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(jN(r,i,o))return i;for(let[e]of r.children)if(jN(r,e,o))return e;let n=MN(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},PN=(e,t,n,r)=>{if(e)return e;if(t){let e=r.messageSessionById.get(t);if(e)return e}if(n&&n===VM&&HM)return HM};function FN(e,t){let n=xN(e)??(e.type===`session.deleted`?e.properties.info?.id:void 0);if(n)return n;let r=SN(e);return r?t.get(r):void 0}function IN(e,t){return e===t}var LN=e=>e.type===`session.created`||e.type===`session.renamed`||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`,RN=(e,t,n)=>{if(!t||t===`global`)return;let r=xN(n);switch(r&&CN(e,r,t),n.type){case`session.created`:case`session.updated`:{let r=n.properties.info;r?.id&&CN(e,r.id,t);return}case`session.deleted`:{let t=n.properties.sessionID;t&&DN(e,t);return}case`message.updated`:{let r=n.properties.info;r?.id&&r.sessionID&&TN(e,r.sessionID,r.id,t);return}case`message.removed`:{let t=n.properties;t.messageID&&EN(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&&TN(e,a,o,t);return}default:return}};async function zN(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,kM(r.question[e])])),o=await B.listPendingQuestions({directories:[e]}),s={};for(let e of o){if(!e?.id||!e.sessionID||!i.has(e.sessionID))continue;let t=s[e.sessionID];t?t.push(e):s[e.sessionID]=[e]}for(let e of Object.keys(s))s[e].sort((e,t)=>e.id<t.id?-1:+(e.id>t.id));for(let[t,n]of Object.entries(s)){let i=new Set((r.question[t]??[]).map(e=>e.id));if(!lN(e,t))for(let r of n){if(i.has(r.id))continue;let n=$M(t,r.id);if(!n||ZM.has(n))continue;ZM.add(n);let a=r.questions?.[0],o=a?.header?.trim()||`Input needed`,s=a?.question?.trim()||`Agent is waiting for your response`;zC.info(o,{id:`question-${n}`,description:s,action:{label:`Open session`,onClick:()=>Mj(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)??``;kM(e.question[r])===i&&delete t[r]}return{question:t}})}catch{}try{let n=new Map(a.map(e=>[e,kM(r.permission[e])])),o=await B.listPendingPermissions({directories:[e]}),s={};for(let e of o){if(!e?.id||!e.sessionID||!i.has(e.sessionID))continue;let t=s[e.sessionID];t?t.push(e):s[e.sessionID]=[e]}for(let e of Object.keys(s))s[e].sort((e,t)=>e.id<t.id?-1:+(e.id>t.id));let c=yj.getState(),l=ye()?Object.keys(s).filter(e=>c.isSessionAutoAccepting(e)):[];if(l.length>0){let e=new Map,t=new Map;await Promise.all(l.flatMap(n=>(s[n]??[]).map(async r=>{try{let i=await B.fetchPermission(r.sessionID,r.id);if(i.state===`ok`){await lx(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=lN(e,t);if(!a)for(let t of n)i.has(t.id)||Pj({permission:t,directory:e,isViewed:a,pendingIds:QM,show:(e,t)=>zC.info(e,t),openSession:Mj})}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)??``;kM(e.permission[r])===i&&delete t[r]}return{permission:t}})}catch{}}}function BN(e,t,n){n?.statusOnly}function VN(e){return e.isFirstConnect&&!e.disconnectedBeforeFirstConnect}function HN(e){return{resyncBlockingRequests:!0,ingestRoutingIndex:!e?.statusOnly}}async function UN(e,t,n,r,i,a){let o=f(),s=u(),c=mN(e,t.getState());await Promise.all([Kh(e,t,c),...sN().filter(t=>bN(t.directory)===bN(e)).map(e=>Nv(e).catch(()=>void 0))]);let l=lj(fN(e,t.getState()),{directory:e,viewedSession:dN(e)});if(l.length>0){let a=B.getScopedSdkClient(e);await Promise.all(l.map(async c=>{let l=mo(c),d=i(c);jn.recovery.materializing({reason:r,directory:e,sessionID:c});let p=await rd(async()=>await a.session.get({sessionID:c})).catch(()=>null);if(o!==f()||s!==u())return;if(p&&IN(d,i(c))){let r=dd(Xe(p));if(l!==mo(c))return;if(r.directory&&bN(r.directory)!==bN(e)){go(c,r.directory,Date.now()),aA(r,ht()),CN(n,c,r.directory);return}t.setState(e=>{let t=e.session.findIndex(e=>e.id===r.id),n=e.session,i=!1,a=e.sessionTotal;return t>=0?MM(n[t],r)||(n=[...e.session],n[t]=r,i=!0):(n=[...e.session],n.push(r),n.sort((e,t)=>AM(e.id,t.id)),r.parentID||(a+=1),i=!0),i?{session:n,sessionTotal:a}:e}),CN(n,r.id,e)}let m=i(c),h=t.getState(),g=h.session_status?.[c],_=h.session_status_observed_at?.[c],v=()=>!IN(m,i(c)),y=m;Sh(e,c);try{let r=await Tv({directory:e,sessionID:c,limit:zp(),signal:AbortSignal.timeout(3e4),purpose:`recovery`});if(v()||!Ov({directory:e,sessionID:c,purpose:`recovery`,page:r,capturedLiveRevision:y,liveRevision:i(c),skipPartTypes:CM}).applied)return;let a=Je().getTranscript(V(e,c));wN(n,c,e,a.messageOrder.map(e=>a.messagesByID[e]).filter(e=>!!e)),ty({directory:e,sessionID:c,store:t,transcript:a,isStale:v}),await qh({directory:e,sessionID:c,store:t,statusBeforePull:g,statusObservedAtBeforePull:_,hasMessages:a.messageOrder.length>0,isStale:v})}catch{}finally{Ch(e,c)}}))}let d=HN(a);d.resyncBlockingRequests&&await zN(e,t,c),d.ingestRoutingIndex&&ON(n,e,t.getState())}function WN(e){try{let t=H(),n=u(),r=f();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>V(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function GN(e){let t=xN(e)??void 0;if(t)return t;if(e.type===`message.updated`)return e.properties.info?.sessionID??void 0}var KN=null,qN=0;function JN(e){return`${e.directory}\0${e.sessionID}\0${e.transport??``}\0${e.generation??``}`}function YN(){qN===0&&(KN={byScope:new Map,routing:[],debug:[]}),qN+=1}function XN(){if(qN===0||(--qN,qN>0))return;let e=KN;if(KN=null,e)try{for(let t of e.byScope.values()){let n=Sn(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=PN(r.sessionID??t.transcriptSessionID,r.messageID??e,t.scope.directory,t.routingIndex);n&&RM(t.scope.directory,n,t.childStores,{reason:r.reason,messageID:r.messageID,partID:r.partID})}}for(let t of e.debug)t.changed?jn.dispatch.eventApplied(t.payloadType,t.transcriptSessionID,t.eventMessageID):jn.dispatch.eventNoChange(t.payloadType,t.transcriptSessionID,t.eventMessageID);for(let t of e.routing)RN(t.routingIndex,t.resolvedDirectory,t.payload)}finally{KN=null,qN=0}}function ZN(e,t,n,r,i,a){let o=uA({sessionID:t,resolvedDirectory:n,transport:u(),generation:f(),listCanonicalScopes:WN});if(KN){for(let n of o){let o=JN(n),s=KN.byScope.get(o);s||(s={scope:n,events:[],transcriptSessionID:t,eventMessageIDs:[],childStores:i,routingIndex:a},KN.byScope.set(o,s)),s.events.push(e),s.eventMessageIDs.push(r)}KN.debug.push({payloadType:e.type,transcriptSessionID:t,eventMessageID:r,changed:!1}),KN.routing.push({routingIndex:a,resolvedDirectory:n,payload:e});return}let s=!1;for(let n of o){let o=Sn(n,{type:`sse-event`,event:e})??{applied:!1,changed:!1};o.changed&&(s=!0);let c=o.materialization;if(c){let e=PN(c.sessionID??t,c.messageID??r,n.directory,a);e&&RM(n.directory,e,i,{reason:c.reason,messageID:c.messageID,partID:c.partID})}}s?jn.dispatch.eventApplied(e.type,t,r):jn.dispatch.eventNoChange(e.type,t,r),RN(a,n,e)}var QN=vA({client:I,identity:()=>({transport:u(),generation:f()}),refreshProjections:async(e,t)=>{if(!t.has(`providers`)&&!t.has(`agents`))return;let n=W.getState(),r=u(),i=f(),a=[...new Set([...Object.keys(n.directoryScoped),...B.getDirectory()?[B.getDirectory()]:[]])].filter(t=>t&&t!==`__global__`&&(!e||R(t)===R(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 $N(e,t,n,r){if(t.type===`session.moved`){let e=t.properties,i=e.sessionID,a=e.location?.directory;if(!i||!a||!go(i,a,e.eventCreated??Date.now(),e.eventSequence))return;let o=f(),s=u();CN(r,i,a),DA(a,t);let c=[...n.children.values()].map(e=>e.getState().session.find(e=>e.id===i)).find(Boolean)??Y.getState().activeSessions.find(e=>e.id===i);c?aA({...c,directory:a,location:{...e.location,directory:a},projectID:e.projectID??c.projectID,subpath:e.subpath},n):$.getState().setSessionDirectory(i,a),B.getSession(i,a).then(e=>{o!==f()||s!==u()||!_o(i,a)||!_o(i,e.directory??a)||aA(e,n)}).catch(()=>{});return}if(QN.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`){jO();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`&&yj.getState().applySnapshot({sessions:t.sessions})}return}let i=mA(t,e);i&&pA(I,{transport:u(),directory:i});let a=NN(r,e,t,n);if(tN(t,a))return;sj(t,a);let o=t.type===`session.status`||t.type===`session.idle`||t.type===`session.error`?xN(t):void 0,s=o?n.getChild(a)?.getState().session_status[o]?.type??CA.getState().statusById.get(o)?.status??`idle`:void 0;if(DA(a,t),o&&a&&a!==`global`&&s!==(CA.getState().statusById.get(o)?.status??`idle`)){let e=n.getChild(a)?.getState().session.find(e=>e.id===o)??Y.getState().sessionsByDirectory.get(a)?.find(e=>e.id===o);yU(a,$.getState().availableWorktreesByProject,e)}if(a===`global`||!a){if(pr(t.type)){let e=GN(t);if(e){ZN(t,e,a||`global`,SN(t)??void 0,n,r);return}}let e=uN(),i=fk(t);if(!i)return;if(i.type===`refresh`)e||bk.setState({reload:`pending`});else if(i.type===`project`){let e=bk.getState();bk.setState({projects:pk(e,i.project).projects})}if((t.type===`server.connected`||t.type===`global.disposed`)&&!e){pA(I,{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=xN(t);if(e){let t=kN(e,n,r);t&&(c=n.getChild(t),l=t)}}if(!c){if(pr(t.type)){let e=GN(t);if(e){ZN(t,e,l,SN(t)??void 0,n,r);return}}let e=fk(t);if(e?.type===`refresh`)bk.setState({reload:`pending`});else if(e?.type===`project`){let t=bk.getState();bk.setState({projects:pk(t,e.project).projects})}return}if(n.mark(l),t.type===`permission.asked`){let e=nk(t.properties);if(!e)return;if(yj.getState().isSessionAutoAccepting(e.sessionID)){RN(r,l,t),ye()&&lx(e.sessionID,e.id,`once`).catch(()=>void 0);return}let n=c.getState().session.find(t=>t.id===e.sessionID)??Y.getState().activeSessions.find(t=>t.id===e.sessionID);if(n&&!n.parentID){let t=lN(l,e.sessionID);Pj({permission:e,directory:l,isViewed:t,pendingIds:QM,show:(e,t)=>zC.info(e,t),openSession:Mj})}}if(t.type===`permission.replied`){let e=t.properties,n=Nj(e.sessionID,e.requestID);n&&(QM.delete(n),zC.dismiss(`permission-${n}`))}if(t.type===`question.asked`){let e=rk(t.properties);if(!e)return;let n=e.sessionID,r=c.getState().session.find(e=>e.id===n)??Y.getState().activeSessions.find(e=>e.id===n);if(r&&!r.parentID){let t=$M(n,e.id);if(!lN(l,n)&&t&&!ZM.has(t)){ZM.add(t);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;zC.info(i,{id:`question-${t}`,description:a,action:{label:`Open session`,onClick:()=>Mj(n,l)}})}}}if(t.type===`question.replied`||t.type===`question.rejected`){let e=t.properties,n=$M(e.sessionID,e.requestID);n&&(ZM.delete(n),zC.dismiss(`question-${n}`))}if(t.type===`form.created`){let e=ik(t.properties);if(e){let t=e.sessionID,n=c.getState().session.find(e=>e.id===t)??Y.getState().activeSessions.find(e=>e.id===t);if(n&&!n.parentID){let n=$M(t,e.id);if(!lN(l,t)&&n&&!ZM.has(n)){ZM.add(n);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;zC.info(i,{id:`question-${n}`,description:a,action:{label:`Open session`,onClick:()=>Mj(t,l)}})}}}}if(t.type===`form.replied`||t.type===`form.cancelled`){let e=t.properties,n=$M(e.sessionID,e.id??e.requestID);n&&(ZM.delete(n),zC.dismiss(`question-${n}`))}if(t.type===`session.execution.started`){let e=t.properties.sessionID;e&&(FD(e),qM.delete(e))}if(t.type===`session.status`){let e=t.properties;e.sessionID&&(e.status?.type===`busy`||e.status?.type===`retry`)&&qM.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:Sj(e.error),a=!!(i&&(i.message||i.name));a&&i&&n&&wj({sessionId:n,directory:l??null,...i});let o=c.getState().session.find(e=>e.id===n)??Y.getState().activeSessions.find(e=>e.id===n);n&&o&&!o.parentID&&(r&&t.type===`session.idle`&&qM.has(n)?qM.delete(n):(ND({directory:l,session:n,time:Date.now(),viewed:!r&&lN(l,n),...a&&i?{type:`error`,error:i}:{type:`turn-complete`}}),t.type===`session.execution.succeeded`&&qM.add(n)))}if(t.type===`session.idle`){let e=xN(t);if(e&&l&&l!==`global`){let t=c.getState().session.find(t=>t.id===e),r=t?t.parentID:null,i=$A({idleSessionID:e,directory:l,parentID:r,activeSessionID:HM,activeDirectory:VM});i.action===`materialize-parent`?RM(l,i.sessionID,n,{reason:`child-session-idle`}):i.action===`materialize-now`?RM(l,i.sessionID,n,{reason:`session-idle`}):i.action===`defer-until-viewed`&&nj(l,i.sessionID)}}let d=c.getState(),p=xN(t)??void 0,m=SN(t)??void 0;if(t.type===`session.created`){let e=t.properties.info;dy(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`)&&_y(l,p,m))return;if(t.type===`session.inbox.enqueued`||t.type===`session.inbox.cancelled`||t.type===`session.inbox.delivered`||t.type===`session.inbox.delivery.changed`){dt({type:t.type,properties:t.properties??null}),RN(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(vk(e,t,{now:Date.now})&&c.setState(e),t.type===`session.revert.committed`){let e=GN(t)??t.properties.sessionID,i=t.properties.to;e&&typeof i==`string`&&i.length>0&&ZN(t,e,l,m,n,r)}RN(r,l,t);return}if(pr(t.type)){let e=GN(t);if(!e){RN(r,l,t);return}ZN(t,e,l,m,n,r);return}let h={...d};switch(t.type){case`session.created`:case`session.updated`:case`session.deleted`:case`session.renamed`:case`openchamber:session-metadata`:h.session=[...d.session],h.session_status_observed_at={...d.session_status_observed_at},h.permission={...d.permission},h.todo={...d.todo};break;case`session.diff`:h.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`:h.session_status={...d.session_status??{}},h.session_status_observed_at={...d.session_status_observed_at},h.session_error_at={...d.session_error_at},h.session_execution_recovery={...d.session_execution_recovery??{}};break;case`todo.updated`:h.todo={...d.todo};break;case`vcs.branch.updated`:break;case`permission.asked`:case`permission.replied`:h.permission={...d.permission};break;case`question.asked`:case`question.replied`:case`question.rejected`:case`form.created`:case`form.replied`:case`form.cancelled`:h.question={...d.question};break;case`lsp.updated`:h.lsp=[...d.lsp]}let g=vk(h,t,{onSetSessionTodo:(e,t)=>{Hv.getState().setSessionTodos(e,t)},onServerSessionIdle:e=>{$.getState().releaseQueueAbortBlocksForServerIdle(l,e)},now:Date.now}),_=typeof g==`boolean`?g:g.changed,v=typeof g==`boolean`?void 0:g.materialization;if(_){c.setState(h);let e=xN(t)??void 0,n=SN(t)??void 0;jn.dispatch.eventApplied(t.type,e,n)}else{let e=xN(t)??void 0,n=SN(t)??void 0;jn.dispatch.eventNoChange(t.type,e,n)}if(v){let e=PN(v.sessionID??xN(t)??void 0,v.messageID??SN(t)??void 0,l,r);e&&RM(l,e,n,{reason:v.reason,messageID:v.messageID,partID:v.partID})}RN(r,l,t)}var eP=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:opencode-update-available`,{detail:e}))},tP=null,nP=async()=>{let e=m();return(!tP||tP.runtimeKey!==e)&&(tP={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)}),tP.promise},rP=e=>{typeof window>`u`||nP().then(t=>{t||eP(e)})};function iP(e,t,n){return e!==t||n!==!1}function aP(e){let t=W(e=>e.settingsMessageStreamTransport),n=(0,K.useRef)(null);n.current||=new Fk;let r=n.current,i=(0,K.useRef)(e.directory);i.current=e.directory;let a=(0,K.useRef)(e.directory),c=(0,K.useRef)(null);(0,K.useEffect)(()=>{let e=()=>{c.current?.dispose(),a.current=i.current;let e=f(),t=m(),n=B.getSdkClient();c.current=QA({eligible:e=>XA(e,$.getState().availableWorktreesByProject),isCurrentDirectory:e=>R(e)===R(i.current),isRuntimeCurrent:()=>e===f()&&t===m()&&n===B.getSdkClient(),directoryUse:e=>{if(XM(),R(WM)===e||[...KM.keys()].some(t=>R(t.split(`
|
|
408
|
+
`)[0])===e))return`busy`;let t=[...r.children.entries()].find(([t])=>R(t)===e)?.[1];return ZA(e,t?.getState())},checkRemoteUse:(e,t)=>B.checkLocationReleaseUse(e,t),release:(e,t)=>B.releaseLocation(e,t)})};e();let t=s(e);return()=>{t(),c.current?.dispose(),c.current=null}},[r,e.sdk]),(0,K.useEffect)(()=>{let t=a.current;a.current=e.directory,c.current?.directoryChanged(t,e.directory)},[e.directory]);let l=(0,K.useRef)(null);l.current||=yN();let d=l.current,p=(0,K.useRef)(0),h=(0,K.useRef)(new Map),g=(0,K.useRef)(new Map),_=(0,K.useRef)(new Map),v=(0,K.useRef)(new Set),y=(0,K.useRef)(null),b=(0,K.useRef)(!1),x=(0,K.useRef)(!1),S=(0,K.useRef)({directory:e.directory,enabled:e.bootstrapDirectory});S.current={directory:e.directory,enabled:e.bootstrapDirectory};let C=e=>{let t=S.current;return iP(e,t.directory,t.enabled)},w=(0,K.useMemo)(()=>({childStores:r,sdk:e.sdk,directory:e.directory}),[r,e.sdk,e.directory]);(0,K.useEffect)(()=>(rN(r),()=>{rN(null)}),[r]);let T=(0,K.useCallback)((e,t,n)=>{if(BN(e,r.children.get(e),n),!C(e))return;let i=r.children.get(e);if(!i)return;let a=v.current;a.has(e)||(n?.statusOnly||_.current.set(e,Date.now()),a.add(e),UN(e,i,d,t,t=>g.current.get(YM(e,t))??0,n).catch(()=>{}).finally(()=>{a.delete(e)}))},[r,d]);(0,K.useEffect)(()=>{ye()||yj.getState().hydrate().catch(()=>void 0)},[e.sdk]),(0,K.useEffect)(()=>{let t=new Set;r.configure({onBootstrap:n=>{if(!C(n)||t.has(n))return;t.add(n);let i=r.getChild(n);i&&(async()=>{if(await ji(),!C(n))return;let t=bk.getState();await rA({directory:n,sdk:e.sdk,getState:()=>i.getState(),set:e=>{i.setState(e),e.session&&ON(d,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,d]),(0,K.useEffect)(()=>{let t=++xM;yM=!0;let n=bk.getState().actions;return ji().then(()=>{if(xM===t)return nA(e.sdk,e=>{xM===t&&n.set(e)})}).then(()=>{xM===t&&(bM=Date.now())}).finally(()=>{xM===t&&(yM=!1)}),()=>{xM===t&&(yM=!1)}},[e.sdk]),(0,K.useEffect)(()=>{let n=vO({sdk:e.sdk,transport:t,routeDirectory:(e,t)=>NN(d,e,t,r),onFlushStart:()=>{YN()},onFlushEnd:()=>{XN()},onNormalizedEvent:(e,t)=>{zM(e,t,r);let n=t.domainActivityHint?.sessionID??t.admissionHint?.sessionID;n&&e===VM&&n===HM&&(t.domainActivityHint||t.admissionHint)&&h.current.set(YM(e,n),Date.now())},onEvent:(e,t)=>{let n=FN(t,d.messageSessionById)??null;if(n&&LN(t)){let t=YM(e,n);g.current.set(t,(g.current.get(t)??0)+1)}if(n&&e===VM&&n===HM&&(t.type===`message.updated`||t.type===`message.removed`||t.type===`message.part.updated`||t.type===`message.part.removed`||t.type===`message.part.delta`)&&h.current.set(YM(e,n),Date.now()),n&&e===VM&&n===HM&&t.type===`session.status`){let r=t.properties.status;if(r?.type===`busy`||r?.type===`retry`){let t=YM(e,n);h.current.has(t)||h.current.set(t,Date.now())}r?.type===`idle`&&h.current.delete(YM(e,n))}if(n&&(t.type===`session.idle`||t.type===`session.deleted`)&&h.current.delete(YM(e,n)),vN(e,t),t.type===`installation.update-available`){let e=typeof t.properties?.version==`string`?t.properties.version:``;e&&rP({version:e})}$N(e,t,r,d)},onTransportActivity:()=>{let e=Date.now();p.current=e,vp(e)},onReconnect:()=>{QN.event(`server.connected`),W.setState({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let e=!b.current;b.current=!0;let t=VN({isFirstConnect:e,disconnectedBeforeFirstConnect:x.current});for(let e of r.children.keys())T(e,`stream-reconnect`,{statusOnly:t})},onDisconnect:e=>{b.current||(x.current=!0);let{hasEverConnected:t}=W.getState();W.setState({isConnected:!1,connectionPhase:t?`reconnecting`:`connecting`,lastDisconnectReason:e})},onRecoveryContextCaptured:e=>{In({lastEventID:e.lastEventId,reason:e.reason,generation:e.runtimeGeneration})},onCompensation:e=>{jO(),Un(e)},onTransportSwitch:()=>{let{hasEverConnected:e}=W.getState();W.setState({isConnected:!1,connectionPhase:e?`reconnecting`:`connecting`});for(let e of r.children.keys())T(e,`transport-switch`)}});y.current=n.reconnect;let i=yp(n.reconnect);return()=>{i(),y.current===n.reconnect&&(y.current=null),n.cleanup()}},[e.sdk,r,d,t,T]),(0,K.useEffect)(()=>{let e=!1,t=!1,n=()=>{t||e||(t=!0,Promise.resolve().then(()=>{if(e)return;let t=Date.now();for(let[e,n]of r.children.entries()){let r=n.getState();if(cj(r).length===0){_.current.delete(e);continue}let i=_.current.get(e)??0;hN(p.current,i,t)&&(y.current?.(`active_stream_stale`),T(e,`stale-status-resync`));let a=dN(e);if(!a)continue;let o=r.session_status?.[a.sessionId],s=YM(e,a.sessionId),c=h.current.get(s);if((o?.type===`busy`||o?.type===`retry`)&&!c){h.current.set(s,t);continue}if(o?.type===`idle`||!o){h.current.delete(s);continue}gN({isViewed:!0,status:o,lastTransportActivityAt:p.current,lastDomainActivityAt:c??0,lastFullResyncAt:i,now:t})&&T(e,`domain-stale-resync`)}}).finally(()=>{t=!1}))},i=setInterval(n,wM);return n(),()=>{e=!0,clearInterval(i)}},[r,T]),(0,K.useEffect)(()=>{let t;if(e.directory){let n=r.ensureChild(e.directory,{bootstrap:iP(e.directory,e.directory,e.bootstrapDirectory)}),i=zj(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)},Fj)),ON(d,e.directory,n.getState())}return()=>{t&&clearTimeout(t)}},[e.directory,e.bootstrapDirectory,r,d]);let E=(0,K.useRef)(null),D=(0,K.useRef)({transport:u(),generation:f()});return(0,K.useEffect)(()=>{if(E.current)return;let e=Dv({childStores:r,getViewedSession:()=>sN()[0]??null,getViewedSessions:()=>sN()});return E.current=e,D.current={transport:u(),generation:f()},()=>{let e=D.current;yn(`provider-dispose`);let t=E.current?.repository;t&&t.purgeGeneration(e.transport,e.generation),E.current?.destroy(),E.current=null}},[r]),(0,K.useEffect)(()=>($e(e.sdk,r,e.directory,(e,t)=>{CN(d,e,t)}),Oy(e.sdk,r,()=>B.getDirectory()||e.directory),Ih((e,t,n)=>{let r=new Set(n),i=wD(e)??e,a={...t};for(let[e,t]of CA.getState().statusById)r.has(e)||t.directory===i&&(a[e]={type:t.status});OA(e,a,n)}),()=>{Ih(void 0)}),[e.sdk,e.directory,r,d]),(0,K.useEffect)(()=>s(e=>{if(!e.transportIdentityChanged){D.current={transport:u(),generation:f()};return}let t=D.current;yn(`runtime-switch`);let n=E.current?.repository;n&&n.purgeGeneration(t.transport,t.generation),D.current={transport:u(),generation:f()}}),[]),(0,K.useEffect)(()=>o(()=>{bp(`reasoning_projection`),(E.current?.repository)?.resetReasoningProjection?.();let e=sN();for(let t of e)ar(t.directory,t.sessionID).catch(()=>void 0)}),[]),(0,K.useEffect)(()=>{if(!e.directory)return;let t=r.getChild(e.directory);if(!t)return;let n=e.directory,i=()=>{lA(t.getState(),{directory:n,store:t})};i();let a=t.subscribe(()=>{i()}),o=[],s=()=>{for(let e of o)e();o=[];let e=H()??Et(n,t),r=t.getState().session_status??{};for(let[t,a]of Object.entries(r))!a||a.type===`idle`||o.push(e.subscribe(V(n,t),i));i()};s();let c=Be(s);return()=>{c(),a();for(let e of o)e()}},[e.directory,r]),(0,LO.jsxs)(tM.Provider,{value:w,children:[(0,LO.jsx)(GO,{}),e.children]})}function oP(e,t){let n=(0,U.c)(4),r=nM(),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 sP(e,t){let n=oP(t);return je(n,e)}function cP(e){let{childStores:t}=nM(),n=e.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),r=(0,K.useRef)(e);r.current=e;let i=(0,K.useCallback)(e=>n?Xj(t,r.current,e):()=>void 0,[t,n]),a=(0,K.useCallback)(()=>n?Yj(t,r.current):``,[t,n]);return K.useSyncExternalStore(i,a,a)}function lP(){let e=(0,U.c)(2),{childStores:t}=nM(),n;return e[0]===t?n=e[1]:(n=e=>Jj(t,e),e[0]=t,e[1]=n),n}function uP(e,t,n,r){let i=nM(),a=r??i.directory,o=oP(a);return _n(e,a,o,t,n)}function dP(e,t){let n=nM(),r=t??n.directory,i=oP(r);return un(e,r,i)}function fP(e,t){let n=nM(),r=t??n.directory,i=oP(r);return Vn(e,r,i)}function pP(e,t){let n=(0,U.c)(8),r=nM(),i=t??r.directory,a=oP(i),o=(0,K.useRef)(void 0),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(Vt(),!e){o.current=void 0;return}let t=(H()??Et(i,a)).getRequestState?.(V(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 mP;let n=(H()??Et(i,a)).subscribe(V(i,e),()=>{t()}),r=Be(()=>{n(),o.current=void 0,n=(H()??Et(i,a)).subscribe(V(i,e),()=>{t()}),t()});return()=>{r(),n()}},n[4]=e,n[5]=a,n[6]=i,n[7]=l):l=n[7];let u=l;return K.useSyncExternalStore(u,c,c)}function mP(){}function hP(e,t,n){let r=nM(),i=t??r.directory,a=oP(i);return fn(e,i,a,n)}function gP(e,t){let n=(0,U.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=oP(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return nf(i.getState(),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):_P,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return K.useSyncExternalStore(c,o,o)}function _P(){}function vP(e,t){let n=(0,U.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=oP(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return rf(i.getState(),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):yP,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return K.useSyncExternalStore(c,o,o)}function yP(){}function bP(e,t){let n=(0,U.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=oP(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()}):xP,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return K.useSyncExternalStore(c,o,o)}function xP(){}function SP(e,t){let n=(0,U.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=oP(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):CP,n[4]=r,n[5]=a,n[6]=c):c=n[6];let l=c;return K.useSyncExternalStore(l,s,s)}function CP(){}function wP(e,t,n){let r=(0,U.c)(6),i=oP(t,n),a;r[0]!==e||r[1]!==i?(a=()=>e?i.getState().permission[e]??wF:wF,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):TP,r[3]=e,r[4]=i,r[5]=s):s=r[5];let c=s;return K.useSyncExternalStore(c,o,o)}function TP(){}function EP(e,t,n){let r=(0,U.c)(2),i=oP(t,n),a;return r[0]===e?a=r[1]:(a=t=>e?t.question[e]??TF:TF,r[0]=e,r[1]=a),je(i,a)}function DP(e){return sP(OP,e)}function OP(e){return e.session}var kP=e=>e.permission,AP=e=>e.question;function jP(e){if(!e)return uf;let t=[];for(let n of e.messageOrder){let r=e.partsByMessageID[n];if(r)for(let e of lf(r))t.push(e)}return t.length===0?uf:t}function MP(){let e=null;return t=>{let n=jP(t);if(n.length===0)return uf;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 NP(e,t){let n=nM(),r=t??n.directory,i=oP(r),a=(0,K.useRef)(MP()).current,o=(0,K.useCallback)(()=>{if(!e)return uf;try{let t=H()?.getTranscript(V(r,e));return a(t)}catch{return uf}},[a,e,r]),s=(0,K.useCallback)(t=>{if(!e)return()=>void 0;let n=(H()??Et(r,i))?.subscribe(V(r,e),()=>{t()})??(()=>void 0),a=Be(()=>{n(),n=(H()??Et(r,i))?.subscribe(V(r,e),()=>{t()})??(()=>void 0),t()});return()=>{a(),n()}},[e,i,r]);return K.useSyncExternalStore(s,o,o)}function PP(e,t,n,r){let i=(0,U.c)(7),a=NP(e,t),o;i[0]===r?o=i[1]:(o={sessionID:null,sessions:null,requestsBySession:null,dispatchEdges:null,result:r},i[0]=r,i[1]=o);let s=(0,K.useRef)(o),c;return i[2]!==a||i[3]!==r||i[4]!==n||i[5]!==e?(c=t=>{let i=n(t),o=s.current;if(o.sessionID===e&&o.sessions===t.session&&o.requestsBySession===i&&o.dispatchEdges===a)return o.result;let c=pf(t.session,i,e,r,a),l=ff(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],sP(c,t)}function FP(e,t){return PP(e,t,kP,wF)}function IP(e,t){return PP(e,t,AP,TF)}function LP(e,t){let n=(0,U.c)(9),r=RP(e,t),i=RP(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=Y(a),s=r??i??o,c=s?.parentID??null,l=RP(c,t),u=RP(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=Y(d),p=l??u??f,m;return n[4]!==s||n[5]!==t||n[6]!==p||n[7]!==e?(m=Qj(e,s,p,t),n[4]=s,n[5]=t,n[6]=p,n[7]=e,n[8]=m):m=n[8],m}function RP(e,t){let n=(0,U.c)(7),{childStores:r}=nM(),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):Jk(rM(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):Jk(rM(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(BP,i)}return t?r.ensureChild(t).subscribe(e):r.subscribeAllSelected(zP,e)},n[4]=r,n[5]=t,n[6]=o):o=n[6];let s=o;return K.useSyncExternalStore(s,a,a)}function zP(e){return e.session}function BP(e){return e.session}function VP(e){let t=Zj(e,RP(e),Y((0,K.useCallback)(t=>e?t.activeSessions.find(t=>t.id===e)??null:null,[e]))),n=(0,K.useRef)(null),[,r]=K.useState(0);if((0,K.useEffect)(()=>{if(!e){n.current=null;return}if(t){n.current={sessionID:e,session:t,expiresAt:null};return}let i=n.current;if(!i||i.sessionID!==e){n.current=null;return}let a=i.expiresAt??Date.now()+2e3;i.expiresAt=a;let o=a-Date.now(),s=window.setTimeout(()=>{n.current?.sessionID===e&&(n.current=null),r(e=>e+1)},o);return()=>window.clearTimeout(s)},[t,e]),t)return t;let i=n.current;return i&&i.sessionID===e&&(i.expiresAt===null||i.expiresAt>Date.now())?i.session:null}function HP(e,t){return RP(e,t)?.directory??void 0}function UP(){return nM().directory}function WP(){return nM().childStores}var GP=[],KP=40,qP=4,JP=30,YP=4,XP=30,ZP=new WeakMap,QP=(e,t,n)=>`${e}\u0000${+!!t}\u0000${n??``}`,$P=e=>{let t=ZP.get(e);return t||(t=new Map,ZP.set(e,t)),t},eF=(e,t,n,r)=>{let i=ZP.get(e);if(!i)return;let a=QP(t,n,r),o=i.get(a);if(o)return i.delete(a),i.set(a,o),o},tF=(e,t)=>{if(!t.sessionID)return;let n=$P(e),r=QP(t.sessionID,t.suspendPartUpdates,t.suspendedPartUpdatesMessageID),i=ye()?JP:jp()?XP:null;if(i!==null&&t.list.length>i){n.delete(r);return}n.delete(r),n.set(r,t);let a=ye()?qP:jp()?YP:KP;for(;n.size>a;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}};function nF(e,t){let n=ZP.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 rF=`The following tool was executed by the user`,iF=(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(rF)}):!1};function aF(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 oF=(e,t)=>{for(let n of e.list){let r=t.parts[n.info.id]??CF;if(e.suspendPartUpdates){let i=e.suspendedPartUpdatesMessageID;if((!i||n.info.id===i)&&!iF(t.parts,n.info,r)&&!aF(n.parts,r))continue}if(Pn(n.parts,r,n.info)!==n.parts)return!1}return!0},sF=(e,t,n,r)=>{let i=eF(e,t.sessionID,n,r);if(i&&i.sourceMessages===t.messages&&i.revertMessageID===t.revertMessageID&&i.suspendPartUpdates===n&&i.suspendedPartUpdatesMessageID===r&&oF(i,t))return i};function cF(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?kn(i,r):n.length===0?SF:i.slice(),revertMessageID:r}}function lF(e,t,n=!1,r){let i=e.sessionID,{sourceMessages:a,visibleMessages:o,revertMessageID:s}=cF(e,t),c=new Map,l=o.map(i=>{let a=t?.byId.get(i.id),o=e.parts[i.id]??CF,s=n&&a&&(!r||i.id===r)&&!iF(e.parts,i,o)&&!aF(a.parts,o)?a.parts:Pn(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 uF(e,t){let n=nM(),r=t??n.directory,i=oP(r);return On(e,r,i)}function dF(e,t){let n=nM(),r=t??n.directory,i=oP(r);return Qn(e,r,i)}function fF(e,t){let n=nM(),r=t??n.directory,i=oP(r);return zn(e,r,i)}function pF(e,t){let n=(0,U.c)(8),r=nM(),i=t??r.directory,a=oP(i),o=(0,K.useRef)(Uj),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(Vt(),!e)return o.current=Uj,Uj.history;let t=(H()??Et(i,a)).getTranscript(V(i,e)),n=a.getState().session.find(t=>t.id===e)?.revert?.messageID,r=qj({sessionID:e,messages:lt(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 mF;let n=(H()??Et(i,a)).subscribe(V(i,e),()=>{t()}),r=Be(()=>{n(),n=(H()??Et(i,a)).subscribe(V(i,e),()=>{t()}),t()}),o=a.subscribe(()=>{t()});return()=>{r(),n(),o()}},n[4]=e,n[5]=a,n[6]=i,n[7]=l):l=n[7];let u=l;return K.useSyncExternalStore(u,c,c)}function mF(){}var hF=(e,t,n)=>({sessionID:e,directory:t,store:n,bindingRevision:Vt(),transportIdentity:u(),generation:f()}),gF=(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 _F(e,t,n){let r=(0,U.c)(23),i=nM(),a=t??i.directory,o=oP(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:SF,visibleMessages:SF,revertMessageID:void 0,suspendPartUpdates:l,suspendedPartUpdatesMessageID:u,list:d,byId:f},r[2]=e,r[3]=l,r[4]=u,r[5]=p):p=r[5];let m=(0,K.useRef)(p),h=(0,K.useRef)(null);n?.suspendPartUpdates,n?.suspendPartUpdatesForMessageId;let g;r[6]!==n?.suspendPartUpdates||r[7]!==n?.suspendPartUpdatesForMessageId||r[8]!==e||r[9]!==o||r[10]!==a?(g=()=>{if(!e)return GP;let t=(H()??Et(a,o)).getTranscript(V(a,e)),r=!!n?.suspendPartUpdates,i=n?.suspendPartUpdatesForMessageId??void 0,s=m.current.sessionID===e?m.current.sourceMessages:eF(o,e,r,i)?.sourceMessages,c=lt(t,s),l=o.getState().session.find(t=>t.id===e)?.revert?.messageID,u={sessionID:e,messages:c,parts:t.partsByMessageID,revertMessageID:l},d=sF(o,u,r,i);if(d)return m.current=d,d.list;let f=lF(u,m.current.sessionID===e?m.current:eF(o,e,r,i),r,i);return m.current=f,tF(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=hF(e,a,o);if(!e)return h.current={scope:t,list:GP},GP;if(!c){let e=h.current;if(e&&gF(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 vF;if(!c){let e=Be(()=>{t()}),n=s(()=>{t()});return()=>{e(),n()}}jt(a,e);let n=(H()??Et(a,o)).subscribe(V(a,e),()=>{t()}),r=Be(()=>{n(),n=(H()??Et(a,o)).subscribe(V(a,e),()=>{t()}),nn(a,e),jt(a,e),t()}),i=s(()=>{t()}),l=o.subscribe(()=>{t()});return()=>{r(),i(),n(),l()}},r[18]=c,r[19]=e,r[20]=o,r[21]=a,r[22]=b):b=r[22];let x=b;return K.useSyncExternalStore(x,y,y)}function vF(){}var yF=new Set;function bF(e,t){let n=UP(),r=t??n,i=oP(r),a=K.useRef(0);K.useEffect(()=>{if(!e)return;let t=H()??Et(r,i),n=V(r,e),o=t.getTranscript(n),s=t.hasSession?.(n);if(Wn(o,{resolved:s===!0||void 0}).renderable){ty({directory:r,sessionID:e,store:i});return}if(!i.getState().session.some(t=>t.id===e))return;let c=`${r}:${e}`;if(yF.has(c))return;let l=++a.current,u=()=>l!==a.current;yF.add(c),(async()=>{try{if(H())try{if(await ar(r,e),u())return;ty({directory:r,sessionID:e,store:i,isStale:u})}catch{if(u())return;await BM(r,e,i,{reason:`ensure-session-messages`,isStale:u})}else await BM(r,e,i,{reason:`ensure-session-messages`,isStale:u})}catch{}finally{yF.delete(c)}})()},[e,i,r])}function xF(e,t){let n=nM(),r=t??n.directory,i=oP(r);return Yn(e,r,i)}var SF=[],CF=[],wF=[],TF=[],EF=[],DF=()=>({requestID:le(),queueItemID:le(),operationID:le(),messageID:Ce(`msg`)}),OF=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}:{}}),kF,AF=(e,t)=>{let n=e.establishing;if(!n||t&&n.draftID!==t||n.pending.length===0)return EF;if(kF&&kF.pending===n.pending&&kF.draftID===t)return kF.items;let r=n.pending.map(OF);return kF={pending:n.pending,draftID:t,items:r},r},jF=e=>t=>t.flights[e]??null,MF=e=>t=>!!e&&t.establishing?.draftID===e,NF=e=>t=>AF(t,e),PF=(e,t)=>({flightKind:e,inFlight:e!==null,establishing:t}),FF=ke()((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??DF(),o=[...n.attachments??[]],s={kind:`pending-admission`,requestID:a.requestID,queueItemID:a.queueItemID,operationID:a.operationID,messageID:a.messageID||Ce(`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})),IF=ke((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}}})),X=class extends Error{status;code;constructor(e,t){super(`Message queue server request failed: ${t}`),this.name=`MessageQueueServerError`,this.status=e,this.code=t}},LF=`/api/openchamber/message-queue`,RF=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`]),zF=new Set([`revision`,`scopeID`,`queueItemID`,`rowVersion`,`removedQueueItemID`,`projectDirectory`,`token`,`state`,`scopeCount`,`statusCounts`]),BF=new Set([`scopeID`,`revision`,`directory`,`sessionID`,`worktreeState`,`itemCount`]),VF=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Z=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,HF=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),UF=async e=>{if(e.status===501)return`unavailable`;try{let t=await e.json();if(VF(t)&&typeof t.code==`string`&&RF.has(t.code))return t.code}catch{}return`unavailable`},WF=async(e,t)=>{let n;try{n=await _(e,t)}catch{throw new X(0,`unavailable`)}if(!n.ok)throw new X(n.status,await UF(n));try{return await n.json()}catch{throw new X(n.status,`unavailable`)}},GF=()=>{throw new X(200,`unavailable`)},KF=e=>VF(e)&&Object.getPrototypeOf(e)===Object.prototype,qF=e=>{if(!(!KF(e)||typeof e.text!=`string`||!Array.isArray(e.references)||e.references.some(e=>!KF(e))))return{text:e.text,references:e.references.map(e=>({...e}))}},JF=e=>Array.isArray(e)&&e.every(KF)?e.map(e=>({...e})):void 0,YF=e=>{if(!(!VF(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}}},XF=e=>VF(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,ZF=e=>{if(!Array.isArray(e)||e.length===0||e.length>129)return null;let t=[],n=0;for(let r of e){if(!KF(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},QF=e=>{if(!Array.isArray(e)||e.length>64)return null;let t=new Set,n=[];for(let r of e){if(!KF(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},$F=e=>{if(!KF(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))||!KF(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},eI=e=>Array.isArray(e)&&e.map($F).every(e=>e!==null)?e.map($F):null,tI=e=>{if(!VF(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:qF(e.composerDocument),n=e.composerMentions===void 0?void 0:JF(e.composerMentions),r=e.sendConfig===void 0?void 0:YF(e.sendConfig),i=e.deliveryTarget===void 0?{kind:`primary`}:XF(e.deliveryTarget),a=e.deliveryParts===void 0?void 0:ZF(e.deliveryParts),o=e.syntheticParts===void 0?void 0:QF(e.syntheticParts),s=e.attachmentIssues===void 0?void 0:JF(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:eI(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}:{}}},nI=e=>{if(!VF(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(tI);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},rI=e=>VF(e)&&Object.keys(e).every(e=>BF.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,iI=e=>VF(e)&&typeof e.projectDirectory==`string`&&HF(e.orderedPaths)&&Z(e.revision)?{projectDirectory:e.projectDirectory,orderedPaths:e.orderedPaths,revision:e.revision}:null,aI=e=>{if(!VF(e)||!Z(e.revision)||!Array.isArray(e.scopes)||!Array.isArray(e.worktreeOrders))return GF();let t=e.scopes.map(rI),n=e.worktreeOrders.map(iI);return!t.every(e=>e!==null)||!n.every(e=>e!==null)?GF():{revision:e.revision,scopes:t,worktreeOrders:n}},oI=e=>!VF(e)||!Z(e.revision)||Object.keys(e).some(e=>!zF.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&&(!VF(e.statusCounts)||Object.values(e.statusCounts).some(e=>!Z(e)))?GF():{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}:{},...VF(e.statusCounts)?{statusCounts:e.statusCounts}:{}},sI=(e,t,n)=>({method:e,headers:{"Content-Type":`application/json`},body:JSON.stringify(t),signal:n}),cI=(e,t)=>{let{signal:n,...r}=t;return sI(e,r,n)},lI=async e=>aI(await WF(LF,{signal:e})),uI=new Map,dI=(e,t)=>`${c().api(LF)}\u0000${e}\u0000${t.offset??``}\u0000${t.limit??``}\u0000${t.expectedRevision??``}`,fI=async(e,t={})=>{if(t.signal?.aborted)throw new X(0,`unavailable`);let n=dI(e,t),r=uI.get(n);if(r){let e=await r;if(t.signal?.aborted)throw new X(0,`unavailable`);return e}let i=(async()=>nI(await WF(`${LF}/scopes/${encodeURIComponent(e)}`,{query:{offset:t.offset,limit:t.limit,expectedRevision:t.expectedRevision},signal:t.signal}))??GF())().finally(()=>{uI.get(n)===i&&uI.delete(n)});return uI.set(n,i),i},pI=15e3,mI=(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:pI,a=!1,o=e=>{a||(a=!0,clearTimeout(l),c(),r?.removeEventListener(`abort`,s),n(e))},s=()=>o(`aborted`),c=Ei(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=fi(`message-queue-changed`);if(u!==void 0&&u>e){o(`tip`);return}r?.addEventListener(`abort`,s,{once:!0})}),hI=async e=>{let t=await WF(`${LF}/status`,{signal:e}),n=new Set([`capability`,`authority`,`generation`,`activationEpoch`,`activatedAt`,`manifestHash`,`protocol`,`worker`]);return!VF(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&&(!VF(t.worker)||Object.keys(t.worker).some(e=>e!==`paused`&&e!==`active`)||typeof t.worker.paused!=`boolean`||!Z(t.worker.active))?GF():{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}:{},...VF(t.worker)?{worker:{paused:t.worker.paused,active:t.worker.active}}:{}}},gI=(e,t)=>Object.keys(e).length===t.length&&Object.keys(e).every(e=>t.includes(e)),_I=e=>{let t=[`revision`,`importID`,`state`,`duplicate`,`manifestHash`,`commit`];if(!VF(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 GF();let n=e.commit===void 0?void 0:bI(e.commit);return e.commit!==void 0&&!n?GF():{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}:{}}},vI=e=>!VF(e)||!gI(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`?GF():{revision:e.revision,importID:e.importID,staged:!0,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{}},yI=e=>!VF(e)||!gI(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)?GF():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,state:`sealed`,itemCount:e.itemCount},bI=e=>!VF(e)||!gI(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)?GF():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,generation:e.generation,activationEpoch:e.activationEpoch,added:e.added},xI=e=>bI(e),SI=e=>bI(e),CI=(e,t)=>!VF(e)||!gI(e,[`authority`,`generation`,`revision`])||e.authority!==t||!Z(e.generation)||!Z(e.revision)?GF():{authority:t,generation:e.generation,revision:e.revision},wI=async e=>_I(await WF(`${LF}/imports`,cI(`POST`,e))),TI=async(e,t)=>{let n=await WF(`${LF}/imports/${encodeURIComponent(e)}`,{signal:t});if(!VF(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 GF();let r=n.staged.map(e=>VF(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:bI(n.commit);return!r.every(e=>e!==null)||n.commit!==void 0&&!i?GF():{state:n.state,...typeof n.manifestHash==`string`?{manifestHash:n.manifestHash}:{},itemCount:n.itemCount,staged:r,...i?{commit:i}:{}}},EI=async(e,t)=>vI(await WF(`${LF}/imports/${encodeURIComponent(e)}/items`,cI(`POST`,t))),DI=async(e,t)=>yI(await WF(`${LF}/imports/${encodeURIComponent(e)}/seal`,cI(`POST`,t))),OI=async(e,t)=>xI(await WF(`${LF}/imports/${encodeURIComponent(e)}/activate`,cI(`POST`,t))),kI=async(e,t)=>SI(await WF(`${LF}/imports/${encodeURIComponent(e)}/late-commit`,cI(`POST`,t))),AI=async e=>CI(await WF(`${LF}/authority/pause`,cI(`POST`,e)),`paused`),jI=async e=>CI(await WF(`${LF}/authority/resume`,cI(`POST`,e)),`active`),MI=async(e={})=>{let t=await WF(`${LF}/attachments/uploads`,cI(`POST`,e));return!VF(t)||typeof t.uploadID!=`string`||typeof t.uploadToken!=`string`||!Z(t.expiresAt)?GF():{uploadID:t.uploadID,uploadToken:t.uploadToken,expiresAt:t.expiresAt}},NI=async(e,t,n,r)=>{let i;try{i=await _(`${LF}/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 X(0,`unavailable`)}if(!i.ok)throw new X(i.status,await UF(i))},PI=e=>!VF(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)?GF():{revision:e.revision,scopeID:e.scopeID,queueItemID:e.queueItemID,rowVersion:e.rowVersion,token:e.token,expiresAt:e.expiresAt,generation:e.generation},FI=e=>!VF(e)||typeof e.queueItemID!=`string`||typeof e.token!=`string`||!Z(e.generation)||!Z(e.expiresAt)?GF():{queueItemID:e.queueItemID,token:e.token,generation:e.generation,expiresAt:e.expiresAt},II=async(e,t)=>PI(await WF(`${LF}/items/${encodeURIComponent(e)}/reserve`,cI(`POST`,t))),LI=async(e,t)=>{await WF(`${LF}/items/${encodeURIComponent(e)}/release`,cI(`POST`,t))},RI=async(e,t)=>FI(await WF(`${LF}/items/${encodeURIComponent(e)}/edit-reservations/${encodeURIComponent(t.token)}/renew`,cI(`POST`,t))),zI=async(e,t)=>oI(await WF(`${LF}/items/${encodeURIComponent(e)}/reserved-remove`,cI(`DELETE`,t))),BI=async(e,t,n)=>{let r;try{r=await _(`${LF}/items/${encodeURIComponent(e)}/attachments/${encodeURIComponent(t.attachmentID)}/content`,{signal:n})}catch{throw new X(0,`unavailable`)}if(!r.ok)throw new X(r.status,await UF(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 X(r.status,`unavailable`);let s;try{s=await r.blob()}catch{throw new X(r.status,`unavailable`)}if(s.size!==t.size)throw new X(r.status,`unavailable`);let c=new Blob([s],{type:i});return c.type===i?c:Object.defineProperty(c,"type",{value:i})},VI=async e=>oI(await WF(`${LF}/items`,cI(`POST`,e))),HI=async(e,t)=>oI(await WF(`${LF}/items/${encodeURIComponent(e)}`,cI(`PATCH`,t))),UI=async(e,t)=>oI(await WF(`${LF}/items/${encodeURIComponent(e)}/send`,cI(`POST`,t))),WI=async(e,t)=>oI(await WF(`${LF}/items/${encodeURIComponent(e)}`,cI(`DELETE`,t))),GI=async(e,t)=>oI(await WF(`${LF}/scopes/${encodeURIComponent(e)}/order`,cI(`PUT`,t))),KI=async(e,t)=>iI(await WF(`${LF}/worktrees/order`,{query:{projectDirectory:e},signal:t}))??GF(),qI=async e=>oI(await WF(`${LF}/worktrees/order`,cI(`PUT`,e))),JI=(e=u())=>L.messageQueue.snapshot(e),YI=(e=u())=>L.messageQueue.status(e),XI=(e,t,n=u())=>L.messageQueue.scope(e,t,n),ZI=(e=u())=>({queryKey:YI(e),queryFn:({signal:e})=>hI(e),retry:!1,staleTime:3e4}),QI=(e=u())=>({queryKey:JI(e),queryFn:({signal:e})=>lI(e),staleTime:5e3}),$I=(e=I,t=u())=>e.fetchQuery(ZI(t)),eL=(e=I,t=u())=>e.fetchQuery(QI(t)),tL=async(e=I,t=u())=>e.fetchQuery({...ZI(t),staleTime:0}),nL=async(e=I,t=u())=>e.fetchQuery({...QI(t),staleTime:0}),rL=(e,t,n=u())=>{e.setQueryData(XI(t.scopeID,t.revision,n),{pages:[t],pageParams:[0]})},iL=(e,t,n=u())=>{e.setQueryData(YI(n),t)},aL=(e,t,n=u())=>{e.setQueryData(JI(n),t)},oL=(e,t,n,r=u())=>{let i=e.getQueryData(XI(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},sL=(e,t=u())=>e.removeQueries({queryKey:[t,`messageQueue`,`scope`],exact:!1}),cL=(e,t,n=u())=>e.removeQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),lL=(e,t,n=u())=>e.invalidateQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),uL=`openchamber_message_queue_ledger_v4`,dL=`message-queue-store`,fL={scopes:128,totalItems:2048,attachmentsPerItem:64,issuesPerItem:64,string:8192,content:2e5,dataURL:26214400,bytes:26214400},pL=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,mL=(e,t)=>Object.keys(e).every(e=>t.includes(e)),hL=(e,t=fL.string)=>typeof e==`string`&&e.length>0&&e.length<=t,gL=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,_L=e=>JSON.parse(JSON.stringify(e)),vL=(e,t,n,r)=>{let i=pL(t)?t:{};return{...e?{scopeKey:e}:{},...hL(i.queueItemID)?{queueItemID:i.queueItemID}:{},...hL(i.operationID)?{operationID:i.operationID}:{},path:n,reason:r}},yL=e=>e.state===`bound`?`bound:${JSON.stringify([e.transportIdentity,e.directory,e.sessionID])}`:`unbound-legacy:${JSON.stringify([e.sessionID])}`,bL=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=SL(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&&yL(n)===e?n:void 0},xL=()=>({version:4,queues:{},migration:{v3State:`pending`}}),SL=e=>!pL(e)||!hL(e.state)?void 0:e.state===`bound`&&mL(e,[`state`,`transportIdentity`,`directory`,`sessionID`])&&hL(e.transportIdentity)&&hL(e.directory)&&hL(e.sessionID)?{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID}:e.state===`unbound-legacy`&&mL(e,[`state`,`sessionID`])&&hL(e.sessionID)?{state:`unbound-legacy`,sessionID:e.sessionID}:void 0,CL=(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}},wL=[`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`serverPath`,`vscodePath`,`vscodeSource`],TL=e=>{if(!hL(e.attachmentID)||!hL(e.occurrenceRefID)||!CL(e.occurrenceRefID,e.attachmentID)||!hL(e.filename)||typeof e.mimeType!=`string`||e.mimeType.length>fL.string||!gL(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`&&hL(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&&hL(e.vscodePath)&&(e.vscodeSource===`file`||e.vscodeSource===`selection`))return{...t,source:`vscode`,vscodePath:e.vscodePath,vscodeSource:e.vscodeSource}},EL=e=>{if(!pL(e)||!mL(e,[...wL,`version`,`locator`])||e.version!==1)return;let t=TL(e);if(!t||!pL(e.locator))return;let n=e.locator.kind===`blob`&&mL(e.locator,[`kind`,`blobID`])&&hL(e.locator.blobID)?{kind:`blob`,blobID:e.locator.blobID}:e.locator.kind===`url`&&mL(e.locator,[`kind`,`url`])&&ne(e.locator.url)?{kind:`url`,url:e.locator.url}:void 0;return n?{version:1,...t,locator:n}:void 0},DL=e=>{if(!pL(e)||!mL(e,[...wL,`reason`]))return;let t=TL(e);return t&&[`legacy-blob-url`,`legacy-bytes-missing`,`legacy-unbound-data`,`missing-blob`].includes(e.reason)?{...t,reason:e.reason}:void 0},OL=(e,t)=>{if(!pL(e)||!mL(e,[`text`,`references`])||typeof e.text!=`string`)return;let n=ge(e.text,e.references),r=n&&ie(n,`queue-canonical`);return r&&r.ok&&r.text===t?n:void 0},kL=(e,t)=>{if(e===void 0)return[];if(!t)return;let n=M(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},AL=(e,t)=>{if(!pL(e)||!mL(e,[`version`,`queueItemID`,`operationID`,`messageID`,`owner`,`content`,`composerDocument`,`composerMentions`,`attachments`,`attachmentIssues`,`createdAt`,`sendConfig`,`status`,`attemptCount`,`nextAttemptAt`,`reconciliationStartedAt`,`reconciliationDeadlineAt`,`reconciliationChecks`,`reconciliationNextCheckAt`,`failureKind`])||e.version!==1||!hL(e.queueItemID)||!hL(e.operationID)||!hL(e.messageID)||typeof e.content!=`string`||e.content.length>fL.content||!gL(e.createdAt)||!gL(e.attemptCount)||!Array.isArray(e.attachments)||e.attachments.length>fL.attachmentsPerItem||!Array.isArray(e.attachmentIssues)||e.attachmentIssues.length>fL.issuesPerItem||![`queued`,`sending`,`retrying`,`reconciling`,`unresolved`,`failed`].includes(e.status))return;let n=SL(e.owner),r=e.attachments.map(EL),i=e.attachmentIssues.map(DL),a=e.composerDocument===void 0?void 0:OL(e.composerDocument,e.content),o=kL(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?we(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&&(!pL(e.sendConfig)||!mL(e.sendConfig,[`providerID`,`modelID`,`agent`,`variant`])||!hL(e.sendConfig.providerID)||!hL(e.sendConfig.modelID)||[e.sendConfig.agent,e.sendConfig.variant].some(e=>e!==void 0&&!hL(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&&!gL(e))||!m)return;let h=e.status===`sending`&&t,g=h?e.createdAt+3e4:e.reconciliationDeadlineAt;if(h&&!gL(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:_L(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}:{}}},jL=(e,t={})=>{let n=e=>({status:`corrupt`,snapshot:xL(),issues:[vL(void 0,void 0,`$`,e)],degradedScopeKeys:[]});if(!pL(e)||!mL(e,[`version`,`queues`,`migration`])||e.version!==4||!pL(e.queues)||!pL(e.migration)||!mL(e.migration,[`v3State`])||![`pending`,`complete`,`degraded`].includes(e.migration.v3State)||Object.keys(e.queues).length>fL.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(vL(e,t,n,r)),o.add(e)};for(let[a,d]of Object.entries(e.queues)){if(!bL(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>fL.totalItems)return n(`item-limit`);let f=d[i],p=`$.queues.${JSON.stringify(a)}[${i}]`,m=AL(f,t.normalizeSending===!0);if(!m||yL(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:_L({version:4,queues:i,migration:{v3State:e.migration.v3State}}),issues:a,degradedScopeKeys:[...o]}},ML=e=>{let t=jL(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`}}}},NL=()=>({ok:!1,error:{code:`unavailable`}}),PL=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),FL=e=>({read:async t=>{if(!e)return NL();try{return{ok:!0,value:e.getItem(t)}}catch(e){return PL(e)}},write:async(t,n)=>{if(!e)return NL();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return PL(e)}},remove:async t=>{if(!e)return NL();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return PL(e)}}}),IL=()=>{try{return FL(typeof window>`u`?null:window.localStorage)}catch{return FL(null)}},LL=async e=>{let t=await e.read(uL);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}};try{let e=jL(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:[vL(void 0,void 0,`$`,`json`)],degradedScopeKeys:[]}}}},RL=async e=>{let t=await LL(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},zL=async(e,t)=>{let n=ML(t);return n.ok?e.write(uL,n.value):n},BL=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,zL(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:()=>LL(e),read:()=>RL(e),persist:e=>{if(!t)return Promise.resolve({ok:!1,error:{code:`cancelled`}});let r=jL(e);if(r.status===`corrupt`||r.issues.length)return Promise.resolve({ok:!1,error:{code:`corrupt`}});let i=_L(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}},VL=fL.string,HL=fL.dataURL,UL=fL.bytes,WL=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,GL=(e,t,n=!1)=>typeof e==`string`&&e.length<=VL&&(n||e.length>0)?e:t,KL=(e,t=0)=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0?e:t,qL=(e,t)=>yL(e)===yL(t),JL=(e,t,n,r)=>({scopeKey:e,queueItemID:t,path:n,reason:r}),YL=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(``)}`},XL=e=>typeof e==`string`&&e.length>0&&e.length<=VL,ZL=e=>bL(e)??(XL(e)?{state:`unbound-legacy`,sessionID:e}:void 0),QL=e=>{if(WL(e)){if(e.state===`bound`&&XL(e.transportIdentity)&&XL(e.directory)&&XL(e.sessionID))return{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID};if(e.state===`unbound-legacy`&&XL(e.sessionID))return{state:`unbound-legacy`,sessionID:e.sessionID}}},$L=e=>{if(e.length>HL)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>UL)return;e=Uint8Array.from(t,e=>e.charCodeAt(0))}else if(e=new TextEncoder().encode(decodeURIComponent(a)),e.byteLength>UL)return;let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),new Blob([t],{type:i})}catch{return}},eR=e=>WL(e)&&XL(e.providerID)&&XL(e.modelID)&&(e.agent===void 0||XL(e.agent))&&(e.variant===void 0||XL(e.variant))?{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}:void 0,tR=async(e,t)=>{let n=await LL(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:[JL(``,``,`$.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=>JL(e.scopeKey??``,e.queueItemID??``,e.path,e.reason)),cleanupErrors:[]};let r=await e.read(dL);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={...xL(),migration:{v3State:`complete`}},n=await zL(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:[JL(``,``,`$`,`legacy-json`)],cleanupErrors:a}}let l=WL(c)&&WL(c.state)?c.state.queuedMessages:WL(c)?c.queuedMessages:void 0;if(!WL(l))return{status:`failed`,error:{code:`corrupt`},issues:[JL(``,``,`$.state.queuedMessages`,`legacy-state`)],cleanupErrors:a};let u={...xL(),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>=fL.scopes){i.push(JL(n,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-scope-limit`));break}let c=ZL(n),l=c?yL(c):n;if(!c||!Array.isArray(r)){i.push(JL(l,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-queue`));continue}for(let e=0;e<r.length;e++){if(m>=fL.totalItems){i.push(JL(l,``,`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,`legacy-item-limit`));break}m++;let h=`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,g=WL(r[e])?r[e]:void 0;if(!g||typeof g.content!=`string`||g.content.length>131072){i.push(JL(l,``,h,`legacy-item`));continue}let _=QL(g.owner);if(g.owner!==void 0&&(!_||!qL(c,_))){i.push(JL(l,XL(g.queueItemID)?g.queueItemID:``,h,`owner-conflict`));continue}let v=JSON.stringify([n,e,g.content]),y=XL(g.queueItemID)?g.queueItemID:XL(g.id)?g.id:await YL(`queue`,v),b=XL(g.operationID)?g.operationID:await YL(`operation`,`${v}:operation`),x=XL(g.messageID)?g.messageID:await YL(`message`,`${v}:message`);if(d.has(y)||f.has(b)||p.has(x)){i.push(JL(l,y,h,`duplicate-id`));continue}d.add(y),f.add(b),p.add(x);let S=[],C=[],w=new Set,E=Array.isArray(g.attachments)?g.attachments:[];g.attachments!==void 0&&!Array.isArray(g.attachments)&&i.push(JL(l,y,`${h}.attachments`,`legacy-attachments`));for(let e=0;e<E.length&&e<fL.attachmentsPerItem;e++){let n=WL(E[e])?E[e]:void 0,r=`${h}.attachments[${e}]`;if(!n){i.push(JL(l,y,r,`legacy-attachment`));continue}let u=XL(n.id)?n.id:await YL(`attachment`,`${v}:attachment:${e}`),d=T(u),f=GL(n.filename,u),p=GL(n.mimeType,``,!0),m=KL(n.size);if(w.has(d)){i.push(JL(l,y,r,`duplicate-attachment-occurrence`));continue}w.add(d);let g=n.source===`local`?n.serverPath===void 0&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`server`?XL(n.serverPath)&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`vscode`&&XL(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,D=_===`vscode`?n.vscodeSource:void 0,O={attachmentID:u,occurrenceRefID:d,filename:f,mimeType:p,size:m,source:_,...b?{serverPath:b}:{},...x?{vscodePath:x}:{},...D?{vscodeSource:D}:{}},k=e=>{C.push({...O,reason:e}),i.push(JL(l,y,r,e))};if(c.state===`unbound-legacy`){k(`legacy-unbound-data`);continue}if(!g){i.push(JL(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(ne(A)){S.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=$L(A);if(!j){k(`legacy-bytes-missing`);continue}let M=await YL(`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:JL(l,y,r,`blob-retain`)}),S.push({version:1,...O,mimeType:j.type,size:j.size,locator:{kind:`blob`,blobID:M}})}E.length>fL.attachmentsPerItem&&i.push(JL(l,y,`${h}.attachments`,`legacy-attachment-limit`));let D=KL(g.createdAt),O=typeof g.status==`string`?g.status:`queued`,k=WL(g.failure)?g.failure.kind:g.failureKind,A=k===`pre-dispatch`||k===`ambiguous-dispatch`||k===`definitive`?k:void 0,j=O===`retrying`||A===`pre-dispatch`,N=O===`sending`||O===`reconciling`||A===`ambiguous-dispatch`,ee=O===`unresolved`&&C.length===0,te=C.length>0,re=KL(g.reconciliationStartedAt,D),ae=KL(g.reconciliationDeadlineAt,-1),oe=re>2**53-1-3e4?re:re+3e4,se=Math.max(re,ae>=0?ae:oe),P=KL(g.reconciliationChecks),F=KL(g.reconciliationNextCheckAt,re);N&&ae<0&&re>2**53-1-3e4&&i.push(JL(l,y,`${h}.reconciliationDeadlineAt`,`reconciliation-deadline-overflow`));let ce=te||ee||c.state===`unbound-legacy`&&N?`unresolved`:j?`retrying`:N?`reconciling`:O===`failed`||A===`definitive`?`failed`:`queued`,le=ce===`reconciling`||ce===`unresolved`&&!te,ue=WL(g.composerDocument)&&typeof g.composerDocument.text==`string`?ge(g.composerDocument.text,g.composerDocument.references):void 0,de=ue&&ie(ue,`queue-canonical`);g.composerDocument!==void 0&&(!de||!de.ok||de.text!==g.content)&&i.push(JL(l,y,`${h}.composerDocument`,`degraded-composer-document`));let I=de&&de.ok&&de.text===g.content?ue:void 0,fe=I?M(I.text,g.composerMentions):void 0,L=fe&&!fe.some(e=>I.references.some(t=>e.range.start<t.end&&t.start<e.range.end));g.composerMentions!==void 0&&!L&&i.push(JL(l,y,`${h}.composerMentions`,`degraded-composer-mentions`));let pe={version:1,queueItemID:y,operationID:b,messageID:x,owner:c,content:g.content,...I?{composerDocument:I}:{},...L&&fe.length?{composerMentions:fe}:{},attachments:S,attachmentIssues:C,createdAt:D,...eR(g.sendConfig)?{sendConfig:eR(g.sendConfig)}:{},status:ce,attemptCount:KL(g.attemptCount),...ce===`retrying`?{nextAttemptAt:KL(g.nextAttemptAt,D),failureKind:`pre-dispatch`}:le?{reconciliationStartedAt:re,reconciliationDeadlineAt:se,reconciliationChecks:P,reconciliationNextCheckAt:F,failureKind:`ambiguous-dispatch`}:ce===`failed`?{failureKind:`definitive`}:{}};(u.queues[l]??=[]).push(pe)}}i.length&&(u.migration.v3State=`degraded`);let g=await zL(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})},nR=(e,t)=>JSON.stringify(e)===JSON.stringify(t),rR=(e,t=[])=>({status:e,errors:t,cleanupErrors:[]}),iR=e=>e.status===`sending`||e.status===`reconciling`,aR=(e,t,n={})=>{let r={hydration:`idle`,snapshot:xL(),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]=nR(r.snapshot.queues[n],i)?r.snapshot.queues[n]:i;let n=nR(r.snapshot.queues,t)&&nR(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&&yL(t.owner)===e.scopeKey?t:void 0},d=()=>r.hydration===`idle`||r.hydration===`hydrating`?rR(`unseeded`):r.hydration===`recovery-required`?rR(`recovery-required`,[...r.issues]):r.hydration===`failed`?rR(`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=()=>rR(`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)):rR(`stale`))),materializeForEdit:(t,n=p())=>l(async()=>{let r=d(),i=u(t);if(r)return r;if(!i||!m(i,n))return rR(`stale`);if(iR(i))return rR(`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`?rR(`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 rR(`stale`);try{let a=await e.releaseSend(t,n,r);return a.status!==`stale`&&h.delete(i),a}catch{return h.delete(i),rR(`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{...rR(`stale`),durableRemoval:!1};if(iR(f))return{...rR(`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{...rR(`stale`),durableRemoval:!1};if(_(t))return{...v(),durableRemoval:!1};if(iR(a))return{...rR(`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=>iR(e)||!m(e,i))?rR(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.reorder(t,n,i)):rR(`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)?rR(`stale`):_(t)?v():iR(a)?rR(`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||iR(e)||!m(e,r))||n.transportIdentity!==r.transportIdentity?rR(`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)?rR(`stale`):_(t)?rR(`failed`,[{phase:`identity`,code:`reserved`}]):(Array.isArray(n)?n:[n]).includes(o.status)?f(()=>e.transition(t,r,i)):rR(`stale`))}),confirm:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?rR(`stale`):_(t)?rR(`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)?rR(`stale`):_(t)?rR(`failed`,[{phase:`identity`,code:`reserved`}]):e.acquireSendPayload(t,n))}),releaseSend:(t,n,r=p())=>l(async()=>e.releaseSend(t,n,r))}},oR=e=>JSON.parse(JSON.stringify(e)),Q=(e,t=[],n=[],r)=>({status:e,...r===void 0?{}:{current:r},errors:t,cleanupErrors:n}),sR=(e,t)=>e.queueItemID===t.queueItemID&&e.operationID===t.operationID&&e.messageID===t.messageID,cR=(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,lR=e=>JSON.stringify(e),uR=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}),dR=e=>`${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,fR=e=>typeof e==`number`&&Number.isSafeInteger(e),pR=(e,t)=>{if(lR(uR(e))!==lR(uR(t))||!fR(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&&!fR(e))||e.status===`reconciling`&&t.status===`reconciling`&&(t.reconciliationStartedAt!==e.reconciliationStartedAt||t.reconciliationDeadlineAt!==e.reconciliationDeadlineAt||(t.reconciliationChecks??0)<(e.reconciliationChecks??0)))},mR=e=>{if(!e.composerDocument)return!0;let t=new Set(e.composerDocument?we(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))},hR=(e,t,n={})=>{let r=xL(),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=>sR(t,e)),_=(e,t,n,r,i)=>({phase:e,code:t,...n?{scopeKey:yL(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=cR(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},C=()=>Q(a?`stale`:`disabled`,[],[],!1),w=()=>Q(`recovery-required`,[_(`metadata`,`recovery-required`)]),T=async(t,n)=>{let r=await e.releaseIfMatches(t.reference,t.blobID);r.ok||(u.set(S(t.reference),t),n.push(_(`blob`,r.error.code,t.item,t.attachment)))},E=async e=>{let t=[];for(let n of[...e].reverse())await T(n,t);return t},D=()=>{let e=new Map;for(let t of h())for(let n of v(t,`queue`))e.set(S(n.reference),n.blobID);return e},O=(e,t,n=D())=>n.get(e)===t.blobID||d.get(e)?.blobID===t.blobID,k=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)}},A=async(t=!1)=>{if(!i)return Q(`unseeded`);if(!a)return Q(`disabled`);if(c||s)return w();let n=D(),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(S(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?jL(u,{normalizeSending:!0}):{status:`ok`,snapshot:xL(),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?A(!0):Q(`disabled`,m.map(e=>({phase:`metadata`,code:e.reason,...e}))))}),getSnapshot:()=>oR(r),admit:(t,n,o)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return w();if(!b(t,n))return C();let s=yL(t.owner),l=oR(r);l.queues[s]=[...l.queues[s]??[],t];let d=jL(l);if(!mR(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 C();let p=[];for(let r of v(t,`queue`)){if(!await x(n,f))return{...C(),cleanupErrors:await E(p)};let i=await e.readReference(r.reference);if(!i.ok)return Q(`failed`,[_(`blob`,i.error.code,t,r.attachment)],await E(p));if(i.value&&i.value!==r.blobID)return Q(`failed`,[_(`blob`,`blob-id-conflict`,t,r.attachment)],await E(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 E(p));let i=await o?.(r.attachment);if(i===void 0)return Q(`failed`,[_(`blob`,`missing-blob`,t,r.attachment)],await E(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 E(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 E(p));p.push(r)}let m=await k(d.snapshot,n,f);if(!m.committed)return m.error?Q(`failed`,[m.error],await E(p)):{...C(),cleanupErrors:await E(p)};for(let e of v(t,`queue`))u.delete(S(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 w();let o=g(e);if(!o||!b(o,n))return C();let s=y(n,o);if(!await x(n,s))return C();let l=t(oR(o)),u=oR(r),d=yL(o.owner);u.queues[d]=u.queues[d].map(t=>sR(t,e)?l:t);let f=jL(u);if(!sR(l,e)||!pR(o,l)||f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-transition`,o)]);let p=await k(f.snapshot,n,s);return p.committed?Q(`committed`,[],[],p.current):p.error?Q(`failed`,[p.error]):C()}),reorder:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return w();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 C();let s=y(n,o[0]);if(!await x(n,s))return C();let l=new Map(o.map(e=>[e.queueItemID,e])),u=oR(r);u.queues[e]=t.map(e=>l.get(e));let d=await k(u,n,s);return d.committed?Q(`committed`,[],[],d.current):d.error?Q(`failed`,[d.error]):C()}),bind:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return w();let o=g(e);if(!o)return Q(`failed`,[_(`identity`,`invalid-bind`)]);if(!b(o,n)||t.transportIdentity!==n.transportIdentity)return C();if(o.owner.state!==`unbound-legacy`||o.attachments.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let s=yL(o.owner),l=r.queues[s];if(!l||l.length!==1||!sR(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 C();let d={...oR(o),owner:t},f=jL({version:4,queues:{[yL(t)]:[d]},migration:r.migration});if(f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let p=oR(r),m=s,h=yL(t);p.queues[m]=p.queues[m].filter(t=>!sR(t,e)),p.queues[m].length||delete p.queues[m],p.queues[h]=[d,...p.queues[h]??[]];let v=jL(p);if(v.status===`corrupt`||v.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let S=await k(v.snapshot,n,u);return S.committed?Q(`committed`,[],[],S.current):S.error?Q(`failed`,[S.error]):C()}),bindMany:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return w();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 C();let s=o[0].owner,l=r.queues[yL(s)];if(!l||l.length!==e.length||o.some(e=>lR(e.owner)!==lR(s)||e.attachments.length)||l.some((t,n)=>!sR(t,e[n])))return Q(`failed`,[_(`identity`,`invalid-bind`)]);let u=y(n,o[0]);if(!await x(n,u))return C();let d=o,f=d.map(e=>({...oR(e),owner:t})),p=oR(r),m=yL(s),h=yL(t);p.queues[m]=p.queues[m].filter(e=>!d.some(t=>sR(e,t))),p.queues[m].length||delete p.queues[m],p.queues[h]=[...f,...p.queues[h]??[]];let v=jL(p);if(v.status===`corrupt`||v.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`)]);let S=await k(v.snapshot,n,u);return S.committed?Q(`committed`,[],[],S.current):S.error?Q(`failed`,[S.error]):C()}),acquireSendPayload:(t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return w();let r=g(t);if(!r||!b(r,n))return C();if(f.has(dR(t)))return Q(`failed`,[_(`identity`,`active-send`,r)]);let o=y(n,r);if(!await x(n,o))return C();let s=[],l=[];for(let t of r.attachments){if(!await x(n,o))return{...C(),cleanupErrors:await E(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 E(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 E(s));s.push(i)}let c=await e.read(i.blobID);if(!c.ok)return Q(`failed`,[_(`blob`,c.error.code,r,t)],await E(s));l.push({attachment:t,value:c.value})}if(!await x(n,o))return{...C(),cleanupErrors:await E(s)};let u=v(r,`send`),m=`${++p}`;for(let e of u)d.set(S(e.reference),e);return f.set(dR(t),{token:m,identity:t,held:u}),{...Q(`committed`,[],[],!0),token:m,values:l}}),releaseSend:(e,t)=>m(async()=>{let n=f.get(dR(e));if(typeof t!=`string`||!n||n.token!==t)return Q(`stale`);f.delete(dR(e));let r=[];for(let e of n.held)d.delete(S(e.reference)),await T(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 w();let n=g(e);if(!n||!b(n,t))return C();let o=y(t,n);if(!await x(t,o))return C();let s=oR(r);for(let[t,n]of Object.entries(s.queues)){let r=n.filter(t=>!sR(t,e));r.length?s.queues[t]=r:delete s.queues[t]}let l=await k(s,t,o);if(!l.committed)return l.error?Q(`failed`,[l.error]):C();let u=f.get(dR(e));f.delete(dR(e));let p=[];for(let e of v(n,`queue`))await T(e,p);for(let e of u?.held??v(n,`send`))d.delete(S(e.reference)),await T(e,p);return Q(`committed`,[],p,l.current)}),reconcile:()=>m(()=>A(!1)),retryCleanup:()=>m(async()=>{if(!a)return Q(`disabled`);if(c||s)return w();let t=[],n=D();for(let[r,i]of u){if(O(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}}},gR=()=>{let e=IL(),t=BL(e),n=Ca();return{controller:aR(hR(n,t),()=>{let e=u(),t=f();return{transportIdentity:e,generation:t,isCurrent:()=>u()===e&&f()===t}}),migrate:async()=>tR(e,n)}},_R=(e=gR)=>{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)}},vR,yR=()=>vR??=_R(),bR=26214400,xR=52428800,SR=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),CR=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>bR)throw RangeError(`message-queue-attachment-too-large`);n+=e}if(n>xR)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 MI({signal:t});await NI(e,n.value,await SR(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}},wR,TR=()=>{let e=`openchamber:message-queue-import-client-id`;try{let t=globalThis.localStorage,n=t.getItem(e);if(n)return n;let r=le();return t.setItem(e,r),r}catch{return wR??=le()}},ER={queue:void 0,capture:()=>({transportIdentity:``,generation:0}),current:()=>!0,admit:VI,create:wI,details:TI,stage:EI,seal:DI,upload:CR,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:()=>{}},DR=e=>({scopeKey:yL(e.owner),queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}),OR=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(``)}`,kR=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}}),AR=e=>Array.isArray(e)?`[${e.map(AR).join(`,`)}]`:e&&typeof e==`object`?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${AR(e[t])}`).join(`,`)}}`:JSON.stringify(e),jR=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(AR(e))))].map(e=>e.toString(16).padStart(2,`0`)).join(``),MR=e=>{let t={...ER,...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(DR(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:kR(s)}};n||(p=`admit`,await t.admit({requestID:await OR(s.operationID),..._,signal:o})),e.push({item:s,scopeOrdinal:h,itemOrdinal:g,payload:_,payloadHash:await jR(_)}),f++}finally{await t.queue.releaseSend(DR(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 jR(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=TR(),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})}}}},NR=e=>typeof e==`object`&&!!e&&e.kind===`pending-admission`,PR=(e,t)=>e.then(e=>{if(t?.aborted)throw new DOMException(`Aborted`,`AbortError`);return e}),FR={snapshot:e=>PR(nL(I),e),status:e=>PR($I(I),e),scope:fI,waitInvalidation:mI,admit:VI,edit:HI,remove:WI,reserve:II,renew:RI,release:LI,removeReserved:zI,reorder:GI,manualSend:UI,upload:CR,client:I,capture:()=>({transportIdentity:u(),generation:f()}),current:e=>e.transportIdentity===u()&&e.generation===f(),legacyManualSend:async()=>{},shadowQueue:yR,admissionUploadTimeoutMs:12e4,admissionRequestTimeoutMs:2e4,admissionReconcileTimeoutMs:2e4},IR=e=>e instanceof X&&(e.code===`revision_conflict`||e.code===`row_version_conflict`),LR=e=>e instanceof X&&e.code===`unavailable`,RR=8,zR=(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))]},BR=e=>`${e.transportIdentity}\u0000${Se(e.directory)}\u0000${e.sessionID}`,VR=(e,t)=>new Promise(n=>{let r=setTimeout(n,e);t.addEventListener(`abort`,()=>{clearTimeout(r),n()},{once:!0})}),HR=(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 X(0,`unavailable`)):r.signal.addEventListener(`abort`,()=>t(new X(0,`unavailable`)),{once:!0})});return Promise.race([Promise.resolve().then(()=>e(r.signal)),o]).finally(()=>{i!==void 0&&clearTimeout(i),t?.removeEventListener(`abort`,a)})},UR=(e={})=>{let t={...FR,...e},n={...t,snapshot:e.snapshot??(e=>PR(nL(t.client,t.capture().transportIdentity),e)),status:e.status??(e=>PR($I(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?BR({transportIdentity:n,directory:a.directory,sessionID:a.sessionID}):r?BR({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 X(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 X(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;rL(n.client,e,t.transportIdentity);let a=BR({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)rL(n.client,e,i.transportIdentity);if(aL(n.client,e,i.transportIdentity),e.scopes.length===0)sL(n.client,i.transportIdentity);else for(let e of o.keys())a.has(e)||cL(n.client,e,i.transportIdentity);y(e.scopes,i);for(let e of t){let t=BR({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)||(iL(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 X&&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 X&&n.code===`revision_conflict`){e=0;continue}m({error:n,isFetching:!1}),await VR(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)??oL(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?oL(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<RR;t++){let s=r.scopes.get(e),c=s?oL(n.client,e,s.revision,a.transportIdentity):void 0,l;try{try{l=(await i(o,c)).revision}catch(e){if(!LR(e)||!h(a))throw e;l=(await i(o,c)).revision}}catch(n){if(IR(n)&&t+1<RR){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 X(409,`revision_conflict`));if(!t)return u({status:`stale`});await lL(n.client,e,a.transportIdentity);let i=r.scopes.get(e);return u({status:`committed`,scope:i?oL(n.client,e,i.revision,a.transportIdentity):t})}catch(r){if(IR(r)&&!t)continue;return h(a)?(m({error:r}),lL(n.client,e,a.transportIdentity).catch(()=>{}),u({status:`committed`})):u({status:`stale`})}}throw new X(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=BR(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=>Se(t.directory)===Se(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=oL(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(BR(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 MR({queue:n.shadowQueue(),capture:()=>e,current:h,existing:()=>[...r.scopes.values()].flatMap(t=>oL(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 AI({expectedGeneration:e,signal:i?.signal}),await T()},resume:async e=>{await jI({expectedGeneration:e,signal:i?.signal}),await T()},stageAdmission:({requestID:e,scope:t,item:n})=>{let r=BR({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=BR({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=BR({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 HR(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 HR(e=>n.admit({...v,signal:e}),i?.signal,n.admissionRequestTimeoutMs)}catch(e){if(!h(o))return m(),{status:`stale`};if(!(e instanceof X)||e.code!==`unavailable`)throw m(),e;f({...l,phase:`ambiguous`});try{y=await HR(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?HR(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 X)||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<RR;a++){let d=r.scopes.get(t),f=(d?oL(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(!IR(e)||a+1>=RR)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<RR;a++){let d=r.scopes.get(t),f=(d?oL(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 X(404,`not_found`)).catch(()=>void 0),await T(),!0):!1}catch(e){if(!IR(e)||a+1>=RR)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:zR(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 X(0,`unavailable`)}}},WR,GR=()=>WR??=UR(),KR=new WeakMap,qR=e=>{let t=e,n=KR.get(t);if(n)return n.refs++,()=>{n.refs--,n.refs||(n.unsubscribe(),KR.delete(t))};let r={refs:1,unsubscribe:s(t=>{p(t)&&e.restart()})};return KR.set(t,r),()=>{r.refs--,r.refs||(r.unsubscribe(),KR.delete(t))}},JR=e=>!e||/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(e),YR=(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(!JR(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}},XR=/\.[a-z0-9]{1,8}$/i,ZR=/^([a-z0-9][a-z0-9._-]*)\/([a-z0-9][a-z0-9._-]*)(?:@[^\s/\\]+)?$/i,QR=e=>{let t=ZR.exec(e);return t?!XR.test(t[2]):!1},$R=new Set([`test`,`tests`,`__tests__`,`spec`,`specs`,`e2e`,`__mocks__`]),ez=/\.(?:test|spec|e2e)\./i,tz=.85,nz=3,rz=3,iz=1.25,az=-.35,oz=-.5,sz=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(XR),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}},cz=e=>{let t=sz(e);return(t.fileIntent||t.directoryIntent)&&t.stem?t.stem:t.search},lz=e=>{let t=e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase();if(!t)return!1;let n=t.split(`/`).filter(Boolean);if(n.some(e=>$R.has(e)))return!0;let r=n.at(-1)??t;return ez.test(r)},uz=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase(),dz=(e,t)=>(e.name||t.split(`/`).filter(Boolean).pop()||t).toLowerCase(),fz=(e,t)=>e===null&&t===null?null:Math.min(e??1/0,t??1/0),pz=(e,t)=>{let n=uz(e.relativePath),r=dz(e,n),i=e.isDirectory===!0,a=fz(FO(n,t.search),FO(r,t.search)),o;if(a!==null)o=a;else if(t.stem&&t.stem!==t.search){let e=fz(FO(n,t.stem),FO(r,t.stem));if(e===null)return null;o=e+tz}else return null;return t.fileIntent&&i&&(o+=nz),t.directoryIntent&&!i&&(o+=rz),t.fileIntent&&!i&&t.extension&&e.extension===t.extension&&(o+=az),t.directoryIntent&&i&&r===t.stem&&(o+=oz),lz(n)&&!lz(t.search)&&(o+=iz),o},mz=(e,t,n)=>{let r=n?.limit??20,i=sz(t);if(!i.search&&!i.stem)return e.slice(0,r);let a=e.flatMap(e=>{let t=pz(e,i);return t===null?[]:[{item:e,score:t,sortKey:uz(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)},hz=/\.[a-z0-9]{1,8}$/i,gz=/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/,_z=e=>!QR(e)&&(e.includes(`/`)||e.includes(`\\`)||e.includes(`.`)),vz=e=>{if(!_z(e))return!1;let t=e.replace(/\\/g,`/`);if(t.endsWith(`/`))return!0;let n=t.split(`/`).filter(Boolean).pop()??t;return hz.test(n)},yz=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},bz=(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}},xz=(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)||!yz(i))return null;let a=t+1+i.length,o=i;if(vz(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,vz(o))return{value:o,end:a,highlightEnd:a}}return null},Sz=(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},Cz=(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||gz.test(o))){i=a+1;continue}let s=bz(e,a,t)??(n?xz(e,a):null)??Sz(e,a);if(!s){i=a+1;continue}r.push({start:a,...s}),i=Math.max(s.highlightEnd,s.end,a+1)}return r},wz=({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 mz(Array.from(a.values()),n,{limit:i})},Tz=6,Ez=(e,t,n)=>mz(e,t,{limit:n?.limit??Tz}),Dz=(e,t)=>e===null&&t===null?null:Math.min(e??1/0,t??1/0),Oz=(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=Dz(FO(e.name,n),FO(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)},kz=(e,t)=>{let n=e[t];return n!==void 0&&/\s/.test(n)},Az=({mention:e,confirmed:t,terminated:n})=>!e||e.startsWith(`session:`)?!1:t?!0:n&&_z(e),jz=(e,{confirmedValues:t,agentNames:n})=>{if(!e.includes(`@`))return[];let r=[];for(let i of Cz(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=kz(e,s);Az({mention:o,confirmed:t.has(o),terminated:l})&&r.push({start:a,end:c,kind:`file`})}return r},Mz=(e,{agentNames:t,includeUnterminatedPastedReferences:n=!1,confirmedValues:r}={})=>{if(!e.includes(`@`))return[];let i=[];for(let a of Cz(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=kz(e,c),d=n&&(l||vz(s)),f=r?.has(s)===!0;!u&&!d&&!f||!_z(s)&&!d||i.push({kind:s.endsWith(`/`)||s.endsWith(`\\`)?`directory`:`file`,value:s,start:o,end:c})}return i},Nz=/(^|[\s([{])(@session:([A-Za-z0-9_-]+))(?=$|[\s)\]},.!?;:])/g,Pz=e=>{let t=[];Nz.lastIndex=0;let n;for(;(n=Nz.exec(e))!==null;){let e=n.index+n[1].length;t.push({start:e,end:e+n[2].length,id:n[3]})}return t},Fz=e=>{let t=[],n=new Set;for(let{id:r}of Pz(e))n.has(r)||(n.add(r),t.push(r));return t},Iz=(e,t)=>{let n=e;for(let r of Pz(e).reverse()){let e=t.get(r.id)??r.id;n=`${n.slice(0,r.start)}@${e}${n.slice(r.end)}`}return n},Lz=({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)},Rz=({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(`
|
|
409
|
+
`)?null:s},zz=/(^|\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,Bz=e=>yr(e.trim()),Vz=e=>{let t=e.trim();if(t.toLowerCase().startsWith(`file://`))return t;let n=Bz(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`file:///${n}`:`file://${n}`},Hz=e=>({chunks:[{provenance:`authored`,text:e,start:0,end:e.length}],semantics:[]}),Uz=({text:e,root:t,confirmedFilePaths:n,confirmedDirectoryPaths:r=[],agentNames:i})=>{let a=[],o=new Set,s=t?Bz(t).replace(/\/+$/,``):``,c=e=>Bz(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=br(e)||br(t)?t:t.replace(/^\/+/,``);if(!(l.has(t)||l.has(n)||!QR(e)&&(e.includes(`/`)||e.includes(`\\`)||e.includes(`.`))))return;let r=br(e)||br(t)?t:s?xr(s,n):null;if(!n||!r||o.has(r))return;o.add(r);let d=Sr(r)||n,f=u.has(t)||u.has(n)||/[/\\]$/.test(e)?ir:`text/plain`;a.push({id:le(),file:new File([],d,{type:f}),filename:d,mimeType:f,size:0,dataUrl:Vz(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},Wz=(e,t)=>{let n=[],r=new Set;zz.lastIndex=0;let i;for(;(i=zz.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},Gz=(e,t)=>{if(!e.includes(`@`)||t.length===0)return[];let n=[];for(let{id:r,title:i}of t)(e.includes(`@${i}`)||e.includes(`@${fe}${i}`))&&n.push(r);return n},Kz=({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(nt(r).map(e=>[e.id,e.title||e.id])),u=[];for(let e of kt().values()){let t=typeof e.title==`string`?e.title.trim():``;t&&u.push({id:e.id,title:t})}return kf(e,e=>{let r=YR(e,t),d=[...new Set([...Fz(e),...Gz(e,u)])],f=[...Wz(e,n),...d.map(e=>({type:`session`,sessionId:e}))],p=Uz({text:r.sanitizedText,root:i,confirmedFilePaths:a,confirmedDirectoryPaths:o,agentNames:c});return{text:Iz(Tt(Bt(r.sanitizedText,s)),l),agent:r.mention?.name,attachments:p,semantics:f}})},qz=e=>e.map(e=>({text:e.text,...e.attachments?.length?{attachments:Af(e.attachments)}:{},synthetic:!0})),Jz=({text:e,attachments:t,semanticParts:n,syntheticParts:r=[]})=>[{type:`text`,text:e},...Af(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},...Af(e.attachments??[]).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id}))])],Yz=(e,t)=>{let n=t.map(e=>({...e,attachments:Af(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}})},Xz=e=>e?.trim()||void 0,Zz=e=>e.hasQueuedMessages&&(e.sessionIsRunning||e.autoReviewRunning)&&!e.queuedOnly&&e.delivery!==`steer`,Qz=(e,t)=>e!==`assistant`||t===`server`,$z=(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)})},eB=({currentConfig:e,sessionID:t,selection:n})=>{let r=Xz(e.currentAgentName),i=t?Xz(n.getSessionAgentSelection(t))??r:r,a=t&&i?n.getAgentModelForSession(t,i):null,o=t?n.getSessionModelSelection(t):null,s=Xz(a?.providerId)??Xz(o?.providerId)??Xz(e.currentProviderId),c=Xz(a?.modelId)??Xz(o?.modelId)??Xz(e.currentModelId);if(!s||!c)return;let l=t&&i?Xz(n.getAgentModelVariantForSession(t,i,s,c))??Xz(e.currentVariant):Xz(e.currentVariant);return{providerID:s,modelID:c,...i?{agent:i}:{},...l?{variant:l}:{}}},tB=e=>!!(Xz(e?.providerID)&&Xz(e?.modelID)),nB=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,rB=(e,t)=>nB(e,t),iB=e=>JSON.stringify([e.text,e.references]),aB=e=>JSON.stringify(e),oB=(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,sB=({draftKey:e,runtime:t,document:n,attachments:r,inlineDrafts:i})=>({draftKey:{transportIdentity:e.transportIdentity,owner:{...e.owner}},draftKeyID:P(e),runtime:{...t},documentFingerprint:iB(n),attachments:new Map(r.map(e=>[e.id,e])),inlineDrafts:new Map(i.map(e=>[e.id,aB(e)]))}),cB=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`||!rB(e.runtime,n())||!d||P(d)!==e.draftKeyID)return{status:`stale`,bodyConsumed:!1,attachmentIDsConsumed:[],inlineDraftIDsConsumed:[]};let f=iB(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||!oB(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||aB(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}},lB=(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)}}),uB=(e=le,t=()=>Ce(`msg`),n=Date.now())=>({requestID:e(),queueItemID:`queued-${e()}`,operationID:`operation-${e()}`,messageID:t(),createdAt:n}),dB=({stage:e,clearComposer:t,postClear:n})=>{let r=e();return t(),n?.(),r},fB=`blocked`,pB=new Set,mB=()=>fB,hB=e=>{if(fB!==e){fB=e;for(let e of pB)e()}},gB=e=>(pB.add(e),()=>pB.delete(e)),_B=()=>fB===`legacy-enabled`,vB=2e3,yB=6e4,bB=5e3,xB=3,SB=e=>Math.min(vB*2**Math.max(e-1,0),yB),CB=new Map,wB=new Map,TB=new Set,EB=new Set,DB=0,OB=()=>{DB+=1;for(let e of EB)e()},kB=(e,t)=>JSON.stringify([De(e),t.queueItemID,t.operationID]),AB=e=>`scope:${De(e)}`,jB=()=>new Set([...CB.keys(),...wB.keys()]),MB=e=>(EB.add(e),()=>EB.delete(e)),NB=e=>{let t=(0,U.c)(2),n;return t[0]===e?n=t[1]:(n=()=>e?wB.has(AB(e)):!1,t[0]=e,t[1]=n),K.useSyncExternalStore(MB,n,eV)},PB=()=>structuredClone(F.getState().queuedMessages),FB=async()=>{for(hB(`blocked`);CB.size||wB.size||TB.size;)await Promise.allSettled([...new Set([...CB.values(),...wB.values(),...TB])]);return N(),PB()},IB=e=>e===`idle`,LB=e=>{if(e===void 0)return`unknown`;let t=e[e.length-1];return!t||t.role===`assistant`?`settled`:`unsettled`},RB=(e,t,n,r,i=!1,a=`settled`)=>e?e.status===`sending`?i?{}:{recover:!0}:e.status===`queued`?IB(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`retrying`?e.nextAttemptAt&&e.nextAttemptAt>r?{nextWakeAt:e.nextAttemptAt}:IB(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`reconciling`?(e.reconciliationChecks??0)>=xB||(e.reconciliationDeadlineAt??1/0)<=r?{resolve:!0}:(e.reconciliationNextCheckAt??0)>r?{nextWakeAt:e.reconciliationNextCheckAt}:i?{}:{query:!0}:{}:{},zB=(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},BB=(e,t)=>{let n;for(let r of fr(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},VB=(e,t)=>{let n;for(let r of e.values())r.expiresAt>t&&(!n||r.expiresAt<n)&&(n=r.expiresAt);return n},HB=({queuedMessages:e,activeTransportIdentity:t,getStatus:n,getTurnState:r=()=>`settled`,previous:i,inFlight:a,dispatchInFlight:o=jB(),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=kB(m,e),_=AB(m);d.add(h);let v=n(m),y=RB(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(De(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},UB=e=>{let t=e[0];if(!t)return null;let n=t.composerDocument&&ie(t.composerDocument,`direct-send-display`),r=t.owner?.state===`bound`?t.owner.directory:``,i=Kz({plan:n?.ok?{chunks:n.chunks??[],semantics:n.semantics??[]}:Hz(t.content),agents:W.getState().getVisibleAgents(),installedSkillNames:new Set(Uc(I,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=zf(i.semantics,r);return{queuedMessageId:t.id,messageID:t.messageID,operationID:t.operationID,primaryText:i.text,primaryAttachments:Af([...t.attachments??[],...i.attachments]),agentMentionName:i.agent,additionalParts:a,sendConfig:t.sendConfig}},WB=(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}),GB=(e,t)=>t?{...t}:eB({currentConfig:W.getState(),sessionID:e,selection:Hl.getState()})??{providerID:``,modelID:``},KB=e=>{let t=$.getState().getDirectoryForSession(e);return t?{state:`bound`,transportIdentity:u(),directory:t,sessionID:e}:null},qB=(e,t)=>!!(e===`queued`||e===`retrying`||t&&(e===`failed`||e===`unresolved`)),JB=e=>e.status===`sending`||e.status===`reconciling`,YB=(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`||De(a.owner)!==De(r)?null:{scope:r,item:a}};function XB(e,t={}){if(!_B())return Promise.resolve();let n=F.getState(),r=t.scope??KB(e),i=t.manual===!0||t.delivery===`steer`;if(!r||r.transportIdentity!==u())return Promise.resolve();let a=YB(n,e,t.queueItemID,r??void 0);if((i||!t.scope)&&!wB.has(AB(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(JB)&&!o.some(JB)&&(n.bindLegacyQueue({state:`unbound-legacy`,sessionID:e},r),a=YB(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=kB(o,c),d=CB.get(l);if(d)return d;if(wB.has(AB(o))||!qB(s.status,i)||s.status===`retrying`&&!i&&(s.nextAttemptAt??0)>Date.now())return Promise.resolve();let p,m=new Promise(e=>{p=e});return CB.set(l,m),wB.set(AB(o),m),OB(),(async()=>{try{let r=BB(e,o.directory),a=gV(e),l=a?.queueItemID===s.queueItemID?a.messageID:de(`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(!N()){n.markQueueItemPreDispatchRetry(o,p,Date.now()+SB(d.attemptCount+1));return}let m=f(),h=UB([d]);if(!h)return;let g=GB(e,d.sendConfig);if(!g.providerID||!g.modelID){n.markQueueItemPreDispatchRetry(o,p,Date.now()+SB(d.attemptCount+1));return}if(!_B()){n.markQueueItemPreDispatchRetry(o,p,Date.now()+SB(d.attemptCount+1));return}let _=()=>{let e=F.getState().getQueueForScope(o)[0];return u()===o.transportIdentity&&f()===m&&e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&De(e.owner)===De(o)},v=()=>{let e=F.getState().getQueueForScope(o)[0];return e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&De(e.owner)===De(o)},y=t=>{_()&&t===p.messageID&&(F.getState().confirmQueueItem(o,p),AV(e))};try{await WB(e,h,g,{directory:o.directory,delivery:t.delivery,onSendConfirmed:y}),y(p.messageID)}catch(e){if(!v())return;let t=Gy(e);t===`pre-dispatch`?n.markQueueItemPreDispatchRetry(o,p,Date.now()+SB(d.attemptCount+1)):t===`definitive-rejection`?n.markQueueItemDefinitiveFailure(o,p):n.markQueueItemReconciling(o,p)}}finally{let e=!1;CB.get(l)===m&&(CB.delete(l),e=!0),wB.get(AB(o))===m&&(wB.delete(AB(o)),e=!0),e&&OB(),p?.()}})(),m}async function ZB(e,t=f()){if(!_B())return;let n=Math.min(e.item.reconciliationDeadlineAt??1/0,Date.now()+bB),r=new AbortController,i=setTimeout(()=>r.abort(),Math.max(0,n-Date.now())),a=null;try{a=await $b(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=F.getState().getQueueForScope(e.scope)[0];o?.queueItemID===e.item.queueItemID&&o.operationID===e.item.operationID&&o.messageID===e.item.messageID&&De(o.owner)===De(e.scope)&&u()===e.scope.transportIdentity&&f()===t&&(a?.some(t=>t.info.id===e.item.messageID)?(QH(e.scope.sessionID,e.item.messageID),F.getState().confirmQueueItem(e.scope,{queueItemID:o.queueItemID,operationID:o.operationID,messageID:o.messageID})):F.getState().recordQueueItemReconciliationCheck(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID}))}var QB=(e,t)=>{Ay({sessionID:e.sessionID,messageID:t.messageID,directory:e.directory}),F.getState().resolveQueueItemReconciliation(e,{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID})};function $B(e){let t=typeof e==`boolean`?e:e?.enabled??!0,n=K.useSyncExternalStore(gB,mB,mB),r=F(e=>e.queuedMessages),i=Yd(e=>e.runsByOriginalSessionID),a=$(e=>e.queueAbortBlocks),o=K.useSyncExternalStore(s,u,u),c=K.useSyncExternalStore(s,m,m),l=K.useSyncExternalStore(MB,()=>DB,()=>DB),d=K.useMemo(()=>Object.values(r).flatMap(e=>{let t=e[0]?.owner;return t?.state===`bound`&&t.transportIdentity===o?[t]:[]}),[o,r]),p=cP(d),h=lP(),g=WP(),_=K.useMemo(()=>d.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),[d]),v=K.useRef(d);v.current=d;let y=K.useSyncExternalStore(K.useMemo(()=>e=>{if(!_)return()=>void 0;let t=v.current.map(e=>({directory:e.directory,sessionID:e.sessionID}));return Fe(t,e,e=>g.getChild(e),{subscribeRebuild:e=>g.subscribeRegistry(e)})},[g,_]),K.useMemo(()=>()=>{if(!_)return``;let e=v.current.map(e=>({directory:e.directory,sessionID:e.sessionID}));return en(e,e=>g.getChild(e))},[g,_]),()=>``),b=K.useCallback(e=>h(e),[h]),x=K.useCallback(e=>LB(Qt(e.directory,e.sessionID,g.getChild(e.directory))),[g]),[S,C]=K.useState(0),w=K.useRef(new Map),T=K.useRef(new Set);K.useEffect(()=>{if(!t||n!==`legacy-enabled`)return;let e=Date.now();$.getState().pruneQueueAbortBlocks(e);let s=new Set,l=new Set;for(let[t,n]of a)n.expiresAt>e&&l.add(t);for(let e of zB(i,c))s.add(e);let u=HB({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)F.getState().markQueueItemReconciling(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID});for(let e of u.dispatchScopes)F.getState().getQueueForScope(e)[0]&&XB(e.sessionID,{scope:e}).finally(()=>{C(e=>e+1)});for(let e of u.resolveOperations)QB(e.scope,e.item);for(let e of u.queryOperations){T.current.add(e.key);let t=ZB(e,f()).finally(()=>{T.current.delete(e.key),TB.delete(t),C(e=>e+1)});TB.add(t)}let d=VB(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 eV(){return!1}var tV={server:GR(),queue:yR(),status:e=>$I(I).then(t=>{if(e?.aborted)throw new DOMException(`Aborted`,`AbortError`);return t}),activate:OI,lateCommit:kI,capture:()=>({transportIdentity:u(),generation:f()}),current:e=>e.transportIdentity===u()&&e.generation===f(),quiesce:async()=>{await FB()},flush:async()=>{N()},prepare:ae,resolveDirectory:e=>$.getState().getDirectoryForSession(e)},nV=()=>({ownership:`probing`,migration:`idle`,frozen:!0,admission:`frozen`,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),rV=(e={})=>{let t={...tV,...e},n=nV(),r=0,i,a,o,c=500,l,u=!1,d=new Set,f=e=>{n={...n,...e};let r=n.ownership===`legacy-unsupported`;hB(r?`legacy-enabled`:`blocked`),b(r?`open`:n.migration===`freezing`||n.ownership===`probing`||n.ownership===`blocked`?`quiescing`:`recovery-read-only`),(n.ownership===`server-active`||n.ownership===`server-paused`)&&A(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 x(e,r,`late`),n):(f({migration:`staging`}),await x(e,r,`activation`),n):n):(h(Error(`capability-unavailable`)),n)}catch(r){return!t.current(e)||i?.signal.aborted?n:r instanceof X&&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),x=async(e,n,r)=>{let a=await MR({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 tL(I).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)}}},S,C=()=>{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++,S!==void 0&&(clearTimeout(S),S=void 0),!(r>1)&&(a=s(e=>{p(e)&&(i?.abort(),f(nV()),setTimeout(()=>{y()},0))}),y())},stop:()=>{r=Math.max(0,r-1),!r&&(S!==void 0&&clearTimeout(S),S=setTimeout(()=>{S=void 0,r||C()},0))},refresh:y}},iV,aV=()=>iV??=rV(),oV=t({confirmQueueAbortOptimistic:()=>AV,getQueueAbortOptimisticPresentation:()=>gV,getQueueAbortOptimisticRevision:()=>hV,inspectQueueAbortOptimisticTranscript:()=>EV,isQueueItemSendPendingByAbortOptimistic:()=>_V,planQueueAbortOptimisticReconcile:()=>DV,promoteQueueHeadOnAbort:()=>IV,reconcileQueueAbortOptimistic:()=>FV,rollbackQueueAbortOptimistic:()=>kV,subscribeQueueAbortOptimistic:()=>mV,useQueueAbortOptimisticReconcile:()=>LV}),sV=new Set([`queued`,`retrying`]),cV=new Set([`sending`,`reconciling`]),lV=new Set([`failed`,`unresolved`]),uV=new Map,dV=new Set,fV=0,pV=()=>{fV+=1;for(let e of dV)e()},mV=e=>(dV.add(e),()=>{dV.delete(e)}),hV=()=>fV,gV=e=>uV.get(e),_V=(e,t)=>uV.get(e)?.queueItemID===t,vV=(e,t)=>{let n;for(let r of fr(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},yV=e=>{let t=e?.[0];if(!(!t||!sV.has(t.status))&&t.deliveryTarget?.kind!==`assistant`)return t},bV=(e,t)=>{let n=F.getState(),r={state:`bound`,transportIdentity:u(),directory:t,sessionID:e};return yV(n.getQueueForScope(r))??yV(n.getQueueForScope(D(e)))},xV=(e,t)=>{let n=aV().getSnapshot().ownership;return n!==`server-active`&&n!==`server-paused`?void 0:yV(GR().getScope({transportIdentity:u(),directory:t,sessionID:e})?.items)},SV=e=>{let t=e.sendConfig?.providerID,n=e.sendConfig?.modelID;return!t||!n?null:{providerID:t,modelID:n,agent:e.sendConfig?.agent}},CV=e=>!!e&&typeof e==`object`&&e.__openchamberOptimistic===!0,wV=(e,t,n)=>{try{let r=H();return r?r.getTranscript(V(t,e)).partsByMessageID[n]??[]:[]}catch{return[]}},TV=(e,t,n)=>{let r=typeof e.id==`string`?e.id:``;if(!r||e.role!==`user`)return!1;let i=wV(t,n,r);return i.length!==0&&i.some(e=>!CV(e))},EV=(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}},DV=(e,t,n)=>{let r=e?.messageID;return e&&(sV.has(e.status)||cV.has(e.status))?r&&n&&r!==n?`rebind`:cV.has(e.status)||t.hasPinnedMessage?`confirm`:`keep`:e&&lV.has(e.status)?`rollback`:t.hasPinnedMessage?`confirm`:t.hasLaterUserMessage?`rollback`:`keep`},OV=e=>{let t=uV.get(e);if(t)return uV.delete(e),pV(),t},kV=e=>{OV(e)},AV=e=>{OV(e)},jV=e=>{if(e.source===`server`){let t=GR().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=E(F.getState(),t).find(t=>t.queueItemID===e.queueItemID)??E(F.getState(),D(e.sessionID)).find(t=>t.queueItemID===e.queueItemID);return n?{queueItemID:n.queueItemID,status:n.status,messageID:n.messageID}:null},MV=e=>{let t=fr(e.sessionID,e.directory).map(t=>({id:typeof t?.id==`string`?t.id:void 0,role:t?.role,optimistic:!TV(t,e.sessionID,e.directory)}));return EV(e.messageID,t)},NV=(e,t)=>{let n=uV.get(e);!n||!t||n.messageID===t||(uV.set(e,{...n,messageID:t}),pV())},PV=(e,t,n)=>{if(t===`confirm`)AV(e.sessionID);else if(t===`rollback`)kV(e.sessionID);else if(t===`rebind`&&n?.messageID){NV(e.sessionID,n.messageID);let t=uV.get(e.sessionID);if(!t)return;let r=DV(jV(t),MV(t),t.messageID);if(r===`rebind`)return;PV(t,r,jV(t))}},FV=e=>{let t=e?[uV.get(e)].filter(e=>!!e):[...uV.values()];for(let e of t){let t=jV(e);PV(e,DV(t,MV(e),e.messageID),t)}},IV=e=>{if(!e||uV.has(e))return uV.get(e)??null;let t=$.getState().getDirectoryForSession(e);if(!t)return null;let n=xV(e,t),r=n?void 0:bV(e,t),i=n??r;if(!i)return null;let a=SV(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)??de(`msg`,vV(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 uV.set(e,c),pV(),c};function LV(){let e=(0,U.c)(6),t=K.useSyncExternalStore(mV,hV,hV),n=F(GV),r;e[0]!==t||e[1]!==n?(r=[t,n],e[0]=t,e[1]=n,e[2]=r):r=e[2],K.useEffect(WV,r);let i;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[3]=i):i=e[3],K.useEffect(VV,i);let a;e[4]===t?a=e[5]:(a=[t],e[4]=t,e[5]=a),K.useEffect(RV,a)}function RV(){let e=[...uV.values()].map(BV);return Fe(e,zV)}function zV(){FV()}function BV(e){return{directory:e.directory,sessionID:e.sessionID}}function VV(){let e=GR().subscribe(UV),t=s(HV);return()=>{e(),t()}}function HV(){for(let e of[...uV.keys()])kV(e)}function UV(){FV()}function WV(){FV()}function GV(e){return e.queuedMessages}var KV=[`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(`
|
|
410
|
+
`);async function qV(e){try{let{currentProviderId:t,currentModelId:n}=W.getState(),r=await _(`/api/small-model/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:e,system:KV,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 JV=[`active`,`paused`,`blocked`,`budgetLimited`,`complete`],YV=5e3,XV=e=>!!e&&typeof e==`object`&&!Array.isArray(e),ZV=e=>typeof e==`string`&&JV.includes(e);function QV(e){let t=e?.metadata;if(!XV(t))return null;let n=t.openchamber;if(!XV(n))return null;let r=n.goal;if(!XV(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||!ZV(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,YV),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 $V(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 eH(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 tH=e=>!!e&&typeof e==`object`&&!Array.isArray(e),nH=()=>`${Date.now().toString(36)}${Math.random().toString(36).slice(2,8)}`,rH=(e,t,n)=>yb(e,t,e=>{let t=tH(e.openchamber)?e.openchamber:{},r=n(tH(t.goal)?t.goal:null),i={...t};return i.goal=r||null,{...e,openchamber:i}}),iH=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}},aH=e=>{_(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`DELETE`}).catch(()=>void 0)};async function oH(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 sH=`
|
|
411
411
|
|
|
412
412
|
[… objective trimmed for the auditor — the full text was delivered in the chat message …]
|
|
413
413
|
|
|
414
|
-
`,sH=async e=>{if(e.length<=5e3)return e;let t=await KV(e);if(t)return t.slice(0,JV);let n=Math.max(0,Math.floor((JV-93)/2)),r=zr.getState().dictionary;return RC.error(Br(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${oH}${e.slice(-n)}`};async function cH(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await sH(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await rH(e,a),c=Date.now();await nH(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:tH(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function lH(e,t){await nH(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function uH(e,t,n){n===`paused`&&(FV(e),sx(e)),await nH(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 dH(e,t){let n=!1;await nH(e,t,e=>(n=e?.status===`active`,null)),iH(e),n&&(FV(e),sx(e))}var fH=`<system-reminder>`,pH=`</system-reminder>`,mH=/[ \t]*<system-reminder>[\s\S]*?<\/system-reminder>[ \t]*/g,hH=/[ \t]*<system-reminder>[\s\S]*$/,gH=e=>{let t=e.trim();return t?t.startsWith(fH)&&t.endsWith(pH)?t:`${fH}\n${t}\n${pH}`:``},_H=e=>e.includes(fH)?e.replace(mH,``).replace(hH,``).trim():e,vH=(e,t=m())=>`${t}\n${e}`,yH=(e,t)=>{let n=bH.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(vH(e))??n.sessionMemoryState.get(e)},bH=ke()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??vH(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}})})),xH=ke((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}})})),SH=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function CH(e,t){if(e){if(!e.degraded&&e.cwd)return SH(e.cwd);if(e.worktreeRoot)return SH(e.worktreeRoot);if(e.cwd)return SH(e.cwd)}return t?SH(t):null}function wH(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function TH(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 EH(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?SH(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=SH(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 DH=`openchamber.session-switch.start`,OH=`openchamber.session-switch.highlight-painted`,kH=`openchamber.session-switch.content-committed`,AH=`data-openchamber-session-switch-highlight-ms`,jH=`data-openchamber-session-switch-content-ms`,MH=`openchamber.session-switch.highlight-latency`,NH=`openchamber.session-switch.content-latency`,PH=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,FH=()=>PH()&&performance.getEntriesByName(DH,`mark`).length>0,IH=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},LH=(e=!1)=>{PH()&&(!e&&performance.getEntriesByName(DH,`mark`).length>0&&performance.getEntriesByName(kH,`mark`).length===0||(performance.clearMarks(DH),performance.clearMarks(OH),performance.clearMarks(kH),performance.clearMeasures(MH),performance.clearMeasures(NH),typeof document<`u`&&(document.documentElement.removeAttribute(AH),document.documentElement.removeAttribute(jH)),performance.mark(DH)))},RH=()=>{if(!FH())return;performance.mark(OH),performance.measure(MH,DH,OH);let e=performance.getEntriesByName(MH,`measure`).at(-1);e&&IH(AH,e.duration)},zH=()=>{if(!FH())return;performance.mark(kH),performance.measure(NH,DH,kH);let e=performance.getEntriesByName(NH,`measure`).at(-1);e&&IH(jH,e.duration)},BH={revision:0,sessionId:null},VH=new Set,HH=e=>{BH={revision:BH.revision+1,sessionId:e};for(let e of VH)e(BH);return BH},UH=()=>BH,WH=e=>(VH.add(e),()=>VH.delete(e)),GH=6e3;function KH(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:Ce(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:Ce(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:Ce(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:Ce(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:Ce(`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 qH(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function JH(e,t){if(!e)return;let n=qH(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 YH(e){if(!Gt(e))return;let{toast:t}=await Tr(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 Tr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-l_X_jQNz.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 XH(e){let t=e.directory??void 0;await Lb(e.sessionId,t);let n=QH(e.sessionId,e.onSendConfirmed),r=e.content,i=Ve(W.getState().agents,e.agent)??e.agent,a=e.delivery!==`queue`,o=a?yt(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??Ce(`msg`);return B.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??Ke.getState().currentDirectory??null,f=u(),p=gs(d,f),m=Vc(d,f),h=I.getQueryState(p.queryKey),g=I.getQueryState(m.queryKey),_=h?.data!==void 0,v=g?.data!==void 0,[y,b]=await Promise.all([_?Promise.resolve(vs(d,f)):I.fetchQuery({...p,staleTime:1/0}),v?Promise.resolve(Uc(I,d,f)):I.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 Yb({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 B.applySendSelection(e.sessionId,{model:o.model,agent:o.agent},t),await B.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 Yb({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 B.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 Ey({sessionId:e.sessionId,directory:t,optimisticID:n,inboxID:s,text:r,delivery:e.delivery})}})}function ZH(e,t){_(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function QH(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{ZH(e,r)}}}}var $H=e=>{let t=e;return R(t.directory??null)??R(t.project?.worktree??null)},eU=_r(),tU=`oc.chatInput.lastDraftTarget`,nU=()=>{try{let e=eU.getItem(tU);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:R(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},rU=e=>{try{eU.setItem(tU,JSON.stringify(e))}catch{}},iU=ED,aU=e=>{if(e)return xH.getState().getAttachment(e)},oU=(e,t,n)=>{if(!e)return null;let r=CH(aU(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return R(i);if(n?.includeRuntimeMemory!==!1){let t=fU.get(pU());if(t?.sessionId===e&&t.directory)return R(t.directory)}let a=Ze().find(t=>t.id===e);return a?$H(a):null},sU=e=>{let t=Ze().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},cU=async(e,t)=>{await W.getState().activateDirectory(R(e),t)},lU={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},uU=new Map,dU=0,fU=new Map,pU=e=>(e??m()).trim()||`default`,mU=e=>({...e}),hU=(e,t)=>{let n=fU.get(e);fU.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?mU(n.draft):{...lU},...t})},gU=(e,t)=>{let n=fs.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=ED(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},_U=async(e,t)=>{if(!e)return;let n=gU(e,t);n&&await hD(n)&&await RE(e)},vU=(e,t)=>{let n=fs.getState(),r=ED(n.projects,t,e);r&&n.moveProjectToTop(r.id)},yU=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,bU=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,xU=(e,t)=>bU(e,t)&&yU(so.getState().captureDraftRuntime(),t.runtime);async function SU(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?KH({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return hU(pU(),{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 CU(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return hU(pU(),{draft:n}),{newSessionDraft:n}})}async function wU(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=pU(),t=s.draftID,n=o,hU(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=so.getState().captureDraftRuntime(),o=y(a,t),s=so.getState().getDraft(o);return{token:n,draftID:t,draft:mU(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function TU(e){$.setState(t=>{let n=t.newSessionDraft;if(xU(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=fU.get(e.runtimeMemoryKey);return r&&bU(r.draft,e)&&hU(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=fU.get(e.runtimeMemoryKey);t&&bU(t.draft,e)&&hU(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function EU(e){let t=fU.get(e.runtimeMemoryKey);t&&bU(t.draft,e)&&hU(e.runtimeMemoryKey,{draft:{...lU}})}async function DU(e,t,n){if(!e.source)return null;let r;try{r=await so.getState().finalizeDraftOwnership({source:e.source.key,destination:re(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 OU(e,t){let n=t??e.directory??null;n&&Ut(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function kU(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=R(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!xU(l,r);OU(e,c);let f=W.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&QT.getState().addSessionToFolder(t,a,e.id)}return d||(rU({projectId:o??null,directory:c}),cU(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),Hl.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(Hl.getState().saveSessionAgentSelection(e.id,p),Hl.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),Hl.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),vU(c,$.getState().availableWorktreesByProject),u&&Tr(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>mj);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&&EU(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function AU(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await cE(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await _U(t,n);let r=t??B.getDirectory();return{directory:R(r),projectId:n}}async function jU(e,t){let n=await wU(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 AU(r),o=a??B.getDirectory(),s=await B.createSession({title:r.title,parentID:r.parentID??void 0},o);if(!s?.id)throw Error(`Failed to create session`);if(r.permissionAutoAcceptEnabled!==!0){let e=a??s.directory;e&&Ut(s.id,e);let{usePermissionStore:t}=await Tr(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>mj);return{usePermissionStore:e}},void 0);await t.getState().setSessionAutoAccept(s.id,!1)}return t&&(Xb({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}),xU($.getState().newSessionDraft,n)&&JH(s.id,t)),{materialized:await kU(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return TU(n),null}}async function MU(e){let t=await jU(e);return t?(await DU(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var NU=2,PU=300;async function FU(e){let{useI18nStore:t,formatMessage:n}=await Tr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-l_X_jQNz.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 IU(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=W.getState(),p=Ve(f.agents,d??f.currentAgentName),m=e.messageID??u.pendingUserMessage?.info.id??Ce(`msg`),h=KH({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 wU(h);if(!g)throw await FU(`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 AU(_),f=await B.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=at(f.flatMap(e=>e.type===`text`&&!e.synthetic?[e.text]:[]).join(`
|
|
415
|
-
`)),y=te()?.conversations;if(!y?.createWithPrompt)throw await FU(`chat.chatInput.toast.messageSendFailed`);let b=d??B.getDirectory()??``,x=My(b,{bootstrap:!1}),S=()=>yU(so.getState().captureDraftRuntime(),g.runtime),C;for(let e=0;e<=NU;e++){e>0&&await new Promise(e=>setTimeout(e,PU));try{if(C=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}),!C||C.ok||C.phase!==`unavailable`||(C=void 0,e===NU))break}catch{if(e===NU)break}}if(!C)throw TU(g),so.getState().setPendingInputText(t,`replace`),await FU(`chat.chatInput.toast.messageSendFailed`);if(C.ok){let e=C.session,t=d??e.directory??null,i=t??b;OU(e,t);let a=i===b?x:My(i,{bootstrap:!1});JH(e.id,h);let s=await kU(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 DU(g,e.id,`consume`),ZH(e.id,m),s.selected&&xf(e.id),ax({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:S}).then(t=>{t===`missing`&&console.warn(`[combined] sent user message never materialized`,{sessionId:e.id,messageID:m,directory:i})}).catch(t=>{console.warn(`[combined] sent user message presence check failed`,{sessionId:e.id,messageID:m,directory:i,error:t instanceof Error?t.message:String(t)})}),l?.(e.id,t);return}if(!C.ok){let e=C.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw TU(g),so.getState().setPendingInputText(t,`replace`),await FU(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=C,i=e.session,a=d??i.directory??null,s=await kU(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 Qb(i.id,m,a,{isCurrent:S});if(e&&S()){await DU(g,i.id,`consume`),ZH(i.id,m),s.selected&&xf(i.id),$b(My(a??b,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??b}),l?.(i.id,a);return}throw await DU(g,i.id,`preserve`),so.getState().setPendingInputText(t,`replace`),await FU(`chat.chatInput.toast.sendStatusUnknown`)}throw await DU(g,i.id,`preserve`),so.getState().setPendingInputText(t,`replace`),await FU(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw TU(g),e}}var LU=`oc.worktreeMap`,RU=()=>{try{let e=_r().getItem(LU);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}},zU=e=>{try{_r().setItem(LU,e)}catch{}},BU=e=>{let t=[];for(let n of e.values())t.push(...n);return t},VU=RU(),$=ke()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...lU},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:BU(VU),availableWorktreesByProject:VU,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)=>{HH(n),v(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(LH(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),so.getState().setActiveAttachmentDraft(n?re({transportIdentity:u()},n):null);let s=pU();uU.set(s,n);let c=Ke.getState(),l=oU(n,e=>t().worktreeMetadata.get(e)),d=B.getDirectory()??c.currentDirectory??null,f=(r?R(r):null)??l??d,p=fs.getState(),m=f?ED(p.projects,t().availableWorktreesByProject,f):null;e({currentSessionId:n,currentSessionDirectory:n?f??null:null}),hU(s,{sessionId:n,directory:f??null}),a!==n&&gr.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?f??null:null}),n&&i?.skipMessageFetch!==!0&&Cx(n,f);try{f&&c.currentDirectory!==f&&c.setDirectory(f,{showOverlay:!1}),m&&i?.preserveActiveProject!==!0&&p.activeProjectId!==m.id&&p.setActiveProjectIdOnly(m.id),B.setDirectory(f??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!yH(e)?.isStreaming){let t=fr(e);t.length>0&&bH.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(ND(n),rN(f??``,n))},prepareForRuntimeSwitch:n=>{let r=pU(n),i=Ke.getState().currentDirectory||null,a=t().currentSessionId,o=i?ot(i):null;Lj({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),uU.set(r,t().currentSessionId),hU(r,{sessionId:a,directory:i,draft:mU(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=pU(t),r=fU.get(n),i=r?.sessionId??uU.get(n)??null;v(i);let a=r?.draft?mU(r.draft):{...lU},o=r?.directory??null;o&&Ke.getState().setDirectory(o,{showOverlay:!1}),e({currentSessionId:i,currentSessionDirectory:i?o:null,newSessionDraft:i?{...lU}: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}),so.getState().setActiveAttachmentDraft(i?re({transportIdentity:u()},i):a.open&&a.draftID?y({transportIdentity:u()},a.draftID):null),i?rN(o??B.getDirectory()??``,i):rN(``,``)},openNewSessionDraft:n=>{if(PF.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let i=fs.getState(),a=i.projects,o=t().availableWorktreesByProject,s=R(t().currentSessionDirectory??null),c=R(Ke.getState().currentDirectory??null),l=nU(),d=n?.directoryOverride===void 0?null:R(n.directoryOverride),f=iU(a,o,d),p=n?.ensureProjectForDirectory&&d&&!f?i.addProject(d):null;p&&(i=fs.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),b=l?.projectId?m.find(e=>e.id===l.projectId)??null:null,x=iU(m,o,l?.directory??null),S=iU(m,o,s),C=iU(m,o,c),w=g||(d===null?S||(c?C:x??b??_):p??f),T=d===null?g?R(g.path??null):s||c||(l?.directory?l.directory:R(w?.path??null)):d;rU({projectId:w?.id??null,directory:T}),w&&i.activeProjectId!==w.id&&i.setActiveProjectIdOnly(w.id);let E=se({projectId:w?.id??null,directory:T}),D=y({transportIdentity:u()},E),O=so.getState().getDraft(D),k={open:!0,draftID:E,selectedProjectId:w?.id??null,directoryOverride:T,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:R(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===E?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},A=t().currentSessionId,j=t().currentSessionDirectory;e({newSessionDraft:{...k},currentSessionId:null,currentSessionDirectory:null,error:null}),v(null),gr.getState().setActiveMainTab(`chat`),A&&gr.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:A,previousDirectory:j,nextSessionId:null,nextDirectory:null}),hU(pU(),{sessionId:null,directory:T,draft:k}),so.getState().setActiveAttachmentDraft(D),O||so.getState().clearAttachedFiles(),n?.initialPrompt&&so.getState().setPendingInputText(n.initialPrompt);let M=R(w?.path??null)??T,N=w?R(M):null,ee=k.draftID,te=u();cU(M,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=R(W.getState().activeDirectoryKey);!e.open||e.draftID!==ee||u()!==te||!N||n!==N||W.getState().applyDefaultModelAgentSelection({projectDefaultModel:w?.defaultModel})}),T&&T!==Ke.getState().currentDirectory&&Ke.getState().setDirectory(T)},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}),hU(pU(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=R(t.directoryOverride??e.newSessionDraft.directoryOverride);let i=n?.force===!0;return{newSessionDraft:{...e.newSessionDraft,selectedProjectId:t.projectId??t.selectedProjectId??e.newSessionDraft.selectedProjectId,directoryOverride:t.directoryOverride??e.newSessionDraft.directoryOverride,...i?{bootstrapPendingDirectory:null,preserveDirectoryOverride:!1}:{}}}}),cU(r,{source:`setNewSessionDraftTarget`}),r&&r!==Ke.getState().currentDirectory&&Ke.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=GH)=>{let r=le(),i=De(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=De(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=fr(r);if(i.length===0)return null;let a=hn(i,e=>He(e));return rr(a,e,n)},initializeNewOpenChamberSession:()=>{},setWorktreeMetadata:(t,n)=>{n?xH.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}):xH.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=R(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),cU(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Ke.getState().currentDirectory&&Ke.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:R(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:R(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:R(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?FF.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=gr.getState(),t=gH(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let S=(e,t)=>{if(!x)return;let r=gr.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;cH(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(v.permissionAutoAcceptEnabled===!0&&d!==`shell`&&!n.trimStart().startsWith(`/`)&&!p?.delivery&&te()?.conversations?.createWithPrompt){await IU({content:n,providerID:r,modelID:i,agent:y,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:p?.messageID,onSessionReady:S});return}let e=p?.messageID??v.pendingUserMessage?.info.id??Ce(`msg`),a=KH({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 jU({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;xf(f.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await XH({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 DU(m,f.sessionId,`consume`)}catch(n){throw yU(so.getState().captureDraftRuntime(),m.runtime)&&!(p?.preserveOptimisticOnAmbiguous&&Wy(n)===`ambiguous-dispatched`)&&t().clearRetainedPendingUserMessages(f.sessionId,[e]),await DU(m,f.sessionId,`preserve`),n}vU(f.directory,t().availableWorktreesByProject),S(f.sessionId,f.directory);return}let C=p?.sessionId??t().currentSessionId,w=C?Hl.getState().getSessionAgentSelection(C):null,T=W.getState(),E=T.currentAgentName,D=Ve(T.agents,y||w||E||void 0);if(C&&Hl.getState().saveSessionModelSelection(C,r,i),C&&D&&(Hl.getState().saveSessionAgentSelection(C,D),Hl.getState().saveAgentModelForSession(C,D,r,i),Hl.getState().saveAgentModelVariantForSession(C,D,r,i,l)),C){let e=bH.getState(),t=yH(C);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(vH(C),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),bH.setState({sessionMemoryState:n})}}let O=C?R(p?.directoryHint)??R(t().getDirectoryForSession(C)):null;C&&!p?.ticket&&p?.delivery!==`queue`&&xf(C);let k=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})),A=u(),j=f(),M=()=>A===u()&&j===f();if(g)try{if(await vx(g.sessionId,g.messageId,{directory:O??void 0}),!M())throw Error(`Session history mutation aborted because the runtime changed`);t().stagedMessageEdit===g&&e({stagedMessageEdit:null})}catch(e){throw M()&&t().endMessageEditCommit(g.sessionId,g.messageId),e}try{await XH({sessionId:C||``,directory:O,content:n,providerID:r,modelID:i,agent:D,agentMentionName:s,variant:l,inputMode:d,files:k,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&&M()&&t().endMessageEditCommit(g.sessionId,g.messageId)}vU(O,t().availableWorktreesByProject),C&&S(C,O)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await _b(n,r??B.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),hU(pU(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&QT.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}}),hU(pU(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>Ab(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await Ab(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>Nb(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await Nb(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await Fb(e,t)},requestSessionSmartTitle:async e=>{await Ib(e)},shareSession:async e=>Rb(e),unshareSession:async e=>zb(e),revertToMessage:async(e,t,n)=>{try{await px(e,t,n?.directory)}catch(e){throw await YH(e),e}},editMessagePreservingChanges:async(t,n,r)=>{await hx(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=fr(e),r=nt().find(t=>t.id===e)?.revert?.messageID,i=xt(n,r);if(!i)return;let a=He(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(Gt(e))return;throw e}let{toast:s}=await Tr(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 Tr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-l_X_jQNz.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 Tr(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>ty);return{unrevertSession:e}},void 0);try{await t(e)}catch(e){throw await YH(e),e}let{toast:n}=await Tr(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 Tr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-l_X_jQNz.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=nt().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=fr(e),a=vt(i,r);if(a){try{await t().revertToMessage(e,a.id,{skipRedoPush:!0})}catch(e){if(Gt(e))return;throw e}let{toast:n}=await Tr(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 Tr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-l_X_jQNz.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 bx(e)}catch(e){throw await YH(e),e}let{toast:o}=await Tr(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 Tr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-l_X_jQNz.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=sU(n),s=++dU;try{let a=i?.directory??t().getDirectoryForSession(n)??B.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await Tr(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 xx(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await Tr(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 Tr(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=sU(n),a=++dU;try{let r=t().getDirectoryForSession(n)??B.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await Tr(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 xx(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await Tr(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 Tr(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=R(e);return t?Ze().filter(e=>$H(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=oU(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=Y.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?Rw(i):null},getDirectoryForSession:e=>mo(e)||(e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:oU(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e)),getLastUserChoice:e=>{let n=t().getDirectoryForSession(e)??void 0,r=fr(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=>Hl.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=fr(e);nt().find(t=>t.id===e),`${e}`,t.length,t.map(e=>({id:e.id,role:e.role,tokens:e.role===`assistant`?e.tokens:void 0}))},pollForTokenUpdates:()=>{},setSessionDirectory:(n,r)=>{let i=R(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),hU(pU(),{sessionId:n,directory:i}))}}));Aj((e,t)=>{$.getState().setCurrentSession(e,t)});var HU=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==HU&&(HU=t,zU(t))}});function UU(e){return e.settingsReturnTo?e.settingsReturnTo:e.activeTab===`settings`?null:{tab:e.activeTab,secondary:e.secondary}}function WU(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function GU(e){return e.length>1?e.slice(0,-1):[]}function KU(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function qU(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 JU={activeTab:`projects`,secondary:null,settingsReturnTo:null},YU=0,XU=null,ZU=e=>{let t=++YU;return XU={generation:t,sessionId:e.sessionId,directory:R(e.directory)??null},t},QU=e=>{let t=XU;return t&&t.generation===YU&&t.sessionId===e.sessionId&&t.directory===(R(e.directory)??null)?(XU=null,`internal`):(XU=null,`external`)},$U=()=>{YU+=1,XU=null},eW=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&R(n)===R(e.directory)?$U():ZU(e),t.setCurrentSession(e.sessionId,e.directory??null,{preserveActiveProject:e.preserveActiveProject})},tW=ke((e,t)=>({...JU,setActiveTab:t=>{$U(),e({activeTab:t,secondary:null,settingsReturnTo:null})},openSettingsFromCurrent:()=>{$U(),e(e=>({activeTab:`settings`,secondary:null,settingsReturnTo:UU(e)}))},restoreSettingsReturnTo:()=>{let n=t().settingsReturnTo;return n?($U(),e({activeTab:n.tab,secondary:n.secondary,settingsReturnTo:null}),n):null},openSession:t=>{e({secondary:{kind:`chat`,routes:[rW(t,`root`)]}}),eW(t)},pushSession:t=>{e(e=>{let n=rW(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?WU(e.secondary.routes,n):[n]}}}),eW(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=GU(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=tW.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&eW(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=qU(e.secondary.routes,rW(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:KU(e.secondary.routes,rW(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=>{$U(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{$U(),Vr.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{$U(),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:()=>{$U(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{$U(),e({...JU})}})),nW=1,rW=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${nW++}`,sessionId:e.sessionId,directory:e.directory??null}),iW=0,aW=()=>(iW+=1,()=>{--iW}),oW=e=>iW>0&&tW.getState().pushBtw(e),sW=e=>{let t=tW.getState().secondary;return t?.kind===`chat`&&t.btw?.sessionId===e.sessionId&&R(t.btw.directory)===R(e.directory)},cW=e=>!Ln()||Kn()?!1:(tW.getState().pushSession(e),!0);export{Qz as $,ms as $a,Yd as $i,bD as $n,fx as $r,FP as $t,lH as A,Yc as Aa,Kh as Ai,SA as An,$C as Ar,AF as At,IV as B,wc as Ba,cp as Bi,AO as Bn,GS as Br,iN as Bt,yH as C,Ll as Ca,m_ as Ci,vj as Cn,_T as Cr,X as Ct,gH as D,Al as Da,Sg as Di,WA as Dn,Y as Dr,pI as Dt,_H as E,Ol as Ea,Bg as Ei,GA as En,vT as Er,KI as Et,ZV as F,Uc as Fa,Vp as Fi,KO as Fn,MC as Fr,cF as Ft,MB as G,Cc as Ga,Hf as Gi,FD as Gn,cS as Gr,aP as Gt,YB as H,Oc as Ha,tp as Hi,ND as Hn,$x as Hr,dM as Ht,mV as I,Wc as Ia,Ap as Ii,JO as In,fC as Ir,tF as It,Zz as J,lc as Ja,Ef as Ji,ED as Jn,Nb as Jr,aM as Jt,QB as K,Sc as Ka,Pf as Ki,CD as Kn,Cb as Kr,oP as Kt,gV as L,Rc as La,Tp as Li,UO as Ln,YS as Lr,RN as Lt,JV as M,pl as Ma,wh as Mi,aA as Mn,TC as Mr,jF as Mt,$V as N,ml as Na,Qm as Ni,yk as Nn,DC as Nr,PF as Nt,dH as O,Xc as Oa,Wg as Oi,UA as On,rw as Or,FF as Ot,QV as P,al as Pa,Zm as Pi,qO as Pn,kC as Pr,iP as Pt,lB as Q,ys as Qa,hf as Qi,hD as Qn,_b as Qr,PP as Qt,FV as R,Hc as Ra,pp as Ri,zO as Rn,WS as Rr,rN as Rt,xH as S,Pl as Sa,f_ as Si,Oj as Sn,bT as Sr,tL as St,vH as T,jl as Ta,p_ as Ti,KA as Tn,gT as Tr,GI as Tt,pB as U,Dc as Ua,Rf as Ui,ID as Un,uS as Ur,UP as Ut,iV as V,kc as Va,np as Vi,DO as Vn,SS as Vr,mM as Vt,hB as W,gc as Wa,kf as Wi,jD as Wn,lS as Wr,BP as Wt,uB as X,Us as Xa,_f as Xi,_D as Xn,Mb as Xr,IP as Xt,cB as Y,uc as Ya,Df as Yi,yD as Yn,Gb as Yr,iM as Yt,oB as Z,vs as Za,gf as Zi,pD as Zn,vx as Zr,lM as Zt,RH as _,Wl as _a,_v as _i,uF as _n,mT as _r,sz as _t,aW as a,Pd as aa,lx as ai,lF as an,xo as ao,kE as ar,Kz as at,TH as b,Rl as ba,g_ as bi,fF as bn,Vw as br,MR as bt,CU as c,Fd as ca,Oy as ci,uP as cn,Ai as co,TE as cr,Az as ct,$ as d,ed as da,Xy as di,CP as dn,Ei as do,RE as dr,Iz as dt,Jd as ea,ux as ei,LP as en,_s as eo,vD as er,eB as et,HH as f,Ou as fa,ey as fi,TP as fn,aE as fr,Cz as ft,zH as g,Gl as ga,vv as gi,dF as gn,QT as gr,ZR as gt,LH as h,Zl as ha,Nv as hi,xP as hn,ST as hr,kz as ht,cW as i,jd as ia,cx as ii,bF as in,bo as io,EE as ir,Jz as it,uH as j,fl as ja,Ch as ji,oA as jn,RC as jr,MF as jt,aH as k,Jc as ka,rg as ki,DA as kn,QC as kr,NF as kt,MU as l,dd as la,Pb as li,dP as ln,Mi as lo,LE as lr,jz as lt,WH as m,Ul as ma,Rv as mi,_P as mn,oE as mr,Tz as mt,sW as n,Ad as na,pb as ni,VP as nn,jo as no,gD as nr,Xz as nt,tW as o,Ld as oa,qb as oi,fP as on,yo as oo,AE as or,Gz as ot,UH as p,W as pa,Vv as pi,hP as pn,sE as pr,Dz as pt,sB as q,dc as qa,Nf as qi,wD as qn,sx as qr,yF as qt,oW as r,Md as ra,Ib as ri,yP as rn,Ao as ro,xD as rr,qz as rt,SU as s,Id as sa,jb as si,gF as sn,so,OE as sr,Vz as st,QU as t,Rd as ta,mb as ti,lP as tn,fs as to,mD as tr,tB as tt,XH as u,rd as ua,Fb as ui,mP as un,ji as uo,wE as ur,Lz as ut,EH as v,Yl as va,S_ as vi,EP as vn,hT as vr,WR as vt,bH as w,Ml as wa,o_ as wi,pj as wn,Rw as wr,zI as wt,wH as x,Il as xa,h_ as xi,Dj as xn,Bw as xr,$I as xt,CH as y,Hl as ya,l_ as yi,HP as yn,xT as yr,KR as yt,pV as z,mc as za,op as zi,FO as zn,JS as zr,aN as zt};
|
|
414
|
+
`,cH=async e=>{if(e.length<=5e3)return e;let t=await qV(e);if(t)return t.slice(0,YV);let n=Math.max(0,Math.floor((YV-93)/2)),r=zr.getState().dictionary;return zC.error(Br(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${sH}${e.slice(-n)}`};async function lH(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await cH(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await iH(e,a),c=Date.now();await rH(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:nH(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function uH(e,t){await rH(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function dH(e,t,n){n===`paused`&&(IV(e),cx(e)),await rH(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 fH(e,t){let n=!1;await rH(e,t,e=>(n=e?.status===`active`,null)),aH(e),n&&(IV(e),cx(e))}var pH=`<system-reminder>`,mH=`</system-reminder>`,hH=/[ \t]*<system-reminder>[\s\S]*?<\/system-reminder>[ \t]*/g,gH=/[ \t]*<system-reminder>[\s\S]*$/,_H=e=>{let t=e.trim();return t?t.startsWith(pH)&&t.endsWith(mH)?t:`${pH}\n${t}\n${mH}`:``},vH=e=>e.includes(pH)?e.replace(hH,``).replace(gH,``).trim():e,yH=(e,t=m())=>`${t}\n${e}`,bH=(e,t)=>{let n=xH.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(yH(e))??n.sessionMemoryState.get(e)},xH=ke()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??yH(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}})})),SH=ke((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}})})),CH=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function wH(e,t){if(e){if(!e.degraded&&e.cwd)return CH(e.cwd);if(e.worktreeRoot)return CH(e.worktreeRoot);if(e.cwd)return CH(e.cwd)}return t?CH(t):null}function TH(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function EH(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 DH(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?CH(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=CH(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 OH=`openchamber.session-switch.start`,kH=`openchamber.session-switch.highlight-painted`,AH=`openchamber.session-switch.content-committed`,jH=`data-openchamber-session-switch-highlight-ms`,MH=`data-openchamber-session-switch-content-ms`,NH=`openchamber.session-switch.highlight-latency`,PH=`openchamber.session-switch.content-latency`,FH=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,IH=()=>FH()&&performance.getEntriesByName(OH,`mark`).length>0,LH=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},RH=(e=!1)=>{FH()&&(!e&&performance.getEntriesByName(OH,`mark`).length>0&&performance.getEntriesByName(AH,`mark`).length===0||(performance.clearMarks(OH),performance.clearMarks(kH),performance.clearMarks(AH),performance.clearMeasures(NH),performance.clearMeasures(PH),typeof document<`u`&&(document.documentElement.removeAttribute(jH),document.documentElement.removeAttribute(MH)),performance.mark(OH)))},zH=()=>{if(!IH())return;performance.mark(kH),performance.measure(NH,OH,kH);let e=performance.getEntriesByName(NH,`measure`).at(-1);e&&LH(jH,e.duration)},BH=()=>{if(!IH())return;performance.mark(AH),performance.measure(PH,OH,AH);let e=performance.getEntriesByName(PH,`measure`).at(-1);e&&LH(MH,e.duration)},VH={revision:0,sessionId:null},HH=new Set,UH=e=>{VH={revision:VH.revision+1,sessionId:e};for(let e of HH)e(VH);return VH},WH=()=>VH,GH=e=>(HH.add(e),()=>HH.delete(e)),KH=6e3;function qH(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:Ce(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:Ce(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:Ce(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:Ce(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:Ce(`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 JH(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function YH(e,t){if(!e)return;let n=JH(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 XH(e){if(!Gt(e))return;let{toast:t}=await Tr(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 Tr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-l_X_jQNz.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 ZH(e){let t=e.directory??void 0;await Rb(e.sessionId,t);let n=$H(e.sessionId,e.onSendConfirmed),r=e.content,i=Ve(W.getState().agents,e.agent)??e.agent,a=e.delivery!==`queue`,o=a?yt(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??Ce(`msg`);return B.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??Ke.getState().currentDirectory??null,f=u(),p=gs(d,f),m=Vc(d,f),h=I.getQueryState(p.queryKey),g=I.getQueryState(m.queryKey),_=h?.data!==void 0,v=g?.data!==void 0,[y,b]=await Promise.all([_?Promise.resolve(vs(d,f)):I.fetchQuery({...p,staleTime:1/0}),v?Promise.resolve(Uc(I,d,f)):I.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 Xb({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 B.applySendSelection(e.sessionId,{model:o.model,agent:o.agent},t),await B.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 Xb({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 B.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 QH(e,t){_(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function $H(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{QH(e,r)}}}}var eU=e=>{let t=e;return R(t.directory??null)??R(t.project?.worktree??null)},tU=_r(),nU=`oc.chatInput.lastDraftTarget`,rU=()=>{try{let e=tU.getItem(nU);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:R(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},iU=e=>{try{tU.setItem(nU,JSON.stringify(e))}catch{}},aU=DD,oU=e=>{if(e)return SH.getState().getAttachment(e)},sU=(e,t,n)=>{if(!e)return null;let r=wH(oU(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return R(i);if(n?.includeRuntimeMemory!==!1){let t=pU.get(mU());if(t?.sessionId===e&&t.directory)return R(t.directory)}let a=Ze().find(t=>t.id===e);return a?eU(a):null},cU=e=>{let t=Ze().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},lU=async(e,t)=>{await W.getState().activateDirectory(R(e),t)},uU={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},dU=new Map,fU=0,pU=new Map,mU=e=>(e??m()).trim()||`default`,hU=e=>({...e}),gU=(e,t)=>{let n=pU.get(e);pU.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?hU(n.draft):{...uU},...t})},_U=(e,t)=>{let n=fs.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=DD(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},vU=async(e,t)=>{if(!e)return;let n=_U(e,t);n&&await gD(n)&&await zE(e)},yU=(e,t,n)=>{if(!n||!yd(n)||(n.time?.archived??0)>0)return;let r=fs.getState(),i=DD(r.projects,t,e);i&&r.moveProjectToTop(i.id)},bU=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,xU=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,SU=(e,t)=>xU(e,t)&&bU(so.getState().captureDraftRuntime(),t.runtime);async function CU(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?qH({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return gU(mU(),{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 wU(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return gU(mU(),{draft:n}),{newSessionDraft:n}})}async function TU(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=mU(),t=s.draftID,n=o,gU(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=so.getState().captureDraftRuntime(),o=y(a,t),s=so.getState().getDraft(o);return{token:n,draftID:t,draft:hU(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function EU(e){$.setState(t=>{let n=t.newSessionDraft;if(SU(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=pU.get(e.runtimeMemoryKey);return r&&xU(r.draft,e)&&gU(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=pU.get(e.runtimeMemoryKey);t&&xU(t.draft,e)&&gU(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function DU(e){let t=pU.get(e.runtimeMemoryKey);t&&xU(t.draft,e)&&gU(e.runtimeMemoryKey,{draft:{...uU}})}async function OU(e,t,n){if(!e.source)return null;let r;try{r=await so.getState().finalizeDraftOwnership({source:e.source.key,destination:re(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 kU(e,t){let n=t??e.directory??null;n&&Ut(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function AU(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=R(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!SU(l,r);kU(e,c);let f=W.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&$T.getState().addSessionToFolder(t,a,e.id)}return d||(iU({projectId:o??null,directory:c}),lU(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),Hl.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(Hl.getState().saveSessionAgentSelection(e.id,p),Hl.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),Hl.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),yU(c,$.getState().availableWorktreesByProject,e),u&&Tr(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>hj);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&&DU(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function jU(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await lE(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await vU(t,n);let r=t??B.getDirectory();return{directory:R(r),projectId:n}}async function MU(e,t){let n=await TU(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 jU(r),o=a??B.getDirectory(),s=await B.createSession({title:r.title,parentID:r.parentID??void 0},o);if(!s?.id)throw Error(`Failed to create session`);if(r.permissionAutoAcceptEnabled!==!0){let e=a??s.directory;e&&Ut(s.id,e);let{usePermissionStore:t}=await Tr(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>hj);return{usePermissionStore:e}},void 0);await t.getState().setSessionAutoAccept(s.id,!1)}return t&&(Zb({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}),SU($.getState().newSessionDraft,n)&&YH(s.id,t)),{materialized:await AU(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return EU(n),null}}async function NU(e){let t=await MU(e);return t?(await OU(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var PU=2,FU=300;async function IU(e){let{useI18nStore:t,formatMessage:n}=await Tr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-l_X_jQNz.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 LU(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=W.getState(),p=Ve(f.agents,d??f.currentAgentName),m=e.messageID??u.pendingUserMessage?.info.id??Ce(`msg`),h=qH({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 TU(h);if(!g)throw await IU(`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 jU(_),f=await B.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=at(f.flatMap(e=>e.type===`text`&&!e.synthetic?[e.text]:[]).join(`
|
|
415
|
+
`)),y=te()?.conversations;if(!y?.createWithPrompt)throw await IU(`chat.chatInput.toast.messageSendFailed`);let b=d??B.getDirectory()??``,x=Ny(b,{bootstrap:!1}),S=()=>bU(so.getState().captureDraftRuntime(),g.runtime),C;for(let e=0;e<=PU;e++){e>0&&await new Promise(e=>setTimeout(e,FU));try{if(C=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}),!C||C.ok||C.phase!==`unavailable`||(C=void 0,e===PU))break}catch{if(e===PU)break}}if(!C)throw EU(g),so.getState().setPendingInputText(t,`replace`),await IU(`chat.chatInput.toast.messageSendFailed`);if(C.ok){let e=C.session,t=d??e.directory??null,i=t??b;kU(e,t);let a=i===b?x:Ny(i,{bootstrap:!1});YH(e.id,h);let s=await AU(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 OU(g,e.id,`consume`),QH(e.id,m),s.selected&&Sf(e.id),ox({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:S}).then(t=>{t===`missing`&&console.warn(`[combined] sent user message never materialized`,{sessionId:e.id,messageID:m,directory:i})}).catch(t=>{console.warn(`[combined] sent user message presence check failed`,{sessionId:e.id,messageID:m,directory:i,error:t instanceof Error?t.message:String(t)})}),l?.(e.id,t);return}if(!C.ok){let e=C.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw EU(g),so.getState().setPendingInputText(t,`replace`),await IU(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=C,i=e.session,a=d??i.directory??null,s=await AU(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 $b(i.id,m,a,{isCurrent:S});if(e&&S()){await OU(g,i.id,`consume`),QH(i.id,m),s.selected&&Sf(i.id),ex(Ny(a??b,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??b}),l?.(i.id,a);return}throw await OU(g,i.id,`preserve`),so.getState().setPendingInputText(t,`replace`),await IU(`chat.chatInput.toast.sendStatusUnknown`)}throw await OU(g,i.id,`preserve`),so.getState().setPendingInputText(t,`replace`),await IU(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw EU(g),e}}var RU=`oc.worktreeMap`,zU=()=>{try{let e=_r().getItem(RU);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}},BU=e=>{try{_r().setItem(RU,e)}catch{}},VU=e=>{let t=[];for(let n of e.values())t.push(...n);return t},HU=zU(),$=ke()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...uU},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:VU(HU),availableWorktreesByProject:HU,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)=>{UH(n),v(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(RH(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),so.getState().setActiveAttachmentDraft(n?re({transportIdentity:u()},n):null);let s=mU();dU.set(s,n);let c=Ke.getState(),l=sU(n,e=>t().worktreeMetadata.get(e)),d=B.getDirectory()??c.currentDirectory??null,f=(r?R(r):null)??l??d,p=fs.getState(),m=f?DD(p.projects,t().availableWorktreesByProject,f):null;e({currentSessionId:n,currentSessionDirectory:n?f??null:null}),gU(s,{sessionId:n,directory:f??null}),a!==n&&gr.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?f??null:null}),n&&i?.skipMessageFetch!==!0&&wx(n,f);try{f&&c.currentDirectory!==f&&c.setDirectory(f,{showOverlay:!1}),m&&i?.preserveActiveProject!==!0&&p.activeProjectId!==m.id&&p.setActiveProjectIdOnly(m.id),B.setDirectory(f??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!bH(e)?.isStreaming){let t=fr(e);t.length>0&&xH.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(PD(n),iN(f??``,n))},prepareForRuntimeSwitch:n=>{let r=mU(n),i=Ke.getState().currentDirectory||null,a=t().currentSessionId,o=i?ot(i):null;Rj({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),dU.set(r,t().currentSessionId),gU(r,{sessionId:a,directory:i,draft:hU(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=mU(t),r=pU.get(n),i=r?.sessionId??dU.get(n)??null;v(i);let a=r?.draft?hU(r.draft):{...uU},o=r?.directory??null;o&&Ke.getState().setDirectory(o,{showOverlay:!1}),e({currentSessionId:i,currentSessionDirectory:i?o:null,newSessionDraft:i?{...uU}: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}),so.getState().setActiveAttachmentDraft(i?re({transportIdentity:u()},i):a.open&&a.draftID?y({transportIdentity:u()},a.draftID):null),i?iN(o??B.getDirectory()??``,i):iN(``,``)},openNewSessionDraft:n=>{if(FF.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let i=fs.getState(),a=i.projects,o=t().availableWorktreesByProject,s=R(t().currentSessionDirectory??null),c=R(Ke.getState().currentDirectory??null),l=rU(),d=n?.directoryOverride===void 0?null:R(n.directoryOverride),f=aU(a,o,d),p=n?.ensureProjectForDirectory&&d&&!f?i.addProject(d):null;p&&(i=fs.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),b=l?.projectId?m.find(e=>e.id===l.projectId)??null:null,x=aU(m,o,l?.directory??null),S=aU(m,o,s),C=aU(m,o,c),w=g||(d===null?S||(c?C:x??b??_):p??f),T=d===null?g?R(g.path??null):s||c||(l?.directory?l.directory:R(w?.path??null)):d;iU({projectId:w?.id??null,directory:T}),w&&i.activeProjectId!==w.id&&i.setActiveProjectIdOnly(w.id);let E=se({projectId:w?.id??null,directory:T}),D=y({transportIdentity:u()},E),O=so.getState().getDraft(D),k={open:!0,draftID:E,selectedProjectId:w?.id??null,directoryOverride:T,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:R(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===E?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},A=t().currentSessionId,j=t().currentSessionDirectory;e({newSessionDraft:{...k},currentSessionId:null,currentSessionDirectory:null,error:null}),v(null),gr.getState().setActiveMainTab(`chat`),A&&gr.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:A,previousDirectory:j,nextSessionId:null,nextDirectory:null}),gU(mU(),{sessionId:null,directory:T,draft:k}),so.getState().setActiveAttachmentDraft(D),O||so.getState().clearAttachedFiles(),n?.initialPrompt&&so.getState().setPendingInputText(n.initialPrompt);let M=R(w?.path??null)??T,N=w?R(M):null,ee=k.draftID,te=u();lU(M,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=R(W.getState().activeDirectoryKey);!e.open||e.draftID!==ee||u()!==te||!N||n!==N||W.getState().applyDefaultModelAgentSelection({projectDefaultModel:w?.defaultModel})}),T&&T!==Ke.getState().currentDirectory&&Ke.getState().setDirectory(T)},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}),gU(mU(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=R(t.directoryOverride??e.newSessionDraft.directoryOverride);let i=n?.force===!0;return{newSessionDraft:{...e.newSessionDraft,selectedProjectId:t.projectId??t.selectedProjectId??e.newSessionDraft.selectedProjectId,directoryOverride:t.directoryOverride??e.newSessionDraft.directoryOverride,...i?{bootstrapPendingDirectory:null,preserveDirectoryOverride:!1}:{}}}}),lU(r,{source:`setNewSessionDraftTarget`}),r&&r!==Ke.getState().currentDirectory&&Ke.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=KH)=>{let r=le(),i=De(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=De(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=fr(r);if(i.length===0)return null;let a=hn(i,e=>He(e));return rr(a,e,n)},initializeNewOpenChamberSession:()=>{},setWorktreeMetadata:(t,n)=>{n?SH.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}):SH.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=R(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),lU(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Ke.getState().currentDirectory&&Ke.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:R(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:R(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:R(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?IF.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=gr.getState(),t=_H(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let S=(e,t)=>{if(!x)return;let r=gr.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;lH(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(v.permissionAutoAcceptEnabled===!0&&d!==`shell`&&!n.trimStart().startsWith(`/`)&&!p?.delivery&&te()?.conversations?.createWithPrompt){await LU({content:n,providerID:r,modelID:i,agent:y,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:p?.messageID,onSessionReady:S});return}let e=p?.messageID??v.pendingUserMessage?.info.id??Ce(`msg`),a=qH({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 MU({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;Sf(f.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await ZH({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 OU(m,f.sessionId,`consume`)}catch(n){throw bU(so.getState().captureDraftRuntime(),m.runtime)&&!(p?.preserveOptimisticOnAmbiguous&&Gy(n)===`ambiguous-dispatched`)&&t().clearRetainedPendingUserMessages(f.sessionId,[e]),await OU(m,f.sessionId,`preserve`),n}yU(f.directory,t().availableWorktreesByProject,nt(f.directory??void 0).find(e=>e.id===f.sessionId)??Y.getState().sessionsByDirectory.get(f.directory??``)?.find(e=>e.id===f.sessionId)),S(f.sessionId,f.directory);return}let C=p?.sessionId??t().currentSessionId,w=C?Hl.getState().getSessionAgentSelection(C):null,T=W.getState(),E=T.currentAgentName,D=Ve(T.agents,y||w||E||void 0);if(C&&Hl.getState().saveSessionModelSelection(C,r,i),C&&D&&(Hl.getState().saveSessionAgentSelection(C,D),Hl.getState().saveAgentModelForSession(C,D,r,i),Hl.getState().saveAgentModelVariantForSession(C,D,r,i,l)),C){let e=xH.getState(),t=bH(C);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(yH(C),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),xH.setState({sessionMemoryState:n})}}let O=C?R(p?.directoryHint)??R(t().getDirectoryForSession(C)):null;C&&!p?.ticket&&p?.delivery!==`queue`&&Sf(C);let k=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})),A=u(),j=f(),M=()=>A===u()&&j===f();if(g)try{if(await yx(g.sessionId,g.messageId,{directory:O??void 0}),!M())throw Error(`Session history mutation aborted because the runtime changed`);t().stagedMessageEdit===g&&e({stagedMessageEdit:null})}catch(e){throw M()&&t().endMessageEditCommit(g.sessionId,g.messageId),e}try{await ZH({sessionId:C||``,directory:O,content:n,providerID:r,modelID:i,agent:D,agentMentionName:s,variant:l,inputMode:d,files:k,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&&M()&&t().endMessageEditCommit(g.sessionId,g.messageId)}yU(O,t().availableWorktreesByProject,nt(O??void 0).find(e=>e.id===C)??Y.getState().sessionsByDirectory.get(O??``)?.find(e=>e.id===C)),C&&S(C,O)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await vb(n,r??B.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),gU(mU(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&$T.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}}),gU(mU(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>jb(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await jb(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>Pb(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await Pb(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await Ib(e,t)},requestSessionSmartTitle:async e=>{await Lb(e)},shareSession:async e=>zb(e),unshareSession:async e=>Bb(e),revertToMessage:async(e,t,n)=>{try{await mx(e,t,n?.directory)}catch(e){throw await XH(e),e}},editMessagePreservingChanges:async(t,n,r)=>{await gx(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=fr(e),r=nt().find(t=>t.id===e)?.revert?.messageID,i=xt(n,r);if(!i)return;let a=He(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(Gt(e))return;throw e}let{toast:s}=await Tr(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 Tr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-l_X_jQNz.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 Tr(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>ny);return{unrevertSession:e}},void 0);try{await t(e)}catch(e){throw await XH(e),e}let{toast:n}=await Tr(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 Tr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-l_X_jQNz.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=nt().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=fr(e),a=vt(i,r);if(a){try{await t().revertToMessage(e,a.id,{skipRedoPush:!0})}catch(e){if(Gt(e))return;throw e}let{toast:n}=await Tr(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 Tr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-l_X_jQNz.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 xx(e)}catch(e){throw await XH(e),e}let{toast:o}=await Tr(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 Tr(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-l_X_jQNz.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=cU(n),s=++fU;try{let a=i?.directory??t().getDirectoryForSession(n)??B.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await Tr(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 Sx(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await Tr(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 Tr(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=cU(n),a=++fU;try{let r=t().getDirectoryForSession(n)??B.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await Tr(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 Sx(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await Tr(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 Tr(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=R(e);return t?Ze().filter(e=>eU(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=sU(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=Y.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?zw(i):null},getDirectoryForSession:e=>mo(e)||(e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:sU(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e)),getLastUserChoice:e=>{let n=t().getDirectoryForSession(e)??void 0,r=fr(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=>Hl.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=fr(e);nt().find(t=>t.id===e),`${e}`,t.length,t.map(e=>({id:e.id,role:e.role,tokens:e.role===`assistant`?e.tokens:void 0}))},pollForTokenUpdates:()=>{},setSessionDirectory:(n,r)=>{let i=R(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),gU(mU(),{sessionId:n,directory:i}))}}));jj((e,t)=>{$.getState().setCurrentSession(e,t)});var UU=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==UU&&(UU=t,BU(t))}});function WU(e){return e.settingsReturnTo?e.settingsReturnTo:e.activeTab===`settings`?null:{tab:e.activeTab,secondary:e.secondary}}function GU(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function KU(e){return e.length>1?e.slice(0,-1):[]}function qU(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function JU(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 YU={activeTab:`projects`,secondary:null,settingsReturnTo:null},XU=0,ZU=null,QU=e=>{let t=++XU;return ZU={generation:t,sessionId:e.sessionId,directory:R(e.directory)??null},t},$U=e=>{let t=ZU;return t&&t.generation===XU&&t.sessionId===e.sessionId&&t.directory===(R(e.directory)??null)?(ZU=null,`internal`):(ZU=null,`external`)},eW=()=>{XU+=1,ZU=null},tW=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&R(n)===R(e.directory)?eW():QU(e),t.setCurrentSession(e.sessionId,e.directory??null,{preserveActiveProject:e.preserveActiveProject})},nW=ke((e,t)=>({...YU,setActiveTab:t=>{eW(),e({activeTab:t,secondary:null,settingsReturnTo:null})},openSettingsFromCurrent:()=>{eW(),e(e=>({activeTab:`settings`,secondary:null,settingsReturnTo:WU(e)}))},restoreSettingsReturnTo:()=>{let n=t().settingsReturnTo;return n?(eW(),e({activeTab:n.tab,secondary:n.secondary,settingsReturnTo:null}),n):null},openSession:t=>{e({secondary:{kind:`chat`,routes:[iW(t,`root`)]}}),tW(t)},pushSession:t=>{e(e=>{let n=iW(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?GU(e.secondary.routes,n):[n]}}}),tW(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=KU(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=nW.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&tW(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=JU(e.secondary.routes,iW(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:qU(e.secondary.routes,iW(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=>{eW(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{eW(),Vr.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{eW(),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:()=>{eW(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{eW(),e({...YU})}})),rW=1,iW=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${rW++}`,sessionId:e.sessionId,directory:e.directory??null}),aW=0,oW=()=>(aW+=1,()=>{--aW}),sW=e=>aW>0&&nW.getState().pushBtw(e),cW=e=>{let t=nW.getState().secondary;return t?.kind===`chat`&&t.btw?.sessionId===e.sessionId&&R(t.btw.directory)===R(e.directory)},lW=e=>!Ln()||Kn()?!1:(nW.getState().pushSession(e),!0);export{$z as $,ms as $a,Xd as $i,xD as $n,px as $r,IP as $t,uH as A,Yc as Aa,qh as Ai,CA as An,ew as Ar,jF as At,LV as B,wc as Ba,lp as Bi,jO as Bn,KS as Br,aN as Bt,bH as C,Ll as Ca,h_ as Ci,yj as Cn,vT as Cr,X as Ct,_H as D,Al as Da,Cg as Di,GA as Dn,Y as Dr,mI as Dt,vH as E,Ol as Ea,Vg as Ei,KA as En,yT as Er,qI as Et,QV as F,Uc as Fa,Hp as Fi,qO as Fn,NC as Fr,lF as Ft,NB as G,Cc as Ga,Uf as Gi,ID as Gn,lS as Gr,oP as Gt,XB as H,Oc as Ha,np as Hi,PD as Hn,eS as Hr,fM as Ht,hV as I,Wc as Ia,jp as Ii,YO as In,pC as Ir,nF as It,Qz as J,lc as Ja,Df as Ji,DD as Jn,Pb as Jr,oM as Jt,$B as K,Sc as Ka,Ff as Ki,wD as Kn,wb as Kr,sP as Kt,_V as L,Rc as La,Ep as Li,WO as Ln,XS as Lr,zN as Lt,YV as M,pl as Ma,Th as Mi,oA as Mn,EC as Mr,MF as Mt,eH as N,ml as Na,$m as Ni,bk as Nn,OC as Nr,FF as Nt,fH as O,Xc as Oa,Gg as Oi,WA as On,iw as Or,IF as Ot,$V as P,al as Pa,Qm as Pi,JO as Pn,AC as Pr,aP as Pt,uB as Q,ys as Qa,gf as Qi,gD as Qn,vb as Qr,FP as Qt,IV as R,Hc as Ra,mp as Ri,BO as Rn,GS as Rr,iN as Rt,SH as S,Pl as Sa,p_ as Si,kj as Sn,xT as Sr,nL as St,yH as T,jl as Ta,m_ as Ti,qA as Tn,_T as Tr,KI as Tt,mB as U,Dc as Ua,zf as Ui,LD as Un,dS as Ur,WP as Ut,aV as V,kc as Va,rp as Vi,OO as Vn,CS as Vr,hM as Vt,gB as W,gc as Wa,Af as Wi,MD as Wn,uS as Wr,VP as Wt,dB as X,Us as Xa,vf as Xi,vD as Xn,Nb as Xr,LP as Xt,lB as Y,uc as Ya,Of as Yi,bD as Yn,Kb as Yr,aM as Yt,sB as Z,vs as Za,_f as Zi,mD as Zn,yx as Zr,uM as Zt,zH as _,Wl as _a,vv as _i,dF as _n,hT as _r,cz as _t,oW as a,Fd as aa,ux as ai,uF as an,xo as ao,AE as ar,qz as at,EH as b,Rl as ba,__ as bi,pF as bn,Hw as br,NR as bt,wU as c,Id as ca,ky as ci,dP as cn,Ai as co,EE as cr,jz as ct,$ as d,ed as da,Zy as di,wP as dn,Ei as do,zE as dr,Lz as dt,Yd as ea,dx as ei,RP as en,_s as eo,yD as er,tB as et,UH as f,Ou as fa,ty as fi,EP as fn,oE as fr,wz as ft,BH as g,Gl as ga,yv as gi,fF as gn,$T as gr,QR as gt,RH as h,Zl as ha,Pv as hi,SP as hn,CT as hr,Az as ht,lW as i,Md as ia,lx as ii,xF as in,bo as io,DE as ir,Yz as it,dH as j,fl as ja,wh as ji,sA as jn,zC as jr,NF as jt,oH as k,Jc as ka,ig as ki,OA as kn,$C as kr,PF as kt,NU as l,dd as la,Fb as li,fP as ln,Mi as lo,RE as lr,Mz as lt,GH as m,Ul as ma,zv as mi,vP as mn,sE as mr,Ez as mt,cW as n,jd as na,mb as ni,HP as nn,jo as no,_D as nr,Zz as nt,nW as o,Rd as oa,Jb as oi,pP as on,yo as oo,jE as or,Kz as ot,WH as p,W as pa,Hv as pi,gP as pn,cE as pr,Oz as pt,cB as q,dc as qa,Pf as qi,TD as qn,cx as qr,bF as qt,sW as r,Nd as ra,Lb as ri,bP as rn,Ao as ro,SD as rr,Jz as rt,CU as s,Ld as sa,Mb as si,_F as sn,so,kE as sr,Hz as st,$U as t,zd as ta,hb as ti,uP as tn,fs as to,hD as tr,nB as tt,ZH as u,rd as ua,Ib as ui,hP as un,ji as uo,TE as ur,Rz as ut,DH as v,Yl as va,C_ as vi,DP as vn,gT as vr,GR as vt,xH as w,Ml as wa,s_ as wi,mj as wn,zw as wr,BI as wt,TH as x,Il as xa,g_ as xi,Oj as xn,Vw as xr,eL as xt,wH as y,Hl as ya,u_ as yi,UP as yn,ST as yr,qR as yt,mV as z,mc as za,sp as zi,IO as zn,YS as zr,oN as zt};
|