@yuriai/web 0.1.2 → 0.1.4
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-aO1htuC0.js → AssistantView-D4pGrXQ2.js} +3 -3
- package/dist/assets/{DiagramView-DbtzXUOC.js → DiagramView-ClqTTADy.js} +1 -1
- package/dist/assets/{ImageLoadingPlaceholder-BPp8BN0a.js → ImageLoadingPlaceholder-CGHGcrEo.js} +1 -1
- package/dist/assets/{LoadingImage-DvtPqFRw.js → LoadingImage-BG9q4Tm_.js} +1 -1
- package/dist/assets/{MarkdownRenderer-BlDd-zTg.js → MarkdownRenderer-CnHu4XPA.js} +2 -2
- package/dist/assets/{MarkdownRendererImpl-O4nzQKpI.js → MarkdownRendererImpl-BsnfVIC9.js} +1 -1
- package/dist/assets/{MarkstreamRendererImpl-B8USZU8R.js → MarkstreamRendererImpl-Cmzb7xFE.js} +1 -1
- package/dist/assets/{MobileDetailNavigation-D8f__4GE.js → MobileDetailNavigation-OWYq5ZOS.js} +1 -1
- package/dist/assets/{MobileShareBridge-z70r79hc.js → MobileShareBridge-DukiyCpU.js} +1 -1
- package/dist/assets/MobileTabPageHeader-Cp_gk7cy.js +2 -0
- package/dist/assets/{MultiRunWindow-F9XbZPCH.js → MultiRunWindow-kOpD2Th8.js} +1 -1
- package/dist/assets/{SettingsView-B-AWwURS.js → SettingsView-CNxbrxjd.js} +12 -12
- package/dist/assets/{SettingsWindow-UFwLu7_8.js → SettingsWindow-B_Fgbas9.js} +1 -1
- package/dist/assets/{TerminalView-Cj9xXSXJ.js → TerminalView-Cz3XX-pa.js} +1 -1
- package/dist/assets/{ToolOutputDialog-DIr7gmhc.js → ToolOutputDialog-Ck3maV4e.js} +1 -1
- package/dist/assets/{appThemeRegistry-BttGHPXa.js → appThemeRegistry-8PNdkIWO.js} +1 -1
- package/dist/assets/{capgoAdapter-KNLHDj7G.js → capgoAdapter-CnsewE-n.js} +1 -1
- package/dist/assets/{fileMentionTouchSelection-BFSbKBHy.js → fileMentionTouchSelection-CRG8r4mq.js} +1 -1
- package/dist/assets/{gitApi-CT2gHl-y.js → gitApi-2OimpBnB.js} +1 -1
- package/dist/assets/{image-loading-CVq5GLEY.js → image-loading-23c-W-bq.js} +1 -1
- package/dist/assets/{insertionBoundaries-D3e6uOkH.js → insertionBoundaries-DEY-uxCq.js} +1 -1
- package/dist/assets/{main-BujKFYwj.js → main-D_ttGvxI.js} +22 -22
- package/dist/assets/{main-BXcvTyKT.js → main-y7Aekp2v.js} +2 -2
- package/dist/assets/{mcpQueries-DpgzW70K.js → mcpQueries-Qx_eVfxx.js} +1 -1
- package/dist/assets/{miniChat-5qOrHHEA.js → miniChat-DcATvJc9.js} +2 -2
- package/dist/assets/{mobile-BefkgomZ.js → mobile-CfPAWSXr.js} +2 -2
- package/dist/assets/{mobileBackNavigation-DOPWc25L.js → mobileBackNavigation-B_aT7hZA.js} +1 -1
- package/dist/assets/{multirun-Dzh_Fsid.js → multirun-B2GaFlNf.js} +1 -1
- package/dist/assets/native-config-Cu2rtzKa.js +1 -0
- package/dist/assets/{projectMeta-O4wg5jiy.js → projectMeta-CfvCStpj.js} +1 -1
- package/dist/assets/renderElectronMiniChatApp-D0v1rp6C.js +2 -0
- package/dist/assets/{renderMobileApp-D4M59yMR.js → renderMobileApp-1NEaEWn6.js} +6 -6
- package/dist/assets/runtimeConfig-CE0t2CEh.js +2 -0
- package/dist/assets/{runtimeEndpointReset-DCy2sHAD.js → runtimeEndpointReset-BPBRlu2g.js} +5 -5
- package/dist/assets/{sessionChangeSummary-D3G985mf.js → sessionChangeSummary-C8fjiAIl.js} +1 -1
- package/dist/assets/{sessionLookup-BhaDgtSq.js → sessionLookup-CxeDvyRN.js} +1 -1
- package/dist/assets/{speechSettingsQueries-C3wBvjjw.js → speechSettingsQueries-L-IonKwV.js} +1 -1
- package/dist/assets/src-CmermOKP.css +2 -0
- package/dist/assets/types-0GGhodUf.js +2 -0
- package/dist/assets/{useAppFontEffects-Dp_Rk9nw.js → useAppFontEffects-BzvaFRBa.js} +6 -6
- package/dist/assets/{useDesktopWindowControlsLayout-Jt77zqdp.js → useDesktopWindowControlsLayout-B7YLipUA.js} +1 -1
- package/dist/assets/{useEffectiveDirectory-aQIIxV4x.js → useEffectiveDirectory-BkXDzQaJ.js} +1 -1
- package/dist/assets/{useMobileNavigationStore-CO6CAp4i.js → useMobileNavigationStore-CjhF9j5V.js} +3 -3
- package/dist/assets/{useWorkerHighlightedLines-DDXiS_7t.js → useWorkerHighlightedLines-C-BpvG5l.js} +1 -1
- package/dist/index.html +13 -12
- package/dist/mini-chat.html +7 -6
- package/dist/mobile.html +9 -8
- package/package.json +1 -1
- package/server/lib/notifications/APNS.md +13 -0
- package/server/lib/notifications/DOCUMENTATION.md +4 -0
- package/server/lib/notifications/apns-runtime.js +45 -24
- package/server/lib/notifications/apns-runtime.test.js +57 -1
- package/server/lib/notifications/routes.js +6 -2
- package/server/lib/opencode/DOCUMENTATION.md +2 -0
- package/server/lib/opencode/pwa-manifest-routes.js +2 -2
- package/server/lib/opencode/settings-runtime.js +1 -1
- package/server/lib/opencode/settings-runtime.test.js +15 -0
- package/server/lib/opencode/static-routes-runtime.js +6 -6
- package/dist/assets/MobileTabPageHeader-yWc9DWuc.js +0 -2
- package/dist/assets/renderElectronMiniChatApp-C5KLkJSM.js +0 -2
- package/dist/assets/runtimeConfig-BDh3gBH4.js +0 -2
- package/dist/assets/src-BEVRKYT8.css +0 -2
- package/dist/assets/types-BuiqMmh_.js +0 -1
package/dist/assets/{useMobileNavigationStore-CO6CAp4i.js → useMobileNavigationStore-CjhF9j5V.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-Qx_eVfxx.js","assets/rolldown-runtime-hePW80VL.js","assets/runtime-switch-CAZiOV2G.js","assets/runtime-auth-ef9W7A43.js","assets/queryRuntime-DKGLQtb9.js","assets/vendor-tanstack-query-core-BWz0ose6.js","assets/platform-7bX6qtBV.js","assets/persistence-Dzooc9Xg.js","assets/vendor-zustand-o69pgTEK.js","assets/vendor-base-ui-CdzJ6My_.js","assets/brand-storage-bootstrap-D4BW3w-M.js","assets/brand-storage-migration-Bhz6UOBJ.js","assets/useUIStore-NMQx_cnG.js","assets/vendor-react-BP2cRVqX.js","assets/vendor-pathe-vBmvQE8f.js","assets/vendor-opencode-client-MF2GBrFx.js","assets/runtime-file-resource-C1k5nbWb.js","assets/vendor-tanstack-react-query-CdqCAt40.js","assets/vendor-aparajita-capacitor-secure-storage-xol_6BsB.js","assets/vendor-sonner-ZS8XIOVl.js","assets/store-CZu30-QE.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{n as e,r as t}from"./rolldown-runtime-hePW80VL.js";import{T as n,i as r,p as i,w as a}from"./runtime-auth-ef9W7A43.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-CAZiOV2G.js";import{a as _,d as v,o as y,s as b,u as x}from"./queryRuntime-DKGLQtb9.js";import{$ as S,$t as C,At as w,Ct as T,Dt as E,Et as D,F as O,Ft as k,H as A,I as ee,It as j,J as te,L as M,Lt as ne,M as re,Mt as N,N as ie,Nt as ae,Ot as oe,P as se,Pt as P,St as ce,Ut as le,Z as ue,_t as de,a as F,c as fe,en as pe,et as I,ft as L,gt as me,h as he,i as ge,it as _e,j as ve,k as ye,kt as be,l as xe,n as Se,nt as Ce,o as we,p as Te,rn as Ee,rt as De,st as R,tt as Oe,vt as ke,w as Ae,wt as je,xt as z,yt as Me}from"./persistence-Dzooc9Xg.js";import{a as Ne,i as Pe,o as Fe,r as Ie}from"./vendor-zustand-o69pgTEK.js";import{it as Le,rt as Re}from"./vendor-base-ui-CdzJ6My_.js";import{$n as ze,$r as Be,$t as Ve,Ai as He,An as Ue,Ar as We,Bi as Ge,Bn as Ke,Br as qe,Bt as Je,Ci as Ye,Cr as B,Ct as Xe,Ei as Ze,Er as Qe,Fi as $e,Fn as et,Fr as tt,Ft as nt,Gn as rt,Gr as it,Gt as at,Hi as ot,Hn as st,Hr as ct,Ht as lt,Ii as ut,In as dt,It as ft,Jn as pt,Jr as mt,Jt as ht,Kn as gt,Kr as _t,Kt as vt,Li as yt,Ln as bt,Lt as xt,Mi as St,Mn as Ct,Mr as wt,Ni as Tt,Nn as Et,Nr as V,Nt as H,Or as Dt,Ot,Pi as kt,Pn as At,Pr as jt,Pt as Mt,Qn as Nt,Qr as Pt,Qt as Ft,R as It,Ri as Lt,Rn as Rt,Rr as zt,Rt as Bt,Si as Vt,St as Ht,Tr as Ut,Un as Wt,Ur as Gt,Ut as Kt,Vi as qt,Vn as Jt,Vr as Yt,Vt as Xt,Wn as Zt,Wr as Qt,Wt as $t,Xn as en,Xr as tn,Yn as nn,Yr as rn,Zn as an,Zr as on,Zt as sn,_i as cn,_r as ln,ai as un,an as dn,ar as fn,bi as pn,bn as mn,br as hn,ci as gn,cr as _n,di as vn,dn as yn,ei as bn,er as xn,fi as Sn,fr as Cn,gi as wn,gn as Tn,gr as En,hi as Dn,hn as On,hr as kn,ii as An,in as jn,ir as Mn,ji as Nn,ki as Pn,kr as Fn,li as In,ln as Ln,lr as Rn,mi as zn,mn as Bn,mr as Vn,n as Hn,ni as Un,nr as Wn,oi as Gn,or as Kn,pi as qn,pr as Jn,qn as Yn,qr as Xn,r as Zn,ri as Qn,rn as $n,si as er,sn as tr,sr as nr,t as rr,ti as ir,tr as ar,ui as or,un as sr,ur as cr,vi as lr,vr as ur,wi as dr,wn as fr,wr as pr,xr as mr,yi as hr,yn as gr,yr as _r,zn as vr,zr as yr,zt as br}from"./platform-7bX6qtBV.js";import{t as xr}from"./brand-storage-migration-Bhz6UOBJ.js";import"./brand-storage-bootstrap-D4BW3w-M.js";import{b as Sr,n as Cr,x as wr}from"./useUIStore-NMQx_cnG.js";import{n as Tr}from"./vendor-react-BP2cRVqX.js";import{i as Er,n as Dr,r as Or,t as kr}from"./vendor-pathe-vBmvQE8f.js";import{c as Ar,r as jr}from"./vendor-tanstack-query-core-BWz0ose6.js";import{a as Mr,l as Nr,n as Pr,o as Fr,s as Ir,t as Lr}from"./vendor-tanstack-react-query-CdqCAt40.js";import{a as Rr,n as zr,o as Br}from"./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js";import{r as Vr}from"./vendor-sonner-ZS8XIOVl.js";import{a as Hr,n as Ur}from"./vendor-reactuses-core-BpfIZ1tg.js";import{d as Wr,f as Gr,t as Kr}from"./button-C3292Ee6.js";import{i as qr,t as Jr}from"./store-CZu30-QE.js";import{i as Yr}from"./useAssistantUIStore-D7JZlg_Q.js";import{a as Xr,i as Zr,n as Qr,o as $r,r as ei,s as ti,t as ni}from"./vendor-zod-Dzk5kdUU.js";import{t as ri}from"./vendor-fuse.js-DB5wDJbI.js";var ii=1048576,ai=new TextEncoder,oi=e=>e instanceof Error&&e.name===`AbortError`,si=e=>oi(e)?e:new DOMException(`The operation was aborted.`,`AbortError`),ci=async e=>{try{await e?.cancel()}catch{}},li=async e=>{try{await e.cancel()}catch{}},ui=async(e,t={})=>{let n=t.fetch??x,r;try{r=await n(e,{method:`GET`,headers:{Accept:`text/event-stream`},signal:t.signal})}catch(e){throw t.signal?.aborted||oi(e)?si(e):Error(`SSE request failed`)}if(!r.ok)throw await ci(r.body),Error(`SSE response failed`);if(!/^text\/event-stream(?:\s*;|\s*$)/i.test(r.headers.get(`content-type`)??``))throw await ci(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 li(i),i.releaseLock(),t.signal?.aborted||oi(e)?si(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>ii)throw Error(`SSE response exceeds buffer limit`);u=i,l.push(a)}},h=e=>{if(e.length===0)return;o+=e,s+=ai.encode(e).byteLength;let t=o===`data`?4:o.startsWith(`data:`)?5+ +(o.charAt(5)===` `):0;if(u+s-t>ii)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||oi(e)?si(e):e instanceof Error&&e.message===`SSE response exceeds buffer limit`?e:Error(`SSE response read failed`)}finally{d||await li(i),i.releaseLock()}},di=null,fi=null,pi=null,mi=0,hi=null,gi=null,_i=new Set,vi=new Map,yi=e=>e===`session-index-changed`||e===`message-queue-changed`||e===`assistants-changed`,bi=()=>{vi.clear()},xi=e=>vi.get(e),Si=(e,t)=>{let n=vi.get(e);(n===void 0||t>n)&&vi.set(e,t)},Ci=3e4,wi=45e3,Ti=()=>{pi&&=(clearTimeout(pi),null)},Ei=()=>{if(fi||_i.size===0)return;let e=Math.min(1e3*2**Math.min(mi,5),Ci);fi=setTimeout(()=>{fi=null,mi+=1,Mi()},e)},Di=()=>{Ti();let e=di;di=null,e?.controller.abort()},Oi=e=>{if(Ti(),_i.size===0||di!==e)return;let t=setTimeout(()=>{di===e&&pi===t&&(pi=null,Di(),Ei())},wi);pi=t},ki=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}},Ai=e=>{if(e.type===`yuri: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===`yuri:heartbeat`)return null;let t=e.properties&&typeof e.properties==`object`&&!Array.isArray(e.properties)?e.properties:null;if(e.type===`yuri: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===`yuri: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===`yuri: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,...t?.cause===`change`?{cause:`change`}:{},...r?{sync:{active:r.active===!0,enriching:r.enriching===!0}}:{}}}if(e.type===`yuri: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===`yuri:speech-settings-changed`){let e=t?.occurredAt;return typeof e!=`number`||!Number.isFinite(e)?null:{type:`speech-settings-changed`,occurredAt:e}}if(e.type===`yuri:session-order-changed`){let e=t?.occurredAt;return typeof e==`number`?{type:`session-order-changed`,occurredAt:e}:null}if(e.type===`yuri:project-order-changed`){let e=t?.occurredAt;return typeof e!=`number`||!Number.isFinite(e)?null:{type:`project-order-changed`,occurredAt:e}}if(e.type===`yuri: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===`yuri: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===`yuri: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===`yuri: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!==`yuri: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}:{}}},ji=e=>{let t=Ai(e);if(t){t.type===`event-stream-ready`&&(mi=0),yi(t.type)&&`revision`in t&&Si(t.type,t.revision);for(let e of _i)try{e(t)}catch{}}},Mi=()=>{if(typeof window>`u`||_i.size===0||di)return;let e={controller:new AbortController};di=e,ui(`/api/yuri/events`,{signal:e.controller.signal,onOpen:()=>{di===e&&Oi(e)},onActivity:()=>{di===e&&Oi(e)},onMessage:t=>{if(di!==e)return;let n=ki(t);n&&ji(n)}}).then(()=>{di===e&&(di=null,Ti(),Ei())},()=>{di===e&&(di=null,Ti(),e.controller.signal.aborted||Ei())})},Ni=()=>{hi||typeof window>`u`||(hi=s(()=>{bi(),fi&&=(clearTimeout(fi),null),Di(),mi=0,Mi()}))},Pi=()=>{hi?.(),hi=null},Fi=()=>{if(gi||typeof window>`u`)return;let e=window,t=typeof document>`u`?void 0:document,n=t?.visibilityState===`hidden`,r=!1,i=!1,a=()=>{r||i||(i=!0,queueMicrotask(()=>{i=!1,!(r||_i.size===0)&&(fi&&=(clearTimeout(fi),null),Di(),Mi())}))},o=()=>{t?.visibilityState===`hidden`?n=!0:t?.visibilityState===`visible`&&n&&(n=!1,a())},s=e=>{e.persisted&&a()},c=()=>{(!di||fi)&&a()};t?.addEventListener(`visibilitychange`,o),e.addEventListener(`pageshow`,s),e.addEventListener(`yuri:system-resume`,a),e.addEventListener(`online`,c),gi=()=>{r=!0,t?.removeEventListener(`visibilitychange`,o),e.removeEventListener(`pageshow`,s),e.removeEventListener(`yuri:system-resume`,a),e.removeEventListener(`online`,c),gi=null}},Ii=e=>(_i.add(e),Ni(),Fi(),Mi(),()=>{_i.delete(e),_i.size===0&&(bi(),fi&&=(clearTimeout(fi),null),mi=0,Di(),Pi(),gi?.())}),Li=!1,Ri=Promise.resolve(),zi=null,Bi=()=>{Li||(Li=!0,Ri=new Promise(e=>{zi=e}))},Vi=async()=>Ri,Hi=()=>{if(!Li)return;Li=!1;let e=zi;zi=null,e?.()},Ui=`yuri_input_draft_metadata_v1`,Wi=`yuri_input_draft_metadata_migration_v1`,Gi=`yuri_chat_input_draft_`,Ki=`yuri_chat_confirmed_mentions_`,qi=()=>({ok:!1,error:{code:`unavailable`}}),Ji=()=>({ok:!1,error:{code:`cancelled`}}),Yi=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),Xi=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),Zi=(e,t)=>Object.keys(e).every(e=>t.includes(e)),Qi=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,$i=e=>typeof e==`string`&&e.length>0,ea=e=>({read:async t=>{if(!e)return qi();try{return{ok:!0,value:e.getItem(t)}}catch(e){return Yi(e)}},write:async(t,n)=>{if(!e)return qi();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return Yi(e)}},remove:async t=>{if(!e)return qi();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return Yi(e)}},keys:async()=>{if(!e)return qi();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 Yi(e)}}}),ta=()=>{try{return ea(typeof window>`u`?null:window.localStorage)}catch{return ea(null)}},na=(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}},ra=async e=>{let t=await e.keys();if(!t.ok)return t;let n=new Set;for(let e of t.value)e.startsWith(Gi)&&n.add(e.slice(22)),e.startsWith(Ki)&&n.add(e.slice(29));let r=[];for(let i of n){let n=`${Gi}${i}`,a=`${Ki}${i}`,[o,s]=await Promise.all([e.read(n),e.read(a)]);if(!o.ok)return o;if(!s.ok)return s;r.push(na(i,o.value,s.value,[n,a].filter(e=>t.value.includes(e))))}return{ok:!0,value:r}},ia=e=>{if(!(!Xi(e)||!Zi(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]}},aa=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&$i(t[0])&&(t[1]===`session`||t[1]===`draft`)&&$i(t[2])&&e===JSON.stringify(t)}catch{return!1}},oa=e=>{if(!Xi(e)||!Zi(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)&&!$i(e.claimedTransportIdentity))&&!(r&&!n)&&!(t&&(!n||!r)))return{complete:t,claimedTransportIdentity:e.claimedTransportIdentity,captured:n,markerCommitted:r,cleanupComplete:t}},sa=e=>{if(!Xi(e)||!Zi(e,[`version`,`drafts`,`tombstones`,`migration`,`legacy`])||e.version!==1||!Xi(e.drafts)||!Xi(e.tombstones)||!Xi(e.legacy)||!Zi(e.legacy,[`new`,`entries`])||!Xi(e.legacy.entries))return;let t=oa(e.migration);if(!t)return;let n={};for(let[t,r]of Object.entries(e.drafts)){let e=be(r);if(!e||t!==z(e.key))return;n[t]=e}let r={};for(let[t,n]of Object.entries(e.tombstones)){if(!aa(t)||!Qi(n))return;r[t]=n}let i={};for(let[t,n]of Object.entries(e.legacy.entries)){let e=ia(n);if(!e||t!==e.suffix||t===`new`)return;i[t]=e}let a=e.legacy.new===void 0?void 0:ia(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}}},ca=(e=``)=>({version:1,drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:e,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),la=e=>{try{return{ok:!0,value:JSON.stringify(e)}}catch{return{ok:!1,error:{code:`serialization`}}}},ua=async e=>{let t=await e.read(Ui);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:null};try{let e=sa(JSON.parse(t.value));return e?{ok:!0,value:e}:{ok:!1,error:{code:`corrupt`}}}catch{return{ok:!1,error:{code:`corrupt`}}}},da=async(e,t)=>{let n=sa(t);if(!n)return{ok:!1,error:{code:`corrupt`}};let r=la(n);return r.ok?e.write(Ui,r.value):r},fa=e=>Xi(e)&&Zi(e,[`version`,`claimedTransportIdentity`])&&e.version===1&&$i(e.claimedTransportIdentity)?{version:1,claimedTransportIdentity:e.claimedTransportIdentity}:void 0,pa=e=>la({version:1,claimedTransportIdentity:e}),ma=(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}}},ha=e=>[...new Set([e.legacy.new,...Object.values(e.legacy.entries)].flatMap(e=>e?.keys??[]))],ga=new WeakMap,_a=e=>{let t=ga.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=sa(t);return n?i?a(async()=>i?da(e,n):qi()):Promise.resolve(qi()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},migrate:(t,n={})=>{if(r)return r;let o=a(async()=>{let r=await ua(e);if(!r.ok)return r;let a=r.value??ca(),o=i&&(n.persistenceEnabled??!0);if(!a.migration.captured){let n=await ra(e);if(!n.ok)return n;if(!o)return{ok:!0,value:ma(a,n.value,``)};if(a=ma(a,n.value,t),!i)return{ok:!0,value:a};let r=await da(e,a);if(!r.ok)return r}if(!i||!(n.persistenceEnabled??!0)){let t=await ra(e);return t.ok?{ok:!0,value:a}:t}let s=await e.read(Wi);if(!s.ok)return s;if(s.value!==null)try{let t=fa(JSON.parse(s.value));if(!t)return{ok:!1,error:{code:`corrupt`}};if(t.claimedTransportIdentity!==a.migration.claimedTransportIdentity){let t=pa(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Wi,t.value);if(!n.ok)return n}}catch{return{ok:!1,error:{code:`corrupt`}}}else{let t=pa(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Wi,t.value);if(!n.ok)return n}if(a.migration.cleanupComplete)return{ok:!0,value:a};for(let t of ha(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 da(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 ga.set(e,o),o},va=e=>{let t=_a(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=sa(e);return t?n?new Promise(e=>{i.push({snapshot:t,resolve:e}),s()}):Promise.resolve(qi()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},cancelPending:()=>{let e=i;i=[],e.forEach(({resolve:e})=>e(Ji())),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(Ji()))}await(r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve()),await t.setEnabled(e),await t.flush()}}},ya=`yuri-input-drafts`,ba=1,xa=`blobs`,Sa=`blobRefs`,Ca=class extends Error{code;constructor(e){super(e),this.code=e}},wa=e=>({ok:!1,error:{code:e instanceof Ca?e.code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota-exceeded`:e instanceof DOMException&&e.name===`AbortError`?`transaction-aborted`:`transaction-failed`}}),Ta=e=>{if(!(e instanceof Blob)&&!je(e))throw new Ca(`invalid-value`)},Ea=e=>{if(!e)throw new Ca(`invalid-value`)},Da=(e,t)=>({id:Me(e),blobID:t,transportIdentity:e.transportIdentity,ownerKind:e.owner.kind,ownerID:e.owner.ownerID}),Oa=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}`},ka=async(e,t)=>(e.fingerprint??await Oa(e.value))===t,Aa=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)}},ja=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}},Ma=(e,t)=>{let n=ja(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))},Na=(e=Pa())=>{let t=async(t,n)=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=await e.getBlobRef(Me(t));return!r||n!==void 0&&r.blobID!==n?!1:(await e.deleteBlobRef(r.id),await Aa(e),(await e.getAllBlobRefs()).some(e=>e.blobID===r.blobID)||await e.deleteBlob(r.blobID),!0)})}}catch(e){return wa(e)}};return{put:async(t,n)=>{try{Ea(t),Ta(n);let r=await Oa(n);return await e.transaction(async e=>{let i=await e.getBlob(t);if(i&&!await ka(i,r))throw new Ca(`blob-id-conflict`);i||await e.putBlob({id:t,value:n,refCount:0,fingerprint:r})}),{ok:!0,value:void 0}}catch(e){return wa(e)}},putAndRetain:async(t,n,r)=>{try{Ea(n),Ta(r);let i=await Oa(r);return await e.transaction(async e=>{let a=Me(t),o=await e.getBlobRef(a);if(o&&o.blobID!==n)throw new Ca(`blob-id-conflict`);let s=await e.getBlob(n);if(s&&!await ka(s,i))throw new Ca(`blob-id-conflict`);s||await e.putBlob({id:n,value:r,refCount:0,fingerprint:i}),o||await e.putBlobRef(Da(t,n)),await Aa(e)}),{ok:!0,value:void 0}}catch(e){return wa(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 wa(e)}},readReference:async t=>{try{return{ok:!0,value:(await e.transaction(e=>e.getBlobRef(Me(t))))?.blobID}}catch(e){return wa(e)}},retain:async(t,n)=>{try{return Ea(n),await e.transaction(async e=>{let r=await e.getBlobRef(Me(t));if(r&&r.blobID!==n)throw new Ca(`blob-id-conflict`);if(!await e.getBlob(n))throw new Ca(`missing-blob`);r||await e.putBlobRef(Da(t,n)),await Aa(e)}),{ok:!0,value:void 0}}catch(e){return wa(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)Ma(a,n)&&t.get(i)!==a.blobID&&(await e.deleteBlobRef(i),r.push(i));for(let[r,s]of t){let t=ja(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 Aa(e,!0),{released:r,repaired:i,missing:a}})}}catch(e){return wa(e)}},reconcileOwnerReferences:async(t,n)=>{let r=new Map;for(let[e,i]of n)r.set(Me({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 Aa(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 wa(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 wa(e)}}}},Pa=()=>({transaction:async e=>{let t=await Fa(),n=t.transaction([xa,Sa],`readwrite`),r=n.objectStore(xa),i=n.objectStore(Sa),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()}}}),Fa=()=>xr(ya).then(()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(new Ca(`database-unavailable`));return}let n=indexedDB.open(ya,ba),r=!1,i=()=>{r||(r=!0,t(new Ca(`database-unavailable`)))};n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(xa)||e.createObjectStore(xa,{keyPath:`id`}),e.objectStoreNames.contains(Sa)||e.createObjectStore(Sa,{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})),Ia=()=>({drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:``,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),La=e=>({version:1,drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}),Ra=e=>{let t=La(e),n=za(JSON.parse(JSON.stringify(t)));return{drafts:n.drafts,tombstones:n.tombstones,migration:n.migration,legacy:n.legacy}},za=e=>{let t=sa(e);if(!t)throw Error(`invalid draft snapshot`);return t},Ba=e=>e instanceof Map?[...e.entries()]:Object.entries(e??{}),Va=e=>typeof e==`string`?e:z(e),Ha=[`session`,`draft`,`surface`],Ua=e=>({transportIdentity:e.transportIdentity,owner:{kind:e.owner.kind,ownerID:e.owner.ownerID},attachmentOccurrenceRefID:e.attachmentOccurrenceRefID}),Wa=e=>JSON.parse(JSON.stringify(e)),Ga=e=>e.phase===`metadata`?{phase:`metadata`,error:{code:e.error.code}}:{phase:`blob`,error:{...e.error},...e.reference?{reference:Ua(e.reference)}:{}},Ka=e=>({status:e.status,keys:[...e.keys],errors:e.errors.map(Ga),cleanupErrors:e.cleanupErrors.map(Ga)}),qa=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,Ja=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&Ha.includes(t[1])&&typeof t[2]==`string`&&t[0].length>0&&t[2].length>0}catch{return!1}},Ya=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:Wa(t)}]:[]),Xa=e=>{let t=new Map;for(let n of Object.values(e))for(let e of Ya(n))t.set(Me(e.reference),e);return t},Za=(e,t)=>({phase:`blob`,error:{...e},...t?{reference:Ua(t)}:{}}),Qa=(e,t=[])=>({status:e,keys:t,errors:[],cleanupErrors:[]}),$a=e=>e?.attachment.locator.kind===`blob`?e.attachment.locator.blobID:``,eo=(e,t,n={})=>{let r=Ia(),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?Ka(e):e)},u=async(t=r.drafts)=>{let n=[],i=new Map([...Xa(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(Ua(r.reference),r.expectedBlobID);a.ok?c.delete(t):n.push(Za(a.error,r.reference))}return n},d=async(t,n,r,i)=>{let o=Ua(t),s=await e.releaseIfMatches(o,n);s.ok||(c.set(Me(o),{reference:Ua(o),expectedBlobID:n,generation:a,reason:i}),r.push(Za(s.error,o)))},f=async(t,n)=>{let r=t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,i=Ua(t.reference),a=Wa(t.attachment),o=await e.readReference(i);if(!o.ok)return{acquired:!1,error:Za(o.error,i)};if(o.value&&o.value!==r)return{acquired:!1,error:Za({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:Za(t.error,i)};let o=await n?.(Ua(i),Wa(a));if(o===void 0)return{acquired:!1,error:Za({code:`runtime-value-missing`},i)};let s=await e.putAndRetain(i,r,o);return s.ok?{acquired:!0}:{acquired:!1,error:Za(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:Za(t.error,i)}}if(s.error.code!==`missing-blob`)return{acquired:!1,error:Za(s.error,i)};let c=await n?.(Ua(i),Wa(a));if(c===void 0)return{acquired:!1,error:Za({code:`runtime-value-missing`},i)};let l=await e.putAndRetain(i,r,c);return l.ok?{acquired:!0}:{acquired:!1,error:Za(l.error,i)}};return{seed:t=>l(async()=>{if(!i)return Qa(`disabled`);if(o)return{...Qa(`failed`),errors:[Za({code:`invalid-record`})]};let n;try{if(!t)n=Ia();else{let e=za(JSON.parse(JSON.stringify(t)));n={drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}}}catch{return{...Qa(`failed`),errors:[Za({code:`invalid-record`})]}}let a=Xa(n.drafts),s=await e.reconcileReferences(new Map([...a].map(([e,t])=>[e,$a(t)])),{ownerKinds:Ha});return s.ok?(r=n,o=!0,{...Qa(`committed`),errors:s.value.missing.map(e=>Za({code:`missing-blob`},a.get(e)?.reference))}):{...Qa(`failed`),errors:[Za(s.error)]}}),commit:e=>{let n=[...Ba(e.drafts).map(([e])=>e),...(e.delete??[]).map(Va)];return i?l(async()=>{if(!o)return Qa(`unseeded`,n);if(!i)return Qa(`disabled`,n);let s=a,c=[],l=Ra(r),p=Ba(e.drafts),m=Ba(e.tombstones),h=(e.delete??[]).map(Va);if(p.some(([e,t])=>!Ja(e)||!qa(t.revision))||m.some(([e,t])=>!Ja(e)||!qa(t))||h.some(e=>!Ja(e))||new Set(p.map(([e])=>e)).size!==p.length||m.some(([e])=>p.some(([t])=>t===e)))return{...Qa(`failed`,n),errors:[Za({code:`invalid-record`})]};try{for(let[e,t]of p){let n=be(t);if(!n||e!==z(n.key))throw Error(`invalid draft record`);l.drafts[e]=n,delete l.tombstones[e]}for(let e of h)delete l.drafts[e];for(let[e,t]of m)l.tombstones[e]=t;e.migration&&(l.migration=e.migration),e.legacy&&(l.legacy=e.legacy);let t=za(La(l));l.drafts=t.drafts,l.tombstones=t.tombstones,l.migration=t.migration,l.legacy=t.legacy}catch{return{...Qa(`failed`,n),errors:[Za({code:`invalid-record`})],cleanupErrors:c}}if(!await e.isCurrent())return Qa(`stale`,n);let g=Xa(r.drafts),_=Xa(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,$a(_.get(Me(e))),c,`acquire-failed`);return{...Qa(`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,$a(_.get(Me(e))),c,`stale`);return{...Qa(`stale`,n),cleanupErrors:c}}if(!i||s!==a){for(let e of v.reverse())await d(e,$a(_.get(Me(e))),c,`disabled`);return{...Qa(`disabled`,n),cleanupErrors:c}}let y=await t.persist(La(l));if(!y.ok){for(let e of v.reverse())await d(e,$a(_.get(Me(e))),c,`metadata-failed`);return{...Qa(`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{...Qa(`committed`,n),cleanupErrors:c}}):Promise.resolve(Ka(Qa(`disabled`,n)))},reconcile:()=>l(async()=>{if(!o)return Qa(`unseeded`);if(!i)return Qa(`disabled`);let t=await u(),n=new Map([...Xa(r.drafts)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``])),a=await e.reconcileReferences(n,{ownerKinds:Ha}),s=a.ok?a.value.missing.map(e=>Za({code:`missing-blob`},Xa(r.drafts).get(e)?.reference)):[Za(a.error)];return{status:a.ok?`committed`:`failed`,keys:[],errors:s,cleanupErrors:t}}),retryCleanup:()=>l(async()=>({...Qa(`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}}},to=`yuri-composer-reference-draft`,no=`yuri-pasted-text-draft`,ro=e=>Array.from(e).length,io=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),ao=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,oo=(e,t)=>{let n=[],r=[],i=0;for(let a=0;a<Math.min(t.length,me.referenceCount);a+=1){let o=t[a];if(!(!io(o)||!ao(o.id,me.idLength)||!ao(o.token,me.displayLength)||typeof o.text!=`string`||o.text.length>me.pastePayloadLength||typeof o.characterCount!=`number`||!Number.isSafeInteger(o.characterCount)||o.characterCount!==ro(o.text)||typeof o.index!=`number`||!Number.isSafeInteger(o.index)||o.index<1))for(let t=e.indexOf(o.token);t>=0&&n.length<me.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>me.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)},so=e=>{try{let t=JSON.parse(e);if(!io(t)||typeof t.text!=`string`)return{text:e,references:[]};if(t.type===to||t.type===`openchamber-composer-reference-draft`)return(t.version===2?E(t.text,t.references):void 0)??{text:t.text,references:[]};if(t.type===no||t.type===`openchamber-pasted-text-draft`){let e=t.version===1&&Array.isArray(t.references)?oo(t.text,t.references):[];return E(t.text,e)??{text:t.text,references:[]}}}catch{}return{text:e,references:[]}},co=`file://`,lo=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(`/`)},uo=e=>{let t=e.replace(/\\/g,`/`).trim();return t.toLowerCase().startsWith(co)?t:`${co}${lo(t)}`},fo=(e,t)=>`${e}\u0000${t}`,po=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)}),mo=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)},ho=(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,go=e=>({version:1,key:e,revision:1,text:``,attachments:[],syntheticParts:[],mentions:[]}),_o=(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}),vo=((e={})=>{let t=e.sink??ta(),n=e.repository??_a(t),r=e.coordinator??va(t),i=e.blobStore??Na(),a=e.durability??eo(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,w=new Set;return Ne()((t,r)=>{let E=e=>o.set(e,(o.get(e)??0)+1),D=(...e)=>{for(let t of e)c.set(t,(c.get(t)??0)+1),l.delete(t)},O=e=>be(e),k=()=>e.runtimeCapture?.()??{transportIdentity:u(),generation:f()},A=e=>{let t=k();return t.transportIdentity===e.transportIdentity&&t.generation===e.generation},ee=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)],j=e=>new Set(ee(e).map(e=>e.attachmentRefID)),te=(e,t,n)=>{let r=j(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))}}},M=()=>e.createID?.()??Oe(),ne=async(e,t)=>{let n=t instanceof File?t:new File([t],e.filename,{type:e.mimeType});return{id:e.attachmentID,file:n,dataUrl:typeof t==`string`?t:await po(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}:{}}},re=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`},N=(e,n)=>{let i=r(),s=_,c=n??k(),l=[...new Set(e)];if(l.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),!i.persistenceEnabled)return l.forEach(e=>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&&A(c)&&l.every(e=>(o.get(e)??0)===u.get(e)&&(r().drafts[e]?.revision??r().tombstones[e]??0)===d.get(e))}),i=_===s&&r().persistenceEnabled&&A(c);return(!i||n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)&&l.forEach(e=>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:re(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:re(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},ie=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}}))},ae=()=>{h&&clearTimeout(h),h=void 0;let e=[...m];m.clear();let t=g;return g=void 0,e.length?N(e,t).then(()=>void 0):Promise.resolve()},oe=e=>{if(!r().persistenceEnabled){S.add(e);return}m.add(e),ie([e]),!h&&(g=k(),h=setTimeout(()=>{ae()},40))},se=e=>{let t=[...e];return t.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),N(t)},P=(e,n,i,a=`immediate`)=>{let o=z(e),s=r().drafts[o];if(!s||i!==void 0&&s.revision!==i)return;let c=O(n(s));if(!(!c||z(c.key)!==o))return E(o),t(e=>({drafts:{...e.drafts,[o]:c},...te(e,o,c)})),a===`deferred`?oe(o):se([o]),c},le=e=>e?de(e):void 0,ue=(e=[])=>JSON.parse(JSON.stringify(e)),F=(e,t,n,r=!1,i=!1)=>({status:e,...le(n)?{record:le(n)}:{},errors:ue(t?.errors),cleanupErrors:ue(t?.cleanupErrors),current:r,durable:i}),fe=(e,t,n,r,i=!1,a=!1)=>({status:e,errors:ue(t?.errors),cleanupErrors:ue(t?.cleanupErrors),current:i,durable:a,source:le(n),destination:le(r)}),pe=e=>e.status,I=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,L=(e,...t)=>{let n={...e};for(let e of t)delete n[e];return n},me=async(e,t)=>{let n={},i=r().draftAttachmentViews[z(e.key)]??{};for(let r of ee(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`&&je(i[r.attachmentRefID].dataUrl)?i[r.attachmentRefID].dataUrl:void 0);if(r.locator.kind===`url`&&e!==void 0&&(e!==r.locator.url||!je(e))||r.locator.kind===`blob`&&e!==void 0&&!(e instanceof Blob)&&!(typeof e==`string`&&je(e)))return;e!==void 0&&(n[r.attachmentRefID]=await ne(r,e))}return n},he=e=>e?z(e):`legacy-unowned`,ge=e=>C.get(e)??0,_e=e=>{C.set(e,ge(e)+1)},ve=(e,n,r=!1)=>{r&&_e(e),t(t=>{let r=n(t.attachmentBuckets[e]??[]);return{attachmentBuckets:{...t.attachmentBuckets,[e]:r},...he(t.activeAttachmentDraft)===e?{attachedFiles:r}:{}}})};return{drafts:{},tombstones:{},draftHydration:{},draftPersistence:{},draftAttachmentViews:{},draftMissingAttachmentRefIDs:{},draftAttachmentPersistence:{},persistenceEnabled:e.persistenceEnabled??!0,legacyDraftEntries:{},migration:{complete:!1,claimedTransportIdentity:``},captureDraftRuntime:()=>k(),commitDraftSnapshot:async e=>{let n=z(e.key),i=e.runtime;if(i.transportIdentity!==e.key.transportIdentity||!A(i))return F(`stale`,void 0);let s=r(),c=s.drafts[n],l=s.tombstones[n]??0;if(e.expectedRevision!==`absent`&&!I(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return F(`failed`,void 0);if(e.expectedRevision===`absent`?c:c?.revision!==e.expectedRevision)return F(`conflict`,void 0,c);let u=e.expectedRevision===`absent`?l+1:e.expectedRevision+1;if(!I(u))return F(`failed`,void 0);let d=O({version:1,key:e.key,revision:u,...e.snapshot});if(!d)return F(`failed`,void 0);let f=await me(d,e.values);if(!f)return F(`failed`,void 0);let p=o.get(n)??0,m=c?.revision??l,h=await a.commit({drafts:{[n]:d},isCurrent:()=>A(i)&&(o.get(n)??0)===p&&(r().drafts[n]?.revision??r().tombstones[n]??0)===m,resolveBlobValue:t=>e.values?.get(t.attachmentOccurrenceRefID)});if(h.status!==`committed`)return F(pe(h),h,c);let g=(o.get(n)??0)===p&&(r().drafts[n]?.revision??r().tombstones[n]??0)===m,_=A(i);if(!g)return _||t(e=>({draftAttachmentViews:L(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:L(e.draftMissingAttachmentRefIDs,n),draftHydration:L(e.draftHydration,n),draftPersistence:L(e.draftPersistence,n),draftAttachmentPersistence:L(e.draftAttachmentPersistence,n)})),F(`stale`,h,d,!1,!0);let v=de(d);return v?(E(n),D(n),t(e=>({drafts:{...e.drafts,[n]:v},tombstones:(()=>{let t={...e.tombstones};return delete t[n],t})(),draftAttachmentViews:_?{...e.draftAttachmentViews,[n]:f}:L(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:_?{...e.draftMissingAttachmentRefIDs,[n]:[]}:L(e.draftMissingAttachmentRefIDs,n),draftHydration:_?e.draftHydration:L(e.draftHydration,n),draftPersistence:_?{...e.draftPersistence,[n]:{status:`saved`,revision:v.revision}}:L(e.draftPersistence,n),draftAttachmentPersistence:_?{...e.draftAttachmentPersistence,[n]:h.cleanupErrors.length?{status:`error`,revision:v.revision,errorCode:re(h)}:{status:`saved`,revision:v.revision}}:L(e.draftAttachmentPersistence,n)})),F(_?`committed`:`stale`,h,v,_,!0)):F(`failed`,h)},deleteDraftSnapshot:async e=>{let n=z(e.key),i=e.runtime;if(i.transportIdentity!==e.key.transportIdentity||!A(i))return F(`stale`,void 0);let s=r(),c=s.drafts[n],l=s.tombstones[n]??0;if(!I(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return F(`failed`,void 0);if(!c||c.revision!==e.expectedRevision)return F(`conflict`,void 0);let u=e.expectedRevision+1;if(!I(u))return F(`failed`,void 0);let d=o.get(n)??0,f=c.revision,p=Math.max(l,u),m=await a.commit({tombstones:{[n]:p},delete:[n],isCurrent:()=>A(i)&&(o.get(n)??0)===d&&r().drafts[n]?.revision===f&&(r().tombstones[n]??0)===l});if(m.status!==`committed`)return F(pe(m),m);let h=(o.get(n)??0)===d&&r().drafts[n]?.revision===f&&(r().tombstones[n]??0)===l,g=A(i);return h?(E(n),D(n),t(e=>{let t={...e.drafts};return delete t[n],{drafts:t,tombstones:{...e.tombstones,[n]:Math.max(e.tombstones[n]??0,p)},draftAttachmentViews:L(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:L(e.draftMissingAttachmentRefIDs,n),draftHydration:L(e.draftHydration,n),draftPersistence:L(e.draftPersistence,n),draftAttachmentPersistence:L(e.draftAttachmentPersistence,n)}}),F(g?`committed`:`stale`,m,void 0,g,!0)):(g||t(e=>({draftAttachmentViews:L(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:L(e.draftMissingAttachmentRefIDs,n),draftHydration:L(e.draftHydration,n),draftPersistence:L(e.draftPersistence,n),draftAttachmentPersistence:L(e.draftAttachmentPersistence,n)})),F(`stale`,m,void 0,!1,!0))},finalizeDraftOwnership:async e=>{let n=z(e.source),i=z(e.destination),s=e.runtime,c=r(),l=c.drafts[n],u=c.drafts[i];if(n===i||e.destination.owner.kind!==`session`||e.source.transportIdentity!==s.transportIdentity||e.destination.transportIdentity!==s.transportIdentity||!A(s))return fe(`stale`,void 0,l,u);if(!I(e.expectedSourceRevision))return fe(`failed`,void 0,l,u);if(!l||l.revision!==e.expectedSourceRevision||u)return fe(`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 fe(`failed`,void 0,l,u);let h=Math.max(l.revision+1,m+1);if(!I(h))return fe(`failed`,void 0,l,u);let g=O(e.disposition===`preserve`?{...l,key:e.destination,revision:h}:{...go(e.destination),revision:h});if(!g)return fe(`failed`,void 0,l,u);let _=await a.commit({drafts:{[i]:g},tombstones:{[n]:Math.max(p,h)},delete:[n],isCurrent:()=>A(s)&&(o.get(n)??0)===d&&(o.get(i)??0)===f&&r().drafts[n]?.revision===l.revision&&!r().drafts[i]&&(r().tombstones[n]??0)===p&&(r().tombstones[i]??0)===m,resolveBlobValue:e=>c.draftAttachmentViews[n]?.[e.attachmentOccurrenceRefID]?.file});if(_.status!==`committed`)return fe(pe(_),_,l,u);let v=(o.get(n)??0)===d&&r().drafts[n]?.revision===l.revision&&(r().tombstones[n]??0)===p,y=(o.get(i)??0)===f&&!r().drafts[i]&&(r().tombstones[i]??0)===m,b=A(s),x=de(g);if(!x)return fe(`failed`,_,l,u);if(b&&!v&&!y)return fe(`stale`,_,l,g,!1,!0);v&&(E(n),D(n)),y&&(E(i),D(i)),t(t=>{let r=t.drafts,a=t.tombstones;(v||y)&&(r={...r}),(v||y)&&(a={...a}),v&&(delete r[n],a[n]=Math.max(a[n]??0,h)),y&&(r[i]=x,delete a[i]);let o=t.draftHydration,s=t.draftPersistence,c=t.draftAttachmentViews,l=t.draftMissingAttachmentRefIDs,u=t.draftAttachmentPersistence;return b?(v&&(o=L(o,n),s=L(s,n),c=L(c,n),l=L(l,n),u=L(u,n)),y&&(o=L(o,i),s={...L(s,i),[i]:{status:`saved`,revision:x.revision}},c=L(c,i),l=L(l,i),u={...L(u,i),[i]:_.cleanupErrors.length?{status:`error`,revision:x.revision,errorCode:re(_)}:{status:`saved`,revision:x.revision}},b&&v&&e.disposition===`preserve`&&(c={...c,[i]:t.draftAttachmentViews[n]??{}},l={...l,[i]:t.draftMissingAttachmentRefIDs[n]??[]}))):(o=L(o,n,i),s=L(s,n,i),c=L(c,n,i),l=L(l,n,i),u=L(u,n,i)),{drafts:r,tombstones:a,draftHydration:o,draftPersistence:s,draftAttachmentViews:c,draftMissingAttachmentRefIDs:l,draftAttachmentPersistence:u}});let S=v&&y&&b;return fe(S?`committed`:`stale`,_,l,g,S,!0)},flushDraftPersistence:async()=>{for(await ae();p.size;)await Promise.all([...p]);await a.flush()},ensureDraft:e=>{let n=z(e),i=r().drafts[n];if(i)return i;let a=O({...go(e),revision:(r().tombstones[n]??0)+1});if(!a)throw Error(`Invalid empty draft`);return E(n),t(e=>({drafts:{...e.drafts,[n]:a}})),se([n]),a},getDraft:e=>r().drafts[z(e)],setDraftText:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return P(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 P(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)=>P(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)=>P(e,e=>({...e,revision:e.revision+1,mentions:t})),addDraftMention:(e,t)=>P(e,e=>({...e,revision:e.revision+1,mentions:[...e.mentions,t]})),removeDraftMention:(e,t)=>P(e,e=>({...e,revision:e.revision+1,mentions:e.mentions.filter(e=>e.value!==t)})),setDraftSyntheticParts:(e,t)=>P(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 P(e,e=>({...e,revision:e.revision+1,syntheticParts:a}),n.revision)?i:null},setDraftAttachments:(e,t)=>P(e,e=>({...e,revision:e.revision+1,attachments:t})),addDraftLocalAttachment:async(e,n,i={})=>{let a=r().getDraft(e);if(i.partID&&!a?.syntheticParts.some(e=>e.partID===i.partID))return;let s=z(e),c=o.get(s)??0,l=r().tombstones[s]??0,u=k(),d=n instanceof File?n:new File([n],i.filename??`attachment`,{type:n.type}),f;try{f=await po(d)}catch{let e=r().drafts[s];if(A(u)&&(r().tombstones[s]??0)===l&&(e?z(e.key)===s:(o.get(s)??0)===c)&&(!i.partID||e?.syntheticParts.some(e=>e.partID===i.partID))){let n=e?.revision??r().tombstones[s]??0;t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[s]:{status:`error`,revision:n,errorCode:`transaction-failed`}}}))}return}if(!A(u)||(r().tombstones[s]??0)!==l)return;let p=r().drafts[s];if(!p&&(o.get(s)??0)!==c)return;let m=p??r().ensureDraft(e);if(z(m.key)!==s||i.partID&&!m.syntheticParts.some(e=>e.partID===i.partID))return;let h=i.attachmentID??M(),g=i.partID?T(i.partID,h):ce(h),_=M(),v={attachmentID:h,attachmentRefID:g,filename:i.filename??(n instanceof File?n.name:`attachment`),mimeType:n.type,size:n.size,locator:{kind:`blob`,blobID:_},source:i.source??`local`,...i.vscodePath?{vscodePath:i.vscodePath}:{},...i.vscodeSource?{vscodeSource:i.vscodeSource}:{}},y=i.partID?{...m,revision:m.revision+1,syntheticParts:m.syntheticParts.map(e=>e.partID===i.partID?{...e,attachments:[...e.attachments,v]}:e)}:{...m,revision:m.revision+1,attachments:[...m.attachments,v]},b=O(y);if(!b)return;E(s);let 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 N([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??M(),o=n.partID?T(n.partID,a):ce(a),s={attachmentID:a,attachmentRefID:o,filename:n.filename,mimeType:n.mimeType,size:n.size,source:n.source,locator:{kind:`url`,url:n.url},...n.serverPath?{serverPath:n.serverPath}:{},...n.vscodePath?{vscodePath:n.vscodePath}:{},...n.vscodeSource?{vscodeSource:n.vscodeSource}:{}},c=n.partID?{...i,revision:i.revision+1,syntheticParts:i.syntheticParts.map(e=>e.partID===n.partID?{...e,attachments:[...e.attachments,s]}:e)}:{...i,revision:i.revision+1,attachments:[...i.attachments,s]},l=O(c);if(!l)return;let u=z(e);E(u);let d={id:a,file:new File([],s.filename,{type:s.mimeType}),dataUrl:n.url,mimeType:s.mimeType,filename:s.filename,size:s.size,source:s.source,...s.serverPath?{serverPath:s.serverPath}:{},...s.vscodePath?{vscodePath:s.vscodePath}:{},...s.vscodeSource?{vscodeSource:s.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[u]:l},draftAttachmentViews:{...e.draftAttachmentViews,[u]:{...e.draftAttachmentViews[u],[o]:d}}})),N([u]),s},getDraftAttachmentViews:e=>{let t=z(e),n=r().drafts[t],i=r().draftAttachmentViews[t]??{};return n?ee(n).flatMap(e=>i[e.attachmentRefID]?[i[e.attachmentRefID]]:[]):[]},retryDraftAttachmentPersistence:async e=>{let n=z(e);if(!r().persistenceEnabled||!r().drafts[n]&&!r().tombstones[n])return;let i=await a.retryCleanup();i.cleanupErrors.length&&t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[n]:{status:`error`,revision:e.drafts[n]?.revision??e.tombstones[n],errorCode:re(i)}}})),await N([n])},hydrateDraftAttachments:async e=>{let n=z(e),a=l.get(n);if(a)return a;let o=r().drafts[n];if(!o)return;let s=(c.get(n)??0)+1;c.set(n,s);let u=k(),d=_,f=(async()=>{t(e=>({draftHydration:{...e.draftHydration,[n]:`loading`}}));let e=()=>{if(c.get(n)!==s)return;let e=r(),i=e.draftAttachmentViews[n],a=e.draftMissingAttachmentRefIDs[n]??[];t(e=>({draftHydration:{...e.draftHydration,[n]:a.length?`degraded`:Object.keys(i??{}).length?`ready`:`idle`}}))},a={},l=[];for(let f of ee(o)){let p=f.locator.kind===`url`?{ok:!0,value:f.locator.url}:await i.read(f.locator.blobID);if(!p.ok){if(p.error.code===`missing-blob`)l.push(f.attachmentRefID);else{c.get(n)===s&&_===d&&A(u)&&r().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}continue}try{a[f.attachmentRefID]=await ne(f,p.value)}catch{c.get(n)===s&&_===d&&A(u)&&r().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}}let f=r(),p=f.drafts[n],m=c.get(n);if(m===s&&_===d&&A(u)&&p===o)t(e=>({draftAttachmentViews:{...e.draftAttachmentViews,[n]:a},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[n]:l},draftHydration:{...e.draftHydration,[n]:l.length?`degraded`:`ready`}}));else if(m===s){let e=f.draftAttachmentViews[n],r=f.draftMissingAttachmentRefIDs[n]??[];t(t=>({draftHydration:{...t.draftHydration,[n]:r.length?`degraded`:Object.keys(e??{}).length?`ready`:`idle`}}))}})();l.set(n,f);try{await f}finally{l.get(n)===f&&l.delete(n)}},removeDraftAttachment:async(e,n)=>{let i=z(e),a=r().drafts[i],o=a&&ee(a).find(e=>e.attachmentRefID===n);if(!a||!o)return!1;let s=Ct(o)?Et(a.text,[o.filename],a.mentions,a.composerReferences):void 0,c=O({...a,revision:a.revision+1,...s?.changed?{text:s.text,mentions:s.mentions,...s.composerReferences===void 0?{}:{composerReferences:s.composerReferences}}:{},attachments:a.attachments.filter(e=>e.attachmentRefID!==n),syntheticParts:a.syntheticParts.map(e=>({...e,attachments:e.attachments.filter(e=>e.attachmentRefID!==n)}))});return c?(E(i),t(e=>{let t={...e.draftAttachmentViews[i]};return delete t[n],{drafts:{...e.drafts,[i]:c},draftAttachmentViews:{...e.draftAttachmentViews,[i]:t},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[i]:(e.draftMissingAttachmentRefIDs[i]??[]).filter(e=>e!==n)}}}),(await N([i])).status===`committed`):!1},replaceDraftAttachment:async(e,n,i,a)=>{let o=z(e),s=r().drafts[o],c=s&&ee(s).find(e=>e.attachmentRefID===n);if(!s||!c)return;let l=k(),u=r().tombstones[o]??0,d=i instanceof File?i:new File([i],a?.filename??`attachment`,{type:i.type}),f;try{f=await po(d)}catch{let e=r().drafts[o],i=e&&ee(e).find(e=>e.attachmentRefID===n);A(l)&&(r().tombstones[o]??0)===u&&e&&i?.attachmentID===c.attachmentID&&i.attachmentRefID===c.attachmentRefID&&z(e.key)===o&&t(t=>({draftAttachmentPersistence:{...t.draftAttachmentPersistence,[o]:{status:`error`,revision:e.revision,errorCode:`transaction-failed`}}}));return}let p=r().drafts[o],m=p&&ee(p).find(e=>e.attachmentRefID===n);if(!A(l)||(r().tombstones[o]??0)!==u||!p||m?.attachmentID!==c.attachmentID||m.attachmentRefID!==c.attachmentRefID||z(p.key)!==o)return;let h=p.syntheticParts.find(e=>e.attachments.some(e=>e.attachmentRefID===n)),g=M(),_={attachmentID:g,attachmentRefID:h?T(h.partID,g):ce(g),filename:a?.filename??d.name,mimeType:d.type,size:d.size,locator:{kind:`blob`,blobID:M()},source:a?.source??`local`,...a?.vscodePath?{vscodePath:a.vscodePath}:{},...a?.vscodeSource?{vscodeSource:a.vscodeSource}:{}},v=O({...p,revision:p.revision+1,attachments:h?p.attachments:p.attachments.map(e=>e.attachmentRefID===n?_:e),syntheticParts:p.syntheticParts.map(e=>e.partID===h?.partID?{...e,attachments:e.attachments.map(e=>e.attachmentRefID===n?_:e)}:e)});if(!v)return;E(o);let y={id:g,file:d,dataUrl:f,mimeType:_.mimeType,filename:_.filename,size:_.size,source:_.source,..._.vscodePath?{vscodePath:_.vscodePath}:{},..._.vscodeSource?{vscodeSource:_.vscodeSource}:{}};return t(e=>{let t={...e.draftAttachmentViews[o]};return delete t[n],{drafts:{...e.drafts,[o]:v},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...t,[_.attachmentRefID]:y}},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[o]:(e.draftMissingAttachmentRefIDs[o]??[]).filter(e=>e!==n)}}}),(await N([o])).status===`committed`?_:void 0},replaceDraftRootAttachments:async(e,t)=>{let n=z(e),i=k();if(i.transportIdentity!==e.transportIdentity||!A(i))return F(`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=ce(t);if(e.source===`server`&&e.dataUrl&&je(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&&je(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=M();s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),c.set(n,r)}}let l=a?.syntheticParts??[];for(let e of l)for(let t of e.attachments)t.locator.kind===`url`&&!c.has(t.attachmentRefID)&&c.set(t.attachmentRefID,t.locator.url);let u={text:a?.text??``,attachments:s,syntheticParts:l,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return r().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:u,values:c,runtime:i})},restoreDraftRootAttachments:async(e,t)=>{let n=z(e),i=k();if(i.transportIdentity!==e.transportIdentity||!A(i))return F(`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=ce(t);if(e.source===`server`&&e.dataUrl&&je(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&&je(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=M();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`&&je(t.dataUrl)&&l.set(e.attachmentRefID,t.dataUrl)}let d=a?.syntheticParts??[];for(let e of d)for(let t of e.attachments)t.locator.kind===`url`&&!l.has(t.attachmentRefID)&&l.set(t.attachmentRefID,t.locator.url);let f={text:a?.text??``,attachments:c,syntheticParts:d,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return r().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:f,values:l,runtime:i})},deleteDraft:(e,n)=>{let i=z(e),a=r().drafts[i];if(!a||n!==void 0&&a.revision!==n)return!1;let o=a.revision+1;return I(o)?(E(i),D(i),t(e=>{let t={...e.drafts};delete t[i];let n={...e.draftHydration},r={...e.draftPersistence},a={...e.draftAttachmentViews},s={...e.draftMissingAttachmentRefIDs},c={...e.draftAttachmentPersistence};return delete n[i],delete r[i],delete a[i],delete s[i],delete c[i],{drafts:t,tombstones:{...e.tombstones,[i]:Math.max(e.tombstones[i]??0,o)},draftHydration:n,draftPersistence:r,draftAttachmentViews:a,draftMissingAttachmentRefIDs:s,draftAttachmentPersistence:c}}),N([i]),!0):!1},moveDraft:(e,n,i)=>{let a=z(e),o=z(n),s=r().drafts[a];if(!s||a===o||i!==void 0&&s.revision!==i||r().drafts[o]||(r().tombstones[o]??0)>=s.revision+1||[...s.attachments,...s.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.locator.kind===`blob`))return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),N([a,o]),c},moveDraftWithAttachments:async(e,n,i)=>{let a=z(e),o=z(n),s=r().drafts[a];if(!s||a===o||i!==void 0&&s.revision!==i||r().drafts[o]||(r().tombstones[o]??0)>=s.revision+1)return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),(await N([a,o])).status===`committed`?c:void 0},setDraftPersistenceEnabled:async e=>{if(_+=1,!e){h&&clearTimeout(h),h=void 0,m.clear(),g=void 0,t({persistenceEnabled:!1,draftPersistence:{}}),await a.setEnabled(!1),await a.flush();return}t({persistenceEnabled:!0}),await a.setEnabled(!0);let n=k();b||await r().hydrateDraftMetadata(n.transportIdentity);let i=new Set([...Object.keys(r().drafts),...Object.keys(r().tombstones),...S]);S.clear(),await N(i),await a.flush()},hydrateDraftMetadata:e=>{let i=d.get(e);if(i)return i;let c=(async()=>{let i=(s.get(e)??0)+1;s.set(e,i);let c=k();if(c.transportIdentity!==e)return!1;let l=_,u=new Map(o),d=v,f=Object.entries(r().drafts).filter(([,t])=>t.key.transportIdentity===e).map(([e])=>e);t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`loading`]))}}));let p=r().persistenceEnabled,m;try{m=await n.migrate(e,{persistenceEnabled:p})}catch{return!1}if(s.get(e)!==i||_!==l||!A(c))return!1;if(!m.ok)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(t=>[t,e.drafts[t]?`degraded`:`error`]))}})),!1;let h=m.value;if(!b){x??=a.seed(h).finally(()=>{x=void 0});let n;try{n=await x}catch{return!1}if(s.get(e)!==i||_!==l||!A(c))return!1;if(n.status!==`committed`&&n.status!==`disabled`)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`degraded`]))}})),!1;n.status===`committed`&&(b=!0)}let g=r(),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=O(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=z(r),a=so(n.text),s=O({...go(r),text:a.text,composerReferences:a.references,mentions:_o(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 N(T),await a.flush()}catch{return!1}return s.get(e)===i&&_===l&&A(c)})();return d.set(e,c),c.finally(()=>{d.get(e)===c&&d.delete(e)}).catch(()=>void 0),c},claimLegacyNewDraft:async e=>{let n=r().legacyNewDraft;if(!n)return r().getDraft(e);let i=z(e),a=r().drafts[i];if(v+=1,y=!0,a||r().tombstones[i])return t({legacyNewDraft:void 0}),N([i]),a;let o=so(n.text),s=O({...go(e),text:o.text,composerReferences:o.references,mentions:_o(o.text,n.mentions)});if(s)return E(i),t(e=>({drafts:{...e.drafts,[i]:s},legacyNewDraft:void 0})),N([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=he(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=he(t),i=ge(n),a=await r().addDraftLocalAttachment(t,e);i!==ge(n)&&a&&r().removeDraftAttachment(t,a.attachmentRefID);return}let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,i=he(null),a=ge(i),o;try{o=await po(e)}catch{return}if(a!==ge(i))return;let s={id:n,file:e,dataUrl:o,mimeType:e.type,filename:e.name,size:e.size,source:`local`};ve(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}ve(he(null),t=>t.filter(t=>t.id!==e))},setAttachedFiles:e=>{ve(he(r().activeAttachmentDraft),()=>e,!0)},clearAttachedFiles:()=>{let e=r().activeAttachmentDraft;if(e){_e(he(e)),r().getDraft(e)||r().ensureDraft(e),r().setDraftAttachments(e,[]);return}ve(he(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=uo(t);r().addDraftDurableAttachment(e,{filename:n,mimeType:`text/plain`,size:i||0,source:`vscode`,vscodePath:t,vscodeSource:`file`,url:a})},addDraftVSCodeSelectionAttachment:async(e,t,n)=>{let i=z(e),a=ge(i),o=`${i}\u0000${fo(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)||w.has(o))){w.add(o);try{let o=await r().addDraftLocalAttachment(e,n,{source:`vscode`,vscodePath:t,vscodeSource:`selection`});a!==ge(i)&&o&&r().removeDraftAttachment(e,o.attachmentRefID)}finally{w.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=he(null);if((r().attachmentBuckets[o]??[]).some(t=>t.source===`vscode`&&t.vscodeSource===`file`&&(t.vscodePath||``)===e))return;let s=uo(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`};ve(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=he(null),o=ge(a),s=`${a}\u0000${fo(e,t.name)}`;if((r().attachmentBuckets[a]??[]).some(n=>n.source===`vscode`&&n.vscodeSource===`selection`&&n.filename===t.name&&n.vscodePath===e)||w.has(s))return;w.add(s);let c;try{c=await po(t)}catch{return}finally{w.delete(s)}if(o!==ge(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`};ve(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=>{ho(r().activeEditorFile,e)||t({activeEditorFile:e})},addRestoredAttachment:({url:e,mimeType:t,filename:n})=>{let i=r().activeAttachmentDraft;if(i){if(e.startsWith(`data:`)){let a=z(i);(async()=>{try{let o=await(await fetch(e)).blob(),s=new File([o],n,{type:t||o.type||`application/octet-stream`}),c=r().activeAttachmentDraft;if(!c||z(c)!==a)return;await r().addDraftLocalAttachment(i,s)}catch{}})();return}if(!je(e))return;r().addDraftDurableAttachment(i,{filename:n,mimeType:t,size:mo(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:mo(e),source:`local`,serverPath:e};ve(he(null),e=>[...e,a])}}})})(),yo=[`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 bo(e,t,n){if(!Co().size)return n;let r=n;n.session&&n.session!==t.session&&n.session.some(t=>!Do(t.id,e))&&(r={...r,session:n.session.filter(t=>Do(t.id,e))});for(let i of yo){let a=n[i];if(!a||a===t[i])continue;let o=Object.keys(a).filter(t=>!Do(t,e));if(!o.length)continue;let s={...a};for(let e of o)delete s[e];r={...r,[i]:s}}return r}var xo=``,So=new Map;function Co(){let e=`${u()}:${f()}`;return xo!==e&&(xo=e,So.clear()),So}function wo(e){return Co().get(e)?.directory}function To(e,t,n){let r=Co().get(e);return r&&t&&typeof n==`number`&&n>r.clock&&S(t)!==r.directory&&Eo(e,t,n),wo(e)}function Eo(e,t,n,r){let i=Co(),a=i.get(e);return t=S(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 Do(e,t){let n=wo(e);return!n||n===S(t)}var Oo={asrContext:`The speaker is discussing software development and technical tasks with an AI assistant. Speech may mix Mandarin Chinese and English within the same sentence. The conversation may cover requirements, system design, implementation, debugging, testing, deployment, and maintenance. Common software engineering terms include alpha, beta, release, stable, version, build, branch, commit, merge, pull request, code review, bug, fix, hotfix, patch, refactor, rollback, deploy, CI/CD, API, SDK, and CLI. Technical terms, product names, acronyms, and code identifiers may be spoken in English within otherwise Chinese sentences.`,showMessageTTSButtons:!1,voiceProvider:`browser`,speechRate:1,speechPitch:1,speechVolume:1,ttsInputMode:`final`,sayVoice:`Samantha`,localTtsVoiceId:0,browserVoice:``,openaiVoice:`nova`,openaiApiKey:``,openaiApiKeyConfigured:!1,openaiCompatibleUrl:``,openaiCompatibleApiKey:``,openaiCompatibleApiKeyConfigured:!1,openaiCompatibleVoice:`af_sky`,openaiCompatibleTtsModel:`kokoro`,dictationEnabled:!1,sttProvider:`local`,sttServerUrl:`http://localhost:8001/v1`,sttApiKey:``,sttApiKeyConfigured:!1,sttModel:`deepdml/faster-whisper-large-v3-turbo-ct2`,sttLocalModel:`parakeet-tdt-0.6b-v2-int8`,sttLanguage:``,summarizeMessageTTS:!1,summarizeVoiceConversation:!1,summarizeCharacterThreshold:200,summarizeMaxLength:500,configured:!1,apiKey:``,voice:`zh_female_vv_uranus_bigtts`,resourceId:`seed-tts-2.0`,asrResourceId:`volc.seedasr.sauc.duration`},ko=new Set([`apiKey`,`openaiApiKey`,`openaiCompatibleApiKey`,`sttApiKey`]);function Ao(e){if(!e||typeof e!=`object`)throw Error(`Invalid speech settings`);let t=e,n={...Oo};for(let e of Object.keys(Oo))if(!ko.has(e)){if(e===`asrContext`&&t[e]===void 0){n.asrContext=``;continue}if(typeof t[e]!=typeof Oo[e])throw Error(`Invalid speech settings`);Object.assign(n,{[e]:t[e]})}if(![`browser`,`local`,`openai`,`openai-compatible`,`say`,`volcengine`].includes(n.voiceProvider)||![`local`,`openai-compatible`,`volcengine`].includes(n.sttProvider)||![`final`,`sanitized`,`raw`,`summarized`].includes(n.ttsInputMode))throw Error(`Invalid speech settings`);return n}var jo=new Set;function Mo(e){return jo.add(e),()=>{jo.delete(e)}}function No(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 jo)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 Po(e,t){return e.scopes.includes(`all`)||e.scopes.includes(t)}var Fo=`Updating OpenCode configuration...`,Io=0,Lo=Fo,Ro=new Set;function zo(){let e={isUpdating:Io>0,message:Lo};Ro.forEach(t=>t(e))}function Bo(e){Io+=1,Io===1?(Lo=e||Fo,zo()):e&&(Lo=e,zo())}function Vo(){Io!==0&&(--Io,Io===0&&(Lo=Fo,zo()))}function Ho(e){Lo===e&&Io>0||(Lo=e,Io>0&&zo())}function Uo(e){return Ro.add(e),e({isUpdating:Io>0,message:Lo}),()=>{Ro.delete(e)}}function Wo(){return{isUpdating:Io>0,message:Lo}}var Go=wr(),Ko=`projects`,qo=`activeProjectId`,Jo=`projects:manualOrder`,Yo=(e,t)=>{let n=e.trim();return!n.startsWith(`~`)||!t?n:n===`~`?t:n.startsWith(`~/`)||n.startsWith(`~\\`)?`${t}${n.slice(1)}`:n},Xo=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,Zo=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},Qo=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t&&Xo.test(t)?t.toLowerCase():null},$o=e=>{let t=e.trim();if(!t)return``;let n=Yo(t,k(`homeDirectory`,{storage:Go})||Xe.getState().homeDirectory||``).replace(/\\/g,`/`);return n===`/`?`/`:n.length>1?n.replace(/\/+$/,``):n},es=e=>{let t=$o(e);if(!t||t===`/`)return`Root`;let n=t.split(`/`).filter(Boolean);return n[n.length-1]||t},ts=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}},ns=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},rs=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)}),is=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=$o(a);if(!o)continue;let s=Ce(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=ts(e.iconImage);t&&(c.iconImage=t)}typeof e.color==`string`&&e.color.trim().length>0&&(c.color=e.color.trim());let l=Zo(e.defaultModel);if(l&&(c.defaultModel=l),e.iconBackground===null)c.iconBackground=null;else{let t=Qo(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},as=()=>{try{let e=k(Ko,{storage:Go});return e?is(JSON.parse(e)):[]}catch{return[]}},os=()=>{if(!P())return null;let e=g().trim().replace(/\/+$/,``);return e?Go.getItem(`${Ko}:${encodeURIComponent(e)}:manualOrder`):null},ss=()=>{try{let e=k(Jo,{storage:Go})||os();if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}},cs=()=>{try{let e=k(qo,{storage:Go});if(typeof e==`string`&&e.trim().length>0)return e.trim()}catch{return null}return null},ls=(e,t)=>{try{ne(Ko,JSON.stringify(e),{storage:Go})}catch{}try{t?ne(qo,t,{storage:Go}):j(qo,{storage:Go})}catch{}},us=(e,t,n)=>{ls(e,t),n&&ds(n),ge({projects:e,activeProjectId:t??void 0})},ds=e=>{try{ne(Jo,JSON.stringify(e),{storage:Go})}catch{}},fs=as(),ps=(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},ms=e=>{let t=[],n=new Set;for(let r of e){let e=$o(r.path);!e||n.has(e)||(n.add(e),t.push({name:r.name?.trim(),path:e}))}return t},hs=(e,t,n,r)=>{let i=$o(e.path);if(!i)return null;let a=Ce(i),o=r===i;return{...t,id:a,path:i,label:es(i),addedAt:t?.addedAt??n,lastOpenedAt:o?n:t?.lastOpenedAt??n}},gs=()=>{if(typeof window>`u`||!b()?.runtime?.isVSCode)return null;let e=window.__VSCODE_CONFIG__,t=Array.isArray(e?.workspaceFolders)?e.workspaceFolders.map(e=>{let t=e,n=typeof t.path==`string`?t.path.trim():``;return n?{name:typeof t.name==`string`?t.name.trim():``,path:n}:null}).filter(e=>e!==null):[];if(t.length>0)return ms(t);let n=e?.workspaceFolder;return typeof n!=`string`||n.trim().length===0?null:ms([{path:n}])},_s=(e,t,n)=>{let r=ms(e),i=n?$o(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=>hs(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 Ot(),{projects:s,activeProjectId:l,activeProject:c??s[0]??null}},vs=(e,t)=>e===t?!0:!e||!t?e===t:e.mime===t.mime&&e.updatedAt===t.updatedAt&&e.source===t.source,ys=(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&&vs(e.iconImage,r.iconImage):!1}),bs=(()=>{let e=gs();if(!e)return null;let t=_s(e,[]);return t?{projects:t.projects,activeProjectId:t.activeProjectId}:null})(),xs=typeof window>`u`?!1:!!b()?.runtime?.isVSCode,Ss=bs?.projects??(xs?[]:fs),Cs=bs?.activeProjectId??(xs?null:cs()),ws=Ss.some(e=>e.id===Cs)?Cs:Ss[0]?.id??null;bs&&ls(Ss,ws);var Ts=Ne()(Ie((e,t)=>({projects:Ss,activeProjectId:ws,manualProjectOrder:ss(),validateProjectPath:e=>{if(typeof e!=`string`||e.trim().length===0)return{ok:!1,reason:`Provide a directory path.`};let t=$o(e);return t?{ok:!0,normalizedPath:t}:{ok:!1,reason:`Directory path cannot be empty.`}},addProject:(n,r)=>{if(xs)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()||es(o),u={id:Ce(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)]}),Ot(),t().setActiveProject(u.id),t().discoverProjectIcon(u.id),u},removeProject:n=>{if(xs)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}),us(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&&(H.setDirectory(e.path),Xe.getState().setDirectory(e.path,{showOverlay:!1}))}else Xe.getState().goHome()},setActiveProject:n=>{if(xs)return;let{projects:r,activeProjectId:i}=t();if(i===n)return;let a=r.find(e=>e.id===n);a&&(e({activeProjectId:n}),us(r,n,t().manualProjectOrder),H.setDirectory(a.path),Xe.getState().setDirectory(a.path,{showOverlay:!1}))},setActiveProjectIdOnly:n=>{if(xs)return;let{projects:r,activeProjectId:i}=t();i!==n&&r.find(e=>e.id===n)&&(e({activeProjectId:n}),us(r,n,t().manualProjectOrder))},renameProject:(n,r)=>{if(xs)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}),us(s,o,t().manualProjectOrder)},updateProjectMeta:(n,r)=>{if(xs)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=Qo(r.iconBackground)),r.defaultModel!==void 0){let e=Zo(r.defaultModel);e?t.defaultModel=e:delete t.defaultModel}return t});e({projects:o}),us(o,a,t().manualProjectOrder)},uploadProjectIcon:async(e,n)=>{if(xs)return{ok:!1,error:`Custom icons are not supported in this runtime`};let r=ns(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 rs(n)).replace(/^data:[^;]+;/i,`data:${r};`),a=await x(`/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(xs)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let n=await x(`/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(xs)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let r=await x(`/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(xs)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}),us(o,a,c)},reorderProjectsById:(n,r)=>{if(xs)return;let{projects:i,activeProjectId:a}=t(),o=ps(i,n,r);if(o===i)return;let s=o.map(e=>e.id);e({projects:o,manualProjectOrder:s}),us(o,a,s)},moveProjectToTop:n=>{if(xs)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}),us(u,i,d))},resetForRuntimeSwitch:()=>{if(xs)return;let t=as(),n=cs(),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:ss().filter(e=>i.has(e))})},synchronizeFromSettings:n=>{if(xs||!Array.isArray(n.projects))return;let r=is(n.projects??[]),i=typeof n.activeProjectId==`string`&&n.activeProjectId.trim()?n.activeProjectId.trim():null,a=t(),o=JSON.stringify(a.projects)!==JSON.stringify(r),s=a.activeProjectId!==i,c=r.map(e=>e.id),l=JSON.stringify(a.manualProjectOrder)!==JSON.stringify(c);if(!(!o&&!s&&!l)&&(e({projects:o?r:a.projects,activeProjectId:i,manualProjectOrder:c}),ls(r,i),ds(c),i&&s)){let e=r.find(e=>e.id===i);e&&(H.setDirectory(e.path),Xe.getState().setDirectory(e.path,{showOverlay:!1}))}},syncVSCodeWorkspaceFolders:(n,r)=>{if(!xs)return null;let i=t(),a=i.activeProjectId?i.projects.find(e=>e.id===i.activeProjectId)??null:null,o=r??a?.path??null,s=_s(n,i.projects,o);if(!s)return n.length===0&&!r&&i.projects.length>0&&(e({projects:[],activeProjectId:null}),ls([],null)),null;let c=!ys(i.projects,s.projects),l=i.activeProjectId!==s.activeProjectId;return(c||l)&&(e({projects:s.projects,activeProjectId:s.activeProjectId}),ls(s.projects,s.activeProjectId)),s.activeProject&&(H.setDirectory(s.activeProject.path),Xe.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(`yuri:settings-synced`,e=>{let t=e.detail;t&&typeof t==`object`&&Ts.getState().synchronizeFromSettings(t)});var U=Tr(),Es=e=>e?.trim()||null,Ds=()=>{let e=Ts.getState().getActiveProject?.();return Es(e?.path)??Es(H.getDirectory())},Os=(e,t=u())=>y.commands.list(e,t),ks=(e=Ds(),t=u())=>{let n=Es(e);return{queryKey:Os(n,t),queryFn:async({signal:e})=>{let t=await x(`/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}},As=e=>{let t=(0,U.c)(3),n=e===void 0?{}:e,r=Ts(Ns),i=Es(n.directory)??Es(r)??Es(H.getDirectory()),a=n.enabled!==!1&&!!i,o=ks(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],Ir(s)},js=(e=Ds(),t=u())=>_.getQueryData(Os(Es(e),t))??[],Ms=async(e,t,n)=>{let r=Es(t);if(u()!==n)return e.getQueryData(Os(r,n))??[];let i=ks(r,n);return e.fetchQuery({...i,staleTime:0})};function Ns(e){return e.getActiveProject?.()?.path??null}var Ps=200,Fs=500,Is=512,Ls=1024,Rs=64,zs=100,Bs=100,Vs=new Set([`__proto__`,`prototype`,`constructor`]),Hs=new Set([`text`,`audio`,`image`,`video`,`pdf`]),Us=e=>{for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(n<=31||n>=127&&n<=159)return!0}return!1},Ws=e=>typeof e==`object`&&e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype?e:void 0,Gs=e=>{if(typeof e==`string`)return e.length>0&&e.length<=Is&&e.trim()===e&&!Us(e)&&!Vs.has(e)?e:void 0},Ks=e=>typeof e==`string`&&e.length>0&&e.length<=Ls&&e.trim()===e&&!Us(e)?e:void 0,qs=e=>typeof e==`string`&&e.length>0&&e.length<=Rs&&e.trim()===e&&!Us(e)?e:void 0,Js=e=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=1e9?e:void 0,Ys=e=>{let t=Ws(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))!Hs.has(e)||typeof r!=`boolean`||(n[e]=r);return Object.keys(n).length?n:void 0},Xs=e=>{if(!Array.isArray(e))return;let t={};for(let n of e)typeof n!=`string`||!Hs.has(n)||(t[n]=!0);return Object.keys(t).length?t:void 0},Zs=e=>{let t=Ws(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)?Xs(t.input):Ys(t.input),i=Array.isArray(t.output)?Xs(t.output):Ys(t.output);return r&&(n.input=r),i&&(n.output=i),Object.keys(n).length?n:void 0},Qs=e=>Ws(Array.isArray(e)?e.find(e=>Ws(e)&&!Ws(e.tier))??e.find(e=>Ws(e)):e),$s=e=>{if(Array.isArray(e))return e.map(e=>{if(typeof e==`string`)return e;let t=Ws(e);return typeof t?.id==`string`?t.id:void 0});let t=Ws(e);return t?Object.keys(t):null},ec=e=>{let t=Ws(e),n=Gs(t?.id),r=Ks(t?.name);if(!t||!n||!r)return{partial:!0};let i={id:n,name:r},a=!1,o=Zs(t.capabilities);o&&(i.capabilities=o);let s=Qs(t.cost);if(s){let e={},t=Js(s.input);t!==void 0&&(e.input=t);let n=Js(s.output);n!==void 0&&(e.output=n);let r=Ws(s.cache);if(r){let t={},n=Js(r.read);n!==void 0&&(t.read=n);let i=Js(r.write);i!==void 0&&(t.write=i),Object.keys(t).length&&(e.cache=t)}Object.keys(e).length&&(i.cost=e)}let c=Ws(t.limit);if(c){let e={},t=Js(c.context);t!==void 0&&(e.context=t);let n=Js(c.output);n!==void 0&&(e.output=n),Object.keys(e).length&&(i.limit=e)}let l=qs(t.release_date);l&&(i.release_date=l);let u=$s(t.variants);if(u){let e={},n=Ws(t.variants);for(let[t,r]of u.entries()){if(t>=Bs){a=!0;break}let i=Gs(r);!i||Object.prototype.hasOwnProperty.call(e,i)||n&&!Ws(n[i])||(e[i]={})}Object.keys(e).length&&(i.variants=e)}return{value:i,partial:a}},tc=e=>{let t=Ws(e);if(!t||t.schemaVersion!==1||!Array.isArray(t.providers)||!Ws(t.default)||typeof t.partial!=`boolean`)throw Error(`Invalid provider catalog response`);let n=[],r=new Set,i=t.providers.length>Ps;for(let[e,a]of t.providers.entries()){if(e>=Ps)continue;let t=Ws(a),o=Gs(t?.id),s=Ks(t?.name),c=Ws(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>=Fs||!Gs(t)||Object.prototype.hasOwnProperty.call(l,t)){i=!0;continue}let r=ec(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=Ws(t.default),o={};for(let[e,[t,n]]of Object.entries(a).entries()){let r=Gs(t),a=Gs(n);if(e>=zs||!r||!a){i=!0;continue}o[r]=a}return{schemaVersion:1,providers:n,default:o,partial:t.partial||i}},nc=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:nc(`${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}}},rc=e=>{let t=nc(e);return t?`${t.providerId}/${t.modelId}${t.variant?`#${t.variant}`:``}`:void 0},ic=e=>(t=>e(t.state.data)?1/0:0),ac=e=>{let t=e;return!!(t&&!t.partial&&t.providers.length>0)},oc=e=>{if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},sc=e=>e?{location:{directory:e}}:void 0,cc=async(e,t)=>{let n=H.getSdkClient(),r=sc(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=nc(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}},lc=(e,t=u())=>{let n=oc(e);return{queryKey:y.configCatalog.providers(n,t),queryFn:({signal:e})=>xe(e,async e=>{let r=await x(`/api/config/catalog/providers`,{method:`GET`,headers:{Accept:`application/json`,...n?{"x-opencode-directory":n}:{}},signal:e}),i;if(r.ok)i=tc(await r.json());else{if(r.status!==404&&r.status!==501)throw Error(`Provider catalog request failed (${r.status})`);i=tc(await cc(n,e))}let a=_.getQueryData(y.configCatalog.providers(n,t));if(i.partial&&a&&!a.partial)throw Error(`Partial provider catalog refresh retained the complete snapshot`);return i}),staleTime:ic(ac),gcTime:1/0,retry:2,retryDelay:100}},uc=(e,t=u())=>{let n=oc(e);return{queryKey:y.agents.raw(n,t),queryFn:({signal:e})=>xe(e,e=>H.listAgents(n,e)),staleTime:ic(e=>Array.isArray(e)&&e.length>0),gcTime:1/0,retry:2,retryDelay:100}},dc=(e,t=u())=>_.fetchQuery(lc(e,t)),fc=(e,t=u())=>_.fetchQuery(uc(e,t)),pc=async(e,t=u())=>{let n=lc(e,t);return await _.invalidateQueries({queryKey:n.queryKey,exact:!0}),_.fetchQuery(n)},mc=async(e,t=u())=>{let n=uc(e,t);return await _.invalidateQueries({queryKey:n.queryKey,exact:!0}),_.fetchQuery(n)},hc=(e,t=u())=>_.invalidateQueries({queryKey:lc(e,t).queryKey,exact:!0}),gc=e=>e?.trim()||null,_c=(e,t=u())=>y.agents.list(e,t),vc=(e,t=u())=>y.providers.list(e,t);function yc(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 bc=(e=Ds(),t=u())=>{let n=gc(e);return{queryKey:_c(n,t),queryFn:async({signal:e})=>{let r=await _.fetchQuery(uc(n,t)),i=await x(`/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=yc(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}},xc=(e,t=u())=>{let n=gc(e);return{queryKey:vc(n,t),queryFn:async({signal:e})=>(await lc(n,t).queryFn({signal:e})).providers.map(e=>({...e,models:Object.values(e.models??{})})),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=Ts(Ec),a;t[2]===i?a=t[3]:(a=bc(gc(i)??gc(H.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],Ir(o)},Cc=(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=xc(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],Ir(o)},wc=(e=Ds(),t=u())=>_.getQueryData(_c(gc(e),t))??[],Tc=async(e,t,n)=>{let r=gc(t);if(u()!==n)return e.getQueryData(_c(r,n))??[];let i=bc(r,n);return await e.invalidateQueries({queryKey:i.queryKey,exact:!0}),e.fetchQuery(i)};function Ec(e){return e.getActiveProject?.()?.path??null}var Dc=[{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`}],Oc=e=>e?.trim()||null,kc=()=>{let e=Ts.getState().getActiveProject?.();return Oc(e?.path)??Oc(H.getDirectory())},Ac=(e,t=u())=>y.skillsCatalog.sources(e,t),jc=(e,t,n=u())=>y.skillsCatalog.source(e,t,n),Mc=new Map,Nc=(e=kc(),t=u(),n=!1)=>{let r=Oc(e);return{queryKey:Ac(r,t),queryFn:({signal:e})=>Uc(r,n,e),staleTime:5e3,retry:2}},Pc=(e,t,n=u(),r=!1)=>{let i=Oc(e);return Mr({queryKey:jc(i,t,n),queryFn:({signal:e,pageParam:n})=>Wc(i,t,n,r,e),initialPageParam:null,getNextPageParam:(e,t)=>Gc(e,t),staleTime:5e3,retry:2})},Fc=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=Ts(Jc),a;t[2]===i?a=t[3]:(a=Nc(Oc(i)??Oc(H.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],Ir(o)},Ic=(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=Ts(Yc),o;n[2]!==a||n[3]!==e?(o=Pc(Oc(a)??Oc(H.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],Lr(c)},Lc=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())},Rc=(e=_,t=kc(),n=u())=>e.getQueryData(Ac(Oc(t),n))??Dc,zc=(e=_,t,n,r=u())=>e.getQueryData(jc(Oc(t),n,r)),Bc=async(e,t,n)=>{let r=Oc(t);return u()===n?e.fetchQuery({...Nc(r,n,!0),staleTime:0}):Rc(e,r,n)},Vc=async(e,t,n,r)=>{let i=Oc(t);if(u()!==r)return zc(e,i,n,r);let a=jc(i,n,r),o=JSON.stringify(a),s=(Mc.get(o)??0)+1;Mc.set(o,s),await e.cancelQueries({queryKey:a,exact:!0});let c=await Wc(i,n,null,!0,new AbortController().signal);if(u()!==r||Mc.get(o)!==s)return zc(e,i,n,r);let l={pages:[c],pageParams:[null]};return e.setQueryData(a,l),l},Hc=(e,t,n)=>Promise.all([e.invalidateQueries({queryKey:Ac(Oc(t),n)}),e.invalidateQueries({queryKey:[n,`skillsCatalog`,`source`,Oc(t)],exact:!1})]);async function Uc(e,t,n){let r=await qc(Kc(`/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:Dc}async function Wc(e,t,n,r,i){let a={directory:e,sourceId:t,cursor:n,refresh:r},o=await qc(Kc(`/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 qc(Kc(`/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 Gc(e,t){let n=e.nextCursor;if(!(!n||e.items.length===0)&&!t.slice(0,-1).some(e=>e.nextCursor===n))return n}function Kc(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 qc(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),3e3);try{return await x(e,{method:`GET`,headers:{Accept:`application/json`},signal:AbortSignal.any([t,n.signal])})}finally{clearTimeout(r)}}function Jc(e){return e.getActiveProject?.()?.path??null}function Yc(e){return e.getActiveProject?.()?.path??null}var Xc=e=>e?.trim()||null,Zc=()=>{let e=Ts.getState().getActiveProject?.();return Xc(e?.path)??Xc(H.getDirectory())},Qc=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},$c=(e,t=u())=>y.skills.list(e,t),el=(e=Zc(),t=u())=>{let n=Xc(e);return{queryKey:$c(n,t),queryFn:async({signal:e})=>{let t=await x(`/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:Qc(e.path)}))},retry:2}},tl=e=>{let t=(0,U.c)(3),n=e===void 0?{}:e,r=Ts(il),i=el(Xc(n.directory)??Xc(r)??Xc(H.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],Ir(a)},nl=(e=_,t=Zc(),n=u())=>e.getQueryData($c(Xc(t),n))??[],rl=async(e,t,n=u())=>{let r=Xc(t);return u()===n?e.fetchQuery({...el(r,n),staleTime:0}):nl(e,r,n)};function il(e){return e.getActiveProject?.()?.path??null}var al=()=>{let e=H.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},ol=Ds,sl=e=>{let t=e;return t.native===!0||t.builtIn===!0},cl=e=>{let t=e;return t.hidden===!0||t.options?.hidden===!0},ll=e=>e.filter(e=>!cl(e)),ul=`useAgentsStore`,dl=e=>new Promise(t=>setTimeout(t,e)),fl=2e4,pl=300,ml=4,hl=800,gl=200,_l=2e3,vl=Ne()(Ie(Pe(e=>({selectedAgentName:null,agentDraft:null,setSelectedAgent:t=>e({selectedAgentName:t}),setAgentDraft:t=>e({agentDraft:t}),loadAgents:async()=>{let e=ol(),t=u();try{return await Tc(_,e,t),!0}catch{return!1}},createAgent:async t=>bl(`POST`,t.name,t,e),updateAgent:async(t,n)=>bl(`PATCH`,t,n,e),deleteAgent:async(t,n)=>bl(`DELETE`,t,{scope:n},e),getAgentByName:e=>wc().find(t=>t.name===e),getVisibleAgents:()=>ll(wc())}),{name:`agents-store`,storage:Sr(),partialize:e=>({selectedAgentName:e.selectedAgentName})}),{name:`agents-store`}));typeof window<`u`&&(window.__zustand_agents_store__=vl);async function yl(e,t){await Tc(_,e,t),u()===t&&No(`agents`,{source:ul})}async function bl(e,t,n,r){let i=ol(),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 x(`/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`&&vl.getState().selectedAgentName===t&&r({selectedAgentName:null}),l?.requiresManualRestart?{ok:!0,requiresManualRestart:!0}:(await yl(i,a),{ok:!0})):{ok:!0,...l?.requiresManualRestart?{requiresManualRestart:!0}:{}}}catch(t){return console.error(`[AgentsStore] ${e} agent failed:`,t),{ok:!1}}}async function xl(e){let t=typeof e==`number`&&e>0?Math.min(e,pl):0;t>0&&await dl(t);let n=Date.now(),r=0,i=null;for(;Date.now()-n<fl;){r+=1,Ho(`Waiting for OpenCode… (attempt ${r})`);try{if(await H.checkHealth())return;i=Error(`OpenCode health check reported not ready`)}catch(e){i=e}let e=Date.now()-n;await dl(r<=ml&&e<1200?pl:Math.min(hl+Math.max(0,r-ml)*gl,_l))}throw i||Error(`OpenCode did not become ready in time`)}var Sl=e=>{if(!e||e.length===0)return[`all`];let t=Array.from(new Set(e));return t.includes(`all`)?[`all`]:t};async function Cl(e={}){let{message:t,delayMs:n}=e,r=e.transportIdentity??u(),i=e.queryDirectory??ol(),a=Sl(e.scopes),o=e.mode??(a.includes(`all`)?`projects`:`active`),s=e.silent===!0;if(!s)try{Ho(t||`Refreshing configuration…`)}catch{}try{if(u()!==r||(e.waitForConnection!==!1&&await xl(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=al(),g=o===`projects`?Ts.getState().projects:[],v=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 y=[];for(let e of v)c&&y.push(t.loadProviders({directory:e,source:`agentsStore:refreshConfig`,forceRefresh:!0,allowEmpty:!0}).then(()=>void 0)),l&&y.push(t.loadAgents({directory:e,source:`agentsStore:refreshConfig`,forceRefresh:!0}).then(()=>void 0));let b=[];if(d&&b.push(Tc(_,i,r).then(()=>void 0)),f&&b.push(Ms(_,i,r).then(()=>void 0)),p&&(b.push(rl(_,i,r).then(()=>void 0)),b.push(Hc(_,i,r).then(()=>void 0))),m){let{refreshMcpConfigsQuery:e,refreshMcpStatusQuery:t}=await Br(async()=>{let{refreshMcpConfigsQuery:e,refreshMcpStatusQuery:t}=await import(`./mcpQueries-DpgzW70K.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,16,17,18]));if(u()!==r)return;b.push(e(_,i,r).then(()=>void 0)),b.push(t(_,i,r).then(()=>void 0))}s||Ho(`Refreshing configuration…`),await Promise.all([...y,...b])}catch(e){throw s||(Ho(`OpenCode refresh failed. Please retry.`),await dl(1500)),e}finally{s||Vo()}}async function wl(e){await Cl(e)}async function Tl(e){await Cl({...e,silent:!0,waitForConnection:!1})}async function El(){await H.getSdkClient().location.reload()}async function Dl(e){Bo(e?.message||`Reloading OpenCode configuration…`);let t=e?.transportIdentity??u(),n=e?.queryDirectory??ol();try{let r=await x(`/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){Vo();return}let a={...e,transportIdentity:t,queryDirectory:n,scopes:e?.scopes??[`all`],mode:e?.mode??`projects`};i?.requiresReload?await wl({...a,message:i.message,delayMs:i.reloadDelayMs}):await wl(a)}catch(e){throw console.error(`[restartOpenCodeService] Failed:`,e),Ho(`Failed to reload configuration. Please try again.`),await dl(2e3),Vo(),e}}var Ol=null;Ol||=Mo(e=>{if(e.source!==ul&&Po(e,`agents`)){let{loadAgents:e}=vl.getState();e()}});var kl=e=>typeof e==`string`?e.trim():``,Al=(e,t)=>!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`,jl={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`},Ml=e=>e?e[0].toUpperCase()+e.slice(1).toLowerCase():``,Nl=e=>{let t=e.startsWith(`~`)?e.slice(1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t},Pl=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)}},Fl=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},Il=e=>{let t=e.toLowerCase(),n=jl[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)?Ml(t).replace(/([a-z])(\d)/i,`$1$2`):Ml(e)},Ll=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},Rl=e=>{let t=kl(e).toLowerCase();return t?t===`free`||t===`thinking`?t:zl(t):``},zl=e=>{let t=kl(e);if(!t)return``;let{base:n,suffix:r}=Pl(Nl(t)),i=Ll(Fl(n).map(Il));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=Rl(r);return s?`${o} (${s})`:o},Bl=e=>!/\s/.test(e)&&/[-_]/.test(e),Vl=(e,t,n={})=>{let r=kl(e?.name),i=kl(e?.id)||kl(t);return r&&!Bl(r)?Al(r,n.maxLength):r?Al(zl(r.toLowerCase()),n.maxLength):i?Al(zl(i),n.maxLength):n.fallbackLabel??``},Hl=(e,t)=>{let n=e?.models;if(!(!n||!t))return Array.isArray(n)?n.find(e=>kl(e.id)===t):n[t]},Ul=(e,t,n={})=>{let r=kl(t);return Vl(Hl(e,r),r,n)},Wl=(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}},Gl=e=>e===`primary`||e===`all`||e==null,Kl=e=>e.filter(e=>Gl(e.mode)),ql=(e,t,n=1)=>{let r=Kl(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},Jl=e=>e.charAt(0).toUpperCase()+e.slice(1),Yl=(e,t)=>{if(t){let n=e.find(e=>e.name===t);return Jl(n?n.name:t)}let n=e.filter(e=>Gl(e.mode)),r=n.find(e=>e.name===`build`)||n[0]||e[0];return r?Jl(r.name):`Select agent`},Xl=(e,t,n=``)=>Ul(e,t,{fallbackLabel:n}),Zl=e=>{if(!e||e.trim().length===0)return`Default`;let t=e.trim();return/^\d+(\.\d+)?$/.test(t)?t:Jl(t)},Ql=e=>typeof e==`object`&&!!e,$l=e=>typeof e==`string`&&e.length>0,eu=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(!$l(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(!$l(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;!$l(t)||!$l(n)||r.set(t,n)}r.size>0&&i.set(t,r)}i.size>0&&t.set(e,i)}return t},tu=Ne()(Pe((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:Sr(),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=Ql(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(!$l(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;!$l(t)||typeof n!=`object`||!n||!$l(n.providerId)||!$l(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:eu(n?.sessionAgentModelVariantSelections)}},migrate:e=>e})),nu=[`concise`,`detailed`,`mentor`,`pushback`,`noFiller`,`matchEnergy`,`warmPeer`],ru=e=>typeof e==`string`&&nu.includes(e),iu=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.`}},au=new Map,ou=new Map,su=({enabled:e,preset:t,customInstructions:n})=>e?t===`custom`?(typeof n==`string`?n.trim():``)||null:ru(t)?iu(t):null:null,cu=(e,t=u())=>{au.set(t,{enabled:e.enabled===!0,preset:e.preset,customInstructions:e.customInstructions})},lu=(e=u())=>{let t=au.get(e);if(t)return su(t)},uu=async()=>{let e=u(),t=lu(e);if(t!==void 0)return t;let n=ou.get(e);if(n)return n;let r=(async()=>{let t=await we(e);return cu({enabled:t.responseStyleEnabled,preset:t.responseStylePreset,customInstructions:t.responseStyleCustomInstructions},e),lu(e)??null})();ou.set(e,r);try{return await r}finally{ou.get(e)===r&&ou.delete(e)}},du=`opencode`,fu=`big-pickle`,pu=`__add_provider__`,mu=`zen`,hu=`big-pickle`,gu=async(e,t)=>{On(`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 On(`config.defaults:end`,{source:e,durationMs:Math.round(r-n),hasDefaultModel:!!t.defaultModel,hasDefaultAgent:!!t.defaultAgent}),t};try{let t=await we(e);return cu({enabled:t?.responseStyleEnabled,preset:t?.responseStylePreset,customInstructions:t?.responseStyleCustomInstructions},e),r(`settings-bootstrap-query`,t)}catch(n){On(`config.defaults:error`,{error:n instanceof Error?n.message:String(n)});let i=fe(e);return i&&cu({enabled:i.responseStyleEnabled,preset:i.responseStylePreset,customInstructions:i.responseStyleCustomInstructions},e),r(i?`retained-settings-bootstrap`:`retained-store-settings`,i??t)}},_u=e=>nc(e),vu=e=>e===pu?``:e??``,yu=(e,t)=>e===pu?pu:t,bu=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},xu=e=>{if(!Array.isArray(e))return[];let t=e.map(e=>{if(!Du(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 tc({schemaVersion:1,providers:t,default:{},partial:!1}).providers.map(e=>({id:e.id,name:e.name,models:Object.values(e.models)}))}catch{return[]}},Su=e=>{try{return tc({schemaVersion:1,providers:[],default:e,partial:!1}).default}catch{return{}}},Cu=(e,t,n)=>{let r=e.find(e=>e.id===t);return r?r.models.some(e=>e.id===n):!1},wu=({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=_u(i);if(e)return{providerId:e.providerId,modelId:e.modelId,variant:e.variant??a}}if(Cu(e,du,fu))return{providerId:du,modelId:fu};let o=e[0],s=o?.models[0];return o&&s?{providerId:o.id,modelId:s.id}:null},Tu=({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=Ge(e,t.agentName);return n&&(!Gl(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=>Gl(e.mode)),m;if(r&&(m=Ge(e,r)),!m&&o){let t=Ge(e,o);t&&Gl(t.mode)&&t.hidden!==!0&&(m=t)}m||=Ge(p,`build`)||p.find(e=>e.name===`build`)||p[0]||e[0];let h,g,_,v=n||i;if(v){let e=_u(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=_u(s);e&&(h=e.providerId,g=e.modelId,_=e.variant)}if(!h)if(Cu(t,du,fu))h=du,g=fu;else{let e=t[0],n=e?.models[0];e&&n&&(h=e.id,g=n.id)}return{agentName:(r&&!Ge(e,r)?r:!r&&o&&!Ge(e,o)?o:void 0)??m?.name,providerId:h,modelId:g,variant:_}},Eu=({providers:e,settingsZenModel:t})=>{let n=bu(t);if(!Array.isArray(e)||e.length===0)return n?{providerId:mu,modelId:n}:null;if(n&&Cu(e,mu,n))return{providerId:mu,modelId:n};if(Cu(e,mu,hu))return{providerId:mu,modelId:hu};let r=e.find(e=>e.id===mu);if(r?.models.length){let e=Math.floor(Math.random()*r.models.length),t=bu(r.models[e]?.id);if(t)return{providerId:mu,modelId:t}}return null},Du=e=>typeof e==`object`&&!!e,Ou=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},ku=(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:Ou(t.capabilities.input),output:Ou(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}),Au=e=>new Promise(t=>setTimeout(t,e)),ju=800,Mu=async(e=ju)=>Promise.race([H.checkHealth().catch(()=>!1),Au(Math.max(1,e)).then(()=>!1)]),Nu=`__global__`,Pu=e=>{let t=typeof e==`string`?e.trim():``;return t.length>0?t:Nu},Fu=e=>e===Nu?null:e,Iu=()=>typeof window>`u`?Nu:Bu(H.getDirectory()??Xe.getState().currentDirectory),Lu=e=>{let t=I(e);return t===null?null:t||`/`},Ru=()=>{try{let{projects:e,activeProjectId:t}=Ts.getState();return Lu((t?e.find(e=>e.id===t):null)?.path??e[0]?.path??null)}catch{return null}},zu=e=>Lu(e),Bu=e=>Pu(zu(e)),Vu=e=>Bu(e),Hu=100,Uu=256,Wu=new Set([`__proto__`,`prototype`,`constructor`]),Gu=/[\u0000-\u001F\u007F]/u,Ku=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},qu=(e,t=!1)=>{if(typeof e!=`string`)return;let n=e.trim();if(!(n.length===0||n.length>Uu||t&&n!==e||Gu.test(n)||Wu.has(n)))return n},Ju=e=>{if(!Du(e))return{};let t=[];for(let[n,r]of Object.entries(e)){if(t.length>=Hu||!Du(r))continue;let e=qu(n,!0),i=qu(r.providerId),a=qu(r.modelId),o=qu(r.variant);!e||!i||!a||r.variant!==void 0&&!o||t.push([e,{providerId:i,modelId:a,...o?{variant:o}:{}}])}return Object.fromEntries(t)},Yu=e=>{if(!Du(e))return;let t=qu(e.agentName,!0),n=qu(e.providerId),r=qu(e.modelId),i=qu(e.variant);if(!(!t||!n||!r||e.variant!==void 0&&!i))return{agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}}},Xu=(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}:{}}},Zu=(e,t,n)=>Yu(e)??Xu(t,n),Qu=(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`}),$u=e=>{if(!Du(e))return{};let t=bu(e.catalogTransportIdentity),n={};for(let t of[`activeDirectoryKey`]){let r=bu(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);let r={};if(Du(e.directoryScoped))for(let[t,n]of Object.entries(e.directoryScoped)){if(!Du(n))continue;let e=Ju(n.agentModelSelections),i=qu(n.lastSelectedAgentName,!0),a=Zu(n.lastUserSelection,i,e);r[t]={...Qu(),providers:[],agents:[],currentProviderId:bu(n.currentProviderId)??``,currentModelId:bu(n.currentModelId)??``,currentVariant:bu(n.currentVariant),currentAgentName:bu(n.currentAgentName),selectedProviderId:vu(bu(n.selectedProviderId)),agentModelSelections:e,lastSelectedAgentName:a?.agentName??i,lastUserSelection:a,defaultProviders:{},selectionSource:n.selectionSource===`manual`?`manual`:`auto`}}let i=Ju(e.agentModelSelections),a=qu(e.lastSelectedAgentName,!0),o=Zu(e.globalLastUserSelection,a,i)??(()=>{let t=bu(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:bu(e.currentProviderId)??``,currentModelId:bu(e.currentModelId)??``,currentVariant:bu(e.currentVariant),currentAgentName:bu(e.currentAgentName),selectedProviderId:vu(bu(e.selectedProviderId)),agentModelSelections:i,lastSelectedAgentName:o?.agentName??a,lastUserSelection:(()=>{let t=bu(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),globalLastUserSelection:o}},ed=({agents:e,currentAgentName:t,currentProviderId:n,currentModelId:r,currentVariant:i,selectionSource:a,resolvedAgentName:o,resolvedProviderId:s,resolvedModelId:c,resolvedVariant:l})=>{let u=Ge(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`}},td=null,nd=new Map,rd=new Map,id={},ad={},od=Sr(),sd=od&&{flush:()=>od.flush(),getItem:e=>{let t=u(),n=od.getItem(he(e,t)),r=n=>u()===t?n||!Te()?n:od.getItem(e):null;return n instanceof Promise?n.then(r):r(n)},setItem:(e,t)=>od.setItem(he(e,t.state.catalogTransportIdentity??u()),t),removeItem:e=>od.removeItem(he(e))},W=Ne()(Ie(Pe((e,t)=>({activeDirectoryKey:Iu(),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`,...Oo,activateDirectory:async(n,r)=>{let i=f(),a=zu(n);if(!a){On(`activateDirectory:skippedUnknownDirectory`,{directory:n});return}let o=Pu(a),s=ad[o],c=!1,l=!1,u=!1;if(e(e=>{let t=e.directoryScoped[o],n=t?.providers??[],r=t?.defaultProviders??{},i=t?.agents??[];c=n.length>0,l=i.length>0,u=!!t?.agents.length;let a=e.isConnected&&!c,s=e.isConnected&&!l;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]:s}}:{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]:s}}}),l&&c&&!u&&t().applyDefaultModelAgentSelection(),t().isConnected){if((!c||r?.refreshProviders)&&await t().loadProviders({directory:Fu(o),source:r?.source??`activateDirectory`,forceRefresh:r?.refreshProviders}),f()!==i||t().activeDirectoryKey!==o){ad[o]===s&&e(e=>e.agentConfigLoadingByDirectory[o]===!0?{agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[o]:!1}}:e);return}l||await t().loadAgents({directory:Fu(o),source:`activateDirectory`})}},invalidateProviderCache:e=>{let t=u();hc(e??null,t)},loadProviders:async n=>{let r=n?.directory??Fu(t().activeDirectoryKey),i=zu(r);if(!i){On(`loadProviders:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`});return}let a=i??H.getDirectory()??null,o=Pu(i),s=n?.source??`unknown`,c=u(),l=f();cd(c);let d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&id[o]===p&&zu(r)===i,p=(id[o]??0)+1;id[o]=p,On(`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();On(`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 Tn(`loadProviders:api`,()=>n?.forceRefresh?pc(Fu(o),c):dc(Fu(o),c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),l=xu(t.providers),f=Su(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=wu({providers:l,currentProviderId:r,currentModelId:i,currentVariant:a,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant}),u=e.activeDirectoryKey===o?e.selectedProviderId:n.selectedProviderId,p=u===pu||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();On(`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),On(`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=_u(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(()=>{id[o]===p&&e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:!1}}))})},refreshMissingCatalogs:e=>{let n=Fu(t().activeDirectoryKey),r=f(),i=JSON.stringify([u(),r,n]),a=nd.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&&Fu(t().activeDirectoryKey)===n&&t().agents.length===0&&await t().loadAgents({directory:n,source:o,forceRefresh:!0})})().finally(()=>{nd.delete(i)});return nd.set(i,s),s},refreshCatalogsOnPickerOpen:e=>{let n=Fu(t().activeDirectoryKey),r=JSON.stringify([u(),f(),n]),i=rd.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(()=>{rd.delete(r)});return rd.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??Fu(t().activeDirectoryKey),i=zu(r);if(!i)return On(`loadAgents:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`}),!1;let a=i??H.getDirectory()??null,o=Pu(i),s=n?.source??`unknown`,c=u(),l=f();cd(c);let d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&ad[o]===p&&zu(r)===i,p=(ad[o]??0)+1;ad[o]=p,On(`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();On(`loadAgents:start`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let l=t().directoryScoped[o]?.agents??[];try{let u=Fu(o);(Ke(r??void 0)??Ke(u??void 0))&&On(`loadAgents:syncConfigHit`,{directoryKey:o,source:s});let[f,p]=await Promise.all([Tn(`loadAgents:api`,()=>n?.forceRefresh?mc(u,c):fc(u,c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),gu(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})]),m=(Array.isArray(f)?f:[]).map(qt);if(!d())return!1;if(m.length===0)return!0;let h=Ke(r??void 0)??Ke(u??void 0),g=h!==void 0,_=g?bu(h.default_agent):void 0,v=g?rc(h.model):void 0,y=t().activeDirectoryKey===o?t().providers:t().directoryScoped[o]?.providers??[],b=bu(t().settingsZenModel),x=bu(p.zenModel),S=Eu({providers:y,settingsZenModel:b}),C=Eu({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`,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&&ge({zenModel:w,gitProviderId:``,gitModelId:``}).catch(()=>{});let A=t(),ee=A.directoryScoped[o]?.lastUserSelection??(A.activeDirectoryKey===o?A.lastUserSelection:void 0),j=Tu({agents:m,providers:y,settingsDefaultAgent:p.defaultAgent,settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,opencodeDefaultAgent:D,opencodeDefaultModel:O,projectLastUserSelection:ee,globalLastUserSelection:A.globalLastUserSelection}),te=j.agentName??m[0].name,M=j.providerId,ne=j.modelId,re=j.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=ed({agents:m,providers:y,currentAgentName:r,currentProviderId:i,currentModelId:a,currentVariant:s,selectionSource:l,resolvedAgentName:te,resolvedProviderId:M,resolvedModelId:ne,resolvedVariant:re}),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 N=typeof performance<`u`?performance.now():Date.now();return On(`loadAgents:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(N-i),agents:m.length}),!0}catch(t){return!d()||(console.error(`Failed to load agents:`,t),On(`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(()=>{ad[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=ot(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=tu.getState();e&&t.saveSessionAgentSelection(e,l),e&&$.getState().isYuriCreatedSession(e)&&(t.getAgentModelForSession(e,l)||$.getState().initializeNewYuriSession(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:yu(e.selectedProviderId,t),selectionSource:`manual`};return{currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:yu(e.selectedProviderId,t),selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[i]:a}}})},d=Ge(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?tu.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=tu.getState().getAgentModelForSession(n,l);if(e&&Cu(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=_u(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}=Tu({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:yu(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=yu(e.selectedProviderId,p)),r})},applyOpenCodeConfigDefaults:(n,r=`syncConfig`,i)=>{let a=n??Fu(t().activeDirectoryKey),o=Bu(a),s=Fu(o),c=i??Ke(a??void 0)??Ke(s??void 0);if(!c)return;let l=bu(c.default_agent),u=rc(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??Qu(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=Tu({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=ed({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:yu(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!==yu(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=yu(x,S.providerId))),On(`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 Eu({providers:e.providers,settingsZenModel:e.settingsZenModel})},setVoiceProvider:t=>{e({voiceProvider:t})},setSpeechRate:t=>{e({speechRate:Math.max(.5,Math.min(2,t))})},setSpeechPitch:t=>{e({speechPitch:Math.max(.5,Math.min(2,t))})},setSpeechVolume:t=>{e({speechVolume:Math.max(0,Math.min(1,t))})},setSayVoice:t=>{e({sayVoice:t})},setLocalTtsVoiceId:t=>{e({localTtsVoiceId:t})},setBrowserVoice:t=>{e({browserVoice:t})},setOpenaiVoice:t=>{e({openaiVoice:t})},setOpenaiApiKey:t=>{e({openaiApiKey:t})},setOpenaiCompatibleUrl:t=>{e({openaiCompatibleUrl:t})},setOpenaiCompatibleApiKey:t=>{e({openaiCompatibleApiKey:t})},setOpenaiCompatibleVoice:t=>{e({openaiCompatibleVoice:t})},setOpenaiCompatibleTtsModel:t=>{e({openaiCompatibleTtsModel:t})},setDictationEnabled:t=>{e({dictationEnabled:t})},setSttProvider:t=>{e({sttProvider:t})},setSttServerUrl:t=>{e({sttServerUrl:t})},setSttApiKey:t=>{e({sttApiKey:t})},setSttModel:t=>{e({sttModel:t})},setSttLocalModel:t=>{e({sttLocalModel:t})},setSttLanguage:t=>{e({sttLanguage:t})},setShowMessageTTSButtons:t=>{e({showMessageTTSButtons:t})},setTtsInputMode:t=>{e({ttsInputMode:t})},setSummarizeMessageTTS:t=>{e({summarizeMessageTTS:t})},setSummarizeVoiceConversation:t=>{e({summarizeVoiceConversation:t})},setSummarizeCharacterThreshold:t=>{e({summarizeCharacterThreshold:Math.max(50,Math.min(2e3,t))})},setSummarizeMaxLength:t=>{e({summarizeMaxLength:Math.max(50,Math.min(2e3,t))})},probeConnection:async n=>{if(await Mu(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()=>{On(`checkConnection:start`);let n=0,r=null;for(;n<5;)try{On(`checkConnection:attempt`,{attempt:n+1});let r=await Tn(`checkConnection:health`,()=>H.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 Au(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`}),On(`checkConnection:end`,{healthy:r,attempts:n+1}),r}catch(e){r=e,n+=1,await Au(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`}),On(`checkConnection:end`,{healthy:!1,attempts:5}),!1},initializeApp:async()=>{if(td)return On(`initializeApp:deduped`),td;let n=(async()=>{let n=typeof performance<`u`?performance.now():Date.now();On(`initializeApp:start`);try{if(Ot(),!await t().checkConnection()){e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`});return}On(`initApp:skipped`,{reason:`checkConnection already verified health`});let r=H.getDirectory()??Xe.getState().currentDirectory??Fu(t().activeDirectoryKey),i=zu(r),a=i??Ru();if(!a){On(`initializeApp:noProjectConfigDirectory`),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});return}!i&&r!==a&&(On(`initializeApp:normalizedUnknownDirectoryToProject`,{initialDirectory:r,configDirectory:a}),H.setDirectory(a),Xe.getState().setDirectory(a,{showOverlay:!1}));let o=Pu(a);t().activeDirectoryKey!==o&&e(e=>{let t=e.directoryScoped[o]??Qu();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();On(`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`}),On(`initializeApp:error`,{error:n instanceof Error?n.message:String(n)})}})().finally(()=>{td=null});return td=n,n},prewarmProjectConfigs:async e=>{!t().isConnected||Bu(e??Fu(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 Ge(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 ku(e,i)},getVisibleAgents:()=>{let{agents:e}=t();return ll(e)}}),{name:`config-store`,version:5,storage:sd,migrate:e=>$u(e),merge:(e,t)=>Ku({...t,...$u(e),catalogTransportIdentity:u()}),partialize:e=>{let t=(t,n)=>{let r=Yu(n?.lastUserSelection)??Xu(qu(n?.lastSelectedAgentName,!0),Ju(n?.agentModelSelections))??(t===e.activeDirectoryKey?Yu(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:vu(n?.selectedProviderId??(t===e.activeDirectoryKey?e.selectedProviderId:``)),agentModelSelections:{},lastSelectedAgentName:r?.agentName??qu(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=Yu(e.globalLastUserSelection)??Yu(e.lastUserSelection);return{activeDirectoryKey:e.activeDirectoryKey,catalogTransportIdentity:e.catalogTransportIdentity,directoryScoped:n,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:vu(e.selectedProviderId),agentModelSelections:{},lastSelectedAgentName:r?.agentName??qu(e.lastSelectedAgentName,!0),lastUserSelection:Yu(e.lastUserSelection)??r,globalLastUserSelection:r}}})));function cd(e){if(W.getState().catalogTransportIdentity===e)return;let t=W.persist.getOptions().storage;W.persist.setOptions({storage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{}}});try{W.setState({catalogTransportIdentity:e})}finally{W.persist.setOptions({storage:t})}}typeof window<`u`&&(window.__zustand_config_store__=W);var ld=async e=>{await W.getState().loadProviders({source:e,forceRefresh:!0})},ud=null;ud||=Mo(async e=>{let t=[];if(H.clearConfigCache(),Po(e,`agents`)){let{loadAgents:e}=W.getState();t.push(e({source:`configChange:agents`,forceRefresh:!0}).then(()=>{}))}Po(e,`providers`)&&t.push(ld(`configChange:providers`)),t.length>0&&await Promise.all(t)});var dd=null,fd=null;fd||=pt((e,t)=>{W.getState().applyOpenCodeConfigDefaults(e,`syncConfig`,t)}),typeof window<`u`&&!dd&&(dd=Xe.subscribe((e,t)=>{let n=Pu(e.currentDirectory),r=Pu(t.currentDirectory);n!==r&&(On(`directoryStore:changed`,{previous:r,next:n}),W.getState().activateDirectory(e.currentDirectory))}));var pd=e=>typeof e==`number`&&Number.isFinite(e)?e:null,md=e=>{let t=e.metadata;return pd(t?.yuri?.titleRefresh?.activityUpdatedAt)??pd(e.time?.updated)??pd(e.time?.created)??0},hd=[`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 gd(e){if(!e)return!1;let t=String(e instanceof Error?e.message:e).toLowerCase();if(hd.some(e=>t.includes(e)))return!0;let n=e?.status;return typeof n==`number`&&n>=500&&n<600}async function _d(e,t={}){let{attempts:n=3,delay:r=500,factor:i=2,maxDelay:a=1e4,retryIf:o=gd}=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 vd=[`file`,`status`,`additions`,`deletions`],yd=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},bd=e=>e===void 0?!1:!e||typeof e!=`object`||Array.isArray(e)?!0:Object.keys(e).some(e=>e!==`messageID`&&e!==`partID`),xd=e=>typeof e.before==`string`||typeof e.after==`string`||typeof e.from==`string`||typeof e.to==`string`||typeof e.patch==`string`;function Sd(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!xd(t))return e;let n={};for(let e of vd)e in t&&t[e]!==void 0&&(n[e]=t[e]);return n}function Cd(e){if(!Array.isArray(e))return e;let t=!1,n=e.map(e=>{let n=Sd(e);return n!==e&&(t=!0),n});return t?n:e}function wd(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=Cd(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 Td(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=wd(r?n:e);return i===(r?n:e)?n:i}function Ed(e){let t=e;if(!(bd(t.revert)||Array.isArray(t.summary?.diffs)||typeof t.summary?.diffCount==`number`||typeof t.summary?.hasDiffs==`boolean`||`permission`in t))return e;let n=Td(e),r={...n};delete r.permission;let i=yd(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 Dd(e){return wd(e)}var Od=new Set([`smartfetch-secondary`]),kd=/^\[(?:Scheduled|Assistant|yuri-llm)\]/,Ad=e=>typeof e==`string`&&e.length>0,jd=e=>{let t=e.metadata;if(!t||typeof t!=`object`)return!1;let n=t.yuri;if(!n||typeof n!=`object`)return!1;let r=n;return r.assigned?.from!==`contact`&&!!(Ad(r.assistant?.assistantID)||Ad(r.scheduledTask?.taskID)||Ad(r.smallModel?.purpose)||Ad(r.llm?.purpose))},Md=e=>{let t=e.parentID;return typeof t==`string`&&t.trim()?t:null},Nd=(e,t={})=>!(e.title&&Od.has(e.title)||e.title&&kd.test(e.title)||!t.includeChildren&&Md(e)||jd(e)),Pd=e=>{let t=e.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:0},Fd=e=>{let t=e.time?.archived;return typeof t==`number`&&Number.isFinite(t)&&t>0},Id=e=>{let t=yt(e);return Ed({...t,directory:t.directory||e.directory})};async function Ld(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 _d(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=>Id(e)).filter(e=>(t.archived?!Fd(e):Fd(e))||t.start!==void 0&&Pd(e)<t.start||i!==void 0&&Pd(e)>=i?!1:Nd(e)),u=0;for(let e of l)!e?.id||r.has(e.id)||(r.add(e.id),n.push(e),u+=1);if(u>0&&t.onPage?.(l),t.maxItems!==void 0&&n.length>=t.maxItems)break;let d=typeof c.cursor?.next==`string`&&c.cursor.next.length>0?c.cursor.next:void 0;if(!d||d===a)break;a=d}return n}var Rd=`/api/magic-prompts`,zd=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||oi(e)?si(e):e instanceof Error&&e.message===`SSE response exceeds buffer limit`?e:Error(`SSE response read failed`)}finally{d||await li(i),i.releaseLock()}},di=null,fi=null,pi=null,mi=0,hi=null,gi=null,_i=new Set,vi=new Map,yi=e=>e===`session-index-changed`||e===`message-queue-changed`||e===`assistants-changed`,bi=()=>{vi.clear()},xi=e=>vi.get(e),Si=(e,t)=>{let n=vi.get(e);(n===void 0||t>n)&&vi.set(e,t)},Ci=3e4,wi=45e3,Ti=()=>{pi&&=(clearTimeout(pi),null)},Ei=()=>{if(fi||_i.size===0)return;let e=Math.min(1e3*2**Math.min(mi,5),Ci);fi=setTimeout(()=>{fi=null,mi+=1,Mi()},e)},Di=()=>{Ti();let e=di;di=null,e?.controller.abort()},Oi=e=>{if(Ti(),_i.size===0||di!==e)return;let t=setTimeout(()=>{di===e&&pi===t&&(pi=null,Di(),Ei())},wi);pi=t},ki=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}},Ai=e=>{if(e.type===`yuri: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===`yuri:heartbeat`)return null;let t=e.properties&&typeof e.properties==`object`&&!Array.isArray(e.properties)?e.properties:null;if(e.type===`yuri: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===`yuri: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===`yuri: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,...t?.cause===`change`?{cause:`change`}:{},...r?{sync:{active:r.active===!0,enriching:r.enriching===!0}}:{}}}if(e.type===`yuri: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===`yuri:speech-settings-changed`){let e=t?.occurredAt;return typeof e!=`number`||!Number.isFinite(e)?null:{type:`speech-settings-changed`,occurredAt:e}}if(e.type===`yuri:session-order-changed`){let e=t?.occurredAt;return typeof e==`number`?{type:`session-order-changed`,occurredAt:e}:null}if(e.type===`yuri:project-order-changed`){let e=t?.occurredAt;return typeof e!=`number`||!Number.isFinite(e)?null:{type:`project-order-changed`,occurredAt:e}}if(e.type===`yuri: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===`yuri: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===`yuri: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===`yuri: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!==`yuri: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}:{}}},ji=e=>{let t=Ai(e);if(t){t.type===`event-stream-ready`&&(mi=0),yi(t.type)&&`revision`in t&&Si(t.type,t.revision);for(let e of _i)try{e(t)}catch{}}},Mi=()=>{if(typeof window>`u`||_i.size===0||di)return;let e={controller:new AbortController};di=e,ui(`/api/yuri/events`,{signal:e.controller.signal,onOpen:()=>{di===e&&Oi(e)},onActivity:()=>{di===e&&Oi(e)},onMessage:t=>{if(di!==e)return;let n=ki(t);n&&ji(n)}}).then(()=>{di===e&&(di=null,Ti(),Ei())},()=>{di===e&&(di=null,Ti(),e.controller.signal.aborted||Ei())})},Ni=()=>{hi||typeof window>`u`||(hi=s(()=>{bi(),fi&&=(clearTimeout(fi),null),Di(),mi=0,Mi()}))},Pi=()=>{hi?.(),hi=null},Fi=()=>{if(gi||typeof window>`u`)return;let e=window,t=typeof document>`u`?void 0:document,n=t?.visibilityState===`hidden`,r=!1,i=!1,a=()=>{r||i||(i=!0,queueMicrotask(()=>{i=!1,!(r||_i.size===0)&&(fi&&=(clearTimeout(fi),null),Di(),Mi())}))},o=()=>{t?.visibilityState===`hidden`?n=!0:t?.visibilityState===`visible`&&n&&(n=!1,a())},s=e=>{e.persisted&&a()},c=()=>{(!di||fi)&&a()};t?.addEventListener(`visibilitychange`,o),e.addEventListener(`pageshow`,s),e.addEventListener(`yuri:system-resume`,a),e.addEventListener(`online`,c),gi=()=>{r=!0,t?.removeEventListener(`visibilitychange`,o),e.removeEventListener(`pageshow`,s),e.removeEventListener(`yuri:system-resume`,a),e.removeEventListener(`online`,c),gi=null}},Ii=e=>(_i.add(e),Ni(),Fi(),Mi(),()=>{_i.delete(e),_i.size===0&&(bi(),fi&&=(clearTimeout(fi),null),mi=0,Di(),Pi(),gi?.())}),Li=!1,Ri=Promise.resolve(),zi=null,Bi=()=>{Li||(Li=!0,Ri=new Promise(e=>{zi=e}))},Vi=async()=>Ri,Hi=()=>{if(!Li)return;Li=!1;let e=zi;zi=null,e?.()},Ui=`yuri_input_draft_metadata_v1`,Wi=`yuri_input_draft_metadata_migration_v1`,Gi=`yuri_chat_input_draft_`,Ki=`yuri_chat_confirmed_mentions_`,qi=()=>({ok:!1,error:{code:`unavailable`}}),Ji=()=>({ok:!1,error:{code:`cancelled`}}),Yi=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),Xi=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),Zi=(e,t)=>Object.keys(e).every(e=>t.includes(e)),Qi=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,$i=e=>typeof e==`string`&&e.length>0,ea=e=>({read:async t=>{if(!e)return qi();try{return{ok:!0,value:e.getItem(t)}}catch(e){return Yi(e)}},write:async(t,n)=>{if(!e)return qi();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return Yi(e)}},remove:async t=>{if(!e)return qi();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return Yi(e)}},keys:async()=>{if(!e)return qi();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 Yi(e)}}}),ta=()=>{try{return ea(typeof window>`u`?null:window.localStorage)}catch{return ea(null)}},na=(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}},ra=async e=>{let t=await e.keys();if(!t.ok)return t;let n=new Set;for(let e of t.value)e.startsWith(Gi)&&n.add(e.slice(22)),e.startsWith(Ki)&&n.add(e.slice(29));let r=[];for(let i of n){let n=`${Gi}${i}`,a=`${Ki}${i}`,[o,s]=await Promise.all([e.read(n),e.read(a)]);if(!o.ok)return o;if(!s.ok)return s;r.push(na(i,o.value,s.value,[n,a].filter(e=>t.value.includes(e))))}return{ok:!0,value:r}},ia=e=>{if(!(!Xi(e)||!Zi(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]}},aa=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&$i(t[0])&&(t[1]===`session`||t[1]===`draft`)&&$i(t[2])&&e===JSON.stringify(t)}catch{return!1}},oa=e=>{if(!Xi(e)||!Zi(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)&&!$i(e.claimedTransportIdentity))&&!(r&&!n)&&!(t&&(!n||!r)))return{complete:t,claimedTransportIdentity:e.claimedTransportIdentity,captured:n,markerCommitted:r,cleanupComplete:t}},sa=e=>{if(!Xi(e)||!Zi(e,[`version`,`drafts`,`tombstones`,`migration`,`legacy`])||e.version!==1||!Xi(e.drafts)||!Xi(e.tombstones)||!Xi(e.legacy)||!Zi(e.legacy,[`new`,`entries`])||!Xi(e.legacy.entries))return;let t=oa(e.migration);if(!t)return;let n={};for(let[t,r]of Object.entries(e.drafts)){let e=be(r);if(!e||t!==z(e.key))return;n[t]=e}let r={};for(let[t,n]of Object.entries(e.tombstones)){if(!aa(t)||!Qi(n))return;r[t]=n}let i={};for(let[t,n]of Object.entries(e.legacy.entries)){let e=ia(n);if(!e||t!==e.suffix||t===`new`)return;i[t]=e}let a=e.legacy.new===void 0?void 0:ia(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}}},ca=(e=``)=>({version:1,drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:e,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),la=e=>{try{return{ok:!0,value:JSON.stringify(e)}}catch{return{ok:!1,error:{code:`serialization`}}}},ua=async e=>{let t=await e.read(Ui);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:null};try{let e=sa(JSON.parse(t.value));return e?{ok:!0,value:e}:{ok:!1,error:{code:`corrupt`}}}catch{return{ok:!1,error:{code:`corrupt`}}}},da=async(e,t)=>{let n=sa(t);if(!n)return{ok:!1,error:{code:`corrupt`}};let r=la(n);return r.ok?e.write(Ui,r.value):r},fa=e=>Xi(e)&&Zi(e,[`version`,`claimedTransportIdentity`])&&e.version===1&&$i(e.claimedTransportIdentity)?{version:1,claimedTransportIdentity:e.claimedTransportIdentity}:void 0,pa=e=>la({version:1,claimedTransportIdentity:e}),ma=(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}}},ha=e=>[...new Set([e.legacy.new,...Object.values(e.legacy.entries)].flatMap(e=>e?.keys??[]))],ga=new WeakMap,_a=e=>{let t=ga.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=sa(t);return n?i?a(async()=>i?da(e,n):qi()):Promise.resolve(qi()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},migrate:(t,n={})=>{if(r)return r;let o=a(async()=>{let r=await ua(e);if(!r.ok)return r;let a=r.value??ca(),o=i&&(n.persistenceEnabled??!0);if(!a.migration.captured){let n=await ra(e);if(!n.ok)return n;if(!o)return{ok:!0,value:ma(a,n.value,``)};if(a=ma(a,n.value,t),!i)return{ok:!0,value:a};let r=await da(e,a);if(!r.ok)return r}if(!i||!(n.persistenceEnabled??!0)){let t=await ra(e);return t.ok?{ok:!0,value:a}:t}let s=await e.read(Wi);if(!s.ok)return s;if(s.value!==null)try{let t=fa(JSON.parse(s.value));if(!t)return{ok:!1,error:{code:`corrupt`}};if(t.claimedTransportIdentity!==a.migration.claimedTransportIdentity){let t=pa(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Wi,t.value);if(!n.ok)return n}}catch{return{ok:!1,error:{code:`corrupt`}}}else{let t=pa(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Wi,t.value);if(!n.ok)return n}if(a.migration.cleanupComplete)return{ok:!0,value:a};for(let t of ha(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 da(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 ga.set(e,o),o},va=e=>{let t=_a(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=sa(e);return t?n?new Promise(e=>{i.push({snapshot:t,resolve:e}),s()}):Promise.resolve(qi()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},cancelPending:()=>{let e=i;i=[],e.forEach(({resolve:e})=>e(Ji())),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(Ji()))}await(r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve()),await t.setEnabled(e),await t.flush()}}},ya=`yuri-input-drafts`,ba=1,xa=`blobs`,Sa=`blobRefs`,Ca=class extends Error{code;constructor(e){super(e),this.code=e}},wa=e=>({ok:!1,error:{code:e instanceof Ca?e.code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota-exceeded`:e instanceof DOMException&&e.name===`AbortError`?`transaction-aborted`:`transaction-failed`}}),Ta=e=>{if(!(e instanceof Blob)&&!je(e))throw new Ca(`invalid-value`)},Ea=e=>{if(!e)throw new Ca(`invalid-value`)},Da=(e,t)=>({id:Me(e),blobID:t,transportIdentity:e.transportIdentity,ownerKind:e.owner.kind,ownerID:e.owner.ownerID}),Oa=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}`},ka=async(e,t)=>(e.fingerprint??await Oa(e.value))===t,Aa=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)}},ja=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}},Ma=(e,t)=>{let n=ja(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))},Na=(e=Pa())=>{let t=async(t,n)=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=await e.getBlobRef(Me(t));return!r||n!==void 0&&r.blobID!==n?!1:(await e.deleteBlobRef(r.id),await Aa(e),(await e.getAllBlobRefs()).some(e=>e.blobID===r.blobID)||await e.deleteBlob(r.blobID),!0)})}}catch(e){return wa(e)}};return{put:async(t,n)=>{try{Ea(t),Ta(n);let r=await Oa(n);return await e.transaction(async e=>{let i=await e.getBlob(t);if(i&&!await ka(i,r))throw new Ca(`blob-id-conflict`);i||await e.putBlob({id:t,value:n,refCount:0,fingerprint:r})}),{ok:!0,value:void 0}}catch(e){return wa(e)}},putAndRetain:async(t,n,r)=>{try{Ea(n),Ta(r);let i=await Oa(r);return await e.transaction(async e=>{let a=Me(t),o=await e.getBlobRef(a);if(o&&o.blobID!==n)throw new Ca(`blob-id-conflict`);let s=await e.getBlob(n);if(s&&!await ka(s,i))throw new Ca(`blob-id-conflict`);s||await e.putBlob({id:n,value:r,refCount:0,fingerprint:i}),o||await e.putBlobRef(Da(t,n)),await Aa(e)}),{ok:!0,value:void 0}}catch(e){return wa(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 wa(e)}},readReference:async t=>{try{return{ok:!0,value:(await e.transaction(e=>e.getBlobRef(Me(t))))?.blobID}}catch(e){return wa(e)}},retain:async(t,n)=>{try{return Ea(n),await e.transaction(async e=>{let r=await e.getBlobRef(Me(t));if(r&&r.blobID!==n)throw new Ca(`blob-id-conflict`);if(!await e.getBlob(n))throw new Ca(`missing-blob`);r||await e.putBlobRef(Da(t,n)),await Aa(e)}),{ok:!0,value:void 0}}catch(e){return wa(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)Ma(a,n)&&t.get(i)!==a.blobID&&(await e.deleteBlobRef(i),r.push(i));for(let[r,s]of t){let t=ja(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 Aa(e,!0),{released:r,repaired:i,missing:a}})}}catch(e){return wa(e)}},reconcileOwnerReferences:async(t,n)=>{let r=new Map;for(let[e,i]of n)r.set(Me({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 Aa(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 wa(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 wa(e)}}}},Pa=()=>({transaction:async e=>{let t=await Fa(),n=t.transaction([xa,Sa],`readwrite`),r=n.objectStore(xa),i=n.objectStore(Sa),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()}}}),Fa=()=>xr(ya).then(()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(new Ca(`database-unavailable`));return}let n=indexedDB.open(ya,ba),r=!1,i=()=>{r||(r=!0,t(new Ca(`database-unavailable`)))};n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(xa)||e.createObjectStore(xa,{keyPath:`id`}),e.objectStoreNames.contains(Sa)||e.createObjectStore(Sa,{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})),Ia=()=>({drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:``,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),La=e=>({version:1,drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}),Ra=e=>{let t=La(e),n=za(JSON.parse(JSON.stringify(t)));return{drafts:n.drafts,tombstones:n.tombstones,migration:n.migration,legacy:n.legacy}},za=e=>{let t=sa(e);if(!t)throw Error(`invalid draft snapshot`);return t},Ba=e=>e instanceof Map?[...e.entries()]:Object.entries(e??{}),Va=e=>typeof e==`string`?e:z(e),Ha=[`session`,`draft`,`surface`],Ua=e=>({transportIdentity:e.transportIdentity,owner:{kind:e.owner.kind,ownerID:e.owner.ownerID},attachmentOccurrenceRefID:e.attachmentOccurrenceRefID}),Wa=e=>JSON.parse(JSON.stringify(e)),Ga=e=>e.phase===`metadata`?{phase:`metadata`,error:{code:e.error.code}}:{phase:`blob`,error:{...e.error},...e.reference?{reference:Ua(e.reference)}:{}},Ka=e=>({status:e.status,keys:[...e.keys],errors:e.errors.map(Ga),cleanupErrors:e.cleanupErrors.map(Ga)}),qa=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,Ja=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&Ha.includes(t[1])&&typeof t[2]==`string`&&t[0].length>0&&t[2].length>0}catch{return!1}},Ya=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:Wa(t)}]:[]),Xa=e=>{let t=new Map;for(let n of Object.values(e))for(let e of Ya(n))t.set(Me(e.reference),e);return t},Za=(e,t)=>({phase:`blob`,error:{...e},...t?{reference:Ua(t)}:{}}),Qa=(e,t=[])=>({status:e,keys:t,errors:[],cleanupErrors:[]}),$a=e=>e?.attachment.locator.kind===`blob`?e.attachment.locator.blobID:``,eo=(e,t,n={})=>{let r=Ia(),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?Ka(e):e)},u=async(t=r.drafts)=>{let n=[],i=new Map([...Xa(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(Ua(r.reference),r.expectedBlobID);a.ok?c.delete(t):n.push(Za(a.error,r.reference))}return n},d=async(t,n,r,i)=>{let o=Ua(t),s=await e.releaseIfMatches(o,n);s.ok||(c.set(Me(o),{reference:Ua(o),expectedBlobID:n,generation:a,reason:i}),r.push(Za(s.error,o)))},f=async(t,n)=>{let r=t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,i=Ua(t.reference),a=Wa(t.attachment),o=await e.readReference(i);if(!o.ok)return{acquired:!1,error:Za(o.error,i)};if(o.value&&o.value!==r)return{acquired:!1,error:Za({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:Za(t.error,i)};let o=await n?.(Ua(i),Wa(a));if(o===void 0)return{acquired:!1,error:Za({code:`runtime-value-missing`},i)};let s=await e.putAndRetain(i,r,o);return s.ok?{acquired:!0}:{acquired:!1,error:Za(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:Za(t.error,i)}}if(s.error.code!==`missing-blob`)return{acquired:!1,error:Za(s.error,i)};let c=await n?.(Ua(i),Wa(a));if(c===void 0)return{acquired:!1,error:Za({code:`runtime-value-missing`},i)};let l=await e.putAndRetain(i,r,c);return l.ok?{acquired:!0}:{acquired:!1,error:Za(l.error,i)}};return{seed:t=>l(async()=>{if(!i)return Qa(`disabled`);if(o)return{...Qa(`failed`),errors:[Za({code:`invalid-record`})]};let n;try{if(!t)n=Ia();else{let e=za(JSON.parse(JSON.stringify(t)));n={drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}}}catch{return{...Qa(`failed`),errors:[Za({code:`invalid-record`})]}}let a=Xa(n.drafts),s=await e.reconcileReferences(new Map([...a].map(([e,t])=>[e,$a(t)])),{ownerKinds:Ha});return s.ok?(r=n,o=!0,{...Qa(`committed`),errors:s.value.missing.map(e=>Za({code:`missing-blob`},a.get(e)?.reference))}):{...Qa(`failed`),errors:[Za(s.error)]}}),commit:e=>{let n=[...Ba(e.drafts).map(([e])=>e),...(e.delete??[]).map(Va)];return i?l(async()=>{if(!o)return Qa(`unseeded`,n);if(!i)return Qa(`disabled`,n);let s=a,c=[],l=Ra(r),p=Ba(e.drafts),m=Ba(e.tombstones),h=(e.delete??[]).map(Va);if(p.some(([e,t])=>!Ja(e)||!qa(t.revision))||m.some(([e,t])=>!Ja(e)||!qa(t))||h.some(e=>!Ja(e))||new Set(p.map(([e])=>e)).size!==p.length||m.some(([e])=>p.some(([t])=>t===e)))return{...Qa(`failed`,n),errors:[Za({code:`invalid-record`})]};try{for(let[e,t]of p){let n=be(t);if(!n||e!==z(n.key))throw Error(`invalid draft record`);l.drafts[e]=n,delete l.tombstones[e]}for(let e of h)delete l.drafts[e];for(let[e,t]of m)l.tombstones[e]=t;e.migration&&(l.migration=e.migration),e.legacy&&(l.legacy=e.legacy);let t=za(La(l));l.drafts=t.drafts,l.tombstones=t.tombstones,l.migration=t.migration,l.legacy=t.legacy}catch{return{...Qa(`failed`,n),errors:[Za({code:`invalid-record`})],cleanupErrors:c}}if(!await e.isCurrent())return Qa(`stale`,n);let g=Xa(r.drafts),_=Xa(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,$a(_.get(Me(e))),c,`acquire-failed`);return{...Qa(`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,$a(_.get(Me(e))),c,`stale`);return{...Qa(`stale`,n),cleanupErrors:c}}if(!i||s!==a){for(let e of v.reverse())await d(e,$a(_.get(Me(e))),c,`disabled`);return{...Qa(`disabled`,n),cleanupErrors:c}}let y=await t.persist(La(l));if(!y.ok){for(let e of v.reverse())await d(e,$a(_.get(Me(e))),c,`metadata-failed`);return{...Qa(`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{...Qa(`committed`,n),cleanupErrors:c}}):Promise.resolve(Ka(Qa(`disabled`,n)))},reconcile:()=>l(async()=>{if(!o)return Qa(`unseeded`);if(!i)return Qa(`disabled`);let t=await u(),n=new Map([...Xa(r.drafts)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``])),a=await e.reconcileReferences(n,{ownerKinds:Ha}),s=a.ok?a.value.missing.map(e=>Za({code:`missing-blob`},Xa(r.drafts).get(e)?.reference)):[Za(a.error)];return{status:a.ok?`committed`:`failed`,keys:[],errors:s,cleanupErrors:t}}),retryCleanup:()=>l(async()=>({...Qa(`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}}},to=`yuri-composer-reference-draft`,no=`yuri-pasted-text-draft`,ro=e=>Array.from(e).length,io=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),ao=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,oo=(e,t)=>{let n=[],r=[],i=0;for(let a=0;a<Math.min(t.length,me.referenceCount);a+=1){let o=t[a];if(!(!io(o)||!ao(o.id,me.idLength)||!ao(o.token,me.displayLength)||typeof o.text!=`string`||o.text.length>me.pastePayloadLength||typeof o.characterCount!=`number`||!Number.isSafeInteger(o.characterCount)||o.characterCount!==ro(o.text)||typeof o.index!=`number`||!Number.isSafeInteger(o.index)||o.index<1))for(let t=e.indexOf(o.token);t>=0&&n.length<me.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>me.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)},so=e=>{try{let t=JSON.parse(e);if(!io(t)||typeof t.text!=`string`)return{text:e,references:[]};if(t.type===to||t.type===`openchamber-composer-reference-draft`)return(t.version===2?E(t.text,t.references):void 0)??{text:t.text,references:[]};if(t.type===no||t.type===`openchamber-pasted-text-draft`){let e=t.version===1&&Array.isArray(t.references)?oo(t.text,t.references):[];return E(t.text,e)??{text:t.text,references:[]}}}catch{}return{text:e,references:[]}},co=`file://`,lo=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(`/`)},uo=e=>{let t=e.replace(/\\/g,`/`).trim();return t.toLowerCase().startsWith(co)?t:`${co}${lo(t)}`},fo=(e,t)=>`${e}\u0000${t}`,po=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)}),mo=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)},ho=(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,go=e=>({version:1,key:e,revision:1,text:``,attachments:[],syntheticParts:[],mentions:[]}),_o=(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}),vo=((e={})=>{let t=e.sink??ta(),n=e.repository??_a(t),r=e.coordinator??va(t),i=e.blobStore??Na(),a=e.durability??eo(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,w=new Set;return Ne()((t,r)=>{let E=e=>o.set(e,(o.get(e)??0)+1),D=(...e)=>{for(let t of e)c.set(t,(c.get(t)??0)+1),l.delete(t)},O=e=>be(e),k=()=>e.runtimeCapture?.()??{transportIdentity:u(),generation:f()},A=e=>{let t=k();return t.transportIdentity===e.transportIdentity&&t.generation===e.generation},ee=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)],j=e=>new Set(ee(e).map(e=>e.attachmentRefID)),te=(e,t,n)=>{let r=j(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))}}},M=()=>e.createID?.()??Oe(),ne=async(e,t)=>{let n=t instanceof File?t:new File([t],e.filename,{type:e.mimeType});return{id:e.attachmentID,file:n,dataUrl:typeof t==`string`?t:await po(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}:{}}},re=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`},N=(e,n)=>{let i=r(),s=_,c=n??k(),l=[...new Set(e)];if(l.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),!i.persistenceEnabled)return l.forEach(e=>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&&A(c)&&l.every(e=>(o.get(e)??0)===u.get(e)&&(r().drafts[e]?.revision??r().tombstones[e]??0)===d.get(e))}),i=_===s&&r().persistenceEnabled&&A(c);return(!i||n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)&&l.forEach(e=>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:re(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:re(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},ie=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}}))},ae=()=>{h&&clearTimeout(h),h=void 0;let e=[...m];m.clear();let t=g;return g=void 0,e.length?N(e,t).then(()=>void 0):Promise.resolve()},oe=e=>{if(!r().persistenceEnabled){S.add(e);return}m.add(e),ie([e]),!h&&(g=k(),h=setTimeout(()=>{ae()},40))},se=e=>{let t=[...e];return t.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),N(t)},P=(e,n,i,a=`immediate`)=>{let o=z(e),s=r().drafts[o];if(!s||i!==void 0&&s.revision!==i)return;let c=O(n(s));if(!(!c||z(c.key)!==o))return E(o),t(e=>({drafts:{...e.drafts,[o]:c},...te(e,o,c)})),a===`deferred`?oe(o):se([o]),c},le=e=>e?de(e):void 0,ue=(e=[])=>JSON.parse(JSON.stringify(e)),F=(e,t,n,r=!1,i=!1)=>({status:e,...le(n)?{record:le(n)}:{},errors:ue(t?.errors),cleanupErrors:ue(t?.cleanupErrors),current:r,durable:i}),fe=(e,t,n,r,i=!1,a=!1)=>({status:e,errors:ue(t?.errors),cleanupErrors:ue(t?.cleanupErrors),current:i,durable:a,source:le(n),destination:le(r)}),pe=e=>e.status,I=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,L=(e,...t)=>{let n={...e};for(let e of t)delete n[e];return n},me=async(e,t)=>{let n={},i=r().draftAttachmentViews[z(e.key)]??{};for(let r of ee(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`&&je(i[r.attachmentRefID].dataUrl)?i[r.attachmentRefID].dataUrl:void 0);if(r.locator.kind===`url`&&e!==void 0&&(e!==r.locator.url||!je(e))||r.locator.kind===`blob`&&e!==void 0&&!(e instanceof Blob)&&!(typeof e==`string`&&je(e)))return;e!==void 0&&(n[r.attachmentRefID]=await ne(r,e))}return n},he=e=>e?z(e):`legacy-unowned`,ge=e=>C.get(e)??0,_e=e=>{C.set(e,ge(e)+1)},ve=(e,n,r=!1)=>{r&&_e(e),t(t=>{let r=n(t.attachmentBuckets[e]??[]);return{attachmentBuckets:{...t.attachmentBuckets,[e]:r},...he(t.activeAttachmentDraft)===e?{attachedFiles:r}:{}}})};return{drafts:{},tombstones:{},draftHydration:{},draftPersistence:{},draftAttachmentViews:{},draftMissingAttachmentRefIDs:{},draftAttachmentPersistence:{},persistenceEnabled:e.persistenceEnabled??!0,legacyDraftEntries:{},migration:{complete:!1,claimedTransportIdentity:``},captureDraftRuntime:()=>k(),commitDraftSnapshot:async e=>{let n=z(e.key),i=e.runtime;if(i.transportIdentity!==e.key.transportIdentity||!A(i))return F(`stale`,void 0);let s=r(),c=s.drafts[n],l=s.tombstones[n]??0;if(e.expectedRevision!==`absent`&&!I(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return F(`failed`,void 0);if(e.expectedRevision===`absent`?c:c?.revision!==e.expectedRevision)return F(`conflict`,void 0,c);let u=e.expectedRevision===`absent`?l+1:e.expectedRevision+1;if(!I(u))return F(`failed`,void 0);let d=O({version:1,key:e.key,revision:u,...e.snapshot});if(!d)return F(`failed`,void 0);let f=await me(d,e.values);if(!f)return F(`failed`,void 0);let p=o.get(n)??0,m=c?.revision??l,h=await a.commit({drafts:{[n]:d},isCurrent:()=>A(i)&&(o.get(n)??0)===p&&(r().drafts[n]?.revision??r().tombstones[n]??0)===m,resolveBlobValue:t=>e.values?.get(t.attachmentOccurrenceRefID)});if(h.status!==`committed`)return F(pe(h),h,c);let g=(o.get(n)??0)===p&&(r().drafts[n]?.revision??r().tombstones[n]??0)===m,_=A(i);if(!g)return _||t(e=>({draftAttachmentViews:L(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:L(e.draftMissingAttachmentRefIDs,n),draftHydration:L(e.draftHydration,n),draftPersistence:L(e.draftPersistence,n),draftAttachmentPersistence:L(e.draftAttachmentPersistence,n)})),F(`stale`,h,d,!1,!0);let v=de(d);return v?(E(n),D(n),t(e=>({drafts:{...e.drafts,[n]:v},tombstones:(()=>{let t={...e.tombstones};return delete t[n],t})(),draftAttachmentViews:_?{...e.draftAttachmentViews,[n]:f}:L(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:_?{...e.draftMissingAttachmentRefIDs,[n]:[]}:L(e.draftMissingAttachmentRefIDs,n),draftHydration:_?e.draftHydration:L(e.draftHydration,n),draftPersistence:_?{...e.draftPersistence,[n]:{status:`saved`,revision:v.revision}}:L(e.draftPersistence,n),draftAttachmentPersistence:_?{...e.draftAttachmentPersistence,[n]:h.cleanupErrors.length?{status:`error`,revision:v.revision,errorCode:re(h)}:{status:`saved`,revision:v.revision}}:L(e.draftAttachmentPersistence,n)})),F(_?`committed`:`stale`,h,v,_,!0)):F(`failed`,h)},deleteDraftSnapshot:async e=>{let n=z(e.key),i=e.runtime;if(i.transportIdentity!==e.key.transportIdentity||!A(i))return F(`stale`,void 0);let s=r(),c=s.drafts[n],l=s.tombstones[n]??0;if(!I(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return F(`failed`,void 0);if(!c||c.revision!==e.expectedRevision)return F(`conflict`,void 0);let u=e.expectedRevision+1;if(!I(u))return F(`failed`,void 0);let d=o.get(n)??0,f=c.revision,p=Math.max(l,u),m=await a.commit({tombstones:{[n]:p},delete:[n],isCurrent:()=>A(i)&&(o.get(n)??0)===d&&r().drafts[n]?.revision===f&&(r().tombstones[n]??0)===l});if(m.status!==`committed`)return F(pe(m),m);let h=(o.get(n)??0)===d&&r().drafts[n]?.revision===f&&(r().tombstones[n]??0)===l,g=A(i);return h?(E(n),D(n),t(e=>{let t={...e.drafts};return delete t[n],{drafts:t,tombstones:{...e.tombstones,[n]:Math.max(e.tombstones[n]??0,p)},draftAttachmentViews:L(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:L(e.draftMissingAttachmentRefIDs,n),draftHydration:L(e.draftHydration,n),draftPersistence:L(e.draftPersistence,n),draftAttachmentPersistence:L(e.draftAttachmentPersistence,n)}}),F(g?`committed`:`stale`,m,void 0,g,!0)):(g||t(e=>({draftAttachmentViews:L(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:L(e.draftMissingAttachmentRefIDs,n),draftHydration:L(e.draftHydration,n),draftPersistence:L(e.draftPersistence,n),draftAttachmentPersistence:L(e.draftAttachmentPersistence,n)})),F(`stale`,m,void 0,!1,!0))},finalizeDraftOwnership:async e=>{let n=z(e.source),i=z(e.destination),s=e.runtime,c=r(),l=c.drafts[n],u=c.drafts[i];if(n===i||e.destination.owner.kind!==`session`||e.source.transportIdentity!==s.transportIdentity||e.destination.transportIdentity!==s.transportIdentity||!A(s))return fe(`stale`,void 0,l,u);if(!I(e.expectedSourceRevision))return fe(`failed`,void 0,l,u);if(!l||l.revision!==e.expectedSourceRevision||u)return fe(`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 fe(`failed`,void 0,l,u);let h=Math.max(l.revision+1,m+1);if(!I(h))return fe(`failed`,void 0,l,u);let g=O(e.disposition===`preserve`?{...l,key:e.destination,revision:h}:{...go(e.destination),revision:h});if(!g)return fe(`failed`,void 0,l,u);let _=await a.commit({drafts:{[i]:g},tombstones:{[n]:Math.max(p,h)},delete:[n],isCurrent:()=>A(s)&&(o.get(n)??0)===d&&(o.get(i)??0)===f&&r().drafts[n]?.revision===l.revision&&!r().drafts[i]&&(r().tombstones[n]??0)===p&&(r().tombstones[i]??0)===m,resolveBlobValue:e=>c.draftAttachmentViews[n]?.[e.attachmentOccurrenceRefID]?.file});if(_.status!==`committed`)return fe(pe(_),_,l,u);let v=(o.get(n)??0)===d&&r().drafts[n]?.revision===l.revision&&(r().tombstones[n]??0)===p,y=(o.get(i)??0)===f&&!r().drafts[i]&&(r().tombstones[i]??0)===m,b=A(s),x=de(g);if(!x)return fe(`failed`,_,l,u);if(b&&!v&&!y)return fe(`stale`,_,l,g,!1,!0);v&&(E(n),D(n)),y&&(E(i),D(i)),t(t=>{let r=t.drafts,a=t.tombstones;(v||y)&&(r={...r}),(v||y)&&(a={...a}),v&&(delete r[n],a[n]=Math.max(a[n]??0,h)),y&&(r[i]=x,delete a[i]);let o=t.draftHydration,s=t.draftPersistence,c=t.draftAttachmentViews,l=t.draftMissingAttachmentRefIDs,u=t.draftAttachmentPersistence;return b?(v&&(o=L(o,n),s=L(s,n),c=L(c,n),l=L(l,n),u=L(u,n)),y&&(o=L(o,i),s={...L(s,i),[i]:{status:`saved`,revision:x.revision}},c=L(c,i),l=L(l,i),u={...L(u,i),[i]:_.cleanupErrors.length?{status:`error`,revision:x.revision,errorCode:re(_)}:{status:`saved`,revision:x.revision}},b&&v&&e.disposition===`preserve`&&(c={...c,[i]:t.draftAttachmentViews[n]??{}},l={...l,[i]:t.draftMissingAttachmentRefIDs[n]??[]}))):(o=L(o,n,i),s=L(s,n,i),c=L(c,n,i),l=L(l,n,i),u=L(u,n,i)),{drafts:r,tombstones:a,draftHydration:o,draftPersistence:s,draftAttachmentViews:c,draftMissingAttachmentRefIDs:l,draftAttachmentPersistence:u}});let S=v&&y&&b;return fe(S?`committed`:`stale`,_,l,g,S,!0)},flushDraftPersistence:async()=>{for(await ae();p.size;)await Promise.all([...p]);await a.flush()},ensureDraft:e=>{let n=z(e),i=r().drafts[n];if(i)return i;let a=O({...go(e),revision:(r().tombstones[n]??0)+1});if(!a)throw Error(`Invalid empty draft`);return E(n),t(e=>({drafts:{...e.drafts,[n]:a}})),se([n]),a},getDraft:e=>r().drafts[z(e)],setDraftText:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return P(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 P(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)=>P(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)=>P(e,e=>({...e,revision:e.revision+1,mentions:t})),addDraftMention:(e,t)=>P(e,e=>({...e,revision:e.revision+1,mentions:[...e.mentions,t]})),removeDraftMention:(e,t)=>P(e,e=>({...e,revision:e.revision+1,mentions:e.mentions.filter(e=>e.value!==t)})),setDraftSyntheticParts:(e,t)=>P(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 P(e,e=>({...e,revision:e.revision+1,syntheticParts:a}),n.revision)?i:null},setDraftAttachments:(e,t)=>P(e,e=>({...e,revision:e.revision+1,attachments:t})),addDraftLocalAttachment:async(e,n,i={})=>{let a=r().getDraft(e);if(i.partID&&!a?.syntheticParts.some(e=>e.partID===i.partID))return;let s=z(e),c=o.get(s)??0,l=r().tombstones[s]??0,u=k(),d=n instanceof File?n:new File([n],i.filename??`attachment`,{type:n.type}),f;try{f=await po(d)}catch{let e=r().drafts[s];if(A(u)&&(r().tombstones[s]??0)===l&&(e?z(e.key)===s:(o.get(s)??0)===c)&&(!i.partID||e?.syntheticParts.some(e=>e.partID===i.partID))){let n=e?.revision??r().tombstones[s]??0;t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[s]:{status:`error`,revision:n,errorCode:`transaction-failed`}}}))}return}if(!A(u)||(r().tombstones[s]??0)!==l)return;let p=r().drafts[s];if(!p&&(o.get(s)??0)!==c)return;let m=p??r().ensureDraft(e);if(z(m.key)!==s||i.partID&&!m.syntheticParts.some(e=>e.partID===i.partID))return;let h=i.attachmentID??M(),g=i.partID?T(i.partID,h):ce(h),_=M(),v={attachmentID:h,attachmentRefID:g,filename:i.filename??(n instanceof File?n.name:`attachment`),mimeType:n.type,size:n.size,locator:{kind:`blob`,blobID:_},source:i.source??`local`,...i.vscodePath?{vscodePath:i.vscodePath}:{},...i.vscodeSource?{vscodeSource:i.vscodeSource}:{}},y=i.partID?{...m,revision:m.revision+1,syntheticParts:m.syntheticParts.map(e=>e.partID===i.partID?{...e,attachments:[...e.attachments,v]}:e)}:{...m,revision:m.revision+1,attachments:[...m.attachments,v]},b=O(y);if(!b)return;E(s);let 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 N([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??M(),o=n.partID?T(n.partID,a):ce(a),s={attachmentID:a,attachmentRefID:o,filename:n.filename,mimeType:n.mimeType,size:n.size,source:n.source,locator:{kind:`url`,url:n.url},...n.serverPath?{serverPath:n.serverPath}:{},...n.vscodePath?{vscodePath:n.vscodePath}:{},...n.vscodeSource?{vscodeSource:n.vscodeSource}:{}},c=n.partID?{...i,revision:i.revision+1,syntheticParts:i.syntheticParts.map(e=>e.partID===n.partID?{...e,attachments:[...e.attachments,s]}:e)}:{...i,revision:i.revision+1,attachments:[...i.attachments,s]},l=O(c);if(!l)return;let u=z(e);E(u);let d={id:a,file:new File([],s.filename,{type:s.mimeType}),dataUrl:n.url,mimeType:s.mimeType,filename:s.filename,size:s.size,source:s.source,...s.serverPath?{serverPath:s.serverPath}:{},...s.vscodePath?{vscodePath:s.vscodePath}:{},...s.vscodeSource?{vscodeSource:s.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[u]:l},draftAttachmentViews:{...e.draftAttachmentViews,[u]:{...e.draftAttachmentViews[u],[o]:d}}})),N([u]),s},getDraftAttachmentViews:e=>{let t=z(e),n=r().drafts[t],i=r().draftAttachmentViews[t]??{};return n?ee(n).flatMap(e=>i[e.attachmentRefID]?[i[e.attachmentRefID]]:[]):[]},retryDraftAttachmentPersistence:async e=>{let n=z(e);if(!r().persistenceEnabled||!r().drafts[n]&&!r().tombstones[n])return;let i=await a.retryCleanup();i.cleanupErrors.length&&t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[n]:{status:`error`,revision:e.drafts[n]?.revision??e.tombstones[n],errorCode:re(i)}}})),await N([n])},hydrateDraftAttachments:async e=>{let n=z(e),a=l.get(n);if(a)return a;let o=r().drafts[n];if(!o)return;let s=(c.get(n)??0)+1;c.set(n,s);let u=k(),d=_,f=(async()=>{t(e=>({draftHydration:{...e.draftHydration,[n]:`loading`}}));let e=()=>{if(c.get(n)!==s)return;let e=r(),i=e.draftAttachmentViews[n],a=e.draftMissingAttachmentRefIDs[n]??[];t(e=>({draftHydration:{...e.draftHydration,[n]:a.length?`degraded`:Object.keys(i??{}).length?`ready`:`idle`}}))},a={},l=[];for(let f of ee(o)){let p=f.locator.kind===`url`?{ok:!0,value:f.locator.url}:await i.read(f.locator.blobID);if(!p.ok){if(p.error.code===`missing-blob`)l.push(f.attachmentRefID);else{c.get(n)===s&&_===d&&A(u)&&r().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}continue}try{a[f.attachmentRefID]=await ne(f,p.value)}catch{c.get(n)===s&&_===d&&A(u)&&r().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}}let f=r(),p=f.drafts[n],m=c.get(n);if(m===s&&_===d&&A(u)&&p===o)t(e=>({draftAttachmentViews:{...e.draftAttachmentViews,[n]:a},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[n]:l},draftHydration:{...e.draftHydration,[n]:l.length?`degraded`:`ready`}}));else if(m===s){let e=f.draftAttachmentViews[n],r=f.draftMissingAttachmentRefIDs[n]??[];t(t=>({draftHydration:{...t.draftHydration,[n]:r.length?`degraded`:Object.keys(e??{}).length?`ready`:`idle`}}))}})();l.set(n,f);try{await f}finally{l.get(n)===f&&l.delete(n)}},removeDraftAttachment:async(e,n)=>{let i=z(e),a=r().drafts[i],o=a&&ee(a).find(e=>e.attachmentRefID===n);if(!a||!o)return!1;let s=Ct(o)?Et(a.text,[o.filename],a.mentions,a.composerReferences):void 0,c=O({...a,revision:a.revision+1,...s?.changed?{text:s.text,mentions:s.mentions,...s.composerReferences===void 0?{}:{composerReferences:s.composerReferences}}:{},attachments:a.attachments.filter(e=>e.attachmentRefID!==n),syntheticParts:a.syntheticParts.map(e=>({...e,attachments:e.attachments.filter(e=>e.attachmentRefID!==n)}))});return c?(E(i),t(e=>{let t={...e.draftAttachmentViews[i]};return delete t[n],{drafts:{...e.drafts,[i]:c},draftAttachmentViews:{...e.draftAttachmentViews,[i]:t},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[i]:(e.draftMissingAttachmentRefIDs[i]??[]).filter(e=>e!==n)}}}),(await N([i])).status===`committed`):!1},replaceDraftAttachment:async(e,n,i,a)=>{let o=z(e),s=r().drafts[o],c=s&&ee(s).find(e=>e.attachmentRefID===n);if(!s||!c)return;let l=k(),u=r().tombstones[o]??0,d=i instanceof File?i:new File([i],a?.filename??`attachment`,{type:i.type}),f;try{f=await po(d)}catch{let e=r().drafts[o],i=e&&ee(e).find(e=>e.attachmentRefID===n);A(l)&&(r().tombstones[o]??0)===u&&e&&i?.attachmentID===c.attachmentID&&i.attachmentRefID===c.attachmentRefID&&z(e.key)===o&&t(t=>({draftAttachmentPersistence:{...t.draftAttachmentPersistence,[o]:{status:`error`,revision:e.revision,errorCode:`transaction-failed`}}}));return}let p=r().drafts[o],m=p&&ee(p).find(e=>e.attachmentRefID===n);if(!A(l)||(r().tombstones[o]??0)!==u||!p||m?.attachmentID!==c.attachmentID||m.attachmentRefID!==c.attachmentRefID||z(p.key)!==o)return;let h=p.syntheticParts.find(e=>e.attachments.some(e=>e.attachmentRefID===n)),g=M(),_={attachmentID:g,attachmentRefID:h?T(h.partID,g):ce(g),filename:a?.filename??d.name,mimeType:d.type,size:d.size,locator:{kind:`blob`,blobID:M()},source:a?.source??`local`,...a?.vscodePath?{vscodePath:a.vscodePath}:{},...a?.vscodeSource?{vscodeSource:a.vscodeSource}:{}},v=O({...p,revision:p.revision+1,attachments:h?p.attachments:p.attachments.map(e=>e.attachmentRefID===n?_:e),syntheticParts:p.syntheticParts.map(e=>e.partID===h?.partID?{...e,attachments:e.attachments.map(e=>e.attachmentRefID===n?_:e)}:e)});if(!v)return;E(o);let y={id:g,file:d,dataUrl:f,mimeType:_.mimeType,filename:_.filename,size:_.size,source:_.source,..._.vscodePath?{vscodePath:_.vscodePath}:{},..._.vscodeSource?{vscodeSource:_.vscodeSource}:{}};return t(e=>{let t={...e.draftAttachmentViews[o]};return delete t[n],{drafts:{...e.drafts,[o]:v},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...t,[_.attachmentRefID]:y}},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[o]:(e.draftMissingAttachmentRefIDs[o]??[]).filter(e=>e!==n)}}}),(await N([o])).status===`committed`?_:void 0},replaceDraftRootAttachments:async(e,t)=>{let n=z(e),i=k();if(i.transportIdentity!==e.transportIdentity||!A(i))return F(`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=ce(t);if(e.source===`server`&&e.dataUrl&&je(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&&je(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=M();s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),c.set(n,r)}}let l=a?.syntheticParts??[];for(let e of l)for(let t of e.attachments)t.locator.kind===`url`&&!c.has(t.attachmentRefID)&&c.set(t.attachmentRefID,t.locator.url);let u={text:a?.text??``,attachments:s,syntheticParts:l,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return r().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:u,values:c,runtime:i})},restoreDraftRootAttachments:async(e,t)=>{let n=z(e),i=k();if(i.transportIdentity!==e.transportIdentity||!A(i))return F(`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=ce(t);if(e.source===`server`&&e.dataUrl&&je(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&&je(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=M();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`&&je(t.dataUrl)&&l.set(e.attachmentRefID,t.dataUrl)}let d=a?.syntheticParts??[];for(let e of d)for(let t of e.attachments)t.locator.kind===`url`&&!l.has(t.attachmentRefID)&&l.set(t.attachmentRefID,t.locator.url);let f={text:a?.text??``,attachments:c,syntheticParts:d,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return r().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:f,values:l,runtime:i})},deleteDraft:(e,n)=>{let i=z(e),a=r().drafts[i];if(!a||n!==void 0&&a.revision!==n)return!1;let o=a.revision+1;return I(o)?(E(i),D(i),t(e=>{let t={...e.drafts};delete t[i];let n={...e.draftHydration},r={...e.draftPersistence},a={...e.draftAttachmentViews},s={...e.draftMissingAttachmentRefIDs},c={...e.draftAttachmentPersistence};return delete n[i],delete r[i],delete a[i],delete s[i],delete c[i],{drafts:t,tombstones:{...e.tombstones,[i]:Math.max(e.tombstones[i]??0,o)},draftHydration:n,draftPersistence:r,draftAttachmentViews:a,draftMissingAttachmentRefIDs:s,draftAttachmentPersistence:c}}),N([i]),!0):!1},moveDraft:(e,n,i)=>{let a=z(e),o=z(n),s=r().drafts[a];if(!s||a===o||i!==void 0&&s.revision!==i||r().drafts[o]||(r().tombstones[o]??0)>=s.revision+1||[...s.attachments,...s.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.locator.kind===`blob`))return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),N([a,o]),c},moveDraftWithAttachments:async(e,n,i)=>{let a=z(e),o=z(n),s=r().drafts[a];if(!s||a===o||i!==void 0&&s.revision!==i||r().drafts[o]||(r().tombstones[o]??0)>=s.revision+1)return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),(await N([a,o])).status===`committed`?c:void 0},setDraftPersistenceEnabled:async e=>{if(_+=1,!e){h&&clearTimeout(h),h=void 0,m.clear(),g=void 0,t({persistenceEnabled:!1,draftPersistence:{}}),await a.setEnabled(!1),await a.flush();return}t({persistenceEnabled:!0}),await a.setEnabled(!0);let n=k();b||await r().hydrateDraftMetadata(n.transportIdentity);let i=new Set([...Object.keys(r().drafts),...Object.keys(r().tombstones),...S]);S.clear(),await N(i),await a.flush()},hydrateDraftMetadata:e=>{let i=d.get(e);if(i)return i;let c=(async()=>{let i=(s.get(e)??0)+1;s.set(e,i);let c=k();if(c.transportIdentity!==e)return!1;let l=_,u=new Map(o),d=v,f=Object.entries(r().drafts).filter(([,t])=>t.key.transportIdentity===e).map(([e])=>e);t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`loading`]))}}));let p=r().persistenceEnabled,m;try{m=await n.migrate(e,{persistenceEnabled:p})}catch{return!1}if(s.get(e)!==i||_!==l||!A(c))return!1;if(!m.ok)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(t=>[t,e.drafts[t]?`degraded`:`error`]))}})),!1;let h=m.value;if(!b){x??=a.seed(h).finally(()=>{x=void 0});let n;try{n=await x}catch{return!1}if(s.get(e)!==i||_!==l||!A(c))return!1;if(n.status!==`committed`&&n.status!==`disabled`)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`degraded`]))}})),!1;n.status===`committed`&&(b=!0)}let g=r(),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=O(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=z(r),a=so(n.text),s=O({...go(r),text:a.text,composerReferences:a.references,mentions:_o(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 N(T),await a.flush()}catch{return!1}return s.get(e)===i&&_===l&&A(c)})();return d.set(e,c),c.finally(()=>{d.get(e)===c&&d.delete(e)}).catch(()=>void 0),c},claimLegacyNewDraft:async e=>{let n=r().legacyNewDraft;if(!n)return r().getDraft(e);let i=z(e),a=r().drafts[i];if(v+=1,y=!0,a||r().tombstones[i])return t({legacyNewDraft:void 0}),N([i]),a;let o=so(n.text),s=O({...go(e),text:o.text,composerReferences:o.references,mentions:_o(o.text,n.mentions)});if(s)return E(i),t(e=>({drafts:{...e.drafts,[i]:s},legacyNewDraft:void 0})),N([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=he(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=he(t),i=ge(n),a=await r().addDraftLocalAttachment(t,e);i!==ge(n)&&a&&r().removeDraftAttachment(t,a.attachmentRefID);return}let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,i=he(null),a=ge(i),o;try{o=await po(e)}catch{return}if(a!==ge(i))return;let s={id:n,file:e,dataUrl:o,mimeType:e.type,filename:e.name,size:e.size,source:`local`};ve(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}ve(he(null),t=>t.filter(t=>t.id!==e))},setAttachedFiles:e=>{ve(he(r().activeAttachmentDraft),()=>e,!0)},clearAttachedFiles:()=>{let e=r().activeAttachmentDraft;if(e){_e(he(e)),r().getDraft(e)||r().ensureDraft(e),r().setDraftAttachments(e,[]);return}ve(he(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=uo(t);r().addDraftDurableAttachment(e,{filename:n,mimeType:`text/plain`,size:i||0,source:`vscode`,vscodePath:t,vscodeSource:`file`,url:a})},addDraftVSCodeSelectionAttachment:async(e,t,n)=>{let i=z(e),a=ge(i),o=`${i}\u0000${fo(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)||w.has(o))){w.add(o);try{let o=await r().addDraftLocalAttachment(e,n,{source:`vscode`,vscodePath:t,vscodeSource:`selection`});a!==ge(i)&&o&&r().removeDraftAttachment(e,o.attachmentRefID)}finally{w.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=he(null);if((r().attachmentBuckets[o]??[]).some(t=>t.source===`vscode`&&t.vscodeSource===`file`&&(t.vscodePath||``)===e))return;let s=uo(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`};ve(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=he(null),o=ge(a),s=`${a}\u0000${fo(e,t.name)}`;if((r().attachmentBuckets[a]??[]).some(n=>n.source===`vscode`&&n.vscodeSource===`selection`&&n.filename===t.name&&n.vscodePath===e)||w.has(s))return;w.add(s);let c;try{c=await po(t)}catch{return}finally{w.delete(s)}if(o!==ge(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`};ve(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=>{ho(r().activeEditorFile,e)||t({activeEditorFile:e})},addRestoredAttachment:({url:e,mimeType:t,filename:n})=>{let i=r().activeAttachmentDraft;if(i){if(e.startsWith(`data:`)){let a=z(i);(async()=>{try{let o=await(await fetch(e)).blob(),s=new File([o],n,{type:t||o.type||`application/octet-stream`}),c=r().activeAttachmentDraft;if(!c||z(c)!==a)return;await r().addDraftLocalAttachment(i,s)}catch{}})();return}if(!je(e))return;r().addDraftDurableAttachment(i,{filename:n,mimeType:t,size:mo(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:mo(e),source:`local`,serverPath:e};ve(he(null),e=>[...e,a])}}})})(),yo=[`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 bo(e,t,n){if(!Co().size)return n;let r=n;n.session&&n.session!==t.session&&n.session.some(t=>!Do(t.id,e))&&(r={...r,session:n.session.filter(t=>Do(t.id,e))});for(let i of yo){let a=n[i];if(!a||a===t[i])continue;let o=Object.keys(a).filter(t=>!Do(t,e));if(!o.length)continue;let s={...a};for(let e of o)delete s[e];r={...r,[i]:s}}return r}var xo=``,So=new Map;function Co(){let e=`${u()}:${f()}`;return xo!==e&&(xo=e,So.clear()),So}function wo(e){return Co().get(e)?.directory}function To(e,t,n){let r=Co().get(e);return r&&t&&typeof n==`number`&&n>r.clock&&S(t)!==r.directory&&Eo(e,t,n),wo(e)}function Eo(e,t,n,r){let i=Co(),a=i.get(e);return t=S(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 Do(e,t){let n=wo(e);return!n||n===S(t)}var Oo={asrContext:`The speaker is discussing software development and technical tasks with an AI assistant. Speech may mix Mandarin Chinese and English within the same sentence. The conversation may cover requirements, system design, implementation, debugging, testing, deployment, and maintenance. Common software engineering terms include alpha, beta, release, stable, version, build, branch, commit, merge, pull request, code review, bug, fix, hotfix, patch, refactor, rollback, deploy, CI/CD, API, SDK, and CLI. Technical terms, product names, acronyms, and code identifiers may be spoken in English within otherwise Chinese sentences.`,showMessageTTSButtons:!1,voiceProvider:`browser`,speechRate:1,speechPitch:1,speechVolume:1,ttsInputMode:`final`,sayVoice:`Samantha`,localTtsVoiceId:0,browserVoice:``,openaiVoice:`nova`,openaiApiKey:``,openaiApiKeyConfigured:!1,openaiCompatibleUrl:``,openaiCompatibleApiKey:``,openaiCompatibleApiKeyConfigured:!1,openaiCompatibleVoice:`af_sky`,openaiCompatibleTtsModel:`kokoro`,dictationEnabled:!1,sttProvider:`local`,sttServerUrl:`http://localhost:8001/v1`,sttApiKey:``,sttApiKeyConfigured:!1,sttModel:`deepdml/faster-whisper-large-v3-turbo-ct2`,sttLocalModel:`parakeet-tdt-0.6b-v2-int8`,sttLanguage:``,summarizeMessageTTS:!1,summarizeVoiceConversation:!1,summarizeCharacterThreshold:200,summarizeMaxLength:500,configured:!1,apiKey:``,voice:`zh_female_vv_uranus_bigtts`,resourceId:`seed-tts-2.0`,asrResourceId:`volc.seedasr.sauc.duration`},ko=new Set([`apiKey`,`openaiApiKey`,`openaiCompatibleApiKey`,`sttApiKey`]);function Ao(e){if(!e||typeof e!=`object`)throw Error(`Invalid speech settings`);let t=e,n={...Oo};for(let e of Object.keys(Oo))if(!ko.has(e)){if(e===`asrContext`&&t[e]===void 0){n.asrContext=``;continue}if(typeof t[e]!=typeof Oo[e])throw Error(`Invalid speech settings`);Object.assign(n,{[e]:t[e]})}if(![`browser`,`local`,`openai`,`openai-compatible`,`say`,`volcengine`].includes(n.voiceProvider)||![`local`,`openai-compatible`,`volcengine`].includes(n.sttProvider)||![`final`,`sanitized`,`raw`,`summarized`].includes(n.ttsInputMode))throw Error(`Invalid speech settings`);return n}var jo=new Set;function Mo(e){return jo.add(e),()=>{jo.delete(e)}}function No(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 jo)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 Po(e,t){return e.scopes.includes(`all`)||e.scopes.includes(t)}var Fo=`Updating OpenCode configuration...`,Io=0,Lo=Fo,Ro=new Set;function zo(){let e={isUpdating:Io>0,message:Lo};Ro.forEach(t=>t(e))}function Bo(e){Io+=1,Io===1?(Lo=e||Fo,zo()):e&&(Lo=e,zo())}function Vo(){Io!==0&&(--Io,Io===0&&(Lo=Fo,zo()))}function Ho(e){Lo===e&&Io>0||(Lo=e,Io>0&&zo())}function Uo(e){return Ro.add(e),e({isUpdating:Io>0,message:Lo}),()=>{Ro.delete(e)}}function Wo(){return{isUpdating:Io>0,message:Lo}}var Go=wr(),Ko=`projects`,qo=`activeProjectId`,Jo=`projects:manualOrder`,Yo=(e,t)=>{let n=e.trim();return!n.startsWith(`~`)||!t?n:n===`~`?t:n.startsWith(`~/`)||n.startsWith(`~\\`)?`${t}${n.slice(1)}`:n},Xo=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,Zo=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},Qo=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t&&Xo.test(t)?t.toLowerCase():null},$o=e=>{let t=e.trim();if(!t)return``;let n=Yo(t,k(`homeDirectory`,{storage:Go})||Xe.getState().homeDirectory||``).replace(/\\/g,`/`);return n===`/`?`/`:n.length>1?n.replace(/\/+$/,``):n},es=e=>{let t=$o(e);if(!t||t===`/`)return`Root`;let n=t.split(`/`).filter(Boolean);return n[n.length-1]||t},ts=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}},ns=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},rs=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)}),is=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=$o(a);if(!o)continue;let s=Ce(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=ts(e.iconImage);t&&(c.iconImage=t)}typeof e.color==`string`&&e.color.trim().length>0&&(c.color=e.color.trim());let l=Zo(e.defaultModel);if(l&&(c.defaultModel=l),e.iconBackground===null)c.iconBackground=null;else{let t=Qo(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},as=()=>{try{let e=k(Ko,{storage:Go});return e?is(JSON.parse(e)):[]}catch{return[]}},os=()=>{if(!P())return null;let e=g().trim().replace(/\/+$/,``);return e?Go.getItem(`${Ko}:${encodeURIComponent(e)}:manualOrder`):null},ss=()=>{try{let e=k(Jo,{storage:Go})||os();if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}},cs=()=>{try{let e=k(qo,{storage:Go});if(typeof e==`string`&&e.trim().length>0)return e.trim()}catch{return null}return null},ls=(e,t)=>{try{ne(Ko,JSON.stringify(e),{storage:Go})}catch{}try{t?ne(qo,t,{storage:Go}):j(qo,{storage:Go})}catch{}},us=(e,t,n)=>{ls(e,t),n&&ds(n),ge({projects:e,activeProjectId:t??void 0})},ds=e=>{try{ne(Jo,JSON.stringify(e),{storage:Go})}catch{}},fs=as(),ps=(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},ms=e=>{let t=[],n=new Set;for(let r of e){let e=$o(r.path);!e||n.has(e)||(n.add(e),t.push({name:r.name?.trim(),path:e}))}return t},hs=(e,t,n,r)=>{let i=$o(e.path);if(!i)return null;let a=Ce(i),o=r===i;return{...t,id:a,path:i,label:es(i),addedAt:t?.addedAt??n,lastOpenedAt:o?n:t?.lastOpenedAt??n}},gs=()=>{if(typeof window>`u`||!b()?.runtime?.isVSCode)return null;let e=window.__VSCODE_CONFIG__,t=Array.isArray(e?.workspaceFolders)?e.workspaceFolders.map(e=>{let t=e,n=typeof t.path==`string`?t.path.trim():``;return n?{name:typeof t.name==`string`?t.name.trim():``,path:n}:null}).filter(e=>e!==null):[];if(t.length>0)return ms(t);let n=e?.workspaceFolder;return typeof n!=`string`||n.trim().length===0?null:ms([{path:n}])},_s=(e,t,n)=>{let r=ms(e),i=n?$o(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=>hs(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 Ot(),{projects:s,activeProjectId:l,activeProject:c??s[0]??null}},vs=(e,t)=>e===t?!0:!e||!t?e===t:e.mime===t.mime&&e.updatedAt===t.updatedAt&&e.source===t.source,ys=(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&&vs(e.iconImage,r.iconImage):!1}),bs=(()=>{let e=gs();if(!e)return null;let t=_s(e,[]);return t?{projects:t.projects,activeProjectId:t.activeProjectId}:null})(),xs=typeof window>`u`?!1:!!b()?.runtime?.isVSCode,Ss=bs?.projects??(xs?[]:fs),Cs=bs?.activeProjectId??(xs?null:cs()),ws=Ss.some(e=>e.id===Cs)?Cs:Ss[0]?.id??null;bs&&ls(Ss,ws);var Ts=Ne()(Ie((e,t)=>({projects:Ss,activeProjectId:ws,manualProjectOrder:ss(),validateProjectPath:e=>{if(typeof e!=`string`||e.trim().length===0)return{ok:!1,reason:`Provide a directory path.`};let t=$o(e);return t?{ok:!0,normalizedPath:t}:{ok:!1,reason:`Directory path cannot be empty.`}},addProject:(n,r)=>{if(xs)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()||es(o),u={id:Ce(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)]}),Ot(),t().setActiveProject(u.id),t().discoverProjectIcon(u.id),u},removeProject:n=>{if(xs)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}),us(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&&(H.setDirectory(e.path),Xe.getState().setDirectory(e.path,{showOverlay:!1}))}else Xe.getState().goHome()},setActiveProject:n=>{if(xs)return;let{projects:r,activeProjectId:i}=t();if(i===n)return;let a=r.find(e=>e.id===n);a&&(e({activeProjectId:n}),us(r,n,t().manualProjectOrder),H.setDirectory(a.path),Xe.getState().setDirectory(a.path,{showOverlay:!1}))},setActiveProjectIdOnly:n=>{if(xs)return;let{projects:r,activeProjectId:i}=t();i!==n&&r.find(e=>e.id===n)&&(e({activeProjectId:n}),us(r,n,t().manualProjectOrder))},renameProject:(n,r)=>{if(xs)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}),us(s,o,t().manualProjectOrder)},updateProjectMeta:(n,r)=>{if(xs)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=Qo(r.iconBackground)),r.defaultModel!==void 0){let e=Zo(r.defaultModel);e?t.defaultModel=e:delete t.defaultModel}return t});e({projects:o}),us(o,a,t().manualProjectOrder)},uploadProjectIcon:async(e,n)=>{if(xs)return{ok:!1,error:`Custom icons are not supported in this runtime`};let r=ns(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 rs(n)).replace(/^data:[^;]+;/i,`data:${r};`),a=await x(`/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(xs)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let n=await x(`/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(xs)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let r=await x(`/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(xs)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}),us(o,a,c)},reorderProjectsById:(n,r)=>{if(xs)return;let{projects:i,activeProjectId:a}=t(),o=ps(i,n,r);if(o===i)return;let s=o.map(e=>e.id);e({projects:o,manualProjectOrder:s}),us(o,a,s)},moveProjectToTop:n=>{if(xs)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}),us(u,i,d))},resetForRuntimeSwitch:()=>{if(xs)return;let t=as(),n=cs(),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:ss().filter(e=>i.has(e))})},synchronizeFromSettings:n=>{if(xs||!Array.isArray(n.projects))return;let r=is(n.projects??[]),i=typeof n.activeProjectId==`string`&&n.activeProjectId.trim()?n.activeProjectId.trim():null,a=t(),o=JSON.stringify(a.projects)!==JSON.stringify(r),s=a.activeProjectId!==i,c=r.map(e=>e.id),l=JSON.stringify(a.manualProjectOrder)!==JSON.stringify(c);if(!(!o&&!s&&!l)&&(e({projects:o?r:a.projects,activeProjectId:i,manualProjectOrder:c}),ls(r,i),ds(c),i&&s)){let e=r.find(e=>e.id===i);e&&(H.setDirectory(e.path),Xe.getState().setDirectory(e.path,{showOverlay:!1}))}},syncVSCodeWorkspaceFolders:(n,r)=>{if(!xs)return null;let i=t(),a=i.activeProjectId?i.projects.find(e=>e.id===i.activeProjectId)??null:null,o=r??a?.path??null,s=_s(n,i.projects,o);if(!s)return n.length===0&&!r&&i.projects.length>0&&(e({projects:[],activeProjectId:null}),ls([],null)),null;let c=!ys(i.projects,s.projects),l=i.activeProjectId!==s.activeProjectId;return(c||l)&&(e({projects:s.projects,activeProjectId:s.activeProjectId}),ls(s.projects,s.activeProjectId)),s.activeProject&&(H.setDirectory(s.activeProject.path),Xe.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(`yuri:settings-synced`,e=>{let t=e.detail;t&&typeof t==`object`&&Ts.getState().synchronizeFromSettings(t)});var U=Tr(),Es=e=>e?.trim()||null,Ds=()=>{let e=Ts.getState().getActiveProject?.();return Es(e?.path)??Es(H.getDirectory())},Os=(e,t=u())=>y.commands.list(e,t),ks=(e=Ds(),t=u())=>{let n=Es(e);return{queryKey:Os(n,t),queryFn:async({signal:e})=>{let t=await x(`/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}},As=e=>{let t=(0,U.c)(3),n=e===void 0?{}:e,r=Ts(Ns),i=Es(n.directory)??Es(r)??Es(H.getDirectory()),a=n.enabled!==!1&&!!i,o=ks(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],Ir(s)},js=(e=Ds(),t=u())=>_.getQueryData(Os(Es(e),t))??[],Ms=async(e,t,n)=>{let r=Es(t);if(u()!==n)return e.getQueryData(Os(r,n))??[];let i=ks(r,n);return e.fetchQuery({...i,staleTime:0})};function Ns(e){return e.getActiveProject?.()?.path??null}var Ps=200,Fs=500,Is=512,Ls=1024,Rs=64,zs=100,Bs=100,Vs=new Set([`__proto__`,`prototype`,`constructor`]),Hs=new Set([`text`,`audio`,`image`,`video`,`pdf`]),Us=e=>{for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(n<=31||n>=127&&n<=159)return!0}return!1},Ws=e=>typeof e==`object`&&e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype?e:void 0,Gs=e=>{if(typeof e==`string`)return e.length>0&&e.length<=Is&&e.trim()===e&&!Us(e)&&!Vs.has(e)?e:void 0},Ks=e=>typeof e==`string`&&e.length>0&&e.length<=Ls&&e.trim()===e&&!Us(e)?e:void 0,qs=e=>typeof e==`string`&&e.length>0&&e.length<=Rs&&e.trim()===e&&!Us(e)?e:void 0,Js=e=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=1e9?e:void 0,Ys=e=>{let t=Ws(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))!Hs.has(e)||typeof r!=`boolean`||(n[e]=r);return Object.keys(n).length?n:void 0},Xs=e=>{if(!Array.isArray(e))return;let t={};for(let n of e)typeof n!=`string`||!Hs.has(n)||(t[n]=!0);return Object.keys(t).length?t:void 0},Zs=e=>{let t=Ws(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)?Xs(t.input):Ys(t.input),i=Array.isArray(t.output)?Xs(t.output):Ys(t.output);return r&&(n.input=r),i&&(n.output=i),Object.keys(n).length?n:void 0},Qs=e=>Ws(Array.isArray(e)?e.find(e=>Ws(e)&&!Ws(e.tier))??e.find(e=>Ws(e)):e),$s=e=>{if(Array.isArray(e))return e.map(e=>{if(typeof e==`string`)return e;let t=Ws(e);return typeof t?.id==`string`?t.id:void 0});let t=Ws(e);return t?Object.keys(t):null},ec=e=>{let t=Ws(e),n=Gs(t?.id),r=Ks(t?.name);if(!t||!n||!r)return{partial:!0};let i={id:n,name:r},a=!1,o=Zs(t.capabilities);o&&(i.capabilities=o);let s=Qs(t.cost);if(s){let e={},t=Js(s.input);t!==void 0&&(e.input=t);let n=Js(s.output);n!==void 0&&(e.output=n);let r=Ws(s.cache);if(r){let t={},n=Js(r.read);n!==void 0&&(t.read=n);let i=Js(r.write);i!==void 0&&(t.write=i),Object.keys(t).length&&(e.cache=t)}Object.keys(e).length&&(i.cost=e)}let c=Ws(t.limit);if(c){let e={},t=Js(c.context);t!==void 0&&(e.context=t);let n=Js(c.output);n!==void 0&&(e.output=n),Object.keys(e).length&&(i.limit=e)}let l=qs(t.release_date);l&&(i.release_date=l);let u=$s(t.variants);if(u){let e={},n=Ws(t.variants);for(let[t,r]of u.entries()){if(t>=Bs){a=!0;break}let i=Gs(r);!i||Object.prototype.hasOwnProperty.call(e,i)||n&&!Ws(n[i])||(e[i]={})}Object.keys(e).length&&(i.variants=e)}return{value:i,partial:a}},tc=e=>{let t=Ws(e);if(!t||t.schemaVersion!==1||!Array.isArray(t.providers)||!Ws(t.default)||typeof t.partial!=`boolean`)throw Error(`Invalid provider catalog response`);let n=[],r=new Set,i=t.providers.length>Ps;for(let[e,a]of t.providers.entries()){if(e>=Ps)continue;let t=Ws(a),o=Gs(t?.id),s=Ks(t?.name),c=Ws(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>=Fs||!Gs(t)||Object.prototype.hasOwnProperty.call(l,t)){i=!0;continue}let r=ec(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=Ws(t.default),o={};for(let[e,[t,n]]of Object.entries(a).entries()){let r=Gs(t),a=Gs(n);if(e>=zs||!r||!a){i=!0;continue}o[r]=a}return{schemaVersion:1,providers:n,default:o,partial:t.partial||i}},nc=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:nc(`${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}}},rc=e=>{let t=nc(e);return t?`${t.providerId}/${t.modelId}${t.variant?`#${t.variant}`:``}`:void 0},ic=e=>(t=>e(t.state.data)?1/0:0),ac=e=>{let t=e;return!!(t&&!t.partial&&t.providers.length>0)},oc=e=>{if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},sc=e=>e?{location:{directory:e}}:void 0,cc=async(e,t)=>{let n=H.getSdkClient(),r=sc(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=nc(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}},lc=(e,t=u())=>{let n=oc(e);return{queryKey:y.configCatalog.providers(n,t),queryFn:({signal:e})=>xe(e,async e=>{let r=await x(`/api/config/catalog/providers`,{method:`GET`,headers:{Accept:`application/json`,...n?{"x-opencode-directory":n}:{}},signal:e}),i;if(r.ok)i=tc(await r.json());else{if(r.status!==404&&r.status!==501)throw Error(`Provider catalog request failed (${r.status})`);i=tc(await cc(n,e))}let a=_.getQueryData(y.configCatalog.providers(n,t));if(i.partial&&a&&!a.partial)throw Error(`Partial provider catalog refresh retained the complete snapshot`);return i}),staleTime:ic(ac),gcTime:1/0,retry:2,retryDelay:100}},uc=(e,t=u())=>{let n=oc(e);return{queryKey:y.agents.raw(n,t),queryFn:({signal:e})=>xe(e,e=>H.listAgents(n,e)),staleTime:ic(e=>Array.isArray(e)&&e.length>0),gcTime:1/0,retry:2,retryDelay:100}},dc=(e,t=u())=>_.fetchQuery(lc(e,t)),fc=(e,t=u())=>_.fetchQuery(uc(e,t)),pc=async(e,t=u())=>{let n=lc(e,t);return await _.invalidateQueries({queryKey:n.queryKey,exact:!0}),_.fetchQuery(n)},mc=async(e,t=u())=>{let n=uc(e,t);return await _.invalidateQueries({queryKey:n.queryKey,exact:!0}),_.fetchQuery(n)},hc=(e,t=u())=>_.invalidateQueries({queryKey:lc(e,t).queryKey,exact:!0}),gc=e=>e?.trim()||null,_c=(e,t=u())=>y.agents.list(e,t),vc=(e,t=u())=>y.providers.list(e,t);function yc(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 bc=(e=Ds(),t=u())=>{let n=gc(e);return{queryKey:_c(n,t),queryFn:async({signal:e})=>{let r=await _.fetchQuery(uc(n,t)),i=await x(`/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=yc(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}},xc=(e,t=u())=>{let n=gc(e);return{queryKey:vc(n,t),queryFn:async({signal:e})=>(await lc(n,t).queryFn({signal:e})).providers.map(e=>({...e,models:Object.values(e.models??{})})),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=Ts(Ec),a;t[2]===i?a=t[3]:(a=bc(gc(i)??gc(H.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],Ir(o)},Cc=(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=xc(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],Ir(o)},wc=(e=Ds(),t=u())=>_.getQueryData(_c(gc(e),t))??[],Tc=async(e,t,n)=>{let r=gc(t);if(u()!==n)return e.getQueryData(_c(r,n))??[];let i=bc(r,n);return await e.invalidateQueries({queryKey:i.queryKey,exact:!0}),e.fetchQuery(i)};function Ec(e){return e.getActiveProject?.()?.path??null}var Dc=[{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`}],Oc=e=>e?.trim()||null,kc=()=>{let e=Ts.getState().getActiveProject?.();return Oc(e?.path)??Oc(H.getDirectory())},Ac=(e,t=u())=>y.skillsCatalog.sources(e,t),jc=(e,t,n=u())=>y.skillsCatalog.source(e,t,n),Mc=new Map,Nc=(e=kc(),t=u(),n=!1)=>{let r=Oc(e);return{queryKey:Ac(r,t),queryFn:({signal:e})=>Uc(r,n,e),staleTime:5e3,retry:2}},Pc=(e,t,n=u(),r=!1)=>{let i=Oc(e);return Mr({queryKey:jc(i,t,n),queryFn:({signal:e,pageParam:n})=>Wc(i,t,n,r,e),initialPageParam:null,getNextPageParam:(e,t)=>Gc(e,t),staleTime:5e3,retry:2})},Fc=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=Ts(Jc),a;t[2]===i?a=t[3]:(a=Nc(Oc(i)??Oc(H.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],Ir(o)},Ic=(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=Ts(Yc),o;n[2]!==a||n[3]!==e?(o=Pc(Oc(a)??Oc(H.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],Lr(c)},Lc=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())},Rc=(e=_,t=kc(),n=u())=>e.getQueryData(Ac(Oc(t),n))??Dc,zc=(e=_,t,n,r=u())=>e.getQueryData(jc(Oc(t),n,r)),Bc=async(e,t,n)=>{let r=Oc(t);return u()===n?e.fetchQuery({...Nc(r,n,!0),staleTime:0}):Rc(e,r,n)},Vc=async(e,t,n,r)=>{let i=Oc(t);if(u()!==r)return zc(e,i,n,r);let a=jc(i,n,r),o=JSON.stringify(a),s=(Mc.get(o)??0)+1;Mc.set(o,s),await e.cancelQueries({queryKey:a,exact:!0});let c=await Wc(i,n,null,!0,new AbortController().signal);if(u()!==r||Mc.get(o)!==s)return zc(e,i,n,r);let l={pages:[c],pageParams:[null]};return e.setQueryData(a,l),l},Hc=(e,t,n)=>Promise.all([e.invalidateQueries({queryKey:Ac(Oc(t),n)}),e.invalidateQueries({queryKey:[n,`skillsCatalog`,`source`,Oc(t)],exact:!1})]);async function Uc(e,t,n){let r=await qc(Kc(`/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:Dc}async function Wc(e,t,n,r,i){let a={directory:e,sourceId:t,cursor:n,refresh:r},o=await qc(Kc(`/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 qc(Kc(`/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 Gc(e,t){let n=e.nextCursor;if(!(!n||e.items.length===0)&&!t.slice(0,-1).some(e=>e.nextCursor===n))return n}function Kc(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 qc(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),3e3);try{return await x(e,{method:`GET`,headers:{Accept:`application/json`},signal:AbortSignal.any([t,n.signal])})}finally{clearTimeout(r)}}function Jc(e){return e.getActiveProject?.()?.path??null}function Yc(e){return e.getActiveProject?.()?.path??null}var Xc=e=>e?.trim()||null,Zc=()=>{let e=Ts.getState().getActiveProject?.();return Xc(e?.path)??Xc(H.getDirectory())},Qc=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},$c=(e,t=u())=>y.skills.list(e,t),el=(e=Zc(),t=u())=>{let n=Xc(e);return{queryKey:$c(n,t),queryFn:async({signal:e})=>{let t=await x(`/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:Qc(e.path)}))},retry:2}},tl=e=>{let t=(0,U.c)(3),n=e===void 0?{}:e,r=Ts(il),i=el(Xc(n.directory)??Xc(r)??Xc(H.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],Ir(a)},nl=(e=_,t=Zc(),n=u())=>e.getQueryData($c(Xc(t),n))??[],rl=async(e,t,n=u())=>{let r=Xc(t);return u()===n?e.fetchQuery({...el(r,n),staleTime:0}):nl(e,r,n)};function il(e){return e.getActiveProject?.()?.path??null}var al=()=>{let e=H.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},ol=Ds,sl=e=>{let t=e;return t.native===!0||t.builtIn===!0},cl=e=>{let t=e;return t.hidden===!0||t.options?.hidden===!0},ll=e=>e.filter(e=>!cl(e)),ul=`useAgentsStore`,dl=e=>new Promise(t=>setTimeout(t,e)),fl=2e4,pl=300,ml=4,hl=800,gl=200,_l=2e3,vl=Ne()(Ie(Pe(e=>({selectedAgentName:null,agentDraft:null,setSelectedAgent:t=>e({selectedAgentName:t}),setAgentDraft:t=>e({agentDraft:t}),loadAgents:async()=>{let e=ol(),t=u();try{return await Tc(_,e,t),!0}catch{return!1}},createAgent:async t=>bl(`POST`,t.name,t,e),updateAgent:async(t,n)=>bl(`PATCH`,t,n,e),deleteAgent:async(t,n)=>bl(`DELETE`,t,{scope:n},e),getAgentByName:e=>wc().find(t=>t.name===e),getVisibleAgents:()=>ll(wc())}),{name:`agents-store`,storage:Sr(),partialize:e=>({selectedAgentName:e.selectedAgentName})}),{name:`agents-store`}));typeof window<`u`&&(window.__zustand_agents_store__=vl);async function yl(e,t){await Tc(_,e,t),u()===t&&No(`agents`,{source:ul})}async function bl(e,t,n,r){let i=ol(),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 x(`/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`&&vl.getState().selectedAgentName===t&&r({selectedAgentName:null}),l?.requiresManualRestart?{ok:!0,requiresManualRestart:!0}:(await yl(i,a),{ok:!0})):{ok:!0,...l?.requiresManualRestart?{requiresManualRestart:!0}:{}}}catch(t){return console.error(`[AgentsStore] ${e} agent failed:`,t),{ok:!1}}}async function xl(e){let t=typeof e==`number`&&e>0?Math.min(e,pl):0;t>0&&await dl(t);let n=Date.now(),r=0,i=null;for(;Date.now()-n<fl;){r+=1,Ho(`Waiting for OpenCode… (attempt ${r})`);try{if(await H.checkHealth())return;i=Error(`OpenCode health check reported not ready`)}catch(e){i=e}let e=Date.now()-n;await dl(r<=ml&&e<1200?pl:Math.min(hl+Math.max(0,r-ml)*gl,_l))}throw i||Error(`OpenCode did not become ready in time`)}var Sl=e=>{if(!e||e.length===0)return[`all`];let t=Array.from(new Set(e));return t.includes(`all`)?[`all`]:t};async function Cl(e={}){let{message:t,delayMs:n}=e,r=e.transportIdentity??u(),i=e.queryDirectory??ol(),a=Sl(e.scopes),o=e.mode??(a.includes(`all`)?`projects`:`active`),s=e.silent===!0;if(!s)try{Ho(t||`Refreshing configuration…`)}catch{}try{if(u()!==r||(e.waitForConnection!==!1&&await xl(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=al(),g=o===`projects`?Ts.getState().projects:[],v=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 y=[];for(let e of v)c&&y.push(t.loadProviders({directory:e,source:`agentsStore:refreshConfig`,forceRefresh:!0,allowEmpty:!0}).then(()=>void 0)),l&&y.push(t.loadAgents({directory:e,source:`agentsStore:refreshConfig`,forceRefresh:!0}).then(()=>void 0));let b=[];if(d&&b.push(Tc(_,i,r).then(()=>void 0)),f&&b.push(Ms(_,i,r).then(()=>void 0)),p&&(b.push(rl(_,i,r).then(()=>void 0)),b.push(Hc(_,i,r).then(()=>void 0))),m){let{refreshMcpConfigsQuery:e,refreshMcpStatusQuery:t}=await Br(async()=>{let{refreshMcpConfigsQuery:e,refreshMcpStatusQuery:t}=await import(`./mcpQueries-Qx_eVfxx.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,16,17,18]));if(u()!==r)return;b.push(e(_,i,r).then(()=>void 0)),b.push(t(_,i,r).then(()=>void 0))}s||Ho(`Refreshing configuration…`),await Promise.all([...y,...b])}catch(e){throw s||(Ho(`OpenCode refresh failed. Please retry.`),await dl(1500)),e}finally{s||Vo()}}async function wl(e){await Cl(e)}async function Tl(e){await Cl({...e,silent:!0,waitForConnection:!1})}async function El(){await H.getSdkClient().location.reload()}async function Dl(e){Bo(e?.message||`Reloading OpenCode configuration…`);let t=e?.transportIdentity??u(),n=e?.queryDirectory??ol();try{let r=await x(`/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){Vo();return}let a={...e,transportIdentity:t,queryDirectory:n,scopes:e?.scopes??[`all`],mode:e?.mode??`projects`};i?.requiresReload?await wl({...a,message:i.message,delayMs:i.reloadDelayMs}):await wl(a)}catch(e){throw console.error(`[restartOpenCodeService] Failed:`,e),Ho(`Failed to reload configuration. Please try again.`),await dl(2e3),Vo(),e}}var Ol=null;Ol||=Mo(e=>{if(e.source!==ul&&Po(e,`agents`)){let{loadAgents:e}=vl.getState();e()}});var kl=e=>typeof e==`string`?e.trim():``,Al=(e,t)=>!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`,jl={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`},Ml=e=>e?e[0].toUpperCase()+e.slice(1).toLowerCase():``,Nl=e=>{let t=e.startsWith(`~`)?e.slice(1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t},Pl=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)}},Fl=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},Il=e=>{let t=e.toLowerCase(),n=jl[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)?Ml(t).replace(/([a-z])(\d)/i,`$1$2`):Ml(e)},Ll=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},Rl=e=>{let t=kl(e).toLowerCase();return t?t===`free`||t===`thinking`?t:zl(t):``},zl=e=>{let t=kl(e);if(!t)return``;let{base:n,suffix:r}=Pl(Nl(t)),i=Ll(Fl(n).map(Il));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=Rl(r);return s?`${o} (${s})`:o},Bl=e=>!/\s/.test(e)&&/[-_]/.test(e),Vl=(e,t,n={})=>{let r=kl(e?.name),i=kl(e?.id)||kl(t);return r&&!Bl(r)?Al(r,n.maxLength):r?Al(zl(r.toLowerCase()),n.maxLength):i?Al(zl(i),n.maxLength):n.fallbackLabel??``},Hl=(e,t)=>{let n=e?.models;if(!(!n||!t))return Array.isArray(n)?n.find(e=>kl(e.id)===t):n[t]},Ul=(e,t,n={})=>{let r=kl(t);return Vl(Hl(e,r),r,n)},Wl=(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}},Gl=e=>e===`primary`||e===`all`||e==null,Kl=e=>e.filter(e=>Gl(e.mode)),ql=(e,t,n=1)=>{let r=Kl(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},Jl=e=>e.charAt(0).toUpperCase()+e.slice(1),Yl=(e,t)=>{if(t){let n=e.find(e=>e.name===t);return Jl(n?n.name:t)}let n=e.filter(e=>Gl(e.mode)),r=n.find(e=>e.name===`build`)||n[0]||e[0];return r?Jl(r.name):`Select agent`},Xl=(e,t,n=``)=>Ul(e,t,{fallbackLabel:n}),Zl=e=>{if(!e||e.trim().length===0)return`Default`;let t=e.trim();return/^\d+(\.\d+)?$/.test(t)?t:Jl(t)},Ql=e=>typeof e==`object`&&!!e,$l=e=>typeof e==`string`&&e.length>0,eu=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(!$l(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(!$l(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;!$l(t)||!$l(n)||r.set(t,n)}r.size>0&&i.set(t,r)}i.size>0&&t.set(e,i)}return t},tu=Ne()(Pe((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:Sr(),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=Ql(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(!$l(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;!$l(t)||typeof n!=`object`||!n||!$l(n.providerId)||!$l(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:eu(n?.sessionAgentModelVariantSelections)}},migrate:e=>e})),nu=[`concise`,`detailed`,`mentor`,`pushback`,`noFiller`,`matchEnergy`,`warmPeer`],ru=e=>typeof e==`string`&&nu.includes(e),iu=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.`}},au=new Map,ou=new Map,su=({enabled:e,preset:t,customInstructions:n})=>e?t===`custom`?(typeof n==`string`?n.trim():``)||null:ru(t)?iu(t):null:null,cu=(e,t=u())=>{au.set(t,{enabled:e.enabled===!0,preset:e.preset,customInstructions:e.customInstructions})},lu=(e=u())=>{let t=au.get(e);if(t)return su(t)},uu=async()=>{let e=u(),t=lu(e);if(t!==void 0)return t;let n=ou.get(e);if(n)return n;let r=(async()=>{let t=await we(e);return cu({enabled:t.responseStyleEnabled,preset:t.responseStylePreset,customInstructions:t.responseStyleCustomInstructions},e),lu(e)??null})();ou.set(e,r);try{return await r}finally{ou.get(e)===r&&ou.delete(e)}},du=`opencode`,fu=`big-pickle`,pu=`__add_provider__`,mu=`zen`,hu=`big-pickle`,gu=async(e,t)=>{On(`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 On(`config.defaults:end`,{source:e,durationMs:Math.round(r-n),hasDefaultModel:!!t.defaultModel,hasDefaultAgent:!!t.defaultAgent}),t};try{let t=await we(e);return cu({enabled:t?.responseStyleEnabled,preset:t?.responseStylePreset,customInstructions:t?.responseStyleCustomInstructions},e),r(`settings-bootstrap-query`,t)}catch(n){On(`config.defaults:error`,{error:n instanceof Error?n.message:String(n)});let i=fe(e);return i&&cu({enabled:i.responseStyleEnabled,preset:i.responseStylePreset,customInstructions:i.responseStyleCustomInstructions},e),r(i?`retained-settings-bootstrap`:`retained-store-settings`,i??t)}},_u=e=>nc(e),vu=e=>e===pu?``:e??``,yu=(e,t)=>e===pu?pu:t,bu=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},xu=e=>{if(!Array.isArray(e))return[];let t=e.map(e=>{if(!Du(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 tc({schemaVersion:1,providers:t,default:{},partial:!1}).providers.map(e=>({id:e.id,name:e.name,models:Object.values(e.models)}))}catch{return[]}},Su=e=>{try{return tc({schemaVersion:1,providers:[],default:e,partial:!1}).default}catch{return{}}},Cu=(e,t,n)=>{let r=e.find(e=>e.id===t);return r?r.models.some(e=>e.id===n):!1},wu=({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=_u(i);if(e)return{providerId:e.providerId,modelId:e.modelId,variant:e.variant??a}}if(Cu(e,du,fu))return{providerId:du,modelId:fu};let o=e[0],s=o?.models[0];return o&&s?{providerId:o.id,modelId:s.id}:null},Tu=({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=Ge(e,t.agentName);return n&&(!Gl(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=>Gl(e.mode)),m;if(r&&(m=Ge(e,r)),!m&&o){let t=Ge(e,o);t&&Gl(t.mode)&&t.hidden!==!0&&(m=t)}m||=Ge(p,`build`)||p.find(e=>e.name===`build`)||p[0]||e[0];let h,g,_,v=n||i;if(v){let e=_u(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=_u(s);e&&(h=e.providerId,g=e.modelId,_=e.variant)}if(!h)if(Cu(t,du,fu))h=du,g=fu;else{let e=t[0],n=e?.models[0];e&&n&&(h=e.id,g=n.id)}return{agentName:(r&&!Ge(e,r)?r:!r&&o&&!Ge(e,o)?o:void 0)??m?.name,providerId:h,modelId:g,variant:_}},Eu=({providers:e,settingsZenModel:t})=>{let n=bu(t);if(!Array.isArray(e)||e.length===0)return n?{providerId:mu,modelId:n}:null;if(n&&Cu(e,mu,n))return{providerId:mu,modelId:n};if(Cu(e,mu,hu))return{providerId:mu,modelId:hu};let r=e.find(e=>e.id===mu);if(r?.models.length){let e=Math.floor(Math.random()*r.models.length),t=bu(r.models[e]?.id);if(t)return{providerId:mu,modelId:t}}return null},Du=e=>typeof e==`object`&&!!e,Ou=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},ku=(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:Ou(t.capabilities.input),output:Ou(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}),Au=e=>new Promise(t=>setTimeout(t,e)),ju=800,Mu=async(e=ju)=>Promise.race([H.checkHealth().catch(()=>!1),Au(Math.max(1,e)).then(()=>!1)]),Nu=`__global__`,Pu=e=>{let t=typeof e==`string`?e.trim():``;return t.length>0?t:Nu},Fu=e=>e===Nu?null:e,Iu=()=>typeof window>`u`?Nu:Bu(H.getDirectory()??Xe.getState().currentDirectory),Lu=e=>{let t=I(e);return t===null?null:t||`/`},Ru=()=>{try{let{projects:e,activeProjectId:t}=Ts.getState();return Lu((t?e.find(e=>e.id===t):null)?.path??e[0]?.path??null)}catch{return null}},zu=e=>Lu(e),Bu=e=>Pu(zu(e)),Vu=e=>Bu(e),Hu=100,Uu=256,Wu=new Set([`__proto__`,`prototype`,`constructor`]),Gu=/[\u0000-\u001F\u007F]/u,Ku=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},qu=(e,t=!1)=>{if(typeof e!=`string`)return;let n=e.trim();if(!(n.length===0||n.length>Uu||t&&n!==e||Gu.test(n)||Wu.has(n)))return n},Ju=e=>{if(!Du(e))return{};let t=[];for(let[n,r]of Object.entries(e)){if(t.length>=Hu||!Du(r))continue;let e=qu(n,!0),i=qu(r.providerId),a=qu(r.modelId),o=qu(r.variant);!e||!i||!a||r.variant!==void 0&&!o||t.push([e,{providerId:i,modelId:a,...o?{variant:o}:{}}])}return Object.fromEntries(t)},Yu=e=>{if(!Du(e))return;let t=qu(e.agentName,!0),n=qu(e.providerId),r=qu(e.modelId),i=qu(e.variant);if(!(!t||!n||!r||e.variant!==void 0&&!i))return{agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}}},Xu=(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}:{}}},Zu=(e,t,n)=>Yu(e)??Xu(t,n),Qu=(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`}),$u=e=>{if(!Du(e))return{};let t=bu(e.catalogTransportIdentity),n={};for(let t of[`activeDirectoryKey`]){let r=bu(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);let r={};if(Du(e.directoryScoped))for(let[t,n]of Object.entries(e.directoryScoped)){if(!Du(n))continue;let e=Ju(n.agentModelSelections),i=qu(n.lastSelectedAgentName,!0),a=Zu(n.lastUserSelection,i,e);r[t]={...Qu(),providers:[],agents:[],currentProviderId:bu(n.currentProviderId)??``,currentModelId:bu(n.currentModelId)??``,currentVariant:bu(n.currentVariant),currentAgentName:bu(n.currentAgentName),selectedProviderId:vu(bu(n.selectedProviderId)),agentModelSelections:e,lastSelectedAgentName:a?.agentName??i,lastUserSelection:a,defaultProviders:{},selectionSource:n.selectionSource===`manual`?`manual`:`auto`}}let i=Ju(e.agentModelSelections),a=qu(e.lastSelectedAgentName,!0),o=Zu(e.globalLastUserSelection,a,i)??(()=>{let t=bu(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:bu(e.currentProviderId)??``,currentModelId:bu(e.currentModelId)??``,currentVariant:bu(e.currentVariant),currentAgentName:bu(e.currentAgentName),selectedProviderId:vu(bu(e.selectedProviderId)),agentModelSelections:i,lastSelectedAgentName:o?.agentName??a,lastUserSelection:(()=>{let t=bu(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),globalLastUserSelection:o}},ed=({agents:e,currentAgentName:t,currentProviderId:n,currentModelId:r,currentVariant:i,selectionSource:a,resolvedAgentName:o,resolvedProviderId:s,resolvedModelId:c,resolvedVariant:l})=>{let u=Ge(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`}},td=null,nd=new Map,rd=new Map,id={},ad={},od=Sr(),sd=od&&{flush:()=>od.flush(),getItem:e=>{let t=u(),n=od.getItem(he(e,t)),r=n=>u()===t?n||!Te()?n:od.getItem(e):null;return n instanceof Promise?n.then(r):r(n)},setItem:(e,t)=>od.setItem(he(e,t.state.catalogTransportIdentity??u()),t),removeItem:e=>od.removeItem(he(e))},W=Ne()(Ie(Pe((e,t)=>({activeDirectoryKey:Iu(),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`,...Oo,activateDirectory:async(n,r)=>{let i=f(),a=zu(n);if(!a){On(`activateDirectory:skippedUnknownDirectory`,{directory:n});return}let o=Pu(a),s=ad[o],c=!1,l=!1,u=!1;if(e(e=>{let t=e.directoryScoped[o],n=t?.providers??[],r=t?.defaultProviders??{},i=t?.agents??[];c=n.length>0,l=i.length>0,u=!!t?.agents.length;let a=e.isConnected&&!c,s=e.isConnected&&!l;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]:s}}:{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]:s}}}),l&&c&&!u&&t().applyDefaultModelAgentSelection(),t().isConnected){if((!c||r?.refreshProviders)&&await t().loadProviders({directory:Fu(o),source:r?.source??`activateDirectory`,forceRefresh:r?.refreshProviders}),f()!==i||t().activeDirectoryKey!==o){ad[o]===s&&e(e=>e.agentConfigLoadingByDirectory[o]===!0?{agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[o]:!1}}:e);return}l||await t().loadAgents({directory:Fu(o),source:`activateDirectory`})}},invalidateProviderCache:e=>{let t=u();hc(e??null,t)},loadProviders:async n=>{let r=n?.directory??Fu(t().activeDirectoryKey),i=zu(r);if(!i){On(`loadProviders:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`});return}let a=i??H.getDirectory()??null,o=Pu(i),s=n?.source??`unknown`,c=u(),l=f();cd(c);let d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&id[o]===p&&zu(r)===i,p=(id[o]??0)+1;id[o]=p,On(`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();On(`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 Tn(`loadProviders:api`,()=>n?.forceRefresh?pc(Fu(o),c):dc(Fu(o),c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),l=xu(t.providers),f=Su(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=wu({providers:l,currentProviderId:r,currentModelId:i,currentVariant:a,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant}),u=e.activeDirectoryKey===o?e.selectedProviderId:n.selectedProviderId,p=u===pu||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();On(`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),On(`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=_u(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(()=>{id[o]===p&&e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:!1}}))})},refreshMissingCatalogs:e=>{let n=Fu(t().activeDirectoryKey),r=f(),i=JSON.stringify([u(),r,n]),a=nd.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&&Fu(t().activeDirectoryKey)===n&&t().agents.length===0&&await t().loadAgents({directory:n,source:o,forceRefresh:!0})})().finally(()=>{nd.delete(i)});return nd.set(i,s),s},refreshCatalogsOnPickerOpen:e=>{let n=Fu(t().activeDirectoryKey),r=JSON.stringify([u(),f(),n]),i=rd.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(()=>{rd.delete(r)});return rd.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??Fu(t().activeDirectoryKey),i=zu(r);if(!i)return On(`loadAgents:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`}),!1;let a=i??H.getDirectory()??null,o=Pu(i),s=n?.source??`unknown`,c=u(),l=f();cd(c);let d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&ad[o]===p&&zu(r)===i,p=(ad[o]??0)+1;ad[o]=p,On(`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();On(`loadAgents:start`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let l=t().directoryScoped[o]?.agents??[];try{let u=Fu(o);(Ke(r??void 0)??Ke(u??void 0))&&On(`loadAgents:syncConfigHit`,{directoryKey:o,source:s});let[f,p]=await Promise.all([Tn(`loadAgents:api`,()=>n?.forceRefresh?mc(u,c):fc(u,c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),gu(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})]),m=(Array.isArray(f)?f:[]).map(qt);if(!d())return!1;if(m.length===0)return!0;let h=Ke(r??void 0)??Ke(u??void 0),g=h!==void 0,_=g?bu(h.default_agent):void 0,v=g?rc(h.model):void 0,y=t().activeDirectoryKey===o?t().providers:t().directoryScoped[o]?.providers??[],b=bu(t().settingsZenModel),x=bu(p.zenModel),S=Eu({providers:y,settingsZenModel:b}),C=Eu({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`,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&&ge({zenModel:w,gitProviderId:``,gitModelId:``}).catch(()=>{});let A=t(),ee=A.directoryScoped[o]?.lastUserSelection??(A.activeDirectoryKey===o?A.lastUserSelection:void 0),j=Tu({agents:m,providers:y,settingsDefaultAgent:p.defaultAgent,settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,opencodeDefaultAgent:D,opencodeDefaultModel:O,projectLastUserSelection:ee,globalLastUserSelection:A.globalLastUserSelection}),te=j.agentName??m[0].name,M=j.providerId,ne=j.modelId,re=j.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=ed({agents:m,providers:y,currentAgentName:r,currentProviderId:i,currentModelId:a,currentVariant:s,selectionSource:l,resolvedAgentName:te,resolvedProviderId:M,resolvedModelId:ne,resolvedVariant:re}),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 N=typeof performance<`u`?performance.now():Date.now();return On(`loadAgents:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(N-i),agents:m.length}),!0}catch(t){return!d()||(console.error(`Failed to load agents:`,t),On(`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(()=>{ad[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=ot(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=tu.getState();e&&t.saveSessionAgentSelection(e,l),e&&$.getState().isYuriCreatedSession(e)&&(t.getAgentModelForSession(e,l)||$.getState().initializeNewYuriSession(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:yu(e.selectedProviderId,t),selectionSource:`manual`};return{currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:yu(e.selectedProviderId,t),selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[i]:a}}})},d=Ge(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?tu.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=tu.getState().getAgentModelForSession(n,l);if(e&&Cu(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=_u(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}=Tu({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:yu(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=yu(e.selectedProviderId,p)),r})},applyOpenCodeConfigDefaults:(n,r=`syncConfig`,i)=>{let a=n??Fu(t().activeDirectoryKey),o=Bu(a),s=Fu(o),c=i??Ke(a??void 0)??Ke(s??void 0);if(!c)return;let l=bu(c.default_agent),u=rc(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??Qu(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=Tu({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=ed({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:yu(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!==yu(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=yu(x,S.providerId))),On(`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 Eu({providers:e.providers,settingsZenModel:e.settingsZenModel})},setVoiceProvider:t=>{e({voiceProvider:t})},setSpeechRate:t=>{e({speechRate:Math.max(.5,Math.min(2,t))})},setSpeechPitch:t=>{e({speechPitch:Math.max(.5,Math.min(2,t))})},setSpeechVolume:t=>{e({speechVolume:Math.max(0,Math.min(1,t))})},setSayVoice:t=>{e({sayVoice:t})},setLocalTtsVoiceId:t=>{e({localTtsVoiceId:t})},setBrowserVoice:t=>{e({browserVoice:t})},setOpenaiVoice:t=>{e({openaiVoice:t})},setOpenaiApiKey:t=>{e({openaiApiKey:t})},setOpenaiCompatibleUrl:t=>{e({openaiCompatibleUrl:t})},setOpenaiCompatibleApiKey:t=>{e({openaiCompatibleApiKey:t})},setOpenaiCompatibleVoice:t=>{e({openaiCompatibleVoice:t})},setOpenaiCompatibleTtsModel:t=>{e({openaiCompatibleTtsModel:t})},setDictationEnabled:t=>{e({dictationEnabled:t})},setSttProvider:t=>{e({sttProvider:t})},setSttServerUrl:t=>{e({sttServerUrl:t})},setSttApiKey:t=>{e({sttApiKey:t})},setSttModel:t=>{e({sttModel:t})},setSttLocalModel:t=>{e({sttLocalModel:t})},setSttLanguage:t=>{e({sttLanguage:t})},setShowMessageTTSButtons:t=>{e({showMessageTTSButtons:t})},setTtsInputMode:t=>{e({ttsInputMode:t})},setSummarizeMessageTTS:t=>{e({summarizeMessageTTS:t})},setSummarizeVoiceConversation:t=>{e({summarizeVoiceConversation:t})},setSummarizeCharacterThreshold:t=>{e({summarizeCharacterThreshold:Math.max(50,Math.min(2e3,t))})},setSummarizeMaxLength:t=>{e({summarizeMaxLength:Math.max(50,Math.min(2e3,t))})},probeConnection:async n=>{if(await Mu(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()=>{On(`checkConnection:start`);let n=0,r=null;for(;n<5;)try{On(`checkConnection:attempt`,{attempt:n+1});let r=await Tn(`checkConnection:health`,()=>H.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 Au(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`}),On(`checkConnection:end`,{healthy:r,attempts:n+1}),r}catch(e){r=e,n+=1,await Au(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`}),On(`checkConnection:end`,{healthy:!1,attempts:5}),!1},initializeApp:async()=>{if(td)return On(`initializeApp:deduped`),td;let n=(async()=>{let n=typeof performance<`u`?performance.now():Date.now();On(`initializeApp:start`);try{if(Ot(),!await t().checkConnection()){e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`});return}On(`initApp:skipped`,{reason:`checkConnection already verified health`});let r=H.getDirectory()??Xe.getState().currentDirectory??Fu(t().activeDirectoryKey),i=zu(r),a=i??Ru();if(!a){On(`initializeApp:noProjectConfigDirectory`),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});return}!i&&r!==a&&(On(`initializeApp:normalizedUnknownDirectoryToProject`,{initialDirectory:r,configDirectory:a}),H.setDirectory(a),Xe.getState().setDirectory(a,{showOverlay:!1}));let o=Pu(a);t().activeDirectoryKey!==o&&e(e=>{let t=e.directoryScoped[o]??Qu();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();On(`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`}),On(`initializeApp:error`,{error:n instanceof Error?n.message:String(n)})}})().finally(()=>{td=null});return td=n,n},prewarmProjectConfigs:async e=>{!t().isConnected||Bu(e??Fu(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 Ge(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 ku(e,i)},getVisibleAgents:()=>{let{agents:e}=t();return ll(e)}}),{name:`config-store`,version:5,storage:sd,migrate:e=>$u(e),merge:(e,t)=>Ku({...t,...$u(e),catalogTransportIdentity:u()}),partialize:e=>{let t=(t,n)=>{let r=Yu(n?.lastUserSelection)??Xu(qu(n?.lastSelectedAgentName,!0),Ju(n?.agentModelSelections))??(t===e.activeDirectoryKey?Yu(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:vu(n?.selectedProviderId??(t===e.activeDirectoryKey?e.selectedProviderId:``)),agentModelSelections:{},lastSelectedAgentName:r?.agentName??qu(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=Yu(e.globalLastUserSelection)??Yu(e.lastUserSelection);return{activeDirectoryKey:e.activeDirectoryKey,catalogTransportIdentity:e.catalogTransportIdentity,directoryScoped:n,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:vu(e.selectedProviderId),agentModelSelections:{},lastSelectedAgentName:r?.agentName??qu(e.lastSelectedAgentName,!0),lastUserSelection:Yu(e.lastUserSelection)??r,globalLastUserSelection:r}}})));function cd(e){if(W.getState().catalogTransportIdentity===e)return;let t=W.persist.getOptions().storage;W.persist.setOptions({storage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{}}});try{W.setState({catalogTransportIdentity:e})}finally{W.persist.setOptions({storage:t})}}typeof window<`u`&&(window.__zustand_config_store__=W);var ld=async e=>{await W.getState().loadProviders({source:e,forceRefresh:!0})},ud=null;ud||=Mo(async e=>{let t=[];if(H.clearConfigCache(),Po(e,`agents`)){let{loadAgents:e}=W.getState();t.push(e({source:`configChange:agents`,forceRefresh:!0}).then(()=>{}))}Po(e,`providers`)&&t.push(ld(`configChange:providers`)),t.length>0&&await Promise.all(t)});var dd=null,fd=null;fd||=pt((e,t)=>{W.getState().applyOpenCodeConfigDefaults(e,`syncConfig`,t)}),typeof window<`u`&&!dd&&(dd=Xe.subscribe((e,t)=>{let n=Pu(e.currentDirectory),r=Pu(t.currentDirectory);n!==r&&(On(`directoryStore:changed`,{previous:r,next:n}),W.getState().activateDirectory(e.currentDirectory))}));var pd=e=>typeof e==`number`&&Number.isFinite(e)?e:null,md=e=>{let t=e.metadata;return pd(t?.yuri?.titleRefresh?.activityUpdatedAt)??pd(e.time?.updated)??pd(e.time?.created)??0},hd=[`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 gd(e){if(!e)return!1;let t=String(e instanceof Error?e.message:e).toLowerCase();if(hd.some(e=>t.includes(e)))return!0;let n=e?.status;return typeof n==`number`&&n>=500&&n<600}async function _d(e,t={}){let{attempts:n=3,delay:r=500,factor:i=2,maxDelay:a=1e4,retryIf:o=gd}=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 vd=[`file`,`status`,`additions`,`deletions`],yd=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},bd=e=>e===void 0?!1:!e||typeof e!=`object`||Array.isArray(e)?!0:Object.keys(e).some(e=>e!==`messageID`&&e!==`partID`),xd=e=>typeof e.before==`string`||typeof e.after==`string`||typeof e.from==`string`||typeof e.to==`string`||typeof e.patch==`string`;function Sd(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!xd(t))return e;let n={};for(let e of vd)e in t&&t[e]!==void 0&&(n[e]=t[e]);return n}function Cd(e){if(!Array.isArray(e))return e;let t=!1,n=e.map(e=>{let n=Sd(e);return n!==e&&(t=!0),n});return t?n:e}function wd(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=Cd(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 Td(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=wd(r?n:e);return i===(r?n:e)?n:i}function Ed(e){let t=e;if(!(bd(t.revert)||Array.isArray(t.summary?.diffs)||typeof t.summary?.diffCount==`number`||typeof t.summary?.hasDiffs==`boolean`||`permission`in t))return e;let n=Td(e),r={...n};delete r.permission;let i=yd(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 Dd(e){return wd(e)}var Od=new Set([`smartfetch-secondary`]),kd=/^\[(?:Scheduled|Assistant|yuri-llm)\]/,Ad=e=>typeof e==`string`&&e.length>0,jd=e=>{let t=e.metadata;if(!t||typeof t!=`object`)return!1;let n=t.yuri;if(!n||typeof n!=`object`)return!1;let r=n;return r.assigned?.from!==`contact`&&!!(Ad(r.assistant?.assistantID)||Ad(r.scheduledTask?.taskID)||Ad(r.smallModel?.purpose)||Ad(r.llm?.purpose))},Md=e=>{let t=e.parentID;return typeof t==`string`&&t.trim()?t:null},Nd=(e,t={})=>!(e.title&&Od.has(e.title)||e.title&&kd.test(e.title)||!t.includeChildren&&Md(e)||jd(e)),Pd=e=>{let t=e.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:0},Fd=e=>{let t=e.time?.archived;return typeof t==`number`&&Number.isFinite(t)&&t>0},Id=e=>{let t=yt(e);return Ed({...t,directory:t.directory||e.directory})};async function Ld(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 _d(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=>Id(e)).filter(e=>(t.archived?!Fd(e):Fd(e))||t.start!==void 0&&Pd(e)<t.start||i!==void 0&&Pd(e)>=i?!1:Nd(e)),u=0;for(let e of l)!e?.id||r.has(e.id)||(r.add(e.id),n.push(e),u+=1);if(u>0&&t.onPage?.(l),t.maxItems!==void 0&&n.length>=t.maxItems)break;let d=typeof c.cursor?.next==`string`&&c.cursor.next.length>0?c.cursor.next:void 0;if(!d||d===a)break;a=d}return n}var Rd=`/api/magic-prompts`,zd=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[]}
|
|
@@ -399,7 +399,7 @@ Use the results below as source material. Do not mention that the inputs were hi
|
|
|
399
399
|
`,Kf=`The user referenced these OpenCode sessions (id, title, owning directory).`,qf=(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},Jf=e=>{let t=e,n=t.indexOf(Kf);for(;n!==-1;){let e=t.indexOf(`[`,n+74),r=e===-1?-1:qf(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(Kf)}return t},Yf=e=>{if(!e.startsWith(Gf))return[];try{let t=JSON.parse(e.slice(Gf.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[]}},Xf=e=>e.length===0?null:e.map(e=>`[skill:${e}]`).join(` `),Zf=(e,t=36e3)=>{if(e.length===0)return null;let n=Gf,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(`,`)}]`},Qf=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}},$f=(e,t)=>{let{sessionIds:n,skillNames:r}=Qf(e),i=n.map(e=>{let n=gt(e,t),r=n?Zt(n).find(t=>t.id===e):void 0,i=n?Jt(e,n).flatMap(e=>{let t=st(e.id,n).filter(e=>e.type===`text`&&!Af(e)).map(e=>`text`in e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(`
|
|
400
400
|
`);return t?[{role:e.role,text:t}]:[]}):[];return{id:e,title:r?.title||e,...n?{directory:n}:{},messages:i}}),a=[],o=Xf(r);o&&a.push({text:o,synthetic:!0});let s=Zf(i);return s&&a.push({text:s,synthetic:!0}),a},ep=50,tp=15e4,np=e=>{let t=0;for(let n of Object.values(e.partsByMessageID))for(let e of n){let n=e;n.type===`text`&&!Af(n)&&typeof n.text==`string`&&(t+=n.text.length)}return t},rp=async(e,t,n)=>{let{sessionIds:r}=Qf(e);if(r.length===0)return;let i=B();if(!i)return;let a=n?.maxPages??ep,o=n?.maxChars??tp;await Promise.all(r.map(async e=>{let n=gt(e,t);if(!n)return;let r=V(n,e),s=i.getTranscript(r);s.messageOrder.length===0&&(await hn(n,e),s=i.getTranscript(r));let c=0;for(;!i.getPagination(r).isComplete&&c<a&&np(s)<o;)await mr(n,e),s=i.getTranscript(r),c+=1}))},ip=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},ap=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,op=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},sp=e=>e.replace(/\\/g,`/`),cp=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,lp=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}`}`),sp(n)}catch{return null}},up=(e,t)=>{let n=cp(sp(e)),r=cp(sp(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},dp=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),fp=(e,t)=>{let n=sp(e),r=cp(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=up(n,t);if(r!==null){let t=cp(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return dp(a)},pp=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},mp=(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},hp=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},gp=async(e,t={})=>{let n=t.createID??Oe,r=t.directory??t.root??null,i=e.filter(e=>!Af(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=>Jf(ap(e))).filter(e=>e.trim().length>0).join(`
|
|
401
401
|
`),l=[];for(let e of o){let t=hp(e);t&&l.push(t)}for(let e of[...l].reverse())mp(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=A(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=mp(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:`)?lp(t):null;if(o){let e=fp(o,r),t=null;for(let n of e){let e=mp(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=op(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=ce(s);if(t.startsWith(`data:`)){let e=await pp(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(ip(t)){if(!je(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=oe(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=E(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},_p=async(e,t={})=>{let n=t.createID??Oe,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=E(r,i),o=oe(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=ce(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await pp(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(ip(i)){if(!je(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}},vp=e=>e?JSON.parse(JSON.stringify(e)):null,yp=e=>e?{...e}:{},bp=(e,t=vo.getState())=>{let n=t.getDraft?.(e)??null,r=yp(t.draftAttachmentViews?.[z(e)]);return{record:vp(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},xp=async e=>{let t=e.input??vo.getState(),n=bp(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??vo.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}},wp=(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},Tp=e=>e?.status===`committed`&&e.current===!0,Ep=new Map,Dp=async(e,t)=>{let n=z(e),r=Ep.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Ep.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Ep.get(n)===o&&Ep.delete(n)}},Op=(e,t)=>({key:e,addLocal:async n=>{await Dp(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Dp(e,async()=>{let r=t(),i=wp(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 Dp(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 Dp(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:Tp(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Dp(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Dp(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Dp(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),kp=4e4,Ap=0,jp=null;function Mp(e=Date.now()){Ap=e}function Np(e){return jp=e,()=>{jp===e&&(jp=null)}}function Pp(e){jp?.(e)}function Fp(e=Date.now(),t=kp){return Ap<=0?!1:e-Ap>=t}var Ip=3e4,Lp=200,Rp=new Map;function zp(e,t,n){return`${n?.transport??u()}\n${n?.generation??f()}\n${e.trim()}\n${t}`}function Bp(e,t,n){if(!e||!t)return!1;let r=Rp.get(zp(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Ip}function Vp(e,t,n){if(!e||!t)return;let r=zp(e,t,n);for(Rp.has(r)&&Rp.delete(r);Rp.size>=Lp;){let e=Rp.keys().next().value;if(typeof e!=`string`)break;Rp.delete(e)}Rp.set(r,n?.now??Date.now())}var Hp=768,Up=()=>{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},Wp=()=>{if(typeof window>`u`)return`desktop`;let e=window.__YURI_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(pe())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=Hp&&Up()?`mobile`:`desktop`},Gp=()=>Wp()===`mobile`,Kp=3,qp=2,Jp=4,Yp=4,Xp=100,Zp=30;function Qp(){return a()?`relay`:`local`}function $p(e=Qp()){return e===`relay`?qp:Kp}function em(e=Qp()){return e===`relay`?Yp:Jp}function tm(e){return $p(im(e))}function nm(){return Xp}function rm(){return Zp}function im(e){return e===`relay`||e===`local`?e:Qp()}var am=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function om(){return{pages:[],pageParams:[]}}function sm(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 cm(e){return{pages:Object.freeze(e.pages.map(sm)),pageParams:Object.freeze([...e.pageParams])}}function lm(e,t,n=am){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 sm({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function um(e){if(!e||e.pages.length===0)return on;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 dm(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=um(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function fm(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function pm(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 sm({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:fm(t)}})}function mm(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`?hm(e,i):null;if(!e||e.pages.length===0||r===`initial`&&!d)return cm({pages:[pm(`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 cm({pages:[pm(`tail`,gm(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=[pm(`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(_m(i,o,s,a)),g.push(e.pageParams[r]??null)}return cm({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=e.pages.length-1;for(let e=o.length-1;e>=0;--e){let t=o[e];m=Math.min(m,f.get(t.id)??m),p[m].push(t)}let h=e.pages.map((e,t)=>_m(e,p[t].reverse(),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]=sm({...e,cursor:t,complete:n,sync:{...e.sync,liveRevision:a}}))}return cm({pages:h,pageParams:[...e.pageParams]})}function hm(e,t){if(!e||e.pages.length===0)return null;let n=um(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 gm(e,t){let n=e.slice();for(let e of t){let t=qn(e),r=n.length;for(let e=0;e<n.length;e+=1)if(ir(t,qn(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function _m(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&&vm(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||bm(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:sm({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:fm(t)}})}function vm(e,t){return e===t||e.id===t.id&&e===t}function ym(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 bm(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!ym(e[n],t[n]))return!1;return!0}function xm(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 hr(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=mm(e??om(),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&&bm(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 cm({pages:e.pages.map((t,n)=>_m(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function wm(e,t){let n=dm(e,t),r=um(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 Tm(e,t,n,r){if(!Yt(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?Nm(e,t,i,r):{data:e,result:{applied:!1,changed:!1}}}let{draft:i,previousBoundary:a}=wm(e,t),o=lr(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 Em(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 Dm(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 Om(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=wm(e,t),o=!1,s=0,c,l=new Set,u=Em(e),d=Dm(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(!Yt(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=Nm(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=Om(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=lr(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&&bm(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&&vm(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 km(e,t,n,r,i){let a=e&&e.pages.length>0?e:cm({pages:[pm(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=dm(a,t),s=o.message[t]?[...o.message[t]]:[],c=s.findIndex(e=>e.id===n.id);c<0?s.push(n):s[c]=pn(s[c],n);let l={...o.part,[n.id]:xm(r)};return{data:cm({pages:a.pages.map((e,t)=>t===a.pages.length-1?_m(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]?_m(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 Am(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:cm({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 _m(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function jm(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=dm(e,t),i=Pt({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:um(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=cm({pages:[pm(`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:um(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=cm({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?_m(t,gm(r,l),o,a):_m(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:um(u)}}}function Mm(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=dm(e,t),a=_t(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:mm(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 Tm(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Om(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return km(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 Am(e,n.messageID,t)}case`durable-seed`:return jm(e,t,n);case`reset`:return n.page?Mm(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 Nm(e,t,n.to,r+1)}default:return{data:e,result:{applied:!1,changed:!1}}}}function Nm(e,t,n,r){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1},needsAuthorityRecovery:!0};let i=Bm(e,t),a=i.messageOrder,o=a.findIndex(e=>e===n),s=um(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=>Ze(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 Pm(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 Fm(e,t,n,r=`materialize`){return Mm(e,n,{type:`http-page`,purpose:r,page:Pm(t),liveRevision:t.sync.liveRevision}).data}function Im(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return cm(t);if(t.pages.length===e.pages.length){let r=zm(e,t);return r===e?e:Rm(e,t)?r:Mm(e,n,{type:`http-page`,purpose:`materialize`,page:{records:t.pages.flatMap(e=>Pm(e).records),cursor:t.pages[0]?.cursor??void 0,complete:t.pages[0]?.complete??!1,turnCount:t.pages.reduce((e,t)=>e+t.turnCount,0)},liveRevision:Math.max(...t.pages.map(e=>e.sync.liveRevision))}).data??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0],i=Mm(e,n,{type:`http-page`,purpose:`prepend`,page:Pm(r),liveRevision:r.sync.liveRevision});return i.data?i.data:e}if(t.pages.length===1&&e.pages.length>1){if(Rm(e,t))return cm(t);let r=t.pages[0];return Fm(e,r,n)??cm(t)}return cm(t)}function Lm(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Rm(e,t){let n=Lm(e),r=Lm(t);if(r.size>=n.size)return!1;if(r.size===0){let n=Math.max(0,...e.pages.map(e=>e.sync.liveRevision));return t.pages.some(e=>e.sync.liveRevision>n)}for(let e of r)if(!n.has(e))return!1;let i=Bm(e,``),a=Bm(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function zm(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,sm(t))});return!n&&e.pageParams.length===t.pageParams.length?e:cm({pages:r,pageParams:[...t.pageParams]})}function Bm(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:um(e),liveRevision:a}}var Vm=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Hm=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Um=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Wm=e=>e.trim(),Gm=e=>e?.trim()||`tail`,Km=new Set([502,503,504]),qm=[`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 Jm(e){if(!e||e instanceof Vm||e instanceof Hm)return!1;if(e instanceof Um)return e.status>=400&&e.status<500?!1:Km.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(Km.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(Km.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:qm.some(e=>n.includes(e))}function Ym(e,t){return e>=2?!1:Jm(t)}var Xm=(e,t=u(),n=f())=>[t,n,`sessionMessages`,`page`,Wm(e.directory),e.sessionID,e.limit,Gm(e.before)],Zm=(e,t=u(),n=f())=>[t,n,`session-transcript`,Wm(e.directory),e.sessionID];function Qm(e){if(!e||typeof e!=`object`)throw new Hm(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Hm(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Hm(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Hm(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Hm(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Hm(`session message page: cursor must be string when set`);return e}function $m(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 Hm(`session message page: complete=false requires non-empty cursor`);if(r===n)throw new Hm(`session message page: prepend returned the same cursor without progress`)}var eh=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}:{}})},th=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw new Vm},nh=(e,t,n=u(),r={},i=(r.getGeneration??f)())=>{let a=Wm(e.directory),o=e.sessionID,s=e.limit,c=e.before?.trim()||void 0;return{queryKey:Xm({directory:a,sessionID:o,limit:s,before:c},n,i),queryFn:async({signal:e})=>{th(n,i,r);let l=await t({directory:a,sessionID:o,limit:s,before:c,signal:e});th(n,i,r);let u=Qm(l);return $m(c,u),eh(u)},staleTime:1/0,gcTime:3e5,retry:Ym,retryDelay:e=>Math.min(500*2**e,4e3)}},rh=(e,t,n=_,r=u(),i={},a=(i.getGeneration??f)())=>n.fetchQuery(nh(e,t,r,i,a));function ih(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 ah(e){return eh({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function oh(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function sh(e){let t=Wm(e.directory),n=e.sessionID,r=e.transport??u(),i=e.probe??{},a=e.generation??(i.getGeneration??f)(),o=e.initialLimit??$p(),s=e.historyLimit??em(),c=e.client??_,l=Zm({directory:t,sessionID:n},r,a),d=async t=>ah(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,...t.before&&e.historyPageSize!==void 0?{pageSize:e.historyPageSize}:{},before:t.before,signal:t.signal}));return{queryKey:l,queryFn:async l=>{th(r,a,i);let u=l.pageParam?.trim()||void 0,f=u?e.historyPageSize??s:o,p=u?`prepend`:`initial`,m=await rh({directory:t,sessionID:n,limit:f,before:u},d,c,r,i,a);th(r,a,i);let h=ih(m);return lm(h,p===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:h.records[h.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:oh,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:!1,maxPages:void 0,structuralSharing:(e,t)=>Im(e,t,n)}}function ch(e){let t=e.client??_,n=sh({...e,client:t}),r={...n,structuralSharing:(t,n)=>Im(t,n,e.sessionID)},i=new jr(t,r),a=async()=>{let e=i.getCurrentResult().data;if(e&&e.pages.length>0)return cm(e);let t=await i.refetch(),n=t.data??i.getCurrentResult().data;if(n&&n.pages.length>0)return cm(n);throw t.error??i.getCurrentResult().error??Error(`transcript initial fetch failed`)},o=async()=>{let e=i.getCurrentResult().data;try{let t=await i.fetchPreviousPage({cancelRefetch:!1}),n=i.getCurrentResult(),r=t.data??n.data??e;if(t.isError||n.isFetchPreviousPageError){let e=t.error??n.error??Error(`transcript previous page fetch failed`);throw r&&r.pages.length>0?Object.assign(e instanceof Error?e:Error(String(e)),{retainedPages:cm(r)}):e}if(!r)throw Error(`transcript previous page fetch failed`);return cm(r)}catch(t){let n=i.getCurrentResult().data??e;throw n&&n.pages.length>0?Object.assign(t instanceof Error?t:Error(String(t)),{retainedPages:cm(n)}):t}},s;return{queryKey:n.queryKey,observer:i,ensureInitial:a,fetchPreviousPage:n=>{if(s)return s;if(n!==void 0&&(!Number.isSafeInteger(n)||n<1))return Promise.reject(Error(`history page size must be a positive integer`));if(n!==void 0){let a=sh({...e,client:t,historyPageSize:n});i.setOptions({...r,queryFn:a.queryFn})}return s=o().finally(()=>{n!==void 0&&i.setOptions(r),s=void 0}),s},getData:()=>i.getCurrentResult().data,subscribe:e=>i.subscribe(t=>{e(t.data)}),destroy:()=>{i.destroy()}}}function lh(e,t,n,r){let i=e.getQueryData(t),a=Mm(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 uh(e,t=_,n=u(),r=f()){return t.getQueryData(Zm(e,n,r))}function dh(){return Ee()||Gp()}function fh(){return Ee()?4:Gp()?12:40}var ph=1048576,mh=4*ph,hh=32*ph,gh=40*ph;function _h(){return Ee()?mh:Gp()?hh:gh}var vh=e=>e.trim();function yh(e){return{transport:e.transport,generation:e.generation,directory:vh(e.directory),sessionID:e.sessionID}}function bh(e){let t=yh(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function xh(e){return`${e.transport}\n${e.generation}\n${vh(e.directory)}`}var Sh={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function Ch(e,t,n){return[t,n,Sh.checkpoint,vh(e.directory),e.sessionID]}function wh(e){let t=yh(e);return[{queryKey:Zm({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,Sh.transportPageRoot,Sh.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Sh.taskRoot,Sh.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Sh.taskRoot,Sh.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:Ch({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function Th(){let e=new Map;return{retain(t){let n=yh(t),r=bh(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(bh(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(bh(t))?.count??0},clear(){e.clear()}}}function Eh(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Dh=3e4;function Oh(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function kh(e){return!Array.isArray(e)||e.length<5||e[2]!==Sh.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 Ah(e){let t=e.client,n=e.activeRegistry??Th(),r=e.counters??Eh(),i=e.getLimit??fh,a=e.now??Date.now,o=e.minResidencyMs??Dh,s=new Map,c=new Map,l=e=>{let t=yh(e),n=bh(t),r=c.get(t.sessionID);r||(r=new Map,c.set(t.sessionID,r)),r.set(n,t)},u=e=>{let t=yh(e),n=bh(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=kh(e.queryKey);t&&l(t)}let f=t.getQueryCache().subscribe(e=>{if(e.type===`added`||e.type===`updated`){let t=kh(e.query.queryKey);t&&l(t);return}if(e.type===`removed`){let t=kh(e.query.queryKey);t&&u(t)}}),p=e=>{let t=bh(yh(e));s.set(t,a())},m=e=>{let t=bh(yh(e)),n=s.get(t);return n!==void 0&&a()-n<o},h=e=>{let r=yh(e);if(n.isRetained(r))return!0;let i=Zm({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:vh(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=kh(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:Oh(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:vh(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=yh(e);s.delete(bh(t)),u(t);for(let t of wh(e))v(t)},b=(e,t)=>{r.purgeGeneration+=1,d(e,t);let n=[[e,t,Sh.canonical],[e,t,Sh.transportPageRoot,Sh.transportPageKind],[e,t,Sh.taskRoot],[e,t,Sh.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=>bh(yh(e)))),o=g({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=xh(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=bh(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(bh(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 jh=new Map,Mh=new Set;function Nh(e,t){return`${e}\n${t}`}function Ph(){for(let e of Mh)e()}function Fh(e,t){if(!e||!t)return;let n=Nh(e,t),r=jh.get(n)??0;jh.set(n,r+1),r===0&&Ph()}function Ih(e,t){if(!e||!t)return;let n=Nh(e,t),r=jh.get(n);if(r){if(r<=1){jh.delete(n),Ph();return}jh.set(n,r-1)}}function Lh(e,t){if(!e)return!1;if(t)return jh.has(Nh(t,e));let n=`\n${e}`;for(let e of jh.keys())if(e.endsWith(n))return!0;return!1}function Rh(e){return Mh.add(e),()=>{Mh.delete(e)}}function zh(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 Bh(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=0,d=!1,p=new Set,m=new Map,h=new Map,g=new Map,_=new Map,v=new Set,y=e=>!d&&e.epoch===c&&e.scope.transport===a().transport&&e.scope.generation===a().generation,b=n=>{let a=h.get(n);for(;a?.length&&(g.get(n)??0)<i;){let i=a.shift();if(!y(i)){i.resolve(null);continue}g.set(n,(g.get(n)??0)+1),i.gap&&Fh(n,i.scope.sessionID);let o=()=>{v.delete(o)&&i.gap&&Ih(n,i.scope.sessionID)};v.add(o),(async()=>{try{for(;y(i);){let n=l,a;try{a=t.hasSession?.(i.scope)?await t.refreshFromAuthority(i.scope):await t.ensureInitial(i.scope)}catch(e){if(y(i)&&n!==l)continue;throw e}if(!y(i)){i.resolve(null);return}let o=a.messagesByID[a.messageOrder.at(-1)??``];try{await e.confirmSessionStatus?.(i.scope,{tailOpen:!!(o?.role===`assistant`&&wn(o))})}catch{}if(!y(i)){i.resolve(null);return}if(n===l){p.delete(s(i.scope)),m.set(s(i.scope),r()),i.resolve(a);return}}i.resolve(null)}catch(t){y(i)?(p.add(s(i.scope)),e.onError?.(t,{...i.scope,phase:`native-refresh`}),i.reject(t)):i.resolve(null)}finally{o(),i.epoch===c&&(g.set(n,Math.max(0,(g.get(n)??1)-1)),b(n))}})()}},x=(e,t)=>{let n=o(e),r=s(n),i=_.get(r);if(i)return i;let a,l,u=new Promise((e,t)=>{a=e,l=t}).finally(()=>{_.get(r)===u&&_.delete(r)});_.set(r,u);let d=h.get(n.directory)??[];return d.push({scope:n,gap:t,epoch:c,resolve:a,reject:l}),h.set(n.directory,d),b(n.directory),u},S=()=>{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(...zh({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}},C=()=>{let{canonical:e,immediate:t}=S();for(let n of[...e.map(e=>e.scope),...t])p.add(s(o(n)))},w=()=>{c+=1;for(let e of v)e();for(let e of h.values())for(let t of e)t.resolve(null);h.clear(),g.clear(),_.clear(),p.clear(),m.clear()};return{captureCheckpoints:()=>{d||C()},onCompensation(e){if(!(d||!e.isReconnect||e.runtimeGeneration!==a().generation)){l+=1,C();for(let e of S().immediate)x(e,!0).catch(()=>void 0)}},ensureOnObserve(e){if(d)return Promise.resolve(null);let n=o(e),i=s(n),a=_.get(i);if(a)return a;let c=p.has(i);return!c&&(!t.hasSession?.(n)||r()-(m.get(i)??-1/0)<6e4)?Promise.resolve(null):x(n,c)},cancelAll:w,isSessionInFlight:(e,t)=>_.has(s(o({directory:e,sessionID:t}))),destroy(){d=!0,w()}}}var Vh=e=>e.trim(),Hh=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session status runtime changed`)},Uh=(e,t={})=>{let n=Vh(e),r=t.transport??u(),i=t.loadSnapshot??((e,t)=>H.getSessionStatusForDirectory(e,t)),a=t.now??Date.now,o=t.runtimeProbe??{},s=(o.getGeneration??f)();return Fr({queryKey:y.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{Hh(r,s,o);let t=a(),c=await i(n,e);if(Hh(r,s,o),c===null)throw Error(`session status snapshot unavailable`);return{snapshot:c,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},Wh=(e,t={})=>{let{client:n=_,...r}=t;return n.fetchQuery(Uh(e,r))},Gh=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session active runtime changed`)},Kh=(e={})=>{let t=e.transport??u(),n=e.loadActive??(e=>H.getSessionActive(e)),r=e.now??Date.now,i=e.runtimeProbe??{},a=(i.getGeneration??f)();return Fr({queryKey:y.sessionActive.snapshot(t,a),queryFn:async({signal:e})=>{Gh(t,a,i);let o=r(),s=await n(e);return Gh(t,a,i),{result:s,requestedAt:o}},staleTime:0,gcTime:3e5,retry:!1})},qh=(e={})=>{let{client:t=_,...n}=e;return t.fetchQuery(Kh(n))},Jh=I,Yh=(e,t)=>{let n=Jh(t);if(!n)return null;let r=null;for(let t of e){let e=Jh(t.path);e&&(n!==e&&!n.startsWith(`${e}/`)||(!r||e.length>(Jh(r.path)?.length??0))&&(r=t))}return r},Xh=(e,t,n)=>{let r=Jh(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=Jh(t.path);n&&(r!==n&&!r.startsWith(`${n}/`)||n.length>o&&(o=n.length,i=t,a=Jh(e)))}if(!i)return null;let s=[Jh(i.projectDirectory),a].filter(e=>!!e);for(let t of s){let n=e.find(e=>Jh(e.path)===t)??null;if(n)return n;let r=Yh(e,t);if(r)return r}return null},Zh=(e,t,n)=>Xh(e,t,n)??Yh(e,n),Qh=``,$h=new Map,eg=new Map,tg=new Map,ng=-1/0,rg;function ig(){let e=`${u()}:${f()}`;Qh!==e&&(Qh=e,$h.clear(),eg.clear(),tg.clear(),ng=-1/0,rg=void 0)}var ag=new Set([`session.status`,`session.idle`,`session.error`,`session.step.started`,`session.execution.started`,`session.execution.succeeded`,`session.execution.failed`,`session.execution.interrupted`]),og=Ne(()=>({statusById:new Map})),sg=e=>e===`busy`?`busy`:e===`retry`?`retry`:`idle`,cg=e=>Jh(e)??e,lg=(e,t,n)=>{og.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}})},ug=(e,t)=>{if(ag.has(t.type)){ig();let e=t.properties;if(e.sessionID&&typeof e.eventSequence==`number`){if(e.eventSequence<=(eg.get(e.sessionID)??-1))return;eg.set(e.sessionID,e.eventSequence)}if(e.sessionID&&typeof e.eventCreated==`number`){if(e.eventSequence===void 0&&e.eventCreated<($h.get(e.sessionID)??0))return;$h.set(e.sessionID,e.eventCreated)}e.sessionID&&tg.set(e.sessionID,Date.now())}switch(t.type){case`session.moved`:{let e=t.properties,n=e.sessionID?og.getState().statusById.get(e.sessionID):void 0;n&&e.sessionID&&e.location?.directory&&lg(e.sessionID,cg(e.location.directory),n.status);return}case`session.status`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;let r=sg(n.status?.type);lg(n.sessionID,cg(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&&lg(n.sessionID,cg(e),`idle`);return}case`session.execution.interrupted`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;if(n.reason===`shutdown`){lg(n.sessionID,cg(e),`busy`);return}lg(n.sessionID,cg(e),`idle`);return}case`session.step.started`:case`session.execution.started`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&lg(n.sessionID,cg(e),`busy`);return}default:return}};function dg(e,t){if(ig(),!(t<ng)&&(t!==ng||e!==rg)){ng=t,rg=e,og.setState(n=>{let r=new Map(n.statusById),i=!1;for(let n of new Set([...r.keys(),...Object.keys(e)])){if((tg.get(n)??-1/0)>=t)continue;let a=r.get(n);Object.prototype.hasOwnProperty.call(e,n)?a||(r.set(n,{status:`busy`,directory:``}),i=!0):i=r.delete(n)||i}return i?{statusById:r}:n});for(let[e,n]of tg)n<t&&tg.delete(e)}}var fg=(e,t,n)=>{let r=cg(e),i=new Set(n??[]);og.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=sg(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})},pg;function mg(e){pg=e}function hg(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 gg(e,t){return JSON.stringify(e)===JSON.stringify(t)}function _g(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function vg(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 yg(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(vg(e,t,n),!0)}function bg(e,t,n=Date.now()){let r=e.getState().session_status?.[t];return r?.type===`busy`?!1:r?.type===`retry`?yg(e,t,n):(vg(e,t,n),!0)}function xg(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=hg(o[e]);if(t){c[e]=n&&_g(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 Sg(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=hg(t[o]);if(n&&n.type!==`idle`){gg(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 Cg(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function wg(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 Wh(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 qh({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;l?.state===`supported`&&u!==void 0&&dg(l.membership,u);let g=l?.state===`supported`;if(h===null&&!g)return null;let{snapshot:_,source:v}=xg(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=Cg(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Sg(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??pg;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 Tg({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:wg(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Eg(e,t){return t?{transport:t,generation:0,directory:e.directory,sessionID:e.sessionID}:{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Dg(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 Og(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 kg(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(or(e))??Promise.resolve(),r.get(gn(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=or(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=gn(e),i=(r.get(n)??Promise.resolve()).then(t,t);return r.set(n,i.then(()=>void 0,()=>void 0)),i},s=0,c=!1,l=!1,u=[],d=()=>{if(s>0||l||!c)return;c=!1,l=!0;let n=u;u=[];let r=(t.getByteBudget??_h)();e.evictToBytes(r,{protect:t.getProtectScopes?.()??[]}).catch(()=>void 0).then(()=>{l=!1;for(let e of n)e();d()})};return{wait:i,persistSettled:(t,n,r)=>{s+=1;let i=!1;return a(t,async()=>{i=(await e.upsertSettled(t,n,r)).status===`written`}).finally(()=>{--s,i&&(c=!0)}).then(()=>{if(!i){d();return}let e=new Promise(e=>u.push(e));return d(),e})},removeMessage:(t,n)=>a(t,()=>e.removeMessage(t,n)),clearSession:t=>a(t,()=>e.clearSession(t)),clearGeneration:t=>o(t,()=>e.clearGeneration(t))}}var Ag=new Map;function jg(e,t){let n=Ag.get(e);if(n)return n;let r=t().finally(()=>{Ag.get(e)===r&&Ag.delete(e)});return Ag.set(e,r),r}var Mg=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Ng(e){return jg(Mg(e),e.request)}function Pg(e,t){return`${e}\n${t}`}var Fg=new Map;function Ig(e){return Fg.get(e)}async function Lg(e){return Ng({runtimeKey:Pg(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 Fg.set(r.id,i),{info:Dd(r),parts:i}}})}function Rg(e,t){let n=e.info;return n.role===t||n.clientRole===t}function zg(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Rg(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 Bg(e){if(e.complete){let t=e.records.some(e=>Rg(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=zg(e.records);if(t.length===0){let t=e.records.some(e=>Rg(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=>Rg(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Vg(e){return e.slim===!0}var Hg=/bearer|token|authorization|password|secret|cookie/i,Ug=new Set([`message.part.delta`]);function Wg(e){return typeof e==`string`&&e.includes(`-`)}var Gg=`yuri.client-diagnostics.enabled`;function Kg(e){return e===`true`||e!==`false`&&null}function qg(e){return e.preference===!0||e.preference!==!1&&Wg(e.version)}function Jg(e=Date.now()){return`yuri-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function Yg(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function Xg(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 Zg(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return Hg.test(t)?`redacted-error`:t}function Qg(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)Vg(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function $g(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function e_(e){let t=0;for(let n of e.messageOrder)m_(e.messagesByID[n])===!0&&(t+=1);return t}function t_(e){let t=e.transcript?Qg(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:$g(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:e_(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...Zg(e.error??e.request?.error)?{error:Zg(e.error??e.request?.error)}:{},...Xg(e.error)===void 0?{}:{httpStatus:Xg(e.error)}}}function n_(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 r_(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:`yuri.client-diagnostics.v1`,exportedAt:Date.now(),eventCount:t.length,feats:n,events:t},null,2)},clear:()=>e.sink.clear()}}function i_(e){return typeof e==`string`&&Ug.has(e)}function a_(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return i_(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>i_(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 o_(e){if(e.type===`http-page`)return e.purpose}function s_(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function c_(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 l_(e){return e.__yuriOptimistic===!0}function u_(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 Hg.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function d_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function f_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var p_=e=>typeof e==`string`&&e.trim().length>0;function m_(e){if(!e||d_(e)!==`assistant`)return;let t=e,n=!p_(t.mode)&&!p_(t.agent),r=!p_(t.modelID)||!p_(t.providerID);return n||r}function h_(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function g_(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)Vg(e)?r+=1:i+=1,l_(e)&&(a=!0);let o=e.messagesByID[t],s=d_(o),c=m_(o),l=s===`user`?u_(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:f_(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 __(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:h_(e),after:h_(i)}),e.fullCount>0&&i.fullCount===0&&i.slimCount>0&&l.push(t),e.optimistic&&!i.optimistic&&!i.completed&&u.push(t),e.identityMissing!==!0&&i.identityMissing===!0&&d.push(t)}return{addedMessageIDs:o,removedMessageIDs:s,partsChanged:c,downgraded:l,optimisticLost:u,identityLost:d}}function v_(e){return{at:(e.now??Date.now)(),feat:`transcript`,kind:`transcript-diff`,sessionID:e.sessionID,trigger:e.trigger,before:e.before,after:e.after,diff:__(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 y_(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function b_(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function x_(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function S_(e){let t=x_(e.partID),n=x_(e.messageID),r=x_(e.directory),i=x_(e.childSessionID),a=x_(e.toolStatus),o=x_(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 C_(e){return[e.sessionID,x_(e.partID)??``,e.childSessionPresent?`1`:`0`,x_(e.childSessionID)??``,x_(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`,x_(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function w_(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...S_(e)}}function T_(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:b_(e),...S_(e)}}var E_=`yuri-transcript-diagnostics`,D_=`events`,O_=1,k_=(e,t)=>{try{return e.error??Error(t)}catch{return Error(t)}},A_=(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`))}}}),j_=e=>xr(e).then(()=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,O_),i=!1,a=()=>{i||(i=!0,n(k_(r,`IndexedDB open failed`)))};r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(D_)||e.createObjectStore(D_,{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})),M_=(e=E_)=>{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=j_(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(D_,e)}catch(e){throw l(),e}let i=r.objectStore(D_),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 A_(n.add(t),n.transaction);let r=await A_(n.getAllKeys(),n.transaction),i=r.length-t;if(i>0)for(let e of r.slice(0,i))await A_(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=>A_(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 A_(e.clear(),e.transaction)})}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})}}};function N_(e={}){let t=e.driver??M_(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var P_=Rr(`YuriMedia`);function F_(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function I_(){return Hn()&&zr!==void 0&&zr.isPluginAvailable(`YuriMedia`)}function L_(){return`0.1.2`}function R_(){if(typeof localStorage>`u`)return null;try{return Kg(localStorage.getItem(Gg))}catch{return null}}function z_(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(Gg,e?`true`:`false`)}catch{}}function B_(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var V_;function H_(e=L_()){return qg({version:e,preference:R_()})}function U_(e={}){return r_({sink:B_()===`indexeddb`?(e.createIndexedDBSink??N_)():(e.createMemorySink??n_)(),isEnabled:e.isEnabled??H_})}function W_(){return V_??=U_(),V_}function G_(e){W_().record(e)}function K_(e){try{return H_()?g_(e()):void 0}catch{return}}function q_(e){try{G_(v_(e))}catch{}}function J_(e){try{G_(w_(e))}catch{}}function Y_(e){try{G_(T_(e))}catch{}}function X_(e){if(e!==void 0)return typeof e==`function`?e():e}function Z_(e){return!a_(e.command)||e.changed===!1&&(e.command.type===`sse-event`||e.command.type===`sse-event-batch`)?!1:(e.isEnabled??(()=>W_().isEnabled()))()}function Q_(e){if(!Z_(e))return;let t=a_(e.command);t&&G_(t_({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:X_(e.transcript),request:X_(e.request),hydration:X_(e.hydration),command:e.command.type,purpose:o_(e.command),sseType:s_(e.command),source:c_(e.command),error:e.error}))}async function $_(){let e=await W_().exportReport(),t=b()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function ev(e,t=Jg()){if(I_())return(await P_.saveFile({dataBase64:F_(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 tv(){let e=await $_(),t=Jg();return{content:e,fileName:t,outcome:await ev(e,t),eventCount:Yg(e)}}function nv(e){return e.trim()}function rv(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??u)(),r=e.generation??t.generation??(t.probe?.getGeneration??f)();return{directory:nv(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 iv(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:on,liveRevision:0}}function av(e,t){if(!e||e.pages.length===0)return iv(t);let n=Bm(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function ov(e){return!!e?.some(e=>e.__yuriOptimistic===!0)}function sv(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)ov(n.partsByMessageID[e])&&r.add(e);return r}function cv(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 lv(e){let t=[];for(let n of e.records)n.info?.id&&t.push({info:n.info,parts:[...n.parts??[]]});return t}function uv(e,t){let n=[];for(let r of e.messageOrder)t.has(r)||ov(e.partsByMessageID[r])||n.push(r);return n}function dv(e={}){let t=e.client??_,n=e.cacheBudget??Ah({client:t,activeRegistry:e.activeRegistry??Th()}),r=n.activeRegistry,i=new Map,a=new Map,o=new Map,s=new Map,c=new Map,p=t=>Eg(t,e.durablePartition?.()),m=t=>e.durablePartition&&!_e(t)?null:p(t),h=e.durableStore?kg(e.durableStore,{getProtectScopes:()=>r.listRetained().map(e=>p(e)),getByteBudget:e.getDurableByteBudget}):void 0,g=e.contentSearchStore?kg(e.contentSearchStore,{getByteBudget:()=>33554432}):void 0,v=new Map,y=new Map,b=new Map,x=new Map,S=new Map,C=new Set,w=new Map,T=new Set,E=new Set,D=new Map,O=new Set,k=new Map,A=e=>D.get(e)??0,ee=e=>{let t=A(e)+1;return D.set(e,t),t},j=e=>{let t=A(e);return k.set(e,t),t},te=(e,t)=>A(e)===t,M=(e,t)=>{let n=G(t);if(T.has(n))return;let r=F(e);!yr(r)&&!w.has(n)||(T.add(n),G_(t_({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},ne=0,re=e=>{let t=c.get(e);return t||(t={messages:new Map,parts:new Map},c.set(e,t)),t},N=n=>{let r=rv(n,e);return uh({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},ie=t=>{let n=rv(t,e);return Zm({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},ae=t=>{let n=rv(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},oe=e=>{let t=ae(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},se=n=>{let r=e.probe??{getTransport:u,getGeneration:f},a=rv(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=ch({directory:a.directory,sessionID:a.sessionID,fetcher:async e=>{if(!e.before)return c(e);let t=A(o),n=await c(e);if(!te(o,t))throw new Vm(`read_epoch_retired`);return n},transport:a.transport,generation:a.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return i.set(o,l),l},P=t=>{let n=G(rv(t,e)),r=a.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},ce=n=>{let r=G(rv(n,e));if(o.has(r))return;let i=ie(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&P(n)});o.set(r,a)},le=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)},ue=(e,t)=>{let n=re(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},de=(e,t)=>{let n=re(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=rv(t,e),r=G(n),i=N(t),a=re(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=av(i,n.sessionID),s=ue(r,o);return a.cachedFrom=i,a.hasTranscriptCache=!0,s},fe=(e,t)=>`${G(e)}\n${t}`,pe=(e,t)=>{let n=G(e),r=S.get(n);r&&(r.delete(t),r.size===0&&S.delete(n))},I=e=>{for(let t of S.keys())(t===e||t.startsWith(e))&&S.delete(t)},L=e=>{for(let t of b.keys())t.startsWith(e)&&b.delete(t);for(let t of x.keys())t.startsWith(e)&&x.delete(t)},me=e=>{for(let t of w.keys())(t===e||t.startsWith(e))&&w.delete(t);for(let t of[...T])(t===e||t.startsWith(e))&&T.delete(t);for(let t of E)(t===e||t.startsWith(e))&&E.delete(t)},he=e=>{let t=`${G(e)}\n`;for(let[e,n]of b)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of x.keys())if(e.startsWith(t))return!0;return!1},ge=!1,_e=t=>{let n=rv({directory:t.directory,sessionID:t.sessionID},e);return!ge&&n.transport===t.transport&&n.generation===t.generation},ve=(e,t,n,r=h)=>{if(!r||r===h&&!d())return;let i=m(e);i&&r.persistSettled(i,t,n??[])},ye=(e,t,n,r,i=h)=>{if(!i||i===h&&ne>0||i===h&&!d()||!r.applied||!r.changed)return;let a=m(t);if(a){if(n.type===`remove-message`){i.removeMessage(a,n.messageID);return}if(n.type===`reset`||n.type===`revert-committed`){if(i.clearSession(a),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;ve(t,n,r.partsByMessageID[e.info.id]??e.parts,i)}}else if(n.type===`revert-committed`){let n=F(e);for(let e of n.messageOrder){let r=n.messagesByID[e];r&&ve(t,r,n.partsByMessageID[e],i)}}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,o=F(e);for(let e of r){let n=Og(e);if(n.action===`remove`){i.removeMessage(a,n.messageID);continue}if(n.action===`skip`)continue;let r=o.messagesByID[n.messageID];r&&ve(t,r,o.partsByMessageID[n.messageID],i)}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=F(e),a=n.type===`http-page`?n.page.records:n.records;for(let e of a){let n=r.messagesByID[e.info.id];n&&ve(t,n,r.partsByMessageID[e.info.id],i)}}}}},be=(e,t)=>{if(!g||!_e(t))return;let n=F(e);for(let e of n.messageOrder){let r=n.messagesByID[e];r&&ve(t,r,n.partsByMessageID[e],g)}},xe=(e,t,n)=>{if(!h||ne>0||!_e(t))return;let r=F(e);for(let e of r.messageOrder){if(n?.has(e))continue;let i=r.messagesByID[e];i&&ve(t,i,r.partsByMessageID[e])}},Se=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 Dg(await rh({directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??$p()},r,t,n.transport,i,n.generation))},Ce=(e,t)=>{for(let n of t){let t=`${e.directory}\n${e.sessionID}\n${n}`;tt(t,()=>R.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)}},we=(e,t)=>{let r=G(t),i=y.get(r);if(i)return i;let a=l(),o=j(r),s=(async()=>{let i=Date.now();v.set(r,{status:`loading`});try{let i=await Se(t);if(!_e(t)||l()!==a||!te(r,o))return v.delete(r),R.getTranscript(e);R.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Vp(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let s=S.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=R.getParts(e,i),c=R.getMessage(e,i)??a.info;if(!Gt(o,c)){pe(t,i),b.set(fe(t,i),{status:`ready`}),r+=1;continue}n.push(i)}r>0&&P(e),Ce(e,n)}return v.delete(r),n.noteScopeObserved(ae(e)),oe(e),R.getTranscript(e)}catch(n){if(n instanceof Vm||!_e(t))return v.delete(r),R.getTranscript(e);throw v.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),G_(t_({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:R.getRequestState?.(e),hydration:R.getHydrationState?.(e),error:n})),n}finally{y.delete(r)}})();return y.set(r,s),s},Te=new Map,Ee=(e,t)=>{let r=G(t),i=y.get(r);if(i)return i;let a=l(),o=j(r),s=(async()=>{let i=Date.now();v.set(r,{status:`loading`});try{return await R.refreshFromAuthority(e),!_e(t)||l()!==a||!te(r,o)?(v.delete(r),R.getTranscript(e)):(Vp(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),v.delete(r),n.noteScopeObserved(ae(e)),oe(e),R.getTranscript(e))}catch(n){return v.delete(r),n instanceof Vm||!_e(t)||G_(t_({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:R.getRequestState?.(e),hydration:R.getHydrationState?.(e),error:n})),R.getTranscript(e)}finally{y.delete(r)}})();return y.set(r,s),s},De=t=>{let n=N(t);return!n||n.pages.length===0||C.has(G(rv(t,e)))?!0:um(n).kind===`unknown`},R={getTranscript(e){return F(e)},getPagination(t){let n=rv(t,e),r=G(n),i=R.getTranscript(t);return de(r,Qt(n.sessionID,i.boundary))},getRequestState(t){let n=rv(t,e),r=v.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=rv(t,e),r=G(n),i=R.getTranscript(t);yr(i)&&w.set(r,!0);let a=w.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:it({p0Satisfied:a,prependActive:E.has(r),materializeActive:he(n),earlierHistoryLoaded:zt(i)>1})}},hasSession(e){return N(e)!==void 0},getMessage(t,n){let r=G(rv(t,e)),i=re(r),a=R.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(rv(t,e)),i=re(r),a=R.getTranscript(t).partsByMessageID[n]??fv,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=rv(t,e),i=b.get(fe(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!R.getMessage(t,n)||S.get(G(r))?.has(n)||ct(R.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=rv(t,e),i=l(),a=fe(r,n),o=K_(()=>R.getTranscript(t)),s=e=>{try{let t=K_(e);if(!o||!t)return;q_({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:o,after:t})}catch{}},c=x.get(a);if(c)return c.then(e=>s(()=>e)).catch(()=>void 0),c;let u=(async()=>{try{if(!R.getMessage(t,n))return b.set(a,{status:`idle`}),R.getTranscript(t);if(!ct(R.getParts(t,n))&&!S.get(G(r))?.has(n))return b.set(a,{status:`ready`}),R.getTranscript(t);b.set(a,{status:`loading`}),P(t);try{let o=await Lg({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 H.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n}),i=Pn(r.sessionID,t);if(!i?.info?.id)throw Error(`session.message failed: empty response`);return{data:{info:i.info,parts:[...i.parts??[]]}}}});return!_e(r)||l()!==i?(b.delete(a),R.getTranscript(t)):(R.apply(t,{type:`materialize-snapshots`,records:[{info:o.info,parts:o.parts??[]}]}),ct(R.getParts(t,n))?b.set(a,{status:`error`,error:`session.message failed: slim parts remain`}):b.set(a,{status:`ready`}),P(t),R.getTranscript(t))}catch(e){if(!_e(r)||l()!==i)return b.delete(a),R.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return b.set(a,{status:`error`,error:n}),P(t),R.getTranscript(t)}}finally{pe(r,n)}})();return x.set(a,u),u.then(e=>s(()=>e)).catch(()=>void 0),u.finally(()=>{x.get(a)===u&&x.delete(a)}),u},apply(r,a){let o=rv(r,e),s=ie(r),c=(()=>{switch(a.type){case`http-page`:{let e=G(o),n=k.get(e);if(typeof n==`number`&&!te(e,n))return{applied:!1,changed:!1,error:`stale-read-epoch`};let i=lh(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&&C.delete(e),i.result.changed&&(P(r),oe(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?R.apply(r,{type:`revert-committed`,to:e}):{applied:!1,changed:!1}}let e=lh(t,s,o.sessionID,{type:`sse-event`,event:a.event});return e.result.applied&&C.delete(G(o)),e.result.changed&&P(r),e.result}case`sse-event-batch`:{let e=a.events,n=!1,i=!1,c=[],l=()=>{if(c.length===0)return;let e=lh(t,s,o.sessionID,{type:`sse-event-batch`,events:c});c=[],e.result.applied&&(i=!0,C.delete(G(o))),e.result.changed&&(n=!0,P(r))};for(let t of e){if(t.type===`session.revert.committed`){l();let e=typeof t.properties?.to==`string`?t.properties.to:void 0;if(!e)continue;let a=R.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=lh(t,s,o.sessionID,{type:`optimistic-add`,message:a.message,parts:a.parts});return n.result.changed&&P(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:o.directory,sessionID:o.sessionID,messageID:a.messageID}),lh(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=lh(t,s,o.sessionID,{type:`optimistic-remove`,messageID:a.messageID});return n.result.changed&&P(r),n.result}case`reset`:{if(E.delete(G(o)),S.delete(G(o)),C.delete(G(o)),n.purgeSession(ae(r)),!a.page)return P(r),{applied:!0,changed:!0};let e=lh(t,s,o.sessionID,{type:`reset`,page:a.page,capturedLiveRevision:a.capturedLiveRevision,liveRevision:a.liveRevision,skipPartTypes:a.skipPartTypes});return(e.result.changed||e.result.applied)&&(P(r),oe(r)),e.result}case`materialize-snapshots`:return pv(t,s,o.sessionID,a,()=>P(r));case`remove-message`:{let e=lh(t,s,o.sessionID,{type:`optimistic-remove`,messageID:a.messageID});return e.result.changed&&P(r),e.result}case`revert-committed`:{let c=G(o),l=`${c}\n${a.to}`;if(O.has(l))return{applied:!0,changed:!1};O.add(l),O.size>256&&O.delete(O.values().next().value),ee(c),y.delete(c),v.delete(c),E.delete(c),i.delete(c),L(`${c}\n`);let u=lh(t,s,o.sessionID,{type:`revert-committed`,to:a.to});if(u.needsAuthorityRecovery){n.purgeSession(ae(r)),C.delete(c),S.delete(c);let t=m(o);return e.durableStore&&t&&e.durableStore.clearSession(t).catch(()=>void 0),P(r),e.fetcher&&R.ensureInitial(r).catch(()=>void 0),{applied:!0,changed:!0}}return u.result.applied&&C.delete(c),u.result.changed&&(P(r),oe(r)),{applied:!0,changed:u.result.changed}}default:return{applied:!1,changed:!1}}})();return ye(r,o,a,c),g&&ye(r,o,a,c,g),c.applied&&(Q_({directory:o.directory,sessionID:o.sessionID,transport:o.transport,generation:o.generation,command:a,transcript:()=>R.getTranscript(r),request:()=>R.getRequestState?.(r),hydration:()=>R.getHydrationState?.(r),error:c.error,changed:c.changed}),M(r,o)),c},subscribe(t,i){let o=G(rv(t,e)),c=a.get(o);if(!c){c=new Set,a.set(o,c);let e=ae(t);s.set(o,r.retain(e)),n.noteScopeObserved(e)}return c.add(i),ce(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))}le(o)}}},async ensureInitial(t){let a=rv(t,e),o=l(),s=G(a),u=p(a);if(h&&await h.wait(u),l()!==o)return R.getTranscript(t);if(N(t)===void 0&&e.durableStore&&d())try{let n=await e.durableStore.readSession(u);if(_e(a)&&l()===o&&N(t)===void 0&&n.records.length>0){ne+=1;try{R.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)Gt(t.parts,t.info)&&e.add(t.info.id);e.size>0&&S.set(s,e),C.add(s)}finally{--ne}}}catch(e){G_(t_({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 R.getTranscript(t);if(De(t)&&N(t)!==void 0){let e=Date.now(),n=await we(t,a);return be(t,a),G_(t_({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:R.getRequestState?.(t),hydration:R.getHydrationState?.(t)})),M(t,a),n}let f=N(t);if(f&&f.pages.length>0&&!De(t)&&e.fetcher&&!r.isRetained(ae(t))){let e=Date.now(),n=await Ee(t,a);return be(t,a),G_(t_({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:R.getRequestState?.(t),hydration:R.getHydrationState?.(t)})),M(t,a),n}let m=se(t),g=Date.now(),_=N(t)!==void 0;v.delete(s);try{await m.ensureInitial()}catch(e){if(l()!==o)return R.getTranscript(t);throw G_(t_({kind:`request-error`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:_?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-g,transcript:F(t),request:R.getRequestState?.(t),hydration:R.getHydrationState?.(t),error:e})),e}if(l()!==o)return i.get(s)===m&&(n.purgeSession(ae(t)),c.delete(s),P(t)),R.getTranscript(t);v.delete(s),_||Vp(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(ae(t)),oe(t);let y=R.getTranscript(t);return xe(t,a),be(t,a),G_(t_({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:_?`query-cache`:`network`,durationMs:Date.now()-g,transcript:y,request:R.getRequestState?.(t),hydration:R.getHydrationState?.(t)})),M(t,a),y},async fetchPreviousPage(n,r){if(De(n)&&await R.ensureInitial(n),um(N(n)).kind!==`has-more`)return R.getTranscript(n);let i=rv(n,e),a=G(i),o=j(a);E.add(a),P(n);let s=Date.now(),c=new Set(R.getTranscript(n).messageOrder);try{if(await se(n).fetchPreviousPage(r),!te(a,o))return R.getTranscript(n);oe(n);let e=R.getTranscript(n);return xe(n,i,c),be(n,i),G_(t_({kind:`http-page`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-s,purpose:`prepend`,command:`http-page`,transcript:e,request:R.getRequestState?.(n),hydration:R.getHydrationState?.(n)})),e}catch(e){if(!te(a,o)){let e=N(n);return e&&t.setQueryData(ie(n),e),R.getTranscript(n)}throw G_(t_({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-s,purpose:`prepend`,error:e})),e}finally{E.delete(a),P(n)}},getController(t){let n=rv(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=rv(r,e),o=G(a),s=j(o),c=`${o}\n${s}\n${l()}`,u=Te.get(c);if(u)return u;let d=(async()=>{let c=l(),u=K_(()=>R.getTranscript(r)),d=R.getTranscript(r),f={...d.messagesByID},p={...d.partsByMessageID},m=await i({directory:a.directory,sessionID:a.sessionID,limit:e.initialLimit??$p(),signal:new AbortController().signal});if(l()!==c||!te(o,s))return R.getTranscript(r);if(!_e(a))return R.getTranscript({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation});let h=R.getTranscript(r),g=sv(f,p,h),_=(m.coverageMessageIDs??m.records.map(e=>e.info.id)).some(e=>h.messagesByID[e]!==void 0),v=He({fetched:lv(m),previous:cv(h),touched:g,coverageMessageIDs:m.coverageMessageIDs,completeTail:m.complete===!0}),y=h.liveRevision;R.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=uv(R.getTranscript(r),b);for(let t of x)R.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(ie(r),{...e,pages:e.pages.map((e,t)=>t===0?{...e,cursor:m.complete?null:m.cursor??null,complete:m.complete}:e)}),P(r))}let S=R.getTranscript(r);Vp(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(ae(r)),jn(a.sessionID,S.messageOrder);try{let e=K_(()=>S);u&&e&&q_({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})();Te.set(c,d);try{return await d}finally{Te.get(c)===d&&Te.delete(c)}},async destructiveReset(t){let r=m(rv(t,e));r&&await g?.clearSession(r);let a=K_(()=>R.getTranscript(t)),o=ae(t);return h&&r&&await h.clearSession(r),n.destructiveReset(o,async()=>{let n=rv(t,e),r=G(n),o=i.get(r);if(o&&(o.destroy(),i.delete(r)),c.delete(r),me(r),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await R.ensureInitial(t);try{let e=K_(()=>s);a&&e&&q_({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:a,after:e})}catch{}return s})},purgeSession(t){let r=G(rv(t,e)),a=i.get(r);a&&(a.destroy(),i.delete(r)),c.delete(r),L(`${r}\n`),S.delete(r),me(r),n.purgeSession(ae(t)),P(t)},resetReasoningProjection(){let t=`${(e.probe?.getTransport??u)()}\n${(e.probe?.getGeneration??f)()}\n`,r=new Set;for(let e of i.keys())e.startsWith(t)&&r.add(e);for(let e of c.keys())e.startsWith(t)&&r.add(e);for(let e of a.keys())e.startsWith(t)&&r.add(e);for(let e of r){let t=i.get(e);t&&(t.destroy(),i.delete(e)),c.delete(e);let r=e.split(`
|
|
402
|
+
`).trim();if(n)return Hg.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function d_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function f_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var p_=e=>typeof e==`string`&&e.trim().length>0;function m_(e){if(!e||d_(e)!==`assistant`)return;let t=e,n=!p_(t.mode)&&!p_(t.agent),r=!p_(t.modelID)||!p_(t.providerID);return n||r}function h_(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function g_(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)Vg(e)?r+=1:i+=1,l_(e)&&(a=!0);let o=e.messagesByID[t],s=d_(o),c=m_(o),l=s===`user`?u_(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:f_(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 __(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:h_(e),after:h_(i)}),e.fullCount>0&&i.fullCount===0&&i.slimCount>0&&l.push(t),e.optimistic&&!i.optimistic&&!i.completed&&u.push(t),e.identityMissing!==!0&&i.identityMissing===!0&&d.push(t)}return{addedMessageIDs:o,removedMessageIDs:s,partsChanged:c,downgraded:l,optimisticLost:u,identityLost:d}}function v_(e){return{at:(e.now??Date.now)(),feat:`transcript`,kind:`transcript-diff`,sessionID:e.sessionID,trigger:e.trigger,before:e.before,after:e.after,diff:__(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 y_(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function b_(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function x_(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function S_(e){let t=x_(e.partID),n=x_(e.messageID),r=x_(e.directory),i=x_(e.childSessionID),a=x_(e.toolStatus),o=x_(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 C_(e){return[e.sessionID,x_(e.partID)??``,e.childSessionPresent?`1`:`0`,x_(e.childSessionID)??``,x_(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`,x_(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function w_(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...S_(e)}}function T_(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:b_(e),...S_(e)}}var E_=`yuri-transcript-diagnostics`,D_=`events`,O_=1,k_=(e,t)=>{try{return e.error??Error(t)}catch{return Error(t)}},A_=(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`))}}}),j_=e=>xr(e).then(()=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,O_),i=!1,a=()=>{i||(i=!0,n(k_(r,`IndexedDB open failed`)))};r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(D_)||e.createObjectStore(D_,{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})),M_=(e=E_)=>{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=j_(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(D_,e)}catch(e){throw l(),e}let i=r.objectStore(D_),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 A_(n.add(t),n.transaction);let r=await A_(n.getAllKeys(),n.transaction),i=r.length-t;if(i>0)for(let e of r.slice(0,i))await A_(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=>A_(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 A_(e.clear(),e.transaction)})}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})}}};function N_(e={}){let t=e.driver??M_(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var P_=Rr(`YuriMedia`);function F_(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function I_(){return Hn()&&zr!==void 0&&zr.isPluginAvailable(`YuriMedia`)}function L_(){return`0.1.4`}function R_(){if(typeof localStorage>`u`)return null;try{return Kg(localStorage.getItem(Gg))}catch{return null}}function z_(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(Gg,e?`true`:`false`)}catch{}}function B_(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var V_;function H_(e=L_()){return qg({version:e,preference:R_()})}function U_(e={}){return r_({sink:B_()===`indexeddb`?(e.createIndexedDBSink??N_)():(e.createMemorySink??n_)(),isEnabled:e.isEnabled??H_})}function W_(){return V_??=U_(),V_}function G_(e){W_().record(e)}function K_(e){try{return H_()?g_(e()):void 0}catch{return}}function q_(e){try{G_(v_(e))}catch{}}function J_(e){try{G_(w_(e))}catch{}}function Y_(e){try{G_(T_(e))}catch{}}function X_(e){if(e!==void 0)return typeof e==`function`?e():e}function Z_(e){return!a_(e.command)||e.changed===!1&&(e.command.type===`sse-event`||e.command.type===`sse-event-batch`)?!1:(e.isEnabled??(()=>W_().isEnabled()))()}function Q_(e){if(!Z_(e))return;let t=a_(e.command);t&&G_(t_({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:X_(e.transcript),request:X_(e.request),hydration:X_(e.hydration),command:e.command.type,purpose:o_(e.command),sseType:s_(e.command),source:c_(e.command),error:e.error}))}async function $_(){let e=await W_().exportReport(),t=b()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function ev(e,t=Jg()){if(I_())return(await P_.saveFile({dataBase64:F_(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 tv(){let e=await $_(),t=Jg();return{content:e,fileName:t,outcome:await ev(e,t),eventCount:Yg(e)}}function nv(e){return e.trim()}function rv(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??u)(),r=e.generation??t.generation??(t.probe?.getGeneration??f)();return{directory:nv(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 iv(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:on,liveRevision:0}}function av(e,t){if(!e||e.pages.length===0)return iv(t);let n=Bm(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function ov(e){return!!e?.some(e=>e.__yuriOptimistic===!0)}function sv(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)ov(n.partsByMessageID[e])&&r.add(e);return r}function cv(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 lv(e){let t=[];for(let n of e.records)n.info?.id&&t.push({info:n.info,parts:[...n.parts??[]]});return t}function uv(e,t){let n=[];for(let r of e.messageOrder)t.has(r)||ov(e.partsByMessageID[r])||n.push(r);return n}function dv(e={}){let t=e.client??_,n=e.cacheBudget??Ah({client:t,activeRegistry:e.activeRegistry??Th()}),r=n.activeRegistry,i=new Map,a=new Map,o=new Map,s=new Map,c=new Map,p=t=>Eg(t,e.durablePartition?.()),m=t=>e.durablePartition&&!_e(t)?null:p(t),h=e.durableStore?kg(e.durableStore,{getProtectScopes:()=>r.listRetained().map(e=>p(e)),getByteBudget:e.getDurableByteBudget}):void 0,g=e.contentSearchStore?kg(e.contentSearchStore,{getByteBudget:()=>33554432}):void 0,v=new Map,y=new Map,b=new Map,x=new Map,S=new Map,C=new Set,w=new Map,T=new Set,E=new Set,D=new Map,O=new Set,k=new Map,A=e=>D.get(e)??0,ee=e=>{let t=A(e)+1;return D.set(e,t),t},j=e=>{let t=A(e);return k.set(e,t),t},te=(e,t)=>A(e)===t,M=(e,t)=>{let n=G(t);if(T.has(n))return;let r=F(e);!yr(r)&&!w.has(n)||(T.add(n),G_(t_({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},ne=0,re=e=>{let t=c.get(e);return t||(t={messages:new Map,parts:new Map},c.set(e,t)),t},N=n=>{let r=rv(n,e);return uh({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},ie=t=>{let n=rv(t,e);return Zm({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},ae=t=>{let n=rv(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},oe=e=>{let t=ae(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},se=n=>{let r=e.probe??{getTransport:u,getGeneration:f},a=rv(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=ch({directory:a.directory,sessionID:a.sessionID,fetcher:async e=>{if(!e.before)return c(e);let t=A(o),n=await c(e);if(!te(o,t))throw new Vm(`read_epoch_retired`);return n},transport:a.transport,generation:a.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return i.set(o,l),l},P=t=>{let n=G(rv(t,e)),r=a.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},ce=n=>{let r=G(rv(n,e));if(o.has(r))return;let i=ie(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&P(n)});o.set(r,a)},le=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)},ue=(e,t)=>{let n=re(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},de=(e,t)=>{let n=re(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=rv(t,e),r=G(n),i=N(t),a=re(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=av(i,n.sessionID),s=ue(r,o);return a.cachedFrom=i,a.hasTranscriptCache=!0,s},fe=(e,t)=>`${G(e)}\n${t}`,pe=(e,t)=>{let n=G(e),r=S.get(n);r&&(r.delete(t),r.size===0&&S.delete(n))},I=e=>{for(let t of S.keys())(t===e||t.startsWith(e))&&S.delete(t)},L=e=>{for(let t of b.keys())t.startsWith(e)&&b.delete(t);for(let t of x.keys())t.startsWith(e)&&x.delete(t)},me=e=>{for(let t of w.keys())(t===e||t.startsWith(e))&&w.delete(t);for(let t of[...T])(t===e||t.startsWith(e))&&T.delete(t);for(let t of E)(t===e||t.startsWith(e))&&E.delete(t)},he=e=>{let t=`${G(e)}\n`;for(let[e,n]of b)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of x.keys())if(e.startsWith(t))return!0;return!1},ge=!1,_e=t=>{let n=rv({directory:t.directory,sessionID:t.sessionID},e);return!ge&&n.transport===t.transport&&n.generation===t.generation},ve=(e,t,n,r=h)=>{if(!r||r===h&&!d())return;let i=m(e);i&&r.persistSettled(i,t,n??[])},ye=(e,t,n,r,i=h)=>{if(!i||i===h&&ne>0||i===h&&!d()||!r.applied||!r.changed)return;let a=m(t);if(a){if(n.type===`remove-message`){i.removeMessage(a,n.messageID);return}if(n.type===`reset`||n.type===`revert-committed`){if(i.clearSession(a),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;ve(t,n,r.partsByMessageID[e.info.id]??e.parts,i)}}else if(n.type===`revert-committed`){let n=F(e);for(let e of n.messageOrder){let r=n.messagesByID[e];r&&ve(t,r,n.partsByMessageID[e],i)}}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,o=F(e);for(let e of r){let n=Og(e);if(n.action===`remove`){i.removeMessage(a,n.messageID);continue}if(n.action===`skip`)continue;let r=o.messagesByID[n.messageID];r&&ve(t,r,o.partsByMessageID[n.messageID],i)}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=F(e),a=n.type===`http-page`?n.page.records:n.records;for(let e of a){let n=r.messagesByID[e.info.id];n&&ve(t,n,r.partsByMessageID[e.info.id],i)}}}}},be=(e,t)=>{if(!g||!_e(t))return;let n=F(e);for(let e of n.messageOrder){let r=n.messagesByID[e];r&&ve(t,r,n.partsByMessageID[e],g)}},xe=(e,t,n)=>{if(!h||ne>0||!_e(t))return;let r=F(e);for(let e of r.messageOrder){if(n?.has(e))continue;let i=r.messagesByID[e];i&&ve(t,i,r.partsByMessageID[e])}},Se=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 Dg(await rh({directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??$p()},r,t,n.transport,i,n.generation))},Ce=(e,t)=>{for(let n of t){let t=`${e.directory}\n${e.sessionID}\n${n}`;tt(t,()=>R.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)}},we=(e,t)=>{let r=G(t),i=y.get(r);if(i)return i;let a=l(),o=j(r),s=(async()=>{let i=Date.now();v.set(r,{status:`loading`});try{let i=await Se(t);if(!_e(t)||l()!==a||!te(r,o))return v.delete(r),R.getTranscript(e);R.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Vp(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let s=S.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=R.getParts(e,i),c=R.getMessage(e,i)??a.info;if(!Gt(o,c)){pe(t,i),b.set(fe(t,i),{status:`ready`}),r+=1;continue}n.push(i)}r>0&&P(e),Ce(e,n)}return v.delete(r),n.noteScopeObserved(ae(e)),oe(e),R.getTranscript(e)}catch(n){if(n instanceof Vm||!_e(t))return v.delete(r),R.getTranscript(e);throw v.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),G_(t_({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:R.getRequestState?.(e),hydration:R.getHydrationState?.(e),error:n})),n}finally{y.delete(r)}})();return y.set(r,s),s},Te=new Map,Ee=(e,t)=>{let r=G(t),i=y.get(r);if(i)return i;let a=l(),o=j(r),s=(async()=>{let i=Date.now();v.set(r,{status:`loading`});try{return await R.refreshFromAuthority(e),!_e(t)||l()!==a||!te(r,o)?(v.delete(r),R.getTranscript(e)):(Vp(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),v.delete(r),n.noteScopeObserved(ae(e)),oe(e),R.getTranscript(e))}catch(n){return v.delete(r),n instanceof Vm||!_e(t)||G_(t_({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:R.getRequestState?.(e),hydration:R.getHydrationState?.(e),error:n})),R.getTranscript(e)}finally{y.delete(r)}})();return y.set(r,s),s},De=t=>{let n=N(t);return!n||n.pages.length===0||C.has(G(rv(t,e)))?!0:um(n).kind===`unknown`},R={getTranscript(e){return F(e)},getPagination(t){let n=rv(t,e),r=G(n),i=R.getTranscript(t);return de(r,Qt(n.sessionID,i.boundary))},getRequestState(t){let n=rv(t,e),r=v.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=rv(t,e),r=G(n),i=R.getTranscript(t);yr(i)&&w.set(r,!0);let a=w.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:it({p0Satisfied:a,prependActive:E.has(r),materializeActive:he(n),earlierHistoryLoaded:zt(i)>1})}},hasSession(e){return N(e)!==void 0},getMessage(t,n){let r=G(rv(t,e)),i=re(r),a=R.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(rv(t,e)),i=re(r),a=R.getTranscript(t).partsByMessageID[n]??fv,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=rv(t,e),i=b.get(fe(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!R.getMessage(t,n)||S.get(G(r))?.has(n)||ct(R.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=rv(t,e),i=l(),a=fe(r,n),o=K_(()=>R.getTranscript(t)),s=e=>{try{let t=K_(e);if(!o||!t)return;q_({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:o,after:t})}catch{}},c=x.get(a);if(c)return c.then(e=>s(()=>e)).catch(()=>void 0),c;let u=(async()=>{try{if(!R.getMessage(t,n))return b.set(a,{status:`idle`}),R.getTranscript(t);if(!ct(R.getParts(t,n))&&!S.get(G(r))?.has(n))return b.set(a,{status:`ready`}),R.getTranscript(t);b.set(a,{status:`loading`}),P(t);try{let o=await Lg({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 H.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n}),i=Pn(r.sessionID,t);if(!i?.info?.id)throw Error(`session.message failed: empty response`);return{data:{info:i.info,parts:[...i.parts??[]]}}}});return!_e(r)||l()!==i?(b.delete(a),R.getTranscript(t)):(R.apply(t,{type:`materialize-snapshots`,records:[{info:o.info,parts:o.parts??[]}]}),ct(R.getParts(t,n))?b.set(a,{status:`error`,error:`session.message failed: slim parts remain`}):b.set(a,{status:`ready`}),P(t),R.getTranscript(t))}catch(e){if(!_e(r)||l()!==i)return b.delete(a),R.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return b.set(a,{status:`error`,error:n}),P(t),R.getTranscript(t)}}finally{pe(r,n)}})();return x.set(a,u),u.then(e=>s(()=>e)).catch(()=>void 0),u.finally(()=>{x.get(a)===u&&x.delete(a)}),u},apply(r,a){let o=rv(r,e),s=ie(r),c=(()=>{switch(a.type){case`http-page`:{let e=G(o),n=k.get(e);if(typeof n==`number`&&!te(e,n))return{applied:!1,changed:!1,error:`stale-read-epoch`};let i=lh(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&&C.delete(e),i.result.changed&&(P(r),oe(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?R.apply(r,{type:`revert-committed`,to:e}):{applied:!1,changed:!1}}let e=lh(t,s,o.sessionID,{type:`sse-event`,event:a.event});return e.result.applied&&C.delete(G(o)),e.result.changed&&P(r),e.result}case`sse-event-batch`:{let e=a.events,n=!1,i=!1,c=[],l=()=>{if(c.length===0)return;let e=lh(t,s,o.sessionID,{type:`sse-event-batch`,events:c});c=[],e.result.applied&&(i=!0,C.delete(G(o))),e.result.changed&&(n=!0,P(r))};for(let t of e){if(t.type===`session.revert.committed`){l();let e=typeof t.properties?.to==`string`?t.properties.to:void 0;if(!e)continue;let a=R.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=lh(t,s,o.sessionID,{type:`optimistic-add`,message:a.message,parts:a.parts});return n.result.changed&&P(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:o.directory,sessionID:o.sessionID,messageID:a.messageID}),lh(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=lh(t,s,o.sessionID,{type:`optimistic-remove`,messageID:a.messageID});return n.result.changed&&P(r),n.result}case`reset`:{if(E.delete(G(o)),S.delete(G(o)),C.delete(G(o)),n.purgeSession(ae(r)),!a.page)return P(r),{applied:!0,changed:!0};let e=lh(t,s,o.sessionID,{type:`reset`,page:a.page,capturedLiveRevision:a.capturedLiveRevision,liveRevision:a.liveRevision,skipPartTypes:a.skipPartTypes});return(e.result.changed||e.result.applied)&&(P(r),oe(r)),e.result}case`materialize-snapshots`:return pv(t,s,o.sessionID,a,()=>P(r));case`remove-message`:{let e=lh(t,s,o.sessionID,{type:`optimistic-remove`,messageID:a.messageID});return e.result.changed&&P(r),e.result}case`revert-committed`:{let c=G(o),l=`${c}\n${a.to}`;if(O.has(l))return{applied:!0,changed:!1};O.add(l),O.size>256&&O.delete(O.values().next().value),ee(c),y.delete(c),v.delete(c),E.delete(c),i.delete(c),L(`${c}\n`);let u=lh(t,s,o.sessionID,{type:`revert-committed`,to:a.to});if(u.needsAuthorityRecovery){n.purgeSession(ae(r)),C.delete(c),S.delete(c);let t=m(o);return e.durableStore&&t&&e.durableStore.clearSession(t).catch(()=>void 0),P(r),e.fetcher&&R.ensureInitial(r).catch(()=>void 0),{applied:!0,changed:!0}}return u.result.applied&&C.delete(c),u.result.changed&&(P(r),oe(r)),{applied:!0,changed:u.result.changed}}default:return{applied:!1,changed:!1}}})();return ye(r,o,a,c),g&&ye(r,o,a,c,g),c.applied&&(Q_({directory:o.directory,sessionID:o.sessionID,transport:o.transport,generation:o.generation,command:a,transcript:()=>R.getTranscript(r),request:()=>R.getRequestState?.(r),hydration:()=>R.getHydrationState?.(r),error:c.error,changed:c.changed}),M(r,o)),c},subscribe(t,i){let o=G(rv(t,e)),c=a.get(o);if(!c){c=new Set,a.set(o,c);let e=ae(t);s.set(o,r.retain(e)),n.noteScopeObserved(e)}return c.add(i),ce(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))}le(o)}}},async ensureInitial(t){let a=rv(t,e),o=l(),s=G(a),u=p(a);if(h&&await h.wait(u),l()!==o)return R.getTranscript(t);if(N(t)===void 0&&e.durableStore&&d())try{let n=await e.durableStore.readSession(u);if(_e(a)&&l()===o&&N(t)===void 0&&n.records.length>0){ne+=1;try{R.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)Gt(t.parts,t.info)&&e.add(t.info.id);e.size>0&&S.set(s,e),C.add(s)}finally{--ne}}}catch(e){G_(t_({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 R.getTranscript(t);if(De(t)&&N(t)!==void 0){let e=Date.now(),n=await we(t,a);return be(t,a),G_(t_({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:R.getRequestState?.(t),hydration:R.getHydrationState?.(t)})),M(t,a),n}let f=N(t);if(f&&f.pages.length>0&&!De(t)&&e.fetcher&&!r.isRetained(ae(t))){let e=Date.now(),n=await Ee(t,a);return be(t,a),G_(t_({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:R.getRequestState?.(t),hydration:R.getHydrationState?.(t)})),M(t,a),n}let m=se(t),g=Date.now(),_=N(t)!==void 0;v.delete(s);try{await m.ensureInitial()}catch(e){if(l()!==o)return R.getTranscript(t);throw G_(t_({kind:`request-error`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:_?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-g,transcript:F(t),request:R.getRequestState?.(t),hydration:R.getHydrationState?.(t),error:e})),e}if(l()!==o)return i.get(s)===m&&(n.purgeSession(ae(t)),c.delete(s),P(t)),R.getTranscript(t);v.delete(s),_||Vp(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(ae(t)),oe(t);let y=R.getTranscript(t);return xe(t,a),be(t,a),G_(t_({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:_?`query-cache`:`network`,durationMs:Date.now()-g,transcript:y,request:R.getRequestState?.(t),hydration:R.getHydrationState?.(t)})),M(t,a),y},async fetchPreviousPage(n,r){if(De(n)&&await R.ensureInitial(n),um(N(n)).kind!==`has-more`)return R.getTranscript(n);let i=rv(n,e),a=G(i),o=j(a);E.add(a),P(n);let s=Date.now(),c=new Set(R.getTranscript(n).messageOrder);try{if(await se(n).fetchPreviousPage(r),!te(a,o))return R.getTranscript(n);oe(n);let e=R.getTranscript(n);return xe(n,i,c),be(n,i),G_(t_({kind:`http-page`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-s,purpose:`prepend`,command:`http-page`,transcript:e,request:R.getRequestState?.(n),hydration:R.getHydrationState?.(n)})),e}catch(e){if(!te(a,o)){let e=N(n);return e&&t.setQueryData(ie(n),e),R.getTranscript(n)}throw G_(t_({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-s,purpose:`prepend`,error:e})),e}finally{E.delete(a),P(n)}},getController(t){let n=rv(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=rv(r,e),o=G(a),s=j(o),c=`${o}\n${s}\n${l()}`,u=Te.get(c);if(u)return u;let d=(async()=>{let c=l(),u=K_(()=>R.getTranscript(r)),d=R.getTranscript(r),f={...d.messagesByID},p={...d.partsByMessageID},m=await i({directory:a.directory,sessionID:a.sessionID,limit:e.initialLimit??$p(),signal:new AbortController().signal});if(l()!==c||!te(o,s))return R.getTranscript(r);if(!_e(a))return R.getTranscript({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation});let h=R.getTranscript(r),g=sv(f,p,h),_=(m.coverageMessageIDs??m.records.map(e=>e.info.id)).some(e=>h.messagesByID[e]!==void 0),v=He({fetched:lv(m),previous:cv(h),touched:g,coverageMessageIDs:m.coverageMessageIDs,completeTail:m.complete===!0}),y=h.liveRevision;R.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=uv(R.getTranscript(r),b);for(let t of x)R.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(ie(r),{...e,pages:e.pages.map((e,t)=>t===0?{...e,cursor:m.complete?null:m.cursor??null,complete:m.complete}:e)}),P(r))}let S=R.getTranscript(r);Vp(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(ae(r)),jn(a.sessionID,S.messageOrder);try{let e=K_(()=>S);u&&e&&q_({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})();Te.set(c,d);try{return await d}finally{Te.get(c)===d&&Te.delete(c)}},async destructiveReset(t){let r=m(rv(t,e));r&&await g?.clearSession(r);let a=K_(()=>R.getTranscript(t)),o=ae(t);return h&&r&&await h.clearSession(r),n.destructiveReset(o,async()=>{let n=rv(t,e),r=G(n),o=i.get(r);if(o&&(o.destroy(),i.delete(r)),c.delete(r),me(r),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await R.ensureInitial(t);try{let e=K_(()=>s);a&&e&&q_({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:a,after:e})}catch{}return s})},purgeSession(t){let r=G(rv(t,e)),a=i.get(r);a&&(a.destroy(),i.delete(r)),c.delete(r),L(`${r}\n`),S.delete(r),me(r),n.purgeSession(ae(t)),P(t)},resetReasoningProjection(){let t=`${(e.probe?.getTransport??u)()}\n${(e.probe?.getGeneration??f)()}\n`,r=new Set;for(let e of i.keys())e.startsWith(t)&&r.add(e);for(let e of c.keys())e.startsWith(t)&&r.add(e);for(let e of a.keys())e.startsWith(t)&&r.add(e);for(let e of r){let t=i.get(e);t&&(t.destroy(),i.delete(e)),c.delete(e);let r=e.split(`
|
|
403
403
|
`);if(r.length>=4){let e={transport:r[0],generation:Number(r[1]),directory:r[2],sessionID:r[3]};n.purgeSession(ae(e)),P(e)}}L(t),I(t),me(t);for(let e of[...v.keys()])e.startsWith(t)&&v.delete(e);for(let e of[...y.keys()])e.startsWith(t)&&y.delete(e);for(let e of[...C])e.startsWith(t)&&C.delete(e)},purgeGeneration(t,r){for(let e of O)e.startsWith(`${t}\n${r}\n`)&&O.delete(e);for(let[e,n]of i)if(e.startsWith(`${t}\n${r}\n`)){n.destroy(),i.delete(e),c.delete(e);let t=s.get(e);t&&(t(),s.delete(e));let r=o.get(e);r&&(r(),o.delete(e)),a.delete(e)}L(`${t}\n${r}\n`),I(`${t}\n${r}\n`),me(`${t}\n${r}\n`),n.purgeGeneration(t,r),h&&!e.durablePartition&&h.clearGeneration({transport:t,generation:r})},destroy(){ge=!0,Te.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(),v.clear(),y.clear(),b.clear(),x.clear(),S.clear(),w.clear(),T.clear(),E.clear(),O.clear(),n.dispose()}};return R}var fv=Object.freeze([]);function pv(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=lh(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var mv=`/api/yuri/transcript-cache`,hv=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),gv=e=>typeof e==`object`&&!!e&&!Array.isArray(e),_v=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},vv=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},yv=e=>{if(!gv(e))throw Error(`Invalid transcript cache scope`);return{transport:_v(e.transport,`scope`),generation:vv(e.generation,`scope`),directory:_v(e.directory,`scope`),sessionID:_v(e.sessionID,`scope`)}},bv=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},xv=e=>{if(!gv(e)||!gv(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!gv(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:yv(e.scope),messageID:_v(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>bv(e,`part completeness`)),completeness:bv(e.completeness,`completeness`),contentHash:_v(e.contentHash,`content hash`),byteSize:vv(e.byteSize,`byte size`),lastAccessedAt:vv(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:vv(e.sortKey.created,`sort key`),messageID:_v(e.sortKey.messageID,`sort key`)}}},Sv=(e,t)=>{if(!gv(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(xv);return{scope:e.scope===void 0?Be(t):yv(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},Cv=e=>{if(!gv(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:xv(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!hv.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:xv(e.record)}}}throw Error(`Invalid transcript cache upsert`)},wv=e=>{if(!gv(e))throw Error(`Invalid transcript cache evict`);return{evicted:vv(e.evicted,`evict`),freedBytes:vv(e.freedBytes,`evict`),remainingBytes:vv(e.remainingBytes,`evict`)}},Tv=e=>({scope:Be(e),records:[],byteSize:0}),Ev=(e,t)=>gv(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Dv=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`)}},Ov=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 Dv(r)};let i=await Dv(r).catch(()=>void 0);throw Error(Ev(i,`Transcript cache request failed (${r.status})`))},kv=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Av=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function jv(e={}){let t=e.fetch??x;return{async readSession(e){let n=await Ov(t,`${mv}/session`,{method:`GET`,query:kv(e)});return n.kind===`disabled`||n.kind===`not-found`?Tv(e):Sv(n.payload,e)},async readMessage(e,n){let r=await Ov(t,`${mv}/message`,{method:`GET`,query:{...kv(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!gv(r.payload))throw Error(`Invalid transcript cache record`);return xv(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Ov(t,`${mv}/message`,Av(`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 Cv(i.payload)},async removeMessage(e,n){let r=await Ov(t,`${mv}/message`,Av(`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 Ov(t,`${mv}/session`,Av(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Ov(t,`${mv}/generation`,Av(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Ov(t,`${mv}/evict`,Av(`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 wv(r.payload)},async clearAll(){let e=await Ov(t,`${mv}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Mv=`yuri-transcript-durable`,Nv=1,Pv=`transcriptIndex`,Fv=`transcriptContent`,Iv=class extends Error{code;constructor(e){super(e),this.code=e}},Lv=e=>({id:In(e.scope,e.messageID),scope:Be(e.scope),scopeKey:or(e.scope),generationKey:gn(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}),Rv=(e,t)=>({scope:Be(e.scope),messageID:e.messageID,info:bn(t.info),parts:bn(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}}),zv=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Rv(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Bv=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},Vv=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Hv=e=>xr(e).then(()=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Iv(`database-unavailable`));return}let r=indexedDB.open(e,Nv),i=!1,a=()=>{i||(i=!0,n(new Iv(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Pv)){let t=e.createObjectStore(Pv,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Fv)||e.createObjectStore(Fv,{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 Iv(`database-unavailable`)),r.onblocked=()=>void 0}),Wv=(e=Mv)=>({transaction:async(t,n=`readwrite`)=>{let r=await Hv(e),i=r.transaction([Pv,Fv],n),a=i.objectStore(Pv),o=i.objectStore(Fv),s=e=>Vv(e,i),c=new Promise((e,t)=>{i.oncomplete=()=>e(),i.onabort=()=>t(i.error??new DOMException(`aborted`,`AbortError`)),i.onerror=()=>{console.error(`Transcript durable IndexedDB transaction error`,i.error)}}),l;try{let e=await t({getIndex:e=>s(a.get(e)),getAllIndexes:()=>s(a.getAll()),getIndexesByScope:e=>s(a.index(`scopeKey`).getAll(e)),getIndexesByGeneration:e=>s(a.index(`generationKey`).getAll(e)),putIndex:async e=>{await s(a.put(e))},deleteIndex:async e=>{await s(a.delete(e))},getContent:e=>s(o.get(e)),putContent:async e=>{await s(o.put(e))},deleteContent:async e=>{await s(o.delete(e))},clearAll:async()=>{await s(a.clear()),await s(o.clear())}});return await c,e}catch(e){l=e;try{i.abort()}catch{}try{await c}catch(e){l===void 0&&(l=e)}throw l}finally{r.close()}},destroy:()=>Uv(e)});function Gv(e,t={}){let n=Un(t.now??Date.now),r,i=0,a=e=>{i+=1,r!==void 0&&(r+=e)},o=()=>{i+=1,r=void 0},s=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Lv(t)),er(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(or(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id),o();continue}let a=Rv(t,r);a.lastAccessedAt=n(),await e.putIndex(Lv(a)),i.push(a)}return Gn(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let r=await zv(e,In(t,n));if(r)return s(e,r)})},async upsertSettled(t,r,i){let o=Qn({info:r,incomingCompleteness:Sn(i)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let c=bn(i.slice()),l=Sn(c),u=await An(r,c),d=In(t,r.id),f=0,p=await e.transaction(async e=>{let i=await zv(e,d),a=Qn({info:r,existing:i,incomingCompleteness:l,incomingHash:u.hash});if(a.status===`skipped`)return a.reason===`slim-downgrade`&&i?{status:`skipped`,reason:`slim-downgrade`,record:er(i)}:a.reason===`unchanged`&&i?{status:`skipped`,reason:`unchanged`,record:await s(e,i)}:{status:`skipped`,reason:a.reason};let o={scope:Be(t),messageID:r.id,info:bn(r),parts:c,partCompleteness:c.map(vn),completeness:l,contentHash:u.hash,byteSize:u.byteSize,lastAccessedAt:n(),sortKey:qn(r)};return await e.putIndex(Lv(o)),await e.putContent({id:d,info:bn(r),parts:c}),f=o.byteSize-(i?.byteSize??0),{status:`written`,record:er(o)}});return a(f),p},async removeMessage(t,n){await e.transaction(e=>Bv(e,In(t,n))),o()},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(or(t));for(let t of n)await Bv(e,t.id)}),o()},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(gn(t));for(let t of n)await Bv(e,t.id)}),o()},async evictToBytes(t,n){let a=Number.isFinite(t)?Math.max(0,t):0;if(r!==void 0&&r<=a)return{evicted:0,freedBytes:0,remainingBytes:r};r=void 0;let o=i,s=await e.transaction(async e=>{let t=new Set((n?.protect??[]).map(or)),r=await e.getAllIndexes(),i=0;for(let e of r)i+=e.byteSize;if(i<=a)return{evicted:0,freedBytes:0,remainingBytes:i};let o=r.filter(e=>!t.has(e.scopeKey)).sort((e,t)=>e.lastAccessedAt===t.lastAccessedAt?ir(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),s=0,c=0;for(let t of o){if(i<=a)break;await Bv(e,t.id),i-=t.byteSize,c+=t.byteSize,s+=1}return{evicted:s,freedBytes:c,remainingBytes:i}});return i===o&&(r=s.remainingBytes),s},async clearAll(){await e.transaction(async e=>{await e.clearAll()}),i+=1,r=0},async destroy(){await e.destroy()}}}function Kv(e={}){return Gv(e.driver??Wv(e.databaseName),e)}var qv=`yuri-transcript-search`,Jv=(e,t)=>{let n=e.clientRole??e.role;if(n!==`user`&&n!==`assistant`||!un(e))return``;let r=t.filter(e=>e.type===`text`&&!e.synthetic&&!e.ignored&&vn(e)===`full`).map(e=>e.text??``).join(`
|
|
404
404
|
`).trim();return n===`assistant`&&r.length>2048&&(r=r.slice(0,1024)+`
|
|
405
405
|
`+r.slice(-1023)),r};function Yv(e){let t=Kv({databaseName:qv,driver:e}),n=e=>{_.invalidateQueries({predicate:({queryKey:t})=>t[1]===`sessionContentSearch`&&(!e?.transport||t[0]===e.transport)&&(!e?.directory||t[3]===e.directory)&&(e?.generation===void 0||t[4]===e.generation)})};return{...t,async upsertSettled(e,r,i){if(!un(r))return{status:`skipped`,reason:`not-settled`};if(i.some(e=>e.type===`text`&&vn(e)===`slim`))return{status:`skipped`,reason:`slim-downgrade`};let a=Jv(r,i),o=await t.upsertSettled(e,{id:r.id,sessionID:r.sessionID,role:r.role,clientRole:r.clientRole,time:r.time,finish:r.finish},a?[{id:`${r.id}:search`,sessionID:r.sessionID,messageID:r.id,type:`text`,text:a}]:[]);return o.status===`written`&&n(e),o},async removeMessage(e,r){await t.removeMessage(e,r),n(e)},async clearSession(e){await t.clearSession(e),n(e)},async clearGeneration(e){await t.clearGeneration(e),n(e)},async clearAll(){await t.clearAll(),n()}}}function Xv(e={}){let t=e.isDesktopShell??pe,n=e.isDesktopLocalOriginActive??C,r=e.isVSCodeRuntime??Ee,i=e.isCapacitorApp??Hn;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Zv=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Qv(e={}){let t,n,r=()=>(t??=(e.createHttpStore??jv)(),t),i=()=>(n??=(e.createIndexedDBStore??Kv)(),n),a=()=>Xv(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=>Zv([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function $v(e={}){await Qv(e).clearAll(),await(e.createContentSearchStore??Yv)().clearAll()}var ey=3e4;async function ty(e,t=ey){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 ny(e){return e.filter(e=>!!e?.id)}async function ry(e,t){let n=e;for(let e=0;e<4&&n.turnCount===0&&n.cursor&&!n.complete;e+=1){let e=await dr({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=>Ze(e.info,e.parts)).length}}return n}async function iy(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(),ey);try{return await ty(ay({...e,signal:t.signal}))}finally{clearTimeout(r),e.signal.removeEventListener(`abort`,n),t.abort()}}async function ay(e){let t=Ye.getState(),n=f();e.before||e.purpose;let r=await dr({sessionID:e.sessionID,directory:e.directory,limit:e.pageSize,...e.before?{cursor:e.before}:{},signal:e.signal});e.signal.throwIfAborted();let i=e.before?r:await ry(r,e),a=i.records.map(e=>({info:Dd(e.info),parts:ny(e.parts??[])}));if(!e.before&&!i.complete&&zg(a).length>0){let t=H.getScopedSdkClient(e.directory);a=(await Bg({records:a,complete:i.complete,requestMessage:async n=>{let r=await Lg({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=Pn(e.sessionID,r);if(!i?.info?.id)throw Error(`session.message failed: empty response`);return{info:Dd(i.info),parts:ny(i.parts??[])}}});return{info:r.info,parts:ny(r.parts??[])}}})).records.map(e=>({info:e.info,parts:ny(e.parts??[])}))}return e.signal.throwIfAborted(),!e.before&&f()===n&&Ye.getState()===t&&Vt(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 oy(e){let t=e.client??_,n=Th(),r=Ah({client:t,activeRegistry:n}),i=dv({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:u,getGeneration:f},fetcher:e=>iy({directory:e.directory,sessionID:e.sessionID,limit:e.limit,pageSize:e.pageSize,before:e.before,signal:e.signal}),initialLimit:$p(),historyLimit:em(),durableStore:e.durableStore??Qv(),durablePartition:m}),a=Bh({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 wg(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return _r(i),ln(a),{repository:i,destroy:()=>{a.cancelAll(`dispose`),ln(null),i.destroy(),jt()}}}function sy(e){return Fn().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 cy=new Map;function ly(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function uy(e,t,n,r={}){let i=r.getTransportIdentity??u,a=r.getGeneration??f,o=i(),s=a(),c=ly(e,t,o,s),l=()=>i()===o&&a()===s,d=cy.get(c)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=d.catch(()=>void 0).then(()=>m);cy.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(),cy.get(c)===h&&cy.delete(c)}}function dy(e){let t=$n(),n=e.directory.trim();return Fr({queryKey:[t.transportIdentity,t.generation,`session-inbox`,n,e.sessionID],queryFn:async({signal:r})=>{if(!tr(t))throw Error(`Runtime changed`);let i=Bn.getState().list(e.sessionID),a=await Ft({sessionID:e.sessionID,directory:n,signal:AbortSignal.any([r,AbortSignal.timeout(1e4)])});if(r.aborted||!a.current||!tr(t))throw Error(`Runtime changed`);return yn(e.sessionID,a.items,{startedMark:a.startedMark,observedItems:i}),a},staleTime:0,gcTime:6e4,retry:1,retryDelay:250})}function fy(e){return _.fetchQuery(dy(e))}var py=()=>!1,my=new Set,hy=new Set,gy=new Set,_y=new Set,vy={onDeleteRequest(e){return my.add(e),()=>{my.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||my.forEach(t=>t(e))},onCreateRequest(e){return hy.add(e),()=>{hy.delete(e)}},requestCreate(e){let t=e??{};hy.forEach(e=>e(t))},onDirectoryRequest(e){return gy.add(e),()=>{gy.delete(e)}},requestDirectoryDialog(){gy.forEach(e=>e())},onGitRefreshHint(e){return _y.add(e),()=>{_y.delete(e)}},requestGitRefresh(e){e.directory.trim()&&_y.forEach(t=>t(e))}},yy=50,by=e=>{let t=Object.keys(e);if(t.length<=yy)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-yy).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},xy=Ne()(Ie(Pe((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:by(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`yuri-session-todos`,version:1,storage:Sr(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),Sy=new Set([`todowrite`,`todoread`]),Cy=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),wy=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Ty=(e,t)=>{xy.getState().setSessionTodos(e,t)},Ey=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Dy=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Oy=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},ky=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Oy(n);e&&t.push(e)}return t},Ay=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return ky(t);if(t&&typeof t==`object`)return ky(t.todos)}catch{}return[]},jy=e=>{if(!Sy.has(Ey(e)))return[];let t=Dy(e);if(t&&Cy.has(t))return[];let n=e.state,r=ky(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=ky(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=ky(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?Ay(i):[]};function My(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=jy(r[e]);if(t.length>0)return t}}return[]}function Ny(e){if(!e.sessionID||e.isStale?.()||wy(e.store.getState().todo,e.sessionID))return!1;let t=My(e.transcript);return t.length===0||e.isStale?.()||wy(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Py(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??B()?.getTranscript(V(e.directory,e.sessionID));return t?Ny({sessionID:e.sessionID,store:e.store,transcript:t,persist:Ty,isStale:e.isStale}):!1}var Fy=e({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>Ix,COMBINED_SEND_PRESENCE_GRACE_MS:()=>Fx,SESSION_DELETE_UNDO_MS:()=>rx,abortBusySessionForMessageEdit:()=>Zx,abortCurrentOperation:()=>Hx,archiveSession:()=>px,beginOptimisticSend:()=>Ex,cancelScheduledSessionDeletes:()=>fx,classifySendFailure:()=>Eb,combinedSendConfirmationOptions:()=>Lx,commitMessageEdit:()=>$x,commitStagedRevertBeforeSend:()=>_x,createSession:()=>Zb,deleteSession:()=>ux,dirStoreForDirectory:()=>fb,dismissOpenQuestionsForSession:()=>qx,dismissQuestion:()=>Gx,ensureSentUserMessagePresence:()=>Bx,fetchMessagesForSession:()=>iS,fetchRecentSendConfirmationRecords:()=>Nx,forkSession:()=>nS,getSendFailureKind:()=>wb,isQuestionRequestNotFoundError:()=>Jb,isQuestionSubmissionClaimedError:()=>qb,materializeConfirmedSendRecords:()=>Px,mirrorSessionIntoLiveStores:()=>yb,optimisticInsertUserMessage:()=>jx,optimisticSend:()=>Ax,patchSessionMetadata:()=>Qb,refetchSessionMessages:()=>eS,rejectQuestion:()=>Kx,releaseUnconfirmedQueueSend:()=>lb,requestSessionSmartTitle:()=>gx,respondToPermission:()=>Ux,respondToQuestion:()=>Wx,revertToMessage:()=>Jx,rollbackOptimisticSend:()=>Ox,scheduleSessionDeletes:()=>dx,setActionRefs:()=>sb,setOptimisticRefs:()=>cb,settleOptimisticSend:()=>kx,settleSessionPromptAfterSend:()=>ob,shareSession:()=>vx,shouldSuppressForkCopyEvent:()=>Xy,stageMessageEdit:()=>Xx,trackForkCopySessionCreated:()=>Wy,unarchiveSession:()=>mx,unrevertSession:()=>tS,unshareSession:()=>yx,updateSessionTitle:()=>hx,waitForConnectionOrThrow:()=>Ab,waitForSessionIdleForMessageEdit:()=>Qx}),Iy=2,Ly=150,Ry=new Set([`patch`,`step-start`,`step-finish`]),zy=3,By=150,Vy=null,Hy=new Map,Uy=3e4;function Wy(e,t){let n=t?.id;!Vy||Vy.runtimeKey!==m()||Vy.directory!==e||!n||t?.title!==Vy.expectedTargetTitle||n===Vy.sourceSessionID||Vy.targetSessionID||(Vy.targetSessionID=n)}function Gy(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 Ky(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function qy(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function Jy(e){return e?.type===`busy`||e?.type===`retry`}async function Yy(e,t){let n=tf(e),r=n.yuri&&typeof n.yuri==`object`?n.yuri:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return H.updateSession(e.id,{metadata:{...n,yuri:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function Xy(e,t,n){if(Vy&&Vy.runtimeKey===m()&&Vy.directory===e&&t&&t===Vy.targetSessionID)return!0;if(!t||!n)return!1;let r=`${m()}:${e}:${t}`,i=Hy.get(r);return i?i.expiresAt<=Date.now()?(Hy.delete(r),!1):i.messageIDs.has(n):!1}var Zy=null,Qy=null,$y=()=>``,eb=new Map,tb=null,nb=null,rb=null,ib=e=>new Promise(t=>setTimeout(t,e));async function ab(e){return(await dr({sessionID:e.sessionID,directory:e.directory??``,limit:e.limit,...e.signal?{signal:e.signal}:{}})).records.filter(e=>!!e?.info?.id)}async function ob(e){let t=xx(),n=()=>Sx(t);e.inboxID&&n()&&Ln({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 Ft({sessionID:e.sessionId,directory:e.directory});if(!n()||!t.current)return;let i=t.items.find(t=>t.id===e.inboxID);i?(sr(i,{startedMark:t.startedMark}),r=!0):r=!1}catch{r=!0}let i=[];try{let t=await ab({sessionID:e.sessionId,directory:e.directory,limit:rm()});if(!n())return;i=t.map(e=>e.info.id)}catch{return}e.delivery!==`queue`&&e.inboxID&&!r&&i.includes(e.inboxID)&&dn(e.sessionId,e.inboxID,`consumed`);try{await sn({optimisticID:e.optimisticID,promotedIDs:i,removeOptimistic:t=>{n()&&nb?.({sessionID:e.sessionId,directory:e.directory,messageID:t})},refreshFromAuthority:async()=>{n()&&await eS(e.sessionId,e.directory??void 0)}})}catch{}}function sb(e,t,n){if(Zy=e,Qy=t,$y=n,eb.size>0){let e=[...eb.values()];eb.clear(),queueMicrotask(()=>{for(let t of e)iS(t.sessionID,t.directory)})}}function cb(e,t,n){tb=e,nb=t,rb=n??null}function lb(e){let t=e.directory??null;nb?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function ub(){if(!Zy)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Zy}function db(){if(!Qy)throw Error(`Child stores not initialized`);let e=$y();if(!e)throw Error(`No current directory`);return Qy.ensureChild(e)}function fb(e,t){if(!Qy)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Qy.ensureChild(e,t)}function pb(e,t){let n=wo(e)??t??Ib(e);return n?{store:fb(n),directory:n}:{store:db(),directory:bb()}}function mb(e,t){let{store:n,directory:r}=pb(e,t??void 0),i=r??bb()??``;return{repository:B()??We(i,n),directory:i,store:n}}function hb(e,t){let{repository:n,directory:r,store:i}=mb(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(V(r,e))}}function gb(e,t){return en(hb(e,t).data)}function _b(e,t){return hb(e,t).data.messageOrder.length}function vb(e,t){let n=Qy;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]=DT(e,n[r]),t.setState({session:i}),!0}return!1}function yb(e,t){t&&vb(e,t)||vb(e)}function bb(){return $y()||void 0}function xb(){let{hasEverConnected:e,lastDisconnectReason:t}=W.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function Sb(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 Cb=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 wb(e){return e instanceof Cb?e.kind:null}function Tb(e){let t=Sb(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 Eb(e,t){return t?Tb(e)||Sb(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var Db=2e3,Ob=5e3,kb=3e4;async function Ab(){let e=Fp();e&&Pp(`send_stream_stale`);let t=Date.now()+(e?Ob:Db);for(;Date.now()<t;){if(W.getState().isConnected&&!Fp()||n()&&!Fp())return;let e=t-Date.now();if(e<=0)break;if(await W.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Fp())return;let r=Math.min(100,t-Date.now());r>0&&await new Promise(e=>setTimeout(e,r))}throw xb()}function jb(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Pp(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},kb);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function Mb(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Nb(e){e&&Y.getState().upsertSession(e)}function Pb(e,t){let n=Td(t),r=[...e.getState().session],i=df.search(r,n.id,e=>e.id);if(i.found){let t=DT(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 Fb(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=Mb(e);if(i)return Pb(t,i);try{return Pb(t,await H.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 Ib(e){return wo(e)||Lb(e)||$.getState().getDirectoryForSession(e)||bb()}function Lb(e){let t=Qy;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=B()?.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 Rb(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?H.getScopedSdkClient(t):ub()}function zb(e){vo.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&&vo.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var Bb=()=>new Map(Array.from(dt(),([e,t])=>[e,t.title||e]));function Vb(e){return!(e.type!==`file`||Af(e))}function Hb(e){return Vb(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function Ub(e){return e.some(Hb)}async function Wb(e){let t=[...e.parts];if(!Ub(t))return t;let n=f(),r=e.directory??``;try{await Qe(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}=mb(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 Gb(e){if(Ub(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await gp(e.parts,{sessionTitles:Bb(),directory:e.directory}),n=vo.getState(),r=n.getDraft(e.key);return{payload:t,commit:await xp({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function Kb(e,t,n){let r=Qy;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 qb(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.status===409&&t.code===`question_submission_claimed`}function Jb(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 Yb(e,t){let n=Qy;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 Xb(e,t,n,r){let i=wo(t)||(typeof r==`string`&&r.trim().length>0?r.trim():null)||Kb(e,t,n)||Ib(t)||bb();return i?H.getScopedSdkClient(i):Rb(t)}async function Zb(e,t,n,r){try{let i=await H.createSession({title:e,parentID:n??void 0,metadata:r},t??bb()),a=i.directory??null;return a&&rt(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsYuriCreated(i.id),Y.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function Qb(e,t,n){let r=t??Ib(e),i=n(tf(await H.getSession(e,r))),a=await H.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&rt(a.id,o),a}async function $b(e,t){let n;try{n=await H.getSession(e,t??Ib(e))}catch{return}if(!of(n))return;let r=af(n);if(r)try{await Qb(r,t??Ib(r),t=>lf(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 ex(e,t){if(!Qy)return[];let n=[],r=new Set,i=[];if(t){let e=Qy.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Qy.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 tx(e){if(Qy)for(let t of e){let e=Qy.children.get(t.directory);e&&e.setState({session:t.sessions})}}function nx(e){$.getState().setWorktreeMetadata(e,null)}var rx=1e4,ix=new Map,ax=0;function ox(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function sx(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),tx(e.listSnapshots),Nb(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function cx(e,t){let n=t??Ib(e);Y.getState().markSessionsPendingDeletion([e]);let r=ex(e,n),i=Mb(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 lx(e,t){try{if(await $b(e,t),await H.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return ex(e,t),Y.getState().removeSessions([e]),nx(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(ex(e,t),Y.getState().removeSessions([e]),nx(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function ux(e,t){let n=cx(e);return await lx(e,n.directory)?!0:(sx(n),!1)}function dx(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>cx(e)),i=`session-delete-${Date.now()}-${ax+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=ix.get(i);if(!e)return;ix.delete(i);let t=[],n=[];for(let r of e.entries)await lx(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),sx(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return ix.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function fx(e){if(!e)return!1;let t=ix.get(e);if(!t)return!1;clearTimeout(t.timer),ix.delete(e);for(let e of[...t.entries].reverse())sx(e);return!0}async function px(e){let t=Ib(e),n=ex(e,t),r=Mb(e),i=Date.now(),a=xx(),o=()=>f()===a.generation&&u()===a.identity;Y.getState().archiveSessions([e],i);let s=$.getState();s.currentSessionId===e&&s.setCurrentSession(null);try{if(await $b(e,t),!o())throw Error(`session archive aborted because the runtime changed`);let n=await H.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()?(tx(n),Nb(r),!1):!1}}async function mx(e){let t=Ib(e),n=Mb(e),r=n?ox(n):null,i=xx(),a=()=>f()===i.generation&&u()===i.identity;if(r&&(Y.getState().upsertSession(r),t&&Qy)){let e=Qy.children.get(t);e&&Pb(e,r)}try{let n=await H.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=ox(n);if(Y.getState().upsertSession(r),t&&Qy){let e=Qy.children.get(t);e?Pb(e,r):yb(r,t)}else yb(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&&ex(e,t)),!1}}async function hx(e,t){let n=Ib(e),r=Mb(e),i=r?md(r):0;await H.updateSession(e,{metadata:{yuri:{titleAuthority:{sessionID:e,title:t,revision:Oe(),source:`manual`},titleRefresh:{activityUpdatedAt:i,isGenerating:null,requestedAt:null,lastError:null,failedAt:null}}}},n);let a=await H.updateSession(e,{title:t},n);Y.getState().upsertSession(a),yb(a,n)}async function gx(e){let t=Ib(e),n=Mb(e),r=n?.metadata??{},i=r.yuri&&typeof r.yuri==`object`?r.yuri:{},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 H.updateSession(e,{metadata:{yuri:{titleRefresh:{...o?{lastAutoTitle:o}:{},requestedAt:Date.now(),isGenerating:null,lastError:null,failedAt:null}}}},t);Y.getState().upsertSession(s),yb(s,t)}async function _x(e,t){let n;try{n=pb(e,t??void 0)}catch{return}let{store:r,directory:i}=n,a=i??$y();return uy(e,i,async({isCurrent:t})=>{let n=r.getState().session?.find(t=>t.id===e);if(!n?.revert)return;let o=typeof n.revert.messageID==`string`&&n.revert.messageID.length>0?n.revert.messageID:null;if(await at({sessionID:e,directory:i}),!t())throw Error(`Session history mutation aborted because the runtime changed`);let s=[...r.getState().session],c=s.findIndex(t=>t.id===e);if(c>=0&&(s[c]={...s[c],revert:void 0},r.setState({session:s})),o)try{let{repository:t,directory:n}=mb(e,i);t.apply(V(n,e),{type:`revert-committed`,to:o})}catch(n){if(!t())throw n;try{await Dt(a,e)}catch(e){throw AggregateError([n,e],`Revert committed, but local synchronization failed: ${e instanceof Error?e.message:String(e)}`)}if(!t())throw Error(`Session history mutation aborted because the runtime changed`)}})}async function vx(e){if(!py())return null;throw Xt(`session.share`)}async function yx(e){throw Xt(`session.unshare`)}function bx(e){let t=Qy,n=e??$y();if(!t||!n)return{store:e?fb(e):db(),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 xx(){return{identity:u(),generation:f()}}function Sx(e){return u()===e.identity&&f()===e.generation}function Cx(e,t){return e.isCurrent()&&Sx(t)}function wx(e,t){if(!Cx(e,t))throw Error(`Send target changed before transport dispatch`)}var Tx=new WeakMap;function Ex(e){if(!tb||!nb)throw new Cb(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??bb()??null,n=bx(t),r=xx();wx(n,r),e.beforeOptimisticInsert?.(),wx(n,r);let i=e.messageID??De(`msg`);e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i);let a=()=>{wx(n,r),If(e.sessionId),jx({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?.()},o={messageID:i,sessionId:e.sessionId,directory:t,capture:n,transport:r};return n.store.getState().session?.find(t=>t.id===e.sessionId)?.revert?Tx.set(o,a):a(),o}catch(e){throw e instanceof Cb?e:new Cb(wb(e)??Eb(e,!1),e)}}function Dx(e){if(!Cx(e.capture,e.transport)||!nb)return;nb({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 Ox(e){Tx.delete(e),Dx(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function kx(e){if(!tb||!nb)throw new Cb(`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{let c=Tx.get(t);if(c&&(wx(n,r),await _x(a,o),c(),Tx.delete(t)),await Ab(),wx(n,r),s=!0,await jb(e.send(i)),!Sx(r))throw new Cb(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=wb(c)??Eb(c,s),u=c instanceof Cb?c:new Cb(l,c,i);if(!Cx(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await Nx(a,i,o):null;if(d&&Cx(n,r)){Px(n.store,a,i,d,{directory:o??void 0}),rb?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||Dx(t),u}finally{Tx.delete(t),$.getState().clearMessageSending?.(a,i)}}async function Ax(e){if(e.delivery===`queue`){let t=bx(e.directory),n=xx(),r=e.messageID??De(`msg`),i=!1;try{if(e.onMessageID?.(r),await Ab(),wx(t,n),i=!0,await jb(e.send(r)),!Sx(n))throw new Cb(`ambiguous-dispatched`,Error(`Runtime changed after transport dispatch`),r);e.onSendConfirmed?.(r)}catch(e){throw e instanceof Cb?e:new Cb(Eb(e,i),e,r)}return}await kx({ticket:e.ticket??Ex({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 jx(e){if(!tb)return!1;let t=e.directory??bb(),n=t?fb(t):db(),r=t??bb()??``;if(Rx(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now(),i={...t};return yf(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:De(`prt`),messageID:e.messageID,sessionID:e.sessionId,__yuriOptimistic:!0})):[{id:De(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__yuriOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)i.push({id:De(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__yuriOptimistic:!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=K_(()=>hb(e.sessionId,t).data);tb({sessionID:e.sessionId,directory:t,message:s,parts:i});let l=K_(()=>hb(e.sessionId,t).data);try{c&&l&&q_({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:u(),generation:f(),before:c,after:l})}catch{}let d=n.getState(),p={...d};return yf(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 Mx(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function Nx(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??Iy,c=r?.retryDelayMs??Ly;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!Mx(r?.isCurrent)||a>0&&(await ib(c),i?.signal.aborted||!Mx(r?.isCurrent)))return null;try{let a=await ab({sessionID:e,directory:n,limit:rm(),...i?{signal:i.signal}:{}});if(!Mx(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 Px(e,t,n,r,i){if(!r.length)return;let a=i?.directory??Ib(t)??$y(),o=V(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:Dd(e.info),parts:e.parts??[]})),skipPartTypes:Ry,merge:i?.gapFillOnly===!0?zn:Dn({purpose:`recovery`})};ur(o,s)||We(a,e).apply(o,s)}var Fx=2e3,Ix={attempts:12,retryDelayMs:500},Lx={presenceGraceMs:Fx,recovery:{...Ix}};function Rx(e,t,n,r){let i=r??Ib(t)??$y()??``,a=B()??We(i,e),o=V(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function zx(e,t,n,r){let i=r?.directory??Ib(t)??$y()??``;if(Rx(e,t,n,i))return Promise.resolve(!0);if(!Mx(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=B()??We(i,e),f=V(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!Mx(r?.isCurrent)){l(!1);return}Rx(e,t,n,i)&&l(!0)}),Rx(e,t,n,i)&&l(!0)})}async function Bx(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await zx(t,n,r,{timeoutMs:e.graceMs??Lx.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!Mx(a))return`cancelled`;let o=await Nx(n,r,i,{...Lx.recovery,isCurrent:a});return o?Mx(a)?(Px(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:Mx(a)?`missing`:`cancelled`}var Vx=new WeakMap;function Hx(e){let{store:t,directory:n}=pb(e),r=xx(),i=Qy,a=t.getState().session_execution_version?.[e]??0,o=()=>Sx(r)&&i===Qy&&(!n||i?.getChild(n)===t)&&(t.getState().session_execution_version?.[e]??0)===a,s=Vx.get(t);s||(s=new Map,Vx.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),Br(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>xH);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{o()&&t(e)}).catch(()=>{}),Vr.error(Jr(qr.getState().dictionary,`chat.chatInput.stopUnconfirmed`)))},p=bf({store:t,sessionID:e,isCurrent:o,request:t=>Ve({sessionID:e,directory:n,signal:t,resume:!0})}).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 Ux(e,t,n){await Ab();let r=Kb(`permission`,e,t)||Ib(e)||bb();await lt({sessionID:e,requestID:t,reply:n,directory:r})}async function Wx(e,t,n,r){await Ab();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n],a=Xb(`question`,e,t,r),o=await a.session.form.get({sessionID:e,formID:t});await a.session.form.reply({sessionID:e,formID:t,answer:nt(i,o.fields)})}catch(n){throw Jb(n)&&Yb(e,t),n}}async function Gx(e,t,n){let r=f(),i=u(),a=Xb(`question`,e,t,n),o=()=>r===f()&&i===u();if(await Ab(),!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()&&Yb(e,t)}catch(n){throw o()&&Jb(n)&&Yb(e,t),n}}async function Kx(e,t,n){await Ab();try{await Xb(`question`,e,t,n).session.form.cancel({sessionID:e,formID:t})}catch(n){throw Jb(n)&&Yb(e,t),n}}async function qx(e){if(!e)return!1;let t=Qy;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Tf(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)Yb(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await Kx(e,t)}catch(e){if(Jb(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function Jx(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 uy(e,r??(()=>{try{return pb(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:a,directory:s}=pb(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 Ve({sessionID:e,directory:s})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let l=gb(e,s).find(e=>e.id===t),d=gb(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}=mb(e,s),m=[...f.getParts(V(p,e),t)],h=i===void 0?o?w({transportIdentity:u()},e):null:i,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await Wb({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await gp(m,{sessionTitles:Bb(),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=vo.getState(),r=await xp({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 vt({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&&vy.requestGitRefresh({directory:s}),g}catch(r){let i=[...a.getState().session],o=i.findIndex(t=>t.id===e);if(o>=0&&(i[o]={...i[o],revert:b}),n()?(a.setState({session:i}),h&&v&&_!==void 0&&await Cp({key:h,restoredRevision:_,previous:v})):r instanceof Error&&r.message.includes(`runtime changed`)||(a.setState({session:i}),h&&v&&_!==void 0&&await Cp({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),n()&&r instanceof Error&&r.name===`MessageNotFoundError`){try{let t=await H.getSession(e,s);if(!n()||(vb(t,s),await Dt(p,e),!n()))throw Error(`Session history mutation aborted because the runtime changed`)}catch(e){throw AggregateError([r,e],`${r.message}\n${e instanceof Error?e.message:String(e)}`)}finally{n()&&f.apply(V(p,e),{type:`remove-message`,messageID:t})}r.name=`SessionRevertMessageMissingRecoveredError`}throw r}})}function Yx(e,t,n,r){let i=r??Ib(t)??$y(),a=V(i,t),o=[...Ut(t)];o.some(e=>e.directory===i&&e.sessionID===t)||o.push(a);let s=!1;for(let e of o)ur(e,{type:`revert-committed`,to:n})!=null&&(s=!0);s||We(i,e).apply(a,{type:`revert-committed`,to:n})}async function Xx(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=pb(e,o).directory}else{s=pb(e,o).directory;let{data:n}=hb(e,s),r=en(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??w({transportIdentity:u()},e),{commit:l}=await Gb({key:c,parts:await Wb({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 Zx(e,t){let n=t?.directory,{directory:r}=pb(e,n);await H.getScopedSdkClient(r??``).session.interrupt({sessionID:e,resume:!1})}async function Qx(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,{directory:i}=pb(e,n),a=xx(),o=AbortSignal.timeout(r);try{await H.getScopedSdkClient(i??``).session.wait({sessionID:e},{signal:o})}catch(t){throw o.aborted?Error(`Session is still busy after waiting to edit: ${e}`,{cause:t}):t}if(!Sx(a))throw Error(`Session history mutation aborted because the runtime changed`)}async function $x(e,t,n){let{store:r,directory:i}=pb(e,n?.directory);return uy(e,i,async({isCurrent:a})=>{let o=()=>{if(!a())throw Error(`Session history mutation aborted because the runtime changed`)},s=()=>{let r=gb(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 Zx(e,{directory:i}),o(),await Qx(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=K_(()=>hb(e,i).data),p=await vt({sessionID:e,messageID:t,directory:i,files:!1});o(),c(p);try{s(),await at({sessionID:e,directory:i})}catch(n){if(o(),Tb(n))try{await H.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),Yx(r,e,t,i);return}try{l?c(await vt({sessionID:e,messageID:l.messageID,directory:i,files:!!l.files?.length})):(await $t({sessionID:e,directory:i}),c(void 0))}catch{o()}throw n}o(),c(void 0),Yx(r,e,t,i);try{let t=K_(()=>hb(e,i).data);d&&t&&q_({trigger:`user-edit`,sessionID:e,directory:i,transport:u(),generation:f(),before:d,after:t})}catch{}})}async function eS(e,t){let{store:n,directory:r}=pb(e,t),i=K_(()=>hb(e,t).data),a=await ab({sessionID:e,directory:r,limit:nm()});if(a.length===0){try{let n=K_(()=>hb(e,t).data);i&&n&&q_({trigger:`materialize`,sessionID:e,directory:r,transport:u(),generation:f(),purpose:`refetch`,before:i,after:n})}catch{}return[]}let o=a.map(e=>({info:Dd(e.info),parts:e.parts??[]})),s=V(r??$y(),e);ur(s,{type:`materialize-snapshots`,records:o,skipPartTypes:Ry})||We(r??$y(),n).apply(s,{type:`materialize-snapshots`,records:o,skipPartTypes:Ry});try{let n=K_(()=>hb(e,t).data);i&&n&&q_({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 tS(e,t){return uy(e,t??(()=>{try{return pb(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=pb(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=_b(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Ve({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}if(await $t({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<zy;r+=1){if(r>0&&(await ib(By),!n())||(await eS(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(_b(e,i)>o)return}if(_b(e,i)<=o){let n=i??$y(),a=B()??We(n,r),o=V(n,e),s=a.destructiveReset;typeof s==`function`?await s(o):await eS(e,t)}})}async function nS(e,t,n,r){let i=m(),a=xx(),{store:o,directory:s}=pb(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await Fb(e,o,s);if(!Sx(a)||c.directory&&c.directory!==s)throw Error(`Fork source changed while reading identity`);rt(e,s);let l=o.getState(),u=l.session_status[e],d=gb(e,s);u?.type,d.length;let f=()=>Sx(a)&&Ib(e)===s,p=await mf(H.getScopedSdkClient(s),e,n,Jy(u),f);l.session_status[e]?.type;let{repository:h,data:g}=hb(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 H.getScopedSdkClient(s).session.message.get({sessionID:e,messageID:n});if(!f())throw Error(`Fork source changed while reading the selected message`);let r=Pn(e,t);if(r&&(_=r.info,v=r.parts),Ub(v))throw Error(`Fork attachment is unavailable`)}let y=Ze(_,v),b=y?v:[],x=``;x=b.filter(e=>e.type===`text`&&!Af(e)).map(e=>e.text||e.content||``).join(`
|