UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

1,972 lines 461 kB
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./composer-draft-store.runtime-BBDzpAf3.js","./control-ui-boot-shared-DfZ39Yj9.js","./rolldown-runtime-DkW27tQK.js","./control-ui-foundation-Cydpkyqa.js","./control-ui-core-Rwzhj6nO.js","./lit-runtime-CV_MH99K.js","./control-ui-core-YphAl4aM.js","./control-ui-core-vvcQQV2m.js","./gateway-runtime-Bqqcp9-I.js","./control-ui-core-ClxHIvNM.css","./control-ui-boot-shared-BYq7Cchl.js","./control-ui-boot-shared-Deak_Sjt.js","./control-ui-boot-shared-gfE6fZcA.js","./markdown-runtime-Bn6OdBVq.js","./control-ui-boot-shared-3juXI2I2.js","./control-ui-boot-shared-BVNXvWX-.js"])))=>i.map(i=>d[i]);
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{$i as t,Bi as n,Bn as r,Cn as i,En as a,Fn as o,Ii as s,Kn as c,On as l,Qi as u,Un as d,Vi as f,Vn as p,Wi as m,Xi as h,_i as g,cn as _,ea as v,en as y,gn as b,hn as x,ii as S,in as C,jn as w,on as ee,ri as te,rn as ne,ta as T,tn as re,tt as ie,wr as E,zn as ae}from"./control-ui-foundation-Cydpkyqa.js";import{$i as oe,As as D,At as se,Bi as ce,Bn as le,Cs as ue,Da as de,Dc as fe,Do as pe,Dt as me,Ec as he,Eo as O,Et as ge,Fa as _e,Ft as ve,Ga as ye,Ha as be,Hs as k,Is as xe,Ki as Se,Ks as Ce,Ls as we,Ms as Te,Mt as Ee,Ns as De,Nt as Oe,O as ke,Oo as A,Ot as Ae,Ps as je,Q as Me,Qi as Ne,Ra as Pe,Rs as Fe,Sc as Ie,Ss as Le,Ui as Re,Us as ze,Va as Be,Vi as Ve,Vs as He,Wa as Ue,Wi as We,Ws as Ge,X as Ke,Xn as qe,Xs as Je,Y as j,Ys as Ye,Zi as Xe,Zs as Ze,_a as Qe,ac as $e,as as et,ca as tt,cc as nt,cn as rt,cr as it,ct as at,d as ot,dc as st,dt as ct,ea as lt,f as ut,fa as dt,fc as ft,ft as pt,ga as mt,h as ht,ic as gt,j as _t,jt as vt,k as yt,ks as bt,kt as xt,l as St,lr as Ct,m as wt,nc as Tt,oa as Et,os as Dt,pt as Ot,qn as kt,qs as M,sa as At,sr as jt,st as Mt,ta as Nt,u as Pt,ua as Ft,ut as It,vr as Lt,w as Rt,wa as zt,wc as Bt,wr as Vt,ws as N,xa as Ht,ya as Ut,yc as Wt,za as Gt,zn as Kt}from"./control-ui-core-Rwzhj6nO.js";import{$ as qt,C as P,D as Jt,G as Yt,K as F,L as Xt,Q as Zt,T as Qt,U as $t,W as en,X as I,Y as tn,_ as nn,at as rn,b as an,h as on,k as sn,m as cn,q as L,r as ln,st as R,t as un,v as dn,w as fn,z as pn}from"./lit-runtime-CV_MH99K.js";import{Cn as mn,F as hn,Fn as gn,J as _n,L as vn,Pn as yn,Tn as bn,Yn as xn,Z as Sn,_n as Cn,cn as wn,nr as Tn,on as En,sn as Dn,tr as On,un as kn}from"./control-ui-core-YphAl4aM.js";import{Bt as An,Ft as jn,Gt as z,Ht as Mn,Kt as Nn,P as Pn,Q as Fn,Qt as In,V as Ln,Wt as B,Yt as V,Z as Rn,en as H,qt as zn,z as Bn}from"./control-ui-core-vvcQQV2m.js";import{At as Vn,Br as Hn,Cn as Un,Gr as U,It as Wn,Kr as Gn,L as Kn,Mt as qn,R as Jn,Rr as Yn,Tn as Xn,Ur as Zn,Vr as Qn,Wr as $n,c as er,kt as tr,nn as nr,wn as rr}from"./control-ui-boot-shared-BYq7Cchl.js";import{a as ir,r as ar}from"./gateway-runtime-Bqqcp9-I.js";import{$ as or,Ao as sr,At as cr,Bn as lr,Bt as ur,Ca as dr,Co as fr,Cr as pr,Eo as mr,Et as hr,F as gr,Fn as _r,Fo as vr,G as yr,Ga as br,Gn as xr,Gt as Sr,Hn as Cr,Ht as wr,Io as Tr,It as Er,Ji as Dr,Jn as Or,K as kr,Ka as Ar,Ki as jr,Kn as Mr,Kt as Nr,Ln as Pr,Lo as Fr,Lt as Ir,Mo as Lr,Mt as Rr,No as zr,Oo as Br,Ot as Vr,P as Hr,Pn as Ur,Po as Wr,Pt as Gr,Q as Kr,Qa as qr,R as Jr,Ro as Yr,Rt as Xr,Sa as Zr,So as Qr,Sr as $r,Ta as ei,To as ti,Tt as ni,U as ri,Ur as ii,Ut as ai,V as oi,Vn as si,W as ci,Wn as li,Wt as ui,X as di,Xa as fi,Xi as pi,Xt as mi,Y as hi,Yi as gi,Yn as _i,Z as vi,_o as yi,an as bi,at as xi,ba as Si,bo as Ci,bt as wi,cn as Ti,co as Ei,da as Di,dn as Oi,do as ki,dt as Ai,eo as ji,et as Mi,fn as Ni,fo as Pi,go as Fi,ho as Ii,in as Li,io as Ri,it as zi,jt as Bi,ko as Vi,ln as Hi,lo as W,lt as Ui,mo as Wi,no as Gi,nt as Ki,oa as qi,on as Ji,oo as Yi,ot as Xi,po as Zi,q as Qi,qi as $i,ro as ea,rt as ta,sa as na,sn as ra,so as ia,st as aa,to as oa,tt as sa,ua as ca,un as la,uo as ua,ut as da,vo as fa,wo as pa,wt as ma,xa as ha,xo as ga,xr as _a,yo as va,z as ya,zn as ba,zo as xa,zt as Sa}from"./control-ui-boot-shared-DfZ39Yj9.js";import{A as Ca,F as wa,M as Ta,N as Ea,P as Da,_ as Oa,c as ka,j as Aa,o as ja,s as Ma,u as Na,v as Pa,y as Fa}from"./control-ui-boot-shared-3juXI2I2.js";import{f as Ia,m as La,p as Ra}from"./control-ui-boot-shared-Deak_Sjt.js";import{r as za,t as Ba}from"./control-ui-boot-shared-BVNXvWX-.js";function Va(e,t,n){if(!c(e))return null;let r=e;return Object.keys(r).some(e=>!ao.has(e))||r.key!==t||r.agentId!==n||r.message!==``||r.worktree!==!0||r.incognito!==void 0&&r.incognito!==!0||r.visibility!==void 0&&r.visibility!==`draft`||r.fastMode!==void 0&&!nr(tr.properties.fastMode,r.fastMode)||r.permissionMode!==void 0&&!nr(Un,r.permissionMode)||r.toolOverrides!==void 0&&!nr(rr,r.toolOverrides)||r.projectId!==void 0&&r.cwd!==void 0||io.some(e=>r[e]!==void 0&&!h(r[e]))?null:r}function Ha(e){try{let t=JSON.parse(e);return c(t)?t:null}catch{return null}}function Ua(e,t,n){return e.gatewayUrl===t&&e.recoveryScope===n}function Wa(e){return c(e)?e.kind===`profile`&&Object.keys(e).every(e=>e===`kind`||e===`profileId`||e===`machineClass`)&&h(e.profileId)&&(e.machineClass===void 0||h(e.machineClass)&&e.machineClass.length<=128)||e.kind===`device`&&Object.keys(e).every(e=>e===`kind`||e===`deviceId`)&&h(e.deviceId)?e:e.kind===`auto-device`&&Object.keys(e).every(e=>e===`kind`)?{kind:`auto-device`}:null:null}function Ga(e,t,n,r){if(e.createParams?.incognito===!0||!h(e.sessionKey)||r!==void 0&&e.sessionKey!==r||!h(e.messageId)||typeof e.message!=`string`||!h(e.message)&&!e.attachments?.length||e.attachments!==void 0&&!Array.isArray(e.attachments)||!Wa(e.target)||!h(e.agentId)||!Ua(e,t,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`||!h(e.error)||e.error.length>ro)||e.phase===`creating`&&!Va(e.createParams,e.sessionKey,e.agentId))return null;let{mentions:i,...a}=e,o=Fr(e.message,i);return i!==void 0&&(!Array.isArray(i)||(o?.length??0)!==i.length)?null:{...a,...o?{mentions:o}:{}}}function Ka(e,t){try{return e.removeItem(t),e.getItem(t)===null}catch{return!1}}function qa(e,t,n,r,i){try{let a=e.getItem(t);if(a===null)return null;let o=Ha(a),s=o?Ga(o,n,r,i):null;return!s||t!==ot(n,r,s.sessionKey)?(Ka(e,t),null):s}catch{return null}}function Ja(e,t,n,r){let i=ot(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=qa(e,i,r.gatewayUrl,r.recoveryScope,r.sessionKey);if(n)return n}catch{}Ka(e,i);try{e.setItem(t,n)}catch{}return null}function Ya(e,t){if(!e||!t)return[];try{let n=globalThis.sessionStorage;if(!n)return[];let r=new Map;for(let i of Pt(e,t)){let a=qa(n,i,e,t);a&&r.set(a.sessionKey,a)}return[...r.values()].toSorted((e,t)=>e.sessionKey.localeCompare(t.sessionKey))}catch{return[]}}function Xa(e,t,n){for(let r of Ya(e,t))$a({...r,recoveryScope:n})&&to(e,t,r.sessionKey,r.messageId)}function Za(e,t,n){if(!e||!t||!n)return null;try{let r=globalThis.sessionStorage;return r?qa(r,ot(e,t,n),e,t,n):null}catch{return null}}function Qa(e){let{gatewayUrl:t,recoveryScope:n,sessionKey:r}=e,i=Ga(e,t,n,r);if(!t||!n||!i)return!1;try{let e=globalThis.sessionStorage;if(!e)return!1;let a=ot(t,n,r);return e.setItem(a,JSON.stringify(i)),!!qa(e,a,t,n,r)}catch{return!1}}function $a(e,t=e.messageId){let n=Za(e.gatewayUrl,e.recoveryScope,e.sessionKey);return n&&n.messageId!==t?!1:Qa(e)}function eo(e,t){if(e===t.sessionKey)return $a(t);try{let n=globalThis.sessionStorage;if(!n||!e)return!1;let r=ot(t.gatewayUrl,t.recoveryScope,e),i=n.getItem(r),a=qa(n,r,t.gatewayUrl,t.recoveryScope,e);if(!i||!a)return $a(t);if(a.messageId!==t.messageId)return!1;let o=qa(n,ot(t.gatewayUrl,t.recoveryScope,t.sessionKey),t.gatewayUrl,t.recoveryScope,t.sessionKey);return o?o.messageId===t.messageId&&Ka(n,r):!!Ja(n,r,i,t)}catch{return!1}}function to(e,t,n,r){if(!(!e||!t))try{let i=globalThis.sessionStorage;if(!i)return;if(n){let a=ot(e,t,n);if(r&&Ha(i.getItem(a)??``)?.messageId!==r)return;Ka(i,a);return}let a=ut(e,t);for(let e=i.length-1;e>=0;--e){let t=i.key(e);t?.startsWith(a)&&Ka(i,t)}}catch{}}function no(e,t,n,r=e.phase===`paused`?e.reason:e.phase===`sending`?`unconfirmed`:`not-sent`){let i={...e,phase:`paused`,reason:r,error:O(t).slice(0,ro)},a=n&&$a(i);return n&&!a&&(Za(e.gatewayUrl,e.recoveryScope,e.sessionKey)?.phase!==`paused`&&to(e.gatewayUrl,e.recoveryScope,e.sessionKey,e.messageId),i.error=`Recovery could not be saved in this tab. Keep this page open.\n${i.error}`.slice(0,ro)),{recovery:i,persisted:a}}var ro,io,ao;function oo(){return(oo=e((()=>{Vn(),Xn(),Wn(),Tr(),A(),St(),ro=4096,io=[`category`,`displayName`,`model`,`contextWindow`,`thinkingLevel`,`worktreeBaseRef`,`worktreeName`,`cwd`,`catalogId`,`projectId`],ao=new Set([`key`,`agentId`,`message`,`worktree`,`incognito`,`visibility`,`permissionMode`,`fastMode`,`toolOverrides`,...io])})))()}function so(e){if(!e||typeof e!=`object`)return;let t=e,n=l(t.receivedToAckMs),r=l(t.loadSessionMs),i=l(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 co(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=n.status,a=so(n.serverTiming);return{runId:r,status:i===`in_flight`||i===`ok`||i===`timeout`||i===`error`?i:`started`,...a?{serverTiming:a}:{}}}function lo(e){return e?.status===`timeout`||e?.status===`error`}function uo(){return(uo=e((()=>{w()})))()}function fo(e){return e.trim().length===0?``:e}function po(){return(po=e((()=>{})))()}function mo(e){return JSON.stringify([e.gatewayOwner,e.recoveryScope])}function ho(e){return JSON.stringify([e.gatewayOwner,e.recoveryScope,e.scopeKey])}function go(e,t){let n=mo(e);wo.has(n)||(wo.add(n),t())}function _o(e,t,n,r){return JSON.stringify([e,n??null,r??[],t.map(e=>[e.id,e.mimeType,e.fileName??``,e.sizeBytes??-1,e.browserAnnotation??null])])}function vo(e){return new Promise((t,n)=>{let r=new FileReader;r.addEventListener(`error`,()=>n(r.error??Error(`Blob read failed`)),{once:!0}),r.addEventListener(`load`,()=>typeof r.result==`string`?t(r.result):n(Error(`Blob read returned no data`)),{once:!0}),r.readAsDataURL(e)})}function yo(e){let t=[];for(let n of e){let e=me(n);if(!e)return null;t.push({blob:e,mimeType:n.mimeType,...n.fileName?{fileName:n.fileName}:{},...typeof n.sizeBytes==`number`?{sizeBytes:n.sizeBytes}:{},...n.browserAnnotation?{browserAnnotation:{...n.browserAnnotation}}:{}})}return t}async function bo(e){return Promise.all(e.map(async({blob:e,...t})=>{let n=e.type===t.mimeType?e:e.slice(0,e.size,t.mimeType);return{...t,id:ge(),...t.browserAnnotation?{browserAnnotation:{...t.browserAnnotation}}:{},dataUrl:await vo(n)}}))}async function xo(e){let{writeDurableComposerDraft:t}=await To,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}:{},attachments:e.storedAttachments??[]},{expectedRevision:e.expectedRevision,...e.expectedWriteId?{expectedWriteId:e.expectedWriteId}:{},...e.expectedWriteIds?.length?{expectedWriteIds:e.expectedWriteIds}:{},writeId:e.writeId}),payloadUnavailable:n}}async function So(e,t){if(e.size!==t.size||e.type!==t.type)return!1;let[n,r]=await Promise.all([e.arrayBuffer(),t.arrayBuffer()]),i=new Uint8Array(n),a=new Uint8Array(r);return i.every((e,t)=>e===a[t])}async function Co(e,t,n,r){if(n===null||e.text!==t||JSON.stringify(e.mentions??[])!==JSON.stringify(r??[])||e.attachments.length!==n.length)return!1;for(let[t,r]of e.attachments.entries()){let e=n[t];if(!e||r.mimeType!==e.mimeType||r.fileName!==e.fileName||r.sizeBytes!==e.sizeBytes||JSON.stringify(r.browserAnnotation)!==JSON.stringify(e.browserAnnotation)||!await So(r.blob,e.blob))return!1}return!0}var wo,To,Eo;function Do(){return(Do=e((()=>{se(),S(),wo=new Set,To=te(()=>import(`./composer-draft-store.runtime-BBDzpAf3.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url),Eo=class{constructor(e,t){this.onStorageError=e,this.onConflict=t,this.restoreGeneration=0,this.restoredScopeKey=``}resetRestoreScope(){this.restoreGeneration+=1,this.restoredScopeKey=``}persist(e){(async()=>{let{result:t,payloadUnavailable:n}=await xo(e);n&&go(e.scope,this.onStorageError),t.status===`storage-failed`||t.status===`payload-too-large`?go(e.scope,this.onStorageError):t.status===`conflict`&&(this.resetRestoreScope(),this.onConflict())})()}retire(e,t){this.resetRestoreScope(),(async()=>{let{retireDurableComposerDraft:n}=await To;(await n(e,t)).status===`storage-failed`&&go(e,this.onStorageError)})()}restore(e,t,n,r){let i=ho(e.scope);if(this.restoredScopeKey===i)return;this.restoredScopeKey=i;let a=++this.restoreGeneration;this.restoreScope(e,a,t,n,r)}async restoreScope(e,t,n,r,i){let{readDurableComposerDraft:a,prepareDurableComposerRecovery:o}=await To;if(e.scope.scopeKey.startsWith(`chat:v3:`)&&(await o(e.scope)).status===`storage-failed`){go(e.scope,this.onStorageError);return}let s=await a(e.scope);if(s.status===`storage-failed`){go(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=[];if(s.status===`found`)try{l=await bo(s.draft.attachments)}catch{go(e.scope,this.onStorageError);return}this.isBaselineCurrent(e,t,n())&&r({revision:c,text:s.status===`found`?s.draft.text:``,...s.status===`found`&&s.draft.mentions?{mentions:s.draft.mentions}:{},...s.status===`found`&&s.draft.goalMode?{goalMode:s.draft.goalMode}:{},attachments:l})}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 Oo(e){if(!e.id?.trim()||!e.text?.trim()&&!e.attachments?.length&&!e.attachmentPayload&&!e.attachmentStorageError||e.pendingRunId||e.sendState===`sending`&&!e.sendRunId)return null;let t=(e.attachments??[]).map(t=>{let{dataUrl:n,previewUrl:r,...i}=t;if(e.attachmentPayload)return i;let a=Ae(t);return a?Object.assign(i,{dataUrl:a}):e.attachmentStorageError?i:null});return e.attachments?.length&&t.some(e=>e===null)?null:mr({...e,attachments:t.length?t:void 0,...e.sendState===`waiting-model`?{sendError:pa}:{}})}function ko(e,t){let n=Oo(e);return n?ji(n,t):null}function Ao(e,t,n){let r=ko(t,n);return!!(r&&Br(e,r))}function jo(e,t,n){let r=ko(e,n);return!!(r&&JSON.stringify(r)===JSON.stringify(t))}function Mo(e,t,n,r){if(!n?.draft&&!n?.goalMode&&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?.draftRevision===void 0?{}:{draftRevision:n.draftRevision},...r.length?{queue:r}:{},updatedAt:Date.now()}}function No(e,t,n){return Io(e,k(e,t,n)).revisions.latestAttempt}function Po(e,t,n){return Io(e,k(e,t,n)).revisions.committed}function Fo(e,t,n){return Io(e,k(e,t,n)).snapshot}function Io(e,t){let n={snapshot:null,revisions:{committed:0,latestAttempt:0}},r=Bt();if(!r)return n;try{let n=Ei(e.settings?.gatewayUrl),i=Yi(r,n);if(ia(i,e))try{ki(r,n,i)}catch{}let a=W(t),o=i.sessions[a];Fi(r,n.key,a,o?.draftRevision);let s=Wi(r,n.key,a,o?.draftRevision),c=fo(o?.draft??``);return!o||!c&&!o.goalMode&&!o.queue?.length?{snapshot:null,revisions:s}:{revisions:s,snapshot:{draft:c,...o.draftMentions?{mentions:o.draftMentions}:{},...o.goalMode?{goalMode:o.goalMode}:{},queue:(o.queue??[]).filter(t=>va(e,t)).map(e=>ko(e,t)).filter(e=>e!==null)}}}catch{return n}}function Lo(e,t=e.sessionKey,n={}){return Ro(e,oa(e,t,n.agentId),n)}function Ro(e,t,n={}){let r=Bt();if(!r||!t.scope.sessionKey.trim())return`storage-failed`;try{let i=Ei(e.settings?.gatewayUrl),a=Yi(r,i),o=W(t.scope),s=a.sessions[o]??null,c=fo(Object.hasOwn(n,`draft`)?n.draft??``:e.chatMessage),l=Object.hasOwn(n,`goalMode`)?n.goalMode:e.chatGoalDraftMode,u=Fr(c,Object.hasOwn(n,`mentions`)?n.mentions:e.chatMentions),d=s?.draftRevision;Fi(r,i.key,o,d);let{committed:f,latestAttempt:p}=Wi(r,i.key,o,d),m=n.draftRevision??Zi(p);if(!Number.isSafeInteger(m)||m<=0)return`conflict`;let h=fo(s?.draft??``),g=h===c&&JSON.stringify(s?.draftMentions??[])===JSON.stringify(u??[])&&JSON.stringify(s?.goalMode??null)===JSON.stringify(l??null),_=n.expectedDraftRevision;if(!(_===void 0||f===_||d===m&&g)||m<p||d===m&&!g)return`conflict`;Ii(r,i.key,o,m),a.sessions[o]={...t.awaitingDefaults?{awaitingDefaults:!0}:{},...c?{draft:c}:{},...u?{draftMentions:u}:{},...l?{goalMode:l}:{},draftRevision:m,...s?.queue?.length?{queue:s.queue}:{},updatedAt:Date.now()},ki(r,i,a);let v=Yi(r,i).sessions[o];return v?.draftRevision===m&&(v.draft??``)===c&&JSON.stringify(v.draftMentions??[])===JSON.stringify(u??[])&&JSON.stringify(v.goalMode??null)===JSON.stringify(l??null)?(!!h!=!!c&&Ri(),`persisted`):(v?.draftRevision??0)>=m?`conflict`:`storage-failed`}catch{return`storage-failed`}}function zo(e,t=e.sessionKey,n={}){return Lo(e,t,n)===`persisted`}function Bo(e,t,n,r){let i=Bt();if(!i||!t.scope.sessionKey.trim())return!1;try{let a=Ei(e.settings?.gatewayUrl),o=Yi(i,a),s=t.scope,c=ko(n,s);if(!c)return!1;let l=ia(o,e),u=W(s),d=o.sessions[u]??null,f=d?.queue??[];if(r&&!f.some(e=>e.id===r.id&&Ao(e,r.expected,s)))return!1;let p=f.filter(e=>e.id!==r?.id),m=p.find(e=>e.id===c.id);if(m)return jo(m,c,s)?(l&&(ki(i,a,o),Ri()),!0):!1;if(p.length>=50)return!1;Mo(o,u,d,[...p,c]),t.awaitingDefaults&&(o.sessions[u].awaitingDefaults=!0),ki(i,a,o);let h=Yi(i,a).sessions[u]?.queue?.find(e=>e.id===c.id),g=!!(h&&jo(h,c,s));return Ri(),g}catch{return!1}}function Vo(e,t,n,r){if(n.length===0)return!0;let i=Bt();if(!i||!t.trim()||n.some(({expected:e,next:t})=>e.id!==t.id))return!1;try{let a=Ei(e.settings?.gatewayUrl),o=Yi(i,a),s={sessionKey:t,agentId:r??n[0].expected.agentId??n[0].next.agentId},c=W(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&&Ao(r,e,s)?ko(t,s):null;if(!i)return!1;u[n]=i}Mo(o,c,l,u),ki(i,a,o),Ri();let d=Yi(i,a).sessions[c]?.queue??[];return n.every(({next:e})=>{let t=ko(e,s),n=d.find(t=>t.id===e.id);return!!(n&&t&&jo(n,t,s))})}catch{return!1}}function Ho(e,t,n,r,i){return Vo(e,t,[{expected:n,next:r}],i)}function Uo(e,t,n,r,i){let a=Bt();if(!a||!t.trim()||!n.trim())return!1;try{let o=Ei(e.settings?.gatewayUrl),s=Yi(a,o),c={sessionKey:t,agentId:i??r?.agentId},l=W(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&&!Ao(p,r,c)?!1:(Mo(s,l,u,d.filter((e,t)=>t!==f)),ki(a,o,s),Ri(),!Yi(a,o).sessions[l]?.queue?.some(e=>e.id===n))}catch{return!1}}function Wo(e,t={}){e.chatMessage=fo(e.chatMessage);let n=Fo(e,t.sessionKey??e.sessionKey);return n?((!t.preserveCurrent||!e.chatMessage&&!e.chatGoalDraftMode)&&(e.chatMessage=fo(n.draft),e.chatMentions=n.mentions,e.chatGoalDraftMode=n.goalMode??null),(!t.preserveCurrent&&n.queue.length>0||e.chatQueue.length===0)&&(e.chatQueue=n.queue),!0):!1}var Go,Ko,qo;function Jo(){return(Jo=e((()=>{Tr(),yi(),ti(),Pi(),ea(),D(),se(),Do(),br(),Go=200,Ko=`Could not store the previous draft in browser storage. It remains available in this tab.`,qo=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 Eo(()=>{let e=this.getState();e&&(e.lastError=Ko,e.chatError=Ko,e.requestUpdate?.())},()=>this.getState()?.requestUpdate?.())}get active(){return this.ready}start(){let e=this.getState();if(!e)return;this.ready=!0,this.pending=null;let{revisions:t,snapshot:n}=Io(e,k(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),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=Wo(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;if(this.isUnchanged(e)){if(!this.pending){this.clearTimer();return}if(this.matchesCurrentContent(this.pending,e)){this.clearTimer(),this.timer=globalThis.setTimeout(()=>this.persistNow(),Go);return}}let t=Math.max(this.latestDraftRevision,this.pending?.draftRevision??0),n=Zi(t);this.latestDraftRevision=n,this.pending=this.snapshot(e,n,this.committedDraftRevision),this.clearTimer(),this.timer=globalThis.setTimeout(()=>this.persistNow(),Go)}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,Zi(this.latestDraftRevision),this.committedDraftRevision),this.latestDraftRevision=t.draftRevision}this.clearTimer(),this.persistSnapshot(e,t)}persistChangedState(){this.persistNow(),this.synchronizeDurablePersistence()}scopeForRouteSwitch(){let e=this.getState();return e?(this.pending??(this.isUnchanged(e)?this.lastPersisted:null))?.scope??k(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.attachments.length===0)return this.pending=null,this.clearTimer(),{status:`persisted`};let{revisions:i,snapshot:a}=Io(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))return this.pending=null,this.clearTimer(),{status:`persisted`};if(o!==r.draftRevision||a?.draft||a?.goalMode||i.latestAttempt>r.draftRevision)return{status:`conflict`};t={...r,expectedDraftRevision:o,draftRevision:Zi(Math.max(o,i.latestAttempt,this.latestDraftRevision))},this.latestDraftRevision=t.draftRevision,n=!0}else if(!t&&!this.ready&&!fo(e.chatMessage)&&!e.chatGoalDraftMode)return this.pending=null,this.clearTimer(),{status:`persisted`};return t??=this.snapshot(e,Zi(this.latestDraftRevision),this.committedDraftRevision),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=Ro(e,t,{draft:t.chatMessage,mentions:t.mentions,goalMode:t.goalMode??null,draftRevision:t.draftRevision,...n?{expectedDraftRevision:t.expectedDraftRevision}:{}})}finally{this.publishing=!1}return t.durable&&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&&this.matchesCurrentContent(t,e))}matchesCurrentContent(e,t){return _o(e.chatMessage,e.attachments,e.goalMode,e.mentions)===_o(fo(t.chatMessage),t.chatAttachments??[],t.chatGoalDraftMode,t.chatMentions)}snapshot(e,t=this.latestDraftRevision,n=this.committedDraftRevision){let r=k(e,e.sessionKey),i=this.resolveDurableScope(e,r),a=e.chatGoalDraftMode?{...e.chatGoalDraftMode}:void 0,o=Fr(e.chatMessage,e.chatMentions),s=(e.chatAttachments??[]).map(e=>Object.assign({},e,e.browserAnnotation?{browserAnnotation:Object.assign({},e.browserAnnotation)}:{})),c=i?{scope:i,expectedRevision:n,revision:t,text:fo(e.chatMessage),...o?{mentions:o}:{},...a?{goalMode:a}:{},storedAttachments:yo(s),writeId:`${t}:${Math.random().toString(36).slice(2)}`}:void 0;return{scope:r,awaitingDefaults:!bt(e),sessionKey:e.sessionKey,chatMessage:fo(e.chatMessage),...o?{mentions:o}:{},...a?{goalMode:a}:{},expectedDraftRevision:n,draftRevision:t,attachments:s,...c?{durable:c}:{}}}resolveDurableScope(e,t=k(e,e.sessionKey)){return e.selectedChatSessionIncognito?null:this.resolveConnectedDurableScope(e,t)??(this.durableOwner&&!e.connected&&this.durableOwner.client===e.client&&this.durableOwner.gatewayOwner===Ei(e.settings?.gatewayUrl).gatewayOwner?{...this.durableOwner,scopeKey:`chat:v3:${W(t)}`}:null)}resolveConnectedDurableScope(e,t=k(e,e.sessionKey)){let n=e.client?.recoveryScope?.trim();return!e.connected||!e.client?.recoveryScopeReady||!n?null:{gatewayOwner:Ei(e.settings?.gatewayUrl).gatewayOwner,recoveryScope:n,scopeKey:`chat:v3:${W(t)}`}}synchronizeDurablePersistence(){let e=this.getState();if(!this.ready||!e||this.publishing)return;let t=this.resolveConnectedDurableScope(e);if(e.selectedChatSessionIncognito){if(t){let e=ho(t);this.durableRetiredScopeKey!==e&&(this.durableRetiredScopeKey=e,this.durableOwner=null,this.forceDurableOwnerRestore=!1,this.durableRestoreProtected=!1,this.durablePersistence.retire(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)){Oe(e.chatAttachments),e.chatMessage=``,e.chatMentions=[],e.chatGoalDraftMode=null,e.chatAttachments=[],this.pending=null;let t=this.readDraftRevisions(e);this.committedDraftRevision=t.committed,this.latestDraftRevision=Zi(t.latestAttempt),Lo(e,e.sessionKey,{draft:``,goalMode:null,draftRevision:this.latestDraftRevision}),this.committedDraftRevision=this.latestDraftRevision,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,Zi(this.latestDraftRevision),this.committedDraftRevision);this.latestDraftRevision=t.draftRevision,this.persistSnapshot(e,t);return}let i=this.snapshot(e,this.latestDraftRevision,this.committedDraftRevision),a=this.forceDurableOwnerRestore?0:this.latestDraftRevision;this.durablePersistence.restore({scope:n,latestRevision:a,signature:_o(e.chatMessage,e.chatAttachments??[],e.chatGoalDraftMode,e.chatMentions)},()=>({scope:this.resolveDurableScope(e),signature:_o(e.chatMessage,e.chatAttachments??[],e.chatGoalDraftMode,e.chatMentions),revision:this.forceDurableOwnerRestore?0:this.latestDraftRevision}),t=>{let n=this.forceDurableOwnerRestore;this.forceDurableOwnerRestore=!1;let r=e.chatAttachments??[];e.chatMessage=fo(t.text),e.chatMentions=t.mentions,e.chatGoalDraftMode=t.goalMode??null,e.chatAttachments=t.attachments,Oe(r);let i=n?Zi(Math.max(this.latestDraftRevision,t.revision)):t.revision;this.committedDraftRevision=i,this.latestDraftRevision=i,this.lastPersisted=this.snapshot(e,i,i),Lo(e,e.sessionKey,{agentId:k(e,e.sessionKey).agentId,draft:e.chatMessage,mentions:e.chatMentions,goalMode:e.chatGoalDraftMode,draftRevision:i}),n&&this.lastPersisted.durable&&this.durablePersistence.persist({...this.lastPersisted.durable,expectedRevision:t.revision}),e.requestUpdate?.()},t=>{this.forceDurableOwnerRestore=!1,i.durable&&(e.chatMessage||e.chatGoalDraftMode||(e.chatAttachments?.length??0)>0)&&this.durablePersistence.persist({...i.durable,expectedRevision:t})})}readDraftRevisions(e,t=k(e,e.sessionKey)){return Io(e,t).revisions}}})))()}function Yo(e){return H(`chat.sendErrors.outboxPayload${e===`capacity`?`Capacity`:e===`missing`?`Missing`:`Unavailable`}`)}function Xo(e,t){let n=(e.sendAttempts??0)>0||e.sendRequestStartedAtMs!==void 0||e.sendState===`unconfirmed`;return{...e,attachmentStorageError:t,sendState:n?`unconfirmed`:`failed`,sendError:Yo(t)}}function Zo(e){let t=e.client,n=e.settings?.gatewayUrl,r=fa(e),i=e.selectedChatSessionIncognito;return()=>e.client===t&&e.settings?.gatewayUrl===n&&fa(e)===r&&e.selectedChatSessionIncognito===i}async function Qo(e,t,n){if(!t.attachments?.length&&!t.attachmentPayload&&!t.attachmentStorageError)return{status:`ready`,update:{}};if(e.selectedChatSessionIncognito)return t.attachmentPayload?{status:`failed`,reason:`unavailable`}:{status:`ready`,update:{}};let r=fa(e);if(!r)return{status:`failed`,reason:`unavailable`};let i=Zo(e),a;try{a=await Ci()}catch{return{status:`failed`,reason:`unavailable`}}if(!i())return{status:`failed`,reason:`unavailable`};let o={tabId:a,gatewayOwner:Ei(e.settings?.gatewayUrl).gatewayOwner,recoveryScope:r,queueId:t.id};if(t.attachmentPayload){let e=await ga(o,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.sizeBytes!==n.sizeBytes}))return{status:`failed`,reason:`missing`};if(!i())return{status:`failed`,reason:`unavailable`};try{let s=await Promise.all(e.value.map(async(e,t)=>({...r[t],dataUrl:await vo(e.blob)})));if(!i())return{status:`failed`,reason:`unavailable`};let c={attachments:s,attachmentPayload:t.attachmentPayload,attachmentStorageError:void 0};if(n===`send`&&t.attachmentPayload.tabId!==a){let t=await fr(o,e.value);return t.status===`failed`?t:i()?{status:`ready`,update:{...c,attachmentPayload:t.value,sendState:`unconfirmed`,sendError:H(`chat.sendErrors.outboxPayloadCopied`)}}:(await Qr([t.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 s=yo(t.attachments??[]);if(!s)return{status:`failed`,reason:`missing`};let c=await fr(o,s);return c.status===`failed`?c:i()?{status:`ready`,update:{attachmentPayload:c.value,attachmentStorageError:void 0}}:(await Qr([c.value]),{status:`failed`,reason:`unavailable`})}async function $o(e,t,n=`send`){let r=t.attachmentPayload;if(!r||e.selectedChatSessionIncognito||!fa(e))return Qo(e,t,n);let i=JSON.stringify([t.id,r.key,r.tabId,r.recoveryScope,e.settings?.gatewayUrl,e.client?.recoveryScope,n,t.attachments?.map(({mimeType:e,fileName:t,sizeBytes:n})=>[e,t,n])]),a=Zo(e),o=ts.get(i);o||(o=Qo(e,t,n).finally(()=>ts.delete(i)),ts.set(i,o));let s=await o;return a()?s:{status:`failed`,reason:`unavailable`}}function es(e){e.attachmentPayload&&Qr([e.attachmentPayload])}var ts;function ns(){return(ns=e((()=>{V(),yi(),ea(),Do(),ts=new Map})))()}function rs(e,t){return!!(t.pendingRunId||t.sendState===`waiting-model`||e.retryable.has(t.id)||!e.durableSeen.has(t.id))}function is(e){let t=Bt();return t&&!os.has(t)&&os.set(t,++ss),`${t?os.get(t):0}\u0000${e.settings?.gatewayUrl?.trim()||`default`}\u0000${e.client?.recoveryScope??``}`}function G(e){let t=is(e),n=ls.get(t)??new cs(t);return ls.set(t,n),n.adoptSubscriptions(e),n}var as,os,ss,cs,ls,us;function ds(){return(ds=e((()=>{yi(),ea(),D(),se(),Jo(),ns(),as=[`sendRunId`,`sendAttempts`,`sendState`,`sendError`],os=new WeakMap,ss=0,cs=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=this.hosts.get(e);if(t)return t;let n=k(e,e.sessionKey),r=new Set(this.outbox(e,n)?.queue.map(e=>e.id)),i={byScope:new Map,durableSeen:r,retryable:new Set};return e.chatQueue.length&&i.byScope.set(W(n),{scope:n,queue:e.chatQueue.filter(t=>va(e,t))}),this.hosts.set(e,i),i}outbox(e,t){return Ar(e).find(({sessionKey:e,agentId:n})=>e===t.sessionKey&&n===t.agentId)}durable(e,t){return Ar(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}project(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}snapshot(e,t,n=this.outbox(e,t)?.queue??[]){let r=W(t),i=this.state(e),a=i.byScope.get(r)?.queue??[],o=new Map(a.map(e=>[e.id,e])),s=n.map(e=>{i.durableSeen.add(e.id);let t=o.get(e.id),n=this.live.get(r)?.get(e.id)?.item;return t?.pendingRunId||t?.sendState===`waiting-model`?t:n&&n.sendRunId===e.sendRunId?n:t&&t.sendRunId===e.sendRunId?this.project(e,t):e}),c=new Set(n.map(e=>e.id));return s.push(...a.filter(e=>!c.has(e.id)&&rs(i,e))),this.prune(e),s.toSorted(fi)}syncHost(e,t={}){if(this.ownerGatewayKey!==is(e)){G(e).syncHost(e,t);return}fa(e),e.chatQueue=this.snapshot(e,k(e,e.sessionKey));for(let t of e.chatQueue){let n=t.attachmentPayload?.key;if(!n||t.attachmentStorageError||this.hydrating.has(n)||t.attachments?.every(e=>Ae(e)))continue;this.hydrating.add(n);let r=Zo(e);$o(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&&!Ho(e,a.sessionKey,t,{...t,...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 Ho(e,a.sessionKey,o,Xo(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=us.get(e)?.owner;if(!(!t||t===this)){for(let e of t.panes)if(is(e)===this.ownerGatewayKey){us.get(e).owner=this,t.hosts.delete(e);for(let[n,r]of t.live){for(let[t,n]of r)n.owner===e&&r.delete(t);r.size||t.live.delete(n)}e.chatQueue=[],t.detach(e),this.attach(e)}}}attach(e){this.panes.add(e),this.unsubscribe??=ua(()=>this.publish(void 0,!0))}detach(e){this.panes.delete(e),this.panes.size||(this.unsubscribe?.(),this.unsubscribe=null),this.prune(e)}subscribe(e){let t={owner:this};return us.set(e,t),this.attach(e),this.reconcile(e,this.state(e)),this.syncHost(e,{requestUpdate:!1}),()=>{us.get(e)===t&&(us.delete(e),t.owner.detach(e))}}reconcile(e,t){let n=new Set(Ar(e).flatMap(e=>e.queue.map(e=>e.id)));n.forEach(e=>t.durableSeen.add(e));for(let e of t.byScope.values())e.queue=e.queue.filter(e=>n.has(e.id)||rs(t,e))}replace(e,{sessionKey:t,agentId:n},r,i={}){let a={sessionKey:t,agentId:n},o=this.state(e),s=W(a),c=o.byScope.get(s)?.queue??[],l=new Map(c.map(e=>[e.id,e])),u=new Set(r.map(e=>e.id));for(let e of c)u.has(e.id)||o.retryable.delete(e.id);this.outbox(e,a)?.queue.forEach(e=>o.durableSeen.add(e.id)),o.byScope.set(s,{scope:a,queue:r.map(e=>this.project(e,l.get(e.id)??e))}),this.syncHost(e,i)}keep(e,{sessionKey:t,agentId:n},r,i=!1){let a={sessionKey:t,agentId:n},o=this.state(e),s=W(a),c=(o.byScope.get(s)?.queue??[]).filter(e=>e.id!==r.id);c.push(ji(r,a)),c.sort(fi),o.byScope.set(s,{scope:a,queue:c}),i&&o.retryable.add(r.id),this.syncHost(e)}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]=this.project(s,o)):a.queue.splice(a.index,1),this.syncHost(e),o}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}mayRemove(e,t,n){let r=this.live.get(W(t))?.get(n),i=e.chatQueue.find(e=>e.id===n),a=this.outbox(e,t)?.queue.find(e=>e.id===n);return!!(!r||r.owner===e||i&&a&&as.every(e=>i[e]===a[e]))}projectLive(e,t,n,r){let i=W(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=Ar(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()]}prune(e){let t=this.hosts.get(e);t&&!this.panes.has(e)&&![...t.byScope.values()].some(({queue:e})=>e.some(e=>rs(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&&ls.get(this.ownerGatewayKey)===this&&ls.delete(this.ownerGatewayKey)})}},ls=new Map,us=new WeakMap})))()}function fs(e){return qr(e)&&(e.sendState===void 0||e.sendState===`waiting-idle`)&&!e.localCommandName}function ps(e){return e.toSorted(fi).find(fs)}function ms(e){return e.sendState===`sending`||e.sendState===`executing-command`}function hs(e,t){return G(e).hasVolatile(e,t)}function gs(e,t){return G(e).durable(e,t)!==void 0}function _s(e,t){return t(e)||G(e).anyPane(e=>t(e))}function vs(e,t,n,r,i={}){let a=k(e,t,r??n.agentId);G(e).keep(e,a,n,i.retryable)}function ys(e,t={}){G(e).syncHost(e,t)}function bs(e){return G(e).subscribe(e)}function xs(e,t,n,r,i){let a=t.trim();if(!a)return null;let o={id:Ue(),text:a,createdAt:Date.now(),refreshSessions:n,localCommandArgs:r?.args,localCommandName:r?.name,sessionKey:e.sessionKey,agentId:Ht(e,e.sessionKey),...i?{sender:i}:{}};return vs(e,e.sessionKey,o,o.agentId),o}function Ss(e,t,n,r){let i=t.trim();if(!i)return;let a={id:Ue(),text:i,createdAt:Date.now(),pendingRunId:n,...r?{sender:r}:{}};vs(e,e.sessionKey,a)}function Cs(e,t,n){let r=k(e,t,n);return G(e).snapshot(e,r)}function ws(e,t,n,r,i={}){let a=k(e,t,r);G(e).replace(e,a,n,i)}function Ts(e,t){return G(e).locate(e,t)?.item??null}function Es(e,t,n,r={}){return G(e).change(e,t,n,r.retryable)}function Ds(e,t,n){let r=G(e),i=r.locate(e,t);if(!i)return null;let{item:a,scope:o,durable:s}=i,c=n(a);return s?Ho(e,o.sessionKey,a,c,o.agentId)?(c.sendState===`waiting-model`?r.keep(e,o,c):r.change(e,t),ms(c)?r.projectLive(e,o,t,c):r.projectLive(e,o,t),c):(ms(c)?r.syncHost(e):r.projectLive(e,o,t),null):r.change(e,t,()=>c)}function Os(e,t){let n=G(e),r=[];for(let{id:i,update:a}of t){let t=n.locate(e,i);if(!t)return!1;r.push({id:i,scope:t.scope,durable:t.durable,current:t.item,next:a(t.item)})}let i=r.filter(e=>e.durable),a=i[0]?.scope;if(a){let t=Vo(e,a.sessionKey,i.map(e=>({expected:e.current,next:e.next})),a.agentId);for(let r of i)t&&n.change(e,r.id),n.projectLive(e,a,r.id);if(!t)return!1}for(let t of r)t.durable||n.change(e,t.id,()=>t.next);return!0}function ks(e,t,n,r){let i=G(e);return i.keep(e,t.scope,n),Bo(e,t,n,r)?(n.sendState!==`waiting-model`&&i.change(e,n.id),!0):!1}function As(e,t){let n=G(e),r=n.locate(e,t);return r&&!n.mayRemove(e,r.scope,t)||r?.durable&&!Uo(e,r.scope.sessionKey,t,r.item,r.scope.agentId)?(n.syncHost(e),null):(r&&(n.projectLive(e,r.scope,t),n.change(e,t)),n.publish(void 0,!0),r?.item??null)}function js(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 Ms(e,t){let n=Ts(e,t),r=n?As(e,t):null;return r&&Oe(js(e,r.attachments)),r?`removed`:n?`rejected`:`absent`}function Ns(e,t,n){let r=Ps(e,t,n);if(!r)return null;let i=As(e,r.item.id);return i?(Oe(js(e,i.attachments)),i):null}function Ps(e,t,n){if(!t)return null;let r=W(n),i=Ar(e).find(e=>W(e)===r),a=i?.queue.find(e=>e.sendRunId===t);return a&&i?{item:a,outbox:i}:null}function Fs(e,t){if(!t)return;let n=e.chatQueue.filter(e=>e.pendingRunId===t);ws(e,e.sessionKey,e.chatQueue.filter(e=>e.pendingRunId!==t));for(let t of n)Oe(js(e,t.attachments))}function Is(e){let t=G(e).allItems(e);for(let n of t)if(!(!n.sendRunId||n.sendState!==`sending`&&n.sendState!==`waiting-idle`)){if(hs(e,n.id)){Es(e,n.id,e=>({...e,sendState:`unconfirmed`}));continue}Ds(e,n.id,e=>({...e,sendState:`waiting-reconnect`}))}}function Ls(){return(Ls=e((()=>{Se(),D(),ye(),se(),ds(),Jo()})))()}function Rs(e){let t=p(e);return t?.role===`custom`&&t.customType===Xs}function zs(e,t){let n=p(e),r=p(n?.__openclaw);return!!((r?.kind===`compaction`||Rs(e))&&t.runId&&r?.runId===t.runId&&(!t.itemId||r.itemId===t.itemId))}function Bs(e){let t=e.command??H(`chat.systemNotice.guardian.requestedAction`);return e.source===`system`?{kind:`notice`,key:e.key,icon:`cpu`,label:H(`common.system`),text:e.message??``,timestamp:e.timestamp}:e.kind===`approved`?{kind:`notice`,key:e.key,icon:`shieldCheck`,label:H(`chat.systemNotice.guardian.approvedSummary`,{action:t}),text:``,timestamp:e.timestamp}:e.kind===`warning`?{kind:`notice`,key:e.key,icon:`shieldCheck`,label:H(`chat.systemNotice.guardian.warningLabel`),text:e.message??H(`chat.systemNotice.guardian.warningFallback`),timestamp:e.timestamp,tone:`danger`}:e.kind===`reviewing`||e.kind===`strict-review-required`?{kind:`notice`,key:e.key,icon:`shieldCheck`,label:H(`chat.systemNotice.guardian.strictReviewRequiredLabel`),text:H(`chat.systemNotice.guardian.strictReviewRequiredSummary`),timestamp:e.timestamp,tone:`danger`}:{kind:`notice`,key:e.key,icon:`shieldCheck`,label:H(`chat.systemNotice.guardian.deniedLabel`),text:H(`chat.systemNotice.guardian.deniedSummary`,{action:t,risk:e.riskLevel??H(`chat.systemNotice.guardian.unknownRisk`),rationale:e.rationale??H(`chat.systemNotice.guardian.noRationale`)}),timestamp:e.timestamp,tone:`danger`}}function Vs(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:H(r===`active`?`chat.composer.compactingContext`:`chat.composer.contextCompacted`),compaction:r,...o===null?{}:{metric:H(`chat.compaction.savedTokens`,{count:wt(o)})},...r===`complete`&&e.kind===`compaction`?{description:H(`chat.compaction.description`),action:{kind:`session-checkpoints`,label:H(`chat.compaction.openCheckpoints`)}}:{},timestamp:t}}function Hs(e,t,n){return{kind:`divider`,key:typeof e.id==`string`?`divider:reset:${e.id}`:`divider:reset:${t}:${n}`,label:H(`chat.sessionReset.label`),icon:`rotateCcw`,description:H(`chat.sessionReset.description`),timestamp:t}}function Us(e){return typeof e.sendSubmittedAtMs==`number`||(e.sendAttempts??0)>0}function Ws(e){return Us(e)&&!e.localCommandName&&(e.sendState===`failed`||e.sendState===`unconfirmed`||e.sendState===`waiting-idle`&&!!e.sendError)}function Gs(e){return Us(e)&&(e.sendState===`waiting-model`||e.sendState===`sending`||e.sendState===`waiting-reconnect`||Ws(e))}function Ks(e,t,n,r,i,a){let o=r.find(e=>e.sendState===`sending`&&Gs(e))??r.find(Gs),s=o?.sendRunId??o?.pendingRunId,c=i.map(e=>e.runId).findLast(e=>typeof e==`string`&&e.length>0),l=a.map(e=>e?.runId).findLast(e=>typeof e==`string`&&e.length>0),u=t??c??l??s,d=Zs.get(e),f=d&&(!u||!d.runId||d.runId===u)?d:null,p=[f?.startedAt,n,...r.filter(Gs).map(e=>e.createdAt),...i.map(e=>e.ts),...a.map(e=>{let t=e?.__openclawToolStreamReceivedAt;return typeof t==`number`?t:null})].filter(e=>typeof e==`number`&&Number.isFinite(e)),m=p.length>0?Math.min(...p):Date.now(),h=f?.key??`stream-working:${JSON.stringify([e,u??`anonymous-${++Qs}`])}`;return Zs.set(e,{key:h,runId:u??f?.runId??null,startedAt:m}),{key:h,runId:u??f?.runId??null,startedAt:m}}function qs(e){Zs.delete(e)}function Js(){Zs.clear(),Qs=0}function Ys(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 Xs,Zs,Qs;function $s(){return($s=e((()=>{V(),yt(),Xs=`openclaw.context-compaction`,Zs=new Map,Qs=0})))()}function ec(e){e.compactionClearTimer!=null&&(clearTimeout(e.compactionClearTimer),e.compactionClearTimer=null),e.compactionStatus=null}function tc(e,t){let n=e.chatSubmissions;if(!n)return;let r=t.sessionKey??e.sessionKey,i=e.client,a=n.readInitial(r,i??null),o=Gi(e,{sessionKey:r,agentId:t.agentId??M(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)&&(a.pending=!1)},receive:(e,t,n=!1)=>{let r=t?.idempotencyKey?.replace(/:user$/u,``);if(t?.role!==`user`||!r)return e;let i=n||t.id!==null||t.sequence!==null;if(i&&s(r),!a||t.isImported||r!==a.pendingRunId)return e;if(i)return a.pending=!1,e}}}function K(e,t={}){let n=Object.hasOwn(t,`sessionId`)?t.sessionId:e.currentSessionId;return{sessionKey:k(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 nc(e,t){return mc.some(n=>Object.hasOwn(t,n)&&e[n]!==void 0&&e[n]!==t[n])}function rc(e,t=K(e)){let n=pc.get(e)?.projection;if(n!==void 0&&nc(n.scope,t))return Yn(t);if(!n){let n=Yn(t,e.chatMessages);return oc(e,n),n}let r=mc.some(e=>Object.hasOwn(t,e)&&n.scope[e]===void 0&&t[e]!==void 0)?{...n,scope:{...n.scope,...t}}:n;return r!==n&&oc(e,r),r}function ic(e){return pc.get(e)?.runId}function ac(e,t){pc.set(e,{...pc.get(e),runId:t})}function oc(e,t){let n=pc.get(e),r=n?.runId;if(n?.projection&&nc(n.projection.scope,t.scope)){let r=e.compactionStatus,i=[`sessionKey`,`sessionId`,`agentId`],a=n.projection.scope;(i.some(e=>Object.hasOwn(t.scope,e)&&a[e]!==void 0&&a[e]!==t.scope[e])||!r||!t.messages.some(e=>zs(e,r)))&&ec(e)}pc.set(e,{projection:t,runId:r&&Object.hasOwn(t.runs,r)&&(!n.projection||!nc(n.projection.scope,t.scope))?r:void 0}),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 sc(e,t,n={}){let r=n.scope??K(e),i=rc(e,r),a=n.event?Qn(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=Yn(r,u).entries.map(e=>f.get(e.message)?.pop()??e),m={...a,scope:{...a.scope,...r},entries:p,messages:u};return oc(e,m),m}function cc(e,t,n){let r=new Set,i=new Set;for(let t of e){let e=U(t);e?.role===`user`&&(e.id&&r.add(e.id),e.idempotencyKey&&i.add(e.idempotencyKey))}let a=new Set(n.map(e=>e.runId));return{queue:t.filter(e=>!e.sendRunId||!a.has(e.sendRunId)&&!i.has(e.sendRunId)&&!i.has(`${e.sendRunId}:user`)),pendingInputs:n.filter(e=>!r.has(e.id))}}function lc(e,t,n=[]){let r=K(e,{agentId:M(e)}),i=new Set([...t?.items??[],...n].map(e=>e.runId).filter(e=>typeof e==`string`));if(tc(e,r)?.accept(i),i.size){let t=rc(e,r),n=t.entries.filter(e=>!(e.pending&&e.identity?.role===`user`&&e.identity.id===null&&e.identity.sequence===null&&i.has(e.pendingRunId??``)));n.length!==t.entries.length&&oc(e,{...t,entries:n,messages:n.map(e=>e.message)})}return{acceptedRunIds:i,page:t??{items:[],total:0}}}function uc(e,t){return t&&(t.id!==null||t.sequence!==null)&&(e.pending=!1),e.pending&&!t}function dc(e,t=e.chatSubmissions?.readInitial(e.sessionKey,e.client??null)){if(!t?.pending||t.kind===`delivered`&&(!e.chatSubmissions||!uc(t,Lr(e.chatMessages,t.pendingRunId,!0))))return!1;let n=K(e,{sessionKey:t.sessionKey,...t.kind===`delivered`?{agentId:t.agentId}:{}}),r=e.chatMessages;return fc(e,{type:`sendPending`,runId:t.pendingRunId,message:t.message},{scope:n}),e.chatMessages!==r}function fc(e,t,n={}){let r=n.scope??K(e),i=rc(e,r),a=r.sessionKey??e.sessionKey,o=tc(e,r),s=o?.initial,c=s?.pending,l=(e,t)=>o?o.receive(e,U(e,t),!!t):e,u=t.type===`messagePersisted`&&o?{...t,message:l(t.message,t.envelope??t)}:t.type===`snapshotLoaded`&&o?{...t,messages:t.messages.map(e=>l(e)).filter(e=>e!==void 0)}:t,d=i;t.type===`snapshotLoaded`&&s?.pending&&n.runActive!==!1&&(d=Qn(d,{type:`sendPending`,runId:s.pendingRunId,message:s.message,scope:r})),d=Qn(d,{...u,scope:r}),t.type===`sessionReset`&&d!==i&&ec(e);let f=c&&s?d.entries.findIndex(e=>e.pending&&e.pendingRunId===s.pendingRunId):-1,m=d.entries[f];if(s&&m&&f>0){let e=d.entries.findIndex((e,t)=>{let n=p(e.message);return t<f&&n?.role!==`user`&&typeof n?.timestamp==`number`&&n.timestamp>=s.message.timestamp});if(e>=0){let t=d.entries.toSpliced(f,1);t.splice(e,0,m),d={...d,entries:t,messages:t.map(e=>e.message)}}}return oc(e,d),s&&!s.pending&&n.runActive===!1&&e.chatSubmissions?.clearInitial(a),d}var pc,mc;function hc(){return(hc=e((()=>{Hn(),Zn(),zr(),ea(),D(),$s(),pc=new WeakMap,mc=[`sessionKey`,`sessionId`,`agentId`,`lifecycleRevision`,`activeLeafEntryId`]})))()}function gc(e,t){if(!e.has(t))return;let n=e.get(t);return e.delete(t),e.set(t,n),n}function _c(e,t,n){for(e.delete(t),e.set(t,n);e.size>20;){let t=e.keys().next().value;if(typeof t!=`string`)break;e.delete(t)}}function vc(e,t,n){if(e.has(t))return gc(e,t);let r=n();return _c(e,t,r),r}function yc(){return(yc=e((()=>{})))()}function bc(e,t){t===void 0?console.debug(`[chat-snapshot-cache] ${e}`):console.debug(`[chat-snapshot-cache] ${e}`,t)}function xc(){try{return globalThis.indexedDB??null}catch(e){return bc(`IndexedDB is unavailable`,e),null}}function Sc(e){return new Promise((t,n)=>{let r=e.open(Dc,Ac);r.addEventListener(`upgradeneeded`,()=>{let e=r.result;for(let t of Array.from(e.objectStoreNames))e.deleteObjectStore(t);e.createObjectStore(Oc,{keyPath:`sessionKey`}),e.createObjectStore(kc,{keyPath:`sessionKey`})}),r.addEventListener(`success`,()=>t(r.result)),r.addEventListener(`error`,()=>n(r.error??Error(`IndexedDB open failed`))),r.addEventListener(`blocked`,()=>n(Error(`IndexedDB open was blocked`)))})}function Cc(e){return new Promise(t=>{try{let n=e.deleteDatabase(Dc);n.addEventListener(`success`,()=>t(!0)),n.addEventListener(`error`,()=>t(!1)),n.addEventListener(`blocked`,()=>t(!1))}catch{t(!1)}})}async function wc(){let e=xc();if(!e)return null;let t;try{t=await Sc(e)}catch(n){if(bc(`resetting cache after IndexedDB open failure`,n),!await Cc(e))return null;try{t=await Sc(e)}catch(e){return bc(`IndexedDB cache remains unavailable`,e),null}}if(t.addEventListener(`versionchange`,()=>t.close()),t.objectStoreNames.length===2&&t.objectStoreNames.contains(`snapshots`)&&t.objectStoreNames.contains(`snapshotMetadata`))return t;if(t.close(),bc(`resetting cache after IndexedDB schema mismatch`),!await Cc(e))return null;try{let t=await Sc(e);return t.addEventListener(`versionchange`,()=>t.close()),t}catch(e){return bc(`IndexedDB cache reset failed`,e),null}}async function Tc(e){e?.close();let t=xc();t&&!await Cc(t)&&bc(`IndexedDB cache reset was blocked`)}async function Ec(e){let t=await wc();if(t)try{await new Promise(n=>{let r=t.transaction([Oc,kc],`readwrite`);r.addEventListener(`complete`,()=>n()),r.addEventListener(`error`,()=>n()),r.addEventListener(`abort`,()=>n()),r.objectStore(Oc).delete(e),r.objectStore(kc).delete(e)})}catch{}finally{t.close()}}var Dc,Oc,kc,Ac;function jc(){return(jc=e((()=>{Dc=`openclaw-chat-snapshots`,Oc=`snapshots`,kc=`snapshotMetadata`,Ac=2})))()}function Mc(e,t){let n=we(t.sessionKey),r=t.agentId?.trim(),i=r?s(r):n?s(n.agentId):De(t.sessionKey)?Ce(e):ze(e),a=xe(t.sessionKey),o=n?a.split(`:`).slice(2).join(`:`):a,c=He(e);return`agent:${i}:${De(t.sessionKey)||o===`main`||o===c?ue:o}`}function Nc(){try{return globalThis.indexedDB??null}catch{return null}}async function Pc(e){await at({sessionKey:e}),await Ec(e)}async function Fc(){let e=Nc();if(e)try{await new Promise(t=>{let n=e.deleteDatabase(Dc);n.addEventListener(`success`,()=>t()),n.addEventListener(`error`,()=>t()),n.addEventListener(`blocked`,()=>t())})}catch{}}async function Ic(){await at({}),await Fc()}function Lc(){return(Lc=e((()=>{D(),jc(),Mt()})))()}function Rc(e,t){ol.set(e,t)}function zc(e,t){e.delete(t),ol.get(e)?.delete(t)}function Bc(e,t){fc(e,{type:`snapshotLoaded`,messages:t.messages},{scope:K(e,{sessionId:t.sessionId,...Object.hasOwn(t,`displayedLeafEntryId`)?{activeLeafEntryId:t.displayedLeafEntryId}:{}})}),e.chatHistoryPagination=t.pagination,e.currentSessionId=t.sessionId,e.chatDisplayedLeafEntryId=t.displayedLeafEntryId}function Vc(e,t,n){ol.get(e)?.write(t,n)}function Hc(e,t,n,r,i){let a=Mc(t,n),o=gc(e,a);if(!o)return;if(i){let t=al.get(e);if(t||(t=new WeakSet,al.set(e,t)),t.has(i))return;t.add(i)}let s=Zc(r);if(s===null){zc(e,a);return}let c=i?Qn(Yn({},o.snapshot.messages),{type:`messagePersisted`,message:r,envelope:i}).messages.slice():[...o.snapshot.messages,r],l={...o.snapshot.deltaCursor===void 0?{}:{deltaCursor:o.snapshot.deltaCursor},...Object.hasOwn(o.snapshot,`displayedLeafEntryId`)?{displayedLeafEntryId:o.snapshot.displayedLeafEntryId}:{},messages:c,pagination:o.snapshot.pagination,sessionId:o.snapshot.sessionId};if(i){Gc(e,t,n,l);return}let u=o.weight+s+ +(o.snapshot.messages.length>0);if(u>nl){Gc(e,t,n,l);return}_c(e,a,{snapshot:l,weight:u}),tl(e),Vc(e,a,l)}function Uc(e,t,n){return Kc(e,t,n)?.messages??[]}function Wc(e,t,n){zc(e,Mc(t,n))}function Gc(e,t,n,r){let i=Mc(t,n),a=gc(e,i);if(a?.snapshot.messages===r.messages&&a.snapshot.deltaCursor===r.deltaCursor&&a.snapshot.sessionId===r.sessionId&&a.snapshot.displayedLeafEntryId===r.displayedLeafEntryId&&el(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){zc(e,i);return}let o=Jc(r);if(!o){zc(e,i);return}_c(e,i,o),tl(e),Vc(e,i,o.snapshot)}function Kc(e,t,n){return gc(e,Mc(t,n))?.snapshot??null}function qc(e){let t=Yc(e.messages);return t?Xc(e.deltaCursor,e.pagination,e.sessionId,e.displayedLeafEntryId,t.reduce((e,t)=>e+t,0),t.length):null}function Jc(e){let t=Yc(e.messages);if(!t)return null;let n=t.reduce((e,t)=>e+t,0),r=0;for(;;){let i=r===0?e.pagination:Qc(e.pagination,e.messages,r);if(!i)return null;let a=Xc(e.deltaCursor,i,e.sessionId,e.displayedLeafEntryId,n,t.length-r);if(a!==null&&a<=nl)return r===0?{snapshot:e,weight:a}:{snapshot:{...e.deltaCursor===void 0?{}:{deltaCursor:e.deltaCursor},...Object.hasOwn(e,`displayedLeafEntryId`)?{displayedLeafEntryId:e.displayedLeafEntryId}:{},messages:e.messages.slice(r),pagination:{...i},sessionId:e.sessionId},weight:a};if(r>=e.messages.length)return null;let o=Gn(e.messages[r]);if(n-=t[r]??0,r+=1,o!==null)for(;r<e.messages.length&&Gn(e.messages[r])===o;)n-=t[r]??0,r+=1}}function Yc(e){let t=[];for(let n of e){let e=Zc(n);if(e===null)return null;t.push(e)}return t}function Xc(e,t,n,r,i,a){let o=$c({...e===void 0?{}:{deltaCursor:e},...r===void 0?{}:{displayedLeafEntryId:r},messages:[],pagination:t,sessionId:n});return o===null?null:o+i+Math.max(0,a-1)}function Zc(e){if(e&&typeof e==`object`){let t=il.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`&&il.set(e,n),n}catch{return null}}function Qc(e,t,n=0){let r=e.totalMessages,i=null;for(let e=n;e<t.length&&(i=Gn(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 $c(e){try{return JSON.stringify(e)?.length??0}catch{return null}}function el(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 tl(e){let t=0;for(let n of e.values())t+=n.weight;for(;t>rl;){let n=e.keys().next().value;if(typeof n!=`string`)break;t-=e.get(n)?.weight??0,e.delete(n)}}var nl,rl,il,al,ol;function sl(){return(sl=e((()=>{Hn(),Zn(),hc(),yc(),Lc(),nl=12582912,rl=25165824,il=new WeakMap,al=new WeakMap,ol=new WeakMap})))()}function cl(e){return e.startsWith(`/`)&&_l.some(t=>e.startsWith(t)||e.includes(t))}function ll(e){let t=e.trim();if(!t)return;let n;try{if(/^https?:\/\//i.test(t)||cl(t)){let e=new URL(t,`https://openclaw.invalid`).pathname;n=e.slice(e.lastIndexOf(`/`)+1);try{let e=n.replace(/%2f/gi,`%252F`).replace(/%5c/gi,`%255C`);n=decodeURIComponent(e)}catch{}}else n=t.split(/[\\/]/).pop()??t}catch{n=t.split(/[\\/]/).pop()??t}return n||void 0}function ul(e){let t=ll(e);if(t)return/\.([a-zA-Z0-9]+)$/.exec(t)?.[1]?.toLowerCase()}function dl(e){let t=ul(e);return t!==void 0&&vl.has(t)}function fl(e,t){if(typeof t==`string`&&t.trim()){let e=t.trim().toLowerCase();if(e.startsWith(`image/`))return!0;if(e!==`application/octet-stream`)return!1}let n=ul(e);return n!==void 0&&[`png`,`jpg`,`jpeg`,`gif`,`webp`,`bmp`,`svg`,`heic`,`heif`,`avif`].includes(n)}function pl(e,t){return(typeof t==`string`?t.split(`;`,1)[0]?.trim().toLowerCase():``)===`image/svg+xml`||ul(e)===`svg`}function ml(e,t){if(typeof t==`string`&&t.trim().toLowerCase().startsWith(`audio/`))return!0;let n=ul(e);return n!==void 0&&[`aac`,`flac`,`m2a`,`m4a`,`mp3`,`oga`,`ogg`,`opus`,`wav`].includes(n)}function hl(e,t){return typeof t==`string`&&t.trim().toLowerCase().startsWith(`video/`)?!0:dl(e)}function gl(e){let t=e.trim();if(t.startsWith(yl)){let e=t.split(`/`).pop()?.trim()||t;return e.replace(bl,``)||e}try{if(/^https?:\/\//i.test(t)){let e=new URL(t);return ll(t)?.trim()||e.hostname||t}}catch{}return t.split(/[\\/]/).pop()?.trim()||t}var _l,vl,yl,bl;function xl(){return(xl=e((()=>{_l=[`/__openclaw__/assistant-media`,`/__openclaw__/media/`,`/api/chat/media/outgoing/`,`/media/inbound/`],vl=new Set([`avi`,`m4v`,`mkv`,`mov`,`mp4`,`mpeg`,`mpg`,`webm`]),yl=`media://inbound/`,bl=/---[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}(?=\.[^./]*$|$)/i})))()}function Sl(e,t,n){let r=[],i=e.trim();i&&r.push({type:`text`,text:i});for(let e of t??[]){let t=n?Ae(e):void 0;if(n===`complete`&&!t)return null;let i=t||xt(e);if(!i)continue;if(e.mimeType.startsWith(`image/`)){r.push({type:`image`,url:i,source:{type:`url`,url:i}});continue}let a=e.mimeType.trim().toLowerCase(),o=a.startsWith(`video/`)||(a===``||a===`application/octet-stream`)&&dl(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}})}return r}function Cl(e,t,n,r){let i=r?.trim(),a=i?wl({...t,runId:i},`available`):null;return a&&i?{kind:`initial`,sessionKey:e,owner:n,pendingRunId:i,message:a}:null}function wl(e,t){let n=Sl(e.text,e.attachments,t);if(!n?.length)return null;let{mentions:r}=Yr(e.text,e.mentions);return{role:`user`,content:n,timestamp:e.createdAt,__openclaw:{...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 Tl(){return(Tl=e((()=>{Tr(),xl(),se()})))()}function El(e,t,n=!1){return e.connected&&e.client&&!e.client.recoveryScopeReady?H(`chat.queue.connectionPending`):n||e.hasPendingInitialTurn?.(t)?H(`chat.queue.initialTurnPending`):null}function Dl(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 Ol(e,t){if(t?.kind!==`delivered`||!t.pending)return;let{sessionKey:n,agentId:r,message:i}=t;if(de(e,n,r)){(!t.sessionId||!e.currentSessionId||t.sessionId===e.currentSessionId)&&dc(e,t);return}if(e.chatMessagesBySession){let a={sessionKey:n,agentId:r},o=Uc(e.chatMessagesBySession,e,a);e.chatSubmissions&&uc(t,Lr(o,t.pendingRunId,!0))&&Hc(e.chatMessagesBySession,e,a,i)}}function kl(e,t,n){let r=e.client??e,i=e.chatSubmissions,a=Gi(e,n,t),o=Ps(e,t,n)?.item;if(!o){let t=i.readDelivered(a,r);return t&&Ol(e,t),`retired`}let s=e.connectionEpoch,c=e.connected,l=Zo(e),u=()=>e.connected===c&&e.connectionEpoch===s&&l(),d=()=>Ps(e,t,n)?.item,f=s=>{if(!u())return`stale`;let c=d();if(!c){let t=i.readDelivered(a,r);return t?(Ol(e,t),`retired`):`stale`}if(!Br(c,o)||!o.sendRunId)return`stale`;Ol(e,i.retain({kind:`delivered`,deliveryKey:a,owner:r,sessionKey:o.sessionKey??n.sessionKey,agentId:o.agentId,sessionId:o.sessionId,pendingRunId:o.sendRunId,message:s}));let l=d();return!u()||!l||!Br(l,o)?`stale`:Ns(e,t,n)?`retired`:`retained`},p=Ts(e,o.id),m=p&&p.attachmentPayload?.key===o.attachmentPayload?.key&&p.attachments?.length===o.attachments?.length?p:o,h=e=>wl({...o,attachments:e,runId:o.sendRunId},`complete`),g=h(m.attachments)??h(o.attachments);return g&&(!o.attachmentPayload&&!o.attachmentStorageError||(o.attachments?.length??0)>0)?f(g):$o(e,o,`handoff`).then(t=>{if(!u())return`stale`;if(t.status===`ready`){let e=h(t.update.attachments??o.attachments);if(e)return f(e)}let n=d();if(!n||!Br(n,o))return`stale`;let r=t.status===`failed`?t.reason:`missing`;return Ds(e,o.id,e=>Xo({...e,sendState:`unconfirmed`},r)),`retained`})}function Al(e,t,n,r,i={}){let a=O(r);if(de(e,t,n)){e.lastError=i.inline?null:a,e.chatError=i.inline?null:a;return}let o=n?s(n):void 0,c=e.sessionsResult?.sessions.find(e=>N(e.key,t)&&(!De(t)||!o||e.agentId!==void 0&&s(e.agentId)===o));At({message:`${Gt(t,c)}: ${a}`})}var jl;function Ml(){return(Ml=e((()=>{V(),zr(),ti(),ea(),A(),_e(),Se(),D(),Et(),Ls(),hc(),ns(),sl(),Tl(),jl=`Could not store this message for reconnect. Free browser storage or reconnect before sending.`})))()}function Nl(e){return{key:e.key,agentId:e.agentId,...e.target.kind===`profile`?{profileId:e.target.profileId,...e.target.machineClass?{machineClass:e.target.machineClass}:{}}:e.target.kind===`device`?{deviceId:e.target.deviceId}:{autoDevice:!0}}}function Pl(e){return e instanceof Dn?e.retryable||e.gatewayCode===`UNAVAILABLE`:!0}async function Fl(e,t){try{let n=await e.request(`sessions.describe`,{key:t});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 Pl(e)?{status:`unavailable`}:{status:`rejected`,error:O(e)}}}async function Il(e,t){try{await e.request(`sessions.reclaim`,{key:t.key,agentId:t.agentId});return}catch(e){return O(e)}}async function Ll(e,t,n){let r=t.initial?{status:`read`,placement:t.initial}:void 0,i=0,a=0;for(let o=0;o<Ul;o+=1){let o=r??await Fl(e,t.key);if(r=void 0,o.status===`missing`)return{status:`missing`};if(o.status===`rejected`)return{status:`cleanup-rejected`,error:o.error};if(o.status===`unavailable`){i+=1;let r=!n();if(r||i>=Wl){if(!t.cleanupOnCancellation()&&r)return{status:`interrupted`};let n=await Il(e,t);if(r)return n?{status:`cleanup-rejected`,error:n}:{status:`cancelled`};let i=`session placement could not be verified`;return{status:`cleanup-rejected`,error:n?`${i}; cleanup failed: ${n}`:i}}await new Promise(e=>{globalThis.setTimeout(e,Hl)});continue}if(i=0,o.status===`read`){let r=o.placement;if(r)a=0;else if(a+=1,a>=Gl)return{status:`cleanup-rejected`,error:`session placement could not be verified`};if(!n()){if(!t.cleanupOnCancellation())return{status:`interrupted`};let n=await Il(e,t);return n?{status:`cleanup-rejected`,error:n}:{status:`cancelled`}}if(r?.state===`active`)return{status:`active`,placement:r};if(r&&!Kl.has(r.state)){if(r.state===`failed`){let n=await Il(e,t);if(n)return{status:`cleanup-rejected`,error:n}}return{status:`rejected`,placement:r}}}await new Promise(e=>{globalThis.setTimeout(e,Hl)})}if(!t.cleanupOnCancellation()&&!n())return{status:`interrupted`};if(!n()){let n=await Il(e,t);return n?{status:`cleanup-rejected`,error:n}:{status:`cancelled`}}return{status:`cleanup-rejected`,error:n()?`session placement reconciliation timed out`:`session placement cleanup timed out`}}async function Rl(e,t,n){if(!e)return`gateway unavailable during draft cleanup`;let r=await Fl(e,t);if(r.status!==`missing`)return r.status===`rejected`?r.error:r.status===`unavailable`?`placement draft session could not be verified`:r.sessionId?zl(e,{key:t,agentId:n,sessionId:r.sessionId}):`placement draft session identity is unavailable`}async function zl(e,t){try{await e.request(`sessions.patch`,{key:t.key,agentId:t.agentId,archived:!0,expectedSessionId:t.sessionId})}catch(e){return O(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=O(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: ${O(e)}`}return r}}async function Bl(e,t,n){if(!e)return`gateway unavailable during draft cleanup`;let r=await Fl(e,t);if(r.status!==`missing`){if(r.status===`rejected`)return r.error;if(r.status===`unavailable`)return`session placement could not be verified`;if(r.placement){let r=await Il(e,{key:t,agentId:n});if(r)return r}return r.sessionId?zl(e,{key:t,agentId:n,sessionId:r.sessionId}):`placement draft session identity is unavailable`}}async function Vl(e,t,n,r=()=>!0){let i=t.message,a=t.mentions?.map(e=>({...e})),o=t.cleanupOnCancellation??(()=>!0),s,c=``;if(t.recovering){let r=await Fl(e,t.key);s=r.status===`missing`?{status:`missing`}:r.status===`rejected`?{status:`cleanup-rejected`,error:r.error}:await Ll(e,{key:t.key,agentId:t.agentId,initial:r.status===`read`?r.placement:void 0,cleanupOnCancellation:o},n)}if(!s)try{let r=await e.request(`sessions.dispatch`,Nl({key:t.key,agentId:t.agentId,target:t.target}));s=await Ll(e,{key:t.key,agentId:t.agentId,initial:r.placement,cleanupOnCancellation:o},n)}catch(r){if(c=O(r),!o()&&!n())return{status:`interrupted`};if(!Pl(r))return{status:`dispatch-rejected`,error:c};s=await Ll(e,{key:t.key,agentId:t.agentId,cleanupOnCancellation:o},n)}if(!o()&&!n())return{status:`interrupted`};if(s.status===`cancelled`||s.status===`interrupted`||s.status===`cleanup-rejected`)return s;if(s.status===`missing`)return{status:`session-missing`,error:`placement draft session no longer exists`};if(s.status===`rejected`){let e=typeof s.placement?.state==`string`?s.placement.state:``;return{status:`dispatch-rejected`,error:c||(e?`session placement became ${e}`:``)}}if(!n()){if(!o())return{status:`interrupted`};let n=await Il(e,t);return n?{status:`cleanup-rejected`,error:n}:{status:`cancelled`}}let l=t.messageId??Ue(),u=async(n,r)=>{let i=await Il(e,t);return{status:r,messageId:l,error:i?`${n}; cleanup failed: ${i}`:n}};if(!r())return u(`placement recovery storage is unavailable`,`send-not-started`);try{let r=await e.request(`sessions.send`,{key:t.key,agentId:t.agentId,message:i,...a?.length?{mentions:a}:{},attachments:t.attachments,idempotencyKey:l});if(!n()){if(!o())return{status:`interrupted`};let n=await Il(e,t);return n?{status:`cleanup-rejected`,error:n,messageId:l}:{status:`cancelled`}}let s=co(r,l);return lo(s)?u(Dl(s,`chat`),`send-definitive-rejected`):{status:`started`,messageId:l}}catch(r){if(!n()){if(!o())return{status:`interrupted`};let n=await Il(e,t);return n?{status:`cleanup-rejected`,error:n,messageId:l}:{status:`cancelled`}}return r instanceof En||r instanceof Error&&!(r instanceof Dn)&&r.message===`gateway not connected`?u(O(r),`send-not-started`):Pl(r)?{status:`send-rejected`,error:O(r),messageId:l}:u(O(r),`send-definitive-rejected`)}}var Hl,Ul,Wl,Gl,Kl;function ql(){return(ql=e((()=>{wn(),A(),ye(),uo(),Ml(),Hl=250,Ul=1200,Wl=4,Gl=20,Kl=new Set([`requested`,`provisioning`,`syncing`,`starting`,`draining`,`reconciling`])})))()}async function Jl(e){let t=e.persistRecovery!==!1,n=e.recovery,r=`not-sent`,i=(e,i=r)=>({status:`paused`,recovery:no(n,e,t,i).recovery}),a=()=>e.isLifecycleCurrent()&&e.ownsRecovery();if(n.phase===`sending`||n.phase===`paused`&&n.reason===`unconfirmed`){if(!a())return{status:`interrupted`};let t=await e.client.request(`chat.history`,{sessionKey:n.sessionKey,...De(n.sessionKey)?{agentId:n.agentId}:{},limit:1e3,...n.messageId.length<=256?{inputRunIds:[n.messageId]}:{}}).catch(e=>({error:O(e)}));if(!a())return{status:`interrupted`};if(`error`in t)return i(t.error,`unconfirmed`);let r={sendRunId:n.messageId},o=vr(t,r);return o||Lr(t.messages,n.messageId,!0)?(e.clearRecovery(`resolved`),o?{status:`accepted`}:{status:`started`,messageId:n.messageId}):i(`No matching user message was found in the available history. Delivery remains unconfirmed.`,`unconfirmed`)}if(n.phase===`paused`)return{status:`paused`,recovery:n};let o=e.recovering&&t?Za(n.gatewayUrl,n.recoveryScope,n.sessionKey):null;if(!a()){if(!e.cleanupOnCancellation())return{status:`interrupted`};let r=t?e.recovering?o?.messageId===n.messageId:$a(n):!1,i=e.recovering?await Bl(e.client,n.sessionKey,n.agentId):await Rl(e.client,n.sessionKey,n.agentId);return i||e.clearRecovery(`resolved`),{status:`cancelled`,cleanupError:i,recoveryPersisted:i?r:!1}}let s=t?e.recovering?o?.messageId===n.messageId:$a(n):!0;if(!a()||!s){if(!e.cleanupOnCancellation()&&!a())return{status:`interrupted`};if(e.recovering&&!s)return{status:`cancelled`,cleanupError:`placement recovery storage is unavailable`,recoveryPersisted:!1};let t=e.recovering?await Bl(e.client,n.sessionKey,n.agentId):await Rl(e.client,n.sessionKey,n.agentId);return t||e.clearRecovery(`resolved`),{status:`cancelled`,cleanupError:t,recoveryPersisted:s}}let c=await Vl(e.client,{key:n.sessionKey,agentId:n.agentId,target:n.target,message:n.message,mentions:n.mentions,attachments:n.attachments,messageId:n.messageId,recovering:e.recovering,cleanupOnCancellation:e.cleanupOnCancellation},a,()=>{if(!t)return r=`unconfirmed`,e.setRecoveryPhase(`sending`,!1),!0;let i=Za(n.gatewayUrl,n.recoveryScope,n.sessionKey);if(i&&i.messageId!==n.messageId)return!1;let a=Qa({...n,phase:`sending`});return a&&(r=`unconfirmed`,e.setRecoveryPhase(`sending`,!0)),a});if(!e.cleanupOnCancellation()&&!a())return{status:`interrupted`};if(c.status===`interrupted`)return c;if(c.status===`cancelled`){let r=await Rl(e.client,n.sessionKey,n.agentId);return r||e.clearRecovery(`resolved`),{status:`cancelled`,cleanupError:r,recoveryPersisted:t}}return c.status===`cleanup-rejected`?i(c.error):c.status===`session-missing`?(e.clearRecovery(`resolved`),{status:`cancelled`,recoveryPersisted:!1}):c.status===`send-not-started`?i(c.error,`not-sent`):c.status===`send-definitive-rejected`?i(c.error,`rejected`):c.status===`dispatch-rejected`||c.status===`send-rejected`?i(c.error):e.isLifecycleCurrent()?e.ownsRecovery()?(e.clearRecovery(`resolved`),c):(e.clearRecovery(`resolved`),{status:`ownership-lost`}):(e.clearRecovery(`interrupted`),{status:`interrupted`})}function Yl(){return(Yl=e((()=>{qn(),zr(),A(),D(),oo(),ql()})))()}function Xl(e){let t=/^data:([^;]+);base64,(.+)$/.exec(e);if(!t)return null;let n=t[1],r=t[2];return n&&r?{mimeType:n,content:r}:null}function Zl(e){return e?.length?e.map(e=>{let t=Ae(e),n=t?Xl(t):null;if(!n)throw Error(H(`chat.sendErrors.outboxPayloadMissing`));return{type:n.mimeType.startsWith(`image/`)?`image`:`file`,mimeType:n.mimeType,fileName:e.fileName,content:n.content}}):void 0}function Ql(e){return e?.length?e.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e,n=typeof t.mimeType==`string`?t.mimeType.trim():``,r=typeof t.content==`string`?t.content:``;return!/^[a-z0-9][a-z0-9!#$&^_.+-]*\/[a-z0-9][a-z0-9!#$&^_.+-]*$/i.test(n)||!/^[A-Za-z0-9+/]+={0,2}$/.test(r)?[]:[{id:Ue(),dataUrl:`data:${n};base64,${r}`,mimeType:n,fileName:typeof t.fileName==`string`?t.fileName:void 0}]}):[]}function $l(){return($l=e((()=>{V(),ye(),se()})))()}function eu(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function tu(){return(tu=e((()=>{})))()}function nu(e,t,n=pt().resourceBasePath){try{let r=new URL(e,su),i=r.origin===su,a=Da(r.pathname,n),o=Ta(`agentAvatar`,r.pathname,n),s=a?`${n}${a}`:o.matched&&o.value?Ca(`agentAvatar`,n,o.value):null;if(!s)return null;let c=`${s}${r.search}`;return i?t?new URL(c,t).toString():c:t&&r.origin===t?t+c:null}catch{return null}}function ru(e){return e.trim().split(/\s+/u).filter(Boolean).slice(0,2).map(e=>fe(e,1)).join(``).toUpperCase()||`?`}function iu(e){let t=e.id?.trim(),n=Vi(e)??`?`;return{kind:`initials`,initials:ru(n),colorSeed:eu(t||n)}}function au(e){return iu(e).colorSeed%360}function ou(e){let t=e.identity;if(t&&t.type!==`profile`&&t.type!==`agent`)return iu(e);let{origin:n,resourceBasePath:r}=pt(),i=e.profileAvatarUrl?.trim();if(i){let e=nu(i,n);if(e&&(!t||Ta(t.type===`agent`?`agentAvatar`:`userAvatar`,new URL(e,su).pathname,r).matched))return{kind:`profile`,url:e}}if(t?.type===`profile`){let e=nu(Ea(t.id),n);if(e)return{kind:`profile`,url:e}}return iu(e)}var su;function cu(){return(cu=e((()=>{Aa(),wa(),sr(),he(),ct(),su=`https://origin-probe.invalid`})))()}function lu(){_u+=1;for(let e of q.values())e.blobUrl&&URL.revokeObjectURL(e.blobUrl);q.clear()}function uu(){for(let[e,t]of q){if(q.size<=mu)break;!t.settled||t.references>0||(q.delete(e),t.blobUrl&&URL.revokeObjectURL(t.blobUrl))}}function du(e){let t=q.get(e);if(q.delete(e),t&&(t.retryAt===void 0||Date.now()<t.retryAt))return q.set(e,t),t.blobUrl??t.promise;let n={blobUrl:null,references:0,settled:!1,promise:Promise.resolve(null)};return n.promise=(async()=>{try{let t=await It(e,hu);if(!t.ok)return null;let r=await t.blob();if(r.size===0||r.size>2097152||!b(r.type))return null;let i=URL.createObjectURL(r);return q.get(e)===n?(n.blobUrl=i,uu(),i):(URL.revokeObjectURL(i),null)}catch{return null}finally{!n.blobUrl&&q.get(e)===n&&(n.settled=!0,n.retryAt=Date.now()+gu,uu())}})(),q.set(e,n),uu(),n.promise}function fu(e){let{authTokens:t,origin:n,resourceBasePath:r}=pt(),i=nu(e,n,r);return i?n||t.length?du(i):i:null}function pu(e){let t=e?[...q.values()].find(t=>t.blobUrl===e||t.promise===e):void 0;if(!t)return()=>void 0;t.references+=1;let n=!1;return()=>{n||(n=!0,--t.references,t.settled=!0,uu())}}var mu,hu,gu,q,_u,vu;function yu(){return(yu=e((()=>{x(),ct(),cu(),mu=128,hu=3e4,gu=6e4,q=new Map,_u=0,Ot(lu),vu=class{constructor(e){this.host=e,this.connected=!1,this.routes=new Map,this.activeRoutes=null,this.generation=_u,e.addController(this)}hostConnected(){this.connected=!0,this.unsubscribeGatewayReset=Ot(()=>this.host.requestUpdate()),this.host.requestUpdate()}hostDisconnected(){this.connected=!1,this.unsubscribeGatewayReset?.(),this.unsubscribeGatewayReset=void 0;for(let e of this.routes.values())e.release?.();this.routes.clear()}withActiveRoutes(e){this.activeRoutes=new Set;try{return e()}finally{for(let[e,t]of this.routes)this.activeRoutes.has(e)||(t.release?.(),this.routes.delete(e));this.activeRoutes=null}}resolve(e){if(!this.connected)return null;if(!e.startsWith(`/`))return e;if(this.generation!==_u){for(let e of this.routes.values())e.release?.();this.routes.clear(),this.generation=_u}this.activeRoutes?.add(e);let t=fu(e),n=this.routes.get(e);if(n&&n.result===t)return n.url;let r={url:null,result:t,release:pu(t)};this.routes.set(e,r);let i=t=>{if(this.generation!==_u||this.routes.get(e)!==r){r.release?.();return}r.url=t};return typeof t==`string`||t===null?i(t):t.then(t=>{i(t),this.connected&&this.routes.get(e)===r&&this.host.requestUpdate()}),n?.release?.(),r.url}}})))()}function bu(e){return e.matches(`:hover`)||e.matches(`:focus-within`)}function xu(e){return e.classList.contains(`hover-marquee`)?e:e.querySelector(`.hover-marquee`)}function Su(e){let t=Pu.get(e);t!==void 0&&(window.clearTimeout(t),Pu.delete(e))}function Cu(e){!Iu&&typeof ResizeObserver==`function`&&(Iu=new ResizeObserver(e=>{for(let t of e){if(!(t.target instanceof HTMLElement))continue;let e=t.target,n=Fu.get(e);if(!n?.isConnected||!bu(n)){Iu?.unobserve(e),Fu.delete(e);continue}Su(e),e.classList.remove(`hover-marquee--scrolling`),wu(n)}})),Iu?.observe(e)}function wu(e){let t=xu(e);if(!t||(Fu.set(t,e),Cu(t),t.classList.contains(`hover-marquee--scrolling`)))return;Su(t);let n=Number.parseFloat(getComputedStyle(t).textIndent)||0,r=t.scrollWidth-n-t.clientWidth;if(r<=1){t.style.removeProperty(`--hover-marquee-shift`),t.style.removeProperty(`--hover-marquee-duration`);return}let i=Number(t.dataset.hoverMarqueeExtraShift??0),a=r+(Number.isFinite(i)?Math.max(0,i):0),o=Math.max(Mu,Math.round(a/ju*1e3));t.style.setProperty(`--hover-marquee-shift`,`${-a}px`),t.style.setProperty(`--hover-marquee-duration`,`${o}ms`);let s=Number(t.dataset.hoverMarqueeDelay);Pu.set(t,window.setTimeout(()=>{Pu.delete(t),t.classList.add(`hover-marquee--scrolling`)},Number.isFinite(s)?Math.max(0,s):Nu))}function Tu(e){let t=xu(e);t&&(Su(t),t.classList.remove(`hover-marquee--scrolling`),Iu?.unobserve(t),Fu.delete(t))}function Eu(e){e.currentTarget instanceof HTMLElement&&wu(e.currentTarget)}function Du(e){e.currentTarget instanceof HTMLElement&&Tu(e.currentTarget)}function Ou(e,t){e instanceof HTMLElement&&queueMicrotask(()=>{let n=e.isConnected?e.closest(`.session-row-host`):null;n&&t(n)&&wu(n)})}function ku(e){Ou(e,e=>e.matches(`:hover`))}function Au(e){Ou(e,bu)}var ju,Mu,Nu,Pu,Fu,Iu;function Lu(){return(Lu=e((()=>{ju=80,Mu=300,Nu=500,Pu=new WeakMap,Fu=new WeakMap})))()}function Ru(e){return e===`none`||e===`person`?e:`project`}function zu(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 Bu(e){let t=e.replace(/[\\/]+$/,``);if(!t)return null;let n=t.match(/^(.*?)[\\/]\.claude[\\/]worktrees[\\/][^\\/]/);return n?n[1]||null:t}function Vu(e){return e.split(/[\\/]/).findLast(Boolean)??e}function Hu(e){let t=[],n=[],r=new Map,i=new Map,a=[];for(let o of e){let e=o.customGroup?.trim();if(e){let n=`custom:${e}`,i=r.get(e);i||(i={kind:`custom`,key:n,legacySectionKey:n,label:e,title:`Custom group: ${e}`,sessions:[]},r.set(e,i),t.push(i)),i.sessions.push(o);continue}let s=o.cwd?.trim(),c=s?Bu(s):null;if(!c){a.push(o);continue}let l=i.get(c);l||(l={kind:`project`,key:`project:${c}`,legacySectionKey:c,label:Vu(c),title:c,sessions:[]},i.set(c,l),n.push(l)),l.sessions.push(o)}return{groups:[...t,...n],ungrouped:a}}function Uu(e){let t=new Map,n=[];for(let r of e){let e=r.createdActor,i=zu(e);if(!e?.identity||!i){n.push(r);continue}let a=`person:${i}`,o=t.get(a);if(!o){let n=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 Wu(){return(Wu=e((()=>{})))()}function Gu(e,t){e.setData(ed,t),e.setData(`text/plain`,t),e.effectAllowed=`copyMove`}function Ku(e){return e?.getData(`application/x-openclaw-session-key`).trim()||null}function qu(e){return Array.from(e?.types??[]).includes(ed)}function Ju(e,t){e.setData(td,t),e.effectAllowed=`move`}function Yu(e){return e?.getData(td).trim()||null}function Xu(e){return Array.from(e?.types??[]).includes(td)}function Zu(e,t){e.setData(nd,t),e.effectAllowed=`move`}function Qu(e){return e?.getData(nd).trim()||null}function $u(e){return Array.from(e?.types??[]).includes(nd)}var ed,td,nd;function rd(){return(rd=e((()=>{ed=`application/x-openclaw-session-key`,td=`application/x-openclaw-session-group`,nd=`application/x-openclaw-sidebar-route`})))()}function id(e,t){let n=new Set(e),r=t.map(e=>T(e.category)).filter(e=>typeof e==`string`&&!n.has(e)).toSorted((e,t)=>e.localeCompare(t));return[...e,...new Set(r)]}function ad(e,t,n=[]){let r=[...new Set(t.map(e=>e.trim()).filter(Boolean))],i=new Set(r),a=[...new Set(n.map(e=>e.trim()).filter(Boolean))],o=new Set(a),s=(oe(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=>vd.includes(e));s.splice(n<0?s.length:n,0,t)}for(let[e,t]of vd.entries()){if(s.includes(t))continue;if(e===0){s.push(t);continue}let n=vd[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 od(e,t,n,r){return Ne(e,t,n,r)}function sd(e){return gd.includes(e)?e:`none`}function cd(e,t){if(typeof e!=`number`||!Number.isFinite(e)||e<=0)return``;let n=new Date(t),r=e=>new Date(n.getFullYear(),n.getMonth(),n.getDate()-e).getTime();return e>=r(0)?`today`:e>=r(1)?`yesterday`:e>=r(6)?`week`:`older`}function ld(e){return e.channel??Fe(e.key)?.channel??``}function ud(e,t,n){switch(t){case`category`:return e.category?.trim()??``;case`person`:return zu(e.owner?.actor);case`channel`:return ld(e);case`kind`:return e.kind;case`agent`:return we(e.key)?.agentId??``;case`date`:return cd(e.updatedAt,n);default:return``}}function dd(e){let t=e.now??Date.now(),n=new Map;for(let r of e.rows){let i=ud(r,e.mode,t),a=n.get(i);a?a.push(r):n.set(i,[r])}return hd(e.mode,n,e.knownCategories??[]).map(e=>({id:e,rows:n.get(e)??[]}))}function fd(e){return e===`none`||e===`person`||e===`project`?e:`category`}function pd(e,t){return t===`category`&&e.pinned!==!0&&!!e.category?.trim()&&e.kind===`group`}function md(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?Bu(t.workContext.path):null;if(e){let n=u.get(e);n?n.rows.push(t):u.set(e,{id:`project:${e}`,project:{name:Vu(e),path:e},rows:[t]});continue}let c=n===`person`?t.owner?.actor:void 0,d=c?.identity?.id,f=zu(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=>pd(e,n));(a.length>0||m)&&p.push({id:`groups`,groups:!0,rows:a}),p.push({id:`work`,work:!0,rows:o});let h=[...new Set((t.catalogIds??[]).map(e=>e.trim()).filter(Boolean))];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 ad(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 hd(e,t,n){if(e===`date`)return _d.filter(e=>t.has(e));if(e===`category`){let e=[...new Set(n.map(e=>e.trim()).filter(Boolean))],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 gd,_d,vd;function yd(){return(yd=e((()=>{Xe(),D(),gd=[`none`,`category`,`person`,`channel`,`kind`,`agent`,`date`],_d=[`today`,`yesterday`,`week`,`older`,``],vd=[`ungrouped`,`groups`,`work`]})))()}function bd(e){return La(e)}function xd(){return(xd=e((()=>{Ra()})))()}function Sd(e,t){return t?{sessionKey:e,...t.agentId?{agentId:t.agentId}:{},runId:t.runId,revision:t.revision,updatedAt:t.updatedAt,headline:t.headline,health:t.health}:null}function Cd(e){return e===`stuck`||e===`waiting-on-user`}function wd(e){return e.localRunId?e.localRunId:!e.session?.hasActiveRun||!e.digest?.runId?null:e.session.activeRunIds?.includes(e.digest.runId)?e.digest.runId:null}function Td(e,t){return e?t?e.revision===t.revision?e.updatedAt>=t.updatedAt?e:t:e.revision>t.revision?e:t:e:t??null}function Ed(){return(Ed=e((()=>{})))()}function Dd(){return(Dd=e((()=>{})))()}var Od;function kd(){return(kd=e((()=>{le(),Od=class{constructor(e,t){this.host=e,this.options=t,this.lifecycle=be({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 Kt(e).effect(t.getGateway,e=>{let t=!this.hasBoundGateway,n=this.hasBoundGateway&&this.currentGateway!==e;this.hasBoundGateway=!0,this.currentGateway=e,this.applySnapshot(e.snapshot,{initial:t,sourceChanged:n});let r=e.subscribe(t=>{this.currentGateway===e&&this.options.getGateway()===e&&this.applySnapshot(t,{initial:!1,sourceChanged:!1})});return()=>r()}),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})}else this.lifecycle.invalidate();this.host.requestUpdate()}applySnapshot(e,t){let n=this.currentClient,r=this.currentConnected,i=e.phase===`connected`,a=n!==e.client,o=r!==i,s=this.lifecycle.transition(e);t.sourceChanged&&!s&&this.lifecycle.invalidate(),this.currentSnapshot=e,this.currentClient=e.client,this.currentConnected=i;let c={snapshot:e,initial:t.initial,sourceChanged:t.sourceChanged,clientChanged:a,connectionChanged:o,identityChanged:!t.initial&&(t.sourceChanged||a),becameConnected:i&&!r};c.identityChanged&&this.options.onIdentityChange?.(c),!t.initial&&(s||t.sourceChanged)&&this.options.invalidateRequests?.(c),this.options.onSnapshot?.(c),i&&(t.initial||c.identityChanged||c.connectionChanged)&&this.options.ensureInitialData?.(),this.host.requestUpdate()}}})))()}function Ad(e){return e?.trim()||void 0}function jd(e){return[...e].map(Ad).filter(e=>e!==void 0).toSorted()[0]}function Md(e){return[Ad(e.host)??``,Ad(e.platform)??``,Ad(e.deviceFamily)??``,Ad(e.instanceId)??``,String(e.ts??0).padStart(16,`0`)].join(`\0`)}function Nd(e,t){return e<t?-1:+(e>t)}function Pd(e){let t=new Map;for(let n of e){if(n.reason===`disconnect`||!n.user?.id)continue;let e=Ia(n.user),r=t.get(e);r?r.push(n):t.set(e,[n])}return{users:[...t.entries()].toSorted(([e],[t])=>e<t?-1:+(e>t)).map(([,e])=>({id:e[0].user.id,identity:e[0].user.identity,name:jd(e.map(e=>e.user?.name)),email:jd(e.map(e=>e.user?.email)),avatarUrl:jd(e.map(e=>e.user?.avatarUrl)),watchedSessions:[...new Set(e.flatMap(e=>e.watchedSessions??[]))].toSorted(),entries:e.toSorted((e,t)=>Nd(Md(e),Md(t)))}))}}function Fd(e){return Kd&&Gd===e?Kd:(Gd=e,Kd=Pd(hn(e)??[]),Kd)}function Id(e){return e.name??e.email??e.id}function Ld(e){let t=(e.entries??[]).flatMap(e=>e.lastInputSeconds===void 0?[]:[e.lastInputSeconds]);return t.length>0&&t.every(e=>e>Wd)}function Rd(e,t){let n=Number(Ld(e))-Number(Ld(t));return n===0?Nd(Id(e).toLowerCase(),Id(t).toLowerCase())||Nd(Ia(e),Ia(t)):n}function zd(e,t){return t?.type===`profile`&&e.identity?.id===t.id}function Bd(e,t,n,r,i=[]){let a=t??vn(hn(e)??[],n),o=a?Ia(a):void 0;return Fd(e).users.filter(e=>Ia(e)!==o&&!i.some(t=>zd(e,t))&&(r===void 0||e.watchedSessions.includes(r)))}function Vd(e,t,n){return Bd(e,t,n).toSorted(Rd)}function Hd(e,t,n,r){return Bd(e,t,n,r).length>0}function Ud(e){return Fd(e).users.length>=2}var Wd,Gd,Kd;function qd(){return(qd=e((()=>{Wd=120})))()}function Jd(){return(Jd=e((()=>{})))()}function Yd(){return(Yd=e((()=>{})))()}function Xd(e){let t=Jn(e);return Fa(t)??t}function Zd(e){return e.status===`missing`?!0:Array.isArray(e.profiles)?e.profiles.some(e=>e.type===`oauth`||e.type===`token`):!1}function Qd(e){let t=new Map;for(let n of e){let e=Xd(n.provider),r=t.get(e)??[];r.push(n),t.set(e,r)}return[...t].map(([e,t])=>{let n=t.reduce((e,t)=>tf.indexOf(t.status)<tf.indexOf(e.status)?t:e);return Object.assign({},n,{provider:e,profiles:t.flatMap(e=>e.profiles)})})}async function $d(e,t){let n={...t?.refresh?{refresh:!0}:{},agentId:t.agentId};return(t?.signal?await e.request(`models.authStatus`,n,{signal:t.signal}):await e.request(`models.authStatus`,n))??ef}var ef,tf;function nf(){return(nf=e((()=>{Kn(),Pa(),ef={ts:0,providers:[]},tf=[`expired`,`missing`,`expiring`,`ok`,`static`]})))()}function rf(){return(rf=e((()=>{})))()}function af(e){window.dispatchEvent(new CustomEvent(Bn,{detail:e}))}function of(e,t){af({open:!0,agentId:t,catalog:e})}function sf(e){af({open:!0,terminalSessionId:e,agentOwned:!1})}function cf(){return(cf=e((()=>{Ln()})))()}var lf;function uf(){return(uf=e((()=>{lf=class{constructor(e,t,n,r=!0){this.intervalMs=t,this.tick=n,this.autoStart=r,this.timer=null,e.addController(this)}hostConnected(){this.autoStart&&this.start()}hostDisconnected(){this.stop()}start(){return this.timer===null&&(this.timer=globalThis.setInterval(()=>{this.tick()},this.intervalMs),!0)}stop(){this.timer!==null&&(globalThis.clearInterval(this.timer),this.timer=null)}}})))()}function df(e){let t=new CustomEvent(gf,{cancelable:!0,detail:e});return globalThis.dispatchEvent(t),t.defaultPrevented}function ff(e,t){let n={},r=e.activeRouteId,i=e.sessionKey;vf.set(e,n);let a={...t,commit:()=>!e.isConnected||e.activeRouteId!==r||e.sessionKey!==i||vf.get(e)!==n?!1:(vf.delete(e),t.commit())};df(a)||a.commit()}function pf(e,t,n){let{client:r,hello:i}=e.snapshot,a={pathname:t,sessionKey:n,client:r,hello:i};_f.set(e,a),globalThis.setTimeout(()=>{_f.get(e)===a&&_f.delete(e)},hf)}function mf(e,t){let n=_f.get(e);if(!n||n.pathname!==t)return;_f.delete(e);let{client:r,hello:i}=e.snapshot;if(n.client===r&&n.hello===i)return n.sessionKey}var hf,gf,_f,vf;function yf(){return(yf=e((()=>{hf=2e3,gf=`openclaw:session-navigation-intent`,_f=new WeakMap,vf=new WeakMap})))()}function bf(e,t,n,r=new Set,i=new Set){let a=new Set(t.map(e=>e.key)),o=new Set(n),s=new Set,c=[],l=[];for(let t of e){let e=mn(t);if(!e)continue;let n=bn(e);if(!s.has(n)){if(e.type===`route`){if(!o.has(e.route))continue;s.add(n),c.push(e),l.push(n);continue}if(e.type===`plugin`){s.add(n),l.push(n),i.has(e.key)&&c.push(e);continue}if(a.has(e.key)){s.add(n),c.push(e),l.push(n);continue}r.has(e.key)||(s.add(n),l.push(n))}}for(let e of t){let t={type:`session`,key:e.key},n=bn(t);s.has(n)||(s.add(n),c.push(t),l.push(n))}return{entries:c,sidebarEntries:l}}function xf(){return(xf=e((()=>{Cn()})))()}function Sf(){let e=null,t=Cf,n=()=>{e!==null&&(globalThis.clearTimeout(e),e=null)};return{cancel:n,reset(){n(),t=Cf},schedule(r){n();let i=t;t=Math.min(t*2,wf),e=globalThis.setTimeout(()=>{e=null,r()},i)}}}var Cf,wf;function Tf(){return(Tf=e((()=>{Cf=3e4,wf=3e5})))()}function Ef(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 Df(e,t){let n=e.trim();return!n||we(n)||!t?.trim()?n:`agent:${s(t)}:${n}`}function Of(e){if(!e||typeof e!=`object`||!(`sessions`in e))return null;let t=e.sessions;return p(t)}function kf(e){let t=new Map,n=new WeakMap,r=new Map,i=new Set,a=new Map,o=new Set,s=Sf(),c=be(e.snapshot),l=null,u=null,d=0,f=!1,m=0,h=!1,g=null,_=null,v=null,y=()=>{for(let e of Array.from(i))e()},b=(e,t)=>{let n=a.get(e);if(n){a.delete(e);for(let e of n)e(t)}},x=()=>{let e=new Map;for(let n of t.values())for(let t of n.keys)e.set(t,(e.get(t)??!1)||n.foreground);return[...e].toSorted(([e,t],[n,r])=>Number(r)-Number(t)||e.localeCompare(n)).slice(0,200).map(([e])=>e)},S=()=>{let e=new Set(x());for(let t of o)e.has(t)||o.delete(t);for(let t of a.keys())e.has(t)||b(t);for(let t of r.keys())e.has(t)||r.delete(t)},C=()=>t.size>0||i.size>0||a.size>0,w=()=>{d+=1,l=null,u=null;let e=r.size>0;r.clear();for(let e of a.keys())b(e);e&&y()},ee=e=>{let t=c.transition(e);t&&w(),(t||e.hello!==l)&&(s.reset(),E())},te=t=>{if(t.event===`sessions.changed`){let n=Ft(t.payload),i=p(t.payload)?.reason;if(!n||!Mf.has(i))return;let a=x().filter(t=>Je({assistantAgentId:e.snapshot.assistantAgentId,hello:e.snapshot.hello,sessionKey:t},n.key,n.agentId));if(a.length===0)return;let c=!1;for(let e of a)c=r.delete(e)||c,o.add(e);s.reset(),c&&y(),E();return}if(t.event!==`controlUi.sessionPullRequests.changed`)return;let n=Of(t.payload);if(!n)return;let i=new Set(x());for(let[e,t]of Object.entries(n)){if(!i.has(e))continue;let n=r.get(e),a=t;n&&t.status===`rate-limited`&&t.pullRequests.length===0?a={...t,pullRequests:n.pullRequests,branch:t.branch??n.branch}:n&&t.status===`unavailable`&&(n.pullRequests.length>0||n.branch!==void 0)&&(a={...n,status:`unavailable`}),r.set(e,a),b(e,a)}y()},ne=()=>{s.reset(),E()},T=()=>{h||(h=!0,c.transition(e.snapshot)&&w(),l=null,u=null,g=e.subscribe(ee),_=e.subscribeEvents(te),typeof document<`u`&&(document.addEventListener(`visibilitychange`,ne),v=document))},re=()=>{h&&(h=!1,g?.(),g=null,_?.(),_=null,v?.removeEventListener(`visibilitychange`,ne),v=null,s.reset(),d+=1,m+=1,f=!1,l=null,u=null,r.clear())};function ie(){if(f=!1,!h)return;let t=e.snapshot,n=t.client;if(t.phase!==`connected`||n===null||t.hello===null||ir(t,`controlUi.sessionPullRequests.subscribe`)!==!0){l=null,u=null;for(let e of a.keys())b(e);C()||re();return}let r=typeof document<`u`&&document.visibilityState===`hidden`?[]:x(),i=new Set(r),c=[...o].filter(e=>i.has(e)),p=JSON.stringify(r.toSorted());if(t.hello===l&&p===u&&c.length===0){C()||re();return}l=t.hello,u=p;let m=++d,g=()=>h&&C()&&m===d&&t.hello===l&&p===u;s.cancel();let _=n.request(jf,{sessionKeys:r,...c.length>0?{refreshSessionKeys:c}:{}});C()||re(),_.then(()=>{if(g()){for(let e of c)o.delete(e);s.reset()}}).catch(()=>{if(g()){u=null,s.schedule(()=>{h&&C()&&E()});for(let e of r)b(e)}})}function E(){if(!h||f)return;f=!0;let e=m;globalThis.queueMicrotask(()=>{e===m&&ie()})}let ae=(e,n,r={})=>{let i=C(),a=new Set(n.map(e=>e.trim()).filter(Boolean)),o=t.get(e);(o===void 0?a.size===0:o.keys.size===a.size&&o.foreground===(r.foreground===!0)&&[...a].every(e=>o.keys.has(e)))||(a.size===0?t.delete(e):t.set(e,{keys:a,foreground:r.foreground===!0}),s.reset(),S(),C()?(i||(l=null,u=null),T(),E()):h&&ie())};return{watch:ae,unwatch:e=>{n.delete(e),ae(e,[])},load:async(i,o)=>{let s=o.trim();if(!s)return;let c={};n.set(i,c),ae(i,[s],{foreground:!0});try{return r.get(s)||(e.snapshot.phase!==`connected`||ir(e.snapshot,`controlUi.sessionPullRequests.subscribe`)!==!0?void 0:await new Promise(e=>{let t=a.get(s)??new Set;t.add(e),a.set(s,t),E()}))}finally{let e=t.get(i);n.get(i)===c&&e?.keys.size===1&&e.keys.has(s)&&(n.delete(i),ae(i,[]))}},refresh:e=>{let t=e.trim();!t||!x().includes(t)||(o.add(t),s.reset(),E())},get:e=>r.get(e),subscribe:e=>{let t=C();return i.add(e),t||(l=null,u=null),T(),()=>{i.delete(e)&&(C()?E():h&&ie())}}}}function Af(e){let t=Nf.get(e);if(t)return t;let n=kf(e);return Nf.set(e,n),n}var jf,Mf,Nf;function Pf(){return(Pf=e((()=>{Oa(),ar(),Tf(),tt(),D(),jf=`controlUi.sessionPullRequests.subscribe`,Mf=new Set([`new`,`reset`,`branch-switch`,`fork`,`rewind`]),Nf=new WeakMap})))()}async function Ff(e){if(e.initialResult===null)return[];let t=new Map,n;for(let r=0;r<If;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);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(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 If;function Lf(){return(Lf=e((()=>{If=4})))()}async function Rf(e){let t=e.pageSize??zf;return Ff({list:n=>e.sessions.list({spawnedBy:e.parentKey,...n>0?{offset:n}:{},limit:t,includeGlobal:!1,includeUnknown:!1,configuredAgentsOnly:!0}),isCurrent:e.isCurrent,missingResultError:`child session list returned no result`,mapPageRows:e=>{let t=Date.now();return e.map(e=>({...e,runtimeSampledAt:t}))}})}var zf;function Bf(){return(Bf=e((()=>{Lf(),zf=100})))()}var Vf;function Hf(){return(Hf=e((()=>{Vf=`https://discord.gg/clawd`})))()}function Uf(){return(Uf=e((()=>{})))()}function Wf(e){if(!e)return`ltr`;for(let t of e){if(Kf.test(t))return`rtl`;if(qf.test(t))return`ltr`;if(!Jf.test(t))return Gf.test(t)?`rtl`:`ltr`}return`ltr`}var Gf,Kf,qf,Jf;function Yf(){return(Yf=e((()=>{Gf=/\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,Kf=/[\u061C\u200F\u202B\u202E\u2067]/u,qf=/[\u200E\u202A\u202D\u2066]/u,Jf=/[\s\p{P}\p{S}\p{Cf}]/u})))()}function Xf(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 Zf(e,t){return`${e}\0${t}`}function Qf(e){let t=yp.get(e);return t||(t={resources:new Map,children:new Set},yp.set(e,t)),t}function $f(e,t){!t.owner&&t.children.size===0&&t.resources.size===0&&yp.delete(e)}function ep(e,t){if(e.subscribers.delete(t),e.subscribers.size>0)return;e.refresh&&=(clearTimeout(e.refresh.timer),void 0);let n=Zf(e.kind,e.cacheKey);vp.get(n)===e&&vp.delete(n),e.abortController?.abort(),e.abortController=void 0}function tp(e,t,n,r=t){let i=Zf(e,t),a=vp.get(i);if(a||(a={kind:e,cacheKey:t,value:void 0,pending:void 0,subscribers:new Set,retryAttempted:!1,unavailableAt:void 0,abortController:void 0,refresh:void 0},vp.set(i,a)),n){let t=Qf(n).resources,i=Zf(e,r),o=t.get(i);o&&o!==a&&ep(o,n),t.set(i,a),a.subscribers.add(n)}return a}function np(e){return vp.get(Zf(e.kind,e.cacheKey))===e}function rp(){return Sp}function ip(e){if(np(e)){Sp=(Sp+1)%(2**53-1);for(let t of Array.from(e.subscribers))e.subscribers.has(t)&&t()}}function ap(e,t,n){if(e.refresh?.at===t||(e.refresh&&=(clearTimeout(e.refresh.timer),void 0),t===void 0||e.subscribers.size===0))return;let r={at:t,timer:setTimeout(()=>{!np(e)||e.refresh!==r||(e.refresh=void 0,n())},Math.max(0,t-Date.now()))};e.refresh=r}function op(e,t){let n=Qf(t);if(n.owner!==e){if(n.owner){let e=n.owner,r=yp.get(e);r&&(r.children.delete(t),$f(e,r))}Qf(e).children.add(t),n.owner=e}}function sp(e){let t=e&&yp.get(e);if(!(!e||!t)){yp.delete(e);for(let e of t.children)sp(e);if(t.owner){let n=yp.get(t.owner);n&&(n.children.delete(e),$f(t.owner,n))}for(let n of new Set(t.resources.values()))ep(n,e)}}function cp(){let e=[...vp.entries()].filter(([,e])=>e.kind===`managed-image`&&e.value===null&&e.subscribers.size===0&&!e.pending);for(let[t]of e.slice(0,-64))vp.delete(t)}function lp(e){let t=bp.get(e);if(t)return bp.delete(e),bp.set(e,t),t.url}function up(){for(;bp.size>xp;){let e=[...bp].find(([,e])=>e.retainCount===0);if(!e)return;let[t,n]=e;bp.delete(t);let r=Zf(`managed-image`,t),i=vp.get(r);i?.value===n.url&&i.subscribers.size===0&&vp.delete(r),URL.revokeObjectURL(n.url)}}function dp(e){let t=bp.get(e);if(!t)return;t.retainCount+=1;let n=!1;return()=>{if(n)return;n=!0;let t=bp.get(e);t&&t.retainCount>0&&--t.retainCount,up()}}function fp(e,t){let n=bp.get(e);bp.delete(e),bp.set(e,{url:t,retainCount:n?.retainCount??0}),n&&n.url!==t&&URL.revokeObjectURL(n.url),up()}function pp(e,t){e.some(e=>t.factIndex===void 0?e.factIndex===void 0&&e.url===t.url&&e.alt===t.alt:e.factIndex===t.factIndex)||e.push(t)}function mp(e,t){return e.startsWith(`data:`)?e:`data:${typeof t==`string`?t:`image/png`};base64,${e}`}function hp(e,t,n=Date.now()){let r=ae(e),i=Array.isArray(r.content)?r.content:[],o=[],s=[],c=new Set,l=0,u,f=e=>{(e.type===`attachment_error`||!c.has(e.attachment.url))&&(s.push(e),e.type===`attachment`&&c.add(e.attachment.url))};for(let e of t)(e.type===`attachment`||e.type===`attachment_error`)&&f(e);let p=(e,t,n)=>{if(typeof e!=`string`||!pl(e,t))return!1;try{let t=new URL(e,window.location.href);if(t.protocol!==`http:`&&t.protocol!==`https:`||t.origin===window.location.origin)return!1}catch{return!1}let r=a(n?.sizeBytes);return f({type:`attachment`,attachment:{url:e,kind:`image`,label:typeof n?.fileName==`string`&&n.fileName.trim()||typeof n?.alt==`string`&&n.alt.trim()||gl(e),mimeType:typeof t==`string`?t:`image/svg+xml`,...typeof n?.artifactId==`string`?{artifactId:n.artifactId}:{},...r===void 0?{}:{sizeBytes:r}}}),!0},m=ae(ae(r.__openclaw).mediaImageLayout),h=Array.isArray(m.slots)?m.slots.map(ae):[],g=h.length>0?new Set(h.map(e=>e.factIndex)):void 0,_=g!==void 0&&!(Array.isArray(m.suppressedFactIndexes)&&m.suppressedFactIndexes.length>0)&&h.every(e=>(e.kind===`inline`||e.kind===`offloaded`)&&typeof e.factIndex==`number`&&Number.isSafeInteger(e.factIndex)&&e.factIndex>=0)&&g.size===h.length,v=_?h.filter(e=>e.kind===`inline`):[],y=0;for(let e of i){let t=d(e);if(!t)continue;let r=d(t.source);if(t.type===`image`){let e=v[y++]?.factIndex,n=T(t.url)??T(r?.url),i=p(n,t.mimeType??r?.media_type,t),s=r?.type===`base64`&&typeof r.data==`string`?r:void 0,c=s?s.data:t.data,l=typeof c==`string`?mp(c,s?s.media_type:t.mimeType):!i&&n!==void 0?n:void 0;l!==void 0&&o.push({url:l,...typeof e==`number`?{factIndex:e}:{},artifactId:typeof t.artifactId==`string`?t.artifactId:void 0,alt:typeof t.alt==`string`?t.alt:void 0,fileName:typeof t.fileName==`string`?t.fileName:void 0,openUrl:typeof t.openUrl==`string`?t.openUrl:void 0,sizeBytes:a(t.sizeBytes),width:typeof t.width==`number`?t.width:void 0,height:typeof t.height==`number`?t.height:void 0})}else if(t.type===`image_url`){let e=T(d(t.image_url)?.url);e!==void 0&&!p(e)&&o.push({url:e})}else if(t.type===`input_image`){let e=[],n=T(t.image_url)??T(d(t.image_url)?.url);n!==void 0&&!p(n)&&e.push({url:n});let i=T(r?.url),a=p(i,r?.media_type);i!==void 0&&!a?pp(e,{url:i}):typeof r?.data==`string`&&pp(e,{url:mp(r.data,r.media_type)}),o.push(...e)}else if(t.type===`openclaw_pairing_qr`){let e=a(t.expiresAtMs);if(e!==void 0){if(e<=n){l+=1;continue}u=Math.min(u??e,e)}let r=T(t.image_url);r!==void 0&&o.push({url:r,alt:typeof t.alt==`string`?t.alt:void 0})}}if(y!==v.length)for(let e of o)delete e.factIndex;for(let{path:t,mediaType:n,fileName:r,sizeBytes:i,durationMs:a,width:s,height:c,factIndex:l}of Di(e)){let e=fl(t,n),u=e&&pl(t,n);e&&!u?pp(o,{url:t,fileName:r,sizeBytes:i,..._&&g.has(l)?{factIndex:l}:{}}):f({type:`attachment`,attachment:{url:t,kind:u?`image`:ml(t,n)?`audio`:hl(t,n)?`video`:`document`,label:r?.trim()||gl(t),...typeof n==`string`?{mimeType:n}:{},...i===void 0?{}:{sizeBytes:i},...a===void 0?{}:{durationMs:a},...s===void 0?{}:{width:s},...c===void 0?{}:{height:c}}})}return{images:o,attachments:s,expiredPairingQrCount:l,nextPairingQrExpiresAt:u}}function gp(e,t,n){if(!n)return;if(t===void 0){let t=yp.get(n),r=Zf(`pairing-qr`,e),i=t?.resources.get(r);t&&i&&(t.resources.delete(r),ep(i,n),$f(n,t));return}let r=tp(`pairing-qr`,e,n);ap(r,t,()=>ip(r))}function _p(e,t=li(e).content){let{images:n,attachments:r}=hp(e,t);return[...n.map(e=>e.fileName?.trim()||e.alt?.trim()||H(`chat.imageLightbox.untitled`)),...t.flatMap(e=>{if(e.type!==`omitted_media`)return[];let t=e.media.sizeBytes===void 0?H(`chat.attachments.omittedFromHistory`):H(`chat.attachments.omittedFromHistoryWithSize`,{size:et(e.media.sizeBytes)});return[`${H(`chat.attachments.image`)} · ${t}`]}),...r.map(e=>e.attachment.label.trim()||H(`chat.attachments.attachedFile`))].join(`
`)}var vp,yp,bp,xp,Sp;function Cp(){return(Cp=e((()=>{w(),V(),Dt(),ca(),Cr(),xl(),vp=new Map,yp=new Map,bp=new Map,xp=64,Sp=0})))()}function wp(e){if(!p(e))return null;try{return li(e)}catch{return null}}function Tp(e){return e.messages.some(({message:e})=>{let t=p(p(e)?.provenance);return t?.kind===`inter_session`&&t.sourceTool===`sessions_send`})}function Ep(e){return!!e.senderSession||Tp(e)}function Dp(e){return p(p(e.messages[0]?.message)?.__openclaw)?.turnBoundary===!0}function Op(e){if(e.kind===`notice`)return e.startsTurn===!0;if(e.kind===`message`)return xr(Or(e.message)).toLowerCase()===`user`;if(e.kind!==`group`)return!1;let t=e.role.toLowerCase();return t===`user`||Dp(e)||t===`assistant`&&Tp(e)}function kp(){return(kp=e((()=>{Cr()})))()}function Ap(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=Mr(e);return n&&si(n,t)})?e:{...r,content:[...i,{type:`canvas`,preview:t,...n?{rawText:n}:{}}]}}function jp(e,t){let n=u(t);return!n||u(na(e)).includes(n)}function Mp(e){if(!wp(e))return null;let t=Sr(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:Zp(e)}}let n=na(e)??void 0,r=e,i=typeof r.toolName==`string`?r.toolName:typeof r.tool_name==`string`?r.tool_name:void 0,a=Nr(n,i);return a?.kind===`canvas`?{preview:a,text:n??null,timestamp:Zp(e)}:null}function Np(e,t){let n=Rp(p(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 Pp(e,t=e.timestamp){return Ap({role:`assistant`,content:[],...t==null?{}:{timestamp:t}},e.preview,e.text)}function Fp(e,t){let n=null;for(let r=t-1;r>=0&&(n=Zp(e[r]),n==null);--r);let r=null;for(let n=t+1;n<e.length&&(r=Zp(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 Ip(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||!Op(n))continue;let r=n.kind===`notice`?n.timestamp:n.kind===`message`?wp(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=p(r.message);if(typeof i?.role!=`string`||i.role.toLowerCase()!==`assistant`)continue;o={index:n,item:r};let a=wp(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 Lp(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=wp(n.message);if(r&&xr(r.role).toLowerCase()===`user`&&r.timestamp!=null&&r.timestamp>t)return i}return r}function Rp(e){for(let t of[`tool_call_id`,`toolCallId`,`tool_use_id`,`toolUseId`]){let n=e[t];if(typeof n==`string`&&n.trim())return n.trim()}}function zp(e,t){return Na(e)??Rp(t)}function Bp(e){return p(p(e)?.__openclaw)?.kind===`pending-send`}function Vp(e){let t=p(p(e)?.__openclaw),n=t?.state,r=t?.id;return t?.kind!==`pending-send`||n!==`failed`&&n!==`unconfirmed`||typeof r!=`string`?null:{id:r,state:n,...typeof t.error==`string`?{error:t.error}:{}}}function Hp(e){let t=p(e),n=typeof t?.messageId==`string`&&t.messageId.trim()?t.messageId:t?.id;return U(e,{messageId:n})}function Up(e){let t=Hp(e);return t?.role===`user`?t.runId:null}function Wp(e){let t=Hp(e)?.id;return Bp(e)||t?.startsWith(`pending:`)?null:t??null}function Gp(e){let t=Hp(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 Kp(e){if(e&&typeof e==`object`){let t=nm.get(e);if(t)return t}let t=p(e),n=[typeof t?.role==`string`?t.role:``,typeof t?.toolCallId==`string`?t.toolCallId:``,t?na(e):``].join(`\0`),r=`p${eu(n).toString(36)}${n.length.toString(36)}`;return e&&typeof e==`object`&&nm.set(e,r),r}function qp(e,t=Gp){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:${Kp(e)}`:a??`legacy`,s=i.get(o)??0;i.set(o,s+1);let c=p(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 Jp(e,t=wp(e)){if(!t)return!1;let n=xr(t.role),r=n===`assistant`&&t.senderLabel?.trim();return!!(n===`tool`||t.content.length||t.replyTarget||r||n===`user`&&Di(e).length)}function Yp(e){let t=_i(e);return t.trim().length>0?t:``}function Xp(e){return wl({text:e.text,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 Zp(e){return a(p(e)?.timestamp)??null}function Qp(e){switch(e.kind){case`message`:return Zp(e.message);case`divider`:case`notice`:return e.timestamp;case`stream`:case`question`:return e.startedAt;case`reading-indicator`:return null}return null}function $p(e,t){let n=e.reduce((e,t)=>{let n=Qp(t);return n==null?e:e==null||n>e?n:e},null);return n!=null&&t<=n?n+1:t}function em(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 tm(e,t){let n=new Map,r=new Map;for(let{item:e,bounds:i,predecessorKey:a}of t){let t=Qp(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=Qp(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}=em(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=Qp(e);return r==null||r>n});o===-1?e.splice(a,0,t):e.splice(o,0,t)}}var nm;function rm(){return(rm=e((()=>{Zn(),w(),qn(),ja(),ca(),Cr(),mi(),kp(),Tl(),nm=new WeakMap})))()}function im(e,t){let n=[];if(!e.length)return n;for(let r of e)t?.trim()&&!jp(r.message,t)||(n.push(...qp([r.message],()=>r.runId?`send:${r.runId}`:`pending-input:${r.id}`)),r.state!==`queued`&&n.push({kind:`notice`,key:`pending-input:${r.id}:state`,timestamp:r.acceptedAt,text:H(r.state===`cancelled`?`chat.pendingInputs.cancelled`:`chat.pendingInputs.interrupted`)}));return n}function am(e){let t=um.get(e);return t?.sessionKey===e.sessionKey&&t.sessionId===(e.currentSessionId??null)&&t.agentId===M(e)?t:void 0}function om(e){um.delete(e)}function sm(e){let t=[...rc(e,K(e,{agentId:M(e)})).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)];return[...new Set(t.filter(e=>!!(e&&e.length<=256)))].toSorted().slice(0,50)}function cm(e,t,n={}){let{page:r,acceptedRunIds:i}=lc(e,t,n.receipts);if(um.set(e,{sessionKey:e.sessionKey,sessionId:e.currentSessionId??null,agentId:M(e),page:r,before:n.before,loading:!1}),i.size)for(let t of e.chatQueue)t.sendRunId&&i.has(t.sendRunId)&&(!t.sessionId||t.sessionId===e.currentSessionId)&&Ms(e,t.id);e.requestUpdate?.()}async function lm(e,t){let n=am(e),r=e.client;if(!n||n.loading||!r||!e.connected)return;let i=e.connectionEpoch;n.loading=!0,n.error=void 0,e.requestUpdate?.();let a=()=>am(e)===n&&e.client===r&&e.connected&&e.connectionEpoch===i;try{let i=await r.request(`chat.history`,{sessionKey:e.sessionKey,agentId:n.agentId,limit:20,...t===void 0?{}:{pendingBefore:t}});a()&&i.sessionId===n.sessionId&&cm(e,i.pendingInputs,{before:t})}catch(e){a()&&(n.error=O(e))}finally{n.loading=!1,a()&&e.requestUpdate?.()}}var um;function dm(){return(dm=e((()=>{qn(),V(),A(),D(),Ls(),rm(),hc(),um=new WeakMap})))()}function fm(e,t,n,r){return t&&e&&typeof e==`object`&&bm.set(e,{runId:t,...n?{afterBoundaryRunId:n}:{},...r?{disposition:r}:{}}),e}function pm(e,t){return!!(e&&typeof e==`object`&&bm.get(e)?.runId===t)}function mm(e){return e&&typeof e==`object`?bm.get(e)?.runId??null:null}function hm(e){return e&&typeof e==`object`?bm.get(e)?.afterBoundaryRunId??null:null}function gm(e){return e&&typeof e==`object`?bm.get(e)?.disposition??null:null}function _m(e){let t=p(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||xm.set(e.host,{historyApplied:!1,messageId:r,runId:e.event.clientRunId??e.event.runId??e.runIdBeforeApply,sessionKey:e.event.key})}function vm(e){let t=xm.get(e.host),n=!!(t&&N(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:(xm.set(e.host,{...t,historyApplied:!0}),e.previousMessages.filter(e=>!pm(e,t.runId)))}function ym(e,t){let n=xm.get(e);return n?.runId===t&&n.historyApplied}var bm,xm;function Sm(){return(Sm=e((()=>{Zn(),D(),bm=new WeakMap,xm=new WeakMap})))()}function Cm(e,t){return JSON.stringify([e,t])}function wm(e,t,n,r){if(!n)return;let i=r?Cm(r,n):n;t.has(i)||(t.add(i),e.push({id:n,...r?{runId:r}:{}}))}function Tm(e){return Ma(e.type)||ka(e.type)}function Em(e){let t=p(e);if(!t)return[];let n=[],r=new Set,i=Array.isArray(t.content)?t.content.filter(e=>!!e&&typeof e==`object`):[],a=Na({...t,id:void 0}),o=U(t)?.runId??T(t.runId),s=t.role;(typeof s==`string`&&xr(s).toLowerCase()===`tool`||Am.some(e=>!!T(t[e]))||i.some(Tm))&&wm(n,r,a,o);for(let e of i)Tm(e)&&wm(n,r,Na(e)??a,T(e.runId)??o);return n}function Dm(e){return Array.isArray(e.toolStreamOrder)?e.toolStreamOrder.filter(e=>typeof e==`string`&&!!e.trim()).map(t=>{let n=p(e.toolStreamById?.get(t)),r=p(n?.message),i=T(n?.toolCallId)??(r?Na(r):void 0)??t,a=T(n?.runId)??T(r?.runId);return a?{identity:t,id:i,runId:a}:{identity:t,id:i}}):[]}function Om(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 km(e,t){let n=Dm(t),r=new Set;if(n.length===0)return r;let i=e.findLastIndex(e=>{let t=p(e)?.role;return typeof t==`string`&&xr(t).toLowerCase()===`user`});for(let t of e.slice(i+1))for(let e of Em(t)){let t=Om(e,n);t&&r.add(t)}return r}var Am;function jm(){return(jm=e((()=>{Zn(),ja(),Cr(),Am=[`toolName`,`tool_name`]})))()}function Mm(e){let t=U(e);if(t?.runId)return t.runId;let n=p(e);return mm(e)??T(n?.runId)??T(p(n?.openclawStreamFallback)?.runId)}function Nm(e){return $n(e)!==void 0}function Pm(e){let t=T(e);return t?{runId:t}:void 0}function Fm(e){let t=T(e);return t?{boundaryId:`send:${t}`}:void 0}function Im(){let e=new Map,t=new Map;return{add(n,r,i){r&&(n&&e.set(Cm(n,r),i),t.set(r,t.has(r)?null:i))},get(n,r){return r?(n?e.get(Cm(n,r)):void 0)??t.get(r)??void 0:void 0}}}function Lm(e){return e.kind===`message`&&Op(e)}function Rm(e){let t=e.findLast(Lm);return t?{afterKey:t.key}:null}function zm(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(!Lm(i))continue;let a=Up(i.message);a!==null&&t.set(a,{afterKey:i.key,...n?{beforeKey:n}:{}}),n=i.key}}return t.get(n)??null}}function Bm(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 Vm(e,t){if(t.length===0)return;let n=new Map,r={};for(let t of e)if(t.kind===`divider`&&n.clear(),Op(t)||t.kind===`divider`)r.beforeKey=t.key,r={afterKey:t.key};else if(t.kind===`message`)for(let e of Em(t.message)){if(!e.runId)continue;let t=Cm(e.runId,e.id);n.set(t,n.has(t)&&n.get(t)!==r?null:r)}for(let e of t){let t=Em(e.item.message).map(e=>e.runId?n.get(Cm(e.runId,e.id)):void 0),[r]=t;r&&t.every(e=>e===r)&&(e.bounds=r)}}function Hm(){return(Hm=e((()=>{Zn(),rm(),kp(),Sm(),jm()})))()}function Um(e,t=e.length){for(let n=t-1;n>=0;--n)if(U(e[n])?.role===`user`)return n;return-1}function Wm(e){let t=p(p(e)?.__openclaw);return T(t?.steerTargetRunId)??null}function Gm(e){for(let t of e){let e=Up(t);if(e)return e}return null}function Km(e){for(let t of e){let e=Wm(t);if(e)return e}return null}function qm(e,t){let n=new Map,r=new Map;for(let[i,a]of e.entries()){let e=t(a),o=Gm(e);o&&!n.has(o)&&n.set(o,i);let s=Km(e);if(s){let e=r.get(s)??[];e.push(i),r.set(s,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 Jm(e,t){for(let n=e.length-1;n>=0;--n){if(U(e[n])?.role!==`user`||Wm(e[n])!==t)continue;let r=Up(e[n]);if(r)return{index:n,runId:r}}return null}function Ym(e){let t=e.chatStreamSegments??[];for(let e=t.length-1;e>=0;--e){let n=T(t[e]?.boundaryRunId);if(n)return n}}function Xm(e,t){let n=t.afterBoundaryRunId?e.findIndex(e=>Up(e)===t.afterBoundaryRunId):-1,r=t.boundaryRunId?e.findIndex(e=>Up(e)===t.boundaryRunId):-1;if(r>=0)return{start:n>=0?n+1:Um(e,r)+1,end:r};if(n>=0){let t=e.findIndex((e,t)=>t>n&&U(e)?.role===`user`);return{start:n+1,end:t>=0?t:e.length}}let i=t.runId?e.findIndex(e=>Up(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:Um(e,a)+1,end:a}}function Zm(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 Qm(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 $m(e,t,n,r=e.length){let i=-1;for(let a=0;a<r;a+=1){let r=e[a],o=U(r),s=o?.runId===n&&!Nm(r)?qi(r):null;if(o?.role===`assistant`&&s&&(t.startsWith(s)||s.startsWith(t))){i=a;break}}let a=i>=0?i:Um(e,r)+1;return eh(e.slice(a,r).map(e=>{let t=U(e);return t?.role===`assistant`&&(!t.runId||t.runId===n)&&!Nm(e)?qi(e):null}),t)}function eh(e,t){let n=0;for(let r 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 i=n>0?/^\s+/u.exec(e)?.[0]:void 0;if(i&&e.slice(i.length).startsWith(r)){n+=i.length+r.length;continue}if(i&&r.startsWith(e.slice(i.length)))return null;if(n>0)break}return t.slice(n)}function th(e,t){let n=e.chatMessages,r=e.chatRunId;if(!Array.isArray(n)||!r)return null;let i=Jm(n,r);if(!i||i.index<=0)return null;let a=$m(n,t,r,i.index);return a===t?null:{boundaryRunId:i.runId,prefix:a===null?t:t.slice(0,t.length-a.length)}}function nh(e,t){if(Array.isArray(e.content)){let n=!1,r=e.content.flatMap(e=>{let r=p(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 rh(e,t){return!!(e?.boundaryRunId&&t.startsWith(e.prefix))}function ih(e,t){let n=qi(e);if(!n)return{kind:`none`};let r=null,i=[],a=null;for(let[e,n]of(t.chatStreamSegments??[]).entries()){if(ai(n)&&typeof n.text==`string`){let t=ur(r,n.text);t!==r&&i.push(e),r=t}let t=T(n.boundaryRunId);t&&r&&(a={boundaryRunId:t,prefix:r,segmentIndexes:[...i]})}let o=th(t,n),s=rh(a,n)?a:rh(o,n)?o:null;if(!s)return{kind:`none`};let c=n.slice(s.prefix.length).trimStart();return{kind:`split`,afterBoundaryRunId:s.boundaryRunId,afterSequence:U(t.chatMessages?.find(e=>Up(e)===s.boundaryRunId))?.sequence??null,replacedSegmentIndexes:s===o&&a?a.segmentIndexes:[],tailMessage:c?nh(e,c):null}}function ah(e){let t=e.messages;if(!t)return;let n=t.findIndex(t=>Up(t)===e.boundaryRunId),r=e.afterBoundaryRunId??e.runId,i=t.findIndex(e=>Up(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=Up(t[e]);if(n)return n}}function oh(e,t){if(e.chatRunId!==t.runId)return;let n=e.chatStreamSegments??[],r;for(let e=n.length-1;e>=0&&(r=T(n[e]?.boundaryRunId),!r);--e);let i=typeof e.chatStream==`string`,a=i&&!!e.chatStream?.trim(),o=t.boundaryRunId?ah({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 sh(){return(sh=e((()=>{Zn(),ca(),rm(),Hm()})))()}function ch(e,t=!1){let n=e.colorSeed%360;return I`
    <span
      class="chat-author-avatar__initials ${t?`chat-author-avatar__fallback`:``}"
      style=${`--chat-author-avatar-hue: ${n}`}
      aria-hidden="true"
    >
      ${e.initials}
    </span>
  `}function lh(e){return e.imageUrl?I`
    ${gi({view:e,fallbackSelector:`.chat-author-avatar`,className:`chat-author-avatar__image`,ariaHidden:!0})}${ch(e.fallback,!0)}
  `:ch(e.fallback)}function uh(e){let t=Vi(e);if(!e||!t)return L;let n=pi(e),r=lh(n);return I`<span
    class=${jr(`chat-author-avatar`,n)}
    role="img"
    aria-label=${t}
    title=${t}
  >
    ${r}
  </span>`}function dh(){return(dh=e((()=>{F(),Dr(),sr()})))()}function fh(){return(fh=e((()=>{})))()}function ph(e,t){let n=ul(e),r=t?.split(`;`,1)[0]?.trim().toLowerCase(),i=(n?gh.find(e=>e.extensions.includes(n)):void 0)??(r?gh.find(e=>e.mimeTypes.includes(r)):void 0)??_h,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 mh(e){return yn(`file-icons/${e}.svg`)}function hh(e){let t=ph(e.filename,e.mimeType),n=e.mode===`large-placeholder`,r=n?`44px`:`20px`,i=n?mh(`large/shell-light`):t.compact?mh(`compact/light/${t.compact}`):mh(`compact/unknown-light`),a=n?mh(`large/shell-dark`):t.compact?mh(`compact/dark/${t.compact}`):mh(`compact/unknown-dark`);return I`<span
    class="chat-attachment-file-icon ${e.unavailable?`chat-attachment-file-icon--unavailable`:``}"
    data-family=${t.family}
    data-mode=${e.mode}
    aria-hidden="true"
    style=${sn({width:r,height:r,"--chat-file-icon-light":`url("${i}")`,"--chat-file-icon-dark":`url("${a}")`,"--chat-file-icon-overlay":`url("${mh(`overlays/${t.family}`)}")`,"--chat-file-icon-accent":t.accent})}
  >
    ${n?I`<span class="chat-attachment-file-icon__overlay"></span>`:null}
  </span>`}var gh,_h;function vh(){return(vh=e((()=>{F(),Jt(),gn(),xl(),gh=[{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`}],_h=gh[0]})))()}function yh(e){return I`<div
    class="chat-assistant-attachment-card chat-assistant-attachment-card--compact"
    ?data-openable=${!!e.onExpand}
    @click=${t=>bh(t,e.onExpand)}
  >
    ${Ch({...e,visualMode:`large-placeholder`})}
  </div>`}function bh(e,t){if(!t||e.defaultPrevented)return;let n=e.target,r=e.currentTarget;if(n instanceof Element&&r instanceof Element){let e=n.closest(wh);if(e&&r.contains(e))return}t()}function xh(e,t,n){return e===`audio`?H(`chat.attachments.audio`):e===`video`?H(`chat.attachments.video`):e===`image`?H(`chat.attachments.attachedFile`):ph(t,n).extensionLabel}function Sh(e){return hh({filename:e.label,mimeType:e.mimeType,mode:e.visualMode??`large-placeholder`,unavailable:e.unavailable})}function Ch(e){let t=e.visualMode===`preview-with-favicon`,n=e.sizeBytes===void 0?void 0:et(e.sizeBytes),r=[xh(e.kind,e.label,e.mimeType),n].filter(Boolean).join(` · `),i=H(`chat.mediaPlayer.download`,{filename:e.label}),a=e.onExpand!==void 0,o=e.expandLabel??H(`chat.attachments.expand`,{filename:e.label}),s=`chat-assistant-attachment-card__action chat-assistant-attachment-card__download chat-assistant-attachment-card__download--ghost ${a?`chat-assistant-attachment-card__download--secondary`:``}`;return I`
    <div
      class="chat-assistant-attachment-card__header ${t?`chat-assistant-attachment-card__header--preview`:``}"
    >
      <div class="chat-assistant-attachment-card__identity">
        ${Sh({label:e.label,mimeType:e.mimeType,visualMode:e.visualMode})}
        <span
          class="chat-assistant-attachment-card__details ${t?`chat-assistant-attachment-card__details--preview`:``}"
        >
          <span class="chat-assistant-attachment-card__title" title=${e.label}
            >${e.label}</span
          >
          ${t?n?I`<span class="chat-assistant-attachment-card__separator" aria-hidden="true"
                      >·</span
                    ><span class="chat-assistant-attachment-card__meta">${n}</span>`:null:I`<span class="chat-assistant-attachment-card__meta">${r}</span>`}
        </span>
      </div>
      <span class="chat-assistant-attachment-card__actions">
        ${e.voiceNote&&!t?I`<span class="chat-assistant-attachment-badge"
                >${H(`chat.messages.voiceNote`)}</span
              >`:null}
        ${e.downloadHref?I`<a
                class=${s}
                href=${e.downloadHref}
                download=${e.label}
                target="_blank"
                rel="noreferrer"
                aria-label=${i}
                title=${i}
                >${B.download}</a
              >`:null}
        ${a?I`<button
                type="button"
                class="chat-assistant-attachment-card__action ${t?`chat-assistant-attachment-card__expand--icon`:`chat-assistant-attachment-card__action--labeled`} chat-assistant-attachment-card__expand"
                aria-label=${o}
                title=${o}
                @click=${e.onExpand}
              >
                ${t?B.chevronsUpDown:I`<span>${H(`chat.attachments.open`)}</span>`}
              </button>`:null}
      </span>
    </div>
  `}var wh;function Th(){return(Th=e((()=>{F(),z(),V(),Dt(),vh(),wh=`a, button, input, select, textarea, audio, video, iframe, [contenteditable='true'], [tabindex], [role='button']`})))()}function Eh(e){let t=e.trim();if(t){if(t.startsWith(`/`)&&!t.startsWith(`//`)&&!t.startsWith(`/\\`))return t;try{return Oh.has(new URL(t).protocol.toLowerCase())?t:void 0}catch{return}}}function Dh(e,t){let n=e.trim(),r=kh.exec(n),i=r?.[2];return i===void 0?Eh(n):(!t||r?.[1]?.toLowerCase()===t)&&i.length%4==0?n:void 0}var Oh,kh;function Ah(){return(Ah=e((()=>{Oh=new Set([`http:`,`https:`,`blob:`]),kh=/^data:(audio|video)\/[a-z0-9!#$&^_.+-]+;base64,([a-z0-9+/]+={0,2})$/i})))()}function jh(e,t){if(typeof IntersectionObserver!=`function`)return t(),()=>void 0;let n=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(n.disconnect(),t())},{rootMargin:Nh});return n.observe(e),()=>n.disconnect()}function Mh(e){if(!(e instanceof HTMLElement))return;let t=()=>{let t=e.scrollWidth>e.clientWidth+1;e.dataset.scrollable=String(t),e.dataset.atStart=String(!t||e.scrollLeft<=1),e.dataset.atEnd=String(!t||e.scrollLeft+e.clientWidth>=e.scrollWidth-1)};t(),requestAnimationFrame(t)}var Nh;function Ph(){return(Ph=e((()=>{Nh=`240px 0px`})))()}function Fh(e,t){if(Rh?.media===e){Rh.onSuperseded=t;return}Rh?.onSuperseded(),Rh?.media.pause(),Rh={media:e,onSuperseded:t}}function Ih(e){Rh?.media===e&&(Rh=null)}function Lh(e){return Rh===null||Rh.media===e}var Rh;function zh(){return(zh=e((()=>{Rh=null})))()}function Bh(e){return e.durationSeconds!==void 0&&Number.isFinite(e.durationSeconds)&&e.durationSeconds>=0&&e.durationSeconds<=Xh&&(e.sizeBytes===void 0||Number.isFinite(e.sizeBytes)&&e.sizeBytes>=0&&e.sizeBytes<=8388608)}function Vh(e){return Number.isFinite(e.sizeBytes)&&e.sizeBytes>=0&&e.sizeBytes<=8388608&&e.durationSeconds!==void 0&&Number.isFinite(e.durationSeconds)&&e.durationSeconds>=0&&e.durationSeconds<=Xh}function Hh(e,t=Zh){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 Uh(){for(;J.size>Qh||[...J.values()].reduce((e,t)=>e+t.sizeBytes,0)>$h;){let e=[...J].find(([,e])=>e.retainCount===0);if(!e)return;let[t,n]=e;J.delete(t),URL.revokeObjectURL(n.blobUrl)}}function Wh(e){if(e>$h)return!1;let t=()=>[...J.values()].reduce((e,t)=>e+t.sizeBytes,0);for(;J.size+1>Qh||t()+e>$h;){let e=[...J].find(([,e])=>e.retainCount===0);if(!e)return!1;let[t,n]=e;J.delete(t),URL.revokeObjectURL(n.blobUrl)}return!0}function Gh(e,t){t.retainCount+=1;let n=!1;return{value:t,release:()=>{if(n)return;n=!0;let t=J.get(e);t&&t.retainCount>0&&--t.retainCount,Uh()}}}function Kh(e){let t=J.get(e);return t?(J.delete(e),J.set(e,t),Gh(e,t)):null}function qh(e,t){let n=J.get(e);if(n)return n.blobUrl!==t.blobUrl&&URL.revokeObjectURL(t.blobUrl),Kh(e);if(!Wh(t.sizeBytes))return URL.revokeObjectURL(t.blobUrl),null;let r={...t,retainCount:0};return J.set(e,r),Gh(e,r)}var Jh,Yh,Xh,Zh,J,Qh,$h;function eg(){return(eg=e((()=>{Jh=8388608,Yh=16e3,Xh=300,Zh=96,J=new Map,Qh=32,$h=50331648})))()}function tg(e){let t=e.trim();return/^\/(?:__openclaw__|media|api\/chat\/media\/outgoing)\//.test(t)?!1:ng(t)||/^file:/iu.test(t)||t.startsWith(`~`)||t.startsWith(`/`)||/^[a-zA-Z]:[\\/]/.test(t)}function ng(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 rg(e,t,n,r){return tg(e)?Ir(e,t,n,r):e}function ig(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 ag(){return(ag=e((()=>{Xr()})))()}function og(e){return e.reason instanceof Error?e.reason:new DOMException(`playback preparation aborted`,`AbortError`)}function sg(e){return ig(e,`playback`,`1`)}function cg(e){let t=new Headers,n=e?.trim();return n&&t.set(`Authorization`,`Bearer ${n}`),t}function lg(e,t){return t.aborted?Promise.reject(og(t)):new Promise((n,r)=>{let i=()=>{clearTimeout(a),r(og(t))},a=setTimeout(()=>{t.removeEventListener(`abort`,i),n()},e);t.addEventListener(`abort`,i,{once:!0})})}async function ug(e){let{fetchImpl:t}=e,n=new AbortController,r,i=new Promise((e,t)=>{r=t}),a=()=>{let t=og(e.signal);n.abort(t),r?.(t)};e.signal.addEventListener(`abort`,a,{once:!0}),e.signal.aborted&&a();let o=setTimeout(()=>{let e=new DOMException(`playback readiness request timed out`,`TimeoutError`);n.abort(e),r?.(e)},e.timeoutMs);try{return await Promise.race([t(e.source,{method:`HEAD`,headers:e.headers,credentials:`same-origin`,signal:n.signal}),i])}finally{clearTimeout(o),e.signal.removeEventListener(`abort`,a)}}async function dg(e){let t=e.fetchImpl??fetch,n=e.retryDelaysMs??fg,r=e.waitImpl??lg,i=cg(e.authToken);i.set(`Accept`,`audio/*, video/*`);let a=Date.now()+mg;for(let o=0;;o+=1){if(e.signal.aborted)return`aborted`;try{let s=a-Date.now();if(s<=0)return`unavailable`;let c=await ug({source:e.source,headers:i,signal:e.signal,timeoutMs:Math.min(e.requestTimeoutMs??pg,s),fetchImpl:t});if(c.status!==202)return c.ok?`ready`:`unavailable`;e.onPreparing?.();let l=n[o];if(l===void 0)return`unavailable`;let u=a-Date.now();if(u<=0)return`unavailable`;await r(Math.min(l,u),e.signal)}catch{return e.signal.aborted?`aborted`:`unavailable`}}}var fg,pg,mg;function hg(){return(hg=e((()=>{ag(),fg=[2e3,4e3,8e3,16e3,3e4,3e4,2e4],pg=3e4,mg=12e4})))()}function gg(e){return Number.isFinite(e)&&e>0?e:0}var _g;function vg(){return(vg=e((()=>{hg(),_g=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`?sg(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=dg({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:gg(e.currentTime),paused:e.paused});return}if(!this.appliedSource||e.ended||e.paused&&gg(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.pendingSource?(this.applySource(e,this.pendingSource,this.pendingIdentity,{currentTime:gg(e.currentTime),paused:e.paused}),!0):(this.sourceFailed=!0,this.playbackSource=``,this.playbackReadiness=`unavailable`,!1)}applyPendingSource(e){return this.pendingSource?(this.applySource(e,this.pendingSource,this.pendingIdentity,{currentTime:gg(e.currentTime),paused:e.paused}),!0):!1}seek(e,t){let n=Math.max(0,gg(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 yg(e,t){let n=e.headers.get(`Content-Length`),r=n===null?void 0:Number(n);if(r!==void 0&&Number.isFinite(r)&&r>t)return await e.body?.cancel().catch(()=>void 0),null;let i=e.body?.getReader();if(!i)return null;let a=[],o=0;try{for(;;){let{done:e,value:n}=await i.read();if(e)break;if(o+=n.byteLength,o>t)return await i.cancel().catch(()=>void 0),null;a.push(n)}}finally{i.releaseLock()}let s=new Uint8Array(o),c=0;for(let e of a)s.set(e,c),c+=e.byteLength;return s.buffer}function bg(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 xg,Sg,Cg,Y;function wg(){return(wg=e((()=>{F(),qt(),an(),Jt(),z(),V(),Ie(),Th(),Ah(),Ph(),zh(),eg(),hg(),vg(),xg=5,Sg=3e4,Cg=1.2,Y=class extends Wt{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 _g,this.cancelPendingResume=()=>this.sourceController.cancelPendingResume(),this.playRequest=null,this.waveformController=null,this.waveformAttempted=!1,this.waveformVisible=!1,this.viewportElement=null,this.setMedia=e=>{this.media=e instanceof HTMLAudioElement?e:null,this.media&&(this.media.muted=this.muted),this.syncSource()},this.setViewportElement=e=>{let t=e instanceof HTMLElement?e:null;this.viewportElement!==t&&(this.stopObservingViewport?.(),this.stopObservingViewport=void 0,this.viewportElement=t,t&&(this.stopObservingViewport=jh(t,()=>{this.waveformVisible=!0,this.prepareWaveformAudio().catch(()=>void 0)})))},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.stopObservingViewport?.(),this.stopObservingViewport=void 0,this.viewportElement=null,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(),Ih(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(),Ih(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=Kh(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=Kh(n);if(r){this.applyPreparedAudio(n,r);return}let i=this.serverDurationMs===void 0?void 0:this.serverDurationMs/1e3;if(i===void 0||!Bh({sizeBytes:this.sizeBytes,durationSeconds:i}))return;let a=globalThis.AudioContext;if(!a)return;this.waveformAttempted=!0;let o=cg(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`)),Sg),l,u;try{if(l=await fetch(t,{method:`GET`,headers:o,credentials:`same-origin`,signal:s.signal}),!l.ok)return;let e=await yg(l,Jh);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(Vh({sizeBytes:u.byteLength,durationSeconds:i})){let e=null;try{e=new a({sampleRate:Yh});let t=await e.decodeAudioData(u.slice(0)),n=Number.isFinite(t.duration)?t.duration:void 0;n!==void 0&&n<=i*Cg&&(p=Hh(t),m=n)}catch{}finally{await e?.close().catch(()=>void 0)}}if(!this.isConnected||n!==this.resolveWaveformCacheKey()){URL.revokeObjectURL(f);return}let h=qh(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(),Fh(e,this.cancelPendingResume);let t=e.play();this.playRequest?t.catch(()=>{Ih(e),this.playing=!1}):this.playRequest=t.then(()=>this.prepareWaveformAudio().catch(()=>void 0)).catch(()=>{Ih(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){if(e.target===e.currentTarget){if(e.key===` `){e.preventDefault(),this.togglePlayback();return}if(e.key===`ArrowLeft`||e.key===`ArrowRight`){e.preventDefault();let t=e.key===`ArrowLeft`?-1:1;this.seekTo(this.currentTime+t*xg)}}}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=I`<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=${H(`chat.mediaPlayer.seek`)}
      style=${sn({"--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 I`<div class="chat-audio-player__waveform" ${P(this.setWaveform)}>
      <svg viewBox="0 0 ${r} 24" preserveAspectRatio="none" aria-hidden="true">
        ${i.map((t,n)=>{let i=Math.max(2,t*20);return Zt`<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=Dh(this.src);if(this.sourceController.readiness===`unavailable`)return yh({kind:`audio`,label:this.label,mimeType:this.mimeType,sizeBytes:this.sizeBytes,downloadHref:t,onExpand:this.onExpand,voiceNote:this.voiceNote});let n=`${bg(this.currentTime)} / ${bg(this.duration)}`;return I`
      <div
        class="chat-assistant-attachment-card chat-assistant-attachment-card--audio"
        ${P(this.setViewportElement)}
        ?data-openable=${!!this.onExpand}
        @click=${e=>bh(e,this.onExpand)}
      >
        ${Ch({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`?I`<div class="chat-assistant-attachment-card__reason chat-media-preparing">
                ${H(`chat.mediaPlayer.preparing`)}
              </div>`:I`<div
                class="chat-audio-player"
                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=${H(this.playing?`chat.mediaPlayer.pause`:`chat.mediaPlayer.play`)}
                  @click=${()=>this.togglePlayback()}
                >
                  ${this.playing?B.pause:B.play}
                </button>
                <div class="chat-audio-player__time" aria-live="off">
                  <span>${n}</span>
                </div>
                <div class="chat-audio-player__timeline">${this.renderSeek(e)}</div>
                <button
                  type="button"
                  class="chat-audio-player__volume"
                  aria-label=${H(this.muted?`chat.mediaPlayer.unmute`:`chat.mediaPlayer.mute`)}
                  aria-pressed=${this.muted?`true`:`false`}
                  @click=${()=>this.toggleMuted()}
                >
                  ${this.muted?B.volumeX:B.volume2}
                </button>
              </div>`}
        <audio
          class="chat-audio-player__media"
          preload="metadata"
          ${P(this.setMedia)}
          @loadedmetadata=${()=>{this.media&&(this.sourceController.handleLoadedMetadata(this.media,()=>Lh(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&&Fh(this.media,this.cancelPendingResume),this.playing=!0}}
          @pause=${()=>{this.playing=!1}}
          @ended=${()=>{this.media&&(Ih(this.media),this.sourceController.handleEnded(this.media)),this.playing=!1}}
          @error=${()=>{this.media&&!this.sourceController.handleError(this.media)&&(Ih(this.media),this.playing=!1),this.requestUpdate()}}
        ></audio>
      </div>
    `}},E([R()],Y.prototype,`src`,void 0),E([R()],Y.prototype,`sourceIdentity`,void 0),E([R()],Y.prototype,`label`,void 0),E([R()],Y.prototype,`mimeType`,void 0),E([R()],Y.prototype,`playback`,void 0),E([R()],Y.prototype,`authToken`,void 0),E([R({type:Number})],Y.prototype,`sizeBytes`,void 0),E([R({type:Number})],Y.prototype,`serverDurationMs`,void 0),E([R({type:Boolean})],Y.prototype,`voiceNote`,void 0),E([R({attribute:!1})],Y.prototype,`onExpand`,void 0),E([R({attribute:!1})],Y.prototype,`onMediaLoaded`,void 0),E([rn()],Y.prototype,`currentTime`,void 0),E([rn()],Y.prototype,`duration`,void 0),E([rn()],Y.prototype,`buffered`,void 0),E([rn()],Y.prototype,`playing`,void 0),E([rn()],Y.prototype,`muted`,void 0),E([rn()],Y.prototype,`waveformPeaks`,void 0),E([rn()],Y.prototype,`waveformWidth`,void 0),customElements.get(`openclaw-chat-audio-player`)||customElements.define(`openclaw-chat-audio-player`,Y)})))()}function Tg(e){try{let t=new URL(e,window.location.href);return(t.protocol===`http:`||t.protocol===`https:`)&&t.origin!==location.origin}catch{return!1}}var Eg,Dg,X;function Og(){return(Og=e((()=>{F(),qt(),V(),Ie(),Th(),Ph(),Eg=262144,Dg=1e4,X=class extends Wt{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=jh(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>Eg){this.showFallback();return}if(Tg(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`))},Dg)})]);if(!r.ok)throw await r.body?.cancel().catch(()=>void 0),Error(`SVG attachment is unavailable`);let i=await yg(r,Eg);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 yh({kind:`document`,label:this.label,mimeType:this.mimeType,sizeBytes:this.sizeBytes,downloadHref:this.downloadHref,onExpand:this.onExpand});let e=this.renderSource;return e?I`<button
      type="button"
      class="chat-message-image-button"
      aria-label=${H(`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>`:L}},E([R()],X.prototype,`src`,void 0),E([R()],X.prototype,`sourceIdentity`,void 0),E([R()],X.prototype,`label`,void 0),E([R()],X.prototype,`mimeType`,void 0),E([R({type:Number})],X.prototype,`sizeBytes`,void 0),E([R()],X.prototype,`downloadHref`,void 0),E([R({attribute:!1})],X.prototype,`onOpen`,void 0),E([R({attribute:!1})],X.prototype,`onExpand`,void 0),E([R({attribute:!1})],X.prototype,`onMediaLoaded`,void 0),E([rn()],X.prototype,`renderSource`,void 0),E([rn()],X.prototype,`failed`,void 0),customElements.get(`openclaw-chat-svg-attachment`)||customElements.define(`openclaw-chat-svg-attachment`,X)})))()}var Z;function kg(){return(kg=e((()=>{F(),qt(),an(),Jt(),V(),Ie(),Th(),Ah(),Ph(),vg(),Z=class extends Wt{constructor(...e){super(...e),this.src=``,this.sourceIdentity=``,this.label=``,this.mimeType=``,this.playback=`native`,this.authToken=null,this.media=null,this.mediaVisible=!1,this.viewportElement=null,this.sourceController=new _g,this.setMedia=e=>{this.media=e instanceof HTMLVideoElement?e:null,this.syncSource()},this.setViewportElement=e=>{let t=e instanceof HTMLElement?e:null;this.viewportElement!==t&&(this.stopObservingViewport?.(),this.stopObservingViewport=void 0,this.viewportElement=t,t&&(this.stopObservingViewport=jh(t,()=>{this.mediaVisible=!0,this.syncSource()})))},this.expand=()=>{let e=this.sourceController.readySource;e&&(this.media?.pause(),this.onExpand?.(e))}}connectedCallback(){super.connectedCallback(),queueMicrotask(()=>this.syncSource())}disconnectedCallback(){this.stopObservingViewport?.(),this.stopObservingViewport=void 0,this.viewportElement=null,this.sourceController.cancel(),this.media&&this.sourceController.reset(this.media),super.disconnectedCallback()}willUpdate(e){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=Dh(this.src),t=this.sourceController.readiness===`preparing`;if(this.sourceController.readiness===`unavailable`)return yh({kind:`video`,label:this.label,mimeType:this.mimeType,sizeBytes:this.sizeBytes,downloadHref:e,onExpand:this.onFallbackExpand});let n=this.onExpand&&this.sourceController.readySource?this.expand:void 0,r=this.mediaWidth&&this.mediaHeight?{"aspect-ratio":`${this.mediaWidth} / ${this.mediaHeight}`}:{};return I`
      <div
        class="chat-assistant-attachment-card chat-assistant-attachment-card--video"
        ${P(this.setViewportElement)}
        ?data-openable=${!!n}
        @click=${e=>bh(e,n)}
      >
        ${Ch({kind:`video`,label:this.label,mimeType:this.mimeType,sizeBytes:this.sizeBytes,downloadHref:e,expandLabel:H(`chat.mediaPlayer.openVideo`,{filename:this.label}),onExpand:n,visualMode:`preview-with-favicon`})}
        ${t?I`<div class="chat-assistant-attachment-card__reason chat-media-preparing">
                ${H(`chat.mediaPlayer.preparing`)}
              </div>`:null}
        <div class="chat-assistant-video-frame" ?hidden=${t}>
          <video
            controls
            preload="metadata"
            style=${sn(r)}
            ${P(this.setMedia)}
            @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>
    `}},E([R()],Z.prototype,`src`,void 0),E([R()],Z.prototype,`sourceIdentity`,void 0),E([R()],Z.prototype,`label`,void 0),E([R()],Z.prototype,`mimeType`,void 0),E([R()],Z.prototype,`playback`,void 0),E([R()],Z.prototype,`authToken`,void 0),E([R({type:Number})],Z.prototype,`sizeBytes`,void 0),E([R({type:Number})],Z.prototype,`mediaWidth`,void 0),E([R({type:Number})],Z.prototype,`mediaHeight`,void 0),E([R({attribute:!1})],Z.prototype,`onExpand`,void 0),E([R({attribute:!1})],Z.prototype,`onFallbackExpand`,void 0),E([R({attribute:!1})],Z.prototype,`onMediaLoaded`,void 0),customElements.get(`openclaw-chat-video-player`)||customElements.define(`openclaw-chat-video-player`,Z)})))()}function Ag(e,t,n,r,i,a=!1){if(!tg(e))return{status:`available`};let o=n?.trim()??``,s=tp(`assistant-attachment`,Ng(e,t,o,i),r,e),c=s.value,l=null;if(c){let e=Date.now();if(c.status===`unavailable`&&c.recoverable&&!c.retryAttempted&&e-c.checkedAt>=5e3)s.retryAttempted=!0,s.value=void 0;else if(c.status===`available`&&c.mediaTicket&&c.mediaTicketExpiresAt!==void 0&&c.mediaTicketExpiresAt<=e){let e=Mg(`Attachment unavailable`,s.retryAttempted,{unconfirmed:!0});return Pg(s,e),e}else if(c.status===`available`&&c.mediaTicket&&(c.refreshAfter===void 0?!c.mediaTicketExpiresAt||c.mediaTicketExpiresAt-e<=3e4:c.refreshAfter<=e)){if(s.pending)return c;l=c}else return Fg(s,c),c}l||Pg(s,{status:`checking`});let u=()=>{if(!l)return null;let e=Date.now(),t=l.mediaTicketExpiresAt,n=l.refreshAttempts??0;return t===void 0||t<=e||n>=2?null:{...l,refreshAfter:Math.min(e+Rg,t),refreshAttempts:n+1}};if(typeof fetch==`function`){let n=new Headers({Accept:`application/json`});o&&n.set(`Authorization`,`Bearer ${o}`);let r=new AbortController;s.abortController=r;let c=setTimeout(()=>r.abort(new DOMException(`assistant attachment metadata fetch timed out`,`TimeoutError`)),zg),d=rg(e,t,l?.mediaTicket,i),f=fetch(`${d}&meta=1${a?`&allow=1`:``}`,{method:a?`POST`:`GET`,headers:n,credentials:`same-origin`,signal:r.signal}).then(async e=>{if(e.status===408||e.status===429||e.status>=500)throw Error(`Attachment metadata temporarily unavailable`);if(!e.ok)return Mg(H(`chat.attachments.unavailable`),s.retryAttempted);let t=await e.json();if(t?.available===!1)return Mg(t.code===`outside-allowed-folders`?H(`chat.attachments.outsideAllowedFolders`):pe(t.reason,H(`chat.attachments.unavailable`)),s.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 s.retryAttempted=!1,{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(()=>u()??Mg(H(`chat.attachments.unavailable`),s.retryAttempted,{unconfirmed:!0})).then(e=>(Pg(s,e),e)).finally(()=>{clearTimeout(c),s.abortController===r&&(s.abortController=void 0),s.pending===f&&(s.pending=void 0),ip(s)});s.pending=f}return l??{status:`checking`}}function jg(e,t,n,r,i,a=!1){if(!tg(e)){r?.();return}let o=tp(`assistant-attachment`,Ng(e,t,n?.trim()??``,i),r,e);o.abortController?.abort(),o.abortController=void 0,o.pending=void 0,o.value=void 0,o.retryAttempted=!1,Fg(o,{status:`checking`}),a&&Ag(e,t,n,r,i,!0),ip(o),r?.()}function Mg(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 Ng(e,t,n,r){return JSON.stringify([t??``,n,r?.sessionKey,r?.agentId,r?.policyKey,e])}function Pg(e,t){np(e)&&(e.value=t,Fg(e,t))}function Fg(e,t){ap(e,t.status===`unavailable`&&t.recoverable&&!t.retryAttempted?t.checkedAt+Rg:t.status===`available`&&t.mediaTicket&&t.mediaTicketExpiresAt?t.refreshAfter??t.mediaTicketExpiresAt-3e4:void 0,()=>{e.value===t&&ip(e)})}function Ig(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 Lg(e){try{let t=new URL(e,window.location.origin).pathname.split(`/`)[5];return t?decodeURIComponent(t):null}catch{return null}}var Rg,zg;function Bg(){return(Bg=e((()=>{V(),A(),ag(),Cp(),Rg=5e3,zg=3e4})))()}function Vg(e){return H(e===`file-not-found`?`chat.attachments.failureFileNotFound`:e===`unsupported-format`?`chat.attachments.failureUnsupportedFormat`:`chat.attachments.failureDeliveryFailed`)}function Hg(e){let t=e.reason!==void 0,n=t&&(e.onRetry!==void 0||e.onAllow!==void 0);return I`
    <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?L:`true`}
    >
      <div class="chat-assistant-attachment-card__header">
        <div class="chat-assistant-attachment-card__identity">
          ${Sh({label:e.label,mimeType:e.mimeType,visualMode:`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`:L}
              >${e.label}</span
            >
            <span
              class="chat-assistant-attachment-card__meta chat-assistant-attachment-card__status-meta ${t?``:`skeleton skeleton-line`}"
              aria-hidden=${t?L:`true`}
            >
              <span class="chat-assistant-attachment-card__status-badge">${e.badge}</span>
              ${e.reason?I`
                      <span
                        class="chat-assistant-attachment-card__status-separator"
                        aria-hidden="true"
                        >·</span
                      >
                      <span class="chat-assistant-attachment-card__status-reason"
                        >${e.reason}</span
                      >
                    `:L}
            </span>
          </span>
        </div>
        ${e.onAllow?I`<button
                class="chat-assistant-attachment-card__action chat-assistant-attachment-card__action--labeled"
                type="button"
                @click=${e.onAllow}
              >
                ${H(`chat.attachments.allowImage`)}
              </button>`:e.onRetry?I`<button
                  class="chat-assistant-attachment-card__action chat-assistant-attachment-card__action--labeled chat-assistant-attachment-card__retry"
                  type="button"
                  @click=${e.onRetry}
                >
                  ${B.refresh} ${H(`common.retry`)}
                </button>`:t?L:I`<span
                    class="chat-assistant-attachment-card__actions chat-assistant-attachment-card__actions--loading"
                    aria-hidden="true"
                    data-label=${H(`chat.attachments.open`)}
                  >
                    <span
                      class="chat-assistant-attachment-card__action-skeleton skeleton"
                      aria-hidden="true"
                    ></span>
                  </span>`}
      </div>
    </div>
  `}function Ug(){return(Ug=e((()=>{F(),z(),V(),Th()})))()}function Wg(e){if(!u(e).startsWith(Jg))return!1;let t=e.indexOf(`,`);if(t<5)return!1;let n=e.slice(5,t),r=u(n.split(`;`)[0]);return r.startsWith(`image/`)?!Xg.has(r):!1}function Gg(e,t,n={}){let r=e.trim();if(!r)return null;if(n.allowDataImage===!0&&Wg(r))return r;if(u(r).startsWith(Jg))return null;try{let e=new URL(r,t);return Yg.has(u(e.protocol))?e.toString():null}catch{return null}}function Kg(e={}){let t=window.open(`about:blank`,`_blank`,e.popup?`popup`:void 0);return t&&(t.opener=null),t}function qg(e,t={}){let n=Gg(e,t.baseHref??window.location.href,t);if(!n)return null;let r=window.open(n,`_blank`,`noopener,noreferrer`);return r&&(r.opener=null),r}var Jg,Yg,Xg;function Zg(){return(Zg=e((()=>{Jg=`data:`,Yg=new Set([`http:`,`https:`,`blob:`]),Xg=new Set([`image/svg+xml`])})))()}function Qg(e,t,n,r,i){let a=Gg(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?.(),qg(a,{allowDataImage:!0})}function $g(){return($g=e((()=>{Zg()})))()}function e_(e){return e.startsWith(`data:image/`)||e.startsWith(`blob:`)}function t_(e,t,n){let r=e.alt?.trim()||H(`chat.imageLightbox.untitled`),i=n?.onRequestOpenImage?.();if(!Ig(e.url)){Qg(n?.onOpenImage,t,r,void 0,i);return}let a=n_(e.url,n,e.artifactId,`full`),o=e=>{let t=n?.onOpenImage?dp(a.cacheKey):void 0;Qg(n?.onOpenImage,e,r,t,i)};if(a.value){o(a.value);return}let s=n?.onOpenImage?null:Kg(),c=()=>{s?.close(),At({message:H(`chat.imageLightbox.loadFailed`)})};(a.pending??Promise.resolve(null)).then(e=>{let t=e?Gg(e,window.location.href,{allowDataImage:!0}):null;t?s?s.location.replace(t):o(t):c()}).catch(c)}function n_(e,t,n,r=`thumbnail`){let i=r_(e,r,t?.resourceBasePath),a=t?.authToken?.trim()??``,o=n?.trim()??``,s=`${i}::${a}::${o}`,c=tp(`managed-image`,s,t?.onRequestUpdate,`${i}::${o}`),l=lp(s);if(l)return c.value=l,c.retryAttempted=!1,c.unavailableAt=void 0,c;if(c.value===null){if(c.retryAttempted||c.unavailableAt===void 0||Date.now()-c.unavailableAt<f_)return c;c.retryAttempted=!0}if(c.value=void 0,!c.pending){let i=new AbortController;c.abortController=i;let a=(async()=>{let a=await i_(e,t,n,r,i);if(!a)return u_(c);if(!np(c))return null;let o=URL.createObjectURL(a);return fp(s,o),c.value=o,c.retryAttempted=!1,c.unavailableAt=void 0,o})().finally(()=>{c.abortController===i&&(c.abortController=void 0),c.pending===a&&(c.pending=void 0),c.value===null&&c.subscribers.size===0&&!c.pending&&cp(),ip(c)});c.pending=a}return c}function r_(e,t,n){try{let r=new URL(e,window.location.origin);if(r.pathname=r.pathname.replace(/\/(?:full|thumbnail)$/u,`/${t}`),/^https?:\/\//iu.test(e))return r.href;let i=g(n??``);return`${i&&(r.pathname===i||r.pathname.startsWith(`${i}/`))?r.pathname:`${i}${r.pathname}`}${r.search}${r.hash}`}catch{return e.replace(/\/(?:full|thumbnail)(?=$|[?#])/u,`/${t}`)}}async function i_(e,t,n,r,i=new AbortController){let a=Lg(e),o=a&&n&&t?.resolveArtifactDownload?await t.resolveArtifactDownload({sessionKey:a,artifactId:n}).catch(()=>null):null,s=r_(o?.url??e,r,t?.resourceBasePath),c=new Headers({Accept:`image/*`}),l=t?.authToken?.trim();!o&&l&&c.set(`Authorization`,`Bearer ${l}`),!o&&a&&c.set(`x-openclaw-requester-session-key`,a);let u=globalThis.setTimeout(()=>{i.abort(new DOMException(`managed outgoing image fetch timed out`,`TimeoutError`))},d_);try{let e=await fetch(s,{method:`GET`,headers:c,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 a_(e,t,n){let r=n_(e,t,n,`full`),i=r.value??await r.pending;if(!i)throw Error(`managed image is unavailable`);let a=await(await fetch(i)).blob();if(!a.type.startsWith(`image/`))throw Error(`managed image response is invalid`);return a}function o_(e,t){let n=t===`image/jpeg`?`jpg`:t.split(`/`,2)[1]||`img`;return`${Array.from(e,e=>e.codePointAt(0)<=31||`<>:"/\\|?*`.includes(e)?`-`:e).join(``).replace(/\.[a-z0-9]{1,10}$/iu,``).replace(/[. -]+$/u,``).slice(0,120)||`generated-image`}.${/^[a-z0-9.+-]{1,12}$/u.test(n)?n:`img`}`}function s_(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 c_(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 l_(e,t){let n=e.alt?.trim()||H(`chat.imageLightbox.untitled`),r=async()=>{try{let r=await a_(e.url,t,e.artifactId);s_(r,o_(n,r.type))}catch{At({message:H(`chat.imageLightbox.downloadFailed`)})}},i=async()=>{try{if(!navigator.clipboard?.write||typeof ClipboardItem>`u`)throw Error(`image clipboard is unavailable`);let n=a_(e.url,t,e.artifactId).then(c_);n.catch(()=>{}),await navigator.clipboard.write([new ClipboardItem({"image/png":n})]),At({message:H(`common.copied`)})}catch{At({message:H(`chat.imageLightbox.copyFailed`)})}};return I`
    <span class="chat-image-actions">
      <button
        type="button"
        class="chat-image-action"
        title=${H(`chat.imageLightbox.download`)}
        aria-label=${H(`chat.imageLightbox.download`)}
        @click=${()=>void r()}
      >
        ${B.download}
      </button>
      <button
        type="button"
        class="chat-image-action"
        title=${H(`chat.imageLightbox.copy`)}
        aria-label=${H(`chat.imageLightbox.copy`)}
        @click=${()=>void i()}
      >
        ${B.copy}
      </button>
    </span>
  `}function u_(e){return np(e)?(e.value=null,e.unavailableAt=Date.now(),e.retryAttempted||ap(e,Date.now()+f_,()=>{e.value===null&&(e.retryAttempted=!0,e.value=void 0,e.unavailableAt=void 0,ip(e))}),null):null}var d_,f_,p_,m_,h_,g_,__,v_;function y_(){return(y_=e((()=>{F(),fn(),Yt(),nn(),cn(),xn(),z(),V(),Zg(),Et(),Bg(),Ug(),$g(),ag(),Cp(),d_=3e4,f_=5e3,p_=3e4,m_=160,h_=class extends Qt{constructor(...e){super(...e),this.managed=!1,this.presentationKey=Symbol(`image-presentation`),this.requestUpdate=()=>this.refreshImage(),this.onSettled=(e,t)=>{let n=e.currentTarget;!this.isConnected||this.image?.url!==t||!(n instanceof HTMLImageElement)||!n.isConnected||(this.element=e.type===`load`?n:void 0,this.retained?.status===`retaining`&&this.element?.getAttribute(`src`)!==this.retained.previewUrl&&(e.type===`error`?this.failRetainedImage():this.releaseRetainedImage()))}}render(e,t){let n=this.image;if(n?.url!==e.url||n?.artifactId!==e.artifactId){this.managed=Ig(e.url),this.pendingPreview=void 0,this.releaseRetainedImage(),this.retained=e.factIndex!==void 0&&n&&e_(n.url)&&n.artifactId===e.artifactId&&ng(e.url)&&this.element?.getAttribute(`src`)===n.url&&this.element.naturalWidth>0?{status:`retaining`,previewUrl:n.url}:void 0;let r=t?.localSubmission&&n&&e_(n.url)&&e_(e.url);!this.retained&&!r&&(this.element=void 0,this.presentationKey=Symbol(`image-presentation`)),sp(this.requestUpdate)}if(this.image=e,this.options=t,!this.isConnected)return this.releaseRetainedImage(),sp(this.requestUpdate),tn;let r=t?.onRequestUpdate;r?(this.pendingPreview=void 0,op(r,this.requestUpdate)):sp(this.requestUpdate);let i=r?{...t,onRequestUpdate:this.requestUpdate}:t,a=Ag(e.url,t?.resourceBasePath,t?.authToken,i?.onRequestUpdate,t),o=this.retained?.status===`unavailable`,s=a.status===`checking`||a.status===`unavailable`&&a.unconfirmed,c=a.status===`available`?rg(e.url,t?.resourceBasePath,a.mediaTicket,t):s?this.element?.getAttribute(`src`):void 0;if(!c||o){this.element=void 0,o||this.releaseRetainedImage();let n=a.status===`unavailable`?a.reason:o?H(`chat.imageLightbox.loadFailed`):void 0;return Hg({label:e.fileName??e.alt??H(`chat.imageLightbox.untitled`),badge:n===void 0?``:H(`chat.attachments.unavailable`),reason:n,path:tg(e.url)?e.url:void 0,onAllow:!o&&a.status===`unavailable`&&a.canAllow?()=>jg(e.url,t?.resourceBasePath,t?.authToken,i?.onRequestUpdate,t,!0):void 0,onRetry:!o&&a.status===`unavailable`&&a.recoverable?()=>jg(e.url,t?.resourceBasePath,t?.authToken,i?.onRequestUpdate,t):void 0})}if(!this.managed){let n=this.retained;return a.status===`available`&&n?.status===`retaining`&&n.timeout===void 0&&(n.timeout=setTimeout(()=>this.failRetainedImage(),p_)),this.present(this.renderImageElement(e,c,t))}let l=n_(c,i,e.artifactId),u=l.pending;return!r&&u&&this.pendingPreview!==u&&(this.pendingPreview=u,u.then(e=>{this.pendingPreview===u&&this.isConnected&&this.image&&(this.pendingPreview=void 0,this.setValue(this.present(e?this.renderImageElement(this.image,e,this.options):L)))})),this.present(l.value?this.renderImageElement(e,l.value,t):L)}renderImageElement(e,t,n){let r=e.alt?.trim()||H(`chat.imageLightbox.untitled`),i=e.width!==void 0&&e.width<m_?`chat-message-image chat-message-image--small`:`chat-message-image`;return I`
      <span class="chat-image-frame ${this.managed?`chat-image-frame--managed`:``}">
        <button
          type="button"
          class="chat-message-image-button"
          aria-label=${H(`chat.imageLightbox.open`,{title:r})}
          @click=${r=>{r.stopPropagation(),t_(e,t,n)}}
        >
          <img
            @load=${t=>this.onSettled(t,e.url)}
            @error=${t=>this.onSettled(t,e.url)}
            src=${t}
            alt=${r}
            class=${i}
            width=${e.width??L}
            height=${e.height??L}
          />
        </button>
        ${this.managed?l_(e,n):L}
      </span>
    `}releaseRetainedImage(){let e=this.retained;this.retained=void 0,e?.status===`retaining`&&clearTimeout(e.timeout)}failRetainedImage(){this.releaseRetainedImage(),this.retained={status:`unavailable`},this.refreshImage()}refreshImage(){this.isConnected&&this.image&&this.setValue(this.render(this.image,this.options))}present(e){return I`${dn(this.presentationKey,e)}`}disconnected(){this.releaseRetainedImage(),this.element=void 0,this.pendingPreview=void 0,this.presentationKey=Symbol(`image-presentation`),sp(this.requestUpdate)}reconnected(){this.refreshImage()}},g_=$t(h_),__=class extends en{constructor(...e){super(...e),this.slots=[],this.scope=``,this.localSubmission=!1}render(e,t){let n=JSON.stringify([t?.connectionEpoch,t?.authToken?.trim(),t?.resourceBasePath,t?.sessionKey,t?.agentId,t?.policyKey]),r=this.scope===n&&(!this.localSubmission||t?.localSubmission!==!1)&&(this.canonicalMessageKey===t?.canonicalMessageKey||this.localSubmission&&!this.canonicalMessageKey),i=r?this.localSubmission:t?.localSubmission===!0,a=r&&i&&e.length===this.slots.length&&this.slots.every(({image:e})=>e_(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),o=new Map(a.map((e,t)=>[e.factIndex,this.slots[t]?.key]));if(this.slots=e.map((e,t)=>{let n=this.slots[t],i=e.factIndex===void 0?n?.image.factIndex===void 0?n?.key:void 0:o.get(e.factIndex);return{image:e,key:r&&i||Symbol(`image-slot`)}}),this.scope=n,this.canonicalMessageKey=t?.canonicalMessageKey,this.localSubmission=i&&!(t?.canonicalMessageKey&&e.every(e=>e.factIndex!==void 0)),!e.length)return L;let s=[`chat-message-images`,e.length===1?`chat-message-images--single`:`chat-message-images--gallery`,e.length===2||e.length===4?`chat-message-images--two-column`:``,e.length===5?`chat-message-images--five`:``].filter(Boolean).join(` `);return I`<div class=${s}>
      ${on(this.slots,({key:e})=>e,({image:e})=>I`${g_(e,t)}`)}
    </div>`}},v_=$t(__)})))()}function b_(e){return e.length===0?L:I`${e.map(e=>{let t=e.media.sizeBytes===void 0?H(`chat.attachments.omittedFromHistory`):H(`chat.attachments.omittedFromHistoryWithSize`,{size:et(e.media.sizeBytes)});return Hg({label:H(`chat.attachments.image`),badge:H(`chat.attachments.history`),reason:t})})}`}function x_(){return{status:`unavailable`,reason:H(`chat.attachments.unavailable`),checkedAt:Date.now()}}function S_(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}:x_():{...r??{status:`checking`},refreshAfter:n+Rg*2**t,refreshAttempts:t+1}}function C_(e,t){if(!e.startsWith(`/`)||e.startsWith(`//`))return e;try{let n=new URL(e,window.location.origin),r=g(t??``);return`${r&&n.pathname!==r&&!n.pathname.startsWith(`${r}/`)?`${r}${n.pathname}`:n.pathname}${n.search}${n.hash}`}catch{return e}}function w_(e,t,n=!1){return np(e)?(e.value=t,ap(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+Rg:void 0,()=>{e.value?.status===`unavailable`&&(e.retryAttempted=!0,e.value=void 0),ip(e)}),t):t}function T_(e,t,n,r){if(!Ig(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}:x_();let i=Lg(e.url);if(!i)return x_();let a=tp(`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 w_(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,w_(a,x_());if(e&&(a.pending||o.refreshAfter!==void 0&&o.refreshAfter>s))return w_(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 w_(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`?S_(c,l):x_();c||w_(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:S_(l>=2&&c?.expiresAt!==void 0&&c.expiresAt>=i?c:o,l,t)}}catch{n=u()}return np(a)?(n.status===`available`&&n.refreshAttempts===void 0?a.retryAttempted=!1:n.status===`unavailable`&&l>=2&&(a.retryAttempted=!0),w_(a,n)):null}).finally(()=>{a.pending===d&&(a.pending=void 0),ip(a)});return a.pending=d,c&&w_(a,c,!0),c??{status:`checking`}}function E_(e,t,n){if(!e.artifactId||!Ig(e.url))return;let r=tp(`managed-media`,`${n??0}::${e.url}::${e.artifactId}`,t,e.url);r.value=void 0,r.retryAttempted=!1,r.unavailableAt=void 0,ip(r),t?.()}function D_(e,t){let{resourceBasePath:n,authToken:r,onRequestUpdate:i,resolveArtifactDownload:a,connectionEpoch:o}=t,s=Ag(e.url,n,r,i,t);if(s.status!==`available`)return{status:s.status,reason:s.status===`unavailable`?s.reason:void 0,onAllow:s.status===`unavailable`&&s.canAllow?()=>jg(e.url,n,r,i,t,!0):void 0,onRetry:s.status===`unavailable`&&s.recoverable?()=>jg(e.url,n,r,i,t):void 0};let c=T_(e,a,i,o);if(c.status!==`available`)return{status:c.status,reason:c.status===`unavailable`?c.reason:void 0,onRetry:c.status===`unavailable`&&e.artifactId&&a?()=>E_(e,i,o):void 0};let l=tg(e.url),u=l?rg(e.url,n,s.mediaTicket,t):Ig(e.url)?C_(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 O_(e,t,n,r,i=!0){if(e.length===0)return L;let{onRequestOpenImage:a,onOpenImage:o,resolveArtifactDownload:s}=t;return I` <div class="chat-assistant-attachments">${e.map(e=>{if(e.type===`attachment_error`){let{attachment:t}=e;return Hg({label:t.label,mimeType:t.mimeType,badge:H(`chat.attachments.notSent`),reason:Vg(t.code)})}let{attachment:c}=e,l=c.mimeType?.split(`;`,1)[0]?.trim().toLowerCase()??``,u=!l||l===`application/octet-stream`,d=c.kind===`image`||c.kind===`document`&&(fl(c.url,l)||u&&fl(c.label,void 0)),f=l===`image/svg+xml`||u&&(pl(c.url,void 0)||pl(c.label,void 0));if(d&&!f&&!Ig(c.url))return v_([{...c,alt:c.label,fileName:c.label}],t);let p=D_(c,t);if(p.status!==`available`)return Hg({label:c.label,mimeType:c.mimeType,badge:p.status===`unavailable`?H(`chat.attachments.unavailable`):``,reason:p.status===`unavailable`?p.reason:void 0,onRetry:p.onRetry,onAllow:d?p.onAllow:void 0,path:tg(c.url)?c.url:void 0});let{src:m,...h}=p.source,g=c.kind===`audio`||c.kind===`video`?Dh(m,c.kind):Eh(m),_=c.kind===`video`&&o&&g?e=>{let t=a?.(),n={kind:`video`,src:e,originalSrc:g,title:c.label};t===void 0?o(n):o(n,t)}:void 0,v=tg(c.url)||Ig(c.url)&&!!(c.artifactId&&s),y=n&&(v||g)?()=>n({kind:`attachment`,attachmentKind:c.kind,title:c.label,...v?{}:{src:g},mimeType:c.mimeType,sourceIdentity:c.url,...h,voiceNote:c.isVoiceNote===!0,...v?{resolveSource:(e,t)=>{let n=D_(c,{...t,onRequestUpdate:e});return n.status===`available`?n.source:null}}:{}}):void 0;if(d){let e=c.label.trim()||H(`chat.imageLightbox.untitled`);return f?I`<openclaw-chat-svg-attachment
          .src=${m}
          .sourceIdentity=${c.url}
          .label=${e}
          .mimeType=${c.mimeType??`image/svg+xml`}
          .sizeBytes=${h.sizeBytes}
          .downloadHref=${Eh(m)}
          .onOpen=${(t,n)=>Qg(o,t,e,n,a?.())}
          .onExpand=${y}
          .onMediaLoaded=${r}
        ></openclaw-chat-svg-attachment>`:I`
        <button
          type="button"
          class="chat-message-image-button"
          aria-label=${H(`chat.imageLightbox.open`,{title:e})}
          @click=${()=>Qg(o,m,e,void 0,a?.())}
        >
          <img src=${m} alt=${e} class="chat-message-image" />
        </button>
      `}return(c.kind===`audio`||c.kind===`video`)&&!g?Hg({label:c.label,mimeType:c.mimeType,badge:H(`chat.attachments.unavailable`),reason:H(`chat.attachments.previewUnavailable`)}):i&&c.kind===`audio`?I`<openclaw-chat-audio-player
        .src=${g}
        .sourceIdentity=${c.url}
        .label=${c.label}
        .mimeType=${c.mimeType??``}
        .playback=${h.playback}
        .authToken=${h.authToken}
        .sizeBytes=${h.sizeBytes}
        .serverDurationMs=${h.durationMs}
        .voiceNote=${c.isVoiceNote===!0}
        .onExpand=${y}
        .onMediaLoaded=${r}
      ></openclaw-chat-audio-player>`:i&&c.kind===`video`?I`<openclaw-chat-video-player
        .src=${g}
        .sourceIdentity=${c.url}
        .label=${c.label}
        .mimeType=${c.mimeType??``}
        .playback=${h.playback}
        .authToken=${h.authToken}
        .sizeBytes=${h.sizeBytes}
        .mediaWidth=${h.width}
        .mediaHeight=${h.height}
        .onExpand=${_}
        .onFallbackExpand=${y}
        .onMediaLoaded=${r}
      ></openclaw-chat-video-player>`:yh({kind:c.kind,label:c.label,mimeType:c.mimeType,sizeBytes:h.sizeBytes,downloadHref:g,onExpand:y,voiceNote:c.isVoiceNote===!0})})}</div> `}function k_(){return(k_=e((()=>{F(),xn(),V(),Dt(),xl(),wg(),Og(),kg(),Th(),Ah(),Bg(),Ug(),$g(),y_(),ag(),Cp()})))()}function A_(e){let t=e.trim();if(t.length>B_)return null;if(t.startsWith(`{`)&&t.endsWith(`}`)||t.startsWith(`[`)&&t.endsWith(`]`))try{return{parsed:JSON.parse(t),text:t}}catch{return null}return null}function j_(e){if(Array.isArray(e))return H(e.length===1?`chat.codeBlock.jsonArrayItem`:`chat.codeBlock.jsonArrayItems`,{count:String(e.length)});if(e&&typeof e==`object`){let t=Object.keys(e);return t.length<=4?`{ ${t.join(`, `)} }`:H(`chat.codeBlock.jsonObjectKeys`,{count:String(t.length)})}return H(`chat.codeBlock.jsonBadge`)}function M_(e,t=!1){return I`<details class="chat-json-collapse" ?open=${t}>
    <summary class="chat-json-summary">
      <span class="chat-json-badge">${H(`chat.codeBlock.jsonBadge`)}</span>
      <span class="chat-json-label">${j_(e.parsed)}</span>
    </summary>
    <pre class="chat-json-content"><code>${e.text}</code></pre>
  </details>`}function N_(e,t){let n=p(p(e)?.__openclaw);if(n?.truncated===!0&&n.reason===`oversized`)return H(`chat.messages.tooLargeToDisplay`);let r=t.content.flatMap(e=>e.type===`text`&&typeof e.text==`string`?[e.text]:[]).join(`
`);return xr(t.role)===`assistant`?bd(r).trim():r.trim()}function P_(e){return e.length>V_||e.split(`
`,41).length>H_}function F_(e){let t=null;return n=>{if(t?.disconnect(),t=null,!(n instanceof HTMLElement))return;let r=()=>{let t=n.parentElement,r=t?.querySelector(`:scope > .chat-message-disclosure__toggle`);if(!t||!r)return;let i=e||n.scrollHeight>n.clientHeight+1;t.classList.toggle(`has-overflow`,i),r.hidden=!i};queueMicrotask(r),typeof ResizeObserver==`function`&&(t=new ResizeObserver(r),t.observe(n))}}function I_(e,t,n,r,i){let a=n.assistantMessageDisclosure,o=n.role===`assistant`,s=o||n.role===`user`&&a?.onRetryFullMessage,c=s&&a?.expanded,l=L_(c?a.markdown??e:e,n.isStreaming,c?{...r,mode:`document`}:r,i,o&&n.isStreaming?t:void 0);if(s&&a?.onRetryFullMessage)return I`
      ${l}
      <div class="chat-message-load-error">
        ${H(`chat.messages.fullContentLoadExhausted`)}
        <button
          type="button"
          class="chat-message-load-error__retry"
          @click=${a.onRetryFullMessage}
        >
          ${H(`common.retry`)}
        </button>
      </div>
    `;if(n.role!==`user`||!n.onToggleUserMessageExpanded||!P_(e))return l;let u=`user-message:${t}`,d=n.isUserMessageExpanded?.(u)??!1;return I`
    <div class="chat-message-disclosure ${d?`is-expanded has-overflow`:``}">
      <div class="chat-message-disclosure__content" ${P(F_(d))}>
        ${l}
      </div>
      <button
        class="chat-message-disclosure__toggle"
        type="button"
        ?hidden=${!d}
        aria-label=${H(d?`chat.messages.showLess`:`chat.messages.showMore`)}
        aria-expanded=${String(d)}
        @click=${()=>n.onToggleUserMessageExpanded?.(u)}
      >
        ${d?B.chevronUp:B.chevronDown}
      </button>
    </div>
  `}function L_(e,t,n,r,i){let a=t?Ni(e,n,i):[Oi(e,n),``];if(r){let e=+!!a[1].trim();a[e]=R_(a[e],r)}let o=a.map(e=>ln(e));return I` <div class="chat-text" dir="${Wf(e)}">${o}</div> `}function R_(e,t){let n=document.createElement(`template`);n.innerHTML=e;let r=n.content.lastElementChild,i=r?z_(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 z_(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?z_(t):e.textContent?.trim()?e:null}var B_,V_,H_;function U_(){return(U_=e((()=>{F(),an(),un(),z(),la(),V(),Cr(),xd(),Yf(),B_=2e4,V_=1200,H_=40})))()}function W_(e,t={}){if(t.eligible===!1)return``;let n=(eu(e)^(t.salt??G_))>>>0;return n%1e3>=K_?``:q_[Math.floor(n/1e3)%q_.length]??``}var G_,K_,q_;function J_(){return(J_=e((()=>{G_=Math.trunc(Math.random()*4294967295),K_=50,q_=[`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 Y_(e){let t=Math.max(1,Math.round(e/1e3)),n=In.getLocale(),r=[];for(let{seconds:e,unit:i}of $_){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 X_(e){return e===1?H(`chat.turnRecap.tokensOne`):H(`chat.turnRecap.tokens`,{count:wt(e)})}function Z_(e,t={}){let n=t.waitingApproval===!0,r=t.presentation===`continuation`,i=n?H(`chat.waitingForApproval`):t.startupLabel||H(`common.working`),a=!n&&!t.startupLabel,o=t.outputTokens;return I`
    <div
      class="chat-working-indicator ${r?`chat-working-indicator--continuation`:``}"
      role="status"
      aria-live="off"
    >
      ${r?L:I`
              <div
                class="chat-bubble chat-reading-indicator ${W_(e.key,{eligible:!n})}"
                aria-hidden="true"
              >
                ${B.claw}
              </div>
            `}
      <span class="chat-working-indicator__status">
        <span class=${a&&!r?`sr-only`:``}>${i}</span>
        ${n?L:I`
                <openclaw-elapsed-time
                  class="chat-working-indicator__elapsed"
                  .startMs=${e.startedAt}
                ></openclaw-elapsed-time>
              `}
        ${o==null?a?I`
                  <openclaw-working-phrase
                    aria-hidden="true"
                    .startMs=${e.startedAt}
                    .seed=${e.key}
                  ></openclaw-working-phrase>
                `:L:I`
                <span aria-hidden="true">·</span>
                <span class="chat-working-indicator__tokens"
                  >${X_(o)}</span
                >
              `}
      </span>
    </div>
  `}function Q_(e,t={}){let n=t.presentation===`continuation`,r=Y_(e.runtimeMs),i=typeof e.outputTokens==`number`?X_(e.outputTokens):null;return I`
    <div
      class="chat-tasks-status chat-turn-recap ${n?`chat-turn-recap--continuation`:``}"
      role="status"
    >
      ${n?L:I`<span class="chat-tasks-status__claw" aria-hidden="true">${B.claw}</span>`}
      <span>${H(`chat.turnRecap.doneIn`,{duration:r})}</span>
      ${i===null?L:I`
              <span class="chat-tasks-status__sep" aria-hidden="true">·</span>
              <span>${i}</span>
            `}
    </div>
  `}var $_;function ev(){return(ev=e((()=>{F(),ii(),Er(),z(),V(),yt(),J_(),$_=[{seconds:86400,unit:`day`},{seconds:3600,unit:`hour`},{seconds:60,unit:`minute`},{seconds:1,unit:`second`}]})))()}function tv(){return(tv=e((()=>{})))()}function nv(){return(nv=e((()=>{})))()}function rv(){return(rv=e((()=>{})))()}function iv(){return(iv=e((()=>{})))()}function Q(e,...t){return{id:e,label:`shortcutsOverlay.labels.${e}`,combos:t}}function av(e,t){return{id:e,label:`shortcutsOverlay.sections.${e}`,entries:t}}function ov(e=`enter`){return e===`modifier-enter`?sv.map(e=>e.entries.some(e=>cv.has(e.id))?av(e.id,e.entries.map(e=>cv.has(e.id)?Q(e.id,j.modifiedEnter):e)):e):sv}var sv,cv;function lv(){return(lv=e((()=>{Me(),sv=[av(`general`,[Q(`commandPalette`,j.commandPalette),Q(`keyboardShortcuts`,j.keyboardShortcuts),Q(`toggleSidebar`,j.toggleSidebar),Q(`debugOverlay`,j.debugOverlay),Q(`appearanceSettings`,j.appearanceSettings),Q(`startNewSession`,j.sendMessage),Q(`closeDialog`,j.escape)]),av(`chat`,[Q(`sendMessage`,j.sendMessage),Q(`newline`,j.newline),Q(`steerImmediately`,j.modifiedEnter),Q(`historyRecall`,j.historyPrevious,j.historyNext),Q(`transcriptSearch`,j.transcriptSearch),Q(`clearReply`,j.escape),Q(`stopResponse`,j.escape),Q(`cancelDictation`,j.escape),Q(`saveQueuedMessage`,j.modifiedEnter)]),av(`panels`,[Q(`terminalPanel`,j.terminalPanel),Q(`homePanel`,j.homePanel),Q(`workspaceFiles`,j.workspaceFiles),Q(`sideChat`,j.sideChat)]),av(`sidebar`,[Q(`toggleSessionSelect`,j.toggleSessionSelect),Q(`extendSessionSelect`,j.extendSessionSelect)]),av(`imageViewer`,[Q(`zoomIn`,j.zoomIn),Q(`zoomOut`,j.zoomOut),Q(`zoomReset`,j.zoomReset)]),av(`approvals`,[Q(`approveOnce`,j.modifiedEnter),Q(`approveAlways`,j.approveAlways),Q(`denyApproval`,j.denyApproval)])],cv=new Set([`sendMessage`,`startNewSession`])})))()}function uv(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}function dv(e){return Math.max(0,Math.round(e))}function fv(e,t){let n=!0,r=null,i=null,a=()=>{if(n){n=!1;try{e()}finally{t()}}};if(typeof window>`u`||typeof window.requestAnimationFrame!=`function`)queueMicrotask(a);else{let e=!1,t=window.requestAnimationFrame(()=>{if(e=!0,r=null,!n)return;let t=!1,o=window.requestAnimationFrame(()=>{t=!0,i=null,a()});t||(i=o)});e||(r=t)}return()=>{n&&(n=!1,r!==null&&(window.cancelAnimationFrame(r),r=null),i!==null&&(window.cancelAnimationFrame(i),i=null))}}function pv(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 mv(e,t,n,r){let i={ts:Date.now(),event:t,payload:n};Array.isArray(e.eventLogBuffer)&&(e.eventLogBuffer=[i,...typeof r?.maxBufferedEventsForType==`number`?pv(e.eventLogBuffer,t,Math.max(0,r.maxBufferedEventsForType-1)):e.eventLogBuffer].slice(0,gv)),r?.console!==!1&&(r?.warn===!0?console.warn:console.debug)(`[openclaw] ${t}`,n)}function hv(e,t){if(e.renderLifecycle){e.renderLifecycle.afterCommit(e=>fv(t,e));return}fv(t,()=>void 0)}var gv;function _v(){return(_v=e((()=>{gv=250})))()}function vv(e,t,n){let r=xe(t),i=/^agent:([^:]+):(.*)$/u.exec(r),a=i?.[2]??r,o=De(t),c=[ue,He(e)].includes(a.toLowerCase()),l=ze(e),u=i?.[1],d=c&&s(u??``)===`main`&&l!==`main`&&e.agentsList?.agents!=null&&!e.agentsList.agents.some(e=>s(e.id)===`main`),f=e.agentsList?.scope?e.agentsList.scope===`global`:De(Ut(ue,e.hello)),p=(d?l:n?.trim()||u)||(o?Ce(e):l),m=o||c&&f?`global`:c?ue:a;return`agent:${s(p)}:${m}`}function yv(e,t,n){let r=vv(e,t,n);return wv.get(e.sessions)?.get(r)}function bv(e,t,n,r){let i=wv.get(e.sessions)??new Map;wv.set(e.sessions,i);let a=vv(e,t,r);i.set(a,n),n.finally(()=>{i.get(a)===n&&i.delete(a)})}function xv(e,t,n,r={}){let i=yv(e,t,r.agentId),a=(async()=>{let a=await e.sessions.patch(t,n,{agentId:r.agentId,expectedSessionId:r.expectedSessionId,ownsModelOverride:r.ownsModelOverride,waitFor:i});return a&&await r.reconcile?.(a),a})();return bv(e,t,a.then(e=>e!==null,()=>!1),r.agentId),a}function Sv(e,t){let n=v(e),r=we(n??``),i=r&&r.agentId!==`main`&&(r.rest===`main`||r.rest===`global`)?r.agentId:void 0,a=i??v(t.agentId);return(n===`global`||i)&&a?{agentId:a}:{}}async function Cv(e,t,n,r={}){let i=await xv({sessions:e.sessions,assistantAgentId:e.agentId,agentsList:e.defaultAgentId?{defaultId:e.defaultAgentId}:null,hello:null},t,n,{...Sv(t,e),...r});if(!i)throw Error(`Session capability is unavailable`);return i}var wv;function Tv(){return(Tv=e((()=>{Se(),D(),wv=new WeakMap})))()}function Ev(e,t){return{compact:Nt(e,{method:`sessions.compact`,requiredScope:`operator.admin`}),abort:Nt(e,{method:t?`chat.abort`:`sessions.abort`,requiredScope:`operator.write`}),rewind:Nt(e,{method:`sessions.rewind`,requiredScope:`operator.admin`}),fork:Nt(e,{method:`sessions.fork`,requiredScope:`operator.write`}),reset:Nt(e,{method:`sessions.reset`,requiredScope:`operator.admin`}),branchSwitch:Nt(e,{method:`sessions.branches.switch`,requiredScope:`operator.admin`})}}function Dv(){return(Dv=e((()=>{lt()})))()}function Ov(e){return typeof e==`string`?e:e instanceof Error&&typeof e.message==`string`?e.message:`unknown error`}function kv(e){let t=Ov(e.message),n=u(t),r=_(e.details),i=ee(t),a=r?.reason??i?.reason;if(n.startsWith(`pairing required:`)&&a)return`gateway pairing required: ${re(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})`:ne(e.details);case`role-upgrade`:return r.approvedRoles||r.requestedRole?`device role upgrade requires approval (approved: ${o}; requested: ${s})`:ne(e.details);case`metadata-upgrade`:return`device reconnect details changed and require approval`;default:return`gateway pairing required`}}function Av(e){let t=Ov(e.message);switch(kn(e)){case y.AUTH_TOKEN_MISMATCH:return`gateway token mismatch`;case y.AUTH_UNAUTHORIZED:return`gateway auth failed`;case y.AUTH_RATE_LIMITED:return`too many failed authentication attempts`;case y.PAIRING_REQUIRED:return kv(e);case y.CONTROL_UI_DEVICE_IDENTITY_REQUIRED:return`device identity required (use HTTPS or localhost)`;case y.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 y.AUTH_TOKEN_MISSING:return`gateway token missing`}let n=u(t);return n===`fetch failed`||n===`failed to fetch`||n===`connect failed`?`gateway connect failed`:t}function jv(e){let t=e&&typeof e==`object`?Av(e):Ov(e);return O(t)}function Mv(){return(Mv=e((()=>{C(),wn(),A()})))()}function Nv(e,t){if(e.length===0&&t.length===0)return[];let n=Math.max(0,e.length-Vv),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=qi(n);if(!a||!a.trim())continue;let o=typeof n.timestamp==`number`?n.timestamp??0:0;r.push({text:a,ts:o})}r.sort((e,t)=>t.ts-e.ts);let i=[],a=new Set;for(let e of r)a.has(e.text)||(a.add(e.text),i.push(e.text));return i}function Pv(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,Vv))}function Fv(e){e.chatInputHistorySessionKey=null,e.chatInputHistoryItems=null,e.chatInputHistoryIndex=-1,e.chatDraftBeforeHistory=null,e.chatMentionsBeforeHistory=void 0}function Iv(e,t,n){e.chatMentions=n??xa(e.chatMessage,t,e.chatMentions),e.chatMessage=t,Fv(e)}function Lv(e){if(e.chatInputHistoryIndex===-1)return!1;if(!Array.isArray(e.chatInputHistoryItems)||e.chatInputHistorySessionKey!==e.sessionKey)return!0;let t=e.chatInputHistoryItems[e.chatInputHistoryIndex];return typeof t!=`string`||t!==e.chatMessage}function Rv(e){if(Array.isArray(e.chatInputHistoryItems)&&e.chatInputHistorySessionKey===e.sessionKey)return e.chatInputHistoryItems;let t=Nv(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 zv(e,t){let n=Rv(e);return n.length===0?!1:t===`up`?e.chatInputHistoryIndex>=n.length-1?!1:(e.chatInputHistoryIndex+=1,e.chatMessage=n[e.chatInputHistoryIndex]??e.chatMessage,e.chatMentions=[],!0):e.chatInputHistoryIndex===-1?!1:e.chatInputHistoryIndex===0?(e.chatInputHistoryIndex=-1,e.chatMessage=e.chatDraftBeforeHistory??``,e.chatMentions=e.chatMentionsBeforeHistory,!0):(--e.chatInputHistoryIndex,e.chatMessage=n[e.chatInputHistoryIndex]??e.chatMessage,e.chatMentions=[],!0)}function Bv(e,t){Lv(e)&&Fv(e);let n=e.chatInputHistoryIndex!==-1,r={historyNavigationActiveBefore:n,historyNavigationActiveAfter:n,selectionStart:t.selectionStart,selectionEnd:t.selectionEnd,valueLength:t.valueLength};if(e.chatLoading)return{...r,handled:!1,preventDefault:!1,restoreCaret:null,decision:`blocked:history-loading`};if(t.altKey||t.ctrlKey||t.metaKey||t.shiftKey||t.isComposing||t.keyCode===229)return{...r,handled:!1,preventDefault:!1,restoreCaret:null,decision:`blocked:modifier-or-composition`};if(t.selectionStart!==t.selectionEnd)return{...r,handled:!1,preventDefault:!1,restoreCaret:null,decision:`blocked:selection-range`};if(n){let n=t.key===`ArrowUp`?`up`:`down`,i=zv(e,n),a=e.chatInputHistoryIndex!==-1;return{...r,handled:i,preventDefault:i,restoreCaret:i?n:null,decision:i?n===`up`?`handled:history-up`:`handled:history-down`:`blocked:history-boundary`,historyNavigationActiveAfter:a}}if(t.key===`ArrowDown`)return{...r,handled:!1,preventDefault:!1,restoreCaret:null,decision:`blocked:arrowdown-editing-mode`};if(t.selectionStart!==0)return{...r,handled:!1,preventDefault:!1,restoreCaret:null,decision:`blocked:arrowup-not-at-start`};let i=zv(e,`up`),a=e.chatInputHistoryIndex!==-1;return{...r,handled:i,preventDefault:i,restoreCaret:i?`up`:null,decision:i?`handled:enter-history-up`:`blocked:history-boundary`,historyNavigationActiveAfter:a}}var Vv;function Hv(){return(Hv=e((()=>{Tr(),ca(),Vv=100})))()}function Uv(e,t){if(e.chatRunId!==t.runId)return;let n=e.chatRunStartup;n?.runId===t.runId&&t.state===`status`&&(n.state===`activity`||n.seq!==void 0&&(t.seq===void 0||t.seq<=n.seq))||(e.chatRunStartup=t)}function Wv(e,t){if(e)return H(Kv[e.phase]);switch(t?.phase){case`pending`:case`requested`:case`provisioning`:return H(`chat.startupStatus.provisioningEnvironment`);case`syncing`:return H(`chat.startupStatus.preparingWorkspace`);case`starting`:return H(`newSession.starting`);case`active`:case`sending`:return H(`chat.composer.sendingMessage`);default:return}}function Gv(e){return e?.state===`status`?e:null}var Kv;function qv(){return(qv=e((()=>{V(),Kv={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`,starting_model:`chat.startupStatus.startingModel`}})))()}function Jv(e,n){let r=t(n);if(!r)return null;let i=t(e);if(i){let e=`${i}/`;return`${i}/${(u(r).startsWith(u(e))?r.slice(e.length).trim():r)||r}`}let a=r.indexOf(`/`);if(a>0){let e=r.slice(0,a).trim(),t=r.slice(a+1).trim();if(e&&t)return`${e}/${t}`}return r}function Yv(e,n){if(Array.isArray(e)){let n=e.map(e=>t(e)).filter(e=>!!e).map(e=>O(e));if(n.length>0)return n}if(!Array.isArray(n))return[];let i=[];for(let e of n){let n=r(e),a=t(n?.provider),o=t(n?.model);if(!a||!o)continue;let s=O(t(n?.reason)?.replace(/_/g,` `)??t(n?.code)??(typeof n?.status==`number`?`HTTP ${n.status}`:null)??t(n?.error)??`error`),c=Jv(a,o)??`${a}/${o}`;i.push(`${c}: ${pe(s)}`)}return i}function Xv(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 Zv(e,n){let r=e.waitingApprovalStatuses??=new Map,i=e.waitingApprovalResolvedIds??=new Set,a=new Set(n.map(e=>e.id));for(let e of i)a.has(e)||i.delete(e);let o=n.filter(t=>t.kind===`exec`&&t.request.sessionKey&&Je(e,t.request.sessionKey,t.request.agentId)),s=new Set(o.map(e=>e.id)),c=!1;for(let e of r.keys())s.has(e)||(r.delete(e),c=!0);if(r.size>0)return c;for(let n of o){let a=t(n.request.runId);!a||!e.knownAgentRunIds?.has(a)||i.has(n.id)||(r.set(n.id,{approvalId:n.id,toolCallId:null,runId:a}),c=!0)}return c}function Qv(e){e.compactionClearTimer!=null&&(window.clearTimeout(e.compactionClearTimer),e.compactionClearTimer=null)}function $v(e,t,n){e.compactionClearTimer=window.setTimeout(()=>{let t=e.compactionStatus;n?.phase&&t?.phase!==n.phase||n?.runId&&t?.runId!==n.runId||(e.compactionStatus=null,e.compactionClearTimer=null,e.requestUpdate?.())},t)}function ey(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);Qv(e),e.compactionStatus={phase:n,runId:t,...s?{itemId:s}:{},startedAt:o?a.startedAt:Date.now(),completedAt:i?Date.now():null},i||$v(e,cy,{phase:n,runId:t})}function ty(e,n){if(!n||n.operation!==`compact`)return;let r=t(n.sessionKey),i=t(n.agentId)??void 0;if(!r||!Je(e,r,i))return;let a=t(n.operationId)??`session-compact:${r}`;if(n.phase===`start`){Qv(e),ey(e,a,`active`);return}if(n.phase===`end`&&!(e.compactionStatus?.runId&&e.compactionStatus.runId!==a)){if(Qv(e),n.completed===!0){ey(e,a,`complete`);return}e.compactionStatus=null}}function ny(e,n){let r=n.data??{},i=typeof r.phase==`string`?r.phase:``,a=r.completed===!0,o=t(r.itemId)??void 0;if(Qv(e),i===`start`){ey(e,n.runId,`active`,o);return}if(i===`end`){if(r.willRetry===!0&&a){ey(e,n.runId,`retrying`,o);return}if(a){ey(e,n.runId,`complete`,o);return}e.compactionStatus=null}}function ry(e,n){let r=n.data??{},i=t(r.phase);(i===`end`||i===`error`)&&iy(e,n,{allowSessionScopedWhenIdle:!0}).accepted&&e.compactionStatus?.phase===`retrying`&&(e.compactionStatus.runId&&e.compactionStatus.runId!==n.runId||ey(e,n.runId,`complete`))}function iy(e,n,r){let i=typeof n.sessionKey==`string`?n.sessionKey:void 0;return i&&!Je(e,i,t(n.agentId))?{accepted:!1}:!e.chatRunId&&r?.allowSessionScopedWhenIdle&&i?{accepted:!0,sessionKey:i}:e.chatRunId&&n.runId!==e.chatRunId||!e.chatRunId?{accepted:!1}:{accepted:!0,sessionKey:i}}function ay(e,n){let r=n.data??{},i=n.stream===`fallback`?`fallback`:t(r.phase);if(n.stream===`lifecycle`&&i!==`fallback`&&i!==`fallback_cleared`||!iy(e,n,{allowSessionScopedWhenIdle:!0}).accepted)return;let a=Jv(r.selectedProvider,r.selectedModel)??Jv(r.fromProvider,r.fromModel),o=Jv(r.activeProvider,r.activeModel)??Jv(r.toProvider,r.toModel),s=Jv(r.previousActiveProvider,r.previousActiveModel)??t(r.previousActiveModel);if(!a||!o||i===`fallback`&&a===o)return;let c=t(r.reasonSummary)??t(r.reason),l=c?O(c):null,u=Yv(r.attemptSummaries,r.attempts);e.fallbackClearTimer!=null&&(window.clearTimeout(e.fallbackClearTimer),e.fallbackClearTimer=null),e.fallbackStatus={phase:i===`fallback_cleared`?`cleared`:`active`,selected:a,active:i===`fallback_cleared`?a:o,previous:i===`fallback_cleared`?s??(o===a?void 0:o):void 0,reason:l??void 0,attempts:u,occurredAt:Date.now()},e.fallbackClearTimer=window.setTimeout(()=>{e.fallbackStatus=null,e.fallbackClearTimer=null,e.requestUpdate?.()},ly)}function oy(e,n){let r=t(n.data?.phase);if(r!==`waiting-approval`&&r!==`approval-resolved`)return!1;let i=t(n.data?.approvalId),a=t(n.sessionKey);if(!i||!a)return!0;if(r===`waiting-approval`){let r=e.waitingApprovalStatuses??=new Map;return e.waitingApprovalResolvedIds?.delete(i),r.set(i,{approvalId:i,toolCallId:t(n.data?.toolCallId),runId:n.runId}),!0}return(e.waitingApprovalResolvedIds??=new Set).add(i),e.waitingApprovalStatuses?.delete(i),!0}function sy(e,t){return t.stream===`compaction`?(ny(e,t),!0):t.stream===`lifecycle`?oy(e,t)?!0:(ry(e,t),ay(e,t),!0):t.stream===`fallback`&&(ay(e,t),!0)}var cy,ly;function uy(){return(uy=e((()=>{A(),D(),cy=3e5,ly=8e3})))()}function dy(e){if(e.stream!==`item`)return null;let t=e.data??{};if(t.kind!==`preamble`)return null;let n=(typeof t.itemId==`string`&&t.itemId.trim()?t.itemId:typeof t.id==`string`&&t.id.trim()?t.id:null)?.trim(),r=fy(t.progressText);return!r&&!n?null:{text:r,...n?{itemId:n}:{}}}function fy(e){if(typeof e!=`string`)return``;let t=za(e).text.trim(),n=t.replace(/^[\s*_`~]+|[\s*_`~]+$/gu,``).trim();return/^NO_REPLY$/iu.test(n)?``:t}function py(e,t){let n=dy(t);if(!n)return!1;if(!iy(e,t,{allowSessionScopedWhenIdle:!0}).accepted)return!0;if(n.text&&Uv(e,{state:`activity`,runId:t.runId}),n.itemId&&e.chatMessages?.some(e=>{let r=$n(e);return r?.itemId===n.itemId&&r?.runId===t.runId}))return e.chatStreamSegments=e.chatStreamSegments.filter(e=>e.itemId!==n.itemId||e.runId!==t.runId),!0;if(n.itemId&&!n.text.trim())return e.chatStreamSegments=e.chatStreamSegments.filter(e=>e.itemId!==n.itemId),!0;let r=n.itemId?e.chatStreamSegments.findIndex(e=>e.itemId===n.itemId):-1;if(r>=0)return e.chatStreamSegments[r]&&(e.chatStreamSegments=e.chatStreamSegments.map((e,i)=>i===r?{...e,text:n.text,runId:t.runId}: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 my(){return(my=e((()=>{Zn(),Ba(),qv(),uy()})))()}function hy(e){let t=r(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=r(e);t?.type===`text`&&typeof t.text==`string`&&t.text&&n.push(t.text)}return n.length>0?n.join(`
`):null}function gy(e){if(e==null)return null;if(typeof e==`number`||typeof e==`boolean`)return String(e);let t=hy(e),n;if(typeof e==`string`)n=e;else if(t)n=t;else try{n=JSON.stringify(e,null,2)}catch{n=ke(e)}let r=_t(n,Iy);return r.truncated?`${r.text}\n\n… truncated (${r.total} chars, showing first ${r.text.length}).`:r.text}function _y(e){let t=r(e),n=t?.added,i=t?.removed;return typeof n==`number`&&Number.isInteger(n)&&n>=0&&typeof i==`number`&&Number.isInteger(i)&&i>=0?{added:n,removed:i}:void 0}function vy(e,n){let i=r(r(n.result)?.details);if(i?.changedModel!==!0)return;let a=t(i.sessionKey)??e.sessionKey,o=t(i.agentId);!o||!Je(e,a,o)||e.sessions.refreshReplacement(o)}function yy(e){let t=[];return t.push({type:`toolcall`,name:e.name,arguments:e.args??{},...e.details===void 0?{}:{details:e.details}}),(e.output||e.resultReceived)&&t.push({type:`toolresult`,name:e.name,text:e.output??``,...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,content:t,timestamp:e.startedAt,__openclawToolStreamLive:!0,__openclawToolStreamResultReceived:e.resultReceived===!0,...e.resultReceived!==!0&&e.liveDiffStat?{__openclawToolStreamDiffStat:e.liveDiffStat}:{},__openclawToolStreamReceivedAt:e.receivedAt}}function by(e){if(e.toolStreamOrder.length<=Py)return;let t=e.toolStreamOrder.length-Py,n=e.toolStreamOrder.splice(0,t);for(let t of n)e.toolStreamById.delete(t)}function xy(e){e.chatToolMessages=e.toolStreamOrder.map(t=>e.toolStreamById.get(t)?.message).filter(e=>!!e)}function Sy(e){e.toolStreamSyncTimer!=null&&(clearTimeout(e.toolStreamSyncTimer),e.toolStreamSyncTimer=null)}function Cy(e){Sy(e),xy(e)}function wy(e,t=!1){if(t){Cy(e);return}e.toolStreamSyncTimer??=window.setTimeout(()=>{Cy(e),e.requestUpdate?.()},Fy)}function Ty(e){Sy(e),e.toolStreamById.clear(),e.toolStreamOrder=[],e.activityEventSeqById?.clear(),e.chatToolMessages=[],e.chatStreamSegments=[],e.knownAgentRunIds?.clear(),e.waitingApprovalStatuses?.clear()}function Ey(e,t){Sy(e);let n=new Set;for(let r of e.toolStreamOrder)e.toolStreamById.get(r)?.runId===t&&n.add(r);for(let t of n)e.toolStreamById.delete(t);let r=`tool:[${JSON.stringify(t)},`;for(let t of e.activityEventSeqById?.keys()??[])t.startsWith(r)&&e.activityEventSeqById?.delete(t);e.toolStreamOrder=e.toolStreamOrder.filter(e=>!n.has(e)),xy(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 Dy(e,t){return`tool:${JSON.stringify([e,t])}`}function Oy(e,t){return`${e}:review:${JSON.stringify(t)}`}function ky(e,n){let i=Number.isSafeInteger(n.seq)?n.seq:0;if(n.stream===`tool`){let a=t(n.data?.toolCallId);if(!a)return!0;let o=Dy(n.runId,a),s=`${o}:result`,c=e.activityEventSeqById?.get(s),l=t(n.data?.phase);if(l!==`result`&&c!==void 0&&i<=c)return!1;let u=l===`review`?t(r(n.data.review)?.id):void 0,d=e.activityEventSeqById?.get(`${o}:review-floor`);if(u&&d!==void 0&&i<=d)return!1;let f=u?Oy(o,u):o,p=e.activityEventSeqById?.get(f);if(p!==void 0&&i<=p)return!1;let m=e.activityEventSeqById??=new Map;if(m.set(f,i),l===`result`){m.set(s,i);for(let e of m.keys())e.startsWith(`${o}:review:`)&&m.delete(e)}return!0}let a,o=n.stream===`lifecycle`&&(n.data?.phase===`end`||n.data?.phase===`error`);if(n.stream===`compaction`||o)a=`compaction:${n.runId}`;else if(n.stream===`item`&&n.data?.kind===`preamble`){let e=t(n.data.itemId)??t(n.data.id)??`latest`;a=`preamble:${n.runId}:${e}`}else return!0;let s=e.activityEventSeqById?.get(a);return s!==void 0&&i<=s?!1:((e.activityEventSeqById??=new Map).set(a,i),!0)}function Ay(e,n){if(n.stream!==`usage`)return!1;let r=t(n.sessionKey);if(r){if(!Je(e,r,t(n.agentId)))return!0}else if(!e.chatRunId||n.runId!==e.chatRunId)return!0;let i=n.data?.outputTokens;if(typeof i!=`number`||!Number.isFinite(i))return!0;let a=Math.floor(i);if(a<0)return!0;let o=e.chatRunUsageById?.get(n.runId);if(o&&n.seq<=o.seq)return!0;let s=new Map(e.chatRunUsageById);s.delete(n.runId),s.set(n.runId,{outputTokens:a,seq:n.seq});for(let e of[...s.keys()].slice(0,-50))s.delete(e);return e.chatRunUsageById=s,!0}function jy(e,n){let r=n.stream===`notice`;if(!r&&n.stream!==`codex_app_server.guardian`)return!1;if(!iy(e,n,{allowSessionScopedWhenIdle:!0}).accepted)return!0;let i=n.data??{},a=t(i.phase),o=t(i.status),s=t(i.reviewId),c=t(i.threadId),l=t(i.turnId),u=s??(c&&l&&typeof i.startedAtMs==`number`&&Number.isFinite(i.startedAtMs)?i.startedAtMs:n.seq),d=`${r?`system`:`guardian`}:${n.runId}:`+(a===`warning`?`warning:${n.seq}`:`${c??`thread`}:${l??`turn`}:${u}`),f=e.guardianNotices??[],p=a===`strict_review_required`?`strict-review-required`:a===`warning`?`warning`:a===`started`&&o===`inProgress`?`reviewing`:a===`completed`&&o===`approved`?`approved`:a===`completed`&&[`denied`,`timedOut`,`aborted`].includes(o??``)?`denied`:null;if(!p)return!0;let m=t(i.targetItemId);if((a===`started`||a===`completed`)&&m)return a===`completed`&&(e.guardianNotices=f.filter(e=>e.key!==d)),!0;let h={key:d,runId:n.runId,timestamp:n.ts,kind:p};r&&(h.source=`system`);for(let e of[`command`,`riskLevel`,`rationale`,`message`]){let n=t(i[e]);n&&(h[e]=n)}let g=f.findIndex(e=>e.key===h.key);return e.guardianNotices=g===-1?[...f.slice(-49),h]:f.map((e,t)=>t===g?h:e),!0}function My(e,t,n,r){let i=n.toolCallId,a=Dy(t.runId,i),o=e.activityEventSeqById??=new Map,s=e=>o.get(Oy(a,e.id))??0,c=`${a}:review-floor`,l=ra(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(Oy(a,e.id))}let m=Ji(t.data),h=Ti(p),g=Ji(n.details),_=g===`denied`?`denied`:m??h??void 0;n.details=Hi(n.details,p,_&&t.seq>=u?_:g),n.message=yy(n),wy(e,!0)}function Ny(e,n){if(!n)return!1;let i=typeof n.sessionKey==`string`?n.sessionKey:void 0;if(i&&!Je(e,i,t(n.agentId))||!ky(e,n))return!1;if(n.stream===`lifecycle`||n.stream===`tool`){let r=t(n.runId);r&&(e.knownAgentRunIds??=new Set).add(r)}if(Ay(e,n)||jy(e,n)||sy(e,n)||py(e,n))return!0;if(n.stream!==`tool`)return!1;let a=n.data??{},o=typeof a.toolCallId==`string`?a.toolCallId:``;if(!o)return!1;let s=Cm(n.runId,o),c=e.toolStreamById.get(s),l=typeof a.phase==`string`?a.phase:``,u=l===`review`?bi(a.review):null;if(l===`review`&&!u)return!0;let d=l!==`start`&&c?.name&&c.name!==`tool`?c.name:t(a.name)??c?.name??`tool`;l===`start`&&n.runId===e.chatRunId&&Uv(e,{state:`activity`,runId:n.runId});let f=l===`start`?a.args:void 0,p=l===`update`?gy(a.partialResult):l===`result`?gy(a.result):void 0,m=l===`result`?r(a.result)?.details:void 0,h=Ji(a)??Ji(m),g=h?Hi(m,[],h):m,_=l===`result`&&typeof a.isError==`boolean`?a.isError:void 0,v=(l===`result`?r(a.result):void 0)?.exitCode,y=typeof v==`number`&&Number.isInteger(v)?v:void 0,b=l===`input_delta`?_y(a.diff):void 0;d===`session_status`&&l===`result`&&vy(e,a);let x=Date.now();if(!c)oh(e,{runId:n.runId,toolCallId:o,timestamp:x}),c={toolCallId:o,runId:n.runId,sessionKey:i,name:d,args:f,output:p||void 0,...g===void 0?{}:{details:g},..._===void 0?{}:{isError:_},...y===void 0?{}:{exitCode:y},...b?{liveDiffStat:b}:{},...l===`result`?{resultReceived:!0}:{},startedAt:typeof n.ts==`number`?n.ts:x,receivedAt:x,message:{}},e.toolStreamById.set(s,c),e.toolStreamOrder.push(s);else{if(c.name=d,f!==void 0&&(c.args=f),p!==void 0&&(c.output=p||void 0),m!==void 0||h){let e=Ji(c.details),t=e===`denied`?`denied`:h??e,n=ra(c.details);c.details=n.length?Hi(m,n,t):g}_!==void 0&&(c.isError=_),y!==void 0&&(c.exitCode=y),b&&(c.liveDiffStat=b),l===`result`&&(c.liveDiffStat=void 0,c.resultReceived=!0)}return u?(by(e),My(e,n,c,u),!0):(c.message=yy(c),by(e),wy(e,l===`result`),!0)}var Py,Fy,Iy;function Ly(){return(Ly=e((()=>{Li(),yt(),D(),qv(),sh(),jm(),my(),uy(),Py=50,Fy=80,Iy=12e4})))()}function Ry(e){return(typeof e==`string`?e.trim():``)||null}function zy(e,t){e.lastError=t,e.chatError=t}function By(e){return!!(e.chatSending||e.chatRunId)}function Vy(e,t,n){if(e.chatRunStatus?.runId===t||e.lastLocalTerminalReconcile?.runId===t||fc(e,{type:`runDelta`,runId:t}).runs[t]?.status!==`streaming`)return;let r=e.chatRunId===t,i=r&&typeof e.chatStream==`string`;r||(ob(e,{clearToolStreamForRun:!0,clearIndicators:!!e.chatRunId,clearRunStatus:!0,requestUpdate:!1}),e.chatRunError=null),e.chatRunId=t,ac(e,t),i||(e.chatStream=``,e.chatStreamStartedAt=n)}function Hy(e,t,n,r){ac(e,n),e.chatRunError={...r?{kind:r}:{},summary:pe(t),...n?{runId:n}:{}}}function Uy(e){return!!(e.chatRunId||e.sessionsResult?.sessions.some(t=>N(t.key,e.sessionKey)&&ie(t)))}function Wy(e){return Uy(e)||!!e.sessionsResult?.sessions.some(t=>N(t.key,e.sessionKey)&&t.hasActiveSubagentRun===!0)}function Gy(e){return pb.has(u(e.trim()))}function Ky(e,t){return De(t)||Te(e)&&Ge(e,t)!==null?{}:{clearQueued:!0}}async function qy(e,t){try{return t.runId===null?await e.request(`sessions.abort`,{key:t.sessionKey,...t.agentId?{agentId:t.agentId}:{},...t.clearQueued?{clearQueued:!0}:{}}):t.sessionAbortable?await e.request(`sessions.abort`,{key:t.sessionKey,...t.agentId?{agentId:t.agentId}:{},runId:t.runId}):await e.request(`chat.abort`,{sessionKey:t.sessionKey,...t.agentId?{agentId:t.agentId}:{},runId:t.runId}),{ok:!0}}catch(e){return{ok:!1,error:e}}}function Jy(e,t){let n=e.chatRunSessionAbortable===!0,r=e.chatRunId??null,i={sourceClient:t,sessionKey:e.sessionKey,...zt(e,e.sessionKey)};return r?{...i,runId:r,...n?{sessionAbortable:!0}:{}}:{...i,runId:null,...Ky(e,e.sessionKey)}}async function Yy(e){let t=e.client;if(!t||!e.connected)return!1;let n=await qy(t,Jy(e,t));return n.ok||zy(e,jv(n.error)),n.ok}async function Xy(e){let t=e.pendingAbort,n=e.client;if(!t||!n||!e.connected||(e.pendingAbort=null,t.sourceClient!==n))return!1;let r=Ev({client:n,hello:e.hello,phase:`connected`},!0).abort;if(!r.allowed)return zy(e,r.reason),!1;let i=await qy(n,t);return i.ok?!0:(zy(e,jv(i.error)),!1)}async function Zy(e,t){let n=e.connected?null:e.client,r=n?Jy(e,n):null,i=r?.runId?r:null;if(!e.connected&&!i){zy(e,H(`chat.questions.disconnected`));return}if(t?.preserveDraft||(e.chatMessage=``,e.chatMentions=[],Fv(e)),i){e.pendingAbort=i;return}await Yy(e)}function Qy(e){e!=null&&globalThis.clearTimeout(e)}function $y(e){return e.toolStreamById instanceof Map&&Array.isArray(e.toolStreamOrder)&&Array.isArray(e.chatToolMessages)&&Array.isArray(e.chatStreamSegments)}function eb(e){Qy(e.chatRunStatusClearTimer),e.chatRunStatusClearTimer=null,e.chatRunStatus=null}function tb(e,t){Qy(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,ub(e)||e.requestUpdate?.())},fb)}function nb(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`&&(Qy(e.compactionClearTimer),e.compactionClearTimer=null,e.compactionStatus=null),Qy(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 rb(e,t){let n=new Set,r=Ry(t.sessionKey)??e.sessionKey;r&&n.add(r),Ze(e,`global`,r)&&n.add(`global`);for(let t of e.sessionsResult?.sessions??[])Ze(e,t.key,r,t.agentId)&&n.add(t.key);for(let e of t.sessionKeys??[]){let t=Ry(e);t&&n.add(t)}return n}function ib(e,t,n){if(!t.outcome)return;let r=rb(e,t);if(r.size===0)return;let i=t.sessionStatus??(t.outcome===`done`?`done`:`killed`),a={sessionKeys:[...r],runId:t.runId??e.chatRunId??null,status:i,endedAt:n};e.sessionsResult&&=dt(e.sessionsResult,a),e.sessions?.reconcileRunTerminal?.(a)}function ab(e,t,n){if(!t.yielded)return;let r={sessionKeys:[...rb(e,t)],runId:t.runId??e.chatRunId??null,status:`running`,endedAt:n};e.sessionsResult&&=dt(e.sessionsResult,r),e.sessions?.reconcileRunTerminal?.(r)}function ob(e,t={}){let n=Date.now(),r=t.runId??e.chatRunId??null,i=Ry(t.sessionKey)??e.sessionKey;if((t.clearIndicators??!0)&&nb(e,r),t.clearChatStream&&(e.chatStream=null,e.chatStreamStartedAt=null),t.clearLocalRun&&(e.chatRunId&&(e.chatRunLifecycleGeneration=(e.chatRunLifecycleGeneration??0)+1),e.chatRunId=null,e.chatRunSessionAbortable=void 0),$y(e)&&(t.clearToolStream?Ty(e):t.clearToolStreamForRun&&r&&Ey(e,r)),t.outcome){let a={phase:t.outcome,runId:r,sessionKey:i,occurredAt:n};ib(e,t,n),t.armLocalTerminalReconcile&&(e.lastLocalTerminalReconcile={sessionKey:i,runId:r,phase:t.outcome,sessionStatus:t.sessionStatus??(t.outcome===`done`?`done`:`killed`)}),t.publishRunStatus!==!1&&(e.chatRunStatus=a,tb(e,a))}else t.yielded?(ab(e,t,n),e.lastLocalTerminalReconcile=null,eb(e)):t.clearRunStatus&&eb(e);t.requestUpdate!==!1&&e.requestUpdate?.()}function sb(e){return e.sessionsResult?.sessions.find(t=>Ze(e,t.key,e.sessionKey,t.agentId))}function cb(e){let t=e.lastLocalTerminalReconcile;if(!t||t.sessionKey!==e.sessionKey)return!1;let n=sb(e);return!n||!ie(n)?!1:t.runId==null||n.activeRunIds?.length!==1||n.activeRunIds[0]!==t.runId?(e.lastLocalTerminalReconcile=null,!1):(ib(e,{outcome:t.phase,sessionStatus:t.sessionStatus,sessionKey:t.sessionKey,runId:t.runId},Date.now()),e.requestUpdate?.(),!0)}function lb(e,t={}){if(!e.chatRunId&&e.chatStream==null)return cb(e);let n=sb(e);return n?db(e,n,t):!1}function ub(e){if(e.chatRunId){let t=sb(e);if(t?.lastRunId===e.chatRunId)return db(e,t,{publishRunStatus:!1})}return e.lastLocalTerminalReconcile!=null&&!e.chatRunId&&e.chatStream==null&&lb(e,{publishRunStatus:!1})}function db(e,t,n={}){if(!Ze(e,t.key,e.sessionKey,t.agentId)||!e.chatRunId&&e.chatStream==null||t.hasActiveRun===!0||ie(t)||t.hasActiveRun!==!1&&t.status===`running`)return!1;let r=t.status!==void 0;return t.hasActiveRun!==!1&&!r?!1:(ob(e,{outcome:t.status===`done`?`done`:`interrupted`,sessionStatus:t.status===`running`||t.status===void 0?`killed`:t.status,runId:e.chatRunId,sessionKey:e.sessionKey,sessionKeys:[t.key],clearLocalRun:!0,clearChatStream:!0,clearToolStreamForRun:!0,publishRunStatus:n.publishRunStatus}),!0)}var fb,pb;function mb(){return(mb=e((()=>{V(),A(),Se(),D(),Dv(),Mv(),hc(),Hv(),Ly(),fb=5e3,pb=new Set([`/stop`,`stop`,`esc`,`abort`,`wait`,`exit`])})))()}function hb(e=`smooth`){return e===`smooth`&&typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:e}function gb(){return(gb=e((()=>{})))()}function _b(e){let t=Nb.get(e);if(t)return Nb.delete(e),Nb.set(e,t),t;let n=new Map;for(Nb.set(e,n);Nb.size>Mb;){let e=Nb.keys().next().value;if(typeof e!=`string`)break;Nb.delete(e)}return n}function vb(e,t){let n=_b(e),r=gc(n,t);if(r!==void 0)return r;for(let[e,r]of n)if(N(e,t))return n.delete(e),_c(n,t,r),r}function yb(e,t,n){let r=_b(e);for(let e of r.keys())N(e,t)&&r.delete(e);_c(r,t,{scrollTop:Math.max(0,n.scrollTop),anchorToEnd:n.anchorToEnd})}function bb(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 xb(e){Pb.get(e)?.cancel()}function Sb(e,t){e.chatNewMessagesBelow!==t&&(e.chatNewMessagesBelow=t,e.renderLifecycle.invalidate())}function Cb(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;e.chatLastScrollHeight=i.scrollHeight;let s=r.contentChanged??r.source!==`resize`,c=r.source===`manual`,l=t&&!e.chatHasAutoScrolled;if(!(c||l||!e.chatFollowLocked&&(r.source===`resize`||e.chatUserNearBottom||a<jb))){(s||r.source===`resize`&&o)&&Sb(e,!0);return}let u=hb(n?`smooth`:`auto`);e.chatScrollToEnd?.({behavior:u,source:c?`manual`:`auto`})&&(l&&(e.chatHasAutoScrolled=!0),e.chatFollowLocked=!1,e.chatUserNearBottom=!0,Sb(e,!1))}function wb(e,t,n,r,i){if(r.source!==`manual`&&Pb.get(e)?.manual)return;xb(e);let a=null,o,s={manual:r.source===`manual`,cancel:()=>{Pb.get(e)===s&&(Pb.delete(e),o?.(),a!==null&&cancelAnimationFrame(a))}};Pb.set(e,s);let c=i=>(a=requestAnimationFrame(()=>{Pb.get(e)===s&&(Pb.delete(e),i?.(),Cb(e,t,n,r))}),s.cancel);i?c():o=e.renderLifecycle.afterCommit(c,s.cancel)}function Tb(e,t=!1,n=!1,r={}){wb(e,t,n,r,!0)}function Eb(e,t=!1,n=!1,r={}){wb(e,t,n,r,!1)}function Db(e,t){let n=t.currentTarget;n&&kb(e,n)}function Ob(e){xb(e);let t=e.chatScrollElement?.();t&&kb(e,t,!0)}function kb(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||i<0;if(e.chatIsProgrammaticScroll?.()&&!a)return;let o=t.scrollHeight-t.scrollTop-t.clientHeight;a&&o>8?(e.chatHasAutoScrolled=!0,e.chatFollowLocked=!0):o<=8&&(e.chatFollowLocked=!1),e.chatUserNearBottom=!e.chatFollowLocked&&o<jb,Sb(e,t.scrollHeight-t.clientHeight>8&&o>8)}function Ab(e){xb(e),e.chatHasAutoScrolled=!1,e.chatUserNearBottom=!0,e.chatFollowLocked=!1,e.chatLastScrollTop=0,e.chatLastScrollHeight=0,e.chatNewMessagesBelow=!1}var jb,Mb,Nb,Pb;function Fb(){return(Fb=e((()=>{D(),yc(),jb=450,Mb=8,Nb=new Map,Pb=new WeakMap})))()}function Ib(e){let t=Kb.get(e);return t||(t={historyVersion:0,branchVersion:0,subscriptionGeneration:0,pendingSubscriptionReleases:new Set,historyLoad:{phase:`idle`}},Kb.set(e,t)),t}function Lb(e){return e.phase===`pending-connection`||e.phase===`in-flight`}function Rb(e,t){let n=Ib(e),r=Lb(n.historyLoad);n.historyLoad=t,r!==Lb(t)&&e.transcriptLoadingChanged?.()}function zb(e){let t=Ib(e),n=t.historyLoad;if(n.phase===`idle`)return n;let r=je(e,e.sessionKey)?M(e):void 0;return(n.phase===`committed`?n.key===`${e.sessionKey}\u0000${r??``}`:n.sessionKey===e.sessionKey&&n.requestAgentId===r)?n.phase===`in-flight`&&(!e.connected||n.client!==e.client||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={phase:`idle`},e.chatLoading=!1),t.historyLoad}function Bb(e,t,n,r,i){return{version:++Ib(e).historyVersion,client:t,connectionEpoch:n,sessionKey:r,agentId:i}}function Vb(e,t){return Ib(e).historyVersion===t.version&&e.client===t.client&&e.connected&&e.connectionEpoch===t.connectionEpoch}function Hb(e,t){return Vb(e,t)&&e.sessionKey===t.sessionKey&&(!je(e,t.sessionKey)||M(e)===t.agentId)}function Ub(e,t){om(e);let n=Ib(e);n.historyVersion+=1,Rb(e,{phase:`idle`}),e.chatLoading=!1,fc(e,{type:`sessionReset`},{scope:K(e,{agentId:t})})}function Wb(e,t){let n=t===null?null:O(t);e.lastError=n,e.chatError=n}function Gb(e,t,n){return Ye(e,e.sessionKey,t,n)}var Kb;function qb(){return(qb=e((()=>{A(),D(),dm(),hc(),Kb=new WeakMap})))()}function Jb(e){Ib(e).branchVersion+=1}function Yb(e){return N(e.chatBranchesSessionKey,e.sessionKey)?e.chatBranches??[]:[]}async function Xb(e){let t=e.sessions,n=e.client,r=e.sessionKey;if(!t?.listBranches||!n||!e.connected)return;let i=Ib(e),a=++i.branchVersion,o=e.connectionEpoch,s=zt(e,r);try{let c=await t.listBranches(r,s);if(i.branchVersion!==a||e.client!==n||!e.connected||e.connectionEpoch!==o||!de(e,r,s.agentId))return;e.chatBranches=c,e.chatBranchesSessionKey=r,e.chatBranchesConnectionEpoch=o}catch{}finally{i.branchVersion===a&&e.requestUpdate?.()}}function Zb(){return(Zb=e((()=>{Se(),D(),qb()})))()}function Qb(e,t){if(!(e instanceof Dn)||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 $b(e){let t=typeof e.retryAfterMs==`number`?e.retryAfterMs:tx;return Math.min(Math.max(t,100),nx)}function ex(e){return new Promise(t=>{setTimeout(t,e)})}var tx,nx;function rx(){return(rx=e((()=>{wn(),tx=500,nx=5e3})))()}function ix(e){return`kind`in e}function ax(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 ox(e){return typeof e.sessionInfo?.sessionId==`string`&&e.sessionInfo.sessionId.trim()?e.sessionInfo.sessionId.trim():typeof e.sessionId==`string`&&e.sessionId.trim()?e.sessionId.trim():null}function sx(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 cx(e){if(!e.previousSessionId||e.previousSessionId!==e.nextSessionId||e.previousMessages.length===0)return null;let t=e.previousPagination.totalMessages,n=e.nextPagination.totalMessages,r=sx(e.previousPagination),i=sx(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=Gn(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 lx(e,t){if(!e.chatMessagesBySession)return;let n=e.sessionKey,r=je(e,n)?M(e):void 0,i=t===void 0?Kc(e.chatMessagesBySession,e,{sessionKey:n,agentId:r})?.deltaCursor:t??void 0;Gc(e.chatMessagesBySession,e,{sessionKey:n,agentId:r},{...i===void 0?{}:{deltaCursor:i},...e.chatDisplayedLeafEntryId===void 0?{}:{displayedLeafEntryId:e.chatDisplayedLeafEntryId},messages:e.chatMessages,pagination:e.chatHistoryPagination,sessionId:e.currentSessionId??null})}function ux(e,t,n){if(!e.chatMessagesBySession)return;let r=Kc(e.chatMessagesBySession,e,{sessionKey:t,agentId:n});if(r?.deltaCursor===void 0)return;let{deltaCursor:i,...a}=r;Gc(e.chatMessagesBySession,e,{sessionKey:t,agentId:n},a)}function dx(){return(dx=e((()=>{Zn(),D(),sl()})))()}function fx(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 px(e,t,n,r,i){for(;;)try{return await e.request(t,n)}catch(e){if(!r())throw e;if(i()&&Qb(e,t)){if(await ex($b(e)),!r())throw e;continue}throw e}}function mx(e,t,n,r,i,a,o,s,c,l=[],u={limit:80,maxBytes:bx}){let d=wx.get(e);d||(d={ownerRequestCounts:new WeakMap,requests:new Map},wx.set(e,d));let f=d.requests,p=f.get(t),m=(d.ownerRequestCounts.get(a)?.get(t)??0)>0,h={isCurrent:o,retryDeadlineMs:Date.now()+Cx};if(!p||m){let a=new Set([h]),o=()=>[...a].some(e=>e.isCurrent()),d=()=>[...a].some(e=>e.isCurrent()&&Date.now()<e.retryDeadlineMs),m=px(e,n,{sessionKey:r,...i?{agentId:i}:{},...s===void 0?{}:{cursor:s},...u,...l.length?{inputRunIds:l}:{}},o,d).then(e=>({...e,sourceCanonicalListRevision:c})).finally(()=>{f?.get(t)?.promise===m&&f.delete(t)});p={consumers:a,promise:m},f.set(t,p)}else p.consumers.add(h);return fx(d,a,t,1),p.promise.finally(()=>{p?.consumers.delete(h),fx(d,a,t,-1)})}async function hx(e,t,n,r,i){let a=`chat.history`,o=await mx(e,`prefetch\u0000${a}\u0000${t}\u0000${i===void 0?`page`:`cursor:${i}`}`,a,t,void 0,n,r,i,void 0,void 0,xx);if(ix(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:lr(o.messages),pagination:ax(o),sessionId:ox(o)}}}async function gx(e,t,n,r){let i=await e.request(`chat.history`,{sessionKey:t,...n?{agentId:n}:{},limit:Sx,offset:r});return{...i,messages:lr(i.messages)}}async function _x(e,t){if(!e.client||!e.connected)return;let n=e.client,r=e.sessionKey,i=je(e,r)?M(e):void 0,a=Bb(e,n,e.connectionEpoch,r,i),o=await gx(n,r,i,t);if(Hb(e,a))return o}async function vx(e,t){if(!e.client||!e.connected)return;let n=e.client,r=e.connectionEpoch,i=e.sessionKey,a=Ib(e).historyVersion,o=je(e,i)?M(e):void 0,s=await gx(n,i,o,t);return{claim:{client:n,connectionEpoch:r,sessionKey:i,historyVersion:a,...o?{agentId:o}:{}},requestedOffset:t,result:s}}function yx(e,t){let n=t.claim,r=e.chatHistoryPagination;return e.client===n.client&&e.connected&&e.connectionEpoch===n.connectionEpoch&&Ib(e).historyVersion===n.historyVersion&&e.sessionKey===n.sessionKey&&(!je(e,n.sessionKey)||M(e)===n.agentId)&&r.hasMore&&r.nextOffset===t.requestedOffset}var bx,xx,Sx,Cx,wx;function Tx(){return(Tx=e((()=>{Ur(),D(),rx(),dx(),qb(),bx=262144,xx={limit:20,maxBytes:65536},Sx=1e3,Cx=6e4,wx=new WeakMap})))()}function Ex(e){let t=e;return t.toolStreamById instanceof Map&&Array.isArray(t.toolStreamOrder)&&Array.isArray(t.chatToolMessages)&&Array.isArray(t.chatStreamSegments)?t:null}function Dx(e){let t=e;return Array.isArray(t.toolStreamOrder)?t.toolStreamOrder.filter(e=>T(e)!==void 0):[]}function Ox(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(!(!n||typeof n!=`object`)&&u(n.role)===`user`)return t}return-1}function kx(e,t){let n=Ex(e);if(!n)return;let r=t?.preserveStreamSegments?[...n.chatStreamSegments]:null;Ty(n),r&&(n.chatStreamSegments=r)}function Ax(e,t){let n=Ex(e);n&&Ey(n,t)}function jx(e){let t=e;Array.isArray(t.chatStreamSegments)&&(t.chatStreamSegments=[])}function Mx(e,t=e,n=Date.now(),r=`current`,i,a,o){return{role:`assistant`,content:[{type:`text`,text:e}],timestamp:n,openclawStreamFallback:{replacementText:t,source:r,...i?{itemId:i}:{},...a?{runId:a}:{},...o?{afterBoundaryRunId:o}:{}}}}function Nx(e){return p(p(e)?.openclawStreamFallback)}function Px(e){let t=Nx(e);return t&&!T(t.itemId)?t:null}function Fx(e,t){let n=U(t),r=(n?.role===`assistant`?n.runId:null)??mm(t),i=hm(t)??void 0;if(r)for(let t=e.length-1;t>=0;--t){let n=e[t],a=Px(n);if(!(!a||T(a.runId)!==r)){i=T(a.afterBoundaryRunId)??i;break}}let a=Xm(e,{...r?{runId:r}:{},...i?{afterBoundaryRunId:i}:{}}),o=qi(t)?.trim()??``,s=new Set,c=[],l=0;for(let t=a.start;t<a.end;t+=1){let n=e[t],r=Nx(n);if(!r)continue;let i=qi(n)?.trim();if(T(r.itemId)){i&&i===o&&s.add(t);continue}if(r.source===`current`&&c.push(t),!i)continue;let a=o.slice(l),u=/^\s*/u.exec(a)?.[0].length??0;a.slice(u).startsWith(i)&&(s.add(t),l+=u+i.length)}let u=c[0];s.size===0&&c.length===1&&u!==void 0&&s.add(u);let d=[],f=null;for(let t=a.start;t<a.end;t+=1)s.has(t)?f??=d.length:d.push(e[t]);let p=f??d.length;return[...e.slice(0,a.start),...d.slice(0,p),t,...d.slice(p),...e.slice(a.end)]}function Ix(e,t){return!e?.trim()||t(e)?null:e}function Lx(e,t){let n=e,r=Dm(e),i=[],a=null,o=Array.isArray(n.chatStreamSegments)?n.chatStreamSegments:[],s=0,c;for(let[e,n]of o.entries()){if(!n||typeof n.text!=`string`)continue;let o=typeof n.toolCallId==`string`&&n.toolCallId.trim()?n.toolCallId.trim():null,l=wr(n),u=l&&typeof n.itemId==`string`?n.itemId.trim():void 0,d=l?void 0:r[s],f=T(n.runId)??d?.runId,p=T(n.afterBoundaryRunId)??c,m=T(n.boundaryRunId);!l&&n.boundaryMarker!==!0&&n.persisted!==!0&&(s+=1);let h=ai(n),g=Ix(h?ui(n.text,a):n.text,t.isHiddenStreamText);g&&n.persisted!==!0&&i.push({text:g,replacementText:n.text,source:`segment`,segmentIndex:e,timestamp:typeof n.ts==`number`&&Number.isFinite(n.ts)?n.ts:Date.now(),...u?{itemId:u}:{},...f?{runId:f}:{},...p?{afterBoundaryRunId:p}:{},...m?{boundaryRunId:m}:{},toolCallId:o??d?.id}),h&&(a=ur(a,n.text)),m&&(c=m)}if(t.includeCurrent!==!1&&typeof e.chatStream==`string`){let n=Ix(ui(e.chatStream,a),t.isHiddenStreamText);n&&i.push({text:n,replacementText:e.chatStream,source:`current`,timestamp:e.chatStreamStartedAt??Date.now(),...e.chatRunId?{runId:e.chatRunId}:{},...c?{afterBoundaryRunId:c}:{}})}return i}function Rx(e,t){if(typeof e.chatStream!=`string`)return null;let n=e,r=Array.isArray(n.chatStreamSegments)?n.chatStreamSegments:[],i=Sa(r);return Ix(ui(e.chatStream,i),t)}function zx(e,t,n,r,i=e.length){if(t.itemId)return e.slice(r,i).some(e=>{let n=$n(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)||Nm(e)?null:qi(e)?.trim()??null});return[t.replacementText,t.text].some(e=>!!e.trim()&&!eh(a,e.trim()))}function Bx(e,t){let n=Ox(e)+1;return e.slice(n).some(e=>!e||typeof e!=`object`||u(e.role)!==`assistant`||t(e)?!1:!!qi(e)?.trim())}function Vx(e,t,n){let r=Lx(t,n),i=n.persistCommentary===!0?r:r.filter(e=>!e.itemId);return r.length>0&&(i.length>0||Bx(e,n.isHiddenAssistantMessage))&&i.every(t=>{let r=Xm(e,t);return zx(e,t,n.isHiddenAssistantMessage,r.start,r.end)})}function Hx(e,t){return Lx(e,t).length>0}function Ux(e,t,n){let r=qi(e)?.trim();if(!r)return!1;let i=Lx(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 Wx(e,t,n,r,i,a){let o=Dm(t),s=i?Om({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(Em(e[t]).some(e=>{let t=Om(e,o);return t!==void 0&&c.has(t)}))return t;return-1}function Gx(e){if(!e||typeof e!=`object`)return null;let t=e;return a(t.timestamp)??a(t.ts)??null}function Kx(e,t,n){let r=e,i=n.persistCommentary===!0,a=n.replacementMessages;for(let e of Lx(t,n)){if(!i&&e.itemId)continue;let o=a?.length?[...r,...a]:r,s=Xm(o,e);if(zx(o,e,n.isHiddenAssistantMessage,s.start,s.end))continue;let c=o===r?s:Xm(r,e),l=e.source===`segment`&&e.toolCallId?Wx(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`?Zm(r,e.timestamp,c.start,c.end,Gx):c.end,d=Mx(e.text,e.replacementText,Qm(r,u,e.timestamp,Gx),e.source,e.itemId,e.runId,e.afterBoundaryRunId);r=[...r.slice(0,u),d,...r.slice(u)]}return r}function qx(){return(qx=e((()=>{Zn(),w(),ca(),Hm(),sh(),Sm(),jm(),Ly()})))()}function Jx(e,t,n={}){return Kx(e,t,{...n,persistCommentary:n.persistCommentary??Yx(t),isHiddenAssistantMessage:ba,isHiddenStreamText:_r})}function Yx(e){return e.settings?.chatPersistCommentary!==!1}function Xx(e,t){if(!(e.chatRunId!==t.runId||!Array.isArray(t.events)))for(let n of t.events)!n||n.runId!==t.runId||Ny(e,n)}function Zx(e){return typeof e==`string`&&e&&!_r(e)?e:null}function Qx(e,t,n){for(let[r,i]of Object.entries(e))if(r!==n&&t[r]!==i)return!1;for(let[r,i]of Object.entries(t))if(r!==n&&e[r]!==i)return!1;return!0}function $x(e,t){let n=Object.entries(e);return n.length===Object.keys(t).length&&n.every(([e,n])=>t[e]===n)}function eS(e,t,n){return rc(e,K(e,{sessionKey:t,...n?{agentId:n}:{}})).runs}function tS(e,t){return!e||t?.startsWith(e)?t??e:!t||e.startsWith(t)?e:t}function nS(e){let{state:t,run:n,sessionInfo:r,previousRunProjections:i,runProjectionsBeforeApply:a,currentRunProjections:o,resetStream:s,activeStreamBeforeReset:c}=e,l=n?.runId?.trim();if(!l||!n){let e=r?.lastRunId,n=e?o[e]:void 0;if(e&&(r.status===`done`||r.status===`failed`||r.status===`killed`||r.status===`timeout`)&&r.hasActiveRun!==!0&&!ie(r)&&(!t.chatRunId||t.chatRunId===e)&&!t.chatQueue.some(t=>t.sendState===`sending`&&t.sendRunId&&t.sendRunId!==e)&&(r.status!==`killed`&&!n||t.chatRunId===e||ic(t)===e)&&$x(i,a)){let i=fc(t,{type:`runTerminal`,runId:e,status:r.status===`done`?`completed`:r.status===`timeout`?`timeout`:`error`,errorMessage:r.lastRunError});ac(t,e);let a=i.runs[e];a?.errorMessage?(t.chatRunError?.runId!==e||!n?.errorMessage)&&Hy(t,a.errorMessage,e):a?.status===`completed`&&t.chatRunError?.runId&&t.chatRunError.runId!==e&&(t.chatRunError=null),db(t,r,{publishRunStatus:!1})}return}let u=o[l],d=t.chatRunId===l&&u?.status===`streaming`&&Qx(i,o,l),f=d||t.chatRunId===l&&(c!==null||t.chatStreamSegments?.some(e=>!e.runId||e.runId===l)),p=r?.activeRunIds,m=ie(r??{})&&(!Array.isArray(p)||p.includes(l))&&(!u||u.status===`streaming`);if(m&&(s&&!t.chatRunId&&$x(i,a)||d)&&(Vy(t,l,Date.now()),t.chatRunSessionAbortable=n?.sessionAbortable===!0),!m||t.chatRunId!==l)return;let h=typeof n.startedAt==`number`&&Number.isFinite(n.startedAt)?n.startedAt:null,g=d?tS(Zx(qi(u?.message)),c):c;t.chatStream=tS(Zx(n.text),g),t.chatStreamStartedAt=h??t.chatStreamStartedAt??Date.now();let _=f?null:Jm(t.chatMessages,l),v=t.chatStream===null?null:$m(t.chatMessages,t.chatStream,l,_?.index),y=t.chatStream?.slice(0,t.chatStream.length-(v?.length??0))??``,b=Sa(t.chatStreamSegments??[]);(_||ur(b,y)!==b)&&(t.chatStreamSegments=[...t.chatStreamSegments??[],{text:y,ts:t.chatStreamStartedAt,runId:l,..._?{boundaryRunId:_.runId}:{},...y?{persisted:!0}:{boundaryMarker:!0}}]);let x=n.events?.findLast(e=>e.runId===l&&e.stream===`run_status`),S=x?.data.phase,C=S===`preparing_workspace`||S===`naming_worktree`||S===`creating_worktree`||S===`running_setup`||S===`provisioning_environment`||S===`preparing_context`||S===`starting_model`;n.text?Uv(t,{state:`activity`,runId:l}):x&&C&&Uv(t,{state:`status`,runId:l,phase:S,seq:x.seq}),Xx(t,n)}function rS(){return(rS=e((()=>{ca(),Ur(),qv(),hc(),mb(),sh(),qx(),Ly()})))()}function iS({gateway:e,router:t,lifecycleAbortSignal:n},r){let{client:i,hello:a}=e.snapshot;if(!i)throw Error(`Chat startup requires a connected Gateway`);oS.get(i)?.dispose();let o=[],s=!1,c={isCurrent:()=>{let o=t.getState(),s=o.pendingMatches[0]??o.matches[0];return!r.aborted&&!n?.aborted&&e.snapshot.phase===`connected`&&e.snapshot.client===i&&e.snapshot.hello===a&&s?.abortController.signal===r&&s.error===void 0},dispose:()=>{s=!0;for(let e of o.splice(0))e();r.removeEventListener(`abort`,c.dispose),n?.removeEventListener(`abort`,c.dispose),oS.get(i)===c&&oS.delete(i)}};oS.set(i,c);let l=e=>{s?e():o.push(e)},u=()=>{c.isCurrent()||c.dispose()};return l(e.subscribeEvents(e=>{(e.event===`chat`||e.event===`agent`||e.event.startsWith(`session`))&&c.dispose()})),l(t.subscribe(u)),l(e.subscribe(u)),r.addEventListener(`abort`,c.dispose,{once:!0}),n?.addEventListener(`abort`,c.dispose,{once:!0}),u(),{dispose:c.dispose,store:(e,t)=>{oS.get(i)===c&&c.isCurrent()?(c.sessionKey=e,c.result=t):c.dispose()}}}function aS(e,t){let n=oS.get(e);if(n){if(!n.isCurrent()){n.dispose();return}if(n.sessionKey===t)return n.dispose(),n.result}}var oS;function sS(){return(sS=e((()=>{oS=new WeakMap})))()}function cS(e){return s(we(e.sessionKey)?.agentId??zt(e,e.sessionKey).agentId??Ce(e))}function lS(){return(lS=e((()=>{Se(),D()})))()}function uS(e,t,n){return e.flatMap((e,r)=>n(e,r)?!(e.runId&&t&&e.runId!==t)&&ai(e)?[{...e,persisted:!0}]:[]:[e])}function dS(e,t){if(!e.chatStreamSegments||t.length===0)return;let n=new Set(t);e.chatStreamSegments=uS(e.chatStreamSegments,e.chatRunId,(e,t)=>n.has(t))}function fS(e){let t=e.chatRunId;if(!t)return;let n=e.chatStream??Sa(e.chatStreamSegments??[]);if(!n)return;let r=$m((e.chatMessages??[]).filter(e=>{let n=U(e);return n?.role===`assistant`&&n.id&&!n.isImported&&n.runId===t&&!$n(e)}),n,t),i=n.slice(0,n.length-(r?.length??0));if(!i)return;let a=e.chatStreamSegments??[],o=e.chatStream===null?n:Sa(a),s=e=>e.persisted!==!0&&e.runId===t&&ai(e)&&i.startsWith(e.text);if(a.some(s)&&(a=uS(a,t,s),e.chatStreamSegments=a),ur(o,i)===o)return;let c=a.at(-1),l=c?.persisted&&c.runId===t&&!c.boundaryRunId&&!c.toolCallId;e.chatStreamSegments=[...l?a.slice(0,-1):a,{...l?c:{},text:i,ts:e.chatStreamStartedAt??Date.now(),runId:t,persisted:!0}]}function pS(e,t){let n=$n(t);!n||!e.chatStreamSegments||dS(e,e.chatStreamSegments.flatMap((e,t)=>{let r=T(e.runId),i=!n.runId||!r||n.runId===r;return T(e.itemId)===n.itemId&&i?[t]:[]}))}function mS(e,t,n){if(!Array.isArray(t.chatStreamSegments))return!1;let r=new Set;for(let i of Lx(t,{includeCurrent:!1,isHiddenStreamText:n.isHiddenStreamText})){if(i.segmentIndex===void 0||i.itemId&&n.persistCommentary!==!0)continue;let t=Xm(e,i);zx(e,i,n.isHiddenAssistantMessage,t.start,t.end)&&r.add(i.segmentIndex)}return r.size!==0&&(t.chatStreamSegments=uS(t.chatStreamSegments,t.chatRunId,(e,t)=>r.has(t)),!0)}function hS(e,t){if(t.size===0)return;let n=Dm(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=>Em(e).every(e=>{let r=Om(e,n);return r===void 0||!t.has(r)}))),!Array.isArray(e.chatStreamSegments))return;let r=0;e.chatStreamSegments=uS(e.chatStreamSegments,e.chatRunId,e=>{if(e.boundaryMarker===!0||e.persisted===!0)return!1;let i=T(e.toolCallId),a=wr(e),o=a?void 0:n[r];a||(r+=1);let s=T(e.runId),c=i?Om({id:i,...s?{runId:s}:{}},n):o?.identity;return!!(c&&t.has(c))})}function gS(){return(gS=e((()=>{Zn(),sh(),qx(),jm()})))()}function _S(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=rc(e,r).runs[o]?.message,c=qi(s)?.trim();return c&&c===qi(n)?.trim()?o:null}function vS(e,t,n,r){let i=ae(t);if(!i)return;let a=i.message,o=U(a,i);if(!o)return;let s=K(e,{agentId:cS(e)}),c=!!(o.role===`assistant`&&o.sequence!==null&&o.runId&&r.kind===`live`&&r.activeRunId&&o.runId!==r.activeRunId),l=o.runId===i.runId?o.runId:null,u=o.role===`assistant`&&o.id&&!o.isImported&&(l||!o.runId&&n!==!0)?_S(e,r,a,s,l):null;if(r.kind===`live`&&o.role!==`user`&&!c&&!u||o.isImported&&!o.externalSource&&Gn(a)===null||!o.id&&!o.idempotencyKey&&o.sequence===null)return;let d=ae(a);if(!d)return;let f=ae(d.__openclaw),p={...d,__openclaw:{...f,...o.id?{id:o.id}:{},...o.idempotencyKey?{idempotencyKey:o.idempotencyKey}:{},...o.sequence===null?{}:{seq:o.sequence},...l?{runId:l}:{}}},m=fc(e,{type:`messagePersisted`,message:p,envelope:u?{...i,runId:u}:i},{scope:s,runActive:n});o.role===`assistant`&&m.messages.includes(p)&&(pS(e,p),u&&n===!1&&(e.chatStream=null,e.chatStreamStartedAt=null,Ax(e,u)),fS(e));let h=Wm(p),g=e.chatRunId,_=h?Jm(m.messages,h):null;o.role===`user`&&(n===!0||n===void 0&&g===h)&&o.runId&&h&&(!g||g===h||g===o.runId)&&_?.runId===o.runId&&Ym(e)!==o.runId&&(e.chatRunId=h,oh(e,{runId:h,boundaryRunId:o.runId}))}function yS(){return(yS=e((()=>{Zn(),ca(),lS(),hc(),sh(),qx(),gS()})))()}function bS(e,t,n,r={}){mv(e,`control-ui.chat.history`,{phase:t,durationMs:dv(uv()-n),sessionKey:e.sessionKey,activeRunId:e.chatRunId,...r},{console:!1,maxBufferedEventsForType:30})}async function xS(e,t,n,r,i,a,o,s,c){let l=Bb(e,t,n,r,i),u=uv(),d=e.chatMessages,f=eS(e,r,i),p=e.chatHistoryPagination,m=e.currentSessionId??null,h=e.chatDisplayedLeafEntryId,g=e.chatRunId;bS(e,`start`,u,{requestSessionKey:r,requestAgentId:i,method:a,previousRunId:g}),e.resetChatInputHistoryNavigation?.(),e.chatLoading=!0,Wb(e,null);try{let n=`${c}${o===void 0?`page`:`cursor:${o}`}`,_=a===`chat.startup`?aS(t,r):void 0,v=(s.length===0?_:void 0)??await mx(t,n,a,r,i,e,()=>Hb(e,l),o,e.sessions?.canonicalListRevision,s);if(!Hb(e,l)){bS(e,`stale`,u,{requestSessionKey:r,requestAgentId:i,previousRunId:g,reason:`apply-version`});return}if(ix(v)&&v.kind===`reset`&&(ux(e,r,i),v=await mx(t,`${c}page`,a,r,i,e,()=>Hb(e,l),void 0,e.sessions?.canonicalListRevision,s),!Hb(e,l))){bS(e,`stale`,u,{requestSessionKey:r,requestAgentId:i,previousRunId:g,reason:`reset-fallback-version`});return}if(ix(v)&&v.kind===`delta`){let t=eS(e,r,i),n=e.chatRunId?e.chatStream:null,a=ie(v.sessionInfo);for(let t of v.messages)vS(e,t,a,{kind:`history-delta`});let o=rc(e);return Object.hasOwn(v.sessionInfo,`activeLeafEntryId`)&&(e.chatDisplayedLeafEntryId=v.sessionInfo.activeLeafEntryId?.trim()||null),e.currentSessionId=v.sessionInfo.sessionId?.trim()||m,oc(e,{...o,scope:{...o.scope,...K(e)}}),cm(e,v.pendingInputs,{receipts:!m||m===e.currentSessionId?v.inputReceipts:void 0}),e.chatThinkingLevel=v.sessionInfo.thinkingLevel??null,e.chatQueueModeOverride=v.sessionInfo.queueMode,e.chatEffectiveQueueMode=v.sessionInfo.effectiveQueueMode,nS({state:e,run:v.inFlightRun,sessionInfo:v.sessionInfo,previousRunProjections:f,runProjectionsBeforeApply:t,currentRunProjections:o.runs,resetStream:!e.chatRunId||e.chatRunId===g,activeStreamBeforeReset:n}),lx(e,v.deltaCursor??null),bS(e,`applied`,u,{requestSessionKey:r,requestAgentId:i,previousRunId:g,messageCount:v.messages.length,visibleMessageCount:v.messages.length,resetStream:!1}),{messages:e.chatMessages,deltaCursor:v.deltaCursor,pendingInputs:v.pendingInputs,inputReceipts:v.inputReceipts,sessionInfo:v.sessionInfo,...v.inFlightRun?{inFlightRun:v.inFlightRun}:{},...v.metadata?{metadata:v.metadata}:{},sourceCanonicalListRevision:v.sourceCanonicalListRevision}}if(ix(v))throw Error(`chat history page request returned a cursor reset`);let y=v,b=eS(e,r,i),x=Array.isArray(y.messages)?y.messages:[],S=ax(y),C=ox(y),w=lr(x),ee=vm({host:e,previousMessages:d,sessionKey:r,visibleMessages:w}),te=Object.hasOwn(y.sessionInfo??{},`activeLeafEntryId`)?y.sessionInfo?.activeLeafEntryId?.trim()||null:h??null,ne=cx({nextMessages:w,nextPagination:S,nextSessionId:C,previousMessages:(!m||!C||m===C)&&(h===void 0||h===te)?ee:[],previousPagination:p,previousSessionId:m}),T=ne?.messages??w,re=K(e,{sessionKey:r,agentId:i,sessionId:C,...Object.hasOwn(y.sessionInfo??{},`activeLeafEntryId`)?{activeLeafEntryId:te}:{}}),E=fc(e,{type:`snapshotLoaded`,messages:T,options:{shouldIncludeMessage:Pr}},{scope:re,runActive:y.sessionInfo&&(typeof y.sessionInfo.hasActiveRun==`boolean`||y.sessionInfo.status!==void 0)?ie(y.sessionInfo):void 0});Object.hasOwn(y.sessionInfo??{},`activeLeafEntryId`)&&(e.chatDisplayedLeafEntryId=te),e.chatHistoryPagination=ne?.pagination??S,e.currentSessionId=C,cm(e,y.pendingInputs,{receipts:!m||m===C?y.inputReceipts:void 0}),lx(e,y.deltaCursor??null),e.reconnectResumeSessionId&&e.reconnectResumeSessionId!==e.currentSessionId&&(e.reconnectResumeSessionId=null),e.chatThinkingLevel=y.sessionInfo?.thinkingLevel??y.thinkingLevel??null,e.chatVerboseLevel=y.verboseLevel??null,e.chatQueueModeOverride=y.sessionInfo?.queueMode,e.chatEffectiveQueueMode=y.sessionInfo?.effectiveQueueMode;let ae=e.chatRunId?e.chatStream:null,oe=!e.chatRunId||e.chatRunId===g;if(oe){let t={persistCommentary:e.chatRunId?!0:Yx(e),isHiddenAssistantMessage:ba,isHiddenStreamText:_r},n=Hx(e,t),a=Vx(e.chatMessages,e,t);mS(e.chatMessages,e,t);let o=Dx(e);e.chatRunId&&(n||o.length>0)&&Uv(e,{state:`activity`,runId:e.chatRunId});let s=km(e.chatMessages,e),c=o.length>0&&o.every(e=>s.has(e)),l=s.size>0,d=o.length===0||c;!n||a?(e.chatRunId&&a&&oh(e,{runId:e.chatRunId,persisted:!0}),d?kx(e,{preserveStreamSegments:e.chatRunId!==null}):hS(e,s),e.chatRunId||(e.chatStream=null,e.chatStreamStartedAt=null),bS(e,`stream-reset`,u,{requestSessionKey:r,requestAgentId:i,previousRunId:g,messageCount:x.length,visibleMessageCount:w.length})):e.chatRunId?l&&(sc(e,Jx(e.chatMessages,e,{includeCurrent:!1,requirePersistedTool:!c,persistCommentary:!0})),Rx(e,t.isHiddenStreamText)||(e.chatStreamStartedAt=null),mS(e.chatMessages,e,t),c?kx(e,{preserveStreamSegments:!0}):hS(e,s)):(sc(e,Jx(e.chatMessages,e)),kx(e),e.chatStream=null,e.chatStreamStartedAt=null)}return nS({state:e,run:y.inFlightRun,sessionInfo:y.sessionInfo,previousRunProjections:f,runProjectionsBeforeApply:b,currentRunProjections:E.runs,resetStream:oe,activeStreamBeforeReset:ae}),bS(e,`applied`,u,{requestSessionKey:r,requestAgentId:i,previousRunId:g,messageCount:x.length,visibleMessageCount:w.length,resetStream:oe}),y}catch(t){if(!Hb(e,l)){bS(e,`stale`,u,{requestSessionKey:r,requestAgentId:i,previousRunId:g,reason:`error-version`});return}bS(e,`error`,u,{requestSessionKey:r,requestAgentId:i,previousRunId:g});let n=Ct(t);n&&(Ub(e,i),e.chatThinkingLevel=null,e.chatVerboseLevel=null),Rb(e,{phase:`failed`,sessionKey:r,requestAgentId:i,startup:a===`chat.startup`,message:n?jt(`existing chat history`):O(t),retryable:t instanceof Dn&&t.retryable}),e.requestUpdate?.()}finally{Vb(e,l)&&(e.chatLoading=!1)}}function SS(){return(SS=e((()=>{wn(),Ur(),A(),it(),Tx(),dx(),qb(),rS(),dm(),qv(),hc(),_v(),sS(),yS(),sh(),qx(),gS(),Sm(),jm()})))()}async function CS(e,t={}){let n=e.sessionKey,r=je(e,n)?M(e):void 0,i=t.startup===!0,a=Ib(e);if(!e.client||!e.connected){Rb(e,{phase:`pending-connection`,sessionKey:n,requestAgentId:r,startup:i}),e.chatLoading=!0,e.requestUpdate?.();return}let o=i?`chat.startup`:`chat.history`,s=e.client,c=e.connectionEpoch,l=e.chatMessagesBySession?Kc(e.chatMessagesBySession,e,{sessionKey:n,agentId:r})?.deltaCursor:void 0,u=l===void 0?`page`:`cursor:${l}`,d=sm(e),f=JSON.stringify([c,o,n,r??``,80,d]),p=`${f}${u}`,m=a.historyLoad;if(t.supersedeInFlight!==!0&&m.phase===`in-flight`&&m.key===p&&m.client===s&&m.connectionEpoch===c)return m.promise;t.deferBranches!==!0&&(!N(e.chatBranchesSessionKey,n)||e.chatBranchesConnectionEpoch!==c)&&Xb(e);let h=xS(e,s,c,n,r,o,l,d,f).then(t=>{let o=a.historyLoad;return o.phase===`in-flight`&&o.promise===h&&(t?Rb(e,{phase:`committed`,key:`${n}\u0000${r??``}`}):e.sessionKey===n&&(!je(e,n)||M(e)===r)&&(!e.connected||o.client!==e.client||o.connectionEpoch!==e.connectionEpoch)?(Rb(e,{phase:`pending-connection`,sessionKey:n,requestAgentId:r,startup:i}),e.chatLoading=!0):(Rb(e,{phase:`idle`}),e.chatLoading=!1),e.requestUpdate?.()),t});return Rb(e,{phase:`in-flight`,client:s,connectionEpoch:c,key:p,promise:h,sessionKey:n,requestAgentId:r,startup:i}),h}function wS(e){let t=zb(e);if(t.phase===`pending-connection`||t.phase===`failed`&&t.retryable)return CS(e,{startup:t.startup,deferBranches:!0})}function TS(e){let t=zb(e);if(t.phase!==`failed`)return;let n=CS(e,{startup:t.startup});return e.requestUpdate?.(),n}function ES(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()?s(e.agentsSelectedId):void 0;r&&t.agents.some(e=>s(e.id)===r)||(e.agentsSelectedId=typeof t.defaultId==`string`&&t.defaultId.trim()?t.defaultId:t.agents[0]?.id??null)}function DS(){return(DS=e((()=>{D(),Zb(),SS(),Tx(),qb(),dm(),sl()})))()}function OS(e){return e.chatRunId?!0:!!e.sessionsResult?.sessions.some(t=>t.key===e.sessionKey&&ie(t))}function kS(e,t,n){e.chatMessagesBySession&&Wc(e.chatMessagesBySession,e,{sessionKey:t,agentId:n})}function AS(e,t){return e.client===t.client&&e.connectionEpoch===t.connectionEpoch&&de(e,t.sessionKey,t.agentId)}function jS(e,t,n){!n||!Object.hasOwn(n.sessionInfo??{},`activeLeafEntryId`)||n.sessionInfo?.activeLeafEntryId!==null||e.client!==t.client||e.connectionEpoch!==t.connectionEpoch||!e.connected||!de(e,t.sessionKey,t.agentId)||delete e.chatDisplayedLeafEntryId}async function MS(e){if(!e.client||!e.connected)return`failed`;let t=e.client,n=e.connectionEpoch,r=e.sessionKey,i=zt(e,r),a={client:t,connectionEpoch:n,sessionKey:r,agentId:i.agentId},o=e.chatRunId,s=OS(e);try{let a=await e.sessions.reset(r,i);if(a===`not-started`)return Wb(e,`Gateway was unavailable before chat history could be cleared.`),Eb(e),`failed`;if(kS(e,r,i.agentId),a===`uncertain`||e.client!==t||e.connectionEpoch!==n||!e.connected){let a={client:e.client,connectionEpoch:e.connectionEpoch,sessionKey:r,agentId:i.agentId},o=!1;if(e.client&&e.connected&&de(e,r,i.agentId)){Ub(e,i.agentId);let a=await CS(e);o=!!a,jS(e,{client:t,connectionEpoch:n,sessionKey:r,agentId:i.agentId},a)}return AS(e,a)&&(Wb(e,o?`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.`),Eb(e)),`uncertain`}}catch(t){return AS(e,a)&&(Wb(e,O(t)),Eb(e)),`failed`}if(!de(e,r,i.agentId))return`completed`;Ub(e,i.agentId),e.chatRunError=null,e.chatReplyTarget=null,ob(e,{outcome:s?`interrupted`:void 0,sessionStatus:`killed`,runId:o,sessionKey:r,clearLocalRun:!0,clearChatStream:!0,clearToolStream:!0,clearRunStatus:!s});let c=await CS(e);return jS(e,{client:t,connectionEpoch:n,sessionKey:r,agentId:i.agentId},c),AS(e,a)&&Eb(e),`completed`}async function NS(e,t){if(!e.client||!e.connected)return null;let n=e.sessionKey,r=zt(e,n),i=e.client,a=e.connectionEpoch,o=()=>e.connected&&e.client===i&&e.connectionEpoch===a,s=()=>de(e,n,r.agentId),c=()=>o()&&s();try{let i=await e.sessions.rewind(n,t,r),a=i.editorText??``;return e.chatMessagesBySession&&Wc(e.chatMessagesBySession,e,{sessionKey:n,agentId:r.agentId}),o()&&zo(e,n,{agentId:r.agentId,draft:a,mentions:[]}),!s()||(Ub(e,r.agentId),await Promise.all([CS(e),Xb(e)]),!c())?null:(e.chatAttachments=ve(e.chatAttachments,i.editorAttachments),e.handleChatDraftChange(a,[]),i)}catch(t){return c()&&(Wb(e,O(t)),Eb(e)),null}}async function PS(e,t){if(!e.client||!e.connected)return!1;let n=e.sessionKey,r=zt(e,n),i=e.client,a=e.connectionEpoch,o=()=>e.connected&&e.client===i&&e.connectionEpoch===a,s=()=>de(e,n,r.agentId),c=()=>o()&&s();try{return await e.sessions.switchBranch(n,t,r),e.chatMessagesBySession&&Wc(e.chatMessagesBySession,e,{sessionKey:n,agentId:r.agentId}),s()?(Ub(e,r.agentId),await Promise.all([CS(e),Xb(e)]),c()):!1}catch(t){return c()&&(Wb(e,O(t)),Eb(e)),!1}}function FS(){return(FS=e((()=>{A(),Se(),se(),Zb(),qb(),DS(),Jo(),mb(),Fb(),sl()})))()}function IS(e){return e.composedPath().some(e=>e instanceof HTMLElement&&e.localName===`openclaw-image-lightbox`)}function LS(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 RS(e,t){if(e.defaultPrevented)return!1;let n=LS(e);return n?(e.preventDefault(),Qg(t,n.currentSrc||n.src,n.alt.trim()||H(`chat.imageLightbox.untitled`)),!0):!1}function zS(e,t){return e?I`
    <openclaw-image-lightbox
      .mediaKind=${e.kind??`image`}
      src=${e.src}
      .originalSrc=${e.originalSrc??``}
      .imageTitle=${e.title}
      @image-lightbox-close=${t}
    ></openclaw-image-lightbox>
  `:L}function BS(){return(BS=e((()=>{F(),ma(),V(),$g()})))()}function VS(e){return e.catalog||!e.connected||!e.agentsLoaded||!e.selectedAgentFound?!1:!e.agentModel?.trim()}function HS(e){return{kind:`composer-replacement`,text:H(`modelSetup.required.body`),actionLabel:H(`modelSetup.required.action`),onAction:e}}function US(){return(US=e((()=>{V()})))()}function WS(e,t){let n=GS(e,t);return n?(wi(`chat-${t}-${Date.now()}.md`,n,`text/markdown`),`downloaded`):`empty`}function GS(e,t){let n=lr(e);if(n.length===0)return null;let r=[`# Chat with ${t}`,``];for(let e of n){let n=e,i=li(e),a=xr(i.role),s=a===`user`?i.senderLabel??`You`:a===`assistant`?i.senderLabel??t:`Tool`,c=na(e)??``,l=o(n.timestamp)??``;r.push(`## ${s}${l?` (${l})`:``}`,``,c,``)}return r.join(`
`)}function KS(){return(KS=e((()=>{w(),ca(),Cr(),Ur()})))()}function qS(){return document.querySelector(`openclaw-chat-page`)?.sessionSplitAvailable===!0}function JS(e){return Nt(e,{method:`chat.history`,requiredScope:`operator.read`}).allowed}async function YS(e){let{context:t,session:n}=e,r=t.gateway,i=r.snapshot.client,a=Nt(r.snapshot,{method:`chat.history`,requiredScope:`operator.read`});if(!a.allowed||!i)throw Error(a.allowed?H(`sessionsView.actionRequiresConnection`):a.reason);let o=we(n.key)?.agentId??Ve(t,e.agentId),s=r.snapshot.hello,c=()=>e.isCurrent()&&r.snapshot.client===i&&r.snapshot.phase===`connected`&&r.snapshot.hello===s,l=[],u=new Map,d=(e,t=1e3)=>i.request(`chat.history`,{sessionKey:n.key,agentId:o,limit:t,maxChars:5e5,offset:e}),f=0,p;for(;;){let e=await d(f);if(!c()||n.sessionId&&e.sessionId!==n.sessionId||p&&(e.sessionId!==p.sessionId||e.totalMessages!==p.totalMessages))throw Error(H(`sessionsView.copyTranscriptChanged`));p??=e;let t=new Map,r=(e.messages??[]).filter(e=>{let n=Wr(e);if(!n)return!0;let r=(t.get(n)??0)+1;return t.set(n,r),r>(u.get(n)??0)});for(let[e,n]of t)u.set(e,Math.max(n,u.get(e)??0));if(l.push(r),!e.hasMore)break;if(e.nextOffset===void 0||e.nextOffset<=f)throw Error(H(`sessionsView.copyTranscriptChanged`));f=e.nextOffset}if(l.length>1){let e=await d(0,1);if(!c()||e.sessionId!==p.sessionId||e.totalMessages!==p.totalMessages||e.deltaCursor!==p.deltaCursor||e.sessionInfo?.activeLeafEntryId!==p.sessionInfo?.activeLeafEntryId)throw Error(H(`sessionsView.copyTranscriptChanged`))}let m=t.agents.state.agentsList?.agents.find(e=>e.id===o)?.name??`OpenClaw`,h=GS(l.toReversed().flat(),m);if(!h)throw Error(H(`chat.commandResults.emptyExport`));return rt(h,c)}async function XS(e,t){try{if(e===`split-right`||e===`split-below`){qS()&&!window.dispatchEvent(new CustomEvent(`openclaw:ui-command`,{detail:{command:{kind:`split`,direction:e===`split-right`?`right`:`down`,sessionKey:t.session.key},...t.sourceSessionKey?{sessionKey:t.sourceSessionKey}:{}},cancelable:!0}))||At({message:H(`sessionsView.splitUnavailable`)});return}if(e===`copy-markdown`||e===`copy-session-id`){let n=e===`copy-markdown`?await YS(t):await rt(t.session.sessionId??``);At({message:H(n?`common.copied`:`common.copyFailed`)});return}let n=Re(t.context,t.session.key,t.agentId),r=t.context.gateway,i=e===`copy-session-link`?r.snapshot.hello?.controlUiUrl??r.snapshot.client?.gatewayUrl??r.connection.gatewayUrl:void 0,a=new URL(i||window.location.href);a.protocol=a.protocol.replace(/^ws/u,`http`);let o=We({context:t.context,basePath:i?a.pathname:void 0,face:n,sessionKey:t.session.key,agentId:t.agentId,exactKey:!0}),s=new URL(o.href,a.origin).href;if(e===`copy-session-link`){let e=await rt(s);At({message:H(e?`common.copied`:`common.copyFailed`)});return}let c=Kg({popup:e===`open-new-window`});c?c.location.replace(s):At({message:H(`sessionsView.openWindowBlocked`)})}catch(e){At({message:O(e)})}}function ZS(){return(ZS=e((()=>{Ln(),V(),KS(),zr(),A(),Zg(),lt(),Et(),ce(),D()})))()}function QS(e){e.restore&&Oe([...e.attachments,...Object.values(e.composerFallbacks??{}).flatMap(e=>e.attachments)])}function $S(e,t){for(let n=(e?.length??0)-1;n>=0;--n)t(e[n])&&QS(e.splice(n,1)[0])}function eC(e,t,n){let r=mC.get(e);!r&&n&&(r=new Map,mC.set(e,r));let i=r?.get(t);if(!i&&n&&(i=[],r?.set(t,i)),i){let e=Date.now();$S(i,t=>t.expiresAt<=e)}return i}function tC(e,t,n,r){let i=eC(e,t,!0);$S(i,e=>N(e.sessionKey,n));let a={sessionKey:n,...r,expiresAt:Date.now()+fC};for(i.push(a),globalThis.setTimeout(()=>{eC(e,t,!1)},fC);i.length>pC;)QS(i.shift())}function nC(e,t,n){let r=eC(e,t,!1),i=r?.findIndex(e=>N(e.sessionKey,n));if(!r||i===void 0||i<0)return null;let{expiresAt:a,sessionKey:o,...s}=r.splice(i,1)[0];return s}function rC(e,t,n){$S(eC(e,t,!1),e=>N(e.sessionKey,n))}function iC(e,t){for(let n of mC.get(e)?.values()??[])$S(n,e=>t.some(({key:t,retireBeforeRevision:n})=>N(e.sessionKey,t)&&e.expiresAt-fC<n))}function aC(e,t){let n=mC.get(e);if(!n)return;let r=n.get(t);if(r){for(let e of r)QS(e);n.delete(t),n.size===0&&mC.delete(e)}}function oC(e,t){let n=p(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 sC(e){let t=p(e)?.result;if(t===void 0)return null;try{return JSON.stringify(t)||null}catch{return null}}function cC(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 lC(e){return e.composedPath().some(t=>t instanceof HTMLElement&&(t.matches(bC)||cC(t,e.key)||e.key===` `&&t.matches(xC)))}function uC(e,t){return[...(e instanceof Element?e.closest(`openclaw-app`)??e:e).querySelectorAll(`wa-dropdown`)].some(e=>e.open===!0&&!e.closest(`[inert]`)&&(SC.has(t)||cC(e,t)))}function dC(e,t){if(t.defaultPrevented||t.isComposing||t.metaKey||t.ctrlKey||t.altKey||uC(e,t.key)||t.key.length!==1||lC(t)||document.openClawModalLayers?.size||document.querySelector(`dialog[open], [aria-modal='true']`))return;let n=e.querySelector(yC);!n||n.disabled||n.readOnly||(n.focus({preventScroll:!0}),t.stopImmediatePropagation())}var fC,pC,mC,hC,gC,_C,vC,yC,bC,xC,SC,CC,wC,TC;function EC(){return(EC=e((()=>{D(),se(),fC=3e4,pC=4,mC=new WeakMap,hC=1200,gC=new Set([`ArrowUp`,`PageUp`,`Home`]),_C=new WeakMap,vC=`.chat-controls__inline-select[open], .context-usage details[open], .agent-chat__attach-menu[open], .chat-pr__checks[open]`,yC=`.agent-chat__composer-combobox > textarea`,bC=`input, textarea, select, [contenteditable]:not([contenteditable='false']), [role='combobox'], [role='textbox'], [data-chat-autotype-exempt]`,xC=`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']`,SC=new Set([` `,`Enter`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`ArrowUp`,`Escape`]),CC=`Start a new session after the active run or queued messages finish.`,wC=`Session list is still refreshing. Try New Chat again in a moment.`,TC=`New Chat could not create a new thread. Try again in a moment.`})))()}function DC(e,t){t.length!==0&&At({message:H(e,{names:t.slice(0,3).map(e=>e.name).join(`, `),more:t.length>3?` +${t.length-3}`:``})})}function OC(e,t){let n=e=>e.type.startsWith(`image/`)?t?.maxImageBytes:t?.maxBytes,r=e.filter(e=>e.size===0),i=e.filter(e=>e.size>0&&t!==void 0&&e.size>(n(e)??1/0));return DC(`chat.attachments.readFailed`,r),DC(`chat.attachments.tooLarge`,i),e.filter(e=>!r.includes(e)&&!i.includes(e))}function kC(){return(kC=e((()=>{V(),Et()})))()}function AC(e){return Array.from(e?.types??[]).includes(`Files`)}function jC(e){let t=e.target;if(!(t instanceof Element))return!1;let n=t.closest(`textarea, input, [contenteditable]`);return n instanceof HTMLInputElement?hw.has(n.type)&&!n.disabled&&!n.readOnly:n instanceof HTMLTextAreaElement?!n.disabled&&!n.readOnly:n instanceof HTMLElement&&n.isContentEditable}function MC(e){return e.getAttachments?.()??e.attachments??[]}function NC(e,t){e.closest(`details`)?.removeAttribute(`open`),e.closest(`.agent-chat__composer-shell, .new-session-page__composer`)?.querySelector(t)?.click()}function PC(e,t){let n={id:ge(),mimeType:e.type||`application/octet-stream`,fileName:e.name||void 0,sizeBytes:e.size};return vt({attachment:n,dataUrl:t,file:e})}function FC(e){return fw.has(e)}function IC(e){let t=new TextEncoder().encode(e),n=[],r=32768;for(let e=0;e<t.length;e+=r)n.push(String.fromCharCode(...t.subarray(e,e+r)));return`data:${lw};base64,${btoa(n.join(``))}`}function LC(e,t){let n=PC(t,IC(e));fw.add(n);let r=zC(e);return r&&pw.set(n,r),n}function RC(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{let e=atob(r),t=Uint8Array.from(e,e=>e.charCodeAt(0));return new TextDecoder().decode(t)}catch{return null}try{return decodeURIComponent(r.replace(/\+/g,`%20`))}catch{return null}}function zC(e){let t=e.replace(/\s+/gu,` `).trim();return t?t.length<=dw?t:`${i(t,dw).trimEnd()}...`:null}function BC(e){return pw.get(e)??e.fileName??H(`chat.attachments.attachedFile`)}function VC(e){let t=ph(e.fileName??`attachment`,e.mimeType),n=t.family===`video`?B.play:t.family===`audio`?B.music:B.fileText;return I`
    <openclaw-tooltip .content=${e.fileName??H(`chat.attachments.attachedFile`)}>
      <div class="chat-attachment-file">
        <span class="chat-attachment-file__icon" data-family=${t.family}>${n}</span>
        <span class="chat-attachment-file__body">
          <span class="chat-attachment-file__name"
            >${e.fileName??H(`chat.attachments.attachedFile`)}</span
          >
          <span class="chat-attachment-file__type">${t.extensionLabel}</span>
        </span>
      </div>
    </openclaw-tooltip>
  `}function HC(e,t){return e.trim()?`${e.replace(/\s+$/u,``)}\n\n${t}`:t}function UC(e,t){if(!t.onAttachmentsChange)return!1;let n=e.clipboardData?.getData(`text/plain`);if(!n||n.length<=cw)return!1;e.preventDefault();let r=new File([n],`${uw}${Date.now()}.txt`,{type:lw});if(OC([r],t.attachmentLimits).length===0)return!0;let i=LC(n,r);return t.onAttachmentsChange([...MC(t),i]),!0}function WC(e,t=`pasted-image`){let n=/^\s*data:(image\/[a-z0-9.+-]+);base64,([a-z0-9+/=\s]+)\s*$/i.exec(e);if(!n)return null;let r=n[1]?.toLowerCase(),i=n[2];if(!r||!i)return null;let a=i.replace(/\s+/g,``);try{let e=atob(a),n=new Uint8Array(e.length);for(let t=0;t<e.length;t++)n[t]=e.charCodeAt(t);let i=r.split(`/`)[1]?.replace(/[^a-z0-9.+-]/gi,``)||`png`;return{file:new File([n],`${t}.${i}`,{type:r}),dataUrl:`data:${r};base64,${a}`}}catch{return null}}function GC(e,t,n){let r=WC(e,t.replace(/\.[a-z0-9]+$/i,``)||`image`);return!r||OC([r.file],n).length===0?null:PC(r.file,r.dataUrl)}function KC(e,t){return t.readSignal?.aborted?Promise.resolve(null):new Promise(n=>{let r=new FileReader,i=!1,a=e=>{i||(i=!0,t.readSignal?.removeEventListener(`abort`,o),n(e))},o=()=>{r.abort(),a(null)};t.readSignal?.addEventListener(`abort`,o,{once:!0}),r.addEventListener(`error`,()=>a(null),{once:!0}),r.addEventListener(`abort`,()=>a(null),{once:!0}),r.addEventListener(`load`,()=>{let n=typeof r.result==`string`?r.result:null;a(n&&!t.readSignal?.aborted?PC(e,n):null)},{once:!0}),r.readAsDataURL(e)})}async function qC(e,t){if(!t.onAttachmentsChange||e.length===0)return;let n=OC(e,t.attachmentLimits);if(n.length!==0){t.onPendingReadsChange?.(1);try{let e=await Promise.all(n.map(e=>KC(e,t))),r=e.filter(e=>e!==null);if(t.readSignal?.aborted){for(let e of r)Ee(e.id);return}let i=e.map((e,t)=>e===null?n[t]?.name:void 0).filter(e=>!!e);if(i.length>0&&At({message:H(`chat.attachments.readFailed`,{names:i.slice(0,3).join(`, `),more:i.length>3?` +${i.length-3}`:``})}),r.length===0)return;t.onAttachmentsChange([...MC(t),...r])}finally{t.onPendingReadsChange?.(-1)}}}function JC(e,t){let n=e.clipboardData?.items;if(!n||!t.onAttachmentsChange)return;let r=Array.from(n).filter(e=>e.type.startsWith(`image/`)).map(e=>e.getAsFile()).filter(e=>e!==null);if(r.length===0){let n=e.clipboardData?.getData(`text/plain`),r=n?WC(n):null;if(!r){UC(e,t);return}if(e.preventDefault(),OC([r.file],t.attachmentLimits).length===0)return;t.onAttachmentsChange([...MC(t),PC(r.file,r.dataUrl)]);return}e.preventDefault(),qC(r,t)}function YC(e,t){let n=Ae(e),r=n?RC(n):null;if(!r||!t.onDraftChange)return;let i=MC(t).filter(t=>t.id!==e.id);Ee(e.id),t.onAttachmentsChange?.(i),t.onDraftChange(HC(t.getDraft?.()??t.draft??``,r)),t.onRequestUpdate?.()}function XC(e,t){let n=e.target;if(!(n instanceof HTMLInputElement))return;let r=[...n.files??[]];n.value=``,qC(r,t)}function ZC(e,t){e.preventDefault(),qC([...e.dataTransfer?.files??[]],t)}function QC(e){let t=0,n=(n,r)=>{let i=n.currentTarget;if(i instanceof HTMLElement){if(r){if(!e.canCompose||!AC(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(!AC(t.dataTransfer)){jC(t)||(t.preventDefault(),t.dataTransfer&&(t.dataTransfer.dropEffect=`none`));return}t.preventDefault(),t.dataTransfer&&(t.dataTransfer.dropEffect=e.canCompose?`copy`:`none`)},onDrop:t=>{if(!AC(t.dataTransfer)){jC(t)||t.preventDefault();return}t.preventDefault(),r(t),e.canCompose&&ZC(t,e)}}}function $C(e){return I`
    ${[`file`,`photo`,`camera`].map(t=>I`
        <input
          type="file"
          accept=${t===`file`?sw:`image/*`}
          ?multiple=${t!==`camera`}
          capture=${t===`camera`?`environment`:L}
          class=${`agent-chat__${t}-input`}
          ?disabled=${e.disabled}
          @change=${t=>{e.disabled||XC(t,e)}}
        />
      `)}
  `}function ew(e){let t=e.detail.item.value;if(t!==`camera`&&t!==`photo`&&t!==`file`)return!1;let n=e.currentTarget;return n instanceof HTMLElement&&NC(n,`.agent-chat__${t}-input`),!0}function tw(e,t=!1){return I`
    <button
      slot="trigger"
      type="button"
      class="agent-chat__input-btn agent-chat__input-btn--attach ${t?`agent-chat__input-btn--has-overrides`:``}"
      aria-label=${H(`chat.composer.addAttachment`)}
      ?disabled=${e}
      title=${H(`chat.composer.addAttachment`)}
    >
      ${B.plus}
    </button>
  `}function nw(e=B.folder){return I`
    <wa-dropdown-item class="agent-chat__attach-menu-option" value="camera">
      <span slot="icon" aria-hidden="true">${B.camera}</span>
      <span>${H(`chat.composer.takePhoto`)}</span>
    </wa-dropdown-item>
    <wa-dropdown-item class="agent-chat__attach-menu-option" value="photo">
      <span slot="icon" aria-hidden="true">${B.image}</span>
      <span>${H(`chat.composer.attachPhoto`)}</span>
    </wa-dropdown-item>
    <wa-dropdown-item class="agent-chat__attach-menu-option" value="file">
      <span slot="icon" aria-hidden="true">${e}</span>
      <span>${H(`chat.composer.attachFileOption`)}</span>
    </wa-dropdown-item>
  `}function rw(e,t){if(t.onRemoveAttachment){t.onRemoveAttachment(e);return}let n=MC(t).filter(t=>t.id!==e.id);Ee(e.id),t.onAttachmentsChange?.(n)}function iw(e,t,n,r){let i=xt(e);return i?r.onOpenImage?I`
    <button
      type="button"
      class="chat-message-image-button chat-attachment-image-button"
      aria-label=${H(`chat.imageLightbox.open`,{title:n})}
      @click=${()=>r.onOpenImage?.({src:i,title:n})}
    >
      <img src=${i} alt=${t} />
    </button>
  `:I`<img src=${i} alt=${t} />`:L}function aw(e,t,n){let r=t.title.trim()||t.displayUrl.trim()||e.fileName||H(`chat.attachments.attachedFile`),i=H(t.markedRegionCount===1?`chat.composer.browserAnnotationRegion`:`chat.composer.browserAnnotationRegions`,{count:String(t.markedRegionCount)}),a=H(`chat.composer.removeBrowserAnnotation`,{name:r});return I`
    <div
      class="chat-attachment-thumb chat-attachment-thumb--browser-annotation"
      data-attachment-id=${e.id}
      role="group"
      aria-label=${`${H(`chat.composer.browserAnnotation`)}: ${r}`}
    >
      <div class="chat-browser-annotation-card__preview">
        ${iw(e,H(`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=${()=>rw(e,n)}
        >
          ${B.x}
        </button>
      </openclaw-tooltip>
    </div>
  `}function ow(e){let t=e.attachments??[];return t.length===0?L:I`
    <div
      class="chat-attachments-preview"
      ${P(Mh)}
      @scroll=${e=>{e.currentTarget instanceof Element&&Mh(e.currentTarget)}}
    >
      ${t.map(t=>t.browserAnnotation?aw(t,t.browserAnnotation,e):I`
              <div
                class=${[`chat-attachment-thumb`,t.mimeType.startsWith(`image/`)?``:`chat-attachment-thumb--file`,FC(t)?`chat-attachment-thumb--pasted-text`:``].filter(Boolean).join(` `)}
              >
                ${t.mimeType.startsWith(`image/`)&&xt(t)?iw(t,t.fileName?.trim()||H(`chat.composer.attachmentPreview`),t.fileName?.trim()||H(`chat.imageLightbox.untitled`),e):FC(t)?I`
                          <div class="chat-attachment-file chat-attachment-file--pasted-text">
                            <span class="chat-attachment-file__icon">${B.fileText}</span>
                            <span class="chat-attachment-file__body">
                              <span class="chat-attachment-file__name"
                                >${BC(t)}</span
                              >
                              <button
                                class="chat-attachment-text-action"
                                type="button"
                                aria-label=${H(`chat.attachments.showInTextField`)}
                                ?disabled=${e.disabled}
                                @click=${()=>YC(t,e)}
                              >
                                ${H(`chat.attachments.showInTextField`)}
                                <span aria-hidden="true">${B.chevronRight}</span>
                              </button>
                            </span>
                          </div>
                        `:VC(t)}
                <openclaw-tooltip .content=${H(`chat.composer.removeAttachment`)}>
                  <button
                    class="chat-attachment-remove"
                    type="button"
                    aria-label=${H(`chat.composer.removeAttachment`)}
                    ?disabled=${e.disabled}
                    @click=${()=>{let n=MC(e).filter(e=>e.id!==t.id);Ee(t.id),e.onAttachmentsChange?.(n)}}
                  >
                    ${B.x}
                  </button>
                </openclaw-tooltip>
              </div>
            `)}
    </div>
  `}var sw,cw,lw,uw,dw,fw,pw,mw,hw;function gw(){return(gw=e((()=>{F(),an(),z(),Mn(),Rn(),V(),Et(),se(),kC(),vh(),Ph(),sw=`image/*,audio/*,video/*,application/pdf,text/*,.csv,.json,.md,.txt,.zip,.doc,.docx,.xls,.xlsx,.ppt,.pptx`,cw=1e3,lw=`text/plain`,uw=`pasted-text-`,dw=20,fw=new WeakSet,pw=new WeakMap,mw=class{constructor(e){this.notify=e,this.pendingReads=0,this.controller=new AbortController}get readSignal(){return this.controller.signal}updatePending(e,t){this.controller.signal===e&&(this.pendingReads=Math.max(0,this.pendingReads+t),this.notify())}abortReads(){this.controller.abort(),this.controller=new AbortController,this.pendingReads=0,this.notify()}},hw=new Set([`email`,`number`,`password`,`search`,`tel`,`text`,`url`])})))()}function _w(e){return ft(e.assistantAvatarUrl,{identity:{avatar:e.assistantAvatar??void 0,avatarUrl:e.assistantAvatarUrl??void 0}})}function vw(e){return _w(e)??st(e.assistantAvatar)}function yw(e){if(!e.sessions)return[];let t=e.sessionHost??{},n=Ce(t),r=we(e.sessionKey)?.agentId??n;return mt(e.sessions,{agentId:r,defaultAgentId:n,filterByAgent:!0}).filter(t=>!N(t.key,e.sessionKey)&&!Pe(t.key,t.channel).channelSession).toSorted((e,t)=>(t.updatedAt??0)-(e.updatedAt??0)||e.key.localeCompare(t.key)).slice(0,Ew)}function bw(){return I`
    <div class="agent-chat__welcome-clawd" aria-hidden="true">
      <openclaw-mascot mood="idle" .size=${112}></openclaw-mascot>
    </div>
  `}function xw(e,t){return I`
    <div class="agent-chat__recents">
      <div class="agent-chat__recents-title">${H(`chat.welcome.recentSessions`)}</div>
      ${e.map(e=>{let n=Be(e);return I`
          <button type="button" class="agent-chat__recent" @click=${()=>t?.(e.key)}>
            <span class="agent-chat__recent-name">${Gt(e.key,e)}</span>
            ${n?I`<span class="agent-chat__recent-sub">${n}</span>`:L}
            <span class="agent-chat__recent-time">
              ${Rt(e.updatedAt,{fallback:``})}
            </span>
          </button>
        `})}
    </div>
  `}function Sw(e){return I`
    <div class="agent-chat__suggestions">
      ${Tw.map(t=>{let n=H(t);return I`
          <button
            type="button"
            class="agent-chat__suggestion"
            @click=${()=>{e.onDraftChange(n),e.onSend()}}
          >
            ${n}
          </button>
        `})}
    </div>
  `}function Cw(e){let t=e.assistantName||`Assistant`,n=_w(e),r=n?null:st(e.assistantAvatar);return I`
    <div class="agent-chat__welcome-identity">
      ${n?I`<img
              class="agent-chat__welcome-avatar"
              src=${$i(n)}
              alt=${t}
            />`:r?I`<div class="agent-chat__avatar agent-chat__avatar--text" aria-label=${t}>
                ${r}
              </div>`:bw()}
      <div class="agent-chat__welcome-identity-copy">
        <h2>${t}</h2>
        <p class="agent-chat__hint">${e.hint}</p>
      </div>
    </div>
  `}function ww(e){if(e.modelSetupRequired)return I`
      <div class="agent-chat__welcome agent-chat__welcome--setup" role="alert">
        ${bw()}
        <h2>${H(`modelSetup.required.title`)}</h2>
        <p class="agent-chat__hint">${H(`modelSetup.required.body`)}</p>
        <button class="btn primary" type="button" @click=${e.onModelSetup}>
          ${H(`modelSetup.required.action`)}
        </button>
      </div>
    `;let t=yw(e),n=0,r=e=>{let t=e.currentTarget;return t instanceof HTMLElement?t.querySelector(`.agent-chat__welcome-clawd openclaw-mascot`):null};return I`
    <div
      class="agent-chat__welcome"
      style="--agent-color: var(--accent)"
      @dragenter=${e=>{if(!Array.from(e.dataTransfer?.types??[]).includes(`Files`))return;n+=1;let t=r(e);t&&(t.tease=!0)}}
      @dragleave=${e=>{n=Math.max(0,n-1);let t=r(e);t&&n===0&&(t.tease=!1)}}
      @drop=${e=>{if(!Array.from(e.dataTransfer?.types??[]).includes(`Files`))return;n=0;let t=r(e);t&&(t.tease=!1,t.catchOnce())}}
    >
      ${Cw({assistantName:e.assistantName,assistantAvatar:e.assistantAvatar,assistantAvatarUrl:e.assistantAvatarUrl,hint:e.hint??I`${H(`chat.welcome.hintBeforeShortcut`)} <kbd>/</kbd> ${H(`chat.welcome.hintAfterShortcut`)}`})}
      ${e.composer??L}
      ${e.hideSecondaryContent?L:I`<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?xw(t,e.onOpenSession):Sw(e)}
              </div>
            </div>`}
    </div>
  `}var Tw,Ew;function Dw(){return(Dw=e((()=>{F(),Dr(),jn(),V(),nt(),yt(),_e(),Qe(),D(),Tw=[`chat.welcome.suggestions.whatCanYouDo`,`chat.welcome.suggestions.summarizeRecentSessions`,`chat.welcome.suggestions.configureChannel`,`chat.welcome.suggestions.checkSystemHealth`],Ew=5})))()}function Ow(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0?Math.trunc(e):void 0}function kw(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>0&&e<=65536?e:void 0}function Aw(e){let t=(Array.isArray(e)?e:[]).flatMap(e=>c(e)&&e.code===`update-required`&&e.action===`update-and-reconnect`&&e.updateCommand===`openclaw update`&&e.headlessReconnectCommand===`openclaw node restart`?[e]:[]);return t.length>0?t:void 0}function jw(e){return Array.isArray(e)?e.length===1&&(e[0]===`worker-turn`||e[0]===`remote-exec`)?[e[0]]:e.length===2&&e[0]===`worker-turn`&&e[1]===`remote-exec`?[`worker-turn`,`remote-exec`]:[]:[]}function Mw(e,t){return e.executionModes?.includes(t)===!0}function Nw(e){return(Array.isArray(e)?e:[]).flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e,n=T(t.id),r=T(t.providerId);if(!n||!r)return[];let i=t.trust===`persistent`||t.trust===`disposable`?t.trust:void 0,a=Pw(t.machines);return[{id:n,providerId:r,trust:i,...Object.hasOwn(t,`executionModes`)?{executionModes:jw(t.executionModes)}:{},...a.length>0?{machines:a}:{}}]}).toSorted((e,t)=>e.id.localeCompare(t.id))}function Pw(e){let t=new Map;for(let n of(Array.isArray(e)?e:[]).slice(0,32)){if(!c(n))continue;let e=T(n.id),r=T(n.label);if(!e||e.length>128||!r||r.length>128||t.has(e))continue;let i=kw(n.cpu),a=kw(n.memoryGb);t.set(e,{id:e,label:r,...i===void 0?{}:{cpu:i},...a===void 0?{}:{memoryGb:a},...typeof n.default==`boolean`?{default:n.default}:{}})}return[...t.values()]}function Fw(e){return typeof e==`string`&&Bw.has(e)}function Iw(e){return typeof e==`number`&&Number.isSafeInteger(e)}function Lw(e){if(!c(e)||Object.keys(e).some(e=>e!==`total`&&e!==`available`)||!Iw(e.total)||!Iw(e.available))return;let t=e.total,n=e.available;return t>=1&&t<=1024&&n>=0&&n<=t?{total:t,available:n}:void 0}function Rw(e){if(!c(e)||Object.keys(e).some(e=>e!==`command`&&e!==`state`))return;let t=T(e.command),n=e.state;return t&&t.length<=128&&(n===`invocable`||n===`pending-approval`||n===`undeclared`||n===`unauthorized`)?{command:t,state:n}:void 0}function zw(e){return(Array.isArray(e)?e:[]).flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e,n=T(t.id),r=T(t.type);if(!n||r!==`local`&&r!==`node`&&r!==`worker`||!Fw(t.status))return[];let i=t.status,a=T(t.label),o=T(t.platform),s=t.trust===`persistent`||t.trust===`disposable`?t.trust:void 0,c=f(t.capabilities),l=Array.isArray(t.invocableCommands)?m(t.invocableCommands).filter(e=>e.length<=128).slice(0,128):void 0,u=Rw(t.requiredNodeCommand),d=Ow(t.lastConnectedAtMs),p=Ow(t.lastDisconnectedAtMs),h=Ow(t.lastSeenAtMs),g=T(t.lastSeenReason),_=Aw(t.issues),v=Lw(t.workerSlots);return[{id:n,type:r,status:i,...a?{label:a}:{},...o?{platform:o}:{},...typeof t.sessionHost==`boolean`?{sessionHost:t.sessionHost}:{},...v?{workerSlots:v}:{},...d===void 0?{}:{lastConnectedAtMs:d},...p===void 0?{}:{lastDisconnectedAtMs:p},...h===void 0?{}:{lastSeenAtMs:h},...g?{lastSeenReason:g}:{},...s?{trust:s}:{},...c?{capabilities:c}:{},...l?{invocableCommands:l}:{},...u?{requiredNodeCommand:u}:{},..._?{issues:_}:{}}]}).toSorted((e,t)=>e.id.localeCompare(t.id))}var Bw;function Vw(){return(Vw=e((()=>{n(),Bw=new Set([`available`,`unavailable`,`starting`,`stopping`,`error`])})))()}async function Hw(e,t){let n=await e.request(`environments.list`,t?{runtimeId:t}:{});return{profiles:Nw(n?.profiles),environments:zw(n?.environments)}}function Uw(e,t){return I`
    <button
      type="button"
      class="session-menu__item"
      data-value=${e.value}
      data-popover=${e.keepOpen?L:`close`}
      aria-pressed=${String(e.checked)}
      title=${e.title??L}
      ?disabled=${t||(e.disabled??!1)}
      @click=${e.onSelect}
    >
      ${e.icon?I`<span class="session-menu__icon" aria-hidden="true">${e.icon}</span>`:L}
      <span class="session-menu__text">${e.label}</span>
      ${e.facts?.length||e.meter?I`<span class="new-session-page__menu-meta">
              ${e.facts?.length?I`<span class="new-session-page__menu-facts">
                      ${e.facts.map(e=>I`<span class="new-session-page__menu-fact">${e}</span>`)}
                    </span>`:L}
              ${e.meter??L}
            </span>`:L}
      ${e.sub?I`<span class="session-menu__sub">${e.sub}</span>`:L}
      <span class="session-menu__check" aria-hidden="true"
        >${e.checked?B.check:L}</span
      >
    </button>
  `}function Ww(e){return I`
    <div class="session-menu__separator" role="separator"></div>
    <button
      type="button"
      class="session-menu__item new-session-page__connect-machine"
      data-value="connect-machine"
      aria-pressed="false"
      ?disabled=${e.disabled}
      @click=${e.onSelect}
    >
      <span class="session-menu__icon" aria-hidden="true">${B.link}</span>
      <span class="session-menu__text">${H(`newSession.connectMachine`)}</span>
    </button>
  `}function Gw(e){return e.profiles.map(t=>{let n=e.profileDisabledReason?.(t);return Uw({value:`cloud:${t.id}`,label:H(`newSession.cloudWorker`,{profile:t.id}),icon:e.icon,facts:t.trust===`disposable`?[H(`newSession.environmentDisposable`)]:t.trust===`persistent`?[H(`newSession.environmentPersistent`)]:void 0,checked:e.selectedId===t.id,disabled:e.disabled||!!n,title:(e.disabled?e.disabledReason:n)??H(`newSession.cloudWorkerProvider`,{provider:t.providerId}),onSelect:()=>e.onSelect(t.id)},e.submitting)})}function Kw(e){let t=e.cpu===void 0?void 0:String(e.cpu),n=e.memoryGb===void 0?void 0:String(e.memoryGb);return t&&n?H(`newSession.machineShape`,{cpu:t,memory:n}):t?H(`newSession.machineCpu`,{cpu:t}):n?H(`newSession.machineMemory`,{memory:n}):void 0}function qw(e){return e.machines.map(t=>Uw({value:`machine:${t.id}`,label:t.label,sub:Kw(t),facts:t.default?[H(`newSession.machineDefault`)]:void 0,checked:e.selectedId===t.id,keepOpen:!0,onSelect:()=>e.onSelect(t.id)},e.submitting))}function Jw(){return(Jw=e((()=>{F(),z(),V(),Vw()})))()}function Yw(e,t,n,r){return t?Hw(e,r).then(e=>({...e,profiles:n?e.profiles:[]})):Promise.resolve({profiles:[],environments:[]})}var Xw;function Zw(){return(Zw=e((()=>{Jw(),Xw=[1e3,3e3,1e4,3e4,6e4]})))()}function Qw(e,t=e=>e){let n={};for(let[r,i]of Object.entries(e??{}))Object.defineProperty(n,r,{configurable:!0,enumerable:!0,value:t(i),writable:!0});return n}function $w(e,t){return e!=null&&Object.hasOwn(e,t)?e[t]:void 0}function eT(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0})}function tT(e){return{...e?.mcpServers?{mcpServers:Qw(e.mcpServers)}:{},...e?.mcpToolsDeny?{mcpToolsDeny:Qw(e.mcpToolsDeny,e=>[...e])}:{},...e?.skills?{skills:Qw(e.skills)}:{},...e?.webSearch===void 0?{}:{webSearch:e.webSearch}}}function nT(e,t){return t??e}function rT(e,t,n,r,i){let a=tT(e),o=Qw(Object.hasOwn(a,t)?a[t]:void 0);return r===i?delete o[n]:eT(o,n,r),Object.keys(o).length===0?delete a[t]:a[t]=o,a}function iT(e,t,n=!0){let r=tT(e);return t===n?delete r.webSearch:r.webSearch=t,r}function aT(e,t,n,r){let i=tT(e),a=Object.hasOwn(i,`mcpToolsDeny`)?i.mcpToolsDeny:void 0,o=new Set($w(a,t)??[]);r?o.add(n):o.delete(n);let s=Qw(a,e=>[...e]);return o.size>0?eT(s,t,[...o].toSorted()):delete s[t],Object.keys(s).length===0?delete i.mcpToolsDeny:i.mcpToolsDeny=s,i}function oT(e){return Object.keys(e?.mcpServers??{}).length+Object.keys(e?.skills??{}).length+Object.keys(e?.mcpToolsDeny??{}).length+(e?.webSearch===void 0?0:1)}function sT(){return(sT=e((()=>{})))()}function cT(e){return p(p(p(e?.tools)?.web)?.search)?.enabled!==!1}function lT(e){let t=Object.values(e.missing).some(e=>e.length>0),n=e.blockedByAllowlist||e.blockedByAgentFilter===!0,r=!e.disabled;return{key:e.skillKey,name:e.name,enabled:r&&!t&&!n,baseEnabled:r,...t?{missingDeps:!0}:{},...n?{blocked:!0}:{}}}var uT;function dT(){return(dT=e((()=>{Lt(),uT=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(),Vt(e,n).then(e=>{e&&i()&&this.skills.set(n,e.skills.map(lT).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:$w(t?.skills,e.key)??e.baseEnabled}))??null}isLoading(e){return this.loading.has(e)}hasError(e){return this.loadErrors.has(e)}}})))()}function fT(e,t,n,r){let i=n.trim();if(!i)return;let a=u(i);t.has(a)||(t.add(a),e.push({value:i,label:r(i)}))}function pT(){return(pT=e((()=>{})))()}function mT(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 hT(){return(hT=e((()=>{})))()}function gT(e){if(e.isCurrent?.()===!1)throw Error(`The Gateway connection changed. Retry the command.`)}function _T(e,t){gT(e);let n=Nt(e.readSessionAccessSnapshot?.()??e.sessionAccessSnapshot,t);if(!n.allowed)throw Error(n.reason)}async function vT(e,t,n,r){return _T(e,{method:`sessions.patch`,params:{key:t,...Sv(t,e),...n}}),await Cv(e,t,n,r)}function yT(e){if(!e)return;let t=u(e);if([`off`,`false`,`no`,`0`].includes(t))return`off`;if([`full`,`all`,`everything`].includes(t))return`full`;if([`on`,`minimal`,`true`,`yes`,`1`].includes(t))return`on`}function bT(e){let t=v(e);return t?[`default`,`inherit`,`inherited`,`clear`,`reset`,`unpin`].includes(t):!1}async function xT(e,t,n,r,i){switch(n){case`help`:return ST();case`new`:return{content:H(`chat.commandResults.startingNewThread`),action:`new-session`};case`reset`:return{content:H(`chat.commandResults.resettingThread`),action:`reset`};case`stop`:return{content:H(`chat.commandResults.stoppingCurrentRun`),action:`stop`};case`clear`:return{content:H(`chat.commandResults.chatHistoryCleared`),action:`clear`};case`compact`:return await CT(t,i);case`model`:return await wT(e,t,r,i);case`think`:return await TT(e,t,r,i);case`fast`:return await OT(e,t,r,i);case`verbose`:return await ET(e,t,r,i);case`export-session`:return{content:H(`chat.commandResults.exportingThread`),action:`export`};case`usage`:return await kT(t,i);case`agents`:return await AT(e);case`steer`:return await qT(e,t,r,i);case`redirect`:return await JT(e,t,r,i);default:return{content:H(`chat.commandResults.unknownCommand`,{command:`/${n}`})}}}function ST(){let e=[`**${H(`chat.commandResults.help.availableCommands`)}**\n`],t=``;for(let n of di){let r=n.category??`session`;r!==t&&(t=r,e.push(`**${zi(r)}**`));let i=n.args?` ${n.args}`:``,a=n.executeLocal?``:` *(${H(`chat.commandResults.help.agentCommand`)})*`;e.push(`\`/${n.name}${i}\` — ${Xi(n)}${a}`)}return e.push(`\n${H(`chat.commandResults.help.openMenu`)}`),{content:e.join(`
`)}}async function CT(e,t){try{let n=Sv(e,t);_T(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`?pe(r.reason):``;return{content:e?H(`chat.commandResults.compaction.failedWithReason`,{reason:e}):H(`chat.commandResults.compaction.failed`),failed:!0}}return r?.compacted?{action:`refresh`}:typeof r?.reason==`string`&&r.reason.trim()?{content:H(`chat.commandResults.compaction.skippedWithReason`,{reason:pe(r.reason)}),action:`refresh`}:{content:H(`chat.commandResults.compaction.skipped`),action:`refresh`}}catch(e){return{content:H(`chat.commandResults.compaction.failedWithReason`,{reason:O(e)}),failed:!0}}}async function wT(e,t,n,r){let i=r.chatModelCatalog??r.modelCatalog,a=NT(t,r);if(!n)try{let[n,o]=await Promise.all([IT(r,MT(t,r)),i?Promise.resolve(i):HT(e,a)]),{session:s,defaults:c}=zT(r,t,n),l=s?.model||c?.model||`default`,u=o.filter(e=>e.available!==!1).map(e=>e.id),d=[H(`chat.commandResults.model.current`,{model:`\`${l}\``})];if(u.length>0){let e=u.length>10?H(`chat.commandResults.model.more`,{count:String(u.length-10)}):``;d.push(`${H(`chat.commandResults.model.available`,{models:u.slice(0,10).map(e=>`\`${e}\``).join(`, `)})}${e}`)}return{content:d.join(`
`)}}catch(e){return{content:H(`chat.commandResults.model.getFailed`,{error:O(e)}),failed:!0}}try{let e=n.trim();return await vT(r,t,{model:e},{ownsModelOverride:r.ownsModelOverride}),{content:H(`chat.commandResults.model.set`,{model:`\`${e}\``}),action:`refresh`,modelChanged:!0}}catch(e){return{content:H(`chat.commandResults.model.setFailed`,{error:O(e)}),failed:!0}}}async function TT(e,t,n,r){let i=n.trim();if(!i)try{let{session:n,defaults:i,models:a}=await VT(e,r,t);return{content:FT(H(`chat.commandResults.thinking.current`,{level:Qi(n,i,a)}),oi(n,i,a))}}catch(e){return{content:H(`chat.commandResults.thinking.getFailed`,{error:O(e)}),failed:!0}}if(bT(i))try{return await vT(r,t,{thinkingLevel:null}),{content:H(`chat.commandResults.thinking.reset`),action:`refresh`}}catch(e){return{content:H(`chat.commandResults.thinking.resetFailed`,{error:O(e)}),failed:!0}}try{let{session:e,defaults:n}=await RT(r,t),a=r.chatModelCatalog??r.modelCatalog??[],o=hi(i,e,n,a);return o?ci(e,n,o,a)?(await vT(r,t,{thinkingLevel:o}),{content:H(`chat.commandResults.thinking.set`,{level:`**${o}**`}),action:`refresh`}):{content:H(`chat.commandResults.thinking.unsupported`,{level:i,options:oi(e,n,a)})}:{content:H(`chat.commandResults.thinking.unrecognized`,{level:i,options:oi(e,n,a)})}}catch(e){return{content:H(`chat.commandResults.thinking.setFailed`,{error:O(e)}),failed:!0}}}async function ET(e,t,n,r){let i=n.trim();if(!i)try{let e=await LT(r,t);return{content:FT(H(`chat.commandResults.verbose.current`,{level:yT(e?.verboseLevel)??`off`}),`on, full, off`)}}catch(e){return{content:H(`chat.commandResults.verbose.getFailed`,{error:O(e)}),failed:!0}}let a=yT(i);if(!a)return{content:H(`chat.commandResults.verbose.unrecognized`,{level:i})};try{return await vT(r,t,{verboseLevel:a}),{content:H(`chat.commandResults.verbose.set`,{level:`**${a}**`}),action:`refresh`}}catch(e){return{content:H(`chat.commandResults.verbose.setFailed`,{error:O(e)}),failed:!0}}}function DT(e){return H(`chat.commandResults.fast.options`,{seconds:String(e?.fastAutoOnSeconds??60)})}async function OT(e,t,n,r){let i=u(n);if(!i||i===`status`)try{let e=await LT(r,t);return{content:FT(Rr(e),DT(e))}}catch(e){return{content:H(`chat.commandResults.fast.getFailed`,{error:O(e)}),failed:!0}}if(bT(i))try{return await vT(r,t,{fastMode:null}),{content:H(`chat.commandResults.fast.reset`),action:`refresh`}}catch(e){return{content:H(`chat.commandResults.fast.resetFailed`,{error:O(e)}),failed:!0}}let a=cr(i);if(a===void 0)return{content:H(`chat.commandResults.fast.unrecognized`,{mode:n.trim()})};try{return await vT(r,t,{fastMode:a}),{content:H(a===`auto`?`chat.commandResults.fast.setAuto`:a?`chat.commandResults.fast.enabled`:`chat.commandResults.fast.disabled`),action:`refresh`}}catch(e){return{content:H(`chat.commandResults.fast.setFailed`,{error:O(e)}),failed:!0}}}async function kT(e,t){try{let n=BT(await IT(t),e);if(!n)return{content:H(`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=n.contextTokens??0,d=c!==null&&l&&u>0?Math.round(c/u*100):null,f=s===null?H(`chat.commandResults.usage.notAvailable`):`${l?``:`~`}${wt(s)}`,p=[`**${H(`chat.commandResults.usage.title`)}**`,H(`chat.commandResults.usage.inputTokens`,{count:`**${wt(a)}**`}),H(`chat.commandResults.usage.outputTokens`,{count:`**${wt(o)}**`}),H(`chat.commandResults.usage.totalTokens`,{count:`**${f}**`})];return d!==null&&p.push(H(`chat.commandResults.usage.context`,{percent:`**${d}%**`,total:wt(u)})),n.model&&p.push(H(`chat.commandResults.usage.model`,{model:`\`${n.model}\``})),{content:p.join(`
`)}}catch(e){return{content:H(`chat.commandResults.usage.failed`,{error:O(e)}),failed:!0}}}async function AT(e){try{let t=await e.request(`agents.list`,{}),n=t?.agents??[];if(n.length===0)return{content:H(`chat.commandResults.agents.none`)};let r=[H(`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?` *(${H(`chat.commandResults.agents.default`)})*`:``,o=e.agentRuntime?.id?H(`chat.commandResults.agents.runtime`,{runtime:`\`${e.agentRuntime.id}\``}):``;r.push(`- \`${e.id}\` — ${i}${a}${o}`)}return{content:r.join(`
`)}}catch(e){return{content:H(`chat.commandResults.agents.failed`,{error:O(e)}),failed:!0}}}function jT(e){return v(e)}function MT(e,t){let n=we(jT(e)??``)?.agentId??v(t.agentId);return n?{agentId:n}:{}}function NT(e,t){let n=jT(e);return we(n??``)?.agentId??v(t.agentId)??(n===`main`?v(t.defaultAgentId)??`main`:void 0)}function PT(e,t){let n=new Set([e]);if(t&&t!==`main`){let r=`agent:${t}:${ue}`,i=`agent:${t}:global`;(e===r||e===i)&&n.add(`global`)}if(t===`main`){let t=`agent:${Le}:main`;e===`main`?n.add(t):e===t&&n.add(ue)}return n}function FT(e,t){return`${e}\n${H(`chat.commandResults.options`,{options:t})}`}async function IT(e,t){let n=await e.sessions.list(t);if(!n)throw Error(H(`chat.commandResults.sessionUnavailable`));return n}async function LT(e,t){return(await RT(e,t)).session}async function RT(e,t){return zT(e,t,await IT(e,MT(t,e)))}function zT(e,t,n){let r=NT(t,e),i=v(e.defaultAgentId)??`main`,a=v(e.sessionsResultAgentId),o=e.sessionsResult&&r&&a===r?BT(e.sessionsResult,t):void 0;return{session:BT(n,t)??o,defaults:!r||r===i?n.defaults:void 0}}function BT(e,t){let n=jT(t),r=we(n??``)?.agentId??(n===`main`?`main`:void 0),i=n?PT(n,r):new Set;return e?.sessions?.find(e=>{let t=jT(e.key);return t?i.has(t):!1})}async function VT(e,t,n){let r=t.chatModelCatalog??t.modelCatalog,i=NT(n,t),[a,o]=await Promise.all([IT(t,MT(n,t)),r?Promise.resolve(r):HT(e,i)]);return{...zT(t,n,a),models:o}}async function HT(e,t){return t?(await e.request(`models.list`,{agentId:t,view:`configured`}))?.models??[]:[]}function UT(e,t){let n=t.trim();return n?{key:e,message:n}:{error:`empty`}}function WT(e){if(!e||typeof e!=`object`)return`started`;let t=e.status;return t===`in_flight`||t===`ok`||t===`timeout`||t===`error`?t:`started`}function GT(e){if(e===`timeout`)return H(`chat.commandResults.steer.timeout`);if(e===`error`)return H(`chat.commandResults.steer.failed`)}function KT(e){if(e===`timeout`)return H(`chat.commandResults.redirect.timeout`);if(e===`error`)return H(`chat.commandResults.redirect.failed`)}async function qT(e,t,n,r){try{let i=UT(t,n);if(`error`in i)return{content:i.error===`empty`?H(`chat.commandResults.steer.usage`):i.error};gT(r);let a=WT(await e.request(`chat.send`,{sessionKey:i.key,...Sv(i.key,r),message:i.message,deliver:!1,queueMode:`steer`,idempotencyKey:Ue()})),o=GT(a);if(o)return{content:o};let s={content:H(`chat.commandResults.steer.succeeded`)};return(a===`started`||a===`in_flight`)&&(s.pendingCurrentRun=i.key===t),s}catch(e){return{content:H(`chat.commandResults.steer.requestFailed`,{error:O(e)}),failed:!0}}}async function JT(e,t,n,r){try{let i=UT(t,n);if(`error`in i)return{content:i.error===`empty`?H(`chat.commandResults.redirect.usage`):i.error};gT(r);let a=await e.request(`chat.send`,{sessionKey:i.key,...Sv(i.key,r),message:i.message,queueMode:`interrupt`,idempotencyKey:Ue()}),o=WT(a),s=KT(o);if(s)return{content:s};let c=typeof a?.runId==`string`?a.runId:void 0;return{content:H(`chat.commandResults.redirect.succeeded`),...o===`started`||o===`in_flight`?{trackRunId:c}:{}}}catch(e){return{content:H(`chat.commandResults.redirect.requestFailed`,{error:O(e)}),failed:!0}}}function YT(){return(YT=e((()=>{V(),aa(),Vr(),ri(),A(),yt(),lt(),D(),ye(),Tv()})))()}function XT(e,t){let n=t===null?null:O(t);e.lastError=n,e.chatError=n}function ZT(e){return{client:e.client??null,hello:e.hello??null,phase:e.connected?`connected`:`offline`}}function QT(e,t){let n=Ev(ZT(e),!!e.chatRunId)[t];return n.allowed?!0:(XT(e,n.reason),!1)}function $T(e){return!e.client||!e.connected?null:{client:e.client,connectionEpoch:e.connectionEpoch,sessionKey:e.sessionKey,agentId:Ht(e,e.sessionKey)}}function eE(e,t){return e.connected&&e.client===t.client&&e.connectionEpoch===t.connectionEpoch}function tE(e,t){return eE(e,t)&&de(e,t.sessionKey,t.agentId)}function nE(e,t){return eE(e,t)?!je(e,t.sessionKey)||Ce(e)===t.agentId:!1}function rE(e,t){if(!tE(e,t))return{allowed:!1,reason:`The Gateway connection changed. Retry the command.`};let n=Nt(ZT(e),{method:`chat.send`,requiredScope:`operator.admin`});return n.allowed?{allowed:!0}:n}function iE(e,t){let n=rE(e,t);return n.allowed?!0:(XT(e,n.reason),!1)}function aE(e){return XT(e,`The Gateway connection changed. Retry the command.`),`failed`}function oE(e,t){return JSON.stringify([e??null,t??null])}function sE(e){let t=yE.get(e);return t||(t=new Map,yE.set(e,t)),t}async function cE(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)?Kr(sa(r)):void 0}catch{return}}function lE(e,t,n){let r=qe(e,{agentId:t,sessionKey:n});if(Array.isArray(r?.commands))return Promise.resolve(Kr(sa(r)));let i=sE(e),a=oE(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=cE(e,t,n).then(e=>(e&&i.get(a)===c&&(c.commands=e,c.expiresAt=Date.now()+vE),e??o?.commands??vi())).finally(()=>{i.get(a)===c&&delete c.inFlight});return c.inFlight=l,i.set(a,c),l}function uE(e,t){_E+=1,yE.get(e)?.delete(oE(t.agentId,t.sessionKey))}function dE(e){if(!Array.isArray(e.result?.commands))return!1;let t=Kr(sa(e.result));return _E+=1,Ui(t),!0}async function fE(e){let t=++_E,n=e.agentId?.trim();if(!e.client){if(t!==_E||e.shouldApply?.()===!1)return;Ui(vi());return}let r=await lE(e.client,n,e.sessionKey);t===_E&&e.shouldApply?.()!==!1&&Ui(r)}function pE(e){return![`stop`,`export-session`,`steer`,`redirect`,`new`].includes(e)}async function mE(e,t){let n=t?.sessionKey??e.sessionKey,r=t?()=>de(e,t.sessionKey,t.agentId):()=>e.sessionKey===n||N(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 hE(e,t,n,r){switch(t){case`stop`:return QT(e,`abort`)?(await Zy(e),`completed`):`failed`;case`new`:return e.createChatSession?await e.createChatSession()?`completed`:`cancelled`:(XT(e,`New Chat is unavailable.`),`failed`);case`reset`:{let t=$T(e);if(!t||!iE(e,t))return`failed`;let i=await mE(e);return i===`confirmed`?iE(e,t)?(await r.sendResetMessage(n?`/reset ${n}`:`/reset`,{previousDraft:r.previousDraft,restoreDraft:r.restoreDraft,target:t}),`completed`):`failed`:i}case`clear`:{if(!QT(e,`reset`))return`failed`;let t=$T(e);if(!t)return`failed`;let n=await mE(e);return n===`confirmed`?tE(e,t)?QT(e,`reset`)?await MS(e):`failed`:aE(e):n}case`compact`:if(!QT(e,`compact`))return`failed`;break;case`export-session`:return await e.exportCurrentChat?.()===`empty`&&(gE(e,H(`chat.commandResults.emptyExport`)),Eb(e,!1,!1,{contentChanged:!0})),`completed`}if(!e.client||!e.connected)return XT(e,`Gateway not connected`),gE(e,`Cannot run \`/${t}\`: Control UI is not connected to the Gateway.`),Eb(e,!1,!1,{contentChanged:!0}),`failed`;let i=$T(e);if(!i)return`failed`;let a=()=>tE(e,i),o;try{o=await xT(i.client,i.sessionKey,t,n,{sessions:e.sessions,sessionAccessSnapshot:ZT(e),readSessionAccessSnapshot:()=>ZT(e),isCurrent:a,chatModelCatalog:e.chatModelCatalog,sessionsResult:e.sessionsResult,sessionsResultAgentId:e.sessionsResultAgentId,defaultAgentId:ze(e),agentId:i.agentId,ownsModelOverride:()=>nE(e,i)})}catch(n){return a()&&(XT(e,O(n)),gE(e,`Command \`/${t}\` failed unexpectedly.`),Eb(e,!1,!1,{contentChanged:!0})),`failed`}return o.content&&a()&&gE(e,o.content),o.failed?(a()&&(XT(e,o.content||`Command /${t} failed.`),Eb(e,!1,!1,{contentChanged:!!o.content})),`failed`):(o.trackRunId&&a()&&(e.chatRunId=o.trackRunId,e.chatStream=``,e.chatSending=!1),o.pendingCurrentRun&&e.chatRunId&&a()&&Ss(e,`/${t} ${n}`.trim(),e.chatRunId,hr(e.hello,e.client?.instanceId)??void 0),o.modelChanged&&a()&&await e.refreshCurrentSessionTools?.(),o.action===`refresh`&&a()&&await e.refreshCurrentChat?.(),a()&&Eb(e,!1,!1,{contentChanged:!!o.content}),`completed`)}function gE(e,t){sc(e,[...e.chatMessages,{role:`system`,content:t,timestamp:Date.now()}])}var _E,vE,yE;function bE(){return(bE=e((()=>{V(),kt(),aa(),ni(),A(),lt(),Se(),D(),YT(),FS(),Ls(),Dv(),hc(),mb(),Fb(),_E=0,vE=6e4,yE=new WeakMap})))()}function xE(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()||H(t===`audioinput`?`chat.composer.microphoneFallback`:`chat.composer.cameraFallback`,{number:String(n.length+1)})}))}return n}function SE(e,t){let n=e.filter(e=>e.kind===t);return n.length===0||n.some(e=>!e.deviceId||!e.label)}function CE(e){return e instanceof DOMException||e instanceof Error&&e.name===`OverconstrainedError`?e.name:void 0}function wE(e){return LE[CE(e)??``]??`failed`}function TE(e,t){let[n,r]=IE[e];return H(t===`audioinput`?n:r)}function EE(e){let t=globalThis.navigator?.mediaDevices;return t?.addEventListener?(t.addEventListener(`devicechange`,e),()=>t.removeEventListener(`devicechange`,e)):()=>void 0}function DE(e){return TE(wE(e),`audioinput`)}async function OE(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()?OE(e,t):{devices:[],permissionRequired:!1,issue:wE(n)}}let a=SE(i,t);if(!a||!n.getUserMedia||!e())return{devices:xE(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:xE(i,t),permissionRequired:SE(i,t),issue:null}}catch(e){return{devices:xE(i,t),permissionRequired:a,issue:wE(e)}}}async function kE(e){return OE(e,`audioinput`)}async function AE(e){return OE(e,`videoinput`)}function jE(e){let t=e?.trim();return{autoGainControl:!0,echoCancellation:!0,noiseSuppression:!0,...t?{deviceId:{exact:t}}:{}}}function ME(e){return e.reason instanceof Error?e.reason:new DOMException(`Realtime Talk input cancelled`,`AbortError`)}async function NE(e,t){if(t?.aborted)throw ME(t);let n=e();if(!t)return await n;let r=()=>void 0,i=new Promise((e,n)=>{let i=()=>n(ME(t));t.addEventListener(`abort`,i,{once:!0}),r=()=>t.removeEventListener(`abort`,i)});try{return await Promise.race([n,i])}catch(e){throw t.aborted?(n.then(e=>e.getTracks().forEach(e=>e.stop()),()=>void 0),ME(t)):e}finally{r()}}async function PE(e,t={}){let n=globalThis.navigator?.mediaDevices;if(!n?.getUserMedia)throw Error(H(`chat.composer.realtimeTalkRequiresMicrophone`));let r;try{r={stream:await NE(()=>n.getUserMedia({audio:jE(e)}),t.signal)}}catch(t){let n=CE(t);if(!n||n===`AbortError`)throw t;if(e?.trim()&&n===`OverconstrainedError`)throw new RE;r={failure:DE(t)}}if(`failure`in r)throw Error(r.failure);let{stream:i}=r;if(t.signal?.aborted)throw i.getTracks().forEach(e=>e.stop()),ME(t.signal);return i}async function FE(e,t={}){let n=globalThis.navigator?.mediaDevices;if(!n?.getUserMedia)throw Error(H(`chat.composer.cameraAccessFailed`));let r=e?.trim(),i;try{let e=await NE(()=>n.getUserMedia({video:!r||{deviceId:{exact:r}}}),t.signal);if(t.signal?.aborted)throw e.getTracks().forEach(e=>e.stop()),ME(t.signal);i={stream:e}}catch(e){if(t.signal?.aborted)throw ME(t.signal);let n=CE(e);i={failure:r&&n===`OverconstrainedError`?H(`chat.composer.selectedCameraUnavailable`):TE(wE(e),`videoinput`)}}if(`failure`in i)throw Error(i.failure);return i.stream}var IE,LE,RE,zE;function BE(){return(BE=e((()=>{V(),IE={"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`]},LE={NotAllowedError:`permission-blocked`,NotFoundError:`none-found`,NotReadableError:`busy`,InvalidStateError:`page-inactive`},RE=class extends Error{constructor(){super(H(`chat.composer.selectedMicrophoneUnavailable`)),this.name=`RealtimeTalkSelectedMicrophoneError`}},zE=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(H(`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?.(H(`chat.composer.microphoneAccessPending`));let n=await PE(e,{signal:t.signal});if(t.signal.aborted)throw n.getTracks().forEach(e=>e.stop()),ME(t.signal);this.media=n;let r=()=>{this.controller===t&&(this.stop(),this.onEnded(H(`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 VE;function HE(){return(HE=e((()=>{VE=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 UE(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n){let i=e.subarray(r,r+n);t+=String.fromCharCode(...i)}return btoa(t)}function WE(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e+=1)n[e]=t.charCodeAt(e);return n}function GE(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 KE(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 qE(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 JE(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 YE(e){let t=e.endsWith(`==`)?2:+!!e.endsWith(`=`);return Math.max(0,Math.floor(e.length*3/4)-t)}var XE,ZE,QE,$E,eD,tD;function nD(){return(nD=e((()=>{XE=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}},ZE=class{constructor(){this.level=0,this.noiseFloor=.01}sample(e){let t=qE(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}},QE=class{constructor(e){this.onLevel=e,this.context=null,this.source=null,this.analyser=null,this.timer=null,this.ownsContext=!1,this.levelMeter=new ZE,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))}},$E=10,eD=320,tD=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=$E-i,o=YE(e),s=Math.floor(o/2);if(this.sources.size>=eD||a<=0||s/n>a)return`overflow`;let c;try{c=JE(WE(e))}catch{return`ignored`}if(c.length===0)return`ignored`;let l=r+c.length/n;if(l-t.currentTime>$E)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 rD(e){let t=window.visualViewport?.offsetTop??0,n=document.documentElement.clientHeight||window.innerHeight,r=e.getBoundingClientRect().top,i=n-r+xD,a=r-t-SD;e.style.setProperty(`--chat-composer-popover-bottom`,`${Math.max(0,i)}px`),e.style.setProperty(`--chat-composer-popover-max-height`,`${Math.max(0,a)}px`)}function iD(e){if(bD.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,bD.get(e)===n&&rD(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),bD.set(e,n),rD(e)}function aD(e){let t=bD.get(e);bD.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 oD(e,t){let n=t instanceof HTMLElement?t:null;return e&&e!==n&&aD(e),n&&iD(n),n}function sD(e){let t=e.scrollHeight>e.clientHeight+1,n=t&&e.clientHeight>=64,r=n&&e.scrollTop>1,i=n&&e.scrollTop+e.clientHeight<e.scrollHeight-1;e.style.overflowY=t?`auto`:`hidden`,e.toggleAttribute(`data-scroll-fade-top`,r),e.toggleAttribute(`data-scroll-fade-bottom`,i)}function cD(e){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 t=e.closest(`.chat`)?.querySelector(`.chat-thread`)??null,n=t?bb(t).anchorToEnd:!1;e.style.overflowY=`hidden`,e.style.height=`auto`;let r=getComputedStyle(e).maxHeight.trim(),i=/^(\d+(?:\.\d+)?)px$/u.exec(r),a=i?Number(i[1]):150;e.style.height=`${Math.min(e.scrollHeight,a)}px`,sD(e),t&&n&&(t.scrollTop=t.scrollHeight)}function lD(e){if(yD.has(e))return;let t=e.getBoundingClientRect().width,n=()=>sD(e),r=typeof ResizeObserver==`function`?new ResizeObserver(()=>{let n=e.getBoundingClientRect().width;if(n!==t){t=n;let r=yD.get(e);r&&r.adjustmentFrame===null&&(r.adjustmentFrame=requestAnimationFrame(()=>{r.adjustmentFrame=null,yD.get(e)===r&&cD(e)}));return}sD(e)}):null;e.addEventListener(`scroll`,n,{passive:!0}),r?.observe(e),yD.set(e,{observer:r,adjustmentFrame:null,onScroll:n}),sD(e)}function uD(e){let t=yD.get(e);yD.delete(e),t&&(t.observer?.disconnect(),e.removeEventListener(`scroll`,t.onScroll),t.adjustmentFrame!==null&&cancelAnimationFrame(t.adjustmentFrame))}function dD(e){queueMicrotask(()=>{e.isConnected&&cD(e)})}function fD(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||n.closest(vD))return;let r=e.currentTarget;r instanceof HTMLElement&&r.querySelector(`.agent-chat__composer-combobox > textarea`)?.focus({preventScroll:!0})}function pD(e,t){let n=t?.closest(`.agent-chat__composer-shell`);document.activeElement===t&&n&&e.preventDefault()}function mD(e,t){requestAnimationFrame(()=>{if(document.activeElement!==e)return;cD(e);let n=t===`up`?0:e.value.length;e.selectionStart=n,e.selectionEnd=n})}function hD(e){e&&requestAnimationFrame(()=>{let t=document.getElementById(e),n=t?.closest(`.slash-menu__scroll`);if(!t||!n)return;let r=n.getBoundingClientRect(),i=t.getBoundingClientRect();i.top<r.top?n.scrollTop-=r.top-i.top:i.bottom>r.bottom&&(n.scrollTop+=i.bottom-r.bottom)})}function gD(e){if(!(e instanceof HTMLElement))return;let t=()=>{let t=e.scrollHeight>e.clientHeight+1;e.dataset.scrollable=String(t),e.dataset.atStart=String(!t||e.scrollTop<=1),e.dataset.atEnd=String(!t||e.scrollTop+e.clientHeight>=e.scrollHeight-1)};t(),requestAnimationFrame(t)}function _D(e,t){return`chat-${encodeURIComponent(e)}-${t}`}var vD,yD,bD,xD,SD;function CD(){return(CD=e((()=>{Fb(),vD=[`a[href]`,`button`,`input`,`select`,`textarea`,`summary`,`wa-dropdown`,`[contenteditable='true']`,`[role='button']`,`[role='listbox']`,`[role='option']`].join(`,`),yD=new WeakMap,bD=new WeakMap,xD=6,SD=28})))()}function wD(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,64})$/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}}function TD(e,t,n){if(!t?.length)return L;let r=t.map(t=>e.slice(t.start,t.end)).join(`, `);return I`<div class="chat-reply-preview" role="status">
    <span class="chat-reply-preview__icon" aria-hidden="true">${B.users}</span>
    <span class="chat-reply-preview__text">${H(`chat.mentions.selected`,{names:r})}</span>
    <button
      type="button"
      class="chat-reply-preview__dismiss"
      aria-label=${H(`chat.mentions.remove`)}
      @click=${n}
    >
      ${B.x}
    </button>
  </div>`}var ED;function DD(){return(DD=e((()=>{F(),an(),z(),V(),Tr(),dh(),CD(),ED=class{constructor(){this.generation=0,this.target=null,this.search=null,this.index=0}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.directory=e)}close(){this.generation+=1,clearTimeout(this.timer),this.timer=void 0,this.target=null,this.search=null,this.index=0}dispose(){this.close(),this.directory=void 0}update(e,t,n,r=!1){let i=this.directory?wD(e,t):null;if(!i||!this.open&&!r){this.open&&(this.close(),n());return}if(this.target?.start===i.start&&this.target.query===i.query)return;this.close(),this.target=i,this.search={kind:`loading`};let a=this.directory;if(!a)return;let o=this.generation;this.timer=setTimeout(()=>{this.timer=void 0,a.client.request(`users.mentionable`,{...a.params,query:i.query}).then(e=>{o===this.generation&&(this.search={kind:`ready`,result:e},n())},()=>{o===this.generation&&(this.search={kind:`error`},n())})},150),n()}activeId(e){return this.search?.kind===`ready`&&this.search.result.users[this.index]?_D(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)return!1;if(e.key===`Escape`)return e.preventDefault(),this.close(),n(),!0;if(![`ArrowDown`,`ArrowUp`,`Enter`,`Tab`].includes(e.key))return!1;e.preventDefault();let r=this.search?.kind===`ready`?this.search.result.users:[];return r.length>0&&(e.key===`ArrowDown`||e.key===`ArrowUp`?(this.index=(this.index+(e.key===`ArrowDown`?1:r.length-1))%r.length,n(),hD(this.activeId(t.paneId))):this.select(r[this.index],t,n)),!0}select(e,t,n){let r=t.getTextarea(),i=r?.value??t.getDraft(),a=wD(i,r?.selectionStart??i.length);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=[...xa(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);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)})}render(e,t){if(!this.open)return L;let n=this.search?.kind===`ready`?this.search.result:void 0,r=e.getMentions().length>=10?H(`chat.mentions.limit`):this.search?.kind===`error`?H(`chat.mentions.unavailable`):this.search?.kind===`loading`?H(`chat.mentions.loading`):n?.users.length?null:H(`chat.mentions.empty`);return I`<div
      id=${_D(e.paneId,`mention-menu-listbox`)}
      class="slash-menu mention-menu"
      role="listbox"
      aria-label=${H(`chat.mentions.menu`)}
    >
      <div class="slash-menu__scroll" ${P(gD)}>
        <div class="slash-menu-group">
          <div class="slash-menu-group__label" role="status">
            ${r??H(`chat.mentions.menu`)}
          </div>
          ${r?L:n?.users.map((n,r)=>I`<div
                    id=${_D(e.paneId,`mention-option-${r}`)}
                    class="slash-menu-item ${r===this.index?`slash-menu-item--active`:``}"
                    role="option"
                    aria-selected=${r===this.index}
                    @mousedown=${e=>e.preventDefault()}
                    @click=${()=>this.select(n,e,t)}
                    @mouseenter=${()=>{this.index=r,t()}}
                  >
                    <span class="slash-menu-icon" aria-hidden="true"
                      >${uh({id:n.profileId,name:n.displayName,identity:{type:`profile`,id:n.profileId},profileAvatarUrl:n.avatarUrl})}</span
                    >
                    <span class="slash-menu-copy">
                      <span class="slash-menu-name">${n.displayName}</span>
                      <span class="slash-menu-desc"
                        >${n.online?H(`chat.mentions.online`):H(`chat.mentions.offline`)} ·
                        ${n.profileId.slice(-8)}</span
                      >
                    </span>
                  </div>`)}
          ${n?.truncated?I`<div class="slash-menu-group__label">${H(`chat.mentions.truncated`)}</div>`:L}
        </div>
      </div>
    </div>`}}})))()}function OD(e,t){let n=e.toLowerCase().startsWith(t.toLowerCase())?t.length:0;return n===0?I`${e}`:I`<mark>${e.slice(0,n)}</mark>${e.slice(n)}`}function kD(){return{skillMenuOpen:!1,skillMenuItems:[],skillMenuIndex:0,skillMenuTarget:null,skillCommandRefreshPending:!1,skillCommandRefreshGeneration:0,skillCommandRefreshTargetStart:null}}function AD(e,t){let n=0;for(let r=t-1;r>=0&&e[r]===`\\`;--r)n+=1;return n%2==1}function jD(e,t){let n=Math.max(0,Math.min(t,e.length)),r=n;for(;r>0&&WD.test(e[r-1]??``);)--r;if(r===0||e[r-1]!==`$`)return null;let i=r-1;if(AD(e,i))return null;let a=n;for(;a<e.length&&WD.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 MD(e){return e.skillMenuOpen||e.skillMenuItems.length>0||e.skillMenuTarget!==null||e.skillCommandRefreshPending}function ND(e){e.skillCommandRefreshGeneration+=1,e.skillCommandRefreshPending=!1,e.skillCommandRefreshTargetStart=null,e.skillMenuOpen=!1,e.skillMenuItems=[],e.skillMenuIndex=0,e.skillMenuTarget=null}function PD(e,t){MD(e)&&(ND(e),t())}function FD(e,t,n){if(!t.refreshCommands||e.skillCommandRefreshPending)return;let r=t.refreshCommands();if(!r||typeof r.then!=`function`)return;let i=e.skillCommandRefreshGeneration+1;e.skillCommandRefreshGeneration=i,e.skillCommandRefreshPending=!0,Promise.resolve(r).catch(()=>void 0).finally(()=>{if(e.skillCommandRefreshGeneration!==i)return;e.skillCommandRefreshPending=!1;let r=t.getDraft();ID(r,t.getTextarea()?.selectionStart??r.length,e,t,n,{skipRefresh:!0})})}function ID(e,t,n,r,i,a={}){if(e.trimStart().startsWith(`/`)){PD(n,i);return}let o=jD(e,t);if(!o){PD(n,i);return}!a.skipRefresh&&n.skillCommandRefreshTargetStart!==o.start&&(n.skillCommandRefreshTargetStart=o.start,FD(n,r,i));let s=Ki(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 LD(e,t){return _D(e,`skill-option-${t.name.replace(/[^a-z0-9_-]+/giu,`-`).replace(/^-+|-+$/gu,``)||`skill`}`)}function RD(e){return e.skillMenuOpen&&(e.skillMenuItems.length>0||e.skillCommandRefreshPending)}function zD(e,t){if(!RD(e)||e.skillCommandRefreshPending)return null;let n=e.skillMenuItems[e.skillMenuIndex];return n?LD(t,n):null}function BD(e){if(e.skillCommandRefreshPending)return``;let t=e.skillMenuItems[e.skillMenuIndex];return t?`${ta(t)} ${Xi(t)}`:``}function VD(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=jD(a,o);if(!s){ND(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),ND(t),r(),queueMicrotask(()=>{let e=n.getTextarea();e&&(e.focus({preventScroll:!0}),e.setSelectionRange(f,f))})}function HD(e,t,n,r){if(!t.skillMenuOpen)return!1;if(e.key===`Escape`)return e.preventDefault(),ND(t),r(),!0;let i=t.skillCommandRefreshPending?[]:t.skillMenuItems;if(i.length===0)return[`ArrowDown`,`ArrowUp`,`Enter`,`Tab`].includes(e.key)?(e.preventDefault(),!0):!1;if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let a=e.key===`ArrowDown`?1:i.length-1;return t.skillMenuIndex=(t.skillMenuIndex+a)%i.length,r(),hD(zD(t,n.paneId)),!0}if(e.key===`Tab`||e.key===`Enter`){e.preventDefault();let a=i[t.skillMenuIndex];return a&&VD(a,t,n,r),!0}return!1}function UD(e,t,n){if(!RD(e))return L;let r=_D(t.paneId,`skill-menu-listbox`);return I`
    <div
      id=${r}
      class="slash-menu skill-menu"
      role="listbox"
      aria-label=${H(`chat.skills.menu`)}
    >
      <div
        class="slash-menu__scroll"
        ${P(gD)}
        @scroll=${e=>gD(e.currentTarget instanceof Element?e.currentTarget:void 0)}
      >
        ${e.skillCommandRefreshPending||e.skillMenuItems.length===0?I`<div class="slash-menu-group">
                <div class="slash-menu-group__label">${H(`chat.skills.loading`)}</div>
              </div>`:I`<div class="slash-menu-group">
                <div class="slash-menu-group__label">${H(`chat.skills.label`)}</div>
                ${e.skillMenuItems.map((r,i)=>I`
                    <div
                      id=${LD(t.paneId,r)}
                      class="slash-menu-item ${i===e.skillMenuIndex?`slash-menu-item--active`:``}"
                      role="option"
                      aria-selected=${i===e.skillMenuIndex}
                      @mousedown=${e=>e.preventDefault()}
                      @click=${()=>VD(r,e,t,n)}
                      @mouseenter=${()=>{e.skillMenuIndex=i,n()}}
                    >
                      <span class="slash-menu-icon">${B.pencilSparkles}</span>
                      <span class="slash-menu-copy">
                        <span class="slash-menu-name"
                          >${OD(ta(r),e.skillMenuTarget?.query??``)}</span
                        >
                        <span class="slash-menu-desc">${Xi(r)}</span>
                      </span>
                    </div>
                  `)}
              </div>`}
      </div>
    </div>
  `}var WD;function GD(){return(GD=e((()=>{F(),an(),z(),V(),aa(),CD(),WD=/[-a-zA-Z0-9_:]/u})))()}function KD(e,t,n){let r=e.getTextarea();r&&(r.value=t,cD(r)),e.commitDraft(t),queueMicrotask(()=>{let t=e.getTextarea();t&&(t.focus({preventScroll:!0}),t.selectionStart=n,t.selectionEnd=n)})}function qD(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 KD(n,`${i.slice(0,r.start)}${e}${o}${a}`,r.start+e.length+o.length),!0}function JD(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 KD(n,o,s),t.slashMenuCompletion={query:e,start:r.start,end:s,inline:!0,argumentStart:s},!0}function YD(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(/\s$/u.test(i)&&/^\s/u.test(a)||i.length===0&&/^\s/u.test(a))&&(a=a.slice(1)),KD(t,`${i}${a}`,i.length),!0}function XD(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 ZD(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=xi(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 QD(){return(QD=e((()=>{aa(),CD()})))()}function $D(e){return e.toLowerCase().replace(/[^a-z0-9_-]+/gu,`-`).replace(/^-+|-+$/gu,``)||`item`}function eO(e,t){return _D(e,`slash-option-command-${$D(t.name)}`)}function tO(e,t,n){return _D(e,`slash-option-arg-${$D(t)}-${$D(n)}`)}function nO(e){return B[e]??B.terminal}function rO(e,t){let n=e.toLowerCase().startsWith(t.toLowerCase())?t.length:0;return n===0?I`${e}`:I`<mark>${e.slice(0,n)}</mark>${e.slice(n)}`}function iO(e){return e?`${`/${e.name}${e.args?` ${e.args}`:``}`} ${Xi(e)}`:``}function aO(){return(aO=e((()=>{F(),z(),aa(),CD()})))()}function oO(){return{slashCommandDispatchConnected:!1,slashMenuOpen:!1,slashMenuItems:[],slashMenuIndex:0,slashMenuMode:`command`,slashMenuCommand:null,slashMenuArgItems:[],slashMenuCompletion:null,slashCommandRefreshPending:!1}}function $(e){e.slashMenuOpen=!1,e.slashMenuMode=`command`,e.slashMenuCommand=null,e.slashMenuArgItems=[],e.slashMenuItems=[],e.slashMenuCompletion=null}function sO(e){return e.slashMenuOpen||e.slashMenuMode!==`command`||e.slashMenuCommand!==null||e.slashMenuArgItems.length>0||e.slashMenuItems.length>0}function cO(e,t){sO(e)&&($(e),t())}function lO(e,t,n){if(!t.refreshCommands||e.slashCommandRefreshPending)return;let r=t.refreshCommands();!r||typeof r.then!=`function`||(e.slashCommandRefreshPending=!0,Promise.resolve(r).catch(()=>void 0).finally(()=>{e.slashCommandRefreshPending=!1;let r=t.getDraft();if(e.slashMenuMode===`freeform-args`&&e.slashMenuCompletion?.inline){uO(r,e,t,n,{skipSlashIntent:!0});return}if(e.slashMenuMode===`args`&&e.slashMenuCompletion?.inline)return;let i=t.getTextarea()?.selectionStart??r.length;if(!Mi(r,i)){cO(e,n);return}uO(r,e,t,n,{skipSlashIntent:!0})}))}function uO(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(XD(e,i,a,t.slashMenuCommand.name)){t.slashMenuCompletion.end=i,r();return}$(t)}let a=e.match(/^\/(\S+)\s(.*)$/);if(a){i.skipSlashIntent||lO(t,n,r);let e=a[1]?.toLowerCase(),o=a[2]?.toLowerCase();if(e===void 0||o===void 0){cO(t,r);return}let s=di.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}}cO(t,r);return}let o=n.getTextarea()?.selectionStart??e.length,s=Mi(e,o);if(!s){cO(t,r);return}i.skipSlashIntent||lO(t,n,r);let c=xi(s.query,{showAll:!0,inlineOnly:s.inline,allowImmediateInlineCommands:n.canRun(!0)&&!s.skillOnly}).filter(e=>n.commandFilter?.(e)??!0);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 dO(e,t,n,r){if(!t.slashMenuCompletion?.inline||e.source===`skill`||!e.args||!n.canRun(!0)||!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):JD(e.name,t,n)?(t.slashMenuMode=`freeform-args`,t.slashMenuArgItems=[],t.slashMenuOpen=!1,r(),!0):!1}function fO(e,t,n,r){if(n.activateComposerMode?.(e)||e.source!==`skill`&&!n.canRun(!0)&&t.slashMenuCompletion?.inline)return;let i=e.source===`skill`?`$${e.name}`:`/${e.name}`;if(dO(e,t,n,r))return;if(t.slashMenuCompletion?.inline&&or(e)&&n.canRun(!0)&&n.runInlineCommand&&YD(t,n)){$(t),r(),n.runInlineCommand(`/${e.name}`);return}if(qD(i,t,n)){$(t),r();return}let a=n.resolveArgOptions(e);if(a.length>0){n.commitDraft(`/${e.name} `),t.slashMenuMode=`args`,t.slashMenuCommand=e,t.slashMenuArgItems=a,t.slashMenuOpen=!0,t.slashMenuIndex=0,t.slashMenuItems=[],r();return}e.executeLocal&&!e.args?($(t),n.commitDraft(`/${e.name}`),n.runCommand()):(n.commitDraft(`/${e.name} `),cO(t,r))}function pO(e,t,n,r){let i=e.source===`skill`?`$${e.name}`:`/${e.name}`;if(dO(e,t,n,r))return;if(qD(i,t,n)){$(t),r();return}let a=n.resolveArgOptions(e);if(a.length>0){n.commitDraft(`/${e.name} `),t.slashMenuMode=`args`,t.slashMenuCommand=e,t.slashMenuArgItems=a,t.slashMenuOpen=!0,t.slashMenuIndex=0,t.slashMenuItems=[],r();return}n.commitDraft(e.args?`/${e.name} `:`/${e.name}`),$(t),r()}function mO(e,t,n,r,i){let{slashMenuCommand:a,slashMenuCompletion:o}=t;if(a?.source!==`skill`&&!n.canRun(o?.inline===!0))return;let s=a?.name??``;if(i&&t.slashMenuCompletion?.inline&&a&&or(a)&&n.canRun(!0)&&n.runInlineCommand&&YD(t,n)){$(t),r(),n.runInlineCommand(`/${s} ${e}`);return}if(t.slashMenuCompletion?.inline&&(!i||!a||!or(a))&&qD(`/${s} ${e}`,t,n)){$(t),r();return}$(t),n.commitDraft(`/${s} ${e}`),i&&n.runCommand(),r()}function hO(e,t,n){let r=e.slashMenuCommand,i=e.slashMenuCompletion;if(e.slashMenuMode!==`freeform-args`||!i?.inline||!r||!or(r)||!t.canRun(!0)||!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 YD(e,t)?($(e),n(),t.runInlineCommand(`/${r.name}${s?` ${s}`:``}`),!0):!1}function gO(e,t){if(!t.canRun(!0)||!t.runInlineCommand)return!1;let n=t.getTextarea()?.value??t.getDraft(),r=ZD(n,t.getTextarea()?.selectionStart??n.length);return r?(e.slashMenuMode=`freeform-args`,e.slashMenuCommand=r.command,e.slashMenuCompletion=r.completion,!0):!1}function _O(e,t,n,r,i){if(e.key===`Escape`)return t.slashMenuMode!==`freeform-args`||!t.slashMenuCompletion?.inline?!1:(e.preventDefault(),$(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)&&!gO(t,n)||!t.slashMenuCommand||!or(t.slashMenuCommand)?!1:(e.preventDefault(),hO(t,n,r))}function vO(e,t,n,r){if(!t.slashMenuOpen)return!1;if(e.key===`Escape`)return e.preventDefault(),$(t),r(),!0;let i=t.slashMenuMode===`args`?t.slashMenuArgItems:t.slashMenuItems;if(i.length===0)return!1;if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let a=e.key===`ArrowDown`?1:i.length-1;return t.slashMenuIndex=(t.slashMenuIndex+a)%i.length,r(),hD(xO(t,n.paneId)),!0}if(e.key!==`Tab`&&e.key!==`Enter`)return!1;if(e.preventDefault(),t.slashMenuMode===`args`){let i=t.slashMenuArgItems[t.slashMenuIndex];i!==void 0&&mO(i,t,n,r,e.key===`Enter`)}else{let i=t.slashMenuItems[t.slashMenuIndex];i&&(e.key===`Enter`?fO(i,t,n,r):pO(i,t,n,r))}return!0}function yO(e){gD(e.currentTarget instanceof Element?e.currentTarget:void 0)}function bO(e){return e.slashMenuOpen?e.slashMenuMode===`args`?!!(e.slashMenuCommand&&e.slashMenuArgItems.length>0):e.slashMenuItems.length>0:!1}function xO(e,t){if(!bO(e))return null;if(e.slashMenuMode===`args`){let n=e.slashMenuCommand?.name,r=e.slashMenuArgItems[e.slashMenuIndex];return n&&r?tO(t,n,r):null}let n=e.slashMenuItems[e.slashMenuIndex];return n?eO(t,n):null}function SO(e){if(!bO(e))return``;if(e.slashMenuMode===`args`){let t=e.slashMenuCommand?.name,n=e.slashMenuArgItems[e.slashMenuIndex];return t&&n?`/${t} ${n}`:``}return iO(e.slashMenuItems[e.slashMenuIndex])}function CO(e){let{cmd:t,index:n,query:r,requestUpdate:i,host:a,state:o}=e;return I`
    <div
      id=${eO(a.paneId,t)}
      class="slash-menu-item ${n===o.slashMenuIndex?`slash-menu-item--active`:``}"
      role="option"
      aria-selected=${n===o.slashMenuIndex}
      @mousedown=${e=>e.preventDefault()}
      @click=${()=>fO(t,o,a,i)}
      @mouseenter=${()=>{o.slashMenuIndex=n,i()}}
    >
      <span class="slash-menu-icon"
        >${t.source===`skill`?B.pencilSparkles:t.icon?nO(t.icon):B.terminal}</span
      >
      <span class="slash-menu-copy">
        <span class="slash-menu-name"
          >/${rO(t.name,r)}${t.args?I`<span class="slash-menu-args"> ${t.args}</span>`:L}</span
        >
        <span class="slash-menu-desc">${Xi(t)}</span>
      </span>
    </div>
  `}function wO(e,t,n,r){let i=_D(t.paneId,`slash-menu-listbox`);if(!e.slashMenuOpen)return L;if(e.slashMenuMode===`args`&&e.slashMenuCommand&&e.slashMenuArgItems.length>0)return I`
      <div
        id=${i}
        class="slash-menu"
        role="listbox"
        aria-label=${H(`chat.commands.arguments`)}
      >
        <div
          class="slash-menu__scroll"
          ${P(gD)}
          @scroll=${yO}
        >
          <div class="slash-menu-group">
            <div class="slash-menu-group__label">
              /${e.slashMenuCommand.name} ${Xi(e.slashMenuCommand)}
            </div>
            ${e.slashMenuArgItems.map((n,i)=>I`
                <div
                  id=${tO(t.paneId,e.slashMenuCommand?.name??``,n)}
                  class="slash-menu-item ${i===e.slashMenuIndex?`slash-menu-item--active`:``}"
                  role="option"
                  aria-selected=${i===e.slashMenuIndex}
                  @click=${()=>mO(n,e,t,r,!0)}
                  @mouseenter=${()=>{e.slashMenuIndex=i,r()}}
                >
                  <span class="slash-menu-icon"
                    >${e.slashMenuCommand?.icon?nO(e.slashMenuCommand.icon):B.terminal}</span
                  >
                  <span class="slash-menu-copy">
                    <span class="slash-menu-name">${n}</span>
                    <span class="slash-menu-desc">/${e.slashMenuCommand?.name} ${n}</span>
                  </span>
                </div>
              `)}
          </div>
        </div>
      </div>
    `;if(e.slashMenuItems.length===0)return L;let a=n.slice(1),o=e.slashMenuItems.filter(e=>e.source!==`skill`),s=e.slashMenuItems.filter(e=>e.source===`skill`),c=[];for(let[e,t]of o.entries()){let r=t.category??`session`,i=n===`/`?c.find(([e])=>e===r):c.at(-1);i?.[0]===r?i[1].push({command:t,index:e}):c.push([r,[{command:t,index:e}]])}return I`
    <div id=${i} class="slash-menu" role="listbox" aria-label=${H(`chat.commands.menu`)}>
      <div
        class="slash-menu__scroll"
        ${P(gD)}
        @scroll=${yO}
      >
        ${c.map(([n,i])=>I`<div class="slash-menu-group">
            <div class="slash-menu-group__label">${zi(n)}</div>
            ${i.map(({command:n,index:i})=>CO({cmd:n,index:i,query:a,requestUpdate:r,host:t,state:e}))}
          </div>`)}
        ${s.length>0?I`<div class="slash-menu-group slash-menu-group--skills">
                <div class="slash-menu-group__label">${H(`chat.skills.label`)}</div>
                ${s.map((n,i)=>CO({cmd:n,index:o.length+i,query:a,requestUpdate:r,host:t,state:e}))}
              </div>`:L}
      </div>
    </div>
  `}function TO(){return(TO=e((()=>{F(),an(),z(),V(),aa(),CD(),QD(),aO()})))()}function EO(e){return e.event!==`talk.event`||!e.payload||typeof e.payload!=`object`?null:e.payload}function DO(e){return e instanceof DOMException?DE(e):O(e)}function OO(e){return e instanceof DOMException&&e.name===`AbortError`}function kO(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 AO,jO,MO,NO,PO,FO,IO,LO;function RO(){return(RO=e((()=>{_n(),V(),A(),nD(),BE(),HE(),AO=150,jO=350,MO=1e4,NO=`g711_ulaw`,PO=8e3,FO=PO*10,IO=class{constructor(e,t){this.client=e,this.callbacks=t,this.input=new zE(e=>this.reportFailure(e)),this.context=null,this.inputPump=new XE,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=Sn().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:PO})}catch{throw Error(H(`chat.composer.dictationBrowserAudioUnsupported`))}if(this.context.sampleRate!==PO)throw Error(H(`chat.composer.dictationBrowserAudioUnsupported`));this.inputMeter=new QE(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!==NO||n.audio.inputSampleRateHz!==PO)throw await this.closeRemote(),Error(H(`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.transcriptIncludingPartial()}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.transcriptIncludingPartial())}async cancel(){this.discarded=!0,await this.stopAndClose(!1)}async stopAndClose(e){await this.stopCapture(),await this.startPromise?.catch(t=>{e&&!OO(t)&&this.reportFailure(DO(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=FO-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=UE(KE(e));this.appendChain=this.appendChain.then(async()=>{await this.client.request(`talk.session.appendAudio`,{sessionId:t,audioBase64:n})}).catch(e=>{this.reportFailure(DO(e))})}handleEvent(e){let t=EO(e);if(!(!t||t.transcriptionSessionId!==this.transcriptionSessionId||this.stopped)){if(t.type===`transcript`&&typeof t.text==`string`){let e=t.text.trim();if(t.final!==!0){this.currentPartial=e,this.callbacks.onTranscriptChange();return}e&&(this.finalTranscripts.push(e),this.currentPartial=``),this.callbacks.onTranscriptChange();return}if(t.type===`partial`&&typeof t.text==`string`){this.currentPartial=t.text.trim(),this.callbacks.onTranscriptChange();return}if(t.type===`error`){this.reportFailure(pe(typeof t.message==`string`?t.message:void 0,H(`chat.composer.dictationFailed`)));return}t.type===`close`&&t.reason===`error`&&this.reportFailure(H(`chat.composer.dictationDisconnected`))}}reportFailure(e){this.failed||(this.failed=!0,this.callbacks.onError(e,this.hasTranscript()))}hasTranscript(){return this.finalTranscripts.length>0||!!this.currentPartial}transcriptIncludingPartial(){return[...this.finalTranscripts,this.currentPartial].filter(Boolean).join(` `).trim()}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()),MO);n=this.client.addEventListener(e=>{let n=EO(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())})}},LO=class{constructor(e){this.inputLevel=new VE,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(H(`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(),jO))},AO),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 IO(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.isStopping())return;this.options.onError(DO(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}isStopping(){return this.phase===`stopping`}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 zO;function BO(){return(BO=e((()=>{BE(),zO=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??=EE(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(),kE(()=>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 VO(e){return e instanceof HTMLDetailsElement?e.open:`open`in e&&e.open===!0||e.hasAttribute(`open`)}function HO(e=document){return Array.from(e.querySelectorAll(`.agent-chat__input details, .agent-chat__input wa-dropdown`)).filter(VO)}function UO(e){tk.delete(e),e.removeAttribute(rk),e instanceof HTMLDetailsElement?e.open=!1:(`open`in e&&(e.open=!1),e.removeAttribute(`open`))}function WO(e){return e instanceof HTMLDetailsElement?e.querySelector(`summary`):e.querySelector(`[slot=trigger]`)}function GO(e){let t=e.composedPath();for(let e of HO())t.includes(e)||UO(e);for(let e of document.querySelectorAll(`.agent-chat__input > :is(.slash-menu, .skill-menu)`))t.includes(e)||e.closest(`.agent-chat__input`)?.dispatchEvent(new CustomEvent(ik))}function KO(e){if(e.defaultPrevented||An(e,document)||e.key!==`Escape`||document.querySelector(`.shell-nav[aria-modal='true']`))return;let t=HO(),n=document.querySelector(`.agent-chat__input > :is(.slash-menu, .skill-menu)`)?.closest(`.agent-chat__input`);if(t.length===0&&!n)return;e.preventDefault(),e.stopPropagation();let r=t.filter(e=>!t.some(t=>t!==e&&e.contains(t))),i=r.at(-1);r.forEach(UO),n?.dispatchEvent(new CustomEvent(ik)),n?.querySelector(`.agent-chat__composer-combobox > textarea`)?.focus({preventScroll:!0}),i&&WO(i)?.focus({preventScroll:!0})}function qO(){ak||typeof document>`u`||(ak=!0,document.addEventListener(`pointerdown`,GO,!0),window.addEventListener(`keydown`,KO,!0),document.addEventListener(`keydown`,e=>{let t=e.composedPath().find(e=>e instanceof HTMLElement&&e.localName===`wa-dropdown`);t&&(tk.delete(t),t.removeAttribute(rk))},!0))}function JO(e){let t=e.closest(`.agent-chat__input`);if(t)for(let n of HO(t))n!==e&&!n.contains(e)&&UO(n)}function YO(e){let t=e.currentTarget;t instanceof HTMLDetailsElement&&t.open&&(qO(),JO(t))}function XO(e){let t=e.target;t instanceof HTMLElement&&t.localName===`wa-dropdown`&&(tk.has(t)||t.removeAttribute(rk),qO(),JO(t))}function ZO(e){let t=e.composedPath().find(e=>e instanceof HTMLElement&&e.localName===`wa-dropdown`);t&&(tk.add(t),t.setAttribute(rk,``))}function QO(e){let t=e.target instanceof HTMLElement&&e.target.localName===`wa-dropdown`?e.target:e.currentTarget;if(t instanceof HTMLElement&&t.localName===`wa-dropdown`&&tk.delete(t)){let e=WO(t);if(!e)return;e.setAttribute(nk,``);let n=()=>e.removeAttribute(nk);e.addEventListener(`blur`,n,{once:!0}),e.addEventListener(`keydown`,n,{once:!0}),e.focus({preventScroll:!0})}}function $O(e){let t=typeof window.matchMedia==`function`&&window.matchMedia(ek).matches?e.closest(`.agent-chat__input`)??void 0:void 0;ya(e,`top`,{alignment:`end`,anchor:t})}var ek,tk,nk,rk,ik,ak;function ok(){return(ok=e((()=>{Jr(),Mn(),ek=`(max-width: 640px), (max-width: 932px) and (max-height: 500px) and (orientation: landscape)`,tk=new WeakSet,nk=`data-chat-pointer-restored-focus`,rk=`data-chat-pointer-opened-picker`,ik=`openclaw-composer-dismiss-invocations`,ak=!1})))()}function sk(e){return e===fk.length?fk:Array.from({length:e},(t,n)=>.35+.65*Math.sin(Math.PI*((n+.5)/e)))}function ck(e){return e===`connecting`||e===`thinking`?e:`listening`}function lk(e,t){return t?.trim()||H(e===`thinking`?`chat.voice.asking`:e===`connecting`?`chat.voice.connecting`:`chat.voice.listening`)}function uk(e){return I`
    <openclaw-microphone-activity
      class="agent-chat__voice-activity"
      data-status=${ck(e.status)}
      data-source="microphone"
      bars=${pn(e.bars)}
      mode=${pn(e.mode)}
      aria-hidden="true"
      .signal=${e.inputLevel??mk}
    >
    </openclaw-microphone-activity>
  `}function dk(e){return e.status===`connecting`?I`<div
      class="callout agent-chat__talk-status"
      role="status"
      aria-live="polite"
      aria-atomic="true"
    >
      ${lk(e.status,e.detail)}
    </div>`:e.status!==`error`||!e.detail?L:I`
    <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"
          >${B.alertTriangle}</span
        >
        <div class="callout__content">
          <div class="agent-chat__talk-status-text">${e.detail}</div>
          ${e.onUseSystemDefaultMicrophone?I`<button
                  class="btn btn--sm"
                  type="button"
                  @click=${e.onUseSystemDefaultMicrophone}
                >
                  ${H(`chat.composer.useSystemDefaultMicrophoneForCall`)}
                </button>`:L}
        </div>
        ${e.onDismissError?I`
                <button
                  class="callout__dismiss"
                  type="button"
                  @click=${e.onDismissError}
                  aria-label=${H(`chat.composer.dismissVoiceInputError`)}
                >
                  ${B.x}
                </button>
              `:L}
      </div>
    </div>
  `}var fk,pk,mk,hk;function gk(){return(gk=e((()=>{F(),Xt(),z(),Mn(),V(),HE(),fk=[.38,.62,.84,1,.84,.62,.38],pk=`openclaw-microphone-activity`,mk=new VE,hk=class extends HTMLElement{constructor(...e){super(...e),this.unsubscribe=null,this.gains=fk,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=sk(Number.isInteger(e)&&e>0?e:fk.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(pk)||customElements.define(pk,hk)})))()}function _k(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 vk(e){let t=!e.loading&&e.devices.length===0?e.issue:null,n=t?[]:[{deviceId:``,label:H(`chat.composer.systemDefaultMicrophone`)},...e.loading?[]:e.devices],r=t!==null&&t!==`none-found`&&t!==`list-unsupported`,i=H(`chat.composer.microphoneInput`),a=[{key:`realtime`,label:H(`chat.composer.realtimeTalkCapability`),status:e.realtimeStatus,unavailableReason:H(`chat.composer.realtimeTalkProviderUnavailable`),onOpenSettings:e.onOpenTalkSettings},{key:`dictation`,label:H(`chat.composer.dictationCapability`),status:e.dictationStatus,unavailableReason:H(`chat.composer.dictationProviderUnavailableShort`),onOpenSettings:e.onOpenDictationSettings}].filter(t=>t.status!==`ready`&&(t.key!==`realtime`||e.showRealtimeCapability!==!1));return I`
    <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=>{e.onSelect(t.detail.item.value??``),_k(t.currentTarget,t.detail.item)}}
    >
      <button
        slot="trigger"
        type="button"
        class="chat-talk-input-picker__trigger"
        aria-label=${i}
        aria-haspopup="menu"
        aria-expanded=${String(e.open)}
      >
        ${B.chevronDown}
      </button>
      <div class="chat-talk-input-picker__heading">${i}</div>
      ${t?I`<div
              class="chat-talk-input-picker__empty${r?` chat-talk-input-picker__empty--fault`:``}"
              role="status"
            >
              ${TE(t,`audioinput`)}
            </div>`:I`
              ${n.map(t=>{let n=t.deviceId===e.selectedDeviceId;return I`
                  <wa-dropdown-item
                    class="chat-talk-input-picker__item"
                    value=${t.deviceId}
                    role="menuitemradio"
                    aria-checked=${String(n)}
                    ${P(e=>Fn(e,n))}
                  >
                    <span slot="icon" class="chat-talk-input-picker__option-icon" aria-hidden="true"
                      >${B.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?B.check:L}</span
                    >
                  </wa-dropdown-item>
                `})}
              ${e.loading?I`<div class="chat-talk-input-picker__note" role="status">
                      ${H(`common.loading`)}
                    </div>`:L}
              ${e.issue?I`<div class="chat-talk-input-picker__warning" role="alert">
                      ${TE(e.issue,`audioinput`)}
                    </div>`:L}
              ${e.voiceActive?I`<div class="chat-talk-input-picker__hint">
                      ${H(`chat.composer.microphoneAppliesNextSession`)}
                    </div>`:L}
            `}
      ${a.length>0?I`
              <div class="chat-talk-input-picker__capabilities">
                ${a.map(e=>I`
                    <div
                      class="chat-talk-input-picker__capability"
                      data-chat-talk-capability=${e.key}
                      data-status=${e.status}
                      role="status"
                    >
                      <span class="chat-talk-input-picker__capability-copy">
                        <strong>
                          ${e.status===`unavailable`?I`<span
                                  class="chat-talk-input-picker__capability-alert"
                                  aria-hidden="true"
                                  >${B.alertTriangle}</span
                                >`:L}
                          <span>${e.label}</span>
                        </strong>
                        <span>
                          ${e.status===`checking`?H(`chat.composer.talkCapabilityChecking`):e.status===`unknown`?H(`chat.composer.talkCapabilityUnknown`):e.unavailableReason}
                        </span>
                      </span>
                      ${e.onOpenSettings?I`
                              <button
                                type="button"
                                class="chat-talk-input-picker__settings"
                                @click=${t=>{t.stopPropagation(),e.onOpenSettings?.()}}
                              >
                                ${B.settings}<span
                                  >${H(`chat.composer.configureCapability`)}</span
                                >
                              </button>
                            `:L}
                    </div>
                  `)}
              </div>
            `:L}
      ${e.onHoldToDictateChange?I`
              <div class="chat-talk-input-picker__preference">
                <span>${H(`chat.composer.holdToDictate`)}</span>
                <button
                  class="chat-controls__speed-toggle ${e.holdToDictate===!1?``:`chat-controls__speed-toggle--active`}"
                  type="button"
                  role="switch"
                  aria-checked=${e.holdToDictate===!1?`false`:`true`}
                  aria-label=${H(`chat.composer.holdToDictate`)}
                  @click=${t=>{t.stopPropagation(),e.onHoldToDictateChange?.(e.holdToDictate===!1)}}
                >
                  <span class="chat-controls__speed-toggle-thumb"></span>
                </button>
              </div>
            `:L}
    </wa-dropdown>
  `}function yk(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?H(`chat.composer.dictationStopAndKeep`):e.idleLabel??H(`chat.composer.startVoiceInput`),s=e.dictation&&!a&&!(t||r)?H(`chat.composer.voiceGestureHint`):o;return I`
    <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?.finishActive();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)}
          aria-disabled=${String(r)}
          aria-label=${o}
        >
          ${t?B.stop:I`
                  ${B.mic}
                  <span class="agent-chat__control-label">${o}</span>
                `}
        </button>
      </openclaw-tooltip>
      ${e.microphonePicker}
    </span>
  `}function bk(e,t,n){return e.active?I`
    ${e.connecting?L:I`<span class="sr-only" role="status" aria-live="polite" aria-atomic="true"
            >${e.finalizing?H(`chat.composer.dictationFinalizing`):H(`chat.composer.dictationListening`)}</span
          >`}
    <openclaw-tooltip .content=${H(`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=${H(`chat.runControls.send`)}
      >
        ${B.arrowUp}
      </button>
    </openclaw-tooltip>
  `:L}function xk(e){if(!e?.active)return L;if(e.connecting)return dk({status:`connecting`,detail:H(`chat.composer.microphoneAccessPending`)});let t=!e.finalizing;return I`
    <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?H(`chat.composer.dictationFinalizing`):H(`chat.composer.dictationListening`)}
        </span>
      </div>
    </div>
  `}function Sk(e){let t=!!(e.draft.trim()||e.hasAttachments),n=e.followUpMode===`steer`,r=e.followUpMode===`interrupt`,i=e.submissionLabel??(e.suggestionComposer?H(`chat.sessionSuggestions.suggest`):!e.canAbort||e.followUpMode===void 0?H(`chat.runControls.send`):H(n?`chat.queue.steer`:r?`chat.runControls.send`:`chat.runControls.queue`)),a=e.submissionLabel??(e.suggestionComposer?H(`chat.sessionSuggestions.suggestMessage`):!e.canAbort||e.followUpMode===void 0?H(`chat.runControls.sendMessage`):H(n?`chat.followUpModeSteer`:r?`chat.runControls.sendMessage`:`chat.runControls.queueMessage`)),o=H(e.alternateFollowUpMode===`queue`?`chat.runControls.queue`:`chat.queue.steer`),s=e.alternateFollowUpMode&&e.canSend&&t?`${i} ⏎ · ${o} ${H(`chat.sendShortcutModifierEnter`)}`:i,c=t=>e.onSend(t),l=e.canAbort?I`
        <openclaw-tooltip .content=${H(`chat.runControls.stop`)}>
          <button
            class="chat-send-btn chat-send-btn--stop"
            @pointerdown=${e.onPrimaryActionPointerDown}
            @click=${e.onAbort}
            aria-label=${H(`chat.runControls.stopGenerating`)}
          >
            ${B.stop}
            <span class="agent-chat__control-label">${H(`chat.runControls.stop`)}</span>
          </button>
        </openclaw-tooltip>
      `:L,u=e.voiceStatus===`error`,d=yk(e),f=e.dictation||e.onToggleVoice?d:L,p=e.dictation?I`
        <span class="chat-mobile-dictation-action">
          ${yk({connected:e.connected,sending:e.sending,isBusy:e.isBusy,dictation:e.dictation,idleLabel:H(`chat.composer.dictationCapability`)})}
        </span>
      `:L,m=!t&&!e.dictation?.active&&e.onToggleVoice?I`
          <openclaw-tooltip
            class="chat-mobile-talk-action"
            .content=${H(`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}
              aria-label=${H(`chat.composer.realtimeTalkCapability`)}
            >
              ${B.audioLines}
              <span class="agent-chat__control-label"
                >${H(`chat.composer.realtimeTalkCapability`)}</span
              >
            </button>
          </openclaw-tooltip>
        `:L,h=I`
    <openclaw-tooltip
      .content=${e.sending?H(`chat.composer.sendingMessage`):t?s:H(`chat.composer.emptyHint`)}
    >
      <button
        class="chat-send-btn chat-send-btn--send${e.sending?` chat-send-btn--sending`:``}"
        @pointerdown=${e.onPrimaryActionPointerDown}
        @click=${c}
        ?disabled=${!e.canSend||e.sending||!t}
        aria-label=${e.sending?H(`chat.composer.sendingMessage`):t?a:H(`chat.composer.emptyHint`)}
        aria-busy=${e.sending?`true`:`false`}
      >
        ${e.sending?I`<span class="btn__spinner" aria-hidden="true"></span>`:B.arrowUp}
        <span class="agent-chat__control-label">${i}</span>
      </button>
    </openclaw-tooltip>
  `,g=e.dictation?bk(e.dictation,()=>e.onSend(),e.onPrimaryActionPointerDown):L,_=e.dictation?.active?g:e.canAbort?t?h:l:h,v=e.dictation?.active?g:t?h:e.canAbort?l:e.onToggleVoice?m:h,y=v===_?I`<span class="chat-mobile-primary-action chat-desktop-primary-action"
          >${_}</span
        >`:I`
          <span class="chat-mobile-primary-action">${v}</span>
          <span class="chat-desktop-primary-action">${_}</span>
        `;return I`
    ${e.voiceActive&&e.onToggleVoice?I`
            <span class="chat-talk-control chat-talk-control--active">
              <openclaw-tooltip .content=${H(`chat.composer.stopVoiceInput`)}>
                <button
                  class="chat-send-btn chat-send-btn--voice-live${u?` chat-send-btn--voice-error`:``}"
                  @click=${e.onToggleVoice}
                  aria-label=${H(`chat.composer.stopVoiceInput`)}
                >
                  ${u?L:uk({status:e.voiceStatus,inputLevel:e.voiceInputLevel})}
                  <span class="chat-send-btn__voice-stop-glyph">${B.stop}</span>
                </button>
              </openclaw-tooltip>
              ${e.microphonePicker}
            </span>
            ${u||e.voiceStatus===`connecting`?L:I`
                    <span
                      class="sr-only agent-chat__voice-status"
                      role="status"
                      aria-live="polite"
                      aria-atomic="true"
                      >${lk(e.voiceStatus,e.voiceDetail)}</span
                    >
                  `}
            ${e.voiceVideoCapable&&e.onToggleCamera?I`
                    <openclaw-tooltip
                      .content=${e.voiceVideoEnabled?H(`chat.composer.turnCameraOff`):H(`chat.composer.turnCameraOn`)}
                    >
                      <button
                        class="chat-send-btn chat-send-btn--voice"
                        @click=${e.onToggleCamera}
                        ?disabled=${e.voiceVideoPending||e.voiceStatus===`connecting`||e.voiceStatus===`error`}
                        aria-label=${e.voiceVideoEnabled?H(`chat.composer.turnCameraOff`):H(`chat.composer.turnCameraOn`)}
                        aria-pressed=${e.voiceVideoEnabled?`true`:`false`}
                      >
                        ${e.voiceVideoEnabled?B.cameraOff:B.camera}
                        <span class="agent-chat__control-label"
                          >${e.voiceVideoEnabled?H(`chat.composer.turnCameraOff`):H(`chat.composer.turnCameraOn`)}</span
                        >
                      </button>
                    </openclaw-tooltip>
                  `:L}
            <span class="chat-mobile-primary-action chat-desktop-primary-action"
              >${l}</span
            >
          `:I` ${f} ${p} ${y} `}
  `}function Ck(){return(Ck=e((()=>{F(),an(),z(),Rn(),V(),BE(),gk()})))()}function wk(){return I`<div class="agent-chat__capability-menu-divider" role="separator"></div>`}function Tk(){return I`
    <wa-dropdown-item class="agent-chat__capability-menu-item" value="back">
      <span slot="icon" aria-hidden="true">${B.arrowLeft}</span>
      <span>${H(`chat.composer.menu.back`)}</span>
    </wa-dropdown-item>
    ${wk()}
  `}function Ek(e){return I`
    <wa-dropdown-item
      class="agent-chat__capability-menu-item agent-chat__capability-menu-toggle"
      value=${e.value}
      type=${e.checkbox?`checkbox`:`normal`}
      .checked=${e.checked}
      ?disabled=${e.disabled}
      title=${e.title??``}
    >
      ${e.icon?I`<span slot="icon" aria-hidden="true">${e.icon}</span>`:L}
      <span class="agent-chat__capability-menu-label">
        <span>${e.label}</span>
        ${e.note??L}
      </span>
      ${e.checkbox?L:I`<wa-switch
              slot="details"
              class="agent-chat__capability-menu-switch"
              size="s"
              tabindex="-1"
              .checked=${e.checked}
              ?disabled=${e.disabled}
              aria-label=${e.label}
            ></wa-switch>`}
    </wa-dropdown-item>
  `}function Dk(){return(Dk=e((()=>{F(),z(),V()})))()}function Ok(e){return I`
    ${e.loading||e.busy?I`<div class="agent-chat__capability-menu-state" role="status">
            ${H(`common.loading`)}
          </div>`:L}
    ${e.error?I`<div class="agent-chat__capability-menu-state" role="alert">${e.error}</div>
            <wa-dropdown-item value="library-reload">${H(`common.retry`)}</wa-dropdown-item>`:L}
    ${e.notice?I`<div class="agent-chat__capability-menu-state" role="status">${e.notice}</div>`:L}
  `}function kk(e,t){if(!e)return L;let n=e.busy||e.loading,r=e.result?.session;if(t){let i=r?.selections.find(e=>e.skillId===t);return I`
      ${Tk()} ${Ok(e)}
      ${i?I`
              <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"
                    >${H(`skillLibrary.session.pin`,{revision:i.revision.slice(0,8)})}</span
                  >
                </span>
              </div>
              <wa-dropdown-item
                class="agent-chat__capability-menu-item"
                value=${`library-read:${i.skillId}`}
                ?disabled=${n}
                >${H(`skillLibrary.session.read`)}</wa-dropdown-item
              >
              ${e.canWrite?I`
                      <wa-dropdown-item
                        class="agent-chat__capability-menu-item"
                        value=${`library-refresh:${i.skillId}`}
                        ?disabled=${n}
                        >${H(`skillLibrary.session.refresh`)}</wa-dropdown-item
                      >
                      <wa-dropdown-item
                        class="agent-chat__capability-menu-item"
                        value=${`library-detach:${i.skillId}`}
                        ?disabled=${n}
                        >${H(`skillLibrary.session.detach`)}</wa-dropdown-item
                      >
                    `:L}
            `:e.result&&!n?I`<div class="agent-chat__capability-menu-state">${H(`skillsPage.notFound`)}</div>`:L}
    `}return e.result?.defaultTarget===`workspace`&&!r?.selections.length&&!r?.attachable.length?L:I`
    <div class="agent-chat__capability-menu-state">${H(`skillLibrary.session.selected`)}</div>
    ${Ok(e)}
    ${r?.selections.map(e=>I`<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"
            >${H(`skillLibrary.session.pin`,{revision:e.revision.slice(0,8)})}</span
          ></span
        >
        <span slot="details" class="agent-chat__capability-menu-chevron" aria-hidden="true"
          >${B.chevronRight}</span
        >
      </wa-dropdown-item>`)}
    ${r&&r.selections.length===0?I`<div class="agent-chat__capability-menu-state">
            ${H(`skillLibrary.session.empty`)}
          </div>`:L}
    ${r?.attachable.length?I`${wk()}
            <div class="agent-chat__capability-menu-state">
              ${H(`skillLibrary.session.attachable`)}
            </div>
            ${r.attachable.map(t=>I`<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}`}
                    >${H(`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>`)}`:L}
    ${e.result?I`<div class="agent-chat__capability-menu-state">
            ${H(`skillLibrary.defaultLimit`,{count:String(e.result.defaultSelectionLimit)})}
          </div>`:L}
    ${e.result?.defaultSelectionNotice?I`<div class="agent-chat__capability-menu-state" role="status">
            ${e.result.defaultSelectionNotice}
          </div>`:L}
    ${wk()}
    <div class="agent-chat__capability-menu-state">${H(`skillLibrary.inventory`)}</div>
  `}function Ak(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 jk(){return(jk=e((()=>{F(),z(),V(),da(),Dk(),Ai()})))()}function Mk(e,t){return I`<a
    class="agent-chat__capability-menu-link"
    href=${e}
    tabindex="-1"
    @click=${e=>e.preventDefault()}
    >${t}</a
  >`}function Nk(e){let t=oT(e.toolOverrides),n=e.mcpServers.filter(t=>nT(t.enabled,$w(e.toolOverrides?.mcpServers,t.name))).length,r=Object.keys(e.toolOverrides?.skills??{}).length>0,i=e.skills?.filter(e=>e.enabled).length??0,a=nT(e.webSearchBaseEnabled,e.toolOverrides?.webSearch),o=nw(B.paperclip),s=e.rootToggles??[];return!e.showCapabilities&&s.length===0?o:I`
    ${o} ${wk()}
    ${s.map(e=>Ek({value:e.value,label:e.label,icon:e.icon,checked:e.checked,disabled:e.disabled,title:e.title}))}
    ${e.showCapabilities?I`<wa-dropdown-item class="agent-chat__capability-menu-item" value="open-skills">
              <span slot="icon" aria-hidden="true">${B.book}</span>
              <span>${H(`chat.composer.menu.skills`)}</span>
              <span slot="details" class="agent-chat__capability-menu-details">
                ${r?I`<span class="agent-chat__capability-menu-badge"
                        >${H(`chat.composer.menu.enabledCount`,{count:String(i)})}</span
                      >`:L}
                <span class="agent-chat__capability-menu-chevron" aria-hidden="true"
                  >${B.chevronRight}</span
                >
              </span>
            </wa-dropdown-item>
            <wa-dropdown-item class="agent-chat__capability-menu-item" value="open-connectors">
              <span slot="icon" aria-hidden="true">${B.puzzle}</span>
              <span>${H(`chat.composer.menu.connectors`)}</span>
              <span slot="details" class="agent-chat__capability-menu-details">
                <span class="agent-chat__capability-menu-badge">${n}</span>
                <span class="agent-chat__capability-menu-chevron" aria-hidden="true"
                  >${B.chevronRight}</span
                >
              </span>
            </wa-dropdown-item>
            ${Ek({value:`toggle-web-search`,label:H(`chat.composer.menu.webSearch`),checked:a,disabled:e.mutationBlockedReason!==null,title:e.mutationBlockedReason,icon:B.globe,checkbox:!0})}
            ${wk()}
            <wa-dropdown-item class="agent-chat__capability-menu-item" value="manage-plugins">
              <span slot="icon" aria-hidden="true">${B.puzzle}</span>
              ${Mk(Tn(`plugins`,e.basePath),H(`chat.composer.menu.managePlugins`))}
            </wa-dropdown-item>
            ${t>0?I`
                    <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">${B.settings}</span>
                      <span
                        >${H(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"
                        >${B.x}</span
                      >
                    </wa-dropdown-item>
                  `:L}`:L}
  `}function Pk(e){let t=e.mutationBlockedReason,n=e.skillsLoading?I`<div class="agent-chat__capability-menu-state" role="status">
        ${H(`chat.composer.menu.loadingSkills`)}
      </div>`:e.skillsError?I`<div class="agent-chat__capability-menu-state" role="alert">
          ${H(`chat.composer.menu.skillsLoadFailed`)}
        </div>`:!e.skills||e.skills.length===0?I`<div class="agent-chat__capability-menu-state">
            ${H(`chat.composer.menu.noSkills`)}
          </div>`:e.skills.map((e,n)=>{let r=e.missingDeps?H(`chat.composer.menu.depsMissing`):e.blocked?H(`chat.composer.menu.skillBlocked`):t;return Ek({value:`skill:${n}`,label:e.name,checked:e.enabled,disabled:e.missingDeps||e.blocked||t!==null,title:r,note:e.missingDeps||e.blocked?I`<span class="agent-chat__capability-menu-note">${r}</span>`:L})});return I`
    ${Tk()} ${kk(e.library)} ${n} ${wk()}
    <wa-dropdown-item class="agent-chat__capability-menu-item" value="manage-skills">
      ${Mk(Tn(`skills`,e.basePath),H(`chat.composer.menu.manageSkills`))}
    </wa-dropdown-item>
  `}function Fk(e){let t=e.mutationBlockedReason,n=e.mcpServers.length===0?I`<div class="agent-chat__capability-menu-state">
          ${H(`chat.composer.menu.noConnectors`)}
        </div>`:e.mcpServers.map((n,r)=>{let i=$w(e.toolOverrides?.mcpServers,n.name),a=nT(n.enabled,i);return I`
            ${Ek({value:`connector:${r}`,label:n.name,checked:a,disabled:t!==null,title:t,note:I`<span class="agent-chat__capability-menu-note">
                ${H(a?`common.enabled`:`common.disabled`)}
                ${i===void 0?L:I`<span class="agent-chat__capability-menu-session-tag"
                        >${H(`chat.composer.menu.sessionTag`)}</span
                      >`}
              </span>`})}
            ${e.onOpenToolAccess?I`<wa-dropdown-item
                    class="agent-chat__capability-menu-item agent-chat__capability-menu-subrow"
                    value=${`tools:${r}`}
                  >
                    <span slot="icon" aria-hidden="true">${B.wrench}</span>
                    <span>${H(`chat.composer.menu.toolAccess.label`)}</span>
                  </wa-dropdown-item>`:L}
          `}),r=!e.canAdmin;return I`
    ${Tk()} ${n} ${wk()}
    ${e.onAddServer?I`<wa-dropdown-item
            class="agent-chat__capability-menu-item"
            value="add-server"
            ?disabled=${r}
            title=${r?e.adminBlockedReason??``:``}
          >
            <span slot="icon" aria-hidden="true">${B.plus}</span>
            <span>${H(`chat.composer.menu.addMcpServer`)}</span>
          </wa-dropdown-item>`:L}
    <wa-dropdown-item
      class="agent-chat__capability-menu-item"
      value="browse-connectors"
      ?disabled=${r}
      title=${r?e.adminBlockedReason??``:``}
    >
      <span slot="icon" aria-hidden="true">${B.search}</span>
      ${Mk(On(`discover`,e.basePath),H(`chat.composer.menu.browseConnectors`))}
    </wa-dropdown-item>
  `}function Ik(e,t){return(e?.groups??[]).flatMap(e=>e.tools).filter(e=>e.source===`mcp`&&e.mcpServer===t&&!!e.mcpToolName)}function Lk(e,t){return e?.notices?.find(e=>Uk.has(e.id)&&e.servers?.includes(t)===!0)}function Rk(e,t){let n=t.mcpServer,r=t.mcpToolName;return!n||!r?!1:e.toolOverrides==null?t.deniedBySession===!0:$w(e.toolOverrides.mcpToolsDeny,n)?.includes(r)??!1}function zk(e,t){let n=Ik(e.toolsEffectiveResult,t),r=n.length===0?Lk(e.toolsEffectiveResult,t):null,i=n.filter(t=>!Rk(e,t)).length,a=H(n.length===1?`chat.composer.menu.toolAccess.summaryOne`:`chat.composer.menu.toolAccess.summary`,{enabled:String(i),total:String(n.length)}),o=e.toolsEffectiveLoading?I`<div class="agent-chat__capability-menu-state" role="status">
        ${H(`chat.composer.menu.toolAccess.loading`)}
      </div>`:e.toolsEffectiveError?I`<div class="agent-chat__capability-menu-state" role="alert">
          ${H(`chat.composer.menu.toolAccess.loadFailed`)}
        </div>`:r?I`<div class="agent-chat__capability-menu-state" role="status">
            ${pe(r.message)}
          </div>`:n.length===0?I`<div class="agent-chat__capability-menu-state">
              ${H(`chat.composer.menu.toolAccess.noTools`)}
            </div>`:n.map((t,n)=>{let r=t.mcpToolName,i=t.label?.trim(),a=Rk(e,t);return Ek({value:`mcp-tool:${n}`,label:r,checked:!a,disabled:e.toolAccessMutationBlockedReason!==null,title:e.toolAccessMutationBlockedReason,note:i&&i!==r?I`<span class="agent-chat__capability-menu-note">${i}</span>`:L})});return I`
    ${Tk()}
    <div class="agent-chat__capability-menu-state">
      <span class="agent-chat__capability-menu-label">
        <strong translate="no">${t}</strong>
        ${n.length>0?I`<span class="agent-chat__capability-menu-note">${a}</span>`:L}
      </span>
    </div>
    ${o}
  `}function Bk(e,t){let n=e.detail.item.value??``;if(ew(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(Ak(n,t.library,a)){e.preventDefault();return}if(n===`toggle-web-search`){if(e.preventDefault(),t.mutationBlockedReason)return;let n=nT(t.webSearchBaseEnabled,t.toolOverrides?.webSearch);t.onPatchToolOverrides(iT(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(rT(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=nT(r.enabled,$w(t.toolOverrides?.mcpServers,r.name));t.onPatchToolOverrides(rT(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=Ik(t.toolsEffectiveResult,r)[Number(n.slice(9))];i?.mcpToolName&&t.onPatchToolOverrides(aT(t.toolOverrides,r,i.mcpToolName,!Rk(t,i)));return}if(n===`add-server`){t.onAddServer?.();return}n===`manage-skills`?t.onNavigate(`skills`):n===`manage-plugins`?t.onNavigate(`plugins`):n===`browse-connectors`&&t.onNavigate(`plugins`,{pathname:On(`discover`,t.basePath)})}function Vk(e){let t=oT(e.toolOverrides)>0,n=e.showCapabilities?e.view:`root`,r=n===`skills`?Pk(e):n===`connectors`?Fk(e):n.startsWith(`tools:`)?zk(e,n.slice(6)):n.startsWith(`library:`)?kk(e.library,n.slice(8)):Nk(e);return I`
    <wa-dropdown
      class="agent-chat__attach-menu agent-chat__capability-menu"
      placement="top-start"
      aria-label=${H(`chat.composer.addAttachment`)}
      .open=${e.open}
      @wa-select=${t=>Bk(t,e)}
      @wa-show=${()=>{e.open||e.onOpenChange(!0),e.onLoadSkills()}}
      @wa-hide=${()=>{e.open&&e.onOpenChange(!1)}}
      data-view=${n}
    >
      ${tw(e.disabled,t)} ${r}
    </wa-dropdown>
    ${e.addServerDialog??L} ${e.libraryDialog??L}
  `}function Hk(e){let t=e.capabilityMenu;return Vk({attachments:e.attachments,showCapabilities:t!==void 0,basePath:t?.basePath??``,disabled:e.disabled,open:e.open,view:e.view,toolOverrides:e.toolOverrides,skills:t?.skills??null,skillsLoading:t?.skillsLoading??!1,skillsError:t?.skillsError??!1,library:t?.library,libraryDialog:t?.libraryDialog,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,rootToggles:e.rootToggles,addServerDialog:t?.addServerDialog,onOpenChange:e.onOpenChange,onViewChange:e.onViewChange,onLoadSkills:t?.onLoadSkills??(()=>{}),onPatchToolOverrides:t?.onPatchToolOverrides??(()=>{}),onNavigate:t?.onNavigate??(()=>{}),onAddServer:t?.onAddServer,onOpenToolAccess:t?.onOpenToolAccess})}var Uk;function Wk(){return(Wk=e((()=>{F(),xn(),er(),z(),V(),A(),Mn(),Rn(),gw(),jk(),Dk(),Uk=new Set([`mcp-not-yet-connected`,`mcp-not-yet-listed`,`mcp-stale-catalog`])})))()}function Gk(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=Yk(r.dataset.chatPermissionOption);i!==void 0&&(e.preventDefault(),e.stopPropagation(),t(i),n.removeAttribute(`open`),n.querySelector(`[slot=trigger]`)?.focus())}function Kk(e,t){return e?H(`chat.permissionControls.modes.${e}.label`):t?H(`chat.permissionControls.defaultWithMode`,{mode:H(`chat.permissionControls.modes.${t}.label`)}):H(`chat.permissionControls.default`)}function qk(e){switch(e){case`read-only`:return B.shieldEllipsis;case`guarded`:return B.shieldLock;case`workspace`:return B.shieldCog;case`full`:return B.shieldAlert;default:return B.shieldCheck}}function Jk(e){return e!==void 0&&Qk.some(t=>t===e)}function Yk(e){return e===$k?null:Jk(e)?e:void 0}function Xk(e){let t=e.disabled||e.pending,n=(e.mode??e.defaultMode)===`full`,r=Kk(e.mode,e.defaultMode),i=n=>{t||n===`full`&&!e.canSelectFull||n!==(e.mode??null)&&e.onSelect(n)};return I`
    <wa-dropdown
      class="chat-controls__inline-select chat-controls__permission-picker"
      placement="top-start"
      @wa-after-show=${QO}
      @keydown=${e=>Gk(e,i)}
      @wa-select=${e=>{let t=Yk(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=${`${H(`chat.permissionControls.label`)}: ${r}`}
        aria-disabled=${t?`true`:`false`}
        title=${e.disabledReason??H(`chat.permissionControls.help`)}
        ?disabled=${t}
      >
        <span class="chat-controls__permission-icon" aria-hidden="true"
          >${qk(e.mode??null)}</span
        >
        <span
          class="chat-controls__inline-select-label ${n?`chat-controls__permission-label--full`:``}"
        >
          ${r}
        </span>
      </button>
      <div class="chat-controls__popover-title chat-controls__permission-heading">
        <span>${H(`chat.permissionControls.label`)}</span>
        <a
          class="chat-controls__permission-learn-more learn-more-link"
          href=${Zk}
          target=${_a}
          rel=${$r()}
          >${H(`common.learnMore`)}</a
        >
      </div>
      ${eA.map((n,r)=>{let i=n??$k,a=(e.mode??null)===n,o=n===`full`&&!e.canSelectFull;return I`
          <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?`${Kk(n,e.defaultMode)}. ${H(`chat.permissionControls.fullRequiresAdmin`)}`:Kk(n,e.defaultMode)}
            title=${o?H(`chat.permissionControls.fullRequiresAdmin`):L}
            ?disabled=${t||o}
          >
            <span slot="icon" class="chat-controls__permission-option-icon" aria-hidden="true"
              >${qk(n)}</span
            >
            <span class="chat-controls__permission-option-copy">
              <span class="chat-controls__permission-option-title">
                <span>${Kk(n,e.defaultMode)}</span>
              </span>
              <span class="chat-controls__permission-option-description">
                ${H(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?L:I`<span class="chat-controls__permission-shortcut">${r+1}</span>`}
              ${o?I`<span class="chat-controls__permission-lock">${B.lock}</span>`:L}
              ${a&&!o?I`<span class="chat-controls__inline-select-check">${B.check}</span>`:L}
            </span>
          </wa-dropdown-item>
        `})}
    </wa-dropdown>
  `}var Zk,Qk,$k,eA;function tA(){return(tA=e((()=>{F(),z(),V(),pr(),ok(),Zk=`https://docs.openclaw.ai/gateway/permission-modes`,Qk=[`read-only`,`guarded`,`workspace`,`full`],$k=`default`,eA=[null,...Qk]})))()}function nA(e,t){let n=e.options.find(t=>t.id===e.selected);if(!n)return L;let r=H(`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 L;let s=n.id===o.id,c=s?a:o;i=I`
      <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=I`
      <div
        class="settings-segmented chat-controls__context-window-options"
        role="group"
        aria-label=${r}
      >
        ${e.options.map(r=>I`
            <button
              class="settings-segmented__btn ${r.id===n.id?`settings-segmented__btn--active`:``}"
              data-chat-context-window-option=${r.id}
              type="button"
              aria-pressed=${r.id===n.id?`true`:`false`}
              ?disabled=${e.disabled}
              @click=${i=>{if(i.stopPropagation(),e.disabled||r.id===n.id){i.preventDefault();return}e.onSelect(r.id,t)}}
            >
              ${r.label}
            </button>
          `)}
      </div>
    `;return I`
    <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"
        >${B.scrollText}</span
      >
      <span class="chat-controls__fast-mode-copy">
        <span class="chat-controls__fast-mode-title">
          ${H(`chat.modelControls.contextWindow`)}
        </span>
        <span class="chat-controls__fast-mode-description">${n.label}</span>
      </span>
      ${i}
    </div>
  `}function rA(){return(rA=e((()=>{F(),z(),V()})))()}function iA(e,t,n,r,i=H(`chat.modelControls.modelsUnavailable`),a){if(!e||e.status===`ready`&&n||e.status===`error`&&t)return L;let o=e.status===`offline`?H(`common.offline`):e.status===`error`?i:e.status===`ready`?H(`chat.modelControls.noModelsAvailable`):H(`chat.modelControls.loadingModels`);return I`
    <div
      class="chat-controls__model-catalog-state ${t?``:`chat-controls__model-catalog-state--empty`}"
      data-chat-model-catalog-state=${e.status}
      aria-live="polite"
    >
      <span class="chat-controls__model-catalog-state-label">
        ${e.status===`error`?B.alertTriangle:L}
        <span>${o}</span>
      </span>
      ${e.status===`error`&&a?I`
              <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)}}
              >
                ${H(`common.retry`)}
              </button>
            `:L}
      ${e.status===`ready`&&!n&&r?I`
              <button
                class="chat-controls__model-catalog-action"
                data-chat-model-setup="true"
                type="button"
                @click=${e=>{e.stopPropagation(),r()}}
              >
                ${H(`chat.modelControls.emptyModelsAction`)}
              </button>
            `:L}
    </div>
  `}function aA(){return(aA=e((()=>{F(),z(),V()})))()}function oA(e){let t=e.contextTokens,n=e.contextWindow;return t&&n&&t!==n?H(`chat.modelControls.contextActiveAndMax`,{active:ht(t),maximum:ht(n)}):n?ht(n):``}function sA(e){let t=e.trim().toLowerCase();return fA[t]??`${t.charAt(0).toUpperCase()}${t.slice(1)}`}function cA(e){let t=[Si(e.provider),dr(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 lA(e){return ei(e,{className:`chat-controls__provider-icon`})}function uA(e){let t=e.entry.value===e.selectedModelValue||e.entry.isDefault&&e.selectedModelValue===``,n=cA(e.entry),r=e.entry.disabled&&(e.entry.unavailableReason===`missing-auth`||e.entry.unavailableReason===`auth-failed`),i=r?e.onModelSetup:void 0,a=r?``:[oA(e.entry),e.entry.agentRuntimeId?sA(e.entry.agentRuntimeId):``].filter(Boolean).join(` · `),o=r?H(`modelSetup.candidates.signInNeeded`):``,s=I`<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-default=${e.entry.isDefault?`true`:L}
    data-chat-model-index=${e.index}
    data-chat-model-keywords=${e.entry.isDefault?H(`chat.modelControls.default`).toLocaleLowerCase():L}
    data-chat-model-name=${n.toLocaleLowerCase()}
    data-chat-model-provider-label=${dr(e.entry.provider).toLocaleLowerCase()}
    role="option"
    aria-selected=${t?`true`:`false`}
    aria-label=${[n,o,e.entry.supportsTools===!1?H(`chat.modelControls.chatOnlyHelp`):``].filter(Boolean).join(`. `)}
    type="button"
    ?disabled=${e.disabled||e.entry.disabled&&!i}
    data-chat-model-setup=${i?`true`:L}
    @mouseenter=${t=>e.onHighlight(t.currentTarget)}
    @click=${t=>{if(e.entry.disabled){t.stopPropagation(),i?.();return}e.onSelect(e.entry,t)}}
  >
    <span class="chat-controls__model-option-provider">
      ${lA(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?I`<span
                class="chat-controls__model-state-label chat-controls__model-state-label--default"
                >${H(`chat.modelControls.default`)}</span
              >`:L}
        ${a?I`<span class="chat-controls__model-option-meta">${a}</span>`:L}
        ${r?I`<span
                class="chat-controls__model-option-auth-warning"
                data-chat-model-auth-warning
              >
                ${B.alertTriangle}<span>${o}</span>
              </span>`:L}
        ${e.entry.supportsTools===!1?I`<span class="chat-controls__model-chat-only-info" aria-hidden="true"
                >${B.info}</span
              >`:L}
      </span>
    </span>
    <span class="chat-controls__model-option-action">
      ${t?I`<span class="chat-controls__inline-select-check" aria-hidden="true"
              >${B.check}</span
            >`:I`<kbd data-chat-model-shortcut="true" aria-hidden="true" hidden></kbd>`}
    </span>
  </button>`;return e.entry.supportsTools===!1?I`<openclaw-tooltip .content=${H(`chat.modelControls.chatOnlyHelp`)}>
        ${s}
      </openclaw-tooltip>`:s}function dA(e){return I`
    <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=${t=>e.onHighlight(t.currentTarget)}
      @click=${t=>e.onSelect(e.groupId,e.entry.value,t)}
    >
      <span
        class="chat-controls__model-option-provider chat-controls__target-icon"
        aria-hidden="true"
        >${B.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">
        <kbd data-chat-model-shortcut="true" aria-hidden="true" hidden></kbd>
      </span>
    </button>
  `}var fA;function pA(){return(pA=e((()=>{F(),z(),Mn(),Zr(),V(),yt(),fA={"claude-cli":`Claude CLI`,codex:`Codex`,"codex-cli":`Codex`,"google-gemini-cli":`Gemini CLI`,openclaw:`OpenClaw`}})))()}function mA(e){return e instanceof Element?e.closest(`.chat-controls__model-menu`):null}function hA(e){return[...e.querySelectorAll(`[data-chat-model-option]`)].filter(e=>!e.hidden).toSorted((e,t)=>Number(e.dataset.chatModelRank??e.dataset.chatModelIndex??0)-Number(t.dataset.chatModelRank??t.dataset.chatModelIndex??0))}function gA(e){return hA(e).filter(e=>!e.disabled)}function _A(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-${Ue()}`;t.dataset.chatModelPickerId=i,r.forEach((e,t)=>{e.id=`${i}-listbox-${t}`}),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 vA(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 yA(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 bA(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:null}function xA(e){let t=mA(e);if(!t)return;_A(t);let n=e.value.trim().toLocaleLowerCase();t.toggleAttribute(`data-chat-model-filtering`,!!n);let r=[...t.querySelectorAll(`[data-chat-model-option]`)],i=[];r.forEach((e,t)=>{let r=n?bA(e,n):0;e.hidden=r===null,e.style.removeProperty(`--chat-model-rank`),delete e.dataset.chatModelRank,r!==null&&i.push({row:e,score:r,index:t})}),i.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))});let a=hA(t),o=gA(t);yA(t,o);let s=o.find(e=>e.getAttribute(`aria-selected`)===`true`);vA(t,n?o[0]:s??o[0]);let c=t.querySelector(`[data-chat-model-search-empty]`);c&&(c.hidden=!n||a.length>0)}function SA(e){let t=e.querySelector(`[data-chat-model-search]`);t&&(t.value=``,xA(t))}function CA(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=``,xA(t),e.preventDefault(),e.stopPropagation(),!0):!1}function wA(e){let t=e.currentTarget,n=mA(t);if(!n)return;let r=gA(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}if(e.key!==`ArrowDown`&&e.key!==`ArrowUp`)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;vA(n,r[o]),r[o]?.scrollIntoView?.({block:`nearest`})}function TA(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=gA(t)[Number(e.key)-1];e.preventDefault(),n?.click()}function EA(e){let t=e.modelOptions.find(e=>e.isDefault),n=e.selectedModelValue===``?t:e.modelOptions.find(t=>t.value===e.selectedModelValue),r=e.triggerModelValue?e.modelOptions.find(t=>t.value===e.triggerModelValue):n,i=r?.supportsTools===!1,a=e.contextWindow?.options.find(t=>t.id===e.contextWindow?.selected),o=a!==void 0&&e.contextWindow?.selected!==e.contextWindow?.defaultId,s=[e.triggerStatusLabel??e.triggerModelLabel,i?H(`chat.modelControls.chatOnly`):``].filter(Boolean).join(` · `),c=!e.triggerLoading&&!e.triggerStatusLabel&&r&&ha(r.provider)?ei(r.provider,{className:`chat-controls__trigger-provider-icon`}):L,l=new Map;for(let t of e.modelOptions){let e=l.get(t.provider);e?e.push(t):l.set(t.provider,[t])}let u=[...l],d=u.findIndex(([e])=>e===t?.provider);if(d>0){let[e]=u.splice(d,1);e&&u.unshift(e)}let f=u.flatMap(([,e])=>e),p=new Map(f.map((e,t)=>[e.value,t])),m=e.targetGroups??[],h=m.reduce((e,t)=>e+t.options.length,0),g=e.modelOptions.length+h>0||m.some(e=>e.status!==`ready`),_=e.modelOptions.some(e=>!e.disabled),v=t=>{e.modelSelectionLocked||(e.onModelSelect(t,e.sessionKey).finally(()=>e.onRequestUpdate?.()),e.onRequestUpdate?.())},y=(t,n)=>{if(n.stopPropagation(),e.disabled||e.modelSelectionLocked||t.disabled){n.preventDefault();return}t.commitValue!==e.selectedModelValue&&v(t.commitValue);let r=n.currentTarget.closest(`details`);r&&(r.open=!1,n.detail===0&&r.querySelector(`summary`)?.focus({preventScroll:!0}))},b=(t,n,r)=>{if(r.stopPropagation(),e.disabled||e.modelSelectionLocked){r.preventDefault();return}e.onTargetSelect?.(t,n);let i=r.currentTarget.closest(`details`);i&&(i.open=!1,r.detail===0&&i.querySelector(`summary`)?.focus({preventScroll:!0}))},x=e=>{let t=mA(e);t&&vA(t,e)};return I`
    <details
      class="chat-controls__inline-select chat-controls__model-picker"
      data-chat-autotype-shortcuts
      ?open=${e.open===!0}
      @keydown=${TA}
      @toggle=${t=>{let n=t.currentTarget;if(e.onOpenChange?.(n.open),YO(t),$O(n),!n.open){SA(n);return}e.onOpen?.(),queueMicrotask(()=>{let e=n.querySelector(`[data-chat-model-search]`);e&&xA(e)})}}
    >
      <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=${i?`unavailable`:`available`}
        aria-label=${`${H(`chat.selectors.model`)}: ${s}${e.selectionScopeDescription?`. ${e.selectionScopeDescription}`:``}`}
        aria-busy=${e.triggerLoading?`true`:`false`}
        aria-disabled=${e.disabled?`true`:`false`}
        title=${e.disabledReason?.trim()||e.selectionScopeDescription||s}
        @click=${t=>{if(e.disabled){t.preventDefault();return}t.currentTarget.focus({preventScroll:!0})}}
      >
        ${i?I`
                <openclaw-tooltip .content=${H(`chat.modelControls.chatOnlyHelp`)}>
                  <span class="chat-controls__model-capability-badge" aria-hidden="true">
                    ${B.alertTriangle}
                    <span>${H(`chat.modelControls.chatOnly`)}</span>
                  </span>
                </openclaw-tooltip>
              `:L}
        ${c}
        <span class="chat-controls__inline-select-label">
          ${e.triggerLoading?I`<span
                  class="skeleton chat-controls__model-trigger-skeleton"
                  aria-hidden="true"
                ></span>`:e.triggerStatusLabel??e.triggerModelLabel}
        </span>
        ${o?I`
                <span
                  class="chat-controls__locked-model-badge chat-controls__model-context-badge"
                  data-chat-model-context-badge
                >
                  ${a.label}
                </span>
              `:L}
        <span class="chat-controls__inline-select-chevron" aria-hidden="true"
          >${B.chevronUp}</span
        >
      </summary>
      <wa-popup data-anchored-overlay>
        <div
          class="chat-controls__inline-select-menu chat-controls__model-menu"
          aria-label=${H(`chat.selectors.model`)}
        >
          ${e.modelSelectionLocked?I`
                  <div
                    class="chat-controls__locked-model"
                    aria-label=${H(`chat.selectors.modelLockedLabel`)}
                  >
                    <span class="chat-controls__inline-select-section-label">
                      ${H(`chat.selectors.modelSection`)}
                    </span>
                    <span class="chat-controls__locked-model-value"
                      >${e.triggerModelLabel}</span
                    >
                    <span class="chat-controls__locked-model-badge">
                      ${H(`chat.selectors.modelLocked`)}
                    </span>
                  </div>
                `:I`
                  ${e.modelOptions.length>0?I`
                          <div class="chat-controls__model-search-wrap">
                            ${B.search}
                            <input
                              class="chat-controls__model-search"
                              data-chat-model-search="true"
                              type="search"
                              role="combobox"
                              aria-autocomplete="list"
                              autocomplete="off"
                              spellcheck="false"
                              placeholder=${H(`chat.modelControls.searchModels`)}
                              aria-label=${H(`chat.modelControls.searchModels`)}
                              ?disabled=${e.disabled}
                              @input=${e=>xA(e.currentTarget)}
                              @keydown=${wA}
                            />
                          </div>
                        `:L}
                  ${iA(e.modelCatalogState,e.modelOptions.length>0,_,e.onModelSetup)}
                  ${g?I`
                          <div class="chat-controls__model-options">
                            ${on(u,([e])=>e,([t,n])=>I`
                                <section
                                  class="chat-controls__provider-model-group"
                                  data-chat-model-provider-group=${t}
                                  aria-label=${H(`chat.modelControls.providerModels`,{provider:dr(t)})}
                                >
                                  <div
                                    class="chat-controls__provider-heading"
                                    data-chat-model-provider=${t}
                                  >
                                    ${lA(t)}
                                    <span class="chat-controls__provider-label"
                                      >${dr(t)}</span
                                    >
                                    ${e.onModelSetup?I`<button
                                            class="chat-controls__provider-settings"
                                            data-chat-model-provider-settings
                                            type="button"
                                            aria-label=${H(`chat.modelControls.configureModels`)}
                                            @click=${t=>{t.stopPropagation(),e.onModelSetup?.()}}
                                          >
                                            ${B.settings}
                                          </button>`:L}
                                  </div>
                                  <div
                                    class="chat-controls__provider-model-list"
                                    data-chat-model-list="true"
                                    role="listbox"
                                    aria-label=${H(`chat.modelControls.providerModels`,{provider:dr(t)})}
                                  >
                                    ${on(n,e=>e.value,t=>uA({disabled:e.disabled,entry:t,index:p.get(t.value)??0,selectedModelValue:e.selectedModelValue,onHighlight:x,onSelect:y,onModelSetup:e.onModelSetup}))}
                                  </div>
                                </section>
                              `)}
                            ${on(m,e=>e.id,t=>I`
                                <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"
                                      >${B.terminal}</span
                                    >
                                    <span>${t.label}</span>
                                  </div>
                                  ${t.status===`ready`?L:iA({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}
                                  >
                                    ${on(t.options,e=>e.value,(n,r)=>dA({disabled:e.disabled,entry:n,groupId:t.id,groupLabel:t.label,index:f.length+r,onHighlight:x,onSelect:b}))}
                                  </div>
                                </section>
                              `)}
                          </div>
                          <div
                            class="chat-controls__model-search-empty"
                            data-chat-model-search-empty
                            hidden
                          >
                            ${H(`chat.modelControls.noMatchingModels`)}
                          </div>
                          ${e.contextWindow?nA(e.contextWindow,e.sessionKey):L}
                          ${e.sessionModelPinned&&e.modelOptions.length>0?I`<footer class="chat-controls__model-provenance">
                                  <button
                                    class="btn btn--ghost btn--xs chat-controls__model-reset"
                                    data-chat-model-reset="true"
                                    type="button"
                                    title=${H(`chat.modelControls.useDefaultModel`,{model:e.defaultModelLabel})}
                                    ?disabled=${e.disabled}
                                    @click=${t=>{if(t.stopPropagation(),e.disabled){t.preventDefault();return}v(``);let n=t.currentTarget;if(!(n instanceof HTMLElement))return;let r=n.closest(`details`);r&&(r.open=!1,t.detail===0&&r.querySelector(`summary`)?.focus({preventScroll:!0}))}}
                                  >
                                    ${H(`chat.modelControls.resetSessionModel`)}
                                  </button>
                                </footer>`:L}
                        `:L}
                `}
          ${e.accountControl??L}
        </div>
      </wa-popup>
    </details>
  `}function DA(){return(DA=e((()=>{F(),cn(),z(),Mn(),Zr(),V(),ye(),rA(),aA(),pA(),ok()})))()}function OA(e){NA&&=(globalThis.clearTimeout(NA.timer),e&&Oe(NA.item.attachments??[]),null)}function kA(e,t){OA(!0),NA={item:t,sessionKey:e,timer:globalThis.setTimeout(()=>OA(!0),MA)}}function AA(e){if(!NA||!N(NA.sessionKey,e))return null;let t=NA.item;return OA(!1),t}function jA(e,t){let n=AA(t);return n?(Cs(e,t,n.agentId).some(e=>e.id===n.id)||vs(e,t,n,n.agentId,{retryable:!0}),!0):!1}var MA,NA;function PA(){return(PA=e((()=>{D(),se(),Ls(),MA=6e4,NA=null})))()}function FA(e){let{owner:t,selection:n,client:r}=e;if(!n)return L;let i=IA.get(t);(!i?.isCurrent()||i.model!==e.model||i.selection!==n)&&(i={model:e.model,selection:n,accounts:[],loading:!1,error:null,isCurrent:e.ownsSelection},IA.set(t,i));let a=i,o=()=>IA.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=O(e,H(`profilePage.modelAccounts.inventoryFailed`)))}finally{o()&&(a.loading=!1,e.onRequestUpdate())}}},c=e.model.includes(`/`)?gt(e.model.slice(0,e.model.indexOf(`/`))):``,l=n.kind===`automatic`?void 0:n.authProfileId,u=e=>e&&a.accounts.some(t=>t.authProfileId!==e.authProfileId&&t.provider===e.provider&&t.label===e.label)?e.authProfileId:void 0,d=`current`,f=[{value:d,label:n.label,description:u(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:u(e)})),...e.onAutomatic?[{value:`automatic`,label:H(`chat.modelAccounts.automatic`)}]:[],...a.loading?[{value:`loading`,label:H(`common.loading`),disabled:!0}]:[],...a.nextCursor?[{value:`more`,label:H(`profilePage.modelAccounts.loadMore`)}]:[],...e.onManage?[{value:`manage`,label:H(`chat.modelAccounts.manage`)}]:[]];return I`
    <div
      class="chat-model-account chat-controls__model-provenance"
      data-chat-account-selection=${n.kind}
    >
      <span>${H(`chat.modelAccounts.label`)}</span>
      <wa-dropdown
        class="chat-model-account__picker"
        placement="top-start"
        aria-label=${H(`chat.modelAccounts.label`)}
        @wa-show=${()=>void s()}
        @wa-select=${t=>{if(!o()||e.disabled)return;let n=t.detail.item.value;if(n===`manage`)e.onManage?.();else if(n===`automatic`)e.onAutomatic?.();else if(n===`more`)t.preventDefault(),s(a.nextCursor);else{let t=a.accounts.find(e=>`account:${e.authProfileId}`===n&&e.provider===c);t&&e.onSelect(t)}}}
      >
        <button
          slot="trigger"
          type="button"
          class="chat-controls__inline-select-trigger"
          data-chat-account-trigger
          aria-label=${`${H(`chat.modelAccounts.label`)}: ${n.label}`}
          ?disabled=${e.disabled}
        >
          <span class="chat-controls__inline-select-label">${n.label}</span>
          <span class="chat-controls__inline-select-chevron" aria-hidden="true"
            >${B.chevronDown}</span
          >
        </button>
        ${f.map(t=>I`
            <wa-dropdown-item
              .value=${t.value}
              data-chat-account-option=${t.value}
              ?disabled=${t.disabled||e.disabled}
              ${P(e=>{(t.value===d||t.value.startsWith(`account:`))&&Fn(e,t.value===d)})}
            >
              <span
                >${t.label}${t.description?I`<br /><small>${t.description}</small>`:L}</span
              >
            </wa-dropdown-item>
          `)}
      </wa-dropdown>
      ${e.hint?I`<span class="chat-model-account__hint">${e.hint}</span>`:L}
      ${a.error?I`<span class="chat-model-account__error" role="alert"
              >${a.error}</span
            >`:L}
    </div>
  `}var IA;function LA(){return(LA=e((()=>{F(),an(),z(),Rn(),V(),Hr(),Tt(),A(),gr(),IA=new WeakMap})))()}function RA(e){return e.replace(/^Inherited:\s*/u,``)}function zA(e){let t=e.thinking.options,n=t.length>0;if(!e.reserved&&!n&&!e.fastMode.supported)return L;let r=e.thinking.selection,i=yr(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=e=>t.length>1?e/(t.length-1)*100:0,d=RA(e.thinking.inherited.displayLabel),f=RA(r.displayLabel),p=o?f:H(`chat.modelControls.defaultWithLevel`,{level:d}),m=n?f:H(`chat.modelControls.fastMode`),h=n?e.fastMode.active?`${m} · ${H(`chat.modelControls.fastMode`)}`:m:`${m}: ${e.fastMode.label}`,g=t=>{e.onThinkingSelect(t,e.sessionKey).finally(()=>e.onRequestUpdate?.()),e.onRequestUpdate?.()},_=t=>{e.onFastModeSelect(t,e.sessionKey).finally(()=>e.onRequestUpdate?.()),e.onRequestUpdate?.()},v=(e,t=!1)=>{t&&(e.value=String(c)),e.style.setProperty(`--reasoning-fill`,`${u(c)}%`),e.setAttribute(`aria-valuetext`,p);let n=e.closest(`.chat-controls__reasoning-panel`);n?.querySelectorAll(`[data-chat-thinking-preview-index]`).forEach(e=>{e.hidden=!0});let r=n?.querySelector(`[data-chat-thinking-preview-committed]`);r&&(r.hidden=!1)},y=e=>{let n=e.currentTarget,r=t[Number(n.value)];if(!r)return;n.style.setProperty(`--reasoning-fill`,`${u(Number(n.value))}%`),n.setAttribute(`aria-valuetext`,RA(r.label));let i=n.closest(`.chat-controls__reasoning-panel`);i?.querySelectorAll(`[data-chat-thinking-preview-index]`).forEach(e=>{e.hidden=e.dataset.chatThinkingPreviewIndex!==n.value});let a=i?.querySelector(`[data-chat-thinking-preview-committed]`);a&&(a.hidden=!0)},b=n=>{let r=n.currentTarget,i=t[Number(r.value)];v(r),!(e.thinkingDisabled||!i||i.value===s)&&g(i.value)},x=e=>{let t=e.currentTarget;l&&Number(t.value)===c&&b(e)},S=e=>{l&&[`Home`,`ArrowLeft`,`ArrowDown`,`PageDown`].includes(e.key)&&b(e)},C=t.length===1?t[0]:void 0,w=r.kind===`anchored`&&r.index===0;return I`
    <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;YO(e),$O(t)}}
    >
      <summary
        class="chat-controls__inline-select-trigger chat-controls__effort-trigger ${e.fastMode.active?`chat-controls__effort-trigger--fast`:``} ${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?`${H(`chat.selectors.thinkingLevel`)}: ${h}`:h}
        aria-disabled=${e.disabled?`true`:`false`}
        title=${e.disabledReason??h}
        @click=${t=>{e.disabled&&t.preventDefault()}}
      >
        ${e.fastMode.active?I`<span class="chat-controls__effort-zap" aria-hidden="true">${B.zap}</span>`:L}
        ${n?I`
                <span
                  class="chat-controls__effort-gauge ${i?`chat-controls__effort-gauge--off`:``}"
                  aria-hidden="true"
                >
                  ${zn(Zt`
                  <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?I`<span class="chat-controls__effort-fast-badge">${B.zap}</span>`:L}
                </span>
              `:I`<span class="chat-controls__effort-speed" aria-hidden="true">${B.zap}</span>`}
        <span class="chat-controls__inline-select-label">${m}</span>
        <span class="chat-controls__inline-select-chevron" aria-hidden="true"
          >${B.chevronUp}</span
        >
      </summary>
      <wa-popup data-anchored-overlay>
        <div
          class="chat-controls__inline-select-menu chat-controls__effort-menu"
          aria-label=${H(n?`chat.modelControls.effort`:`chat.modelControls.fastMode`)}
        >
          ${n?I`
                  <div class="chat-controls__reasoning-panel">
                    <div class="chat-controls__reasoning-head">
                      <span class="chat-controls__effort-heading">
                        ${H(`chat.modelControls.effort`)}
                      </span>
                      <span class="chat-controls__effort-value" aria-hidden="true">
                        <span data-chat-thinking-preview-committed>${f}</span>
                        ${t.map((e,t)=>I`<span
                            data-chat-thinking-preview-index=${t}
                            hidden
                            >${RA(e.label)}</span
                          >`)}
                      </span>
                    </div>
                    ${t.length>1?I`
                            <div class="chat-controls__reasoning-slider">
                              <div class="chat-controls__reasoning-dots" aria-hidden="true">
                                ${t.map(e=>I`<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: ${u(c)}%`}
                                data-chat-thinking-slider="true"
                                data-chat-thinking-values=${t.map(e=>e.value).join(`,`)}
                                aria-label=${H(`chat.selectors.thinkingLevel`)}
                                aria-valuetext=${p}
                                ?disabled=${e.thinkingDisabled}
                                @input=${y}
                                @change=${b}
                                @click=${x}
                                @keydown=${S}
                                @pointercancel=${e=>v(e.currentTarget,!0)}
                                @blur=${e=>v(e.currentTarget,!0)}
                              />
                            </div>
                            <div class="chat-controls__effort-scale" aria-hidden="true">
                              <span>${H(`chat.modelControls.faster`)}</span>
                              <span>${H(`chat.modelControls.smarter`)}</span>
                            </div>
                          `:C?I`
                              <button
                                class="chat-controls__reasoning-option ${w?`chat-controls__reasoning-option--selected`:``}"
                                data-chat-thinking-option=${C.value}
                                type="button"
                                aria-pressed=${w?`true`:`false`}
                                ?disabled=${e.thinkingDisabled}
                                @click=${t=>{if(t.stopPropagation(),e.thinkingDisabled||w){t.preventDefault();return}g(C.value)}}
                              >
                                <span>${C.label}</span>
                                ${w?I`<span
                                        class="chat-controls__inline-select-check"
                                        aria-hidden="true"
                                        >${B.check}</span
                                      >`:L}
                              </button>
                            `:L}
                  </div>
                `:L}
          <div class="chat-controls__fast-mode-row">
            <span class="chat-controls__fast-mode-icon" aria-hidden="true">${B.zap}</span>
            <span class="chat-controls__fast-mode-copy">
              <span class="chat-controls__fast-mode-title">
                ${H(`chat.modelControls.fastMode`)}
              </span>
              <span class="chat-controls__fast-mode-description">
                ${H(`chat.modelControls.fastHelp`)}
              </span>
            </span>
            <button
              class="chat-controls__speed-toggle ${e.fastMode.active?`chat-controls__speed-toggle--active`:``}"
              data-chat-speed-toggle=${e.fastMode.nextValue}
              type="button"
              role="switch"
              aria-checked=${e.fastMode.active?`true`:`false`}
              aria-label=${H(`chat.modelControls.fastResponsesAria`,{state:e.fastMode.label})}
              ?disabled=${e.fastMode.disabled}
              @click=${t=>{if(t.stopPropagation(),e.fastMode.disabled){t.preventDefault();return}_(e.fastMode.nextValue)}}
            >
              <span class="chat-controls__speed-toggle-thumb"></span>
            </button>
          </div>
        </div>
      </wa-popup>
    </details>
  `}function BA(){return(BA=e((()=>{F(),Nn(),z(),Mn(),V(),ri(),ok()})))()}function VA(e){let t=gt(e);return YA[t]??t}function HA(e,t,n=``,r=``){let i=(e||n).trim(),a=i.toLowerCase(),o=t.find(e=>{let t=e.id.trim().toLowerCase();return`${gt(e.provider)}/${t}`===a});if(o)return VA(o.provider);let s=t.filter(e=>e.id.trim().toLowerCase()===a),c=gt(r),l=s.some(e=>gt(e.provider)===c);if(c&&(s.length===0||l))return VA(c);if(s.length===1)return VA(s[0]?.provider??``);let u=i.indexOf(`/`);return u>0?VA(i.slice(0,u)):`other`}function UA(e,t){let n=e.trim().toLowerCase(),r=n.indexOf(`/`),i=r>0?`${gt(n.slice(0,r))}/${n.slice(r+1)}`:n;if(!i)return;let a=t.filter(e=>`${gt(e.provider)}/${e.id.trim().toLowerCase()}`===i);if(a.length>0)return a.find(e=>e.provider.trim().toLowerCase()===`openai`)??a[0];let o=t.filter(e=>e.id.trim().toLowerCase()===i);return o.length===1?o[0]:void 0}function WA(e,t,n){let r=UA(e,n);return r&&gt(r.provider)===`openai`&&r.name.trim()||t}function GA(e){return/^Default \((.+)\)$/u.exec(e)?.[1]??e}function KA(e){switch(e){case`session`:return H(`chat.modelControls.selectionScopeSession`);case`agent`:return H(`chat.modelControls.selectionScopeAgent`);case`global`:return H(`chat.modelControls.selectionScopeGlobal`);default:return}}function qA(e,t,n){if(e.status!==`offline`){if(e.status===`error`)return t===0?H(`chat.modelControls.modelsUnavailable`):void 0;if(!e.hasSnapshot&&[`idle`,`loading`].includes(e.status))return n?void 0:H(`chat.modelControls.loadingModels`);if(e.hasSnapshot&&t===0)return H(`chat.modelControls.noModelsAvailable`)}}function JA(e){let{currentOverride:t,defaultModel:n,defaultLabel:r,modelOverrideSource:i,options:a}=Gr({activeSession:e.selectedSession,agentDefaultModel:e.agentDefaultModel,chatModelCatalog:e.modelCatalog,modelOverrides:e.modelOverrides??{},sessionKey:e.sessionKey,sessionsResult:e.sessionsResult}),o=kr({catalog:e.modelCatalog,defaults:e.thinkingDefaults,session:e.thinkingSession,sessionKey:e.sessionKey,sessionsResult:e.sessionsResult}),s=Bi({activeRunId:e.activeRunId,catalog:e.modelCatalog,connected:e.connected,currentModelOverride:t,fastModeTarget:e.fastModeTarget??e.selectedSession,gatewayAvailable:e.gatewayAvailable,loading:e.loading,sending:e.sending,sessionsResult:e.sessionsResult,stream:e.stream}),c=e.modelSwitching?{...s,disabled:!0}:s,l=e.selectedSession,u=l?.modelProvider??``,d=(Object.hasOwn(e.modelOverrides??{},e.sessionKey)?``:$e(l?.activeModel,l?.activeModelProvider,e.modelCatalog))||t,f=e.sessionsResult?.defaults?.modelProvider??``,p=UA(n,e.modelCatalog),m=WA(n,r,e.modelCatalog),h=n&&m!==r?H(`chat.modelControls.defaultWithModel`,{model:m}):r,g=n.trim().toLowerCase(),_=a.map(n=>{let r=UA(n.value,e.modelCatalog),i=n.value.trim().toLowerCase()===g||r!==void 0&&r===p,a=r?.agentRuntime,o=a&&(a.source===`model`||a.source===`provider`)?a.id.trim():void 0,s={commitValue:i?``:n.value,isDefault:i,value:n.value,label:WA(n.value,n.label,e.modelCatalog),provider:HA(n.value,e.modelCatalog,``,i?f:n.value===t?u:``)};return o&&(s.agentRuntimeId=o),r?.contextWindow&&(s.contextWindow=r.contextWindow),typeof r?.supportsTools==`boolean`&&(s.supportsTools=r.supportsTools),n.disabled&&(s.disabled=!0,s.unavailableReason=n.unavailableReason),s}),v=UA(t,e.modelCatalog);t&&_.length>0&&!_.some(e=>e.value===t)&&_.push({commitValue:t,...v?.contextWindow?{contextWindow:v.contextWindow}:{},...typeof v?.supportsTools==`boolean`?{supportsTools:v.supportsTools}:{},...v?.available===!1?{disabled:!0,unavailableReason:v.unavailableReason}:{},isDefault:!1,value:t,label:v?.name.trim()||t,provider:HA(t,e.modelCatalog,``,u)});let y=i===null?``:t,b=y===``?_.find(e=>e.isDefault):_.find(e=>e.value===y),x=l?.model?UA($e(l.model,l.modelProvider,e.modelCatalog),e.modelCatalog):void 0,S=b?UA(b.value,e.modelCatalog):void 0,C=l?.agentRuntime?.id.trim().toLowerCase(),w=(S?.agentRuntime?.id??(b?.isDefault?e.sessionsResult?.defaults?.agentRuntime?.id:void 0))?.trim().toLowerCase(),ee=!!C&&C===w;!e.modelSwitching&&b&&l?.contextTokens&&ee&&x!==void 0&&x===S&&(b.contextTokens=l.contextTokens);let te=e.modelSelectionLocked===!0&&!d?H(`chat.selectors.lockedSessionModel`):_.find(e=>e.value===d)?.label??WA(d,d||h,e.modelCatalog),ne=e.modelCatalogState??{hasSnapshot:!e.modelsLoading,status:e.modelsLoading?`loading`:`ready`},T=!ne.hasSnapshot&&[`idle`,`loading`].includes(ne.status),re=!!(t||i===null&&n),ie=qA(ne,_.length,re),E=ne.status===`ready`&&(_.some(e=>!e.disabled)||e.modelSelectionLocked===!0&&b!==void 0),ae=e.loading||e.sending||!!e.activeRunId||e.stream!==null,oe=!e.connected||ae||e.modelSwitching||!e.gatewayAvailable,D=!!e.effortMutationDisabledReason,se=oe||!!e.modelMutationDisabledReason,ce=oe||D||!ne.hasSnapshot||o.options.length===0&&o.selection.source==="default",le=e.contextWindowTarget??l??e.sessionsResult?.defaults,ue=le?.contextWindows??[],de=le?.contextWindow??le?.contextWindowDefault??``,fe=le?.contextWindowDefault,pe=oe||D||o.options.length===0&&c.disabled,me=!E&&(T||e.modelPickerOpen===!0),he=E||me;return I`
    <div class="chat-controls__session chat-controls__model chat-controls__model-settings">
      ${EA({accountControl:e.renderAccountControl?.(t||n),contextWindow:ue.length>1?{options:ue,selected:de,...fe?{defaultId:fe}:{},disabled:oe||D,onSelect:async(t,n)=>{await e.onContextWindowSelect?.(t,n)}}:void 0,defaultModelLabel:GA(h),disabled:se,disabledReason:e.modelMutationDisabledReason,modelCatalogState:ne,open:e.modelPickerOpen,modelSelectionLocked:e.modelSelectionLocked===!0,selectionScopeDescription:KA(e.modelSelectionTarget),modelOptions:_,targetGroups:e.modelPickerTargetGroups,selectedModelValue:y,sessionModelPinned:i===`user`,sessionKey:e.sessionKey,triggerModelLabel:GA(te),triggerModelValue:d,triggerStatusLabel:e.modelSelectionLocked?void 0:ie,triggerLoading:!e.modelSelectionLocked&&T&&!re,onModelSetup:e.onModelSetup,onOpen:e.onModelPickerOpen,onOpenChange:e.onModelPickerOpenChange,onModelSelect:async(t,n)=>e.onModelSelect?.(t,n),onTargetRetry:e.onModelPickerTargetRetry,onTargetSelect:e.onModelPickerTargetSelect,onRequestUpdate:e.onRequestUpdate})}
      ${he?zA({disabled:pe,disabledReason:e.effortMutationDisabledReason,fastMode:{...c,disabled:c.disabled||oe||D},sessionKey:e.sessionKey,thinkingDisabled:ce,thinking:o,onFastModeSelect:async(t,n)=>e.onFastModeSelect?.(t,n),onRequestUpdate:e.onRequestUpdate,onThinkingSelect:async(t,n)=>e.onThinkingSelect?.(t,n),reserved:me}):L}
    </div>
  `}var YA;function XA(){return(XA=e((()=>{F(),V(),Tt(),Vr(),ri(),BA(),DA(),YA={"google-gemini-cli":`google`,"moonshot-ai":`moonshot`,moonshotai:`moonshot`,"opencode-go":`opencode`,"opencode-zen":`opencode`}})))()}function ZA(){return(ZA=e((()=>{})))()}function QA(){return(QA=e((()=>{})))()}function $A(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),ui:s(e.ui),components:s(e.components)}}function ej(){return(ej=e((()=>{})))()}function tj(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 nj(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:$A(n.host,r),signal:r}),r.throwIfAborted()}function rj(){return(rj=e((()=>{})))()}function ij(){window.dispatchEvent(new CustomEvent(Pn))}var aj;function oj(){return(oj=e((()=>{Ln(),lv(),aj=Ke(j.debugOverlay)})))()}function sj(){return(sj=e((()=>{oo()})))()}export{uO as $,ym as $a,rl as $c,lv as $i,Cs as $l,US as $n,Lf as $o,xb as $r,ad as $s,pT as $t,vk as A,Th as Aa,nu as Ac,Zv as Ai,ac as Al,hC as An,$p as Ao,bx as Ar,Ld as As,qE as At,Do as Au,BO as B,Vm as Ba,Nl as Bc,Fv as Bi,Ys as Bl,nC as Bn,rp as Bo,ax as Br,Cd as Bs,TE as Bt,Ya as Bu,Wk as C,Vg as Ca,yu as Cc,Xy as Ci,rc as Cl,QC as Cn,Wp as Co,rS as Cr,Qd as Cs,QE as Ct,No as Cu,bk as D,Ah as Da,ou as Dc,Ty as Di,K as Dl,ow as Dn,Vp as Do,qx as Dr,Ud as Ds,YE as Dt,Co as Du,Sk as E,wg as Ea,cu as Ec,Ly as Ei,sc as El,FC as En,Hp as Eo,jx as Er,Jd as Es,UE as Et,_o as Eu,XO as F,qm as Fa,Ql as Fc,Uv as Fi,$s as Fl,wC as Fn,Ep as Fo,_x as Fr,Bd as Fs,AE as Ft,uo as Fu,xO as G,Nm as Ga,kl as Gc,yv as Gi,Fs as Gl,iC as Gn,Wf as Go,Xb as Gr,bd as Gs,bE as Gt,Za as Gu,RO as H,Im as Ha,El as Hc,Mv as Hi,Gs as Hl,_C as Hn,hp as Ho,ex as Hr,Sd as Hs,$T as Ht,Va as Hu,ok as I,sh as Ia,Jl as Ic,Iv as Ii,Rs as Il,sC as In,kp as Io,px as Ir,Od as Is,kE as It,lo as Iu,vO as J,Bm as Ja,wl as Jc,uv as Ji,Ls as Jl,ZS as Jn,Vf as Jo,Gb as Jr,id as Js,fE as Jt,SO as K,Fm as Ka,Al as Kc,Tv as Ki,xs as Kl,JS as Kn,Yf as Ko,Jb as Kr,gd as Ks,uE as Kt,Qa as Ku,ZO as L,Ym as La,Yl as Lc,Bv as Li,Ws as Ll,oC as Ln,wp as Lo,hx as Lr,kd as Ls,BE as Lt,co as Lu,dk as M,fh as Ma,tu as Mc,Gv as Mi,Bs as Ml,vC as Mn,Up as Mo,vx as Mr,Id as Ms,HE as Mt,xo as Mu,qO as N,dh as Na,Zl as Nc,Wv as Ni,Hs as Nl,CC as Nn,Tp as No,Tx as Nr,Vd as Ns,zE as Nt,po as Nu,xk as O,Eh as Oa,iu as Oc,ty as Oi,fc as Ol,$C as On,zp as Oo,kx as Or,Hd as Os,GE as Ot,ho as Ou,YO as P,uh as Pa,$l as Pc,qv as Pi,qs as Pl,TC as Pn,Op as Po,yx as Pr,Fd as Ps,RE as Pt,fo as Pu,$ as Q,jm as Qa,pl as Qc,hv as Qi,Is as Ql,HS as Qn,Ff as Qo,Wb as Qr,od as Qs,mT as Qt,QO as R,Wm as Ra,Rl as Rc,Hv as Ri,zs as Rl,rC as Rn,Xf as Ro,lx as Rr,Dd as Rs,EE as Rt,to as Ru,Xk as S,Gg as Sa,vu as Sc,ob as Si,dc as Sl,GC as Sn,jp as So,iS as Sr,Zd as Ss,dD as St,Po as Su,Ck as T,kg as Ta,pu as Tc,Ny as Ti,oc as Tl,gw as Tn,Zp as To,Fx as Tr,Yd as Ts,tD as Tt,yo as Tu,kO as U,Rm as Ua,Dl as Uc,Dv as Ui,ks as Ul,EC as Un,sp as Uo,Yb as Ur,wd as Us,mE as Ut,no as Uu,LO as V,zm as Va,jl as Vc,jv as Vi,Ks as Vl,dC as Vn,Cp as Vo,rx as Vr,Td as Vs,dE as Vt,Xa as Vu,oO as W,Hm as Wa,Ml as Wc,Ev as Wi,_s as Wl,tC as Wn,gp as Wo,Zb as Wr,xd as Ws,hE as Wt,eo as Wu,bO as X,Cm as Xa,ul as Xc,mv as Xi,fs as Xl,WS as Xn,Rf as Xo,qb as Xr,md as Xs,pE as Xt,TO as Y,Mm as Ya,Tl as Yc,_v as Yi,gs as Yl,XS as Yn,Hf as Yo,zb as Yr,dd as Ys,QT as Yt,wO as Z,Em as Za,xl as Zc,dv as Zi,hs as Zl,KS as Zn,Bf as Zo,Ub as Zr,yd as Zs,hT as Zt,PA as _,v_ as _a,Lu as _c,By as _i,Tc as _l,Vw as _n,Jp as _o,gS as _r,of as _s,lD as _t,es as _u,rj as a,ev as aa,Qu as ac,Ab as ai,qc as al,sT as an,cm as ao,MS as ar,Sf as as,RD as at,bs as au,DA as b,Zg as ba,Eu as bc,lb as bi,yc as bl,vw as bn,em as bo,cS as br,Xd as bs,oD as bt,Bo as bu,ej as c,A_ as ca,$u as cc,Tb as ci,Fc as cl,Yw as cn,dm as co,PS as cr,bf as cs,ID as ct,Os as cu,ZA as d,I_ as da,Zu as dc,fb as di,Lc as dl,qw as dn,qp as do,CS as dr,yf as ds,TD as dt,ds as du,ov as ea,sd as ec,bb as ei,Hc as el,fT as en,Sm as eo,VS as er,jf as es,kD as et,Ts as eu,XA as f,N_ as fa,Ju as fc,Vy as fi,Mc as fl,Gw as fn,Np as fo,wS as fr,pf as fs,cD as ft,Zo as fu,jA as g,y_ as ga,Ru as gc,mb as gi,wc as gl,Mw as gn,Ip as go,dS as gr,cf as gs,CD as gt,$o as gu,FA as h,b_ as ha,Wu as hc,Uy as hi,jc as hl,Hw as hn,Lp as ho,yS as hr,uf as hs,fD as ht,Yo as hu,ij as i,tv as ia,Ku as ic,Fb as ii,sl as il,oT as in,fm as io,zS as ir,Ef as is,GD as it,ps as iu,gk as j,yh as ja,eu as jc,Xv as ji,Vs as jl,gC as jn,Fp as jo,Cx as jr,zd as js,VE as jt,go as ju,yk as k,Dh as ka,au as kc,uy as ki,cc as kl,yC as kn,Yp as ko,Ux as kr,qd as ks,nD as kt,bo as ku,$A as l,U_ as la,Xu as lc,gb as li,Ic as ll,Zw as ln,lm as lo,ES as lr,gf as ls,ED as lt,Es as lu,LA as m,O_ as ma,Hu as mc,Wy as mi,Oc as ml,Uw as mn,Mp as mo,vS as mr,lf as ms,uD as mt,ns as mu,aj as n,rv as na,ed as nc,Db as ni,Gc as nl,cT as nn,gm as no,IS as nr,Df as ns,BD as nt,Ms as nu,tj as o,Z_ as oa,Yu as oc,yb as oi,Rc as ol,rT as on,im as oo,FS as or,Tf as os,UD as ot,ys as ou,JA as p,k_ as pa,Uu as pc,Zy as pi,kc as pl,Ww as pn,Pp as po,TS as pr,ff as ps,aD as pt,Xo as pu,_O as q,Pm as qa,Cl as qc,xv as qi,js as ql,qS as qn,Uf as qo,Ib as qr,pd as qs,rE as qt,$a as qu,oj as r,nv as ra,rd as rc,Ob as ri,Wc as rl,dT as rn,_m as ro,RS as rr,Af as rs,HD as rt,As as ru,nj as s,Q_ as sa,qu as sc,Eb as si,Kc as sl,Xw as sn,am as so,NS as sr,xf as ss,ND as st,Ds as su,sj as t,iv as ta,fd as tc,vb as ti,Bc as tl,uT as tn,pm as to,BS as tr,Pf as ts,zD as tt,Ns as tu,QA as u,M_ as ua,Gu as uc,hb as ui,Pc as ul,Jw as un,Ap as uo,DS as ur,mf as us,DD as ut,G as uu,kA as v,$g as va,Au as vc,Gy as vi,vc as vl,Dw as vn,rm as vo,fS as vr,sf as vs,_D as vt,Ko as vu,Hk as w,Ug as wa,fu as wc,Hy as wi,hc as wl,JC as wn,Xp as wo,Jx as wr,$d as ws,XE as wt,zo as wu,tA as x,qg as xa,Du as xc,db as xi,_c as xl,mw as xn,Bp as xo,sS as xr,nf as xs,mD as xt,Jo as xu,CA as y,Qg as ya,ku as yc,ub as yi,gc as yl,ww as yn,tm as yo,lS as yr,rf as ys,pD as yt,qo as yu,zO as z,ih as za,ql as zc,Pv as zi,Js as zl,aC as zn,_p as zo,dx as zr,Ed as zs,FE as zt,oo as zu};
//# sourceMappingURL=control-ui-boot-shared-CXVvK2AW.js.map