openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
3,205 lines • 700 kB
JavaScript
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./session-snapshot-database-BurLa_ut.js","./plugin-contracts-runtime-CNCaYops.js","./config-runtime-BecGLziM.js","./markdown-runtime-ORQpioyT.js","./sidebar-update-runtime-DonYLwN5.js","./control-ui-core-yIvVj14Y.css","./control-ui-boot-shared-styles-DKyMAG_6.css","./sidebar-update-runtime-ah7rgQE7.css","./catalog-terminal-start-BmIoZaYn.js","./svg-icon-rasterizer-BFsqBDlK.js","./theme-artwork-loader-B9Roi802.js","./pasted-text-excerpt-DL_ikozD.js","./chat-native-runtime-recovery-D9A0s8FY.js","./chat-outbox-receipts-CsdIt2fH.js"])))=>i.map(i=>d[i]);
import{n as e,r as t}from"./rolldown-runtime-8BhlS34s.js";import{$i as n,A as r,Ac as i,Al as a,An as o,Ar as s,Bc as c,Bl as l,Bo as u,Br as d,Bs as f,Ci as p,Co as m,Cr as h,Cu as g,Dl as _,Ds as v,El as y,Eu as b,Fl as x,Fs as S,Gl as C,Go as w,Gs as ee,Hc as te,Hr as ne,Hs as T,Hu as re,I as ie,Il as E,Jc as ae,Ji as oe,Jr as se,Js as ce,K as le,Kl as ue,Ko as de,Ks as fe,Lc as pe,Li as me,Ll as he,M as ge,Ml as _e,Mn as ve,Nl as ye,Nn as be,No as xe,Nr as Se,O as Ce,Ol as D,Oo as we,Or as Te,Pn as Ee,Pr as De,Ql as Oe,Qs as ke,R as Ae,Rl as je,Rs as Me,Si as Ne,Sl as O,Su as Pe,Tl as Fe,Tu as Ie,U as Le,Uc as Re,Uo as ze,Ur as Be,Us as Ve,V as He,Vl as k,Vo as Ue,Vr as We,Vs as Ge,Vu as Ke,W as qe,Wo as Je,Wr as Ye,Ws as Xe,Xi as Ze,Xl as Qe,Xr as $e,Xs as et,Yc as tt,Yo as A,Yr as nt,Ys as rt,Zs as it,_l as at,an as ot,au as st,bo as ct,cl as lt,cn as ut,cr as dt,dn as ft,du as j,ec as pt,eu as mt,fn as ht,fu as gt,g as _t,gl as vt,go as yt,gu as bt,h as xt,hu as St,in as Ct,iu as wt,j as Tt,jl as Et,jn as Dt,ju as M,kc as Ot,kl as kt,kr as At,kt as jt,ku as Mt,ln as Nt,lr as Pt,lu as Ft,m as It,ml as Lt,mn as Rt,mu as zt,nc as Bt,nl as Vt,nn as Ht,nu as Ut,on as Wt,ou as Gt,p as Kt,pl as qt,pn as Jt,pu as N,qi as Yt,ql as Xt,rl as Zt,rn as Qt,ru as $t,sc as P,sn as en,tl as tn,tn as nn,tu as rn,un as an,uu as on,wt as sn,wu as cn,xl as ln,xr as un,ya as dn,yo as fn,z as pn,zo as mn,zs as hn,zu as gn}from"./control-ui-core-BncvAZjR.js";import{A as _n,I as vn,N as yn,_ as bn,c as xn,g as Sn,j as Cn,l as wn}from"./control-ui-boot-shared-Dfs-gZII.js";import{$n as Tn,Aa as En,Ai as Dn,Bt as On,Dn as kn,En as An,Ga as jn,Ha as Mn,Ht as Nn,Ka as Pn,La as Fn,Ma as In,Oi as Ln,On as Rn,Qt as zn,Ra as Bn,So as Vn,Sr as Hn,Ti as Un,Tn as Wn,Ut as Gn,Va as Kn,Vt as qn,Wr as Jn,Xa as Yn,Xi as Xn,Xn as Zn,Xr as Qn,Xt as $n,Zi as er,Zn as tr,aa as nr,ai as rr,an as ir,bi as ar,cr as or,dr as sr,er as cr,gn as lr,ia as ur,in as dr,mn as fr,mo as pr,na as F,nn as mr,qa as hr,ra as I,rn as gr,sa as _r,sr as vr,ta as L,tn as yr,ua as br,ur as xr,wa as Sr,wi as Cr,xi as wr,xr as Tr}from"./control-ui-core-9qYjK5B2.js";import{$ as R,B as Er,C as Dr,F as Or,I as kr,M as Ar,Q as jr,R as Mr,S as Nr,T as Pr,V as Fr,X as z,Y as B,Z as Ir,_ as Lr,a as Rr,c as zr,ct as V,d as Br,g as Vr,h as Hr,i as Ur,j as Wr,k as Gr,mt as Kr,nt as qr,p as Jr,q as Yr,r as Xr,s as Zr,t as Qr,tt as $r,u as ei,ut as H,v as ti,x as ni,z as ri}from"./lit-runtime-B8uOr6OX.js";import{At as ii,Bn as ai,F as oi,In as si,Jt as ci,Ln as li,N as ui,O as di,Ot as fi,Qt as pi,Rn as mi,Xt as hi,Yt as gi,_r as U,an as _i,ar as vi,c as yi,ct as bi,dr as xi,fr as Si,gr as Ci,hr as wi,ir as Ti,jt as Ei,k as Di,kt as Oi,mr as ki,on as Ai,or as ji,qt as Mi,s as Ni,st as Pi,ur as Fi,vr as Ii,w as Li,xr as Ri,zn as zi}from"./control-ui-boot-shared-umGE-sEP.js";import{c as Bi,l as Vi}from"./gateway-runtime-Cr51Pi7N.js";import{$a as Hi,$n as Ui,$t as Wi,A as Gi,Aa as Ki,An as qi,Ao as Ji,At as Yi,Ba as Xi,Bi as Zi,Bn as Qi,C as $i,Ca as ea,Ci as ta,Co as na,Ct as ra,D as ia,Da as aa,Di as oa,Do as sa,E as ca,Ea as la,En as ua,Eo as da,Et as fa,F as pa,Fa as ma,Fi as ha,Fo as ga,Gi as _a,Gn as va,Gr as ya,Gt as ba,H as xa,Ha as Sa,Hi as Ca,Hn as wa,Ht as Ta,I as Ea,Ia as Da,Ii as Oa,Io as ka,Ir as Aa,It as ja,J as Ma,Ja as Na,Ji as Pa,Jn as Fa,Jt as Ia,K as La,Ki as Ra,Kn as za,Li as Ba,Ln as Va,Lt as Ha,M as Ua,Ma as Wa,Mi as Ga,Mn as Ka,Mo as qa,Mt as Ja,N as Ya,Na as Xa,Ni as Za,No as Qa,Nt as $a,O as eo,Oa as to,Oi as no,On as ro,Oo as io,Ot as ao,P as oo,Pa as so,Pn as co,Po as lo,Qa as uo,Qt as fo,Ra as po,Ri as mo,Rn as ho,S as go,Sa as _o,Si as vo,Sn as yo,So as bo,St as xo,T as So,Ta as Co,Ti as wo,To,Tt as Eo,Ua as Do,Ui as Oo,Un as ko,Uo as Ao,Ut as jo,Va as Mo,Vi as No,Vn as Po,Wi as Fo,Wn as Io,Wr as Lo,Wt as Ro,Xn as zo,Xt as Bo,Ya as Vo,Yi as Ho,Yn as Uo,Yt as Wo,Za as Go,Zi as Ko,Zn as qo,Zt as Jo,_ as Yo,_i as Xo,_n as Zo,_o as Qo,_t as $o,aa as es,ai as ts,ao as ns,ar as rs,b as is,ba as as,c as os,ca as ss,ci as cs,cn as ls,co as us,da as ds,di as fs,do as ps,dt as ms,ea as hs,ei as gs,en as _s,et as vs,fa as ys,fi as bs,fo as xs,fr as Ss,ft as Cs,g as ws,ga as Ts,gi as Es,gn as Ds,go as Os,h as ks,ha as As,hn as js,ho as Ms,hr as Ns,ht as Ps,ia as Fs,ii as Is,in as Ls,io as Rs,ir as zs,j as Bs,ja as Vs,ji as Hs,jn as Us,jo as Ws,jt as Gs,ka as Ks,kn as qs,kt as Js,l as Ys,la as Xs,li as Zs,ln as Qs,lo as $s,m as ec,ma as tc,mn as nc,mo as rc,mr as ic,mt as ac,n as oc,na as sc,ni as cc,nr as lc,oa as uc,on as dc,oo as fc,or as pc,pa as mc,po as hc,pt as gc,q as _c,qa as vc,qi as yc,qn as bc,qt as xc,ra as Sc,ri as Cc,rn as wc,ro as Tc,rr as Ec,s as Dc,sa as Oc,so as kc,ta as Ac,ti as jc,tt as Mc,ui as Nc,uo as Pc,ur as Fc,ut as Ic,v as Lc,va as Rc,vi as zc,vn as Bc,vo as Vc,vt as Hc,w as Uc,wa as Wc,wi as Gc,wn as Kc,wo as qc,wt as Jc,x as Yc,xa as Xc,xi as Zc,xn as Qc,xt as $c,y as el,ya as tl,yo as nl,yt as rl,z as il,za as al,zn as ol,zr as sl}from"./control-ui-boot-shared-DJkUdZmL.js";import{$t as cl,B as ll,Bi as ul,Cn as dl,Do as W,Ei as fl,Eo as pl,Er as ml,Ft as hl,J as gl,Ji as _l,Jt as vl,Mi as yl,Pt as bl,Qa as xl,Qi as Sl,Si as Cl,To as G,Tr as wl,X as Tl,Xi as El,Xr as Dl,Xt as Ol,Y as kl,Ya as Al,Yi as jl,Yr as Ml,Za as Nl,Zr as Pl,_a as Fl,_o as Il,_t as Ll,bi as Rl,bo as zl,da as Bl,en as Vl,fa as K,gn as Hl,hi as Ul,hn as Wl,ho as Gl,ii as q,ja as Kl,lo as ql,ma as Jl,oa as Yl,po as Xl,qi as Zl,ro as Ql,sa as $l,sn as eu,ua as tu,vn as nu,vo as ru,wo as iu,xn as au,xo as ou,yn as su}from"./ui-DuRgK6kL.js";import{F as cu,T as lu,et as uu,r as du}from"./control-ui-boot-shared-em9-jnbz.js";import{b as fu,h as pu,s as mu,v as hu}from"./control-ui-boot-shared-Sj2zqjOr.js";import{$ as gu,A as _u,Bi as vu,Ci as yu,D as bu,Di as xu,E as Su,Ei as Cu,G as wu,I as Tu,K as Eu,Kt as Du,O as Ou,Si as ku,Ti as Au,Wt as ju,X as Mu,Xi as Nu,Y as Pu,Zi as Fu,_n as Iu,a as Lu,bi as Ru,bt as zu,c as Bu,ci as Vu,cn as Hu,ct as Uu,di as Wu,et as Gu,fi as Ku,fn as qu,gn as Ju,gt as Yu,ht as Xu,i as Zu,ir as Qu,j as $u,k as ed,l as td,li as nd,ln as rd,lt as id,m as ad,mn as od,mt as sd,n as cd,nt as ld,o as ud,ot as dd,p as fd,pi as pd,pt as md,q as hd,r as gd,rt as _d,s as vd,sn as yd,st as bd,t as xd,u as Sd,ui as Cd,un as wd,ut as Td,v as Ed,vt as Dd,wi as Od,xi as kd,xt as Ad,yt as jd,zi as Md}from"./control-ui-boot-shared-xfDhIVun.js";import{D as Nd,E as Pd,G as Fd,H as Id,K as Ld,L as Rd,M as zd,O as Bd,V as Vd,_ as Hd,a as Ud,at as Wd,g as Gd,j as Kd,l as qd,n as Jd,o as Yd,u as Xd,z as Zd}from"./control-ui-boot-shared-D4XEBdOG.js";import"./control-ui-boot-shared-styles-BaQ2sAfZ.js";function Qd(e,t,n){if(!Fl(e))return null;let r=e;return Object.keys(r).some(e=>!gf.has(e))||r.key!==t||r.agentId!==n||r.message!==``||r.worktreeSource!==void 0&&(!fu(Mi.properties.worktreeSource,r.worktreeSource)||r.worktree!==!0||r.repository!==void 0||r.projectId!==void 0||r.cwd!==void 0||r.worktreeBaseRef!==void 0||r.catalogId!==void 0)||(r.repository===void 0?r.worktree!==!0:!fu(Mi.properties.repository,r.repository)||r.worktree!==void 0||r.projectId!==void 0||r.cwd!==void 0||r.worktreeBaseRef!==void 0||r.worktreeName!==void 0||r.catalogId!==void 0)||r.incognito!==void 0&&r.incognito!==!0||r.visibility!==void 0&&r.visibility!==`draft`||r.fastMode!==void 0&&!fu(Mi.properties.fastMode,r.fastMode)||r.permissionMode!==void 0&&!fu(mi,r.permissionMode)||r.toolOverrides!==void 0&&!fu(zi,r.toolOverrides)||r.titleSource!==void 0&&!fu(Mi.properties.titleSource,r.titleSource)||r.projectId!==void 0&&r.cwd!==void 0||hf.some(e=>r[e]!==void 0&&!ou(r[e]))?null:r}function $d(e){try{let t=JSON.parse(e);return Fl(t)?t:null}catch{return null}}function ef(e){return Fl(e)?e.kind===`profile`&&Object.keys(e).every(e=>e===`kind`||e===`profileId`||e===`os`||e===`machineClass`)&&ou(e.profileId)&&(e.os===void 0||ou(e.os)&&e.os.length<=64)&&(e.machineClass===void 0||ou(e.machineClass)&&e.machineClass.length<=128)||e.kind===`device`&&Object.keys(e).every(e=>e===`kind`||e===`deviceId`)&&ou(e.deviceId)?e:e.kind===`auto-device`&&Object.keys(e).every(e=>e===`kind`)?{kind:`auto-device`}:null:null}function tf(e,t,n,r){if(e.createParams?.incognito===!0||!ou(e.sessionKey)||r!==void 0&&e.sessionKey!==r||!ou(e.messageId)||typeof e.message!=`string`||!ou(e.message)&&!e.attachments?.length||e.attachments!==void 0&&!Array.isArray(e.attachments)||!ef(e.target)||!ou(e.agentId)||e.gatewayUrl!==t||e.recoveryScope!==n||e.phase!==`creating`&&e.phase!==`dispatching`&&e.phase!==`sending`&&e.phase!==`paused`||e.phase===`paused`&&(e.reason!==`not-sent`&&e.reason!==`rejected`&&e.reason!==`unconfirmed`||!ou(e.error)||e.error.length>mf)||e.phase===`creating`&&!Qd(e.createParams,e.sessionKey,e.agentId))return null;let{mentions:i,...a}=e,o=qa(e.message,i);return i!==void 0&&(!Array.isArray(i)||(o?.length??0)!==i.length)?null:{...a,...o?{mentions:o}:{}}}function nf(e,t){try{return e.removeItem(t),e.getItem(t)===null}catch{return!1}}function rf(e,t,n,r,i){try{let a=e.getItem(t);if(a===null)return null;let o=$d(a),s=o?tf(o,n,r,i):null;return!s||t!==Qt(n,r,s.sessionKey)?(nf(e,t),null):s}catch{return null}}function af(e,t,n,r){let i=Qt(r.gatewayUrl,r.recoveryScope,r.sessionKey),a=JSON.stringify(r);try{if(e.removeItem(t),e.getItem(t)!==null)return null;e.setItem(i,a);let n=rf(e,i,r.gatewayUrl,r.recoveryScope,r.sessionKey);if(n)return n}catch{}nf(e,i);try{e.setItem(t,n)}catch{}return null}function of(e,t){if(!e||!t)return[];try{let n=globalThis.sessionStorage;if(!n)return[];let r=new Map;for(let i of Ht(e,t)){let a=rf(n,i,e,t);a&&r.set(a.sessionKey,a)}return[...r.values()].toSorted((e,t)=>e.sessionKey.localeCompare(t.sessionKey))}catch{return[]}}function sf(e,t,n){for(let r of of(e,t))uf({...r,recoveryScope:n})&&ff(e,t,r.sessionKey,r.messageId)}function cf(e,t,n){if(!e||!t||!n)return null;try{let r=globalThis.sessionStorage;return r?rf(r,Qt(e,t,n),e,t,n):null}catch{return null}}function lf(e){let{gatewayUrl:t,recoveryScope:n,sessionKey:r}=e,i=tf(e,t,n,r);if(!t||!n||!i)return!1;try{let e=globalThis.sessionStorage;if(!e)return!1;let a=Qt(t,n,r);return e.setItem(a,JSON.stringify(i)),!!rf(e,a,t,n,r)}catch{return!1}}function uf(e,t=e.messageId){let n=cf(e.gatewayUrl,e.recoveryScope,e.sessionKey);return n&&n.messageId!==t?!1:lf(e)}function df(e,t){if(e===t.sessionKey)return uf(t);try{let n=globalThis.sessionStorage;if(!n||!e)return!1;let r=Qt(t.gatewayUrl,t.recoveryScope,e),i=n.getItem(r),a=rf(n,r,t.gatewayUrl,t.recoveryScope,e);if(!i||!a)return uf(t);if(a.messageId!==t.messageId)return!1;let o=rf(n,Qt(t.gatewayUrl,t.recoveryScope,t.sessionKey),t.gatewayUrl,t.recoveryScope,t.sessionKey);return o?o.messageId===t.messageId&&nf(n,r):!!af(n,r,i,t)}catch{return!1}}function ff(e,t,n,r){if(e&&t)try{let i=globalThis.sessionStorage;if(!i)return;if(n){let a=Qt(e,t,n);if(r&&$d(i.getItem(a)??``)?.messageId!==r)return;nf(i,a);return}let a=Ct(e,t);for(let e=i.length-1;e>=0;--e){let t=i.key(e);t?.startsWith(a)&&nf(i,t)}}catch{}}function pf(e,t,n,r=e.phase===`paused`?e.reason:e.phase===`sending`?`unconfirmed`:`not-sent`){let i={...e,phase:`paused`,reason:r,error:Zl(j(t),mf)},a=n&&uf(i);return n&&!a&&(cf(e.gatewayUrl,e.recoveryScope,e.sessionKey)?.phase!==`paused`&&ff(e.gatewayUrl,e.recoveryScope,e.sessionKey,e.messageId),i.error=Zl(`Recovery could not be saved in this tab. Keep this page open.\n${i.error}`,mf)),{recovery:i,persisted:a}}var mf,hf,gf;function _f(){return(_f=e((()=>{ci(),ai(),pu(),Ws(),N(),nn(),mf=4096,hf=[`category`,`displayName`,`titleSource`,`model`,`agentRuntime`,`contextWindow`,`thinkingLevel`,`worktreeBaseRef`,`worktreeName`,`cwd`,`catalogId`,`projectId`],gf=new Set([`key`,`agentId`,`message`,`worktree`,`worktreeSource`,`repository`,`incognito`,`visibility`,`permissionMode`,`fastMode`,`toolOverrides`,...hf])})))()}function vf(e){if(!e||typeof e!=`object`)return;let t=e,n=Cl(t.receivedToAckMs),r=Cl(t.loadSessionMs),i=Cl(t.prepareAttachmentsMs),a={...n===void 0?{}:{receivedToAckMs:n},...r===void 0?{}:{loadSessionMs:r},...i===void 0?{}:{prepareAttachmentsMs:i}};return Object.keys(a).length>0?a:void 0}function yf(e){return e===`in_flight`||e===`ok`||e===`timeout`||e===`error`?e:`started`}function bf(e,t){if(!e||typeof e!=`object`)return{runId:t,status:`started`};let n=e,r=typeof n.runId==`string`&&n.runId.trim()?n.runId.trim():t,i=vf(n.serverTiming),a=typeof n.messageSeq==`number`&&Number.isSafeInteger(n.messageSeq)&&n.messageSeq>0?n.messageSeq:void 0;return{runId:r,status:yf(n.status),...i?{serverTiming:i}:{},...a===void 0?{}:{messageSeq:a},...n.stopReason===`restart`?{stopReason:`restart`}:{}}}function xf(e){return e?.status===`timeout`||e?.status===`error`}function Sf(){return(Sf=e((()=>{fl()})))()}function Cf(){return(Cf=e((()=>{Vd()})))()}function wf(e){if(typeof URL<`u`&&typeof URL.createObjectURL==`function`)return URL.createObjectURL(e)}function Tf(e){return en(e.attachment.id),Wt.set(e.attachment.id,{blob:e.file,dataUrl:e.dataUrl}),e.attachment}function Ef(e){return e.dataUrl??Wt.get(e.id)?.dataUrl??null}function Df(e){let t=Wt.get(e.id);if(t?.videoPoster)return t.videoPoster.promise;if(!(t?.blob instanceof File)||t.blob.size>536870912)return null;let n=t.blob,r=wf(n);if(!r)return null;let i=new AbortController,a={controller:i,promise:Yl(async()=>{let{requestVideoPoster:e}=await import(`./control-ui-boot-shared-DJkUdZmL.js`).then(e=>(e.It(),e.Rt));return{requestVideoPoster:e}},__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url).then(({requestVideoPoster:e})=>e({key:n,src:r,width:54,height:54,signal:i.signal}),()=>null).then(t=>!t||Wt.get(e.id)?.videoPoster!==a?null:(a.url=wf(t),a.url??null)).finally(()=>an(r))};return t.videoPoster=a,a.promise}function Of(e){let t=/^data:([^,]*),(.*)$/s.exec(e);if(!t)return null;let n=t[1]??``,r=t[2]??``;try{if(n.toLowerCase().includes(`;base64`)){let e=Ne(r.replace(/\s+/gu,``));return new Blob([e],{type:n.split(`;`,1)[0]})}return new Blob([decodeURIComponent(r.replace(/\+/gu,`%20`))],{type:n.split(`;`,1)[0]})}catch{return null}}function kf(e){let t=Wt.get(e.id);if(t?.blob)return t.blob;let n=Ef(e);if(!n)return null;let r=Of(n);return r&&Wt.set(e.id,{...t,blob:r,dataUrl:n}),r}function Af(e){let t=e.previewUrl??Wt.get(e.id)?.previewUrl;if(t)return t;let n=kf(e),r=n&&wf(n);return r&&Wt.set(e.id,{...Wt.get(e.id),previewUrl:r}),r??Ef(e)}function jf(e){return e.map(e=>{let{id:t,previewUrl:n,...r}=e,i=Ef(e);return{...r,id:Nf(),...i?{dataUrl:i}:{}}})}function Mf(e,t){let n=new Set(t.flat().map(e=>e.id));ut(e.filter(e=>!n.has(e.id)))}function Nf(){return`att-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function Pf(e,t=[]){return ut(e),t.flatMap(({mimeType:e,data:t})=>If.test(e)&&t.length<=Rf&&oi(t)&&ui(t)<=Lf?[{id:Nf(),mimeType:e,dataUrl:`data:${e};base64,${t}`}]:[])}function Ff(e=[]){for(let{id:t}of e){let e=Wt.get(t);e&&(Nt(e),e.previewUrl?Wt.set(t,{previewUrl:e.previewUrl}):Wt.delete(t))}}var If,Lf,Rf;function J(){return(J=e((()=>{ot(),$l(),If=/^image\/[\w.+-]+$/u,Lf=5242880,Rf=Math.ceil(Lf/3)*4})))()}function zf(e,t){let n={...e};if(t.attachments){let r=new Map(t.attachments.map(e=>[e.id,e]));n.attachments=(e.attachments??t.attachments).map(e=>Object.assign({},e,r.get(e.id)))}for(let e of[`sendSubmittedAtMs`,`sendRequestStartedAtMs`])typeof t[e]==`number`&&(n[e]=t[e]);return n}function Bf(e,t){return e.flatMap(e=>e.queue.filter(n=>t?t.needsReview(e,n):!n.pendingRunId&&(n.sendState===`failed`||n.sendState===`unconfirmed`||n.sendState===`held`)).map(t=>({id:t.id,sessionKey:e.sessionKey,agentId:e.agentId,unconfirmed:t.sendState===`unconfirmed`||t.sendState===`held`,command:!!t.localCommandName})))}function Vf(e,t){return!!(t.pendingRunId||t.sendState===`waiting-model`||e.retryable.has(t.id)||!e.durableSeen.has(t.id))}function Hf(e){return e.trim().length===0?``:e}function Uf(){return(Uf=e((()=>{})))()}function Wf(e){return{gatewayOwner:Co(e.settings?.gatewayUrl).gatewayOwner,recoveryScope:Da(e)??``,client:e.client}}function Gf(e,t){return t.gatewayOwner===Co(e.settings?.gatewayUrl).gatewayOwner&&t.recoveryScope===(Da(e)??``)&&(t.client===e.client||e.client?.recoveryScopeReady===!0)}function Kf(e,t){return xl(t.sessionKey)||!!(e.selectedChatSessionIncognito&&e.sessionKey&&P(E(e,e.sessionKey))===P(t))}function qf(e,t=E(e,e.sessionKey)){let n=Da(e);return n?{gatewayOwner:Wc(e).gatewayOwner,recoveryScope:n,scopeKey:`chat:v3:${P(t)}`}:null}function Jf(){return(Jf=e((()=>{Nl(),ma(),Rc(),O()})))()}function Yf(e,t,n,r){if(!n?.draft&&!n?.goalMode&&!n?.replyTarget&&n?.draftRevision===void 0&&r.length===0){delete e.sessions[t];return}e.sessions[t]={...n?.awaitingDefaults?{awaitingDefaults:!0}:{},...n?.draft?{draft:n.draft}:{},...n?.draftMentions?{draftMentions:n.draftMentions}:{},...n?.goalMode?{goalMode:n.goalMode}:{},...n?.replyTarget?{replyTarget:n.replyTarget}:{},...n?.draftRevision===void 0?{}:{draftRevision:n.draftRevision},...r.length?{queue:r}:{},updatedAt:Date.now()}}function Xf(e,t){if(!e.id?.trim()||!e.text?.trim()&&!e.attachments?.length&&!e.attachmentPayload&&!e.attachmentStorageError||e.pendingRunId||e.sendState===`sending`&&!e.sendRunId)return null;let n=(e.attachments??[]).map(t=>{let{dataUrl:n,previewUrl:r,...i}=t;if(e.attachmentPayload)return i;let a=Ef(t);return a?Object.assign(i,{dataUrl:a}):e.attachmentStorageError?i:null});if(e.attachments?.length&&n.some(e=>e===null))return null;let r=Vo({...e,attachments:n.length?n:void 0,...e.sendState===`waiting-model`?{sendError:vc}:{}});return r?mc(r,t):null}function Zf(e,t,n){let r=Xf(t,n);return!!(r&&Go(e,r))}function Qf(e,t,n){let r=Xf(e,n);return!!(r&&JSON.stringify(r)===JSON.stringify(t))}function $f(){return($f=e((()=>{Na(),Rc(),J()})))()}function ep(e){return JSON.stringify([e.gatewayOwner,e.recoveryScope])}function tp(e){return JSON.stringify([e.gatewayOwner,e.recoveryScope,e.scopeKey])}function np(e,t){let n=ep(e);sp.has(n)||(sp.add(n),t())}function rp(e,t,n,r,i){return JSON.stringify([e,n??null,r??[],i?[i.messageId,i.text,i.senderLabel??null,i.sourceMessageId??null]:null,t.map(e=>[e.id,e.mimeType,e.origin??null,e.fileName??``,e.sizeBytes??-1,e.browserAnnotation??null,e.selectionAnnotation??null])])}function ip(e){let t=[];for(let n of e){let e=kf(n);if(!e)return null;t.push({blob:e,mimeType:n.mimeType,...n.origin?{origin:n.origin}:{},...n.fileName?{fileName:n.fileName}:{},...typeof n.sizeBytes==`number`?{sizeBytes:n.sizeBytes}:{},...n.browserAnnotation?{browserAnnotation:{...n.browserAnnotation}}:{},...n.selectionAnnotation?{selectionAnnotation:{...n.selectionAnnotation}}:{}})}return t}async function ap(e){return Promise.all(e.map(async({blob:e,selectionAnnotation:t,...n})=>{let r=Rs(t),i=e.type===n.mimeType?e:e.slice(0,e.size,n.mimeType);return{...n,id:Nf(),...n.browserAnnotation?{browserAnnotation:{...n.browserAnnotation}}:{},...r?{selectionAnnotation:r}:{},dataUrl:await Hs(i)}}))}async function op(e){let{writeDurableComposerDraft:t}=await cp,n=e.storedAttachments===null;return{result:await t(e.scope,{revision:e.revision,text:n?``:e.text,...e.mentions?.length&&!n?{mentions:e.mentions}:{},...e.goalMode?{goalMode:e.goalMode}:{},...e.replyTarget?{replyTarget:e.replyTarget}:{},...e.modelSelection?{modelSelection:e.modelSelection}:{},attachments:e.storedAttachments??[]},{expectedRevision:e.expectedRevision,...e.expectedWriteId?{expectedWriteId:e.expectedWriteId}:{},...e.expectedWriteIds?.length?{expectedWriteIds:e.expectedWriteIds}:{},writeId:e.writeId}),payloadUnavailable:n}}var sp,cp,lp;function up(){return(up=e((()=>{Tc(),J(),$l(),sp=new Set,cp=Yl(()=>import(`./control-ui-boot-shared-DJkUdZmL.js`).then(e=>(e.d(),e.u)),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url),lp=class{constructor(e,t){this.onStorageError=e,this.onConflict=t,this.restoreGeneration=0,this.restoredScopeKey=``}resetRestoreScope(){this.restoreGeneration+=1,this.restoredScopeKey=``}async persist(e){let{result:t,payloadUnavailable:n}=await op(e);n&&np(e.scope,this.onStorageError),t.status===`storage-failed`||t.status===`payload-too-large`?np(e.scope,this.onStorageError):t.status===`conflict`&&(this.resetRestoreScope(),this.onConflict())}async retire(e,t){this.resetRestoreScope();let{retireDurableComposerDraft:n}=await cp;(await n(e,t)).status===`storage-failed`&&np(e,this.onStorageError)}restore(e,t,n,r){let i=tp(e);if(this.restoredScopeKey===i)return;let{onCurrentWins:a,...o}=t();this.restoredScopeKey=i;let s=++this.restoreGeneration;this.restoreScope({scope:e,...o},s,n,r,a)}async restoreScope(e,t,n,r,i){let{readDurableComposerDraft:a,prepareDurableComposerRecovery:o}=await cp;if(e.scope.scopeKey.startsWith(`chat:v3:`)&&(await o(e.scope)).status===`storage-failed`){np(e.scope,this.onStorageError);return}let s=await a(e.scope);if(s.status===`storage-failed`){np(e.scope,this.onStorageError);return}let c=s.status===`found`?s.draft.revision:s.revision;if(c===void 0||c<e.latestRevision){this.isBaselineCurrent(e,t,n())&&i(c??0);return}let l=s.status===`found`?s.draft:void 0,u=[];if(l)try{u=await ap(l.attachments)}catch{np(e.scope,this.onStorageError);return}this.isBaselineCurrent(e,t,n())&&r({revision:c,text:l?l.text:``,...l?.mentions?{mentions:l.mentions}:{},...l?.goalMode?{goalMode:l.goalMode}:{},...l?.replyTarget?{replyTarget:l.replyTarget}:{},attachments:u})}isBaselineCurrent(e,t,n){return t===this.restoreGeneration&&n.scope?.gatewayOwner===e.scope.gatewayOwner&&n.scope.recoveryScope===e.scope.recoveryScope&&n.scope.scopeKey===e.scope.scopeKey&&n.signature===e.signature&&n.revision===e.latestRevision}}})))()}function dp(e,t){let n={snapshot:null,revisions:{committed:0,latestAttempt:0}},r=gn();if(!r)return n;try{let n=Wc(e),i=_o(r,n);if(ea(i,e))try{aa(r,n,i)}catch{}let a=P(t),o=i.sessions[a];if(o&&Kf(e,t)&&Ts(o))try{aa(r,n,i),as()}catch{}so(r,n.key,a,o?.draftRevision);let s=Vs(r,n.key,a,o?.draftRevision),c=Hf(o?.draft??``);return!o||!c&&!o.goalMode&&!o.replyTarget&&!o.queue?.length?{snapshot:null,revisions:s}:{revisions:s,snapshot:{draft:c,...o.draftMentions?{mentions:o.draftMentions}:{},...o.goalMode?{goalMode:o.goalMode}:{},...o.replyTarget?{replyTarget:{...o.replyTarget}}:{},queue:(o.queue??[]).filter(t=>po(e,t)).map(e=>Xf(e,t)).filter(e=>e!==null)}}}catch{return n}}function fp(e,t,n,r,i){let a=i?.owner.recoveryScope&&!Gf({...e,connected:!1},i.owner),o=a?i.durable?.scope??null:t,s=E(e,e.sessionKey),c=Hf(e.chatMessage),l=e.chatGoalDraftMode?{...e.chatGoalDraftMode}:void 0,u=e.chatReplyTarget?{...e.chatReplyTarget}:void 0,d=qa(e.chatMessage,e.chatMentions),f=(e.chatAttachments??[]).map(e=>Object.assign({},e,e.browserAnnotation?{browserAnnotation:Object.assign({},e.browserAnnotation)}:{},e.selectionAnnotation?{selectionAnnotation:Object.assign({},e.selectionAnnotation)}:{})),p=o?{scope:o,expectedRevision:r,revision:n,text:c,...d?{mentions:d}:{},...l?{goalMode:l}:{},...u?{replyTarget:u}:{},storedAttachments:ip(f),writeId:`${n}:${Math.random().toString(36).slice(2)}`}:void 0;return{owner:a?i.owner:Wf(e),scope:s,incognito:Kf(e,s),awaitingDefaults:!ln(e),sessionKey:e.sessionKey,chatMessage:c,...d?{mentions:d}:{},...l?{goalMode:l}:{},...u?{replyTarget:{...u}}:{},expectedDraftRevision:r,draftRevision:n,attachments:f,...p?{durable:p}:{}}}function pp(){return(pp=e((()=>{Ws(),ma(),Ks(),Rc(),O(),Jf(),$f(),up()})))()}function mp(e,t){let n=E(e,e.sessionKey),r=t??Ki(dp(e,n).revisions.latestAttempt);Xa(gn()??e,Wc(e).key,P(n),r)}function hp(e,t,n){let r=E(e,t,n),{revisions:i}=dp(e,r);return to(gn()??e,Wc(e).key,P(r),i.latestAttempt)}function gp(e,t,n){return dp(e,E(e,t,n)).revisions.latestAttempt}function _p(e,t,n){return dp(e,E(e,t,n)).revisions.committed}function vp(e,t,n){return dp(e,E(e,t,n)).snapshot}function yp(e,t=e.sessionKey,n={}){return bp(e,tc(e,t,n.agentId),n)}function bp(e,t,n={}){let r=gn();if(!r||!t.scope.sessionKey.trim())return`storage-failed`;try{let i=Wf(e),a=Wc(e),o=_o(r,a),s=P(t.scope),c=o.sessions[s]??null,l=t.incognito||Kf(e,t.scope),u=l?``:Hf(Object.hasOwn(n,`draft`)?n.draft??``:e.chatMessage),d=l?null:Object.hasOwn(n,`goalMode`)?n.goalMode:e.chatGoalDraftMode,f=l?null:Object.hasOwn(n,`replyTarget`)?n.replyTarget:e.chatReplyTarget,p=qa(u,Object.hasOwn(n,`mentions`)?n.mentions:e.chatMentions),m=c?.draftRevision;so(r,a.key,s,m);let{committed:h,latestAttempt:g}=Vs(r,a.key,s,m),_=n.draftRevision??Ki(g);if(!Number.isSafeInteger(_)||_<=0)return`conflict`;let v=Hf(c?.draft??``),y=v===u&&JSON.stringify(c?.draftMentions??[])===JSON.stringify(p??[])&&JSON.stringify(c?.goalMode??null)===JSON.stringify(d??null)&&JSON.stringify(c?.replyTarget??null)===JSON.stringify(f??null),b=n.expectedDraftRevision;if(!(b===void 0||h===b||m===_&&y)||_<g||m===_&&!y)return`conflict`;Wa(r,a.key,s,_),o.sessions[s]={...t.awaitingDefaults?{awaitingDefaults:!0}:{},...u?{draft:u}:{},...p?{draftMentions:p}:{},...d?{goalMode:d}:{},...f?{replyTarget:{...f}}:{},draftRevision:_,...c?.queue?.length?{queue:c.queue}:{},updatedAt:Date.now()},aa(r,a,o);let x=_o(r,a).sessions[s];return x?.draftRevision===_&&(x.draft??``)===u&&JSON.stringify(x.draftMentions??[])===JSON.stringify(p??[])&&JSON.stringify(x.goalMode??null)===JSON.stringify(d??null)&&JSON.stringify(x.replyTarget??null)===JSON.stringify(f??null)?(tl({...c,draft:v},{draft:u,goalMode:d,replyTarget:f}),!l&&Gf(e,i)&&Kf(e,t.scope)&&dp(e,t.scope),`persisted`):(x?.draftRevision??0)>=_?`conflict`:`storage-failed`}catch{return`storage-failed`}}function xp(e,t=e.sessionKey,n={}){return yp(e,t,n)===`persisted`}function Sp(e,t,n,r){return Cp(e,t,n,r)===`admitted`}function Cp(e,t,n,r){let i=gn();if(!i||!t.scope.sessionKey.trim()||t.owner!==Da(e)||t.gatewayOwner!==Wc(e).gatewayOwner)return`storage-failed`;try{let a=Wc(e),o=_o(i,a),s=t.scope,c={...n,storageScope:n.storageScope??Xi(e)},l=po(e,c)?Xf(c,s):null;if(!l)return`storage-failed`;let u=ea(o,e),d=P(s),f=o.sessions[d]??null,p=f?.queue??[];if(r&&!p.some(e=>e.id===r.id&&Zf(e,r.expected,s)))return`source-changed`;let m=p.filter(e=>e.id!==r?.id),h=m.find(e=>e.id===l.id);if(h)return Qf(h,l,s)?(u&&(aa(i,a,o),as()),`admitted`):`storage-failed`;if(m.length>=50)return`full`;Yf(o,d,f,[...m,l]),t.awaitingDefaults&&(o.sessions[d].awaitingDefaults=!0),aa(i,a,o);let g=_o(i,a).sessions[d]?.queue?.find(e=>e.id===l.id),_=!!(g&&Qf(g,l,s));return as(),_?`admitted`:`storage-failed`}catch{return`storage-failed`}}function wp(e,t,n,r){if(n.length===0)return!0;let i=gn();if(!i||!t.trim()||n.some(({expected:e,next:t})=>e.id!==t.id))return!1;try{let a=Wc(e),o=_o(i,a),s={sessionKey:t,agentId:r??n[0].expected.agentId??n[0].next.agentId},c=P(s),l=o.sessions[c]??null,u=(l?.queue??[]).slice();for(let{expected:e,next:t}of n){let n=u.findIndex(t=>t.id===e.id),r=n>=0?u[n]:void 0,i=r&&Zf(r,e,s)?Xf(t,s):null;if(!i)return!1;u[n]=i}Yf(o,c,l,u),aa(i,a,o),as();let d=_o(i,a).sessions[c]?.queue??[];return n.every(({next:e})=>{let t=Xf(e,s),n=d.find(t=>t.id===e.id);return!!(n&&t&&Qf(n,t,s))})}catch{return!1}}function Tp(e,t,n,r,i){return wp(e,t,[{expected:n,next:r}],i)}function Ep(e,t,n,r,i){let a=gn();if(!a||!t.trim()||!n.trim())return!1;try{let o=Wc(e),s=_o(a,o),c={sessionKey:t,agentId:i??r?.agentId},l=P(c),u=s.sessions[l]??null,d=u?.queue??[],f=d.findIndex(e=>e.id===n);if(f<0)return!0;let p=d[f];return!p||r&&!Zf(p,r,c)?!1:(Yf(s,l,u,d.filter((e,t)=>t!==f)),aa(a,o,s),as(),!_o(a,o).sessions[l]?.queue?.some(e=>e.id===n))}catch{return!1}}function Dp(e,t={}){e.chatMessage=Hf(e.chatMessage);let n=t.sessionKey??e.sessionKey,r=vp(e,n);return r?(!Kf(e,E(e,n))&&(!t.preserveCurrent||!e.chatMessage&&!e.chatGoalDraftMode&&!e.chatReplyTarget)&&(e.chatMessage=Hf(r.draft),e.chatMentions=r.mentions,e.chatGoalDraftMode=r.goalMode??null,e.chatReplyTarget=r.replyTarget??null),(!t.preserveCurrent&&r.queue.length>0||e.chatQueue.length===0)&&(e.chatQueue=r.queue),!0):!1}var Op,kp,Ap;function jp(){return(jp=e((()=>{Ws(),ma(),Na(),Ks(),Rc(),O(),J(),pp(),Jf(),$f(),up(),Ga(),Op=200,kp=`Could not store the previous draft in browser storage. It remains available in this tab.`,Ap=class{constructor(e){this.getState=e,this.timer=null,this.ready=!1,this.pending=null,this.publishing=!1,this.lastPersisted=null,this.committedDraftRevision=0,this.latestDraftRevision=0,this.durableRestoreProtected=!1,this.durableOwner=null,this.durableRetiredScopeKey=``,this.forceDurableOwnerRestore=!1,this.durablePersistence=new lp(()=>{let e=this.getState();e&&(e.lastError=kp,e.chatError=kp,e.requestUpdate?.())},()=>this.getState()?.requestUpdate?.())}get active(){return this.ready}get durableScope(){let e=this.getState();return e?this.resolveDurableScope(e):null}get presentationOwner(){return this.lastPersisted?.owner}get draftRevision(){return this.latestDraftRevision}start(){let e=this.getState();if(!e)return;this.ready=!0,this.pending=null;let{revisions:t,snapshot:n}=dp(e,E(e,e.sessionKey));this.committedDraftRevision=t.committed,this.latestDraftRevision=t.latestAttempt,this.durableRestoreProtected=(e.chatAttachments?.length??0)>0||(n?.draft??``)!==e.chatMessage||JSON.stringify(n?.mentions??[])!==JSON.stringify(e.chatMentions??[])||JSON.stringify(n?.goalMode??null)!==JSON.stringify(e.chatGoalDraftMode??null)||JSON.stringify(n?.replyTarget??null)!==JSON.stringify(e.chatReplyTarget??null),this.durablePersistence.resetRestoreScope(),this.lastPersisted=this.snapshot(e,t.committed,t.committed),this.synchronizeDurablePersistence()}stop(){this.persistNow(),this.ready=!1,this.pending=null,this.clearTimer()}restore(e={}){let t=this.getState();if(!t)return!1;let n=Dp(t,e);this.pending=null,this.clearTimer();let r=this.readDraftRevisions(t);return this.committedDraftRevision=r.committed,this.latestDraftRevision=r.latestAttempt,this.lastPersisted=this.snapshot(t,r.committed,r.committed),this.durableRestoreProtected=!1,this.durablePersistence.resetRestoreScope(),n}schedule(){let e=this.getState();if(!this.ready||!e)return;let t=this.isUnchanged(e);if(t&&!this.pending){this.clearTimer();return}if(!t||!this.pending||!this.matchesCurrentContent(this.pending,e)){let t=Math.max(this.latestDraftRevision,this.pending?.draftRevision??0),n=Ki(t);this.latestDraftRevision=n,this.pending=this.snapshot(e,n),mp(e,n)}this.clearTimer(),this.timer=globalThis.setTimeout(()=>this.persistNow(),Op)}persistNow(){let e=this.getState();if(!this.ready||!e||this.publishing)return;let t=this.pending;if(!t){if(this.isUnchanged(e))return;t=this.snapshot(e,Ki(this.latestDraftRevision)),this.latestDraftRevision=t.draftRevision}this.clearTimer(),this.persistSnapshot(e,t)}persistChangedState(){this.pending&&this.persistNow(),this.synchronizeDurablePersistence(),this.persistNow()}scopeForRouteSwitch(){let e=this.getState();return e?(this.pending??(this.isUnchanged(e)?this.lastPersisted:null))?.scope??E(e,e.sessionKey):null}persistForRouteSwitchResult(){let e=this.getState();if(!e)return{status:`persisted`};let t=this.pending,n=!1;if(!t&&this.ready&&this.isUnchanged(e)){let r=this.lastPersisted;if(!r.chatMessage&&!r.goalMode&&!r.replyTarget&&r.attachments.length===0)return this.pending=null,this.clearTimer(),{status:`persisted`};let{revisions:i,snapshot:a}=dp(e,r.scope),o=i.committed;if(r.attachments.length===0&&o===r.draftRevision&&a?.draft===r.chatMessage&&JSON.stringify(a?.mentions??[])===JSON.stringify(r.mentions??[])&&JSON.stringify(a?.goalMode??null)===JSON.stringify(r.goalMode??null)&&JSON.stringify(a?.replyTarget??null)===JSON.stringify(r.replyTarget??null))return this.pending=null,this.clearTimer(),{status:`persisted`};if(o!==r.draftRevision||a?.draft||a?.goalMode||a?.replyTarget||i.latestAttempt>r.draftRevision)return{status:`conflict`};t={...r,expectedDraftRevision:o,draftRevision:Ki(Math.max(o,i.latestAttempt,this.latestDraftRevision))},this.latestDraftRevision=t.draftRevision,n=!0}else if(!t&&!this.ready&&!Hf(e.chatMessage)&&!e.chatGoalDraftMode&&!e.chatReplyTarget)return this.pending=null,this.clearTimer(),{status:`persisted`};return t??=this.snapshot(e,Ki(this.latestDraftRevision)),this.latestDraftRevision=Math.max(this.latestDraftRevision,t.draftRevision),this.clearTimer(),this.persistSnapshot(e,t,n)}persistSnapshot(e,t,n=!1){this.pending=t,this.publishing=!0;let r;try{r=Gf(e,t.owner)?bp(e,t,{draft:t.chatMessage,mentions:t.mentions,goalMode:t.goalMode??null,replyTarget:t.replyTarget??null,draftRevision:t.draftRevision,...n?{expectedDraftRevision:t.expectedDraftRevision}:{}}):`persisted`}finally{this.publishing=!1}return t.durable&&(t.incognito||Gf(e,t.owner)&&Kf(e,t.scope)?this.retireDurableScope(t.durable.scope,t.draftRevision):this.durablePersistence.persist(t.durable)),r===`persisted`&&this.pending===t?(this.pending=null,this.committedDraftRevision=t.draftRevision,this.latestDraftRevision=Math.max(this.latestDraftRevision,t.draftRevision),this.lastPersisted=t,{status:r}):r===`storage-failed`?{status:r,expectedDraftRevision:t.expectedDraftRevision,draftRevision:t.draftRevision}:{status:r}}clearTimer(){this.timer!==null&&(globalThis.clearTimeout(this.timer),this.timer=null)}isUnchanged(e){let t=this.lastPersisted;return!!(t&&t.sessionKey===e.sessionKey&&t.incognito===Kf(e,t.scope)&&this.matchesCurrentContent(t,e))}matchesCurrentContent(e,t){return rp(e.chatMessage,e.attachments,e.goalMode,e.mentions,e.replyTarget)===this.currentContentSignature(t,Hf(t.chatMessage))}currentContentSignature(e,t=e.chatMessage){return rp(t,e.chatAttachments??[],e.chatGoalDraftMode,e.chatMentions,e.chatReplyTarget)}snapshot(e,t=this.latestDraftRevision,n=this.committedDraftRevision){return fp(e,this.resolveDurableScope(e),t,n,this.lastPersisted)}resolveDurableScope(e,t=E(e,e.sessionKey)){return Kf(e,t)?null:qf(e,t)}retireDurableScope(e,t){let n=tp(e);this.durableRetiredScopeKey!==n&&(this.durableRetiredScopeKey=n,this.durableOwner=null,this.forceDurableOwnerRestore=!1,this.durableRestoreProtected=!1,this.durablePersistence.retire(e,t))}synchronizeDurablePersistence(){let e=this.getState();if(!this.ready||!e||this.publishing)return;let t=qf(e);if(Kf(e,E(e,e.sessionKey))){t&&((!this.isUnchanged(e)||this.lastPersisted&&!Gf(e,this.lastPersisted.owner))&&dp(e,E(e,e.sessionKey)),this.retireDurableScope(t,this.latestDraftRevision));return}this.durableRetiredScopeKey=``;let n=this.resolveDurableScope(e);if(!n)return;let r=this.durableOwner;if(this.durableOwner={client:e.client,gatewayOwner:n.gatewayOwner,recoveryScope:n.recoveryScope},r&&(r.gatewayOwner!==n.gatewayOwner||r.recoveryScope!==n.recoveryScope)){ut(e.chatAttachments),e.chatMessage=``,e.chatMentions=[],e.chatGoalDraftMode=null,e.chatReplyTarget=null,e.chatAttachments=[],this.pending=null;let t=this.readDraftRevisions(e);this.committedDraftRevision=t.committed,this.latestDraftRevision=t.latestAttempt,Dp(e),this.committedDraftRevision=t.committed,this.lastPersisted=null,this.lastPersisted=this.snapshot(e,this.latestDraftRevision,this.latestDraftRevision),this.durableRestoreProtected=!1,this.forceDurableOwnerRestore=!0,this.durablePersistence.resetRestoreScope()}if(this.durableRestoreProtected){this.durableRestoreProtected=!1;let t=this.snapshot(e,Ki(this.latestDraftRevision));this.latestDraftRevision=t.draftRevision,this.persistSnapshot(e,t);return}this.durablePersistence.restore(n,()=>{let t=this.snapshot(e);return{latestRevision:this.forceDurableOwnerRestore?0:this.latestDraftRevision,signature:this.currentContentSignature(e),onCurrentWins:n=>{this.forceDurableOwnerRestore=!1,t.durable&&(e.chatMessage||e.chatGoalDraftMode||e.chatReplyTarget||(e.chatAttachments?.length??0)>0)&&this.durablePersistence.persist({...t.durable,expectedRevision:n})}}},()=>({scope:this.resolveDurableScope(e),signature:this.currentContentSignature(e),revision:this.forceDurableOwnerRestore?0:this.latestDraftRevision}),t=>{let n=this.forceDurableOwnerRestore;this.forceDurableOwnerRestore=!1;let r=e.chatAttachments??[];e.chatMessage=Hf(t.text),e.chatMentions=t.mentions,e.chatGoalDraftMode=t.goalMode??null,e.chatReplyTarget=t.replyTarget??null,e.chatAttachments=t.attachments,ut(r);let i=n?Ki(Math.max(this.latestDraftRevision,t.revision)):t.revision;this.committedDraftRevision=i,this.latestDraftRevision=i,this.lastPersisted=this.snapshot(e,i,i),yp(e,e.sessionKey,{agentId:E(e,e.sessionKey).agentId,draft:e.chatMessage,mentions:e.chatMentions,goalMode:e.chatGoalDraftMode,replyTarget:e.chatReplyTarget,draftRevision:i}),n&&this.lastPersisted.durable&&this.durablePersistence.persist({...this.lastPersisted.durable,expectedRevision:t.revision}),e.requestUpdate?.()})}readDraftRevisions(e,t=E(e,e.sessionKey)){return dp(e,t).revisions}}})))()}function Mp(e){return M(`chat.sendErrors.outboxPayload${e===`capacity`?`Capacity`:e===`missing`?`Missing`:`Unavailable`}`)}function Np(e,t){let n=(e.sendAttempts??0)>0||e.sendRequestStartedAtMs!==void 0||e.sendState===`unconfirmed`;return{...e,attachmentStorageError:t,sendState:e.sendState===`held`?`held`:n?`unconfirmed`:`failed`,sendError:Mp(t)}}function Pp(e,t){return E(e,t?.sessionKey??e.sessionKey??``,t?.agentId)}function Fp(e,t=Pp(e)){let n=e.client,r=e.settings?.gatewayUrl,i=Da(e),a=Kf(e,t);return()=>e.client===n&&e.settings?.gatewayUrl===r&&Da(e)===i&&Kf(e,t)===a}async function Ip(e,t,n){if(!t.attachments?.length&&!t.attachmentPayload&&!t.attachmentStorageError)return{status:`ready`,update:{}};let r=Pp(e,t);if(Kf(e,r))return t.attachmentPayload?{status:`failed`,reason:`unavailable`}:{status:`ready`,update:{}};let i=Da(e);if(!i)return{status:`failed`,reason:`unavailable`};let a=Fp(e,r),o;try{o=await al()}catch{return{status:`failed`,reason:`unavailable`}}if(!a())return{status:`failed`,reason:`unavailable`};let s={tabId:o,gatewayOwner:Co(e.settings?.gatewayUrl).gatewayOwner,recoveryScope:i,queueId:t.id};if(t.attachmentPayload){let e=await Mo(s,t.attachmentPayload);if(e.status===`failed`)return e;let r=t.attachments??[];if(e.value.length!==r.length||e.value.some((e,t)=>{let n=r[t];return e.mimeType!==n.mimeType||e.fileName!==n.fileName||e.origin!==n.origin||e.sizeBytes!==n.sizeBytes}))return{status:`failed`,reason:`missing`};if(!a())return{status:`failed`,reason:`unavailable`};try{let i=await Promise.all(e.value.map(async(e,t)=>({...r[t],...e.selectionAnnotation?{selectionAnnotation:e.selectionAnnotation}:{},dataUrl:await Hs(e.blob)})));if(!a())return{status:`failed`,reason:`unavailable`};let c={attachments:i,attachmentPayload:t.attachmentPayload,attachmentStorageError:void 0};if(n===`send`&&t.attachmentPayload.tabId!==o){let n=await Do(s,e.value);return n.status===`failed`?n:a()?{status:`ready`,update:{...c,attachmentPayload:n.value,sendState:t.sendState===`held`?`held`:`unconfirmed`,sendError:M(`chat.sendErrors.outboxPayloadCopied`)}}:(await Sa([n.value]),{status:`failed`,reason:`unavailable`})}return{status:`ready`,update:c}}catch{return{status:`failed`,reason:`missing`}}}if(n===`handoff`||t.attachmentStorageError===`missing`)return{status:`failed`,reason:`missing`};let c=ip(t.attachments??[]);if(!c)return{status:`failed`,reason:`missing`};let l=await Do(s,c);return l.status===`failed`?l:a()?{status:`ready`,update:{attachmentPayload:l.value,attachmentStorageError:void 0}}:(await Sa([l.value]),{status:`failed`,reason:`unavailable`})}async function Lp(e,t,n=`send`){let r=t.attachmentPayload,i=Pp(e,t);if(!r||Kf(e,i)||!Da(e))return Ip(e,t,n);let a=JSON.stringify([t.id,r.key,r.tabId,r.recoveryScope,i,e.settings?.gatewayUrl,Da(e),n,t.attachments?.map(({mimeType:e,fileName:t,sizeBytes:n,origin:r})=>[e,t,n,r])]),o=Fp(e,i),s=zp.get(a);s||(s=Ip(e,t,n).finally(()=>zp.delete(a)),zp.set(a,s));let c=await s;return o()?c:{status:`failed`,reason:`unavailable`}}function Rp(e){e.attachmentPayload&&Sa([e.attachmentPayload])}var zp;function Bp(){return(Bp=e((()=>{b(),ma(),Rc(),O(),Jf(),up(),zp=new Map})))()}var Vp=t({chatOutboxOwner:()=>Y,listChatOutboxAttention:()=>Up});function Hp(e){let t=gn();return t&&!Gp.has(t)&&Gp.set(t,++Kp),`${t?Gp.get(t):0}\u0000${e.settings?.gatewayUrl?.trim()||`default`}\u0000${Da(e)??``}`}function Y(e){let t=Hp(e),n=Jp.get(t)??new qp(t);return Jp.set(t,n),n.adoptSubscriptions(e),n}function Up(e){if(!Da(e))return[];let t=Jp.get(Hp(e));return Bf(Za(e),t)}var Wp,Gp,Kp,qp,Jp,Yp,Xp;function Zp(){return(Zp=e((()=>{ma(),Na(),Ga(),Rc(),O(),J(),jp(),Bp(),Wp=[`sendRunId`,`sendAttempts`,`sendState`,`sendError`],Gp=new WeakMap,Kp=0,qp=class{constructor(e){this.ownerGatewayKey=e,this.hosts=new Map,this.panes=new Set,this.live=new Map,this.hydrating=new Set,this.unsubscribe=null}state(e){let t=Yp.get(e);t&&t!==this&&t.retireHost(e),Yp.set(e,this);let n=this.hosts.get(e);if(n)return n;e.chatQueue=e.chatQueue.filter(t=>po(e,t));let r=E(e,e.sessionKey),i=new Set(ha(e,r)?.queue.map(e=>e.id)),a={byScope:new Map,durableSeen:i,retryable:new Set};return e.chatQueue.length&&a.byScope.set(P(r),{scope:r,queue:e.chatQueue.filter(t=>po(e,t))}),this.hosts.set(e,a),a}retireHost(e){let t=this.hosts.get(e);if(t){let n=new Set;for(let[e,r]of t.byScope)r.queue=r.queue.filter(e=>t.retryable.has(e.id)&&!t.durableSeen.has(e.id)&&!e.pendingRunId&&!e.localCommandName).map(e=>(n.add(e.id),e.sendState===`failed`||e.sendState===`unconfirmed`?e:Object.assign({},e,{sendState:`held`}))),r.queue.length||t.byScope.delete(e);t.retryable=n,t.byScope.size||this.hosts.delete(e)}for(let[t,n]of this.live){for(let[t,r]of n)r.owner===e&&n.delete(t);n.size||this.live.delete(t)}this.prune(e)}durable(e,t){return Za(e).find(({queue:e})=>e.some(e=>e.id===t))}locate(e,t){let n=this.durable(e,t),r=n??this.local(this.state(e),t)?.scope;if(!r)return;let{sessionKey:i,agentId:a}=r,o={sessionKey:i,agentId:a},s=this.snapshot(e,o,n?.queue??[]).find(e=>e.id===t);return s?{item:s,scope:o,durable:n?.queue.find(e=>e.id===t)}:void 0}readLive(e,t,n){let r=this.live.get(e);if(!r)return;let i=r.get(t);if(i?.expectedDurableVersion&&(!n||!Go(i.expectedDurableVersion,n))||i?.submissionIsCurrent&&!i.submissionIsCurrent()){r.delete(t),r.size||this.live.delete(e);return}return i}observeDurable(e){for(let[t,n]of this.hosts)if(n.retryable.delete(e)){n.durableSeen.add(e);let r=this.local(n,e);r?.queue.splice(r.index,1),Yp.get(t)!==this&&this.prune(t)}}snapshot(e,t,n=ha(e,t)?.queue??[]){let r=P(t),i=this.state(e),a=i.byScope.get(r)?.queue??[],o=n.map(e=>{i.durableSeen.add(e.id),this.observeDurable(e.id);let t=a.find(t=>t.id===e.id),n=this.readLive(r,e.id,e)?.item;return t?.pendingRunId||t?.sendState===`waiting-model`?t:n&&n.sendRunId===e.sendRunId?n:t&&t.sendRunId===e.sendRunId?zf(e,t):e}),s=new Set(n.map(e=>e.id));return o.push(...a.filter(e=>!s.has(e.id)&&Vf(i,e))),this.prune(e),o.filter(t=>po(e,t)).toSorted(mo)}syncHost(e,t={}){if(this.ownerGatewayKey!==Hp(e)){Y(e).syncHost(e,t);return}Da(e);let n=this.snapshot(e,E(e,e.sessionKey));(n.length||e.chatQueue.length)&&(e.chatQueue=n);for(let t of e.chatQueue){let n=t.attachmentPayload?.key;if(!n||t.attachmentStorageError||this.hydrating.has(n)||t.attachments?.every(e=>Ef(e)))continue;this.hydrating.add(n);let r=Fp(e);Lp(e,t).then(i=>{if(!r())return;let a=this.durable(e,t.id),o=a?.queue.find(e=>e.id===t.id);if(a&&o?.attachmentPayload?.key===n){if(i.status===`ready`){if(i.update.attachmentPayload?.key!==n){let n=t.sendState===`waiting-reconnect`&&o.sendState===`unconfirmed`&&Go(o,{...mc(t,a),sendState:`unconfirmed`});if(!Tp(e,a.sessionKey,n?o:t,{...o,...i.update},a.agentId))return}this.keep(e,a,{...o,attachments:i.update.attachments,...i.update.attachmentPayload?.key===n?{}:{attachmentPayload:i.update.attachmentPayload,sendState:i.update.sendState,sendError:i.update.sendError}})}else Tp(e,a.sessionKey,o,Np(o,i.reason),a.agentId);this.publish(e)}}).finally(()=>this.hydrating.delete(n))}t.requestUpdate!==!1&&e.requestUpdate?.()}publish(e,t=!1){e&&this.syncHost(e);for(let n of this.panes)n!==e&&(t&&this.reconcile(n,this.state(n)),this.syncHost(n))}adoptSubscriptions(e){let t=Xp.get(e)?.owner;if(!t||t===this)return;let n=!1;for(let e of t.panes)Hp(e)===this.ownerGatewayKey&&(Xp.get(e).owner=this,t.retireHost(e),Yp.delete(e),e.chatQueue=[],t.detach(e),this.attach(e),n=!0);n&&this.publish()}attach(e){this.panes.add(e),this.unsubscribe??=la(()=>this.publish(void 0,!0))}detach(e){this.panes.delete(e),this.panes.size||(this.unsubscribe?.(),this.unsubscribe=null),this.prune(e)}subscribe(e,t){let n={owner:this,onDiscard:t};return Xp.set(e,n),this.attach(e),this.reconcile(e,this.state(e)),this.syncHost(e,{requestUpdate:!1}),()=>{Xp.get(e)===n&&(Xp.delete(e),n.owner.detach(e))}}reconcile(e,t){let n=new Set(Za(e).flatMap(e=>e.queue.map(e=>e.id)));n.forEach(e=>{t.durableSeen.add(e),this.observeDurable(e)});for(let e of t.byScope.values())e.queue=e.queue.filter(e=>n.has(e.id)||Vf(t,e))}retirePendingRun(e,t){let n=e.chatQueue.filter(e=>e.pendingRunId===t),r=E(e,e.sessionKey),i=this.state(e),a=i.byScope.get(P(r));a&&(a.queue=a.queue.filter(e=>e.pendingRunId!==t));for(let e of n)i.retryable.delete(e.id);return this.syncHost(e),n}keep(e,{sessionKey:t,agentId:n},r,i=!1){let a={sessionKey:t,agentId:n},o=this.state(e),s=P(a),c=[...ha(e,a)?.queue??[],...[...this.hosts.values()].flatMap(e=>e.byScope.get(s)?.queue.filter(t=>Vf(e,t))??[])],l=c.find(e=>e.id===r.id),u=Math.max(...c.map(Ba)),d=l?l.orderKey:r.orderKey??(r.createdAt<=u?u+1:void 0),f=mc({...r,storageScope:r.storageScope??Xi(e)},a);if(!po(e,f))return f;d===void 0?delete f.orderKey:f.orderKey=d;let p=[...o.byScope.get(s)?.queue??[]],m=p.findIndex(e=>e.id===r.id);return m<0?p.push(f):p[m]=f,p.sort(mo),o.byScope.set(s,{scope:a,queue:p}),i&&o.retryable.add(r.id),this.syncHost(e),f}local(e,t){for(let{scope:n,queue:r}of e.byScope.values()){let e=r.findIndex(e=>e.id===t);if(e>=0)return{scope:n,queue:r,index:e}}}change(e,t,n,r=!1){let i=this.state(e),a=this.local(i,t);if(!a)return this.prune(e),null;let o=a.queue[a.index];if(n){let s=n(o);return a.queue[a.index]=s,r&&i.retryable.add(t),this.syncHost(e),s}i.retryable.delete(t);let s=this.durable(e,t)?.queue.find(e=>e.id===t);return s?(i.durableSeen.add(t),a.queue[a.index]=zf(s,o)):a.queue.splice(a.index,1),this.syncHost(e),o}update(e,t){let n=[];for(let{id:r,update:i}of t){let t=this.locate(e,r);if(!t)return null;n.push({...t,next:i(t.item)})}let r=n.filter(e=>e.durable),i=r[0]?.scope,a=!i||wp(e,i.sessionKey,r.map(({item:e,next:t})=>({expected:e,next:t})),i.agentId);for(let{item:t,scope:n,next:i}of r){let r=i.sendState===`sending`||i.sendState===`executing-command`;a?(i.sendState===`waiting-model`?this.keep(e,n,i):this.change(e,t.id),this.projectLive(e,n,t.id,r?i:void 0)):r?this.syncHost(e):this.projectLive(e,n,t.id)}return a?n.map(({item:t,durable:n,next:r})=>n?r:this.change(e,t.id,()=>r)):null}admit(e,t,n,r){if(Xi(e)!==JSON.stringify([t.gatewayOwner,t.owner]))return`storage-failed`;let i=Cp(e,t,this.keep(e,t.scope,n),r);return i===`admitted`&&(this.observeDurable(n.id),n.sendState!==`waiting-model`&&this.change(e,n.id)),i}remove(e,t,n){let r=this.locate(e,t),i=r?.durable,a=e.chatQueue.find(e=>e.id===t),o=r&&this.readLive(P(r.scope),t,i);if(o&&o.owner!==e&&!(a&&i&&Wp.every(e=>a[e]===i[e]))||r?.durable&&!Ep(e,r.scope.sessionKey,t,r.item,r.scope.agentId))return this.syncHost(e),null;if(r&&(this.projectLive(e,r.scope,t),this.change(e,t)),this.publish(void 0,!0),r&&n?.discard)for(let e of this.panes)Xp.get(e)?.onDiscard?.(r.item);return r?.item??null}hasVolatile(e,t){return this.hosts.get(e)?.retryable.has(t)??!1}anyPane(e){for(let t of this.panes)if(e(t))return!0;return!1}hasPendingSubmission(e,t){return!!this.readLive(P(e),t.id,t)?.submissionIsCurrent}needsReview(e,t){let n=P(e);if(this.readLive(n,t.id,t))return!1;for(let e of this.hosts.values())if(e.byScope.get(n)?.queue.some(e=>e.id===t.id&&e.sendState===`waiting-model`))return!1;return!t.pendingRunId&&(t.sendState===`failed`||t.sendState===`unconfirmed`||t.sendState===`held`)}beginSubmission(e,t,n){let r=this.locate(e,t);if(!r?.durable||r.item.sendState!==`waiting-idle`||r.durable.sendState!==`waiting-idle`||!r.item.sendRunId||(r.item.sendAttempts??0)!==0||r.item.sendRequestStartedAtMs!==void 0)return;let i=P(r.scope),a=this.live.get(i)??new Map,o={item:n.inline?{...r.item,sendState:`submitting`}:r.item,owner:e,expectedDurableVersion:r.durable,submissionIsCurrent:n.isCurrent};return a.set(t,o),this.live.set(i,a),this.publish(e),{release:()=>{this.live.get(i)?.get(t)===o&&this.projectLive(e,r.scope,t)}}}projectLive(e,t,n,r){let i=P(t),a=this.live.get(i)??new Map;r?(a.set(n,{item:r,owner:e}),this.live.set(i,a)):(a.delete(n),a.size||this.live.delete(i)),this.publish(e),this.prune(e)}allItems(e){let t=Za(e).flatMap(t=>this.snapshot(e,t,t.queue)),n=[...this.state(e).byScope.values()].flatMap(({queue:e})=>e),r=new Map([...n,...t].map(e=>[e.id,e]));return this.prune(e),[...r.values()].filter(t=>po(e,t))}prune(e){let t=this.hosts.get(e);t&&!this.panes.has(e)&&![...t.byScope.values()].some(({queue:e})=>e.some(e=>Vf(t,e)))&&!this.live.size&&this.hosts.delete(e),!this.unsubscribe&&!this.live.size&&!this.hosts.size&&queueMicrotask(()=>{!this.unsubscribe&&!this.live.size&&!this.hosts.size&&Jp.get(this.ownerGatewayKey)===this&&Jp.delete(this.ownerGatewayKey)})}},Jp=new Map,Yp=new WeakMap,Xp=new WeakMap})))()}function Qp(e){return Zi(e)&&(e.sendState===void 0||e.sendState===`waiting-idle`)&&!e.localCommandName}function $p(e){return e.toSorted(mo).find(Qp)}function em(e,t){return t(e)||Y(e).anyPane(e=>t(e))}function tm(e,t,n,r,i={}){let a=E(e,t,r??n.agentId);return Y(e).keep(e,a,n,i.retryable)}function nm(e,t,n,r,i){let a=t.trim();if(!a)return null;let o={id:bl(),text:a,createdAt:Date.now(),refreshSessions:n,localCommandArgs:r?.args,localCommandName:r?.name,sessionKey:e.sessionKey,agentId:ze(e,e.sessionKey),...i?{sender:i}:{}};return tm(e,e.sessionKey,o,o.agentId)}function rm(e,t,n,r){let i=t.trim();if(!i)return;let a={id:bl(),text:i,createdAt:Date.now(),pendingRunId:n,...r?{sender:r}:{}};tm(e,e.sessionKey,a)}function im(e,t,n){let r=E(e,t,n);return Y(e).snapshot(e,r)}function X(e,t){return Y(e).locate(e,t)?.item??null}function am(e,t,n){return Y(e).update(e,[{id:t,update:n}])?.[0]??null}function om(e,t,n){if(!n||t.sessionId&&t.sessionId!==n)return!1;let r=X(e,t.id);return!r||r.sessionId&&r.sessionId!==n||!Go(r,t)?!1:r.sessionId&&r.sendState!==`unconfirmed`?!0:am(e,t.id,e=>({...e,sessionId:n,...e.sendState===`unconfirmed`?{sendState:`waiting-idle`,sendError:void 0}:{}}))!==null}function sm(e,t,n,r){return Y(e).admit(e,t,n,r)===`admitted`}function cm(e,t){if(!t?.length)return t?[]:void 0;let n=new Set((e.chatAttachments??[]).map(e=>e.id));return t.filter(e=>!n.has(e.id))}function lm(e,t,n){let r=X(e,t),i=r?Y(e).remove(e,t,n):null;return i&&ut(cm(e,i.attachments)),i?`removed`:r?`rejected`:`absent`}function um(e,t,n){let r=dm(e,t,n);if(!r)return null;let i=Y(e).remove(e,r.item.id);return i?(ut(cm(e,i.attachments)),i):null}function dm(e,t,n){if(!t)return null;let r=P(n),i=Za(e).find(e=>P(e)===r),a=i?.queue.find(e=>e.sendRunId===t);return a&&i?{item:a,outbox:i}:null}function fm(e,t){if(!t)return;let n=Y(e).retirePendingRun(e,t);for(let t of n)ut(cm(e,t.attachments))}function pm(){return(pm=e((()=>{Na(),un(),O(),hl(),J(),Zp(),jp()})))()}function mm(e,t){return JSON.stringify([e,t])}function hm(e){let t=K(e),n=K(t?.__openclaw);return typeof n?.id==`string`?n.id:typeof t?.messageId==`string`?t.messageId:void 0}function gm(e,t){let n=K(e),r=K(n?.__openclaw),i=hm(e);return(Ra(t)===`assistant`||i?.startsWith(`pending:`))&&!n?.openclawMessageToolMirror&&r?.truncated===!0?i:void 0}function _m(){return(_m=e((()=>{pi(),Oo()})))()}function vm(e){if(!K(e))return null;try{return _a(e)}catch{return null}}function ym(e){let t=K(K(e)?.provenance);return t?.kind===`inter_session`&&t.sourceTool===`sessions_send`||t?.kind===`internal_system`&&t.sourceTool===`cron`&&!!(t.jobId&&t.runId&&t.sourceSessionKey)}function bm(e){return e.messages.some(({message:e})=>ym(e))}function xm(e){return K(K(e)?.provenance)?.kind===`inter_session`}function Sm(e){return e.role===`assistant`&&!e.isStreaming&&e.messages.length>0&&e.messages.every(({message:e})=>xm(e))}function Cm(e){return!!e.senderSession||bm(e)}function wm(e){return K(K(e)?.__openclaw)?.turnBoundary===!0}function Tm(e){if(e.kind===`notice`)return e.startsTurn===!0;if(e.kind===`message`){let t=Ra(Ho(e.message));return e.startsTurn===!0||t===`user`||wm(e.message)||t===`assistant`&&ym(e.message)}if(e.kind!==`group`)return!1;let t=e.role.toLowerCase();return t===`user`||wm(e.messages[0]?.message)||t===`assistant`&&bm(e)}function Em(e){if(Tm(e))return!0;if(e.kind===`group`)return Ra(e.role)===`assistant`&&Cm(e);let t=e.kind===`message`?vm(e.message):null;return!!(t&&Ra(t.role)===`assistant`&&t.senderSession)}function Dm(){return(Dm=e((()=>{Oo()})))()}function Om(e,t,n){let r=[],i=e.trim();i&&r.push({type:`text`,text:i});for(let e of t??[]){let t=n?Ef(e):void 0;if(n===`complete`&&!t)return null;let i=t||Af(e);if(!i)continue;if(e.mimeType.startsWith(`image/`)){r.push({type:`image`,url:i,...e.fileName?{fileName:e.fileName}:{},source:{type:`url`,url:i}});continue}let a=e.mimeType.trim().toLowerCase(),o=a.startsWith(`video/`)||(a===``||a===`application/octet-stream`)&&Ac(e.fileName??``);r.push({type:`attachment`,attachment:{url:i,kind:e.mimeType.startsWith(`audio/`)?`audio`:o?`video`:`document`,label:e.fileName?.trim()||`Attached file`,mimeType:e.mimeType,...e.origin?{origin:e.origin}:{}}})}return r}function km(e,t,n,r){let i=r?.trim(),a=i?Am({...t,runId:i},`available`):null;return a&&i?{kind:`initial`,sessionKey:e,owner:n,pendingRunId:i,message:a}:null}function Am(e,t){let n=Om(e.text,e.attachments,t);if(!n?.length)return null;let{mentions:r}=Qa(e.text,e.mentions);return{role:`user`,content:n,timestamp:e.createdAt,__openclaw:{...e.workContext?{workContext:{snapshot:e.workContext,text:e.text}}:{},...e.runId?{idempotencyKey:`${e.runId}:user`}:{},...e.pending?{kind:`pending-send`,id:e.pending.id,...e.pending.state?{state:e.pending.state}:{},...e.pending.error?{error:e.pending.error}:{}}:{},...e.replyToId?{replyToId:e.replyToId}:{},...r?{humanMentions:r}:{},...e.sender?.id?{senderId:e.sender.id}:{},...e.sender?.identity?{senderIdentity:e.sender.identity}:{},...e.sender?.name?{senderName:e.sender.name}:{},...e.sender?.username?{senderUsername:e.sender.username}:{},...e.sender?.profileAvatarUrl?{senderProfileAvatarUrl:e.sender.profileAvatarUrl}:{}}}}function jm(){return(jm=e((()=>{Ws(),sc(),J()})))()}function Mm(e,t,n){let r=e,i=Array.isArray(r.content)?[...r.content]:typeof r.content==`string`?[{type:`text`,text:r.content}]:typeof r.text==`string`?[{type:`text`,text:r.text}]:[];return i.some(e=>{let n=yc(e);return n&&Ca(n,t)})?e:{...r,content:[...i,{type:`canvas`,preview:t,...n?{rawText:n}:{}}]}}function Nm(e,t,n){let r=iu(t);if(!r)return!0;let i=n&&hm(e),a=n&&i?n.messages.get(mm(n.agentId,i)):void 0;if(a?.status===`loaded`){let t=Ra(_a(e).role);if(gm(e,t))return iu(t===`assistant`?Id(a.markdown):a.markdown).includes(r)}return iu(Xs(e)).includes(r)}function Pm(e){let t=K(e);if(!t)return null;let n=ah.get(t);if(n!==void 0)return n;let r=Fm(t);return ah.set(t,r),r}function Fm(e){if(!vm(e))return null;let t=fs(e);for(let n=t.length-1;n>=0;n--){let r=t[n];if(r?.preview?.kind===`canvas`)return{preview:r.preview,text:r.outputText??null,timestamp:eh(e)}}let n=Xs(e)??void 0,r=bs(n);return r?.kind===`canvas`?{preview:r,text:n??null,timestamp:eh(e)}:null}function Im(e,t){let n=Vm(K(e)??{}),r=t.preview.viewId?`viewId:${t.preview.viewId}`:t.preview.url?`url:${t.preview.url}`:null;return n&&r?JSON.stringify([n,r]):null}function Lm(e,t=e.timestamp){return Mm({role:`assistant`,content:[],...t==null?{}:{timestamp:t}},e.preview,e.text)}function Rm(e,t){let n=null;for(let r=t-1;r>=0&&(n=eh(e[r]),n==null);--r);let r=null;for(let n=t+1;n<e.length&&(r=eh(e[n]),r==null);n+=1);return n!=null&&r!=null?n<r?Math.min(n+1,r):r:n==null?r:n+1}function zm(e,t,n=0,r=e.length){let i=n,a=r;for(let o=n;o<r;o+=1){let n=e[o];if(!n||!Tm(n))continue;let r=n.kind===`notice`?n.timestamp:n.kind===`message`?vm(n.message)?.timestamp??null:null;if(t!=null&&r!=null&&r>t){a=o;break}i=o+1}let o=null,s=null;for(let n=i;n<a;n++){let r=e[n];if(r?.kind!==`message`)continue;let i=K(r.message);if(typeof i?.role!=`string`||i.role.toLowerCase()!==`assistant`)continue;o={index:n,item:r};let a=vm(r.message)?.timestamp;if(t!=null&&a!=null){if(a<=t){s={anchor:o,timestamp:a};continue}return s&&t-s.timestamp<=a-t?s.anchor:o}}return s?.anchor??o}function Bm(e,t,n=0,r=e.length){if(t==null)return r;for(let i=n;i<r;i+=1){let n=e[i];if(n?.kind!==`message`)continue;let r=vm(n.message);if(r&&Ra(r.role).toLowerCase()===`user`&&r.timestamp!=null&&r.timestamp>t)return i}return r}function Vm(e){return vn({...e,id:void 0})}function Hm(e,t){return vn(e)??Vm(t)}function Um(e){return K(K(e)?.__openclaw)?.kind===`pending-send`}function Wm(e){let t=K(K(e)?.__openclaw),n=t?.state,r=t?.id;return t?.kind!==`pending-send`||n!==`failed`&&n!==`unconfirmed`&&n!==`held`&&n!==`waiting-reconnect`||typeof r!=`string`?null:{id:r,state:n,...typeof t.error==`string`?{error:t.error}:{}}}function Gm(e){let t=K(e),n=typeof t?.messageId==`string`&&t.messageId.trim()?t.messageId:t?.id;return U(e,{messageId:n})}function Km(e){let t=Gm(e);return t?.role===`user`?t.runId:null}function qm(e){let t=Gm(e)?.id;return Um(e)||t?.startsWith(`pending:`)?null:t??null}function Jm(e){let t=Gm(e);return t?.sendId?`send:${t.sendId}`:t?.isImported?t.externalSource?`import:${t.externalSource}`:t.sequence===null?null:`import-seq:${t.sequence}`:t?.id?`id:${t.id}`:t?.sequence==null?null:`seq:${t.sequence}`}function Ym(e){if(e&&typeof e==`object`){let t=oh.get(e);if(t)return t}let t=K(e),n=[typeof t?.role==`string`?t.role:``,typeof t?.toolCallId==`string`?t.toolCallId:``,t?Xs(e):``].join(`\0`),r=`p${v(n).toString(36)}${n.length.toString(36)}`;return e&&typeof e==`object`&&oh.set(e,r),r}function Xm(e,t=Jm){let n=e.map(t),r=new Map;for(let e of n)e&&r.set(e,(r.get(e)??0)+1);let i=new Map;return e.map((e,t)=>{let a=n[t],o=a==null||(r.get(a)??0)>1?`${a??`legacy`}:projection:${Ym(e)}`:a??`legacy`,s=i.get(o)??0;i.set(o,s+1);let c=K(e),l=typeof c?.toolCallId==`string`?c.toolCallId:``,u=typeof c?.role==`string`?c.role:`unknown`,d=`${o}:${s}`;return{kind:`message`,key:l?`tool:${u}:${l}:${d}`:`msg:${d}`,message:e}})}function Zm(e,t=vm(e)){if(!t)return!1;let n=Ra(t.role),r=n===`assistant`&&t.senderLabel?.trim();return!!(n===`tool`||t.content.length||t.replyTarget||r||n===`user`&&ys(e).length)}function Qm(e){let t=bi(e);return t.trim().length>0?t:``}function $m(e){return Am({text:e.text,workContext:e.workContext,mentions:e.mentions,attachments:e.attachments,createdAt:e.createdAt,runId:e.sendRunId??e.pendingRunId,replyToId:e.replyToId,sender:e.sender,pending:{id:e.id,state:e.sendState,error:e.sendError}})}function eh(e){return Rl(K(e)?.timestamp)??null}function th(e){switch(e.kind){case`message`:return eh(e.message);case`divider`:case`notice`:return e.timestamp;case`stream`:case`question`:return e.startedAt;case`reading-indicator`:return null}return null}function nh(e,t){let n=e.reduce((e,t)=>{let n=th(t);return n==null?e:e==null||n>e?n:e},null);return n!=null&&t<=n?n+1:t}function rh(e,t){let n=t?.afterKey?e.findIndex(e=>e.key===t.afterKey):-1,r=t?.beforeKey?e.findIndex(e=>e.key===t.beforeKey):-1;return{minimum:n+1,maximum:r>=0?r:e.length}}function ih(e,t){let n=new Map,r=new Map;for(let{item:e,bounds:i,predecessorKey:a}of t){let t=th(e);t!=null&&n.set(e.key,t);let o=r.get(e.key)??{};i&&(o.bounds=i),a&&(o.predecessorKey=a),r.set(e.key,o)}let i=t.map(({item:e},t)=>{let i=th(e),a=r.get(e.key)?.predecessorKey,o=a?n.get(a):null;return{item:e,index:t,predecessorKey:a,effectiveTimestamp:i!=null&&o!=null?Math.max(i,o):i}}).toSorted((e,t)=>e.effectiveTimestamp==null&&t.effectiveTimestamp==null?e.index-t.index:e.effectiveTimestamp==null?1:t.effectiveTimestamp==null?-1:e.effectiveTimestamp===t.effectiveTimestamp?e.predecessorKey===t.item.key?1:t.predecessorKey===e.item.key?-1:e.index-t.index:e.effectiveTimestamp-t.effectiveTimestamp);for(let{item:t,effectiveTimestamp:n}of i){let{minimum:i,maximum:a}=rh(e,r.get(t.key)?.bounds);if(n==null){e.splice(a,0,t);continue}let o=e.findIndex((e,t)=>{if(t<i||t>=a)return!1;let r=th(e);return r==null||r>n});e.splice(o===-1?a:o,0,t)}}var ah,oh;function sh(){return(sh=e((()=>{wi(),fl(),pi(),Pi(),_n(),ds(),Oo(),Es(),Cf(),_m(),Dm(),jm(),ah=new WeakMap,oh=new WeakMap})))()}function ch(e,t,n,r){return t&&e&&typeof e==`object`&&(vh.set(e,{runId:t,...n?{afterBoundaryRunId:n}:{},...r?{disposition:r}:{}}),yh+=1),e}function lh(){return yh}function uh(e,t){return dh(e)===t}function dh(e){return e&&typeof e==`object`?vh.get(e)?.runId??null:null}function fh(e){return e&&typeof e==`object`?vh.get(e)?.afterBoundaryRunId??null:null}function ph(e){return e&&typeof e==`object`?vh.get(e)?.disposition??null:null}function mh(e){let t=K(e.payload),n=U(t?.message,{messageId:t?.messageId}),r=n?.role===`assistant`&&!n.isImported?n.id:null;e.runIdBeforeApply&&e.matchesChat&&e.event.hasActiveRun!==!0&&r&&bh.set(e.host,{historyApplied:!1,messageId:r,runId:e.event.clientRunId??e.event.runId??e.runIdBeforeApply,sessionKey:e.event.key})}function hh(e){let t=bh.get(e.host),n=!!(t&&at(t.sessionKey,e.sessionKey)&&e.visibleMessages.some(e=>{let n=U(e);return n?.role===`assistant`&&!n.isImported&&n.id===t.messageId}));return!t||!n?e.previousMessages:(bh.set(e.host,{...t,historyApplied:!0}),e.previousMessages.filter(e=>!uh(e,t.runId)))}function gh(e,t){let n=bh.get(e);return n?.runId===t&&n.historyApplied}function _h(e){let t=K(e);if(!t||typeof t.role==`string`&&iu(t.role)!==`assistant`||!(`content`in t)&&typeof t.text!=`string`)return null;let n=typeof t.role==`string`?t:{...t,role:`assistant`};return!Object.hasOwn(n,`content`)&&typeof n.text==`string`?{...n,content:[{type:`text`,text:n.text}]}:n}var vh,yh,bh;function xh(){return(xh=e((()=>{wi(),O(),vh=new WeakMap,yh=0,bh=new WeakMap})))()}function Sh(e,t){return JSON.stringify([e,t])}function Ch(e,t,n,r){if(!n)return;let i=r?Sh(r,n):n;t.has(i)||(t.add(i),e.push({id:n,...r?{runId:r}:{}}))}function wh(e){return Cn(e.type)||yn(e.type)}function Th(e){let t=K(e);if(!t)return[];let n=[],r=new Set,i=Array.isArray(t.content)?t.content.filter(e=>!!e&&typeof e==`object`):[],a=vn({...t,id:void 0}),o=U(t)?.runId??W(t.runId),s=t.role;(typeof s==`string`&&Ra(s).toLowerCase()===`tool`||kh.some(e=>!!W(t[e]))||i.some(wh))&&Ch(n,r,a,o);for(let e of i)wh(e)&&Ch(n,r,vn(e)??a,W(e.runId)??o);return n}function Eh(e){return(e.toolStreamOrder??[]).map(t=>{let n=e.toolStreamById?.get(t),r=W(n?.toolCallId)??t,i=W(n?.runId);return i?{identity:t,id:r,runId:i}:{identity:t,id:r}})}function Dh(e,t){let n=t.filter(t=>t.id===e.id&&(!e.runId||!t.runId||t.runId===e.runId));return n.length===1?n[0]?.identity:void 0}function Oh(e,t){let n=Eh(t),r=new Set;if(n.length===0)return r;let i=e.findLastIndex(e=>{let t=K(e)?.role;return typeof t==`string`&&Ra(t).toLowerCase()===`user`});for(let t of e.slice(i+1))for(let e of Th(t)){let t=Dh(e,n);t&&r.add(t)}return r}var kh;function Ah(){return(Ah=e((()=>{wi(),_n(),Oo(),kh=[`toolName`,`tool_name`]})))()}function jh(e){let t=U(e);if(t?.runId)return t.runId;let n=K(e);return dh(e)??W(n?.runId)??W(K(n?.openclawStreamFallback)?.runId)}function Mh(e){return Ci(e)!==void 0}function Nh(e){let t=W(e);return t?{runId:t}:void 0}function Ph(e){let t=W(e);return t?{boundaryId:`send:${t}`}:void 0}function Fh(){let e=new Map,t=new Map;return{add(n,r,i){r&&(n&&e.set(Sh(n,r),i),t.set(r,t.has(r)?null:i))},get(n,r){return r?(n?e.get(Sh(n,r)):void 0)??t.get(r)??void 0:void 0}}}function Ih(e){let t=e.findLast(e=>e.kind===`message`&&Tm(e));return t?{afterKey:t.key}:null}function Lh(e){let t;return n=>{if(!t){t=new Map;let n;for(let r=e.length-1;r>=0;r--){let i=e[r];if(!Tm(i))continue;let a=i.kind===`message`?Km(i.message):null;a!==null&&t.set(a,{afterKey:i.key,...n?{beforeKey:n}:{}}),n=i.key}}return t.get(n)??null}}function Rh(e,t,n,r){if(typeof t!=`string`||!t.trim())return n==null?null:r;let i=e(t);return t===n?i?{afterKey:i.afterKey}:r:i||n==null?i:r?.afterKey?{beforeKey:r.afterKey}:null}function zh(e,t){if(t.length===0)return;let n=new Map,r={};for(let t of e)if(t.kind===`divider`&&n.clear(),Tm(t)||t.kind===`divider`)r.beforeKey=t.key,r={afterKey:t.key};else if(t.kind===`message`)for(let e of Th(t.message)){if(!e.runId)continue;let t=Sh(e.runId,e.id);n.set(t,n.has(t)&&n.get(t)!==r?null:r)}for(let e of t){let t=Th(e.item.message).map(e=>e.runId?n.get(Sh(e.runId,e.id)):void 0),[r]=t;r&&t.every(e=>e===r)&&(e.bounds=r)}}function Bh(){return(Bh=e((()=>{wi(),sh(),Dm(),xh(),Ah()})))()}function Vh(e){return e===void 0?void 0:Hh[e]}var Hh;function Uh(){return(Uh=e((()=>{Hh={main_session_restart_recovery:{icon:`cpu`,labelKey:`chat.systemNotice.restartRecovery.label`,summaryKey:`chat.systemNotice.restartRecovery.summary`,pendingSummaryKeys:{interrupted:`chat.systemNotice.restartRecovery.interrupted`,cancelled:`chat.systemNotice.restartRecovery.cancelled`}},"restart-sentinel":{icon:`cpu`,labelKey:`chat.systemNotice.gatewayRestarted.label`},cli_harness_context:{icon:`cpu`,labelKey:`chat.systemNotice.cliHarnessContext.label`,collapsedBody:!0,startsTurn:!1},claude_cli_task_notification:{icon:`cpu`,labelKey:`chat.systemNotice.claudeCliTaskNotification.label`,collapsedBody:!0,startsTurn:!1}}})))()}function Wh(e,t,n){let r=n?[{kind:`notice`,key:n.key,timestamp:n.timestamp,text:M(`chat.pendingInputs.${n.status}`)}]:[],i=K(K(e.message)?.provenance);if(i?.kind!==`internal_system`)return[e,...r];let a=t??vm(e.message);if(!a||Ra(a.role)!==`user`)return[e,...r];let o=Vh(typeof i.sourceTool==`string`?i.sourceTool:void 0),s=n&&o?.pendingSummaryKeys?.[n.status],c=s??o?.summaryKey,l=c?M(c):Xs(e.message)?.replace(/^\[System\] /u,``);return l?.trim()?[{kind:`notice`,key:e.key,icon:o?.icon??`cpu`,label:M(o?o.labelKey:`common.system`),...o?.startsTurn===!1?{}:{startsTurn:!0},...o?.collapsedBody?{collapsedBody:!0}:{},text:l,timestamp:a.timestamp,...Ph(Km(e.message))},...s?[]:r]:r}function Gh(){return(Gh=e((()=>{b(),ds(),Oo(),sh(),Bh(),Dm(),Uh()})))()}function Kh(e){let t=K(e);return t?.role===`custom`&&t.customType===ig}function qh(e,t){let n=K(e),r=K(n?.__openclaw);return!(r?.kind!==`compaction`&&!Kh(e)||!t.runId||r?.runId!==t.runId||t.itemId&&r.itemId!==t.itemId)}function Jh(e){let t=e.command??M(`chat.systemNotice.guardian.requestedAction`),n={kind:`notice`,key:e.key,icon:`shieldCheck`,timestamp:e.timestamp};return e.source===`system`?{...n,icon:`cpu`,label:M(`common.system`),text:e.message??``}:e.kind===`approved`?{...n,label:M(`chat.systemNotice.guardian.approvedSummary`,{action:t}),text:``}:e.kind===`warning`?{...n,label:M(`chat.systemNotice.guardian.warningLabel`),text:e.message??M(`chat.systemNotice.guardian.warningFallback`),tone:`danger`}:e.kind===`reviewing`||e.kind===`strict-review-required`?{...n,label:M(`chat.systemNotice.guardian.strictReviewRequiredLabel`),text:M(`chat.systemNotice.guardian.strictReviewRequiredSummary`),tone:`danger`}:{...n,label:M(`chat.systemNotice.guardian.deniedLabel`),text:M(`chat.systemNotice.guardian.deniedSummary`,{action:t,risk:e.riskLevel??M(`chat.systemNotice.guardian.unknownRisk`),rationale:e.rationale??M(`chat.systemNotice.guardian.noRationale`)}),tone:`danger`}}function Yh(e,t,n,r=`complete`){let i=e.tokensBefore,a=e.tokensAfter,o=typeof i==`number`&&Number.isFinite(i)&&typeof a==`number`&&Number.isFinite(a)&&i>a?Math.floor(i-a):null;return{kind:`divider`,key:typeof e.id==`string`?`divider:compaction:${e.id}`:`divider:compaction:${t}:${n}`,label:M(r===`active`?`chat.composer.compactingContext`:`chat.composer.contextCompacted`),compaction:r,...o===null?{}:{metric:M(`chat.compaction.savedTokens`,{count:Tt(o)})},timestamp:t}}function Xh(e,t,n){return{kind:`divider`,key:typeof e.id==`string`?`divider:reset:${e.id}`:`divider:reset:${t}:${n}`,label:M(`chat.sessionReset.label`),icon:`rotateCcw`,description:M(`chat.sessionReset.description`),timestamp:t}}function Zh(e){return(e.sendAttempts??0)>0||e.sendState!==`waiting-reconnect`&&typeof e.sendSubmittedAtMs==`number`}function Qh(e){return Zh(e)&&!e.localCommandName&&(e.sendState===`failed`||e.sendState===`unconfirmed`||e.sendState===`held`||e.sendState===`waiting-reconnect`||e.sendState===`waiting-idle`&&!!e.sendError)}function $h(e){return Zh(e)&&(e.sendState===`waiting-model`||e.sendState===`submitting`||e.sendState===`sending`||Qh(e))}function eg(e,t,n,r,i,a){let o=r.filter($h),s=o.filter(e=>!Qh(e)),c=s.find(e=>e.sendState===`submitting`||e.sendState===`sending`)??s[0],l=c?.sendRunId??c?.pendingRunId,u=i.map(e=>e.runId).findLast(e=>typeof e==`string`&&e.length>0),d=a.map(K),f=d.map(e=>e?.runId).findLast(e=>typeof e==`string`&&e.length>0),p=c?.sendState===`submitting`||c?.sendState===`sending`?l:void 0,m=t??p??u??f??l,h=ag.get(e),g=h&&(!m||!h.runId||h.runId===m)?h:null,_=[g?.startedAt,n,...o.filter(e=>m?(e.sendRunId??e.pendingRunId)===m:e===c).map(e=>e.createdAt),...i.filter(e=>!m||e.runId===m).map(e=>e.ts),...d.filter(e=>!m||e?.runId===m).map(e=>e?.__openclawToolStreamReceivedAt)].filter(e=>typeof e==`number`&&Number.isFinite(e)),v=_.length>0?Math.min(..._):Date.now(),y=g?.key??`stream-working:${JSON.stringify([e,m??`anonymous-${++og}`])}`;return ag.set(e,{key:y,runId:m??g?.runId??null,startedAt:v}),{key:y,runId:m??g?.runId??null,startedAt:v}}function tg(e){ag.delete(e)}function ng(){ag.clear(),og=0}function rg(e,t){let{sessionKey:n,agentId:r=null,gatewayClient:i=null,indicator:a,row:o,usageByRun:s}=t,c=e.turnRecapWatch;if((c?.sessionKey!==n||c.agentId!==r||c.gatewayClient!==i)&&(c=null),a){let t=a.runId;if(!t)return e.turnRecapWatch=null,null;c?.runId!==t&&(c={sessionKey:n,agentId:r,gatewayClient:i,runId:t,recap:null})}if(e.turnRecapWatch=c,!c)return null;let l=s?.get(c.runId)?.outputTokens??c.recap?.outputTokens??null;if(o?.lastRunId===c.runId){let e=o.runtimeMs;o.status===`done`&&typeof e==`number`&&Number.isFinite(e)?c.recap={runtimeMs:e,outputTokens:l}:o.status&&o.status!==`done`&&(c.recap=null)}return c.recap&&c.recap.outputTokens!==l&&(c.recap={...c.recap,outputTokens:l}),a||!c.recap?null:{...c.recap,runId:c.runId}}var ig,ag,og;function sg(){return(sg=e((()=>{b(),qe(),ig=`openclaw.context-compaction`,ag=new Map,og=0})))()}function cg(e){e.compactionClearTimer!=null&&(clearTimeout(e.compactionClearTimer),e.compactionClearTimer=null),e.compactionStatus=null}function lg(e,t){return e?.kind===`initial`&&t?.role===`user`&&!t.isImported&&(e.consumedByEventId&&t.id===e.consumedByEventId||(t.id!==null||t.sequence!==null)&&(t.idempotencyKey===e.pendingRunId||t.idempotencyKey===`${e.pendingRunId}:user`))}function ug(e,t){let n=e.chatSubmissions;if(!n)return;let r=t.sessionKey??e.sessionKey,i=e.client,a=n.readInitial(r,i??null,t.sessionId),o=As(e,{sessionKey:r,agentId:t.agentId??k(e)}),s=r=>{let a=n.readDelivered(o+r,i??e);a?.kind===`delivered`&&(!a.sessionId||!t.sessionId||a.sessionId===t.sessionId)&&(a.pending=!1)};return{initial:a,accept:e=>{e.forEach(s),a&&e.has(a.pendingRunId)&&qn(a)},receive:(r,c,l=!1)=>{let u=c?.idempotencyKey?.replace(/:user$/u,``);if(a&&lg(a,c))return u&&s(u),qn(a),r;if(c?.role!==`user`||!u)return r;let d=l||c.id!==null||c.sequence!==null;d&&s(u);let f=n.readDelivered(o+u,i??e);if(d||c.isImported||f?.kind!==`delivered`||f.pending||f.sessionId&&t.sessionId&&f.sessionId!==t.sessionId){if(!a||c.isImported||u!==a.pendingRunId)return r;if(d)return qn(a),r}}}}function dg(e,t={}){let n=Object.hasOwn(t,`sessionId`)?t.sessionId:e.currentSessionId;return{sessionKey:E(e,t.sessionKey??e.sessionKey).sessionKey,...t.agentId?{agentId:t.agentId}:{},...n?{sessionId:n}:{},...t.lifecycleRevision===void 0?{}:{lifecycleRevision:t.lifecycleRevision},...Object.hasOwn(t,`activeLeafEntryId`)||Object.hasOwn(e,`chatDisplayedLeafEntryId`)?{activeLeafEntryId:Object.hasOwn(t,`activeLeafEntryId`)?t.activeLeafEntryId??null:e.chatDisplayedLeafEntryId??null}:{}}}function fg(e,t){return kg.some(n=>Object.hasOwn(t,n)&&e[n]!==void 0&&e[n]!==t[n])}function pg(e,t=dg(e)){let n=Og.get(e)?.projection;if(n!==void 0&&fg(n.scope,t))return Ti(t);if(!n){let n=Ti(t,e.chatMessages);return yg(e,n),n}let r=kg.some(e=>Object.hasOwn(t,e)&&n.scope[e]===void 0&&t[e]!==void 0)?{...n,scope:{...n.scope,...t}}:n;return r!==n&&yg(e,r),r}function mg(e){return Og.get(e)?.runId}function hg(e){let t=Og.get(e);return t?.runId?t.projection?.scope.sessionKey:void 0}function gg(e,t){let n=Og.get(e);Og.set(e,{...n,runId:t,modelObservation:n?.modelObservation&&n.modelObservation.runId===t?n.modelObservation:void 0})}function _g(e,t,n){Og.set(e,{...Og.get(e),modelObservation:t&&n?{runId:t,model:n.activeModel,provider:n.activeModelProvider}:void 0})}function vg(e,t){let n=Og.get(e)?.modelObservation;return n?.model===t?.activeModel&&n?.provider===t?.activeModelProvider?n?.runId:void 0}function yg(e,t){let n=Og.get(e),r=n?.runId,i=n?.projection?.scope,a=i&&fg(i,t.scope);if(a){let n=e.compactionStatus,r=[`sessionKey`,`sessionId`,`agentId`].some(e=>Object.hasOwn(t.scope,e)&&i[e]!==void 0&&i[e]!==t.scope[e]);r&&(e.providerPolicyNotice=null),(r||!n||!t.messages.some(e=>qh(e,n)))&&cg(e)}let o=r&&Object.hasOwn(t.runs,r)&&!a?r:void 0;Og.set(e,{projection:t,modelObservation:a||n?.modelObservation?.runId===r&&!o?void 0:n?.modelObservation,runId:o}),n?.projection?.messages!==t.messages&&(e.chatMessages.length!==t.messages.length||e.chatMessages.some((e,n)=>e!==t.messages[n]))&&(e.chatMessages=[...t.messages])}function bg(e,t,n={}){let r=n.scope??dg(e),i=pg(e,r),a=n.event?ji(i,{...n.event,scope:r}):i,o=n.event?.type===`messagePersisted`?n.event.message:null,s=new Set(a.messages),c=new Set(i.messages.filter(e=>!s.has(e))),l=o===null||s.has(o),u=[],d=!1;for(let e of t){if(c.has(e)){if(o===null)continue;e=o}if(e===o){if(!l||d)continue;d=!0}u.push(e)}let f=new Map;for(let e of a.entries.toReversed()){let t=f.get(e.message);t?t.push(e):f.set(e.message,[e])}let p=Ti(r,u).entries.map(e=>f.get(e.message)?.pop()??e),m={...a,scope:{...a.scope,...r},entries:p,messages:u};return yg(e,m),m}function xg(e,t,n){let r=Ag.get(e);if(!r){r={userIds:new Set,sendKeys:new Set};for(let t of e){let e=U(t);e?.role===`user`&&(e.id&&r.userIds.add(e.id),e.idempotencyKey&&r.sendKeys.add(e.idempotencyKey))}Ag.set(e,r)}let{userIds:i,sendKeys:a}=r,o=new Set(n.map(e=>e.runId));return{queue:t.filter(e=>!e.sendRunId||!o.has(e.sendRunId)&&!a.has(e.sendRunId)&&!a.has(`${e.sendRunId}:user`)),pendingInputs:n.filter(e=>!i.has(e.id)&&!e.queued&&K(e.message)?.display!==!1),queuedInputs:n.filter(e=>!i.has(e.id)&&e.queued)}}function Sg(e,t,n=[]){let r=new Set([...t?.items??[],...n].map(e=>e.runId).filter(e=>typeof e==`string`));return Cg(e,r),{acceptedRunIds:r,page:t??{items:[],total:0}}}function Cg(e,t){let n=dg(e,{agentId:k(e)});if(ug(e,n)?.accept(t),t.size){let r=pg(e,n),i=wg(r,t);i!==r&&yg(e,i)}}function wg(e,t){let n=e.entries.filter(e=>!(e.pending&&e.identity?.role===`user`&&e.identity.id===null&&e.identity.sequence===null&&t.has(e.pendingRunId??``)));return n.length===e.entries.length?e:{...e,entries:n,messages:n.map(e=>e.message)}}function Tg(e,t){return t&&(t.id!==null||t.sequence!==null)&&(e.kind===`initial`?qn(e):e.pending=!1),e.pending&&!t}function Eg(e,t,n=e.chatSubmissions?.readInitial(e.sessionKey,e.client??null,e.currentSessionId)){if(n&&(t?.some(e=>e.runId===n.pendingRunId)||n.kind===`initial`&&e.chatMessages.some(e=>lg(n,U(e))))&&(n.kind===`initial`?qn(n):n.pending=!1),!n?.pending||n.kind===`delivered`&&(!e.chatSubmissions||!Tg(n,da(e.chatMessages,n.pendingRunId,!0))))return!1;let r=dg(e,{sessionKey:n.sessionKey,...n.kind===`delivered`?{agentId:n.agentId}:{}}),i=e.chatMessages;return Dg(e,{type:`sendPending`,runId:n.pendingRunId,message:n.message},{scope:r}),e.chatMessages!==i}function Dg(e,t,n={}){let r=n.scope??dg(e),i=pg(e,r),a=ug(e,r),o=a?.initial,s=o?.pending?o.pendingRunId:void 0,c=o?.pending?o.message:null,l=(e,t)=>a?a.receive(e,U(e,t),!!t):e,u=t.type===`messagePersisted`&&a?{...t,message:l(t.message,t.envelope??t)}:t.type===`snapshotLoaded`&&a?{...t,messages:t.messages.map(e=>l(e)).filter(e=>e!==void 0)}:t,d=s&&o&&!o.pending?wg(i,new Set([s])):i;t.type===`snapshotLoaded`&&o?.pending&&n.runActive!==!1&&(d=ji(d,{type:`sendPending`,runId:o.pendingRunId,message:o.message,scope:r})),d=ji(d,{...u,scope:r}),t.type===`sessionReset`&&d!==i&&(delete e.chatHistoryCursor,cg(e),e.providerPolicyNotice=null);let f=s?d.entries.findIndex(e=>e.pending&&e.pendingRunId===s):-1,p=d.entries[f];if(o&&c&&p&&f>0){let e=d.entries.findIndex((e,t)=>{let n=K(e.message);return t<f&&n?.role!==`user`&&typeof n?.timestamp==`number`&&n.timestamp>=c.timestamp});if(e>=0){let t=d.entries.toSpliced(f,1);t.splice(e,0,p),d={...d,entries:t,messages:t.map(e=>e.message)}}}return yg(e,d),d}var Og,kg,Ag;function jg(){return(jg=e((()=>{vi(),wi(),On(),sa(),Rc(),O(),sg(),Og=new WeakMap,kg=[`sessionKey`,`sessionId`,`agentId`,`lifecycleRevision`,`activeLeafEntryId`],Ag=new WeakMap})))()}function Mg(e,t,n,r=[]){if(t.queuedCount===0)return[];let i=t.nextBefore===void 0&&t.items.length===t.total,a=new Map(n?.map(e=>[e.runId,e])),o=new Set(n===void 0?[]:r),s=new Map((i?[]:e).map(e=>[e.id,e]));for(let e of t.items)e.queued?s.set(e.id,e):s.delete(e.id);return[...s.values()].filter(e=>{let t=e.runId?a.get(e.runId):void 0;return t?t.state===`pending`&&t.queued:!e.runId||!o.has(e.runId)})}function Ng(e){return e.toSorted((e,t)=>e.acceptedAt-t.acceptedAt).flatMap(e=>{if(!e.queued||e.state!==`queued`||!e.runId)return[];let t=_a(e.message),n=t.content.flatMap(e=>e.type===`attachment`||e.type===`attachment_error`?[e.attachment.label]:e.type===`image`?e.sources.flatMap(e=>e.fileName?[e.fileName]:[]):[]),r=t.content.filter(e=>e.type===`image`).length;return[{id:`pending-input:${e.id}`,text:ss(e.message)||n.join(`, `)||(r?M(`chat.queue.imageCount`,{count:String(r)}):``),createdAt:e.acceptedAt,pendingRunId:e.runId,serverQueued:!0,sender:t.sender??void 0}]})}function Pg(e,t,n=[],r=[],i=!1,a){let o=[];for(let s of e){if(t?.trim()&&!Nm(s.message,t,a))continue;let e;s.state===`queued`?s.runId&&(i||r.includes(s.runId))&&(e=i?`waitingForWorkerSetup`:`waitingForWorkspaceSync`):e=s.state===`interrupted`&&s.runId&&n.some(e=>e.sendRunId===s.runId&&e.sendState!==`failed`&&e.sendState!==`held`)?`resuming`:s.state===`cancelled`?`cancelled`:`interrupted`,o.push(...Xm([s.message],()=>s.runId?`send:${s.runId}`:`pending-input:${s.id}`).flatMap(t=>Wh({...t,startsTurn:!0},void 0,e?{status:e,key:`pending-input:${s.id}:state`,timestamp:s.acceptedAt}:void 0)))}return o}function Fg(e){let t=Gg.get(e);return t?.sessionKey===e.sessionKey&&t.sessionId===(e.currentSessionId??null)&&t.agentId===k(e)?t:void 0}function Ig(e){Gg.delete(e)}function Lg(e){let t=pg(e,dg(e,{agentId:k(e)})),n=[...Fg(e)?.queuedInputs.map(e=>e.runId)??[],...t.entries.filter(e=>e.pending&&e.identity?.role===`user`).map(e=>e.pendingRunId),...e.chatQueue.filter(e=>(e.sendAttempts??0)>0||e.sendState===`unconfirmed`).map(e=>e.sendRunId)],r=new Set(n.filter(e=>!!(e&&e.length<=256)));return[...new Set([...Fg(e)?.receiptRunIds.filter(e=>r.has(e))??[],...r])]}function Rg(e){return Lg(e).slice(0,50).toSorted()}function zg(e,t,n=[]){let r=new Set(n);t.receiptRunIds=Lg(e).toSorted((e,t)=>Number(r.has(e))-Number(r.has(t)))}function Bg(e,t,n){let{page:r,acceptedRunIds:i}=Sg(e,t,n),a=new Set([...(n??[]).filter(e=>e.state===`consumed`||e.state===`pending`&&e.cancelled).map(e=>e.runId),...r.items.filter(e=>e.state===`cancelled`).map(e=>e.runId)]);for(let t of e.chatQueue){let n=da(e.chatMessages,t.sendRunId,!0);t.sendRunId&&(a.has(t.sendRunId)||n&&(n.id!==null||n.sequence!==null))&&(!t.sessionId||t.sessionId===e.currentSessionId)?lm(e,t.id):t.sendRunId&&i.has(t.sendRunId)&&(!t.sessionId||t.sendState===`unconfirmed`)&&om(e,t,e.currentSessionId??void 0)}return r}function Vg(e,t,n){return Fg(e)===t&&t.request===n&&e.client===n.client&&e.connected&&e.connectionEpoch===n.connectionEpoch}function Hg(e,t,n={}){let r=Bg(e,t,n.receipts),i=Fg(e),a=Mg(i?.queuedInputs??[],r,n.receipts,n.queriedRunIds);i?(i.queuedInputs=a,i.queuedCount=r.queuedCount??0,i.queueBefore=r.nextBefore,i.revision+=1,i.request&&!Vg(e,i,i.request)&&(i.request=void 0),i.before===void 0&&(i.page=r,i.error=void 0),i.before!==void 0&&!i.request&&Ug(e,i.before,`refresh`)):(i={sessionKey:e.sessionKey,sessionId:e.currentSessionId??null,agentId:k(e),page:r,queuedInputs:a,receiptRunIds:[],queuedCount:r.queuedCount??0,queueBefore:r.nextBefore,revision:0,get loading(){return this.request?.kind===`navigation`}},Gg.set(e,i)),zg(e,i,n.queriedRunIds),!i.request&&i.queuedInputs.length<i.queuedCount&&i.queueBefore!==void 0&&Ug(e,i.queueBefore,`discovery`),e.requestUpdate?.()}async function Ug(e,t,n){let r=Fg(e),i=e.client;if(!r||!i||!e.connected||r.request&&Vg(e,r,r.request)&&(n!==`navigation`||r.request.kind===`navigation`))return;let a={before:t,kind:n,client:i,connectionEpoch:e.connectionEpoch};r.request=a,r.error=void 0,n===`navigation`&&e.requestUpdate?.();let o=()=>Vg(e,r,a);try{for(;o();){let t=r.revision,n=Rg(e),s=await i.request(`chat.history`,{sessionKey:r.sessionKey,agentId:r.agentId,limit:20,...n.length?{inputRunIds:n}:{},...a.before===void 0?{}:{pendingBefore:a.before}});if(!o()||s.sessionId!==r.sessionId)return;if(r.revision!==t)continue;let c=Bg(e,s.pendingInputs,s.inputReceipts);if(r.queuedInputs=Mg(r.queuedInputs,c,s.inputReceipts,n),r.queuedCount=c.queuedCount??r.queuedCount,zg(e,r,n),a.kind!==`discovery`&&(r.page=c,r.before=a.before),(a.kind===`discovery`||a.before===void 0)&&(r.queueBefore=c.nextBefore),r.queuedInputs.length<r.queuedCount&&r.queueBefore!==void 0){a.kind=`discovery`,a.before=r.queueBefore;continue}return}}catch(e){o()&&(r.error=j(e))}finally{r.request===a&&(r.request=void 0,Fg(e)===r&&e.requestUpdate?.())}}function Wg(e,t){return Ug(e,t,`navigation`)}var Gg;function Kg(){return(Kg=e((()=>{pi(),b(),sa(),ds(),Oo(),N(),O(),pm(),Gh(),sh(),jg(),Gg=new WeakMap})))()}function qg(e){if(typeof e!=`string`||!e.includes(`github.com`))return[];let t=[];for(let n of e.matchAll($g)){let e=n[0].replace(/[.,;:!?]+$/u,``);Fu(e)?.kind===`pull`&&t.push(e)}return t}function Jg(e){let t=JSON.stringify(E(e,e.sessionKey)),n=n_.get(e);return(!n||n.client!==e.client||n.connectionEpoch!==e.connectionEpoch||n.conversation!==t)&&(n={client:e.client,connectionEpoch:e.connectionEpoch,conversation:t,receipts:new Set},n_.set(e,n)),n}function Yg(e,t,n){let r=n!==null&&n.length<=t_;if(!(r&&t.receipts.has(n))&&e.refreshSessionPullRequests?.({refresh:!0,automatic:!0})===!0&&r&&(t.receipts.add(n),t.receipts.size>e_)){let e=t.receipts.values().next().value;e!==void 0&&t.receipts.delete(e)}}function Xg(e){n_.delete(e)}function Zg(e,t,n){let r=Jg(e),i=t??``,a=JSON.stringify([`stream`,i]);if(r.receipts.has(a))return;let o=(r.tail?.runId===i?r.tail.text:``)+n;r.tail={runId:i,text:o.slice(-256)},qg(o).length>0&&Yg(e,r,a)}function Qg(e,t,n){let r=xi(_h(n));Yg(e,Jg(e),t&&r?JSON.stringify([`final`,t,r]):null)}var $g,e_,t_,n_;function r_(){return(r_=e((()=>{Fi(),Nu(),O(),xh(),$g=/https:\/\/github\.com\/[^\s<>()\]}'"`]+/giu,e_=200,t_=4096,n_=new WeakMap})))()}function i_(e){let t=x_.get(e);return t||(t={historyVersion:0,branchVersion:0,subscriptionGeneration:0,pendingSubscriptionReleases:new Set,syncRetries:new Map,historyLoad:{phase:`idle`}},x_.set(e,t)),t}function a_(e,t,n){let r=i_(e);if(n)r.syncRetries.set(t,{client:e.client,sessions:e.sessions,connectionEpoch:e.connectionEpoch,sessionKey:e.sessionKey,agentId:k(e)});else if(!r.syncRetries.delete(t))return;e.historyRecoveryChanged?.()}function o_(e){return[...i_(e).syncRetries.values()].some(t=>e.connected&&t.client===e.client&&t.sessions===e.sessions&&t.connectionEpoch===e.connectionEpoch&&t.sessionKey===e.sessionKey&&t.agentId===k(e))}function s_(e){let t=i_(e),n=t.initialSnapshotHydration;delete t.initialSnapshotHydration,n?.cancel?.()}function c_(e){let t=i_(e).initialSnapshotHydration;t&&(e.connected?t.readyAt??=Date.now():t.readyAt!==void 0&&s_(e))}function l_(e){let t=i_(e),n=t.initialSnapshotHydration;if(!n)return;if(!n.startedBeforeReady||!at(e.sessionKey,n.sessionKey)){s_(e);return}if(n.wait)return n.wait;let r=n.readyAt??=Date.now(),i=Math.max(0,300-(Date.now()-r));if(i===0){s_(e);return}return n.wait=new Promise(e=>{let r=r=>{clearTimeout(a),t.initialSnapshotHydration===n&&delete t.initialSnapshotHydration,e(r)};n.complete=()=>r(!0),n.cancel=()=>r(!1);let a=setTimeout(()=>r(!0),i);n.promise.then(()=>r(!0),()=>r(!0))}),n.wait}function u_(e){return e.phase===`pending-connection`||e.phase===`in-flight`}function d_(e,t){let n=i_(e),r=u_(n.historyLoad);n.historyLoad=t,t.phase===`committed`&&(n.acceptedHistory=t),r!==u_(t)&&e.transcriptLoadingChanged?.()}function f_(e){let t=i_(e),n=t.historyLoad;if(n.phase===`idle`)return n;let r=D(e,e.sessionKey)?k(e):void 0;return n.sessionKey!==e.sessionKey||n.requestAgentId!==r?(t.historyLoad={phase:`idle`},e.chatLoading=!1):n.phase===`in-flight`&&(!e.connected||n.client!==e.client||n.sessions!==e.sessions||n.connectionEpoch!==e.connectionEpoch)&&(t.historyLoad={phase:`pending-connection`,sessionKey:n.sessionKey,requestAgentId:n.requestAgentId,startup:n.startup},e.chatLoading=!0,e.requestUpdate?.()),t.historyLoad}function p_(e){let t=i_(e).acceptedHistory;return t&&e.connected&&e.client===t.client&&e.sessions===t.sessions&&e.connectionEpoch===t.connectionEpoch&&e.sessionKey===t.sessionKey&&(!D(e,e.sessionKey)||k(e)===t.requestAgentId)&&t.sessionInfo?.sessionId&&e.currentSessionId===t.sessionInfo.sessionId?t.sessionInfo:void 0}function m_(e,t=e.sessionKey){let n=i_(e).acceptedHistory,r=e.chatSubmissions?.creation;return xl(t)&&n?.sessionId===null&&e.connected&&e.client===n.client&&e.sessions===n.sessions&&e.connectionEpoch===n.connectionEpoch&&e.sessionKey===t&&n.sessionKey===t&&!(r?.sessionKey===t&&!r.admitted)&&!e.hasPendingInitialTurn?.(t)}function h_(e){let t=i_(e),n=t.acceptedHistory;if(e.currentSessionId&&n&&e.client===n.client&&e.sessions===n.sessions&&(!e.connected||e.connectionEpoch===n.connectionEpoch)&&n.sessionKey===e.sessionKey&&(!D(e,e.sessionKey)||k(e)===n.requestAgentId)&&n.sessionInfo?.sessionId===e.currentSessionId)return!1;let r=t.historyLoad;return r.phase===`idle`?e.chatLoading&&(!e.currentSessionId||!!t.initialSnapshotHydration):r.phase!==`committed`&&r.startup}function g_(e,t,n,r,i){return{version:++i_(e).historyVersion,sessions:e.sessions,client:t,connectionEpoch:n,sessionKey:r,agentId:i}}function __(e,t){return i_(e).historyVersion===t.version&&e.client===t.client&&e.sessions===t.sessions&&e.connected&&e.connectionEpoch===t.connectionEpoch}function v_(e,t){return __(e,t)&&e.sessionKey===t.sessionKey&&(!D(e,t.sessionKey)||k(e)===t.agentId)}function y_(e,t){s_(e),Xg(e),Ig(e);let n=i_(e);n.historyVersion+=1,delete n.acceptedHistory,d_(e,{phase:`idle`}),e.chatLoading=!1,Dg(e,{type:`sessionReset`},{scope:dg(e,{agentId:t})})}function Z(e,t,n=!1){let r=t===null?null:j(t);e.lastError=r,e.chatError=r,n&&e.requestUpdate?.()}function b_(e,t,n){return C(e,e.sessionKey,t,n)}var x_;function S_(){return(S_=e((()=>{Nl(),N(),O(),Kg(),r_(),jg(),x_=new WeakMap})))()}function C_(e,t=e.sessionKey,n=k(e)){let r=kt(t),i=_(t),a=(e,t)=>!!r&&kt(e.key)===r&&(!i||(e.agentId??t)===n),o=e.sessionsResult?.sessions.find(t=>a(t,e.sessionsResultAgentId))??e.sessions?.state?.result?.sessions.find(t=>a(t,e.sessions?.state?.agentId));return o&&(e.sessions?.projectRows?.([o])[0]??o)}function w_(e,t=e.sessionKey,n=k(e)){let r=im(e,t,n).filter(e=>!e.pendingRunId&&e.sendState!==`held`&&e.sendState!==`executing-command`).map(e=>({id:e.id,update:e=>({...e,sendState:`held`,sendError:M(`chat.providerReview.queuedInputHeld`)})}));return r.length===0||Y(e).update(e,r)!==null}function T_(){return(T_=e((()=>{b(),cs(),O(),Zp(),pm(),Zs()})))()}function E_(e,t){if(!e.has(t))return;let n=e.get(t);return e.delete(t),e.set(t,n),n}function D_(e,t,n){e.delete(t),e.set(t,n),ll(e,20)}function O_(e,t,n){if(e.has(t))return E_(e,t);let r=n();return D_(e,t,r),r}function k_(){return(k_=e((()=>{})))()}function A_(e){let t=e.chatHistoryCursor;if(t?.snapshotKey===Pt(e,{sessionKey:e.sessionKey})&&t.sessionId===(e.currentSessionId??null))return t.cursor;delete e.chatHistoryCursor}function j_(e,t){e.chatHistoryCursor=t===void 0?void 0:{cursor:t,snapshotKey:Pt(e,{sessionKey:e.sessionKey}),sessionId:e.currentSessionId??null}}function M_(e,t){Q_.set(e,t)}function N_(e,t,n){e.delete(t),Q_.get(e)?.delete(t,n)}function P_(e,t){Dg(e,{type:`snapshotLoaded`,messages:t.messages},{scope:dg(e,{sessionId:t.sessionId,...Object.hasOwn(t,`displayedLeafEntryId`)?{activeLeafEntryId:t.displayedLeafEntryId}:{}})}),e.chatHistoryPagination=t.pagination,e.currentSessionId=t.sessionId,e.chatDisplayedLeafEntryId=t.displayedLeafEntryId,j_(e,t.deltaCursor)}function F_(e,t,n,r,i){let a=Pt(t,n),o=E_(e,a);if(!o)return;if(i){let t=Z_.get(e);if(t||(t=new WeakSet,Z_.set(e,t)),t.has(i))return;t.add(i)}let s=U_(r);if(s===null){N_(e,a,`cache-eviction`);return}let c=i?ji(Ti({},o.snapshot.messages),{type:`messagePersisted`,message:r,envelope:i}).messages.slice():[...o.snapshot.messages,r],l={...o.snapshot,messages:c};if(i){R_(e,t,n,l);return}let u=o.weight+s+ +(o.snapshot.messages.length>0);if(u>J_){R_(e,t,n,l);return}D_(e,a,{snapshot:l,weight:u}),q_(e),Q_.get(e)?.write(a,l)}function I_(e,t,n){return z_(e,t,n)?.messages??[]}function L_(e,t,n,r){N_(e,Pt(t,n),r)}function R_(e,t,n,r){let i=Pt(t,n),a=E_(e,i);if(a?.snapshot.messages===r.messages&&a.snapshot.deltaCursor===r.deltaCursor&&a.snapshot.sessionId===r.sessionId&&a.snapshot.displayedLeafEntryId===r.displayedLeafEntryId&&K_(a.snapshot.pagination,r.pagination))return;if(r.messages.length===0&&r.sessionId===null&&!r.pagination.hasMore&&(r.pagination.totalMessages??0)===0&&r.pagination.completeSnapshot!==!0){N_(e,i,`cache-eviction`);return}let o=B_(r);if(!o){N_(e,i,`cache-eviction`);return}D_(e,i,o),q_(e),Q_.get(e)?.write(i,o.snapshot)}function z_(e,t,n){return E_(e,Pt(t,n))?.snapshot??null}function B_(e){let t=V_(e.messages);if(!t)return null;let n=t.reduce((e,t)=>e+t,0),r=0;for(;;){let i=r===0?e.pagination:W_(e.pagination,e.messages,r);if(!i)return null;let a=H_(e,i,n,t.length-r);if(a!==null&&a<=J_)return r===0?{snapshot:e,weight:a}:{snapshot:{...e,messages:e.messages.slice(r),pagination:{...i}},weight:a};if(r>=e.messages.length)return null;let o=Ii(e.messages[r]);if(n-=t[r]??0,r+=1,o!==null)for(;r<e.messages.length&&Ii(e.messages[r])===o;)n-=t[r]??0,r+=1}}function V_(e){let t=[];for(let n of e){let e=U_(n);if(e===null)return null;t.push(e)}return t}function H_(e,t,n,r){let i=G_({...e,messages:[],pagination:t});return i===null?null:i+n+Math.max(0,r-1)}function U_(e){if(e&&typeof e==`object`){let t=X_.get(e);if(t!==void 0)return t}try{let t=JSON.stringify([e]),n=t?Math.max(0,t.length-2):0;return e&&typeof e==`object`&&X_.set(e,n),n}catch{return null}}function W_(e,t,n=0){let r=e.totalMessages,i=null;for(let e=n;e<t.length&&(i=Ii(t[e]),i===null);e+=1);if(typeof r!=`number`||i===null)return null;let a=r-i+1;return a<=0?null:i>1?{hasMore:!0,nextOffset:a,totalMessages:r}:{hasMore:!1,totalMessages:r}}function G_(e){try{return JSON.stringify(e)?.length??0}catch{return null}}function K_(e,t){return e.hasMore!==t.hasMore||e.totalMessages!==t.totalMessages?!1:e.hasMore&&t.hasMore?e.nextOffset===t.nextOffset:!e.hasMore&&!t.hasMore&&e.completeSnapshot===t.completeSnapshot}function q_(e){let t=0;for(let n of e.values())t+=n.weight;for(;t>Y_;){let n=e.keys().next().value;if(typeof n!=`string`)break;t-=e.get(n)?.weight??0,e.delete(n)}}var J_,Y_,X_,Z_,Q_;function $_(){return($_=e((()=>{vi(),wi(),jg(),k_(),dt(),J_=12582912,Y_=25165824,X_=new WeakMap,Z_=new WeakMap,Q_=new WeakMap})))()}function ev(e,t){return e===`source-changed`?M(`chat.queue.editSourceChanged`):e===`full`?M(`chat.queue.full`):t?M(`chat.queue.editStorageFailed`):$}function tv(e){let t=bo(e);return t?.command.key===`new`||t?.command.key===`reset`&&!/^soft(?:\s|$)/i.test(t.args)}function nv(e){return!e.intent&&!e.localCommandName&&!e.text.trimStart().startsWith(`/`)}function rv(e,t,n=!1,r){return m_(e,t)?M(`chat.incognitoExpiredTitle`):C_(e,t,r)?.sendDisabledReason||iv(e,t,n)}function iv(e,t,n=!1){return e.connected&&e.client&&!e.client.recoveryScopeReady?M(`chat.queue.connectionPending`):n||e.hasPendingInitialTurn?.(t)?M(`chat.queue.initialTurnPending`):null}function av(e,t){return e.status===`error`?`Chat failed before the run started; try again.`:t===`detached`?`The active run ended before the detached message was accepted.`:`The run ended before the message was accepted.`}function ov(e,t){if(t?.kind!==`delivered`||!t.pending)return;let{sessionKey:n,agentId:r,message:i}=t;if(A(e,n,r)){(!t.sessionId||!e.currentSessionId||t.sessionId===e.currentSessionId)&&Eg(e,Fg(e)?.page.items,t);return}if(e.chatMessagesBySession){let a={sessionKey:n,agentId:r},o=I_(e.chatMessagesBySession,e,a);Tg(t,da(o,t.pendingRunId,!0))&&F_(e.chatMessagesBySession,e,a,i)}}function sv(e,t,n,r){let i=e.client??e,a=e.chatSubmissions,o=As(e,n,t),s=dm(e,t,n)?.item;if(r?.inputConsumed&&t){let r=a.readDelivered(o,i);return r&&(r.pending=!1),A(e,n.sessionKey,n.agentId)&&(!s?.sessionId||s.sessionId===e.currentSessionId)&&Cg(e,new Set([t])),!s||um(e,t,n)?`retired`:`retained`}if(!s)return ov(e,a.readDelivered(o,i)),`retired`;let c=e.connectionEpoch,l=e.connected,u=Fp(e),d=()=>e.connected===l&&e.connectionEpoch===c&&u(),f=()=>dm(e,t,n)?.item,p=c=>{if(!d())return`stale`;let l=f();if(!l)return ov(e,a.readDelivered(o,i)),X(e,s.id)?`stale`:`retired`;if(!Go(l,s)||!s.sendRunId)return`stale`;ov(e,a.retain({kind:`delivered`,deliveryKey:o,owner:i,sessionKey:s.sessionKey??n.sessionKey,agentId:s.agentId,sessionId:s.sessionId,pendingRunId:s.sendRunId,message:c}));let u=f();return!d()||!u||!Go(u,s)?`stale`:!r?.retainUntilConsumed&&um(e,t,n)?`retired`:`retained`},m=X(e,s.id),h=m&&m.attachmentPayload?.key===s.attachmentPayload?.key&&m.attachments?.length===s.attachments?.length?m:s,g=e=>Am({...s,attachments:e,runId:s.sendRunId},`complete`),_=g(h.attachments)??g(s.attachments);return _&&(!s.attachmentPayload&&!s.attachmentStorageError||(s.attachments?.length??0)>0)?p(_):Lp(e,s,`handoff`).then(t=>{if(!d())return`stale`;if(t.status===`ready`){let e=g(t.update.attachments??s.attachments);if(e)return p(e)}let n=f();if(!n)return X(e,s.id)?`stale`:`retired`;if(!Go(n,s))return`stale`;let r=t.status===`failed`?t.reason:`missing`;return am(e,s.id,e=>Np({...e,sendState:e.sendState===`held`?`held`:`unconfirmed`},r)),`retained`})}function Q(e,t,n,r,i={}){let a=j(r);if(A(e,t,n)){e.lastError=i.inline?null:a,e.chatError=i.inline?null:a;return}let o=n?Ql(n):void 0,s=e.sessionsResult?.sessions.find(e=>at(e.key,t)&&(!_(t)||!o||e.agentId!==void 0&&Ql(e.agentId)===o));on({message:`${ke(t,s)}: ${a}`})}function cv(e,t){let n=(t.senderLabel??`User`).replace(/([\\`*_{}[\]()#+\-.!|>])/g,`\\$1`),r=t.text.trim();return r.includes(`
`)?`> **${n}:**\n${r.split(`
`).map(e=>`> ${e}`).join(`
`)}\n\n${e}`:`> **${n}:** ${r}\n\n${e}`}var lv,$;function uv(){return(uv=e((()=>{b(),nl(),sa(),Na(),Rc(),N(),rt(),un(),O(),Ft(),S_(),Kg(),T_(),pm(),jg(),Bp(),$_(),jm(),lv=`Delivery has not been confirmed. Check the conversation — retry only if your message didn't arrive.`,$=`Could not store this message for reconnect. Free browser storage or reconnect before sending.`})))()}function dv(e){return{key:e.key,agentId:e.agentId,...e.target.kind===`profile`?{profileId:e.target.profileId,...e.target.os?{os:e.target.os}:{},...e.target.machineClass?{machineClass:e.target.machineClass}:{}}:e.target.kind===`device`?{deviceId:e.target.deviceId}:{autoDevice:!0}}}function fv(e){return e instanceof Zn?e.retryable||e.gatewayCode===`UNAVAILABLE`:!0}async function pv(e,t){try{let n=await e.describe({key:t},{refresh:!0,client:e.client});if(n?.session===null)return{status:`missing`};let r=n?.session?.sessionId;return{status:`read`,placement:n?.session?.placement,...typeof r==`string`&&r.trim()?{sessionId:r}:{}}}catch(e){return f(e,null)?{status:`awaiting-gateway`}:fv(e)?{status:`unavailable`}:{status:`rejected`,error:j(e)}}}async function mv(e,t){try{await e.request(`sessions.reclaim`,{key:t.key,agentId:t.agentId});return}catch(e){return j(e)}}async function hv(e,t,n,r){if(!n())return{status:`interrupted`};let i=await mv(e,t);return i?{status:`cleanup-rejected`,error:i,...r===void 0?{}:{messageId:r}}:{status:`cancelled`}}async function gv(e,t,n){let{client:r}=e,i=t.initial?{status:`read`,placement:t.initial}:void 0,a=0,o=0,s=!1;for(let c=0;c<Cv;c+=1){let c=i??await pv(e,t.key);if(s=c.status===`read`&&c.placement!==void 0&&Ev.has(c.placement.state),i=void 0,c.status===`missing`)return{status:`missing`};if(c.status===`rejected`)return{status:`cleanup-rejected`,error:c.error};if(c.status===`unavailable`||c.status===`awaiting-gateway`){if(a=c.status===`awaiting-gateway`?0:a+1,!n())return hv(r,t,t.cleanupOnCancellation);if(a>=wv){let e=await mv(r,t),n=`session placement could not be verified`;return{status:`cleanup-rejected`,error:e?`${n}; cleanup failed: ${e}`:n}}await Sl(Sv);continue}if(a=0,c.status===`read`){let e=c.placement;if(e)o=0;else if(o+=1,o>=Tv)return{status:`cleanup-rejected`,error:`session placement could not be verified`};if(!n())return hv(r,t,t.cleanupOnCancellation);if(e?.state===`active`)return{status:`active`,placement:e};if(t.mode===`retry`&&(!e||e.state===`local`||e.state===`reclaimed`||e.state===`failed`))return{status:`dispatch`};if(e&&!Ev.has(e.state)){if(e.state===`failed`){let e=await mv(r,t);if(e)return{status:`cleanup-rejected`,error:e}}return{status:`rejected`,placement:e}}}await Sl(Sv)}return n()?{status:`cleanup-rejected`,error:M(s?`newSession.placementStillStarting`:`newSession.placementCompletionUnconfirmed`)}:hv(r,t,t.cleanupOnCancellation)}async function _v(e,t,n){return vv(e,t,n,!1)}async function vv(e,t,n,r){let{client:i}=e;if(!i)return`gateway unavailable during draft cleanup`;let a=await pv({...e,client:i},t);if(a.status!==`missing`){if(a.status===`rejected`)return a.error;if(a.status===`unavailable`||a.status===`awaiting-gateway`)return r?`session placement could not be verified`:`placement draft session could not be verified`;if(r&&a.placement){let e=await mv(i,{key:t,agentId:n});if(e)return e}return a.sessionId?yv(i,{key:t,agentId:n,sessionId:a.sessionId}):`placement draft session identity is unavailable`}}async function yv(e,t){try{await e.request(`sessions.patch`,{key:t.key,agentId:t.agentId,archived:!0,expectedSessionId:t.sessionId})}catch(e){return j(e)}try{if((await e.request(`sessions.delete`,{key:t.key,agentId:t.agentId,deleteTranscript:!0,expectedSessionId:t.sessionId,archivedOnly:!0})).deleted!==!0)throw Error(`placement draft session was not deleted`);return}catch(n){let r=j(n);try{await e.request(`sessions.patch`,{key:t.key,agentId:t.agentId,archived:!1,expectedSessionId:t.sessionId})}catch(e){return`${r}; restoring the placement draft failed: ${j(e)}`}return r}}async function bv(e,t,n){return vv(e,t,n,!0)}async function xv(e,t,n,r=()=>!0){let{client:i}=e,a=t.message,o=t.mentions?.map(e=>({...e})),s=t.cleanupOnCancellation??(()=>!0),c,l=``;if(t.mode!==`dispatch`&&(c=await gv(e,{key:t.key,agentId:t.agentId,mode:t.mode,cleanupOnCancellation:s},n)),c?.status===`dispatch`&&!n())return hv(i,t,s);if(!c||c.status===`dispatch`)try{let r=await i.request(`sessions.dispatch`,dv(t));c=await gv(e,{key:t.key,agentId:t.agentId,initial:r.placement,mode:`recover`,cleanupOnCancellation:s},n)}catch(r){if(l=j(r),!s()&&!n())return{status:`interrupted`};if(!fv(r))return{status:`dispatch-rejected`,error:l};c=await gv(e,{key:t.key,agentId:t.agentId,mode:`recover`,cleanupOnCancellation:s},n)}if(!s()&&!n())return{status:`interrupted`};if(c.status===`cancelled`||c.status===`interrupted`||c.status===`cleanup-rejected`)return c;if(c.status===`missing`)return{status:`session-missing`,error:`placement draft session no longer exists`};if(c.status===`rejected`){let e=typeof c.placement?.state==`string`?c.placement.state:``;return{status:`dispatch-rejected`,error:l||(e?`session placement became ${e}`:``)}}if(!n())return hv(i,t,s);let u=t.messageId??bl(),d=async(e,n)=>{let r=await mv(i,t);return{status:n,messageId:u,error:r?`${e}; cleanup failed: ${r}`:e}};if(!r())return d(`placement recovery storage is unavailable`,`send-not-started`);try{let e=await i.request(`sessions.send`,{key:t.key,agentId:t.agentId,message:a,...o?.length?{mentions:o}:{},attachments:t.attachments,idempotencyKey:u});if(!n())return await hv(i,t,s,u);let r=bf(e,u);return xf(r)?d(av(r,`chat`),`send-definitive-rejected`):{status:`started`,messageId:u}}catch(e){return n()?e instanceof cr||e instanceof Error&&!(e instanceof Zn)&&e.message===`gateway not connected`?d(j(e),`send-not-started`):fv(e)?{status:`send-rejected`,error:j(e),messageId:u}:d(j(e),`send-definitive-rejected`):hv(i,t,s,u)}}var Sv,Cv,wv,Tv,Ev;function Dv(){return(Dv=e((()=>{jl(),tr(),b(),ga(),N(),Me(),hl(),Sf(),uv(),ka(),Sv=250,Cv=1200,wv=4,Tv=20,Ev=new Set([`requested`,`provisioning`,`syncing`,`starting`,`draining`,`reconciling`])})))()}async function Ov(e){let t=e.persistRecovery!==!1,n=e.mode!==`dispatch`,r=e.recovery,i=`not-sent`,a=(e,n=i)=>({status:`paused`,recovery:pf(r,e,t,n).recovery}),o=()=>e.isLifecycleCurrent()&&e.ownsRecovery(),s=async(t=n)=>{let i=await(t?bv:_v)(e,r.sessionKey,r.agentId);return i||e.clearRecovery(`resolved`),i};if(r.phase===`sending`||r.phase===`paused`&&r.reason===`unconfirmed`){if(!o())return{status:`interrupted`};let t=await e.client.request(`chat.history`,{sessionKey:r.sessionKey,..._(r.sessionKey)?{agentId:r.agentId}:{},limit:1e3,...r.messageId.length<=256?{inputRunIds:[r.messageId]}:{}}).catch(e=>({error:j(e)}));if(!o())return{status:`interrupted`};if(`error`in t)return a(t.error,`unconfirmed`);let n={sendRunId:r.messageId},i=Ji(t,n);if(i||da(t.messages,r.messageId,!0)){e.clearRecovery(`resolved`);let n=t.inputReceipts?.find(e=>e.runId===r.messageId);return i?{status:`accepted`,...n?.state===`consumed`?{consumedByEventId:n.consumedByEventId}:{}}:{status:`started`,messageId:r.messageId}}return a(`No matching user message was found in the available history. Delivery remains unconfirmed.`,`unconfirmed`)}if(r.phase===`paused`)return{status:`paused`,recovery:r};let c=n&&t?cf(r.gatewayUrl,r.recoveryScope,r.sessionKey):null;if(!o()){if(!e.cleanupOnCancellation())return{status:`interrupted`};let i=t?n?c?.messageId===r.messageId:uf(r):!1,a=await s();return{status:`cancelled`,cleanupError:a,recoveryPersisted:a?i:!1}}let l=t?n?c?.messageId===r.messageId:uf(r):!0;if(!o()||!l)return!e.cleanupOnCancellation()&&!o()?{status:`interrupted`}:n&&!l?{status:`cancelled`,cleanupError:`placement recovery storage is unavailable`,recoveryPersisted:!1}:{status:`cancelled`,cleanupError:await s(),recoveryPersisted:l};let u=await xv(e,{key:r.sessionKey,agentId:r.agentId,target:r.target,message:r.message,mentions:r.mentions,attachments:r.attachments,messageId:r.messageId,mode:e.mode,cleanupOnCancellation:e.cleanupOnCancellation},o,()=>{if(!t)return i=`unconfirmed`,e.setRecoveryPhase(`sending`,!1),!0;let n=cf(r.gatewayUrl,r.recoveryScope,r.sessionKey);if(n&&n.messageId!==r.messageId)return!1;let a=lf({...r,phase:`sending`});return a&&(i=`unconfirmed`,e.setRecoveryPhase(`sending`,!0)),a});return!e.cleanupOnCancellation()&&!o()?{status:`interrupted`}:u.status===`interrupted`?u:u.status===`cancelled`?{status:`cancelled`,cleanupError:await s(!1),recoveryPersisted:t}:u.status===`cleanup-rejected`?a(u.error):u.status===`session-missing`?(e.clearRecovery(`resolved`),{status:`cancelled`,recoveryPersisted:!1}):u.status===`send-not-started`?a(u.error,`not-sent`):u.status===`send-definitive-rejected`?a(u.error,`rejected`):u.status===`dispatch-rejected`||u.status===`send-rejected`?a(u.error):e.isLifecycleCurrent()?e.ownsRecovery()?(e.clearRecovery(`resolved`),u):(e.clearRecovery(`resolved`),{status:`ownership-lost`}):(e.clearRecovery(`interrupted`),{status:`interrupted`})}function kv(){return(kv=e((()=>{pi(),sa(),N(),O(),_f(),Dv()})))()}function Av(){return(Av=e((()=>{})))()}function jv(e){return e===`none`||e===`person`?e:`project`}function Mv(e){let t=e?.identity;return t?t.type===`profile`||t.type===`agent`?`${t.type}:${t.id}`:JSON.stringify(t,Object.keys(t).toSorted()):``}function Nv(e){let t=e.replace(/[\\/]+$/,``);if(!t)return null;let n=t.match(/^(.*?)[\\/]\.claude[\\/]worktrees[\\/][^\\/]/);return n?n[1]||null:t}function Pv(e){let t=new Map,n=new Map,r=[];for(let i of e){let e=i.customGroup?.trim();if(e){let n=`custom:${e}`,r=t.get(e);r||(r={kind:`custom`,key:n,legacySectionKey:n,label:e,title:`Custom group: ${e}`,sessions:[]},t.set(e,r)),r.sessions.push(i);continue}let a=i.cwd?.trim(),o=a?Nv(a):null;if(!o){r.push(i);continue}let s=n.get(o);s||(s={kind:`project`,key:`project:${o}`,legacySectionKey:o,label:Bt(o),title:o,sessions:[]},n.set(o,s)),s.sessions.push(i)}return{groups:[...t.values(),...n.values()],ungrouped:r}}function Fv(e){let t=new Map,n=[];for(let r of e){let e=r.createdActor,i=Mv(e);if(!e?.identity||!i){n.push(r);continue}let a=`person:${i}`,o=t.get(a);if(!o){let n=e.identity.type===`profile`?Lo({id:e.identity.id,name:e.label?.trim()||e.identity.id}):e.label?.trim()||e.identity.id;o={kind:`person`,key:a,legacySectionKey:`person:${e.id}`,label:n,title:`Created by ${n}`,sessions:[]},t.set(a,o)}o.sessions.push(r)}return{groups:[...t.values()].toSorted((e,t)=>e.label.localeCompare(t.label)),ungrouped:n}}function Iv(){return(Iv=e((()=>{sl()})))()}function Lv(e,t){e.setData(Kv,t),e.setData(`text/plain`,t),e.effectAllowed=`copyMove`}function Rv(e){return e?.getData(`application/x-openclaw-session-key`).trim()||null}function zv(e){return Array.from(e?.types??[]).includes(Kv)}function Bv(e,t){e.setData(qv,t),e.effectAllowed=`move`}function Vv(e){return e?.getData(qv).trim()||null}function Hv(e){return Array.from(e?.types??[]).includes(qv)}function Uv(e,t){e.setData(Jv,t),e.effectAllowed=`move`}function Wv(e){return e?.getData(Jv).trim()||null}function Gv(e){return Array.from(e?.types??[]).includes(Jv)}var Kv,qv,Jv;function Yv(){return(Yv=e((()=>{Kv=`application/x-openclaw-session-key`,qv=`application/x-openclaw-session-group`,Jv=`application/x-openclaw-sidebar-route`})))()}function Xv(e,t){return typeof e.snoozedUntil==`number`&&Number.isFinite(e.snoozedUntil)&&e.snoozedUntil>t}function Zv(e){let t=36e5,n=[{id:`hour`,snoozedUntil:e.getTime()+t},{id:`three-hours`,snoozedUntil:e.getTime()+3*t}],r=new Date(e);r.setHours(18,0,0,0),r.getTime()-e.getTime()>t&&n.push({id:`evening`,snoozedUntil:r.getTime()});let i=new Date(e);i.setDate(i.getDate()+1),i.setHours(9,0,0,0),n.push({id:`tomorrow`,snoozedUntil:i.getTime()});let a=new Date(e);return a.setDate(a.getDate()+((8-a.getDay())%7||7)),a.setHours(9,0,0,0),a.getTime()!==i.getTime()&&n.push({id:`next-week`,snoozedUntil:a.getTime()}),n}function Qv(e,t){let n=null;for(let r of e)Xv(r,t)&&(n===null||r.snoozedUntil<n)&&(n=r.snoozedUntil);return n}function $v(e,t=new Date){let n=new Date(e),r=new Date(t);if(r.setHours(0,0,0,0),n.toDateString()===r.toDateString())return He(e);if(r.setDate(r.getDate()+1),n.toDateString()===r.toDateString())return M(`sessionsView.snoozeTomorrowTime`,{time:He(e)});let i=new Date(t);return i.setDate(i.getDate()+7),ie(e,{...n.getTime()>t.getTime()&&n.getTime()<=i.getTime()?{weekday:`short`}:{month:`short`,day:`numeric`},hour:`numeric`,minute:`2-digit`})}function ey(){return(ey=e((()=>{b(),qe()})))()}var ty;function ny(){return(ny=e((()=>{Me(),i(),ty=class{constructor(e,t){this.host=e,this.options=t,this.lifecycle=n({client:null,phase:`stopped`}),this.currentGateway=null,this.currentSnapshot=null,this.currentClient=null,this.currentConnected=!1,this.hasBoundGateway=!1,this.handlePageActivation=()=>{this.options.onPageActivation?.()},this.subscriptions=new Ot(e).effect(t.getGateway,e=>{let t=!this.hasBoundGateway,n=this.hasBoundGateway&&this.currentGateway!==e;return this.hasBoundGateway=!0,this.currentGateway=e,this.applySnapshot(e.snapshot,{initial:t,sourceChanged:n}),e.subscribe(t=>{this.currentGateway===e&&this.options.getGateway()===e&&this.applySnapshot(t,{initial:!1,sourceChanged:!1})})}),e.addController(this)}get gateway(){return this.currentGateway}get snapshot(){return this.currentSnapshot}get client(){return this.currentClient}get connected(){return this.currentConnected}get epoch(){return this.lifecycle.epoch}capture(){return this.lifecycle.capture()}isCurrent(e){return this.lifecycle.isCurrent(e)}invalidate(){this.lifecycle.invalidate()}isRouteDataCurrent(e){let t=this.options.getGateway();if(!t||e.gateway!==t)return!1;let n=t.snapshot;return e.gatewaySnapshot===n||e.gatewaySnapshot.phase===`connected`&&n.phase===`connected`&&e.gatewaySnapshot.client===n.client&&e.gatewaySnapshot.hello!==null&&e.gatewaySnapshot.hello===n.hello}hostConnected(){this.options.onPageActivation&&(document.addEventListener(`visibilitychange`,this.handlePageActivation),globalThis.addEventListener(`focus`,this.handlePageActivation))}hostDisconnected(){this.options.onPageActivation&&(document.removeEventListener(`visibilitychange`,this.handlePageActivation),globalThis.removeEventListener(`focus`,this.handlePageActivation)),this.subscriptions.clear();let e=this.currentSnapshot;if(this.currentGateway=null,e){let t={...e,client:null,phase:`stopped`},n=this.lifecycle.transition(t),r=this.currentClient!==null,i=this.currentConnected;this.currentSnapshot=null,this.currentClient=null,this.currentConnected=!1,n&&this.options.invalidateRequests?.({snapshot:t,initial:!1,sourceChanged:!1,clientChanged:r,connectionChanged:i,identityChanged:!1,becameConnected:!1,becameAvailable:!1})}else this.lifecycle.invalidate();this.host.requestUpdate()}applySnapshot(e,t){let n=this.currentClient,r=this.currentConnected,i=this.currentSnapshot!==null&&Ge(this.currentSnapshot),a=e.phase===`connected`,o=n!==e.client,s=r!==a,c=this.lifecycle.transition(e);t.sourceChanged&&!c&&this.lifecycle.invalidate(),this.currentSnapshot=e,this.currentClient=e.client,this.currentConnected=a;let l={snapshot:e,initial:t.initial,sourceChanged:t.sourceChanged,clientChanged:o,connectionChanged:s,identityChanged:!t.initial&&(t.sourceChanged||o),becameConnected:a&&!r,becameAvailable:Ge(e)&&!i};l.identityChanged&&this.options.onIdentityChange?.(l),!t.initial&&(c||t.sourceChanged)&&this.options.invalidateRequests?.(l),this.options.onSnapshot?.(l),a&&(t.initial||l.identityChanged||l.connectionChanged)&&this.options.ensureInitialData?.(),this.host.requestUpdate()}}})))()}function ry(){return(ry=e((()=>{})))()}async function iy(e,t,n,r){e.subscribers.add(t);let i;try{if(!n)return await e.promise;let r=()=>void 0,a=new Promise((e,t)=>{r=t});return i=()=>{e.subscribers.delete(t),e.subscribers.size===0&&e.controller?.abort(n.reason),r(n.reason)},n.addEventListener(`abort`,i,{once:!0}),n.aborted&&i(),await Promise.race([e.promise,a])}finally{i&&n?.removeEventListener(`abort`,i),e.subscribers.delete(t),r?.()}}function ay(){return(ay=e((()=>{})))()}function oy(){return(oy=e((()=>{})))()}function sy(e,t){let n=new Set(e),r=t.map(e=>W(e.category)).filter(e=>typeof e==`string`&&!n.has(e)).toSorted((e,t)=>e.localeCompare(t));return[...e,...new Set(r)]}function cy(e,t,n=[]){let r=ru(t),i=new Set(r),a=ru(n),o=new Set(a),s=(We(e)??[]).filter(e=>e.startsWith(`category:`)?i.has(e.slice(9)):!e.startsWith(`catalog:`)||o.has(e.slice(8)));for(let e of r){let t=`category:${e}`;if(s.includes(t))continue;let n=s.findIndex(e=>by.includes(e));s.splice(n<0?s.length:n,0,t)}for(let[e,t]of by.entries()){if(s.includes(t))continue;if(e===0){s.push(t);continue}let n=by[e-1];s.splice(s.indexOf(n)+1,0,t)}let c=a.map(e=>`catalog:${e}`).filter(e=>!s.includes(e));return s.splice(s.indexOf(`work`)+1,0,...c),s}function ly(e){return vy.includes(e)?e:`none`}function uy(e){let t=new Date(e),n=e=>new Date(t.getFullYear(),t.getMonth(),t.getDate()-e).getTime(),r=n(0),i=n(1),a=n(6);return({updatedAt:e})=>typeof e!=`number`||!Number.isFinite(e)||e<=0?``:e>=r?`today`:e>=i?`yesterday`:e>=a?`week`:`older`}function dy(e){return e.channel??_e(e.key)?.channel??``}function fy(e,t){switch(t){case`category`:return e.category?.trim()??``;case`person`:return Mv(e.owner?.actor);case`channel`:return dy(e);case`kind`:return it(e);case`agent`:return Et(e.key)?.agentId??``;default:return``}}function py(e){let t=e.now??Date.now(),n=e.mode===`date`?uy(t):t=>fy(t,e.mode),r=new Map;for(let t of e.rows){let e=n(t),i=r.get(e);i?i.push(t):r.set(e,[t])}return _y(e.mode,r,e.knownCategories??[]).map(e=>({id:e,rows:r.get(e)??[]}))}function my(e){return e===`none`||e===`person`||e===`project`?e:`category`}function hy(e,t){return t===`category`&&e.pinned!==!0&&!!e.category?.trim()&&e.kind===`group`}function gy(e,t={}){let n=t.grouping??`category`,r=[],i=[],a=[],o=[],s=new Map,c=[],l=new Map,u=new Map;if(n===`category`)for(let e of t.knownGroups??[]){let t=e.trim();t&&!s.has(t)&&(s.set(t,[]),c.push(t))}for(let t of e){if(t.pinned===!0){r.push(t);continue}if(n===`none`){i.push(t);continue}let e=n===`project`&&t.workContext?Nv(t.workContext.path):null;if(e){let n=u.get(e);n?n.rows.push(t):u.set(e,{id:`project:${e}`,project:{name:Bt(e),path:e},rows:[t]});continue}let c=n===`person`?t.owner?.actor:void 0,d=c?.identity?.id,f=Mv(c);if(c&&d&&f){let e=l.get(f);e?e.rows.push(t):l.set(f,{id:`person:${f}`,personOwner:{...c,id:d},rows:[t]});continue}let p=n===`category`?t.category?.trim():void 0;if(p){let e=s.get(p);e?e.push(t):s.set(p,[t]);continue}if(t.kind===`group`){a.push(t);continue}if(t.workSession===!0||t.acpSession===!0){o.push(t);continue}i.push(t)}let d=[];r.length>0&&d.push({id:`pinned`,rows:r}),d.push(...[...l.values()].toSorted((e,n)=>{let r=e.personOwner,i=n.personOwner;return(r.identity?.type===`agent`?2:r.identity?.type===`profile`&&r.id===t.selfOwnerId?0:1)-(i.identity?.type===`agent`?2:i.identity?.type===`profile`&&i.id===t.selfOwnerId?0:1)||(r.label||r.id).localeCompare(i.label||i.id)||r.id.localeCompare(i.id)})),d.push(...[...u.values()].toSorted((e,t)=>{let n=e.project,r=t.project;return n.name.localeCompare(r.name)||n.path.localeCompare(r.path)}));let f=[...c,...[...s.keys()].slice(c.length).toSorted((e,t)=>e.localeCompare(t))],p=f.map(e=>({id:`category:${e}`,category:e,rows:s.get(e)??[]}));p.push({id:`ungrouped`,rows:i});let m=e.some(e=>hy(e,n));(a.length>0||m)&&p.push({id:`groups`,groups:!0,rows:a}),p.push({id:`work`,work:!0,rows:o});let h=ru(t.catalogIds);if(p.push(...h.map(e=>({id:`catalog:${e}`,rows:[]}))),t.sectionOrder){let e=new Map(p.map(e=>[e.id,e]));for(let n of cy(t.sectionOrder,f,h)){let t=e.get(n);t&&(d.push(t),e.delete(t.id))}return d.push(...p.filter(t=>e.has(t.id))),d}return d.push(...p),d}function _y(e,t,n){if(e===`date`)return yy.filter(e=>t.has(e));if(e===`category`){let e=ru(n),r=[...t.keys()].filter(t=>t!==``&&!e.includes(t)).toSorted((e,t)=>e.localeCompare(t));return[...e,...r,``]}let r=[...t.keys()].filter(e=>e!==``);return r.sort((e,t)=>e.localeCompare(t)),t.has(``)&&r.push(``),r}var vy,yy,by,xy;function Sy(){return(Sy=e((()=>{ql(),rt(),Iv(),d(),O(),vy=[`none`,`category`,`person`,`channel`,`kind`,`agent`,`date`],yy=[`today`,`yesterday`,`week`,`older`,``],by=[`ungrouped`,`groups`,`work`],xy=ua})))()}function Cy(e,t,n){e.onNavigate&&e.sessionDataContext&&(e.sessionDataContext.agentSelection.set(n),e.onNavigate(`terminal`,{pathname:Vn(`terminal`,e.basePath),search:ae(t),hash:``}))}async function wy(e,t,n){let{prepareCatalogTerminal:r}=await Yl(async()=>{let{prepareCatalogTerminal:e}=await import(`./catalog-terminal-start-BmIoZaYn.js`).then(e=>(e.n(),e.t));return{prepareCatalogTerminal:e}},__vite__mapDeps([8,0,5]),import.meta.url);return r(e,t,n)}function Ty(){return(Ty=e((()=>{pr(),tt(),$l()})))()}var Ey;function Dy(){return(Dy=e((()=>{Ey=class{constructor(e,t,n,r=!0,i=`always`){this.intervalMs=t,this.tick=n,this.autoStart=r,this.visibility=i,this.timer=null,this.running=!1,this.handleVisibilityChange=()=>{this.running&&(this.isVisible()?this.startTimer()&&this.tick():this.clearTimer())},e.addController(this)}hostConnected(){this.autoStart&&this.start()}hostDisconnected(){this.stop()}start(){return!this.running&&(this.running=!0,this.visibility===`visible`&&document.addEventListener(`visibilitychange`,this.handleVisibilityChange),this.startTimer(),!0)}stop(){this.running=!1,this.visibility===`visible`&&document.removeEventListener(`visibilitychange`,this.handleVisibilityChange),this.clearTimer()}isVisible(){return this.visibility===`always`||document.visibilityState!==`hidden`}startTimer(){return this.timer!==null||!this.isVisible()?!1:(this.timer=globalThis.setInterval(()=>{this.isVisible()&&this.tick()},this.intervalMs),!0)}clearTimer(){this.timer!==null&&(globalThis.clearInterval(this.timer),this.timer=null)}}})))()}function Oy(e,t){let n={},r=e.activeRouteId,i=e.sessionKey;Py.set(e,n);let a={...t,commit:()=>!e.isConnected||e.activeRouteId!==r||e.sessionKey!==i||Py.get(e)!==n?!1:(Py.delete(e),t.commit())},o=new CustomEvent(My,{cancelable:!0,detail:a});globalThis.dispatchEvent(o),o.defaultPrevented||a.commit()}function ky(e,t,n){let{client:r,hello:i}=e.snapshot,a={pathname:t,sessionKey:n,client:r,hello:i};Ny.set(e,a),globalThis.setTimeout(()=>{Ny.get(e)===a&&Ny.delete(e)},jy)}function Ay(e,t){let n=Ny.get(e);if(!n||n.pathname!==t)return;Ny.delete(e);let{client:r,hello:i}=e.snapshot;if(n.client===r&&n.hello===i)return n.sessionKey}var jy,My,Ny,Py;function Fy(){return(Fy=e((()=>{jy=2e3,My=`openclaw:session-navigation-intent`,Ny=new WeakMap,Py=new WeakMap})))()}function Iy(e,t,n){let r=[t?.nativeDirectUserId,t?.from];r.some(e=>W(e))||r.push(n);for(let t of r){let n=W(t);if(n){if(e===`matrix`){if(n=n.replace(/^matrix:/i,``),/^@[^\s:]+:[^\s]+$/.test(n))return n;continue}if(e===`whatsapp`){n=n.replace(/^whatsapp:/i,``);let e=n.match(/^(\d+)(?:@s\.whatsapp\.net)?$/i);e&&(n=`+${e[1]}`)}else if(e===`signal`)n=n.replace(/^signal:/i,``);else if([`imessage`,`bluebubbles`,`sms`,`email`].includes(e)){if(n=n.replace(/^(?:imessage|bluebubbles|sms|auto|email):/i,``),/^[^\s@:]+@[^\s@:]+$/.test(n))return n}else continue;if(/^\+[1-9]\d{1,14}$/.test(n))return n}}}function Ly(e,t){let n=t;if(n){if(e===`discord`)n=n.replace(/ (?:user|channel) id:\d+$/,``);else if(e===`telegram`){if(n=n.replace(/(?:^| )id:-?\d+(?: topic:\d+)?$/,``),/^(?:id:unknown|group:-?\d+(?: topic:\d+)?)$/.test(n))return}else e===`signal`&&(n=n.replace(/ id:\S+$/,``));return W(n)}}function Ry(e){let t=et(e.key,e.channel),n=pl(t.channel);if(!t.channelSession||!n)return;let r=pl(e.channel),i=pl(e.origin?.provider??e.origin?.surface),a=(!r||r===n)&&(!i||i===n),o=a?e.origin:void 0,s=pl(e.deliveryContext?.channel)===n?e.deliveryContext:void 0,c=Kd(e.key),l=e.key.match(/^agent:[^:]+:[^:]+:(direct|dm|group|channel|thread):/)?.[1]??e.key.match(/^agent:[^:]+:[^:]+:[^:]+:(direct|dm):/)?.[1],u=a?e.chatType??o?.chatType:void 0,d=u??(l===`dm`?`direct`:l===`direct`||l===`group`||l===`channel`||l===`thread`?l:void 0),f=o?.threadId??s?.threadId??zd(e.key).threadId??(n===`telegram`?e.key.match(/:topic:(\d+)$/u)?.[1]:void 0),p=n===`telegram`&&f!=null?W(String(f)):void 0;f!=null&&String(f).trim()&&(d=n===`telegram`?`topic`:`thread`);let m=u===`direct`||d===`direct`?Iy(n,o,c?.channel===n&&(c.peerKind===`direct`||c.peerKind===`dm`)?c.peerId:void 0):void 0,h=Ly(n,W(o?.label)),g=a?W(e.subject):void 0,_=a?W(e.groupChannel):void 0,v=n===`discord`?h??_??g:(n===`msteams`&&/^(?:personal|groupChat|channel)$/.test(g??``)?void 0:g)??_??h;(v===m||v===o?.from||v===o?.to||v===o?.nativeChannelId)&&(v=void 0);let y=(!r||r===n?W(e.accountId):void 0)??W(s?.accountId)??W(o?.accountId);return{channel:n,channelLabel:ce(n),kind:d,topicId:p,conversation:v,address:m,account:y==="default"?void 0:y}}function zy(){return(zy=e((()=>{Bd(),rt()})))()}function By(e){let t=W(e.label),n=Et(e.key)?.rest.startsWith(`dashboard:`)?W(e.displayName)??(e.worktree?void 0:W(e.derivedTitle)):void 0;return t??n??``}function Vy(e,t,n){let r=W(e)??null;return r===(W(t)??null)||r===(W(n)??null)?null:{label:r}}function Hy(){return(Hy=e((()=>{O()})))()}function Uy(e,t,n,r=new Set,i=new Set,a=new Set){let o=new Set(t.map(e=>e.key)),s=new Set(n),c=new Set,l=[],u=[];for(let t of e){let e=En(t);if(!e)continue;let n=In(e);c.has(n)||(e.type!==`route`||s.has(e.route))&&(e.type!==`session`||o.has(e.key)||!r.has(e.key))&&(c.add(n),u.push(n),(e.type===`route`||(e.type===`plugin`?i.has(e.key):o.has(e.key)))&&l.push(e))}for(let e of t){let t={type:`session`,key:e.key},n=In(t);c.has(n)||(c.add(n),l.push(t),u.push(n))}for(let e of a){let t={type:`plugin`,key:e},n=In(t);i.has(e)&&!c.has(n)&&(c.add(n),l.push(t),u.push(n))}return{entries:l,sidebarEntries:u}}function Wy(){return(Wy=e((()=>{Sr()})))()}async function Gy(e){if(e.initialResult===null)return[];let t=new Map,n;for(let r=0;r<Ky;r+=1){let i=t.size,a=new Set,o=0,s=r===0?e.initialResult:void 0;for(;!a.has(o);){a.add(o);let r=s??await e.list(o);if(s=void 0,e.isCurrent&&!e.isCurrent())return null;if(!r)throw Error(e.missingResultError);e.resultKind===`window`&&(t.clear(),n=r.totalCount),typeof r.totalCount==`number`&&(n=Math.max(n??0,r.totalCount));let i=e.mapPageRows?.(r.sessions)??r.sessions;for(let e of i)t.set(e.key,e);if(!(r.hasMore??(typeof r.totalCount==`number`&&o+r.sessions.length<r.totalCount)))break;let c=r.nextOffset??(r.offset??o)+r.sessions.length;if(c<=o){if(e.stalledPaginationError)throw Error(e.stalledPaginationError);break}o=c}if(e.resultKind!==`window`&&t.size===i||n===void 0||t.size>=n)break}if(e.incompletePaginationError&&n!==void 0&&t.size<n)throw Error(e.incompletePaginationError);return[...t.values()]}var Ky;function qy(){return(qy=e((()=>{Ky=4})))()}function Jy(e,t=Xy){return{spawnedBy:e,limit:t,includeGlobal:!1,includeUnknown:!1,configuredAgentsOnly:!0}}async function Yy(e){let t=e.pageSize??Xy,n=Jy(e.parentKey,t),r=()=>{let t=e.sessions.listSnapshot(n);if(t.error)throw Error(t.error);return t.result};return e.initialResult&&await e.sessions.refreshList(n),Gy({list:async t=>(await e.sessions.refreshList({...n,...t>0?{offset:t,append:!0}:{}}),r()),initialResult:e.initialResult?r():void 0,resultKind:`window`,isCurrent:e.isCurrent,missingResultError:`child session list returned no result`,incompletePaginationError:`The child session list kept changing. Try again.`})}var Xy;function Zy(){return(Zy=e((()=>{qy(),Xy=100})))()}function Qy(e){let t=e?.repository??e?.branch??e?.pullRequests[0];return t?{owner:t.owner,repo:t.repo}:null}function $y(e,t){let n=e.find(({state:e})=>e===`open`)??e.find(({state:e})=>e===`draft`)??e.find(({state:e})=>e===`merged`)??e[0];if(!n)return;let r=[...new Set(e.map(e=>e.number))].slice(0,20).toSorted((e,t)=>e-t);return t?.state===n.state&&t.numbers.join(`,`)===r.join(`,`)?t:{numbers:r,state:n.state}}function eb(e){if(!e||typeof e!=`object`||!(`sessions`in e))return null;let t=e.sessions;return K(t)}function tb(e){let t=new Map,r,i=[],a=new WeakMap,o=new Map,s=new Set,c=new Map,l=new Set,u=new Map,d=n(e.snapshot),f=null,p=null,m=0,h=null,g=[],_=null,v=()=>Bi(e.snapshot,rb,`operator.read`),y=()=>{_?.abort(),_=null},b=()=>{for(let e of Array.from(s))e()},x=(e,t)=>{let n=c.get(e);if(n){c.delete(e);for(let e of n)e(t)}},S=()=>{if(r)return r;let e=new Map;for(let n of t.values())for(let t of n.keys){let r=n.passive?0:n.foreground?2:1;e.set(t,Math.max(e.get(t)??0,r))}let n=[...e].toSorted(([e,t],[n,r])=>r-t||e.localeCompare(n)).slice(0,200);return r=n.map(([e])=>e),i=n.filter(([,e])=>e>0).map(([e])=>e),r},C=()=>(S(),i),w=()=>{let e=new Set(S()),t=new Set(C());for(let[e,n]of u)t.has(e)||(clearTimeout(n),u.delete(e));for(let e of l)t.has(e)||l.delete(e);for(let e of c.keys())t.has(e)||x(e);for(let t of o.keys())e.has(t)||o.delete(t)},ee=()=>t.size>0||s.size>0||c.size>0,te=e=>{for(let t of g)e.includes(t)&&l.add(t)},ne=()=>{te(S()),m+=1,y(),h=null,g=[],f=null,p=null;let e=o.size>0;o.clear();for(let e of c.keys())x(e);e&&b()},T=Zo(e,{sync:ie,onSnapshot:e=>{let t=d.transition(e);t&&ne(),(t||e.hello!==f)&&(re.reset(),T.schedule())},onEvent:t=>{if(t.event===`agent`||t.event===`session.tool`){let n=K(t.payload),r=K(n?.data);if(typeof n?.sessionKey!=`string`||!(n.stream===`tool`&&r?.phase===`result`||n.stream===`lifecycle`&&(r?.phase===`end`||r?.phase===`error`)))return;for(let t of C())ue({assistantAgentId:e.snapshot.assistantAgentId,hello:e.snapshot.hello,sessionKey:t},n.sessionKey,typeof n.agentId==`string`?n.agentId:void 0)&&ae(t,{automatic:!0});return}if(t.event===`sessions.changed`){let n=xe(t.payload),r=K(t.payload)?.reason;if(!n||!ib.has(r))return;let i=S().filter(t=>ue({assistantAgentId:e.snapshot.assistantAgentId,hello:e.snapshot.hello,sessionKey:t},n.key,n.agentId));if(i.length===0)return;let a=!1;for(let e of i)a=o.delete(e)||a,ae(e,{automatic:!0});a&&b();return}if(t.event!==`controlUi.sessionPullRequests.changed`)return;let n=eb(t.payload);if(!n)return;let r=new Set(S()),i=!1;for(let[e,t]of Object.entries(n)){if(!r.has(e))continue;let n=o.get(e),a=Qy(t),s=Qy(n),c=n?.branch?.branch??n?.pullRequests[0]?.branch,l=(!a||a.owner===s?.owner&&a.repo===s?.repo)&&(!t.branch||!c||t.branch.branch===c),u=t;n&&l&&(t.status===`rate-limited`||t.status===`unavailable`)&&t.pullRequests.length===0&&(u={...t,pullRequests:n.pullRequests,branch:t.branch??n.branch,repository:t.repository??n.repository}),o.set(e,u),i=!0,x(e,u)}i&&b()},onAttach:()=>{d.transition(e.snapshot)&&ne(),f=null,p=null},onDetach:()=>{m+=1,y(),h=null,g=[],f=null,p=null,o.clear();for(let e of u.values())clearTimeout(e);u.clear()}}),{retry:re}=T;function ie(){let t=e.snapshot,n=t.client;if(!v()||!n){te(S()),f=null,p=null,y();let e=o.size>0;o.clear();for(let e of c.keys())x(e);e&&b(),ee()||T.detach();return}let r=C(),i=typeof document<`u`&&document.visibilityState===`hidden`?[]:r,a=JSON.stringify(i.toSorted());h!==null&&(a!==p||t.hello!==f)&&te(r);let s=new Set(i),u=[...l].filter(e=>s.has(e));if(t.hello===f&&a===p&&u.length===0){ee()||T.detach();return}if(h!==null&&t.hello===f&&a===p)return;f=t.hello,p=a;let d=++m;y(),_=new AbortController;let w=()=>T.attached&&ee()&&d===m&&t.hello===f&&a===p;re.cancel(),h=d,g=u;for(let e of u)l.delete(e);let ne=n.request(rb,{sessionKeys:i,...u.length>0?{refreshSessionKeys:u}:{}},{timeoutMs:vl,signal:_.signal});ee()||T.detach(),ne.then(()=>{w()&&re.reset()}).catch(()=>{if(w()){for(let e of u)l.add(e);p=null,re.schedule(()=>{T.attached&&ee()&&T.schedule()});for(let e of i)x(e)}}).finally(()=>{h===d&&(h=null,g=[],w()&&l.size>0&&T.schedule())})}let E=(e,n,i={})=>{let a=ee(),o=new Set(n.map(e=>e.trim()).filter(Boolean)),s=t.get(e);(s===void 0?o.size===0:s.keys.size===o.size&&s.foreground===(i.foreground===!0)&&s.passive===(i.passive===!0)&&[...o].every(e=>s.keys.has(e)))||(o.size===0?t.delete(e):t.set(e,{keys:o,foreground:i.foreground===!0,passive:i.passive===!0}),r=void 0,re.reset(),w(),ee()?(a||(f=null,p=null),T.attach(),T.schedule()):T.attached&&T.sync())};function ae(e,t={}){let n=e.trim();return!n||!C().includes(n)?!1:(clearTimeout(u.get(n)),u.delete(n),t.automatic?u.set(n,setTimeout(()=>ae(n),5e3)):(l.add(n),re.reset(),T.schedule()),!0)}return{watch:E,unwatch:e=>{a.delete(e),E(e,[])},load:async(e,n)=>{let r=n.trim();if(!r)return;let i={};a.set(e,i);let s=C().includes(r);E(e,[r],{foreground:!0});try{if(!v())return;let e=o.get(r);return e&&s?e:(e&&ae(r),await new Promise(e=>{let t=c.get(r)??new Set;t.add(e),c.set(r,t),T.schedule()}))}finally{let n=t.get(e);a.get(e)===i&&n?.keys.size===1&&n.keys.has(r)&&(a.delete(e),E(e,[]))}},refresh:ae,get:e=>v()?o.get(e):void 0,subscribe:e=>{let t=ee();return s.add(e),t||(f=null,p=null),T.attach(),()=>{s.delete(e)&&(ee()?T.schedule():T.attached&&T.sync())}}}}function nb(e){let t=ab.get(e);if(t)return t;let n=tb(e);return ab.set(e,n),n}var rb,ib,ab;function ob(){return(ob=e((()=>{Ol(),gl(),Vi(),Bc(),m(),O(),rb=`controlUi.sessionPullRequests.subscribe`,ib=new Set([`new`,`reset`,`branch-switch`,`fork`,`rewind`]),ab=new WeakMap})))()}function sb(){return(sb=e((()=>{})))()}function cb(e,t,n=()=>e.requestUpdate()){let r,i,a=!1,o=()=>{clearTimeout(r),r=void 0,i=void 0},s=()=>{let e=Date.now(),n=a&&document.visibilityState!==`hidden`?t().flatMap(t=>{let n=ya(t),r=n===void 0?void 0:n+Aa;return r!==void 0&&r>e?[r]:[]}):[],s=n.length?Math.min(...n):void 0;s!==i&&(o(),s!==void 0&&(i=s,r=setTimeout(c,s-e)))},c=()=>{o(),n(),s()},l=()=>{document.visibilityState===`hidden`?o():c()};return e.addController({hostConnected(){a=!0,document.addEventListener(`visibilitychange`,l),c()},hostDisconnected(){a=!1,document.removeEventListener(`visibilitychange`,l),o()}}),{sync:s}}function lb(){return(lb=e((()=>{sl()})))()}function ub(e,t,n){return[e.pluginId?t.pluginIconUrls[e.pluginId]:void 0,e.imageUrl?t.iconUrls[e.imageUrl]:void 0].find(e=>!(!e||n?.has(e)))??null}function db(e){let t=0;for(let n of e)t=t*31+(n.codePointAt(0)??0)>>>0;return ul(pb[t%pb.length],`plugin fallback gradient palette entry`)}function fb(e){let t=e.trim().split(/\s+/u).filter(Boolean);if(t.length===0)return``;let n=ul(t[0],`plugin monogram first word`),r=t[1];return(r?`${re(n,1)}${re(r,1)}`:re(n,2)).toLocaleUpperCase()}var pb;function mb(){return(mb=e((()=>{Ul(),Ke(),pb=[[`#f59e0b`,`#ea580c`],[`#38bdf8`,`#1d4ed8`],[`#34d399`,`#047857`],[`#a855f7`,`#6b21a8`],[`#f472b6`,`#be185d`],[`#22d3ee`,`#0e7490`],[`#fbbf24`,`#b45309`],[`#818cf8`,`#4338ca`],[`#4ade80`,`#166534`],[`#fb7185`,`#9f1239`]]})))()}function hb(e){if(!e)return`ltr`;for(let t of e){if(_b.test(t))return`rtl`;if(vb.test(t))return`ltr`;if(!yb.test(t))return gb.test(t)?`rtl`:`ltr`}return`ltr`}var gb,_b,vb,yb;function bb(){return(bb=e((()=>{gb=/\p{Script=Hebrew}|\p{Script=Arabic}|\p{Script=Syriac}|\p{Script=Thaana}|\p{Script=Nko}|\p{Script=Samaritan}|\p{Script=Mandaic}|\p{Script=Adlam}|\p{Script=Phoenician}|\p{Script=Lydian}/u,_b=/[\u061C\u200F\u202B\u202E\u2067]/u,vb=/[\u200E\u202A\u202D\u2066]/u,yb=/[\s\p{P}\p{S}\p{Cf}]/u})))()}function xb(e,t=!1){let n=e.colorSeed%360;return R`
<span
class="chat-author-avatar__initials ${t?`chat-author-avatar__fallback`:``}"
style=${`--chat-author-avatar-hue: ${n}`}
aria-hidden="true"
>
${e.initials}
</span>
`}function Sb(e){return e.imageUrl?R`
${Cu({view:e,fallbackSelector:`.chat-author-avatar`,className:`chat-author-avatar__image`,ariaHidden:!0})}${xb(e.fallback,!0)}
`:xb(e.fallback)}function Cb(e,t=`chat-author-avatar`,n){let r=uo(e);if(!e||!r)return z;if(e.identity?.type===`agent`){let i=Is(e);return R`<span class=${t} role="img" aria-label=${r} title=${r}>
${Au({id:e.identity.id,avatar:n?.avatar??(i.kind===`profile`?i.url:null),textAvatar:n?.textAvatar})}
</span>`}let i=xu(e),a=Sb(i);return R`<span
class=${ku(`chat-author-avatar`,i)}
role="img"
aria-label=${r}
title=${r}
>
${a}
</span>`}function wb(e,t){return e&&!t?`footer`:`gutter`}function Tb(e,t,n=`user`){let r=R`<div
class="chat-avatar ${n} chat-avatar--sender-initials"
style=${`background: hsl(${e.fallback.colorSeed%360} 48% 42%)`}
role="img"
aria-label="${t}"
>
${e.fallback.initials}
</div>`;return e.imageUrl?R`<span class=${ku(`chat-avatar-slot`,e)}>
${Cu({view:e,fallbackSelector:`.chat-avatar-slot`,className:`chat-avatar ${n}`,alt:t})}${r}
</span>`:r}function Eb(){return(Eb=e((()=>{B(),yu(),Hi(),Cc()})))()}function Db(e,t,n,r){let i=Ra(e);if(i===`user`&&r)return r.identity?.type===`agent`?Cb(r,`chat-avatar assistant`):Tb(xu(r),uo(r)??``);if(i===`assistant`){let e=t?.name?.trim()||`Assistant`;return Ob(t?.agentId??`main`,e,t?.avatar,t?.textAvatar??st(t?.avatar))}let a=Rn(n),o=kn(n),s=An(n),c=i===`user`?R`
<svg viewBox="0 0 24 24" fill="currentColor" width="18" height="18">
<circle cx="12" cy="8" r="4" />
<path d="M20 21a8 8 0 1 0-16 0" />
</svg>
`:i===`tool`?R`
<svg viewBox="0 0 24 24" fill="currentColor" width="18" height="18">
<path
d="M12 15.5A3.5 3.5 0 0 1 8.5 12 3.5 3.5 0 0 1 12 8.5a3.5 3.5 0 0 1 3.5 3.5 3.5 3.5 0 0 1-3.5 3.5m7.43-2.53a7.76 7.76 0 0 0 .07-1 7.76 7.76 0 0 0-.07-.97l2.11-1.63a.5.5 0 0 0 .12-.64l-2-3.46a.5.5 0 0 0-.61-.22l-2.49 1a7.15 7.15 0 0 0-1.69-.98l-.38-2.65A.49.49 0 0 0 14 2h-4a.49.49 0 0 0-.49.42l-.38 2.65a7.15 7.15 0 0 0-1.69.98l-2.49-1a.5.5 0 0 0-.61.22l-2 3.46a.49.49 0 0 0 .12.64L4.57 11a7.9 7.9 0 0 0 0 1.94l-2.11 1.69a.49.49 0 0 0-.12.64l2 3.46a.5.5 0 0 0 .61.22l2.49-1c.52.4 1.08.72 1.69.98l.38 2.65c.05.24.26.42.49.42h4c.23 0 .44-.18.49-.42l.38-2.65a7.15 7.15 0 0 0 1.69-.98l2.49 1a.5.5 0 0 0 .61-.22l2-3.46a.49.49 0 0 0-.12-.64z"
/>
</svg>
`:R`
<svg viewBox="0 0 24 24" fill="currentColor" width="18" height="18">
<circle cx="12" cy="12" r="10" />
<text
x="12"
y="16.5"
text-anchor="middle"
font-size="14"
font-weight="600"
fill="var(--bg, #fff)"
>
?
</text>
</svg>
`,l=i===`user`?`user`:i===`tool`?`tool`:`other`;if(i===`user`&&o){let e=jc(o)??o;return Tb({fallback:ts({name:a}),imageUrl:e,sourceUrl:o.startsWith(`/`)?o:void 0,pending:typeof e!=`string`},a)}return i===`user`&&s?R`<div class="chat-avatar ${l}" role="img" aria-label="${a}">
${s}
</div>`:R`<div class="chat-avatar ${l}">${c}</div>`}function Ob(e,t,n,r=st(n)){let i=n?.trim()||``,a=Au({id:e,name:t,textAvatar:r},`chat-avatar assistant`);if(Nd(e)||!(i.startsWith(`blob:`)||$t(i)))return a;let o=jc(i)??i,s={imageUrl:o,sourceUrl:i,pending:typeof o!=`string`};return R`<span class=${ku(`chat-avatar-slot`,s)}>
${Cu({view:s,fallbackSelector:`.chat-avatar-slot`,className:`chat-avatar assistant`,alt:t})}${a}${Od(e)}
</span>`}function kb(e,t){if(e&&e===t.agentId)return Db(`assistant`,{agentId:e,name:t.assistantName??`Assistant`,avatar:t.assistantAvatar??null,textAvatar:t.assistantTextAvatar});let n=e?t.agents?.find(t=>t.id===e):void 0;if(!n)return z;let r=n.identity?.name?.trim()||n.id,i=t.senderAgentAvatars?.get(n.id)??wt(n);return Ob(n.id,r,i,st(i)??lt(n))}function Ab(e){let t=Et(e.sessionKey);return t?.agentId?t.agentId:_(e.sessionKey)?l(e)||`main`:ye(e)?.defaultAgentId?.trim()||`main`}function jb(e){let t=(Rb.get(e)??0)+1;return Rb.set(e,t),t}function Mb(e){let t=Ub.get(e);t?.get(Hb)?.(),t?.delete(Hb),e.chatAvatarUrl=null,e.chatAvatarSource=null,e.chatAvatarStatus=null,e.chatAvatarReason=null}function Nb(e,t,n){let r=Ub.get(e);r||(r=new Map,Ub.set(e,r)),r.get(t)?.(),r.set(t,n)}function Pb(e){jb(e);for(let t of Ub.get(e)?.values()??[])t();Ub.delete(e),zb.delete(e),Bb.delete(e),Vb.delete(e),e.senderAgentAvatars=void 0,Mb(e)}async function Fb(e,t){let n=e.client,r=e.connectionEpoch,i=Ab(e);if(!n||!e.connected)return null;let a=()=>void 0;try{let o=await Xu(n,t);if(!o||!e.connected||e.client!==n||e.connectionEpoch!==r||Ab(e)!==i)return null;let s=o.avatar?.trim()??``,c=s.startsWith(`/`)?jc(s):$t(s)?s:null;a=cc(c);let l=await c;return c!==null&&l===null?(a(),null):{release:a,source:o.avatarSource??null,status:o.avatarStatus??null,reason:o.avatarReason??null,url:l}}catch{return a(),null}}async function Ib(e){if(!e)return;let t=[e.chatMessages,e.agentsList,e.sessionKey,e.assistantAgentId,e.connected,e.client,e.connectionEpoch],n=Vb.get(e);if(n&&t.every((e,t)=>e===n[t]))return;Vb.set(e,t);let r={};Bb.set(e,r);let i=e.sessionKey,a=Ab(e),o=e.client,s=e.connectionEpoch,c=e.agentsList?.agents,l=new Set(c?.map(e=>e.id)),u=[];if(e.connected)for(let t of e.chatMessages){if(Ho(t)!==`assistant`)continue;let e=Pa(Jl(t)?.senderSession)?.agentId;if(e&&e!==a&&l.delete(e)&&(u.push(e),u.length===23))break}let d=e.senderAgentAvatars,f=u.length?await Promise.all(u.map(t=>Fb(e,t))):[];if(u.length&&(!e.connected||e.client!==o||e.connectionEpoch!==s||e.agentsList?.agents!==c||e.sessionKey!==i||Ab(e)!==a||Bb.get(e)!==r)){for(let e of f)e?.release();return}let p=Ub.get(e);for(let[e,t]of p??[])e!==Hb&&!u.includes(e)&&(t(),p?.delete(e));let m=new Map(u.map((t,n)=>{let r=f[n];return r&&Nb(e,t,r.release),[t,r?r.url:d?.get(t)??null]}));(m.size!==(d?.size??0)||[...m].some(([e,t])=>d?.get(e)!==t))&&(e.senderAgentAvatars=m,e.requestUpdate?.())}async function Lb(e){if(!e.connected){Pb(e);return}let t=e.sessionKey,n=e.client,r=e.connectionEpoch,i=jb(e),a=Ab(e),o=zb.get(e)===a;o||Mb(e);let s=await Fb(e,a);if(!e.connected||e.client!==n||e.connectionEpoch!==r||Rb.get(e)!==i||e.sessionKey!==t||Ab(e)!==a){s?.release();return}s?(Nb(e,Hb,s.release),e.chatAvatarSource=s.source,e.chatAvatarStatus=s.status,e.chatAvatarReason=s.reason,e.chatAvatarUrl=s.url,zb.set(e,a)):o||Mb(e)}var Rb,zb,Bb,Vb,Hb,Ub;function Wb(){return(Wb=e((()=>{B(),Pd(),Yu(),Wn(),yu(),Vt(),Ut(),Oo(),Hi(),gs(),Cc(),O(),Eb(),Rb=new WeakMap,zb=new WeakMap,Bb=new WeakMap,Vb=new WeakMap,Hb=Symbol(`current-chat-avatar`),Ub=new WeakMap})))()}function Gb(e){return{type:`tool_result`,id:e.callId,name:e.name,text:e.outputText??``,details:e.details,isError:e.isError,exitCode:e.exitCode,__openclaw:{id:e.resultMessageId,toolOutput:e.toolOutput,truncated:e.outputTruncated}}}function Kb(e,t){let n=K(e.message);if(!n)return[];let r=n,i=Array.isArray(n.content)?n.content:[],a=e=>{let t=K(e)?.type;return Cn(t)||yn(t)},o=i.filter(a),s=new Map;if(o.some(e=>!Hm(K(e),n))){let e=[...fs(n)];if(i=i.flatMap(t=>{if(!a(t))return[t];let r=K(t),i=Hm(r,n),o=Cn(r.type),c=e.findIndex(e=>o===Object.hasOwn(e,`args`)&&(!i||e.callId===i));if(c<0)return[];let l=e.splice(c,1)[0],u={id:l.callId,name:l.name,details:l.details},d=[...o?[{...r,...u,arguments:l.args}]:[],...!o||l.completed||l.outputText!==void 0?[Gb(l)]:[]];return d.forEach(e=>s.set(e,l)),d}),n={...n,content:i},o=i.filter(e=>a(e)&&Hm(K(e),n)),o.length===0)return[]}let c=o.length===0;if(c){let[e]=fs(n);if(!e?.callId)return[];o=[Gb(e)],s.set(o[0],e)}let l={item:e,originalMessage:r,message:n,index:t,standalone:c,remaining:i.filter(e=>!o.includes(e)&&(!c||K(e)?.type!==`text`))};return o.map(e=>{let t=K(e),i=Hm(t,n),a=Cn(t.type),o=n.__openclawToolStreamLive===!0,c=s.get(t)??Nc(r,t)[0];return{source:l,id:i,call:a,runId:W(t.runId)??U(n)?.runId??W(n.runId),name:W(t.name)??W(n.toolName)??W(n.tool_name)??`tool`,rank:a?o?1:2:o?n.__openclawToolStreamResultReceived===!0?2:1:3,block:{...t,id:i,...a?{arguments:c?.args}:{text:c?.outputText,__openclaw:{id:c?.resultMessageId,toolOutput:c?.toolOutput,truncated:c?.outputTruncated}},...c?.details===void 0?{}:{details:c.details},...!a&&c?.isError!==void 0?{isError:c.isError}:{},...!a&&c?.exitCode!==void 0?{exitCode:c.exitCode}:{}}}})}function qb(e,t){if(!e)return t;let[n,r]=t.rank>=e.rank?[e,t]:[t,e],i=K(n.block.details),a=K(r.block.details);return{...r,name:r.name===`tool`?n.name:r.name,block:{...Object.fromEntries(Object.entries(n.block).filter(([,e])=>e!==void 0)),...Object.fromEntries(Object.entries(r.block).filter(([,e])=>e!==void 0)),...i&&a?{details:{...i,...a}}:{},...r.call?{arguments:r.block.arguments??n.block.arguments}:{text:r.block.text}}}}function Jb(e){let t=e.flatMap((e,t)=>e.kind===`message`?Kb(e,t):[]);if(t.length===0)return e;let n=new Map;for(let t of e)if(t.kind===`message`){for(let e of Th(t.message))if(e.runId){let t=n.get(e.id)??new Set;t.add(e.runId),n.set(e.id,t)}}let r=e=>{let t=n.get(e.id);return e.runId??=t?.size===1?t.values().next().value:void 0,Sh(e.runId??``,e.id)},i=new Map;for(let e of t){let t=r(e),n=i.get(t)??new Set;e.name!==`tool`&&n.add(e.name.toLowerCase()),i.set(t,n)}let a=new Map,o=new Map;for(let e of t){o.set(e.source.index,e.source);let t=r(e),n=i.get(t),s=e.name===`tool`&&n.size===1?n.values().next().value:e.name.toLowerCase(),c=JSON.stringify([t,s]),l=a.get(c)??{first:e.source.index,attachments:[],projections:[]};l.projections.push(e),e.call?l.call=qb(l.call,e):l.result=qb(l.result,e),e.source.message.__openclawToolStreamLive===!0&&(l.live=e.source.message),e.source.standalone&&(l.result?.source===e.source&&(l.attachments=e.source.remaining),e.source.remaining=[]),a.set(c,l)}let s=new Map,c=new Map,l=new Map,u=new Set(o.values());for(let e of a.values()){let t=new Set(e.projections.map(e=>e.source));(t.size>1||e.projections.length>Number(!!e.call)+Number(!!e.result))&&t.forEach(e=>u.delete(e))}for(let e of a.values()){let t=e.call??e.result;if(u.has(t.source))continue;let n=t.source.message,a=K(n.__openclaw),o=wn(a?.transcriptPosition)?.activity?t.source.index:e.first,s=e.result,d=s!==void 0&&s.rank>1,f=e.live?.__openclawToolStreamItemEnded===!0,p=d||f,m=n.messageId??a?.id??s?.source.message.messageId??K(s?.source.message.__openclaw)?.id,h=[...e.call?[{...e.call.block,name:e.call.name}]:[],...s?[{...s.block,name:e.call?.name??s.name}]:[],...e.attachments],g=JSON.stringify([t.runId,!!e.live,p,d,f,m,e.live?.__openclawToolStreamDiffStat,e.live?.__openclawToolStreamReceivedAt,(i.get(r(t))?.size??0)>1?t.name:void 0]),_=`${t.source.index}:${g}`,v=[g,r(t),t.name,...e.projections.flatMap(({source:e})=>[e.originalMessage,...Array.isArray(e.originalMessage.content)?e.originalMessage.content:[e.originalMessage.content]])],y=c.get(_),b=new Map;for(let r of[n,e.live,s?.source.message]){let e=wo(r).filter(e=>(e.toolCallId??e.itemId)===t.id&&!e.suppressChannelProgress);r===s?.source.message&&Array.isArray(K(r)?.activity)&&e.length===0&&b.clear();for(let t of e)(b.get(t.itemId)?.phase!==`end`||t.phase===`end`)&&b.set(t.itemId,t)}if(y){y.inputs.push(...v),y.item.message.content.push(...h),y.item.message.activity=[...wo(y.item.message),...b.values()],y.index=Math.min(y.index,o);continue}let x={...t.source.item,key:`${t.source.item.key}:invocation:${r(t)}:${t.name}`,message:{...n,role:e.call?`assistant`:n.role,runId:t.runId,content:h,activity:[...b.values()],...m?{messageId:m}:{},...e.live?{__openclawToolStreamLive:!0,__openclawToolStreamResultReceived:d,__openclawToolStreamItemEnded:f,__openclawToolStreamDiffStat:p?void 0:e.live.__openclawToolStreamDiffStat,__openclawToolStreamReceivedAt:e.live.__openclawToolStreamReceivedAt}:{}}};c.set(_,{item:x,index:o,inputs:v}),l.set(x,{owner:t.source.originalMessage,inputs:v})}for(let{item:e,index:t}of c.values()){let n=s.get(t)??[];n.push(e),s.set(t,n)}let d=e.flatMap((e,t)=>{let n=o.get(t);if(!n||u.has(n))return[e];let r=s.get(t)??[];if(n.remaining.length>0){if(r.length>0){let e=r.map(e=>({message:e.message,blocks:e.message.content}));e.forEach(({message:e})=>{e.content=[]});let t=e[0],i=Array.isArray(n.message.content)?n.message.content:[];for(let r of i){if(n.remaining.includes(r)){t.message.content.push(r);continue}let i=K(r)??{},a=Hm(i,n.message);for(let n of e){let e=n.blocks.filter(e=>{let t=K(e);return t?.id===a&&(!i.name||i.name===t?.name)});e.length>0&&(n.message.content.push(...e),n.blocks=n.blocks.filter(t=>!e.includes(t)),t=n)}}e.forEach(e=>e.message.content.push(...e.blocks))}else r.unshift({...n.item,message:{...n.message,content:n.remaining,toolCallId:void 0,tool_call_id:void 0,toolUseId:void 0,tool_use_id:void 0,toolName:void 0,tool_name:void 0}})}return r}),f=new Map;for(let[e,{owner:t,inputs:n}]of l){n.push(e.message.content.length);for(let t of e.message.content){let e=K(t);Cn(e?.type)||yn(e?.type)?n.push(e?.type,e?.id,e?.name):n.push(t)}let r=Xb.get(t)?.get(e.key);r?.inputs.length===n.length&&n.every((e,t)=>e===r.inputs[t])&&(e.message=r.message);let i=f.get(t)??new Map;i.set(e.key,{inputs:n,message:e.message}),f.set(t,i)}for(let[e,t]of f)Xb.set(e,t);return d}function Yb(e,t){let n=[],r=e=>{if(e.length===0)return;let t=[],r;for(let i of e){let a=i.kind===`message`?K(i.message):null;if(i.kind!==`message`||!a||a.__openclawToolStreamLive===!0){n.push(...Jb(e));return}r??=a,t.push(i.kind,i.key,a,i.duplicateCount,i.startsTurn),t.push(a.content),Array.isArray(a.content)&&t.push(...a.content)}let i=Zb.get(r),a=i?.inputs.length===t.length&&t.every((e,t)=>e===i.inputs[t])?i:{inputs:t,items:Jb(e).map(e=>Object.assign({},e))};Zb.set(r,a);for(let e of a.items)n.push({...e})},i=[];for(let a of e){let e=Em(a)||a.kind===`divider`;if(e&&(r(i),i=[]),!t?.has(a.key)){if(e&&(a.kind!==`message`||Ra(Ho(a.message))===`user`)){n.push(a);continue}i.push(a)}}return r(i),n}var Xb,Zb;function Qb(){return(Qb=e((()=>{wi(),_n(),xn(),Oo(),Gc(),Es(),sh(),Dm(),Ah(),Xb=new WeakMap,Zb=new WeakMap})))()}function $b(e,t=e.length){for(let n=t-1;n>=0;--n)if(iu(K(e[n])?.role)===`user`)return n;return-1}function ex(e){let t=K(K(e)?.__openclaw);return W(t?.steerTargetRunId)??null}function tx(e,t){let n=new Map,r=new Map;for(let[i,a]of e.entries()){let e=null,o=null;for(let n of t(a))if(e??=Km(n),o??=ex(n),e&&o)break;if(e&&!n.has(e)&&n.set(e,i),o){let e=r.get(o)??[];e.push(i),r.set(o,e)}}let i=new Map,a=new Map;for(let[e,t]of r){let r=n.get(e);if(r!==void 0)for(let e of t)e<=r||(i.set(r,e),a.set(e,r),r=e)}return{continuationTurnIndexes:i,precedingContinuationTurnIndexes:a}}function nx(e,t){for(let n=e.length-1;n>=0;--n){if(U(e[n])?.role!==`user`||ex(e[n])!==t)continue;let r=Km(e[n]);if(r)return{index:n,runId:r}}return null}function rx(e){let t=e.chatStreamSegments??[];for(let e=t.length-1;e>=0;--e){let n=W(t[e]?.boundaryRunId);if(n)return n}}function ix(e,t){let n=t.afterBoundaryRunId?e.findIndex(e=>Km(e)===t.afterBoundaryRunId):-1,r=t.boundaryRunId?e.findIndex(e=>Km(e)===t.boundaryRunId):-1;if(r>=0)return{start:n>=0?n+1:$b(e,r)+1,end:r};let i=n>=0?n:t.runId?e.findIndex(e=>Km(e)===t.runId):-1;if(i>=0){let t=e.findIndex((e,t)=>t>i&&U(e)?.role===`user`);return{start:i+1,end:t>=0?t:e.length}}let a=e.length;return{start:$b(e,a)+1,end:a}}function ax(e,t,n,r,i){for(let a=n;a<r;a++){let n=i(e[a]);if(n!=null&&n>t)return a}return r}function ox(e,t,n,r){let i=null;for(let n=t-1;n>=0&&(i=r(e[n]),i==null);--n);let a=null;for(let n=t;n<e.length&&(a=r(e[n]),a==null);n+=1);if(i!=null&&n<=i){let e=i+1;return a!=null&&e>=a?i+(a-i)/2:e}if(a!=null&&n>=a){let e=a-1;return i!=null&&e<=i?i+(a-i)/2:e}return n}function sx(e,t,n,r=e.length,i){let a=-1;for(let o=0;o<r;o+=1){let r=e[o],s=U(r),c=Ci(r),l=c!==void 0&&(i===void 0||i.has(c.itemId)),u=s?.runId===n&&!l?Xs(r):null;if(s?.role===`assistant`&&u&&(t.startsWith(u)||u.startsWith(t))){a=o;break}}let o=a>=0?a:$b(e,r)+1;return lx(e.slice(o,r).map(e=>{let t=U(e),r=Ci(e),a=r!==void 0&&(i===void 0||i.has(r.itemId));return{text:t?.role===`assistant`&&(!t.runId||t.runId===n)&&!a?Xs(e):null,skipOnMismatch:r!==void 0}}),t)}function cx(e,t){return lx(e.map(e=>({text:e,skipOnMismatch:!1})),t)}function lx(e,t){let n=0;for(let{text:r,skipOnMismatch:i}of e){if(!r)continue;let e=t.slice(n);if(e.startsWith(r)){n+=r.length;continue}if(r.startsWith(e))return null;let a=n>0?/^\s+/u.exec(e)?.[0]:void 0;if(a&&e.slice(a.length).startsWith(r)){n+=a.length+r.length;continue}if(a&&r.startsWith(e.slice(a.length)))return null;if(!i&&n>0)break}return t.slice(n)}function ux(e,t){let n=e.chatMessages,r=e.chatRunId;if(!Array.isArray(n)||!r)return null;let i=nx(n,r);if(!i||i.index<=0)return null;let a=sx(n,t,r,i.index);return a===t?null:{boundaryRunId:i.runId,prefix:a===null?t:t.slice(0,t.length-a.length)}}function dx(e,t){if(Array.isArray(e.content)){let n=!1,r=e.content.flatMap(e=>{let r=K(e);return!r||r.type!==`text`&&r.type!==`input_text`&&r.type!==`output_text`||typeof r.text!=`string`?[e]:n?[]:(n=!0,[{...r,text:t}])});if(n)return{...e,content:r}}return typeof e.content==`string`?{...e,content:t}:typeof e.text==`string`?{...e,text:t}:e}function fx(e,t){return!!(e?.boundaryRunId&&t.startsWith(e.prefix))}function px(e,t,n){let r=e.chatRunId;if(!r)return null;let i=e.chatMessages??[],a=ix(i,{runId:r,...n?{afterBoundaryRunId:n.boundaryRunId}:{}});for(let o of(e.chatStreamSegments??[]).toReversed()){if(o.runId!==r||o.persisted!==!0||!o.retiredItemId||!Ia(o)||n&&!o.text.startsWith(n.prefix)||!t.startsWith(o.text))continue;let e=i.slice(a.start,a.end).find(e=>{let t=Ci(e);return t?.runId===r&&t.itemId===o.retiredItemId}),s=U(e);if(s?.id&&!s.isImported&&s.sequence!==null)return{prefix:o.text,afterSequence:s.sequence}}return null}function mx(e,t){let n=ss(e);if(!n)return{kind:`none`};let r=null,i=[],a=null;for(let[e,n]of(t.chatStreamSegments??[]).entries()){if(Ia(n)&&typeof n.text==`string`){let t=ba(r,n.text);t!==r&&i.push(e),r=t}let t=W(n.boundaryRunId);t&&r&&(a={boundaryRunId:t,prefix:r,segmentIndexes:[...i]})}let o=ux(t,n),s=fx(a,n)?a:fx(o,n)?o:null,c=px(t,n,s),l=c??s;if(!l)return{kind:`none`};let u=n.slice(l.prefix.length),d=c?u:u.trimStart();return{kind:`split`,...s?{afterBoundaryRunId:s.boundaryRunId}:{},afterSequence:c?.afterSequence??U(t.chatMessages?.find(e=>Km(e)===s?.boundaryRunId))?.sequence??null,...c?{preserveKeyedCommentary:!0}:{},replacedSegmentIndexes:s&&s===o&&a?a.segmentIndexes:[],tailMessage:d?dx(e,d):null}}function hx(e){let t=e.messages;if(!t)return;let n=t.findIndex(t=>Km(t)===e.boundaryRunId),r=e.afterBoundaryRunId??e.runId,i=t.findIndex(e=>Km(e)===r);if(!(i<0||n<=i))for(let e=i+1;e<n;e+=1){if(U(t[e])?.role!==`user`)continue;let n=Km(t[e]);if(n)return n}}function gx(e,t){if(e.chatRunId!==t.runId)return;let n=e.chatStreamSegments??[],r=rx(e),i=typeof e.chatStream==`string`,a=i&&!!e.chatStream?.trim(),o=t.boundaryRunId?hx({messages:e.chatMessages,runId:t.runId,boundaryRunId:t.boundaryRunId,afterBoundaryRunId:r})??t.boundaryRunId:void 0;if(o){let e=n.findLastIndex(e=>e.boundaryRunId);n=n.map((t,n)=>n<=e||t.boundaryRunId?t:{...t,boundaryRunId:o})}if(a&&(n=[...n,{text:e.chatStream??``,ts:e.chatStreamStartedAt??t.timestamp??Date.now(),runId:t.runId,...r?{afterBoundaryRunId:r}:{},...o?{boundaryRunId:o}:{},...t.toolCallId?{toolCallId:t.toolCallId}:{},...t.persisted?{persisted:!0}:{}}]),t.boundaryRunId&&!n.some(e=>e.boundaryRunId===t.boundaryRunId)){let i=o===t.boundaryRunId?r:o;n=[...n,{text:``,ts:e.chatStreamStartedAt??t.timestamp??Date.now(),runId:t.runId,boundaryRunId:t.boundaryRunId,boundaryMarker:!0,...i?{afterBoundaryRunId:i}:{}}]}e.chatStreamSegments=n,i&&(e.chatStream=null,e.chatStreamStartedAt=null)}function _x(){return(_x=e((()=>{wi(),ds(),sh()})))()}function vx(e){try{let t=new URL(e,window.location.href);return(t.protocol===`http:`||t.protocol===`https:`)&&t.origin!==location.origin}catch{return!1}}function yx(e){let t=e.trim();if(t){if(t.startsWith(`/`)&&!t.startsWith(`//`)&&!t.startsWith(`/\\`))return t;try{return Sx.has(new URL(t).protocol.toLowerCase())?t:void 0}catch{return}}}function bx(e,t){let n=e.trim(),r=Cx.exec(n),i=r?.[2];return i===void 0?yx(n):(!t||r?.[1]?.toLowerCase()===t)&&i.length%4==0?n:void 0}function xx(e){let t=e.trim(),n=/^data:text\/plain;base64,([a-z0-9+/]*={0,2})$/i.exec(t)?.[1];return n===void 0?yx(t):n.length%4==0?t:void 0}var Sx,Cx;function wx(){return(wx=e((()=>{Sx=new Set([`http:`,`https:`,`blob:`]),Cx=/^data:(audio|video)\/[a-z0-9!#$&^_.+-]+;base64,([a-z0-9+/]+={0,2})$/i})))()}function Tx(e,t=0){if(e||t!==0)return JSON.stringify([t,e?.permissionMode,e?.permissionModePending,e?.execNode,e?.execCwd,e?.sessionRoot,e?.spawnedWorkspaceDir,e?.spawnedCwd,e?.worktree?.id])}function Ex(e,t){return`${e}\0${t}`}function Dx(e){let t=Qx.get(e);return t||(t={resources:new Map,children:new Set},Qx.set(e,t)),t}function Ox(e,t){!t.owner&&t.children.size===0&&t.resources.size===0&&Qx.delete(e)}function kx(e,t){if(e.subscribers.delete(t),e.subscribers.size>0)return;e.releaseAuthRecovery?.(),e.releaseAuthRecovery=void 0,Ix(e);let n=Ex(e.kind,e.cacheKey);Zx.get(n)===e&&(Zx.delete(n),e.retainUntil!==void 0&&e.retainUntil>Date.now()&&!e.discardWhenIdle&&!e.pending&&(Zx.set(n,e),Mx())),e.abortController?.abort(),e.abortController=void 0}function Ax(e,t){return Zx.get(Ex(e,t))}function jx(e,t,n,r=t,i){let a=Ex(e,t),o=Ax(e,t);o&&o.subscribers.size===0&&(o.discardWhenIdle||o.retainUntil!==void 0&&o.retainUntil<=Date.now())&&(Zx.delete(a),o.abortController?.abort(),Ix(o),o=void 0),o||(o={kind:e,cacheKey:t,cacheScope:i,discardWhenIdle:!1,value:void 0,pending:void 0,subscribers:new Set,retryAttempted:!1,unavailableAt:void 0,abortController:void 0,refresh:void 0,retainUntil:void 0},Zx.set(a,o));let s=!n||!o.subscribers.has(n);if(n){let t=Dx(n).resources,i=Ex(e,r),a=t.get(i);o.subscribers.add(n),a&&a!==o&&kx(a,n),t.set(i,o)}if(i!==void 0&&s)for(let[t,n]of Zx)n!==o&&n.kind===e&&n.cacheScope===i&&(n.discardWhenIdle=!0,n.subscribers.size===0&&!n.pending&&Zx.delete(t));return o}function Mx(){let e=[...Zx.entries()].filter(([,e])=>e.retainUntil!==void 0&&e.subscribers.size===0);for(let[t]of e.slice(0,-64))Zx.delete(t)}function Nx(e){return Zx.get(Ex(e.kind,e.cacheKey))===e}function Px(){return tS}function Fx(e){if(Nx(e)){tS=(tS+1)%(2**53-1);for(let t of Array.from(e.subscribers))e.subscribers.has(t)&&t()}}function Ix(e){e.refresh&&=(clearTimeout(e.refresh.timer),void 0)}function Lx(e,t,n){if(e.refresh?.at===t||(Ix(e),t===void 0||e.subscribers.size===0))return;let r={at:t,timer:setTimeout(()=>{Nx(e)&&e.refresh===r&&(e.refresh=void 0,n())},Math.max(0,t-Date.now()))};e.refresh=r}function Rx(e,t){let n=Dx(t);if(n.owner!==e){if(n.owner){let e=n.owner,r=Qx.get(e);r&&(r.children.delete(t),Ox(e,r))}Dx(e).children.add(t),n.owner=e}}function zx(e){let t=e&&Qx.get(e);if(e&&t){Qx.delete(e);for(let e of t.children)zx(e);if(t.owner){let n=Qx.get(t.owner);n&&(n.children.delete(e),Ox(t.owner,n))}for(let n of new Set(t.resources.values()))kx(n,e)}}function Bx(){let e=[...Zx.entries()].filter(([,e])=>e.kind===`managed-image`&&e.value===null&&e.subscribers.size===0&&!e.pending);for(let[t]of e.slice(0,-64))Zx.delete(t)}function Vx(e){let t=$x.get(e);if(t)return $x.delete(e),$x.set(e,t),t.url}function Hx(e){return $x.get(e)?.blob}function Ux(){for(;$x.size>eS;){let e=[...$x].find(([,e])=>e.retainCount===0);if(!e)return;let[t,n]=e;$x.delete(t);let r=Ex(`managed-image`,t),i=Zx.get(r);i?.value===n.url&&i.subscribers.size===0&&Zx.delete(r),URL.revokeObjectURL(n.url)}}function Wx(e){let t=$x.get(e);if(!t)return;t.retainCount+=1;let n=!1;return()=>{if(n)return;n=!0;let t=$x.get(e);t&&t.retainCount>0&&--t.retainCount,Ux()}}function Gx(e,t){let n=URL.createObjectURL(t),r=$x.get(e);return $x.delete(e),$x.set(e,{blob:t,url:n,retainCount:r?.retainCount??0}),r&&r.url!==n&&URL.revokeObjectURL(r.url),Ux(),n}function Kx(e,t){return!e.some(e=>t.factIndex===void 0?e.factIndex===void 0&&e.url===t.url&&e.artifactId===t.artifactId&&e.alt===t.alt:e.factIndex===t.factIndex)&&(e.push(t),!0)}function qx(e){let t=e.mimeType?.split(`;`,1)[0]?.trim().toLowerCase()??``,n=!t||t===`application/octet-stream`;if(e.kind===`image`||e.kind===`document`&&(Fs(e.url,t)||n&&Fs(e.label,void 0)))return t===`image/svg+xml`||n&&(es(e.url,void 0)||es(e.label,void 0))?`svg`:`raster`}function Jx(e,t,n=Date.now()){let r=tu(e),i=[],a=[],o=[],s=[],c=[],l=new Set,u=new Set,d=0,f,p=e=>e.type===`attachment_error`||!u.has(e.attachment.url)?(a.push(e),e.type===`attachment`&&u.add(e.attachment.url),!0):!1,m=e=>{if(e.url&&es(e.url,e.mimeType)&&vx(e.url))return{type:`attachment`,attachment:{url:e.url,kind:`image`,label:e.fileName?.trim()||e.alt?.trim()||Oc(e.url),mimeType:e.mimeType??`image/svg+xml`,...e.artifactId===void 0?{}:{artifactId:e.artifactId},...e.sizeBytes===void 0?{}:{sizeBytes:e.sizeBytes}}}},h=tu(tu(r.__openclaw).mediaImageLayout),g=Array.isArray(h.slots)?h.slots.map(tu):[],_=g.length>0?new Set(g.map(e=>e.factIndex)):void 0,v=_!==void 0&&!(Array.isArray(h.suppressedFactIndexes)&&h.suppressedFactIndexes.length>0)&&g.every(e=>(e.kind===`inline`||e.kind===`offloaded`)&&typeof e.factIndex==`number`&&Number.isSafeInteger(e.factIndex)&&e.factIndex>=0)&&_.size===g.length,y=v?g.filter(e=>e.kind===`inline`):[],b=0;for(let e of t){if(e.type===`text`&&typeof e.text==`string`){let t=o.at(-1);t?.type===`text`?t.text+=`\n${e.text}`:o.push({type:`text`,text:e.text});continue}if(e.type===`attachment`||e.type===`attachment_error`){if(e.type===`attachment`&&(l.add(e.attachment.url),qx(e.attachment)===`raster`)){let t={...e.attachment,alt:e.attachment.label,fileName:e.attachment.label};i.push(t),o.push({type:`image`,image:t});continue}p(e),o.push(e);continue}if(e.type===`omitted_media`){b+=1;continue}if(e.type!==`image`)continue;if(e.expiresAtMs!==void 0){if(e.expiresAtMs<=n){d+=1;continue}f=Math.min(f??e.expiresAtMs,e.expiresAtMs)}let t=e.inlineSlot?y[b++]?.factIndex:void 0,r=[],a=new Set;for(let n of e.sources){let{url:e,dataUrl:i,preferData:s,mimeType:c,...u}=n;e!==void 0&&l.add(e);let d=m(n);d&&!a.has(d.attachment.url)&&(p(d),o.push(d),a.add(d.attachment.url));let f=s?i??(d?void 0:e):(d?void 0:e)??i;f===void 0?u.artifactId&&Kx(r,{...u,artifactId:u.artifactId}):Kx(r,{...u,url:f,...typeof t==`number`?{factIndex:t}:{}})}i.push(...r),o.push(...r.map(e=>({type:`image`,image:e})))}if(b!==y.length)for(let e of i)delete e.factIndex;for(let{path:t,mediaType:n,fileName:r,origin:a,sizeBytes:o,durationMs:u,width:d,height:f,factIndex:m}of ys(e)){if(!v&&l.has(t))continue;let e=qx({kind:`document`,url:t,label:r?.trim()||Oc(t),mimeType:n});if(e===`raster`){let e={url:t,fileName:r,sizeBytes:o,...v&&_.has(m)?{factIndex:m}:{}};Kx(i,e)&&!l.has(t)&&s.push(e)}else{let i={type:`attachment`,attachment:{url:t,kind:e===`svg`?`image`:Sc(t,n)?`audio`:uc(t,n)?`video`:`document`,label:r?.trim()||Oc(t),...a?{origin:a}:{},...typeof n==`string`?{mimeType:n}:{},...o===void 0?{}:{sizeBytes:o},...u===void 0?{}:{durationMs:u},...d===void 0?{}:{width:d},...f===void 0?{}:{height:f}}};p(i)&&!l.has(t)&&c.push(i)}}return{images:i,attachments:a,orderedContent:o,supplementalImages:s,supplementalAttachments:c,expiredPairingQrCount:d,nextPairingQrExpiresAt:f}}function Yx(e,t,n){if(!n)return;if(t===void 0){let t=Qx.get(n),r=Ex(`pairing-qr`,e),i=t?.resources.get(r);t&&i&&(t.resources.delete(r),kx(i,n),Ox(n,t));return}let r=jx(`pairing-qr`,e,n);Lx(r,t,()=>Fx(r))}function Xx(e,t=_a(e).content){let{images:n,attachments:r}=Jx(e,t);return[...n.map(e=>e.fileName?.trim()||e.alt?.trim()||M(`chat.imageLightbox.untitled`)),...t.flatMap(e=>{if(e.type!==`omitted_media`)return[];let t=e.media.sizeBytes===void 0?M(`chat.attachments.omittedFromHistory`):M(`chat.attachments.omittedFromHistoryWithSize`,{size:tn(e.media.sizeBytes)});return[`${M(`chat.attachments.image`)} · ${t}`]}),...r.map(e=>e.attachment.label.trim()||M(`chat.attachments.attachedFile`))].join(`
`)}var Zx,Qx,$x,eS,tS;function nS(){return(nS=e((()=>{b(),Vt(),ds(),Oo(),sc(),wx(),Zx=new Map,Qx=new Map,$x=new Map,eS=64,tS=0})))()}function rS(e,t){let n=e.senderSession?.sessionKey,r=n?Et(n):null,i=/^cron:([^:]+):run:([^:]+)$/u.exec(r?.rest??``),a=i?.[1],o=i?.[2],s=!Fe(n)&&r&&!!t.agentId&&r.agentId!==t.agentId,c=t.linkSource!==!1&&r?n:void 0,l=r?t.agents?.find(e=>e.id===r.agentId)?.identity?.name?.trim()||r.agentId:void 0,u=!!(r&&t.mainKey&&r.rest===t.mainKey),d=e.senderSession?.label??(i?M(`chat.messages.forwardedAutomation`):u?l:void 0),f=!u&&s?l:void 0,p=s&&t.updateCount===void 0&&t.showAvatar!==!1?kb(r.agentId,t):z,m=a&&o?R`<a
class="markdown-session-link markdown-session-link--titled markdown-session-link--automation"
role="link"
tabindex="0"
href=${`${Vn(`cron`,t.basePath)}?${new URLSearchParams({job:a,run:o})}`}
data-cron-run-link
><span class="session-link-icon" aria-hidden="true">${F.clock}</span
><span class="session-label" .textContent=${d}></span
></a>`:R`<a
class="markdown-session-link${d?` markdown-session-link--titled`:``}${s&&u?` markdown-session-link--agent`:``}"
role="link"
tabindex="0"
data-session-key=${c}
><span class="session-label" .textContent=${d??c}></span
></a>`,h=t.updateCount===void 0?M(`chat.messages.forwardedFrom`):M(t.updateCount===1?`chat.messages.interSessionUpdateFrom`:`chat.messages.interSessionUpdatesFrom`,{count:String(t.updateCount)});return R`
<span class="chat-reply-attribution chat-reply-attribution--forwarded">
<span class="chat-reply-attribution__icon" aria-hidden="true">${F.forward}</span>
${c?R`<span>${h}</span>
${s?R`<span class="chat-reply-attribution__agent">
${p===z?z:R`<span
class="chat-reply-attribution__agent-avatar"
aria-hidden="true"
>${p}</span
>`}
${f?R`<span>${f}</span>`:m}
</span>
${f?R`<span aria-hidden="true">·</span> ${m}`:z}`:m} `:n?R`<span>${h}</span>
${f?R`<span>${f} ·</span>`:z}
<span
?data-session-title-only=${!!r}
data-session-key=${r?n:z}
class=${d?`markdown-session-link--titled`:z}
><span
class="session-label"
.textContent=${d??n}
></span
></span>`:R`<span
>${t.updateCount===void 0?z:M(t.updateCount===1?`chat.messages.interSessionUpdate`:`chat.messages.interSessionUpdates`,{count:String(t.updateCount)})}
${t.updateCount===void 0?z:` · `}${e.senderSession?.agentId?M(`chat.messages.forwardedFromAgent`,{agentId:e.senderSession.agentId}):M(`chat.messages.forwardedMessage`)}</span
>`}
</span>
`}function iS(){return(iS=e((()=>{B(),pr(),I(),b(),ns(),O(),Wb(),fc()})))()}var aS=t({fetchPluginThemeArtworkBlobUrl:()=>pS});function oS(e){return e?.split(`;`,1)[0]?.trim().toLowerCase()??``}function sS(e){e.bodyUsed||e.body?.cancel().catch(()=>void 0)}async function cS(e,t,n=!1){if(!Yn(e.gatewayUrl))return null;let r=e.authCandidates??zn(e.auth),i=r.length>0?r:[``];for(let r of i){let i={Accept:`image/avif,image/webp,image/png,image/jpeg,image/gif,image/svg+xml`};r&&(i.Authorization=`Bearer ${r}`);let a=await fetch(t,{method:`GET`,headers:i,credentials:`same-origin`,signal:e.signal});if(!a.ok){if(sS(a),a.status===401||a.status===403)continue;return null}let o=oS(a.headers.get(`content-type`));if(!mS.has(o)||n&&o!==`image/svg+xml`)return sS(a),null;let s=await a.blob(),c=o===`image/svg+xml`?await Yl(async()=>{let{rasterizeSvg:e}=await import(`./svg-icon-rasterizer-BFsqBDlK.js`);return{rasterizeSvg:e}},__vite__mapDeps([9]),import.meta.url).then(({rasterizeSvg:e})=>e(s)):s;return c?URL.createObjectURL(c):null}return null}function lS(e){return cS(e,kl(`pluginIcon`,e.resourceBasePath,e.pluginId))}function uS(e){let t=kl(`pluginActivityIcon`,e.resourceBasePath,e.pluginId);return cS(e,e.tool?`${t}?tool=${encodeURIComponent(e.tool)}`:t,!0)}function dS(e){return cS(e,kl(`catalogIcon`,e.resourceBasePath,e.iconUrl))}function fS(e){return cS(e,kl(`linkFavicon`,e.resourceBasePath,e.hostname))}function pS(e){return Yl(async()=>{let{loadPluginThemeArtwork:e}=await import(`./theme-artwork-loader-B9Roi802.js`);return{loadPluginThemeArtwork:e}},__vite__mapDeps([10,0,5]),import.meta.url).then(({loadPluginThemeArtwork:t})=>t(e))}var mS;function hS(){return(hS=e((()=>{Tl(),$n(),$l(),mS=new Set([`image/png`,`image/svg+xml`,`image/x-icon`])})))()}function gS(e,t){let n=hs(e),r=t?.split(`;`,1)[0]?.trim().toLowerCase(),i=(n?yS.find(e=>e.extensions.includes(n)):void 0)??(r?yS.find(e=>e.mimeTypes.includes(r)):void 0)??bS,a=n?i.compactByExtension?.[n]??i.compact:i.compact,o=(n?i.accentByExtension?.[n]:void 0)??(r?i.accentByMimeType?.[r]:void 0)??i.accent;return{family:i.family,accent:o,extension:n,extensionLabel:n?.toUpperCase()??(i.family===`unknown`?`FILE`:i.family.toUpperCase()),compact:a}}function _S(e){return Kn(`file-icons/${e}.svg`)}function vS(e){let t=gS(e.filename,e.mimeType),n=e.mode===`large-placeholder`,r=n?`44px`:`20px`,i=e=>_S(n?`large/shell-${e}`:t.compact?`compact/${e}/${t.compact}`:`compact/unknown-${e}`);return R`<span
class="chat-attachment-file-icon ${e.unavailable?`chat-attachment-file-icon--unavailable`:``} ${e.loading?`skeleton`:``}"
data-family=${t.family}
data-mode=${e.mode}
aria-hidden="true"
style=${Wr({width:r,height:r,"--chat-file-icon-light":`url("${i(`light`)}")`,"--chat-file-icon-dark":`url("${i(`dark`)}")`,"--chat-file-icon-overlay":`url("${_S(`overlays/${t.family}`)}")`,"--chat-file-icon-accent":t.accent})}
>
${n?R`<span class="chat-attachment-file-icon__overlay"></span>`:null}
</span>`}var yS,bS;function xS(){return(xS=e((()=>{B(),Gr(),Mn(),sc(),yS=[{family:`unknown`,accent:`#929292`,extensions:[],mimeTypes:[`application/octet-stream`]},{family:`pdf`,accent:`#E94B64`,extensions:[`pdf`],mimeTypes:[`application/pdf`],compact:`pdf`},{family:`document`,accent:`#5B7FD6`,extensions:[`doc`,`docx`,`rtf`,`odt`,`pages`],mimeTypes:[`application/msword`,`application/vnd.openxmlformats-officedocument.wordprocessingml.document`,`application/rtf`,`text/rtf`,`application/vnd.oasis.opendocument.text`],compact:`docx`,compactByExtension:{rtf:`rtf`}},{family:`spreadsheet`,accent:`#3FA66B`,extensions:[`csv`,`xls`,`xlsx`,`ods`,`numbers`],mimeTypes:[`text/csv`,`application/vnd.ms-excel`,`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`,`application/vnd.oasis.opendocument.spreadsheet`],compact:`xlsx`,compactByExtension:{csv:`csv`}},{family:`image`,accent:`#3FA66B`,extensions:[`gif`,`jpg`,`jpeg`,`png`,`webp`,`avif`,`heic`],mimeTypes:[`image/gif`,`image/jpeg`,`image/png`,`image/webp`,`image/avif`,`image/heic`],compact:`png`,compactByExtension:{gif:`gif`,jpg:`jpg`,jpeg:`jpg`}},{family:`video`,accent:`#E94B64`,extensions:[`mp4`,`mov`,`m4v`,`webm`,`mkv`],mimeTypes:[`video/mp4`,`video/quicktime`,`video/webm`,`video/x-matroska`],compact:`mp4`},{family:`audio`,accent:`#E86672`,extensions:[`mp3`,`wav`,`m4a`,`aac`,`flac`,`ogg`],mimeTypes:[`audio/mpeg`,`audio/wav`,`audio/x-wav`,`audio/mp4`,`audio/aac`,`audio/flac`,`audio/ogg`],compact:`wav`,compactByExtension:{mp3:`mp3`}},{family:`archive`,accent:`#8B7CF6`,extensions:[`zip`,`rar`,`7z`,`tar`,`gz`,`tgz`,`bz2`],mimeTypes:[`application/zip`,`application/x-rar-compressed`,`application/x-7z-compressed`,`application/x-tar`,`application/gzip`],compact:`zip`},{family:`text`,accent:`#5B7FD6`,extensions:[`txt`,`log`],mimeTypes:[`text/plain`],compact:`txt`},{family:`markdown`,accent:`#5B7FD6`,extensions:[`md`,`mdx`,`markdown`],mimeTypes:[`text/markdown`,`text/x-markdown`],compact:`md`},{family:`code`,accent:`#E76F3C`,accentByExtension:{css:`#8B7CF6`},accentByMimeType:{"text/css":`#8B7CF6`},extensions:[`css`,`html`,`htm`,`xml`,`jsx`,`tsx`,`ts`,`sh`,`bash`,`zsh`],mimeTypes:[`text/css`,`text/html`,`application/xml`,`text/xml`,`application/typescript`,`text/x-shellscript`],compact:`html`,compactByExtension:{css:`css`,xml:`xml`}},{family:`javascript`,accent:`#F2A93B`,extensions:[`js`,`cjs`,`mjs`],mimeTypes:[`text/javascript`,`application/javascript`],compact:`js`},{family:`json`,accent:`#F2A93B`,extensions:[`json`,`jsonl`,`geojson`],mimeTypes:[`application/json`,`application/ld+json`,`application/x-ndjson`,`application/geo+json`],compact:`json`},{family:`python`,accent:`#F2A93B`,extensions:[`py`,`pyw`,`pyi`],mimeTypes:[`text/x-python`,`application/x-python-code`],compact:`py`},{family:`svg`,accent:`#E76F3C`,extensions:[`svg`,`svgz`],mimeTypes:[`image/svg+xml`],compact:`svg`},{family:`yaml`,accent:`#E86672`,extensions:[`yaml`,`yml`],mimeTypes:[`application/yaml`,`text/yaml`,`application/x-yaml`,`text/x-yaml`],compact:`yaml`}],bS=yS[0]})))()}function SS(e){return M(e===`file-not-found`?`chat.attachments.failureFileNotFound`:e===`unsupported-format`?`chat.attachments.failureUnsupportedFormat`:e===`invalid-reference`?`chat.attachments.failureInvalidReference`:`chat.attachments.failureDeliveryFailed`)}function CS(e){return e.length===0?z:R`${e.map(e=>{let t=e.media.sizeBytes===void 0?M(`chat.attachments.omittedFromHistory`):M(`chat.attachments.omittedFromHistoryWithSize`,{size:tn(e.media.sizeBytes)});return wS({label:M(`chat.attachments.image`),badge:M(`chat.attachments.history`),reason:t})})}`}function wS(e){let t=e.reason!==void 0,n=t&&(e.onRetry!==void 0||e.onAllow!==void 0);return R`
<div
class="chat-assistant-attachment-card chat-assistant-attachment-card--blocked ${t?n?`chat-assistant-attachment-card--recoverable`:`chat-assistant-attachment-card--definitive`:`chat-assistant-attachment-card--checking`}"
aria-busy=${t?z:`true`}
>
<div class="chat-assistant-attachment-card__header">
<div class="chat-assistant-attachment-card__identity">
${vS({filename:e.label,mimeType:e.mimeType,mode:`large-placeholder`,unavailable:t})}
<span class="chat-assistant-attachment-card__details">
<span
class="chat-assistant-attachment-card__title ${t?`chat-assistant-attachment-card__title--unavailable`:``}"
title=${e.path??e.label}
tabindex=${e.path?`0`:z}
>${e.label}</span
>
<span
class="chat-assistant-attachment-card__meta chat-assistant-attachment-card__status-meta ${t?``:`skeleton skeleton-line`}"
aria-hidden=${t?z:`true`}
>
<span class="chat-assistant-attachment-card__status-badge">${e.badge}</span>
${e.reason?R`
<span
class="chat-assistant-attachment-card__status-separator"
aria-hidden="true"
>·</span
>
<span class="chat-assistant-attachment-card__status-reason"
>${e.reason}</span
>
`:z}
</span>
</span>
</div>
${e.onAllow?R`<button
class="chat-assistant-attachment-card__action chat-assistant-attachment-card__action--labeled"
type="button"
@click=${e.onAllow}
>
${M(`chat.attachments.allowImage`)}
</button>`:e.onRetry?R`<button
class="chat-assistant-attachment-card__action chat-assistant-attachment-card__action--labeled chat-assistant-attachment-card__retry"
type="button"
@click=${e.onRetry}
>
${F.refresh} ${M(`common.retry`)}
</button>`:t?z:R`<span
class="chat-assistant-attachment-card__actions chat-assistant-attachment-card__actions--loading"
aria-hidden="true"
data-label=${M(`chat.attachments.open`)}
>
<span
class="chat-assistant-attachment-card__action-skeleton skeleton"
aria-hidden="true"
></span>
</span>`}
</div>
</div>
`}function TS(){return(TS=e((()=>{B(),I(),b(),Vt(),xS()})))()}function ES(e,t,n){return R`<div
${t?Or(t):z}
class="chat-assistant-attachment-card chat-assistant-attachment-card--compact"
?data-openable=${!!e.onExpand}
@focusin=${n??z}
@click=${t=>OS(t,e.onExpand)}
>
${AS({...e,visualMode:`large-placeholder`})}
</div>`}function DS(){return R`<div
class="sidebar-attachment-preview__loading"
role="status"
aria-label=${M(`common.loading`)}
>
<div class="skeleton skeleton-line" aria-hidden="true"></div>
<div class="skeleton skeleton-line skeleton-line--long" aria-hidden="true"></div>
<div class="skeleton skeleton-line skeleton-line--medium" aria-hidden="true"></div>
</div>`}function OS(e,t){if(t&&!e.defaultPrevented){for(let t of e.composedPath()){if(t===e.currentTarget)break;if(t instanceof Element&&t.matches(jS))return}t()}}function kS(e,t,n){return e===`audio`?M(`chat.attachments.audio`):e===`video`?M(`chat.attachments.video`):e===`image`?M(`chat.attachments.attachedFile`):gS(t,n).extensionLabel}function AS(e){let t=e.loading?`skeleton`:``,n=e.visualMode===`preview-with-favicon`,r=e.sizeBytes===void 0?void 0:tn(e.sizeBytes),i=[kS(e.kind,e.label,e.mimeType),r].filter(Boolean).join(` · `),a=M(`chat.mediaPlayer.download`,{filename:e.label}),o=e.onExpand!==void 0,s=e.expandLabel??M(`chat.attachments.expand`,{filename:e.label}),c=`chat-assistant-attachment-card__action chat-assistant-attachment-card__download chat-assistant-attachment-card__download--ghost ${o?`chat-assistant-attachment-card__download--secondary`:``}`;return R`
<div
class="chat-assistant-attachment-card__header ${n?`chat-assistant-attachment-card__header--preview`:``}"
>
<div class="chat-assistant-attachment-card__identity">
${vS({filename:e.label,mimeType:e.mimeType,mode:e.visualMode??`large-placeholder`,loading:e.loading})}
<span
class="chat-assistant-attachment-card__details ${n?`chat-assistant-attachment-card__details--preview`:``}"
>
<span class="chat-assistant-attachment-card__title ${t}" title=${e.label}
>${e.label}</span
>
${n?r?R`<span class="chat-assistant-attachment-card__separator" aria-hidden="true"
>·</span
><span class="chat-assistant-attachment-card__meta ${t}"
>${r}</span
>`:null:R`<span class="chat-assistant-attachment-card__meta">${i}</span>`}
</span>
</div>
<span class="chat-assistant-attachment-card__actions">
${e.voiceNote&&!n?R`<span class="chat-assistant-attachment-badge"
>${M(`chat.messages.voiceNote`)}</span
>`:null}
${e.onDownload?R`<button
type="button"
class=${`${c} ${t}`}
?disabled=${e.downloadPending}
aria-label=${a}
title=${a}
@click=${e.onDownload}
>
${F.download}
</button>`:e.downloadHref||e.downloadPending?R`<a
class=${`${c} ${t}`}
href=${e.downloadPending?z:e.downloadHref}
aria-disabled=${e.downloadPending?`true`:z}
tabindex=${e.downloadPending&&e.downloadPendingFocusable?0:z}
role="link"
download=${e.label}
target="_blank"
rel="noreferrer"
aria-label=${a}
title=${a}
>${F.download}</a
>`:null}
${o?R`<button
type="button"
class="chat-assistant-attachment-card__action ${n?`chat-assistant-attachment-card__expand--icon`:`chat-assistant-attachment-card__action--labeled`} chat-assistant-attachment-card__expand"
aria-label=${s}
title=${s}
@click=${e.onExpand}
>
${n?F.chevronsUpDown:R`<span>${M(`chat.attachments.open`)}</span>`}
</button>`:null}
</span>
</div>
`}var jS;function MS(){return(MS=e((()=>{B(),Ar(),I(),b(),ns(),Vt(),xS(),fc(),jS=`a, button, input, select, textarea, audio, video, iframe, [contenteditable='true'], [tabindex], [role='button']`})))()}function NS(e,t,n){if(typeof IntersectionObserver!=`function`)return t(),()=>void 0;let r=new IntersectionObserver(e=>{let i=e.at(-1);if(i){if(!(n?i.isIntersecting:e.some(e=>e.isIntersecting))){n?.();return}n||r.disconnect(),t()}},{rootMargin:PS});return r.observe(e),()=>r.disconnect()}var PS,FS;function IS(){return(IS=e((()=>{PS=`240px 0px`,FS=class{constructor(e){this.onVisible=e,this.element=null,this.setElement=e=>{let t=e instanceof HTMLElement?e:null;this.element!==t&&(this.disconnect(),this.element=t,t&&(this.stopObserving=NS(t,this.onVisible)))}}disconnect(){this.stopObserving?.(),this.stopObserving=void 0,this.element=null}}})))()}function LS(e,t){if(BS?.media===e){BS.onSuperseded=t;return}BS?.onSuperseded(),BS?.media.pause(),BS={media:e,onSuperseded:t}}function RS(e){BS?.media===e&&(BS=null)}function zS(e){return BS===null||BS.media===e}var BS;function VS(){return(VS=e((()=>{BS=null})))()}function HS(e){return e.durationSeconds!==void 0&&Number.isFinite(e.durationSeconds)&&e.durationSeconds>=0&&e.durationSeconds<=XS&&(e.sizeBytes===void 0||Number.isFinite(e.sizeBytes)&&e.sizeBytes>=0&&e.sizeBytes<=8388608)}function US(e,t=ZS){let n=Math.max(1,Math.floor(t));if(e.length<=0||e.numberOfChannels<=0)return Array.from({length:n},()=>0);let r=Array.from({length:e.numberOfChannels},(t,n)=>e.getChannelData(n)),i=Array.from({length:n},()=>0);for(let t=0;t<n;t+=1){let a=Math.floor(t*e.length/n),o=Math.max(a+1,Math.floor((t+1)*e.length/n)),s=0;for(let e of r)for(let t=a;t<Math.min(o,e.length);t+=1)s=Math.max(s,Math.abs(e[t]??0));i[t]=s}let a=Math.max(...i);return a>0?i.map(e=>e/a):i}function WS(e){if(e>eC)return!1;let t=()=>[...QS.values()].reduce((e,t)=>e+t.sizeBytes,0);for(;QS.size+1>$S||t()+e>eC;){let e=[...QS].find(([,e])=>e.retainCount===0);if(!e)return!1;let[t,n]=e;QS.delete(t),URL.revokeObjectURL(n.blobUrl)}return!0}function GS(e){e.retainCount+=1;let t=!1;return{value:e,release:()=>{t||(t=!0,--e.retainCount)}}}function KS(e){let t=QS.get(e);return t?(QS.delete(e),QS.set(e,t),GS(t)):null}function qS(e,t){let n=QS.get(e);if(n)return n.blobUrl!==t.blobUrl&&URL.revokeObjectURL(t.blobUrl),KS(e);if(!WS(t.sizeBytes))return URL.revokeObjectURL(t.blobUrl),null;let r={...t,retainCount:0};return QS.set(e,r),GS(r)}var JS,YS,XS,ZS,QS,$S,eC;function tC(){return(tC=e((()=>{JS=8388608,YS=16e3,XS=300,ZS=96,QS=new Map,$S=32,eC=50331648})))()}function nC(e){let t=e.trim();return/^\/(?:__openclaw__|media|api\/chat\/media\/outgoing)\//.test(t)?!1:rC(t)||/^file:/iu.test(t)||t.startsWith(`~`)||t.startsWith(`/`)||/^[a-zA-Z]:[\\/]/.test(t)||!!t&&!/^[a-z][a-z0-9+.-]*:/iu.test(t)}function rC(e){let t=/^media:\/\/inbound\/([^/?#]+)$/i.exec(e.trim());if(!t?.[1])return!1;try{let e=decodeURIComponent(t[1]);return e!==`.`&&e!==`..`&&!e.includes(`/`)&&!e.includes(`\\`)&&!e.includes(`\0`)}catch{return!1}}function iC(e,t,n,r,i){return nC(e)?md(e,t,n,r,i):e}function aC(e,t,n){let r=e.trim();if(!r)return r;let i=r.indexOf(`#`),a=i===-1?``:r.slice(i),o=i===-1?r:r.slice(0,i),s=o.indexOf(`?`),c=s===-1?o:o.slice(0,s),l=new URLSearchParams(s===-1?``:o.slice(s+1));return l.set(t,n),`${c}?${l.toString()}${a}`}function oC(e,t){if(!e.startsWith(`/`)||e.startsWith(`//`))return e;try{let n=new URL(e,window.location.origin),r=Kl(t??``);return`${r&&n.pathname!==r&&!n.pathname.startsWith(`${r}/`)?`${r}${n.pathname}`:n.pathname}${n.search}${n.hash}`}catch{return e}}function sC(){return(sC=e((()=>{pr(),sd()})))()}function cC(e){return e.reason instanceof Error?e.reason:new DOMException(`playback preparation aborted`,`AbortError`)}function lC(e){return aC(e,`playback`,`1`)}function uC(e){let t=new Headers,n=e?.trim();return n&&t.set(`Authorization`,`Bearer ${n}`),t}async function dC(e){let t=new AbortController,n,r=new Promise((e,t)=>{n=t}),i=()=>{let r=cC(e.signal);t.abort(r),n?.(r)};e.signal.addEventListener(`abort`,i,{once:!0}),e.signal.aborted&&i();let a=setTimeout(()=>{let e=new DOMException(`playback readiness request timed out`,`TimeoutError`);t.abort(e),n?.(e)},e.timeoutMs);try{return await Promise.race([fetch(e.source,{method:`HEAD`,headers:e.headers,credentials:`same-origin`,signal:t.signal}),r])}finally{clearTimeout(a),e.signal.removeEventListener(`abort`,i)}}async function fC(e){let t=uC(e.authToken);t.set(`Accept`,`audio/*, video/*`);let n=Date.now()+hC;for(let r=0;;r+=1){if(e.signal.aborted)return`aborted`;try{let i=n-Date.now();if(i<=0)return`unavailable`;let a=await dC({source:e.source,headers:t,signal:e.signal,timeoutMs:Math.min(mC,i)});if(a.status!==202)return a.ok?`ready`:`unavailable`;let o=pC[r];if(o===void 0)return`unavailable`;let s=n-Date.now();if(s<=0)return`unavailable`;await Sl(Math.min(o,s),e.signal)}catch{return e.signal.aborted?`aborted`:`unavailable`}}}var pC,mC,hC;function gC(){return(gC=e((()=>{jl(),sC(),pC=[2e3,4e3,8e3,16e3,3e4,3e4,2e4],mC=3e4,hC=12e4})))()}function _C(e){return Number.isFinite(e)&&e>0?e:0}var vC;function yC(){return(yC=e((()=>{gC(),vC=class{constructor(){this.appliedSource=``,this.appliedIdentity=``,this.pendingSource=``,this.pendingIdentity=``,this.restore=null,this.sourceFailed=!1,this.authorizationKey=``,this.readinessRequest=null,this.playbackSource=``,this.playbackReadiness=`idle`}get currentIdentity(){return this.appliedIdentity}get readySource(){return this.playbackSource}get readiness(){return this.playbackReadiness}sync(e,t,n,r,i){let a=t.trim(),o=n.trim(),s=i?.trim()??``;if(!a||!o)return null;let c=`${o}\0${s}`;this.authorizationKey&&c!==this.authorizationKey&&this.reset(e),this.authorizationKey=c;let l=r===`transcode`?lC(a):a;if(r!==`transcode`)return this.abortReadiness(),this.sourceFailed=!1,this.playbackReadiness=`ready`,this.playbackSource=l,this.updateSource(e,l,o),null;let u=[l,o,s].join(`\0`);if(u===this.readinessRequest?.key)return this.playbackSource===l&&this.updateSource(e,l,o),this.readinessRequest.promise;this.abortReadiness();let d=new AbortController,f=()=>this.appliedIdentity===o&&!this.sourceFailed;this.playbackSource=``,this.playbackReadiness=f()?`ready`:`preparing`;let p=fC({source:l,authToken:s||null,signal:d.signal}).then(t=>{if(this.readinessRequest?.controller===d&&t!==`aborted`){if(t!==`ready`){f()?(this.playbackSource=this.appliedSource,this.playbackReadiness=`ready`):this.playbackReadiness=`unavailable`;return}this.playbackSource=l,this.playbackReadiness=`ready`,this.updateSource(e,l,o)}});return this.readinessRequest={key:u,controller:d,promise:p},p}cancel(){this.abortReadiness(),this.cancelPendingResume(),this.playbackSource=``,this.playbackReadiness=`idle`}updateSource(e,t,n=t){let r=t.trim(),i=n.trim();if(r&&i){if(this.playbackReadiness=`ready`,this.appliedIdentity&&i!==this.appliedIdentity){e.paused||e.pause(),this.applySource(e,r,i,null);return}if(!(r===this.pendingSource&&i===this.pendingIdentity||r===this.appliedSource&&i===this.appliedIdentity)){if(e.error){this.applySource(e,r,i,{currentTime:_C(e.currentTime),paused:e.paused});return}if(!this.appliedSource||e.ended||e.paused&&_C(e.currentTime)===0){this.applySource(e,r,i,null);return}this.pendingSource=r,this.pendingIdentity=i}}}handleEnded(e){return this.pendingSource?(this.applySource(e,this.pendingSource,this.pendingIdentity,null),!0):!1}handleError(e){return this.applyPendingSource(e)?!0:(this.sourceFailed=!0,this.playbackSource=``,this.playbackReadiness=`unavailable`,!1)}applyPendingSource(e){return this.pendingSource?(this.applySource(e,this.pendingSource,this.pendingIdentity,{currentTime:_C(e.currentTime),paused:e.paused}),!0):!1}seek(e,t){let n=Math.max(0,_C(t));try{return e.currentTime=n,!0}catch{return this.pendingSource?(this.applySource(e,this.pendingSource,this.pendingIdentity,{currentTime:n,paused:e.paused}),!0):!1}}cancelPendingResume(){this.restore&&!this.restore.paused&&(this.restore={...this.restore,paused:!0})}reset(e){e.paused||e.pause(),this.appliedSource=``,this.appliedIdentity=``,this.pendingSource=``,this.pendingIdentity=``,this.restore=null,this.sourceFailed=!1,this.playbackSource=``,e.removeAttribute(`src`),e.load()}handleLoadedMetadata(e,t=()=>!0){this.sourceFailed=!1;let n=this.restore;if(!n)return;this.restore=null;let r=Number.isFinite(e.duration)?e.duration:n.currentTime;e.currentTime=Math.min(n.currentTime,Math.max(0,r)),!n.paused&&e.isConnected&&t()&&e.play().catch(()=>void 0)}applySource(e,t,n,r){this.appliedSource=t,this.appliedIdentity=n,this.pendingSource=``,this.pendingIdentity=``,this.restore=r,this.sourceFailed=!1,e.src=t}abortReadiness(){this.readinessRequest?.controller.abort(),this.readinessRequest=null}}})))()}async function bC(e,t,n={}){let r=e.headers.get(`Content-Length`),i=r===null?void 0:Number(r);if(!n.truncate&&i!==void 0&&Number.isFinite(i)&&i>t)return await e.body?.cancel().catch(()=>void 0),null;let a=e.body?.getReader();if(!a)return null;let o=[],s=0;try{if((await Ri({maxBytes:t,stopAtLimit:n.truncate,skipEmptyChunks:!1,read:()=>a.read(),onChunk:e=>{o.push(e),s+=e.byteLength},onLimit:()=>a.cancel().catch(()=>void 0)})).truncated&&!n.truncate)return null}finally{a.releaseLock()}let c=new Uint8Array(s),l=0;for(let e of o)c.set(e,l),l+=e.byteLength;return c.buffer}function xC(){return(xC=e((()=>{Ul()})))()}function SC(e){if(!Number.isFinite(e)||e<0)return`0:00`;let t=Math.floor(e),n=Math.floor(t/60),r=t%60;return`${n}:${String(r).padStart(2,`0`)}`}var CC,wC,TC,EC;function DC(){return(DC=e((()=>{B(),qr(),Ar(),Gr(),I(),b(),Ie(),MS(),wx(),IS(),VS(),tC(),gC(),yC(),xC(),CC=5,wC=3e4,TC=1.2,EC=class extends Pe{constructor(...e){super(...e),this.src=``,this.sourceIdentity=``,this.label=``,this.mimeType=``,this.playback=`native`,this.authToken=null,this.voiceNote=!1,this.currentTime=0,this.duration=0,this.buffered=0,this.playing=!1,this.muted=!1,this.waveformPeaks=null,this.waveformWidth=0,this.media=null,this.waveformElement=null,this.waveformResizeObserver=null,this.sourceController=new vC,this.cancelPendingResume=()=>this.sourceController.cancelPendingResume(),this.playRequest=null,this.waveformController=null,this.waveformAttempted=!1,this.waveformVisible=!1,this.viewport=new FS(()=>{this.waveformVisible=!0,this.prepareWaveformAudio().catch(()=>void 0)}),this.setMedia=e=>{this.media=e instanceof HTMLAudioElement?e:null,this.media&&(this.media.muted=this.muted),this.syncSource()},this.setWaveform=e=>{let t=e instanceof HTMLElement?e:null;if(this.waveformElement!==t){if(this.waveformResizeObserver?.disconnect(),this.waveformResizeObserver=null,this.waveformElement=t,!t){this.waveformWidth=0;return}this.updateWaveformWidth(t.getBoundingClientRect().width),typeof ResizeObserver<`u`&&(this.waveformResizeObserver=new ResizeObserver(([e])=>{e&&this.waveformElement===e.target&&this.updateWaveformWidth(e.contentRect.width)}),this.waveformResizeObserver.observe(t))}}}connectedCallback(){super.connectedCallback(),queueMicrotask(()=>this.syncSource())}disconnectedCallback(){this.viewport.disconnect(),this.sourceController.cancel(),this.releaseWaveformBlob?.(),this.releaseWaveformBlob=void 0,this.waveformController?.abort(),this.waveformController=null,this.waveformAttempted=!1,this.waveformResizeObserver?.disconnect(),this.waveformResizeObserver=null,this.waveformElement=null,this.media&&(this.media.paused||this.media.pause(),RS(this.media)),super.disconnectedCallback()}willUpdate(e){this.sourceController.readiness===`unavailable`&&(e.has(`src`)||e.has(`sourceIdentity`)||e.has(`playback`)||e.has(`authToken`))&&(this.releaseWaveformBlob?.(),this.releaseWaveformBlob=void 0,this.sourceController.cancel())}updated(e){(e.has(`src`)||e.has(`sourceIdentity`)||e.has(`playback`)||e.has(`authToken`)||e.has(`sizeBytes`)||e.has(`serverDurationMs`))&&((e.has(`sourceIdentity`)&&this.sourceController.currentIdentity&&this.sourceController.currentIdentity!==this.sourceIdentity.trim()||e.has(`playback`)||e.has(`authToken`))&&(this.waveformController?.abort(),this.waveformController=null,this.releaseWaveformBlob?.(),this.releaseWaveformBlob=void 0,this.waveformPeaks=null,this.waveformAttempted=!1,this.currentTime=0,this.duration=0,this.buffered=0,this.media&&!this.media.paused&&(this.media.pause(),RS(this.media))),this.syncSource(),this.waveformVisible&&this.prepareWaveformAudio().catch(()=>void 0))}updateWaveformWidth(e){let t=Math.max(0,e);Math.abs(t-this.waveformWidth)>=.5&&(this.waveformWidth=t)}syncSource(){let e=this.media;if(!e||!this.isConnected||this.releaseWaveformBlob)return;let t=this.sourceController.sync(e,this.src,this.sourceIdentity,this.playback,this.authToken);this.requestUpdate(),t?.then(()=>{this.isConnected&&(this.requestUpdate(),this.waveformVisible&&this.prepareWaveformAudio().catch(()=>void 0))})}resolveWaveformCacheKey(){return[this.sourceIdentity.trim(),this.playback,this.src.trim(),this.authToken?.trim()??``].join(`\0`)}applyPreparedAudio(e,t){let n=this.media;if(!n||e!==this.resolveWaveformCacheKey()){t.release();return}this.releaseWaveformBlob?.(),this.releaseWaveformBlob=t.release,this.waveformPeaks=t.value.peaks?.length?t.value.peaks:null,t.value.durationSeconds!==void 0&&(this.duration=t.value.durationSeconds),this.sourceController.updateSource(n,t.value.blobUrl,this.sourceIdentity)}adoptPreparedAudioForPlayback(){let e=this.media;if(e){if(!this.releaseWaveformBlob){let e=this.resolveWaveformCacheKey(),t=KS(e);t&&this.applyPreparedAudio(e,t)}this.sourceController.applyPendingSource(e)}}async prepareWaveformAudio(){let e=this.media,t=this.sourceController.readySource;if(!e||!t||this.releaseWaveformBlob||this.waveformAttempted)return;let n=this.resolveWaveformCacheKey(),r=KS(n);if(r){this.applyPreparedAudio(n,r);return}let i=this.serverDurationMs===void 0?void 0:this.serverDurationMs/1e3;if(i===void 0||!HS({sizeBytes:this.sizeBytes,durationSeconds:i}))return;let a=globalThis.AudioContext;if(!a)return;this.waveformAttempted=!0;let o=uC(this.authToken);o.set(`Accept`,`audio/*`);let s=new AbortController;this.waveformController=s;let c=setTimeout(()=>s.abort(new DOMException(`waveform fetch timed out`,`TimeoutError`)),wC),l,u;try{if(l=await fetch(t,{method:`GET`,headers:o,credentials:`same-origin`,signal:s.signal}),!l.ok)return;let e=await bC(l,JS);if(!e)return;u=e}finally{clearTimeout(c),this.waveformController===s&&(this.waveformController=null)}let d=new Blob([u],{type:l.headers.get(`Content-Type`)?.split(`;`,1)[0]?.trim()||`audio/mpeg`}),f=URL.createObjectURL(d),p,m;if(HS({sizeBytes:u.byteLength,durationSeconds:i})){let e=null;try{e=new a({sampleRate:YS});let t=await e.decodeAudioData(u.slice(0)),n=Number.isFinite(t.duration)?t.duration:void 0;n!==void 0&&n<=i*TC&&(p=US(t),m=n)}catch{}finally{await e?.close().catch(()=>void 0)}}if(!this.isConnected||n!==this.resolveWaveformCacheKey()){URL.revokeObjectURL(f);return}let h=qS(n,{blobUrl:f,sizeBytes:u.byteLength,...p?{peaks:p}:{},...m===void 0?{}:{durationSeconds:m}});h&&this.applyPreparedAudio(n,h)}togglePlayback(){let e=this.media;if(e&&this.sourceController.readiness===`ready`){if(e.paused){this.adoptPreparedAudioForPlayback(),LS(e,this.cancelPendingResume);let t=e.play();this.playRequest?t.catch(()=>{RS(e),this.playing=!1}):this.playRequest=t.then(()=>this.prepareWaveformAudio().catch(()=>void 0)).catch(()=>{RS(e),this.playing=!1}).finally(()=>{this.playRequest=null})}else e.pause()}}seekTo(e){let t=this.media;t&&this.sourceController.seek(t,Math.min(e,this.duration||e))&&(this.currentTime=t.currentTime)}toggleMuted(){this.muted=!this.muted,this.media&&(this.media.muted=this.muted)}handlePlayerKeydown(e){let t=e.target instanceof HTMLInputElement&&e.target.type===`range`;if(e.target===e.currentTarget||t){if(!t&&e.key===` `){e.preventDefault(),this.togglePlayback();return}if(e.key===`ArrowLeft`||e.key===`ArrowRight`||t&&(e.key===`ArrowDown`||e.key===`ArrowUp`)){e.preventDefault();let t=e.key===`ArrowLeft`||e.key===`ArrowDown`?-1:1;this.seekTo(this.currentTime+t*CC)}}}updateBuffered(){let e=this.media;if(!e||!this.duration||e.buffered.length===0){this.buffered=0;return}this.buffered=Math.min(1,e.buffered.end(e.buffered.length-1)/this.duration)}renderSeek(e){let t=this.waveformPeaks,n=R`<input
class=${t?`chat-audio-player__seek chat-audio-player__seek--waveform`:`chat-audio-player__seek`}
type="range"
min="0"
max=${String(this.duration||0)}
step="0.01"
.value=${String(Math.min(this.currentTime,this.duration||this.currentTime))}
aria-label=${M(`chat.mediaPlayer.seek`)}
aria-valuetext=${`${SC(this.currentTime)} / ${SC(this.duration)}`}
style=${Wr({"--chat-audio-progress":`${e*100}%`,"--chat-audio-buffered":`${Math.max(e,this.buffered)*100}%`})}
@input=${e=>this.seekTo(Number(e.currentTarget.value))}
/>`;if(!t)return n;let r=this.waveformWidth>0?Math.max(1,Math.min(t.length,Math.floor(this.waveformWidth/5))):t.length,i=Array.from({length:r},(e,n)=>{let i=Math.floor(n*t.length/r),a=Math.max(i+1,Math.floor((n+1)*t.length/r)),o=0;for(let e=i;e<a;e+=1)o+=t[e]??0;let s=o/Math.max(1,a-i);return Math.min(1,Math.max(0,s))});return R`<div class="chat-audio-player__waveform" ${Or(this.setWaveform)}>
<svg viewBox="0 0 ${r} 24" preserveAspectRatio="none" aria-hidden="true">
${i.map((t,n)=>{let i=this.voiceNote?6+t*8:Math.max(2,t*20);return $r`<rect
class=${n/r<e?`is-played`:``}
x=${String(n+.25)}
y=${String((24-i)/2)}
width="0.5"
height=${String(i)}
rx="0.25"
></rect>`})}
</svg>
${n}
</div>`}render(){let e=this.duration>0?Math.min(1,this.currentTime/this.duration):0,t=bx(this.src),n=this.sourceController.readiness===`unavailable`;if(n&&this.voiceNote)return R`<div
class="chat-assistant-attachment-card chat-assistant-attachment-card--voice-note"
>
<div class="chat-audio-player" role="group" aria-label=${M(`chat.messages.voiceNote`)}>
<span class="chat-assistant-attachment-card__reason" role="status"
>${M(`chat.attachments.previewUnavailable`)}</span
>
${t?R`<a class="chat-assistant-attachment-card__action" href=${t} download=${this.label} target="_blank" rel="noreferrer" aria-label=${M(`chat.mediaPlayer.download`,{filename:this.label})}>${F.download}</a>`:z}
</div>
</div>`;if(n)return ES({kind:`audio`,label:this.label,mimeType:this.mimeType,sizeBytes:this.sizeBytes,downloadHref:t,onExpand:this.onExpand,voiceNote:this.voiceNote});let r=`${SC(this.currentTime)} / ${SC(this.duration)}`;return R`
<div
class="chat-assistant-attachment-card chat-assistant-attachment-card--audio ${this.voiceNote?`chat-assistant-attachment-card--voice-note`:``}"
${Or(this.viewport.setElement)}
?data-openable=${!this.voiceNote&&!!this.onExpand}
@click=${e=>OS(e,this.voiceNote?void 0:this.onExpand)}
>
${this.voiceNote?z:AS({kind:`audio`,label:this.label,mimeType:this.mimeType,sizeBytes:this.sizeBytes,downloadHref:t,onExpand:this.onExpand,visualMode:`preview-with-favicon`,voiceNote:this.voiceNote})}
${this.sourceController.readiness===`preparing`?R`<div class="chat-assistant-attachment-card__reason chat-media-preparing">
${M(`chat.mediaPlayer.preparing`)}
</div>`:R`<div
class="chat-audio-player"
role="group"
aria-label=${this.voiceNote?M(`chat.messages.voiceNote`):this.label}
tabindex="0"
@keydown=${e=>this.handlePlayerKeydown(e)}
>
<button
type="button"
class="chat-audio-player__toggle"
?disabled=${this.playback===`transcode`&&this.sourceController.readiness!==`ready`}
aria-label=${M(this.playing?`chat.mediaPlayer.pause`:`chat.mediaPlayer.play`)}
@click=${()=>this.togglePlayback()}
>
${this.playing?F.pause:F.play}
</button>
<div class="chat-audio-player__time" aria-live="off">
<span>${r}</span>
</div>
<div class="chat-audio-player__timeline">${this.renderSeek(e)}</div>
<button
type="button"
class="chat-audio-player__volume"
aria-label=${M(this.muted?`chat.mediaPlayer.unmute`:`chat.mediaPlayer.mute`)}
@click=${()=>this.toggleMuted()}
>
${this.muted?F.volumeX:F.volume2}
</button>
</div>`}
<audio
class="chat-audio-player__media"
preload="metadata"
${Or(this.setMedia)}
@loadedmetadata=${()=>{this.media&&(this.sourceController.handleLoadedMetadata(this.media,()=>zS(this.media)),this.duration=Number.isFinite(this.media.duration)?this.media.duration:0,this.currentTime=this.media.currentTime,this.updateBuffered(),this.onMediaLoaded?.())}}
@durationchange=${()=>{this.media&&(this.duration=Number.isFinite(this.media.duration)?this.media.duration:0)}}
@timeupdate=${()=>{this.media&&(this.currentTime=this.media.currentTime,this.updateBuffered())}}
@progress=${()=>this.updateBuffered()}
@play=${()=>{this.media&&LS(this.media,this.cancelPendingResume),this.playing=!0}}
@pause=${()=>{this.playing=!1}}
@ended=${()=>{this.media&&(RS(this.media),this.sourceController.handleEnded(this.media)),this.playing=!1}}
@error=${()=>{this.media&&!this.sourceController.handleError(this.media)&&(RS(this.media),this.playing=!1),this.requestUpdate()}}
></audio>
</div>
`}},q([H()],EC.prototype,`src`,void 0),q([H()],EC.prototype,`sourceIdentity`,void 0),q([H()],EC.prototype,`label`,void 0),q([H()],EC.prototype,`mimeType`,void 0),q([H()],EC.prototype,`playback`,void 0),q([H()],EC.prototype,`authToken`,void 0),q([H({type:Number})],EC.prototype,`sizeBytes`,void 0),q([H({type:Number})],EC.prototype,`serverDurationMs`,void 0),q([H({type:Boolean})],EC.prototype,`voiceNote`,void 0),q([H({attribute:!1})],EC.prototype,`onExpand`,void 0),q([H({attribute:!1})],EC.prototype,`onMediaLoaded`,void 0),q([V()],EC.prototype,`currentTime`,void 0),q([V()],EC.prototype,`duration`,void 0),q([V()],EC.prototype,`buffered`,void 0),q([V()],EC.prototype,`playing`,void 0),q([V()],EC.prototype,`muted`,void 0),q([V()],EC.prototype,`waveformPeaks`,void 0),q([V()],EC.prototype,`waveformWidth`,void 0),customElements.get(`openclaw-chat-audio-player`)||customElements.define(`openclaw-chat-audio-player`,EC)})))()}var OC,kC,AC;function jC(){return(jC=e((()=>{B(),qr(),b(),Ie(),MS(),wx(),IS(),xC(),OC=262144,kC=1e4,AC=class extends Pe{constructor(...e){super(...e),this.src=``,this.sourceIdentity=``,this.label=``,this.mimeType=`image/svg+xml`,this.downloadHref=``,this.failed=!1,this.loadVersion=0,this.handleImageError=()=>{this.renderSource&&=(this.retireSource(this.renderSource),void 0),this.showFallback()},this.handleOpen=()=>{let e=this.renderSource;if(!e||!this.onOpen)return;let t=this.retainSource(e);try{this.onOpen(e.url,t)}catch(e){throw t(),e}}}connectedCallback(){super.connectedCallback(),this.src.trim()&&!this.renderSource&&!this.failed&&this.observeViewport()}disconnectedCallback(){this.stopObservingViewport?.(),this.stopObservingViewport=void 0,this.releaseSource(),super.disconnectedCallback()}updated(e){(e.has(`src`)||e.has(`sourceIdentity`)||e.has(`sizeBytes`))&&(this.releaseSource(),this.failed=!1,this.observeViewport())}observeViewport(){this.stopObservingViewport?.();let e=this.parentElement??this;this.stopObservingViewport=NS(e,()=>{this.stopObservingViewport=void 0,this.loadSource()})}retireSource(e){e.retired=!0,e.retainCount===0&&URL.revokeObjectURL(e.url)}releaseSource(){this.loadVersion+=1,this.abortController?.abort(),this.abortController=void 0,this.renderSource&&=(this.retireSource(this.renderSource),void 0)}retainSource(e){e.retainCount+=1;let t=!1;return()=>{t||(t=!0,e.retainCount=Math.max(0,e.retainCount-1),e.retired&&e.retainCount===0&&URL.revokeObjectURL(e.url))}}showFallback(){this.failed||(this.failed=!0,this.onMediaLoaded?.())}async loadSource(){let e=this.loadVersion;if(this.sizeBytes!==void 0&&this.sizeBytes>OC){this.showFallback();return}if(vx(this.src)){this.showFallback();return}let t=new AbortController;this.abortController=t;let n;try{let r=await Promise.race([fetch(this.src,{credentials:`same-origin`,headers:{Accept:`image/svg+xml`},method:`GET`,signal:t.signal}),new Promise((e,r)=>{n=setTimeout(()=>{t.abort(),r(new DOMException(`SVG attachment fetch timed out`,`TimeoutError`))},kC)})]);if(!r.ok)throw await r.body?.cancel().catch(()=>void 0),Error(`SVG attachment is unavailable`);let i=await bC(r,OC);if(!i)throw Error(`SVG attachment exceeds the preview budget`);let a=URL.createObjectURL(new Blob([i],{type:`image/svg+xml`}));if(e!==this.loadVersion||!this.isConnected){URL.revokeObjectURL(a);return}this.renderSource={url:a,retainCount:0,retired:!1}}catch{e===this.loadVersion&&this.showFallback()}finally{clearTimeout(n),this.abortController===t&&(this.abortController=void 0)}}render(){if(this.failed)return ES({kind:`document`,label:this.label,mimeType:this.mimeType,sizeBytes:this.sizeBytes,downloadHref:this.downloadHref,onExpand:this.onExpand});let e=this.renderSource;return e?R`<button
type="button"
class="chat-message-image-button"
aria-label=${M(`chat.imageLightbox.open`,{title:this.label})}
@click=${this.handleOpen}
>
<img
src=${e.url}
alt=${this.label}
class="chat-message-image"
@load=${this.onMediaLoaded}
@error=${this.handleImageError}
/>
</button>`:z}},q([H()],AC.prototype,`src`,void 0),q([H()],AC.prototype,`sourceIdentity`,void 0),q([H()],AC.prototype,`label`,void 0),q([H()],AC.prototype,`mimeType`,void 0),q([H({type:Number})],AC.prototype,`sizeBytes`,void 0),q([H()],AC.prototype,`downloadHref`,void 0),q([H({attribute:!1})],AC.prototype,`onOpen`,void 0),q([H({attribute:!1})],AC.prototype,`onExpand`,void 0),q([H({attribute:!1})],AC.prototype,`onMediaLoaded`,void 0),q([V()],AC.prototype,`renderSource`,void 0),q([V()],AC.prototype,`failed`,void 0),customElements.get(`openclaw-chat-svg-attachment`)||customElements.define(`openclaw-chat-svg-attachment`,AC)})))()}var MC;function NC(){return(NC=e((()=>{B(),qr(),Ar(),Gr(),I(),b(),Ie(),MS(),wx(),IS(),yC(),MC=class extends Pe{constructor(...e){super(...e),this.src=``,this.preview=!1,this.sourceIdentity=``,this.label=``,this.mimeType=``,this.playback=`native`,this.authToken=null,this.frameReady=!1,this.media=null,this.mediaVisible=!1,this.viewport=new FS(()=>{this.mediaVisible=!0,this.syncSource()}),this.sourceController=new vC,this.setMedia=e=>{this.frameReady=!1,this.media=e instanceof HTMLVideoElement?e:null,this.syncSource()},this.expand=()=>{let e=this.sourceController.readySource;e&&(this.media?.pause(),this.querySelector(`.chat-assistant-attachment-card__expand`)?.focus({preventScroll:!0}),this.onExpand?.(e))}}connectedCallback(){super.connectedCallback(),queueMicrotask(()=>this.syncSource())}disconnectedCallback(){this.viewport.disconnect(),this.sourceController.cancel(),this.media&&this.sourceController.reset(this.media),super.disconnectedCallback()}willUpdate(e){e.has(`src`)&&!this.src&&this.media&&(this.sourceController.cancel(),this.sourceController.reset(this.media)),this.sourceController.readiness===`unavailable`&&(e.has(`src`)||e.has(`sourceIdentity`)||e.has(`playback`)||e.has(`authToken`))&&this.sourceController.cancel()}updated(e){(e.has(`src`)||e.has(`sourceIdentity`)||e.has(`playback`)||e.has(`authToken`))&&this.syncSource()}syncSource(){let e=this.media;if(!e||!this.isConnected||!this.mediaVisible)return;let t=this.sourceController.sync(e,this.src,this.sourceIdentity,this.playback,this.authToken);this.requestUpdate(),t?.then(()=>{this.isConnected&&this.requestUpdate()})}adoptPendingSource(){return!this.media||!this.sourceController.applyPendingSource(this.media)?!1:(this.requestUpdate(),!0)}render(){let e=bx(this.src),t=this.sourceController.readiness===`preparing`&&!this.preview;if(this.sourceController.readiness===`unavailable`)return ES({kind:`video`,label:this.label,mimeType:this.mimeType,sizeBytes:this.sizeBytes,downloadHref:e,onExpand:this.onFallbackExpand});let n=this.preview&&!this.frameReady,r=this.onExpand&&this.sourceController.readySource?this.expand:void 0,i=this.mediaWidth&&this.mediaHeight?{"aspect-ratio":`${this.mediaWidth} / ${this.mediaHeight}`}:this.preview?{"aspect-ratio":`16 / 9`}:{};return R`
<div
class="chat-assistant-attachment-card chat-assistant-attachment-card--video ${n?`chat-assistant-attachment-card--loading`:``}"
aria-busy=${n?`true`:z}
${Or(this.viewport.setElement)}
?data-openable=${!!r}
@click=${e=>OS(e,r)}
>
${AS({kind:`video`,label:this.label,mimeType:this.mimeType,sizeBytes:this.sizeBytes,downloadHref:e,downloadPending:this.preview&&!e,loading:n,expandLabel:M(`chat.mediaPlayer.openVideo`,{filename:this.label}),onExpand:r,visualMode:`preview-with-favicon`})}
${t?R`<div class="chat-assistant-attachment-card__reason chat-media-preparing">
${M(`chat.mediaPlayer.preparing`)}
</div>`:null}
<div class="chat-assistant-video-frame" ?hidden=${t}>
${n?R`<div
class="chat-video-skeleton"
role="status"
aria-label=${M(`common.loading`)}
>
<div class="chat-video-skeleton__controls" aria-hidden="true">
${F.play}<span>0:00<span>/ 0:00</span></span>
${F.volume2}${F.maximize}${F.moreHorizontal}
</div>
<div class="chat-video-skeleton__timeline skeleton" aria-hidden="true"></div>
</div>`:z}
<video
controls
aria-label=${this.label.trim()||M(`chat.attachments.video`)}
preload=${this.preview?`auto`:`metadata`}
style=${Wr(i)}
${Or(this.setMedia)}
@loadeddata=${()=>{this.frameReady=!0}}
@playing=${()=>{this.frameReady=!0}}
@emptied=${()=>{this.frameReady=!1}}
@loadedmetadata=${()=>{this.media&&(this.sourceController.handleLoadedMetadata(this.media),this.onMediaLoaded?.())}}
@ended=${()=>{this.media&&this.sourceController.handleEnded(this.media)&&this.requestUpdate()}}
@play=${()=>this.adoptPendingSource()}
@seeking=${()=>{!this.adoptPendingSource()&&this.media?.error&&this.sourceController.handleError(this.media)&&this.requestUpdate()}}
@error=${()=>{this.media&&(this.sourceController.handleError(this.media),this.requestUpdate())}}
></video>
</div>
</div>
`}},q([H()],MC.prototype,`src`,void 0),q([H({type:Boolean})],MC.prototype,`preview`,void 0),q([H()],MC.prototype,`sourceIdentity`,void 0),q([H()],MC.prototype,`label`,void 0),q([H()],MC.prototype,`mimeType`,void 0),q([H()],MC.prototype,`playback`,void 0),q([H()],MC.prototype,`authToken`,void 0),q([H({type:Number})],MC.prototype,`sizeBytes`,void 0),q([H({type:Number})],MC.prototype,`mediaWidth`,void 0),q([H({type:Number})],MC.prototype,`mediaHeight`,void 0),q([H({attribute:!1})],MC.prototype,`onExpand`,void 0),q([H({attribute:!1})],MC.prototype,`onFallbackExpand`,void 0),q([H({attribute:!1})],MC.prototype,`onMediaLoaded`,void 0),q([V()],MC.prototype,`frameReady`,void 0),customElements.get(`openclaw-chat-video-player`)||customElements.define(`openclaw-chat-video-player`,MC)})))()}function PC(e,t={},n=!1){if(!nC(e))return{status:`available`};let r=UC(e,t),i=r.value,a=null;if(i){let e=Date.now();if(i.status===`unavailable`&&i.recoverable&&!i.retryAttempted&&e-i.checkedAt>=5e3)r.retryAttempted=!0,r.value=void 0;else if(i.status===`available`&&i.mediaTicket&&i.mediaTicketExpiresAt!==void 0&&i.mediaTicketExpiresAt<=e){let e=RC(`Attachment unavailable`,r.retryAttempted,{unconfirmed:!0});return WC(r,e),e}else if(i.status===`available`&&i.mediaTicket&&(i.refreshAfter===void 0?!i.mediaTicketExpiresAt||i.mediaTicketExpiresAt-e<=3e4:i.refreshAfter<=e)){if(r.pending)return i;a=i}else return GC(r,i),i}a||WC(r,{status:`checking`});let o=()=>{if(!a)return null;let e=Date.now(),t=a.mediaTicketExpiresAt,n=a.refreshAttempts??0;return t===void 0||t<=e||n>=2?null:{...a,refreshAfter:Math.min(e+JC,t),refreshAttempts:n+1}};if(typeof fetch==`function`){let i=uC(t.authToken);i.set(`Accept`,`application/json`);let s=new AbortController;r.abortController=s;let c=setTimeout(()=>s.abort(new DOMException(`assistant attachment metadata fetch timed out`,`TimeoutError`)),YC),l=iC(e,t.resourceBasePath,a?.mediaTicket,t),u=yr(`${l}&meta=1${n?`&allow=1`:``}`,{method:n?`POST`:`GET`,headers:i,credentials:`same-origin`,signal:s.signal}).then(async e=>{if(e.status===408||e.status===429||e.status>=500)throw Error(`Attachment metadata temporarily unavailable`);if(!e.ok)return RC(M(`chat.attachments.unavailable`),r.retryAttempted);let t=await e.json();if(t?.available===!1)return RC(t.code===`outside-allowed-folders`?M(`chat.attachments.outsideAllowedFolders`):gt(t.reason,M(`chat.attachments.unavailable`)),r.retryAttempted,{recoverable:t.retryable!==!1,canAllow:t.canAllow===!0});if(t?.available===!0){let e=t.mediaTicket?.trim(),n=Date.parse(t.mediaTicketExpiresAt??``);if(e&&!Number.isFinite(n))throw Error(`Attachment metadata has an invalid ticket expiry`);return{status:`available`,...e?{mediaTicket:e,mediaTicketExpiresAt:n}:{},...t.playback===`native`||t.playback===`transcode`?{playback:t.playback}:{},...typeof t.sizeBytes==`number`?{sizeBytes:t.sizeBytes}:{},...typeof t.durationMs==`number`?{durationMs:t.durationMs}:{},...typeof t.width==`number`?{width:t.width}:{},...typeof t.height==`number`?{height:t.height}:{}}}throw Error(`Attachment metadata has no availability result`)}).catch(()=>o()??RC(M(`chat.attachments.unavailable`),r.retryAttempted,{unconfirmed:!0})).then(e=>(r.pending===u&&Nx(r)&&(e.status===`available`&&(r.retryAttempted=!1),WC(r,e)),e)).finally(()=>{clearTimeout(c),r.pending===u&&(r.abortController=void 0,r.pending=void 0,Fx(r))});r.pending=u}return a??{status:`checking`}}async function FC(e,t={}){let n=PC(e,t);if(n.status!==`checking`)return n;let r=UC(e,t);return await r.pending,Nx(r)?r.value??null:null}function IC(e,t={},n=!1){if(!nC(e)){t.onRequestUpdate?.();return}let r=UC(e,t);LC(r),n&&PC(e,t,!0),Fx(r),t.onRequestUpdate?.()}function LC(e){e.abortController?.abort(),e.abortController=void 0,e.pending=void 0,e.value=void 0,e.retainUntil=void 0,e.retryAttempted=!1,Ix(e)}function RC(e,t,n={}){return{status:`unavailable`,reason:e,checkedAt:Date.now(),recoverable:n.recoverable!==!1,...n.unconfirmed?{unconfirmed:!0}:{},...t?{retryAttempted:!0}:{},...n.canAllow?{canAllow:!0}:{}}}function zC(e,t){return JSON.stringify([t.connectionEpoch??0,t.resourceBasePath??``,t.authToken?.trim()??``,t.sessionKey,t.agentId,e])}function BC(e,t){let n=Ax(`assistant-attachment`,JSON.stringify([zC(e,t),t.policyKey]));return n&&!n.discardWhenIdle&&n.value?.status===`available`&&n.retainUntil!==void 0&&n.retainUntil>Date.now()?n:void 0}function VC(e,t={}){let n=BC(e,t),r=n?.retainedImage;return n&&(n.retainedImage=void 0),r}function HC(e,t,n={},r){let i=BC(e,n),a=i?.value;i&&a?.status===`available`&&t.complete&&t.naturalWidth>0&&t.getAttribute(`src`)===iC(e,n.resourceBasePath,a.mediaTicket,n,r)&&(i.retainedImage=t)}function UC(e,t){let n=zC(e,t),r=jx(`assistant-attachment`,JSON.stringify([n,t.policyKey]),t.onRequestUpdate,e,n);return r.subscribers.size>0&&!r.releaseAuthRecovery&&(r.releaseAuthRecovery=gr(()=>{Nx(r)&&r.value?.status===`unavailable`&&(LC(r),Fx(r))})),r}function WC(e,t){Nx(e)&&(e.value=t,e.retainedImage=void 0,e.retainUntil=t.status===`available`?t.mediaTicketExpiresAt??1/0:void 0,GC(e,t))}function GC(e,t){Lx(e,t.status===`unavailable`&&t.recoverable&&!t.retryAttempted?t.checkedAt+JC:t.status===`available`&&t.mediaTicket&&t.mediaTicketExpiresAt?t.refreshAfter??t.mediaTicketExpiresAt-3e4:void 0,()=>{e.value===t&&Fx(e)})}function KC(e){try{let t=new URL(e,window.location.origin);return t.origin===window.location.origin&&t.pathname.startsWith(`/api/chat/media/outgoing/`)}catch{return!1}}function qC(e){try{let t=new URL(e,window.location.origin).pathname.split(`/`)[5];return t?decodeURIComponent(t):null}catch{return null}}var JC,YC;function XC(){return(XC=e((()=>{mr(),b(),N(),gC(),sC(),nS(),JC=5e3,YC=3e4})))()}function ZC(e){return nC(e.url)||KC(e.url)}function QC(e,t){let{attachment:n}=e;return ZC(n)&&qx(n)!==`svg`&&(t!==`inline`||n.kind!==`audio`&&n.kind!==`video`)&&(t!==`preview`||n.kind!==`video`)}var $C,ew;function tw(){return(tw=e((()=>{B(),Vr(),ei(),IS(),XC(),sC(),nS(),$C=class extends kr{constructor(...e){super(...e),this.key=``,this.generation=0,this.admitted=!1,this.admit=()=>{this.isConnected&&!this.admitted&&(this.admitted=!0,this.stopObserving?.(),this.stopObserving=void 0,this.refresh())},this.observeElement=e=>{if(this.stopObserving?.(),this.stopObserving=void 0,!e||!this.isConnected||this.admitted)return;let t=this.generation;this.stopObserving=NS(e,()=>{t===this.generation&&this.admit()})},this.refresh=()=>{this.isConnected&&this.input&&this.setValue(this.render(this.input))}}render(e){let{attachments:t,options:n}=e,r=JSON.stringify([t.map(e=>[e.url,e.artifactId]),n.sessionKey,n.agentId,n.connectionEpoch,n.resourceBasePath,n.authToken,n.policyKey]);return r!==this.key&&(this.generation++,this.stopObserving?.(),this.stopObserving=void 0,this.admitted=!1),this.key=r,this.input=e,this.isConnected?(typeof IntersectionObserver!=`function`&&(this.admitted=!0),R`${Br(r,e.render({observeElement:this.admitted?void 0:this.observeElement,onAdmit:this.admit}))}`):jr}disconnected(){this.generation++,this.stopObserving?.(),this.stopObserving=void 0,this.admitted=!1}reconnected(){this.refresh()}},ew=Mr($C)})))()}function nw(e,t,n,r,i){let a=Rt(t,window.location.href,{allowDataImage:!0});if(!a){r?.();return}if(e){let t={src:a,title:n,...r?{release:r}:{}};i===void 0?e(t):e(t,i);return}r?.(),ht(a,{allowDataImage:!0})}function rw(){return(rw=e((()=>{ft()})))()}var iw,aw;function ow(){return(ow=e((()=>{B(),Vr(),Ar(),I(),b(),ja(),IS(),iw=class extends kr{constructor(...e){super(...e),this.failed=!1,this.visible=!1,this.setElement=e=>{this.element=e,this.observe()}}render(e){return this.input?.key!==e.key&&(this.release(),this.failed=!1),this.input=e,this.requestPoster(),this.template()}requestPoster(){if(!this.isConnected||!this.visible||!this.input||this.controller||this.failed)return;let e=new AbortController;this.controller=e,Ha({key:this.input.key,src:this.input.src,width:400,height:225,signal:e.signal}).then(t=>{this.controller===e&&!e.signal.aborted&&this.isConnected&&this.visible&&(t?this.posterUrl=URL.createObjectURL(t):this.failed=!0,this.setValue(this.template()))})}release(){this.controller?.abort(),this.controller=void 0,this.posterUrl&&=(URL.revokeObjectURL(this.posterUrl),void 0)}failPoster(e){this.isConnected&&this.posterUrl===e&&(this.release(),this.failed=!0,this.setValue(this.template()))}setVisible(e){this.isConnected&&this.visible!==e&&(this.visible=e,e?this.requestPoster():(this.release(),this.setValue(this.template())))}observe(){this.stopObserving?.(),this.stopObserving=this.element&&this.isConnected?NS(this.element,()=>this.setVisible(!0),()=>this.setVisible(!1)):void 0}disconnected(){this.stopObserving?.(),this.stopObserving=void 0,this.visible=!1,this.release()}reconnected(){this.setValue(this.template()),this.observe()}template(){let e=this.input;if(!e)return z;let t=this.posterUrl;return R`<div class="chat-video-preview__content" ${Or(this.setElement)}>
${this.failed?e.fallback:R`<button
type="button"
class="chat-message-image-button"
aria-label=${`${M(`chat.attachments.open`)}: ${e.label}`}
@click=${e.onOpen}
>
${t?R`<img class="chat-message-image" src=${t} alt=${e.label} @error=${()=>this.failPoster(t)} />`:R`<span class="chat-message-image chat-video-preview__placeholder"></span>`}
<span class="chat-video-preview__play" aria-hidden="true">${F.play}</span>
</button>`}
</div>`}},aw=Mr(iw)})))()}function sw(e){let t=Df(e);return R`
<span class="chat-attachment-file__preview" aria-hidden="true">
${zr([t],()=>cu(t?.then(e=>e?R`
<img src=${e} alt="" />
<span class="chat-attachment-video__play">${F.play}</span>
`:F.play)??F.play,F.play))}
</span>
`}function cw(e,t){let{family:n,extensionLabel:r}=gS(e.fileName??`attachment`,e.mimeType),i=t?.label??e.fileName??M(`chat.attachments.attachedFile`),a=n===`audio`?F.music:F.fileText,o=R`<div
class=${`chat-attachment-file${n===`video`?` chat-attachment-file--video`:``}`}
@click=${e=>{e.target instanceof Element&&!e.target.closest(`button`)&&t?.onOpen?.()}}
>
${n===`video`?sw(e):R`<span class="chat-attachment-file__icon" data-family=${n}>${a}</span>`}
<span class="chat-attachment-file__body">
${t?.onOpen?R`<button
class="chat-attachment-file__name chat-attachment-file__open"
type="button"
title=${i}
@click=${t.onOpen}
>
${i}
</button>`:R`<span class="chat-attachment-file__name">${i}</span>`}
${t?.metadata??R`<span class="chat-attachment-file__type">${r}</span>`}
</span>
</div>`;return t?o:R`<openclaw-tooltip .content=${i}>${o}</openclaw-tooltip>`}function lw(){return(lw=e((()=>{B(),Zr(),mu(),I(),b(),J(),xS()})))()}function uw(){return(uw=e((()=>{})))()}function dw(e){let t=R`
<span aria-hidden="true">${e.icon}</span>
<span
class=${e.removal?`chat-selection-annotations__label`:`chat-attachment-preview-label`}
dir="auto"
>${e.label}</span
>
`;return R`<span
${e.elementRef?Or(e.elementRef):z}
class="chat-attachment-thumb chat-attachment-thumb--file chat-selection-annotations__chip"
role=${e.removal?z:`button`}
tabindex=${e.removal?z:`0`}
@pointerenter=${e.onReveal}
@focusin=${e.onReveal}
@click=${e.onClick}
@keydown=${t=>{!e.removal&&e.keyboardClick!==!1&&(t.key===`Enter`||t.key===` `)&&t.currentTarget instanceof HTMLElement&&(t.preventDefault(),t.currentTarget.click())}}
>
${e.removal?R`<button
type="button"
class="chat-attachment-file chat-selection-annotations__trigger"
>
${t}
</button>`:R`<span class="chat-attachment-file">${t}</span>`}
${e.removal?R`<button
type="button"
class="chat-selection-annotations__remove"
aria-label=${e.removal.label}
?disabled=${e.removal.disabled}
@click=${e.removal.onRemove}
>
${F.x}
</button>`:z}
</span>`}function fw(e){return R`<openclaw-tooltip
class=${e.removal?`chat-comment-preview chat-comment-preview--editable`:`chat-comment-preview`}
placement="top-start"
auto-size
.describe=${!1}
.openOnClick=${e.openOnClick??!1}
.hoverDismissDelay=${e.removal?200:void 0}
>
${dw({label:e.label,icon:e.icon,onReveal:e.onReveal,onClick:e.openOnClick?e.onReveal:void 0,keyboardClick:e.openOnClick??!1,removal:e.removal,elementRef:e.elementRef})}
<div
slot="content"
class="chat-comment-preview__scroll"
tabindex="0"
role="region"
aria-label=${e.regionLabel}
${od()}
>
${e.content}
</div>
</openclaw-tooltip>`}function pw(){return(pw=e((()=>{B(),Ar(),I(),qu(),Dn()})))()}async function mw(e,t,n,r=`full`){let i=r===`excerpt`,a=r===`html`?_i:hw;if(!i&&t!==void 0&&t>a)throw Error(`Text attachment exceeds preview limit`);let o=new AbortController,s=setTimeout(()=>o.abort(),1e4);try{let t=await fetch(e,{credentials:`same-origin`,redirect:`error`,signal:AbortSignal.any([n,o.signal])});if(!t.ok)throw await t.body?.cancel(),Error(`Text attachment unavailable`);let r=await bC(t,a,{truncate:i});if(!r)throw Error(`Text attachment exceeds preview limit`);let s=new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0}).decode(r,{stream:i});if(s.includes(`\0`))throw Error(`Binary attachment`);return s}finally{clearTimeout(s)}}var hw;function gw(){return(gw=e((()=>{Ai(),xC(),hw=262144})))()}function _w(e){let{mimeType:t,origin:n,fileName:r}=e;return t.split(`;`,1)[0]?.trim().toLowerCase()===`text/plain`&&(n===`paste`||n===void 0&&/^pasted-text-\d+\.txt$/.test(r??``))}function vw(e){return e.type===`attachment`&&e.attachment.kind===`document`&&_w({mimeType:e.attachment.mimeType??``,fileName:e.attachment.label,origin:e.attachment.origin})}var yw;function bw(){return(bw=e((()=>{B(),qr(),I(),b(),Ie(),lw(),pw(),gw(),$l(),yw=class extends Pe{constructor(...e){super(...e),this.scope=``,this.excerpt=``,this.key=``}connectedCallback(){super.connectedCallback(),this.requestUpdate()}disconnectedCallback(){this.loading?.abort(),this.key=``,super.disconnectedCallback()}willUpdate(e){let t=JSON.stringify([this.scope,this.src,this.sizeBytes]);if(t===this.key||(this.loading?.abort(),this.key=t,this.excerpt=``,!this.src))return;let n=new AbortController;this.loading=n,this.loadExcerpt(this.src,n)}async loadExcerpt(e,t){let n=()=>this.isConnected&&this.loading===t&&!t.signal.aborted;try{let r=await mw(e,this.sizeBytes,t.signal,`excerpt`);if(!n())return;let{derivePastedTextExcerpt:i}=await Yl(async()=>{let{derivePastedTextExcerpt:e}=await import(`./pasted-text-excerpt-DL_ikozD.js`);return{derivePastedTextExcerpt:e}},__vite__mapDeps([11,0,1,2,3,4,5,6,7]),import.meta.url);n()&&(this.excerpt=i(r))}catch{}}render(){return this.composerAction?R`<div
class="chat-attachment-thumb chat-attachment-thumb--file chat-attachment-thumb--pasted-text"
>
${cw({id:this.scope,mimeType:`text/plain`},{label:this.excerpt||M(`chat.attachments.pastedText`),metadata:this.composerAction,onOpen:this.onOpen})}
${this.composerRemoveAction}
</div>`:dw({label:this.excerpt||M(`chat.attachments.pastedText`),icon:F.fileText,onClick:this.onOpen,onReveal:this.admission?.onAdmit,elementRef:this.admission?.observeElement})}},q([H()],yw.prototype,`src`,void 0),q([H({attribute:!1})],yw.prototype,`sizeBytes`,void 0),q([H({attribute:!1})],yw.prototype,`scope`,void 0),q([H({attribute:!1})],yw.prototype,`onOpen`,void 0),q([H({attribute:!1})],yw.prototype,`composerAction`,void 0),q([H({attribute:!1})],yw.prototype,`composerRemoveAction`,void 0),q([H({attribute:!1})],yw.prototype,`admission`,void 0),q([V()],yw.prototype,`excerpt`,void 0),customElements.define(`openclaw-chat-pasted-text`,yw)})))()}function xw(e){let t=/\n\nSource session: [^\n]+\n(?:Source message: [^\n]+\n)?(?:Source entry: [^\n]+\n)?(?:Selected text UTF-16 length: (\d+)\n)?DOM text UTF-16 range: \[(\d+), (\d+)\)$/.exec(e);if(!t||!e.startsWith(`Selected text:
`))return null;let n=Number(t[2]),r=Number(t[3]),i=t[1]===void 0?r-n:Number(t[1]);if(!Number.isSafeInteger(n)||!Number.isSafeInteger(r)||r<n||!Number.isSafeInteger(i)||i<=0)return null;let a=e.slice(15,t.index),o=a.slice(0,i),s=a.slice(i);return o.length!==i||s&&!s.startsWith(`
User comment:
`)?null:{text:o,comment:s?s.slice(16):``}}function Sw(e,t=z){return R`<li class="chat-comment-preview__item">
<div class="chat-comment-preview__body">
<span class="muted">${M(`chat.messages.annotationSelectedText`)}</span>
<div
class="chat-comment-preview__text chat-comment-preview__text--selection"
.textContent=${e.text}
></div>
${e.comment?R`<span class="muted">${M(`chat.messages.annotationUserComment`)}</span>
<div
class="chat-comment-preview__text chat-comment-preview__text--comment"
tabindex="0"
role="region"
aria-label=${M(`chat.messages.annotationUserComment`)}
.textContent=${e.comment}
${od()}
></div>`:z}
</div>
${t}
</li>`}function Cw(e,t,n,r=!1,i,a){return fw({label:M(e===1?`chat.messages.annotationCount`:`chat.messages.annotationsCount`,{count:String(e)}),regionLabel:M(`chat.messages.annotations`),icon:F.messageSquare,content:t,onReveal:n,openOnClick:r,elementRef:a,removal:i?{...i,label:M(`chat.messages.removeAnnotations`)}:void 0})}function ww(){return(ww=e((()=>{B(),I(),qu(),b(),ns(),pw(),fc()})))()}function Tw(e){return e.type===`attachment`&&e.attachment.kind===`document`&&e.attachment.label===`selection-comment.txt`&&e.attachment.mimeType?.split(`;`,1)[0]?.trim().toLowerCase()===`text/plain`}function Ew(e,t,n){if(e.length===0)return z;let r=r=>R`<openclaw-chat-sent-comments
.sources=${e.map(e=>r?.observeElement?{identity:e.attachment.url,pending:!0,fallback:z}:n(e))}
.scope=${JSON.stringify([t.sessionKey,t.agentId,t.connectionEpoch,t.resourceBasePath,t.authToken,t.policyKey])}
.admission=${r}
></openclaw-chat-sent-comments>`;return e.some(e=>ZC(e.attachment))?ew({attachments:e.map(e=>e.attachment),options:t,render:r}):r()}var Dw;function Ow(){return(Ow=e((()=>{B(),qr(),b(),Ie(),gw(),ww(),tw(),Dw=class extends Pe{constructor(...e){super(...e),this.sources=[],this.scope=``,this.revealed=!1,this.comments=[],this.key=``}disconnectedCallback(){this.loading?.abort(),this.key=``,super.disconnectedCallback()}willUpdate(e){let t=JSON.stringify([this.scope,this.sources.map(({fallback:e,...t})=>t)]);if(this.key!==t&&(this.loading?.abort(),this.loading=void 0,this.key=t,this.comments=this.sources.map(e=>!e.src&&!e.pending?null:void 0)),this.revealed&&!this.loading){let e=new AbortController;this.loading=e,this.sources.forEach((t,n)=>{t.src&&mw(t.src,t.sizeBytes,e.signal).then(t=>this.accept(n,xw(t),e),()=>this.accept(n,null,e))})}}accept(e,t,n){this.isConnected&&this.loading===n&&!n.signal.aborted&&(this.comments=this.sources.map((n,r)=>r===e?t:this.comments[r]))}render(){let e=this.sources.filter((e,t)=>this.comments[t]!==null);return R`${e.length?Cw(e.length,R`<ol class="chat-comment-preview__list" role="list">
${this.sources.map((e,t)=>{let n=this.comments[t];return n?Sw(n):n===null?z:R`<li class="chat-comment-preview__item muted">
${e.src||e.pending?M(`common.loading`):M(`chat.attachments.textPreviewUnavailable`)}
</li>`})}
</ol>`,()=>{this.revealed=!0,this.admission?.onAdmit()},!0,void 0,this.admission?.observeElement):z}
${this.sources.map((e,t)=>this.comments[t]===null?e.fallback:z)}`}},q([H({attribute:!1})],Dw.prototype,`sources`,void 0),q([H()],Dw.prototype,`scope`,void 0),q([H({attribute:!1})],Dw.prototype,`admission`,void 0),q([V()],Dw.prototype,`revealed`,void 0),q([V()],Dw.prototype,`comments`,void 0),customElements.define(`openclaw-chat-sent-comments`,Dw)})))()}function kw(e,t,n){return{kind:`video`,src:``,title:e.label,connectVideo:(r,i,a=!1)=>{let o=new vC,s=!0,c=a,l=()=>{s&&i(o.readiness===`idle`?`preparing`:o.readiness)},u=()=>{if(!s)return;let n=t(u);if(n.status!==`available`){if(n.status===`unavailable`&&c&&n.onRetry){c=!1,n.onRetry();return}o.cancel(),o.reset(r),i(n.status===`checking`?`preparing`:`unavailable`,!!n.onRetry);return}let a=bx(n.source.src,`video`);if(!a){o.cancel(),o.reset(r),i(`unavailable`,!1);return}let d=o.sync(r,a,e.url,n.source.playback,n.source.authToken);l(),d?.then(l)};n&&Rx(n,u);let d=()=>o.handleLoadedMetadata(r,()=>s),f=()=>{o.applyPendingSource(r),l()},p=()=>{o.handleEnded(r),l()},m=()=>{o.handleError(r),l()};return r.addEventListener(`loadedmetadata`,d),r.addEventListener(`play`,f),r.addEventListener(`seeking`,f),r.addEventListener(`ended`,p),r.addEventListener(`error`,m),u(),()=>{s=!1,r.removeEventListener(`loadedmetadata`,d),r.removeEventListener(`play`,f),r.removeEventListener(`seeking`,f),r.removeEventListener(`ended`,p),r.removeEventListener(`error`,m),o.cancel(),o.reset(r),zx(u)}}}}function Aw(){return(Aw=e((()=>{wx(),yC(),nS()})))()}function jw(){return{status:`unavailable`,reason:M(`chat.attachments.unavailable`),checkedAt:Date.now()}}function Mw(e,t,n=Date.now()){let r=e?.expiresAt!==void 0&&e.expiresAt<=n?null:e;return t>=2?r?.expiresAt?{...r,refreshAfter:r.expiresAt,refreshAttempts:t}:jw():{...r??{status:`checking`},refreshAfter:n+JC*2**t,refreshAttempts:t+1}}function Nw(e,t,n=!1){return Nx(e)?(e.value=t,Lx(e,t.status===`checking`?t.refreshAfter:t.status===`available`&&t.expiresAt!==void 0?n?t.expiresAt:Math.min(t.refreshAfter??t.expiresAt-3e4,t.expiresAt):t.status===`unavailable`&&!e.retryAttempted?t.checkedAt+JC:void 0,()=>{e.value?.status===`unavailable`&&(e.retryAttempted=!0,e.value=void 0),Fx(e)}),t):t}function Pw(e,t,n,r){if(!KC(e.url))return{status:`available`,url:e.url};if(!e.artifactId||!t)return new URL(e.url,window.location.origin).searchParams.get(`mediaTicket`)?.trim()?{status:`available`,url:e.url}:jw();let i=qC(e.url);if(!i)return jw();let a=jx(`managed-media`,`${r??0}::${e.url}::${e.artifactId}`,n,e.url),o=a.value,s=Date.now();if(o?.status===`unavailable`||o?.status===`checking`&&o.refreshAfter!==void 0&&o.refreshAfter>s)return Nw(a,o);if(o?.status===`available`){let e=o.expiresAt!==void 0&&o.expiresAt<=s;if(e&&(o.refreshAttempts??0)>=2)return a.retryAttempted=!0,Nw(a,jw());if(e&&(a.pending||o.refreshAfter!==void 0&&o.refreshAfter>s))return Nw(a,{status:`checking`,refreshAfter:a.pending?void 0:o.refreshAfter,refreshAttempts:o.refreshAttempts});let t=o.refreshAfter??(o.expiresAt===void 0?void 0:o.expiresAt-3e4);if(t===void 0||t>s)return Nw(a,o)}if(a.pending)return o?.status===`available`?o:{status:`checking`};let c=o?.status===`available`&&(o.expiresAt===void 0||o.expiresAt>s)?o:null,l=o?.refreshAttempts??0,u=()=>c||o?.status===`checking`?Mw(c,l):jw();c||Nw(a,{status:`checking`});let d=Promise.resolve().then(async()=>{let n;try{let r=await t({sessionKey:i,artifactId:e.artifactId}),a=r?.url.trim();if(!a)n=u();else{let e=Date.parse(r?.expiresAt??``),t=Date.now(),i=Number.isFinite(e)?e:t+3e5,o={status:`available`,url:a,expiresAt:i};n=i-t>3e4?o:Mw(l>=2&&c?.expiresAt!==void 0&&c.expiresAt>=i?c:o,l,t)}}catch{n=u(),n.status===`unavailable`&&(n={...n,error:!0})}return Nx(a)?(n.status===`available`&&n.refreshAttempts===void 0?a.retryAttempted=!1:n.status===`unavailable`&&l>=2&&(a.retryAttempted=!0),Nw(a,n)):null}).finally(()=>{a.pending===d&&(a.pending=void 0),Fx(a)});return a.pending=d,c&&Nw(a,c,!0),c??{status:`checking`}}function Fw(e,t,n){if(!e.artifactId||!KC(e.url))return;let r=jx(`managed-media`,`${n??0}::${e.url}::${e.artifactId}`,t,e.url);r.value=void 0,r.retryAttempted=!1,r.unavailableAt=void 0,Fx(r),t?.()}function Iw(e,t){let{resourceBasePath:n,authToken:r,onRequestUpdate:i,resolveArtifactDownload:a,connectionEpoch:o}=t,s=PC(e.url,t);if(s.status!==`available`)return{status:s.status,reason:s.status===`unavailable`?s.reason:void 0,error:s.status===`unavailable`&&s.unconfirmed,onAllow:s.status===`unavailable`&&s.canAllow?()=>IC(e.url,t,!0):void 0,onRetry:s.status===`unavailable`&&s.recoverable?()=>IC(e.url,t):void 0};let c=Pw(e,a,i,o);if(c.status!==`available`)return{status:c.status,reason:c.status===`unavailable`?c.reason:void 0,error:c.status===`unavailable`&&c.error,onRetry:c.status===`unavailable`&&e.artifactId&&a?()=>Fw(e,i,o):void 0};let l=nC(e.url),u=l?iC(e.url,n,s.mediaTicket,t,e.label):KC(e.url)?oC(c.url,n):c.url;return u?{status:`available`,source:{src:u,playback:s.playback??e.playback??`native`,authToken:l?r??null:null,sizeBytes:s.sizeBytes??e.sizeBytes,durationMs:s.durationMs??e.durationMs,width:s.width??e.width,height:s.height??e.height}}:{status:`checking`,reason:void 0,onRetry:void 0}}function Lw(e){return e.some(e=>e.attachment.kind===`document`&&!Tw(e)&&!vw(e))}function Rw(e,t,n,r,i=!0){if(e.length===0)return z;let a=i?[]:e.filter(Tw),o=e.filter(e=>i||!Tw(e)),s=e=>{let i=Iw(e.attachment,t);return{identity:e.attachment.url,...i.status===`available`?{src:/^data:text\/plain;base64,[a-z0-9+/]*={0,2}$/i.test(i.source.src)||yx(i.source.src)&&!vx(i.source.src)?i.source.src:void 0,sizeBytes:i.source.sizeBytes}:{pending:i.status===`checking`},fallback:zw(e,t,n,r,`card`)}},c=!i&&(a.length>0||o.some(vw));return R`<div
class="chat-assistant-attachments ${c?`chat-assistant-attachments--preview-chips`:``}"
>
${Ew(a,t,s)}
${o.map(e=>zw(e,t,n,r,i||e.type===`attachment`&&e.attachment.kind===`audio`&&e.attachment.isVoiceNote?`inline`:`card`))}
</div>`}function zw(e,t,n,r,i=`inline`){let a=a=>Bw(e,t,n,r,i,a);return e.type!==`attachment`||!QC(e,i)?a():R`${ew({attachments:[e.attachment],options:t,render:a})}`}function Bw(e,t,n,r,i=`inline`,a){let{onRequestOpenImage:o,onOpenImage:s,resolveArtifactDownload:c}=t;if(e.type===`attachment_error`){let{attachment:t}=e;return wS({label:t.label,mimeType:t.mimeType,badge:M(`chat.attachments.notSent`),reason:SS(t.code)})}let{attachment:l}=e,u=i===`card`&&vw(e),d=qx(l)===`svg`,f=a?.observeElement?void 0:Iw(l,t);if(!u&&(f?.status===`unavailable`||f?.status===`checking`&&!a))return wS({label:l.label,mimeType:l.mimeType,badge:f.status===`unavailable`?M(`chat.attachments.unavailable`):``,reason:f.status===`unavailable`?f.reason:void 0,onRetry:f.onRetry,onAllow:d?f.onAllow:void 0,path:nC(l.url)?l.url:void 0});let p=f?.status===`available`?f.source:void 0,m=p?.src??``,h=l.kind===`audio`||l.kind===`video`?bx(m,l.kind):u?xx(m):yx(m),g=l.kind===`video`&&s&&h?n=>{let r=o?.(),i=e=>kw(e,n=>Iw(e,{...t,onRequestUpdate:n}),t.onRequestUpdate),a=t.galleryVideos?.(e),c={...i(l),src:n,originalSrc:h,...a&&a.index>=0&&a.items.length>1?{gallery:{index:a.index,items:a.items.map(({attachment:e})=>async()=>i(e))}}:{}};s(c,r)}:void 0,_=nC(l.url)||KC(l.url)&&!!(l.artifactId&&c),v=n&&(_||h||u)?()=>n({kind:`attachment`,attachmentKind:l.kind,title:l.label,..._?{}:{src:h},mimeType:l.mimeType,...u?{plainText:!0}:{},sourceIdentity:l.url,playback:p?.playback,authToken:p?.authToken,sizeBytes:p?.sizeBytes,durationMs:p?.durationMs,width:p?.width,height:p?.height,voiceNote:l.isVoiceNote===!0,..._?{resolveSource:(e,t)=>{let n=Iw(l,{...t,onRequestUpdate:e});return n.status===`available`?{status:`ready`,...n.source}:n.status===`checking`?{status:`pending`}:n.error?{status:`error`,reason:n.reason??M(`chat.attachments.unavailable`),onRetry:n.onRetry}:{status:`unavailable`,onRetry:n.onRetry}}}:{}}):void 0;if(u)return R`<openclaw-chat-pasted-text
.src=${h&&!vx(h)?h:void 0}
.sizeBytes=${p?.sizeBytes??l.sizeBytes}
.scope=${JSON.stringify([l.url,t.sessionKey,t.agentId,t.connectionEpoch,t.resourceBasePath,t.authToken,t.policyKey])}
.onOpen=${v}
.admission=${a}
></openclaw-chat-pasted-text>`;let y=ES({kind:l.kind,label:l.label,mimeType:l.mimeType,sizeBytes:p?.sizeBytes??l.sizeBytes,downloadHref:h,downloadPending:!(!a||p),downloadPendingFocusable:!!a,onExpand:v,voiceNote:l.isVoiceNote===!0},a?.observeElement,a?.onAdmit);if(a&&!p)return y;if(d){let e=l.label.trim()||M(`chat.imageLightbox.untitled`);return R`<openclaw-chat-svg-attachment
.src=${m}
.sourceIdentity=${l.url}
.label=${e}
.mimeType=${l.mimeType??`image/svg+xml`}
.sizeBytes=${p?.sizeBytes}
.downloadHref=${yx(m)}
.onOpen=${(t,n)=>nw(s,t,e,n,o?.())}
.onExpand=${v}
.onMediaLoaded=${r}
></openclaw-chat-svg-attachment>`}return(l.kind===`audio`||l.kind===`video`)&&!h?wS({label:l.label,mimeType:l.mimeType,badge:M(`chat.attachments.unavailable`),reason:M(`chat.attachments.previewUnavailable`)}):i===`inline`&&l.kind===`audio`?R`<openclaw-chat-audio-player
.src=${h}
.sourceIdentity=${l.url}
.label=${l.label}
.mimeType=${l.mimeType??``}
.playback=${p?.playback}
.authToken=${p?.authToken}
.sizeBytes=${p?.sizeBytes}
.serverDurationMs=${p?.durationMs}
.voiceNote=${l.isVoiceNote===!0}
.onExpand=${l.isVoiceNote?void 0:v}
.onMediaLoaded=${r}
></openclaw-chat-audio-player>`:i===`inline`&&l.kind===`video`?R`<openclaw-chat-video-player
.src=${h}
.sourceIdentity=${l.url}
.label=${l.label}
.mimeType=${l.mimeType??``}
.playback=${p?.playback}
.authToken=${p?.authToken}
.sizeBytes=${p?.sizeBytes}
.mediaWidth=${p?.width}
.mediaHeight=${p?.height}
.onExpand=${g}
.onFallbackExpand=${v}
.onMediaLoaded=${r}
></openclaw-chat-video-player>`:i===`preview`&&l.kind===`video`&&p?.playback===`native`&&h&&v?aw({key:JSON.stringify([t.resourceBasePath??``,t.authToken?.trim()??``,t.sessionKey,t.agentId,t.policyKey,t.connectionEpoch??0,l.url,l.artifactId,h,400,225]),src:h,label:l.label,onOpen:v,fallback:y}):y}function Vw(){return(Vw=e((()=>{B(),b(),MS(),DC(),jC(),NC(),wx(),tw(),XC(),TS(),rw(),sC(),nS(),ow(),bw(),Ow(),Aw()})))()}function Hw(e,t){let n=t===`image/jpeg`?`jpg`:t.split(`/`,2)[1]||`img`,r=Array.from(e,e=>e.codePointAt(0)<=31||`<>:"/\\|?*`.includes(e)?`-`:e).join(``).replace(/\.[a-z0-9]{1,10}$/iu,``).replace(/[. -]+$/u,``);return`${Zl(r,120)||`generated-image`}.${/^[a-z0-9.+-]{1,12}$/u.test(n)?n:`img`}`}function Uw(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),globalThis.setTimeout(()=>URL.revokeObjectURL(n),3e4)}async function Ww(e){if(e.type===`image/png`)return e;let t=await createImageBitmap(e);try{let e=document.createElement(`canvas`);e.width=t.width,e.height=t.height;let n=e.getContext(`2d`);if(!n)throw Error(`image conversion context is unavailable`);return n.drawImage(t,0,0),await new Promise((t,n)=>{e.toBlob(e=>e?t(e):n(Error(`image conversion failed`)),`image/png`)})}finally{t.close()}}function Gw(e,t){return R`
<span class="chat-image-actions">
${[[`chat.imageLightbox.download`,F.download,async()=>{try{let n=await t();Uw(n,Hw(e,n.type))}catch{on({message:M(`chat.imageLightbox.downloadFailed`)})}}],[`chat.imageLightbox.copy`,F.copy,async()=>{se();try{if(!navigator.clipboard?.write||typeof ClipboardItem>`u`)throw Error(`image clipboard is unavailable`);let e=t().then(Ww);e.catch(()=>{}),await navigator.clipboard.write([new ClipboardItem({"image/png":e})]),on({message:M(`common.copied`)})}catch{on({message:M(`chat.imageLightbox.copyFailed`)})}}]].map(([e,t,n])=>R`
<button
type="button"
class="chat-image-action"
title=${M(e)}
aria-label=${M(e)}
@click=${()=>void n()}
>
${t}
</button>
`)}
</span>
`}function Kw(){return(Kw=e((()=>{B(),I(),b(),$e(),Ft()})))()}function qw(e,t,n,r=`thumbnail`){let i=e?Xw(e,r,t?.resourceBasePath):void 0,a=t?.authToken?.trim()??``,o=n?.trim()??``;return{cacheKey:JSON.stringify([t?.connectionEpoch,t?.resourceBasePath,t?.sessionKey,t?.agentId,t?.policyKey,a,i,o,r]),subscriberScope:`${i}::${o}::${r}`}}function Jw(e,t,n){return Vx(qw(e,t,n).cacheKey)}function Yw(e,t,n,r=`thumbnail`,i=!1){let{cacheKey:a,subscriberScope:o}=qw(e,t,n,r),s=jx(`managed-image`,a,t?.onRequestUpdate,o);s.subscribers.size>0&&!s.releaseAuthRecovery&&(s.releaseAuthRecovery=gr(()=>{Nx(s)&&s.value===null&&(s.value=void 0,s.retryAttempted=!1,s.unavailableAt=void 0,Ix(s),Fx(s))}));let c=Vx(a);if(c)return s.value=c,s.retryAttempted=!1,s.unavailableAt=void 0,s;if(s.value===null){if(!i&&(s.retryAttempted||s.unavailableAt===void 0||Date.now()-s.unavailableAt<tT))return s;Ix(s),s.retryAttempted=!0}if(s.value=void 0,!s.pending){let i=new AbortController;s.abortController=i;let o=(async()=>{let o=await Zw(e,t,n,r,i);if(!o)return $w(s);if(!Nx(s))return null;let c=Gx(a,o);return s.value=c,s.retryAttempted=!1,s.unavailableAt=void 0,c})().finally(()=>{s.abortController===i&&(s.abortController=void 0),s.pending===o&&(s.pending=void 0),s.value===null&&s.subscribers.size===0&&!s.pending&&Bx(),Fx(s)});s.pending=o}return s}function Xw(e,t,n){try{let r=new URL(e,window.location.origin);return r.pathname=r.pathname.replace(/\/(?:full|thumbnail)$/u,`/${t}`),t===`thumbnail`&&r.searchParams.set(`v`,`2`),/^https?:\/\//iu.test(e)?r.href:oC(`${r.pathname}${r.search}${r.hash}`,n)}catch{return e.replace(/\/(?:full|thumbnail)(?=$|[?#])/u,`/${t}`)}}async function Zw(e,t,n,r,i){let a=e?qC(e):t?.sessionKey,o=a&&n&&t?.resolveArtifactDownload?await t.resolveArtifactDownload({sessionKey:a,artifactId:n,variant:r},i.signal).catch(()=>null):null;if(i.signal.aborted)return null;if(o?.blob)return o.blob.type.startsWith(`image/`)?o.blob:null;let s=o?.url??e;if(!s||!e&&!s.startsWith(`data:image/`))return null;let c=KC(s)?Xw(s,r,t?.resourceBasePath):s,l=uC(o?void 0:t?.authToken);l.set(`Accept`,`image/*`),!o&&a&&l.set(`x-openclaw-requester-session-key`,a);let u=globalThis.setTimeout(()=>{i.abort(new DOMException(`managed outgoing image fetch timed out`,`TimeoutError`))},eT);try{let e=await yr(c,{method:`GET`,headers:l,credentials:`same-origin`,signal:i.signal});if(!e.ok)return null;let t=await e.blob();return t.type.startsWith(`image/`)?t:null}catch{return null}finally{globalThis.clearTimeout(u)}}async function Qw(e,t,n){let r=Yw(e,t,n,`full`,!0);r.pending&&await r.pending;let i=Hx(r.cacheKey);if(!i||!Nx(r))throw Error(`managed image is unavailable`);return i}function $w(e){return Nx(e)?(e.value=null,e.unavailableAt=Date.now(),e.retryAttempted||Lx(e,Date.now()+tT,()=>{e.value===null&&(e.retryAttempted=!0,e.value=void 0,e.unavailableAt=void 0,Fx(e))}),null):null}var eT,tT;function nT(){return(nT=e((()=>{mr(),gC(),XC(),sC(),nS(),eT=3e4,tT=5e3})))()}function rT(e){return e?.startsWith(`data:image/`)===!0||e?.startsWith(`blob:`)===!0}function iT(e){return e.alt?.trim()||e.fileName?.trim()||M(`chat.imageLightbox.untitled`)}function aT(e,t,n){let r=iT(e),i=n?.onRequestOpenImage?.(),a=n?.galleryImages,o=a?.indexOf(e)??-1,s=n?.onOpenImage,c=t=>{let r={...t,width:e.width,height:e.height};a&&a.length>1&&o>=0&&(r.gallery={index:o,items:a.map(e=>(t=!1)=>oT(e,n,t))}),i===void 0?s?.(r):s?.(r,i)};if(e.url!==void 0&&!KC(e.url)){nw(s?c:void 0,t,r);return}if(s){c({src:t,title:r,release:Wx(Yw(e.url,n,e.artifactId).cacheKey),loadFullResolution:()=>oT(e,n,!0)});return}let l=Yw(e.url,n,e.artifactId,`full`,!0);if(l.value){nw(void 0,l.value,r);return}let u=Jt(),d=()=>{u?.close(),on({message:M(`chat.imageLightbox.loadFailed`)})};(l.pending??Promise.resolve(null)).then(e=>{let t=e?Rt(e,window.location.href,{allowDataImage:!0}):null;t?u?u.location.replace(t):nw(void 0,t,r):d()}).catch(d)}async function oT(e,t,n){let r,i;if(e.url===void 0||KC(e.url)){let a=Yw(e.url,t,e.artifactId,`full`,n);if(r=a.value??await a.pending??null,!r||!Nx(a))return null;i=Wx(a.cacheKey)}else{let n=await FC(e.url,t);if(n?.status!==`available`)return null;r=iC(e.url,t?.resourceBasePath,n.mediaTicket,t,e.fileName)}let a=Rt(r,window.location.href,{allowDataImage:!0});return a?{src:a,title:iT(e),width:e.width,height:e.height,release:i}:(i?.(),null)}var sT,cT,lT,uT,dT,fT;function pT(){return(pT=e((()=>{B(),Vr(),Er(),ei(),Ar(),Ur(),b(),ft(),Ft(),IS(),Kw(),XC(),TS(),nT(),rw(),sC(),nS(),sT=3e4,cT=160,lT=class extends kr{constructor(...e){super(...e),this.managed=!1,this.presentationKey=Symbol(`image-presentation`),this.admitted=!1,this.observeFrame=e=>{if(this.stopObserving?.(),this.stopObserving=void 0,!e||!this.isConnected||this.admitted||rT(this.image?.url))return;let t=this.presentationKey;this.stopObserving=NS(e,()=>{t===this.presentationKey&&this.admit()})},this.admit=()=>{this.isConnected&&!this.admitted&&(this.admitted=!0,this.stopObserving?.(),this.stopObserving=void 0,this.refreshImage())},this.refreshImage=()=>{this.isConnected&&this.image&&this.setValue(this.render(this.image,this.options))},this.onSettled=e=>{let t=e.currentTarget;this.isConnected&&t===this.previewElement&&t instanceof HTMLImageElement&&t.isConnected&&(this.element=e.type===`load`?t:void 0,this.retained?.status===`retaining`&&this.element?.getAttribute(`src`)!==this.retained.previewUrl?e.type===`error`?this.failImage():this.releaseRetainedImage():e.type===`error`&&!this.managed&&this.image?.url&&!nC(this.image.url)&&!rT(this.image.url)&&this.failImage())}}render(e,t){let n=this.image;if(n?.url!==e.url||n?.artifactId!==e.artifactId){this.managed=e.url===void 0||KC(e.url),this.pendingPreview=void 0,this.releaseRetainedImage(),this.retained=e.factIndex!==void 0&&n&&rT(n.url)&&n.artifactId===e.artifactId&&e.url!==void 0&&rC(e.url)&&this.element?.getAttribute(`src`)===n.url&&this.element.naturalWidth>0?{status:`retaining`,previewUrl:n.url}:void 0;let r=t?.localSubmission&&n&&rT(n.url)&&rT(e.url);!this.retained&&!r&&(this.element=void 0,this.previewElement=void 0,this.admitted=!1,this.presentationKey=Symbol(`image-presentation`)),zx(this.refreshImage)}if(this.image=e,this.options=t,!this.isConnected)return this.releaseRetainedImage(),zx(this.refreshImage),jr;if(this.admitted||(this.managed?this.admitted=!!Jw(e.url,t,e.artifactId):e.url&&!this.element&&(this.element=VC(e.url,t),this.previewElement=this.element,this.admitted=!!this.element)),!this.admitted&&!rT(e.url)&&!this.retained&&typeof IntersectionObserver==`function`)return this.present(this.renderImagePlaceholder(e));this.admitted=!0;let r=t?.onRequestUpdate;r?(this.pendingPreview=void 0,Rx(r,this.refreshImage)):zx(this.refreshImage);let i=r?{...t,onRequestUpdate:this.refreshImage}:t,a=e.url;if(a===void 0)return this.renderManagedImage(e,t,i);let o=PC(a,i),s=this.retained?.status===`unavailable`,c=o.status===`checking`||o.status===`unavailable`&&o.unconfirmed,l=o.status===`available`?iC(a,t?.resourceBasePath,o.mediaTicket,t,e.fileName):c?this.element?.getAttribute(`src`):void 0;if(!l||s){this.element=void 0,this.previewElement=void 0,s||this.releaseRetainedImage();let t=o.status===`unavailable`?o.reason:s?M(`chat.imageLightbox.loadFailed`):void 0;return t===void 0?this.present(this.renderImagePlaceholder(e)):this.present(this.renderImageFrame(e,wS({label:e.fileName??e.alt??M(`chat.imageLightbox.untitled`),badge:M(`chat.attachments.unavailable`),reason:t,path:nC(a)?a:void 0,onAllow:!s&&o.status===`unavailable`&&o.canAllow?()=>IC(a,i,!0):void 0,onRetry:!s&&o.status===`unavailable`&&o.recoverable?()=>IC(a,i):void 0}),`unavailable`))}if(!this.managed){let n=this.retained;return o.status===`available`&&n?.status===`retaining`&&n.timeout===void 0&&(n.timeout=setTimeout(()=>this.failImage(),sT)),this.present(this.renderImageElement(e,l,t))}return this.renderManagedImage(e,t,i,l)}renderManagedImage(e,t,n,r=e.url){let i=Yw(r,n,e.artifactId),a=i.pending;return!t?.onRequestUpdate&&a&&this.pendingPreview!==a&&(this.pendingPreview=a,a.then(e=>{this.pendingPreview===a&&this.isConnected&&this.image&&(this.pendingPreview=void 0,this.setValue(this.present(e?this.renderImageElement(this.image,e,this.options):this.renderImagePlaceholder(this.image,M(`chat.imageLightbox.loadFailed`)))))})),this.present(i.value?this.renderImageElement(e,i.value,t):this.renderImagePlaceholder(e,i.value===null?M(`chat.imageLightbox.loadFailed`):void 0))}renderImageElement(e,t,n){let r=iT(e);return this.renderImageFrame(e,R`
<button
type="button"
class="chat-message-image-button"
aria-label=${M(`chat.imageLightbox.open`,{title:r})}
aria-disabled=${t?z:`true`}
@focus=${this.admit}
@click=${r=>{r.stopPropagation(),t?aT(e,t,n):this.admit()}}
>
${t?this.renderPreviewElement(e,t,r):R`<span class="chat-image-skeleton skeleton" aria-hidden="true"></span>`}
</button>
${this.managed&&t?Gw(r,()=>Qw(e.url,n,e.artifactId)):z}
`,t?void 0:`loading`)}renderPreviewElement(e,t,n){let r=this.previewElement??=document.createElement(`img`);r.addEventListener(`load`,this.onSettled),r.addEventListener(`error`,this.onSettled),r.alt=n,r.className=`chat-message-image`,r.referrerPolicy=`no-referrer`;for(let t of[`width`,`height`])e[t]===void 0?r.removeAttribute(t):r.setAttribute(t,String(e[t]));return r.getAttribute(`src`)!==t&&r.setAttribute(`src`,t),r}renderImageFrame(e,t,n){let{width:r=0,height:i=0}=e,a=Number.isFinite(r)&&r>0&&Number.isFinite(i)&&i>0,o=n===`loading`,s=n===`unavailable`,c=a?r/i:3/2,l=a?r<cT?cT:Math.min(r,400,360*c):400,u=s?Math.max(cT,l):l,d=Math.min(360,u/c);return R`<span
${Or(this.observeFrame)}
class="chat-image-frame ${a||o||s?`chat-image-frame--image`:``} ${this.managed&&!s?`chat-image-frame--managed`:``} ${s?`chat-image-frame--compact`:``}"
style=${`--chat-image-width: ${u}px; --chat-image-min-width: ${cT}px; --chat-image-ratio: ${s?`auto`:`${u} / ${d}`}`}
aria-busy=${o?`true`:`false`}
role=${o?`status`:z}
aria-label=${o?M(`common.loading`):z}
>${t}</span
>`}renderImagePlaceholder(e,t){return t===void 0?this.renderImageElement(e,void 0,this.options):this.renderImageFrame(e,wS({label:e.fileName??e.alt??M(`chat.imageLightbox.untitled`),badge:M(`chat.attachments.unavailable`),reason:t,onRetry:this.managed?()=>{Yw(e.url,this.options?.onRequestUpdate?{...this.options,onRequestUpdate:this.refreshImage}:this.options,e.artifactId,`thumbnail`,!0),this.refreshImage()}:void 0}),`unavailable`)}releaseRetainedImage(){let e=this.retained;this.retained=void 0,e?.status===`retaining`&&clearTimeout(e.timeout)}failImage(){this.releaseRetainedImage(),this.retained={status:`unavailable`},this.refreshImage()}present(e){return R`${Br(this.presentationKey,e)}`}disconnected(){this.previewElement&&(this.previewElement.removeEventListener(`load`,this.onSettled),this.previewElement.removeEventListener(`error`,this.onSettled),this.previewElement.remove()),this.element&&this.image?.url&&HC(this.image.url,this.element,this.options,this.image.fileName),this.previewElement=void 0,this.stopObserving?.(),this.stopObserving=void 0,this.admitted=!1,this.releaseRetainedImage(),this.element=void 0,this.pendingPreview=void 0,this.presentationKey=Symbol(`image-presentation`),zx(this.refreshImage)}reconnected(){this.refreshImage()}},uT=Mr(lT),dT=class extends ri{constructor(...e){super(...e),this.slots=[],this.scope=``,this.localSubmission=!1}render(e,t,n=[]){let r=JSON.stringify([t?.connectionEpoch,t?.authToken?.trim(),t?.resourceBasePath,t?.sessionKey,t?.agentId]),i=this.scope===r&&(!this.localSubmission||t?.localSubmission!==!1)&&(this.canonicalMessageKey===t?.canonicalMessageKey||this.localSubmission&&!this.canonicalMessageKey),a=i?this.localSubmission:t?.localSubmission===!0,o=i&&a&&e.length===this.slots.length&&this.slots.every(({image:e})=>rT(e.url))&&e.every(e=>e.factIndex!==void 0)?e.toSorted((e,t)=>(e.factIndex??0)-(t.factIndex??0)):this.slots.map(({image:e})=>e),s=new Map(o.map((e,t)=>[e.factIndex,this.slots[t]?.key]));this.slots=e.map((e,n)=>{let r=this.slots[n],a=e.factIndex===void 0?r?.image.factIndex===void 0?r?.key:void 0:s.get(e.factIndex),o=this.policyKey===t?.policyKey||rT(e.url)||e.url!==void 0&&rC(e.url);return{image:e,key:i&&o&&a||Symbol(`image-slot`)}}),this.scope=r,this.policyKey=t?.policyKey,this.canonicalMessageKey=t?.canonicalMessageKey,this.localSubmission=a&&!(t?.canonicalMessageKey&&e.every(e=>e.factIndex!==void 0));let c=e.length+n.length;if(!c)return z;let l=[`chat-message-images`,c===1?`chat-message-images--single`:`chat-message-images--gallery`,c===2||c===4?`chat-message-images--two-column`:``,c===5?`chat-message-images--five`:``].filter(Boolean).join(` `);return R`<div class=${l}>
${Rr(this.slots,({key:e})=>e,({image:n})=>R`${uT(n,{...t,galleryImages:t?.galleryImages??e})}`)}
${n}
</div>`}},fT=Mr(dT)})))()}function mT(e,t){let n=e.flatMap(e=>e.type===`text`?[e.text]:[]).join(`
`),r=`OPENCLAWMEDIASLOT`;for(;n.includes(r);)r+=`X`;let i=[];return{markdown:e.map(e=>e.type===`text`?e.text:(i.push(e),`${r}${i.length-1}END`)).join(`
`),media:{prefix:r,text:n,items:i,render:t}}}function hT(e){return Array.from(e.childNodes).some(e=>e.nodeType===Node.TEXT_NODE?e.textContent?.trim():e.nodeName!==`BR`)}function gT(e,t){let n=Array.from(e.childNodes,e=>({node:e,key:e instanceof Element?e.getAttribute(`data-markdown-key`):null})),r=new Map;for(let{key:e}of n)e&&r.set(e,(r.get(e)??0)+1);return Rr(n,({key:e},t)=>e&&r.get(e)===1?e:t,({node:e})=>xT(e,t))}var _T,vT,yT,bT,xT,ST,CT;function wT(){return(wT=e((()=>{B(),Lr(),Er(),Ur(),Qr(),ti(),_T=class extends ri{constructor(...e){super(...e),this.previous=new Map}render(e){return jr}update(e,[t]){let n=new Map(Array.from(t.attributes,e=>[e.name,e.value]));for(let t of new Set([...this.previous.keys(),...n.keys()])){let r=this.previous.get(t),i=n.get(t);if(r!==i){if(t===`class`){let t=new Set(r?.split(/\s+/).filter(Boolean)),n=new Set(i?.split(/\s+/).filter(Boolean));for(let r of t)n.has(r)||e.element.classList.remove(r);for(let r of n)t.has(r)||e.element.classList.add(r)}else i===void 0?e.element.removeAttribute(t):e.element.setAttribute(t,i)}}return this.previous=n,jr}},vT=Mr(_T),yT=new Set([`br`,`hr`,`img`,`input`]),bT=class extends ri{update(e,[t,n]){let r=this.render(t,n);if(typeof r==`string`&&typeof Fr(e)==`string`){let t=e.startNode?.nextSibling;(!(t instanceof Text)||t.nextSibling!==e.endNode)&&Yr(e)}return r}render(e,t){let n=t.slots.get(e);if(n!==void 0){this.previous=void 0;let e=t.media?.items[n];return e?t.media?.render(e,n):z}let r=`${e.nodeType}:${e instanceof Element?e.outerHTML:e.textContent}`,i=this.previous===r;if(this.previous=r,i&&!t.mediaAncestors.has(e))return jr;if(e.nodeType===Node.TEXT_NODE)return e.textContent;if(!(e instanceof Element))return z;if(!t.incremental&&!t.mediaAncestors.has(e)||e.classList.contains(`markdown-mermaid`)||e.localName.includes(`-`))return Xr(e.outerHTML);let a=ni(e.localName);return yT.has(e.localName)?Nr`<${a} ${vT(e)}>`:Nr`<${a} ${vT(e)}>${gT(e,t)}</${a}>`}},xT=Mr(bT),ST=class extends ri{constructor(...e){super(...e),this.source=``,this.prefix=``,this.slots=new Map,this.mediaAncestors=new Set}render(e,t,n=!1){if(!n&&!t)return Xr(e);let r=t?.prefix??``;if(this.source!==e||this.prefix!==r||!this.template){this.source=e,this.prefix=r;let t=document.createElement(`template`);t.innerHTML=e,this.template=t,this.slots.clear(),this.mediaAncestors.clear();let n=RegExp(`${r}(\\d+)END`,`g`),i=document.createTreeWalker(t.content,NodeFilter.SHOW_TEXT),a=[],o=[];for(let e=i.nextNode();e;e=i.nextNode())r&&e instanceof Text&&e.data.includes(r)&&a.push(e);for(let e of a){let t=document.createDocumentFragment(),r=0;for(let i of e.data.matchAll(n)){t.append(e.data.slice(r,i.index));let n=document.createComment(i[0]);o.push(n),this.slots.set(n,Number(i[1])),t.append(n),r=i.index+i[0].length}t.append(e.data.slice(r)),e.replaceWith(t)}for(let e of o){let t=e.parentElement?.closest(`p`);if(!t)continue;let n=t.cloneNode(!1),r=document.createRange();r.setStart(t,0),r.setEndBefore(e),n.appendChild(r.extractContents()),hT(n)&&t.before(n),t.before(e),hT(t)||t.remove()}for(let e of o)for(let t=e.parentNode;t;t=t.parentNode)this.mediaAncestors.add(t)}let i={media:t,slots:this.slots,mediaAncestors:this.mediaAncestors,incremental:n};return gT(this.template.content,i)}},CT=Mr(ST)})))()}function TT(e,t){let n=e.filter(e=>e.width>0&&e.bottom>e.top).toSorted((e,t)=>e.top-t.top),r,i=[];for(let e of n)if(!r||e.top>=Math.min(r.bottom,r.top+r.lineHeight)-ET){if(i.length>t)break;r={...e},i.push(r)}else r.bottom=Math.max(r.bottom,e.bottom),r.glyphTop=Math.min(r.glyphTop,e.glyphTop),r.lineHeight=Math.max(r.lineHeight,e.lineHeight);if(!(i.length<t))for(let e=t-1;e>=0;e--){let t=i[e],n=i[e+1],r=Math.min(t.top+t.lineHeight*DT,n?.glyphTop??1/0);if(r>=t.top+t.lineHeight*OT)return{...t,clamp:r}}}var ET,DT,OT;function kT(){return(kT=e((()=>{ET=.5,DT=.74,OT=.66})))()}function AT(e,t,n,r){let i=[jd(e,r)],a=R`<div class="chat-text">${Xr(i[0])}</div>`;return FT(e.text,t,n,a,i)}function jT(e){return e.length>zT||e.split(`
`,41).length>BT}function MT(e){WT.add(e),!GT&&(GT=!0,queueMicrotask(()=>{GT=!1;let e=[...WT];WT.clear();for(let t of e)t.element.style.removeProperty(`--chat-disclosure-clamp`);let t=e.map(e=>e.read());for(let e of t)e?.()}))}function NT(e,t){let n=null,r,i,a=0;return o=>{let s=++a;if(i&&=(WT.delete(i),void 0),n?.disconnect(),n=null,r&&=(document.fonts?.removeEventListener(`loadingdone`,r),void 0),!(o instanceof HTMLElement))return;let c=i={element:o,read:()=>{if(a!==s)return;let n=o.parentElement,r=n?.querySelector(`:scope > .chat-message-disclosure__toggle`);if(!n||!r)return;let i,c,l=o.querySelector(`:scope > .chat-text`),u=o.scrollHeight,d=u>o.clientHeight+1;if(!t&&!e&&d&&l&&o.clientWidth>0){let e=o.getBoundingClientRect().top-o.scrollTop,t=Number.parseFloat(getComputedStyle(l).lineHeight),n=document.createTreeWalker(l,NodeFilter.SHOW_TEXT),r=document.createRange(),a=[];for(let i=n.nextNode();i;i=n.nextNode()){if(!i.textContent?.trim()||!i.parentElement?.checkVisibility()||i.parentElement.matches(`details:not([open])`))continue;let n=Number.parseFloat(getComputedStyle(i.parentElement).lineHeight)||t;r.selectNodeContents(i);for(let t of r.getClientRects()){let r=Math.floor((n-t.height)/2);a.push({top:t.top-e-r,glyphTop:t.top-e,bottom:t.bottom-e-r,width:t.width,lineHeight:n})}}for(let n of l.querySelectorAll(`details:not(:has(> summary))`)){if(!n.checkVisibility())continue;let r=getComputedStyle(n),i=Number.parseFloat(r.lineHeight)||t,o=n.getBoundingClientRect(),s=o.top-e+Number.parseFloat(r.borderTopWidth)+Number.parseFloat(r.paddingTop);a.push({top:s,glyphTop:s,bottom:s+i,width:o.width,lineHeight:i})}let s=TT(a,VT);s&&(i=`${s.clamp}px`,c=`${s.clamp-s.top-s.lineHeight*HT}px`)}let f=!e&&(t&&l?u<=Number.parseFloat(getComputedStyle(l).lineHeight)*UT+1:!d);return()=>{if(a===s){for(let[e,t]of[[`--chat-disclosure-clamp`,i],[`--chat-disclosure-fade-size`,c]])t===void 0?o.style.removeProperty(e):o.style.getPropertyValue(e)!==t&&o.style.setProperty(e,t);r.hidden=f}}}},l=()=>{a===s&&MT(c)};queueMicrotask(()=>{if(a!==s)return;let e=o.querySelector(`:scope > .chat-text`);e&&n?.observe(e)}),l(),r=l,document.fonts?.addEventListener(`loadingdone`,r),typeof ResizeObserver==`function`&&(n=new ResizeObserver(l),n.observe(o))}}function PT(e,t,n,r,i,a){let o=n.assistantMessageDisclosure,s=n.role===`assistant`,c=s||n.role===`user`&&o?.onRetryFullMessage,l=c&&o?.expanded,{content:u,parts:d}=IT(l?o.markdown??e:e,t,n.isStreaming,l?{...r,mode:`document`}:r,i,s&&n.isStreaming?t:void 0,a);return c&&o?.onRetryFullMessage?R`
${u}
<div class="chat-message-load-error">
${M(`chat.messages.fullContentLoadExhausted`)}
<button
type="button"
class="chat-message-load-error__retry"
@click=${o.onRetryFullMessage}
>
${M(`common.retry`)}
</button>
</div>
`:FT(e,t,n,u,d)}function FT(e,t,n,r,i){if(!n.onToggleUserMessageExpanded||(n.isForwarded?n.isStreaming:n.role!==`user`||!jT(e)))return r;let a=`${n.isForwarded?`forwarded`:`user`}-message:${t}`,o=n.isUserMessageExpanded?.(a)??!1;return R`
<div
class="chat-message-disclosure ${n.isForwarded?`chat-message-disclosure--forwarded`:``} ${o?`is-expanded`:``}"
>
<div
class="chat-message-disclosure__content"
${zr([...i,o,n.isForwarded],()=>Or(NT(o,!!n.isForwarded)))}
>
${r}
</div>
<button
class="chat-message-disclosure__toggle"
type="button"
aria-expanded=${String(o)}
@click=${()=>n.onToggleUserMessageExpanded?.(a)}
>
${M(o?`chat.messages.showLess`:`chat.messages.showMore`)}
${o?F.chevronUp:F.chevronDown}
</button>
</div>
`}function IT(e,t,n,r,i,a,o){let s=n?Ad(e,r,a):[zu(e,r),``];if(i){let e=+!!s[1].trim();s[e]=LT(s[e],i)}let c=qT(t,e,s,o);return{parts:s,content:R`
<div class="chat-text" dir="${hb(o?.text??e)}">${c}</div>
`}}function LT(e,t){let n=document.createElement(`template`);n.innerHTML=e;let r=n.content.lastElementChild,i=r?RT(r):null,a=document.createElement(`span`);return a.className=`chat-duplicate-count`,a.setAttribute(`aria-label`,t.label),a.textContent=`×${t.count}`,(i??n.content).append(document.createTextNode(`\xA0`),a),n.innerHTML}function RT(e){if(/^(?:P|H[1-6])$/u.test(e.tagName))return e;if(!/^(?:BLOCKQUOTE|LI|OL|UL)$/u.test(e.tagName))return null;let t=e.lastElementChild;return t?RT(t):e.textContent?.trim()?e:null}var zT,BT,VT,HT,UT,WT,GT,KT,qT;function JT(){return(JT=e((()=>{B(),Vr(),Zr(),ei(),Ar(),Qr(),I(),Dd(),b(),ns(),bb(),kT(),wT(),fc(),zT=1200,BT=40,VT=5,HT=.24,UT=3,WT=new Set,GT=!1,KT=class extends kr{constructor(...e){super(...e),this.source=``,this.stableHtml=``,this.fragments=[],this.generation={},this.mediaSlots=new Map,this.mediaRender={}}disconnected(){for(let e of this.mediaSlots.values())e.part?.setConnected(!1)}reconnected(){for(let e of this.mediaSlots.values())e.part?.setConnected(!0)}render(e,t,[n,r],i){if(this.messageKey!==e){for(let e of this.mediaSlots.values())Ir(z,e.element);this.mediaSlots.clear()}if((this.messageKey!==e||!t.startsWith(this.source)||!n.startsWith(this.stableHtml))&&(this.fragments=[],this.tail=void 0,this.stableHtml=``,this.generation={}),n.length>this.stableHtml.length){let e=n.slice(this.stableHtml.length);this.tail?(this.tail.html=e,this.tail=void 0):this.fragments.push({html:e,incremental:!1})}r?this.tail?this.tail.html=r:(this.tail={html:r,incremental:!0},this.fragments.push(this.tail)):this.tail&&=(this.fragments.pop(),void 0),this.messageKey=e,this.source=t,this.stableHtml=n;let a=new Set,o=this.mediaRender={},s=i?{...i,render:(e,t)=>{let n=this.mediaSlots.get(t);return n||(n={element:document.createElement(`div`)},this.mediaSlots.set(t,n)),a.add(t),n.part=Ir(i.render(e,t),n.element),n.part.setConnected(this.isConnected),n.element}}:void 0;return queueMicrotask(()=>{if(this.mediaRender===o)for(let[e,t]of this.mediaSlots)a.has(e)||(Ir(z,t.element),this.mediaSlots.delete(e))}),Br(this.generation,R`${this.fragments.map(e=>zr([e.html,s],()=>CT(e.html,s,e.incremental)))}`)}},qT=Mr(KT)})))()}function YT(e,t={}){if(t.eligible===!1)return``;let n=(v(e)^(t.salt??XT))>>>0;return n%1e3>=ZT?``:QT[Math.floor(n/1e3)%QT.length]??``}var XT,ZT,QT;function $T(){return($T=e((()=>{XT=Math.trunc(Math.random()*4294967295),ZT=50,QT=[`chat-reading-indicator--southpaw`,`chat-reading-indicator--flurry`,`chat-reading-indicator--spin`,`chat-reading-indicator--shadowbox`,`chat-reading-indicator--backflip`,`chat-reading-indicator--zen`,`chat-reading-indicator--drummer`,`chat-reading-indicator--peekaboo`,`chat-reading-indicator--nodoff`,`chat-reading-indicator--curious`,`chat-reading-indicator--omnom`,`chat-reading-indicator--fakeout`]})))()}function eE(e){let t=Math.max(1,Math.round(e/1e3)),n=Mt.getLocale(),r=[];for(let{seconds:e,unit:i}of iE){let a=Math.floor(t/e);if(a!==0&&(r.push(new Intl.NumberFormat(n,{style:`unit`,unit:i,unitDisplay:`long`}).format(a)),t-=a*e,r.length===2))break}return new Intl.ListFormat(n,{style:`long`,type:`unit`}).format(r)}function tE(e){return e===1?M(`chat.turnRecap.tokensOne`):M(`chat.turnRecap.tokens`,{count:Tt(e)})}function nE(e,t={}){let n=t.waitingApproval===!0,r=t.waitingSubagents,i=r?.child,a=(t.mascot??br().mascot)===`none`,o=t.presentation===`continuation`,s=r?M(`chat.waitingOnSubagents`):n?M(`chat.waitingForApproval`):t.startupLabel||M(`common.working`),c=!r&&!n&&!t.startupLabel,l=r?null:t.outputTokens;return R`
<div
class="chat-working-indicator ${o?`chat-working-indicator--continuation`:``} ${r?`chat-working-indicator--subagents`:``}"
role="status"
aria-live="off"
>
${o?z:R`
<div
class="chat-bubble chat-reading-indicator ${a?`chat-reading-indicator--neutral`:YT(e.key,{eligible:!n&&!r})}"
aria-hidden="true"
>
${a?R`<span></span><span></span><span></span>`:F.claw}
</div>
`}
<span class="chat-working-indicator__status">
<span class=${c&&!o?`sr-only`:``}>${s}</span>
${i&&t.onOpenSession?R`<button
class="chat-working-indicator__child"
type="button"
title=${i.label}
@click=${()=>t.onOpenSession?.(i.key)}
>
${i.label}
</button>`:z}
${n||e.startedAt===null?z:R`
<openclaw-elapsed-time
class="chat-working-indicator__elapsed"
.startMs=${e.startedAt}
></openclaw-elapsed-time>
`}
${l==null?c?R`
<openclaw-working-phrase
aria-hidden="true"
.startMs=${e.startedAt}
.seed=${e.key}
.phrases=${t.workingPhrases}
></openclaw-working-phrase>
`:z:R`
<span aria-hidden="true">·</span>
<span class="chat-working-indicator__tokens"
>${tE(l)}</span
>
`}
</span>
</div>
`}function rE(e,t={}){let n=t.presentation===`continuation`,r=eE(e.runtimeMs),i=typeof e.outputTokens==`number`?tE(e.outputTokens):null;return R`
<div
class="chat-turn-recap ${n?`chat-turn-recap--continuation`:``}"
role="status"
>
${n?z:R`<span class="chat-turn-recap__claw" aria-hidden="true"
>${br().mascot===`none`?F.mark:F.claw}</span
>`}
<span>${M(`chat.turnRecap.doneIn`,{duration:r})}</span>
${i===null?z:R`
<span class="chat-turn-recap__sep" aria-hidden="true">·</span>
<span>${i}</span>
`}
</div>
`}var iE;function aE(){return(aE=e((()=>{B(),Qu(),bd(),I(),_r(),b(),qe(),$T(),iE=[{seconds:86400,unit:`day`},{seconds:3600,unit:`hour`},{seconds:60,unit:`minute`},{seconds:1,unit:`second`}]})))()}function oE(e=`smooth`){return e===`smooth`&&typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:e}function sE(){return(sE=e((()=>{})))()}function cE(e){let t=EE.get(e);if(t)return EE.delete(e),EE.set(e,t),t;let n=new Map;for(EE.set(e,n);EE.size>TE;){let e=EE.keys().next().value;if(typeof e!=`string`)break;EE.delete(e)}return n}function lE(e,t){let n=cE(e),r=E_(n,t);if(r!==void 0)return r;for(let[e,r]of n)if(at(e,t))return n.delete(e),D_(n,t,r),r}function uE(e,t,n){let r=cE(e);for(let e of r.keys())at(e,t)&&r.delete(e);D_(r,t,{scrollTop:Math.max(0,n.scrollTop),anchorToEnd:n.anchorToEnd})}function dE(e){let t=Math.max(0,e.scrollHeight-e.clientHeight),n=Math.min(Math.max(0,e.scrollTop),t);return{scrollTop:n,anchorToEnd:t-n<=8}}function fE(e){return!e.chatFollowLocked&&!DE.get(e)?.manual}function pE(e){DE.get(e)?.cancel()}function mE(e,t){e.chatNewMessagesBelow!==t&&(e.chatNewMessagesBelow=t,e.renderLifecycle.invalidate())}function hE(e,t,n,r){let i=e.chatScrollElement?.();if(!i)return;let a=i.scrollHeight-i.scrollTop-i.clientHeight,o=i.scrollHeight>(e.chatLastScrollHeight??0)+1,s=Math.abs(i.scrollHeight-(e.chatLastScrollHeight??0))>1;e.chatLastScrollHeight=i.scrollHeight;let c=r.contentChanged??r.source!==`resize`,l=r.source===`manual`,u=t&&!e.chatHasAutoScrolled;if(!(l||u||!e.chatFollowLocked&&(c&&s||r.source===`resize`||e.chatUserNearBottom||a<wE))){(c||r.source===`resize`&&o)&&mE(e,!0);return}let d=oE(n?`smooth`:`auto`);e.chatScrollToEnd?.({behavior:d,source:l?`manual`:`auto`})&&(u&&(e.chatHasAutoScrolled=!0),e.chatFollowLocked=!1,e.chatUserNearBottom=!0,mE(e,!1),l&&a<=8&&SE(e,i,`toward-end`))}function gE(e,t,n,r,i){if(r.source!==`manual`&&DE.get(e)?.manual)return;pE(e);let a=null,o,s={manual:r.source===`manual`,cancel:()=>{DE.get(e)===s&&(DE.delete(e),o?.(),a!==null&&cancelAnimationFrame(a))}};DE.set(e,s);let c=i=>{let o=()=>{DE.get(e)===s&&(DE.delete(e),i?.(),hE(e,t,n,r))};return a=requestAnimationFrame(()=>{s.manual&&n&&oE()===`smooth`?a=requestAnimationFrame(o):o()}),s.cancel};i?c():o=e.renderLifecycle.afterCommit(c,s.cancel)}function _E(e,t=!1,n=!1,r={}){gE(e,t,n,r,!0)}function vE(e,t=!1,n=!1,r={}){gE(e,t,n,r,!1)}function yE(e,t){let n=t.currentTarget;n&&SE(e,n)}function bE(e,t=!1){pE(e);let n=e.chatScrollElement?.();n&&SE(e,n,t?`toward-end`:`reader`)}function xE(e){let t=!e.chatFollowLocked||e.chatUserNearBottom;pE(e),e.chatHasAutoScrolled=!0,e.chatFollowLocked=!0,e.chatUserNearBottom=!1,e.chatCancelScroll?.(),t&&e.renderLifecycle.invalidate()}function SE(e,t,n=!1){let r=Math.max(0,t.scrollTop),i=r-e.chatLastScrollTop;e.chatLastScrollTop=r,e.chatLastScrollHeight=t.scrollHeight;let a=n!==!1||i<0&&!e.chatIsMaintenanceScroll?.();if(e.chatIsProgrammaticScroll?.()&&!a)return;let o=t.scrollHeight-t.scrollTop-t.clientHeight,s=e.chatReadingHistory;a&&o>8?(e.chatHasAutoScrolled=!0,e.chatFollowLocked=!0,e.chatReadingHistory=!0):o<=8&&(i>0||n===`toward-end`)&&(e.chatFollowLocked=!1,e.chatReadingHistory=!1),e.chatReadingHistory!==s&&e.renderLifecycle.invalidate(),e.chatUserNearBottom=!e.chatFollowLocked&&o<wE,mE(e,t.scrollHeight-t.clientHeight>8&&o>8)}function CE(e){pE(e),e.chatHasAutoScrolled=!1,e.chatUserNearBottom=!0,e.chatFollowLocked=!1,e.chatReadingHistory=!1,e.chatLastScrollTop=0,e.chatLastScrollHeight=0,e.chatNewMessagesBelow=!1}var wE,TE,EE,DE;function OE(){return(OE=e((()=>{O(),k_(),wE=450,TE=8,EE=new Map,DE=new WeakMap})))()}function kE(e){return{scrollTop:e.scrollTop,clientHeight:e.clientHeight,scrollHeight:e.scrollHeight}}function AE(e,t){let n=ME.get(e)??new Set;return n.add(t),ME.set(e,n),()=>{n.delete(t),n.size===0&&ME.delete(e)}}function jE(e,t){for(let n of ME.get(e)??[])n(t)}var ME;function NE(){return(NE=e((()=>{ME=new WeakMap})))()}function PE(e){return e.matches(`.agent-chat__composer-combobox > textarea`)&&typeof CSS<`u`&&CSS.supports(`field-sizing`,`content`)}function FE(e){let t=window.visualViewport?.offsetTop??0,n=e.getBoundingClientRect().top-t-$E;e.style.setProperty(`--chat-composer-popover-max-height`,`${Math.max(0,n)}px`)}function IE(e){if(QE.has(e))return;let t=window.visualViewport,n={resizeObserver:null,toggleObserver:null,viewport:t,updateFrame:null,scheduleUpdate:()=>{n.updateFrame===null&&(n.updateFrame=requestAnimationFrame(()=>{n.updateFrame=null,QE.get(e)===n&&FE(e)}))}};typeof ResizeObserver==`function`&&(n.resizeObserver=new ResizeObserver(n.scheduleUpdate),n.resizeObserver.observe(e)),typeof MutationObserver==`function`&&(n.toggleObserver=new MutationObserver(n.scheduleUpdate),n.toggleObserver.observe(e,{attributes:!0,attributeFilter:[`open`],subtree:!0})),window.addEventListener(`resize`,n.scheduleUpdate),t?.addEventListener(`resize`,n.scheduleUpdate),t?.addEventListener(`scroll`,n.scheduleUpdate),QE.set(e,n),FE(e)}function LE(e){let t=QE.get(e);QE.delete(e),t&&(t.resizeObserver?.disconnect(),t.toggleObserver?.disconnect(),window.removeEventListener(`resize`,t.scheduleUpdate),t.viewport?.removeEventListener(`resize`,t.scheduleUpdate),t.viewport?.removeEventListener(`scroll`,t.scheduleUpdate),t.updateFrame!==null&&cancelAnimationFrame(t.updateFrame))}function RE(e,t){let n=t instanceof HTMLElement?t:null;return e&&e!==n&&LE(e),n&&IE(n),n}function zE(e,t){t.nativeInputPending=!0;let n=e.closest(`.chat`)?.querySelector(`.chat-thread`);n&&jE(n,{type:`composer-input`}),t.hasScrollbarGutter&&e.style.overflowY!==`hidden`&&(e.style.overflowY=`hidden`)}function BE(e){e.removeAttribute(`data-scroll-fade-top`),e.removeAttribute(`data-scroll-fade-bottom`);let t=ZE.get(e);t&&t.overflowFrame===null&&(t.overflowFrame=requestAnimationFrame(()=>{t.overflowFrame=null,e.isConnected&&ZE.get(e)===t&&VE(e,!1)}))}function VE(e,t=!0,n){if(t&&ZE.get(e)?.editing&&PE(e)){BE(e);return}let r=n?.clientHeight??e.clientHeight,i=n?.scrollHeight??e.scrollHeight,a=i>r+1,o=a&&r>=64&&!ZE.get(e)?.editing,s=o&&e.scrollTop>1,c=o&&e.scrollTop+r<i-1,l=a?`auto`:`hidden`;e.style.overflowY!==l&&(e.style.overflowY=l),e.toggleAttribute(`data-scroll-fade-top`,s),e.toggleAttribute(`data-scroll-fade-bottom`,c);let u=ZE.get(e);if(u){if(u.hasScrollbarGutter=!1,a&&PE(e)){let t=getComputedStyle(e);u.hasScrollbarGutter=e.offsetWidth-e.clientWidth>Number.parseFloat(t.borderLeftWidth)+Number.parseFloat(t.borderRightWidth)}let t=u.height!==r;if(u.height=r,u.nativeInputPending){u.nativeInputPending=!1;let n=e.closest(`.chat`)?.querySelector(`.chat-thread`);n&&jE(n,{type:`composer-layout`,changed:t})}}}function HE(e,t={}){if(e.closest(`[data-composer-layout="single-line"]`)){e.style.height=``,e.style.overflowY=``,e.removeAttribute(`data-scroll-fade-top`),e.removeAttribute(`data-scroll-fade-bottom`);return}let n=e.closest(`.chat`)?.querySelector(`.chat-thread`)??null,r=ZE.get(e);if(t.nativeInput&&r&&PE(e)){zE(e,r),e.style.height!==``&&(e.style.height=``),BE(e);return}n&&jE(n,{type:`before-resize`});let i=n?.clientHeight,a=n?dE(n):null,o=getComputedStyle(e),s=o.maxHeight.trim(),c=/^(\d+(?:\.\d+)?)px$/u.exec(s),l=c?Number(c[1]):150,u=o.boxSizing===`border-box`,d=Number.parseFloat(o.lineHeight)*e.rows+(u?Number.parseFloat(o.paddingTop)+Number.parseFloat(o.paddingBottom):0),f=Math.max(Number.parseFloat(o.minHeight),Math.round(d)+(u?Number.parseFloat(o.borderTopWidth)+Number.parseFloat(o.borderBottomWidth):0)),p=/^(\d+(?:\.\d+)?)px$/u.exec(e.style.height);if(!p||Number(p[1])<=f||c&&Number(p[1])>=l){let t=Number.parseFloat(o.height),n=e.scrollHeight,r=e.clientHeight,i=n>r+1,a=!i&&t===f,s=i&&c&&t>=l&&e.offsetWidth-e.clientWidth<=Number.parseFloat(o.borderLeftWidth)+Number.parseFloat(o.borderRightWidth);if(a||s){VE(e,!1,{scrollHeight:n,clientHeight:r});return}}e.style.overflowY=`hidden`,e.style.height=`auto`;let m=o.boxSizing===`border-box`?e.offsetHeight-e.clientHeight:0;if(e.style.height=`${Math.min(e.scrollHeight+m,l)}px`,VE(e),n){a?.anchorToEnd&&(n.scrollTop=n.scrollHeight);let e=n.scrollTop,t=n.clientHeight;if(t===i&&e===a?.scrollTop)return;jE(n,{type:`resize`,viewport:{clientHeight:t,scrollHeight:n.scrollHeight,scrollTop:e},...a?.anchorToEnd&&a.scrollTop!==e?{scrollCorrection:{before:a.scrollTop,after:e}}:{}})}}function UE(e){if(ZE.has(e))return;let t={observer:null,adjustmentFrame:null,overflowFrame:null,height:e.clientHeight,nativeInputPending:!1,hasScrollbarGutter:!1,editing:!1,events:new AbortController},n=e.getBoundingClientRect().width,r=()=>VE(e,!1);t.observer=typeof ResizeObserver==`function`?new ResizeObserver(()=>{let r=e.getBoundingClientRect().width;if(r!==n){n=r,ZE.get(e)===t&&t.adjustmentFrame===null&&(t.adjustmentFrame=requestAnimationFrame(()=>{t.adjustmentFrame=null,ZE.get(e)===t&&HE(e)}));return}VE(e,!1)}):null;let i=n=>{n instanceof KeyboardEvent&&(n.isComposing||!/^(ArrowUp|ArrowDown|ArrowLeft|ArrowRight|PageUp|PageDown|Home|End)$/u.test(n.key))||(t.editing=[`beforeinput`,`input`,`compositionstart`,`keydown`].includes(n.type),n.type===`beforeinput`&&PE(e)&&zE(e,t),VE(e))},a={passive:!0,signal:t.events.signal};for(let t of[`beforeinput`,`input`,`compositionstart`,`wheel`,`pointerdown`,`keydown`,`blur`])e.addEventListener(t,i,a);e.addEventListener(`scroll`,r,a),ZE.set(e,t),t.observer?.observe(e),VE(e)}function WE(e){let t=ZE.get(e);ZE.delete(e),t&&(t.observer?.disconnect(),t.events.abort(),t.adjustmentFrame!==null&&cancelAnimationFrame(t.adjustmentFrame),t.overflowFrame!==null&&cancelAnimationFrame(t.overflowFrame))}function GE(e){queueMicrotask(()=>{e.isConnected&&HE(e,{nativeInput:!0})})}function KE(e,t){if(e.defaultPrevented)return;let n=e.target;if(!(n instanceof Element))return;if(e.type===`pointerdown`){e.button===0&&n.closest(`summary, wa-dropdown>[slot='trigger']`)&&e.preventDefault();return}if(!t||e.composedPath().some(e=>e instanceof Element&&e.matches(XE)))return;let r=e.currentTarget;r instanceof HTMLElement&&r.querySelector(`.agent-chat__composer-combobox > textarea`)?.focus({preventScroll:!0})}function qE(e,t){let n=t?.closest(`.agent-chat__composer-shell`);document.activeElement===t&&n&&e.preventDefault()}function JE(e,t){requestAnimationFrame(()=>{if(document.activeElement!==e)return;HE(e);let n=t===`up`?0:e.value.length;e.selectionStart=n,e.selectionEnd=n})}function YE(e,t){return`chat-${encodeURIComponent(e)}-${t}`}var XE,ZE,QE,$E;function eD(){return(eD=e((()=>{OE(),NE(),XE=[`a[href]`,`button`,`input`,`select`,`textarea`,`summary`,`wa-dropdown`,`[contenteditable='true']`,`[role='button']`,`[role='listbox']`,`[role='option']`].join(`,`),ZE=new WeakMap,QE=new WeakMap,$E=28})))()}function tD(e,t,n){e?.settingsAgentSelection.set(t),e?.navigate(`model-providers`,{search:`?provider=${encodeURIComponent(n)}`})}function nD(){return(nD=e((()=>{})))()}function rD(e){let t=e.captureConnectionScope(),n=()=>!!(t&&e.isConnectionScopeCurrent(t)),r=null,i=new Set;return{isCurrent:n,read:()=>n()?r:null,subscribe(e){return Ml(i,e)},confirm:e=>{if(!n())return;r=e;let t=[...i];for(let e of t)e()}}}function iD(e,t,n){let r=a(t),i=/^agent:([^:]+):(.*)$/u.exec(r),o=i?.[2]??r,s=_(t),c=[Al,x(e)].includes(o.toLowerCase()),u=he(e),d=i?.[1],f=c&&Ql(d??``)===`main`&&u!==`main`&&e.agentsList?.agents!=null&&!e.agentsList.agents.some(e=>Ql(e.id)===`main`),p=e.agentsList?.scope?e.agentsList.scope===`global`:_(Ue(Al,e.hello)),m=(f?u:n?.trim()||d)||(s?l(e):u),h=s||c&&p?`global`:c?Al:o;return`agent:${Ql(m)}:${h}`}function aD(e,t,n){let r=iD(e,t,n);return lD.get(e.sessions)?.get(r)?.ready}function oD(e,t,n,r={}){let i=e.sessions,a=iD(e,t,r.agentId),o=lD.get(i)??new Map;lD.set(i,o);let s=o.get(a),c=s?.ready,l=s?.receipt.isCurrent()?s.receipt:rD(i),u=r.canDispatch,d=(async()=>{let e=await i.patch(t,n,{agentId:r.agentId,expectedSessionId:r.expectedSessionId,ownsModelOverride:r.ownsModelOverride,canDispatch:u?()=>u(l.read()):void 0,onConfirmed:l.confirm,onRejected:e=>r.onRejected?.(e,l.read()),waitFor:c,...c?{predecessorReceipt:l}:{}});return e&&await r.reconcile?.(e),e})(),f={ready:d.then(e=>e!==null,()=>!1),receipt:l};return o.set(a,f),f.ready.finally(()=>{o.get(a)===f&&o.delete(a)}),d}function sD(e,t){let n=pl(e),r=Et(n??``),i=r&&r.agentId!==`main`&&(r.rest===`main`||r.rest===`global`)?r.agentId:void 0,a=i??pl(t.agentId);return(n===`global`||i)&&a?{agentId:a}:{}}async function cD(e,t,n,r={}){let i=await oD({sessions:e.sessions,assistantAgentId:e.agentId,agentsList:e.defaultAgentId?{defaultId:e.defaultAgentId}:null,hello:null},t,n,{...sD(t,e),...r});if(!i)throw Error(`Session capability is unavailable`);return i}var lD;function uD(){return(uD=e((()=>{un(),O(),lD=new WeakMap})))()}function dD(e){ED.get(e)?.abort(),ED.delete(e)}function fD(e){dD(e);let t=Object.keys(e.chatModelSwitchPromises??{}),n=new Set([e.sessionKey,...t]);D(e,e.sessionKey)&&n.add(`global`);let r=t.length>0,i=e.sessions.state?.modelOverrides??{},a=[...n].some(e=>Object.hasOwn(i,e));if(r||a){e.chatModelSwitchPromises={};for(let t of n)e.sessions.retireModelOverride(t);e.requestUpdate?.()}}function pD(e){return{...yt,includeGlobal:!0,includeUnknown:!0,configuredAgentsOnly:!0,includeDerivedTitles:!0,archivedFilter:e.sessionsArchivedFilter??`active`}}function mD(e){return e.sessions.refresh({...pD(e),...w(e,e.sessionKey),force:!0})}function hD(e,t){return e.sessions.refresh({...pD(e),...Je(e,t),force:!0})}function gD(e,t){return e.sessionsResult?.sessions.find(n=>Xt(e,n.key,t,n.agentId??e.sessionsResultAgentId))}function _D(e,t){let n=gD(e,t),r=e.sessions,i=r.captureConnectionScope(),a=e.client,o=w(e,t).agentId,s=n?.sessionId,c=o??n?.agentId??e.sessionsResultAgentId,l=n=>Xt(e,n.key,t,n.agentId??c),u=()=>!!(i&&e.connected&&e.client===a&&e.sessions===r&&r.isConnectionScopeCurrent(i)&&at(e.sessionKey,t)&&w(e,t).agentId===o),d=()=>u()&&(n?e.sessionsResult?.sessions.some(e=>l(e)&&e.sessionId===s)===!0:!e.sessionsResult?.sessions.some(e=>l(e)&&e.sessionId!==void 0));return{sessionId:s,settings:{...n,...r.settingsPreview(t,o)},agentParams:de(e,t),isCurrent:d,row:n=>{if(!(n?!u()||!Xt(e,n.key,t,c):!d()))return e.sessionsResult?.sessions.find(e=>l(e)&&e.sessionId===(s??n?.entry.sessionId))}}}async function vD(e,t,n,r,i,a){let o=i=>(n.isCurrent()||!!n.row(i))&&Ye(e.hello?.auth,{method:`sessions.patch`,params:{key:t,...r},sessionScope:!0,session:n.row(i)}).allowed;Z(e,null,!0);let s=null;try{if(!o())return!1;let c=oD(e,t,r,{...n.agentParams,expectedSessionId:n.sessionId,canDispatch:o,onRejected:(t,r)=>{(n.isCurrent()||n.row(r))&&Z(e,`Failed to set ${i}: ${j(t)}`,!0)},reconcile:async()=>mD(e)});return a?.(),s=await c,s!==null}catch{return!1}finally{a?.(s)}}function yD(e,t,n=e.sessionKey){if(!e.client||!e.connected)return Promise.resolve(!1);let r=_D(e,n),i=t===``?void 0:t===`auto`||t===`ultrafast`?t:t===`on`;return r.settings.fastMode===i?Promise.resolve(!0):vD(e,n,r,{fastMode:i??null},`speed`)}function bD(e,t){ED.get(e)?.abort();let n=new AbortController;ED.set(e,n);let r=e.client,i=e.connectionEpoch,a=e.sessions,o=e.sessionKey,s=de(e,t),c=gD(e,t),l=c?.sessionId,u=(c=l)=>!n.signal.aborted&&ED.get(e)===n&&e.connected&&e.client===r&&e.connectionEpoch===i&&e.sessions===a&&e.sessionKey===o&&de(e,t).agentId===s.agentId&&gD(e,t)?.sessionId===c;return{owner:n,ownsSelection:u,agentScope:s,get expectedSessionId(){return l},activeRow:c,adoptCreatedSession(e){return l!==void 0||!u(e)?!1:(l=e,!0)}}}async function xD(e,t,n,r,i,a=()=>!0,o=!1){let{owner:s,ownsSelection:c,agentScope:l}=i,u=M(`chat.nativeRuntimeRecovery.reasons.${t.reason}`,{runtime:t.runtimeLabel}),d=()=>Z(e,`${u} ${M(`chat.nativeRuntimeRecovery.chooseAnother`)}`,!0),f=()=>c()&&a();try{let a=t.recovery?.sessionId;if(i.expectedSessionId===void 0&&a&&(!c()&&!c(a)||(await hD(e,{sessionKey:n,...l}),!i.adoptCreatedSession(a)))||!c())return!1;let{confirmNativeRuntimePermissionRecovery:u}=await Yl(async()=>{let{confirmNativeRuntimePermissionRecovery:e}=await import(`./chat-native-runtime-recovery-D9A0s8FY.js`);return{confirmNativeRuntimePermissionRecovery:e}},__vite__mapDeps([12,0,1,2,3,4,5,6,7]),import.meta.url),p=await u(e,n,t,{...l,...r===void 0?{}:{model:r||null},expectedSessionId:i.expectedSessionId,signal:s.signal,retriesMessage:o,canDispatch:f});return!p&&f()&&d(),!c()||!p?!1:(Z(e,p.listRefreshError?M(`chat.nativeRuntimeRecovery.refreshFailed`,{error:p.listRefreshError}):null,!0),!0)}catch(t){return c()&&Z(e,M(`chat.nativeRuntimeRecovery.failed`,{error:j(t)}),!0),!1}}function SD(e,t){let n=bD(e,t),r=n.expectedSessionId===void 0,i=n.activeRow?.model,a=n.activeRow?.modelProvider,o=n.activeRow?.agentRuntime?.id,s=Jc({activeSession:n.activeRow,chatModelCatalog:e.chatModelCatalog,modelOverrides:e.sessions.state.modelOverrides,sessionKey:t,sessionsResult:e.sessionsResult??null})||rn(e.sessionsResult?.defaults?.model,e.sessionsResult?.defaults?.modelProvider,e.chatModelCatalog);return async c=>{if(!await xD(e,c,t,void 0,n,()=>{let n=gD(e,t);return r?!(!s||rn(n?.model,n?.modelProvider,e.chatModelCatalog)!==s||n?.agentRuntime?.id!==c.runtimeId||o&&o!==c.runtimeId):!!(s&&n?.model===i&&n?.modelProvider===a&&n?.agentRuntime?.id===o&&o===c.runtimeId)},!0))return;let l=()=>gD(e,t),u=l(),d=u?.model,f=u?.modelProvider,p=u?.agentRuntime?.id;return()=>{let e=l();return n.ownsSelection()&&e?.model===d&&e?.modelProvider===f&&e?.agentRuntime?.id===p}}}async function CD(e,t,n=e.sessionKey,r){if(!e.client||!e.connected)return!1;let i=gD(e,n);if(i?.modelSelectionLocked===!0)return!1;let a=bD(e,n),{ownsSelection:o,agentScope:s}=a,c=Jc({activeSession:i,chatModelCatalog:e.chatModelCatalog,modelOverrides:e.sessions.state.modelOverrides,sessionKey:n,sessionsResult:e.sessionsResult??null}),u=i?.runtimeSelectionLocked&&r===null?void 0:r,d=u===void 0||!i?.runtimeSelectionLocked&&(u===null?!ao(i?.agentRuntime):ao(i?.agentRuntime)&&i?.agentRuntime?.id===u);if(c===t&&d)return!0;let f=de(e,n).agentId,p=()=>!D(e,n)||l(e)===f,m={model:t||null,...u===void 0?{}:{agentRuntime:u}},h=()=>o()&&Ye(e.hello?.auth,{method:`sessions.patch`,params:{key:n,...m},sessionScope:!0,session:gD(e,n)}).allowed;if(!h())return!1;Z(e,null,!0);let g={},_=(async()=>{try{return await oD(e,n,m,{...s,expectedSessionId:a.expectedSessionId,ownsModelOverride:p,canDispatch:h,reconcile:()=>mD(e)})!==null}catch(r){if(!o())return!1;let i=r instanceof Zn?li(r.details):void 0;return i?await xD(e,i,n,t,a,()=>!u||u===i.runtimeId):(Z(e,`Failed to set model: ${j(r)}`,!0),!1)}finally{if(e.chatModelSwitchPromises?.[n]===g.current){let t={...e.chatModelSwitchPromises};delete t[n],e.chatModelSwitchPromises=t}e.requestUpdate?.()}})();return g.current=_,e.chatModelSwitchPromises={...e.chatModelSwitchPromises,[n]:_},e.requestUpdate?.(),_}function wD(e,t,n=e.sessionKey){if(!e.client||!e.connected)return Promise.resolve(!1);let r=_D(e,n),i=r.settings.thinkingLevel,a=(ii(t)??t.trim())||void 0;return((typeof i==`string`&&i.trim()?ii(i)??i.trim():void 0)??``)===(a??``)?Promise.resolve(!0):vD(e,n,r,{thinkingLevel:a??null},`thinking level`,t=>{let n=r.row(t);n&&(e.chatThinkingLevel=n.thinkingLevel??null)})}function TD(e,t,n=e.sessionKey){if(!e.client||!e.connected)return Promise.resolve(!1);let r=_D(e,n),i=t.trim()||void 0;return(r.settings.contextWindow??``)===(i??``)?Promise.resolve(!0):vD(e,n,r,{contextWindow:i??null},`context window`)}var ED;function DD(){return(DD=e((()=>{si(),fi(),tr(),b(),Yi(),Oe(),rl(),N(),ne(),un(),O(),S_(),uD(),$l(),Gs(),ED=new WeakMap})))()}async function OD(e,t){try{let n=t.runId===null||t.sessionAbortable===!0,r=Jl(await e.request(n?`sessions.abort`:`chat.abort`,{...n?{key:t.sessionKey}:{sessionKey:t.sessionKey},...t.agentId?{agentId:t.agentId}:{},...t.runId===null?t.clearQueued?{clearQueued:!0}:{}:{runId:t.runId,...t.discardPendingInput?{discardPendingInput:!0}:{}}}));return{ok:!0,noActiveRun:r?.aborted===!1||r?.status===`no-active-run`,warning:W(r?.warning)}}catch(e){return{ok:!1,error:e,...e instanceof Zn&&Jl(e.details)?.errorKind===`state_contention`?{errorKind:`state_contention`}:{}}}}function kD(e,t){return _(t)||y(e)&&je(e,t)!==null?{}:{clearQueued:!0}}function AD(e,t){return e.sessionsResult?.sessions.find(n=>C(e,t.sessionKey,n.key,n.agentId??e.sessionsResultAgentId??void 0,t.agentId))}function jD(e,t,n=`run`){let r=e.chatRunSessionAbortable===!0,i=n===`run`?e.chatRunId??null:null,a={sourceClient:t,recoveryScope:e.hello?.auth?.recoveryScope??t.recoveryScope,sessionKey:e.sessionKey,conversation:E(e,e.sessionKey),...de(e,e.sessionKey)},o=AD(e,a)?.sessionId,s={...a,...o?{sessionId:o}:{}};return i?{...s,runId:i,...r?{sessionAbortable:!0}:{}}:{...s,runId:null,...kD(e,e.sessionKey)}}function MD(){return(MD=e((()=>{tr(),u(),O()})))()}function ND(e,t,n={}){return{compact:Be(e,{method:`sessions.compact`,requiredScope:`operator.admin`}),abort:Be(e,{method:t&&!n.sessionAbortable?`chat.abort`:`sessions.abort`,requiredScope:`operator.write`,sessionScope:!0,session:n.session}),rewind:Be(e,{method:`sessions.rewind`,requiredScope:`operator.admin`}),fork:Be(e,{method:`sessions.fork`,requiredScope:`operator.write`}),reset:Be(e,{method:`sessions.reset`,requiredScope:`operator.admin`}),branchSwitch:Be(e,{method:`sessions.branches.switch`,requiredScope:`operator.admin`})}}function PD(){return(PD=e((()=>{ne()})))()}function FD(e){return typeof e==`string`?e:e instanceof Error&&typeof e.message==`string`?e.message:`unknown error`}function ID(e){let t=FD(e.message),n=iu(t),r=dl(e.details),i=au(t),a=r?.reason??i?.reason;if(n.startsWith(`pairing required:`)&&a)return`gateway pairing required: ${Hl(a)}`;if(i&&n!==`pairing required`)return t;let o=r?.approvedRoles?.join(`, `)??`none`,s=r?.requestedRole??`none`,c=r?.approvedScopes?.join(`, `)??`none`,l=r?.requestedScopes?.join(`, `)??`none`;switch(r?.reason){case`scope-upgrade`:return r.approvedScopes||r.requestedScopes?`device scope upgrade requires approval (approved: ${c}; requested: ${l})`:nu(e.details);case`role-upgrade`:return r.approvedRoles||r.requestedRole?`device role upgrade requires approval (approved: ${o}; requested: ${s})`:nu(e.details);case`metadata-upgrade`:return`device reconnect details changed and require approval`;default:return`gateway pairing required`}}function LD(e){let t=FD(e.message);switch(Tn(e)){case Wl.AUTH_TOKEN_MISMATCH:return`gateway token mismatch`;case Wl.AUTH_UNAUTHORIZED:return`gateway auth failed`;case Wl.AUTH_RATE_LIMITED:return`too many failed authentication attempts`;case Wl.PAIRING_REQUIRED:return ID(e);case Wl.CONTROL_UI_DEVICE_IDENTITY_REQUIRED:return`device identity required (use HTTPS or localhost)`;case Wl.CONTROL_UI_ORIGIN_NOT_ALLOWED:return`origin not allowed (open the Control UI from the gateway host or allow it in gateway.controlUi.allowedOrigins)`;case Wl.AUTH_TOKEN_MISSING:return`gateway token missing`}let n=iu(t);return n===`fetch failed`||n===`failed to fetch`||n===`connect failed`?`gateway connect failed`:t}function RD(e){let t=e&&typeof e==`object`?LD(e):FD(e);return j(t)}function zD(){return(zD=e((()=>{su(),tr(),N()})))()}function BD(e,t){let n=Math.max(0,e.length-qD),r=[...t];for(let t=e.length-1;t>=n;t--){let n=e[t];if(!n||typeof n!=`object`)continue;let i=n;if((typeof i.role==`string`?i.role.toLowerCase():``)!==`user`)continue;let a=ss(n);a&&a.trim()&&r.push({text:a,ts:typeof i.timestamp==`number`?i.timestamp:0})}return r.sort((e,t)=>t.ts-e.ts),[...new Set(r.map(({text:e})=>e))]}function VD(e,t){let n=t.trim();if(!n)return;let r=e.chatLocalInputHistoryBySession[e.sessionKey]??[];r[0]?.text!==n&&(e.chatLocalInputHistoryBySession[e.sessionKey]=[{text:n,ts:Date.now()},...r].slice(0,qD))}function HD(e){e.chatInputHistorySessionKey=null,e.chatInputHistoryItems=null,e.chatInputHistoryIndex=-1,e.chatDraftBeforeHistory=null,e.chatMentionsBeforeHistory=void 0}function UD(e,t,n){e.chatMentions=n??lo(e.chatMessage,t,e.chatMentions),e.chatMessage=t,HD(e)}function WD(e){if(e.chatInputHistoryItems!==null&&e.chatInputHistorySessionKey===e.sessionKey)return e.chatInputHistoryItems;let t=BD(e.chatMessages,e.chatLocalInputHistoryBySession[e.sessionKey]??[]);return e.chatInputHistoryItems=t,e.chatInputHistorySessionKey=e.sessionKey,e.chatInputHistoryIndex=-1,e.chatDraftBeforeHistory=e.chatMessage,e.chatMentionsBeforeHistory=e.chatMentions,t}function GD(e,t){let n=WD(e);if(n.length===0)return!1;let r=e.chatInputHistoryIndex+(t===`up`?1:-1);return r<-1||r>=n.length?!1:(e.chatInputHistoryIndex=r,e.chatMessage=r===-1?e.chatDraftBeforeHistory??``:n[r]??e.chatMessage,e.chatMentions=r===-1?e.chatMentionsBeforeHistory:[],!0)}function KD(e,t){e.chatInputHistoryIndex!==-1&&(e.chatInputHistorySessionKey!==e.sessionKey||e.chatInputHistoryItems?.[e.chatInputHistoryIndex]!==e.chatMessage)&&HD(e);let n={handled:!1,preventDefault:!1,restoreCaret:null};if(e.chatLoading||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey||t.isComposing||t.keyCode===229||t.selectionStart!==t.selectionEnd||e.chatInputHistoryIndex===-1&&(t.key===`ArrowDown`||t.selectionStart!==0))return n;let r=t.key===`ArrowUp`?`up`:`down`,i=GD(e,r);return{handled:i,preventDefault:i,restoreCaret:i?r:null}}var qD;function JD(){return(JD=e((()=>{Ws(),ds(),qD=100})))()}function YD(e){return e.toolStreamById instanceof Map&&Array.isArray(e.toolStreamOrder)&&Array.isArray(e.chatToolMessages)&&Array.isArray(e.chatStreamSegments)}function XD(e){e.chatToolMessages=e.toolStreamOrder.map(t=>e.toolStreamById.get(t)?.message).filter(e=>!!e)}function ZD(e){e.toolStreamSyncTimer!=null&&(clearTimeout(e.toolStreamSyncTimer),e.toolStreamSyncTimer=null)}function QD(e){ZD(e),e.toolStreamById.clear(),e.toolStreamOrder=[],e.activityEventSeqById?.clear(),e.chatToolMessages=[],e.chatStreamSegments=[],e.knownAgentRunIds?.clear(),e.waitingApprovalStatuses?.clear()}function $D(e,t){ZD(e);let n=new Set(e.toolStreamOrder.filter(n=>e.toolStreamById.get(n)?.runId===t));for(let t of n)e.toolStreamById.delete(t);let r=`tool:[${JSON.stringify(t)},`;for(let n of e.activityEventSeqById?.keys()??[])(n.startsWith(r)||n.startsWith(`item:${t}:`))&&e.activityEventSeqById?.delete(n);e.toolStreamOrder=e.toolStreamOrder.filter(e=>!n.has(e)),XD(e),e.chatStreamSegments=e.chatStreamSegments.filter(e=>e.runId!==t),e.knownAgentRunIds?.delete(t);for(let[n,r]of e.waitingApprovalStatuses??[])r.runId===t&&e.waitingApprovalStatuses?.delete(n)}function eO(){return(eO=e((()=>{})))()}function tO(e,t){e.lastError=t,e.chatError=t}function nO(e){return!!(e.chatSending||e.chatRunId)}function rO(e,t,n){if(e.chatRunStatus?.runId===t||e.lastLocalTerminalReconcile?.runId===t)return;let r=pg(e).runs[t];if(r&&r.status!==`streaming`)return;Dg(e,{type:`runDelta`,runId:t});let i=e.chatRunId===t,a=i&&typeof e.chatStream==`string`;i||(bO(e,{clearToolStreamForRun:!0,clearIndicators:!!e.chatRunId,clearRunStatus:!0,requestUpdate:!1}),e.chatRunError=null,e.providerPolicyNotice?.runId!==t&&(e.providerPolicyNotice=null)),e.chatRunId=t,gg(e,t),a||(e.chatStream=``,e.chatStreamStartedAt=n)}function iO(e,t,n,r){gg(e,n),e.chatRunError={...r?{kind:r}:{},summary:St(t.trim()),...n?{runId:n}:{}}}function aO(e,t){if(e.chatRunId)return!0;let n=kt(e.sessionKey);return!!(n&&e.sessionsResult?.sessions.some(e=>kt(e.key)===n&&(Ll(e)||t&&e.hasActiveSubagentRun===!0)))}function oO(e){return aO(e,!1)}function sO(e){return aO(e,!0)}function cO(e){return DO.has(iu(e))}function lO(e,t){let n=E(e,e.sessionKey),r=e.chatQueue?.find(e=>e.sendState===`sending`&&e.sendRunId)?.sendRunId,i=e.chatRunId??r??null,a=e.lastLocalTerminalReconcile,o=a?E(e,a.sessionKey,a.agentId):void 0,s=t.runId!==null&&i===null&&a?.runId===t.runId&&o?.sessionKey===t.conversation.sessionKey&&o.agentId===t.conversation.agentId;return e.client===t.sourceClient&&n.sessionKey===t.conversation.sessionKey&&n.agentId===t.conversation.agentId&&(i===t.runId||s)&&de(e,e.sessionKey).agentId===t.agentId}async function uO(e,t,n){if(lO(e,t)){if(n.ok)n.warning?(iO(e,n.warning,t.runId??void 0,`stop`),e.requestUpdate?.()):n.noActiveRun&&e.connected&&await e.refreshCurrentChat?.();else{let r=RD(n.error);n.errorKind===`state_contention`?(tO(e,null),iO(e,r,t.runId??void 0,n.errorKind)):e.chatRunId?tO(e,r):iO(e,r,t.runId??void 0,`stop`),e.requestUpdate?.()}}return n.ok}async function dO(e,t,n){let r=e.client;if(!r||!e.connected)return!1;let i=t??jD(e,r);return uO(e,i,await OD(r,n?jD(e,r,n):i))}async function fO(e){let t=e.pendingAbort,n=e.client;if(!t||!n||!e.connected)return!1;let r=e.hello?.auth?.recoveryScope??(n.recoveryScopeReady?n.recoveryScope:void 0);if(t.sourceClient!==n||r!==void 0&&t.recoveryScope!==r)return e.pendingAbort=null,!1;if(r===void 0)return!1;if(e.sessions?.deletionState?.(t.sessionKey,t.agentId,t.sessionId)===`confirmed`)return e.pendingAbort=null,!1;let i=AD(e,t);if(t.sessionId&&i?.sessionId&&i.sessionId!==t.sessionId)return e.pendingAbort=null,!1;let a=ND({client:n,hello:e.hello,phase:`connected`},!0,{session:i,sessionAbortable:t.sessionAbortable}).abort;return!a.allowed&&a.cause===`session-not-owned`&&!i?!1:(e.pendingAbort=null,a.allowed?dO(e,t):(lO(e,t)&&tO(e,a.reason),!1))}async function pO(e,t){let n=!e.connected&&e.client?jD(e,e.client):null,r=n?.runId&&n.recoveryScope?n:null;if(!e.connected&&!r){tO(e,M(`chat.questions.disconnected`));return}if(t?.preserveDraft||(e.chatMessage=``,e.chatMentions=[],e.chatReplyTarget=null,HD(e)),r){e.pendingAbort=r;return}await dO(e,void 0,t?.scope)}function mO(e){e!=null&&globalThis.clearTimeout(e)}function hO(e){mO(e.chatRunStatusClearTimer),e.chatRunStatusClearTimer=null,e.chatRunStatus=null}function gO(e,t){mO(e.chatRunStatusClearTimer),e.chatRunStatusClearTimer=globalThis.setTimeout(()=>{let n=e.chatRunStatus;n?.phase===t.phase&&n.runId===t.runId&&n.sessionKey===t.sessionKey&&n.occurredAt===t.occurredAt&&(e.chatRunStatus=null,e.chatRunStatusClearTimer=null,wO(e)||e.requestUpdate?.())},EO)}function _O(e,t){t?e.knownAgentRunIds?.delete(t):e.knownAgentRunIds?.clear(),(!t||e.chatRunStartup?.runId===t)&&(e.chatRunStartup=null),(!t||e.compactionStatus?.runId===t)&&e.compactionStatus?.phase!==`complete`&&(mO(e.compactionClearTimer),e.compactionClearTimer=null,e.compactionStatus=null),mO(e.fallbackClearTimer),e.fallbackClearTimer=null,e.fallbackStatus&&=null;for(let[n,r]of e.waitingApprovalStatuses??[])(!t||!r.runId||r.runId===t)&&e.waitingApprovalStatuses?.delete(n)}function vO(e,t){let n=G(t.sessionKey)??e.sessionKey,r=new Set(n?[n]:[]);Xt(e,`global`,n)&&r.add(`global`);for(let t of e.sessionsResult?.sessions??[])Xt(e,t.key,n,t.agentId)&&r.add(t.key);for(let e of t.sessionKeys??[]){let t=G(e);t&&r.add(t)}return r}function yO(e,t,n){if(!t.outcome&&!t.yielded)return;let r=vO(e,t);if(t.outcome&&r.size===0)return;let i=t.outcome?t.sessionStatus??(t.outcome===`done`?`done`:`killed`):`running`,a={sessionKeys:[...r],agentId:t.agentId,runId:t.runId??e.chatRunId??null,status:i,...t.outcome?{errorMessage:t.errorMessage}:{},endedAt:n};e.sessionsResult&&=h(e.sessionsResult,a),e.sessions?.reconcileRunTerminal?.(a)}function bO(e,t={}){let n=Date.now(),r=t.runId??e.chatRunId??null,i=G(t.sessionKey)??e.sessionKey,a=t.agentId??k(e,i),o={...t,agentId:a};if((t.clearIndicators??!0)&&_O(e,r),t.clearChatStream&&(e.chatStream=null,e.chatStreamStartedAt=null),t.clearLocalRun&&(_g(e,void 0),e.chatRunId&&(e.chatRunLifecycleGeneration=(e.chatRunLifecycleGeneration??0)+1),e.chatRunId=null,e.chatRunSessionAbortable=void 0),YD(e)&&(t.clearToolStream?QD(e):t.clearToolStreamForRun&&r&&$D(e,r)),t.outcome){let s={phase:t.outcome,runId:r,sessionKey:i,occurredAt:n};yO(e,o,n),t.armLocalTerminalReconcile&&(e.lastLocalTerminalReconcile={sessionKey:i,agentId:a,runId:r,phase:t.outcome,sessionStatus:t.sessionStatus??(t.outcome===`done`?`done`:`killed`),errorMessage:t.errorMessage}),t.publishRunStatus!==!1&&(e.chatRunStatus=s,gO(e,s))}else t.yielded?(yO(e,o,n),e.lastLocalTerminalReconcile=null,hO(e)):t.clearRunStatus&&hO(e);t.requestUpdate!==!1&&e.requestUpdate?.()}function xO(e){return e.sessionsResult?.sessions.find(t=>Xt(e,t.key,e.sessionKey,t.agentId))}function SO(e){let t=e.lastLocalTerminalReconcile;if(!t||t.sessionKey!==e.sessionKey||t.agentId!==void 0&&t.agentId!==k(e))return!1;let n=xO(e);return!n||!Ll(n)?!1:t.runId==null||n.activeRunIds?.length!==1||n.activeRunIds[0]!==t.runId?(e.lastLocalTerminalReconcile=null,!1):(yO(e,{outcome:t.phase,sessionStatus:t.sessionStatus,errorMessage:t.errorMessage,sessionKey:t.sessionKey,agentId:t.agentId,runId:t.runId},Date.now()),e.requestUpdate?.(),!0)}function CO(e,t={}){if(!e.chatRunId&&e.chatStream==null)return SO(e);let n=xO(e);return n?TO(e,n,t):!1}function wO(e){if(e.chatRunId){let t=xO(e);if(t?.lastRunId===e.chatRunId)return TO(e,t,{publishRunStatus:!1})}return e.lastLocalTerminalReconcile!=null&&!e.chatRunId&&e.chatStream==null&&CO(e,{publishRunStatus:!1})}function TO(e,t,n={}){if(!Xt(e,t.key,e.sessionKey,t.agentId)||!e.chatRunId&&e.chatStream==null||t.hasActiveRun===!0||Ll(t)||t.hasActiveRun!==!1&&t.status===void 0)return!1;let r=e.chatRunId;if(r&&t.lastRunId!==r&&(t.lastRunId||n.historyRun!==void 0)){let i=n.historyRun;return t.hasActiveRun!==!1||!i||i.runId!==r||i.sessionId!==t.sessionId||!i.isCurrent()?!1:(bO(e,{runId:r,clearLocalRun:!0,clearChatStream:!0,clearToolStreamForRun:!0,clearRunStatus:!0}),!0)}let i;return r&&t.lastRunId===r&&(t.status===`failed`||t.status===`timeout`)&&(i=e.chatRunError?.runId===r?e.chatRunError.summary:t.lastRunError?.trim()||M(t.status===`timeout`?`sessionsView.runErrorTimedOut`:`sessionsView.runErrorUnknown`),e.chatRunError?.runId!==r&&iO(e,i,r)),bO(e,{outcome:t.status===`done`?`done`:`interrupted`,sessionStatus:t.status===`running`||t.status===void 0?`killed`:t.status,errorMessage:i,runId:r,sessionKey:e.sessionKey,sessionKeys:[t.key],clearLocalRun:!0,clearChatStream:!0,clearToolStreamForRun:!0,publishRunStatus:n.publishRunStatus,armLocalTerminalReconcile:!!(e.chatRunId&&t.lastRunId===e.chatRunId)}),!0}var EO,DO;function OO(){return(OO=e((()=>{b(),zt(),un(),O(),MD(),PD(),zD(),jg(),JD(),EO=5e3,DO=new Set([`/stop`,`stop`,`esc`,`abort`,`wait`,`exit`])})))()}function kO(e){let t=e.modelSelectionPolicy,n=t?.restricted?Jc(e)||t.defaultModel:e.catalogInitialized===!1?void 0:e.activeSession?.model??e.agentModel,r=AO(e),i=MO(n,t?.restricted?void 0:e.activeSession?.modelProvider,e.chatModelCatalog,e.onSetup,{retired:e.catalogRetired===!0,error:e.catalogError,modelSelectionPolicy:t});return{modelSetupRequired:r,modelUnavailableBanner:i,requiredReason:r?M(`modelSetup.required.body`):i?.text}}function AO(e){return e.catalog||e.catalogRetired||e.catalogInitialized===!1||e.modelSelectionPolicy?.restricted||!e.connected||!e.agentsLoaded||!e.selectedAgentFound?!1:!e.agentModel?.trim()}function jO(e,t=M(`modelSetup.required.body`)){return{kind:`above-composer`,text:`${t} ${M(`modelSetup.commandHint`)}`,actionLabel:M(`modelSetup.required.action`),onAction:e}}function MO(e,t,n,r,i){if(i?.retired)return{kind:`above-composer`,text:M(i.error?`chat.modelControls.modelsUnavailable`:`chat.modelControls.loadingModels`)};if(i?.modelSelectionPolicy?.restricted&&i.modelSelectionPolicy.defaultModel===null&&!Hc(e,t,n))return{kind:`above-composer`,text:M(n.some(e=>e.manualSelectionAllowed!==!1)?`chat.modelControls.selectionRequired`:`chat.modelControls.noPermittedModels`)};let a=$o(fa(e,t,n));return a?jO(r,a):void 0}function NO(){return(NO=e((()=>{b(),rl()})))()}function PO(e,t){let n=FO(e,t);return n?(Ps(`chat-${t}-${Date.now()}.md`,n,`text/markdown`),`downloaded`):`empty`}function FO(e,t){let n=Qs(e),r=[];for(let e of n){let n=Xs(e)??``;if(!n.trim())continue;let i=e,a=Ra(Ho(e)),o=a===`user`?Ko(e)??M(`chat.messages.unattributedSender`):a===`assistant`?Ko(e)??t:`Tool`,s=yl(i.timestamp)??``;r.push(`## ${o}${s?` (${s})`:``}`,``,n,``)}return r.length>0?[`# Chat with ${t}`,``,...r].join(`
`):null}function IO(){return(IO=e((()=>{fl(),b(),ds(),Oo(),wc()})))()}function LO(){return document.querySelector(`openclaw-chat-page`)?.sessionSplitAvailable===!0}function RO(e){return Be(e,{method:`chat.history`,requiredScope:`operator.read`,sessionScope:!0}).allowed}async function zO(e){let{context:t,session:n}=e,r=t.gateway,i=r.snapshot.client,a=Be(r.snapshot,{method:`chat.history`,requiredScope:`operator.read`,sessionScope:!0});if(!a.allowed||!i)throw Error(a.allowed?M(`sessionsView.actionRequiresConnection`):a.reason);let o=Et(n.key)?.agentId??c(t,e.agentId),s=r.snapshot.hello,l=()=>e.isCurrent()&&r.snapshot.client===i&&r.snapshot.phase===`connected`&&r.snapshot.hello===s,u=[],d=new Map,f=(e,t=1e3)=>i.request(`chat.history`,{sessionKey:n.key,agentId:o,limit:t,maxChars:5e5,offset:e}),p=0,m;for(;;){let e=await f(p);if(!l()||n.sessionId&&e.sessionId!==n.sessionId||m&&(e.sessionId!==m.sessionId||e.totalMessages!==m.totalMessages))throw Error(M(`sessionsView.copyTranscriptChanged`));m??=e;let t=new Map,r=(e.messages??[]).filter(e=>{let n=io(e);if(!n)return!0;let r=(t.get(n)??0)+1;return t.set(n,r),r>(d.get(n)??0)});for(let[e,n]of t)d.set(e,Math.max(n,d.get(e)??0));if(u.push(r),!e.hasMore)break;if(e.nextOffset===void 0||e.nextOffset<=p)throw Error(M(`sessionsView.copyTranscriptChanged`));p=e.nextOffset}if(u.length>1){let e=await f(0,1);if(!l()||e.sessionId!==m.sessionId||e.totalMessages!==m.totalMessages||e.deltaCursor!==m.deltaCursor||e.sessionInfo?.activeLeafEntryId!==m.sessionInfo?.activeLeafEntryId)throw Error(M(`sessionsView.copyTranscriptChanged`))}let h=t.agents.state.agentsList?.agents.find(e=>e.id===o)?.name??`OpenClaw`,g=FO(u.toReversed().flat(),h);if(!g)throw Error(M(`chat.commandResults.emptyExport`));return nt(g,l)}async function BO(e,t){try{if(e===`split-right`||e===`split-below`){(!LO()||window.dispatchEvent(new CustomEvent(`openclaw:ui-command`,{detail:{agentId:t.agentId,command:{kind:`split`,direction:e===`split-right`?`right`:`down`,sessionKey:t.session.key},...t.sourceSessionKey?{sessionKey:t.sourceSessionKey}:{}},cancelable:!0})))&&on({message:M(`sessionsView.splitUnavailable`)});return}if(e===`copy-markdown`||e===`copy-session-id`){let n=e===`copy-markdown`?await zO(t):await nt(t.session.sessionId??``);on({message:M(n?`common.copied`:`common.copyFailed`)});return}let n=te(t.context,t.session.key,t.agentId),r=t.context.gateway,i=e===`copy-session-link`||e===`copy-session-preview-link`,a=i?r.snapshot.hello?.controlUiUrl??r.snapshot.client?.gatewayUrl??r.connection.gatewayUrl:void 0,o=new URL(a||window.location.href);o.protocol=o.protocol.replace(/^ws/u,`http`);let s=a?o.pathname:t.context.basePath,c=Re({context:t.context,basePath:e===`copy-session-preview-link`?`${Kl(s)}/share`:s,face:n,sessionKey:t.session.key,agentId:t.agentId,exactKey:!0}),l=new URL(c.href,o.origin).href;if(i){let e=await nt(l);on({message:M(e?`common.copied`:`common.copyFailed`)});return}let u=Jt({popup:e===`open-new-window`});u?u.location.replace(l):on({message:M(`sessionsView.openWindowBlocked`)})}catch(e){on({message:j(e)})}}function VO(){return(VO=e((()=>{pr(),rr(),b(),IO(),sa(),$e(),N(),ft(),ne(),Ft(),pe(),O()})))()}function HO(e){i_(e).branchVersion+=1,KO.delete(e)}function UO(e){HO(e),e.chatBranchesConnectionEpoch=null}function WO(e){return at(e.chatBranchesSessionKey,e.sessionKey)?e.chatBranches??[]:[]}async function GO(e){let{sessions:t,client:n,sessionKey:r,connectionEpoch:i}=e,a=t?.listBranches;if(!a||!n||!e.connected)return;let o=KO.get(e);if(o?.matches())return o.promise;let s=i_(e),c=++s.branchVersion,l=de(e,r),u=()=>s.branchVersion===c&&e.client===n&&e.connected&&e.connectionEpoch===i&&A(e,r,l.agentId),d=(async()=>{try{let n=await a.call(t,r,l);u()&&(e.chatBranches=n,e.chatBranchesSessionKey=r,e.chatBranchesConnectionEpoch=i)}catch{}})().finally(()=>{s.branchVersion===c&&(KO.delete(e),e.requestUpdate?.())});return KO.set(e,{matches:()=>u()&&e.sessionKey===r&&de(e,r).agentId===l.agentId,promise:d}),d}var KO;function qO(){return(qO=e((()=>{un(),O(),S_(),KO=new WeakMap})))()}function JO(e){return Bi(e,`system.info`,`operator.read`)}async function YO(e,t,{fresh:n=!1}={}){if(t?.throwIfAborted(),document.visibilityState===`hidden`)throw new DOMException(`Page is hidden`,`AbortError`);let{client:r,hello:i}=e.snapshot,a=ZO.get(e);if(!r||!JO(e.snapshot))throw a?.controller.abort(),ZO.delete(e),new DOMException(`System information is unavailable`,`AbortError`);if(!a||a.client!==r||a.hello!==i||a.revision!==e.connectionRevision||a.controller.signal.aborted||a.settled&&(n||a.expiresAt<=Date.now())){a?.controller.abort();let t=new AbortController,n=performance.now(),o=r.request(`system.info`,{},{signal:t.signal,timeoutMs:XO}).then(e=>({value:e,at:Date.now(),roundTripMs:performance.now()-n})),s={client:r,hello:i,revision:e.connectionRevision,expiresAt:Date.now()+XO,settled:!1,controller:t,subscribers:new Set,promise:o};o.then(()=>{s.settled=!0},()=>{ZO.get(e)===s&&ZO.delete(e)}),ZO.set(e,s),a=s}let o=await iy(a,{},t);if(!JO(e.snapshot)||a.client!==e.snapshot.client||a.hello!==e.snapshot.hello||a.revision!==e.connectionRevision||a.controller.signal.aborted)throw a.controller.abort(),ZO.get(e)===a&&ZO.delete(e),new DOMException(`System information read was retired`,`AbortError`);return o}var XO,ZO;function QO(){return(QO=e((()=>{Vi(),XO=1e4,ZO=new WeakMap})))()}function $O(e,t){let n=()=>{if(t.aborted||e.signal.aborted)throw Error(`This plugin UI view has ended.`)},r=n=>(...r)=>{!t.aborted&&!e.signal.aborted&&n(...r)},i=new Set,a=r=>{(t.aborted||e.signal.aborted)&&(r(),n());let a=()=>{i.delete(a)&&r()};return i.add(a),a},o=e=>e instanceof Promise?e.then(e=>(n(),e)):e;t.addEventListener(`abort`,()=>{for(let e of i)try{e()}catch(e){console.error(`[openclaw] plugin UI cleanup failed`,e)}i.clear()},{once:!0});let s=(e,t={},i)=>new Proxy(e,{get(e,c,l){if(c===`dispose`&&i)return i;n();let u=Reflect.get(e,c,l);return typeof u==`function`?(...i)=>{n();let l=t[c];if(l!==void 0){let e=i[l];typeof e==`function`&&(i[l]=r((...t)=>Reflect.apply(e,void 0,t)))}let d=Reflect.apply(u,e,i);if(typeof d==`function`)return a(()=>d());if(d&&typeof d==`object`&&`dispose`in d&&typeof d.dispose==`function`){let e=d.dispose,t=a(()=>e.call(d));return s(d,{},t)}return o(d)}:u}});return{...e,signal:t,get connection(){return n(),e.connection},get locale(){return n(),e.locale},request:async(t,r)=>{n();let i=await e.request(t,r);return n(),i},onEvent:(t,i)=>(n(),a(e.onEvent(t,r(i)))),subscribe:t=>(n(),a(e.subscribe(r(t)))),sessions:s(e.sessions,{observe:1}),agents:s(e.agents),navigation:s(e.navigation),dock:e.dock?s(e.dock):void 0,ui:s(e.ui),components:s(e.components)}}function ek(){return(ek=e((()=>{})))()}function tk(e,t){return e.registrations(`actions`).filter(e=>e.value.placement===`session`).flatMap(n=>{try{let e=n.value.resolve?.({sessionKey:t.key,agentId:t.agentId,session:structuredClone(t)});return e?.hidden?[]:[{id:n.key,label:e?.label??n.value.label,disabled:e?.disabled}]}catch(t){return e.reportError(n.pluginId,t),[]}})}async function nk(e){let t=e.placement===`session`?`Reopen the session menu.`:`Try again from the current view.`;if(e.placement===`session`&&!e.session)throw Error(`This session is no longer available. ${t}`);let n=e.runtime.registrations(`actions`).find(t=>t.key===e.id&&t.value.placement===e.placement);if(!n)throw Error(`This plugin action is no longer active. ${t}`);let r=AbortSignal.any([e.signal,n.signal]);r.throwIfAborted();let i={sessionKey:e.sessionKey,agentId:e.agentId??e.session?.agentId,session:e.session?structuredClone(e.session):void 0},a=n.value.resolve?.(i);if(r.throwIfAborted(),a?.hidden||a?.disabled)throw Error(`This plugin action is currently unavailable. ${t}`);await n.value.run({...i,host:$O(n.host,r),signal:r}),r.throwIfAborted()}function rk(){return(rk=e((()=>{})))()}function ik(e,t){if(e instanceof cl)return e.method===t;if(!(e instanceof Zn)||e.gatewayCode!==`UNAVAILABLE`||!e.retryable)return!1;let n=e.details;if(!n||typeof n!=`object`)return!0;let r=n.method;return typeof r!=`string`||r===t}function ak(e){return hn(e)?M(`chat.agentDatabaseWarming`):e instanceof cl?M(`chat.historyRequestTimedOut`):j(e)}var ok;function sk(){return(sk=e((()=>{Vl(),tr(),b(),N(),Me(),ok=6e4})))()}function ck(e){return`kind`in e}function lk(e){let t=e?.totalMessages,n=typeof t==`number`&&Number.isSafeInteger(t)&&t>=0?t:void 0,r=e?.nextOffset;return e?.hasMore===!0&&typeof r==`number`&&Number.isSafeInteger(r)&&r>0?{hasMore:!0,nextOffset:r,...n===void 0?{}:{totalMessages:n}}:{hasMore:!1,...n===void 0?{}:{totalMessages:n},...e?.completeSnapshot===!0?{completeSnapshot:!0}:{}}}function uk(e){return G(e.sessionInfo?.sessionId)??G(e.sessionId)}function dk(e){let t=e.totalMessages;if(typeof t!=`number`||!Number.isSafeInteger(t)||t<0)return null;let n=t-(e.hasMore?e.nextOffset:t)+1;return Number.isSafeInteger(n)&&n>0?n:null}function fk(e){if(!e.previousSessionId||e.previousSessionId!==e.nextSessionId||e.previousMessages.length===0)return null;let t=e.previousPagination.totalMessages,n=e.nextPagination.totalMessages,r=dk(e.previousPagination),i=dk(e.nextPagination);if(typeof t!=`number`||typeof n!=`number`||r===null||i===null||n<t||i>t+1||i<=r)return null;let a=e.previousMessages.filter(e=>{let t=Ii(e);return t!==null&&t<i});if(a.length===0)return null;let o=n-r+1;return{messages:[...a,...e.nextMessages],pagination:r>1?{hasMore:!0,nextOffset:o,totalMessages:n}:{hasMore:!1,totalMessages:n}}}function pk(e,t){t!==void 0&&j_(e,t??void 0);let n=A_(e);if(!e.chatMessagesBySession)return;let r=e.sessionKey,i=D(e,r)?k(e):void 0;R_(e.chatMessagesBySession,e,{sessionKey:r,agentId:i},{...n===void 0?{}:{deltaCursor:n},...e.chatDisplayedLeafEntryId===void 0?{}:{displayedLeafEntryId:e.chatDisplayedLeafEntryId},messages:e.chatMessages,pagination:e.chatHistoryPagination,sessionId:e.currentSessionId??null})}function mk(e,t,n){if(delete e.chatHistoryCursor,!e.chatMessagesBySession)return;let r=z_(e.chatMessagesBySession,e,{sessionKey:t,agentId:n});if(r?.deltaCursor===void 0)return;let{deltaCursor:i,...a}=r;R_(e.chatMessagesBySession,e,{sessionKey:t,agentId:n},a)}function hk(){return(hk=e((()=>{wi(),O(),$_()})))()}function gk(e){if(ck(e)&&e.kind===`reset`||!e.activity||!e.messages)return e;let t=new Map(e.activity.map(e=>[e.messageId,e.items])),n=e=>{let n=Jl(e),r=n?.messageId??Jl(n?.__openclaw)?.id,i=typeof r==`string`?t.get(r):void 0;return n&&i?{...n,activity:i}:e};return{...e,messages:e.messages.map(t=>{if(!ck(e))return n(t);let r=Jl(t);return r?{...r,message:n(r.message)}:t})}}function _k(e,t,n,r){let i=e.ownerRequestCounts.get(t),a=(i?.get(n)??0)+r;if(a<=0){i?.delete(n),i?.size===0&&e.ownerRequestCounts.delete(t);return}i||(i=new Map,e.ownerRequestCounts.set(t,i)),i.set(n,a)}async function vk(e,t,n,r,i,a){let o=0;for(;;)try{return await t()}catch(t){if(!n()||!r()||!ik(t,e)||(a(t),await Sl(T(t,o++),i),!n()||!r()))throw t}}function yk(e,...[t,n,r,i,a,o,s,c,l=[],u={limit:80,maxBytes:Tk}]){let d=Ok.get(t);d||(d=new WeakMap,Ok.set(t,d));let f=e??t,p=d.get(f);p||(p={ownerRequestCounts:new WeakMap,requests:new Map},d.set(f,p));let m=p.requests,h=m.get(n),g=(p.ownerRequestCounts.get(o)?.get(n)??0)>0,_={...s,retryDeadlineMs:Date.now()+ok};if(!h||g){let o={sessionKey:i,...a?{agentId:a}:{},...c===void 0?{}:{cursor:c},...u,...l.length?{inputRunIds:l}:{}},s=new AbortController,d=new Set([_]),f=vk(r,async()=>{let n=new Map([...d].map(e=>[e,e.captureRun?.()])),i=e?{owner:e,reconcile:e.captureReconcile()}:void 0;return{...gk(await t.request(r,o,{signal:s.signal,timeoutMs:vl})),observation:i,consumersAtIssue:n}},()=>[...d].some(e=>e.isCurrent()),()=>[...d].some(e=>e.isCurrent()&&Date.now()<e.retryDeadlineMs),s.signal,e=>{for(let t of d)t.isCurrent()&&(t.lastRetryableError=e,t.onRetry?.())}).finally(()=>{m?.get(n)?.promise===f&&m.delete(n)});h={controller:s,consumers:d,promise:f},m.set(n,h)}else h.consumers.add(_);_k(p,o,n,1);let v=new AbortController,y=setTimeout(()=>{let e=new cl({method:r,timeoutMs:ok,requestSent:!0},M(`chat.historyRequestTimedOut`));v.abort(hn(_.lastRetryableError)?_.lastRetryableError:e)},Math.max(0,_.retryDeadlineMs-Date.now())),b=h;return iy({controller:b.controller,promise:b.promise,subscribers:b.consumers},_,v.signal,()=>{clearTimeout(y),_k(p,o,n,-1),b.consumers.size===0&&m.get(n)===b&&m.delete(n)}).then(({consumersAtIssue:e,observation:t,...n})=>t?{...n,observation:{...t,run:e.get(_)}}:n)}async function bk(e,t,n,r,i){let a=`chat.history`,o=await yk(null,e,`prefetch\u0000${a}\u0000${t}\u0000${i===void 0?`page`:`cursor:${i}`}`,a,t,void 0,n,{isCurrent:r},i,void 0,Ek);if(ck(o))return o;let s=o.sessionInfo;return{kind:`snapshot`,snapshot:{...o.deltaCursor===void 0?{}:{deltaCursor:o.deltaCursor},...Object.hasOwn(s??{},`activeLeafEntryId`)?{displayedLeafEntryId:s?.activeLeafEntryId?.trim()||null}:{},messages:Qs(o.messages),pagination:lk(o),sessionId:uk(o)}}}async function xk(e,t,n,r){let i=gk(await e.request(`chat.history`,{sessionKey:t,...n?{agentId:n}:{},limit:Dk,offset:r}));return{...i,messages:Qs(i.messages)}}async function Sk(e,t){if(!e.client||!e.connected)return;let n=e.client,r=e.sessionKey,i=D(e,r)?k(e):void 0,a=g_(e,n,e.connectionEpoch,r,i),o=await xk(n,r,i,t);if(v_(e,a))return o}async function Ck(e,t){if(!e.client||!e.connected)return;let n=e.client,r=e.connectionEpoch,i=e.sessionKey,a=i_(e).historyVersion,o=D(e,i)?k(e):void 0,s=await xk(n,i,o,t);return{claim:{client:n,connectionEpoch:r,sessionKey:i,historyVersion:a,...o?{agentId:o}:{}},requestedOffset:t,result:s}}function wk(e,t){let n=t.claim,r=e.chatHistoryPagination;return e.client===n.client&&e.connected&&e.connectionEpoch===n.connectionEpoch&&i_(e).historyVersion===n.historyVersion&&e.sessionKey===n.sessionKey&&(!D(e,n.sessionKey)||k(e)===n.agentId)&&r.hasMore&&r.nextOffset===t.requestedOffset}var Tk,Ek,Dk,Ok;function kk(){return(kk=e((()=>{Ol(),Vl(),jl(),b(),wc(),Me(),O(),sk(),hk(),S_(),Tk=262144,Ek={limit:20,maxBytes:65536},Dk=1e3,Ok=new WeakMap})))()}function Ak(e,t){if(e.chatRunId!==t.runId)return;let n=e.chatRunStartup;if(n?.runId===t.runId){if(t.state===`status`&&t.phase!==`retrying`&&n.state===`activity`||n.seq!==void 0&&(t.seq===void 0?t.state===`status`:t.seq<=n.seq))return;if(t.state===`activity`&&t.seq===void 0&&n.seq!==void 0){e.chatRunStartup={...t,seq:n.seq};return}}e.chatRunStartup=t}function jk(e){return typeof e==`string`&&Object.hasOwn(Pk,e)}function Mk(e,t){if(e)return e.phase===`retrying`?e.message:M(Pk[e.phase]);switch(t?.phase){case`reconnecting`:return M(`connection.reconnecting`);case`pending`:case`requested`:case`provisioning`:return M(`chat.startupStatus.provisioningEnvironment`);case`syncing`:return M(`chat.startupStatus.preparingWorkspace`);case`starting`:return M(`newSession.starting`);case`active`:case`sending`:return M(`chat.composer.sendingMessage`);default:return}}function Nk(e){return e?.state===`status`?e:null}var Pk;function Fk(){return(Fk=e((()=>{b(),ga(),ka(),Pk={waiting_for_state:`chat.startupStatus.waitingForState`,preparing_workspace:`chat.startupStatus.preparingWorkspace`,naming_worktree:`chat.startupStatus.namingWorktree`,creating_worktree:`chat.startupStatus.creatingWorktree`,running_setup:`chat.startupStatus.runningSetup`,provisioning_environment:`chat.startupStatus.provisioningEnvironment`,preparing_context:`chat.startupStatus.preparingContext`,memory_flushing:`chat.startupStatus.memoryFlushing`,starting_model:`chat.startupStatus.startingModel`}})))()}function Ik(e,t){if(!YD(e))return;let n=t?.preserveStreamSegments?[...e.chatStreamSegments]:null;QD(e),n&&(e.chatStreamSegments=n)}function Lk(e,t){YD(e)&&$D(e,t)}function Rk(e){Array.isArray(e.chatStreamSegments)&&(e.chatStreamSegments=[])}function zk(e){return K(K(e)?.openclawStreamFallback)}function Bk(e){let t=zk(e);return t&&!W(t.itemId)?t:null}function Vk(e,t,n){let r=U(t),i=(r?.role===`assistant`?r.runId:null)??dh(t),a=fh(t)??void 0;if(i)for(let t=e.length-1;t>=0;--t){let n=e[t],r=Bk(n);if(r&&W(r.runId)===i){a=W(r.afterBoundaryRunId)??a;break}}let o=ix(e,{...i?{runId:i}:{},...a?{afterBoundaryRunId:a}:{}}),s=ss(ki(t))?.trim()??``,c=new Set,l=[],u=0;for(let t=o.start;t<o.end;t+=1){let r=e[t],i=zk(r);if(!i)continue;let a=ss(r)?.trim();if(W(i.itemId)){!n?.preserveKeyedCommentary&&a&&a===s&&c.add(t);continue}if(i.source===`current`&&l.push(t),!a)continue;let o=s.slice(u),d=/^\s*/u.exec(o)?.[0].length??0;o.slice(d).startsWith(a)&&(c.add(t),u+=d+a.length)}let d=l[0];c.size===0&&l.length===1&&d!==void 0&&c.add(d);let f=[],p=null;for(let t=o.start;t<o.end;t+=1)c.has(t)?p??=f.length:f.push(e[t]);let m=p??f.length;return[...e.slice(0,o.start),...f.slice(0,m),t,...f.slice(m),...e.slice(o.end)]}function Hk(e,t){return!e?.trim()||t(e)?null:e}function Uk(e,t){let n=Eh(e),r=[],i=null,a=Array.isArray(e.chatStreamSegments)?e.chatStreamSegments:[],o=0,s;for(let[e,c]of a.entries()){if(!c||typeof c.text!=`string`)continue;let a=typeof c.toolCallId==`string`&&c.toolCallId.trim()?c.toolCallId.trim():null,l=xc(c),u=l&&typeof c.itemId==`string`?c.itemId.trim():void 0,d=l?void 0:n[o],f=W(c.runId)??d?.runId,p=W(c.afterBoundaryRunId)??s,m=W(c.boundaryRunId);!l&&c.boundaryMarker!==!0&&c.persisted!==!0&&(o+=1);let h=Ia(c),g=Hk(h?Wo(c.text,i):c.text,t.isHiddenStreamText);g&&c.persisted!==!0&&r.push({text:g,replacementText:c.text,source:`segment`,segmentIndex:e,timestamp:typeof c.ts==`number`&&Number.isFinite(c.ts)?c.ts:Date.now(),...u?{itemId:u}:{},...f?{runId:f}:{},...p?{afterBoundaryRunId:p}:{},...m?{boundaryRunId:m}:{},toolCallId:a??d?.id}),h&&(i=ba(i,c.text)),m&&(s=m)}if(t.includeCurrent!==!1&&typeof e.chatStream==`string`){let n=Hk(Wo(e.chatStream,i),t.isHiddenStreamText);n&&r.push({text:n,replacementText:e.chatStream,source:`current`,timestamp:e.chatStreamStartedAt??Date.now(),...e.chatRunId?{runId:e.chatRunId}:{},...s?{afterBoundaryRunId:s}:{}})}return r}function Wk(e,t){if(typeof e.chatStream!=`string`)return null;let n=Array.isArray(e.chatStreamSegments)?e.chatStreamSegments:[],r=Ro(n);return Hk(Wo(e.chatStream,r),t)}function Gk(e,t,n,r,i=e.length){if(t.itemId)return e.slice(r,i).some(e=>{let n=Ci(e);return n!==void 0&&n.itemId===t.itemId&&(!n.runId||!t.runId||n.runId===t.runId)});let a=e.slice(r,i).map(e=>{let r=U(e);return r?.role&&r.role!==`assistant`||r?.runId&&t.runId&&r.runId!==t.runId||n(e)||Mh(e)?null:ss(e)?.trim()??null});return[t.replacementText,t.text].some(e=>!!e.trim()&&!cx(a,e.trim()))}function Kk(e,t){let n=$b(e)+1;return e.slice(n).some(e=>iu(K(e)?.role)!==`assistant`||t(e)?!1:!!ss(e)?.trim())}function qk(e,t,n){let r=Uk(t,n),i=n.persistCommentary===!0?r:r.filter(e=>!e.itemId);return r.length>0&&(i.length>0||Kk(e,n.isHiddenAssistantMessage))&&i.every(t=>{let r=ix(e,t);return Gk(e,t,n.isHiddenAssistantMessage,r.start,r.end)})}function Jk(e,t){return Uk(e,t).length>0}function Yk(e,t,n){let r=ss(ki(e))?.trim();if(!r)return!1;let i=Uk(t,{includeCurrent:!0,isHiddenStreamText:n.isHiddenStreamText}).filter(e=>n.persistCommentary===!0||!e.itemId);if(i.length===0)return!1;let a=0;for(let[e,t]of i.entries()){let n=t.text.trim(),i=r.indexOf(n,a);if(i<0||e===0&&i!==0)return!1;a=i+n.length}return!0}function Xk(e,t,n,r,i,a){let o=Eh(t),s=i?Dh({id:i,...a?{runId:a}:{}},o):void 0,c=s?new Set([s]):i?new Set:new Set(o.map(e=>e.identity));if(c.size===0)return-1;for(let t=n;t<r;t++)if(Th(e[t]).some(e=>{let t=Dh(e,o);return t!==void 0&&c.has(t)}))return t;return-1}function Zk(e){if(!e||typeof e!=`object`)return null;let t=e;return Rl(t.timestamp)??Rl(t.ts)??null}function Qk(e,t,n){let r=e,i=n.persistCommentary===!0,a=n.replacementMessages;for(let e of Uk(t,n)){if(!i&&e.itemId)continue;let o=a?.length?[...r,...a]:r,s=ix(o,e);if(Gk(o,e,n.isHiddenAssistantMessage,s.start,s.end))continue;let c=o===r?s:ix(r,e),l=e.source===`segment`&&e.toolCallId?Xk(r,t,c.start,c.end,e.toolCallId,e.runId):-1;if(n.requirePersistedTool&&l<0)continue;let u=l>=0?l:e.source===`segment`?ax(r,e.timestamp,c.start,c.end,Zk):c.end,d=r.slice(0,u).map(e=>U(e)?.sequence).findLast(e=>typeof e==`number`),f={role:`assistant`,content:[{type:`text`,text:e.text}],timestamp:ox(r,u,e.timestamp,Zk),openclawStreamFallback:{replacementText:e.replacementText,source:e.source,...e.itemId?{itemId:e.itemId}:{},...e.runId?{runId:e.runId}:{},...e.afterBoundaryRunId?{afterBoundaryRunId:e.afterBoundaryRunId}:{},...d===void 0?{}:{afterSequence:d}}};r=[...r.slice(0,u),f,...r.slice(u)]}return r}function $k(){return($k=e((()=>{Si(),wi(),fl(),ds(),Bh(),_x(),xh(),Ah()})))()}function eA(e,t,n,r){return e.flatMap((e,i)=>n(e,i)?!(e.runId&&t&&e.runId!==t)&&Ia(e)?[{...e,persisted:!0,...r?{retiredItemId:r}:{}}]:[]:[e])}function tA(e,t){if(!e.chatStreamSegments||t.length===0)return;let n=new Set(t);e.chatStreamSegments=eA(e.chatStreamSegments,e.chatRunId,(e,t)=>n.has(t))}function nA(e,t){let n=e&&uA.get(e);if(n?.runId===t)return n.messages;let r=(e??[]).filter(e=>{let n=U(e);return n?.role===`assistant`&&n.id&&!n.isImported&&n.runId===t&&!Ci(e)});return e&&uA.set(e,{runId:t,messages:r}),r}function rA(e){let t=e.chatRunId;if(!t)return;for(let n of e.chatStreamSegments??[]){if(n.runId!==t||!n.retiredItemId||!n.pendingCommentary)continue;let r=oA(e,{runId:t,itemId:n.retiredItemId,text:n.pendingCommentary.text,timestamp:n.ts});r&&(e.chatStreamSegments=e.chatStreamSegments?.map(e=>e.runId===t&&e.itemId===n.retiredItemId?{...e,text:r.text}:e))}let n=e.chatStream??Ro(e.chatStreamSegments??[]);if(!n)return;let r=sx(nA(e.chatMessages,t),n,t),i=n.slice(0,n.length-(r?.length??0));i&&iA(e,t,i,Date.now())}function iA(e,t,n,r,i){let a=e.chatStream??Ro(e.chatStreamSegments??[]),o=e.chatStreamSegments??[],s=e.chatStream===null?a:Ro(o),c=(e,r)=>(!i||r===i.segmentIndex)&&e.persisted!==!0&&e.runId===t&&Ia(e)&&n.startsWith(e.text);if(o.some(c)&&(o=eA(o,t,c,i?.itemId),e.chatStreamSegments=o),ba(s,n)===s)return;let l=o.at(-1),u=l?.persisted&&l.runId===t&&!l.boundaryRunId&&!l.toolCallId&&!l.retiredItemId&&!i;e.chatStreamSegments=[...u?o.slice(0,-1):o,{...u?l:{},text:n,ts:e.chatStreamStartedAt??r,runId:t,persisted:!0,...i?{retiredItemId:i.itemId}:{}}]}function aA(e,t){let n=t.pendingCommentary,r=e.chatStream??Ro(e.chatStreamSegments??[]);if(!n||!r?.startsWith(t.text))return null;let i=n.text,a=r.slice(n.prefixLength),o=Zd(a).text,s=o.replace(/\s+/gu,` `).trim(),c=r,l=i,u;if(i.startsWith(s)&&s!==i)u={...n,text:i};else{let e=i.split(/\s+/u).map(Wd).join(`\\s+`),s=RegExp(`^\\s*${e}`,`u`).exec(o);if(!s)return null;let u=o.slice(s[0].length).trimEnd(),d=a.trimEnd();if(u&&!d.endsWith(u))return null;c=r.slice(0,Math.max(t.text.length,n.prefixLength+d.length-u.length)),l=s[0].replace(/^(?:[ \t]*\r?\n)+/u,``).trimEnd()}return e.chatStreamSegments=e.chatStreamSegments?.map(e=>e===t?{...e,text:c,pendingCommentary:u}:e.runId===t.runId&&Ia(e)&&e.text.startsWith(t.text)&&c.startsWith(e.text)?{...e,persisted:!0}:e),{text:l}}function oA(e,t){if(e.chatRunId!==t.runId)return null;let n=e.chatStreamSegments?.find(e=>e.runId===t.runId&&e.retiredItemId===t.itemId);if(n){let r=n.pendingCommentary&&n.pendingCommentary.text!==t.text?{...n,pendingCommentary:{...n.pendingCommentary,text:t.text}}:n;return r!==n&&(e.chatStreamSegments=e.chatStreamSegments?.map(e=>e===n?r:e)),aA(e,r)}if(e.chatStreamSegments?.some(e=>e.runId===t.runId&&e.itemId===t.itemId))return null;let r=Uk(e,{includeCurrent:!0,isHiddenStreamText:()=>!1}).at(-1);if(!r||r.itemId||r.runId!==t.runId||r.boundaryRunId)return null;let i=(e.chatStreamSegments??[]).slice(0,r.segmentIndex),a=Ro(i),o=a&&r.replacementText.startsWith(a)?r.replacementText.slice(a.length):r.replacementText,s=Zd(o).text.replace(/^(?:[ \t]*\r?\n)+/u,``).trimEnd(),c=s.replace(/\s+/gu,` `).trim();return!s||s!==t.text&&c!==t.text?!c||!t.text.startsWith(c)?null:(iA(e,t.runId,r.replacementText,t.timestamp,{itemId:t.itemId,segmentIndex:r.segmentIndex}),e.chatStreamSegments=e.chatStreamSegments?.map(e=>e.runId===t.runId&&e.retiredItemId===t.itemId?{...e,pendingCommentary:{text:t.text,prefixLength:a?.length??0}}:e),{text:t.text}):(iA(e,t.runId,r.replacementText,t.timestamp,{itemId:t.itemId,segmentIndex:r.segmentIndex}),{text:s})}function sA(e,t){let n=Ci(t);n&&e.chatStreamSegments&&tA(e,e.chatStreamSegments.flatMap((e,t)=>{let r=W(e.runId),i=!n.runId||!r||n.runId===r;return W(e.itemId)===n.itemId&&i?[t]:[]}))}function cA(e,t,n){if(!Array.isArray(t.chatStreamSegments))return!1;let r=new Set;for(let i of Uk(t,{includeCurrent:!1,isHiddenStreamText:n.isHiddenStreamText})){if(i.segmentIndex===void 0||i.itemId&&n.persistCommentary!==!0)continue;let t=ix(e,i);Gk(e,i,n.isHiddenAssistantMessage,t.start,t.end)&&r.add(i.segmentIndex)}return r.size!==0&&(t.chatStreamSegments=eA(t.chatStreamSegments,t.chatRunId,(e,t)=>r.has(t)),!0)}function lA(e,t){if(t.size===0)return;let n=Eh(e);if(e.toolStreamById instanceof Map)for(let n of t)e.toolStreamById.delete(n);if(Array.isArray(e.toolStreamOrder)&&(e.toolStreamOrder=e.toolStreamOrder.filter(e=>typeof e==`string`&&!t.has(e))),Array.isArray(e.chatToolMessages)&&(e.chatToolMessages=e.chatToolMessages.filter(e=>Th(e).every(e=>{let r=Dh(e,n);return r===void 0||!t.has(r)}))),!Array.isArray(e.chatStreamSegments))return;let r=0;e.chatStreamSegments=eA(e.chatStreamSegments,e.chatRunId,e=>{if(e.boundaryMarker===!0||e.persisted===!0)return!1;let i=W(e.toolCallId),a=xc(e),o=a?void 0:n[r];a||(r+=1);let s=W(e.runId),c=i?Dh({id:i,...s?{runId:s}:{}},n):o?.identity;return!!(c&&t.has(c))})}var uA;function dA(){return(dA=e((()=>{wi(),Rd(),_x(),$k(),Ah(),uA=new WeakMap})))()}function fA(e,t){let n=G(t);if(!n)return null;let r=G(e);if(r){let e=`${r}/`;return`${r}/${(iu(n).startsWith(iu(e))?n.slice(e.length).trim():n)||n}`}let i=n.indexOf(`/`);if(i>0){let e=n.slice(0,i).trim(),t=n.slice(i+1).trim();if(e&&t)return`${e}/${t}`}return n}function pA(e,t){if(Array.isArray(e)){let t=e.map(e=>G(e)).filter(e=>!!e).map(e=>j(e));if(t.length>0)return t}if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=Bl(e),r=G(t?.provider),i=G(t?.model);if(!r||!i)continue;let a=j(G(t?.reason)?.replace(/_/g,` `)??G(t?.code)??(typeof t?.status==`number`?`HTTP ${t.status}`:null)??G(t?.error)??`error`),o=fA(r,i)??`${r}/${i}`;n.push(`${o}: ${gt(a)}`)}return n}function mA(e){if(e.localRunId)return e.localRunId;let t=new Set(e.activeRunIds??[]);return e.queue?.find(e=>e.sendState===`waiting-reconnect`&&typeof e.sendRunId==`string`&&t.has(e.sendRunId))?.sendRunId??null}function hA(e,t){let n=e.waitingApprovalStatuses??=new Map,r=e.waitingApprovalResolvedIds??=new Set,i=new Set(t.map(e=>e.id));for(let e of r)i.has(e)||r.delete(e);let a=t.filter(t=>t.kind===`exec`&&t.request.sessionKey&&ue(e,t.request.sessionKey,t.request.agentId)),o=new Set(a.map(e=>e.id)),s=!1;for(let e of n.keys())o.has(e)||(n.delete(e),s=!0);if(n.size>0)return s;for(let t of a){let i=G(t.request.runId);i&&e.knownAgentRunIds?.has(i)&&!r.has(t.id)&&(n.set(t.id,{approvalId:t.id,toolCallId:null,runId:i}),s=!0)}return s}function gA(e){e.compactionClearTimer!=null&&(window.clearTimeout(e.compactionClearTimer),e.compactionClearTimer=null)}function _A(e,t,n,r){let i=n===`complete`,a=e.compactionStatus,o=a?.runId===t&&(!r||!a.itemId||a.itemId===r),s=r??(o?a?.itemId:void 0);gA(e),e.compactionStatus={phase:n,runId:t,...s?{itemId:s}:{},startedAt:o?a.startedAt:Date.now(),completedAt:i?Date.now():null},i||(e.compactionClearTimer=window.setTimeout(()=>{let r=e.compactionStatus;r?.phase!==n||t&&r?.runId!==t||(e.compactionStatus=null,e.compactionClearTimer=null,e.requestUpdate?.())},TA))}function vA(e,t){if(!t||t.operation!==`compact`)return;let n=G(t.sessionKey),r=G(t.agentId)??void 0;if(!n||!ue(e,n,r))return;let i=G(t.operationId)??`session-compact:${n}`;if(t.phase===`start`){_A(e,i,`active`);return}if(t.phase===`end`&&!(e.compactionStatus?.runId&&e.compactionStatus.runId!==i)){if(t.completed===!0){_A(e,i,`complete`);return}gA(e),e.compactionStatus=null}}function yA(e,t){let n=t.data??{},r=typeof n.phase==`string`?n.phase:``,i=n.completed===!0,a=G(n.itemId)??void 0;if(gA(e),r===`start`){_A(e,t.runId,`active`,a);return}r===`end`&&(i?_A(e,t.runId,n.willRetry===!0?`retrying`:`complete`,a):e.compactionStatus=null)}function bA(e,t){let n=t.data??{},r=G(n.phase);(r===`end`||r===`error`)&&xA(e,t)&&e.compactionStatus?.phase===`retrying`&&(e.compactionStatus.runId&&e.compactionStatus.runId!==t.runId||_A(e,t.runId,`complete`))}function xA(e,t){let n=typeof t.sessionKey==`string`?t.sessionKey:void 0;return n&&!ue(e,n,G(t.agentId))?!1:e.chatRunId?t.runId===e.chatRunId:!!n}function SA(e,t){let n=t.data??{},r=t.stream===`fallback`?`fallback`:G(n.phase);if(t.stream===`lifecycle`&&r!==`fallback`&&r!==`fallback_cleared`||!xA(e,t))return;let i=fA(n.selectedProvider,n.selectedModel)??fA(n.fromProvider,n.fromModel),a=fA(n.activeProvider,n.activeModel)??fA(n.toProvider,n.toModel),o=fA(n.previousActiveProvider,n.previousActiveModel)??G(n.previousActiveModel);if(!i||!a||r===`fallback`&&i===a)return;let s=G(n.reasonSummary)??G(n.reason),c=s?j(s):null,l=pA(n.attemptSummaries,n.attempts);e.fallbackClearTimer!=null&&(window.clearTimeout(e.fallbackClearTimer),e.fallbackClearTimer=null),e.fallbackStatus={phase:r===`fallback_cleared`?`cleared`:`active`,selected:i,active:r===`fallback_cleared`?i:a,previous:r===`fallback_cleared`?o??(a===i?void 0:a):void 0,reason:c??void 0,attempts:l,occurredAt:Date.now()},e.fallbackClearTimer=window.setTimeout(()=>{e.fallbackStatus=null,e.fallbackClearTimer=null,e.requestUpdate?.()},EA)}function CA(e,t){let n=G(t.data?.phase);if(n!==`waiting-approval`&&n!==`approval-resolved`)return!1;let r=G(t.data?.approvalId),i=G(t.sessionKey);if(!r||!i)return!0;if(n===`waiting-approval`){let n=e.waitingApprovalStatuses??=new Map;return e.waitingApprovalResolvedIds?.delete(r),n.set(r,{approvalId:r,toolCallId:G(t.data?.toolCallId),runId:t.runId}),!0}return(e.waitingApprovalResolvedIds??=new Set).add(r),e.waitingApprovalStatuses?.delete(r),!0}function wA(e,t){if(t.stream===`run_status`&&t.data.phase===`retrying`){let n=G(t.data.message);return n&&Ak(e,{state:`status`,runId:t.runId,phase:`retrying`,message:gt(n.slice(0,256)),seq:t.seq}),!0}return t.stream===`assistant`?(Ak(e,{state:`activity`,runId:t.runId,seq:t.seq}),!0):t.stream===`compaction`?(yA(e,t),!0):t.stream===`lifecycle`?CA(e,t)?!0:(bA(e,t),SA(e,t),!0):t.stream===`fallback`&&(SA(e,t),!0)}var TA,EA;function DA(){return(DA=e((()=>{N(),O(),Fk(),TA=3e5,EA=8e3})))()}function OA(e){if(e.stream!==`item`)return null;let t=e.data??{};if(t.kind!==`preamble`)return null;let n=W(t.itemId)??W(t.id),r=kA(t.progressText);return!r&&!n?null:{text:r,...n?{itemId:n}:{}}}function kA(e){if(typeof e!=`string`)return``;let t=Zd(e).text.trim(),n=t.replace(/^[\s*_`~]+|[\s*_`~]+$/gu,``).trim();return/^NO_REPLY$/iu.test(n)?``:t}function AA(e,t){let n=OA(t);if(!n)return!1;if(!Di({phase:typeof t.data.phase==`string`?t.data.phase:void 0,progressText:n.text})||!xA(e,t))return!0;n.text&&Ak(e,{state:`activity`,runId:t.runId,seq:t.seq});let r=n.itemId?e.chatStreamSegments.find(e=>e.itemId===n.itemId&&e.runId===t.runId):void 0;if(n.text=(n.itemId&&n.text?oA(e,{runId:t.runId,itemId:n.itemId,text:n.text,timestamp:t.ts}):null)?.text??n.text,n.itemId&&e.chatMessages?.some(e=>{let r=Ci(e);return r?.itemId===n.itemId&&r?.runId===t.runId})||n.itemId&&!n.text.trim())return e.chatStreamSegments=e.chatStreamSegments.filter(e=>e.itemId!==n.itemId||e.runId!==t.runId),!0;if(r)return e.chatStreamSegments=e.chatStreamSegments.map(e=>e===r?{...e,text:e.text.replace(/\s+/gu,` `).trim()===n.text?e.text:n.text}:e),!0;let i=e.chatStreamSegments[e.chatStreamSegments.length-1];return!n.itemId&&i&&!i.toolCallId&&i.text===n.text||(e.chatStreamSegments=[...e.chatStreamSegments,{text:n.text,ts:t.ts,runId:t.runId,...n.itemId?{itemId:n.itemId}:{}}]),!0}function jA(){return(jA=e((()=>{wi(),di(),Rd(),Fk(),dA(),DA()})))()}function MA(e){let t=Bl(e);if(!t)return null;if(typeof t.text==`string`)return t.text;if(!Array.isArray(t.content))return null;let n=[];for(let e of t.content){let t=Bl(e);t?.type===`text`&&typeof t.text==`string`&&t.text&&n.push(t.text)}return n.length>0?n.join(`
`):null}function NA(e){if(e==null)return null;if(typeof e==`number`||typeof e==`boolean`)return String(e);let t=MA(e),n;if(typeof e==`string`)n=e;else if(t)n=t;else try{n=JSON.stringify(e,null,2)}catch{n=Le(e)}let r=le(n,YA);return r.truncated?`${r.text}\n\n… truncated (${r.total} chars, showing first ${r.text.length}).`:r.text}function PA(e,t){let n=Bl(Bl(t.result)?.details);if(n?.changedModel!==!0)return;let r=G(n.sessionKey)??e.sessionKey,i=G(n.agentId);i&&ue(e,r,i)&&e.sessions.reconcileMutation(i)}function FA(e){let t=e.activity?.some(t=>(t.toolCallId??t.itemId)===e.toolCallId&&t.phase===`end`&&!t.suppressChannelProgress),n=[];return n.push({type:`toolcall`,name:e.name,arguments:e.args??{},...e.parentToolCallId?{parentToolCallId:e.parentToolCallId}:{},...e.details===void 0?{}:{details:e.details}}),(e.output||e.resultReceived)&&n.push({type:`toolresult`,name:e.name,text:e.output??``,...e.parentToolCallId?{parentToolCallId:e.parentToolCallId}:{},...e.details===void 0?{}:{details:e.details},...e.isError===void 0?{}:{isError:e.isError},...e.exitCode===void 0?{}:{exitCode:e.exitCode}}),{role:`assistant`,toolCallId:e.toolCallId,runId:e.runId,...e.activity?{activity:e.activity}:{},content:n,timestamp:e.startedAt,__openclawToolStreamLive:!0,__openclawToolStreamResultReceived:e.resultReceived===!0,__openclawToolStreamItemEnded:t===!0,...e.resultReceived!==!0&&!t&&e.liveDiffStat?{__openclawToolStreamDiffStat:e.liveDiffStat}:{},__openclawToolStreamReceivedAt:e.receivedAt}}function IA(e){if(e.toolStreamOrder.length<=qA)return;let t=e.toolStreamOrder.length-qA,n=e.toolStreamOrder.splice(0,t);for(let t of n)e.toolStreamById.delete(t)}function LA(e){ZD(e),XD(e)}function RA(e,t=!1){if(t){LA(e);return}e.toolStreamSyncTimer??=window.setTimeout(()=>{LA(e),e.requestUpdate?.()},JA)}function zA(e,t){return`tool:${Sh(e,t)}`}function BA(e,t){return`${e}:review:${JSON.stringify(t)}`}function VA(e,t){let n=Number.isSafeInteger(t.seq)?t.seq:0;if(t.stream===`tool`){let r=G(t.data?.toolCallId);if(!r)return!0;let i=zA(t.runId,r),a=`${i}:result`,o=e.activityEventSeqById?.get(a),s=G(t.data?.phase);if(s!==`result`&&o!==void 0&&n<=o)return!1;let c=s===`review`?G(Bl(t.data.review)?.id):void 0,l=e.activityEventSeqById?.get(`${i}:review-floor`);if(c&&l!==void 0&&n<=l)return!1;let u=c?BA(i,c):i,d=e.activityEventSeqById?.get(u);if(d!==void 0&&n<=d)return!1;let f=e.activityEventSeqById??=new Map;if(f.set(u,n),s===`result`){f.set(a,n);for(let e of f.keys())e.startsWith(`${i}:review:`)&&f.delete(e)}return!0}let r,i=t.stream===`lifecycle`&&(t.data?.phase===`end`||t.data?.phase===`error`);if(t.stream===`compaction`||i)r=`compaction:${t.runId}`;else if(t.stream===`item`){let e=G(t.data.itemId)??G(t.data.id)??`latest`;r=`item:${t.runId}:${e}`}else return!0;let a=e.activityEventSeqById?.get(r);return a!==void 0&&n<=a?!1:((e.activityEventSeqById??=new Map).set(r,n),!0)}function HA(e,t){if(t.stream!==`usage`)return!1;let n=G(t.sessionKey);if(n){if(!ue(e,n,G(t.agentId)))return!0}else if(!e.chatRunId||t.runId!==e.chatRunId)return!0;let r=t.data?.outputTokens;if(typeof r!=`number`||!Number.isFinite(r))return!0;let i=Math.floor(r);if(i<0)return!0;let a=e.chatRunUsageById?.get(t.runId);if(a&&t.seq<=a.seq)return!0;let o=new Map(e.chatRunUsageById);o.delete(t.runId),o.set(t.runId,{outputTokens:i,seq:t.seq});for(let e of[...o.keys()].slice(0,-50))o.delete(e);return e.chatRunUsageById=o,!0}function UA(e,t){let n=t.stream===`notice`;if(!n&&t.stream!==`codex_app_server.guardian`)return!1;if(!xA(e,t))return!0;let r=t.data??{},i=G(r.phase);if(n&&i===`provider_policy`){if(r.category!==`cyber`||r.provider!==`openai`)return!0;let n=r.state;if(n!==`buffering`&&n!==`blocked`&&n!==`fallback`&&n!==`escalated`&&n!==`unavailable`&&n!==`cleared`)return!0;let i=e.chatRunId??mg(e)??e.providerPolicyNotice?.runId,a=e.chatQueue?.some(n=>n.sendState===`sending`&&n.sendRunId===t.runId&&n.sessionKey&&ue(e,n.sessionKey,n.agentId));if(i!==t.runId&&!a)return!0;let o=`provider-policy:${t.runId}`,s=Math.max(e.activityEventSeqById?.get(o)??-1,e.providerPolicyNotice?.runId===t.runId?e.providerPolicyNotice.seq:-1);if(!Number.isSafeInteger(t.seq)||t.seq<=s)return!0;if((e.activityEventSeqById??=new Map).set(o,t.seq),n===`cleared`)return e.providerPolicyNotice?.runId===t.runId&&e.providerPolicyNotice.state===`buffering`&&(e.providerPolicyNotice=null),!0;let c=e.providerPolicyNotice;if(c?.runId===t.runId&&KA[n]<KA[c.state])return!0;let l=G(r.model),u=G(r.fallbackModel);return e.providerPolicyNotice={runId:t.runId,seq:t.seq,state:n,...l?{model:gt(l.slice(0,256))}:{},...u?{fallbackModel:gt(u.slice(0,256))}:{}},!0}let a=G(r.status),o=G(r.reviewId),s=G(r.threadId),c=G(r.turnId),l=o??(s&&c&&typeof r.startedAtMs==`number`&&Number.isFinite(r.startedAtMs)?r.startedAtMs:t.seq),u=`${n?`system`:`guardian`}:${t.runId}:`+(i===`warning`?`warning:${t.seq}`:`${s??`thread`}:${c??`turn`}:${l}`),d=e.guardianNotices??[],f=i===`strict_review_required`?`strict-review-required`:i===`warning`?`warning`:i===`started`&&a===`inProgress`?`reviewing`:i===`completed`&&a===`approved`?`approved`:i===`completed`&&[`denied`,`timedOut`,`aborted`].includes(a??``)?`denied`:null;if(!f)return!0;let p=G(r.targetItemId);if((i===`started`||i===`completed`)&&p)return i===`completed`&&(e.guardianNotices=d.filter(e=>e.key!==u)),!0;let m={key:u,runId:t.runId,timestamp:t.ts,kind:f};n&&(m.source=`system`);for(let e of[`command`,`riskLevel`,`rationale`,`message`]){let t=G(r[e]);t&&(m[e]=t)}let h=d.findIndex(e=>e.key===m.key);return e.guardianNotices=h===-1?[...d.slice(-49),m]:d.map((e,t)=>t===h?m:e),!0}function WA(e,t,n,r){let i=n.toolCallId,a=zA(t.runId,i),o=e.activityEventSeqById??=new Map,s=e=>o.get(BA(a,e.id))??0,c=`${a}:review-floor`,l=fo(n.details),u=Math.max(o.get(c)??0,...l.map(s)),d=[...l.filter(e=>e.id!==r.id),r].toSorted((e,t)=>s(e)-s(t)),f=d.slice(0,-16),p=d.slice(-16);if(f.length>0){o.set(c,Math.max(o.get(c)??0,...f.map(s)));for(let e of f)o.delete(BA(a,e.id))}let m=Jo(t.data),h=Wi(p),g=Jo(n.details),_=g===`denied`?`denied`:m??h??void 0;n.details=_s(n.details,p,_&&t.seq>=u?_:g),n.message=FA(n),RA(e,!0)}function GA(e,t){if(!t)return!1;let n=typeof t.sessionKey==`string`?t.sessionKey:void 0;if(n&&!ue(e,n,G(t.agentId))||!VA(e,t))return!1;if(t.stream===`lifecycle`||t.stream===`tool`){let n=G(t.runId);n&&(e.knownAgentRunIds??=new Set).add(n)}if(HA(e,t)||UA(e,t)||wA(e,t)||AA(e,t))return!0;let r=t.stream===`item`?hu(gi,{...t.data}):void 0;if(fu(gi,r)){if(!xA(e,t)||r.kind===`analysis`)return!0;let i=r,a=i.toolCallId??i.itemId,o=Sh(t.runId,a),s=e.toolStreamById.get(o);return s||(s={toolCallId:a,runId:t.runId,sessionKey:n,name:i.name??i.title,startedAt:i.startedAt??t.ts,receivedAt:Date.now(),message:{}},e.toolStreamById.set(o,s),e.toolStreamOrder.push(o)),s.activity=[...(s.activity??[]).filter(e=>e.itemId!==i.itemId),i],s.message=FA(s),IA(e),RA(e,i.phase===`end`),!0}if(t.stream!==`tool`)return!1;let i=t.data??{},a=typeof i.toolCallId==`string`?i.toolCallId:``;if(!a)return!1;let o=Sh(t.runId,a),s=e.toolStreamById.get(o),c=typeof i.phase==`string`?i.phase:``,l=c===`review`?Hd(i.review):null;if(c===`review`&&!l)return!0;let u=c!==`start`&&s?.name&&s.name!==`tool`?s.name:G(i.name)??s?.name??`tool`;t.runId===e.chatRunId&&Ak(e,{state:`activity`,runId:t.runId,seq:t.seq});let d=c===`start`?i.args:void 0,f=G(i.parentToolCallId)??void 0,p=c===`update`?NA(i.partialResult):c===`result`?NA(i.result):void 0,m=c===`result`?Bl(i.result):void 0,h=m?.details,g=Jo(i)??Jo(h),_=g?_s(h,[],g):h,v=c===`result`&&typeof i.isError==`boolean`?i.isError:void 0,y=m?.exitCode,b=typeof y==`number`&&Number.isInteger(y)?y:void 0,x=c===`input_delta`?no(i.diff):void 0;u===`session_status`&&c===`result`&&PA(e,i);let S=Date.now();if(s||(s={toolCallId:a,runId:t.runId,sessionKey:n,name:u,startedAt:typeof t.ts==`number`?t.ts:S,receivedAt:S,message:{}},e.toolStreamById.set(o,s),e.toolStreamOrder.push(o)),s.name=u,s.parentToolCallId??=f,d!==void 0&&(s.args=d),p!==void 0&&(s.output=p||void 0),h!==void 0||g){let e=Jo(s.details),t=e===`denied`?`denied`:g??e,n=fo(s.details);s.details=n.length?_s(h,n,t):_}return v!==void 0&&(s.isError=v),b!==void 0&&(s.exitCode=b),x&&(s.liveDiffStat=x),c===`result`&&(s.liveDiffStat=void 0,s.resultReceived=!0),l?(IA(e),WA(e,t,s,l),!0):(s.message=FA(s),IA(e),RA(e,c===`result`),!0)}var KA,qA,JA,YA;function XA(){return(XA=e((()=>{pu(),hi(),Gd(),Bo(),oa(),N(),qe(),O(),Fk(),jg(),Ah(),jA(),DA(),KA={buffering:0,fallback:1,blocked:2,escalated:3,unavailable:3},qA=50,JA=80,YA=12e4})))()}function ZA(e,t,n={}){return Qk(e,t,{...n,persistCommentary:n.persistCommentary??QA(t),isHiddenAssistantMessage:ls,isHiddenStreamText:Ls})}function QA(e){return e.settings?.chatPersistCommentary!==!1}function $A(e,t){if(e.chatRunId===t.runId&&Array.isArray(t.events))for(let n of t.events)n&&n.runId===t.runId&&GA(e,n)}function ej(e){return typeof e==`string`&&e&&!Ls(e)?e:null}function tj(e){let t=new Set;for(let n of e.events??[]){let r=n.data.itemId;n.runId===e.runId&&n.stream===`item`&&n.data.kind===`preamble`&&typeof r==`string`&&r.trim()&&t.add(r.trim())}return t}function nj(e,t,n){return Object.entries(e).every(([e,r])=>e===n||t[e]===r)&&Object.entries(t).every(([t,r])=>t===n||e[t]===r)}function rj(e,t){return e.chatMessages.some(e=>{let n=U(e),r=K(K(e)?.__openclaw);return n?.role===`assistant`&&!n.isImported&&(n.id!==null||n.sequence!==null)&&n.runId===t&&r?.runTerminal===!0})}function ij(e,t,n){return pg(e,dg(e,{sessionKey:t,...n?{agentId:n}:{}})).runs}function aj(e,t){return!e||t?.startsWith(e)?t??e:!t||e.startsWith(t)?e:t}function oj(e){let{state:t,run:n,sessionInfo:r,historyRun:i,previousRunProjections:a,runProjectionsBeforeApply:o,currentRunProjections:s,resetStream:c,activeStreamBeforeReset:l}=e,u=n?.runId?.trim();if(!u||!n){if(!r)return;let e=t.chatRunId?.trim(),n=r.lastRunId??(e&&rj(t,e)?e:void 0),i=n?s[n]:void 0;if(n&&(r.status===`done`||r.status===`failed`||r.status===`killed`||r.status===`timeout`)&&r.hasActiveRun!==!0&&!Ll(r)&&(!t.chatRunId||t.chatRunId===n)&&!t.chatQueue.some(e=>e.sendState===`sending`&&e.sendRunId&&e.sendRunId!==n)&&(r.status!==`killed`&&!i||t.chatRunId===n||mg(t)===n)&&nj(a,o)){let e=pg(t).entries.findLast(e=>e.identity?.runId===n&&!e.identity.isImported&&e.identity.role===`custom`&&Jl(e.message)?.customType===`run-failed-before-reply`),a=Jl(Jl(e?.message)?.details),o=a?.errorKind,s=o===`state_contention`?o:void 0,c=ss(e?.message),l=s&&c&&typeof a?.diagnostic==`string`?`${c}\n\n${a.diagnostic}`:c,u=Dg(t,{type:`runTerminal`,runId:n,...s?{errorKind:s}:{},status:r.status===`done`?`completed`:r.status===`timeout`?`timeout`:`error`,errorMessage:r.status===`failed`||r.status===`timeout`?l??r.lastRunError:r.lastRunError});gg(t,n);let d=u.runs[n];d?.errorMessage?(t.chatRunError?.runId!==n||!i?.errorMessage)&&iO(t,d.errorMessage,n,d.errorKind===`state_contention`?d.errorKind:void 0):d?.status===`completed`&&t.chatRunError?.runId&&t.chatRunError.runId!==n&&(t.chatRunError=null),TO(t,r,{publishRunStatus:!1})}return}let d=s[u],f=t.chatRunId===u&&d?.status===`streaming`&&nj(a,s,u),p=f||t.chatRunId===u&&(l!==null||t.chatStreamSegments?.some(e=>!e.runId||e.runId===u)),m=r?.activeRunIds,h=Ll(r??{})&&(!Array.isArray(m)||m.includes(u))&&(!d||d.status===`streaming`),g=!!(t.chatRunId&&t.chatRunId!==u&&Array.isArray(m)&&!m.includes(t.chatRunId)&&i?.runId===t.chatRunId&&i.sessionId===r?.sessionId&&i.isCurrent()&&!t.chatQueue.some(e=>e.sendState===`sending`&&e.sendRunId&&e.sendRunId!==u));if(h&&(c&&(!t.chatRunId||g)&&nj(a,o)||f)){let e=t.chatRunId!==u;rO(t,u,Date.now()),e&&r&&_g(t,u,r),t.chatRunSessionAbortable=n?.sessionAbortable===!0}if(!h||t.chatRunId!==u)return;let _=typeof n.startedAt==`number`&&Number.isFinite(n.startedAt)?n.startedAt:null,v=g?null:f?aj(ej(ss(d?.message)),l):l;t.chatStream=aj(ej(n.text),v),t.chatStreamStartedAt=_??t.chatStreamStartedAt??Date.now();let y=p?null:nx(t.chatMessages,u),b=t.chatStream===null?null:sx(t.chatMessages,t.chatStream,u,y?.index,tj(n)),x=t.chatStream?.slice(0,t.chatStream.length-(b?.length??0))??``,S=Ro(t.chatStreamSegments??[]);(y||ba(S,x)!==S)&&(t.chatStreamSegments=[...t.chatStreamSegments??[],{text:x,ts:t.chatStreamStartedAt,runId:u,...y?{boundaryRunId:y.runId}:{},...x?{persisted:!0}:{boundaryMarker:!0}}]);let C=n.events?.findLast(e=>e.runId===u&&e.stream===`run_status`),w=C?.data.phase;n.text&&(t.chatRunStartup?.state!==`status`||t.chatRunStartup.phase!==`retrying`)?Ak(t,{state:`activity`,runId:u}):C&&jk(w)&&Ak(t,{state:`status`,runId:u,phase:w,seq:C.seq}),$A(t,n)}function sj(){return(sj=e((()=>{wi(),ds(),wc(),Fk(),jg(),OO(),_x(),$k(),XA()})))()}function cj(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}function lj(e){return Math.max(0,Math.round(e))}function uj(e,t){let n=!0,r=null,i=()=>{if(n){n=!1;try{e()}finally{t()}}};return typeof window>`u`||typeof window.requestAnimationFrame!=`function`?queueMicrotask(i):r=window.requestAnimationFrame(()=>{r=null,n&&(r=window.requestAnimationFrame(()=>{r=null,i()}))}),()=>{n&&(n=!1,r!==null&&(window.cancelAnimationFrame(r),r=null))}}function dj(e,t,n){let r=0;return e.filter(e=>!e||typeof e!=`object`||!(`event`in e)||e.event!==t||(r+=1,r<=n))}function fj(e,t,n,r){let i={ts:Date.now(),event:t,payload:n};Array.isArray(e.eventLogBuffer)&&(e.eventLogBuffer=[i,...typeof r?.maxBufferedEventsForType==`number`?dj(e.eventLogBuffer,t,Math.max(0,r.maxBufferedEventsForType-1)):e.eventLogBuffer].slice(0,mj)),r?.console!==!1&&(r?.warn===!0?console.warn:console.debug)(`[openclaw] ${t}`,n)}function pj(e,t){if(e.renderLifecycle){e.renderLifecycle.afterCommit(e=>uj(t,e));return}uj(t,()=>void 0)}var mj;function hj(){return(hj=e((()=>{mj=250})))()}function gj(e){return Ql(Et(e.sessionKey)?.agentId??de(e,e.sessionKey).agentId??l(e))}function _j(){return(_j=e((()=>{un(),O()})))()}function vj(e,t,n,r,i){if(t.kind!==`live`)return null;if(t.activeRunId)return i&&i!==t.activeRunId?null:t.activeRunId;let a=e.lastLocalTerminalReconcile,o=a?.sessionKey===e.sessionKey?a.runId:null;if(!o)return null;if(i)return i===o?o:null;let s=pg(e,r).runs[o]?.message,c=ss(s)?.trim();return c&&c===ss(n)?.trim()?o:null}function yj(e,t,n,r){let i=tu(t),a=i.message,o=tu(a),s=U(a,i);if(!s)return;let c=dg(e,{agentId:gj(e)}),l=!!(s.role===`assistant`&&s.sequence!==null&&s.runId&&r.kind===`live`&&r.activeRunId&&s.runId!==r.activeRunId),u=s.runId===i.runId?s.runId:null,d=s.role===`assistant`&&s.id&&!s.isImported&&(u||!s.runId&&n!==!0)?vj(e,r,a,c,u):null,f=Ra(s.role)===`tool`&&s.id&&s.sequence!==null&&!s.isImported&&u&&Array.isArray(o.content)&&o.content.some(e=>{let t=tu(e);return t.type===`image`&&typeof t.artifactId==`string`&&t.artifactId.trim()})?vj(e,r,a,c,u):null;if(r.kind===`live`&&s.role!==`user`&&!l&&!d&&!f||s.isImported&&!s.externalSource&&Ii(a)===null||!s.id&&!s.idempotencyKey&&s.sequence===null)return;let p=tu(o.__openclaw),m={...o,__openclaw:{...p,...s.id?{id:s.id}:{},...s.idempotencyKey?{idempotencyKey:s.idempotencyKey}:{},...s.sequence===null?{}:{seq:s.sequence},...u?{runId:u}:{}}},h=Dg(e,{type:`messagePersisted`,message:m,envelope:d?{...i,runId:d}:i},{scope:c,runActive:n});s.role===`assistant`&&h.messages.includes(m)&&(sA(e,m),d&&n===!1&&(e.chatStream=null,e.chatStreamStartedAt=null,Lk(e,d)),rA(e));let g=ex(m),_=e.chatRunId,v=g?nx(h.messages,g):null;s.role===`user`&&(n===!0||n===void 0&&_===g)&&s.runId&&g&&(!_||_===g||_===s.runId)&&v?.runId===s.runId&&rx(e)!==s.runId&&(e.chatRunId=g,gx(e,{runId:g,boundaryRunId:s.runId}))}function bj(){return(bj=e((()=>{wi(),ds(),Oo(),_j(),jg(),_x(),$k(),dA()})))()}async function xj(e,t,n,r,i,a,o,s,c,l){let u=g_(e,t,n,i,a),d=()=>e.sessions===r&&v_(e,u),f=()=>{let t=e.chatRunId,n=e.currentSessionId,r=e.chatRunLifecycleGeneration??0;return d()&&t&&n?{runId:t,sessionId:n,isCurrent:()=>d()&&e.chatRunId===t&&(e.chatRunLifecycleGeneration??0)===r&&e.currentSessionId===n}:void 0},p=cj(),m=e.chatMessages,h=ij(e,i,a),g=e.chatHistoryPagination,_=e.currentSessionId??null,v=e.chatDisplayedLeafEntryId,y=e.chatRunId,b=(t,n={})=>fj(e,`control-ui.chat.history`,{phase:t,durationMs:lj(cj()-p),sessionKey:e.sessionKey,activeRunId:e.chatRunId,requestSessionKey:i,requestAgentId:a,previousRunId:y,...n},{console:!1,maxBufferedEventsForType:30});b(`start`,{method:o}),e.resetChatInputHistoryNavigation?.(),e.chatLoading=!0;let x=n=>yk(r,t,`${l}${n===void 0?`page`:`cursor:${n}`}`,o,i,a,e,{isCurrent:d,captureRun:f,onRetry:()=>{d()&&a_(e,`history`,!0)}},n,c);try{let n=i_(e),r=n.subscriptionReady;for(;r;){let t=await r;if(!d())return;if(r===n.subscriptionReady){if(!t){n.subscriptionError&&(d_(e,{phase:`failed`,sessionKey:i,requestAgentId:a,startup:o===`chat.startup`,message:n.subscriptionError,retryable:n.historyLoad.phase===`failed`&&n.historyLoad.retryable}),e.requestUpdate?.());return}break}r=n.subscriptionReady}Z(e,null);let l=await x(s);if(!d()){b(`stale`,{reason:`apply-version`});return}if(ck(l)&&l.kind===`reset`&&(mk(e,i,a),l=await x(),!d())){b(`stale`,{reason:`reset-fallback-version`});return}if(ck(l)&&l.kind===`delta`){let t=ij(e,i,a),n=e.chatRunId?e.chatStream:null,r=Ll(l.sessionInfo);for(let t of l.messages)yj(e,t,r,{kind:`history-delta`});let o=pg(e);return Object.hasOwn(l.sessionInfo,`activeLeafEntryId`)&&(e.chatDisplayedLeafEntryId=l.sessionInfo.activeLeafEntryId?.trim()||null),e.currentSessionId=l.sessionInfo.sessionId?.trim()||_,yg(e,{...o,scope:{...o.scope,...dg(e)}}),Hg(e,l.pendingInputs,{queriedRunIds:c,receipts:!_||_===e.currentSessionId?l.inputReceipts:void 0}),e.chatThinkingLevel=l.sessionInfo.thinkingLevel??null,e.chatQueueModeOverride=l.sessionInfo.queueMode,e.chatEffectiveQueueMode=l.sessionInfo.effectiveQueueMode,oj({state:e,run:l.inFlightRun,sessionInfo:l.sessionInfo,historyRun:l.observation.run,previousRunProjections:h,runProjectionsBeforeApply:t,currentRunProjections:o.runs,resetStream:!e.chatRunId||e.chatRunId===y,activeStreamBeforeReset:n}),pk(e,l.deltaCursor??null),b(`applied`,{messageCount:l.messages.length,visibleMessageCount:l.messages.length,resetStream:!1}),{messages:e.chatMessages,deltaCursor:l.deltaCursor,pendingInputs:l.pendingInputs,inputReceipts:l.inputReceipts,sessionInfo:l.sessionInfo,...l.inFlightRun?{inFlightRun:l.inFlightRun}:{},...l.metadata?{metadata:l.metadata}:{},observation:l.observation}}if(ck(l))throw Error(`chat history page request returned a cursor reset`);let u=l,f=ij(e,i,a),p=Array.isArray(u.messages)?u.messages:[],S=lk(u),C=uk(u),w=Qs(p),ee=hh({host:e,previousMessages:m,sessionKey:i,visibleMessages:w}),te=Object.hasOwn(u.sessionInfo??{},`activeLeafEntryId`)?u.sessionInfo?.activeLeafEntryId?.trim()||null:v??null,ne=fk({nextMessages:w,nextPagination:S,nextSessionId:C,previousMessages:u.windowReset!==!0&&(!_||!C||_===C)&&(v===void 0||v===te)?ee:[],previousPagination:g,previousSessionId:_}),T=ne?.messages??w,re=dg(e,{sessionKey:i,agentId:a,sessionId:C,...Object.hasOwn(u.sessionInfo??{},`activeLeafEntryId`)?{activeLeafEntryId:te}:{}});e.chatSubmissions?.observeInitialSession(i,t,C);let ie=Dg(e,{type:`snapshotLoaded`,messages:T,options:{shouldIncludeMessage:dc}},{scope:re,runActive:u.sessionInfo&&(typeof u.sessionInfo.hasActiveRun==`boolean`||u.sessionInfo.status!==void 0)?Ll(u.sessionInfo):void 0});Object.hasOwn(u.sessionInfo??{},`activeLeafEntryId`)&&(e.chatDisplayedLeafEntryId=te),e.chatHistoryPagination=ne?.pagination??S,e.currentSessionId=C,Hg(e,u.pendingInputs,{queriedRunIds:c,receipts:!_||_===C?u.inputReceipts:void 0}),pk(e,u.deltaCursor??null),e.reconnectResumeSessionId&&e.reconnectResumeSessionId!==e.currentSessionId&&(e.reconnectResumeSessionId=null),e.chatThinkingLevel=u.sessionInfo?.thinkingLevel??u.thinkingLevel??null,e.chatVerboseLevel=u.verboseLevel??null,e.chatQueueModeOverride=u.sessionInfo?.queueMode,e.chatEffectiveQueueMode=u.sessionInfo?.effectiveQueueMode;let E=e.chatRunId?e.chatStream:null,ae=!e.chatRunId||e.chatRunId===y;if(ae){let t={persistCommentary:e.chatRunId?!0:QA(e),isHiddenAssistantMessage:ls,isHiddenStreamText:Ls},n=Jk(e,t),r=qk(e.chatMessages,e,t);cA(e.chatMessages,e,t);let i=e.toolStreamOrder??[];e.chatRunId&&(n||i.length>0)&&(e.chatRunStartup?.state!==`status`||e.chatRunStartup.phase!==`retrying`)&&Ak(e,{state:`activity`,runId:e.chatRunId});let a=Oh(e.chatMessages,e),o=i.length>0&&i.every(e=>a.has(e)),s=a.size>0,c=i.length===0||o;!n||r?(e.chatRunId&&r&&gx(e,{runId:e.chatRunId,persisted:!0}),c?Ik(e,{preserveStreamSegments:e.chatRunId!==null}):lA(e,a),e.chatRunId||(e.chatStream=null,e.chatStreamStartedAt=null),b(`stream-reset`,{messageCount:p.length,visibleMessageCount:w.length})):e.chatRunId?s&&(bg(e,ZA(e.chatMessages,e,{includeCurrent:!1,requirePersistedTool:!o,persistCommentary:!0})),Wk(e,t.isHiddenStreamText)||(e.chatStreamStartedAt=null),cA(e.chatMessages,e,t),o?Ik(e,{preserveStreamSegments:!0}):lA(e,a)):(bg(e,ZA(e.chatMessages,e)),Ik(e),e.chatStream=null,e.chatStreamStartedAt=null)}return oj({state:e,run:u.inFlightRun,sessionInfo:u.sessionInfo,historyRun:u.observation.run,previousRunProjections:h,runProjectionsBeforeApply:f,currentRunProjections:ie.runs,resetStream:ae,activeStreamBeforeReset:E}),b(`applied`,{messageCount:p.length,visibleMessageCount:w.length,resetStream:ae}),u}catch(t){if(!d()){b(`stale`,{reason:`error-version`});return}b(`error`);let n=Ze(t);n&&(y_(e,a),e.chatThinkingLevel=null,e.chatVerboseLevel=null),d_(e,{phase:`failed`,sessionKey:i,requestAgentId:a,startup:o===`chat.startup`,message:n?Yt(`existing chat history`):ak(t),retryable:ik(t,o)||t instanceof Zn&&t.retryable}),e.requestUpdate?.()}finally{__(e,u)&&(a_(e,`history`,!1),e.chatLoading=!1)}}function Sj(){return(Sj=e((()=>{tr(),wc(),oe(),kk(),sk(),hk(),S_(),sj(),Kg(),Fk(),jg(),hj(),bj(),_x(),$k(),dA(),xh(),Ah()})))()}async function Cj(e,t={}){let n=e.sessionKey,r=D(e,n)?k(e):void 0,i=t.startup===!0,a=e.chatSubmissions?.creation?.sessionKey===n||e.hasPendingInitialTurn?.(n),o=i_(e);if(!e.client||!e.connected){d_(e,{phase:`pending-connection`,sessionKey:n,requestAgentId:r,startup:i}),e.chatLoading=!0,e.requestUpdate?.();return}let s=i?`chat.startup`:`chat.history`,c=e.client,l=e.sessions,u=e.connectionEpoch,d=i?l_(e):void 0;if(d){let i=o.historyVersion;if(e.chatLoading=!0,e.requestUpdate?.(),!await d||!e.connected||e.client!==c||e.sessions!==l||e.connectionEpoch!==u||!at(e.sessionKey,n)||D(e,n)&&k(e)!==r)return;if(n=e.sessionKey,o.historyVersion!==i){let e=o.historyLoad;if(e.phase===`idle`)return;if(e.phase===`in-flight`&&t.supersedeInFlight!==!0&&e.startup&&e.client===c&&e.sessions===l&&e.connectionEpoch===u&&e.sessionKey===n&&e.requestAgentId===r)return e.promise}}let f=A_(e),p=f===void 0?`page`:`cursor:${f}`,m=Rg(e),h=JSON.stringify([u,s,n,r??``,80,m]),g=`${h}${p}`,_=o.historyLoad;if(_.phase===`in-flight`&&_.sessionKey===n&&_.requestAgentId===r&&_.client===c&&_.sessions===l&&_.connectionEpoch===u){if(_.refresh)return _.refresh.startup||=i,_.refresh.deferBranches&&=t.deferBranches===!0,_.refresh.promise;if(t.supersedeInFlight!==!0&&_.key===g)return _.promise;let a=++o.historyVersion,s={startup:i||_.startup,deferBranches:t.deferBranches===!0,promise:Promise.resolve(void 0)};return s.promise=_.promise.then(()=>{if(!(o.historyVersion!==a||!e.connected||e.client!==c||e.sessions!==l||e.connectionEpoch!==u||e.sessionKey!==n||D(e,n)&&k(e)!==r))return Cj(e,s)}),_.refresh=s,s.promise}let v=xj(e,c,u,l,n,r,s,f,m,h).then(s=>{let d=o.historyLoad;return d.phase===`in-flight`&&d.promise===v&&(s?(t.deferBranches!==!0&&(!at(e.chatBranchesSessionKey,n)||e.chatBranchesConnectionEpoch!==u)&&GO(e),d_(e,{phase:`committed`,sessions:l,client:c,connectionEpoch:u,sessionKey:n,requestAgentId:r,sessionInfo:s.sessionInfo,sessionId:uk(s)??(a?void 0:null)})):e.sessionKey===n&&(!D(e,n)||k(e)===r)&&(!e.connected||d.client!==e.client||d.sessions!==e.sessions||d.connectionEpoch!==e.connectionEpoch)?(d_(e,{phase:`pending-connection`,sessionKey:n,requestAgentId:r,startup:i}),e.chatLoading=!0):(d_(e,{phase:`idle`}),e.chatLoading=!1),e.requestUpdate?.()),s});return d_(e,{phase:`in-flight`,sessions:l,client:c,connectionEpoch:u,key:g,promise:v,sessionKey:n,requestAgentId:r,startup:i}),v}function wj(e){let t=f_(e);if(t.phase===`pending-connection`||t.phase===`failed`&&t.retryable)return Cj(e,{startup:t.startup,deferBranches:!0})}function Tj(e,t,n){if(!t||e.client!==n||!e.connected)return;e.agentsList=t,e.agentsError=null;let r=typeof e.agentsSelectedId==`string`&&e.agentsSelectedId.trim()?Ql(e.agentsSelectedId):void 0;r&&t.agents.some(e=>Ql(e.id)===r)||(e.agentsSelectedId=typeof t.defaultId==`string`&&t.defaultId.trim()?t.defaultId:t.agents[0]?.id??null)}function Ej(){return(Ej=e((()=>{O(),qO(),Sj(),kk(),hk(),S_(),Kg(),$_()})))()}function Dj(e){return ir({signal:e.signal,value:!1},({render:t,finish:n})=>{let r=!1,i=``,a=()=>!e.signal.aborted&&e.isCurrent(),o=()=>R` <openclaw-modal-dialog
label=${M(`chat.privateDraftReload.title`)}
description=${M(`chat.privateDraftReload.description`)}
@modal-cancel=${()=>n(!1)}
>
<section class="exec-approval-card">
<div class="exec-approval-header">
<div>
<div class="exec-approval-title">${M(`chat.privateDraftReload.title`)}</div>
<div class="exec-approval-sub">${M(`chat.privateDraftReload.description`)}</div>
</div>
</div>
${e.text?R`
<label class="field"
><span>${M(`chat.privateDraftReload.text`)}</span>
<textarea readonly rows="6" .value=${e.text}></textarea>
</label>
<button
type="button"
class="btn"
@click=${async()=>{if(!a()){n(!1);return}r=await nt(e.text,a),a()&&(i=r?``:M(`chat.privateDraftReload.copyFailed`),t(o))}}
>
${M(r?`common.copied`:`chat.privateDraftReload.copy`)}
</button>
`:z}
${e.hasGoal?R`<p>${M(`chat.privateDraftReload.goal`)}</p>`:z}
${e.pendingReads?R`<p>${M(`chat.privateDraftReload.reading`)}</p>`:z}
${e.attachments.map(e=>R`
<div class="field">
<span>${e.fileName??e.mimeType}</span>
<button
type="button"
class="btn"
@click=${()=>{if(!a()){n(!1);return}let r=kf(e);r?ac(e.fileName??`attachment`,r):(i=M(`chat.privateDraftReload.attachmentUnavailable`),t(o))}}
>
${M(`chat.privateDraftReload.download`,{name:e.fileName??e.mimeType})}
</button>
</div>
`)}
${i?R`<p role="alert">${i}</p>`:z}
<div class="exec-approval-actions">
<button type="button" class="btn danger" @click=${()=>n(a())}>
${M(`chat.privateDraftReload.discard`)}
</button>
<button type="button" class="btn" autofocus @click=${()=>n(!1)}>
${M(`chat.privateDraftReload.keep`)}
</button>
</div>
</section>
</openclaw-modal-dialog>`;t(o)})}function Oj(){return(Oj=e((()=>{B(),dr(),b(),$e(),J()})))()}function kj(e,t,n){let r=ee.get(e);!r&&n&&(r=new Map,ee.set(e,r));let i=r?.get(t);if(!i&&n&&(i=[],r?.set(t,i)),i){let e=Date.now();fe(i,t=>t.expiresAt<=e)}return i}function Aj(e,t,n,r){let i=kj(e,t,!0);fe(i,e=>at(e.sessionKey,n));let a=e.gateway.snapshot.client,o=Nn(e.gateway,{gatewayUrl:e.gateway.connection.gatewayUrl,recoveryScope:a?.recoveryScope||void 0}),s={sessionKey:n,value:{...r},isCurrent:()=>e.gateway.snapshot.client===a&&o(),expiresAt:Date.now()+Ve};for(i.push(s),globalThis.setTimeout(()=>{kj(e,t,!1)},Ve);i.length>Vj;)i.shift()}function jj(e,t,n){let r=kj(e,t,!1),i=r?.findIndex(e=>e.isCurrent()&&at(e.sessionKey,n));return!r||i===void 0||i<0?null:r.splice(i,1)[0].value}function Mj(e,t,n){fe(kj(e,t,!1),e=>at(e.sessionKey,n))}function Nj(e,t){let n=ee.get(e);n&&n.get(t)&&(n.delete(t),n.size===0&&ee.delete(e))}function Pj(e,t){let n=K(e);if(!n)return null;for(let e of t){let t=n[e];if(typeof t==`string`&&t.trim())return t.trim()}return null}function Fj(e){let t=K(e)?.result;if(t===void 0)return null;try{return JSON.stringify(t)||null}catch{return null}}function Ij(e,t){return/^[a-z0-9]$/iu.test(t)&&e.matches(`wa-dropdown, [data-chat-autotype-shortcuts][open]`)&&e.querySelector(`[data-shortcut="${t.toLowerCase()}"]:not([disabled])`)!==null}function Lj(e){return e.composedPath().some(t=>t instanceof HTMLElement&&(t.matches(Kj)||Ij(t,e.key)||e.key===` `&&t.matches(qj)))}function Rj(e,t){return[...(e instanceof Element?e.closest(`openclaw-app`)??e:e).querySelectorAll(`wa-dropdown`)].some(e=>e.open===!0&&!e.closest(`[inert]`)&&(Jj.has(t)||Ij(e,t)))}function zj(e,t=[]){let n=!1;return e.querySelectorAll(Wj).forEach(e=>{t.includes(e)||(e.open=!1,n=!0)}),n}function Bj(e,t){if(t.defaultPrevented||t.isComposing||t.metaKey||t.ctrlKey||t.altKey||Rj(e,t.key)||t.key.length!==1||Lj(t)||document.openClawModalLayers?.size||document.querySelector(`dialog[open], [aria-modal='true']`))return;let n=e.querySelector(Gj);!n||n.disabled||n.readOnly||(n.focus({preventScroll:!0}),t.stopImmediatePropagation())}var Vj,Hj,Uj,Wj,Gj,Kj,qj,Jj,Yj,Xj,Zj;function Qj(){return(Qj=e((()=>{Gn(),O(),Xe(),Vj=4,Hj=1200,Uj=new Set([`ArrowUp`,`PageUp`,`Home`]),Wj=`.chat-controls__inline-select[open], .context-usage details[open], .agent-chat__attach-menu[open], .chat-pr__checks[open]`,Gj=`.agent-chat__composer-combobox > textarea`,Kj=`input, textarea, select, [contenteditable]:not([contenteditable='false']), [role='combobox'], [role='textbox'], [data-chat-autotype-exempt]`,qj=`a[href], button, summary, [role='button'], [role='checkbox'], [role='link'], [role='listbox'], [role='menu'], [role='menuitem'], [role='menuitemcheckbox'], [role='menuitemradio'], [role='option'], [role='radio'], [role='switch'], [role='tab']`,Jj=new Set([` `,`Enter`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`ArrowUp`,`Escape`]),Yj=`Start a new session after the active run or queued messages finish.`,Xj=`Session list is still refreshing. Try New Chat again in a moment.`,Zj=`New Chat could not create a new thread. Try again in a moment.`})))()}function $j(e,t=`pasted-image`){let n=e.trim(),r=/^data:(image\/[a-z0-9.+-]+);base64,/i.exec(n),i=r?.[1]?.toLowerCase(),a=r?n.slice(r[0].length).replace(/\s+/g,``):void 0;if(!i||!a)return null;try{return{file:new File([Ne(a)],`${t}.${i.slice(6)}`,{type:i}),dataUrl:`data:${i};base64,${a}`}}catch{return null}}function eM(e){return e.type===`image/png`}async function tM(e,t){let n=new DataView(await e.slice(0,33).arrayBuffer());if(t.throwIfAborted(),n.byteLength!==33||n.getUint32(0)!==2303741511||n.getUint32(4)!==218765834||n.getUint32(8)!==13||n.getUint32(12)!==1229472850)throw Error(`Invalid PNG header`);let r=n.getUint32(16),i=n.getUint32(20);if(r===0||i===0||r*i>25e6)throw Error(`PNG dimensions exceed the resize budget`);for(let n=33;n+12<=e.size;){t.throwIfAborted();let r=new DataView(await e.slice(n,n+8).arrayBuffer());t.throwIfAborted();let i=r.getUint32(0),a=r.getUint32(4);if(i>e.size-n-12||a===1229472850)break;if(a===1633899596)throw Error(`Animated PNG cannot be resized without losing animation`);if(a===1229209940)return;n+=i+12}throw Error(`PNG image data is missing`)}async function nM(e,t,n,r){n.throwIfAborted(),await tM(e,n),r(!1);let i=rM.then(()=>(n.throwIfAborted(),r(!0),new Promise((r,i)=>{let a=new Worker(new URL(new URL(`chat-attachment-image.worker-P4E63gj9.js`,import.meta.url).href,``+import.meta.url),{type:`module`}),o=!1,s=e=>{o||(o=!0,a.terminate(),n.removeEventListener(`abort`,c),e&&!n.aborted?r(e):i(n.aborted?new DOMException(`Image preparation aborted`,`AbortError`):Error(`Image preparation failed`)))},c=()=>s(null);n.addEventListener(`abort`,c,{once:!0}),a.addEventListener(`message`,({data:e})=>s(e),{once:!0}),a.addEventListener(`error`,e=>{e.preventDefault(),s(null)},{once:!0}),a.addEventListener(`messageerror`,()=>s(null),{once:!0});try{a.postMessage({file:e,maxBytes:t},[])}catch{s(null)}})));return rM=i.then(()=>{},()=>{}),i}var rM;function iM(){return(iM=e((()=>{rM=Promise.resolve()})))()}function aM(e){if(!e?.attachments)return;let t=pM.get(e);return t||(t={...e.attachments,maxBatchBytes:Xd(e.maxPayload??1/0)},pM.set(e,t)),t}function oM(e,t){return M(e,{names:t.slice(0,3).map(e=>e.trim()?e:M(`chat.attachments.attachedFile`)).join(`, `),more:t.length>3?` +${t.length-3}`:``})}function sM(e,t){t.length!==0&&on({message:oM(e,t.map(e=>e.name))})}function cM(e,t,n,r={}){let i=[],a=[],o=[],s=n;for(let n of e){let e=lM(n.size,n.type,t);n.size===0?a.push(n):t&&(n.size>e&&!(r.resizeImages&&eM(n))||s+e>t.maxBatchBytes)?o.push(n):(i.push(n),s+=e)}return sM(`chat.attachments.readFailed`,a),sM(`chat.attachments.tooLarge`,o),i}function lM(e,t,n){let r=t.startsWith(`image/`)?n?.maxImageBytes:n?.maxBytes;return Math.min(e,r??1/0)}function uM(e){let t=e.sizeBytes;if(typeof t==`number`&&Number.isFinite(t)&&t>=0)return t;let n=Ef(e)?.match(/^data:[^,]*;base64,([\s\S]*)$/i)?.[1]?.replace(/\s/g,``);return n?Math.max(0,Math.floor(n.length*3/4)-(n.match(/=+$/)?.[0].length??0)):0}function dM(e){return e.reduce((e,t)=>e+uM(t),0)}function fM(e,t){let n=aM(t);if(!n)return;let r=0,i=e.filter(e=>{let t=uM(e);return t>(e.mimeType.startsWith(`image/`)?n.maxImageBytes:n.maxBytes)||r+t>n.maxBatchBytes||(r+=t,!1)});return i.length>0?oM(`chat.attachments.tooLarge`,i.map(e=>e.fileName??``)):void 0}var pM;function mM(){return(mM=e((()=>{qd(),b(),Ft(),J(),iM(),pM=new WeakMap})))()}function hM(e,t,n,r){let i=r.readSignal??n.readSignal;if(i.aborted){n.remove(t);return}let a=new FileReader,o=e,s=new AbortController,c=!1,l,u=e=>{d(e);try{a.abort()}catch{}},d=e=>{if(!c){if(c=!0,s.abort(),clearTimeout(l),l=void 0,i.removeEventListener(`abort`,f),t.cancel=void 0,e===`ready`&&!_t(r.uploadConfig))on({message:xt()}),n.settle(t,`error`);else if(e===`ready`&&typeof a.result==`string`&&!i.aborted){let e=Tf({attachment:t.attachment,dataUrl:a.result,file:o}),r=[...t.destination.getAttachments(),e],i=new Set(r.map(({id:e})=>e));t.destination.onAttachmentsChange(n.project(r).filter(({attachment:e})=>i.has(e.id)).map(({attachment:e})=>e)),n.settle(t,`ready`)}else e===`aborted`||i.aborted?n.remove(t):n.settle(t,`error`);t.destination.onPendingReadsChange?.(-1)}},f=()=>u(`aborted`),p=()=>u(`error`),m=e=>{clearTimeout(l),l=e&&!c?setTimeout(p,gM):void 0};t.cancel=f,i.addEventListener(`abort`,f,{once:!0}),a.addEventListener(`error`,()=>d(`error`),{once:!0}),a.addEventListener(`abort`,()=>d(`aborted`),{once:!0}),a.addEventListener(`load`,()=>d(`ready`),{once:!0}),a.addEventListener(`progress`,e=>{!c&&e.lengthComputable&&e.total>0&&(n.updateProgress(t,Math.min(1,Math.max(0,e.loaded/e.total))),l!==void 0&&m(!0))}),t.destination.onPendingReadsChange?.(1),m(!0);let h=e=>{if(!c){if(cM([e],r.attachmentLimits,0).length===0){d(`error`);return}o=e,t.attachment={...t.attachment,mimeType:e.type||`application/octet-stream`,sizeBytes:e.size},m(!0);try{a.readAsDataURL(e)}catch{d(`error`)}}},g=r.attachmentLimits?.maxImageBytes;g!==void 0&&e.type.startsWith(`image/`)&&e.size>g?nM(e,g,s.signal,m).then(h,()=>d(`error`)):h(e)}var gM,_M;function vM(){return(vM=e((()=>{Ft(),It(),J(),mM(),iM(),gM=15e3,_M=class{constructor(e){this.notify=e,this.pendingReads=0,this.controller=new AbortController,this.entries=[]}retarget(e,t){this.notify=t;for(let t of this.entries)t.destination&&=e}get readSignal(){return this.controller.signal}pendingBytes(e){return this.entries.reduce((t,n)=>t+(n.state===`reading`?lM(n.attachment.sizeBytes??0,n.attachment.mimeType,e):0),0)}updatePending(e,t){this.controller.signal===e&&(this.pendingReads=Math.max(0,this.pendingReads+t),this.notify())}begin(e,t,n){this.project(t);let r=e.map(e=>({attachment:{id:Nf(),origin:`file`,mimeType:e.type||`application/octet-stream`,fileName:e.name||void 0,sizeBytes:e.size},state:`reading`,destination:n}));return this.entries.push(...r),this.notify(),r}project(e){let t=new Map(e.map(e=>[e.id,e]));this.entries=this.entries.filter(e=>{let n=t.get(e.attachment.id);return n&&(e.attachment=n,t.delete(n.id)),e.state!==`ready`||n!==void 0});for(let e of t.values())this.entries.push({attachment:e,state:`ready`});return this.entries}settle(e,t){this.entries.includes(e)&&(e.state=t,e.cancel=void 0,this.notify())}updateProgress(e,t){this.entries.includes(e)&&e.state===`reading`&&(e.progress=t,this.notify())}remove(e){this.entries=this.entries.filter(t=>t!==e),e.cancel?.(),e.cancel=void 0,this.notify()}abortReads(){let e=this.controller;this.controller=new AbortController,this.entries=[],this.pendingReads=0,e.abort(),this.notify()}}})))()}function yM(e){return`data:text/plain;base64,${p(new TextEncoder().encode(e))}`}function bM(){return(bM=e((()=>{})))()}function xM(e){return e.getAttachments?.()??e.attachments??[]}function SM(e){let t=/^data:([^,]*),(.*)$/s.exec(e);if(!t)return null;let n=t[1],r=t[2];if(n===void 0||r===void 0)return null;if(n.toLowerCase().includes(`;base64`))try{return new TextDecoder().decode(Ne(r))}catch{return null}try{return decodeURIComponent(r.replace(/\+/g,`%20`))}catch{return null}}function CM(e,t){return e.trim()?`${e.replace(/\s+$/u,``)}\n\n${t}`:t}function wM(e,t){let n=Ef(e),r=n?SM(n):null;if(!r||!t.onDraftChange)return;let i=xM(t).filter(t=>t.id!==e.id);en(e.id),t.onAttachmentsChange?.(i),t.onDraftChange(CM(t.getDraft?.()??t.draft??``,r)),t.onRequestUpdate?.()}function TM(e,t){let n=()=>t.readSignal?.aborted?void 0:xM(t).find(t=>t.id===e.id),r=e.fileName?.trim()?M(`chat.composer.removeNamedAttachment`,{name:e.fileName}):M(`chat.composer.removeAttachment`),i=()=>{if(!n()||t.disabled)return;let r=xM(t).filter(t=>t.id!==e.id);en(e.id),t.onAttachmentsChange?.(r)},a=()=>R`<button
class="chat-attachment-text-action"
type="button"
?disabled=${t.disabled}
@click=${()=>{let e=n();e&&!t.disabled&&wM(e,t)}}
>
${M(`chat.attachments.showInTextField`)}
</button>`;return R`<openclaw-chat-pasted-text
.src=${Ef(e)}
.sizeBytes=${e.sizeBytes}
.scope=${e.id}
.onOpen=${()=>{n()&&t.onOpenSidebar?.({kind:`attachment`,attachmentKind:`document`,title:e.fileName??M(`chat.attachments.pastedText`),mimeType:`text/plain`,plainText:!0,sourceIdentity:e.id,resolveSource:()=>{let e=n();if(!e)return{status:`unavailable`};let t=Af(e);return t?{status:`ready`,src:t,sizeBytes:e.sizeBytes}:{status:`unavailable`}},renderActions:()=>R`${a()}
<button
class="btn btn--sm"
type="button"
aria-label=${r}
?disabled=${t.disabled}
@click=${i}
>
${F.trash}
</button>`})}}
.composerAction=${a()}
.composerRemoveAction=${R`<openclaw-tooltip .content=${r}>
<button
class="chat-attachment-remove"
type="button"
aria-label=${r}
?disabled=${t.disabled}
@click=${i}
>
${F.x}
</button>
</openclaw-tooltip>`}
></openclaw-chat-pasted-text>`}function EM(){return(EM=e((()=>{B(),I(),b(),J()})))()}function DM(e){let t=e.attachments?.filter(e=>e.selectionAnnotation)??[],n=(e,t,n)=>{e.currentTarget?.dispatchEvent(new CustomEvent(`openclaw-comment-action`,{bubbles:!0,composed:!0,detail:{id:t,action:n}}))};return t.length?Cw(t.length,R`<ol class="chat-comment-preview__list" role="list">
${t.map((t,r)=>Sw(t.selectionAnnotation,R`<span class="chat-comment-preview__actions">
<button
type="button"
aria-label=${M(`chat.messages.editAnnotation`,{number:String(r+1)})}
?disabled=${e.disabled||e.readSignal?.aborted}
@click=${e=>n(e,t.id,`edit`)}
>
${F.pencil}
</button>
<button
type="button"
data-comment-delete=${t.id}
aria-label=${M(`chat.messages.deleteAnnotation`)}
?disabled=${e.disabled||e.readSignal?.aborted}
@click=${e=>n(e,t.id,`delete`)}
>
${F.trash}
</button>
</span>`))}
</ol>`,void 0,!0,{onRemove:e=>n(e,void 0,`delete-all`),disabled:!!(e.disabled||e.readSignal?.aborted)}):z}function OM(){return(OM=e((()=>{B(),I(),b(),ns(),ww(),fc()})))()}function kM(e){return Array.from(e?.types??[]).includes(`Files`)}function AM(e){let t=e.target;if(!(t instanceof Element))return!1;let n=t.closest(`textarea, input, [contenteditable]`);return n instanceof HTMLInputElement?JM.has(n.type)&&!n.disabled&&!n.readOnly:n instanceof HTMLTextAreaElement?!n.disabled&&!n.readOnly:n instanceof HTMLElement&&n.isContentEditable}function jM(e){return e.getAttachments?.()??e.attachments??[]}function MM(e,t=jM(e)){return dM(t)+(e.attachmentReads?.pendingBytes(e.attachmentLimits)??0)}function NM(e,t,n=`file`){return Tf({attachment:{id:Nf(),origin:n,mimeType:e.type||`application/octet-stream`,fileName:e.name||void 0,sizeBytes:e.size},dataUrl:t,file:e})}function PM(e,t){if(!t.onAttachmentsChange||!_t(t.uploadConfig))return;let n=e.clipboardData?.getData(`text/plain`);if(!n||n.length<=GM)return;e.preventDefault();let r=new File([n],`${qM}${Date.now()}.txt`,{type:KM}),i=MM(t);if(cM([r],t.attachmentLimits,i).length===0)return;let a=NM(r,yM(n),`paste`);t.onAttachmentsChange([...jM(t),a])}function FM(e){let t=Array.from(e?.items??[]).filter(e=>e.type.startsWith(`image/`)).map(e=>e.getAsFile()).filter(e=>e!==null),n=t.length===0?e?.getData(`text/plain`):void 0,r=n?$j(n):null;return r?{files:[r.file],inline:r}:{files:t}}function IM(e,t,n,r){let i=$j(e,t.replace(/\.[a-z0-9]+$/i,``)||`image`);return!i||cM([i.file],n,r).length===0?null:NM(i.file,i.dataUrl)}function LM(e,t){if(!t.onAttachmentsChange||e.length===0||t.readSignal?.aborted)return 0;if(!_t(t.uploadConfig))return on({message:xt()}),0;let n=t.imagesOnly?e.filter(e=>!e.type.startsWith(`image/`)):[];n.length&&on({message:M(`chat.attachments.imagesOnly`)});let r=MM(t),i=cM(e.filter(e=>!n.includes(e)),t.attachmentLimits,r,{resizeImages:!0});if(i.length===0)return 0;let a=t.attachmentReads??new _M(()=>t.onRequestUpdate?.());return a.begin(i,jM(t),{getAttachments:()=>jM(t),onAttachmentsChange:t.onAttachmentsChange,onPendingReadsChange:t.onPendingReadsChange}).forEach((e,n)=>{let r=i[n];r&&hM(r,e,a,t)}),i.length}function RM(e,t,n={}){if(!e.clipboardData||!t.onAttachmentsChange)return;if(!_t(t.uploadConfig)){let t=Array.from(e.clipboardData.items??[]).some(e=>e.kind===`file`||e.type.startsWith(`image/`)),n=/^data:image\//i.test(e.clipboardData.getData(`text/plain`).trim());(t||n)&&(e.preventDefault(),on({message:xt()}));return}let{files:r,inline:i}=FM(e.clipboardData);if(r.length===0){n.imagesOnly||PM(e,t);return}if(e.preventDefault(),i&&(!t.attachmentLimits||i.file.size<=t.attachmentLimits.maxImageBytes)){let e=MM(t);if(cM([i.file],t.attachmentLimits,e).length===0)return;t.onAttachmentsChange([...jM(t),NM(i.file,i.dataUrl)]);return}LM(r,t)}function zM(e){let t=0,n=(n,r)=>{kM(n.dataTransfer)&&n.stopPropagation();let i=n.currentTarget;if(i instanceof HTMLElement){if(r){if(!e.canCompose||!_t(e.uploadConfig)||!kM(n.dataTransfer))return;t+=1}else t=Math.max(0,t-1);i.toggleAttribute(`data-attachment-drop-active`,t>0)}},r=e=>{t=0;let n=e.currentTarget;n instanceof HTMLElement&&n.removeAttribute(`data-attachment-drop-active`)};return{onDragenter:e=>n(e,!0),onDragleave:e=>n(e,!1),onDragover:t=>{if(!kM(t.dataTransfer)){AM(t)||(t.preventDefault(),t.dataTransfer&&(t.dataTransfer.dropEffect=`none`));return}t.preventDefault(),t.stopPropagation(),t.dataTransfer&&(t.dataTransfer.dropEffect=e.canCompose&&_t(e.uploadConfig)?`copy`:`none`)},onDrop:t=>{if(!kM(t.dataTransfer)){AM(t)||t.preventDefault();return}t.preventDefault(),t.stopPropagation(),r(t),e.canCompose&&LM([...t.dataTransfer?.files??[]],e)}}}function BM(e,t){if(t.onRemoveAttachment){t.onRemoveAttachment(e);return}let n=jM(t).filter(t=>t.id!==e.id);en(e.id),t.onAttachmentsChange?.(n)}function VM(e,t,n,r){let i=Af(e);return i?r.onOpenImage?R`
<button
type="button"
class="chat-message-image-button chat-attachment-image-button"
aria-label=${M(`chat.imageLightbox.open`,{title:n})}
@click=${()=>r.onOpenImage?.({src:i,title:n})}
>
<img src=${i} alt=${t} />
</button>
`:R`<img src=${i} alt=${t} />`:z}function HM(e,t,n){let r=t.title.trim()||t.displayUrl.trim()||e.fileName||M(`chat.attachments.attachedFile`),i=M(t.markedRegionCount===1?`chat.composer.browserAnnotationRegion`:`chat.composer.browserAnnotationRegions`,{count:String(t.markedRegionCount)}),a=M(`chat.composer.removeBrowserAnnotation`,{name:r});return R`
<div
class="chat-attachment-thumb chat-attachment-thumb--browser-annotation"
data-attachment-id=${e.id}
role="group"
aria-label=${`${M(`chat.composer.browserAnnotation`)}: ${r}`}
>
<div class="chat-browser-annotation-card__preview">
${VM(e,M(`chat.composer.browserAnnotationPreview`),r,n)}
</div>
<div class="chat-attachment-file__body chat-browser-annotation-card__body">
<span
class="chat-attachment-file__name chat-browser-annotation-card__identity"
title=${r}
>${r}</span
>
<span class="chat-attachment-file__meta chat-browser-annotation-card__meta">
<span>${i}</span>
</span>
</div>
<openclaw-tooltip .content=${a}>
<button
class="chat-attachment-remove chat-browser-annotation-card__remove"
type="button"
aria-label=${a}
?disabled=${n.disabled}
@click=${()=>BM(e,n)}
>
${F.x}
</button>
</openclaw-tooltip>
</div>
`}function UM(e){return R`<div
class="chat-attachments-status sr-only"
role="status"
aria-live="polite"
aria-atomic="true"
>
${e>0?M(e===1?`chat.composer.preparingAttachmentCount`:`chat.composer.preparingAttachmentsCount`,{count:String(e)}):z}
</div>`}function WM(e){let t=e.attachments??[],n=e.attachmentReads?.project(t)??t.map(e=>({attachment:e,state:`ready`}));return n.length===0?z:R`
<div class="chat-attachments-preview" ${od(!0)}>
${DM(e)}
${Rr(n.filter(({attachment:e})=>!e.selectionAnnotation),({attachment:e})=>e.id,t=>{let n=t.attachment,r=t.state===`reading`,i=t.state===`error`,a=M(`chat.attachments.readFailed`,{names:n.fileName??M(`chat.attachments.attachedFile`),more:``}),o=n.fileName?.trim()?M(`chat.composer.removeNamedAttachment`,{name:n.fileName}):M(`chat.composer.removeAttachment`);return n.browserAnnotation?HM(n,n.browserAnnotation,e):_w(n)?TM(n,e):R`
<div
class=${[`chat-attachment-thumb`,n.mimeType.startsWith(`image/`)?``:`chat-attachment-thumb--file`,i?`chat-attachment-thumb--error`:``].filter(Boolean).join(` `)}
aria-busy=${r?`true`:`false`}
>
${i?R`<openclaw-tooltip .content=${a}>
<span
class="chat-attachment-error"
tabindex="0"
role="img"
aria-label=${a}
>
${vS({filename:n.fileName??``,mimeType:n.mimeType,mode:`large-placeholder`,unavailable:!0})}
</span>
</openclaw-tooltip>`:r?z:n.mimeType.startsWith(`image/`)&&Af(n)?VM(n,n.fileName?.trim()||M(`chat.composer.attachmentPreview`),n.fileName?.trim()||M(`chat.imageLightbox.untitled`),e):cw(n)}
<span
class="chat-attachment-loading"
data-state=${t.state}
data-indeterminate=${r&&t.progress===void 0?`true`:`false`}
aria-hidden="true"
><span
style=${Wr({transform:t.progress===void 0?void 0:`scaleX(${t.progress})`})}
></span
></span>
<openclaw-tooltip .content=${o}>
<button
class="chat-attachment-remove"
type="button"
aria-label=${o}
?disabled=${e.disabled}
@click=${()=>{e.attachmentReads?.remove(t);let r=jM(e).filter(e=>e.id!==n.id);en(n.id),e.onAttachmentsChange?.(r)}}
>
${F.x}
</button>
</openclaw-tooltip>
</div>
`})}
</div>
`}var GM,KM,qM,JM;function YM(){return(YM=e((()=>{B(),Ur(),Gr(),I(),qu(),Dn(),Ru(),b(),Ft(),It(),J(),mM(),xS(),lw(),iM(),vM(),bM(),EM(),bw(),OM(),GM=1e3,KM=`text/plain`,qM=`pasted-text-`,JM=new Set([`email`,`number`,`password`,`search`,`tel`,`text`,`url`])})))()}function XM(e){let t=e.indexOf(`,`);if(!e.startsWith(`data:`)||t<0)return null;let[n,...r]=e.slice(5,t).split(`;`);if(!n||r.pop()!==`base64`||r.some(e=>!/^[^=]+=[\s\S]*$/.test(e)))return null;let i=e.slice(t+1);return i&&!/[\r\n\u2028\u2029]/.test(i)?{mimeType:n,content:i}:null}function ZM(e){return e?.length?e.map(e=>{let t=Ef(e),n=t?XM(t):null;if(!n)throw Error(M(`chat.sendErrors.outboxPayloadMissing`));return{type:n.mimeType.startsWith(`image/`)?`image`:`file`,mimeType:n.mimeType,fileName:e.fileName,...e.origin?{origin:e.origin}:{},content:n.content}}):void 0}function QM(){return(QM=e((()=>{b(),J()})))()}function $M(e){let t=oN.get(e)??{attempts:new Map,timers:new Map};return oN.set(e,t),t}function eN(e,t){return!t.host.connected||t.host.client!==e||t.connectionEpoch!==t.host.connectionEpoch}function tN(e){return!(e instanceof Zn)||!e.retryable?null:Math.min(Math.max(e.retryAfterMs??500,100),aN)}function nN(e,t,n,r,i){let a=e.client;if(!e.connected||!a)return;let o=$M(a);if(o.timers.has(t))return;let s=(o.attempts.get(t)??0)+1,c=i?_l({initialMs:n,maxMs:aN,factor:2,jitter:0},s):n;i?o.attempts.set(t,s):o.attempts.delete(t);let l={timer:setTimeout(()=>{o.timers.delete(t),eN(a,l)||r(l.host)},c),suppressGenericWake:i,connectionEpoch:e.connectionEpoch,host:e};o.timers.set(t,l)}function rN(e,t,n,r){let i=e.client;if(!i)return!1;let a=$M(i),o=a.timers.get(t);if(!o)return!1;let s=eN(i,o);return!s&&n&&(o.connectionEpoch=e.connectionEpoch,o.host=e),!r&&!s&&o.suppressGenericWake?!0:(clearTimeout(o.timer),a.timers.delete(t),(r||s)&&a.attempts.delete(t),!1)}function iN(e,t){let n=$M(e);n.timers.has(t)||n.attempts.delete(t)}var aN,oN;function sN(){return(sN=e((()=>{jl(),tr(),aN=3e4,oN=new WeakMap})))()}function cN(e,t,n){let r=n??E(e,t),i=P(r),a=new Set([i]);for(let t of Object.keys(e.chatComposerFallbackByScope)){let n=Xc(t);n&&e.chatComposerFallbackByScope[t]?.awaitingDefaults&&P(E(e,n.sessionKey,n.agentId))===i&&a.add(t)}let o=[...a].map(t=>({fallback:e.chatComposerFallbackByScope[t],scopeKey:t})).filter(e=>e.fallback!==void 0),s=o.toSorted((e,t)=>t.fallback.sequence-e.fallback.sequence)[0];if(!s)return{scopeKey:i};let c=s.scopeKey,l=s.fallback;if(ln(e)&&delete l.awaitingDefaults,o.length===1&&c===i)return{fallback:l,scopeKey:i};let u=l;if(c!==i&&l.draftRetry){let n=_p(e,t,r.agentId),i=gp(e,t,r.agentId);l.draftRetry.draftRevision>i&&(u={...l,draftRetry:{...l.draftRetry,expectedDraftRevision:n}})}let d={...e.chatComposerFallbackByScope};for(let e of o)delete d[e.scopeKey];return d[i]=u,Mf(o.flatMap(e=>e.fallback.attachments),[e.chatAttachments,...Object.values(d).map(e=>e.attachments)]),e.chatComposerFallbackByScope=d,{fallback:u,scopeKey:i}}function lN(e,t,n){let r=++hN;return e.chatComposerFallbackByScope={...e.chatComposerFallbackByScope,[P(t)]:{...ln(e)?{}:{awaitingDefaults:!0},...Kf(e,t)?{incognito:!0}:{},message:n.message,...n.mentions?.length?{mentions:n.mentions.map(e=>({...e}))}:{},...n.goalMode?{goalMode:n.goalMode}:{},...n.replyTarget?{replyTarget:{...n.replyTarget}}:{},attachments:[...n.attachments],storageFailed:n.draftRetry!==void 0,sequence:r,...n.draftRetry?{draftRetry:n.draftRetry}:{}}},{sequence:r}}function uN(e,t){return e.message===t.message&&JSON.stringify(e.mentions??[])===JSON.stringify(t.mentions??[])&&JSON.stringify(e.replyTarget??null)===JSON.stringify(t.replyTarget??null)&&e.attachments.length===t.attachments.length&&e.attachments.every((e,n)=>e.id===t.attachments[n]?.id)}function dN(e,t,n){let{fallback:r,scopeKey:i}=cN(e,t.sessionKey,t);if(r&&uN(r,n))return{sequence:r.sequence};if(r?.storageFailed&&!r.message.trim()&&!r.replyTarget&&r.attachments.length===0)return e.chatComposerFallbackByScope={...e.chatComposerFallbackByScope,[i]:{...r,message:n.message,mentions:n.mentions,replyTarget:n.replyTarget?{...n.replyTarget}:void 0,attachments:[...n.attachments]}},{sequence:r.sequence};if(!(r&&(r.storageFailed||r.message.trim()||r.replyTarget||r.attachments.length>0)))return lN(e,t,n)}function fN(e,t,n){let{fallback:r}=cN(e,t.sessionKey,t);return r&&uN(r,n)?{sequence:r.sequence}:void 0}function pN(e,t){return Object.values(e.chatComposerFallbackByScope).some(e=>e.sequence===t.sequence)}function mN(e,t){if(!t)return!1;let n=Object.entries(e.chatComposerFallbackByScope),r=n.filter(([,e])=>e.sequence!==t.sequence);return r.length!==n.length&&(e.chatComposerFallbackByScope=Object.fromEntries(r),!0)}var hN;function gN(){return(gN=e((()=>{Rc(),O(),J(),Jf(),jp(),hN=0})))()}function _N(e,t,n,r,i){return JSON.stringify([t,e.sessionKey,rp(n.trim(),r,void 0,i)])}function vN(e,t,n,r,i,a=`none`){return rp(e.chatMessage,e.chatAttachments,void 0,e.chatMentions,e.chatReplyTarget)===rp(t,n,void 0,r,i)?(e.chatMessage=``,e.chatMentions=[],e.chatReplyTarget=null,a!==`all`&&(e.chatAttachments=a===`annotations`?e.chatAttachments.filter(e=>e.browserAnnotation||e.selectionAnnotation):[]),HD(e),{previousAttachments:n,previousDraft:t,previousMentions:r,previousReplyTarget:i}):{}}function yN(e){return e.map(e=>{let t=Ef(e);return{...e,...t?{dataUrl:t}:{}}})}function bN(e){return`chatComposerFallbackByScope`in e&&typeof e.chatComposerFallbackByScope==`object`&&e.chatComposerFallbackByScope!==null?e:void 0}function xN(e,t,n){let r=bN(e);return{client:e.client,clientGeneration:e.client?.connectionGeneration,owner:e.captureComposerRecoveryOwner?.(),...n?.previousDraft===void 0?{}:{composer:{...n,previousDraft:n.previousDraft,previousAttachments:n.previousAttachments??[],previousGoalDraftMode:e.chatGoalDraftMode,...r?{fallbackOwnership:fN(r,t,{message:n.previousDraft,mentions:n.previousMentions,replyTarget:n.previousReplyTarget,attachments:n.previousAttachments??[]})}:{}}},connectionEpoch:e.connectionEpoch,scope:t}}function SN(e,t){return e.client===t.client&&e.connectionEpoch===t.connectionEpoch&&e.client?.connectionGeneration===t.clientGeneration}function CN(e,t){return SN(e,t)&&A(e,t.scope.sessionKey,t.scope.agentId)}function wN(e,t){let n=t.composer?.fallbackOwnership,r=t.owner?t.owner.resolveOwner():e;if(!r||!SN(e,t)||r.client!==t.client)return!1;let i=bN(r);return i?mN(i,n):!1}function TN(e,t){let n=t.composer?.fallbackOwnership,r=t.owner?t.owner.resolveOwner():e,i=r&&bN(r);return!!(n&&i&&pN(i,n))}function EN(e,t,n){let r=t.owner?.resolveOwner(),i=[];for(let t of r&&r!==e?[e,r]:[e]){i.push(t.chatAttachments);for(let e of Object.values(bN(t)?.chatComposerFallbackByScope??{}))i.push(e.attachments)}let a=t.owner?.retainedAttachmentIds(n??[]);Mf(n?.filter(e=>!a?.has(e.id))??[],i)}function DN(e,t){let n=t?.filter(e=>e.browserAnnotation||e.selectionAnnotation);return!!(n?.length&&n.length===e.chatAttachments.length&&n.every((t,n)=>t.id===e.chatAttachments[n]?.id&&t.browserAnnotation===e.chatAttachments[n]?.browserAnnotation&&t.selectionAnnotation===e.chatAttachments[n]?.selectionAnnotation))}function ON(e,t){let n=t.composer;if(!n)return!0;if(!SN(e,t))return n.previousAttachments.length===0||TN(e,t);let r=t.owner?t.owner.resolveOwner():e;if(!r)return!1;if(r.client!==t.client)return n.previousAttachments.length===0||TN(e,t);let i=bN(r);if(r.canRestoreComposer?.()===!1||!A(r,t.scope.sessionKey,t.scope.agentId)){if(!i)return n.previousAttachments.length===0;let e=dN(i,t.scope,{message:n.previousDraft,mentions:n.previousMentions,replyTarget:n.previousReplyTarget,attachments:n.previousAttachments});return n.fallbackOwnership=e,n.previousAttachments.length===0||e!==void 0}if(r.chatAttachments.length>0&&!DN(r,n.previousAttachments))return wN(e,t),n.previousAttachments.length===0;let a=AN(r,n);a.draft&&(r.chatMessage=n.previousDraft,r.chatMentions=n.previousMentions??[],r.chatReplyTarget=n.previousReplyTarget??null),a.attachments&&(r.chatAttachments=n.previousAttachments);let o=n.previousAttachments.length===0||a.attachments;return a.complete||wN(e,t),r!==e&&r.requestUpdate?.(),o}function kN(e,t,n,r){if(!n){ON(e,t)||EN(e,t,r);return}SN(e,t)&&wN(e,t),TN(e,t)||EN(e,t,r)}function AN(e,t){let n=!e.chatMessage.trim()&&!e.chatReplyTarget&&(!e.chatGoalDraftMode||e.chatGoalDraftMode===t.previousGoalDraftMode)&&(e.chatAttachments.length===0||DN(e,t.previousAttachments)),r=!!(t.previousAttachments?.length&&n),i=t.previousDraft!=null&&n;return{attachments:r,draft:i,complete:(!t.previousDraft?.trim()||i)&&(!t.previousAttachments?.length||r)}}function jN(e,t,n){let r=AN(e,n),i=Y(e).remove(e,t.id);return i?(r.draft&&(e.chatMessage=n.previousDraft??``,e.chatMentions=n.previousMentions??[],e.chatReplyTarget=n.previousReplyTarget??null),r.attachments&&(e.chatAttachments=n.previousAttachments??[]),r.attachments||ut(cm(e,i.attachments)),!0):!1}function MN(e,t,n={}){let r=AN(e,n);return e.canRestoreComposer?.()===!0&&A(e,t.sessionKey??e.sessionKey,t.agentId)&&(n.previousDraft!==void 0||n.previousAttachments!==void 0)&&r.complete&&jN(e,t,n)}function NN(){return(NN=e((()=>{un(),J(),gN(),Zp(),pm(),up(),JD()})))()}async function PN(e,t){t.attachments?.length&&Kt(e.uploadConfig);let n=t.sessionKey??e.sessionKey,r=t.agentId?Ql(t.agentId):k(e),i=e.currentSessionId,a=n===e.sessionKey&&(!_(n)||r!==void 0&&r===k(e))&&typeof i==`string`&&i.trim()?i.trim():void 0;if(C_(e,n,r)?.providerReview)throw Error(M(`chat.providerReview.pausedBody`));let o=t.sessionId??(t.intent?void 0:a),s=!(t.intent||!o||e.reconnectResumeSessionId!==o),c=await e.client.request(`chat.send`,{sessionKey:n,..._(n)&&r?{agentId:r}:{},...o?{sessionId:o}:{},...s?{__controlUiReconnectResume:!0}:{},message:t.message,...t.workContext?{workContext:t.workContext}:{},...t.mentions?.length?{mentions:t.mentions}:{},...t.intent?{intent:t.intent}:{},deliver:!1,...t.replyToId?{replyToId:t.replyToId}:{},...t.queueMode?{queueMode:t.queueMode}:{},...t.expectedLeafEntryId===void 0?{}:{expectedLeafEntryId:t.expectedLeafEntryId},idempotencyKey:t.runId,attachments:ZM(t.attachments)},{timeoutMs:vl});return s&&(e.reconnectResumeSessionId=null),bf(c,t.runId)}function FN(e){if(!(e.chatLoading||h_(e)))return e.chatDisplayedLeafEntryId===null?null:e.chatDisplayedLeafEntryId?.trim()||void 0}function IN(e){return e instanceof Zn&&Jl(e.details)?.reason===LN}var LN;function RN(){return(RN=e((()=>{Ol(),tr(),b(),O(),It(),QM(),S_(),T_(),Sf(),LN=`active-leaf-changed`})))()}function zN(e,t,n,r=t.sendSubmittedAtMs,i={}){r!=null&&fj(e,`control-ui.chat.send`,{phase:n,durationMs:lj(cj()-r),runId:t.sendRunId,sessionKey:t.sessionKey,agentId:t.agentId,sendAttempts:t.sendAttempts??0,sendState:t.sendState,...i},{console:!1,maxBufferedEventsForType:40})}function BN(e,t){if(!t||typeof t!=`object`)return;let n=t,r=KN.find(e=>e===n.phase),i=W(n.runId);if(!r||!i)return;let a=e.chatSendTimingsByRun?.get(i),o=cj(),s=Cl(n.ackToPhaseMs),c=Cl(n.receivedToPhaseMs),l=Cl(n.dispatchStartedToPhaseMs),u=Cl(n.postDispatchMs),d=a?.submittedAtMs===void 0?s:lj(o-a.submittedAtMs);if(d===void 0)return;let f=r===`first-assistant-event`&&d>=qN,p={};for(let e of[`provider`,`model`,`agentRunId`]){let t=W(n[e]);t&&(p[e]=t)}fj(e,`control-ui.chat.send`,{phase:`server-${r}`,durationMs:d,runId:i,sessionKey:a?.sessionKey??W(n.sessionKey),agentId:a?.agentId??W(n.agentId),sendAttempts:a?.sendAttempts??0,sendState:a?.sendState,ackStatus:a?.ackStatus,serverPhase:r,...s===void 0?{}:{serverAckToPhaseMs:s},...c===void 0?{}:{serverReceivedToPhaseMs:c},...l===void 0?{}:{serverDispatchStartedToPhaseMs:l},...u===void 0?{}:{serverPostDispatchMs:u},...p,...f?{slow:!0}:{}},{console:f,warn:f,maxBufferedEventsForType:40})}function VN(e,t,n,r){(e.chatSendTimingsByRun??=new Map).set(n,{runId:n,sessionKey:t.sessionKey,agentId:t.agentId,sendAttempts:t.sendAttempts??0,sendState:t.sendState,submittedAtMs:t.sendSubmittedAtMs??r,requestStartedAtMs:r})}function HN(e,t,n,r,i){let a=e.chatSendTimingsByRun??=new Map,o=a.get(t),s=o?.submittedAtMs??r.sendSubmittedAtMs??i,c={...o??{sendAttempts:r.sendAttempts??0,sendState:r.sendState,submittedAtMs:s,requestStartedAtMs:i},runId:n.runId,sessionKey:o?.sessionKey??r.sessionKey,agentId:o?.agentId??r.agentId,ackAtMs:cj(),ackStatus:n.status};n.runId!==t&&a.delete(t),a.set(n.runId,c)}function UN(e){let t=e.serverTiming;return{...typeof t?.receivedToAckMs==`number`?{serverReceivedToAckMs:t.receivedToAckMs}:{},...typeof t?.loadSessionMs==`number`?{serverLoadSessionMs:t.loadSessionMs}:{},...typeof t?.prepareAttachmentsMs==`number`?{serverPrepareAttachmentsMs:t.prepareAttachmentsMs}:{}}}function WN(e){return typeof e.sendSubmittedAtMs==`number`&&(e.sendState===`waiting-model`||e.sendState===`waiting-idle`||e.sendState===`submitting`||e.sendState===`sending`||e.sendState===`waiting-reconnect`)}function GN(e,t,n=t.sendSubmittedAtMs){let r=t.sessionKey??e.sessionKey,i=t.sendRunId;i&&n!=null&&pj(e,()=>{if(!A(e,r,t.agentId))return;let a=im(e,r,t.agentId).find(e=>e.id===t.id&&e.sendRunId===i);a&&WN(a)&&zN(e,a,`pending-painted`,n)})}var KN,qN;function JN(){return(JN=e((()=>{fl(),un(),pm(),hj(),KN=[`dispatch-started`,`model-selected`,`agent-run-started`,`first-assistant-event`,`dispatch-completed`,`post-dispatch-completed`],qN=1500})))()}function YN(e){return e.connected&&e.client&&!e.client.recoveryScopeReady?null:{...E(e,e.sessionKey),gatewayOwner:Co(e.settings?.gatewayUrl).gatewayOwner,recoveryScope:e.client?.recoveryScope?.trim()||void 0}}function XN(e){let t=e.chatQueuedEdit,n=YN(e);return!t||!n||t.gatewayOwner!==n.gatewayOwner||t.recoveryScope!==n.recoveryScope||P(t)!==P(n)?null:t}function ZN(e,t){let n=Co(e.settings?.gatewayUrl).gatewayOwner;return em(e,e=>e.chatQueuedEdit?.id===t&&e.chatQueuedEdit.gatewayOwner===n&&P(e.chatQueuedEdit)===P(E(e,e.sessionKey)))}function QN(e,t){let n=YN(e),r=X(e,t);return!n||!r||!Zi(r)||r.attachmentStorageError||r.attachments?.some(e=>!Ef(e))||r.localCommandName||XN(e)||ZN(e,t)?`unavailable`:(e.chatQueuedEdit={...n,attachments:r.attachments??[],draftText:r.text,mentions:r.mentions,id:t,orderKey:Ba(r),revision:0,...r.replyToId?{replyToId:r.replyToId}:{},source:{...r},sourceWasDurable:Y(e).durable(e,t)!==void 0},`started`)}function $N(e,t,n){let r=XN(e);return r?(r.mentions=n??lo(r.draftText,t,r.mentions),r.draftText=t,r.revision+=1,!0):!1}function eP(e){return XN(e)?(e.chatQueuedEdit=null,!0):!1}function tP(e,t,n=[],r){let i=r??XN(e);if(!(r&&e.chatQueuedEdit!==i)&&i){if(!t){let t=X(e,i.id);if(i.sourceWasDurable||Y(e).durable(e,i.id)!==void 0||!t||!Go(t,i.source))return}e.chatQueuedEdit=null,Y(e).remove(e,i.id),Mf(i.attachments,[n])}}var nP,rP,iP,aP,oP;function sP(){return(sP=e((()=>{Ws(),Na(),Rc(),O(),J(),Zp(),pm(),jp(),nP=`A queued message is being edited in another pane. Finish or cancel that edit before editing it here.`,rP=`A queued message is being edited in another pane. Finish or cancel that edit before removing it.`,iP=`A queued message is being edited in another pane. Finish or cancel that edit before reordering it.`,aP=`A queued message is being edited in another pane. Finish or cancel that edit before retrying it.`,oP=`A queued message is being edited in another pane. Finish or cancel that edit before steering it.`})))()}function cP(e,t,n,r,i=cj(),a,o,s,c,l,u,d,f){let p=Qa(t,d),m=!!(n&&n.length>0);if(!p.text&&!m)return null;let h=tc(e,e.sessionKey),g=gc(e.hello,e.client?.instanceId,e.selfUser);return{item:{storageScope:Xi(e),id:bl(),text:l?t:p.text,...p.mentions?{mentions:p.mentions}:{},...f?{workContext:f}:{},createdAt:Date.now(),...s===void 0?{}:{orderKey:s},attachments:m?n:void 0,refreshSessions:r,sendAttempts:0,sendRunId:bl(),sendState:a,...c?{queueMode:c}:{},...l?{intent:l,...e.currentSessionId?{sessionId:e.currentSessionId}:{}}:{},...l&&u!==void 0?{expectedLeafEntryId:u}:{},sendSubmittedAtMs:i,...h.scope,...g?{sender:g}:{},...o?{replyToId:o}:{}},admission:h}}function lP(e,t){let n=t.sendSubmittedAtMs??cj(),r=Y(e).keep(e,{sessionKey:t.sessionKey,agentId:t.agentId},t);return zN(e,r,`pending-visible`,n),(r.sendState===`waiting-model`||r.sendState===`waiting-reconnect`)&&zN(e,r,r.sendState,n),GN(e,r,n),vE(e,!0,!0,{source:`manual`}),r}function uP(e){return e.connected&&e.client?`waiting-idle`:`waiting-reconnect`}function dP(e,t=!0){let n=e.client,r=e.connectionEpoch;return()=>(!t||e.connected)&&e.client===n&&e.connectionEpoch===r}function fP(e,t,n){return n?.expectedLeafEntryId===void 0?n?.routingSessionKey&&A(e,t.sessionKey??e.sessionKey,t.agentId)?FN(e):void 0:n.expectedLeafEntryId}function pP(e,t,n,r){let i=t.sessionKey??n;if(!e.connected||!e.client||!A(e,i,t.agentId)||!e.chatLoading&&!h_(e))return;let a=dP(e),o=e.sessions,s=f_(e);return s.phase===`failed`?Promise.resolve(null):(s.phase===`in-flight`?s.promise:Cj(e,{startup:h_(e),deferBranches:!0})).then(n=>{let s=X(e,t.id);return!n||!a()||e.sessions!==o||!A(e,i,t.agentId)||!s||!Go(s,t)||ZN(e,t.id)?null:{item:s,expectedLeafEntryId:fP(e,s,r)}})}function mP(e,t,n,r){return t===`memory`?Y(e).change(e,n,r,!0):am(e,n,r)}function hP(e,t,n){return(r,i)=>mP(e,t,n,e=>e.sendState===`held`?e:{...e,sendError:i,sendState:r})}function gP(e,t,n,r,i){let a=i?.routingSessionKey??r,o=hP(e,n,t.id),s=(n=t.agentId)=>A(e,a,n),c=X(e,t.id);if(!c)return`failed`;if(c.sendState===`held`||c.sendState===`unconfirmed`&&!c.sendRunId||m_(e,a))return`pending`;if(c.workContextUnavailable){let t=M(`chat.messages.attachedContext.restoreFailed`);return o(`failed`,t),Q(e,a,c.agentId,t),`failed`}if(C_(e,a,c.agentId)?.providerReview)return w_(e,a,c.agentId),`pending`;let l=!!(c.queueMode||i?.allowActiveRunSend);return rv(e,a,!1,c.agentId)||i?.routingSessionKey&&!s(c.agentId)||!l&&s(c.agentId)&&(nO(e)||oO(e))?o(uP(e))?`pending`:(Z(e,$),`failed`):c}function _P(e,t,n=t.sessionKey??e.sessionKey){return e.connected&&!!e.client&&!e.chatLoading&&!h_(e)&&!m_(e,n)&&!nO(e)&&!aD(e,n,t.agentId)&&A(e,n,t.agentId)&&e.chatQueue[0]?.id===t.id}function vP(e,t){e.chatSendingScopeKey===P(t)&&(e.chatSendingScopeKey=null,e.chatSending=!1)}function yP(e,t,n,r,i){let a=fM(n,e.hello?.policy);if(a===void 0)return!1;let o=hP(e,i?.storageMode??`durable`,t.id);return MN(e,t,i)||o(`failed`,a),Q(e,r,t.agentId,a),!0}function bP(e,t,n,r,i,a,o){let s=n.id,{sessionKey:c}=a,l=i?.storageMode??`durable`,u=hP(e,l,s),d=IN(r),f=d?M(`chat.sendErrors.activeLeafChanged`):RD(r);if(X(e,s)?.sendState===`held`)return zN(e,n,`failed`,n.sendSubmittedAtMs,{error:f}),`pending`;if(r instanceof cr)return MN(e,n,i)||u(`failed`,f),Q(e,c,n.agentId,f),zN(e,n,`failed`,n.sendSubmittedAtMs,{error:f}),`failed`;if(r instanceof cl&&r.requestSent){if(vP(e,a),!X(e,s))return`pending`;let t=u(`unconfirmed`,lv);return Q(e,c,n.agentId,t?lv:$,{inline:!(!t||n.localCommandName)}),t&&l===`durable`&&o(500),zN(e,n,`failed`,n.sendSubmittedAtMs,{error:f}),`pending`}if(!d&&(r instanceof Zn?r.retryable:/gateway (?:not connected|closed)|websocket|disconnected/i.test(f))){let a=r instanceof Error&&!(r instanceof Zn)&&r.message===`gateway not connected`,u=tN(r),d=a||u!==null,p=d?{sendAttempts:t.sendAttempts,sendRequestStartedAtMs:t.sendRequestStartedAtMs}:{};if(l===`memory`){let t=d&&MN(e,n,i);return t||mP(e,l,s,e=>({...e,...p,sendError:d?f:lv,sendState:d?`failed`:`unconfirmed`})),Q(e,c,n.agentId,t?f:$),zN(e,n,`failed`,n.sendSubmittedAtMs,{error:t?f:$}),t?`failed`:`pending`}if(!am(e,s,e=>({...e,...p,sendError:f,sendState:`waiting-reconnect`}))){let t=a&&MN(e,n,i);return t||am(e,s,e=>({...e,sendError:$,sendState:`failed`})),Q(e,c,n.agentId,$),zN(e,n,`failed`,n.sendSubmittedAtMs,{error:$}),t?`failed`:`pending`}return A(e,c,n.agentId)&&Z(e,u===null?`Message will send when the Gateway reconnects.`:`The Gateway asked us to retry this message shortly.`),u!==null&&o(u),zN(e,n,`waiting-reconnect`,n.sendSubmittedAtMs,{error:f}),`pending`}vP(e,a);let p=i?.restoreOnTerminalFailure===!0&&MN(e,n,i);return p||u(`failed`,f),A(e,c,n.agentId)&&d&&Promise.all([Cj(e),GO(e)]),Q(e,c,n.agentId,f,{inline:l===`durable`&&!p}),zN(e,n,`failed`,n.sendSubmittedAtMs,{error:f}),`failed`}async function xP(e,t,n,r,i,a){let o=i?.routingSessionKey??r,s=hP(e,n,t.id),c=(n=t.agentId)=>A(e,o,n),l=new Set,u=i?.pendingSettings??aD(e,o,t.agentId),d=u?X(e,t.id):t;for(;u&&!l.has(u);){if(d?.sendState===`held`||d?.sendState===`unconfirmed`&&!d.sendRunId)return`pending`;d?.sendState!==`waiting-model`&&(d=s(`waiting-model`),d||Z(e,$)),e.requestUpdate?.();let n=await u;if(l.add(u),d=X(e,t.id),!d)return`failed`;if(d.sendState===`held`||d.sendState===`unconfirmed`&&!d.sendRunId)return`pending`;if(!n)return!(c(d.agentId)&&MN(e,d,i))&&!s(`failed`,`Chat settings update was interrupted. Review and retry when ready.`)&&Z(e,$),e.requestUpdate?.(),`failed`;u=aD(e,o,d.agentId)}return l.size&&(d=s(uP(e))),d?(l.size&&e.requestUpdate?.(),a(d)):(Z(e,$),`failed`)}async function SP(e,t,n,r){let i=n;for(;await i;){let n=aD(e,t,r);if(!n||n===i)return!0;i=n}return!1}async function CP(e,t,n){let r=t.id,i=dP(e),a=t,o=a.sessionKey??n,s=Fp(e,E(e,o,a.agentId)),c=await Lp(e,{...a,sessionKey:o}),l=X(e,r);if(!i()||!s()||!l||!Go(l,a)||ZN(e,r))return c.status===`ready`&&!a.attachmentPayload&&Rp(c.update),`pending`;if(c.status===`failed`){let t=Np(l,c.reason);return am(e,r,()=>t),Q(e,o,a.agentId,t.sendError),`failed`}let u={...a,...c.update};return u.attachmentPayload?.key!==a.attachmentPayload?.key&&u.sendState===`unconfirmed`?(am(e,r,()=>u),`pending`):(!a.attachmentPayload||a.attachmentStorageError)&&!am(e,r,()=>u)?(a.attachmentPayload||Rp(c.update),`pending`):u}function wP(){return(wP=e((()=>{Vl(),tr(),b(),ns(),Cs(),Ws(),ma(),Na(),Rc(),un(),O(),hl(),qO(),S_(),Ej(),Zp(),sN(),T_(),pm(),NN(),RN(),uv(),JN(),uD(),mM(),zD(),Bp(),hj(),sP(),OO(),OE(),fc()})))()}function TP(e){return Ml(MP,e)}function EP(e){jP&&=(globalThis.clearTimeout(jP.timer),e&&ut(jP.item.attachments??[]),null)}function DP(e,t,n){EP(!0),jP={item:t,sessionKey:e,timer:globalThis.setTimeout(()=>EP(!0),AP),retryAfter:n};for(let e of MP)e()}function OP(e,t){if(!jP||!at(jP.sessionKey,t)||!po(e,jP.item))return null;let n=jP;return EP(!1),n}function kP(e,t){let n=OP(e,t);if(!n)return!1;let{item:r,retryAfter:i}=n,a=im(e,t,r.agentId).some(e=>e.id===r.id);if(a||tm(e,t,r,r.agentId,{retryable:!0}),i){let n=X(e,r.id),a=e.client,o=()=>e.connected&&e.client===a&&A(e,t,r.agentId);i.then(async i=>{if(!i||!o())return;let a=dP(e),s=e.captureComposerRecoveryOwner?.(),c=()=>o()&&a()&&s?.resolveOwner()===e,{retryQueuedChatMessage:l}=await Yl(async()=>{let{retryQueuedChatMessage:e}=await Promise.resolve().then(()=>($I(),GI));return{retryQueuedChatMessage:e}},void 0,import.meta.url),u=X(e,r.id);if(!n||!u||!Go(n,u)||!c())return;let d=pP(e,u,t);if(d&&!await d)return;let f=X(e,r.id);f&&Go(n,f)&&c()&&await l(e,r.id,c)}).catch(t=>{o()&&Z(e,j(t))})}return!a}var AP,jP,MP;function NP(){return(NP=e((()=>{ma(),Na(),N(),un(),O(),J(),S_(),pm(),wP(),$l(),AP=6e4,jP=null,MP=new Set})))()}function PP(e){let t=e.context.gateway.snapshot,n={id:bl(),text:e.message,...e.mentions?.length?{mentions:e.mentions}:{},attachments:e.attachments,createdAt:Date.now(),kind:`queued`,refreshSessions:!0,sendAttempts:1,sendError:e.error,sendState:`failed`,sessionKey:e.sessionKey,sessionId:e.sessionId,agentId:Ql(e.agentId)},r={settings:e.context.gateway.connection,client:t.client,connected:t.phase===`connected`,assistantAgentId:t.assistantAgentId,agentsList:e.context.agents.state.agentsList,hello:t.hello},i={...n,storageScope:Xi(r)},a=Sp(r,{...tc(r,n.sessionKey,n.agentId),scope:{sessionKey:n.sessionKey,agentId:n.agentId},awaitingDefaults:!1},i);return(!a||e.retryAfter)&&DP(e.sessionKey,{...i,sendRunId:bl()},e.retryAfter),!a}function FP(){return(FP=e((()=>{ma(),Rc(),O(),hl(),jp(),NP()})))()}function IP(e,t){let{context:n,client:r,result:i,turn:a}=e,{text:o,attachments:s}=a,c=i.initialRun.status===`rejected`&&PP({agentId:e.agentId,attachments:s,context:n,error:i.initialRun.error,message:o,mentions:a.mentions,sessionKey:i.key,sessionId:typeof i.entry?.sessionId==`string`?i.entry.sessionId:void 0,retryAfter:t});return i.initialRun.status===`started`&&n.chatSubmissions.retain(km(i.key,a,r,i.initialRun.runId)),c}async function LP(e){let{context:t,client:n,agentId:r,result:i,instant:a}=e,{key:o,initialRun:s}=i;if(a&&await a.waitForReady(),!e.isCurrent()||a&&!a.isCurrent()){s.status!==`rejected`&&await e.clearDraft(!0,!1);return}let c=s.status===`rejected`?li(s.errorDetails):void 0,l=c?wl():void 0;try{if(s.status===`rejected`&&e.onRejectedPrompt){let t=jf(e.turn.attachments);IP({...e,turn:{...e.turn,attachments:t}},l?.promise)||ut(t),e.onRejectedPrompt(s.error)}else{let t=IP(e,l?.promise);await e.clearDraft(!t)}if(!e.isCurrent()||a&&!a.isCurrent())return;if(e.completeInBackground(o,s.status===`started`?s.runId:void 0)){e.onAccepted?.();return}if(a?.admitted(o,r),await e.navigation.navigate(t,{client:n,key:o,agentId:r},a?.commit.bind(a)),e.finishNavigation(),c){let e=t.gateway.snapshot,a=()=>t.gateway.snapshot.phase===`connected`&&t.gateway.snapshot.client===n&&t.gateway.snapshot.hello===e.hello&&at(t.gateway.snapshot.sessionKey,o);try{let{confirmNativeRuntimePermissionRecovery:n}=await Yl(async()=>{let{confirmNativeRuntimePermissionRecovery:e}=await import(`./chat-native-runtime-recovery-D9A0s8FY.js`);return{confirmNativeRuntimePermissionRecovery:e}},__vite__mapDeps([12,0,1,2,3,4,5,6,7]),import.meta.url),s=await n({sessions:t.sessions,hello:e.hello},o,c,{agentId:r,expectedSessionId:typeof i.entry?.sessionId==`string`?i.entry.sessionId:void 0,signal:t.lifecycleAbortSignal,retriesMessage:!0,canDispatch:a});l?.resolve(!!(s&&a()))}catch(e){a()&&on({message:M(`chat.nativeRuntimeRecovery.failed`,{error:j(e)})})}}}finally{l?.resolve(!1)}}function RP(){return(RP=e((()=>{si(),ml(),b(),Yi(),N(),O(),Ft(),J(),jm(),FP(),$l(),Gs()})))()}var zP;function BP(){return(BP=e((()=>{ar(),or(),ld(),Fy(),pe(),O(),jm(),zP=class{constructor(){this.current=null,this.submitted=null}captureSubmission(e,t,n,r=()=>!0){let i=e.gateway,a=vr(i),o=i.connection.gatewayUrl,s=i.snapshot.hello?.auth?.recoveryScope??(i.snapshot.client?.recoveryScopeReady?i.snapshot.client.recoveryScope:void 0),c=()=>{let e=i.snapshot,t=e.hello?.auth?.recoveryScope??(e.client?.recoveryScopeReady?e.client.recoveryScope:void 0);return s??=t,vr(i)===a&&i.connection.gatewayUrl===o&&(!t||t===s)};return(i,a)=>{n&&r()&&c()&&(this.submitted={context:e,message:n,key:i,agentId:t,error:a,canDisplay:c})}}submission(e){let t=this.submitted;return t&&t.context===e&&t.canDisplay()?t:null}messageForTurn(e,t,n){return Am(n,`available`)??(this.isCurrent(e,t)?this.submission(e)?.message??null:null)}async openSubmission(e,t,n){let r=e?.gateway.snapshot.client;if(!t||!e||!r||e.gateway.snapshot.phase!==`connected`||this.submission(e)!==t)return;let i=n.capture();n.publish(t.message,null);let a;try{await this.navigate(e,{client:r,key:t.key,agentId:t.agentId})}catch(e){i()&&t.canDisplay()&&(a=e instanceof Error?e.message:String(e))}finally{i()&&n.publish(null,a)}}clearSubmission(){this.submitted=null}isCurrent(e,t){let n=this.current,r=e?.gateway.snapshot;return!!(n&&r?.phase===`connected`&&r.client===n.client&&r.hello===n.hello&&r.sessionKey===n.key&&Ql(t)===n.agentId)}async navigate(e,t,n){let r={...t,hello:e.gateway.snapshot.hello};this.current=r,wr({selection:e.agentSelection,gateway:e.gateway,sessionKey:t.key,agentId:t.agentId});let i=Re({context:e,face:`chat`,sessionKey:t.key,agentId:t.agentId,focusComposer:!0,navigationKey:t.key}).options;await _d({document,from:`new-session`,to:`chat`,router:e.router,signal:e.lifecycleAbortSignal,prefersReducedMotion:globalThis.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches??!1,navigate:()=>{if(this.current!==r||!this.isCurrent(e,t.agentId))throw new DOMException(`Session navigation interrupted`,`AbortError`);if(n&&!n())throw new DOMException(`Session navigation superseded`,`AbortError`);return ky(e.gateway,i.pathname,t.key),e.navigateAndWait(`chat`,i)}}),this.current===r&&(this.current=null)}}})))()}function VP(e){return e.chatRunId?!0:!!e.sessionsResult?.sessions.some(t=>t.key===e.sessionKey&&Ll(t))}function HP(e,t,n,r){e.chatMessagesBySession&&L_(e.chatMessagesBySession,e,{sessionKey:t,agentId:n},r)}function UP(e,t){return e.client===t.client&&e.connectionEpoch===t.connectionEpoch&&A(e,t.sessionKey,t.agentId)}function WP(e,t,n){n&&Object.hasOwn(n.sessionInfo??{},`activeLeafEntryId`)&&n.sessionInfo?.activeLeafEntryId===null&&e.connected&&UP(e,t)&&delete e.chatDisplayedLeafEntryId}async function GP(e){if(!e.client||!e.connected)return`failed`;let t=e.client,n=e.connectionEpoch,r=e.sessionKey,i=de(e,r),a={client:t,connectionEpoch:n,sessionKey:r,agentId:i.agentId},o=e.chatRunId,s=e.chatSubmissions?.readInitial(r,t),c=VP(e);try{let o=await e.sessions.reset(r,i);if(o===`not-started`)return Z(e,`Gateway was unavailable before chat history could be cleared.`),vE(e),`failed`;if(s&&qn(s),HP(e,r,i.agentId),o===`uncertain`||e.client!==t||e.connectionEpoch!==n||!e.connected){let t={client:e.client,connectionEpoch:e.connectionEpoch,sessionKey:r,agentId:i.agentId},n=!1;if(e.client&&e.connected&&A(e,r,i.agentId)){y_(e,i.agentId);let t=await Cj(e);n=!!t,WP(e,a,t)}return UP(e,t)&&(Z(e,n?`The clear request may have completed. Current history was refreshed; review it before resuming queued messages.`:`The clear request may have completed. Cached history was cleared, but current history could not be refreshed; reconnect and review it before resuming queued messages.`),vE(e)),`uncertain`}}catch(t){return UP(e,a)&&(Z(e,j(t)),vE(e)),`failed`}return A(e,r,i.agentId)?(y_(e,i.agentId),e.chatRunError=null,e.chatReplyTarget=null,bO(e,{outcome:c?`interrupted`:void 0,sessionStatus:`killed`,runId:o,sessionKey:r,clearLocalRun:!0,clearChatStream:!0,clearToolStream:!0,clearRunStatus:!c}),WP(e,a,await Cj(e)),UP(e,a)&&vE(e),`completed`):`completed`}async function KP(e,t,n){if(!e.client||!e.connected)return null;let r=e.sessionKey,i=de(e,r),a=e.client,o=e.connectionEpoch,s=()=>e.connected&&e.client===a&&e.connectionEpoch===o,c=()=>A(e,r,i.agentId),l=()=>s()&&c(),u=()=>rp(e.chatMessage,e.chatAttachments,e.chatGoalDraftMode,e.chatMentions,e.chatReplyTarget),d=u(),f=n.readSignal,p=hp(e,r,i.agentId);try{let a=await e.sessions.rewind(r,t,i),o=a.editorText??``;return HP(e,r,i.agentId,`cache-eviction`),c()&&(y_(e,i.agentId),await Promise.all([Cj(e),GO(e)])),!s()||!p()||u()!==d||(xp(e,r,{agentId:i.agentId,draft:o,mentions:[],goalMode:null,replyTarget:null,expectedDraftRevision:_p(e,r,i.agentId)}),!c())?null:(e.chatGoalDraftMode=null,e.chatReplyTarget=null,e.chatAttachments=Pf(e.chatAttachments,a.editorAttachments),e.handleChatDraftChange(o,[]),n.readSignal===f&&n.abortReads(),a)}catch(t){return l()&&(Z(e,j(t)),vE(e)),null}}async function qP(e,t){if(!e.client||!e.connected)return!1;let n=e.sessionKey,r=de(e,n),i=e.client,a=e.connectionEpoch,o=()=>e.connected&&e.client===i&&e.connectionEpoch===a,s=()=>A(e,n,r.agentId),c=()=>o()&&s();try{return await e.sessions.switchBranch(n,t,r),HP(e,n,r.agentId,`cache-eviction`),s()?(y_(e,r.agentId),await Promise.all([Cj(e),GO(e)]),c()):!1}catch(t){return c()&&(Z(e,j(t)),vE(e)),!1}}function JP(){return(JP=e((()=>{On(),N(),un(),J(),qO(),S_(),Ej(),jp(),up(),OO(),OE(),$_()})))()}function YP(e,t){return e!=null&&Object.hasOwn(e,t)?e[t]:void 0}function XP(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0})}function ZP(e){return{...e?.mcpServers?{mcpServers:{...e.mcpServers}}:{},...e?.mcpToolsDeny?{mcpToolsDeny:Object.fromEntries(Object.entries(e.mcpToolsDeny).map(([e,t])=>[e,[...t]]))}:{},...e?.skills?{skills:{...e.skills}}:{},...e?.webSearch===void 0?{}:{webSearch:e.webSearch}}}function QP(e,t){return t??e}function $P(e,t){return e&&(t??e)}function eF(e,t,n,r,i){let a=ZP(e),o=(Object.hasOwn(a,t)?a[t]:void 0)??{};return r===i?delete o[n]:XP(o,n,r),Object.keys(o).length===0?delete a[t]:a[t]=o,a}function tF(e,t,n=!0){let r=ZP(e);return n?(t===n?delete r.webSearch:r.webSearch=t,r):(r.webSearch===!0&&delete r.webSearch,r)}function nF(e,t,n,r){let i=ZP(e),a=Object.hasOwn(i,`mcpToolsDeny`)?i.mcpToolsDeny:void 0,o=new Set(YP(a,t)??[]);r?o.add(n):o.delete(n);let s=a??{};return o.size>0?XP(s,t,[...o].toSorted()):delete s[t],Object.keys(s).length===0?delete i.mcpToolsDeny:i.mcpToolsDeny=s,i}function rF(e){return Object.keys(e?.mcpServers??{}).length+Object.keys(e?.skills??{}).length+Object.keys(e?.mcpToolsDeny??{}).length+(e?.webSearch===void 0?0:1)}function iF(){return(iF=e((()=>{})))()}function aF(e){return K(K(K(e?.tools)?.web)?.search)?.enabled!==!1}function oF(e){let t=Object.values(e.missing).some(e=>e.length>0),n=e.blockedByAllowlist||e.blockedByAgentFilter,r=!e.disabled;return{key:e.skillKey,name:e.name,enabled:r&&!t&&!n,baseEnabled:r,...t?{missingDeps:!0}:{},...n?{blocked:!0}:{}}}var sF;function cF(){return(cF=e((()=>{sF=class{constructor(e){this.notify=e,this.skills=new Map,this.loading=new Set,this.loadErrors=new Set,this.client=null}synchronize(e,t){(this.client!==e||this.connectionEpoch!==t)&&(this.client=e,this.connectionEpoch=t,this.skills.clear(),this.loading.clear(),this.loadErrors.clear())}load(e,t,n,r){if(this.synchronize(e,t),!e||!r()||this.skills.has(n)||this.loading.has(n))return;let i=()=>this.client===e&&this.connectionEpoch===t&&r();this.loadErrors.delete(n),this.loading.add(n),this.notify(),dn(e,n).then(e=>{e&&i()&&this.skills.set(n,e.skills.map(oF).toSorted((e,t)=>e.name.localeCompare(t.name)))}).catch(()=>{i()&&this.loadErrors.add(n)}).finally(()=>{i()&&(this.loading.delete(n),this.notify())})}rows(e,t){return this.skills.get(e)?.map(e=>Object.assign({},e,{enabled:e.missingDeps||e.blocked?!1:YP(t?.skills,e.key)??e.baseEnabled}))??null}isLoading(e){return this.loading.has(e)}hasError(e){return this.loadErrors.has(e)}}})))()}function lF(e,t,n,r){let i=n.trim();if(!i)return;let a=iu(i);t.has(a)||(t.add(a),e.push({value:i,label:r(i)}))}function uF(){return(uF=e((()=>{})))()}function dF(e,t){let n=e?.agentRuntime?.id?.trim(),r=t?.agentRuntime?.id?.trim();return(!e?.modelProvider||e.modelProvider===t?.modelProvider)&&(!e?.model||e.model===t?.model)&&(!n||!r||n===r)}function fF(){return(fF=e((()=>{})))()}function pF(e,t){let n=e?.contextBudgetStatus?.promptBudgetBeforeReserve;return typeof n==`number`&&Number.isFinite(n)&&n>0?{tokens:n,fromLastPrompt:!0}:{tokens:e?.contextTokens??t??0,fromLastPrompt:!1}}function mF(){return(mF=e((()=>{})))()}function hF(e,t){return{content:M(e,{error:j(t)}),failed:!0}}function gF(e){if(e.isCurrent?.()===!1)throw Error(`The Gateway connection changed. Retry the command.`)}function _F(e,t){gF(e);let n=Be(e.readSessionAccessSnapshot?.()??e.sessionAccessSnapshot,t);if(!n.allowed)throw Error(n.reason)}async function vF(e,t,n,r,i,a){try{return _F(e,{method:`sessions.patch`,params:{key:t,...sD(t,e),...n}}),await cD(e,t,n,a),{...r(),action:`refresh`}}catch(e){return hF(i,e)}}async function yF(e,t,n,r,i){switch(n){case`help`:return bF();case`compact`:return await xF(t,i);case`model`:return await SF(e,t,r,i);case`think`:return await CF(e,t,r,i);case`fast`:return await TF(t,r,i);case`verbose`:return await wF(t,r,i);case`usage`:return await EF(t,i);case`agents`:return await DF(e);case`steer`:case`redirect`:return await LF(e,t,r,i,n);default:return{content:M(`chat.commandResults.unknownCommand`,{command:`/${n}`})}}}function bF(){let e=[`**${M(`chat.commandResults.help.availableCommands`)}**\n`],t=``;for(let n of kc){let r=n.category??`session`;r!==t&&(t=r,e.push(`**${Os(r)}**`));let i=n.args?` ${n.args}`:``,a=n.executeLocal?``:` *(${M(`chat.commandResults.help.agentCommand`)})*`;e.push(`\`/${n.name}${i}\` — ${Vc(n)}${a}`)}return e.push(`\n${M(`chat.commandResults.help.openMenu`)}`),{content:e.join(`
`)}}async function xF(e,t){try{let n=sD(e,t);_F(t,{method:`sessions.compact`,requiredScope:`operator.admin`});let r=await t.sessions.compact(e,n);if(r?.ok!==!0){let e=typeof r?.reason==`string`?gt(r.reason):``;return{content:e?M(`chat.commandResults.compaction.failedWithReason`,{reason:e}):M(`chat.commandResults.compaction.failed`),failed:!0}}return r?.compacted?{action:`refresh`}:typeof r?.reason==`string`&&r.reason.trim()?{content:M(`chat.commandResults.compaction.skippedWithReason`,{reason:gt(r.reason)}),action:`refresh`}:{content:M(`chat.commandResults.compaction.skipped`),action:`refresh`}}catch(e){return{content:M(`chat.commandResults.compaction.failedWithReason`,{reason:j(e)}),failed:!0}}}async function SF(e,t,n,r){if(!n)try{let{session:n,defaults:i,models:a}=await IF(e,r,t),o=n?.model||i?.model||`default`,s=a.filter(e=>e.available!==!1&&e.manualSelectionAllowed!==!1).map(e=>e.id),c=[M(`chat.commandResults.model.current`,{model:`\`${o}\``})];if(s.length>0){let e=s.length>10?M(`chat.commandResults.model.more`,{count:String(s.length-10)}):``;c.push(`${M(`chat.commandResults.model.available`,{models:s.slice(0,10).map(e=>`\`${e}\``).join(`, `)})}${e}`)}return{content:c.join(`
`)}}catch(e){return hF(`chat.commandResults.model.getFailed`,e)}let i=n.trim();return vF(r,t,{model:i},()=>({content:M(`chat.commandResults.model.set`,{model:`\`${i}\``}),modelChanged:!0}),`chat.commandResults.model.setFailed`,{ownsModelOverride:r.ownsModelOverride})}async function CF(e,t,n,r){let i=n.trim();if(!i)try{let{session:n,defaults:i,models:a}=await IF(e,r,t);return{content:jF(M(`chat.commandResults.thinking.current`,{level:oo(n,i,a)}),eo(n,i,a))}}catch(e){return hF(`chat.commandResults.thinking.getFailed`,e)}if(Oi(i))return vF(r,t,{thinkingLevel:null},()=>({content:M(`chat.commandResults.thinking.reset`)}),`chat.commandResults.thinking.resetFailed`);try{let{session:e,defaults:n}=await NF(r,t),a=r.chatModelCatalog??r.modelCatalog??[],o=Ea(i,e,n,a);return o?Bs(e,n,o,a)===!1?{content:M(`chat.commandResults.thinking.unsupported`,{level:i,options:eo(e,n,a)})}:vF(r,t,{thinkingLevel:o},()=>({content:M(`chat.commandResults.thinking.set`,{level:`**${o}**`})}),`chat.commandResults.thinking.setFailed`):{content:M(`chat.commandResults.thinking.unrecognized`,{level:i,options:eo(e,n,a)})}}catch(e){return hF(`chat.commandResults.thinking.setFailed`,e)}}async function wF(e,t,n){let r=t.trim();if(!r)try{let{session:t}=await NF(n,e);return{content:jF(M(`chat.commandResults.verbose.current`,{level:Ei(t?.verboseLevel)??`off`}),`on, full, off`)}}catch(e){return hF(`chat.commandResults.verbose.getFailed`,e)}let i=Ei(r);return i?vF(n,e,{verboseLevel:i},()=>({content:M(`chat.commandResults.verbose.set`,{level:`**${i}**`})}),`chat.commandResults.verbose.setFailed`):{content:M(`chat.commandResults.verbose.unrecognized`,{level:r})}}async function TF(e,t,n){let r=iu(t);if(!r||r===`status`)try{let{session:t}=await NF(n,e);return{content:jF(ra(t),M(`chat.commandResults.fast.options`,{seconds:String(t?.fastAutoOnSeconds??60)}))}}catch(e){return hF(`chat.commandResults.fast.getFailed`,e)}if(Oi(r))return vF(n,e,{fastMode:null},()=>({content:M(`chat.commandResults.fast.reset`)}),`chat.commandResults.fast.resetFailed`);let i=$c(r);return i===void 0?{content:M(`chat.commandResults.fast.unrecognized`,{mode:t.trim()})}:vF(n,e,{fastMode:i},()=>({content:M(i===`auto`?`chat.commandResults.fast.setAuto`:i?`chat.commandResults.fast.enabled`:`chat.commandResults.fast.disabled`)}),`chat.commandResults.fast.setFailed`)}async function EF(e,t){try{let n=FF(await MF(t),e);if(!n)return{content:M(`chat.commandResults.usage.noActiveThread`)};let r=Number.isFinite(n.inputTokens),i=Number.isFinite(n.outputTokens),a=r?n.inputTokens??0:0,o=i?n.outputTokens??0:0,s=r||i?a+o:null,c=Number.isFinite(n.totalTokens)?n.totalTokens??null:s,l=n.totalTokensFresh!==!1,u=pF(n),d=u.tokens,f=c!==null&&l&&d>0?Math.round(c/d*100):null,p=s===null?M(`chat.commandResults.usage.notAvailable`):`${l?``:`~`}${Tt(s)}`,m=[`**${M(`chat.commandResults.usage.title`)}**`,M(`chat.commandResults.usage.inputTokens`,{count:`**${Tt(a)}**`}),M(`chat.commandResults.usage.outputTokens`,{count:`**${Tt(o)}**`}),M(`chat.commandResults.usage.totalTokens`,{count:`**${p}**`})];return f!==null&&m.push(M(u.fromLastPrompt?`chat.commandResults.usage.promptBudget`:`chat.commandResults.usage.context`,{percent:`**${f}%**`,total:Tt(d)})),n.model&&m.push(M(`chat.commandResults.usage.model`,{model:`\`${n.model}\``})),{content:m.join(`
`)}}catch(e){return hF(`chat.commandResults.usage.failed`,e)}}async function DF(e){try{let t=await e.request(`agents.list`,{}),n=t?.agents??[];if(n.length===0)return{content:M(`chat.commandResults.agents.none`)};let r=[M(`chat.commandResults.agents.title`,{count:String(n.length)}),``];for(let e of n){let n=e.id===t?.defaultId,i=e.identity?.name||e.name||e.id,a=n?` *(${M(`chat.commandResults.agents.default`)})*`:``,o=e.agentRuntime?.id?M(`chat.commandResults.agents.runtime`,{runtime:`\`${e.agentRuntime.id}\``}):``;r.push(`- \`${e.id}\` — ${i}${a}${o}`)}return{content:r.join(`
`)}}catch(e){return hF(`chat.commandResults.agents.failed`,e)}}function OF(e,t){let n=Et(e)?.agentId??pl(t.agentId);return n?{agentId:n}:{}}function kF(e,t){let n=pl(e);return Et(n??``)?.agentId??pl(t.agentId)??(n===`main`?pl(t.defaultAgentId)??`main`:void 0)}function AF(e,t){let n=new Set([e]);if(t&&t!==`main`){let r=`agent:${t}:${Al}`,i=`agent:${t}:global`;(e===r||e===i)&&n.add(`global`)}if(t===`main`){let t=`agent:${vt}:main`;e===`main`?n.add(t):e===t&&n.add(Al)}return n}function jF(e,t){return`${e}\n${M(`chat.commandResults.options`,{options:t})}`}async function MF(e,t){let n=await e.sessions.list(t);if(!n)throw Error(M(`chat.commandResults.sessionUnavailable`));return n}async function NF(e,t){return PF(e,t,await MF(e,OF(t,e)))}function PF(e,t,n){let r=kF(t,e),i=pl(e.defaultAgentId)??`main`,a=pl(e.sessionsResultAgentId),o=e.sessionsResult&&r&&a===r?FF(e.sessionsResult,t):void 0;return{session:FF(n,t)??o,defaults:!r||r===i?n.defaults:void 0}}function FF(e,t){let n=pl(t),r=Et(n??``)?.agentId??(n===`main`?`main`:void 0),i=n?AF(n,r):new Set;return e?.sessions?.find(e=>{let t=pl(e.key);return t?i.has(t):!1})}async function IF(e,t,n){let r=t.chatModelCatalog??t.modelCatalog,i=kF(n,t),[a,o]=await Promise.all([MF(t,OF(n,t)),r?Promise.resolve(r):_c(e,{agentId:i,sessionKey:n}).then(e=>e.models)]);return{...PF(t,n,a),models:o}}async function LF(e,t,n,r,i){try{let a=n.trim();if(!a)return{content:M(`chat.commandResults.${i}.usage`)};gF(r);let o=await e.request(`chat.send`,{sessionKey:t,...sD(t,r),message:a,...i===`steer`?{deliver:!1,queueMode:`steer`}:{queueMode:`interrupt`},idempotencyKey:bl()}),s=yf(o?.status);if(s===`timeout`||s===`error`)return{content:M(`chat.commandResults.${i}.${s===`timeout`?`timeout`:`failed`}`),failed:!0};let c={content:M(`chat.commandResults.${i}.succeeded`)};return(s===`started`||s===`in_flight`)&&(i===`steer`?c.pendingCurrentRun=!0:c.trackRunId=typeof o?.runId==`string`?o.runId:void 0),c}catch(e){return hF(`chat.commandResults.${i}.requestFailed`,e)}}function RF(){return(RF=e((()=>{fi(),b(),nl(),rl(),Gi(),N(),qe(),La(),ne(),O(),hl(),Sf(),uD()})))()}function zF(e){return{client:e.client??null,hello:e.hello??null,phase:e.connected?`connected`:`offline`}}function BF(e,t){let n=ND(zF(e),!1,{session:e.sessionsResult?.sessions.find(t=>A(e,t.key,t.agentId??e.sessionsResultAgentId??void 0))})[t];return n.allowed?!0:(Z(e,n.reason),!1)}function VF(e){return!e.client||!e.connected?null:{client:e.client,connectionEpoch:e.connectionEpoch,sessionKey:e.sessionKey,agentId:ze(e,e.sessionKey)}}function HF(e,t){return e.connected&&e.client===t.client&&e.connectionEpoch===t.connectionEpoch}function UF(e,t){return HF(e,t)&&A(e,t.sessionKey,t.agentId)}function WF(e,t){return HF(e,t)?!D(e,t.sessionKey)||l(e)===t.agentId:!1}function GF(e,t){if(!UF(e,t))return{allowed:!1,reason:`The Gateway connection changed. Retry the command.`};let n=Be(zF(e),{method:`chat.send`,requiredScope:`operator.admin`});return n.allowed?{allowed:!0}:n}function KF(e,t){let n=GF(e,t);return n.allowed?!0:(Z(e,n.reason),!1)}function qF(e){return Z(e,`The Gateway connection changed. Retry the command.`),`failed`}function JF(e,t){return JSON.stringify([e??null,t??null])}async function YF(e,t,n){try{let r=await e.request(`commands.list`,{...t?{agentId:t}:{},...n?{sessionKey:n}:{},includeArgs:!0,scope:`text`});return Array.isArray(r?.commands)?$s(hc(r)):void 0}catch{return}}function XF(e,t,n){let r=xa(e,{agentId:t,sessionKey:n});if(Array.isArray(r?.commands))return Promise.resolve($s(hc(r)));let i=oI.get(e);i||(i=new Map,oI.set(e,i));let a=JF(t,n),o=i.get(a),s=Date.now();if(o?.commands&&o.expiresAt>s)return Promise.resolve(o.commands);if(o?.inFlight)return o.inFlight;let c={commands:o?.commands,expiresAt:o?.expiresAt??0},l=YF(e,t,n).then(e=>(e&&i.get(a)===c&&(c.commands=e,c.expiresAt=Date.now()+aI),e??o?.commands??us())).finally(()=>{i.get(a)===c&&delete c.inFlight});return c.inFlight=l,i.set(a,c),l}function ZF(e,t){iI+=1,oI.get(e)?.delete(JF(t.agentId,t.sessionKey))}function QF(e){if(!Array.isArray(e?.commands))return!1;let t=$s(hc(e));return iI+=1,na(t),!0}async function $F(e){let t=++iI,n=e.agentId?.trim(),r=e.client?await XF(e.client,n,e.sessionKey):void 0;t===iI&&e.shouldApply?.()!==!1&&na(r??us())}function eI(e){return![`stop`,`export-session`,`steer`,`redirect`,`new`].includes(e)}async function tI(e,t){let n=t?.sessionKey??e.sessionKey,r=t?()=>A(e,t.sessionKey,t.agentId):()=>e.sessionKey===n||at(e.sessionKey,n);if(!r())return`deferred`;if(!e.confirmConversationReset)return`confirmed`;let i=await e.confirmConversationReset();return r()?i?e.chatRunId?`deferred`:`confirmed`:`cancelled`:t?`deferred`:`cancelled`}async function nI(e,t,n,r){switch(t){case`stop`:return BF(e,`abort`)?(await pO(e,{scope:`session`}),`completed`):`failed`;case`new`:return e.createChatSession?await e.createChatSession()?`completed`:`cancelled`:(Z(e,`New Chat is unavailable.`),`failed`);case`reset`:{let t=VF(e);if(!t||!KF(e,t))return`failed`;let i=await tI(e);return i===`confirmed`?KF(e,t)?(await r.sendResetMessage(n?`/reset ${n}`:`/reset`,{previousDraft:r.previousDraft,restoreDraft:r.restoreDraft,target:t}),`completed`):`failed`:i}case`clear`:{if(!BF(e,`reset`))return`failed`;let t=VF(e);if(!t)return`failed`;let n=await tI(e);return n===`confirmed`?UF(e,t)?BF(e,`reset`)?await GP(e):`failed`:qF(e):n}case`compact`:if(!BF(e,`compact`))return`failed`;break;case`export-session`:return n.trim()?(Z(e,M(`chat.commandResults.exportPathUnsupported`)),`failed`):(Z(e,null),await e.exportCurrentChat?.()===`empty`&&(rI(e,M(`chat.commandResults.emptyExport`)),vE(e,!1,!1,{contentChanged:!0})),`completed`)}if(!e.client||!e.connected)return Z(e,`Gateway not connected`),rI(e,`Cannot run \`/${t}\`: Control UI is not connected to the Gateway.`),vE(e,!1,!1,{contentChanged:!0}),`failed`;let i=VF(e);if(!i)return`failed`;let a=()=>UF(e,i),o;try{o=await yF(i.client,i.sessionKey,t,n,{sessions:e.sessions,sessionAccessSnapshot:zF(e),readSessionAccessSnapshot:()=>zF(e),isCurrent:a,chatModelCatalog:e.chatModelCatalog,sessionsResult:e.sessionsResult,sessionsResultAgentId:e.sessionsResultAgentId,defaultAgentId:he(e),agentId:i.agentId,ownsModelOverride:()=>WF(e,i)})}catch(n){return a()&&(Z(e,j(n)),rI(e,`Command \`/${t}\` failed unexpectedly.`),vE(e,!1,!1,{contentChanged:!0})),`failed`}return o.content&&a()&&rI(e,o.content),o.failed?(a()&&(Z(e,o.content||`Command /${t} failed.`),vE(e,!1,!1,{contentChanged:!!o.content})),`failed`):(o.trackRunId&&a()&&(e.chatRunId=o.trackRunId,e.chatStream=``,e.chatSending=!1),o.pendingCurrentRun&&e.chatRunId&&a()&&rm(e,`/${t} ${n}`.trim(),e.chatRunId,gc(e.hello,e.client?.instanceId,e.selfUser)??void 0),o.modelChanged&&a()&&await e.refreshCurrentSessionTools?.(),o.action===`refresh`&&a()&&await e.refreshCurrentChat?.(),a()&&vE(e,!1,!1,{contentChanged:!!o.content}),`completed`)}function rI(e,t){bg(e,[...e.chatMessages,{role:`system`,content:t,timestamp:Date.now()}])}var iI,aI,oI;function sI(){return(sI=e((()=>{b(),il(),nl(),Cs(),N(),ne(),un(),O(),RF(),JP(),S_(),pm(),PD(),jg(),OO(),OE(),iI=0,aI=6e4,oI=new WeakMap})))()}function cI(e,t){let n=[],r=new Set;for(let i of e){let e=i.deviceId.trim();i.kind===t&&e&&e!=="default"&&!r.has(e)&&(r.add(e),n.push({deviceId:e,label:i.label.trim()||M(t===`audioinput`?`chat.composer.microphoneFallback`:`chat.composer.cameraFallback`,{number:String(n.length+1)})}))}return n}function lI(e,t){let n=e.filter(e=>e.kind===t);return n.length===0||n.some(e=>!e.deviceId||!e.label)}function uI(e){return e instanceof DOMException||e instanceof Error&&e.name===`OverconstrainedError`?e.name:void 0}function dI(e){return wI[uI(e)??``]??`failed`}function fI(e,t){let[n,r]=CI[e];return M(t===`audioinput`?n:r)}function pI(e){let t=globalThis.navigator?.mediaDevices;return t?.addEventListener?(t.addEventListener(`devicechange`,e),()=>t.removeEventListener(`devicechange`,e)):()=>void 0}function mI(e){return fI(dI(e),`audioinput`)}async function hI(e,t){let n=globalThis.navigator?.mediaDevices;if(!n?.enumerateDevices)return{devices:[],permissionRequired:!1,issue:`list-unsupported`};let r=e(),i;try{i=await n.enumerateDevices()}catch(n){return!r&&e()?hI(e,t):{devices:[],permissionRequired:!1,issue:dI(n)}}let a=lI(i,t);if(!a||!n.getUserMedia||!e())return{devices:cI(i,t),permissionRequired:a,issue:null};try{return(await n.getUserMedia(t===`audioinput`?{audio:!0}:{video:!0})).getTracks().forEach(e=>e.stop()),i=await n.enumerateDevices(),{devices:cI(i,t),permissionRequired:lI(i,t),issue:null}}catch(e){return{devices:cI(i,t),permissionRequired:a,issue:dI(e)}}}async function gI(e){return hI(e,`audioinput`)}async function _I(e){return hI(e,`videoinput`)}function vI(e){let t=e?.trim();return{autoGainControl:!0,echoCancellation:!0,noiseSuppression:!0,...t?{deviceId:{exact:t}}:{}}}function yI(e){return e.reason instanceof Error?e.reason:new DOMException(`Realtime Talk input cancelled`,`AbortError`)}async function bI(e,t){if(t?.aborted)throw yI(t);let n=e();try{return await El(n,t,yI)}catch(e){throw t?.aborted?(n.then(e=>e.getTracks().forEach(e=>e.stop()),()=>void 0),yI(t)):e}}async function xI(e,t={}){let n=globalThis.navigator?.mediaDevices;if(!n?.getUserMedia)throw Error(M(`chat.composer.realtimeTalkRequiresMicrophone`));let r;try{r={stream:await bI(()=>n.getUserMedia({audio:vI(e)}),t.signal)}}catch(t){let n=uI(t);if(!n||n===`AbortError`)throw t;if(e?.trim()&&n===`OverconstrainedError`)throw new TI;r={failure:mI(t)}}if(`failure`in r)throw Error(r.failure);let{stream:i}=r;if(t.signal?.aborted)throw i.getTracks().forEach(e=>e.stop()),yI(t.signal);return i}async function SI(e,t={}){let n=globalThis.navigator?.mediaDevices;if(!n?.getUserMedia)throw Error(M(`chat.composer.cameraAccessFailed`));let r=e?.trim(),i;try{let e=await bI(()=>n.getUserMedia({video:!r||{deviceId:{exact:r}}}),t.signal);if(t.signal?.aborted)throw e.getTracks().forEach(e=>e.stop()),yI(t.signal);i={stream:e}}catch(e){if(t.signal?.aborted)throw yI(t.signal);let n=uI(e);i={failure:r&&n===`OverconstrainedError`?M(`chat.composer.selectedCameraUnavailable`):fI(dI(e),`videoinput`)}}if(`failure`in i)throw Error(i.failure);return i.stream}var CI,wI,TI,EI;function DI(){return(DI=e((()=>{jl(),b(),CI={"list-unsupported":[`chat.composer.microphoneListUnsupported`,`chat.composer.cameraListUnsupported`],"none-found":[`chat.composer.microphoneNoneFound`,`chat.composer.cameraNoneFound`],"permission-blocked":[`chat.composer.microphonePermissionBlocked`,`chat.composer.cameraPermissionBlocked`],busy:[`chat.composer.microphoneBusy`,`chat.composer.cameraBusy`],"page-inactive":[`chat.composer.microphonePageInactive`,`chat.composer.cameraPageInactive`],failed:[`chat.composer.microphoneAccessFailed`,`chat.composer.cameraAccessFailed`]},wI={NotAllowedError:`permission-blocked`,NotFoundError:`none-found`,NotReadableError:`busy`,InvalidStateError:`page-inactive`},TI=class extends Error{constructor(){super(M(`chat.composer.selectedMicrophoneUnavailable`)),this.name=`RealtimeTalkSelectedMicrophoneError`}},EI=class{constructor(e,t){this.onEnded=e,this.onConnecting=t,this.controller=null,this.media=null}get stream(){return this.media}requireStream(){let e=this.media;if(!e)throw Error(M(`chat.composer.microphoneStopped`));return e}adopt(e){let t=this.requireStream();return this.onEnded=e,t}async open(e){this.stop();let t=new AbortController;this.controller=t;try{this.onConnecting?.(M(`chat.composer.microphoneAccessPending`));let n=await xI(e,{signal:t.signal});if(t.signal.aborted)throw n.getTracks().forEach(e=>e.stop()),yI(t.signal);this.media=n;let r=()=>{this.controller===t&&(this.stop(),this.onEnded(M(`chat.composer.microphoneStopped`)))};for(let e of n.getTracks())e.addEventListener(`ended`,r,{signal:t.signal});return this.onConnecting?.(),n}catch(e){throw this.controller===t&&this.stop(),e}}stop(){let e=this.controller,t=this.media;this.controller=null,this.media=null,e?.abort(),t?.getTracks().forEach(e=>e.stop())}}})))()}var OI;function kI(){return(kI=e((()=>{OI=class{constructor(){this.listeners=new Set,this.currentLevel=0}get value(){return this.currentLevel}set(e){let t=Math.round((Number.isFinite(e)?Math.min(1,Math.max(0,e)):0)*100)/100;if(t!==this.currentLevel){this.currentLevel=t;for(let e of this.listeners)e(t)}}subscribe(e){return this.listeners.add(e),e(this.currentLevel),()=>this.listeners.delete(e)}}})))()}function AI(e,t,n,r,i=!0){nN(e,P(t),n,e=>void NI(e,t,r),i)}async function jI(e,t,n,r,i=!1){let a=e.client,o=e.connectionEpoch;if(!a||!e.connected)return`blocked`;let s=(n.sendAttempts??0)===0&&n.sendRequestStartedAtMs===void 0;if(s&&n.queueMode&&n.sendState!==`unconfirmed`)return`send`;if(s){let n=!_(t.sessionKey)||e.sessions.state.agentId===t.agentId?e.sessions.state.result?.sessions.find(e=>at(e.key,t.sessionKey)):void 0;if(n&&Ll(n))return`blocked`}let c=[e,t,n,a,o,n=>AI(e,t,n,r)],l=()=>e.connected&&e.client===a&&e.connectionEpoch===o,u;try{u=await Yl(()=>import(`./chat-outbox-receipts-CsdIt2fH.js`),__vite__mapDeps([13,0,2,1,3,4,5,6,7]),import.meta.url)}catch(n){return l()&&(Q(e,t.sessionKey,t.agentId,j(n)),e.requestUpdate?.()),`blocked`}if(!l())return`blocked`;let{readCurrentStoredChatHistory:d,isInterruptedChatInput:f}=u,p=await d(...c);if(typeof p!=`string`&&f(p,n)&&(n.queueMode===`steer`||n.queueMode===`interrupt`||!(A(e,t.sessionKey,t.agentId)&&nO(e))))return`send`;if(p===`blocked`||p===`continue`||n.sendState===`unconfirmed`&&!i)return p===`continue`?`continue`:`blocked`;if(A(e,t.sessionKey,t.agentId)&&nO(e))return`blocked`;if((n.sendAttempts??0)>0){let r=await d(...c);return r===`blocked`||r===`continue`?r:em(e,e=>{let t=e.chatQueue.find(e=>e.id===n.id);return t?.sendState===`sending`&&Go(t,{...n,sendState:`sending`})})?`blocked`:i?`send`:(am(e,n.id,e=>({...e,sendError:`Delivery has not been confirmed. Check the conversation — retry only if your message didn't arrive.`,sendState:`unconfirmed`}))&&Q(e,t.sessionKey,t.agentId,lv,{inline:!n.localCommandName}),`blocked`)}return`send`}async function MI(e,t,n){for(;;){let r=e.host;if(C_(r,t.sessionKey,t.agentId)?.providerReview)return w_(r,t.sessionKey,t.agentId),`blocked`;if(!r.connected||!r.client||rv(r,t.sessionKey,!1,t.agentId))return`blocked`;let i=ha(r,t);if(!i)return`empty`;let a=i.queue.find(t=>e.freshAdmissions.has(t.id)&&(t.queueMode||!t.intent&&e.pendingOptions.get(t.id)?.allowActiveRunSend))??i.queue.find(t=>e.freshAdmissions.has(t.id)||t.sendState!==`failed`||t.localCommandName);if(!a)return`empty`;let o=e.freshAdmissions.has(a.id),s=o?X(r,a.id)??a:a;if(s.sendState===`failed`&&!o)return`empty`;if(!o&&Y(r).hasPendingSubmission(i,a)||s.sendState===`held`||s.sendState===`unconfirmed`&&(!s.sendRunId||s.localCommandName)||s.sendState===`waiting-model`&&!e.pendingOptions.has(s.id)||ZN(r,s.id))return Y(r).syncHost(r),`blocked`;let c=A(r,i.sessionKey,i.agentId);if(s.localCommandName){let t=(e,t)=>am(r,s.id,n=>({...n,sendError:t,sendState:e}));if(!c||nO(r))return e.waitingForVisibleOwner=!c,e.freshAdmissions.delete(s.id),e.pendingOptions.delete(s.id),`blocked`;if(Y(r).syncHost(r),s.localCommandName===`reset`){if((s.sendAttempts??0)>0||s.sendRequestStartedAtMs!==void 0)return t(`unconfirmed`,lv),`blocked`;let a=VF(r);if(!a)return t(`failed`,`The Gateway connection changed. Retry the command.`),`blocked`;let o=GF(r,a);if(!o.allowed)return t(`failed`,o.reason),Z(r,o.reason),`blocked`;let c=await tI(r,{sessionKey:i.sessionKey,...i.agentId?{agentId:i.agentId}:{}});if(c===`deferred`)return t(`waiting-idle`),`blocked`;if(c===`cancelled`){if(!Y(r).remove(r,s.id))return`blocked`;continue}let l=GF(r,a);if(!l.allowed)return t(`failed`,l.reason),Z(r,l.reason),`blocked`;e.pendingOptions.set(s.id,{...e.pendingOptions.get(s.id),target:a});let u=await n.sendQueuedChatMessage(r,s.id,e.pendingOptions.get(s.id),i.sessionKey);if(e.outcomes.set(s.id,u),e.pendingOptions.delete(s.id),u!==`sent`)return`blocked`;continue}let a=e.freshAdmissions.delete(s.id);if(e.pendingOptions.delete(s.id),!a){let e=await jI(r,i,s,n);if(e===`blocked`)return`blocked`;if(e===`continue`)continue}if(rv(r,i.sessionKey,!1,i.agentId))return`blocked`;let o=t(`executing-command`);if(!o)return`blocked`;let l=r.client,u=r.connectionEpoch,d=()=>r.connected&&r.client===l&&r.connectionEpoch===u&&A(r,i.sessionKey,i.agentId),f=(e,n=!1)=>{let a=t(`failed`,e);return(!a||n)&&Q(r,i.sessionKey,i.agentId,a?e:$),`blocked`};try{let e=await nI(r,o.localCommandName??s.localCommandName,o.localCommandArgs??``,{sendResetMessage:(e,t)=>n.sendResetSlashCommand(r,e,t)});if(e===`deferred`)return t(`waiting-idle`),`blocked`;if(e===`failed`){let e=d(),t=(e?r.lastError:null)??`Command /${s.localCommandName} failed.`,n=!A(r,i.sessionKey,i.agentId);return f(t,!e&&n)}if(e===`uncertain`){let e=ha(r,i),t=e?.queue.findIndex(e=>e.id===s.id)??-1,n=t>=0?e?.queue[t+1]:void 0;if(n&&!am(r,n.id,e=>({...e,sendError:LI,sendState:`unconfirmed`})))return Z(r,$),`blocked`}if(!Y(r).remove(r,s.id))return Q(r,i.sessionKey,i.agentId,$),`blocked`;if(e===`uncertain`)return`blocked`;d()&&Z(r,null)}catch(e){return f(j(e),!0)}continue}if(_(i.sessionKey)&&!i.agentId)return e.freshAdmissions.delete(s.id),e.pendingOptions.delete(s.id),`blocked`;let l=e.freshAdmissions.delete(s.id),u=e.pendingOptions.get(s.id),d=l&&s.sendState===`unconfirmed`;if(!l||d||!c){let e=await jI(r,i,a,n,d);if(e===`blocked`)return`blocked`;if(e===`continue`)continue}let f=ha(r,t),p=l?X(r,s.id):f?.queue.find(e=>e.id===s.id);if(!f||!p||!Go(p,s)){e.pendingOptions.delete(s.id);continue}Y(r).syncHost(r);let m=await n.sendQueuedChatMessage(r,s.id,c?u:{...u,routingSessionKey:void 0},i.sessionKey);if(e.outcomes.set(s.id,m),e.pendingOptions.delete(s.id),m===`pending`){let n=ha(r,t)?.queue.find(e=>e.id===s.id);if(!n||n.orderKey!==s.orderKey)continue;return!u?.pendingSettings&&e.freshAdmissions.size===0&&(e.rerun=!1),`blocked`}}}async function NI(e,t,n,r,i,a){let o=e.client;if(!e.connected||!o)return;let s=P(t),c=RI.get(o)??new Map;RI.set(o,c);let l=A(e,t.sessionKey,t.agentId);if(rN(e,s,l,r))return;let u=c.get(s);if(u){let n=u.host===e,s=!u.owner.host.connected||u.owner.host.client!==o||u.owner.connectionEpoch!==u.owner.host.connectionEpoch;return(!u.host.connected||u.host.client!==o||!A(u.host,t.sessionKey,t.agentId)&&l)&&(u.host=e,u.rerun||=u.waitingForVisibleOwner===!0&&l),u.rerun||=(a??n)||!!r||s,r&&i&&u.pendingOptions.set(r,i),r&&u.freshAdmissions.add(r),!r&&u.pendingOptions.size?void 0:(await u.promise,r?u.outcomes.get(r):void 0)}let d={owner:{host:e,connectionEpoch:e.connectionEpoch},freshAdmissions:new Set(r?[r]:[]),host:e,outcomes:new Map,pendingOptions:new Map(r&&i?[[r,i]]:[]),promise:Promise.resolve(),rerun:!1};c.set(s,d),d.promise=(async()=>{do d.rerun=!1,d.waitingForVisibleOwner=!1,d.owner={host:d.host,connectionEpoch:d.host.connectionEpoch},await MI(d,t,n);while(d.rerun)})();try{return await d.promise,iN(o,s),r?d.outcomes.get(r):void 0}finally{c.get(s)===d&&c.delete(s)}}async function PI(e,t,n){let r=e.client;if(!e.connected||!r)return;Y(e).syncHost(e,{requestUpdate:!1});let i=n?xe(n.payload):void 0;if(n&&!i)return;let a=Za(e).filter(e=>!i||at(e.sessionKey,i.key)&&(!_(e.sessionKey)||i.agentId!==null&&e.agentId===Ql(i.agentId))),o=II.get(r)??new WeakSet;II.set(r,o);let s=n?!o.has(n):void 0;n&&a.length>0&&o.add(n),await Promise.allSettled(a.filter(e=>!n||s||RI.get(r)?.has(P(e))).map(n=>NI(e,n,t,void 0,void 0,s)))}async function FI(e,t){let n=Za(e).find(t=>A(e,t.sessionKey,t.agentId));n&&await NI(e,n,t,void 0,void 0,!0)}var II,LI,RI;function zI(){return(zI=e((()=>{Na(),Ga(),Rc(),N(),un(),O(),we(),sI(),S_(),Zp(),sN(),T_(),pm(),uv(),sP(),OO(),$l(),II=new WeakMap,LI=`A preceding /clear may have completed. Review the current conversation before retrying.`,RI=new WeakMap})))()}async function BI(e,t,n,r=e.sessionKey,i=!0){let a=n?.storageMode??`durable`,o=X(e,t),s=o?.localCommandName===`reset`&&!!n?.target;if(!o||o.pendingRunId||o.localCommandName&&!s)return`failed`;let c=o.sessionKey??r,l=o.agentId,u=()=>!n?.canDispatch||n.canDispatch()?!0:(hP(e,a,t)(`failed`,vc),Q(e,c,l,vc),!1);if(!u())return`failed`;let d=fP(e,o,n),f=pP(e,o,r,n);if(f){let e=await f;if(!u())return`failed`;if(!e)return`pending`;({item:o,expectedLeafEntryId:d}=e)}if(a===`durable`&&(o.attachments?.length||o.attachmentPayload||o.attachmentStorageError)){let t=await CP(e,o,r);if(!u())return`failed`;if(typeof t==`string`)return t;o=t}return xP(e,o,a,o.sessionKey??r,n,t=>u()?VI(e,o,t,n,r,d,s,i):`failed`)}async function VI(e,t,n,r,i,a,o,s){let c=t.id,l=r?.storageMode??`durable`,u=t.sessionKey??i,d=r?.routingSessionKey??u,f=gP(e,n,l,u,r);if(typeof f!=`string`&&t.attachmentPayload&&(f={...f,attachments:t.attachments}),typeof f==`string`)return f;if(!f.sendRunId||!f.sendState){let t=f.sessionKey??i;f=mP(e,l,f.id,n=>({...n,sendAttempts:n.sendAttempts??0,sendRunId:n.sendRunId??bl(),sendState:e.connected&&e.client?`sending`:`waiting-reconnect`,sessionKey:t,agentId:n.agentId??ze(e,t)}))??`pending`}if(typeof f==`string`)return Z(e,$),f;o&&(f={...f,refreshSessions:!0,text:f.localCommandArgs?`/reset ${f.localCommandArgs}`:`/reset`});let p=Qa(f.text,f.mentions),m=f.intent?f.text:p.text,h=(t.attachmentPayload?t.attachments:f.attachments)??[];if(!m&&h.length===0)return Y(e).remove(e,c),`sent`;let g=f.sessionKey??e.sessionKey,_=hP(e,l,c);if(r?.target){let t=GF(e,r.target);if(!t.allowed)return _(`failed`,t.reason),Q(e,g,f.agentId,t.reason),`failed`}if(!e.connected||!e.client){let t=_(`waiting-reconnect`);return!t&&MN(e,f,r)?`failed`:(t||(_(`failed`,$),Q(e,g,f.agentId,$)),`pending`)}if(yP(e,f,h,g,r))return`failed`;let v=dP(e),y=f.sendRunId??bl(),b=Date.now(),x=cj(),S=mP(e,l,c,e=>({...e,sendAttempts:(e.sendAttempts??0)+1,sendError:void 0,sendRunId:y,sendState:`sending`,sendRequestStartedAtMs:x,sessionKey:g,agentId:f.agentId}));if(!S)return Q(e,g,f.agentId,$),`pending`;VN(e,S,y,x),zN(e,S,`request-start`,S.sendSubmittedAtMs);let C={sessionKey:g,...f.agentId?{agentId:f.agentId}:{}},w=()=>A(e,g,f.agentId),ee=s&&w()?SD(e,d):void 0;w()&&(e.chatSendingScopeKey=P(C),e.chatSending=!0,e.chatRunId||(QD(e),e.providerPolicyNotice=null),Z(e,null),bO(e,{clearRunStatus:!0,clearIndicators:!e.chatRunId}));try{if(r?.canDispatch&&!r.canDispatch())return _(`failed`,vc),Q(e,g,f.agentId,vc),`failed`;let t=f.intent?f.expectedLeafEntryId:a,n=await PN(e,{message:m,workContext:f.workContext,mentions:p.mentions,attachments:h.length?h:void 0,runId:y,sessionKey:g,agentId:f.agentId,...f.sessionId?{sessionId:f.sessionId}:{},...f.intent?{intent:f.intent,sessionId:f.sessionId}:{},...f.queueMode?{queueMode:f.queueMode}:{},...f.queueMode!==`steer`&&t!==void 0?{expectedLeafEntryId:t}:{},...f.replyToId?{replyToId:f.replyToId}:{}});if(!v())return`pending`;if(HN(e,y,n,S,x),zN(e,S,`ack`,S.sendSubmittedAtMs,{ackStatus:n.status,requestDurationMs:lj(cj()-x),...UN(n)}),xf(n)){if(n.stopReason===`restart`&&l===`durable`)return _(`waiting-reconnect`),`pending`;let t=av(n,`chat`);vP(e,C);let i=r?.restoreOnTerminalFailure===!0&&MN(e,f,r);if(i||_(`failed`,t),w()){let t=dg(e,{sessionKey:g,agentId:f.agentId});Dg(e,{type:`sendFailed`,runId:y},{scope:t});let r=e.chatRunId===n.runId;bO(e,{outcome:`interrupted`,sessionStatus:n.status===`error`?`failed`:`killed`,runId:n.runId,sessionKey:g,clearIndicators:r,clearLocalRun:r,clearChatStream:r,clearToolStream:r,publishRunStatus:!1,armLocalTerminalReconcile:(!e.chatRunId||r)&&n.runId===y})}return Q(e,g,f.agentId,t,{inline:l===`durable`&&!i}),zN(e,S,`failed`,S.sendSubmittedAtMs,{error:t,ackStatus:n.status}),`failed`}let i=l===`memory`||n.messageSeq!==void 0||n.status===`ok`&&!nv(f),o=!1;if(i&&(Y(e).remove(e,c),o=l===`durable`&&X(e,c)!==null),w()){if(i){let t=dg(e,{sessionKey:g,agentId:f.agentId}),r=Am({...f,text:m,mentions:p.mentions,attachments:h,createdAt:b,runId:y});r&&Dg(e,{type:`sendPending`,runId:y,message:r},{scope:t}),n.runId!==y&&Dg(e,{type:`sendAcknowledged`,previousRunId:y,runId:n.runId},{scope:t})}if(n.status===`ok`)bO(e,{outcome:`done`,sessionStatus:`done`,runId:n.runId,sessionKey:g,clearLocalRun:!0,clearChatStream:!0,clearToolStream:!0,publishRunStatus:!1,armLocalTerminalReconcile:!0}),Cj(e).then(()=>FI(e,UI));else if(Yd(n.status)){(!e.chatRunId||f.queueMode===`interrupt`)&&rO(e,n.runId,b);let t=f.sessionId&&e.sessionsResult?.sessions.some(e=>e.sessionId===f.sessionId&&[`requested`,`provisioning`,`syncing`,`starting`].includes(e.placement?.state??``));f.queueMode!==`steer`&&n.messageSeq===void 0&&t&&Cj(e,{deferBranches:!0})}}if(f.refreshSessions){let t={sessionKey:g,agentId:f.agentId};n.status===`ok`?hD(e,t):Yd(n.status)&&e.refreshSessionsAfterChat.set(n.runId,t)}return Ff(cm(e,h)),o?(Q(e,g,f.agentId,$),`pending`):i?`sent`:`pending`}catch(n){if(!v())return`pending`;let a=n instanceof Zn?li(n.details):void 0;if(a){let t=RD(n);vP(e,C);let o=_(`failed`,t);zN(e,f,`failed`,f.sendSubmittedAtMs,{error:t});let u=s?await ee?.(a):void 0;if(u?.()&&v()&&w()){let t=X(e,c);if(!o||!t||!Go(o,t))return`failed`;if(mP(e,l,c,e=>({...e,sendRunId:bl(),sendError:void 0,sessionId:a.recovery?.sessionId,sendState:`sending`})))return await BI(e,c,{...r,canDispatch:u,allowActiveRunSend:!0},i,!1)}let d=MN(e,f,r);return Q(e,g,f.agentId,w()&&e.chatError||t,{inline:l===`durable`&&!d}),`failed`}return bP(e,t,f,n,r,C,t=>AI(e,C,t,UI))}finally{v()&&vP(e,C)}}async function HI(e,t,n={}){let r=t.sessionKey??e.sessionKey,i=n.storageMode??`durable`,a=n.routingSessionKey??r,o=dP(e,!1),s=t.agentId??ze(e,a)??void 0,c={...n,routingSessionKey:a,storageMode:i},l;if(i===`memory`)l=await BI(e,t.id,c,r);else{let n=Za(e).find(e=>e.queue.some(e=>e.id===t.id));if(!n)return`pending`;let o=async o=>{let s=A(e,a,o.agentId);if(s&&!o.queueMode&&!c.allowActiveRunSend&&(nO(e)||oO(e))){let a=gP(e,o,i,r,c);if(typeof a==`string`)return a===`pending`&&n.queue[0]?.id!==t.id&&NI(e,n,UI),a}return!e.connected||!e.client?`pending`:(s?await NI(e,n,UI,t.id,{...c,pendingSettings:void 0}):await NI(e,n,UI))??`pending`},s=t.localCommandName?void 0:c.pendingSettings??aD(e,a,t.agentId);l=s?await xP(e,t,i,r,{...c,pendingSettings:s},o):await o(t)}return l===`sent`&&A(e,r,s)&&(HD(e),n.restoreDraft&&n.previousDraft?.trim()&&(e.chatMessage=n.previousDraft,e.chatMentions=n.previousMentions??[],e.chatReplyTarget=n.previousReplyTarget??null),n.restoreAttachments&&n.previousAttachments?.length&&(e.chatAttachments=n.previousAttachments)),o()&&A(e,a,s)&&vE(e,!0,!0),l===`sent`&&A(e,r,s)&&!e.chatRunId&&FI(e,UI),l}var UI;function WI(){return(WI=e((()=>{si(),Ud(),tr(),Ws(),Na(),Ga(),Rc(),un(),hl(),J(),sI(),S_(),Ej(),zI(),Zp(),pm(),Sf(),NN(),wP(),RN(),uv(),JN(),DD(),uD(),zD(),jg(),JD(),hj(),OO(),OE(),jm(),UI={sendQueuedChatMessage:BI,async sendResetSlashCommand(e,t,n){let r=cP(e,t,void 0,!0,void 0,uP(e)),i=r?lP(e,r.item):void 0;if(!r||!i||!sm(e,r.admission,i)){i&&jN(e,i,{previousDraft:n.previousDraft}),Z(e,$);return}await HI(e,i,{previousDraft:n.previousDraft,restoreDraft:n.restoreDraft,routingSessionKey:e.sessionKey,target:n.target})}}})))()}var GI=t({retryQueuedChatMessage:()=>YI});function KI(e){return!!(e.sendRunId&&!e.localCommandName&&(e.sendState===`unconfirmed`||e.sendState===`held`&&((e.sendAttempts??0)>0||e.sendRequestStartedAtMs!==void 0)))}async function qI(e,t){if(!(C_(e)?.providerReview||h_(e))){if(X(e,t)?.intent){Z(e,M(`chat.goals.admissionImmutable`));return}if(ZN(e,t)){Z(e,oP);return}if(!am(e,t,e=>({...e,queueMode:`steer`}))){Z(e,$);return}await YI(e,t)}}function JI(e,t,n){let r=Y(e),i=r.locate(e,t);if(!i||!Zi(i.item))return`noop`;if(ZN(e,t))return Z(e,iP),`rejected`;let a=r.snapshot(e,i.scope),o=Oa(a).find(e=>e.some(e=>e.id===t)),s=o?.findIndex(e=>e.id===t)??-1,c=o?.findIndex(e=>e.id===n)??-1;if(s<0||c<0||s===c)return`noop`;if(o.slice(Math.min(s,c),Math.max(s,c)+1).some(t=>ZN(e,t.id)))return Z(e,iP),`rejected`;let l=Oa(o,t=>!ZN(e,t.id)).find(e=>e.some(e=>e.id===t)),u=l?.findIndex(e=>e.id===n)??-1,d=No(l??[],t,u);if(d.length===0)return`noop`;let f=new Map(d.map(e=>[e.id,e])),p=new Set(l.map(e=>e.id));if(a.map(e=>f.get(e.id)??e).toSorted(mo).some((e,t)=>!p.has(e.id)&&a[t]?.id!==e.id))return`noop`;if(Y(e).update(e,d.map(e=>({id:e.id,update:t=>({...t,orderKey:e.orderKey})})))===null)return Z(e,$),`rejected`;for(let t of[`lastError`,`chatError`])e[t]===`A queued message is being edited in another pane. Finish or cancel that edit before reordering it.`&&(e[t]=null);return`moved`}async function YI(e,t,n){if(C_(e)?.providerReview||h_(e)||n&&!n())return;let r=e.chatQueue.find(e=>e.id===t);if(m_(e,r?.sessionKey??e.sessionKey))return;let i=r?.sendState===`failed`&&!r.localCommandName,a=r!==void 0&&KI(r);if(ZN(e,t)){Z(e,aP);return}if(!r||r.pendingRunId||r.sendState===`executing-command`||r.sendState===`submitting`||r.sendState===`sending`||r.sendState===`waiting-model`)return;let o=Y(e),s=o.locate(e,r.id);if(!s)return;if(!s.durable){let i=Y(e).hasVolatile(e,r.id);if(!sm(e,{...tc(e,s.scope.sessionKey,s.scope.agentId),scope:s.scope},r)){if(i&&!r.localCommandName&&r.sendRunId&&(r.sendState===`failed`||r.sendState===`unconfirmed`||r.sendState===`held`)&&_P(e,r)){let r=Y(e).change(e,t,e=>XI(e,void 0));if(!r){Z(e,$);return}await HI(e,r,{routingSessionKey:r.sessionKey??e.sessionKey,storageMode:`memory`,canDispatch:n});return}Z(e,$);return}}let c=am(e,t,t=>XI(t,uP(e)));if(!c){Z(e,$);return}let l=o.locate(e,c.id);if(!l?.durable){Z(e,$);return}let u=l.scope,d=c.queueMode||i||a,f=NI(e,u,UI,d?c.id:void 0,d?{routingSessionKey:e.sessionKey,canDispatch:n,...i?{allowActiveRunSend:!0}:{}}:void 0);e.chatSending&&e.chatSendingScopeKey===P(u)||(await f,e.chatRunId||FI(e,UI))}var XI,ZI,QI;function $I(){return($I=e((()=>{b(),Ja(),Rc(),hl(),S_(),zI(),Zp(),T_(),pm(),WI(),wP(),uv(),jp(),sP(),$a(),XI=(e,t)=>{let n=KI(e);return{...e,sendAttempts:n?e.sendAttempts:0,sendError:e.sendState===`failed`?e.sendError:void 0,sendRequestStartedAtMs:n?e.sendRequestStartedAtMs:void 0,sendRunId:e.sendState===`failed`&&e.queueMode!==`steer`&&!e.intent?bl():e.sendRunId,sendState:n?`unconfirmed`:t}},ZI=(e,t)=>PI(e,UI,t),QI=e=>FI(e,UI)})))()}var eL;function tL(){return(tL=e((()=>{lu(),B(),Ar(),ed(),bu(),b(),ca(),eD(),eL=class{constructor(){this.target=null,this.items=[],this.index=0,this.dismissed=null,this.resolver=new Uc,this.inserting=!1,this.acceptedEnter=!1,this.requestUpdate=null,this.anchor=new Su(()=>{let e=this.requestUpdate;this.dismiss(this.textarea),e?.()}),this.popup=null,this.textarea=null,this.popupRef=e=>{this.popup=e instanceof uu?e:null,this.syncAnchor()}}syncAnchor(){this.popup&&this.textarea&&this.target&&this.open?this.anchor.update(this.popup,this.textarea,this.target.start):this.anchor.close()}get open(){return this.items.length>0}close(){this.acceptedEnter=!1,this.anchor.close(),this.requestUpdate=null,this.textarea=null,this.target=null,this.items=[],this.index=0,this.dismissed=null,this.resolver.reset()}dismiss(e){this.close(),this.dismissed=e?{value:e.value,caret:e.selectionStart}:null}activeId(e){return this.open?YE(e,`emoji-option-${this.index}`):null}activeLabel(){return this.open?`:${this.items[this.index]}:`:``}update(e,t,n=!0){if(this.dismissed&&this.dismissed.caret===e.selectionStart&&this.dismissed.value===e.value)return;let r=n&&e.isConnected&&e.ownerDocument.activeElement===e&&!e.disabled&&!e.readOnly&&e.selectionStart===e.selectionEnd?this.resolver.find(e.value,e.selectionStart):null;if(r?.start===this.target?.start&&r?.query===this.target?.query&&r?.end===this.target?.end){r&&this.syncAnchor();return}let i=this.open;this.target=r,this.items=r?ia(r.query):[],this.index=0,this.dismissed=null,(i||this.open)&&t()}insert(e,t,n,r){if(e.disabled||e.readOnly||this.inserting)return!1;e.focus({preventScroll:!0});let i=e.selectionStart,a=e.selectionEnd;this.inserting=!0,this.close(),e.setSelectionRange(t.start,t.end);let o=!1;try{o=e.ownerDocument.execCommand?.(`insertText`,!1,n)??!1}finally{this.inserting=!1}return o||e.setSelectionRange(i,a),r(),o}complete(e,t,n=!0){let r=e.target;if(!n||this.inserting||e.isComposing||e.inputType!==`insertText`||e.data!==`:`||!(r instanceof HTMLTextAreaElement)||r.selectionStart!==r.selectionEnd||!e.cancelable)return!1;let i=r.selectionStart,a=this.resolver.find(r.value,i),o=a&&So(a.query);return!a||!o||!this.insert(r,{...a,end:i},o,t)?!1:(e.preventDefault(),!0)}handleKeyup(e){e.key===`Enter`&&(this.acceptedEnter=!1)}handleKeydown(e,t,n){if(e.key===`Enter`){if(!e.repeat)this.acceptedEnter=!1;else if(this.acceptedEnter)return e.preventDefault(),!0}let r=e.target;return!this.open||!(r instanceof HTMLTextAreaElement)||r.disabled||r.readOnly||r.selectionStart!==r.selectionEnd||e.shiftKey||e.altKey||e.isComposing||e.keyCode===229?!1:Ou(e,{count:this.items.length,index:this.index,consumeEmpty:!1,close:()=>{this.dismiss(r),n()},move:e=>(this.index=e,n(),this.activeId(t)),select:e=>{this.select(r,n),this.acceptedEnter=e===`Enter`}})}select(e,t,n=this.index){let r=this.resolver.find(e.value,e.selectionStart),i=So(this.items[n]??``);r&&i&&r.start===this.target?.start&&r.query===this.target.query&&this.insert(e,r,i,t)}render(e,t,n){if(!this.open||!t||t.disabled||t.readOnly)return z;this.requestUpdate=n,this.textarea=t,this.syncAnchor();let r=_u({className:`emoji-menu`,id:YE(e,`emoji-menu-listbox`),label:M(`chat.composer.emojiSuggestions`),content:this.items.map((r,i)=>$u({id:YE(e,`emoji-option-${i}`),active:i===this.index,select:()=>this.select(t,n,i),hover:()=>{this.index=i,n()},icon:So(r),iconHidden:!0,name:`:${r}:`,description:z}))});return R`<wa-popup ${Or(this.popupRef)} class="emoji-menu-popup">${r}</wa-popup>`}}})))()}function nL(e,t){if(e.trimStart().startsWith(`/`))return null;let n=e.slice(0,t),r=n.slice(n.lastIndexOf(`
`)+1);if(/^\s*>/u.test(r)||(n.match(/```/gu)?.length??0)%2!=0||(r.match(/`/gu)?.length??0)%2!=0)return null;let i=/(?:^|[\s([{])@(?! )([\p{L}\p{N}\p{M}_. -]{0,128})$/u.exec(n);if(!i)return null;let a=i[1]??``,o=t-a.length-1,s=t;for(;s<e.length&&/[\p{L}\p{N}\p{M}_.-]/u.test(e[s]??``);)s+=1;return{start:o,end:s,query:a,value:e}}var rL,iL,aL,oL,sL,cL;function lL(){return(lL=e((()=>{su(),B(),tr(),ed(),b(),Ws(),Eb(),eD(),rL=3e5,iL=18e5,aL=3e4,oL=15e3,sL=16,cL=class{constructor(){this.generation=0,this.target=null,this.search=null,this.index=0,this.selectedAvatars=new Map,this.results=new Map,this.requests=new Map}get open(){return this.target!==null}syncDirectory(e){(this.directory?.client!==e?.client||this.directory?.ownerKey!==e?.ownerKey||JSON.stringify(this.directory?.params)!==JSON.stringify(e?.params))&&(this.close(),this.results.clear(),this.requests.clear(),this.selectedAvatars.clear(),this.directory=e?{...e}:void 0)}cancelSearch(){this.generation+=1,clearTimeout(this.timer),this.timer=void 0}close(){this.cancelSearch(),this.target=null,this.search=null,this.index=0,this.selectedProfileId=void 0}dispose(){this.syncDirectory(void 0)}update(e,t,n=`selection`){let{value:r,selectionStart:i,selectionEnd:a}=e,o=this.directory?nL(r,i):null,s=n===`selection`&&this.target!==null&&(r!==this.target.value||o?.start!==this.target.start||a>this.target.end);if(!o||s||!this.open&&n!==`trigger`){this.open&&(this.close(),t());return}let c=this.target;c?.start===o.start&&n!==`trigger`&&(o.end=Math.max(o.end,c.end+r.length-c.value.length)),c?.start!==o.start&&(this.selectedProfileId=void 0),this.target=o,(c?.start!==o.start||c.query!==o.query)&&this.searchPeople(t)}showResults(e){this.index=Math.max(0,e.users.findIndex(e=>e.profileId===this.selectedProfileId)),this.selectedProfileId=e.users[this.index]?.profileId,this.search={kind:`ready`,result:e}}searchPeople(e){let t=this.target,n=this.directory;if(!t||!n)return;this.cancelSearch();let r=t.query,i=this.results.get(r);if(i&&Date.now()-i.fetchedAt>=iL&&(this.results.delete(r),i=void 0),i){if(this.showResults(i.result),Date.now()<i.refreshAfter&&!this.requests.has(r)){e();return}}else this.search={kind:`loading`};let a=this.generation;this.timer=setTimeout(()=>{this.timer=void 0;let t=this.results.get(r);if(t&&t!==i&&Date.now()<t.refreshAfter){this.showResults(t.result),e();return}let o=this.requests.get(r);o||(i&&(i.refreshAfter=Date.now()+aL),o=n.client.request(`users.mentionable`,{...n.params,query:r},{timeoutMs:oL}).then(e=>{if(this.directory===n){this.results.delete(r),this.results.size===sL&&this.results.delete(this.results.keys().next().value);let t=Date.now();this.results.set(r,{result:e,fetchedAt:t,refreshAfter:t+rL})}return e}).finally(()=>{this.directory===n&&this.requests.delete(r)}),this.requests.set(r,o)),o.then(t=>{a===this.generation&&(this.showResults(t),e())},t=>{let r=t instanceof Zn&&(t.gatewayCode!==`UNAVAILABLE`||Tn(t)===Wl.AUTHENTICATED_PROFILE_UNAVAILABLE);this.directory===n&&r?(this.results.clear(),this.requests.clear(),this.directory={...n},this.cancelSearch(),this.open&&(this.search={kind:`error`},e())):a===this.generation&&!i&&(this.search={kind:`error`},e())})},150),e()}activeId(e){return this.search?.kind===`ready`&&this.search.result.users[this.index]?YE(e,`mention-option-${this.index}`):null}activeLabel(){return this.search?.kind===`ready`?this.search.result.users[this.index]?.displayName??``:``}handleKeydown(e,t,n){if(!this.open||e.defaultPrevented||e.isComposing||e.keyCode===229||this.search?.kind===`error`&&e.key===`Tab`)return!1;let r=this.search?.kind===`ready`?this.search.result.users:[];return Ou(e,{count:r.length,index:this.index,consumeEmpty:!0,close:()=>{this.close(),n()},move:e=>(this.index=e,this.selectedProfileId=r[e]?.profileId,n(),this.activeId(t.paneId)),select:()=>this.select(r[this.index],t,n)})}select(e,t,n){let r=t.getTextarea(),i=r?.value??t.getDraft();this.update(r??{value:i,selectionStart:i.length,selectionEnd:i.length},n);let a=this.target;if(!a||t.getMentions().length>=10)return;let o=`@${e.displayName}`,s=`${o} `,c=`${i.slice(0,a.start)}${s}${i.slice(a.end)}`,l=[...lo(i,c,t.getMentions(),{value:i,start:a.start,end:a.end,inputType:`insertReplacementText`}),{profileId:e.profileId,start:a.start,end:a.start+o.length}].toSorted((e,t)=>e.start-t.start);for(let e of this.selectedAvatars.keys())l.some(t=>t.profileId===e)||this.selectedAvatars.delete(e);e.avatarUrl?this.selectedAvatars.set(e.profileId,e.avatarUrl):this.selectedAvatars.delete(e.profileId),t.commitDraft(c,l),this.close(),n(),queueMicrotask(()=>{let e=t.getTextarea();e?.focus({preventScroll:!0}),e?.setSelectionRange(a.start+s.length,a.start+s.length)})}get selectedAvatarUrls(){return this.selectedAvatars}render(e,t){if(!this.open)return z;let n=this.search?.kind===`ready`?this.search.result:void 0,r=e.getMentions().length>=10,i=this.search?.kind===`loading`,a=r?M(`chat.mentions.limit`):this.search?.kind===`error`?M(`chat.mentions.unavailable`):!i&&!n?.users.length?M(`chat.mentions.empty`):null;return _u({id:YE(e.paneId,`mention-menu-listbox`),className:`mention-menu`,label:M(`chat.mentions.menu`),trackScroll:!1,activeId:this.activeId(e.paneId),content:R` <div class="slash-menu-group" aria-busy=${i}>
<div class="slash-menu-group__label" role="status">
${a??M(`chat.mentions.menu`)}
</div>
${this.search?.kind===`error`&&!r?R`<button
type="button"
class="btn btn--sm mention-menu__retry"
@click=${()=>{this.searchPeople(t),e.getTextarea()?.focus({preventScroll:!0})}}
>
${M(`common.retry`)}
</button>`:z}
${a?z:i?[0,1,2].map(()=>R`<div class="slash-menu-item mention-menu__loading" aria-hidden="true">
<span class="slash-menu-icon"
><span class="skeleton mention-menu__avatar"></span
></span>
<span class="skeleton skeleton-line skeleton-line--medium"></span>
</div>`):n?.users.map((n,r)=>$u({id:YE(e.paneId,`mention-option-${r}`),active:r===this.index,select:()=>this.select(n,e,t),hover:()=>{this.index=r,this.selectedProfileId=n.profileId,t()},icon:Cb({id:n.profileId,name:n.displayName,identity:{type:`profile`,id:n.profileId},profileAvatarUrl:n.avatarUrl}),iconHidden:!0,name:n.displayName,description:n.online?M(`chat.mentions.online`):z}))}
${n?.truncated?R`<div class="slash-menu-group__label">${M(`chat.mentions.truncated`)}</div>`:z}
</div>`})}}})))()}function uL(e){return e.toLowerCase().replace(/[^a-z0-9_-]+/gu,`-`).replace(/^-+|-+$/gu,``)||`item`}function dL(e,t){return YE(e,`slash-option-command-${uL(t.name)}`)}function fL(e,t,n){return YE(e,`slash-option-arg-${uL(t)}-${uL(n)}`)}function pL(e){return F[e]??F.terminal}function mL(e,t){let n=e.toLowerCase().startsWith(t.toLowerCase())?t.length:0;return n===0?R`${e}`:R`<mark>${e.slice(0,n)}</mark>${e.slice(n)}`}function hL(e){return e?`${`/${e.name}${e.args?` ${e.args}`:``}`} ${Vc(e)}`:``}function gL(){return(gL=e((()=>{B(),I(),nl(),eD()})))()}function _L(){return{skillMenuOpen:!1,skillMenuItems:[],skillMenuIndex:0,skillMenuTarget:null,skillCommandRefreshPending:!1,skillCommandRefreshGeneration:0,skillCommandRefreshTargetStart:null}}function vL(e,t){let n=0;for(let r=t-1;r>=0&&e[r]===`\\`;--r)n+=1;return n%2==1}function yL(e,t){let n=Math.max(0,Math.min(t,e.length)),r=n;for(;r>0&&jL.test(e[r-1]??``);)--r;if(r===0||e[r-1]!==`$`)return null;let i=r-1;if(vL(e,i))return null;let a=n;for(;a<e.length&&jL.test(e[a]??``);)a+=1;let o=a;for(;o>r&&e[o-1]===`:`;)--o;let s=e.slice(r,o);return s.length>0&&!/[a-z]/u.test(s)?null:{start:i,end:o,query:s}}function bL(e){e.skillCommandRefreshGeneration+=1,e.skillCommandRefreshPending=!1,e.skillCommandRefreshTargetStart=null,e.skillMenuOpen=!1,e.skillMenuItems=[],e.skillMenuIndex=0,e.skillMenuTarget=null}function xL(e,t){(e.skillMenuOpen||e.skillMenuItems.length>0||e.skillMenuTarget!==null||e.skillCommandRefreshPending)&&(bL(e),t())}function SL(e,t,n){if(!t.refreshCommands||e.skillCommandRefreshPending)return;let r=t.refreshCommands();if(!r)return;let i=e.skillCommandRefreshGeneration+1;e.skillCommandRefreshGeneration=i,e.skillCommandRefreshPending=!0,r.catch(()=>void 0).finally(()=>{if(e.skillCommandRefreshGeneration!==i)return;e.skillCommandRefreshPending=!1;let r=t.getDraft();CL(r,t.getTextarea()?.selectionStart??r.length,e,t,n,{skipRefresh:!0})})}function CL(e,t,n,r,i,a={}){if(e.trimStart().startsWith(`/`)){xL(n,i);return}let o=yL(e,t);if(!o){xL(n,i);return}!a.skipRefresh&&n.skillCommandRefreshTargetStart!==o.start&&(n.skillCommandRefreshTargetStart=o.start,SL(n,r,i));let s=rc(o.query);n.skillMenuTarget=o,n.skillMenuItems=s,n.skillMenuIndex=Math.min(n.skillMenuIndex,Math.max(0,s.length-1)),n.skillMenuOpen=s.length>0||n.skillCommandRefreshPending,i()}function wL(e,t){return YE(e,`skill-option-${t.name.replace(/[^a-z0-9_-]+/giu,`-`).replace(/^-+|-+$/gu,``)||`skill`}`)}function TL(e){return e.skillMenuOpen&&(e.skillMenuItems.length>0||e.skillCommandRefreshPending)}function EL(e,t){if(!TL(e)||e.skillCommandRefreshPending)return null;let n=e.skillMenuItems[e.skillMenuIndex];return n?wL(t,n):null}function DL(e){if(e.skillCommandRefreshPending)return``;let t=e.skillMenuItems[e.skillMenuIndex];return t?`${Ms(t)} ${Vc(t)}`:``}function OL(e,t,n,r){if(t.skillCommandRefreshPending)return;let i=n.getTextarea(),a=i?.value??n.getDraft(),o=i?.selectionStart??t.skillMenuTarget?.end??a.length,s=yL(a,o);if(!s){bL(t),r();return}let c=s.end===a.length?` `:``,l=`$${e.name}${c}`,u=`${a.slice(0,s.start)}${l}${a.slice(s.end)}`,d=Math.max(0,o-s.end),f=s.start+l.length+d;n.commitDraft(u),bL(t),r(),queueMicrotask(()=>{let e=n.getTextarea();e&&(e.focus({preventScroll:!0}),e.setSelectionRange(f,f))})}function kL(e,t,n,r){if(!t.skillMenuOpen)return!1;let i=t.skillCommandRefreshPending?[]:t.skillMenuItems;return Ou(e,{count:i.length,index:t.skillMenuIndex,consumeEmpty:!0,close:()=>{bL(t),r()},move:e=>(t.skillMenuIndex=e,r(),EL(t,n.paneId)),select:()=>{let e=i[t.skillMenuIndex];e&&OL(e,t,n,r)}})}function AL(e,t,n){if(!TL(e))return z;let r=e.skillCommandRefreshPending||e.skillMenuItems.length===0;return _u({id:YE(t.paneId,`skill-menu-listbox`),className:`skill-menu`,label:M(`chat.skills.menu`),content:R`<div class="slash-menu-group">
<div class="slash-menu-group__label">
${M(r?`chat.skills.loading`:`chat.skills.label`)}
</div>
${r?z:e.skillMenuItems.map((r,i)=>$u({id:wL(t.paneId,r),active:i===e.skillMenuIndex,select:()=>OL(r,e,t,n),hover:()=>{e.skillMenuIndex=i,n()},icon:F.pencilSparkles,name:mL(Ms(r),e.skillMenuTarget?.query??``),description:Vc(r)}))}
</div>`})}var jL;function ML(){return(ML=e((()=>{B(),ed(),I(),b(),nl(),eD(),gL(),jL=/[-a-zA-Z0-9_:]/u})))()}function NL(e,t,n){let r=e.getTextarea();r&&(r.value=t,HE(r)),e.commitDraft(t),queueMicrotask(()=>{let t=e.getTextarea();t&&(t.focus({preventScroll:!0}),t.selectionStart=n,t.selectionEnd=n)})}function PL(e,t,n){let r=t.slashMenuCompletion;if(!r?.inline)return!1;let i=n.getTextarea()?.value??n.getDraft(),a=i.slice(r.end),o=a.length===0||!/^\s/u.test(a)?` `:``;return NL(n,`${i.slice(0,r.start)}${e}${o}${a}`,r.start+e.length+o.length),!0}function FL(e,t,n){let r=t.slashMenuCompletion;if(!r?.inline)return!1;let i=n.getTextarea()?.value??n.getDraft(),a=`/${e} `,o=`${i.slice(0,r.start)}${a}${i.slice(r.end)}`,s=r.start+a.length;return NL(n,o,s),t.slashMenuCompletion={query:e,start:r.start,end:s,inline:!0,argumentStart:s},!0}function IL(e,t){let n=e.slashMenuCompletion;if(!n?.inline)return!1;let r=t.getTextarea()?.value??t.getDraft(),i=r.slice(0,n.start),a=r.slice(n.end);return(i.length===0||/\s$/u.test(i))&&/^\s/u.test(a)&&(a=a.slice(1)),NL(t,`${i}${a}`,i.length),!0}function LL(e,t,n,r){let i=`/${n.query}`,a=n.argumentStart??n.start+`/${r} `.length,o=e.slice(n.start,a);return t>=a&&o.startsWith(i)&&/^\s+$/u.test(o.slice(i.length))}function RL(e,t=e.length){let n=Math.max(0,Math.min(t,e.length)),r=e.slice(0,n),i=/(?:^|\s)\/([^\s/:]+)\s+/gu,a=null;for(let t of r.matchAll(i)){let i=t[1]?.toLowerCase();if(!i||t.index===void 0)continue;let o=Qo(i,{showAll:!0,inlineOnly:!0}).find(e=>e.name.toLowerCase()===i||e.aliases?.some(e=>e.replace(/^\//u,``).toLowerCase()===i));if(!o?.args||o.source===`skill`)continue;let s=t.index+t[0].indexOf(`/`),c=r.slice(t.index+t[0].length).trim();(!/\s/u.test(c)||o.allowsInlineMultiWordArgs)&&(a={command:o,completion:{query:i,start:s,end:n,inline:e.slice(0,s).trim().length>0||e.slice(n).trim().length>0,argumentStart:t.index+t[0].length}})}return a?.completion.inline?a:null}function zL(){return(zL=e((()=>{nl(),eD()})))()}function BL(){return{slashCommandDispatchConnected:!1,slashMenuOpen:!1,slashMenuItems:[],slashMenuIndex:0,slashMenuMode:`command`,slashMenuCommand:null,slashMenuArgItems:[],slashMenuCompletion:null,slashCommandRefreshPending:!1}}function VL(e){e.slashMenuOpen=!1,e.slashMenuMode=`command`,e.slashMenuCommand=null,e.slashMenuArgItems=[],e.slashMenuItems=[],e.slashMenuCompletion=null}function HL(e,t){(e.slashMenuOpen||e.slashMenuMode!==`command`||e.slashMenuCommand!==null||e.slashMenuArgItems.length>0||e.slashMenuItems.length>0)&&(VL(e),t())}function UL(e,t,n){if(!t.refreshCommands||e.slashCommandRefreshPending)return;let r=t.refreshCommands();r&&(e.slashCommandRefreshPending=!0,r.catch(()=>void 0).finally(()=>{e.slashCommandRefreshPending=!1,(e.slashMenuOpen||e.slashMenuCompletion)&&(e.slashMenuMode===`args`&&e.slashMenuCompletion?.inline||WL(t.getDraft(),e,t,n,{skipSlashIntent:!0}))}))}function WL(e,t,n,r,i={}){if(t.slashMenuMode===`freeform-args`&&t.slashMenuCompletion?.inline&&t.slashMenuCommand){let i=n.getTextarea()?.selectionStart??e.length,a=t.slashMenuCompletion;if(LL(e,i,a,t.slashMenuCommand.name)){t.slashMenuCompletion.end=i,r();return}VL(t)}let a=e.match(/^\/(\S+)\s(.*)$/);if(a){i.skipSlashIntent||UL(t,n,r);let e=a[1]?.toLowerCase(),o=a[2]?.toLowerCase();if(e===void 0||o===void 0){HL(t,r);return}let s=kc.find(t=>t.name===e&&(n.commandFilter?.(t)??!0)),c=s?n.resolveArgOptions(s):[];if(s&&c.length>0){let e=o?c.filter(e=>e.toLowerCase().startsWith(o)):c;if(e.length>0){t.slashMenuMode=`args`,t.slashMenuCommand=s,t.slashMenuArgItems=e,t.slashMenuOpen=!0,t.slashMenuIndex=0,t.slashMenuItems=[],t.slashMenuCompletion=null,r();return}}HL(t,r);return}let o=n.getTextarea()?.selectionStart??e.length,s=xs(e,o);if(!s){HL(t,r);return}i.skipSlashIntent||UL(t,n,r);let c=Qo(s.query,{showAll:!0,inlineOnly:s.inline,allowImmediateInlineCommands:!s.skillOnly}).filter(e=>(n.commandFilter?.(e)??!0)&&(!s.inline||e.source===`skill`||n.canRun(!0,e)));t.slashMenuCompletion=s,t.slashMenuItems=[...c.filter(e=>e.source!==`skill`),...c.filter(e=>e.source===`skill`)],t.slashMenuOpen=c.length>0,t.slashMenuIndex=0,t.slashMenuMode=`command`,t.slashMenuCommand=null,t.slashMenuArgItems=[],r()}function GL(e,t,n,r){if(!t.slashMenuCompletion?.inline||e.source===`skill`||!e.args||!n.canRun(!0,e)||!n.runInlineCommand)return!1;t.slashMenuCommand=e,t.slashMenuIndex=0,t.slashMenuItems=[];let i=n.resolveArgOptions(e);return i.length>0?(t.slashMenuMode=`args`,t.slashMenuArgItems=i,t.slashMenuOpen=!0,r(),!0):FL(e.name,t,n)?(t.slashMenuMode=`freeform-args`,t.slashMenuArgItems=[],t.slashMenuOpen=!1,r(),!0):!1}function KL(e,t,n,r,i=!1){if(n.activateComposerMode?.(e)||!i&&e.source!==`skill`&&!n.canRun(!0,e)&&t.slashMenuCompletion?.inline)return;let a=e.source===`skill`?`$${e.name}`:`/${e.name}`;if(GL(e,t,n,r))return;if(!i&&t.slashMenuCompletion?.inline&&ps(e)&&n.canRun(!0,e)&&n.runInlineCommand&&IL(t,n)){VL(t),r(),n.runInlineCommand(`/${e.name}`);return}if(PL(a,t,n)){VL(t),r();return}let o=n.resolveArgOptions(e);if(o.length>0){n.commitDraft(`/${e.name} `),t.slashMenuMode=`args`,t.slashMenuCommand=e,t.slashMenuArgItems=o,t.slashMenuOpen=!0,t.slashMenuIndex=0,t.slashMenuItems=[],r();return}i?(n.commitDraft(e.args?`/${e.name} `:`/${e.name}`),VL(t),r()):e.executeLocal&&!e.args&&(e.key!==`btw`||n.canRun(!0,e))?(VL(t),n.commitDraft(`/${e.name}`),n.runCommand()):(n.commitDraft(`/${e.name} `),HL(t,r))}function qL(e,t,n,r,i){let{slashMenuCommand:a,slashMenuCompletion:o}=t;if(a?.source!==`skill`&&!n.canRun(o?.inline===!0,a??void 0,e))return;let s=a?.name??``;if(i&&t.slashMenuCompletion?.inline&&a&&ps(a)&&n.canRun(!0,a,e)&&n.runInlineCommand&&IL(t,n)){VL(t),r(),n.runInlineCommand(`/${s} ${e}`);return}if(t.slashMenuCompletion?.inline&&(!i||!a||!ps(a))&&PL(`/${s} ${e}`,t,n)){VL(t),r();return}VL(t),n.commitDraft(`/${s} ${e}`),i&&n.runCommand(),r()}function JL(e,t,n){let r=e.slashMenuCommand,i=e.slashMenuCompletion;if(e.slashMenuMode!==`freeform-args`||!i?.inline||!r||!ps(r)||!t.runInlineCommand)return!1;let a=t.getTextarea()?.value??t.getDraft(),o=i.argumentStart??i.start+`/${r.name} `.length,s=a.slice(o,i.end).trim();return!t.canRun(!0,r,s)||!IL(e,t)?!1:(VL(e),n(),t.runInlineCommand(`/${r.name}${s?` ${s}`:``}`),!0)}function YL(e,t){if(!t.runInlineCommand)return!1;let n=t.getTextarea()?.value??t.getDraft(),r=RL(n,t.getTextarea()?.selectionStart??n.length);return r?(e.slashMenuMode=`freeform-args`,e.slashMenuCommand=r.command,e.slashMenuCompletion=r.completion,!0):!1}function XL(e,t,n,r,i){if(e.key===`Escape`)return t.slashMenuMode!==`freeform-args`||!t.slashMenuCompletion?.inline?!1:(e.preventDefault(),VL(t),r(),!0);let a=i===`enter`||e.metaKey||e.ctrlKey;return e.key!==`Enter`||e.shiftKey||!a||(t.slashMenuMode!==`freeform-args`||!t.slashMenuCompletion?.inline)&&!YL(t,n)||!t.slashMenuCommand||!ps(t.slashMenuCommand)?!1:(e.preventDefault(),JL(t,n,r),!0)}function ZL(e,t,n,r){if(!t.slashMenuOpen)return!1;let i=t.slashMenuMode===`args`?t.slashMenuArgItems:t.slashMenuItems;return Ou(e,{count:i.length,index:t.slashMenuIndex,consumeEmpty:!1,close:()=>{VL(t),r()},move:e=>(t.slashMenuIndex=e,r(),$L(t,n.paneId)),select:e=>{if(t.slashMenuMode===`args`){let i=t.slashMenuArgItems[t.slashMenuIndex];i!==void 0&&qL(i,t,n,r,e===`Enter`)}else{let i=t.slashMenuItems[t.slashMenuIndex];i&&KL(i,t,n,r,e===`Tab`)}}})}function QL(e){return e.slashMenuOpen?e.slashMenuMode===`args`?!!(e.slashMenuCommand&&e.slashMenuArgItems.length>0):e.slashMenuItems.length>0:!1}function $L(e,t){if(!QL(e))return null;if(e.slashMenuMode===`args`){let n=e.slashMenuCommand?.name,r=e.slashMenuArgItems[e.slashMenuIndex];return n&&r?fL(t,n,r):null}let n=e.slashMenuItems[e.slashMenuIndex];return n?dL(t,n):null}function eR(e){if(!QL(e))return``;if(e.slashMenuMode===`args`){let t=e.slashMenuCommand?.name,n=e.slashMenuArgItems[e.slashMenuIndex];return t&&n?`/${t} ${n}`:``}return hL(e.slashMenuItems[e.slashMenuIndex])}function tR(e,t,n,r){let i=YE(t.paneId,`slash-menu-listbox`);if(!e.slashMenuOpen)return z;if(e.slashMenuMode===`args`&&e.slashMenuCommand&&e.slashMenuArgItems.length>0)return Br(`args`,_u({id:i,label:M(`chat.commands.arguments`),content:R` <div class="slash-menu-group">
<div class="slash-menu-group__label">
/${e.slashMenuCommand.name} ${Vc(e.slashMenuCommand)}
</div>
${e.slashMenuArgItems.map((n,i)=>$u({id:fL(t.paneId,e.slashMenuCommand?.name??``,n),active:i===e.slashMenuIndex,preserveFocus:!1,select:()=>qL(n,e,t,r,!0),hover:()=>{e.slashMenuIndex=i,r()},icon:e.slashMenuCommand?.icon?pL(e.slashMenuCommand.icon):F.terminal,name:n,description:R`/${e.slashMenuCommand?.name} ${n}`}))}
</div>`}));if(e.slashMenuItems.length===0)return z;let a=n.slice(1),o=(n,i)=>$u({id:dL(t.paneId,n),active:i===e.slashMenuIndex,select:()=>KL(n,e,t,r),hover:()=>{e.slashMenuIndex=i,r()},icon:n.source===`skill`?F.pencilSparkles:n.icon?pL(n.icon):F.terminal,name:R`/${mL(n.name,a)}${n.args?R`<span class="slash-menu-args"> ${n.args}</span>`:z}`,description:Vc(n)}),s=e.slashMenuItems.filter(e=>e.source!==`skill`),c=e.slashMenuItems.filter(e=>e.source===`skill`),l=[];for(let[e,t]of s.entries()){let r=t.category??`session`,i=n===`/`?l.find(([e])=>e===r):l.at(-1);i?.[0]===r?i[1].push({command:t,index:e}):l.push([r,[{command:t,index:e}]])}return Br(`command`,_u({id:i,label:M(`chat.commands.menu`),content:R`
${l.map(([e,t])=>R`<div class="slash-menu-group">
<div class="slash-menu-group__label">${Os(e)}</div>
${t.map(({command:e,index:t})=>o(e,t))}
</div>`)}
${c.length>0?R`<div class="slash-menu-group slash-menu-group--skills">
<div class="slash-menu-group__label">${M(`chat.skills.label`)}</div>
${c.map((e,t)=>o(e,s.length+t))}
</div>`:z}
`}))}function nR(){return(nR=e((()=>{B(),ei(),ed(),I(),b(),nl(),eD(),zL(),gL()})))()}function rR(e){return e instanceof Element?e.closest(`.chat-controls__model-menu`):null}function iR(e){return[...e.querySelectorAll(`[data-chat-model-option]`)].filter(e=>!e.hidden&&aR(e)).toSorted((e,t)=>Number(e.dataset.chatModelRank??e.dataset.chatModelIndex??0)-Number(t.dataset.chatModelRank??t.dataset.chatModelIndex??0))}function aR(e){return!e.disabled&&e.getAttribute(`aria-disabled`)!==`true`}function oR(e){let t=e.closest(`.chat-controls__model-picker`),n=e.querySelector(`[data-chat-model-search]`),r=[...e.querySelectorAll(`[data-chat-model-list]`)];if(!t||!n||r.length===0)return;let i=t.dataset.chatModelPickerId??`chat-model-picker-${bl()}`;t.dataset.chatModelPickerId=i,r.forEach((e,t)=>{e.id=`${i}-listbox-${t}`,e.closest(`section`)?.querySelector(`[data-chat-model-group-toggle]`)?.setAttribute(`aria-controls`,e.id)}),e.querySelectorAll(`[data-chat-model-option]`).forEach((e,t)=>{e.id=`${i}-option-${t}`}),n.setAttribute(`aria-controls`,r.map(e=>e.id).join(` `)),n.setAttribute(`aria-expanded`,t.open?`true`:`false`)}function sR(e,t){e.querySelectorAll(`[data-chat-model-option]`).forEach(e=>{e.toggleAttribute(`data-chat-model-highlighted`,e===t)});let n=e.querySelector(`[data-chat-model-search]`);t?.id?n?.setAttribute(`aria-activedescendant`,t.id):n?.removeAttribute(`aria-activedescendant`)}function cR(e){let t=e.currentTarget,n=rR(t);t instanceof HTMLButtonElement&&n&&sR(n,t)}function lR(e,t){e.querySelectorAll(`[data-chat-model-shortcut]`).forEach(e=>{e.hidden=!0,e.removeAttribute(`data-shortcut`),e.removeAttribute(`data-chat-model-shortcut-number`)}),t.slice(0,9).forEach((e,t)=>{let n=e.querySelector(`[data-chat-model-shortcut]`);n&&(n.hidden=!1,n.setAttribute(`data-shortcut`,String(t+1)),n.setAttribute(`data-chat-model-shortcut-number`,String(t+1)))})}function uR(e,t){let n=e.dataset.chatModelName??``,r=e.dataset.chatModelKeywords??``,i=e.dataset.chatModelProviderLabel??``;return n.startsWith(t)?0:n.includes(t)?1:r.includes(t)?2:i.startsWith(t)?3:i.includes(t)?4:(e.dataset.chatModelTarget??e.dataset.chatModelOption??``).toLocaleLowerCase().includes(t)?5:null}function dR(e,t=!1){let n=rR(e);if(!n)return;oR(n);let r=e.value.trim().toLocaleLowerCase();n.toggleAttribute(`data-chat-model-filtering`,!!r);let i=[...n.querySelectorAll(`[data-chat-model-option]`)],a=[];i.forEach((e,t)=>{let n=e.closest(`section`)?.querySelector(`[data-chat-model-group-toggle]`)?.getAttribute(`aria-expanded`)===`false`,i=r?uR(e,r):n?null:0;e.hidden=i===null,e.style.removeProperty(`--chat-model-rank`),delete e.dataset.chatModelRank,i!==null&&a.push({row:e,score:i,index:t})});let o=[];a.toSorted((e,t)=>e.score-t.score||e.index-t.index).forEach(({row:e},t)=>{e.dataset.chatModelRank=String(t),e.style.setProperty(`--chat-model-rank`,String(t)),aR(e)&&o.push(e)}),lR(n,o);let s=o.find(e=>e.getAttribute(`aria-selected`)===`true`);sR(n,(t?o.find(e=>e.hasAttribute(`data-chat-model-highlighted`)):void 0)??(r?o[0]:s??o[0]));let c=n.querySelector(`[data-chat-model-search-empty]`);c&&(c.hidden=!r||a.length>0)}function fR(e){e.querySelectorAll(`[data-chat-model-provider-toggle]`).forEach(e=>{let t=e.closest(`section`)?.querySelector(`[data-chat-model-option][aria-selected="true"]`);e.setAttribute(`aria-expanded`,String(!!t))});let t=e.querySelector(`[data-chat-model-search]`);t&&(t.value=``,dR(t))}function pR(e){e.stopPropagation();let t=e.currentTarget;t.setAttribute(`aria-expanded`,String(t.getAttribute(`aria-expanded`)!==`true`));let n=rR(t)?.querySelector(`[data-chat-model-search]`);n&&dR(n,!0)}function mR(e){if(e.key!==`Escape`)return!1;let t=e.composedPath().find(e=>e instanceof HTMLInputElement&&e.matches(`[data-chat-model-search]`));return t?.value?(t.value=``,dR(t),e.preventDefault(),e.stopPropagation(),!0):!1}function hR(e){if(e.isComposing||e.keyCode===229||e.key!==`Enter`&&e.key!==`ArrowDown`&&e.key!==`ArrowUp`)return;let t=e.currentTarget,n=rR(t);if(!n)return;let r=iR(n);if(r.length===0)return;if(e.key===`Enter`){let t=r.find(e=>e.hasAttribute(`data-chat-model-highlighted`));t&&(e.preventDefault(),t.click());return}e.preventDefault();let i=r.findIndex(e=>e.hasAttribute(`data-chat-model-highlighted`)),a=e.key===`ArrowDown`?1:r.length-1,o=i<0?0:(i+a)%r.length;sR(n,r[o]),r[o]?.scrollIntoView?.({block:`nearest`})}function gR(e){let t=e.currentTarget;if(!t.open||e.target instanceof HTMLInputElement||e.composedPath().some(e=>e instanceof HTMLElement&&e.localName===`wa-dropdown`)||!/^[1-9]$/u.test(e.key))return;let n=iR(t)[Number(e.key)-1];e.preventDefault(),n?.click()}function _R(e){if(!(e instanceof HTMLDetailsElement)||!e.open)return;let t=e.ownerDocument.activeElement,n=t?.closest(`[data-chat-model-refresh]`)&&e.contains(t)?t:void 0;queueMicrotask(()=>{let t=e.querySelector(`[data-chat-model-search]`);t&&dR(t,!0),n&&!n.isConnected&&e.isConnected&&e.open&&e.ownerDocument.activeElement===e.ownerDocument.body&&(t&&!t.disabled?t:e.querySelector(`summary`))?.focus({preventScroll:!0})})}function vR(){return(vR=e((()=>{hl()})))()}function yR(e){return e instanceof HTMLDetailsElement?e.open:`open`in e&&e.open===!0||e.hasAttribute(`open`)}function bR(e){return Array.from(e.querySelectorAll(`.agent-chat__input details, .agent-chat__input wa-dropdown`)).filter(yR)}function xR(e){PR.delete(e),e.removeAttribute(LR),e instanceof HTMLDetailsElement?e.open=!1:(`open`in e&&(e.open=!1),e.removeAttribute(`open`))}function SR(e){return e instanceof HTMLDetailsElement?e.querySelector(`summary`):e.querySelector(`[slot=trigger]`)}function CR(e){return e.composedPath().find(e=>e instanceof HTMLElement&&e.localName===`wa-dropdown`)}function wR(){this.removeEventListener(`blur`,wR),this.removeEventListener(`keydown`,wR),this.removeAttribute(IR)}function TR(e){let t=FR.get(e)??{owners:new Set,dispose:ER(e)};FR.set(e,t);let n=Symbol(`composer picker`);return t.owners.add(n),()=>{!t.owners.delete(n)||t.owners.size>0||(FR.delete(e),t.dispose())}}function ER(e){let t=new AbortController,n={capture:!0,signal:t.signal};function r(t){let n=t.composedPath();for(let t of bR(e))n.includes(t)||xR(t);for(let t of e.querySelectorAll(`.agent-chat__input > :is(.slash-menu, .skill-menu, .emoji-menu-popup)`))n.includes(t)||t.closest(`.agent-chat__input`)?.dispatchEvent(new CustomEvent(RR))}function i(t){if(t.isComposing||t.keyCode===229||t.defaultPrevented||Ln(t,e)||t.key!==`Escape`||e.querySelector(`.shell-nav[aria-modal='true']`)||mR(t))return;let n=bR(e),r=e.querySelector(`.agent-chat__input > :is(.slash-menu, .skill-menu, .emoji-menu-popup)`)?.closest(`.agent-chat__input`);if(n.length===0&&!r)return;t.preventDefault(),t.stopPropagation();let i=n.filter(e=>!n.some(t=>t!==e&&e.contains(t))),a=i.at(-1);i.forEach(xR),r?.dispatchEvent(new CustomEvent(RR)),r?.querySelector(`.agent-chat__composer-combobox > textarea`)?.focus({preventScroll:!0}),a&&SR(a)?.focus({preventScroll:!0})}return e.addEventListener(`pointerdown`,r,n),e.defaultView?.addEventListener(`keydown`,i,n),e.addEventListener(`keydown`,e=>{let t=CR(e);t&&(PR.delete(t),t.removeAttribute(LR))},n),()=>t.abort()}function DR(e){let t=e.closest(`.agent-chat__input`);if(t)for(let n of bR(t))n!==e&&!n.contains(e)&&xR(n)}function OR(e){let t=e.currentTarget;t instanceof HTMLDetailsElement&&t.open&&DR(t)}function kR(e){let t=e.target;t instanceof HTMLElement&&t.localName===`wa-dropdown`&&(PR.has(t)||t.removeAttribute(LR),DR(t))}function AR(e){let t=CR(e);t&&(PR.add(t),t.setAttribute(LR,``))}function jR(e){let t=e.target instanceof HTMLElement&&e.target.localName===`wa-dropdown`?e.target:e.currentTarget;if(t instanceof HTMLElement&&t.localName===`wa-dropdown`&&PR.delete(t)){let e=SR(t);if(!e)return;e.setAttribute(IR,``),e.addEventListener(`blur`,wR,{once:!0}),e.addEventListener(`keydown`,wR,{once:!0}),e.focus({preventScroll:!0})}}function MR(e){let t=typeof window.matchMedia==`function`&&window.matchMedia(NR).matches?e.closest(`.agent-chat__input`)??void 0:void 0;Iu(e,`top`,{alignment:`end`,anchor:t})}var NR,PR,FR,IR,LR,RR;function zR(){return(zR=e((()=>{Ju(),Dn(),vR(),NR=`(max-width: 640px), (max-width: 932px) and (max-height: 500px) and (orientation: landscape)`,PR=new WeakSet,FR=new WeakMap,IR=`data-chat-pointer-restored-focus`,LR=`data-chat-pointer-opened-picker`,RR=`openclaw-composer-dismiss-invocations`})))()}function BR(e){let t=new Uint8Array(e.length*2),n=new DataView(t.buffer);for(let t=0;t<e.length;t+=1){let r=Math.max(-1,Math.min(1,e[t]??0));n.setInt16(t*2,r<0?r*32768:r*32767,!0)}return t}function VR(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n+=1){let r=Math.max(-1,Math.min(1,e[n]??0)),i=Math.round(r<0?r*32768:r*32767),a=0,o=i;o<0&&(a=128,o=-o),o=Math.min(o,32635)+132;let s=7,c=16384;for(;(o&c)===0&&s>0;)--s,c>>=1;let l=o>>s+3&15;t[n]=~(a|s<<4|l)&255}return t}function HR(e){let t=0,n=0;for(let r of e){let e=Number.isFinite(r)?r:0;t=Math.max(t,Math.abs(e)),n+=e*e}return{peak:t,rms:e.length>0?Math.sqrt(n/e.length):0}}function UR(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=new Float32Array(Math.floor(e.byteLength/2));for(let e=0;e<n.length;e+=1)n[e]=t.getInt16(e*2,!0)/32768;return n}function WR(e){let t=e.endsWith(`==`)?2:+!!e.endsWith(`=`);return Math.max(0,Math.floor(e.length*3/4)-t)}var GR,KR,qR,JR,YR,XR;function ZR(){return(ZR=e((()=>{GR=class{constructor(){this.source=null,this.processor=null,this.sink=null}start(e,t,n){this.stop(),this.source=t.createMediaStreamSource(e),this.processor=t.createScriptProcessor(4096,1,1),this.sink=t.createGain(),this.sink.gain.value=0,this.processor.onaudioprocess=e=>n(e.inputBuffer.getChannelData(0)),this.source.connect(this.processor),this.processor.connect(this.sink),this.sink.connect(t.destination)}stop(){this.processor&&=(this.processor.onaudioprocess=null,this.processor.disconnect(),null),this.sink?.disconnect(),this.sink=null,this.source?.disconnect(),this.source=null}},KR=class{constructor(){this.level=0,this.noiseFloor=.01}sample(e){let t=HR(e),n=.65*t.rms+.35*t.peak;n<=Math.max(.02,this.noiseFloor*2)&&(this.noiseFloor=.95*this.noiseFloor+.05*n);let r=Math.max(0,n-this.noiseFloor*1.5),i=Math.min(1,Math.sqrt(r/.18)),a=i>this.level?.65:.18;return this.level=a*i+(1-a)*this.level,this.level<.01&&(this.level=0),this.level}reset(){this.level=0,this.noiseFloor=.01}},qR=class{constructor(e){this.onLevel=e,this.context=null,this.source=null,this.analyser=null,this.timer=null,this.ownsContext=!1,this.levelMeter=new KR,this.samples=new Float32Array(512),this.lastLevel=-1}start(e,t){this.stop(!1);try{let n=t??new AudioContext;this.context=n,this.ownsContext=!t;let r=n.createMediaStreamSource(e);this.source=r;let i=n.createAnalyser();this.analyser=i,i.fftSize=this.samples.length,i.smoothingTimeConstant=0,r.connect(i),this.timer=globalThis.setInterval(()=>this.publishCurrentLevel(),100),this.publishCurrentLevel()}catch{this.stop()}}stop(e=!0){this.timer!==null&&(globalThis.clearInterval(this.timer),this.timer=null),this.source?.disconnect(),this.source=null,this.analyser?.disconnect(),this.analyser=null,this.ownsContext&&this.context?.close(),this.context=null,this.ownsContext=!1,this.levelMeter.reset(),this.lastLevel=-1,e&&this.onLevel(0)}publishCurrentLevel(){if(!this.analyser)return;this.samples.fill(0),this.analyser.getFloatTimeDomainData(this.samples);let e=Math.round(this.levelMeter.sample(this.samples)*100)/100;e!==this.lastLevel&&(this.lastLevel=e,this.onLevel(e))}},JR=60,YR=4096,XR=class{constructor(){this.playhead=0,this.sources=new Set}get queuedUntil(){return this.playhead}get isPlaying(){return this.sources.size>0}play(e,t,n){if(!t)return`ignored`;let r=Math.max(t.currentTime,this.playhead),i=Math.max(0,r-t.currentTime),a=JR-i,o=WR(e),s=Math.floor(o/2);if(this.sources.size>=YR||a<=0||s/n>a)return`overflow`;let c;try{c=UR(Ne(e))}catch{return`ignored`}if(c.length===0)return`ignored`;let l=r+c.length/n;if(l-t.currentTime>JR)return`overflow`;let u=t.createBuffer(1,c.length,n);u.getChannelData(0).set(c);let d=t.createBufferSource();return this.sources.add(d),d.addEventListener(`ended`,()=>this.sources.delete(d)),d.buffer=u,d.connect(t.destination),d.start(r),this.playhead=l,`queued`}stop(e){let t=[...this.sources];this.sources.clear(),this.playhead=e?.currentTime??0;for(let e of t)try{e.stop()}catch{}}}})))()}function QR(e){return e.event!==`talk.event`||!e.payload||typeof e.payload!=`object`?null:e.payload}function $R(e){return e instanceof DOMException?mI(e):j(e)}function ez(e){return e instanceof DOMException&&e.name===`AbortError`}function tz(e,t,n,r){let i=t.trim();if(!i)return{value:e,caret:r};let a=Math.max(0,Math.min(n,e.length)),o=Math.max(a,Math.min(r,e.length)),s=e.slice(0,a),c=e.slice(o),l=`${s&&!/\s$/.test(s)&&!/^\s|^[,.;:!?)]/.test(i)?` `:``}${i}${c&&!/^\s|^[,.;:!?)]/.test(c)&&!/[\s([{]$/.test(i)?` `:``}`;return{value:`${s}${l}${c}`,caret:s.length+l.length}}var nz,rz,iz,az,oz,sz,cz,lz;function uz(){return(uz=e((()=>{fr(),b(),N(),ZR(),DI(),kI(),nz=150,rz=350,iz=1e4,az=`g711_ulaw`,oz=8e3,sz=oz*10,cz=class{constructor(e,t){this.client=e,this.callbacks=t,this.input=new EI(e=>this.reportFailure(e)),this.context=null,this.inputPump=new GR,this.inputMeter=null,this.unsubscribe=null,this.sessionId=null,this.transcriptionSessionId=null,this.finalTranscripts=[],this.currentPartial=``,this.startPromise=null,this.pendingAudio=[],this.pendingAudioSamples=0,this.appendChain=Promise.resolve(),this.closePromise=null,this.stopped=!1,this.discarded=!1,this.failed=!1,this.gatewayDisconnected=!1,this.settleLateFinalDrain=null}start(){return this.startPromise??=this.startInternal(),this.startPromise}async startInternal(){let e=lr().realtimeTalkInputDeviceId?.trim()||void 0,t=await this.input.open(e);if(this.stopped)return;this.unsubscribe=this.client.addEventListener(e=>this.handleEvent(e));try{this.context=new AudioContext({sampleRate:oz})}catch{throw Error(M(`chat.composer.dictationBrowserAudioUnsupported`))}if(this.context.sampleRate!==oz)throw Error(M(`chat.composer.dictationBrowserAudioUnsupported`));this.inputMeter=new qR(this.callbacks.onLevel),this.inputMeter.start(t,this.context),this.inputPump.start(t,this.context,e=>this.appendAudio(e)),this.callbacks.onReady();let n=await this.client.request(`talk.session.create`,{mode:`transcription`,transport:`gateway-relay`,brain:`none`});if(this.sessionId=n.sessionId,this.transcriptionSessionId=n.transcriptionSessionId??n.sessionId,n.audio?.inputEncoding!==az||n.audio.inputSampleRateHz!==oz)throw await this.closeRemote(),Error(M(`chat.composer.dictationAudioUnsupported`));this.discarded?(this.pendingAudio.length=0,this.pendingAudioSamples=0):this.flushPendingAudio(),this.stopped&&(await this.appendChain,await this.closeRemote())}transcriptSnapshot(){return[...this.finalTranscripts,this.currentPartial].filter(Boolean).join(` `).trim()}async finish(e=!1){let t=e&&!this.gatewayDisconnected?this.waitForLateFinal():null,n=this.stopAndClose(!0);return t?(n.catch(()=>void 0),t):n.then(()=>this.transcriptSnapshot())}async cancel(){this.discarded=!0,await this.stopAndClose(!1)}async stopAndClose(e){await this.stopCapture(),await this.startPromise?.catch(t=>{e&&!ez(t)&&this.reportFailure($R(t))}),await this.appendChain,await this.closeRemote()}markGatewayDisconnected(){return this.gatewayDisconnected=!0,this.settleLateFinalDrain?.(!1),this.hasTranscript()}cancelPendingFinal(){this.settleLateFinalDrain?.(!0)}appendAudio(e){if(!this.stopped){if(!this.sessionId){let t=sz-this.pendingAudioSamples;if(t<=0)return;let n=e.slice(0,t);this.pendingAudio.push(n),this.pendingAudioSamples+=n.length;return}this.queueAudio(e)}}flushPendingAudio(){let e=this.pendingAudio.splice(0);this.pendingAudioSamples=0;for(let t of e)this.queueAudio(t)}queueAudio(e){if(!this.sessionId)return;let t=this.sessionId,n=p(VR(e));this.appendChain=this.appendChain.then(async()=>{await this.client.request(`talk.session.appendAudio`,{sessionId:t,audioBase64:n})}).catch(e=>{this.reportFailure($R(e))})}handleEvent(e){let t=QR(e);if(t&&t.transcriptionSessionId===this.transcriptionSessionId&&!this.stopped){if((t.type===`transcript`||t.type===`partial`)&&typeof t.text==`string`){let e=t.text.trim();t.type===`partial`||t.final!==!0?this.currentPartial=e:e&&(this.finalTranscripts.push(e),this.currentPartial=``),this.callbacks.onTranscriptChange();return}if(t.type===`error`){this.reportFailure(gt(typeof t.message==`string`?t.message:void 0,M(`chat.composer.dictationFailed`)));return}t.type===`close`&&t.reason===`error`&&this.reportFailure(M(`chat.composer.dictationDisconnected`))}}reportFailure(e){this.failed||(this.failed=!0,this.callbacks.onError(e,this.hasTranscript()))}hasTranscript(){return this.finalTranscripts.length>0||!!this.currentPartial}async stopCapture(){this.stopped||(this.stopped=!0,this.input.stop(),this.inputPump.stop(),this.unsubscribe?.(),this.unsubscribe=null,this.inputMeter?.stop(),this.inputMeter=null,await this.context?.close(),this.context=null)}closeRemote(){return this.sessionId?(this.closePromise??=this.client.request(`talk.session.close`,{sessionId:this.sessionId}).then(()=>void 0).catch(()=>void 0),this.closePromise):Promise.resolve()}waitForLateFinal(){return new Promise(e=>{let t=[],n=()=>{},r=t=>{globalThis.clearTimeout(a),n(),this.settleLateFinalDrain=null,e(t)},i=()=>t.join(` `).trim(),a=globalThis.setTimeout(()=>r(i()),iz);n=this.client.addEventListener(e=>{let n=QR(e);n&&n.transcriptionSessionId===this.transcriptionSessionId&&(n.type===`transcript`&&n.final===!0&&typeof n.text==`string`&&n.text.trim()?t.push(n.text.trim()):(n.type===`error`||n.type===`close`)&&r(i()))}),this.settleLateFinalDrain=e=>r(e?``:i())})}},lz=class{constructor(e){this.inputLevel=new OI,this.phase=`idle`,this.pointerId=null,this.pointerTarget=null,this.pointerBounds=null,this.holdTimer=null,this.session=null,this.suppressClick=!1,this.suppressedPointerId=null,this.suppressClickTimer=null,this.pendingCommitSession=null,this.disposed=!1,this.handleDocumentPointerMove=e=>{if(e.pointerId!==this.pointerId||!this.pointerBounds)return;let t=this.pointerBounds;(e.clientX<t.left||e.clientX>t.right||e.clientY<t.top||e.clientY>t.bottom)&&this.stop({commit:!1})},this.handleDocumentPointerUp=e=>{if(e.pointerId===this.pointerId){if(this.phase===`pressing`||this.phase===`holding`){let e=this.phase===`pressing`;this.clearPointerGesture(),this.setPhase(`idle`),e&&this.options.onTap?.(),this.expireClickSuppression();return}this.stop({commit:!0})}},this.handleDocumentPointerCancel=e=>{e.pointerId===this.pointerId&&this.stop({commit:!1})},this.handleSuppressedPointerRelease=e=>{e.pointerId===this.suppressedPointerId&&this.expireClickSuppression()},this.handleDocumentKeyDown=e=>{e.key===`Escape`&&this.phase!==`idle`&&(e.preventDefault(),e.stopPropagation(),this.stop({commit:!1}))},this.handleLostPointerCapture=e=>{e.pointerId===this.pointerId&&this.stop({commit:!1})},this.handleVisibilityChange=()=>{document.visibilityState===`hidden`&&(this.clearClickSuppression(),this.stop({commit:!1}))},this.handleWindowBlur=()=>{this.clearClickSuppression(),this.stop({commit:!1})},this.options=e}get active(){return this.phase===`connecting`||this.phase===`recording`||this.phase===`stopping`}get connecting(){return this.phase===`connecting`}get arming(){return this.phase===`holding`}get finalizing(){return this.phase===`stopping`}get locksComposer(){return this.phase!==`idle`}get transcript(){return this.session?.transcriptSnapshot()??``}finishActive(){return this.stop({commit:!0})}startDirect(){return this.phase!==`idle`||!this.canHold()?!1:(this.setPhase(`holding`),this.start(),!0)}update(e){if(this.options=e,e.connected||this.pendingCommitSession?.markGatewayDisconnected(),this.phase!==`stopping`&&(this.phase!==`idle`&&!this.canHold()||this.active&&!e.connected)){let t=this.active&&!e.connected,n=t?this.session?.markGatewayDisconnected()??!1:!1;this.stop({commit:t}),t&&e.onError(M(`chat.composer.dictationDisconnected`),{kind:`interrupted`,preservesText:n})}}handlePointerDown(e){return e.button!==0||this.phase!==`idle`||!this.canHold()?!1:(e.preventDefault(),this.pointerId=e.pointerId,this.pointerTarget=e.currentTarget instanceof HTMLElement?e.currentTarget:null,this.pointerBounds=this.pointerTarget?.getBoundingClientRect()??null,this.pointerTarget?.setPointerCapture?.(e.pointerId),this.pointerTarget?.addEventListener(`lostpointercapture`,this.handleLostPointerCapture),this.suppressClick=!0,this.suppressedPointerId=e.pointerId,this.setPhase(`pressing`),this.holdTimer=globalThis.setTimeout(()=>{this.phase===`pressing`&&(this.setPhase(`holding`),this.holdTimer=globalThis.setTimeout(()=>void this.start(),rz))},nz),document.addEventListener(`pointermove`,this.handleDocumentPointerMove),document.addEventListener(`pointerup`,this.handleDocumentPointerUp),document.addEventListener(`pointercancel`,this.handleDocumentPointerCancel),document.addEventListener(`pointerup`,this.handleSuppressedPointerRelease),document.addEventListener(`pointercancel`,this.handleSuppressedPointerRelease),!0)}handleClick(e){if(this.suppressClick){this.clearClickSuppression(),e.preventDefault();return}if(this.active){e.preventDefault(),this.finishActive();return}if(this.phase!==`idle`){e.preventDefault();return}this.options.onTap?.()}handleContextMenu(e){this.phase!==`idle`&&e.preventDefault()}dispose(){this.disposed=!0,this.retirePendingCommit(),this.clearClickSuppression(),this.stop({commit:!1})}canHold(){return this.options.enabled&&this.options.connected&&!this.options.realtimeTalkActive&&this.options.client!==null}async start(){let e=this.options.client;if(this.phase!==`holding`||!e||!this.canHold()){await this.stop({commit:!1});return}if(this.options.dictationAvailable===!1){this.clearPointerGesture(),this.setPhase(`idle`),this.options.onDictationUnavailable?.();return}this.clearPointerGesture(),this.setPhase(`connecting`);let t=new cz(e,{onError:(e,n)=>{if(this.session===t)try{this.options.onError(e,{kind:`interrupted`,preservesText:n})}finally{this.stop({commit:!0})}},onLevel:e=>this.inputLevel.set(e),onTranscriptChange:()=>this.options.onStateChange(),onReady:()=>{this.session===t&&this.phase===`connecting`&&this.setPhase(`recording`)}});this.retirePendingCommit(),this.session=t;try{await t.start()}catch(e){if(this.session!==t||this.disposed||this.finalizing)return;this.options.onError($R(e),{kind:`start`,preservesText:!1}),await this.stop({commit:!1})}}stop(e){if(this.phase===`idle`||this.phase===`stopping`)return Promise.resolve(!1);let t=this.active;this.clearPointerGesture();let n=this.session;if(!n)return this.reset(),Promise.resolve(!1);this.setPhase(`stopping`);let r=e.commit?n.transcriptSnapshot():``,i=!!(e.commit&&r&&t&&!this.disposed);return this.session=null,this.reset(),i&&this.options.onCommit(r),e.commit?i?(n.finish().catch(()=>void 0),Promise.resolve(!0)):(this.pendingCommitSession=n,n.finish(!0).then(e=>{let r=this.pendingCommitSession===n;return r&&(this.pendingCommitSession=null),!r||!e||!t||this.disposed?!1:(this.options.onCommit(e,!0),!0)}).catch(()=>(this.pendingCommitSession===n&&(this.pendingCommitSession=null),!1))):(n.cancel().catch(()=>void 0),Promise.resolve(!1))}reset(){this.inputLevel.set(0),this.setPhase(`idle`)}retirePendingCommit(){this.pendingCommitSession?.cancelPendingFinal(),this.pendingCommitSession=null}clearPointerGesture(){if(this.holdTimer!==null&&(globalThis.clearTimeout(this.holdTimer),this.holdTimer=null),this.pointerId!==null){this.pointerTarget?.removeEventListener(`lostpointercapture`,this.handleLostPointerCapture);try{this.pointerTarget?.releasePointerCapture?.(this.pointerId)}catch{}}this.pointerId=null,this.pointerTarget=null,this.pointerBounds=null,document.removeEventListener(`pointermove`,this.handleDocumentPointerMove),document.removeEventListener(`pointerup`,this.handleDocumentPointerUp),document.removeEventListener(`pointercancel`,this.handleDocumentPointerCancel)}expireClickSuppression(){this.suppressClick&&this.suppressClickTimer===null&&(this.suppressClickTimer=globalThis.setTimeout(()=>this.clearClickSuppression(),0))}clearClickSuppression(){this.suppressClickTimer!==null&&(globalThis.clearTimeout(this.suppressClickTimer),this.suppressClickTimer=null),document.removeEventListener(`pointerup`,this.handleSuppressedPointerRelease),document.removeEventListener(`pointercancel`,this.handleSuppressedPointerRelease),this.suppressedPointerId=null,this.suppressClick=!1}setPhase(e){this.phase!==e&&(this.phase===`idle`?(document.addEventListener(`keydown`,this.handleDocumentKeyDown),document.addEventListener(`visibilitychange`,this.handleVisibilityChange),window.addEventListener(`blur`,this.handleWindowBlur)):e===`idle`&&(document.removeEventListener(`keydown`,this.handleDocumentKeyDown),document.removeEventListener(`visibilitychange`,this.handleVisibilityChange),window.removeEventListener(`blur`,this.handleWindowBlur)),this.phase=e,this.options.onStateChange())}}})))()}var dz;function fz(){return(fz=e((()=>{DI(),dz=class{constructor(e){this.requestUpdate=e,this.devicesValue=[],this.loadingValue=!1,this.openValue=!1,this.issueValue=null,this.deviceWatch=null,this.discoveryRequest=0,this.catalogClient=null,this.catalogConnected=!1,this.catalogRequest=0,this.realtimeStatusValue=`unknown`,this.dictationStatusValue=`unknown`,this.refreshOnFocus=()=>this.loadCatalog(),this.handleOpen=()=>{this.openValue||(this.openValue=!0,this.deviceWatch??=pI(this.discover),this.discover(),this.loadCatalog())},this.handleClose=()=>{this.openValue&&(this.release(),this.openValue=!1,this.requestUpdate())},this.discover=()=>{this.loadingValue=!0,this.issueValue=null;let e=++this.discoveryRequest;this.requestUpdate(),gI(()=>this.openValue&&e===this.discoveryRequest).then(t=>{e===this.discoveryRequest&&(this.devicesValue=t.devices,this.issueValue=t.issue)}).catch(()=>{e===this.discoveryRequest&&(this.devicesValue=[],this.issueValue=`failed`)}).finally(()=>{e===this.discoveryRequest&&(this.loadingValue=!1,this.requestUpdate())})}}get devices(){return this.devicesValue}get loading(){return this.loadingValue}get open(){return this.openValue}get issue(){return this.issueValue}get realtimeStatus(){return this.realtimeStatusValue}get dictationStatus(){return this.dictationStatusValue}syncCatalog(e,t){if(e!==this.catalogClient||t!==this.catalogConnected){if(window.removeEventListener(`focus`,this.refreshOnFocus),this.catalogClient=e,this.catalogConnected=t,this.catalogRequest++,!e||!t){this.realtimeStatusValue=`unknown`,this.dictationStatusValue=`unknown`;return}window.addEventListener(`focus`,this.refreshOnFocus),this.loadCatalog(!1)}}release(){this.deviceWatch?.(),this.deviceWatch=null}dispose(){window.removeEventListener(`focus`,this.refreshOnFocus),this.release(),this.discoveryRequest++,this.catalogRequest++,this.catalogClient=null,this.catalogConnected=!1,this.realtimeStatusValue=`unknown`,this.dictationStatusValue=`unknown`,this.openValue=!1,this.loadingValue=!1}loadCatalog(e=!0){let t=this.catalogClient;if(!t||!this.catalogConnected)return;let n=++this.catalogRequest;this.realtimeStatusValue===`unknown`&&(this.realtimeStatusValue=`checking`),this.dictationStatusValue===`unknown`&&(this.dictationStatusValue=`checking`),e&&this.requestUpdate(),t.request(`talk.catalog`,{}).then(e=>{n===this.catalogRequest&&(this.realtimeStatusValue=e.realtime?.ready===!0?`ready`:`unavailable`,this.dictationStatusValue=e.transcription?.ready===!0?`ready`:`unavailable`)}).catch(()=>{n===this.catalogRequest&&(this.realtimeStatusValue===`checking`&&(this.realtimeStatusValue=`unknown`),this.dictationStatusValue===`checking`&&(this.dictationStatusValue=`unknown`))}).finally(()=>{n===this.catalogRequest&&this.requestUpdate()})}}})))()}function pz(e){return e===vz.length?vz:Array.from({length:e},(t,n)=>.35+.65*Math.sin(Math.PI*((n+.5)/e)))}function mz(e){return e===`connecting`||e===`thinking`?e:`listening`}function hz(e,t){return t?.trim()||M(e===`thinking`?`chat.voice.asking`:e===`connecting`?`chat.voice.connecting`:`chat.voice.listening`)}function gz(e){return R`
<openclaw-microphone-activity
class="agent-chat__voice-activity"
data-status=${mz(e.status)}
data-source="microphone"
bars=${Pr(e.bars)}
mode=${Pr(e.mode)}
aria-hidden="true"
.signal=${e.inputLevel??bz}
>
</openclaw-microphone-activity>
`}function _z(e){return e.status===`connecting`?R`<div
class="callout agent-chat__talk-status"
role="status"
aria-live="polite"
aria-atomic="true"
>
${hz(e.status,e.detail)}
</div>`:e.status!==`error`||!e.detail?z:R`
<div class="agent-chat__composer-errors agent-chat__composer-errors--standalone">
<div class="agent-chat__composer-error agent-chat__talk-status" role="alert">
<span class="agent-chat__composer-error-icon" aria-hidden="true"
>${F.alertTriangle}</span
>
<div class="callout__content">
<div class="agent-chat__talk-status-text">${e.detail}</div>
${e.onUseSystemDefaultMicrophone?R`<button
class="btn btn--sm"
type="button"
@click=${e.onUseSystemDefaultMicrophone}
>
${M(`chat.composer.useSystemDefaultMicrophoneForCall`)}
</button>`:z}
</div>
${e.onDismissError?R`
<button
class="callout__dismiss"
type="button"
@click=${e.onDismissError}
aria-label=${M(`chat.composer.dismissVoiceInputError`)}
>
${F.x}
</button>
`:z}
</div>
</div>
`}var vz,yz,bz,xz;function Sz(){return(Sz=e((()=>{B(),Dr(),I(),Dn(),b(),kI(),vz=[.38,.62,.84,1,.84,.62,.38],yz=`openclaw-microphone-activity`,bz=new OI,xz=class extends HTMLElement{constructor(...e){super(...e),this.unsubscribe=null,this.gains=vz,this.history=null}set signal(e){e!==this.levelSignal&&(this.unsubscribe?.(),this.unsubscribe=null,this.levelSignal=e,this.ensureBars(),this.renderLevel(e?.value??0),this.isConnected&&this.subscribe())}connectedCallback(){this.ensureBars(),this.subscribe()}disconnectedCallback(){this.unsubscribe?.(),this.unsubscribe=null}ensureBars(){if(!this.firstElementChild){let e=Number(this.getAttribute(`bars`));this.gains=pz(Number.isInteger(e)&&e>0?e:vz.length),this.history=this.getAttribute(`mode`)===`scroll`?this.gains.map(()=>0):null;for(let[e]of this.gains.entries()){let t=document.createElement(`span`);t.className=`agent-chat__voice-activity-bar`,t.style.setProperty(`--talk-bar-delay`,`${e*-70}ms`),this.append(t)}}}subscribe(){this.unsubscribe?.(),this.unsubscribe=this.levelSignal?.subscribe(e=>this.renderLevel(e))??null}renderLevel(e){this.dataset.level=String(e),this.history&&(this.history.push(e),this.history.shift());for(let[t,n]of[...this.children].entries()){let r=this.history?.12+(this.history[t]??0)*.88:.18+e*(this.gains[t]??1)*.82;n.style.setProperty(`--talk-bar-scale`,String(r))}}},customElements.get(yz)||customElements.define(yz,xz)})))()}function Cz(e,t){t.matches(`:focus-visible`)||e instanceof HTMLElement&&queueMicrotask(()=>{let t=e.querySelector(`.chat-talk-input-picker__trigger`);t&&document.activeElement===t&&t.blur()})}function wz(e,t,n){return R`<wa-dropdown-item class="chat-talk-input-picker__notice" disabled>
<div class=${e} role=${n??z}>${t}</div>
</wa-dropdown-item>`}function Tz(e){let t=!e.loading&&e.devices.length===0?e.issue:null,n=t?[]:[{deviceId:``,label:M(`chat.composer.systemDefaultMicrophone`)},...e.loading?[]:e.devices],r=t!==null&&t!==`none-found`&&t!==`list-unsupported`,i=M(`chat.composer.microphoneInput`),a=[{key:`realtime`,label:M(`chat.composer.realtimeTalkCapability`),status:e.realtimeStatus,unavailableReason:M(`chat.composer.realtimeTalkProviderUnavailable`),onOpenSettings:e.onOpenTalkSettings},{key:`dictation`,label:M(`chat.composer.dictationCapability`),status:e.dictationStatus,unavailableReason:M(`chat.composer.dictationProviderUnavailableShort`),onOpenSettings:e.onOpenDictationSettings}].filter(t=>t.status!==`ready`&&(t.key!==`realtime`||e.showRealtimeCapability!==!1));return R`
<wa-dropdown
class="chat-talk-input-picker"
placement="top-end"
aria-label=${i}
.open=${e.open}
@wa-show=${e.onOpen}
@wa-hide=${e.onClose}
@wa-select=${t=>{let n=t.detail.item;if(n.hasAttribute(`data-chat-talk-device`)){e.onSelect(n.value??``),Cz(t.currentTarget,n);return}if(t.preventDefault(),n.dataset.chatTalkPreference===`hold-to-dictate`){e.onHoldToDictateChange?.(e.holdToDictate===!1);return}a.find(e=>e.key===n.dataset.chatTalkCapability)?.onOpenSettings?.()}}
>
<button
slot="trigger"
type="button"
class="chat-talk-input-picker__trigger"
aria-label=${i}
aria-haspopup="menu"
aria-expanded=${String(e.open)}
>
${F.chevronDown}
</button>
<div class="chat-talk-input-picker__heading">${i}</div>
${t?wz(`chat-talk-input-picker__empty${r?` chat-talk-input-picker__empty--fault`:``}`,fI(t,`audioinput`),`status`):R`
${n.map(t=>{let n=t.deviceId===e.selectedDeviceId;return R`
<wa-dropdown-item
class="chat-talk-input-picker__item"
data-chat-talk-device
value=${t.deviceId}
role="menuitemradio"
aria-checked=${String(n)}
${Or(e=>kd(e,n))}
>
<span slot="icon" class="chat-talk-input-picker__option-icon" aria-hidden="true"
>${F.mic}</span
>
<span class="chat-talk-input-picker__label">${t.label}</span>
<span slot="details" class="chat-talk-input-picker__check" aria-hidden="true"
>${n?F.check:z}</span
>
</wa-dropdown-item>
`})}
${e.loading?wz(`chat-talk-input-picker__note`,M(`common.loading`),`status`):z}
${e.issue?wz(`chat-talk-input-picker__warning`,fI(e.issue,`audioinput`),`alert`):z}
${e.voiceActive?wz(`chat-talk-input-picker__hint`,M(`chat.composer.microphoneAppliesNextSession`)):z}
`}
${a.map(e=>R`
<wa-dropdown-item
class="chat-talk-input-picker__capability"
data-chat-talk-capability=${e.key}
data-status=${e.status}
?disabled=${!e.onOpenSettings}
>
<span class="chat-talk-input-picker__capability-copy" role="status">
<strong>
${e.status===`unavailable`?R`<span class="chat-talk-input-picker__capability-alert" aria-hidden="true"
>${F.alertTriangle}</span
>`:z}
<span>${e.label}</span>
</strong>
<span>
${e.status===`checking`?M(`chat.composer.talkCapabilityChecking`):e.status===`unknown`?M(`chat.composer.talkCapabilityUnknown`):e.unavailableReason}
</span>
</span>
${e.onOpenSettings?R`<span slot="details" class="chat-talk-input-picker__settings">
<span aria-hidden="true">${F.settings}</span>
<span>${M(`chat.composer.configureCapability`)}</span>
</span>`:z}
</wa-dropdown-item>
`)}
${e.onHoldToDictateChange?R`
<wa-dropdown-item
class="chat-talk-input-picker__preference"
data-chat-talk-preference="hold-to-dictate"
type="checkbox"
.checked=${Hr(e.holdToDictate!==!1)}
>
<span>${M(`chat.composer.holdToDictate`)}</span>
<span
slot="details"
class="chat-controls__speed-toggle ${e.holdToDictate===!1?``:`chat-controls__speed-toggle--active`}"
aria-hidden="true"
>
<span class="chat-controls__speed-toggle-thumb"></span>
</span>
</wa-dropdown-item>
`:z}
</wa-dropdown>
`}function Ez(e){let t=e.dictation?.active===!0,n=e.dictation?.arming===!0,r=e.dictation?.finalizing===!0,i=e.dictation?.locksComposer===!0,a=e.dictation!==void 0&&e.onToggleVoice===void 0,o=t?M(`chat.composer.dictationStopAndKeep`):e.idleLabel??M(`chat.composer.startVoiceInput`),s=e.dictation&&!a&&!(t||r)?[e.submitDisabledReason,M(`chat.composer.voiceGestureHint`)].filter(Boolean).join(` · `):t?o:e.submitDisabledReason??o;return R`
<span class="chat-talk-control${i?` chat-talk-control--holding`:``}">
<openclaw-tooltip .content=${s}>
<button
class=${t?`chat-send-btn chat-send-btn--dictating`:`chat-send-btn chat-send-btn--voice${e.dictation&&!a?` chat-send-btn--hold-enabled`:``}${n?` chat-send-btn--dictation-arming`:``}`}
type="button"
@pointerdown=${t=>e.onDictationPointerDown?.(t)}
@click=${n=>{if(t){n.preventDefault(),r||e.dictation?.handleClick(n);return}if(a){n.preventDefault(),e.onDirectDictationStart?.(),e.dictation?.startDirect();return}e.dictation?e.dictation.handleClick(n):e.onToggleVoice?.()}}
@contextmenu=${t=>e.dictation?.handleContextMenu(t)}
?disabled=${!t&&(!e.connected||e.sending||e.isBusy||!e.dictation&&!!e.submitDisabledReason)}
aria-disabled=${String(r)}
aria-label=${o}
>
${t?F.stop:R`
${F.mic}
<span class="agent-chat__control-label">${o}</span>
`}
</button>
</openclaw-tooltip>
${e.microphonePicker}
</span>
`}function Dz(e,t,n){return e.active?R`
${e.connecting?z:R`<span class="sr-only" role="status" aria-live="polite" aria-atomic="true"
>${e.finalizing?M(`chat.composer.dictationFinalizing`):M(`chat.composer.dictationListening`)}</span
>`}
<openclaw-tooltip .content=${M(`chat.runControls.send`)}>
<button
class="chat-send-btn chat-send-btn--send chat-send-btn--dictation-commit"
type="button"
@pointerdown=${n}
@click=${async()=>{e.finalizing||(await e.finishActive(),t())}}
aria-disabled=${String(e.finalizing)}
aria-label=${M(`chat.runControls.send`)}
>
${F.arrowUp}
</button>
</openclaw-tooltip>
`:z}function Oz(e){if(!e?.active)return z;if(e.connecting)return _z({status:`connecting`,detail:M(`chat.composer.microphoneAccessPending`)});let t=!e.finalizing;return R`
<div class="agent-chat__composer-status-stack">
<div
class=${`agent-chat__dictation-status${e.finalizing?` agent-chat__dictation-status--finalizing`:``}`}
>
<span
class="agent-chat__dictation-phase${t?` agent-chat__dictation-phase--listening`:``}"
>
${e.finalizing?M(`chat.composer.dictationFinalizing`):M(`chat.composer.dictationListening`)}
</span>
</div>
</div>
`}function kz(e){return e.canAbort?R`
<openclaw-tooltip .content=${M(`chat.runControls.stop`)}>
<button
class="chat-send-btn chat-send-btn--stop"
@pointerdown=${e.onPrimaryActionPointerDown}
@click=${e.onAbort}
aria-label=${M(`chat.runControls.stopGenerating`)}
>
${F.stop}
<span class="agent-chat__control-label">${M(`chat.runControls.stop`)}</span>
</button>
</openclaw-tooltip>
`:z}function Az(e){let t=!!(e.draft.trim()||e.hasAttachments),[n,r]=e.suggestionComposer?[`chat.sessionSuggestions.suggest`,`chat.sessionSuggestions.suggestMessage`]:!e.canAbort||e.followUpMode===void 0||e.followUpMode===`interrupt`?[`chat.runControls.send`,`chat.runControls.sendMessage`]:e.followUpMode===`steer`?[`chat.queue.steer`,`chat.followUpModeSteer`]:[`chat.runControls.queue`,`chat.runControls.queueMessage`],i=e.submissionLabel??M(n),a=e.submissionLabel??M(r),o=M(e.alternateFollowUpMode===`queue`?`chat.runControls.queue`:`chat.queue.steer`),s=e.alternateFollowUpMode&&e.canSend&&t,c=s?`${i} ⏎ · ${o} ${M(`chat.sendShortcutModifierEnter`)}`:i,l=s?R`${i}${` `}${er(`⏎`,{inline:!0})}${` · `}${o}${` `}${er(M(`chat.sendShortcutModifierEnter`).split(/(⌘)/u).filter(Boolean),{inline:!0})}`:void 0,u=t=>e.onSend(t),d=kz(e),f=e.voiceStatus===`error`,p=M(e.voiceVideoEnabled?`chat.composer.turnCameraOff`:`chat.composer.turnCameraOn`),m=Ez(e),h=e.dictation||e.onToggleVoice?m:z,g=e.dictation?R`
<span class="chat-mobile-dictation-action">
${Ez({connected:e.connected,sending:e.sending,isBusy:e.isBusy,dictation:e.dictation,idleLabel:M(`chat.composer.dictationCapability`)})}
</span>
`:z,_=!t&&!e.dictation?.active&&e.onToggleVoice?R`
<openclaw-tooltip
class="chat-mobile-talk-action"
.content=${e.submitDisabledReason??M(`chat.composer.realtimeTalkCapability`)}
>
<button
class="chat-send-btn chat-send-btn--talk-mode"
type="button"
@pointerdown=${e.onPrimaryActionPointerDown}
@click=${e.onToggleVoice}
?disabled=${!e.connected||e.sending||e.isBusy||!!e.submitDisabledReason}
aria-label=${M(`chat.composer.realtimeTalkCapability`)}
>
${F.audioLines}
<span class="agent-chat__control-label"
>${M(`chat.composer.realtimeTalkCapability`)}</span
>
</button>
</openclaw-tooltip>
`:z,v=e.canSend&&Pc(e.draft)?null:e.submitDisabledReason,y=e.sending||!!(v&&e.submitPending),b=v??(e.sending?M(`chat.composer.sendingMessage`):t?null:M(`chat.composer.emptyHint`)),x=t&&e.canSend&&!e.sending&&!v,S=R`
<openclaw-tooltip
.content=${e.preparingAttachments?M(`chat.composer.preparingAttachments`):b??c}
.contentTemplate=${!e.preparingAttachments&&b==null?l:void 0}
>
<button
class="chat-send-btn chat-send-btn--send${e.sending?` chat-send-btn--sending`:``}"
@pointerdown=${e.onPrimaryActionPointerDown}
@click=${u}
?disabled=${!x}
aria-label=${b??a}
aria-busy=${y||e.preparingAttachments?`true`:`false`}
>
${y?R`<span class="btn__spinner" aria-hidden="true"></span>`:F.arrowUp}
<span class="agent-chat__control-label">${i}</span>
</button>
</openclaw-tooltip>
`,C=e.dictation&&(!e.submitDisabledReason||Pc(e.draft))?Dz(e.dictation,()=>e.onSend(),e.onPrimaryActionPointerDown):S,w=e.dictation?.active?C:e.canAbort&&!x?d:S,ee=e.dictation?.active?C:e.canAbort&&!x?d:t?S:e.onToggleVoice?_:S,te=ee===w?R`<span class="chat-mobile-primary-action chat-desktop-primary-action"
>${w}</span
>`:R`
<span class="chat-mobile-primary-action">${ee}</span>
<span class="chat-desktop-primary-action">${w}</span>
`;return R`
${e.voiceActive&&e.onToggleVoice?R`
<span class="chat-talk-control chat-talk-control--active">
<openclaw-tooltip .content=${M(`chat.composer.stopVoiceInput`)}>
<button
class="chat-send-btn chat-send-btn--voice-live${f?` chat-send-btn--voice-error`:``}"
@click=${e.onToggleVoice}
aria-label=${M(`chat.composer.stopVoiceInput`)}
>
${f?z:gz({status:e.voiceStatus,inputLevel:e.voiceInputLevel})}
<span class="chat-send-btn__voice-stop-glyph">${F.stop}</span>
</button>
</openclaw-tooltip>
${e.microphonePicker}
</span>
${f||e.voiceStatus===`connecting`?z:R`
<span
class="sr-only agent-chat__voice-status"
role="status"
aria-live="polite"
aria-atomic="true"
>${hz(e.voiceStatus,e.voiceDetail)}</span
>
`}
${e.voiceVideoCapable&&e.onToggleCamera?R`
<openclaw-tooltip .content=${p}>
<button
class="chat-send-btn chat-send-btn--voice"
@click=${e.onToggleCamera}
?disabled=${e.voiceVideoPending||e.voiceStatus===`connecting`||e.voiceStatus===`error`}
aria-label=${p}
aria-pressed=${e.voiceVideoEnabled?`true`:`false`}
>
${e.voiceVideoEnabled?F.cameraOff:F.camera}
<span class="agent-chat__control-label">${p}</span>
</button>
</openclaw-tooltip>
`:z}
<span class="chat-mobile-primary-action chat-desktop-primary-action"
>${d}</span
>
`:R` ${h} ${g} ${te} `}
`}function jz(){return(jz=e((()=>{B(),Jr(),Ar(),I(),Xn(),Ru(),b(),nl(),DI(),Sz()})))()}function Mz(){return(Mz=e((()=>{})))()}function Nz(e,t){return e.key===`think`?t.modelSwitching?[]:pa(t.selectedSession,t.sessions?.defaults,t.modelCatalog):e.argOptions??[]}function Pz(e,t,n,r,i,a){let o=t&&TL(n),s=t&&QL(r);return{skillMenuVisible:o,slashMenuVisible:s,mentionMenuVisible:i.open,emojiMenuVisible:a.open,menuVisible:o||s||i.open||a.open,activeMenuOptionId:a.open?a.activeId(e):i.open?i.activeId(e):o?EL(n,e):$L(r,e),activeMenuOptionLabel:a.open?a.activeLabel():i.open?i.activeLabel():o?DL(n):eR(r),menuListboxId:YE(e,a.open?`emoji-menu-listbox`:i.open?`mention-menu-listbox`:o?`skill-menu-listbox`:`slash-menu-listbox`)}}function Fz(){return(Fz=e((()=>{Gi(),eD(),ML(),nR()})))()}function Iz(){if(!Ce()||Pn()||hr())return!1;let e=navigator.userAgent;return/AppleWebKit\//u.test(e)&&/Version\/[\d.]+(?: Mobile\/\S+)? Safari\/[\d.]+$/u.test(e)}function Lz(){return(Lz=e((()=>{jn()})))()}var Rz;function zz(){return(zz=e((()=>{B(),Rz=Kr`
:host {
display: contents;
}
openclaw-modal-dialog {
--openclaw-modal-width: 640px;
}
.camera {
box-sizing: border-box;
max-height: var(--openclaw-modal-height-limit);
overflow: auto;
border: 1px solid var(--border);
border-radius: var(--radius-xl);
background: var(--bg);
color: var(--text);
box-shadow: var(--shadow-xl);
}
header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 16px;
padding: 20px;
}
h2 {
margin: 0;
font-size: 18px;
font-weight: 600;
}
p {
margin: 6px 0 0;
color: var(--muted);
font-size: 13px;
line-height: 1.5;
}
.preview {
position: relative;
display: grid;
place-items: center;
aspect-ratio: 4 / 3;
max-height: 55dvh;
margin: 0 20px;
overflow: hidden;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--bg-elevated);
}
video,
img {
display: block;
width: 100%;
height: 100%;
min-height: 0;
object-fit: contain;
}
.notice {
position: absolute;
inset: 0;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 12px;
padding: 24px;
text-align: center;
background: var(--bg-elevated);
}
.notice svg {
width: 32px;
height: 32px;
color: var(--muted);
}
.notice p {
max-width: 38ch;
margin: 0;
}
.notice strong {
font-size: 15px;
font-weight: 600;
}
.camera-selector {
display: flex;
align-items: center;
gap: 12px;
margin: 16px 20px 0;
font-size: 13px;
color: var(--muted);
}
select {
min-width: 0;
flex: 1;
padding: 8px;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--bg);
color: var(--text);
font: inherit;
}
footer {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 12px;
padding: 20px;
}
.actions {
display: flex;
gap: 8px;
margin-inline-start: auto;
}
button {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
min-height: 38px;
padding: 8px 14px;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--bg);
color: var(--text);
font: inherit;
font-size: 13px;
font-weight: 500;
cursor: default;
}
button:hover:not(:disabled) {
background: var(--bg-elevated);
}
button:focus-visible,
select:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 3px;
}
button:disabled {
opacity: 0.45;
}
button svg {
width: 16px;
height: 16px;
}
.primary {
background: var(--primary);
color: var(--primary-foreground);
border-color: var(--primary);
}
.primary:hover:not(:disabled) {
background: var(--primary-hover);
}
.icon-button {
width: 32px;
min-height: 32px;
padding: 6px;
border-color: transparent;
}
.upload {
border-color: transparent;
color: var(--muted);
padding-inline: 0;
}
@media (max-width: 560px) {
header,
footer {
padding: 16px;
}
.preview {
margin-inline: 16px;
}
.camera-selector {
margin-inline: 16px;
}
}
`})))()}var Bz;function Vz(){return(Vz=e((()=>{B(),qr(),I(),Jn(),b(),go(),Ie(),zz(),$i(),Bz=class extends cn{constructor(...e){super(...e),this.disabled=!1,this.nativeFallback=!1,this.stage=`closed`,this.error=``,this.photoUrl=``,this.cameras=[],this.cameraId=``,this.videoReady=!1,this.generation=0,this.close=()=>{this.generation+=1,this.stopCamera(),this.clearPhoto(),this.activeSignal?.removeEventListener(`abort`,this.close),this.activeSignal=void 0,this.captureDestination=void 0,this.uploadDestination=void 0,this.nativeCaptureDestination=void 0,this.stage=`closed`},this.capture=async()=>{let e=this.renderRoot.querySelector(`video`),t=this.generation;if(this.isCurrent(t)&&this.stage===`live`&&e?.videoWidth&&e.videoHeight){this.stage=`capturing`;try{let n=document.createElement(`canvas`);n.width=e.videoWidth,n.height=e.videoHeight;let r=n.getContext(`2d`);if(!r)throw Error(`Canvas unavailable`);r.drawImage(e,0,0),this.stopCamera();let i=await new Promise(e=>{n.toBlob(e,`image/jpeg`,.92)});if(n.width=n.height=0,!this.isCurrent(t))return;if(!i)throw Error(`Image encoding failed`);this.photo=new File([i],`camera-${Date.now()}.${i.type===`image/png`?`png`:`jpg`}`,{type:i.type}),this.photoUrl=URL.createObjectURL(i),this.stage=`review`}catch{this.isCurrent(t)&&this.fail(M(`chat.camera.captureFailed`))}}},this.usePhoto=()=>{if(!this.isCurrent(this.generation)||this.stage!==`review`||!this.photo)return;let e=this.photo,t=this.captureDestination;this.close(),t?.(e)},this.upload=()=>{if(!this.isCurrent(this.generation))return;let e=this.uploadDestination;this.close(),e?.(this)},this.useNativeCamera=()=>{if(!this.isCurrent(this.generation)||this.stage!==`error`)return;let e=this.nativeCaptureDestination;this.close(),e?.(this)}}static{this.styles=Rz}connectedCallback(){super.connectedCallback(),window.addEventListener(`pagehide`,this.close)}disconnectedCallback(){this.close(),window.removeEventListener(`pagehide`,this.close),super.disconnectedCallback()}willUpdate(e){this.stage!==`closed`&&(e.has(`disabled`)&&this.disabled||e.has(`readSignal`)&&this.readSignal!==this.activeSignal)&&this.close()}show(){!this.isConnected||this.disabled||this.readSignal?.aborted||this.stage!==`closed`||(this.activeSignal=this.readSignal,this.activeSignal?.addEventListener(`abort`,this.close,{once:!0}),this.captureDestination=this.onCapture,this.uploadDestination=this.onUpload,this.nativeCaptureDestination=this.onNativeCapture,this.cameraId=``,this.cameras=[],this.stage=`requesting`,this.startCamera())}isCurrent(e){return e===this.generation&&this.stage!==`closed`&&this.isConnected&&!this.disabled&&this.activeSignal===this.readSignal&&!this.activeSignal?.aborted}stopCamera(){this.stream?.getTracks().forEach(e=>e.stop()),this.stream=void 0;let e=this.renderRoot.querySelector(`video`);e&&(e.srcObject=null),this.videoReady=!1}clearPhoto(){this.photoUrl&&URL.revokeObjectURL(this.photoUrl),this.photoUrl=``,this.photo=void 0}fail(e,t=!1){this.generation+=1,this.stopCamera(),this.error=e,this.nativeFallback=t,this.stage=`error`}async startCamera(){if(!this.isCurrent(this.generation))return;let e=++this.generation;if(this.stopCamera(),this.clearPhoto(),this.stage=`requesting`,this.error=``,this.nativeFallback=!1,!globalThis.isSecureContext){this.fail(M(`chat.camera.insecure`),!0);return}if(!navigator.mediaDevices?.getUserMedia){this.fail(M(`chat.camera.unsupported`),!0);return}try{let t=await navigator.mediaDevices.getUserMedia({audio:!1,video:this.cameraId?{deviceId:{exact:this.cameraId}}:{facingMode:{ideal:`environment`}}});if(!this.isCurrent(e)){t.getTracks().forEach(e=>e.stop());return}this.stream=t;let n=t.getVideoTracks()[0];if(!n||n.readyState===`ended`){this.fail(M(`chat.camera.stopped`));return}if(n.addEventListener(`ended`,()=>{this.isCurrent(e)&&this.stream===t&&this.fail(M(`chat.camera.stopped`))},{once:!0}),this.cameraId=n.getSettings().deviceId??this.cameraId,this.listCameras(e),await this.updateComplete,!this.isCurrent(e))return;let r=this.renderRoot.querySelector(`video`);if(!r||(r.srcObject=t,await r.play(),!this.isCurrent(e)))return;this.videoReady=r.videoWidth>0&&r.videoHeight>0,this.stage=`live`}catch(t){if(!this.isCurrent(e))return;let n=t instanceof DOMException||t instanceof Error?t.name:``;this.fail(M(n===`NotAllowedError`||n===`SecurityError`?`chat.camera.permissionDenied`:n===`NotFoundError`||n===`OverconstrainedError`?`chat.camera.notFound`:`chat.camera.unavailable`))}}async listCameras(e){try{let t=await navigator.mediaDevices.enumerateDevices();this.isCurrent(e)&&(this.cameras=t.filter(e=>e.kind===`videoinput`))}catch{}}render(){if(this.stage===`closed`)return z;let e=this.stage===`review`,t=this.stage===`error`,n=t&&this.nativeFallback&&!!this.nativeCaptureDestination;return R`
<openclaw-modal-dialog .label=${M(`chat.camera.title`)} @modal-cancel=${this.close}>
<section class="camera">
<header>
<div>
<h2>${M(`chat.camera.title`)}</h2>
<p>${M(e?`chat.camera.reviewHint`:`chat.camera.previewHint`)}</p>
</div>
<button
type="button"
class="icon-button"
aria-label=${M(`common.close`)}
@click=${this.close}
>
${F.x}
</button>
</header>
<div
class="preview"
aria-busy=${this.stage===`requesting`||this.stage===`capturing`?`true`:`false`}
>
${e?R`<img src=${this.photoUrl} alt=${M(`chat.camera.photoAlt`)} />`:R`<video
autoplay
muted
playsinline
aria-label=${M(`chat.composer.cameraPreview`)}
@loadeddata=${e=>{let t=e.currentTarget;t instanceof HTMLVideoElement&&t.srcObject===this.stream&&this.isCurrent(this.generation)&&(this.videoReady=t.videoWidth>0&&t.videoHeight>0)}}
></video>`}
${t?R`<div class="notice" role="alert">
${F.camera}<strong
>${M(n?`chat.camera.previewUnavailable`:`chat.camera.errorTitle`)}</strong
>
<p>${this.error}</p>
</div>`:this.stage===`requesting`||this.stage===`capturing`?R`<div class="notice" role="status">
${F.camera}
<p>
${this.stage===`capturing`?M(`chat.camera.capturing`):M(`chat.camera.requesting`)}
</p>
</div>`:z}
</div>
${!e&&!t&&this.cameras.length>1?R`<label class="camera-selector"
>${M(`chat.composer.cameraInput`)}
<select
.value=${this.cameraId}
?disabled=${this.stage!==`live`}
@change=${e=>{let t=e.currentTarget;t instanceof HTMLSelectElement&&this.isCurrent(this.generation)&&this.stage===`live`&&(this.cameraId=t.value,this.startCamera())}}
>
${this.cameras.map((e,t)=>R`<option value=${e.deviceId} ?selected=${e.deviceId===this.cameraId}>${e.label||M(`chat.composer.cameraFallback`,{number:String(t+1)})}</option>`)}
</select>
</label>`:z}
<footer>
<button type="button" class="upload" @click=${this.upload}>
${F.image}${M(`chat.camera.upload`)}
</button>
${t&&!n&&this.nativeCaptureDestination?R`<button type="button" class="upload" @click=${this.useNativeCamera}>
${F.camera}${M(`chat.camera.useNativeCamera`)}
</button>`:z}
<div class="actions">
<button
type="button"
autofocus
@click=${e?()=>void this.startCamera():this.close}
>
${M(e?`chat.camera.retake`:`common.cancel`)}
</button>
<button
type="button"
class="primary"
?disabled=${!e&&!t&&(this.stage!==`live`||!this.videoReady)}
@click=${e?this.usePhoto:n?this.useNativeCamera:t?()=>void this.startCamera():this.capture}
>
${M(e?`chat.camera.usePhoto`:n?`chat.camera.useNativeCamera`:t?`chat.camera.retry`:`chat.camera.capture`)}
</button>
</div>
</footer>
</section>
</openclaw-modal-dialog>
`}},q([H({type:Boolean})],Bz.prototype,`disabled`,void 0),q([H({attribute:!1})],Bz.prototype,`readSignal`,void 0),q([H({attribute:!1,hasChanged:()=>!1})],Bz.prototype,`onCapture`,void 0),q([H({attribute:!1,hasChanged:()=>!1})],Bz.prototype,`onUpload`,void 0),q([H({attribute:!1,hasChanged:()=>!1})],Bz.prototype,`onNativeCapture`,void 0),q([V()],Bz.prototype,`nativeFallback`,void 0),q([V()],Bz.prototype,`stage`,void 0),q([V()],Bz.prototype,`error`,void 0),q([V()],Bz.prototype,`photoUrl`,void 0),q([V()],Bz.prototype,`cameras`,void 0),q([V()],Bz.prototype,`cameraId`,void 0),q([V()],Bz.prototype,`videoReady`,void 0),customElements.get(`openclaw-chat-camera-capture`)||customElements.define(`openclaw-chat-camera-capture`,Bz)})))()}function Hz(e,t){e.closest(`details`)?.removeAttribute(`open`),e.closest(`.agent-chat__composer-shell, .new-session-page__composer`)?.querySelector(t)?.click()}function Uz(e,t){let n=e.target;if(!(n instanceof HTMLInputElement))return;let r=[...n.files??[]];n.value=``,LM(r,t)}function Wz(e){return _t(e.uploadConfig)?R`
<openclaw-chat-camera-capture
.disabled=${!!e.disabled||e.cameraActive===!1}
.readSignal=${e.readSignal??e.attachmentReads?.readSignal}
.onCapture=${t=>{e.disabled||LM([t],e)}}
.onNativeCapture=${t=>{e.disabled||Hz(t,`.agent-chat__camera-input`)}}
.onUpload=${t=>{e.disabled||Hz(t,`.agent-chat__photo-input`)}}
></openclaw-chat-camera-capture>
${[`file`,`photo`,`camera`].map(t=>R`
<input
type="file"
accept=${t===`file`?Jz:`image/*`}
?multiple=${t!==`camera`}
capture=${t===`camera`?`environment`:z}
class=${`agent-chat__${t}-input`}
?disabled=${e.disabled}
@change=${t=>{e.disabled||Uz(t,e)}}
/>
`)}
`:z}function Gz(e){let t=e.detail.item.value;if(t!==`camera`&&t!==`photo`&&t!==`file`)return!1;let n=e.currentTarget;return n instanceof HTMLElement&&(t===`camera`?n.closest(`.agent-chat__composer-shell, .new-session-page__composer`)?.querySelector(`openclaw-chat-camera-capture`)?.show():Hz(n,`.agent-chat__${t}-input`)),!0}function Kz(e,t=!1){return R`
<button
slot="trigger"
type="button"
class="agent-chat__input-btn agent-chat__input-btn--attach ${t?`agent-chat__input-btn--has-overrides`:``}"
aria-label=${M(`chat.composer.addAttachment`)}
?disabled=${e}
title=${M(`chat.composer.addAttachment`)}
>
${F.plus}
</button>
`}function qz(e=F.folder){return[{value:`camera`,icon:F.camera,label:M(`chat.composer.takePhoto`)},...Iz()?[{value:`file`,icon:e,label:M(`chat.composer.attach`)}]:[{value:`photo`,icon:F.image,label:M(`chat.composer.attachPhoto`)},{value:`file`,icon:e,label:M(`chat.composer.attachFileOption`)}]].map(({value:e,icon:t,label:n})=>R`
<wa-dropdown-item class="agent-chat__attach-menu-option" value=${e}>
<span slot="icon" aria-hidden="true">${t}</span>
<span>${n}</span>
</wa-dropdown-item>
`)}var Jz;function Yz(){return(Yz=e((()=>{B(),I(),Ru(),b(),It(),Lz(),YM(),Vz(),Jz=`image/*,audio/*,video/*,application/pdf,text/*,.csv,.json,.md,.txt,.zip,.doc,.docx,.xls,.xlsx,.ppt,.pptx`})))()}function Xz(){return R`<div class="agent-chat__capability-menu-divider" role="separator"></div>`}function Zz(e,t){return R`<div class="agent-chat__capability-menu-state" role=${t??z}>
${e}
</div>`}function Qz(){return R`
<wa-dropdown-item class="agent-chat__capability-menu-item" value="back">
<span slot="icon" aria-hidden="true">${F.arrowLeft}</span>
<span>${M(`chat.composer.menu.back`)}</span>
</wa-dropdown-item>
${Xz()}
`}function $z(e){return R`
<wa-dropdown-item
class="agent-chat__capability-menu-item agent-chat__capability-menu-toggle"
value=${e.value}
type="checkbox"
.checked=${Hr(e.checked)}
?disabled=${e.disabled}
title=${e.title??``}
>
${e.icon?R`<span slot="icon" aria-hidden="true">${e.icon}</span>`:z}
<span class="agent-chat__capability-menu-label">
<span>${e.label}</span>
${e.note??z}
</span>
${e.checkbox?z:R`<wa-switch
slot="details"
class="agent-chat__capability-menu-switch"
size="s"
tabindex="-1"
inert
aria-hidden="true"
.checked=${e.checked}
?disabled=${e.disabled}
></wa-switch>`}
</wa-dropdown-item>
`}function eB(){return(eB=e((()=>{B(),Jr(),I(),b()})))()}function tB(e){return R`
${e.loading||e.busy?Zz(M(`common.loading`),`status`):z}
${e.error?R`${Zz(e.error,`alert`)}
<wa-dropdown-item value="library-reload">${M(`common.retry`)}</wa-dropdown-item>`:z}
${e.notice?Zz(e.notice,`status`):z}
`}function nB(e,t){if(!e)return z;let n=e.busy||e.loading,r=e.result?.session;if(t){let i=r?.selections.find(e=>e.skillId===t);return R`
${Qz()} ${tB(e)}
${i?R`
<div class="agent-chat__capability-menu-state">
<span class="agent-chat__capability-menu-label">
<strong>${i.slug} · ${i.ownerLabel}</strong>
<span class="agent-chat__capability-menu-note"
>${M(`skillLibrary.session.pin`,{revision:i.revision.slice(0,8)})}</span
>
</span>
</div>
${[`read`,`refresh`,`detach`].map(t=>t===`read`||e.canWrite?R`<wa-dropdown-item
class="agent-chat__capability-menu-item"
value=${`library-${t}:${i.skillId}`}
?disabled=${n}
>${M(`skillLibrary.session.${t}`)}</wa-dropdown-item
>`:z)}
`:e.result&&!n?Zz(M(`skillsPage.notFound`)):z}
`}return e.result?.defaultTarget===`workspace`&&!r?.selections.length&&!r?.attachable.length?z:R`
${Zz(M(`skillLibrary.session.selected`))} ${tB(e)}
${r?.selections.map(e=>R`<wa-dropdown-item
class="agent-chat__capability-menu-item"
value=${`library-selected:${e.skillId}`}
?disabled=${n}
title=${`${e.slug} · ${e.ownerLabel}`}
>
<span class="agent-chat__capability-menu-label"
><span>${e.slug} · ${e.ownerLabel}</span
><span class="agent-chat__capability-menu-note"
>${M(`skillLibrary.session.pin`,{revision:e.revision.slice(0,8)})}</span
></span
>
<span slot="details" class="agent-chat__capability-menu-chevron" aria-hidden="true"
>${F.chevronRight}</span
>
</wa-dropdown-item>`)}
${r&&r.selections.length===0?Zz(M(`skillLibrary.session.empty`)):z}
${r?.attachable.length?R`${Xz()} ${Zz(M(`skillLibrary.session.attachable`))}
${r.attachable.map(t=>R`<wa-dropdown-item
class="agent-chat__capability-menu-item"
value=${`library-attach:${t.skillId}`}
?disabled=${n||!e.canWrite}
>
<span class="agent-chat__capability-menu-label"
><span title=${`${t.slug} · ${t.ownerLabel}`}
>${M(`skillLibrary.session.attachNamed`,{name:t.slug,owner:t.ownerLabel})}</span
><span class="agent-chat__capability-menu-note" title=${t.description}
>${t.description}</span
></span
>
</wa-dropdown-item>`)}`:z}
${e.result?Zz(M(`skillLibrary.defaultLimit`,{count:String(e.result.defaultSelectionLimit)})):z}
${e.result?.defaultSelectionNotice?Zz(e.result.defaultSelectionNotice,`status`):z}
${Xz()} ${Zz(M(`skillLibrary.inventory`))}
`}function rB(e,t,n){if(!e.startsWith(`library-`))return!1;if(e===`library-reload`)t?.onReload();else if(t&&!t.loading&&!t.busy){let r=e.slice(e.indexOf(`:`)+1),i=t.result?.session?.selections.find(e=>e.skillId===r);if(e.startsWith(`library-selected:`)&&i)n(`library:${i.skillId}`);else if(e.startsWith(`library-read:`)&&i)t.onRead(i.skillId,i.revision);else if(t.canWrite){if(e.startsWith(`library-attach:`)){let e=t.result?.session?.attachable.find(e=>e.skillId===r);e&&t.onActivate(`attach`,e.skillId,e.revision)}else i&&e.startsWith(`library-detach:`)?(t.onActivate(`detach`,i.skillId),n(`skills`)):i&&e.startsWith(`library-refresh:`)&&t.onActivate(`refresh`,i.skillId)}}return!0}function iB(){return(iB=e((()=>{B(),I(),b(),vs(),is(),eB(),Yc(),Mc()})))()}function aB(e,t){return R`<a
class="agent-chat__capability-menu-link"
href=${e}
tabindex="-1"
@click=${e=>e.preventDefault()}
>${t}</a
>`}function oB(e){let t=rF(e.toolOverrides),n=e.mcpServers.filter(t=>QP(t.enabled,YP(e.toolOverrides?.mcpServers,t.name))).length,r=Object.keys(e.toolOverrides?.skills??{}).length>0,i=e.skills?.filter(e=>e.enabled).length??0,a=$P(e.webSearchBaseEnabled,e.toolOverrides?.webSearch),o=!e.webSearchBaseEnabled&&e.toolOverrides?.webSearch===!0,s=e.mutationBlockedReason!==null||!e.webSearchBaseEnabled&&!o,c=e.mutationBlockedReason??(o?M(`chat.composer.menu.webSearchClearStaleEnable`):e.webSearchBaseEnabled?``:M(`chat.composer.menu.webSearchGloballyDisabled`)),l=_t(e.attachments.uploadConfig),u=l?qz(F.paperclip):z,d=e.rootToggles??[];return!e.showCapabilities&&d.length===0?u:R`
${u} ${l?Xz():z}
${d.map($z)}
${e.showCapabilities?R`${[[`skills`,F.book,r?M(`chat.composer.menu.enabledCount`,{count:String(i)}):null],[`connectors`,F.plug,n]].map(([e,t,n])=>R`<wa-dropdown-item
class="agent-chat__capability-menu-item"
value=${`open-${e}`}
>
<span slot="icon" aria-hidden="true">${t}</span>
<span>${M(`chat.composer.menu.${e}`)}</span>
<span slot="details" class="agent-chat__capability-menu-details">
${n===null?z:R`<span class="agent-chat__capability-menu-badge">${n}</span>`}
<span class="agent-chat__capability-menu-chevron" aria-hidden="true"
>${F.chevronRight}</span
>
</span>
</wa-dropdown-item>`)}
${$z({value:`toggle-web-search`,label:M(`chat.composer.menu.webSearch`),checked:a,disabled:s,title:c,icon:F.globe,checkbox:!0})}
${Xz()}
<wa-dropdown-item class="agent-chat__capability-menu-item" value="manage-plugins">
<span slot="icon" aria-hidden="true">${F.plug}</span>
${aB(Vn(`plugins`,e.basePath),M(`chat.composer.menu.managePlugins`))}
</wa-dropdown-item>
${t>0?R`
<wa-dropdown-item
class="agent-chat__capability-menu-item agent-chat__capability-menu-overrides"
value="clear-overrides"
?disabled=${e.mutationBlockedReason!==null}
title=${e.mutationBlockedReason??``}
>
<span slot="icon" aria-hidden="true">${F.settings}</span>
<span
>${M(t===1?`chat.composer.overrides.countOne`:`chat.composer.overrides.count`,{count:String(t)})}</span
>
<span
slot="details"
class="agent-chat__capability-menu-clear-overrides"
aria-hidden="true"
>${F.x}</span
>
</wa-dropdown-item>
`:z}`:z}
`}function sB(e){let t=e.mutationBlockedReason,n=e.skillsLoading?Zz(M(`chat.composer.menu.loadingSkills`),`status`):e.skillsError?Zz(M(`chat.composer.menu.skillsLoadFailed`),`alert`):!e.skills||e.skills.length===0?Zz(M(`chat.composer.menu.noSkills`)):e.skills.map((e,n)=>{let r=e.missingDeps?M(`chat.composer.menu.depsMissing`):e.blocked?M(`chat.composer.menu.skillBlocked`):t;return $z({value:`skill:${n}`,label:e.name,checked:e.enabled,disabled:e.missingDeps||e.blocked||t!==null,title:r,note:e.missingDeps||e.blocked?R`<span class="agent-chat__capability-menu-note">${r}</span>`:z})});return R`
${Qz()} ${nB(e.library)} ${n} ${Xz()}
<wa-dropdown-item class="agent-chat__capability-menu-item" value="manage-skills">
${aB(Vn(`skills`,e.basePath),M(`chat.composer.menu.manageSkills`))}
</wa-dropdown-item>
`}function cB(e){let t=e.mutationBlockedReason,n=e.mcpServers.length===0?Zz(M(`chat.composer.menu.noConnectors`)):e.mcpServers.map((n,r)=>{let i=YP(e.toolOverrides?.mcpServers,n.name),a=QP(n.enabled,i);return R`
${$z({value:`connector:${r}`,label:n.name,checked:a,disabled:t!==null,title:t,note:R`<span class="agent-chat__capability-menu-note">
${M(a?`common.enabled`:`common.disabled`)}
${i===void 0?z:R`<span class="agent-chat__capability-menu-session-tag"
>${M(`chat.composer.menu.sessionTag`)}</span
>`}
</span>`})}
${e.onOpenToolAccess?R`<wa-dropdown-item
class="agent-chat__capability-menu-item agent-chat__capability-menu-subrow"
value=${`tools:${r}`}
>
<span slot="icon" aria-hidden="true">${F.wrench}</span>
<span>${M(`chat.composer.menu.toolAccess.label`)}</span>
</wa-dropdown-item>`:z}
`}),r=!e.canAdmin;return R`
${Qz()} ${n} ${Xz()}
${e.onAddServer?R`<wa-dropdown-item
class="agent-chat__capability-menu-item"
value="add-server"
?disabled=${r}
title=${r?e.adminBlockedReason??``:``}
>
<span slot="icon" aria-hidden="true">${F.plus}</span>
<span>${M(`chat.composer.menu.addMcpServer`)}</span>
</wa-dropdown-item>`:z}
`}function lB(e,t){return(e?.groups??[]).flatMap(e=>e.tools).filter(e=>e.source===`mcp`&&e.mcpServer===t&&!!e.mcpToolName)}function uB(e,t){return e?.notices?.find(e=>gB.has(e.id)&&e.servers?.includes(t)===!0)}function dB(e,t){let n=t.mcpServer,r=t.mcpToolName;return n?e.toolOverrides==null?t.deniedBySession===!0:YP(e.toolOverrides.mcpToolsDeny,n)?.includes(r)??!1:!1}function fB(e,t){let n=lB(e.toolsEffectiveResult,t),r=n.length===0?uB(e.toolsEffectiveResult,t):null,i=n.filter(t=>!dB(e,t)).length,a=M(n.length===1?`chat.composer.menu.toolAccess.summaryOne`:`chat.composer.menu.toolAccess.summary`,{enabled:String(i),total:String(n.length)}),o=e.toolsEffectiveLoading?Zz(M(`chat.composer.menu.toolAccess.loading`),`status`):e.toolsEffectiveError?Zz(M(`chat.composer.menu.toolAccess.loadFailed`),`alert`):r?Zz(gt(r.message),`status`):n.length===0?Zz(M(`chat.composer.menu.toolAccess.noTools`)):n.map((t,n)=>{let r=t.mcpToolName,i=t.label?.trim(),a=dB(e,t);return $z({value:`mcp-tool:${n}`,label:r,checked:!a,disabled:e.toolAccessMutationBlockedReason!==null,title:e.toolAccessMutationBlockedReason,note:i&&i!==r?R`<span class="agent-chat__capability-menu-note">${i}</span>`:z})});return R`
${Qz()}
<div class="agent-chat__capability-menu-state">
<span class="agent-chat__capability-menu-label">
<strong translate="no">${t}</strong>
${n.length>0?R`<span class="agent-chat__capability-menu-note">${a}</span>`:z}
</span>
</div>
${o}
`}function pB(e,t){let n=e.detail.item.value??``;if(_t(t.attachments.uploadConfig)&&Gz(e))return;let r=t.rootToggles?.find(e=>e.value===n);if(r){e.preventDefault(),r.disabled||r.onChange(!r.checked);return}let i=e.currentTarget,a=e=>{t.onViewChange(e),requestAnimationFrame(()=>i.querySelector(`wa-dropdown-item:not([disabled])`)?.focus())};if(n===`back`){e.preventDefault(),a(t.view.startsWith(`tools:`)?`connectors`:t.view.startsWith(`library:`)?`skills`:`root`);return}if(n===`open-skills`||n===`open-connectors`){e.preventDefault(),a(n===`open-skills`?`skills`:`connectors`);return}if(rB(n,t.library,a)){e.preventDefault();return}if(n===`toggle-web-search`){if(e.preventDefault(),t.mutationBlockedReason)return;if(!t.webSearchBaseEnabled){t.toolOverrides?.webSearch===!0&&t.onPatchToolOverrides(tF(t.toolOverrides,!1,t.webSearchBaseEnabled));return}let n=$P(t.webSearchBaseEnabled,t.toolOverrides?.webSearch);t.onPatchToolOverrides(tF(t.toolOverrides,!n,t.webSearchBaseEnabled));return}if(n===`clear-overrides`){e.preventDefault(),t.mutationBlockedReason||t.onPatchToolOverrides(null);return}if(n.startsWith(`skill:`)){e.preventDefault();let r=t.skills?.[Number(n.slice(6))];r&&!r.missingDeps&&!r.blocked&&!t.mutationBlockedReason&&t.onPatchToolOverrides(eF(t.toolOverrides,`skills`,r.key,!r.enabled,r.baseEnabled));return}if(n.startsWith(`connector:`)){e.preventDefault();let r=t.mcpServers[Number(n.slice(10))];if(r&&!t.mutationBlockedReason){let e=QP(r.enabled,YP(t.toolOverrides?.mcpServers,r.name));t.onPatchToolOverrides(eF(t.toolOverrides,`mcpServers`,r.name,!e,r.enabled))}return}if(n.startsWith(`tools:`)){e.preventDefault();let r=t.mcpServers[Number(n.slice(6))];r&&(t.onOpenToolAccess?.(r.name),a(`tools:${r.name}`));return}if(n.startsWith(`mcp-tool:`)&&t.view.startsWith(`tools:`)){if(e.preventDefault(),t.toolAccessMutationBlockedReason)return;let r=t.view.slice(6),i=lB(t.toolsEffectiveResult,r)[Number(n.slice(9))];i?.mcpToolName&&t.onPatchToolOverrides(nF(t.toolOverrides,r,i.mcpToolName,!dB(t,i)));return}if(n===`add-server`){t.onAddServer?.();return}n===`manage-skills`?t.onNavigate(`skills`):n===`manage-plugins`&&t.onNavigate(`plugins`)}function mB(e){let t=rF(e.toolOverrides)>0,n=e.showCapabilities?e.view:`root`,r=n===`skills`?sB(e):n===`connectors`?cB(e):n.startsWith(`tools:`)?fB(e,n.slice(6)):n.startsWith(`library:`)?nB(e.library,n.slice(8)):oB(e);return R`
<wa-dropdown
class="agent-chat__attach-menu agent-chat__capability-menu"
placement="top-start"
aria-label=${M(`chat.composer.addAttachment`)}
.open=${e.open}
@wa-select=${t=>pB(t,e)}
@wa-show=${()=>{e.open||e.onOpenChange(!0),e.onLoadSkills()}}
@wa-hide=${()=>{e.open&&e.onOpenChange(!1)}}
data-view=${n}
>
${Kz(e.disabled,t)} ${r}
</wa-dropdown>
${e.addServerDialog??z} ${e.libraryDialog??z}
`}function hB(e){let t=e.capabilityMenu;return!t&&!e.rootToggles?.length&&!_t(e.attachments.uploadConfig)?z:mB({...e,...t,showCapabilities:t!==void 0,basePath:t?.basePath??``,skills:t?.skills??null,skillsLoading:t?.skillsLoading??!1,skillsError:t?.skillsError??!1,mcpServers:t?.mcpServers??[],toolsEffectiveResult:t?.toolsEffectiveResult??null,toolsEffectiveLoading:t?.toolsEffectiveLoading??!1,toolsEffectiveError:t?.toolsEffectiveError??!1,toolAccessMutationBlockedReason:t?.toolAccessMutationBlockedReason??null,webSearchBaseEnabled:t?.webSearchBaseEnabled??!0,mutationBlockedReason:t?.mutationBlockedReason??null,canAdmin:t?.canAdmin??!1,adminBlockedReason:t?.adminBlockedReason??null,onLoadSkills:t?.onLoadSkills??(()=>{}),onPatchToolOverrides:t?.onPatchToolOverrides??(()=>{}),onNavigate:t?.onNavigate??(()=>{})})}var gB;function _B(){return(_B=e((()=>{B(),pr(),I(),du(),b(),Ic(),N(),Dn(),Ru(),It(),Yz(),iB(),eB(),ms(),gB=new Set([`mcp-not-yet-connected`,`mcp-not-yet-listed`,`mcp-stale-catalog`])})))()}function vB(e,t,n,r){if(!t?.length)return z;let i=[...new Map(t.map(e=>[e.profileId,e])).values()].map(t=>{let n=e.slice(t.start,t.end);return{profileId:t.profileId,label:n,name:n.replace(/^@/u,``)}});return R`<div class="chat-reply-preview composer-context-strip" role="status">
<span class="composer-context-strip__label">
<span class="composer-context-strip__icon" aria-hidden="true">${F.bell}</span>
<span class="composer-context-strip__label-text">${M(`chat.mentions.selectedLabel`)}</span>
</span>
<span class="sr-only">${i.map(e=>e.name).join(`, `)}</span>
<span
class="composer-context-strip__people"
aria-hidden="true"
${bB(JSON.stringify(i.map(e=>e.name)))}
>
${i.map((e,t)=>R`<span class="composer-context-strip__person" title=${e.label}>
${Cb({id:e.profileId,name:e.name,identity:{type:`profile`,id:e.profileId},profileAvatarUrl:r?.get(e.profileId)})}
<bdi class="composer-context-strip__person-name"
>${e.name}${t<i.length-1?`,`:``}</bdi
>
</span>`)}
<span class="composer-context-strip__more" dir="ltr" hidden></span>
</span>
<button
type="button"
class="chat-reply-preview__dismiss composer-context-strip__dismiss"
aria-label=${M(`chat.mentions.remove`)}
@click=${n}
>
${F.x}
</button>
</div>`}var yB,bB;function xB(){return(xB=e((()=>{B(),Vr(),Er(),I(),b(),Eb(),yB=class extends kr{constructor(...e){super(...e),this.observer=typeof ResizeObserver>`u`?void 0:new ResizeObserver(()=>this.sync())}render(e){return z}update(e,[t]){let n=e.element instanceof HTMLElement?e.element:void 0;return this.element===n&&this.names===t?z:(this.element=n,this.names=t,this.schedule(),z)}schedule(){queueMicrotask(()=>{this.isConnected&&this.element?.isConnected&&(this.observer?.observe(this.element),this.sync(),document.fonts?.status===`loading`&&document.fonts.ready.then(()=>this.sync()))})}sync(){let e=this.element;if(!this.isConnected||!e?.isConnected)return;let t=[...e.querySelectorAll(`.composer-context-strip__person`)],n=e.querySelector(`.composer-context-strip__more`);if(!t.length||!n)return;for(let e of t)e.hidden=!1,e.style.maxWidth=``;n.hidden=!1,n.textContent=`+${t.length-1}`;let r=Number.parseFloat(getComputedStyle(e).columnGap),i=t.map(e=>e.getBoundingClientRect().width),a=e.clientWidth,o=n.getBoundingClientRect().width,s=t.length;if(i.reduce((e,t)=>e+t,0)+r*(t.length-1)>a){s=1;let e=i[0];for(;s<t.length&&e+r+i[s]+r+o<=a;)e+=r+i[s],s+=1}t.forEach((e,t)=>{e.hidden=t>=s}),n.hidden=s===t.length,n.textContent=`+${t.length-s}`,n.title=t.slice(s).map(e=>e.title).join(`, `),t[0].style.maxWidth=`${Math.max(0,a-(n.hidden?0:o+r))}px`}disconnected(){this.observer?.disconnect()}reconnected(){this.schedule()}},bB=Mr(yB)})))()}function SB(e,t){let n=e.currentTarget;if(!(n instanceof HTMLElement)||!n.hasAttribute(`open`)||!/^[1-5]$/u.test(e.key))return;let r=n.querySelector(`[data-chat-permission-shortcut="${e.key}"]`);if(!r||r.hasAttribute(`disabled`))return;let i=wB(r.dataset.chatPermissionOption);i!==void 0&&(e.preventDefault(),e.stopPropagation(),t(i),n.removeAttribute(`open`),n.querySelector(`[slot=trigger]`)?.focus())}function CB(e,t){return e?M(`chat.permissionControls.modes.${e}.label`):t?M(`chat.permissionControls.defaultWithMode`,{mode:M(`chat.permissionControls.modes.${t}.label`)}):M(`chat.permissionControls.default`)}function wB(e){return e===OB?null:DB.find(t=>t===e)}function TB(e){let t=e.disabled||e.pending,n=(e.mode??e.defaultMode)===`full`,r=CB(e.mode,e.defaultMode),i=n=>{t||n===`full`&&!e.canSelectFull||n!==(e.mode??null)&&e.onSelect(n)};return R`
<wa-dropdown
class="chat-controls__inline-select chat-controls__permission-picker"
placement="top-start"
@wa-after-show=${jR}
@keydown=${e=>SB(e,i)}
@wa-select=${e=>{let t=wB(e.detail.item.value);t!==void 0&&i(t)}}
>
<button
slot="trigger"
type="button"
class="chat-controls__inline-select-trigger chat-controls__permission-trigger ${e.disabled?`chat-controls__inline-select-trigger--disabled`:``} ${e.mode?``:`chat-controls__permission-trigger--default`} ${n?`chat-controls__permission-trigger--full`:``}"
data-chat-permission-select="true"
data-chat-select-value=${e.mode??``}
aria-label=${`${M(`chat.permissionControls.label`)}: ${r}`}
aria-disabled=${t?`true`:`false`}
title=${e.disabledReason??M(`chat.permissionControls.help`)}
?disabled=${t}
>
<span class="chat-controls__permission-icon" aria-hidden="true"
>${e.mode?AB[e.mode]:F.shieldCheck}</span
>
</button>
<div class="chat-controls__popover-title chat-controls__permission-heading">
${M(`chat.permissionControls.label`)}
</div>
<wa-dropdown-item
class="chat-controls__permission-learn-more learn-more-link"
href=${EB}
target=${nc}
rel=${js()}
>
${M(`common.learnMore`)}
</wa-dropdown-item>
${kB.map((n,r)=>{let i=n??OB,a=(e.mode??null)===n,o=n===`full`&&!e.canSelectFull;return R`
<wa-dropdown-item
class="chat-controls__permission-option ${a?`chat-controls__permission-option--selected`:``}"
value=${i}
data-chat-permission-option=${i}
data-chat-permission-shortcut=${String(r+1)}
role="menuitemradio"
aria-checked=${a?`true`:`false`}
aria-label=${o?`${CB(n,e.defaultMode)}. ${M(`chat.permissionControls.fullRequiresAdmin`)}`:CB(n,e.defaultMode)}
title=${o?M(`chat.permissionControls.fullRequiresAdmin`):z}
?disabled=${t||o}
>
<span slot="icon" class="chat-controls__permission-option-icon" aria-hidden="true"
>${n?AB[n]:F.shieldCheck}</span
>
<span class="chat-controls__permission-option-copy">
<span class="chat-controls__permission-option-title">
<span>${CB(n,e.defaultMode)}</span>
</span>
<span class="chat-controls__permission-option-description">
${M(n?`chat.permissionControls.modes.${n}.description`:`chat.permissionControls.defaultDescription`)}
</span>
</span>
<span slot="details" class="chat-controls__permission-option-state" aria-hidden="true">
${a||o?z:R`<span class="chat-controls__permission-shortcut">${r+1}</span>`}
${o?R`<span class="chat-controls__permission-lock">${F.lock}</span>`:z}
${a&&!o?R`<span class="chat-controls__inline-select-check">${F.check}</span>`:z}
</span>
</wa-dropdown-item>
`})}
</wa-dropdown>
`}var EB,DB,OB,kB,AB;function jB(){return(jB=e((()=>{B(),I(),b(),Yi(),Ds(),zR(),Gs(),EB=`https://docs.openclaw.ai/gateway/permission-modes`,DB=[`read-only`,`guarded`,`workspace`,`full`],OB=`default`,kB=[null,...DB],AB={"read-only":F.shieldEllipsis,guarded:F.shieldLock,workspace:F.shieldCog,full:F.shieldAlert}})))()}function MB(e){return e.composedPath().some(e=>e instanceof HTMLElement&&e.localName===`openclaw-image-lightbox`)}function NB(e){let t=e.composedPath().find(e=>e instanceof HTMLElement&&(e.classList.contains(`markdown-inline-image`)||e.classList.contains(`markdown-inline-image-button`))),n=t instanceof HTMLImageElement?t:t?.querySelector(`.markdown-inline-image`)??null;return n?.closest(`a`)?null:n}function PB(e,t){if(e.defaultPrevented)return!1;let n=NB(e);return n?(e.preventDefault(),nw(t,n.currentSrc||n.src,n.alt.trim()||M(`chat.imageLightbox.untitled`)),!0):!1}function FB(e,t){return e?R`
<openclaw-image-lightbox
.mediaKind=${e.kind??`image`}
.gallery=${e.gallery}
.connectVideo=${e.connectVideo}
.loadFullResolution=${e.loadFullResolution}
src=${e.src}
.originalSrc=${e.originalSrc??``}
.imageTitle=${e.title}
.imageWidth=${e.width}
.imageHeight=${e.height}
@image-lightbox-close=${t}
></openclaw-image-lightbox>
`:z}function IB(){return(IB=e((()=>{B(),Ed(),b(),rw()})))()}function LB(e){let t=e.replace(/[\\/]+$/u,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));if(n<0)return;let r=n===0?t.slice(0,1):t.slice(0,n);return Bt(r)||void 0}function RB(e){return e.startsWith(`/`)||e.startsWith(`\\`)||/^[A-Za-z]:[\\/]/.test(e)}function zB(e){if(!RB(e))return null;let t=e.trim().replaceAll(`\\`,`/`),n=/^[A-Za-z]:\//u.test(t)||t.startsWith(`//`),r=[],i=/^[A-Za-z]:\//u.test(t)?1:t.startsWith(`//`)?2:0;for(let e of t.split(`/`))if(e&&e!==`.`){if(e===`..`){r.length>i&&r.pop();continue}r.push(e)}let a=`${t.startsWith(`//`)?`//`:t.startsWith(`/`)?`/`:``}${r.join(`/`)}`.replace(/\/+$/u,``)||`/`;return n?a.toLowerCase():a}function BB(e,t){let n=zB(e);return n!==null&&n===zB(t)}function VB(e,t){let n=zB(e),r=zB(t);return!n||!r?!1:r===n||r.startsWith(n===`/`?n:`${n}/`)}function HB(e,t){return e.some(e=>VB(e,t))}function UB(){return(UB=e((()=>{})))()}function WB(e){let t=e.loading?M(`chat.thread.loadingEarlier`):M(`chat.thread.showEarlier`);return R`
<div class="chat-history-boundary ${e.loading?`chat-history-boundary--loading`:``}">
<span class="chat-history-boundary__line" aria-hidden="true"></span>
<button
class="chat-history-boundary__action"
type="button"
?disabled=${e.loading}
aria-busy=${e.loading?`true`:`false`}
aria-label=${t}
@click=${e.onShowEarlier}
>
<span role="status">${t}</span>
</button>
<span class="chat-history-boundary__line" aria-hidden="true"></span>
</div>
`}function GB(){return(GB=e((()=>{B(),b()})))()}function KB(e){let t=e.currentAgentId??`main`,n=e.agents?.find(e=>e.id===t);return{id:t,avatar:Gt(e.assistantAvatarUrl,{identity:{avatar:e.assistantAvatar??void 0,avatarUrl:e.assistantAvatarUrl??void 0}})??(n?wt(n):null),textAvatar:st(e.assistantAvatar)??(n?lt(n):null)}}function qB(e){if(!e.sessions)return[];let t=e.sessionHost??{},n=l(t),r=Et(e.sessionKey)?.agentId??n;return mn(e.sessions,{agentId:r,defaultAgentId:n,filterByAgent:!0}).filter(t=>!at(t.key,e.sessionKey)&&!et(t.key,t.channel).channelSession).toSorted((e,t)=>(t.updatedAt??0)-(e.updatedAt??0)||e.key.localeCompare(t.key)).slice(0,eV)}function JB(){return R`
<div class="agent-chat__welcome-clawd" aria-hidden="true">
<openclaw-mascot mood="idle" .size=${112}></openclaw-mascot>
</div>
`}function YB(e,t){return R`
<div class="agent-chat__recents">
<div class="agent-chat__recents-title">${M(`chat.welcome.recentSessions`)}</div>
${e.map(e=>{let n=pt(e);return R`
<button type="button" class="agent-chat__recent" @click=${()=>t?.(e.key)}>
<span class="agent-chat__recent-name">${ke(e.key,e)}</span>
${n?R`<span class="agent-chat__recent-sub">${n}</span>`:z}
<span class="agent-chat__recent-time">
${pn(e.updatedAt,{fallback:``})}
</span>
</button>
`})}
</div>
`}function XB(e){return R`
<div class="agent-chat__suggestions">
${$B.map(t=>{let n=M(t);return R`
<button
type="button"
class="agent-chat__suggestion"
@click=${()=>{e.onDraftChange(n),e.onSend()}}
>
${n}
</button>
`})}
</div>
`}function ZB(e){let t=e.assistantName||`Assistant`,n=e.hint??R`${M(`chat.welcome.hintBeforeShortcut`)} ${er(`/`)}
${M(`chat.welcome.hintAfterShortcut`)}`;return R`
<div class="agent-chat__welcome-identity">
<span class="agent-chat__welcome-avatar" role="img" aria-label=${t}>
${Au(KB(e))}
</span>
<div class="agent-chat__welcome-identity-copy">
<h2>${t}</h2>
<p class="agent-chat__hint">${n}</p>
</div>
</div>
`}function QB(e){if(e.modelSetupRequired)return R`
<div class="agent-chat__welcome agent-chat__welcome--setup" role="alert">
${JB()}
<h2>${M(`modelSetup.required.title`)}</h2>
<p class="agent-chat__hint">${M(`modelSetup.required.body`)}</p>
${e.onModelSetup?R`<button class="btn primary" type="button" @click=${e.onModelSetup}>
${M(`modelSetup.required.action`)}
</button>`:z}
</div>
`;let t=qB(e);return R`
<div class="agent-chat__welcome" style="--agent-color: var(--accent)">
${ZB(e)} ${e.composer??z}
${e.hideSecondaryContent?z:R`<div
class="agent-chat__welcome-secondary ${e.fadeSecondaryContent?`agent-chat__welcome-secondary--hidden`:``}"
aria-hidden=${e.fadeSecondaryContent?`true`:`false`}
?inert=${e.fadeSecondaryContent}
>
<div class="agent-chat__welcome-secondary-inner">
${t.length>0?YB(t,e.onOpenSession):XB(e)}
</div>
</div>`}
</div>
`}var $B,eV;function tV(){return(tV=e((()=>{B(),yu(),Xn(),b(),dd(),qc(),Vt(),Ut(),qe(),rt(),u(),O(),To(),$B=[`chat.welcome.suggestions.whatCanYouDo`,`chat.welcome.suggestions.summarizeRecentSessions`,`chat.welcome.suggestions.configureChannel`,`chat.welcome.suggestions.checkSystemHealth`],eV=5})))()}function nV(e){let{owner:t,selection:n,client:r}=e;if(!n)return;let i=rV.get(t);(!i?.isCurrent()||i.model!==e.model||i.selection!==n)&&(i={model:e.model,selection:n,accounts:[],loading:!1,open:!1,error:null,isCurrent:e.ownsSelection},rV.set(t,i));let a=i,o=()=>rV.get(t)===a&&a.isCurrent(),s=async t=>{if(r&&o()&&!a.loading){a.loading=!0,a.error=null,e.onRequestUpdate();try{let e=await r.request(`users.listModelAccounts`,t?{cursor:t}:{});o()&&(a.accounts=t?[...a.accounts,...e.accounts]:e.accounts,a.nextCursor=e.nextCursor)}catch(e){o()&&(a.error=j(e,M(`profilePage.modelAccounts.inventoryFailed`)))}finally{o()&&(a.loading=!1,e.onRequestUpdate())}}},c=e.model.includes(`/`)?mt(e.model.slice(0,e.model.indexOf(`/`))):``,l=n.kind===`automatic`?void 0:n.authProfileId,u=e.modelAuthStatusResult?.providers.filter(e=>Us(mt(e.provider))===Us(c)).flatMap(e=>e.profiles)??[],d=e=>u.find(t=>t.profileId===e)?.email,f=u.find(e=>e.profileId===l),p=f?.displayName||n.label,m=[...new Set([f?.email,p].filter(Boolean))].join(` · `),h=e=>d(e?.authProfileId)??(e&&a.accounts.some(t=>t.authProfileId!==e.authProfileId&&t.provider===e.provider&&t.label===e.label)?e.authProfileId:void 0),g=`current`,_=[{value:g,label:p,description:d(l)??h(a.accounts.find(e=>e.authProfileId===l))},...a.accounts.filter(e=>e.provider===c&&e.authProfileId!==l).map(e=>({value:`account:${e.authProfileId}`,label:e.label,description:h(e)})),...e.onAutomatic?[{value:`automatic`,label:M(`chat.modelAccounts.automatic`)}]:[],...a.loading?[{value:`loading`,label:M(`common.loading`),disabled:!0}]:[],...a.nextCursor?[{value:`more`,label:M(`profilePage.modelAccounts.loadMore`),disabled:a.loading}]:[],...e.onManage?[{value:`manage`,label:M(`chat.modelAccounts.manage`)}]:[]],v=(t,n)=>{if(n.stopPropagation(),o()&&!e.disabled){if(t===`manage`)e.onManage?.();else if(t===`automatic`)e.onAutomatic?.();else if(t===`more`)n.preventDefault(),s(a.nextCursor);else{let n=a.accounts.find(e=>`account:${e.authProfileId}`===t&&e.provider===c);n&&e.onSelect(n)}}};return{onClose:()=>{a.open=!1,e.onRequestUpdate()},render:t=>R`
<section
class="chat-controls__provider-model-group"
data-chat-account-selection=${n.kind}
aria-label=${M(`chat.modelAccounts.section`)}
>
<button
class="chat-controls__provider-heading chat-controls__account-heading"
type="button"
data-chat-account-group-toggle
data-chat-model-group-toggle
aria-expanded=${a.open}
?disabled=${e.disabled}
@click=${()=>{a.open=!a.open,e.onRequestUpdate(),a.open&&a.accounts.length===0&&!a.loading&&s()}}
>
<span class="chat-controls__provider-icon chat-controls__target-icon" aria-hidden="true"
>${F.users}</span
>
<span class="chat-controls__provider-label">${M(`chat.modelAccounts.section`)}</span>
<span class="chat-controls__account-selection" title=${m}
>${m}</span
>
<span class="chat-controls__inline-select-chevron" aria-hidden="true"
>${a.open?F.chevronUp:F.chevronDown}</span
>
</button>
<div
class="chat-controls__provider-model-list"
data-chat-model-list="true"
role="listbox"
aria-label=${M(`chat.modelAccounts.section`)}
>
${Rr(_,e=>e.value,(n,r)=>R`
<button
class="chat-controls__inline-select-option chat-controls__model-option"
type="button"
role="option"
aria-selected=${n.value===g}
data-chat-account-option=${n.value}
data-chat-model-option=${`account:${n.value}`}
data-chat-model-index=${t+r}
data-chat-model-name=${n.label.toLocaleLowerCase()}
data-chat-model-keywords=${n.description?.toLocaleLowerCase()??``}
data-chat-model-provider-label="account"
?hidden=${!a.open}
aria-disabled=${n.disabled?`true`:z}
?disabled=${e.disabled||n.disabled&&n.value!==`more`}
@mouseenter=${cR}
@click=${e=>v(n.value,e)}
>
<span class="chat-controls__model-option-provider" aria-hidden="true"
>${F.users}</span
>
<span class="chat-controls__model-option-copy">
<span class="chat-controls__model-option-name">${n.label}</span>
${n.description?R`<span class="chat-controls__auth-meta" title=${n.description}><span class="chat-controls__model-option-name">${n.description}</span></span>`:z}
</span>
<span class="chat-controls__model-option-action">
${n.value===g?R`<span class="chat-controls__inline-select-check" aria-hidden="true">${F.check}</span>`:z}
</span>
</button>
`)}
</div>
${a.error?R`<span class="chat-controls__account-error" role="alert"
>${a.error}</span
>`:z}
</section>
`}}var rV;function iV(){return(iV=e((()=>{B(),Ur(),I(),b(),Lc(),Oe(),N(),Ka(),vR(),el(),rV=new WeakMap})))()}function aV(e){return e.replace(/^Inherited:\s*/u,``)}function oV(e){let t=e.thinking.options,n=t.length>0;if(!e.reserved&&!n&&!e.fastMode.supported)return z;let r=e.thinking.selection,i=Ua(r.value)===`off`,a=-120+(i||r.kind===`unanchored`?0:t.length>1?r.index/(t.length-1):1)*240,o=r.source===`override`,s=o?r.value:``,c=r.kind===`anchored`?r.index:0,l=r.kind===`unanchored`,u=t.findLastIndex(e=>e.label!==`On`&&[`minimal`,`low`,`medium`,`high`,`xhigh`,`max`].includes(e.value)),d=e=>t[e]?.value===`ultra`?`ultra`:e===u?`max`:``,f=l?``:d(c),p=e=>t.length>1?e/(t.length-1)*100:0,m=aV(e.thinking.inherited.displayLabel),h=aV(r.displayLabel),g=o?h:M(`chat.modelControls.defaultWithLevel`,{level:m}),_=e.fastMode.currentOverride===`ultrafast`&&e.fastMode.ultrafastSupported===!0,v=_?M(`chat.modelControls.ultrafast`):e.fastMode.currentOverride===`auto`?e.fastMode.label:M(`chat.modelControls.fast`),y=n?h:M(`chat.modelControls.speed`),b=n?e.fastMode.active?`${y} · ${v}`:y:`${y}: ${e.fastMode.label}`,x=t=>{e.onThinkingSelect(t,e.sessionKey).finally(()=>e.onRequestUpdate?.()),e.onRequestUpdate?.()},S=t=>{e.onFastModeSelect(t,e.sessionKey).finally(()=>e.onRequestUpdate?.()),e.onRequestUpdate?.()},C=[{value:e.fastMode.nextValue===``?``:`off`,label:M(`chat.modelControls.standard`)},...e.fastMode.nextValue===``?[]:[{value:`on`,label:M(`chat.modelControls.fast`)}],...e.fastMode.ultrafastSupported?[{value:`ultrafast`,label:M(`chat.modelControls.ultrafast`)}]:[]],w=e.fastMode.currentOverride===`auto`?`auto`:_?`ultrafast`:e.fastMode.active?`on`:`off`,ee=e=>{if(![`ArrowLeft`,`ArrowRight`,`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key))return;let t=e.currentTarget;if(!(t instanceof HTMLElement))return;let n=[...t.querySelectorAll(`button:not(:disabled)`)];if(n.length===0)return;let r=n.findIndex(e=>e===document.activeElement),i=e.key===`Home`?0:e.key===`End`?n.length-1:(r+([`ArrowLeft`,`ArrowUp`].includes(e.key)?-1:1)+n.length)%n.length;e.preventDefault(),n[i]?.focus(),n[i]?.click()},te=(e,n)=>{let r=n===void 0?void 0:t[n],i=n??c;e.style.setProperty(`--reasoning-fill`,`${p(i)}%`),e.dataset.effortBoost=r?d(i):f,e.setAttribute(`aria-valuetext`,r?aV(r.label):g);let a=e.closest(`.chat-controls__reasoning-panel`);a?.querySelectorAll(`[data-chat-thinking-preview-index]`).forEach(t=>{t.hidden=!r||t.dataset.chatThinkingPreviewIndex!==e.value});let o=a?.querySelector(`[data-chat-thinking-preview-committed]`);o&&(o.hidden=!!r)},ne=(e,t=!1)=>{t&&(e.value=String(c)),te(e)},T=e=>{let n=e.currentTarget,r=Number(n.value);t[r]&&te(n,r)},re=n=>{let r=n.currentTarget,i=t[Number(r.value)];ne(r),!e.thinkingDisabled&&i&&i.value!==s&&x(i.value)},ie=e=>{let t=e.currentTarget;l&&Number(t.value)===c&&re(e)},E=e=>{l&&[`Home`,`ArrowLeft`,`ArrowDown`,`PageDown`].includes(e.key)&&re(e)},ae=t.length===1?t[0]:void 0,oe=r.kind===`anchored`&&r.index===0;return R`
<details
class="chat-controls__inline-select chat-controls__effort-picker ${e.reserved?`chat-controls__effort-picker--reserved`:``}"
aria-hidden=${String(e.reserved===!0)}
?inert=${e.reserved===!0}
@toggle=${e=>{let t=e.currentTarget;OR(e),MR(t)}}
>
<summary
class="chat-controls__inline-select-trigger chat-controls__effort-trigger ${_?`chat-controls__effort-trigger--ultrafast`:``} ${e.disabled?`chat-controls__inline-select-trigger--disabled`:``}"
data-chat-thinking-select="true"
data-chat-thinking-value=${s}
data-chat-thinking-disabled=${e.thinkingDisabled?`true`:`false`}
data-chat-fast-mode=${e.fastMode.active?`true`:`false`}
aria-label=${n?`${M(`chat.selectors.thinkingLevel`)}: ${b}`:b}
aria-disabled=${e.disabled?`true`:`false`}
title=${e.disabledReason??b}
@click=${t=>{e.disabled&&t.preventDefault()}}
>
${n?R`
<span
class="chat-controls__effort-gauge ${i?`chat-controls__effort-gauge--off`:``}"
aria-hidden="true"
>
${nr($r`
<path class="chat-controls__effort-gauge-dial" d="M3.34 17a10 10 0 1 1 17.32 0" />
<path
class="chat-controls__effort-gauge-needle"
d="M12 12V6"
style=${`transform: rotate(${a}deg)`}
/>
<circle cx="12" cy="12" r="1" fill="currentColor" stroke="none" />
`)}
${e.fastMode.active?R`<span class="chat-controls__effort-fast-badge">${F.zap}</span>`:z}
</span>
`:R`<span class="chat-controls__effort-speed" aria-hidden="true">${F.zap}</span>`}
${e.fastMode.active?R`<span
class="chat-controls__effort-zap ${_?`chat-controls__effort-zap--ultrafast`:``}"
aria-hidden="true"
>
${_?F.zap:z}${F.zap}
</span>`:z}
<span class="chat-controls__inline-select-label">${y}</span>
<span class="chat-controls__inline-select-chevron" aria-hidden="true"
>${F.chevronUp}</span
>
</summary>
<wa-popup data-anchored-overlay>
<div
class="chat-controls__inline-select-menu chat-controls__effort-menu"
aria-label=${M(n?`chat.modelControls.effort`:`chat.modelControls.fastMode`)}
>
${n?R`
<div class="chat-controls__reasoning-panel">
<div class="chat-controls__reasoning-head">
<span class="chat-controls__effort-heading">
${M(`chat.modelControls.effort`)}
</span>
<span class="chat-controls__effort-value" aria-hidden="true">
<span data-chat-thinking-preview-committed>${h}</span>
${t.map((e,t)=>R`<span
data-chat-thinking-preview-index=${t}
hidden
>${aV(e.label)}</span
>`)}
</span>
</div>
${t.length>1?R`
<div class="chat-controls__reasoning-slider">
<div class="chat-controls__reasoning-dots" aria-hidden="true">
${t.map(e=>R`<span
class="chat-controls__reasoning-dot"
data-stop=${e.value}
></span>`)}
</div>
<input
class="chat-controls__reasoning-range ${o?``:`chat-controls__reasoning-range--inherit`} ${l?`chat-controls__reasoning-range--unanchored`:``}"
type="range"
min="0"
max=${t.length-1}
step="1"
.value=${String(c)}
style=${`--reasoning-fill: ${p(c)}%`}
data-chat-thinking-slider="true"
data-effort-boost=${f}
data-chat-thinking-values=${t.map(e=>e.value).join(`,`)}
aria-label=${M(`chat.selectors.thinkingLevel`)}
aria-valuetext=${g}
?disabled=${e.thinkingDisabled}
@input=${T}
@change=${re}
@click=${ie}
@keydown=${E}
@pointercancel=${e=>ne(e.currentTarget,!0)}
@blur=${e=>ne(e.currentTarget,!0)}
/>
</div>
`:ae?R`
<button
class="chat-controls__reasoning-option ${oe?`chat-controls__reasoning-option--selected`:``}"
data-chat-thinking-option=${ae.value}
type="button"
aria-pressed=${oe?`true`:`false`}
?disabled=${e.thinkingDisabled}
@click=${t=>{if(t.stopPropagation(),e.thinkingDisabled||oe){t.preventDefault();return}x(ae.value)}}
>
<span>${ae.label}</span>
${oe?R`<span
class="chat-controls__inline-select-check"
aria-hidden="true"
>${F.check}</span
>`:z}
</button>
`:z}
</div>
`:z}
${e.fastMode.supported?R`
<div class="chat-controls__speed-panel">
<span class="chat-controls__effort-heading"
>${M(`chat.modelControls.speed`)}</span
>
<div
class="chat-controls__speed-options"
role="radiogroup"
aria-label=${M(`chat.modelControls.speed`)}
@keydown=${ee}
>
${C.map((t,n)=>{let r=t.value===w;return R`<button
type="button"
role="radio"
class="chat-controls__speed-option"
data-chat-speed-option=${t.value}
aria-checked=${String(r)}
tabindex=${r||!C.some(e=>e.value===w)&&n===0?`0`:`-1`}
?disabled=${e.fastMode.disabled}
@click=${n=>{n.stopPropagation(),!e.fastMode.disabled&&t.value!==e.fastMode.currentOverride&&S(t.value)}}
>
${t.label}
</button>`})}
</div>
</div>
`:z}
</div>
</wa-popup>
</details>
`}function sV(){return(sV=e((()=>{B(),ur(),I(),Dn(),b(),Yi(),Gi(),zR(),Gs()})))()}function cV(){return er(``,{ariaHidden:!0,hidden:!0,ref:e=>e?.setAttribute(`data-chat-model-shortcut`,`true`)})}function lV(e){return JSON.stringify([e.value,e.agentRuntime??null])}function uV(e,t,n){return(e.value===t||e.isDefault&&t===``)&&(e.agentRuntime===void 0||(e.agentRuntime??void 0)===n)}function dV(e){let t=e.contextTokens,n=e.contextWindow;return t&&n&&t!==n?M(`chat.modelControls.contextActiveAndMax`,{active:ge(t),maximum:ge(n)}):n?ge(n):``}function fV(e){let t=[Vu(e.provider),Wu(e.provider)].toSorted((e,t)=>t.length-e.length);for(let n of t){if(e.label.toLowerCase().startsWith(`${n.toLowerCase()} `))return e.label.slice(n.length+1);let t=` (${n.toLowerCase()})`;if(e.label.toLowerCase().endsWith(t))return e.label.slice(0,e.label.length-t.length)}return e.label}function pV(e){return pd(e,{className:`chat-controls__provider-icon`})}function mV(e){let t=uV(e.entry,e.selectedModelValue,e.selectedAgentRuntime),n=fV(e.entry),r=ec(e.entry.provider,e.entry.agentRuntimeId),i=r?.detail!==void 0,a=r?.label??``,o=r?.detail??``,s=e.entry.supportsTools===!1?M(`chat.modelControls.chatOnlyHelp`):``,c=[o,s].filter(Boolean).join(` `),l=e.entry.isDefault&&e.sessionModelPinned,u=e.entry.disabled&&(e.entry.unavailableReason===`missing-auth`||e.entry.unavailableReason===`auth-failed`),d=u?e.onModelSetup:void 0,f=u?i?a:``:[dV(e.entry),a].filter(Boolean).join(` · `),p=u?M(`modelSetup.candidates.signInNeeded`):e.entry.unavailableReason===`unsupported-runtime`?M(`chat.modelControls.runtimeUnavailable`):``,m=R`<button
class="chat-controls__inline-select-option chat-controls__model-option ${t?`chat-controls__inline-select-option--selected`:``}"
data-chat-model-option=${e.entry.value}
data-chat-model-runtime=${e.entry.agentRuntime??z}
data-chat-model-default=${e.entry.isDefault?`true`:z}
data-chat-model-index=${e.index}
data-chat-model-keywords=${[e.entry.isDefault?M(`chat.modelControls.default`):``,a].filter(Boolean).join(` `).toLocaleLowerCase()}
data-chat-model-name=${n.toLocaleLowerCase()}
data-chat-model-provider-label=${Wu(e.entry.provider).toLocaleLowerCase()}
role="option"
hidden
aria-selected=${t?`true`:`false`}
title=${p||z}
aria-label=${[n,a,p,s].filter(Boolean).join(`. `)}
type="button"
?disabled=${e.disabled||e.entry.disabled&&!d&&!l}
data-chat-model-setup=${d?`true`:z}
@mouseenter=${cR}
@click=${t=>{if(e.entry.disabled&&!l){t.stopPropagation(),d?.();return}e.onSelect(e.entry,t)}}
>
<span class="chat-controls__model-option-provider">
${pV(e.entry.provider)}
</span>
<span class="chat-controls__model-option-copy">
<span class="chat-controls__model-option-title">
<span class="chat-controls__model-option-name">${n}</span>
${e.entry.isDefault?R`<span
class="chat-controls__model-state-label chat-controls__model-state-label--default"
>${M(`chat.modelControls.default`)}</span
>`:z}
${f?R`<span class="chat-controls__model-option-meta">${f}</span>`:z}
${u?R`<span
class="chat-controls__model-option-auth-warning"
data-chat-model-auth-warning
>
${F.alertTriangle}<span>${p}</span>
</span>`:z}
${e.entry.supportsTools===!1?R`<span class="chat-controls__model-chat-only-info" aria-hidden="true"
>${F.info}</span
>`:z}
</span>
</span>
<span class="chat-controls__model-option-action">
${t?R`<span class="chat-controls__inline-select-check" aria-hidden="true"
>${F.check}</span
>`:cV()}
</span>
</button>`;return c?R`<openclaw-tooltip .content=${c}> ${m} </openclaw-tooltip>`:m}function hV(e){return R`
<button
class="chat-controls__inline-select-option chat-controls__model-option"
data-chat-model-option=${`target:${e.groupId}:${e.entry.value}`}
data-chat-model-target=${e.entry.value}
data-chat-model-index=${e.index}
data-chat-model-name=${e.entry.label.toLocaleLowerCase()}
data-chat-model-provider-label=${e.groupLabel.toLocaleLowerCase()}
role="option"
aria-selected="false"
type="button"
?disabled=${e.disabled}
@mouseenter=${cR}
@click=${t=>e.onSelect(e.groupId,e.entry.value,t)}
>
<span
class="chat-controls__model-option-provider chat-controls__target-icon"
aria-hidden="true"
>${F.terminal}</span
>
<span class="chat-controls__model-option-copy">
<span class="chat-controls__model-option-title">
<span class="chat-controls__model-option-name">${e.entry.label}</span>
</span>
</span>
<span class="chat-controls__model-option-action"> ${cV()} </span>
</button>
`}function gV(){return(gV=e((()=>{B(),I(),Xn(),Cd(),Dn(),b(),Yi(),qe(),ks(),vR(),Gs()})))()}function _V(e,t){let n=e.options.find(t=>t.id===e.selected);if(!n)return z;let r=M(`chat.modelControls.contextWindowAria`,{state:n.label}),i;if(e.options.length===2){let[a,o]=e.options.toSorted((e,t)=>e.contextWindow-t.contextWindow);if(!a||!o)return z;let s=n.id===o.id,c=s?a:o;i=R`
<button
class="chat-controls__speed-toggle ${s?`chat-controls__speed-toggle--active`:``}"
data-chat-context-window-toggle=${c.id}
type="button"
role="switch"
aria-checked=${s?`true`:`false`}
aria-label=${r}
?disabled=${e.disabled}
@click=${n=>{if(n.stopPropagation(),e.disabled){n.preventDefault();return}e.onSelect(c.id,t)}}
>
<span class="chat-controls__speed-toggle-thumb"></span>
</button>
`}else i=Mu({mode:`buttons`,variant:`compact`,className:`chat-controls__context-window-options`,value:n.id,ariaLabel:r,disabled:e.disabled,options:e.options.map(e=>({value:e.id,label:e.label})),onClick:(t,r)=>{t.stopPropagation(),(e.disabled||r===n.id)&&t.preventDefault()},onChange:n=>{e.onSelect(n,t)}});return R`
<div class="chat-controls__fast-mode-row chat-controls__context-window-row">
<span
class="chat-controls__fast-mode-icon chat-controls__context-window-icon"
aria-hidden="true"
>${F.scrollText}</span
>
<span class="chat-controls__fast-mode-copy">
<span class="chat-controls__fast-mode-title">
${M(`chat.modelControls.contextWindow`)}
</span>
<span class="chat-controls__fast-mode-description">${n.label}</span>
</span>
${i}
</div>
`}function vV(){return(vV=e((()=>{B(),I(),Tu(),b(),Yi(),Gs()})))()}function yV(e){if(!e||e.status!==`loading`&&!(e.status===`ready`&&e.pendingProviders?.length))return z;let t=e.pendingProviders?.map(Wu).join(`, `),n=t?M(`chat.modelControls.refreshingProviderModels`,{providers:t}):M(`chat.modelControls.refreshingModels`);return R`
<span class="chat-controls__model-refresh" data-chat-model-refresh role="status">
<openclaw-tooltip .content=${n} .describe=${!1} open-on-click>
<button class="chat-controls__model-refresh-details" type="button" aria-label=${n}>
<span class="btn__spinner" aria-hidden="true"></span>
</button>
</openclaw-tooltip>
<span class="sr-only">${n}</span>
</span>
`}function bV(e,t,n,r,i=M(`chat.modelControls.modelsUnavailable`),a){if(!e)return z;let{status:o}=e,s=!!e.pendingProviders?.length;if(o===`ready`&&n&&!s||t&&(o===`loading`||o===`ready`&&s))return z;let c=o===`offline`?M(`common.offline`):o===`error`?t?M(`chat.modelControls.modelsRefreshFailed`):i:M(o===`ready`&&!s?e.modelSelectionPolicy?.restricted?`chat.modelControls.noPermittedModels`:`chat.modelControls.noModelsAvailable`:`chat.modelControls.loadingModels`);return R`
<div
class="chat-controls__model-catalog-state ${t?``:`chat-controls__model-catalog-state--empty`}"
data-chat-model-catalog-state=${o}
role="status"
aria-live="polite"
>
<span class="chat-controls__model-catalog-state-label">
${o===`error`?F.alertTriangle:o===`loading`||o===`idle`||o===`ready`&&s?R`<span class="btn__spinner" aria-hidden="true"></span>`:z}
<span>${c}</span>
</span>
${o===`error`&&a?R`
<button
class="chat-controls__model-catalog-action"
data-chat-model-target-retry=${a.groupId}
type="button"
?disabled=${a.disabled}
@click=${e=>{e.stopPropagation(),a.onRetry(a.groupId)}}
>
${M(`common.retry`)}
</button>
`:z}
${o===`ready`&&!n&&r?R`
<button
class="chat-controls__model-catalog-action"
data-chat-model-setup="true"
type="button"
@click=${e=>{e.stopPropagation(),r()}}
>
${M(`chat.modelControls.emptyModelsAction`)}
</button>
`:z}
</div>
`}function xV(){return(xV=e((()=>{B(),I(),Cd(),Dn(),b(),Yi(),Gs()})))()}function SV(e){let t=e.currentTarget.closest(`details`);t&&(t.open=!1,e.detail===0&&t.querySelector(`summary`)?.focus({preventScroll:!0}))}function CV(e){let t=e.modelOptions.find(e=>e.isDefault),n=e.modelOptions.find(t=>uV(t,e.selectedModelValue,e.selectedAgentRuntime)),r=n??t,i=e.triggerModelValue,a=i===void 0?n:i===``?void 0:e.modelOptions.find(t=>uV(t,i,e.selectedAgentRuntime)),o=a?.supportsTools===!1,s=e.contextWindow?.options.find(t=>t.id===e.contextWindow?.selected),c=s!==void 0&&e.contextWindow?.selected!==e.contextWindow?.defaultId,l=[e.triggerStatusLabel??e.triggerModelLabel,e.triggerStarting?M(`chat.modelControls.modelStarting`):``,o?M(`chat.modelControls.chatOnly`):``].filter(Boolean).join(` · `),u=!e.triggerLoading&&!e.triggerStatusLabel&&a&&nd(a.provider)?pd(a.provider,{className:`chat-controls__trigger-provider-icon`}):z,d=new Map;for(let t of e.modelOptions){let e=d.get(t.provider);e?t.isDefault?e.unshift(t):t===r?e.splice(+!!e[0]?.isDefault,0,t):e.push(t):d.set(t.provider,[t])}let f=[...d],p=f.findIndex(([e])=>e===r?.provider);if(p>0){let[e]=f.splice(p,1);e&&f.unshift(e)}let m=f.flatMap(([,e])=>e),h=new Map(m.map((e,t)=>[lV(e),t])),g=e.targetGroups??[],_=g.reduce((e,t)=>e+t.options.length,0),v=e.modelOptions.length+_>0||g.some(e=>e.status!==`ready`),y=e.modelOptions.some(e=>!e.disabled),b=(t,n)=>{n.stopPropagation();let r=t.isDefault&&e.sessionModelPinned;if(e.disabled||e.modelSelectionLocked||t.disabled&&!r){n.preventDefault();return}e.onModelSelect(t.commitValue,e.sessionKey,t.runtimeOverride??(t.isDefault||t.agentRuntime!==void 0?null:void 0)).finally(()=>e.onRequestUpdate?.()),e.onRequestUpdate?.(),SV(n)},x=(t,n,r)=>{if(r.stopPropagation(),e.disabled||e.modelSelectionLocked){r.preventDefault();return}e.onTargetSelect?.(t,n),SV(r)};return R`
<details
class="chat-controls__inline-select chat-controls__model-picker"
data-chat-autotype-shortcuts
?open=${e.open===!0}
${Or(e=>_R(e))}
@keydown=${gR}
@toggle=${t=>{let n=t.currentTarget;if(e.onOpenChange?.(n.open),OR(t),MR(n),!n.open){e.accountSection?.onClose(),fR(n);return}e.onOpen?.(),_R(n);let r=n.ownerDocument.activeElement;requestAnimationFrame(()=>{n.isConnected&&n.open&&n.ownerDocument.activeElement===r&&n.querySelector(`[data-chat-model-search]`)?.focus({preventScroll:!0})})}}
>
<summary
class="chat-controls__inline-select-trigger chat-controls__model-trigger ${e.triggerLoading?`chat-controls__model-trigger--loading`:``} ${e.disabled?`chat-controls__inline-select-trigger--disabled`:``}"
data-chat-model-select="true"
data-chat-model-locked=${e.modelSelectionLocked?`true`:`false`}
data-chat-select-value=${e.selectedModelValue}
data-chat-model-tools=${o?`unavailable`:`available`}
aria-label=${`${M(`chat.selectors.model`)}: ${l}${e.selectionScopeDescription?`. ${e.selectionScopeDescription}`:``}`}
aria-busy=${e.triggerLoading||e.triggerStarting?`true`:`false`}
aria-disabled=${e.disabled?`true`:`false`}
title=${e.disabledReason?.trim()||z}
@click=${t=>{if(e.disabled){t.preventDefault();return}t.currentTarget.focus({preventScroll:!0})}}
>
${o?R`
<openclaw-tooltip .content=${M(`chat.modelControls.chatOnlyHelp`)}>
<span class="chat-controls__model-capability-badge" aria-hidden="true">
${F.alertTriangle}
<span>${M(`chat.modelControls.chatOnly`)}</span>
</span>
</openclaw-tooltip>
`:z}
${u}
<span class="chat-controls__inline-select-label">
${e.triggerLoading?R`<span
class="skeleton chat-controls__model-trigger-skeleton"
aria-hidden="true"
></span>`:e.triggerStatusLabel??e.triggerModelLabel}
</span>
${c?R`
<span
class="chat-controls__locked-model-badge chat-controls__model-context-badge"
data-chat-model-context-badge
>
${s.label}
</span>
`:z}
<span class="chat-controls__inline-select-chevron" aria-hidden="true"
>${e.triggerStarting?R`<span class="btn__spinner"></span>`:F.chevronUp}</span
>
</summary>
<wa-popup data-anchored-overlay>
<div
class="chat-controls__inline-select-menu chat-controls__model-menu"
aria-label=${M(`chat.selectors.model`)}
>
${e.modelSelectionLocked?R`
<div
class="chat-controls__locked-model"
aria-label=${M(`chat.selectors.modelLockedLabel`)}
>
<span class="chat-controls__inline-select-section-label">
${M(`chat.selectors.modelSection`)}
</span>
<span class="chat-controls__locked-model-value"
>${e.triggerModelLabel}</span
>
<span class="chat-controls__locked-model-badge">
${M(`chat.selectors.modelLocked`)}
</span>
</div>
`:R`
${v||e.accountSection?R`
<div class="chat-controls__model-search-wrap">
${F.search}
<input
class="chat-controls__model-search"
data-chat-model-search="true"
type="search"
role="combobox"
aria-autocomplete="list"
autocomplete="off"
spellcheck="false"
placeholder=${M(`chat.modelControls.searchModels`)}
aria-label=${M(`chat.modelControls.searchModels`)}
?disabled=${e.disabled}
@input=${e=>dR(e.currentTarget)}
@keydown=${hR}
/>
${e.modelOptions.length>0?yV(e.modelCatalogState):z}
</div>
`:z}
${bV(e.modelCatalogState,e.modelOptions.length>0,y,e.onModelSetup)}
${v||e.accountSection?R`
<div class="chat-controls__model-options">
${Rr(f,([e])=>e,([t,r])=>{let i=e.providerAuth?.get(t),a=i&&!(i.kind===`missing`&&r.some(e=>e.disabled&&(e.unavailableReason===`missing-auth`||e.unavailableReason===`auth-failed`))),o=a?[i.label,i.detail].filter(Boolean).join(` · `):void 0,s=Jd(t),c=s?M(`chat.modelControls.routes.${s}.detail`):void 0;return R`
<section
class="chat-controls__provider-model-group"
data-chat-model-provider-group=${t}
aria-label=${M(`chat.modelControls.providerModels`,{provider:Wu(t)})}
>
<div
class="chat-controls__provider-heading"
data-chat-model-provider=${t}
title=${[c,o].filter(Boolean).join(` · `)||z}
>
<button
class="chat-controls__provider-toggle"
type="button"
data-chat-model-group-toggle
data-chat-model-provider-toggle
aria-expanded=${String(t===n?.provider)}
aria-label=${`${M(`chat.modelControls.providerModels`,{provider:Wu(t)})} (${r.length})`}
aria-description=${c??z}
?disabled=${e.disabled}
@click=${pR}
>
${pV(t)}
<span class="chat-controls__provider-label"
>${Wu(t)}</span
>
<span>${r.length}</span>
<span
class="chat-controls__inline-select-chevron"
aria-hidden="true"
>${F.chevronDown}</span
>
</button>
${a?R`<span class="chat-controls__auth-meta" data-auth-kind=${i.kind}><span aria-hidden="true">${i.kind===`subscription`?F.circleUser:i.kind===`api`?F.key:F.alertTriangle}</span><span class="chat-controls__auth-meta-label">${o}</span></span>`:z}
${e.onProviderSettings?R`<button
class="chat-controls__provider-settings"
data-chat-model-provider-settings
type="button"
aria-label=${M(`chat.modelControls.configureModels`)}
@click=${n=>{n.stopPropagation(),e.onProviderSettings?.(t)}}
>
${F.settings}
</button>`:z}
</div>
<div
class="chat-controls__provider-model-list"
data-chat-model-list="true"
role="listbox"
aria-label=${M(`chat.modelControls.providerModels`,{provider:Wu(t)})}
>
${Rr(r,lV,t=>mV({disabled:e.disabled,entry:t,index:h.get(lV(t))??0,selectedModelValue:e.selectedModelValue,selectedAgentRuntime:e.selectedAgentRuntime,sessionModelPinned:e.sessionModelPinned,onSelect:b,onModelSetup:e.onModelSetup}))}
</div>
</section>
`})}
${Rr(g,e=>e.id,t=>R`
<section
class="chat-controls__provider-model-group"
data-chat-model-target-group=${t.id}
aria-label=${t.label}
>
<div class="chat-controls__provider-heading">
<span
class="chat-controls__provider-icon chat-controls__target-icon"
aria-hidden="true"
>${F.terminal}</span
>
<span>${t.label}</span>
</div>
${t.status===`ready`?z:bV({hasSnapshot:!1,status:t.status},!1,!1,void 0,t.errorLabel,e.onTargetRetry?{disabled:e.disabled,groupId:t.id,onRetry:e.onTargetRetry}:void 0)}
<div
class="chat-controls__provider-model-list"
data-chat-model-list="true"
role="listbox"
aria-label=${t.label}
>
${Rr(t.options,e=>e.value,(n,r)=>hV({disabled:e.disabled,entry:n,groupId:t.id,groupLabel:t.label,index:m.length+r,onSelect:x}))}
</div>
</section>
`)}
${e.accountSection?.render(m.length+_)??z}
</div>
<div
class="chat-controls__model-search-empty"
data-chat-model-search-empty
hidden
>
${M(`chat.modelControls.noMatchingModels`)}
</div>
${e.contextWindow?_V(e.contextWindow,e.sessionKey):z}
`:z}
`}
${e.modelSelectionLocked&&e.accountSection?R`<div class="chat-controls__model-options">
${e.accountSection.render(0)}
</div>`:z}
${e.modelCatalogState?.modelSelectionPolicy?.restricted?R`<div class="chat-controls__model-catalog-state" data-chat-model-policy>
${M(`chat.modelControls.restrictedModelsHelp`)}
</div>`:z}
</div>
</wa-popup>
</details>
`}function wV(){return(wV=e((()=>{B(),Ar(),Ur(),I(),Dn(),Cd(),b(),Yi(),vV(),xV(),gV(),vR(),zR(),Gs()})))()}function TV(e){let t=mt(e);return MV[t]??t}function EV(e){let t=new Map,n=new Map;for(let r of e){let e=r.id.trim().toLowerCase(),i=`${mt(r.provider)}/${e}`,a=t.get(i)??[];a.push(r),t.set(i,a);let o=n.get(e)??[];o.push(r),n.set(e,o)}return{provider(e,r=``){let i=e.trim(),a=i.toLowerCase(),o=t.get(a)?.[0];if(o)return TV(o.provider);let s=n.get(a)??[],c=mt(r),l=s.some(e=>mt(e.provider)===c);if(c&&(s.length===0||l))return TV(c);if(s.length===1)return TV(s[0]?.provider??``);let u=i.indexOf(`/`);return u>0?TV(i.slice(0,u)):`other`},entry(e){let r=e.trim().toLowerCase(),i=r.indexOf(`/`),a=i>0?`${mt(r.slice(0,i))}/${r.slice(i+1)}`:r;if(!a)return;let o=t.get(a)??[];if(o.length>0)return o.find(e=>e.provider.trim().toLowerCase()===`openai`)??o[0];let s=n.get(a)??[];return s.length===1?s[0]:void 0}}}function DV(e,t,n=e?.agentRuntime?.id){let r=e&&mt(e.provider)===`openai`&&e.name.trim()||t;if(n!==`codex`||!e)return r;let i=new Set([e.agentRuntime?.id,...(e.runtimeChoices??[]).map(e=>e.agentRuntime.id)]);return i.has(`openclaw`)&&i.has(`codex`)?`${r} codex`:r}function OV(e){return/^Default \((.+)\)$/u.exec(e)?.[1]??e}function kV(e){switch(e){case`session`:return M(`chat.modelControls.selectionScopeSession`);case`agent`:return M(`chat.modelControls.selectionScopeAgent`);case`global`:return M(`chat.modelControls.selectionScopeGlobal`);default:return}}function AV(e,t,n){if(e.status!==`offline`){if(e.status===`error`)return t===0?M(`chat.modelControls.modelsUnavailable`):void 0;if(!e.hasSnapshot&&[`idle`,`loading`].includes(e.status))return n?void 0:M(`chat.modelControls.loadingModels`);if(e.hasSnapshot&&t===0)return M(`chat.modelControls.noModelsAvailable`)}}function jV(e){let t=EV(e.modelCatalog),n=e.modelCatalogState?.modelSelectionPolicy,r=e.modelCatalogState?.retired===!0,i=e.modelCatalogState?.initialized===!1,a=r||i||n?.restricted===!0,o=new Map,s=e=>TV(Us(mt(e)));for(let t of co((e.modelAuthStatusResult?.providers??[]).map(e=>Object.assign({},e,{provider:s(e.provider)})))){let n=e.accountSelection?.kind===`automatic`?void 0:e.accountSelection?.authProfileId,r=ws(t,{authProfileId:n});r&&o.set(s(t.provider),r)}let{currentOverride:c,defaultModel:l,defaultLabel:u,modelOverrideSource:d,options:f}=Eo({activeSession:e.selectedSession,agentDefaultModel:e.agentDefaultModel,chatModelCatalog:e.modelCatalog,modelOverrides:e.modelOverrides??{},sessionKey:e.sessionKey,sessionsResult:e.sessionsResult,modelSelectionPolicy:n,catalogRetired:r,catalogInitialized:e.modelCatalogState?.initialized}),p=!a||!r&&t.entry(c)?c:``,m=Ya({catalog:e.modelCatalog,defaults:e.thinkingDefaults,session:e.thinkingSession,sessionKey:e.sessionKey,sessionsResult:e.sessionsResult}),h=e.selectedSession,g=!!(e.activeRunId&&e.activeRunSessionKey&&at(e.activeRunSessionKey,e.sessionKey)),_=g?e.activeRunId:null,v=g?e.stream:null,y=xo({activeRunId:_,catalog:e.modelCatalog,connected:e.connected,currentModelOverride:p,fastModeTarget:e.fastModeTarget??e.selectedSession,gatewayAvailable:e.gatewayAvailable,loading:e.loading,sending:e.sending,sessionsResult:e.sessionsResult,stream:v}),b=e.modelSwitching?{...y,disabled:!0}:y,x=h?.runtimeSelectionLocked===!0,S=h?.modelProvider??``,C=Object.hasOwn(e.modelOverrides??{},e.sessionKey),w=Ll(h??{}),ee=e.sending||!!_||v!==null||w,te=w&&!e.sending&&(!_||(h?.activeRunIds?h.activeRunIds.includes(_):e.modelObservedRunId===_)),ne=C?``:ee?te&&h?.activeModel?.trim()&&h.activeModelProvider?.trim()?Qe(h.activeModel,h.activeModelProvider):``:rn(h?.activeModel,h?.activeModelProvider,e.modelCatalog),T=!a||!r&&t.entry(ne)?ne:``,re=ee&&!T,ie=T||p,E=re&&!!(ie||!e.modelSelectionLocked&&l),ae=e.sessionsResult?.defaults?.modelProvider??``,oe=t.entry(l),se=DV(oe,u),ce=l&&se!==u?M(`chat.modelControls.defaultWithModel`,{model:se}):u,le=l.trim().toLowerCase(),ue=f.flatMap(n=>{let r=t.entry(n.value),i=n.value.trim().toLowerCase()===le||r!==void 0&&r===oe,a=r?.agentRuntime,o=a&&(a.source===`model`||a.source===`provider`||Jd(r?.provider??``,a.id))?a.id.trim():void 0,s={...r?.runtimeChoices?.length&&!x?{agentRuntime:a?.id??null,agentRuntimeId:a?.id}:{},commitValue:i?``:n.value,isDefault:i,value:n.value,label:DV(r,n.label),provider:t.provider(n.value,i?ae:n.value===p?S:``)};o&&(s.agentRuntimeId=o),i&&ao(e.selectedSession?.agentRuntime)&&Jd(s.provider)&&(s.agentRuntimeId=void 0),r?.contextWindow&&(s.contextWindow=r.contextWindow),typeof r?.supportsTools==`boolean`&&(s.supportsTools=r.supportsTools),n.disabled&&(s.disabled=!0,s.unavailableReason=n.unavailableReason);let c=[s];for(let e of x?[]:r?.runtimeChoices??[])e.manualSelectionAllowed!==!1&&c.push({value:n.value,commitValue:n.value,isDefault:!1,label:DV(r,n.label,e.agentRuntime.id),provider:s.provider,agentRuntime:e.agentRuntime.id,runtimeOverride:e.agentRuntime.id,agentRuntimeId:e.agentRuntime.id,contextWindow:e.contextWindow,supportsTools:e.supportsTools,disabled:e.available===!1,unavailableReason:e.unavailableReason});return c}),de=e.selectedSession?.modelOverrideSource===`user`||!x&&ao(e.selectedSession?.agentRuntime);l&&(de||n?.restricted)&&!r&&!i&&!ue.some(e=>e.isDefault)&&ue.unshift({commitValue:``,isDefault:!0,value:l,label:OV(ce),provider:t.provider(l,ae)});let fe=t.entry(p);p&&(!a||fe)&&fe?.manualSelectionAllowed!==!1&&ue.length>0&&!ue.some(e=>e.value===p)&&ue.push({commitValue:p,...fe?.contextWindow?{contextWindow:fe.contextWindow}:{},...typeof fe?.supportsTools==`boolean`?{supportsTools:fe.supportsTools}:{},...fe?.available===!1?{disabled:!0,unavailableReason:fe.unavailableReason}:{},isDefault:!1,value:p,label:DV(fe,fe?.name.trim()||p),provider:t.provider(p,S)});let pe=e.selectedAgentRuntime??e.selectedSession?.agentRuntime?.id??t.entry(p||l)?.agentRuntime?.id,me=oe?.agentRuntime?.id??e.sessionsResult?.defaults?.agentRuntime?.id,he=d===null&&(!pe||pe===me)?``:p||l,ge=ue.find(e=>uV(e,he,pe)),_e=h?.model?t.entry(rn(h.model,h.modelProvider,e.modelCatalog)):void 0,ve=ge?t.entry(ge.value):void 0,ye=h?.agentRuntime?.id.trim().toLowerCase(),be=(Js(ve,ge?.agentRuntime)?.agentRuntime?.id??(ge?.isDefault?e.sessionsResult?.defaults?.agentRuntime?.id:void 0))?.trim().toLowerCase(),xe=!!ye&&ye===be;!e.modelSwitching&&ge&&h?.contextTokens&&xe&&_e!==void 0&&_e===ve&&(ge.contextTokens=h.contextTokens);let Se=T?null:pe??me,Ce=e.modelSelectionLocked===!0&&!ie?M(`chat.selectors.lockedSessionModel`):DV(t.entry(ie||l),OV(f.find(e=>e.value===ie)?.label??(t.entry(ie)?.name.trim()||ie||u)),ie||l?Se:null),D=e.modelCatalogState??{hasSnapshot:!e.modelsLoading,status:e.modelsLoading?`loading`:`ready`},we=!D.hasSnapshot&&[`idle`,`loading`].includes(D.status),Te=!!(p||d===null&&l),Ee=r?AV(D,0,!1):n?.restricted&&!p&&!l?M(ue.length?`chat.modelControls.selectionRequired`:`chat.modelControls.noPermittedModels`):AV(D,ue.length,Te),De=D.status===`ready`&&ge?.disabled!==!0&&ue.some(e=>!e.disabled),Oe=e.sending||!!e.activeRunId||e.stream!==null,ke=!e.connected||Oe||e.modelSwitching||!e.gatewayAvailable,Ae=ke||e.loading,je=!!e.effortMutationDisabledReason,Me=ke||!!e.modelMutationDisabledReason,Ne=Ae||je||!D.hasSnapshot||m.options.length===0&&m.selection.source==="default",O=e.contextWindowTarget??h??e.sessionsResult?.defaults,Pe=O?.contextWindows??[],Fe=O?.contextWindow??O?.contextWindowDefault??``,Ie=O?.contextWindowDefault,Le=Ae||je||m.options.length===0&&b.disabled,Re=!De&&(we||e.modelPickerOpen===!0),ze=De||Re;return R`
<div class="chat-controls__session chat-controls__model chat-controls__model-settings">
${CV({providerAuth:e.modelAuthStatusResult?o:void 0,accountSection:e.renderAccountSection?.(p||l),contextWindow:Pe.length>1?{options:Pe,selected:Fe,...Ie?{defaultId:Ie}:{},disabled:Ae||!!e.contextWindowMutationDisabledReason,onSelect:async(t,n)=>{await e.onContextWindowSelect?.(t,n)}}:void 0,disabled:Me,disabledReason:e.modelMutationDisabledReason,modelCatalogState:D,open:e.modelPickerOpen,modelSelectionLocked:e.modelSelectionLocked===!0,selectionScopeDescription:n?.restricted?M(`chat.modelControls.restrictedModelsHelp`):kV(e.modelSelectionTarget),modelOptions:ue,targetGroups:e.modelPickerTargetGroups,selectedModelValue:he,selectedAgentRuntime:pe,sessionModelPinned:de,sessionKey:e.sessionKey,triggerModelLabel:OV(Ce),triggerModelValue:re&&!E?``:ie||void 0,triggerStarting:E,triggerStatusLabel:E?void 0:re?M(`chat.modelControls.modelPending`):e.modelSelectionLocked?void 0:Ee,triggerLoading:!re&&!e.modelSelectionLocked&&we&&!Te,onModelSetup:n?.restricted||r||i?void 0:e.onModelSetup,onProviderSettings:n?.restricted||r||i?void 0:e.onProviderSettings,onOpen:e.onModelPickerOpen,onOpenChange:e.onModelPickerOpenChange,onModelSelect:async(t,n,r)=>e.onModelSelect?.(t,n,r),onTargetRetry:e.onModelPickerTargetRetry,onTargetSelect:e.onModelPickerTargetSelect,onRequestUpdate:e.onRequestUpdate})}
${ze?oV({disabled:Le,disabledReason:e.effortMutationDisabledReason,fastMode:{...b,disabled:b.disabled||Ae||je},sessionKey:e.sessionKey,thinkingDisabled:Ne,thinking:m,onFastModeSelect:async(t,n)=>e.onFastModeSelect?.(t,n),onRequestUpdate:e.onRequestUpdate,onThinkingSelect:async(t,n)=>e.onThinkingSelect?.(t,n),reserved:Re}):z}
</div>
`}var MV;function NV(){return(NV=e((()=>{B(),b(),Yi(),Oe(),rl(),Gi(),Ka(),Yo(),O(),sV(),gV(),wV(),Gs(),MV={"google-gemini-cli":`google`,"moonshot-ai":`moonshot`,moonshotai:`moonshot`,"opencode-go":`opencode`,"opencode-zen":`opencode`}})))()}function PV(){window.dispatchEvent(new CustomEvent(Qn))}function FV(){return(FV=e((()=>{rr()})))()}var IV=t({default:()=>sf});function LV(){return(LV=e((()=>{_f()})))()}var RV=t({boundSessionRosterRecord:()=>qV,hydrateSessionRoster:()=>YV,parseSessionRosterRecord:()=>WV,readSessionRoster:()=>JV});function zV(e){return e===null||typeof e==`string`}function BV(e){return Fl(e)&&Object.entries(e).every(([e,t])=>e===`agentId`?typeof t==`string`:e===`limit`?typeof t==`number`&&Number.isFinite(t):[`includeGlobal`,`includeUnknown`,`configuredAgentsOnly`,`includeDerivedTitles`,`includeLastMessage`,`ownerFirst`].includes(e)&&typeof t==`boolean`)}function VV(e){return Fl(e)&&e.version===1&&typeof e.scope==`string`&&e.scope.length>0&&typeof e.savedAt==`number`&&Number.isFinite(e.savedAt)&&e.savedAt>=0&&zV(e.profileId)&&zV(e.agentId)&&BV(e.query)&&Fl(e.result)&&Array.isArray(e.result.sessions)&&e.result.sessions.length<=200&&e.result.sessions.every(e=>Fl(e)&&typeof e.key==`string`)&&Array.isArray(e.groups)&&e.groups.every(e=>typeof e==`string`)&&Array.isArray(e.groupSettings)&&e.groupSettings.every(e=>Fl(e)&&typeof e.name==`string`&&typeof e.position==`number`)&&Array.isArray(e.sectionOrder)&&e.sectionOrder.every(e=>typeof e==`string`)}function HV(e){return e.incognito!==!0}function UV(e){let t={...e};return delete t.hasActiveRun,delete t.activeRunIds,delete t.activeModel,delete t.activeModelProvider,delete t.status,delete t.runtimeMs,delete t.runtimeSampledAt,delete t.snapshotAt,delete t.agentStatus,delete t.observerDigest,delete t.swarmPhase,delete t.swarmPhaseRank,delete t.swarmLog,delete t.placement,delete t.placementMove,delete t.subagentRunState,delete t.hasActiveSubagentRun,delete t.channelAvatarUrl,t}function WV(e){return VV(e)?e:null}function GV(e){return ct({...e,includeDerivedTitles:e.includeDerivedTitles??!0,includeLastMessage:e.includeLastMessage??!0})}function KV(e,t){return e.agentId===t.agentId&&(e.query.agentId===void 0||e.query.agentId.trim()===e.agentId)&&(t.query.agentId===void 0||t.query.agentId.trim()===t.agentId)&&(t.profileId===void 0||e.profileId===t.profileId)&&De(e.query)&&De(t.query)}function qV(e){try{if(!De(e.query))return null;let t={...e,query:GV(e.query),result:{...e.result,sessions:e.result.sessions.filter(HV).map(UV)}},n=JSON.stringify(t,(e,t)=>e===`avatarUrl`||e===`channelAvatarUrl`?void 0:t);return new TextEncoder().encode(n).byteLength<=1572864?WV(JSON.parse(n)):null}catch{return null}}async function JV(e,t,n){if(n!==s(e))return null;let r=await Dt();if(!r)return null;try{let i=r.transaction(Te),a=Ee(i),o=await be(i.objectStore(Te).get(e));if(await a,o===void 0||n!==s(e))return null;let c=WV(o);return!c||c.scope!==e||Date.now()-c.savedAt>2592e6||new TextEncoder().encode(JSON.stringify(c)).byteLength>1572864?(r.close(),await ve(),null):KV(c,t)?{...c,result:{...c.result,sessions:c.result.sessions.filter(HV).map(UV)}}:null}catch{return r.close(),await ve(),null}finally{r.close()}}async function YV(e,t,n,r,i,a){if(!i.scope||a.aborted||r.readState().result!==null)return;let o=await n.read(i.scope,i),s=sr({client:e.snapshot.client}),c=e.connection?eu(e.connection.gatewayUrl):void 0,l=c&&s?`account:${JSON.stringify([c,s])}`:i.scope;o&&!a.aborted&&r.readState().result===null&&e.snapshot.phase!==`connected`&&t.state.selectedId===i.agentId&&l===i.scope&&e.connectionRevision===i.connectionRevision&&KV(o,i)&&r.publish({...r.readState(),result:o.result,agentId:o.agentId,groups:o.groups,groupSettings:o.groupSettings,sectionOrder:o.sectionOrder,resultCached:!0})}function XV(){return(XV=e((()=>{xr(),Se(),fn(),o(),At()})))()}function ZV(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return``}}function QV(){try{return Intl.supportedValuesOf?.(`timeZone`)??[]}catch{return[]}}function $V(e,t=ZV(),n=QV()){return ru([t,`UTC`,...e,...Xl(n)])}function eH(){return(eH=e((()=>{ql()})))()}function tH(e,t){return(`deliveryMode`in t&&t.deliveryMode!==e.deliveryMode||`deliveryChannel`in t&&t.deliveryChannel!==e.deliveryChannel||`deliveryAccountId`in t&&t.deliveryAccountId!==e.deliveryAccountId||`deliveryTo`in t&&t.deliveryTo!==e.deliveryTo||`agentId`in t&&t.agentId!==e.agentId)&&t.deliveryThreadId===void 0?{...t,deliveryThreadId:void 0}:t}function nH(e,t){return t.deliveryMode!==e.deliveryMode||t.deliveryChannel!==e.deliveryChannel||t.agentId!==e.agentId}function rH(e){return{mode:e.cronForm.deliveryMode,channel:e.cronForm.deliveryChannel.trim(),agentId:e.cronForm.agentId.trim()||e.cronAgentId?.trim()||``}}function iH(e,t){return e!==null&&e.mode===t.mode&&e.channel===t.channel&&e.agentId===t.agentId}var aH;function oH(){return(oH=e((()=>{N(),aH=class{constructor(e){this.host=e,this.conversations=[],this.error=null,this.requestId=0,this.editorGeneration=0,this.readRoute=null}clear(e=this.host.currentCronState()){this.requestId+=1,this.conversations=[],this.error=null,this.readRoute=null,this.host.notify(e)}get generation(){return this.editorGeneration}retireEditor(e=this.host.currentCronState()){this.editorGeneration+=1,this.clear(e)}openEditor(){this.editorGeneration+=1,this.load()}retireExitedEditor(e,t,n){this.ownedBy(e,t,n)&&this.retireEditor(e)}afterSave(e,t,n,r){this.ownedBy(e,t,n)&&(this.clear(e),r?this.load(e):this.editorGeneration+=1)}reconcileRoute(e,t,n){iH(this.readRoute,rH(e))||this.afterSave(e,t,n,!!e.cronEditingJob)}ownedBy(e,t,n){return this.host.currentCronState()===e&&t!==null&&this.host.isCurrentConnection(t)&&this.host.canManage()&&(n===void 0||this.editorGeneration===n)}async load(e=this.host.currentCronState()){let t=++this.requestId;this.conversations=[],this.error=null,this.host.notify(e);let n=e.client,r=rH(e);this.readRoute=r;let{mode:i,channel:a,agentId:o}=r;if(!this.host.canManage()||!n||i!==`announce`||!o||a===`last`)return;let s=this.host.captureConnection();if(!s)return;let c=()=>t===this.requestId&&this.ownedBy(e,s);try{let t=await n.request(`conversations.list`,{agentId:o,channel:a,limit:100});c()&&(this.conversations=t.conversations,this.error=null,this.host.notify(e))}catch(t){c()&&(this.conversations=[],this.error=`Could not load recipient suggestions: ${j(t)}`,this.host.notify(e))}}}})))()}var sH;function cH(){return(cH=e((()=>{sH=class{constructor(e){this.host=e,this.footer=null,this.scroller=null,this.observer=null,this.previousPadding=``,e.addController(this)}hostUpdated(){let e=this.host.querySelector(`.cron-editor-actions`),t=this.host.closest(`.content`);if(e===this.footer&&t===this.scroller||(this.hostDisconnected(),!e||!t))return;this.footer=e,this.scroller=t,this.previousPadding=t.style.scrollPaddingBlockEnd;let n=()=>{let n=getComputedStyle(t).paddingBlockEnd;t.style.scrollPaddingBlockEnd=`calc(${e.getBoundingClientRect().height}px + ${n})`};n(),typeof ResizeObserver==`function`&&(this.observer=new ResizeObserver(n),this.observer.observe(e),this.observer.observe(t))}hostDisconnected(){this.observer?.disconnect(),this.observer=null,this.scroller&&(this.scroller.style.scrollPaddingBlockEnd=this.previousPadding),this.footer=null,this.scroller=null}}})))()}function lH(e,t,n){return $V(e.map(e=>e.schedule.kind===`cron`&&typeof e.schedule.tz==`string`?e.schedule.tz:``),t,n)}function uH(){return(uH=e((()=>{eH()})))()}function dH(e,t){let n=t.trim();return n?Xl(e.filter(e=>e.accountId===n).map(e=>e.target)):[]}function fH(e){let t=qt(e.runtimeConfig),n=e.cron.cronForm.deliveryChannel.trim()||`last`,r=new Set((e.agentsList?.agents??[]).filter(e=>e.kind===`system`).map(e=>e.id.trim())),i=Xl([...Zt(e.agentsList?.agents??[]).map(e=>e.id.trim()),...e.cron.cronJobs.map(e=>typeof e.agentId==`string`&&!r.has(e.agentId.trim())?e.agentId.trim():``)]),a=Xl([...e.modelSuggestions,...Ui(t),...e.cron.cronJobs.map(e=>{let t=Ss(e);return t?.kind===`agentTurn`&&typeof t.model==`string`?t.model.trim():``})]),o=Xl(e.cron.cronJobs.map(e=>e.delivery?.to)),s=Xl([...o,...e.cron.cronForm.deliveryMode===`announce`?e.conversationTargets??[]:[]]),c=Gl((n===`last`?Object.values(e.channels.channelsSnapshot?.channelAccounts??{}).flat():e.channels.channelsSnapshot?.channelAccounts?.[n]??[]).flatMap(e=>[e.accountId,e.name]));return{agentSuggestions:i,modelSuggestions:a,timezoneSuggestions:lH(e.cron.cronJobs),accountTargets:c,failureAlertToSuggestions:e.cron.cronForm.deliveryMode===`webhook`?o.filter(e=>/^https?:\/\//i.test(e)):o,deliveryToSuggestions:e.cron.cronForm.deliveryMode===`webhook`?s.filter(e=>/^https?:\/\//i.test(e)):s}}var pH;function mH(){return(mH=e((()=>{ql(),Vt(),Lt(),Po(),uH(),pH=[`off`,`minimal`,`low`,`medium`,`high`]})))()}function hH(e){let t=new URLSearchParams(e),n=t.get(`job`)?.trim()||null,r=t.get(`session`)?.trim(),i=t.get(`agent`)?.trim();return{jobId:n,runId:n&&t.get(`run`)?.trim()||null,...!n&&r&&i?{session:{sessionKey:r,sessionAgentId:i}}:{}}}function gH(e,t){if(t.runId===e||t.sessionId===e)return!0;let n=_H.exec(e);return n!==null&&n[1]===t.jobId&&t.runAtMs===Number(n[2])}var _H;function vH(){return(vH=e((()=>{_H=/^cron:(.+):(\d+)$/u})))()}function yH(e){let t=Gm(e);if(t)return t.externalSource?`external:${t.externalSource}`:t.id?`id:${t.id}`:t.sequence==null?void 0:`seq:${t.sequence}`}function bH(e,t){let n=new Set(t.map(yH).filter(Boolean)),r=e.findIndex(e=>{let t=yH(e);return t!==void 0&&n.has(t)});return{messages:[...e.slice(0,r<0?e.length:r),...t],hasOverlap:r>=0}}function xH(){return(xH=e((()=>{sh()})))()}function SH(e){let t=[],n=[];for(let t of e){let e=K(t),r;if(Array.isArray(e?.content))for(let[t,n]of e.content.entries()){let i=K(n);i&&!Cn(i.type)&&Xo(i)&&(r??=e.content.slice(),r[t]={...i,type:`tool_call`})}n.push(r?{...e,content:r}:t)}for(let e of Yb(Xm(n))){if(e.kind!==`message`||Fo(e.message))continue;let n=_a(e.message),r=fs(e.message),i=K(e.message)?.role,a=gm(e.message,typeof i==`string`?i:n.role),o=0,s,c=eh(e.message);for(let[i,l]of n.content.entries()){let u=`${e.key}:${i}`;if(Xo(l)){let e=r[o++];if(!e)continue;let n=t.at(-1);n?.kind===`tools`?(n.calls.push({key:u,card:e}),e.activity&&n.activity.push(e.activity)):t.push({kind:`tools`,key:u,timestamp:c,calls:[{key:u,card:e}],activity:e.activity?[e.activity]:[]})}else if(yn(l.type)||[`thinking`,`commentary`].includes(l.type))continue;else if(l.type===`text`){if(Ld(e.message)===`commentary`)continue;let r=n.role===`user`?Li(l.text??``):Id(l.text??``);if(!r.trim())continue;if(a&&s?.cappedMessageId===a){s.text=`${s.text}\n\n${r}`;continue}let i={kind:n.role===`user`?`user`:`assistant`,key:u,timestamp:c,text:r,cappedMessageId:a,senderSession:n.role===`user`?void 0:n.senderSession};s=a?i:void 0,t.push(i)}else{let n=K(e.message),r=K(Array.isArray(n?.content)?n.content[i]:void 0),a=`attachment`in l?l.attachment.label:r?.fileName??r?.name;t.push({kind:`block`,key:u,timestamp:c,text:[l.type,typeof a==`string`?a:void 0].filter(Boolean).join(`: `)})}}}return t}function CH(e){switch(jo(e).kind){case`read`:return F.fileText;case`edit`:case`write`:return F.pencil;case`search`:case`fetch`:return F.search;default:return F.terminal}}function wH(e){let t=Zc(e),n=jo(t),r=bt((n.command??n.code??t.inputText??t.name).trim()),i=n.command?yi(n.command).command:void 0,a=Zl(bt(n.title??n.target??(i||n.command)?.split(`
`)[0]??t.name),160),o=vo(t,!1),s=M(`chat.toolCards.${o===`succeeded`?`completed`:o===`unknown`?`outcomeUnknown`:o}`);return R`<details
class="chat-task-feed__tool-line ${zc(t)?`chat-task-feed__error`:``}"
>
<summary>
<span class="chat-task-feed__row-icon" aria-hidden="true">${CH(t)}</span>
<span class="chat-task-feed__row-label">${a}</span>
<span class="chat-task-feed__row-outcome" title=${s}
>${o===`succeeded`?R`<span role="img" aria-label=${s}>${F.check}</span>`:s}</span
>
<span class="chat-task-feed__chevron" aria-hidden="true">${F.chevronRight}</span>
</summary>
<pre class="chat-task-feed__tool-line--full"><code>${r}</code></pre>
</details>`}function TH(e){let t=ta(e.activity);return R`<details class="chat-task-feed__tool-group">
<summary>
<span class="chat-task-feed__overview">
<span class="chat-task-feed__overview-heading">
<strong
>${t.total?M(`chat.toolCards.activity.title${t.total===1?`One`:`Many`}`,{count:String(t.total)}):M(`chat.toolCards.rawDetails`)}</strong
>
${t.outcomes.map(({kind:e,label:t})=>R`<span class="chat-task-feed__outcome chat-task-feed__outcome--${e}">${t} </span>`)}
</span>
${t.label?R`<span class="chat-task-feed__summary">${t.label}</span>`:z}
</span>
<span class="chat-task-feed__chevron" aria-hidden="true">${F.chevronRight}</span>
</summary>
<div class="chat-task-feed__calls">
${Rr(e.calls,({key:e})=>e,({card:e})=>wH(e))}
</div>
</details>`}function EH(e){return R`<div class="chat-task-feed">
${Rr(SH(e),e=>e.key,e=>R` <div class="chat-task-feed__entry" data-task-feed-entry=${e.key}>
<span class="chat-task-feed__icon" aria-hidden="true"
>${e.kind===`tools`?CH(e.calls[0].card):e.kind===`user`?F.users:e.kind===`block`?F.paperclip:F.messageSquare}</span
>
<div class="chat-task-feed__body">
${e.kind===`assistant`&&e.senderSession?rS(e,{linkSource:!1}):e.kind===`user`||e.kind===`assistant`?R`<span class="sr-only">${M(`sessionsView.${e.kind}`)}: </span>`:z}
${e.kind===`tools`?TH(e):e.kind===`assistant`?PT(e.text,e.key,{role:`assistant`,isStreaming:!1},{}):R`<div class="chat-task-feed__${e.kind}">${e.text}</div>`}
</div>
${e.timestamp===null?z:R`<time class="chat-task-feed__time" datetime=${new Date(e.timestamp).toISOString()}>${new Date(e.timestamp).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,hour12:!1})}</time>`}
</div>`)}
</div>`}function DH(){return(DH=e((()=>{B(),Ur(),Ni(),_n(),Fd(),I(),b(),zt(),Oo(),Gc(),Ta(),Es(),Cf(),_m(),sh(),Qb(),iS(),JT()})))()}var OH;function kH(){return(kH=e((()=>{B(),b(),wc(),N(),kk(),xH(),GB(),DH(),OH=class{constructor(e,t){this.host=e,this.capture=t,this.attempt=0,this.entry=null,this.trigger=null,this.scope=null,this.messages=[],this.cursors=new Set,this.loading=!1,this.error=null,e.addController(this)}hostDisconnected(){this.close()}close(e=!1){let t=this.trigger;this.trigger=null,this.attempt++,this.entry=null,this.scope=null,this.messages=[],this.nextCursor=void 0,this.cursors.clear(),this.loading=!1,this.error=null,this.failedCursor=void 0,this.host.requestUpdate(),e&&t?.isConnected&&t.focus()}async open(e,t){this.close();let n=this.capture();if(!n||(this.entry=e,this.trigger=t,this.scope=n,await this.load(),this.entry!==e||this.scope!==n||!n.isCurrent())||(await this.host.updateComplete,this.entry!==e||this.scope!==n||!n.isCurrent()))return;let r=this.host.querySelector(`[data-cron-run-transcript]`);r?.focus({preventScroll:!0}),r?.scrollIntoView({block:`start`,behavior:`instant`})}async load(e){let{entry:t,scope:n,attempt:r}=this;if(!t||!n||this.loading||!n.isCurrent())return;let i=()=>this.attempt===r&&this.host.isConnected&&n.isCurrent();this.loading=!0,this.error=null,this.failedCursor=e,this.host.requestUpdate();try{if(!t.jobId||!t.runId&&(typeof t.runAtMs!=`number`||!Number.isFinite(t.runAtMs)))throw Error(M(`cron.runEntry.transcriptMissingMetadata`));let r=await n.client.request(`cron.history`,{id:t.jobId,...t.runId?{runId:t.runId}:{runAtMs:t.runAtMs},limit:100,...e?{cursor:e}:{}});if(!i())return;if(!Array.isArray(r.messages))throw Error(M(`cron.runEntry.transcriptUnavailable`));let a=Qs(gk(r).messages);e&&this.cursors.add(e),this.messages=e?bH(a,this.messages).messages:a,this.nextCursor=r.nextCursor&&!this.cursors.has(r.nextCursor)?r.nextCursor:void 0,this.failedCursor=void 0}catch(e){if(!i())return;this.error=j(e,M(`cron.runEntry.transcriptUnavailable`))}i()&&(this.loading=!1,this.host.requestUpdate())}render(){return this.entry?R`<section
class="card"
role="region"
tabindex="-1"
aria-label=${M(`cron.runEntry.transcript`)}
data-cron-run-transcript
>
<div class="row">
<h2>${M(`cron.runEntry.transcript`)}</h2>
<button class="btn btn--sm" @click=${()=>this.close(!0)}>${M(`common.close`)}</button>
</div>
${this.error?R`<p role="alert">${this.error}</p>
<button
class="btn btn--sm"
?disabled=${this.loading}
@click=${()=>void this.load(this.failedCursor)}
>
${M(`common.retry`)}
</button>`:z}
${this.loading?R`<p role="status">${M(`common.loading`)}</p>`:z}
${this.nextCursor?WB({hasMore:!0,loading:this.loading,onShowEarlier:()=>void this.load(this.nextCursor)}):z}
${!this.loading&&!this.error&&this.messages.length===0?R`<p>${M(`cron.runEntry.transcriptEmpty`)}</p>`:z}
${EH(this.messages)}
</section>`:z}}})))()}function AH(e,t,n,r){return{id:e,emoji:t,nameKey:`cron.suggestions.ideas.${e}.name`,taglineKey:`cron.suggestions.ideas.${e}.tagline`,promptKey:`cron.suggestions.ideas.${e}.prompt`,scheduleKey:n,schedule:r}}function jH(e){return{name:M(e.nameKey),payloadText:M(e.promptKey),payloadKind:`agentTurn`,sessionTarget:`isolated`,wakeMode:`now`,deleteAfterRun:!1,enabled:!0,...e.schedule}}var MH,NH,PH,FH,IH;function LH(){return(LH=e((()=>{b(),os(),Ys(),MH={scheduleKind:`cron`,cronExpr:`0 9 * * 1-5`},NH={scheduleKind:`cron`,cronExpr:`0 8 * * *`},PH={scheduleKind:`cron`,cronExpr:`0 9 * * 1`},FH={scheduleKind:`every`,everyAmount:`1`,everyUnit:`hours`},IH=[AH(`repoPulse`,`🐙`,`cron.suggestions.schedules.weekdayMornings`,MH),AH(`standupGhostwriter`,`👻`,`cron.suggestions.schedules.weekdayMornings`,MH),AH(`hackerNewsScout`,`🔭`,`cron.suggestions.schedules.everyMorning`,NH),AH(`dependencyRadar`,`🛰️`,`cron.suggestions.schedules.weekly`,PH),AH(`watchdog`,`🦉`,`cron.suggestions.schedules.hourly`,FH),AH(`polyglotMinute`,`🗣️`,`cron.suggestions.schedules.everyMorning`,NH)]})))()}function RH(e,t){return R`
<div class="cron-condition-activity__metric">
<dt>${e}</dt>
<dd>${t}</dd>
</div>
`}function zH(e){let t=pn(e.lastCheckedAtMs,{fallback:M(`cron.runs.notChecked`)}),n=pn(e.lastFiredAtMs,{fallback:M(`cron.runs.neverFired`)});return R`
<div class="cron-condition-activity" data-test-id="cron-condition-activity">
<div class="cron-condition-activity__intro">
<div class="settings-row__title">
<span class="cron-condition-activity__icon" aria-hidden="true">${L(`gitBranch`)}</span>
${M(`cron.runs.conditionActivity`)}
</div>
<div class="settings-row__desc">${M(`cron.runs.conditionActivityHint`)}</div>
</div>
<dl class="cron-condition-activity__metrics">
${RH(M(`cron.runs.checks`),String(e.checkCount))}
${RH(M(`cron.runs.lastChecked`),t)}
${RH(M(`cron.runs.lastFired`),n)}
</dl>
</div>
`}function BH(e){if(e.checkCount===0)return M(`cron.runs.emptyConditionUnchecked`);let t=e.checkCount===1?`cron.runs.emptyConditionHintOne`:`cron.runs.emptyConditionHint`;return M(t,{count:String(e.checkCount)})}function VH(e,t,n){let r=new Set(e);return n?r.add(t):r.delete(t),Array.from(r)}function HH(e,t){return e.length===0?t:e.length<=2?e.join(`, `):`${e[0]} +${e.length-1}`}function UH(e){let t=e.options.filter(t=>e.selected.includes(t.value)).map(e=>e.label),n=HH(t,e.allLabel),r=t.length>2?`${n} (${new Intl.ListFormat(Mt.getLocale(),{style:`long`,type:`conjunction`}).format(t)})`:n;return R`
<div class="cron-filter-dropdown" data-filter=${e.id}>
<wa-dropdown
class="cron-filter-dropdown__details"
placement="bottom-start"
@wa-select=${t=>{let n=t.detail.item.value;if(n===`${ZH}clear`){e.onClear();return}if(n?.startsWith(XH)){t.preventDefault();let r=n.slice(7);e.onToggle(r,!e.selected.includes(r))}}}
>
<button
slot="trigger"
type="button"
class="btn btn--sm cron-filter-dropdown__trigger ${e.selected.length>0?`active`:``}"
title=${e.title}
aria-label=${`${e.title} ${r}`}
>
<span>${n}</span>
${L(`chevronDown`)}
</button>
${e.options.map(t=>R`
<wa-dropdown-item
class="cron-filter-dropdown__option"
type="checkbox"
value=${`${XH}${t.value}`}
.checked=${e.selected.includes(t.value)}
>
${t.label}
</wa-dropdown-item>
`)}
<div class="session-menu__separator" role="separator"></div>
<wa-dropdown-item value=${`${ZH}clear`}>
${M(`cron.runs.clear`)}
</wa-dropdown-item>
</wa-dropdown>
</div>
`}function WH(e){let t=r(),n=e.runs.toSorted((t,n)=>e.runsSortDir===`asc`?t.ts-n.ts:n.ts-t.ts),i=e.runsQuery.trim().length>0||e.runsStatuses.length>0||e.runsDeliveryStatuses.length>0,a=e.runsSortDir===`asc`?M(`cron.runs.oldestFirst`):M(`cron.runs.newestFirst`);return R`
<div class="cron-runs" aria-busy=${String(e.runsState===`pending`)}>
${e.conditionActivity?zH(e.conditionActivity):z}
<div class="cron-run-filters">
<div class="cron-search-box cron-run-filter-search">
<span class="cron-search-box__icon" aria-hidden="true">${L(`search`)}</span>
<input
type="search"
class="settings-input"
.value=${e.runsQuery}
aria-label=${M(`cron.runs.searchRuns`)}
placeholder=${M(`cron.runs.searchPlaceholder`)}
@input=${t=>e.onRunsFiltersChange({cronRunsQuery:t.target.value})}
/>
</div>
${UH({id:`status`,title:M(`cron.runs.status`),allLabel:M(`cron.runs.allStatuses`),options:Array.from(JH,([e,t])=>({value:e,label:M(t)})),selected:e.runsStatuses,onToggle:(t,n)=>{let r=VH(e.runsStatuses,t,n);e.onRunsFiltersChange({cronRunsStatuses:r})},onClear:()=>{e.onRunsFiltersChange({cronRunsStatuses:[]})}})}
${UH({id:`delivery`,title:M(`cron.runs.delivery`),allLabel:M(`cron.runs.allDelivery`),options:Array.from(YH,([e,t])=>({value:e,label:M(t)})),selected:e.runsDeliveryStatuses,onToggle:(t,n)=>{let r=VH(e.runsDeliveryStatuses,t,n);e.onRunsFiltersChange({cronRunsDeliveryStatuses:r})},onClear:()=>{e.onRunsFiltersChange({cronRunsDeliveryStatuses:[]})}})}
<div class="cron-filter-dropdown">
<wa-dropdown
class="cron-filter-dropdown__details"
placement="bottom-start"
@wa-select=${t=>{let n=t.detail.item.value;(n===`asc`||n===`desc`)&&e.onRunsFiltersChange({cronRunsSortDir:n})}}
>
<button
slot="trigger"
type="button"
class="btn btn--sm cron-filter-dropdown__trigger cron-run-sort"
aria-label=${`${M(`cron.jobs.sort`)} ${a}`}
>
<span>${a}</span>
${L(`chevronDown`)}
</button>
<wa-dropdown-item value="desc" aria-current=${String(e.runsSortDir===`desc`)}>
${M(`cron.runs.newestFirst`)}
<span slot="details" aria-hidden="true">
${e.runsSortDir===`desc`?L(`check`):z}
</span>
</wa-dropdown-item>
<wa-dropdown-item value="asc" aria-current=${String(e.runsSortDir===`asc`)}>
${M(`cron.runs.oldestFirst`)}
<span slot="details" aria-hidden="true">
${e.runsSortDir===`asc`?L(`check`):z}
</span>
</wa-dropdown-item>
</wa-dropdown>
</div>
</div>
${e.runsState===`failed`?R`<button class="btn btn--sm" @click=${e.onRefresh}>${M(`common.retry`)}</button>`:z}
${n.length===0?e.runsState===`pending`?R`<div
class="cron-empty-state"
role="status"
aria-live="polite"
data-test-id="cron-runs-loading"
>
${M(`cron.list.loading`)}
</div>`:e.runsState===`ready`?i?R`<div class="muted cron-runs__empty">${M(`cron.runs.noMatching`)}</div>`:R`
<div class="cron-empty-state">
<div class="cron-empty-state__title">
${e.conditionActivity?M(`cron.runs.emptyConditionTitle`):M(`cron.runs.emptyTitle`)}
</div>
<div class="cron-empty-state__copy">
${e.conditionActivity?BH(e.conditionActivity):M(`cron.runs.emptyHint`)}
</div>
</div>
`:z:R`
<div class="cron-runs__list">
${n.map(n=>qH(n,t,e.highlightedRunId,e.onViewRunTranscript))}
</div>
`}
${e.runsHasMore?R`
<button
class="btn btn--sm cron-load-more"
?disabled=${e.runsLoadingMore}
@click=${e.onLoadMoreRuns}
>
${e.runsLoadingMore?M(`cron.list.loading`):M(`cron.runs.loadMore`)}
</button>
`:z}
</div>
`}function GH(e,t=Date.now()){let n=pn(e);return M(e>t?`cron.runEntry.next`:`cron.runEntry.due`,{rel:n})}function KH(e,t){if(e===`ok`&&(t===`failed`||t===`unknown`)){let e=M(t===`failed`?`cron.runs.runStatusError`:`cron.runs.runStatusUnknown`);return`${M(`cron.runs.runStatusOk`)} · ${e}`}return M(JH.get(e)??`cron.runs.runStatusUnknown`)}function qH(e,t,n,r){let i=KH(e.status??`unknown`,e.completionStatus),a=M(YH.get(e.deliveryStatus??`not-requested`)??`cron.runs.deliveryUnknown`),o=e.usage,s=o&&typeof o.total_tokens==`number`?`${Tt(o.total_tokens)} ${M(`usage.metrics.tokens`)}`:o&&typeof o.input_tokens==`number`&&typeof o.output_tokens==`number`?`${Tt(o.input_tokens)} in / ${Tt(o.output_tokens)} out`:null,c=e.summary||gt(e.error)||M(`cron.runEntry.noSummary`),l=!!e.error&&!!e.summary,u=gt(e.deliverySuppressionReason),d=[a,u?M(`cron.runEntry.deliverySuppression`,{reason:u}):null,e.model,e.provider,s].filter(Boolean),f=!!(n&&gH(n,e));return R`
<div class="cron-run-entry ${f?`cron-run-entry--highlighted`:``}">
<div class="cron-run-entry__header">
<div class="cron-run-entry__main">
<div class="cron-run-entry__title">
${e.jobName??e.jobId}
<span class="muted"> · ${i}</span>
</div>
<div class="cron-run-entry__facts muted">${d.join(` · `)}</div>
</div>
<div class="cron-run-entry__meta">
<div>${t(e.ts)}</div>
${typeof e.runAtMs==`number`?R`<div class="muted">
${M(`cron.runEntry.runAt`)} ${t(e.runAtMs)}
</div>`:z}
<div class="muted">
${typeof e.durationMs==`number`&&Number.isFinite(e.durationMs)?Qc(e.durationMs)??yo(e.durationMs,M(`common.na`)):M(`common.na`)}
</div>
${typeof e.nextRunAtMs==`number`?R`<div class="muted">${GH(e.nextRunAtMs)}</div>`:z}
${e.runId||e.runAtMs!==void 0||e.sessionKey?R`<div>
<button
class="btn btn--sm"
@click=${t=>{t.currentTarget instanceof HTMLButtonElement&&r?.(e,t.currentTarget)}}
>
${M(`cron.runEntry.viewTranscript`)}
</button>
</div>`:z}
${l?R`<div class="muted">${gt(e.error)}</div>`:z}
${e.deliveryError?R`<div class="muted">${gt(e.deliveryError)}</div>`:z}
</div>
</div>
<div class="cron-run-entry__body chat-text">
${Xr(zu(c))}
</div>
</div>
`}var JH,YH,XH,ZH;function QH(){return(QH=e((()=>{B(),Qr(),I(),Ru(),Dd(),b(),os(),Kc(),N(),qe(),vH(),Ys(),JH=new Map([[`ok`,`cron.runs.runStatusOk`],[`error`,`cron.runs.runStatusError`],[`skipped`,`cron.runs.runStatusSkipped`]]),YH=new Map([[`delivered`,`cron.runs.deliveryDelivered`],[`not-delivered`,`cron.runs.deliveryNotDelivered`],[`unknown`,`cron.runs.deliveryUnknown`],[`not-requested`,`cron.runs.deliveryNotRequested`]]),XH=`option:`,ZH=`command:`})))()}function $H(e){let t=e.state?.autoDisabled,[n,r,i]=qs(e)?[`running`,`loader`,M(`cron.runs.runStatusRunning`)]:t?[`error`,`lock`,nU(e)]:ro(e)?[`error`,`alertTriangle`,M(`cron.runs.runStatusError`)]:e.enabled?[`active`,null,M(`cron.detail.active`)]:[`paused`,`pause`,M(`cron.list.paused`)];return R`<span
class="cron-table__state cron-table__state--${n}"
role="img"
aria-label=${i}
title=${i}
>${r?L(r):R`<span class="cron-table__state-dot"></span>`}</span
>`}function eU(){let e=M(`cron.form.triggerConfigured`);return R`<span class="cron-trigger-icon" role="img" aria-label=${e} title=${e}
>${L(`gitBranch`)}</span
>`}function tU(e){if(!e.state?.autoDisabled)return R`<span class="muted cron-table__paused-note">${M(`cron.list.paused`)}</span>`;let t=nU(e),n=e.state?.lastError?.trim();return R`<span
class="cron-table__paused-note cron-table__auto-disabled"
data-test-id=${`cron-row-auto-disabled-${e.id}`}
title=${n?gt(n):t}
>${t}</span
>`}function nU(e){let t=e.state?.autoDisabled;return t?M(t.reason===`schedule-errors`?`cron.list.autoDisabledScheduleErrors`:`cron.list.autoDisabledRunFailures`,{count:String(t.consecutiveErrors)}):M(`cron.list.paused`)}function rU(e){let t=qi(e),n=e.state?.lastRunAtMs,r=typeof n==`number`&&Number.isFinite(n)?pn(n):null;if(t===`unknown`||!r)return R`<span class="muted">${M(`common.na`)}</span>`;let i=t===`ok`?R`<span class="cron-last-glyph cron-last-glyph--ok">${L(`check`)}</span>`:t===`error`?R`<span class="cron-last-glyph cron-last-glyph--error">${L(`x`)}</span>`:R`<span class="cron-last-glyph">${L(`cornerDownRight`)}</span>`,a=KH(t);return R`
<span class="cron-table__last-run" role="img" aria-label=${a} title=${a}>
${i}
<span class="cron-table__last-time">${r}</span>
</span>
`}function iU(){return(iU=e((()=>{B(),I(),b(),N(),qe(),QH()})))()}function aU(e,t,n){return R`
<label class="field">
<span>${n.label}</span>
<select
class="settings-select"
data-test-id=${Pr(n.testId)}
.value=${n.value}
@change=${n=>{if(n.currentTarget instanceof HTMLSelectElement)return e.onJobsFiltersChange({[t]:n.currentTarget.value})}}
>
${n.options.map(({value:e,label:t})=>R`<option value=${e} ?selected=${e===n.value}>${t}</option>`)}
</select>
</label>
`}function oU(e,t){return R`
<button
id="cron-jobs-filter-trigger"
type="button"
class="btn btn--sm cron-filter-popover__trigger ${t?`active`:``}"
title=${M(`cron.list.filters`)}
aria-label=${M(`cron.list.filters`)}
aria-haspopup="dialog"
aria-expanded="false"
>
${L(`listFilter`)}
</button>
<wa-popover
${Or(Td)}
class="cron-filter-popover"
for="cron-jobs-filter-trigger"
aria-label=${M(`cron.list.filters`)}
placement="bottom-end"
without-arrow
@wa-show=${id}
@wa-hide=${id}
>
<div class="cron-filter-popover__panel">
${aU(e,`cronJobsScheduleKindFilter`,{label:M(`cron.jobs.schedule`),value:e.jobsScheduleKindFilter,testId:`cron-jobs-schedule-filter`,options:Object.entries(sU).map(([e,t])=>({value:e,label:M(t)}))})}
${aU(e,`cronJobsLastStatusFilter`,{label:M(`cron.jobs.lastRun`),value:e.jobsLastStatusFilter,testId:`cron-jobs-last-status-filter`,options:[{value:`all`,label:M(`cron.jobs.all`)},{value:`ok`,label:M(`cron.runs.runStatusOk`)},{value:`error`,label:M(`cron.runs.runStatusError`)},{value:`skipped`,label:M(`cron.runs.runStatusSkipped`)},{value:`unknown`,label:M(`cron.runs.runStatusUnknown`)}]})}
${aU(e,`cronJobsTriggerFilter`,{label:M(`cron.jobs.condition`),value:e.jobsTriggerFilter,testId:`cron-jobs-trigger-filter`,options:[{value:`all`,label:M(`cron.jobs.all`)},{value:`conditional`,label:M(`cron.jobs.conditional`)},{value:`unconditional`,label:M(`cron.jobs.unconditional`)}]})}
${aU(e,`cronJobsSortBy`,{label:M(`cron.jobs.sort`),value:e.jobsSortBy,options:[{value:`nextRunAtMs`,label:M(`cron.jobs.nextRun`)},{value:`updatedAtMs`,label:M(`cron.jobs.recentlyUpdated`)},{value:`name`,label:M(`cron.jobs.name`)}]})}
${aU(e,`cronJobsSortDir`,{label:M(`cron.jobs.direction`),value:e.jobsSortDir,options:[{value:`asc`,label:M(`cron.jobs.ascending`)},{value:`desc`,label:M(`cron.jobs.descending`)}]})}
<button
class="btn btn--sm"
data-test-id="cron-jobs-filters-reset"
?disabled=${!t}
@click=${e.onJobsFiltersReset}
>
${M(`cron.jobs.reset`)}
</button>
</div>
</wa-popover>
`}var sU;function cU(){return(cU=e((()=>{B(),Dr(),Ar(),I(),Uu(),b(),os(),Ys(),sU={all:`cron.jobs.all`,at:`cron.form.at`,every:`cron.form.every`,cron:`cron.form.cronOption`,"on-exit":`cron.form.repeatOnExit`,stream:`cron.form.repeatStream`}})))()}function lU(e){return Object.entries({"cron-agent-suggestions":e.agentSuggestions,"cron-thinking-suggestions":e.thinkingSuggestions,"cron-tz-suggestions":e.timezoneSuggestions,"cron-delivery-to-suggestions":e.deliveryToSuggestions,"cron-failure-alert-to-suggestions":e.failureAlertToSuggestions,"cron-delivery-account-suggestions":e.accountSuggestions}).map(([e,t])=>{let n=Il(t);return n.length===0?z:R`<datalist id=${e}>
${n.map(e=>R`<option value=${e}></option> `)}
</datalist>`})}function uU(){return(uU=e((()=>{ql(),B()})))()}function dU(e){return[{value:`last`,label:`last`,kind:`neutral`},...zl(e.channels.filter(Boolean)).map(t=>({value:t,label:e.channelMeta?.find(e=>e.id===t)?.label||e.channelLabels?.[t]||t}))]}function fU(e){return`cron-error-${e}`}function pU(e){return`cron-${e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}`}function mU(e,t,n){return e===`payloadText`&&t.payloadKind===`systemEvent`?M(`cron.form.mainTimelineMessage`):M(e===`deliveryTo`&&n===`webhook`?`cron.form.webhookUrl`:YU[e])}function hU(e,t,n){return Object.keys(YU).flatMap(r=>{let i=e[r];return i?[{label:mU(r,t,n),message:i,inputId:pU(r)}]:[]})}function gU(e){let t=document.getElementById(e);t instanceof HTMLElement&&(typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`center`,behavior:oE()}),t.focus())}function _U(e,t){return e?R`<div id=${Pr(t)} class="cron-help cron-error">${M(e)}</div>`:z}function vU(e){return R`
${e}
<span class="cron-required-marker" aria-hidden="true">*</span>
<span class="cron-required-sr">${M(`cron.form.requiredSr`)}</span>
`}function yU(e){let t=e.wide?`cron-control cron-control--wide`:`cron-control`,n=R`<div class=${t}>
${e.control}${_U(e.error,e.errorId)}
</div>`;return R`
<div class=${e.stacked?`settings-row settings-row--stacked`:`settings-row`}>
<label class="settings-row__text" for=${Pr(e.controlId||void 0)}>
<span class="settings-row__title">
${e.required?vU(e.label):e.label}
</span>
${e.help?R`<span class="settings-row__desc">${e.help}</span>`:z}
</label>
<div class="settings-row__control">${n}</div>
</div>
`}function bU(e,t,n){let r=n.errorKey?e.fieldErrors[n.errorKey]:void 0,i=r&&n.errorKey&&n.describeError!==!1?fU(n.errorKey):void 0;return R`
<input
id=${pU(t)}
class=${n.mono?`settings-input mono`:`settings-input`}
type=${Pr(n.type)}
aria-required=${Pr(n.required?`true`:void 0)}
.value=${e.form[t]}
list=${Pr(n.list)}
?disabled=${n.disabled??!1}
aria-invalid=${Pr(n.errorKey?r?`true`:`false`:void 0)}
aria-describedby=${Pr(i)}
placeholder=${Pr(n.placeholder)}
@input=${n=>e.onFormChange({[t]:n.currentTarget.value})}
/>
`}function xU(e,t,n){let r=n.errorKey;return yU({label:n.label,controlId:pU(t),required:n.required,help:n.help,error:r?e.fieldErrors[r]:void 0,errorId:r?fU(r):void 0,control:bU(e,t,n)})}function SU(e,t,n){let r=n.value??e.form[t],i=n.errorKey?e.fieldErrors[n.errorKey]:void 0;return(n.channel?Hu:wd)({id:n.standalone?void 0:pU(t),label:n.label,value:n.channel?r||`last`:r,options:n.options,disabled:n.disabled,invalid:n.errorKey?!!i:void 0,describedBy:i&&n.errorKey?fU(n.errorKey):void 0,onChange:n=>e.onFormChange({[t]:n})})}function CU(e,t,n){return yU({label:n.label,controlId:pU(t),help:n.help,error:n.errorKey?e.fieldErrors[n.errorKey]:void 0,errorId:n.errorKey?fU(n.errorKey):void 0,control:SU(e,t,n)})}function wU(e,t,n){return Gu({title:n.label,description:n.help,checked:e.form[t],onChange:n=>e.onFormChange({[t]:n})})}function TU(e){let t=e.editingJob?`job`:e.createOpen?`create`:`overview`;return R`
${t===`overview`?DU(e):FU(e,t)}
${lU(e)}
`}function EU(e){return e.canManage?z:R`<div class="cron-admin-note" role="note">
<span aria-hidden="true">${L(`lock`)}</span>
<span>${M(`cron.adminRequired`)}</span>
</div>`}function DU(e){let t=e.jobsScheduleKindFilter!==`all`||e.jobsLastStatusFilter!==`all`||e.jobsTriggerFilter!==`all`||e.jobsSortBy!==`nextRunAtMs`||e.jobsSortDir!==`asc`,n=t||e.jobsQuery.trim().length>0||e.jobsEnabledFilter!==`all`,r=!e.loading&&e.hasLoaded&&!e.listError&&!e.error&&e.jobsTotal===0&&!n&&e.canManage,i=[R`
<div class="cron-overview-header">
${EU(e)}
${e.status&&!e.status.enabled?R`
<div class="cron-error-banner" data-test-id="cron-scheduler-banner">
<strong>${M(`cron.list.schedulerOff`)}</strong>
${M(`cron.runNotStarted.stopped`)}
</div>
`:z}
${e.listError?R`<div class="cron-error-banner" role="alert">${e.listError}</div>`:z}
${e.error?R`<div class="cron-error-banner" role="alert">${e.error}</div>`:z}
${kU(e,t)}
</div>
`,R`
<div
id="cron-list-panel"
class="cron-tab-panel"
role="tabpanel"
aria-labelledby=${`cron-list-tab-${e.listTab===`activity`?`activity`:e.jobsEnabledFilter}`}
>
${e.listTab===`activity`?Pu({},R`<div class="cron-activity">${WH(e)}</div>`):[Pu({},AU(e,n)),r?PU(e):z]}
</div>
`];return R`
<section class="cron-page" data-panel-mode="overview">
${wu(i,{wide:!0})}
</section>
`}function OU(e){return ad({id:`cron-list`,panelId:`cron-list-panel`,className:`cron-tabs`,active:e.listTab===`activity`?`activity`:e.jobsEnabledFilter,tabs:[...XU.map(e=>({value:e.value,label:M(e.labelKey),testId:`cron-tab-${e.value}`})),{value:`activity`,label:M(`cron.list.activityTab`),testId:`cron-list-tab-activity`}],ariaLabel:M(`cron.list.viewLabel`),onSelect:t=>{if(t===`activity`){e.onListTabChange(`activity`);return}e.onListTabChange(`tasks`),t!==e.jobsEnabledFilter&&e.onJobsFiltersChange({cronJobsEnabledFilter:t})}})}function kU(e,t){return R`
<div class="cron-toolbar">
${e.listTab===`tasks`?R`
<div class="cron-toolbar__filters">
<div class="cron-search-box">
<span class="cron-search-box__icon" aria-hidden="true">${L(`search`)}</span>
<input
type="search"
class="settings-input"
.value=${e.jobsQuery}
aria-label=${M(`cron.list.searchPlaceholder`)}
placeholder=${M(`cron.list.searchPlaceholder`)}
@input=${t=>e.onJobsFiltersChange({cronJobsQuery:t.target.value})}
/>
</div>
${oU(e,t)}
</div>
`:z}
<div class="cron-toolbar__primary">
${OU(e)}
<div class="cron-toolbar__actions">
<button
type="button"
class="btn btn--sm btn--ghost cron-refresh ${e.loading?`cron-refresh--loading`:``}"
?disabled=${e.loading}
title=${e.loading?M(`cron.list.refreshing`):M(`cron.list.refresh`)}
aria-label=${M(`cron.list.refresh`)}
@click=${e.onRefresh}
>
${L(`refresh`)}
</button>
${e.canManage?R`
<button
type="button"
class="btn primary btn--sm cron-new-task"
data-test-id="cron-new-task"
@click=${()=>e.onOpenCreate()}
>
${L(`plus`)} ${M(`cron.list.newTask`)}
</button>
`:z}
</div>
</div>
</div>
`}function AU(e,t){let n=e.loading&&!e.hasLoaded,r=e.loading||e.jobsLoadingMore,i=e.jobs.toSorted((e,t)=>Number(ro(t))-Number(ro(e)));return R`
<div
class="cron-table ${e.canManage?``:`cron-table--read-only`}"
aria-busy=${r?`true`:z}
>
<div class="cron-table__head">
<span>${M(`cron.jobs.name`)}</span>
<span>${M(`cron.jobs.schedule`)}</span>
<span>${M(`cron.jobs.nextRun`)}</span>
<span>${M(`cron.jobs.lastRun`)}</span>
${e.canManage?R`<span aria-hidden="true"></span>`:z}
</div>
${i.length===0?n?R`
<div
class="cron-empty-state"
role="status"
aria-live="polite"
data-test-id="cron-jobs-loading"
>
<div class="cron-empty-state__title">${M(`cron.list.loading`)}</div>
</div>
`:e.hasLoaded?R`
<div class="cron-empty-state">
<div class="cron-empty-state__title">
${M(t?`cron.list.noMatching`:`cron.list.emptyTitle`)}
</div>
${t?z:R`<div class="cron-empty-state__copy">
${M(`cron.list.emptyHint`)}
</div>`}
</div>
`:z:Rr(i,e=>e.id,t=>jU(t,e))}
${Zu({jobsShown:e.jobs.length,jobsTotal:e.jobsTotal,hasMore:e.jobsHasMore,loading:e.loading,loadingMore:e.jobsLoadingMore,onLoadMore:e.onLoadMoreJobs})}
</div>
`}function jU(e,t){let n=e.displayName??e.name,r=e.description?.trim(),i=bn(e.declarationKey),a=e.state?.nextRunAtMs,o=typeof a==`number`&&Number.isFinite(a),s=qs(e)?R`<span class="cron-table__running">${M(`cron.runs.runStatusRunning`)}</span>`:o?pn(a):M(`common.na`);return R`
<div
class="cron-table__row ${e.enabled?``:`cron-table__row--paused`}"
data-test-id=${`cron-row-${e.id}`}
@click=${()=>t.onSelectJob(e)}
>
<button type="button" class="cron-table__name">
${$H(e)}
<span class="cron-table__name-copy">
<span class="cron-table__name-line">
<span class="cron-table__name-text">${n}</span>
${e.trigger?eU():z}
</span>
${i?z:Bu(e.agentId)}
${r||!e.enabled?R`
<span class="cron-table__name-meta">
${r?R`
<span
class="cron-table__description"
data-test-id=${`cron-row-description-${e.id}`}
title=${`${M(`cron.form.description`)}: ${r}`}
>${r}</span
>
`:z}
${r&&!e.enabled?R`<span class="cron-table__meta-separator" aria-hidden="true">·</span>`:z}
${e.enabled?z:tU(e)}
</span>
`:z}
</span>
</button>
${MU(`cron-table__schedule`,M(`cron.jobs.schedule`),oc(e))}
${MU(`cron-table__next`,M(`cron.jobs.nextRun`),s)}
${MU(`cron-table__last`,M(`cron.jobs.lastRun`),rU(e))}
${t.canManage?R`
<span class="cron-table__actions" @click=${e=>e.stopPropagation()}>
<button
type="button"
class="btn btn--sm btn--ghost cron-row-run"
data-test-id=${`cron-row-run-${e.id}`}
title=${M(`cron.actions.runNowJob`,{name:n})}
aria-label=${M(`cron.actions.runNowJob`,{name:n})}
?disabled=${t.busy}
@click=${()=>t.onRun(e,`force`)}
>
${L(`play`)}
</button>
${i?z:LU(t,e,{compact:!0,testId:`cron-row-toggle-${e.id}`})}
${NU(t,e)}
</span>
`:z}
</div>
`}function MU(e,t,n){return R`<span class="cron-table__cell ${e}">
<span class="cron-table__cell-label">${t}</span>
<span class="cron-table__cell-value">${n}</span>
</span>`}function NU(e,t){if(!e.canManage)return z;let n=bn(t.declarationKey),r=t.displayName??t.name;return R`
<wa-dropdown
class="cron-job-menu"
placement="bottom-end"
@wa-select=${r=>{if(e.canManage)switch(r.detail.item.value){case`run-if-due`:e.onRun(t,`due`);break;case`clone`:n||e.onClone(t);break;case`remove`:n||e.onRemove(t);break;case void 0:}}}
>
<button
slot="trigger"
type="button"
class="btn btn--sm btn--ghost cron-job-menu__trigger"
aria-label=${M(`cron.actions.moreJob`,{name:r})}
title=${M(`cron.actions.moreJob`,{name:r})}
>
${L(`moreHorizontal`)}
</button>
${BU(e,`run-if-due`,M(`cron.actions.runIfDue`))}
${n?z:BU(e,`clone`,M(`cron.actions.clone`))}
${n?z:BU(e,`remove`,M(`cron.actions.remove`),{danger:!0})}
</wa-dropdown>
`}function PU(e){return Pu({title:M(`cron.suggestions.title`)},IH.map(t=>R`
<button
type="button"
class="settings-row settings-row--nav cron-suggestion"
data-suggestion=${t.id}
@click=${()=>e.onOpenCreate(jH(t))}
>
<div class="settings-row__text">
<span class="settings-row__title">
<span aria-hidden="true">${t.emoji}</span> ${M(t.nameKey)}
</span>
<span class="settings-row__desc">${M(t.taglineKey)}</span>
</div>
<div class="settings-row__control">
<span class="settings-row__value">${M(t.scheduleKey)}</span>
<span class="settings-row__chevron">${F.chevronRight}</span>
</div>
</button>
`))}function FU(e,t){let n=t===`job`?e.editingJob??void 0:void 0,r=t===`job`&&!!n,i=t===`job`&&e.detailTab===`history`,a=n?.trigger?{checkCount:n.state?.triggerEvalCount??0,lastCheckedAtMs:n.state?.lastTriggerEvalAtMs,lastFiredAtMs:n.state?.lastTriggerFireAtMs}:void 0,o=[R`
<div class="cron-back-row">
<button
type="button"
class="cron-back"
data-test-id="cron-back"
?disabled=${e.busy}
@click=${e.onClosePanel}
>
${L(`arrowLeft`)} ${M(`cron.detail.back`)}
</button>
</div>
`,IU(e,t,n),EU(e),r?RU(e):z,e.error?R`<div class="cron-error-banner" role="alert">${e.error}</div>`:z,R`
<div
id="cron-detail-panel"
class="cron-tab-panel"
role=${r?`tabpanel`:z}
aria-labelledby=${r?`cron-detail-tab-${e.detailTab}`:z}
>
${i?Pu({title:M(`cron.detail.historyTitle`)},R`<div class="cron-history">
${WH({...e,conditionActivity:a})}
</div>`):zU(e,t)}
</div>
`];return R`
<section class="cron-page cron-page--detail" data-panel-mode=${t}>
${wu(o,{wide:!0})}
</section>
`}function IU(e,t,n){let r=t===`job`?n?.displayName??n?.name??e.form.name:M(`cron.detail.newTitle`),i=t===`job`?n?.description?.trim():void 0,a=bn(n?.declarationKey),o=n?.state?.nextRunAtMs,s=typeof o==`number`&&Number.isFinite(o)?` · ${M(`cron.jobState.next`)} ${pn(o)}`:``,c=t===`job`&&n?`${oc(n)}${s}`:M(`cron.detail.newSubtitle`);return R`
<div class="cron-detail-header">
<div class="cron-detail-header__copy">
<div class="cron-detail-title">${r}</div>
${i?R`<div class="cron-detail-description" data-test-id="cron-detail-description">
<span class="cron-detail-description__label">${M(`cron.form.description`)}:</span>
${i}
</div>`:z}
<div class="cron-detail-meta">
${t===`job`&&n&&e.canManage&&!a?LU(e,n):z}
<span class="cron-detail-sub">${c}</span>
${n?.trigger?eU():z}
</div>
</div>
<div class="cron-detail-actions">
${t===`job`&&n&&e.canManage?R`
<button
type="button"
class="btn btn--sm"
data-test-id="cron-run-now"
?disabled=${e.busy}
@click=${()=>e.onRun(n,`force`)}
>
${L(`play`)} ${M(`cron.actions.runNow`)}
</button>
${NU(e,n)}
`:z}
</div>
</div>
`}function LU(e,t,n){let r=t.enabled?M(`cron.detail.active`):M(`cron.detail.paused`),i=M(t.enabled?`cron.actions.pauseJob`:`cron.actions.resumeJob`,{name:t.displayName??t.name});return R`
<span
class="cron-enabled-toggle"
data-test-id=${n?.testId??`cron-toggle-enabled`}
title=${n?.compact?i:z}
>
${gu({checked:t.enabled,disabled:e.busy||!e.canManage,ariaLabel:n?.compact?i:r,onChange:n=>{e.canManage&&e.onToggle(t,n)}})}
${n?.compact?z:R`<span class="cron-detail-sub">${r}</span>`}
</span>
`}function RU(e){return ad({id:`cron-detail`,panelId:`cron-detail-panel`,className:`cron-tabs`,variant:`sub`,active:e.detailTab,tabs:[{value:`settings`,label:M(`cron.detail.settingsTab`),testId:`cron-detail-tab-settings`},{value:`history`,label:M(`cron.detail.historyTitle`),testId:`cron-detail-tab-history`}],ariaLabel:M(`cron.detail.tabsLabel`),onSelect:e.onDetailTabChange})}function zU(e,t){let n=e.form.payloadLocked,r=t===`job`&&bn(e.editingJob?.declarationKey),i=!n&&e.form.payloadKind===`agentTurn`,a=e.form.sessionTarget!==`main`&&(e.form.payloadKind===`agentTurn`||n),o=e.form.deliveryMode===`announce`&&!a?`none`:e.form.deliveryMode,s=hU(e.fieldErrors,e.form,o),c=e.canManage&&!e.busy&&s.length>0,l=c&&!e.canSubmit?s.length===1?M(`cron.form.fixFields`,{count:String(s.length)}):M(`cron.form.fixFieldsPlural`,{count:String(s.length)}):``;return R`
<fieldset
class="cron-editor"
?disabled=${e.busy||!e.canManage||r}
aria-busy=${String(e.busy)}
>
${VU(e,{payloadLocked:n,isAgentTurn:i})} ${HU(e)}
${WU(e)}
${GU(e,{supportsAnnounce:a,selectedDeliveryMode:o})}
${KU(e,{mode:t,isAgentTurn:i,selectedDeliveryMode:o})}
${c?R`
<div class="cron-form-status" role="status" aria-live="polite">
<div class="cron-form-status__title">${M(`cron.form.cantAddYet`)}</div>
<div class="cron-help">${M(`cron.form.fillRequired`)}</div>
<ul class="cron-form-status__list">
${s.map(e=>R`
<li>
<button
type="button"
class="cron-form-status__link"
@click=${()=>gU(e.inputId)}
>
${e.label}: ${M(e.message)}
</button>
</li>
`)}
</ul>
</div>
`:z}
${e.canManage&&!r?R`
<div class="cron-editor-actions">
<button
class="btn primary"
data-test-id="cron-submit"
?disabled=${e.busy||!e.canSubmit}
@click=${e.onSubmit}
>
${e.busy?M(`cron.form.saving`):M(t===`job`?`cron.form.saveChanges`:`cron.form.createTask`)}
</button>
${t===`create`?R`
<button
class="btn"
data-test-id="cron-submit-run"
?disabled=${e.busy||!e.canSubmit}
@click=${e.onSubmitRunNow}
>
${M(`cron.form.createAndRun`)}
</button>
`:z}
<button class="btn" ?disabled=${e.busy} @click=${e.onClosePanel}>
${M(`cron.form.cancel`)}
</button>
${l?R`<div class="cron-submit-reason" aria-live="polite">
${l}
</div>`:z}
</div>
`:z}
</fieldset>
`}function BU(e,t,n,r){return R`
<wa-dropdown-item
class=${r?.danger?`cron-job-menu__item danger`:`cron-job-menu__item`}
value=${t}
variant=${r?.danger?`danger`:`default`}
?disabled=${e.busy||!e.canManage}
>
${n}
</wa-dropdown-item>
`}function VU(e,t){let n=e.form.payloadKind===`script`?M(`cron.form.script`):e.form.payloadKind===`heartbeat`?`Heartbeat monitor`:e.form.payloadKind===`agentTurn`?M(`cron.form.assistantTaskPrompt`):M(`cron.form.command`),r=t.payloadLocked?n:e.form.payloadKind===`systemEvent`?M(`cron.form.mainTimelineMessage`):M(`cron.form.assistantTaskPrompt`),i=t.payloadLocked?M(`cron.form.readOnlyPayloadHelp`):e.form.payloadKind===`systemEvent`?M(`cron.form.systemEventHelp`):M(`cron.form.agentTurnHelp`),a=t.payloadLocked?ZU[e.form.payloadKind]:``,o=e.form.payloadKind===`heartbeat`?e.heartbeatScratch:e.form.payloadText,s=yU({label:r,controlId:a?``:`cron-payload-text`,required:!0,help:i,stacked:!0,wide:!0,error:e.fieldErrors.payloadText,errorId:fU(`payloadText`),control:a?R`
<pre
id="cron-payload-text"
class="code-block cron-payload-code"
data-test-id="cron-payload-code"
tabindex="0"
role="region"
aria-label=${r}
><code class="hljs">${Xr(ju(o,a))}</code></pre>
`:R`
<textarea
id="cron-payload-text"
class="settings-input"
rows="6"
.value=${o}
?readonly=${t.payloadLocked}
aria-required="true"
placeholder=${M(`cron.form.promptPlaceholder`)}
aria-invalid=${e.fieldErrors.payloadText?`true`:`false`}
aria-describedby=${Pr(e.fieldErrors.payloadText?fU(`payloadText`):void 0)}
@input=${t=>e.onFormChange({payloadText:t.target.value})}
></textarea>
`}),c=M(`cron.form.action`),l=t.payloadLocked?yU({label:c,controlId:pU(`payloadKind`),control:R`
<input
id=${pU(`payloadKind`)}
class="settings-input"
.value=${n}
readonly
/>
`}):CU(e,`payloadKind`,{label:c,options:[{value:`systemEvent`,label:M(`cron.form.systemEvent`)},{value:`agentTurn`,label:M(`cron.form.agentTurn`)}]}),u=M(`cron.form.model`),d=e.fieldErrors.payloadModel,f=zl(e.modelSuggestions).map(e=>({value:e,label:e,provider:Ku(e)??void 0})),p=t.isAgentTurn?R`
${yU({label:u,controlId:``,help:M(`cron.form.modelHelp`),error:d,errorId:fU(`payloadModel`),control:ud({id:`cron-payload-model-picker`,label:u,value:e.form.payloadModel,options:[{value:``,label:M(`quickSettings.model.default`)},...f],custom:{id:pU(`payloadModel`),label:M(`cron.form.customModel`),placeholder:M(`cron.form.modelPlaceholder`),invalid:!!d,describedBy:d?fU(`payloadModel`):void 0},onChange:t=>e.onFormChange({payloadModel:t})})})}
${xU(e,`payloadThinking`,{label:M(`cron.form.thinking`),help:M(`cron.form.thinkingHelp`),errorKey:`payloadThinking`,describeError:!1,list:`cron-thinking-suggestions`,placeholder:M(`cron.form.thinkingPlaceholder`)})}
`:z;return Pu({},R`${s}${l}${p}`)}function HU(e){let t=e.form.sessionTarget,n=t===`main`||t===`isolated`;return Pu({title:M(`cron.detail.generalSection`)},R`
${xU(e,`name`,{label:M(`cron.form.fieldName`),required:!0,errorKey:`name`,placeholder:M(`cron.form.namePlaceholder`)})}
${xU(e,`agentId`,{label:M(`cron.form.agentId`),help:M(`cron.form.agentHelp`),list:`cron-agent-suggestions`,disabled:e.form.clearAgent,placeholder:M(`cron.form.agentPlaceholder`)})}
${CU(e,`sessionTarget`,{label:M(`cron.form.runsIn`),help:M(`cron.form.sessionHelp`),options:[{value:`main`,label:M(`cron.form.mainSession`)},{value:`isolated`,label:M(`cron.form.isolatedSession`)},...n?[]:[{value:t,label:t}]]})}
`)}function UU(e){if(e.scheduleKind===`every`){let t=e.everyAmount.trim();if(Ns(t,e.everyUnit)===void 0)return null;let[n,r]=QU[e.everyUnit];return Number(t)===1?M(n):M(r,{amount:t})}if(e.scheduleKind===`at`){let t=Date.parse(e.scheduleAt);return Number.isFinite(t)?M(`cron.form.summaryOnce`,{at:Ae(t)}):null}if(e.scheduleKind===`cron`){let t=e.cronExpr.trim();if(!t)return null;let n=e.cronTz.trim();return n?M(`cron.form.summaryCronTz`,{expr:t,tz:n}):M(`cron.form.summaryCron`,{expr:t})}return e.scheduleKind===`on-exit`?M(`cron.form.repeatOnExit`):e.scheduleKind===`stream`?M(`cron.form.repeatStream`):null}function WU(e){let t=e.form,n=t.scheduleKind===`on-exit`,r=t.scheduleKind===`stream`,i=n?{value:`on-exit`,label:M(`cron.form.repeatOnExit`)}:r?{value:`stream`,label:M(`cron.form.repeatStream`)}:null,a=[...i?[{...i,testId:`cron-schedule-kind-${i.value}`}]:[],{value:`every`,label:M(`cron.form.repeatInterval`),testId:`cron-schedule-kind-every`},{value:`at`,label:M(`cron.form.repeatOnce`),testId:`cron-schedule-kind-at`},{value:`cron`,label:M(`cron.form.cronOption`),testId:`cron-schedule-kind-cron`}],o=UU(t);return Pu({title:M(`cron.detail.scheduleSection`)},R`
${hd({title:M(`cron.form.repeat`),description:n?M(`cron.form.onExitHelp`):void 0,stacked:!0,control:Mu({value:t.scheduleKind,options:a,ariaLabel:M(`cron.form.repeat`),onChange:n=>e.onFormChange({scheduleKind:n,...n===`at`&&(t.scheduleKind===`every`||t.scheduleKind===`cron`)?{deleteAfterRun:!0}:n===`every`||n===`cron`?{deleteAfterRun:!1}:{}})})})}
${t.scheduleKind===`at`?xU(e,`scheduleAt`,{label:M(`cron.form.runAt`),required:!0,errorKey:`scheduleAt`,type:`datetime-local`}):z}
${t.scheduleKind===`every`?yU({label:M(`cron.form.every`),controlId:`cron-every-amount`,required:!0,error:e.fieldErrors.everyAmount,errorId:fU(`everyAmount`),control:R`
<div class="cron-inline-controls">
${bU(e,`everyAmount`,{label:M(`cron.form.every`),required:!0,errorKey:`everyAmount`,placeholder:M(`cron.form.everyAmountPlaceholder`)})}
${SU(e,`everyUnit`,{label:M(`cron.form.unit`),standalone:!0,options:[{value:`seconds`,label:M(`cron.form.seconds`)},{value:`minutes`,label:M(`cron.form.minutes`)},{value:`hours`,label:M(`cron.form.hours`)},{value:`days`,label:M(`cron.form.days`)}]})}
</div>
`}):z}
${t.scheduleKind===`cron`?R`
${xU(e,`cronExpr`,{label:M(`cron.form.expression`),required:!0,errorKey:`cronExpr`,mono:!0,placeholder:M(`cron.form.expressionPlaceholder`)})}
${xU(e,`cronTz`,{label:M(`cron.form.timezoneOptional`),help:M(`cron.form.timezoneHelp`),list:`cron-tz-suggestions`,placeholder:M(`cron.form.timezonePlaceholder`)})}
`:z}
${o?R` <div class="cron-schedule-summary">${L(`clock`)}<span>${o}</span></div> `:z}
`)}function GU(e,t){let n=dU(e);return Pu({title:M(`cron.detail.deliverySection`)},R`
${CU(e,`deliveryMode`,{label:M(`cron.form.deliveryModeLabel`),help:M(`cron.form.deliveryHelp`),value:t.selectedDeliveryMode,errorKey:`deliveryMode`,options:[...t.selectedDeliveryMode===``?[{value:``,label:M(`cron.form.selectDeliveryMode`),disabled:!0}]:[],...t.supportsAnnounce?[{value:`announce`,label:M(`cron.form.announceDefault`)}]:[],{value:`webhook`,label:M(`cron.form.webhookPost`)},{value:`none`,label:M(`cron.form.noneInternal`)}]})}
${t.selectedDeliveryMode===`announce`?R`
${CU(e,`deliveryChannel`,{label:M(`cron.form.channel`),help:M(`cron.form.channelHelp`),value:e.form.deliveryChannel||`last`,options:n,channel:!0})}
${xU(e,`deliveryTo`,{label:M(`cron.form.to`),help:M(`cron.form.toHelp`),list:`cron-delivery-to-suggestions`,placeholder:M(`cron.form.toPlaceholder`)})}
`:z}
${t.selectedDeliveryMode===`webhook`?xU(e,`deliveryTo`,{label:M(`cron.form.webhookUrl`),required:!0,help:M(`cron.form.webhookHelp`),errorKey:`deliveryTo`,list:`cron-delivery-to-suggestions`,placeholder:M(`cron.form.webhookPlaceholder`)}):z}
`)}function KU(e,t){let n=e.form.scheduleKind===`cron`,r=dU(e);return R`
<section class="settings-section">
<details class="cron-advanced">
<summary class="settings-section__heading cron-advanced__summary">
${M(`cron.form.advanced`)}
${e.form.triggerEnabled?R`<span class="cron-trigger-summary">
${L(`gitBranch`)} ${M(`cron.form.triggerConfigured`)}
</span>`:z}
</summary>
<p class="settings-section__desc">${M(`cron.form.advancedHelp`)}</p>
<div class="settings-group">
${qU(e)}
${xU(e,`description`,{label:M(`cron.form.description`),placeholder:M(`cron.form.descriptionPlaceholder`)})}
${t.mode===`create`?wU(e,`enabled`,{label:M(`cron.form.startEnabled`)}):z}
${CU(e,`wakeMode`,{label:M(`cron.form.wakeMode`),help:M(`cron.form.wakeModeHelp`),options:[{value:`now`,label:M(`cron.form.now`)},{value:`next-heartbeat`,label:M(`cron.form.nextHeartbeat`)}]})}
${t.isAgentTurn?xU(e,`timeoutSeconds`,{label:M(`cron.form.timeoutSeconds`),help:M(`cron.form.timeoutHelp`),errorKey:`timeoutSeconds`,placeholder:M(`cron.form.timeoutPlaceholder`)}):z}
${e.form.scheduleKind===`at`||e.form.scheduleKind===`on-exit`?wU(e,`deleteAfterRun`,{label:M(`cron.form.deleteAfterRun`),help:M(`cron.form.deleteAfterRunHelp`)}):z}
${wU(e,`clearAgent`,{label:M(`cron.form.clearAgentOverride`),help:M(`cron.form.clearAgentHelp`)})}
${xU(e,`sessionKey`,{label:M(`cron.form.sessionKey`),help:M(`cron.form.sessionKeyHelp`),placeholder:`agent:main:main`})}
${n?R`
${wU(e,`scheduleExact`,{label:M(`cron.form.exactTiming`),help:M(`cron.form.exactTimingHelp`)})}
${yU({label:M(`cron.form.staggerWindow`),controlId:`cron-stagger-amount`,error:e.fieldErrors.staggerAmount,errorId:fU(`staggerAmount`),control:R`
<div class="cron-inline-controls">
${bU(e,`staggerAmount`,{label:M(`cron.form.staggerWindow`),disabled:e.form.scheduleExact,errorKey:`staggerAmount`,placeholder:M(`cron.form.staggerPlaceholder`)})}
${SU(e,`staggerUnit`,{label:M(`cron.form.staggerUnit`),standalone:!0,disabled:e.form.scheduleExact,options:[{value:`seconds`,label:M(`cron.form.seconds`)},{value:`minutes`,label:M(`cron.form.minutes`)}]})}
</div>
`})}
`:z}
${t.isAgentTurn?R`
${xU(e,`deliveryAccountId`,{label:M(`cron.form.accountId`),help:M(`cron.form.accountIdHelp`),list:`cron-delivery-account-suggestions`,disabled:t.selectedDeliveryMode!==`announce`,placeholder:`default`})}
${wU(e,`payloadLightContext`,{label:M(`cron.form.lightContext`),help:M(`cron.form.lightContextHelp`)})}
${JU(e,r)}
`:z}
${t.selectedDeliveryMode===`none`?z:wU(e,`deliveryBestEffort`,{label:M(`cron.form.bestEffortDelivery`),help:M(`cron.form.bestEffortHelp`)})}
</div>
</details>
</section>
`}function qU(e){let t=e.form.payloadKind===`script`;return!t&&e.status===null?z:e.status?.triggersEnabled!==!0||t?hd({title:M(`cron.form.conditionTrigger`),description:t?M(`cron.errors.triggerScriptPayloadUnsupported`):e.form.triggerEnabled?M(`cron.form.triggerDisabledConfigured`):M(`cron.form.triggerDisabled`),control:e.form.triggerEnabled?R`<button
type="button"
class="btn btn--sm"
@click=${()=>e.onFormChange({triggerEnabled:!1})}
>
${M(`cron.form.clearTrigger`)}
</button>`:z}):R`
${wU(e,`triggerEnabled`,{label:M(`cron.form.conditionTrigger`),help:M(`cron.form.conditionTriggerHelp`)})}
${e.form.triggerEnabled?R`
${yU({label:M(`cron.form.triggerScript`),controlId:`cron-trigger-script`,required:!0,help:M(`cron.form.triggerScriptHelp`),error:e.fieldErrors.triggerScript,errorId:fU(`triggerScript`),stacked:!0,wide:!0,control:R`<textarea
id="cron-trigger-script"
class="settings-input cron-trigger-script mono"
rows="8"
spellcheck="false"
aria-invalid=${e.fieldErrors.triggerScript?`true`:`false`}
aria-describedby=${Pr(e.fieldErrors.triggerScript?fU(`triggerScript`):void 0)}
.value=${e.form.triggerScript}
@input=${t=>{let n=t.currentTarget;n instanceof HTMLTextAreaElement&&e.onFormChange({triggerScript:n.value})}}
></textarea>`})}
${wU(e,`triggerOnce`,{label:M(`cron.form.triggerOnce`),help:M(`cron.form.triggerOnceHelp`)})}
`:z}
`}function JU(e,t){return R`
${CU(e,`failureAlertMode`,{label:M(`cron.form.failureAlerts`),help:M(`cron.form.failureAlertsHelp`),options:[{value:`inherit`,label:M(`cron.form.failureAlertInherit`)},{value:`disabled`,label:M(`cron.form.failureAlertDisabled`)},{value:`custom`,label:M(`cron.form.failureAlertCustom`)}]})}
${e.form.failureAlertMode===`custom`?R`
${xU(e,`failureAlertAfter`,{label:M(`cron.form.failureAlertAfter`),help:M(`cron.form.failureAlertAfterHelp`),errorKey:`failureAlertAfter`,placeholder:M(`cron.form.failureAlertInherit`)})}
${xU(e,`failureAlertCooldownSeconds`,{label:M(`cron.form.failureAlertCooldown`),help:M(`cron.form.failureAlertCooldownHelp`),errorKey:`failureAlertCooldownSeconds`,placeholder:M(`cron.form.failureAlertInherit`)})}
${CU(e,`failureAlertChannel`,{label:M(`cron.form.failureAlertChannel`),value:e.form.failureAlertChannel||`last`,options:t,channel:!0})}
${xU(e,`failureAlertTo`,{label:M(`cron.form.failureAlertTo`),help:M(`cron.form.failureAlertToHelp`),list:`cron-failure-alert-to-suggestions`,placeholder:M(`cron.form.failureAlertToPlaceholder`)})}
${CU(e,`failureAlertDeliveryMode`,{label:M(`cron.form.failureAlertMode`),options:[{value:``,label:M(`cron.form.failureAlertInherit`)},{value:`announce`,label:M(`cron.form.failureAlertAnnounce`)},{value:`webhook`,label:M(`cron.form.failureAlertWebhook`)}]})}
${xU(e,`failureAlertAccountId`,{label:M(`cron.form.failureAlertAccountId`),placeholder:M(`cron.form.failureAlertAccountPlaceholder`)})}
`:z}
`}var YU,XU,ZU,QU;function $U(){return($U=e((()=>{ql(),B(),Dr(),Ur(),Qr(),Sn(),vd(),yd(),gd(),fd(),I(),Du(),Lu(),Cd(),rd(),Dn(),Ru(),Tu(),b(),os(),ic(),qe(),Dc(),LH(),iU(),cU(),QH(),uU(),Ys(),YU={name:`cron.form.fieldName`,scheduleAt:`cron.form.runAt`,everyAmount:`cron.form.every`,cronExpr:`cron.form.expression`,staggerAmount:`cron.form.staggerWindow`,triggerScript:`cron.form.triggerScript`,payloadText:`cron.form.assistantTaskPrompt`,payloadModel:`cron.form.model`,payloadThinking:`cron.form.thinking`,timeoutSeconds:`cron.form.timeoutSeconds`,deliveryMode:`cron.form.deliveryModeLabel`,deliveryTo:`cron.form.to`,failureAlertAfter:`cron.form.failureAlertAfter`,failureAlertCooldownSeconds:`cron.form.failureAlertCooldown`},XU=[{value:`all`,labelKey:`cron.tabs.all`},{value:`enabled`,labelKey:`cron.tabs.active`},{value:`disabled`,labelKey:`cron.tabs.paused`}],ZU={script:`javascript`,command:`bash`,heartbeat:``,systemEvent:``,agentTurn:``},QU={seconds:[`cron.form.summaryEverySecondOne`,`cron.form.summaryEverySeconds`],minutes:[`cron.form.summaryEveryMinuteOne`,`cron.form.summaryEveryMinutes`],hours:[`cron.form.summaryEveryHourOne`,`cron.form.summaryEveryHours`],days:[`cron.form.summaryEveryDayOne`,`cron.form.summaryEveryDays`]}})))()}var eW=t({cronPageComponent:()=>nW}),tW,nW;function rW(){return(rW=e((()=>{Pl(),B(),qr(),Sr(),pr(),Un(),Tr(),xd(),Md(),Tu(),td(),b(),os(),me(),Oe(),Po(),Ec(),N(),sn(),La(),ny(),Ie(),i(),oH(),cH(),mH(),vH(),kH(),$U(),Ys(),tW=class extends g{constructor(){super(),this.routeSearch=``,this.cron=ol(),this.agentsList=null,this.cronModelSuggestions=[],this.modelSuggestionsError=null,this.listTab=`tasks`,this.detailTab=`settings`,this.heartbeatScratch=``,this.runTranscript=new OH(this,()=>{let e=this.gateway.capture(),t=this.cron;return e?{client:e.client,epoch:this.gateway.epoch,isCurrent:()=>this.gateway.isCurrent(e)&&this.cron===t}:null}),this.pendingRouteData=null,this.routeJobRequested=!1,this.highlightedRunId=null,this.pendingRunScroll=!1,this.modelSuggestionsRequest=null,this.deliveryDirectory=new aH({currentCronState:()=>this.cron,canManage:()=>this.canManageCron,captureConnection:()=>this.gateway.capture(),isCurrentConnection:e=>this.gateway.isCurrent(e),notify:e=>this.requestCronUpdate(e)}),this.heartbeatScratchRequest=0,this.pageHidden=document.visibilityState===`hidden`,this.gateway=new ty(this,{getGateway:()=>this.context?.gateway,invalidateRequests:e=>this.resetGatewayState(e.snapshot),onSnapshot:e=>{e.initial?this.resetGatewayState(e.snapshot):Hn(e.snapshot).canAdmin||(this.clearHeartbeatScratch(),this.deliveryDirectory.clear())},ensureInitialData:()=>this.ensureInitialData(),onPageActivation:()=>{let e=document.visibilityState===`hidden`,t=this.pageHidden&&!e;this.pageHidden=e,t&&this.ensureInitialData(!0)}}),this.observeAgentScope=Ao((e,t)=>{if(!t){this.cron.cronAgentId=e,this.refreshCron({tableFilters:!0}),this.loadModelSuggestions(this.cron),(this.cron.cronEditingJob||this.cron.cronCreateOpen)&&!this.cron.cronForm.agentId.trim()&&this.deliveryDirectory.load(),this.requestUpdate();return}this.pendingRouteData=null,this.resetGatewayState(this.context.gateway.snapshot),this.cron.cronAgentId=e,this.listTab=`tasks`,this.detailTab=`settings`,this.ensureInitialData(),this.requestUpdate()}),this.subscriptions=new Ot(this).watchStore(()=>this.context?.agents,()=>this.agentsList=this.context.agents.state.agentsList).watchStore(()=>this.context?.channels).watchStore(()=>this.context?.runtimeConfig).effect(()=>this.context?.agentSelection,e=>this.observeAgentScope(e)).effect(()=>this.context?.gateway,e=>e.subscribeEvents(t=>{this.gateway.gateway===e&&this.context.gateway===e&&this.gateway.connected&&this.gateway.client&&(t.event===`cron`?this.refreshCron({tableFilters:!0,coalesce:!0}):jt(t)&&this.loadModelSuggestions(this.cron))})),this.lastPanelKey=null,new sH(this)}get canManageCron(){return Hn(this.context.gateway.snapshot).canAdmin}disconnectedCallback(){this.subscriptions.clear(),super.disconnectedCallback()}resetGatewayState(e){this.runTranscript.close(),this.clearHeartbeatScratch(),wa(this.cron);let t=e?.phase===`connected`,n=ol({client:e?.client??null,connected:t});n.canRefresh=()=>this.canRefreshCron(n),this.cron=n,n.cronSessionFilter=hH(this.routeSearch).session,this.routeJobRequested=!1,this.pageHidden=document.visibilityState===`hidden`,this.cron.cronAgentId=this.context.agentSelection.state.scopeId,this.agentsList=t?this.context.agents.state.agentsList:null,this.cronModelSuggestions=[],this.deliveryDirectory.retireEditor(),this.modelSuggestionsError=null,this.modelSuggestionsRequest=null}canRefreshCron(e=this.cron){return this.isConnected&&this.cron===e&&document.visibilityState!==`hidden`}ensureInitialData(e=!1){this.canRefreshCron()&&this.cron.connected&&this.cron.client&&(!this.agentsList&&!this.context.agents.state.agentsLoading&&this.context.agents.ensureList(),e||!this.cron.cronStatus&&!this.cron.cronLoading?this.refreshCron({tableFilters:!0,coalesce:!0}):!this.cron.cronRuns.length&&!this.cron.cronRunsLoadingMore&&this.loadRuns(),this.modelSuggestionsRequest?.state!==this.cron&&this.loadModelSuggestions(this.cron))}requestCronUpdate(e=this.cron){this.cron===e&&this.requestUpdate()}willUpdate(e){if(e.has(`routeSearch`)){this.runTranscript.close(),this.cron.cronError=null;let e=hH(this.routeSearch);JSON.stringify(this.cron.cronSessionFilter)!==JSON.stringify(e.session)&&(this.resetGatewayState(this.context.gateway.snapshot),this.ensureInitialData()),this.listTab=`tasks`,this.detailTab=`settings`,this.pendingRouteData=e.jobId||e.session?e:null,this.routeJobRequested=!1,this.highlightedRunId=null,this.pendingRunScroll=!1}let t=this.cron.cronEditingJob?.id??null,n=`${t?`job`:this.cron.cronCreateOpen?`create`:`overview`}:${t??``}`;if(n!==this.lastPanelKey){this.lastPanelKey=n,this.runTranscript.close(),this.detailTab=t&&this.highlightedRunId?`history`:`settings`;let e=this.closest(`.content`);e instanceof HTMLElement&&typeof e.scrollTo==`function`&&e.scrollTo({top:0})}}updated(){let e=this.pendingRouteData,t=this.cron.client;if(e?.session&&this.cron.cronJobsSnapshotRevision&&!this.cron.cronLoading){this.pendingRouteData=null;let[e]=this.cron.cronJobs;this.cron.cronJobsTotal===1&&e&&this.selectJob(e)}if(e?.jobId&&t&&this.cron.connected&&!this.routeJobRequested&&(this.routeJobRequested=!0,this.runCronTask(async n=>{let r=()=>this.isConnected&&this.cron===n&&this.pendingRouteData===e;try{let n=await t.request(`cron.get`,{id:e.jobId});r()&&this.selectJob(n,e.runId)}catch(e){r()&&(this.pendingRouteData=null,n.cronError=j(e))}})),this.pendingRunScroll){let e=this.querySelector(`.cron-run-entry--highlighted`);e&&(e.scrollIntoView?.({block:`nearest`}),this.pendingRunScroll=!1)}}async refreshCron(e){let t=this.cron;this.canRefreshCron(t)&&t.connected&&t.client&&(this.loadRuns(e.coalesce),this.context.channels.refresh(!1),await Promise.all([this.runCronTask(t=>ko(t,e)),this.runCronTask(t=>Fc(t,{tableFilters:e.tableFilters}))]))}loadRuns(e=!1){return this.runCronTask(t=>zs(t,{coalesce:e}))}async loadModelSuggestions(e){let t=e.client,n=this.context.agentSelection.state.selectedId;if(this.modelSuggestionsRequest?.agentId!==n&&(this.modelSuggestionsRequest=null,this.cronModelSuggestions=[],this.modelSuggestionsError=null),!t||!e.connected||!n)return;let r={state:e,agentId:n};this.modelSuggestionsRequest=r;let i=()=>this.cron===e&&this.modelSuggestionsRequest===r&&this.context.agentSelection.state.selectedId===n;try{let e=await _c(t,{agentId:n});i()&&(this.cronModelSuggestions=e.models.filter(e=>e.manualSelectionAllowed!==!1).map(e=>Qe(e.id,e.provider)),this.modelSuggestionsError=Ma(e))}catch(e){i()&&(this.modelSuggestionsError=j(e))}}async runCronTask(e){let t=this.cron;try{let n=e(t);return this.requestCronUpdate(t),await n}finally{this.requestCronUpdate(t)}}runCronAdminTask(e){this.canManageCron&&this.runCronTask(e)}patchForm(e){if(!this.canManageCron)return;let t=this.cron.cronForm,n=tH(t,e),r=Io({...this.cron.cronForm,...n},n);this.cron.cronForm=r,this.cron.cronFieldErrors=qo(this.cron.cronForm),nH(t,r)&&this.deliveryDirectory.load(),this.requestCronUpdate()}selectJob(e,t=null){this.clearHeartbeatScratch(),this.pendingRouteData=null,this.highlightedRunId=t,this.pendingRunScroll=!!t,t&&(this.detailTab=`history`),this.cron.cronCreateOpen=!1,Fa(this.cron,e),this.deliveryDirectory.openEditor(),this.requestCronUpdate(),e.payload?.kind===`heartbeat`&&this.loadHeartbeatScratch(this.cron,e.id,this.heartbeatScratchRequest),this.runCronTask(async t=>{pc(t,{cronRunsScope:`job`}),t.cronRunsJobId=e.id,await zs(t)})}clearHeartbeatScratch(){this.heartbeatScratchRequest+=1,this.heartbeatScratch=``}async loadHeartbeatScratch(e,t,n){let r=e.client;if(!this.canManageCron||!r||!e.connected)return;let i=this.gateway.capture();if(!i)return;let a=()=>this.cron===e&&this.heartbeatScratchRequest===n&&this.gateway.isCurrent(i)&&this.canManageCron&&e.cronEditingJob?.id===t&&e.cronForm.payloadKind===`heartbeat`;try{let e=await r.request(`cron.scratch.get`,{id:t});a()&&(this.heartbeatScratch=e.scratch?.content??``)}catch(t){a()&&(e.cronError=j(t),this.requestCronUpdate(e))}}openCreate(e){if(this.canManageCron){if(this.clearHeartbeatScratch(),this.pendingRouteData=null,this.deliveryDirectory.retireEditor(),ho(this.cron,this.context.agentSelection.state.selectedId),this.cron.cronCreateOpen=!0,e){this.patchForm(e);return}this.requestCronUpdate()}}cloneJob(e){this.canManageCron&&(this.clearHeartbeatScratch(),this.pendingRouteData=null,bc(this.cron,e),this.cron.cronCreateOpen=!0,this.deliveryDirectory.openEditor(),this.requestCronUpdate())}async removeJob(e){let t=this.context,n=this.cron,r=this.gateway.capture(),i=this.canManageCron,a=n.cronEditingJob?.id===e.id?n.cronEditingJob:n.cronJobs.find(t=>t.id===e.id&&t.updatedAtMs===e.updatedAtMs);if(!r||!i||!a)return;let o=a.id,s=a.updatedAtMs,c=a.name,l=await vu({title:M(`cron.actions.removeConfirmTitle`,{name:c}),message:M(`cron.actions.removeConfirmMessage`),confirmLabel:M(`cron.actions.remove`),danger:!0}),u=n.cronEditingJob?.id===o?n.cronEditingJob:n.cronJobs.find(e=>e.id===o);if(!l||this.context!==t||this.cron!==n||!this.gateway.isCurrent(r)||!this.canManageCron||!u||u.updatedAtMs!==s)return;let d=this.deliveryDirectory.generation;await this.runCronTask(async e=>{let t=e.cronEditingJob?.id===o;await va(e,u),t&&e.cronEditingJob?.id!==o&&this.deliveryDirectory.retireExitedEditor(e,r,d),e.cronRunsScope===`job`&&e.cronRunsJobId===null&&(pc(e,{cronRunsScope:`all`}),await zs(e))})}closePanel(){this.clearHeartbeatScratch(),this.pendingRouteData=null,this.deliveryDirectory.retireEditor(),ho(this.cron,this.context.agentSelection.state.selectedId),this.cron.cronCreateOpen=!1,this.requestCronUpdate(),this.runCronTask(async e=>{pc(e,{cronRunsScope:`all`}),e.cronRunsJobId=null,await zs(e)})}submitForm(e={}){let t=this.gateway.capture(),n=this.deliveryDirectory.generation;this.runCronAdminTask(async r=>{let i=!!r.cronEditingJob,a=await Va(r);if(!a.saved){this.deliveryDirectory.reconcileRoute(r,t,n);return}let o=i||!!r.cronEditingJob;this.deliveryDirectory.afterSave(r,t,n,o),!o&&(e.runNow&&a.jobId&&await za(r,a.jobId,`force`),r.cronCreateOpen=!1,r.cronRunsScope===`job`&&(pc(r,{cronRunsScope:`all`}),r.cronRunsJobId=null,await zs(r)))})}render(){let e=this.context.channels.state,t=fH({channels:e,runtimeConfig:this.context.runtimeConfig.state,cron:this.cron,agentsList:this.agentsList,modelSuggestions:this.cronModelSuggestions,conversationTargets:dH(this.deliveryDirectory.conversations,this.cron.cronForm.deliveryAccountId)}),n=this.canManageCron;return R`
${Eu({title:Bn(`cron`),subtitle:this.cron.cronSessionFilter?M(`cron.list.sessionFilter`):Fn(`cron`),actions:this.cron.cronSessionFilter?R`<a
class="btn"
href=${Vn(`cron`,this.context.basePath)}
@click=${e=>{S(e)&&(e.preventDefault(),this.context.navigate(`cron`,{search:``}))}}
>${M(`cron.list.showAll`)}</a
>`:cd({agents:this.agentsList?.agents??[],selection:this.context.agentSelection})})}
${this.runTranscript.render()}
${Sd(TU({loading:this.cron.cronLoading,hasLoaded:this.cron.cronJobsSnapshotRevision!==null,listError:this.cron.cronJobsError,canManage:n,status:this.cron.cronStatus,jobs:this.cron.cronJobs,jobsLoadingMore:this.cron.cronJobsLoadingMore,jobsTotal:this.cron.cronJobsTotal,jobsHasMore:this.cron.cronJobsHasMore,jobsQuery:this.cron.cronJobsQuery,jobsEnabledFilter:this.cron.cronJobsEnabledFilter,jobsScheduleKindFilter:this.cron.cronJobsScheduleKindFilter,jobsLastStatusFilter:this.cron.cronJobsLastStatusFilter,jobsTriggerFilter:this.cron.cronJobsTriggerFilter,jobsSortBy:this.cron.cronJobsSortBy,jobsSortDir:this.cron.cronJobsSortDir,editingJob:this.cron.cronEditingJob,createOpen:this.cron.cronCreateOpen,listTab:this.listTab,detailTab:this.detailTab,error:this.cron.cronError??this.cron.cronRunsError??this.deliveryDirectory.error??this.modelSuggestionsError,busy:this.cron.cronBusy,form:this.cron.cronForm,heartbeatScratch:n?this.heartbeatScratch:``,channels:e.channelsSnapshot?.channelMeta?.length?e.channelsSnapshot.channelMeta.map(e=>e.id):e.channelsSnapshot?.channelOrder??[],channelLabels:e.channelsSnapshot?.channelLabels??{},channelMeta:e.channelsSnapshot?.channelMeta??[],runs:this.cron.cronRuns,runsState:lc(this.cron),highlightedRunId:this.highlightedRunId,runsHasMore:this.cron.cronRunsHasMore,runsLoadingMore:this.cron.cronRunsLoadingMore,runsStatuses:this.cron.cronRunsStatuses,runsDeliveryStatuses:this.cron.cronRunsDeliveryStatuses,runsQuery:this.cron.cronRunsQuery,runsSortDir:this.cron.cronRunsSortDir,fieldErrors:this.cron.cronFieldErrors,canSubmit:!Qi(this.cron.cronFieldErrors),agentSuggestions:t.agentSuggestions,modelSuggestions:t.modelSuggestions,thinkingSuggestions:pH,timezoneSuggestions:t.timezoneSuggestions,deliveryToSuggestions:t.deliveryToSuggestions,failureAlertToSuggestions:t.failureAlertToSuggestions,accountSuggestions:t.accountTargets,onListTabChange:e=>{this.listTab=e},onDetailTabChange:e=>{this.detailTab=e},onFormChange:e=>this.patchForm(e),onRefresh:()=>void this.refreshCron({tableFilters:!0}),onSubmit:()=>this.submitForm(),onSubmitRunNow:()=>this.submitForm({runNow:!0}),onSelectJob:e=>this.selectJob(e),onOpenCreate:e=>this.openCreate(e),onClosePanel:()=>this.closePanel(),onClone:e=>this.cloneJob(e),onToggle:(e,t)=>this.runCronAdminTask(n=>Uo(n,e,t)),onRun:(e,t)=>this.runCronAdminTask(n=>za(n,e.id,t??`force`)),onRemove:e=>void this.removeJob(e),onLoadMoreJobs:()=>void this.runCronTask(e=>Fc(e,{append:!0,tableFilters:!0})),onJobsFiltersChange:e=>void this.runCronTask(async t=>{zo(t,e),await Fc(t,{append:!1,tableFilters:!0})}),onJobsFiltersReset:()=>void this.runCronTask(async e=>{zo(e,{cronJobsScheduleKindFilter:`all`,cronJobsLastStatusFilter:`all`,cronJobsTriggerFilter:`all`,cronJobsSortBy:`nextRunAtMs`,cronJobsSortDir:`asc`}),await Fc(e,{append:!1,tableFilters:!0})}),onLoadMoreRuns:()=>void this.runCronTask(e=>rs(e)),onRunsFiltersChange:e=>void this.runCronTask(async t=>{pc(t,e),await zs(t)}),onViewRunTranscript:(e,t)=>void this.runTranscript.open(e,t)}))}
`}},q([Dl({context:Cr,subscribe:!0})],tW.prototype,`context`,void 0),q([H({attribute:!1})],tW.prototype,`routeSearch`,void 0),q([V()],tW.prototype,`cron`,void 0),q([V()],tW.prototype,`agentsList`,void 0),q([V()],tW.prototype,`cronModelSuggestions`,void 0),q([V()],tW.prototype,`modelSuggestionsError`,void 0),q([V()],tW.prototype,`listTab`,void 0),q([V()],tW.prototype,`detailTab`,void 0),q([V()],tW.prototype,`heartbeatScratch`,void 0),nW={header:!0,render:e=>R`<openclaw-cron-page
.routeSearch=${typeof e==`string`?e:``}
></openclaw-cron-page>`},customElements.get(`openclaw-cron-page`)||customElements.define(`openclaw-cron-page`,tW)})))()}export{uz as $,UE as $a,Vv as $c,X as $d,VO as $i,Z as $l,xN as $n,DS as $o,bj as $r,lb as $s,nI as $t,gh as $u,TB as A,PD as Aa,sy as Ac,Km as Ad,Hf as Af,pk as Ai,P_ as Al,_P as An,mT as Ao,aM as Ar,rx as As,lL as At,tg as Au,Mz as B,yD as Ba,iy as Bc,xm as Bd,xf as Bf,ek as Bi,C_ as Bl,eP as Bn,_w as Bo,Nj as Br,kb as Bs,HI as Bt,Wh as Bu,LB as C,UD as Ca,Ey as Cc,eh as Cd,np as Cf,Fk as Ci,tv as Cl,LP as Cn,aE as Co,bM as Cr,vx as Cs,kL as Ct,Dg as Cu,PB as D,HD as Da,wy as Dc,Qm as Dd,Gf as Df,wk as Di,Q as Dl,kP as Dn,AT as Do,fM as Dr,tx as Ds,bL as Dt,Yh as Du,MB as E,VD as Ea,Cy as Ec,Hm as Ed,Jf as Ef,kk as Ei,sv as El,PP as En,JT as Eo,cM as Er,xx as Es,AL as Et,gg as Eu,Yz as F,DD as Fa,cy as Fc,Em as Fd,Tf as Ff,sk as Fi,z_ as Fl,SP as Fn,Rw as Fo,Zj as Fr,Wb as Fs,JI as Ft,ng as Fu,Oz as G,oD as Ga,ey as Gc,hm as Gd,Qd as Gf,YO as Gi,p_ as Gl,JN as Gn,rw as Go,Aj as Gr,wb as Gs,TI as Gt,Bh as Gu,kz as H,wD as Ha,ty as Hc,_m as Hd,ff as Hf,XO as Hi,T_ as Hl,ZN as Hn,gw as Ho,jj as Hr,Eb as Hs,OI as Ht,Lh as Hu,Wz as I,hD as Ia,ly as Ic,Tm as Id,Mf as If,ik as Ii,O_ as Il,nP as In,zw as Io,Xj as Ir,Pb as Is,ZI as It,rg as Iu,Sz as J,HE as Ja,Zv as Jc,om as Jd,cf as Jf,UO as Ji,o_ as Jl,RN as Jn,DC as Jo,Tj as Jr,mb as Js,DI as Jt,Nh as Ju,Ez as K,nD as Ka,Xv as Kc,sm as Kd,pf as Kf,WO as Ki,f_ as Kl,BN as Kn,nw as Ko,Oj as Kr,hb as Ks,_I as Kt,Mh as Ku,Fz as L,mD as La,my as Lc,Cm as Ld,Pf as Lf,rk as Li,E_ as Ll,rP as Ln,Ow as Lo,Fj as Lr,Lb as Ls,YI as Lt,eg as Lu,vB as M,MD as Ma,gy as Mc,Am as Md,Nf as Mf,lk as Mi,L_ as Ml,wP as Mn,fT as Mo,Hj as Mr,mx as Ms,tL as Mt,Kh as Mu,_B as N,OD as Na,Sy as Nc,jm as Nd,Af as Nf,ok as Ni,$_ as Nl,lP as Nn,Lw as No,Uj as Nr,Yb as Ns,QI as Nt,Qh as Nu,FB as O,RD as Oa,vy as Oc,nh as Od,Kf as Of,Sk as Oi,Y_ as Ol,NP as On,PT as Oo,dM as Or,_x as Os,CL as Ot,Jh as Ou,hB as P,dD as Pa,xy as Pc,bm as Pd,J as Pf,ak as Pi,M_ as Pl,uP as Pn,Vw as Po,Yj as Pr,Qb as Ps,$I as Pt,qh as Pu,lz as Q,eD as Qa,Wv as Qc,dm as Qd,LO as Qi,s_ as Ql,jN as Qn,AS as Qo,yj as Qr,cb as Qs,QF as Qt,Ah as Qu,Nz as R,fD as Ra,oy as Rc,Dm as Rd,Cf as Rf,tk as Ri,k_ as Rl,XN as Rn,Tw as Ro,Pj as Rr,Ib as Rs,qI as Rt,$h as Ru,HB as S,QD as Sa,Oy as Sc,$m as Sd,up as Sf,Mk as Si,uv as Sl,BP as Sn,oE as So,yM as Sr,wx as Ss,_L as St,dg as Su,IB as T,JD as Ta,Ty as Tc,Wm as Td,Wf as Tf,Ck as Ti,nv as Tl,FP as Tn,rE as To,vM as Tr,bx as Ts,TL as Tt,xg as Tu,Az as U,aD as Ua,ny as Uc,mm as Ud,_f as Uf,JO as Ui,i_ as Ul,tP as Un,mw as Uo,Bj as Ur,Cb as Us,kI as Ut,Fh as Uu,jz as V,CD as Va,ry as Vc,vm as Vd,bf as Vf,$O as Vi,w_ as Vl,sP as Vn,vw as Vo,zj as Vr,Ab as Vs,WI as Vt,zh as Vu,Dz as W,uD as Wa,$v as Wc,gm as Wd,of as Wf,QO as Wi,b_ as Wl,$N as Wn,uw as Wo,Qj as Wr,Tb as Ws,EI as Wt,Ih as Wu,dz as X,WE as Xa,Yv as Xc,pm as Xd,uf as Xf,HO as Xi,h_ as Xl,PN as Xn,bC as Xo,Cj as Xr,fb as Xs,SI as Xt,jh as Xu,_z as Y,LE as Ya,Kv as Yc,nm as Yd,lf as Yf,GO as Yi,m_ as Yl,IN as Yn,xC as Yo,Ej as Yr,db as Ys,pI as Yt,Rh as Yu,fz as Z,KE as Za,Rv as Zc,Qp as Zd,RO as Zi,y_ as Zl,FN as Zn,MS as Zo,wj as Zr,ub as Zs,fI as Zt,Sh as Zu,KB as _,TO as _a,Ry as _c,ih as _d,xp as _f,Rk as _i,lv as _l,GP as _n,CE as _o,WM as _r,Px as _s,ZL as _t,pg as _u,XV as a,AO as aa,$y as ac,dh as ad,Vp as af,sj as ai,Bv as al,mF as an,NE as ao,CN as ar,vS as as,BR as at,Qg as au,UB as b,iO as ba,Fy as bc,Nm as bd,tp as bf,Yk as bi,ev as bl,qP as bn,_E as bo,OM as br,zx as bs,VL as bt,yg as bu,IV as c,rO as ca,Zy as cc,Mm as cd,Bp as cf,XA as ci,Iv as cl,dF as cn,AE as co,sN as cr,uS as cs,OR as ct,Hg as cu,NV as d,oO as da,Wy as dc,Lm as dd,Rp as df,hA as di,Ov as dl,sF as dn,dE as do,QM as dr,aS as ds,TR as dt,Fg as du,BO as ea,sb as ec,xh as ed,um as ef,_j as ei,zv as el,sI as en,YE as eo,_N as er,ES as es,tz as et,d_ as eu,jV as f,OO as fa,Uy as fc,Pm as fd,kp as ff,mA as fi,kv as fl,aF as fn,lE as fo,LM as fr,hS as fs,AR as ft,Kg as fu,QB as g,CO as ga,zy as gc,sh as gd,mp as gf,Vk as gi,$ as gl,eF as gn,xE as go,YM as gr,Xx as gs,XL as gt,hg as gu,tV as h,wO as ha,By as hc,Zm as hd,gp as hf,rA as hi,dv as hl,iF as hn,OE as ho,RM as hr,Tx as hs,BL as ht,vg as hu,$V as i,NO as ia,nb as ic,lh as id,Y as if,pj as ii,Uv as il,eI as in,GE as io,yN as ir,xS as is,WR as it,qg as iu,xB as j,ND as ja,py as jc,km as jd,jf,hk as ji,R_ as jl,cP as jn,pT as jo,Gj as jr,ex as js,eL as jt,sg as ju,jB as k,zD as ka,hy as kc,Rm as kd,Uf as kf,bk as ki,F_ as kl,TP as kn,wT as ko,mM as kr,nx as ks,cL as kt,Xh as ku,FV as l,pO as la,Gy as lc,Xm as ld,Mp as lf,vA as li,jv as ll,uF as ln,fE as lo,tN as lr,lS as ls,kR as lt,Pg as lu,nV as m,cO as ma,Vy as mc,zm as md,jp as mf,dA as mi,Dv as ml,rF as mn,bE as mo,zM as mr,rS as ms,MR as mt,Eg as mu,rW as n,IO as na,ob as nc,_h as nd,$p as nf,cj as ni,Hv as nl,$F as nn,RE as no,NN as nr,TS as ns,GR as nt,c_ as nu,RV as o,kO as oa,Jy as oc,mh as od,Zp as of,ZA as oi,Fv as ol,pF as on,jE as oo,gN as or,dS as os,ZR as ot,Zg as ou,iV as p,nO as pa,Hy as pc,Bm as pd,Ap as pf,tA as pi,_v as pl,cF as pn,yE as po,IM as pr,iS as ps,jR as pt,Wg as pu,Tz as q,tD as qa,Qv as qc,fm as qd,df as qf,qO as qi,S_ as ql,zN as qn,NC as qo,Dj as qr,bb as qs,gI as qt,Ph as qu,eH as r,jO as ra,Qy as rc,ph as rd,am as rf,hj as ri,Lv as rl,BF as rn,JE as ro,kN as rr,CS as rs,XR as rt,r_ as ru,LV as s,EO as sa,Yy as sc,ch as sd,Fp as sf,GA as si,Pv as sl,fF as sn,kE as so,lN as sr,fS as ss,HR as st,Xg as su,eW as t,PO as ta,rb as tc,uh as td,lm as tf,gj as ti,Gv as tl,ZF as tn,qE as to,vN as tr,SS as ts,qR as tt,a_ as tu,PV as u,sO as ua,qy as uc,Im as ud,Lp as uf,DA as ui,Av as ul,lF as un,pE as uo,ZM as ur,cS as us,zR as ut,Ng as uu,GB as v,bO as va,My as vc,rh as vd,ip as vf,$k as vi,rv as vl,JP as vn,uE as vo,UM as vr,nS as vs,nR as vt,jg as vu,BB as w,KD as wa,Dy as wc,Gm as wd,op as wf,Ak as wi,cv as wl,RP as wn,nE as wo,_M as wr,yx as ws,ML as wt,Cg as wu,RB as x,eO as xa,ky as xc,qm as xd,ap as xf,Nk as xi,av as xl,zP as xn,sE as xo,DM as xr,Yx as xs,WL as xt,bg as xu,WB as y,fO as ya,Ay as yc,Um as yd,rp as yf,Ik as yi,iv as yl,KP as yn,vE as yo,MM as yr,Jx as ys,tR as yt,_g as yu,Pz as z,TD as za,ay as zc,Sm as zd,Sf as zf,nk as zi,D_ as zl,QN as zn,bw as zo,Mj as zr,Db as zs,UI as zt,Gh as zu};