openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
3,490 lines • 592 kB
JavaScript
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./sidebar-attention-panel.runtime-BOkCPpjt.js","./rolldown-runtime-DkW27tQK.js","./control-ui-core-Rwzhj6nO.js","./control-ui-foundation-Cydpkyqa.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-chat-_QSl8fbH.js","./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-chat-Cgwe4GEM.js","./config-runtime-D-5ybyEi.js","./control-ui-boot-shared-CXVvK2AW.js","./control-ui-boot-shared-3juXI2I2.js","./control-ui-boot-shared-BVNXvWX-.js","./control-ui-boot-shared-KspYIvAF.css","./hub-tabs-DLM-pY5z.js","./hub-tabs-D2dXz8I8.css","./sidebar-update-card-CE6rs-4H.js","./update-run-projection-lALEhkx7.js","./sidebar-update-card-BF-_KMrW.css","./sidebar-attention-panel-Dj3u30ct.css","./custodian-alert-store-DfB2H-t3.js","./custodian-alert-store-C8M3qKFB.js","./channel-avatar-Q3fUqgJ5.js","./session-organizer-operations.runtime-ESc5IOoL.js","./worktree-preservation-BzBdreYx.js","./cloud-worker-stop.runtime-CEd3IinU.js","./input-dialog-C6w2KAqY.js","./session-group-defaults-dialog-XW0LKW4M.js","./control-ui-boot-new-Bj2SAUyl.js","./control-ui-boot-new-DTUE5TUM.css","./sidebar-menus-render-kWI1teWE.js","./sidebar-people.runtime-98Tvib7x.js","./portaled-hovercard-CdHol2CK.js","./modal-dialog-DIUpFxKy.js","./session-progress-hovercard.runtime-BGOKu33u.js","./control-ui-boot-chat-CMe3QBDk.js","./control-ui-boot-chat-Bia0O-uD.js","./control-ui-boot-chat-CazDfK3O.js","./control-ui-boot-chat-BhPddYSI.js","./control-ui-boot-chat-C2G5RI6S.css","./control-ui-boot-chat-D85X0PFX.js","./session-progress-hovercard-BM5_ekQd.css"])))=>i.map(i=>d[i]);
import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{$i as n,An as r,Bi as i,Bn as a,Bt as o,Cn as s,En as c,H as l,Hn as u,Ii as d,Ji as f,Kn as p,Li as m,Lt as h,Nn as g,On as _,Qi as v,R as y,Sn as b,U as x,Un as S,Vn as C,Zn as w,_i as ee,aa as te,b as ne,bn as re,ea as ie,en as ae,gi as oe,ii as se,in as ce,it as le,jn as ue,la as de,na as T,oa as fe,ot as pe,qn as E,qt as me,ri as D,ta as O,tt as he,wr as k,y as ge,z as _e,zi as ve,zt as ye}from"./control-ui-foundation-Cydpkyqa.js";import{$s as be,A as xe,Aa as Se,Ao as Ce,As as A,Ba as we,Bi as Te,Bn as Ee,Cc as j,Dc as De,Ds as Oe,Ea as ke,Ec as Ae,Eo as M,Es as je,Fa as Me,Fs as Ne,G as Pe,Ga as Fe,Ha as Ie,Hi as Le,Hs as Re,Ia as ze,Is as Be,J as Ve,Js as He,Ki as Ue,La as We,Ls as N,Ma as Ge,Ms as Ke,Ns as qe,Oa as Je,Oo as Ye,Pa as Xe,Q as Ze,Qs as Qe,Ra as $e,Ri as et,Sc as tt,T as nt,Ta as rt,Ts as it,Uo as at,Us as ot,Va as st,Vo as ct,Vs as lt,Wa as ut,Wi as dt,Wn as ft,X as pt,Y as mt,_t as ht,a as gt,ac as _t,b as vt,ba as yt,bc as bt,ca as xt,cc as St,cn as Ct,cr as wt,cs as Tt,dt as Et,ea as Dt,ec as Ot,ft as kt,ha as At,ht as jt,i as Mt,ic as Nt,ii as Pt,j as Ft,js as It,k as Lt,ko as Rt,ks as zt,la as Bt,lr as Vt,ls as Ht,n as Ut,nc as Wt,ni as Gt,nt as Kt,oa as qt,oi as Jt,os as Yt,p as Xt,pa as Zt,ps as Qt,rc as $t,sa as en,sc as tn,sr as nn,ss as rn,ta as an,tc as on,tt as sn,uc as cn,va as ln,w as un,wc as dn,ws as P,x as fn,xc as pn,y as mn,yc as hn,za as gn,zn as _n,zs as vn}from"./control-ui-core-Rwzhj6nO.js";import{$ as F,C as yn,G as bn,J as xn,K as I,L as Sn,Q as L,U as Cn,X as R,_ as wn,a as Tn,at as z,b as En,c as Dn,d as On,dt as kn,f as An,h as jn,i as Mn,m as Nn,nt as Pn,q as B,st as V,tt as Fn,u as In,v as Ln,z as Rn}from"./lit-runtime-CV_MH99K.js";import{$n as zn,B as Bn,C as Vn,Cn as Hn,D as Un,E as Wn,F as Gn,Fn as Kn,Ft as qn,I as Jn,In as Yn,J as Xn,Kn as Zn,L as Qn,Ln as $n,Mt as er,Nt as tr,Pn as nr,Sn as rr,Tn as ir,V as ar,Xn as or,Yn as sr,Zn as cr,_ as lr,_n as ur,ar as dr,at as fr,b as pr,bn as mr,cn as hr,d as gr,g as _r,gn as vr,h as yr,hn as br,jn as xr,jt as Sr,kn as Cr,lr as wr,m as Tr,nr as Er,pn as Dr,sn as Or,u as kr,un as Ar,ur as jr,v as Mr,vn as Nr,wn as Pr,y as Fr,yn as Ir}from"./control-ui-core-YphAl4aM.js";import{$ as Lr,A as Rr,C as zr,D as Br,E as Vr,G as Hr,Gt as H,Ht as Ur,I as Wr,J as Gr,Jt as Kr,K as qr,Kt as Jr,N as Yr,O as Xr,Q as Zr,Qt as Qr,Rt as $r,St as ei,T as ti,Tt as ni,V as ri,Wt as U,X as ii,Y as ai,Yt as W,Z as oi,an as si,dt as ci,en as G,et as li,ft as ui,ht as di,i as fi,in as pi,j as mi,k as hi,pt as gi,q as _i,r as vi,tt as yi,vt as bi,w as xi,yt as Si}from"./control-ui-core-vvcQQV2m.js";import{B as Ci,Ct as wi,Dt as Ti,Er as Ei,Et as Di,Fr as Oi,Gr as ki,It as Ai,Lr as ji,Nt as Mi,St as Ni,Tt as Pi,U as Fi,Ur as Ii,V as Li,W as Ri,_ as zi,a as Bi,at as Vi,bt as Hi,ct as Ui,d as Wi,dn as Gi,f as Ki,fn as qi,g as Ji,h as Yi,it as Xi,l as Zi,ln as Qi,m as $i,nn as ea,nt as ta,o as na,ot as ra,p as ia,pn as aa,rt as oa,st as sa,t as ca,u as la,un as ua,ut as da,v as fa,vt as pa,wr as ma,wt as ha,xt as ga,y as _a,yt as va,z as ya}from"./control-ui-boot-shared-BYq7Cchl.js";import{a as ba,n as xa,r as Sa}from"./gateway-runtime-Bqqcp9-I.js";import{$i as Ca,$t as wa,Ac as Ta,As as Ea,Bs as Da,Bu as Oa,Cc as ka,Cs as Aa,Dc as ja,Ec as Ma,Fc as Na,Fs as Pa,Gs as Fa,Gu as Ia,Ic as La,Is as Ra,Jn as za,Jo as Ba,Js as Va,Kn as Ha,Lc as Ua,Ls as Wa,Ms as Ga,Ns as Ka,Oc as qa,Pc as Ja,Ps as Ya,Qt as Xa,Ru as Za,Sc as Qa,Ss as $a,Tc as eo,Uu as to,Vs as no,Ws as ro,Xc as io,Xo as ao,Xs as oo,Yc as so,Yn as co,Yo as lo,Zc as uo,Zo as fo,Zs as po,_c as mo,_s as ho,a as go,ac as _o,ba as vo,bc as yo,cc as bo,cs as xo,dc as So,ds as Co,en as wo,fc as To,fs as Eo,gc as Do,gs as Oo,hs as ko,i as Ao,ic as jo,is as Mo,jc as No,js as Po,ks as Fo,lc as Io,mc as Lo,ms as Ro,n as zo,ns as Bo,o as Vo,oc as Ho,pc as Uo,ps as Wo,qc as Go,qn as Ko,qs as qo,qu as Jo,r as Yo,rc as Xo,rs as Zo,s as Qo,sc as $o,ss as es,tc as ts,ts as ns,uc as rs,wc as is,ws as as,xa as os,xc as ss,xs as cs,yc as ls,zu as us}from"./control-ui-boot-shared-CXVvK2AW.js";import{C as ds,D as fs,E as ps,F as ms,I as hs,L as gs,N as _s,O as vs,S as ys,T as bs,a as xs,c as Ss,d as Cs,f as ws,h as Ts,i as Es,k as Ds,l as Os,m as ks,n as As,o as js,p as Ms,r as Ns,s as Ps,t as Fs,u as Is,w as Ls,x as Rs}from"./control-ui-boot-shared-3juXI2I2.js";import{c as zs,f as Bs,g as Vs,h as Hs,l as Us,n as Ws,s as Gs,u as Ks,v as qs,y as Js}from"./control-ui-boot-shared-Deak_Sjt.js";import{i as Ys,t as Xs}from"./control-ui-boot-shared-BVNXvWX-.js";import{A as Zs,E as Qs,F as $s,M as ec,N as tc,O as nc,P as rc,S as ic,T as ac,_ as oc,a as sc,b as cc,d as lc,g as uc,h as dc,j as fc,l as pc,m as mc,o as hc,p as gc,r as _c,s as vc,t as yc,v as bc,w as xc,y as Sc}from"./markdown-runtime-Bn6OdBVq.js";function Cc(e){let t;return n=>{let r=()=>{let r=n.state.scopeId;if(t===void 0){t=r;return}if(r===t)return;let i=t;t=r,e(r,i)};return r(),n.subscribe(r)}}function wc(){return(wc=t((()=>{})))()}function Tc(e){let t=e.now??Date.now,n=e.setTimer??((e,t)=>globalThis.setTimeout(e,t)),r=e.clearTimer??(e=>globalThis.clearTimeout(e)),i=null,a=null,s=null,c=0,l=0,u=!1,d=e=>u&&l===e,f=()=>{a!==null&&(r(a),a=null)},p=(e,t)=>{d(t)&&(f(),a=n(()=>{d(t)&&(a=null,h(t))},o(e,{minMs:Oc})))},m=e=>{if(!d(e))return;c+=1;let t=Math.min(Ac*2**(c-1),jc);p(t,e)},h=n=>{if(s?.generation===n||!d(n)||!i)return;let r=i,a=Promise.resolve().then(()=>e.request(`plugin.surface.refresh`,{surface:`canvas`,observedUrl:r})).then(a=>{if(!d(n)||i!==r)return;let o=Ec(a);if(!o){m(n);return}c=0,i=o.canvasUrl,e.onChange(i);let s=o.expiresAtMs===void 0?kc:Math.max(Oc,o.expiresAtMs-t()-Dc);p(s,n)}).catch(()=>m(n)).finally(()=>{s?.promise===a&&(s=null)});s={generation:n,promise:a}};return{start(t){l+=1,u=!0,c=0,f(),e.onConnectionChange?.(),i=t?.trim()||null,e.onChange(i),i&&h(l)},stop(){!u&&i===null&&a===null||(l+=1,u=!1,c=0,f(),e.onConnectionChange?.(),i=null,e.onChange(null))}}}function Ec(e){if(!e||typeof e!=`object`)return;let t=e;if(t.surface!==`canvas`)return;let n=t.pluginSurfaceUrls;if(!p(n))return;let r=n.canvas;if(typeof r!=`string`||!r.trim())return;let i=t.expiresAtMs;if(!(i!==void 0&&(typeof i!=`number`||!Number.isSafeInteger(i)||i<=0)))return{surface:`canvas`,canvasUrl:r.trim(),...i===void 0?{}:{expiresAtMs:i}}}var Dc,Oc,kc,Ac,jc;function Mc(){return(Mc=t((()=>{ye(),Dc=15e3,Oc=1e3,kc=6e4,Ac=1e3,jc=3e5})))()}function Nc(e,t){if(!Array.isArray(t)||t.length===0||t.length>10)return;let n=[],r=0;for(let i of t){if(!p(i)||typeof i.profileId!=`string`||!i.profileId.trim()||i.profileId.length>256||typeof i.start!=`number`||!Number.isSafeInteger(i.start)||typeof i.end!=`number`||!Number.isSafeInteger(i.end)||i.start<r||i.end<=i.start+1||i.end>e.length||e[i.start]!==`@`||/[\p{L}\p{N}\p{M}_@.%+-]/u.test(e[i.start-1]??``)||!e.slice(i.start+1,i.end).trim())return;for(let t=i.start;t<i.end;t+=1)if(e.charCodeAt(t)<32)return;n.push({profileId:i.profileId,start:i.start,end:i.end}),r=i.end}return n}function Pc(e,t,n=[],r){if(!r&&e===t||n.length===0)return n;let i=0;for(;i<e.length&&i<t.length&&e[i]===t[i];)i+=1;let a=0,o=Math.min(e.length,t.length);for(;a<o&&e[e.length-a-1]===t[t.length-a-1];)a+=1;let s=e.length-a;if(i+a>o&&(s=i+Math.max(0,e.length-t.length),i=o-a),r?.value===e&&!r.inputType.startsWith(`history`)){let n=e.length-t.length,a=r.start,o=r.end;a===o&&r.inputType.startsWith(`delete`)&&n>0&&(r.inputType.endsWith(`Backward`)?a-=n:o+=n);let c=t.length-e.length+o-a;a>=0&&c>=0&&e.slice(0,a)===t.slice(0,a)&&e.slice(o)===t.slice(a+c)&&(i=a,s=o)}let c=t.length-e.length;return Nc(t,n.flatMap(e=>e.end<=i?e.end===i&&/[\p{L}\p{N}\p{M}_-]/u.test(t[i]??``)?[]:[e]:e.start>=s?[{...e,start:e.start+c,end:e.end+c}]:[]))??[]}function Fc(e,t=[]){let n=e.trim(),r=e.length-e.trimStart().length,i=Nc(n,t.map(e=>({...e,start:e.start-r,end:e.end-r})));return{text:n,...i?{mentions:i}:{}}}function Ic(){return(Ic=t((()=>{Mi()})))()}function Lc(e,t){if(!(!t.sendRunId||t.sessionId&&t.sessionId!==(e.sessionInfo?.sessionId??e.sessionId)))return e.inputReceipts?.find(e=>e.runId===t.sendRunId)?.state}function Rc(e,t,n=!1){let r=null;if(!t||!Array.isArray(e))return r;for(let i of e){let e=ki(i);if(e&&(!n||e.role===`user`)&&(e.idempotencyKey===t||e.idempotencyKey===`${t}:user`)&&(r=e,e.id!==null||e.sequence!==null))return e}return r}function zc(e){let t=C(e),n=C(t?.__openclaw),r=n?.seq,i=n?.id??t?.messageId,a=typeof r==`number`&&Number.isSafeInteger(r)&&r>0?`seq:${r}`:typeof i==`string`&&i.trim()?`id:${i}`:null;if(!a)return null;let{recordTimestampMs:o,...s}=n??{},c=n?{...t,__openclaw:s}:t;try{return`${a}:${JSON.stringify(c)}`}catch{return a}}function Bc(){return(Bc=t((()=>{Ii()})))()}function Vc(e){if(!p(e)||e.sessionId!==void 0&&typeof e.sessionId!=`string`)return!1;let t=e.action===`start`?[`action`,`sessionId`]:[`action`,`sessionId`,`goalId`,`previousDraft`];return Object.keys(e).every(e=>t.includes(e))&&(e.action===`start`||e.action===`edit`&&typeof e.goalId==`string`&&e.goalId.length>0&&typeof e.previousDraft==`string`)}function Hc(){return(Hc=t((()=>{})))()}function Uc(e){let t=n(e?.name)??n(e?.username);if(t)return t;let r=n(e?.id);return r?/^([^@\s]+)@[^@\s]+$/.exec(r)?.[1]??r:null}function Wc(e){let t=n(e?.id),r=n(e?.name),i=n(e?.username),a=n(e?.profileAvatarUrl),o=gs(e?.identity);return!t&&!r&&!i&&!a?null:{...o?{identity:o}:{},...t?{id:t}:{},...r?{name:r}:{},...i?{username:i}:{},...a?{profileAvatarUrl:a}:{}}}function Gc(e){return e?e.identity?JSON.stringify(e.identity,Object.keys(e.identity).toSorted()):[e.id??``,e.name??``,e.username??``,e.profileAvatarUrl??``].join(`\0`):null}function Kc(){return(Kc=t((()=>{hs()})))()}function qc(e,t){return e.id===t.id&&e.text===t.text&&JSON.stringify(e.mentions??[])===JSON.stringify(t.mentions??[])&&e.sendRunId===t.sendRunId&&e.sendAttempts===t.sendAttempts&&e.sendState===t.sendState&&e.agentId===t.agentId&&e.sessionKey===t.sessionKey&&e.orderKey===t.orderKey&&e.attachmentPayload?.key===t.attachmentPayload?.key}function Jc(e){return typeof e==`boolean`?e:void 0}function Yc(e){if(!p(e))return null;let t=e,n=T(t.id),r=T(t.mimeType);if(!n||!r)return null;let i={id:n,mimeType:r},a=T(t.fileName);a&&(i.fileName=a),typeof t.sizeBytes==`number`&&Number.isFinite(t.sizeBytes)&&(i.sizeBytes=t.sizeBytes);let o=T(t.dataUrl);return o&&(i.dataUrl=o),i}function Xc(e){if(!p(e))return null;let t=e,n=T(t.id),r=typeof t.text==`string`?t.text:``,i=typeof t.createdAt==`number`&&Number.isFinite(t.createdAt)?t.createdAt:Date.now();if(!n||!r.trim()&&!Array.isArray(t.attachments)&&t.attachmentPayload===void 0&&t.attachmentStorageError===void 0)return null;let a=Array.isArray(t.attachments)?t.attachments.map(Yc).filter(e=>e!==null):[],o={id:n,text:r,createdAt:i},s=Nc(r,t.mentions);if(s&&(o.mentions=s),t.attachmentPayload!==void 0){let e=t.attachmentPayload;p(e)&&typeof e.key==`string`&&typeof e.recoveryScope==`string`&&typeof e.tabId==`string`?o.attachmentPayload={key:e.key,recoveryScope:e.recoveryScope,tabId:e.tabId}:o.attachmentStorageError=`missing`}if((t.attachmentStorageError===`missing`||t.attachmentStorageError===`unavailable`||t.attachmentStorageError===`capacity`)&&(o.attachmentStorageError=t.attachmentStorageError),Array.isArray(t.attachments)&&a.length!==t.attachments.length&&(o.attachmentStorageError=`missing`),o.attachmentPayload&&!a.length&&(o.attachmentStorageError=`missing`),t.intent!==void 0){let e=t.intent;if(!p(e)||Object.keys(e).length!==3||e.kind!==`session-goal-start`||e.version!==1||typeof e.issuedAtMs!=`number`||!Number.isSafeInteger(e.issuedAtMs)||e.issuedAtMs<=0)return null;o.intent={kind:e.kind,version:e.version,issuedAtMs:e.issuedAtMs};let n=T(t.sessionId);n&&(o.sessionId=n),(t.expectedLeafEntryId===null||typeof t.expectedLeafEntryId==`string`)&&(o.expectedLeafEntryId=t.expectedLeafEntryId)}typeof t.orderKey==`number`&&Number.isFinite(t.orderKey)&&(o.orderKey=t.orderKey);let c=Wc(t.sender);c&&(o.sender=c);let l=t.kind===`steered`||T(t.steerTargetRunId)!==void 0||t.sendState===`steering`?`steer`:wi(typeof t.queueMode==`string`?t.queueMode:void 0);l&&(o.queueMode=l),a.length&&(o.attachments=a);let u=Jc(t.refreshSessions);u!==void 0&&(o.refreshSessions=u);let f=T(t.replyToId);f&&(o.replyToId=f),t.sendState===`steering`||t.sendState===`executing-command`?o.sendState=`unconfirmed`:t.sendState===`sending`?o.sendState=`waiting-reconnect`:t.sendState===`failed`||t.sendState===`unconfirmed`||t.sendState===`waiting-idle`||t.sendState===`waiting-reconnect`?o.sendState=t.sendState:t.sendState===`waiting-model`&&(o.sendState=`failed`,o.sendError=$c);let m=T(t.sendError);m&&(o.sendError=m);let h=T(t.sendRunId);h&&(o.sendRunId=h),typeof t.sendAttempts==`number`&&Number.isFinite(t.sendAttempts)&&(o.sendAttempts=t.sendAttempts);let g=T(t.localCommandArgs);g&&(o.localCommandArgs=g);let _=T(t.localCommandName);_&&(o.localCommandName=_);let v=T(t.sessionKey);v&&(o.sessionKey=v);let y=T(t.agentId);return y&&(o.agentId=d(y)),t.mentions!==void 0&&(!Array.isArray(t.mentions)||t.mentions.length!==(s?.length??0))&&(o.sendState=`failed`,o.sendError=G(`chat.mentions.restoreFailed`)),o}function Zc(e){if(!p(e))return null;let t=e,n=typeof t.draft==`string`?t.draft:void 0,r=n?Nc(n,t.draftMentions):void 0;if(t.goalMode!==void 0&&!Vc(t.goalMode))return null;let i=t.goalMode;if(Array.isArray(t.queue)&&t.queue.length>Qc)return null;let a=Array.isArray(t.queue)?t.queue.map(Xc).filter(e=>e!==null):void 0,o=Array.isArray(t.removedQueueItemIds)?t.removedQueueItemIds.map(T).filter(e=>e!==void 0):void 0,s=new Set(o??[]),c=a?.filter(e=>!s.has(e.id)),l=typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)?t.updatedAt:Date.now(),u=(typeof t.draftRevision==`number`&&Number.isSafeInteger(t.draftRevision)?t.draftRevision:void 0)??(n?l:void 0);return!n&&!i&&u===void 0&&(!c||c.length===0)?null:{...t.awaitingDefaults===!0?{awaitingDefaults:!0}:{},...n?{draft:n}:{},...r?{draftMentions:r}:{},...i?{goalMode:i}:{},...u===void 0?{}:{draftRevision:u},...c&&c.length>0?{queue:c}:{},updatedAt:l}}var Qc,$c;function el(){return(el=t((()=>{Ni(),W(),A(),Hc(),Ic(),Kc(),Qc=1e3,$c=`Chat settings update was interrupted. Review and retry when ready.`})))()}function tl(e,t){return e??Error(t)}function nl(e){return new Promise((t,n)=>{e.addEventListener(`success`,()=>t(e.result),{once:!0}),e.addEventListener(`error`,()=>n(tl(e.error,`IndexedDB request failed`)),{once:!0})})}function K(e){return new Promise((t,n)=>{e.addEventListener(`complete`,()=>t(),{once:!0}),e.addEventListener(`abort`,()=>n(tl(e.error,`IndexedDB transaction aborted`)),{once:!0}),e.addEventListener(`error`,()=>n(tl(e.error,`IndexedDB transaction failed`)),{once:!0})})}function rl(){return cl||(cl=new Promise((e,t)=>{if(typeof indexedDB>`u`){t(Error(`IndexedDB is unavailable`));return}let n=indexedDB.open(il,al);n.addEventListener(`upgradeneeded`,()=>{let e=n.result;e.objectStoreNames.contains(`outboxPayloads`)||e.createObjectStore(`outboxPayloads`,{keyPath:`key`});let t=e.objectStoreNames.contains(ol)?n.transaction?.objectStore(ol):e.createObjectStore(ol,{keyPath:`key`});t&&!t.indexNames.contains(sl)&&t.createIndex(sl,sl,{unique:!1})},{once:!0});let r=!1;n.addEventListener(`success`,()=>{let t=n.result;if(r){t.close(),cl=null;return}t.addEventListener(`versionchange`,()=>{t.close(),cl=null}),e(t)},{once:!0}),n.addEventListener(`error`,()=>{cl=null,t(tl(n.error,`IndexedDB open failed`))},{once:!0}),n.addEventListener(`blocked`,()=>{r=!0,t(Error(`IndexedDB upgrade was blocked`))},{once:!0})}),cl)}var il,al,ol,sl,cl;function ll(){return(ll=t((()=>{il=`openclaw-control-ui`,al=2,ol=`composerDrafts`,sl=`ownerKey`,cl=null})))()}function ul(e){return{status:`failed`,reason:e instanceof DOMException&&e.name===`QuotaExceededError`?`capacity`:`unavailable`}}async function dl(e,t){let n=t.reduce((e,t)=>e+t.blob.size,0);if(n>vl)return{status:`failed`,reason:`capacity`};try{let r=(await rl()).transaction(_l,`readwrite`,{durability:`strict`}),i=K(r),a=r.objectStore(_l),o=await nl(a.getAll()).catch(async e=>{throw await i,e}),s=o.reduce((e,t)=>e+(p(t)&&typeof t.bytes==`number`&&Number.isSafeInteger(t.bytes)&&t.bytes>=0?t.bytes:yl),0);if(o.length>=bl||s+n>yl)return await i,{status:`failed`,reason:`capacity`};let c=JSON.stringify([e.gatewayOwner,e.recoveryScope,e.queueId,ut()]);return a.add({key:c,owner:e,bytes:n,attachments:t}),await i,{status:`ready`,value:{key:c,recoveryScope:e.recoveryScope,tabId:e.tabId}}}catch(e){return ul(e)}}async function fl(e,t){if(t.recoveryScope!==e.recoveryScope)return{status:`failed`,reason:`missing`};try{let n=(await rl()).transaction(_l),r=K(n),[i]=await Promise.all([nl(n.objectStore(_l).get(t.key)),r]);if(!p(i)||!p(i.owner)||i.key!==t.key||i.owner.gatewayOwner!==e.gatewayOwner||i.owner.recoveryScope!==e.recoveryScope||i.owner.queueId!==e.queueId||i.owner.tabId!==t.tabId||!Array.isArray(i.attachments)||!i.attachments.length)return{status:`failed`,reason:`missing`};let a=[];for(let e of i.attachments){if(!p(e)||!(e.blob instanceof Blob)||typeof e.mimeType!=`string`||e.fileName!==void 0&&typeof e.fileName!=`string`||e.sizeBytes!==void 0&&e.sizeBytes!==e.blob.size)return{status:`failed`,reason:`missing`};a.push({blob:e.blob,mimeType:e.mimeType,...typeof e.fileName==`string`?{fileName:e.fileName}:{},...typeof e.sizeBytes==`number`?{sizeBytes:e.sizeBytes}:{}})}return i.bytes===a.reduce((e,t)=>e+t.blob.size,0)?{status:`ready`,value:a}:{status:`failed`,reason:`missing`}}catch(e){return ul(e)}}async function pl(e){try{let t=await ml(),n=e.filter(e=>e.tabId===t);if(!n.length)return;let r=(await rl()).transaction(_l,`readwrite`),i=r.objectStore(_l);for(let e of n)i.delete(e.key);await K(r)}catch{}}function ml(){return Sl??=(async()=>{let e=dn();if(!e)throw Error(`Outbox ownership unavailable`);let t=globalThis.navigator?.locks;if(!t){let t=ut();return e.setItem(xl,t),t}let n=e=>new Promise((n,r)=>{t.request(`openclaw-outbox:${e}`,{ifAvailable:!0},e=>(n(!!e),e?new Promise(()=>{}):void 0)).catch(r)}),r=e.getItem(xl),i=r&&await n(r)?r:ut();if(i!==r&&!await n(i))throw Error(`Outbox ownership unavailable`);return e.setItem(xl,i),i})().catch(e=>{throw Sl=null,e})}function hl(e){let t=e.client;if(!t||e.connected&&!t.recoveryScopeReady)return;t.recoveryScopeReady&&t.recoveryScope&&Cl.set(t,t.recoveryScope);let n=Cl.get(t);return n===t.recoveryScope?n:void 0}function gl(e,t){return!t.attachmentPayload||t.attachmentPayload.recoveryScope===hl(e)}var _l,vl,yl,bl,xl,Sl,Cl;function wl(){return(wl=t((()=>{Fe(),ll(),_l=`outboxPayloads`,vl=26214400,yl=262144e3,bl=1e3,xl=`openclaw.control.outboxTab.v1`,Sl=null,Cl=new WeakMap})))()}function Tl(e){jl=Math.max(jl,e??0)}function El(e=0){let t=Math.max(Date.now(),jl+1,e+1);return jl=t,t}function Dl(e,t,n,r){if(r===void 0)return;let i=kl(e,t,n);i.committed=Math.max(i.committed,r)}function Ol(e,t,n,r){let i=kl(e,t,n);i.attempted=Math.max(i.attempted,r)}function kl(e,t,n){let r=Ml.get(e);r||(r=new Map,Ml.set(e,r));let i=r.get(t);i||(i=new Map,r.set(t,i));let a=i.get(n);return a||(a={committed:0,attempted:0},i.set(n,a)),a}function Al(e,t,n,r){let i=Ml.get(e)?.get(t)?.get(n),a=Math.max(r??0,i?.committed??0);return{committed:a,latestAttempt:Math.max(a,i?.attempted??0)}}var jl,Ml;function Nl(){return(Nl=t((()=>{jl=0,Ml=new WeakMap})))()}function Pl(e){return nu.add(e),!ru&&typeof window<`u`&&(ru=!0,window.addEventListener(`storage`,Il)),()=>{nu.delete(e),ru&&nu.size===0&&typeof window<`u`&&(ru=!1,window.removeEventListener(`storage`,Il))}}function Fl(){for(let e of nu)try{e()}catch(e){console.error(`[openclaw] stored chat outbox listener failed`,e)}}function Il(e){if(e.key===null&&e.storageArea){ou.get(e.storageArea)?.clear(),Fl();return}(e.key?.startsWith(eu)||e.key?.startsWith(Zl)||e.key?.startsWith(Ql)||e.key?.startsWith($l))&&(e.storageArea&&ou.get(e.storageArea)?.clear(),Fl())}function Ll(e){let t=e?.trim()||`default`,n=encodeURIComponent(t);return{key:`${eu}${n}`,legacyKey:`${Zl}${n.slice(0,240)}`,previousKey:`${Ql}${n}`,blobKey:`${$l}${n}`,gatewayOwner:t,legacyOwnerIsUnambiguous:n.length<240}}function Rl(e){let t=e.lastIndexOf(`\0agent:`);if(t<1)return null;let n=e.slice(0,t),r=e.slice(t+7),i=N(n)?.agentId;if(i&&d(r)!==d(i))return null;let a=i??(n===`global`&&r!==tu?r:void 0);return{sessionKey:n,...a?{agentId:d(a)}:{}}}function zl(e,t){let n=!1;for(let[r,i]of Object.entries(e.sessions)){if(!i.awaitingDefaults||!zt(t))continue;let a=Rl(r);if(!a)continue;let o=Re(t,a.sessionKey,a.agentId),s=Hl(o),{awaitingDefaults:c,...l}=i,u=e.sessions[s];if(s!==r&&u){let t=new Set(u.queue?.map(e=>e.id)),n=l.queue?.some(e=>t.has(e.id)),i=(l.draftRevision??0)>(u.draftRevision??0);if(n||l.draft&&!i)Wl(e,`pending:${r}`,4,r,l);else{let t=i?l:u;e.sessions[s]={...t,queue:[...u.queue??[],...(l.queue??[]).map(e=>Xl(e,o))],updatedAt:Math.max(l.updatedAt,u.updatedAt)}}}else e.sessions[s]={...l,...l.queue?{queue:l.queue.map(e=>Xl(e,o))}:{}};s!==r&&delete e.sessions[r],n=!0}return n}function Bl(e,t,n){return{scope:Re(e,t,n),awaitingDefaults:!zt(e)}}function Vl(e){return e.agentId??N(e.sessionKey)?.agentId}function Hl(e){let t=e.sessionKey.trim().toLowerCase(),n=Vl(e)??(t===`global`||t===`main`?tu:`main`);return`${e.sessionKey}\u0000agent:${n}`}function Ul(e,t,n=``){return JSON.stringify([e.settings?.gatewayUrl,e.client?.recoveryScope,Hl(t)])+n}function Wl(e,t,n,r,i){let{queue:a,...o}=i,s=new Map;(o.draft||o.goalMode||!a?.length&&o.draftRevision!==void 0)&&s.set(void 0,[]);for(let e of a??[]){let t=e.attachmentPayload?.recoveryScope,n=s.get(t)??[];n.push(e),s.set(t,n)}for(let[a,c]of s)e.recovery[`${t}:${JSON.stringify(a??null)}`]={sourceVersion:n,sourceScopeKey:r,session:{...a===void 0?o:{updatedAt:i.updatedAt,draftRevision:i.draftRevision},...c.length?{queue:c}:{}}}}function Gl(e,t,n,r,i,a){let o=i?Hl(i):n,s=r.queue?.some(e=>e.sessionKey&&e.sessionKey!==i?.sessionKey||e.agentId&&e.agentId!==i?.agentId);i&&!s&&!e.sessions[o]&&Object.keys(e.sessions).length<20?e.sessions[o]={...r,...r.queue?{queue:r.queue.map(e=>({...e,...i}))}:{}}:Wl(e,`${t}:${a}:${n}`,t,n,r)}function Kl(e,t){let n=e.getItem(t.key),r=n?JSON.parse(n):{version:4,gatewayOwner:t.gatewayOwner,sessions:{},recovery:{}};if(n){if(r.version!==4||r.gatewayOwner!==t.gatewayOwner||!r.sessions||!r.recovery)throw Error(`Chat outbox owner or version mismatch`);for(let[n,i]of Object.entries(r.sessions)){let a=Zc(i);if(!a)throw Error(`Invalid chat outbox record`);r.sessions[n]=a,Tl(a.draftRevision),Dl(e,t.key,n,a.draftRevision)}}let i=[];for(let[a,o]of[[t.blobKey,3],[t.previousKey,2],...t.legacyOwnerIsUnambiguous?[[t.legacyKey,1]]:[]]){let s=e.getItem(a);if(!s)continue;let c=Oi(Ei(new TextEncoder().encode(s)));if(r.legacyReceipts?.[o]===c){i.push({key:a,raw:s});continue}let l=JSON.parse(s);if(l.version!==o||o!==1&&l.gatewayOwner!==t.gatewayOwner||!l.sessions)throw Error(`Chat outbox legacy owner or version mismatch`);let u={...r.sessions},d={...r.recovery};for(let[e,t]of Object.entries(l.sessions)){let i=Zc(t),a=p(t)&&Array.isArray(t.removedQueueItemIds)?t.removedQueueItemIds:[],s=p(t)&&Array.isArray(t.queue)?t.queue.filter(e=>!p(e)||!a.includes(e.id)):[];if(!i||s.length!==(i.queue?.length??0))throw Error(`Invalid legacy chat outbox record`);let u=Rl(e),d=u&&(N(u.sessionKey)||o===1&&u.sessionKey===`global`&&u.agentId||u.sessionKey!==`global`&&u.sessionKey!==`main`&&u.sessionKey!==l.mainAlias?.key);if(!n&&o!==1&&u?.sessionKey===`global`){let t=new Map;i.queue=i.queue?.filter(e=>{let n=N(e.sessionKey);if(!n||e.agentId&&e.agentId!==n.agentId)return!0;let i=Hl({sessionKey:e.sessionKey,agentId:n.agentId});if(!t.has(i)&&Object.keys(r.sessions).length+t.size>=20)return!0;let a=t.get(i)??[];return a.push(e),t.set(i,a),!1});for(let[n,a]of t)Gl(r,o,`${e}:${n}`,{queue:a,updatedAt:i.updatedAt},Rl(n),c)}(i.draft||i.goalMode||i.draftRevision!==void 0||i.queue?.length)&&Gl(r,o,e,i,!n&&d?u:null,c)}if(Object.keys(r.recovery).length>iu){r.sessions=u,r.recovery=d,r.recoveryBlocked=!0;continue}r.legacyReceipts={...r.legacyReceipts,[o]:c},i.push({key:a,raw:s})}if(i.length){au.set(r,i);try{Jl(e,t,r)}catch{}}return r}function ql(e,t){let n=ou.get(e),r=n?.get(t.key);if(r)return r;let i=Kl(e,t),a=n??new Map;return a.set(t.key,i),ou.set(e,a),i}function Jl(e,t,n){let r=e.getItem(t.key);if(ou.get(e)?.delete(t.key),Object.keys(n.recovery).length>iu)throw Error(`Chat outbox recovery limit reached; legacy source retained`);let i=Object.entries(n.sessions),a=i.filter(([,e])=>e.queue?.length);if(a.length>20)throw Error(`Chat outbox session limit reached`);let o=i.filter(([,e])=>!e.queue?.length),s=`global\u0000agent:${tu}`,c=(e,t)=>Number(t[1].awaitingDefaults===!0&&!N(t[0]))-Number(e[1].awaitingDefaults===!0&&!N(e[0]))||t[1].updatedAt-e[1].updatedAt||(t[1].draftRevision??0)-(e[1].draftRevision??0)||e[0].localeCompare(t[0]),l=o.find(([e])=>e===s),u=[...l?[l]:[],...o.filter(([e,t])=>e!==s&&!t.draft&&t.draftRevision!==void 0).toSorted(c)].slice(0,20),d=[...[...a.toSorted(c),...o.filter(([e,t])=>e!==s&&!!t.draft).toSorted(c)].slice(0,20),...u];if(d.length===0&&Object.keys(n.recovery).length===0&&!au.has(n)&&!n.legacyReceipts){if(e.removeItem(t.key),e.getItem(t.key)!==null)throw Error(`Chat outbox removal verification failed`);Yl(e,t,r,null);return}if(au.has(n)&&d.length<i.length)throw Error(`Chat outbox migration exceeds retention; source retained`);let f={version:4,gatewayOwner:t.gatewayOwner,sessions:Object.fromEntries(d),recovery:n.recovery,...n.legacyReceipts?{legacyReceipts:n.legacyReceipts}:{}},p=JSON.stringify(f);if(e.setItem(t.key,p),e.getItem(t.key)!==p)throw Error(`Chat outbox write verification failed`);for(let t of au.get(n)??[])if(e.getItem(t.key)===t.raw)try{e.removeItem(t.key)}catch{}au.delete(n),Yl(e,t,r,f)}function Yl(e,t,n,r){if(n)try{if([t.legacyKey,t.previousKey,t.blobKey].some(t=>e.getItem(t)!==null))return;let i=e=>{if(e===null)return[];if(!p(e)||e.version!==4||e.gatewayOwner!==t.gatewayOwner||!p(e.sessions)||!p(e.recovery))throw Error(`Unreadable outbox retention source`);return[...Object.values(e.sessions),...Object.values(e.recovery).map(e=>{if(!p(e))throw Error(`Unreadable recovery source`);return e.session})].flatMap(e=>{if(!p(e)||e.queue!==void 0&&!Array.isArray(e.queue))throw Error(`Unreadable outbox row`);return(e.queue??[]).flatMap(e=>{if(!p(e))throw Error(`Unreadable outbox item`);let t=e.attachmentPayload;if(t===void 0)return[];if(!p(t)||typeof t.key!=`string`||typeof t.recoveryScope!=`string`||typeof t.tabId!=`string`)throw Error(`Unreadable outbox payload reference`);return[{key:t.key,recoveryScope:t.recoveryScope,tabId:t.tabId}]})})},a=new Set(i(r).map(e=>e.key)),o=i(JSON.parse(n)).filter(e=>!a.has(e.key));o.length&&pl(o)}catch{}}function Xl(e,t){let{agentId:n,...r}=e,i=Vl(t);return{...r,sessionKey:t.sessionKey,...i?{agentId:i}:{}}}var Zl,Ql,$l,eu,tu,nu,ru,iu,au,ou;function su(){return(su=t((()=>{ma(),ji(),A(),wl(),el(),Nl(),Zl=`openclaw.control.chatComposer.v1:`,Ql=`openclaw.control.chatComposer.v2:`,$l=`openclaw.control.chatComposer.v3:`,eu=`openclaw.control.chatComposer.v4:`,tu=`@unresolved`,nu=new Set,ru=!1,iu=80,au=new WeakMap,ou=new WeakMap})))()}function cu(e){return e.orderKey??e.createdAt}function lu(e,t){return cu(e)-cu(t)}function uu(e){return!e.pendingRunId&&!e.intent&&(e.sendState===void 0||e.sendState===`waiting-idle`||e.sendState===`waiting-reconnect`||e.sendState===`failed`)}function du(e,t=uu){let n=[],r=[];for(let i of e.toSorted(lu)){if(t(i)){r.push(i);continue}r.length>0&&(n.push(r),r=[])}return r.length>0&&n.push(r),n}function fu(e,t,n){let r=e.toSorted(lu),i=r.findIndex(e=>e.id===t),a=Math.min(Math.max(n,0),r.length-1);if(i<0||i===a)return[];let o=r.map(cu);for(let e=1;e<o.length;e+=1)o[e]=Math.max(o[e],o[e-1]+1);let s=r.splice(i,1)[0];return r.splice(a,0,s),r.flatMap((e,t)=>cu(e)===o[t]?[]:[{...e,orderKey:o[t]}])}function pu(){return(pu=t((()=>{})))()}function mu(e){let t=dn();if(!t)return[];try{let n=Ll(e.settings?.gatewayUrl),r=ql(t,n);if(zl(r,e))try{Jl(t,n,r)}catch{}return Object.entries(r.sessions).flatMap(([t,n])=>{let r=Rl(t);return r?[{scope:r,session:{...n,queue:n.queue?.filter(t=>gl(e,t))}}]:[]})}catch{return[]}}function hu(e){return mu(e).flatMap(({scope:e,session:t})=>t.queue?.length?[{...e,queue:t.queue.toSorted(lu)}]:[]).toSorted((e,t)=>(e.queue[0]?.createdAt??2**53-1)-(t.queue[0]?.createdAt??2**53-1)||e.sessionKey.localeCompare(t.sessionKey))}function gu(e){let t=new Map,n=new Set;for(let{scope:r,session:i}of mu(e)){let e=Hl(r);i.draft&&n.add(e);let a=t.get(e)??{all:new Set,attention:new Set};for(let e of i.queue??[])e.pendingRunId||(a.all.add(e.id),(e.sendState===`failed`||e.sendState===`unconfirmed`)&&a.attention.add(e.id));a.all.size&&t.set(e,a)}let r=new Map,i=0;for(let[e,n]of t)i+=n.all.size,n.attention.size&&r.set(e,n.attention.size);let a=t=>Hl(Re(e,t));return{total:i,attentionCountForSession:e=>r.get(a(e))??0,hasSessionDraft:e=>n.has(a(e))}}function _u(){return(_u=t((()=>{A(),wl(),su()})))()}function vu(e){return xu.has(e)}function yu(e){let t=e.work.recovery;return{id:t.messageId,text:t.message,...t.mentions?.length?{mentions:t.mentions}:{},attachments:e.attachments,createdAt:e.createdAt,sessionKey:t.sessionKey,agentId:t.agentId,sendRunId:t.messageId,sendAttempts:1,sendState:e.work.kind===`checking`?`unconfirmed`:t.phase===`paused`?t.reason===`unconfirmed`?`unconfirmed`:`failed`:`sending`,...t.phase===`paused`?{sendError:t.error}:{}}}function bu(e){let t=new Set,n=new Map,r=Ie(e.gateway.snapshot),i=()=>{for(let e of t)e()},a=e=>{for(let[t,r]of n)if(P(t,e))return{key:t,entry:r};return null},o=e=>a(e.owner.sessionKey)?.entry===e,s=t=>{let n=e.gateway.snapshot;return!!(t.retainsConnection()&&r.isCurrent(t.scope)&&n.client?.recoveryScopeReady)},c=e=>{let t=e.persistRecovery?Ia(e.owner.gatewayUrl,e.owner.recoveryScope,e.owner.sessionKey):null;return o(e)&&(!t||t.messageId===e.owner.messageId)},l=e=>s(e)&&c(e),u=(e,t=!0)=>{let r=a(e.owner.sessionKey);r?.entry===e&&(n.delete(r.key),t&&i())},d=(t,n,r)=>{e.chatSubmissions.retain(Go(t.owner.sessionKey,{text:n.message,mentions:n.mentions,attachments:t.attachments,createdAt:t.createdAt},t.scope.client,r.messageId))},f=t=>{l(t)&&e.sessions.refresh({force:!0,backgroundHydrate:!0}).catch(()=>void 0)},p=(e,t,n)=>{let{recovery:r}=to(t,n,e.persistRecovery);e.work={kind:`paused`,recovery:r},i()},m=(t,n,r)=>{let a=n;La({client:t.scope.client,recovery:a,persistRecovery:t.persistRecovery,cleanupOnCancellation:()=>!t.persistRecovery&&t.work.kind!==`paused`,recovering:r,isLifecycleCurrent:()=>s(t),ownsRecovery:()=>c(t),clearRecovery:()=>Za(t.owner.gatewayUrl,t.owner.recoveryScope,t.owner.sessionKey,t.owner.messageId),setRecoveryPhase:e=>{a={...a,phase:e},t.work={kind:`running`,recovery:a},i()}}).then(n=>{if(!c(t)||!t.retainsConnection()){u(t);return}if(n.status===`paused`){t.work={kind:`paused`,recovery:n.recovery},i(),g(e.gateway.snapshot);return}if(n.status===`cancelled`&&n.cleanupError){p(t,a,n.cleanupError),g(e.gateway.snapshot);return}if(!s(t)){n.status!==`interrupted`&&u(t);return}n.status===`started`&&d(t,a,n),u(t)}).catch(e=>{l(t)&&p(t,a,M(e))}).finally(()=>f(t))},h=t=>{if(t.recovery.phase===`creating`)return;r.transition(e.gateway.snapshot);let o=a(t.recovery.sessionKey)?.entry;if(o&&l(o)&&o.owner.messageId===t.recovery.messageId&&(o.work.kind!==`paused`||t.recovery.phase===`paused`))return;o&&u(o,!1);let s=r.capture();if(!s)return;let c={sessionKey:t.recovery.sessionKey,messageId:t.recovery.messageId,gatewayUrl:t.recovery.gatewayUrl,recoveryScope:t.recovery.recoveryScope},d={work:t.recovery.phase===`paused`?{kind:`paused`,recovery:t.recovery}:{kind:t.recovery.phase===`sending`?`checking`:`running`,recovery:t.recovery},owner:c,attachments:Na(t.recovery.attachments),persistRecovery:t.persistRecovery,createdAt:t.createdAt,scope:s,retainsConnection:Mr(e.gateway,c)};n.set(c.sessionKey,d),i(),t.recovery.phase!==`paused`&&m(d,t.recovery,t.recovering)},g=t=>{if(r.transition(t),t.phase===`connected`&&!(!t.client?.recoveryScopeReady||!t.client.recoveryScope)){for(let e of n.values())e.work.kind!==`running`&&!s(e)&&e.retainsConnection()&&c(e)&&h({recovery:e.work.recovery,persistRecovery:e.persistRecovery,recovering:!0,createdAt:e.createdAt});for(let n of Oa(e.gateway.connection.gatewayUrl,t.client.recoveryScope))h({recovery:n,persistRecovery:!0,recovering:!0,createdAt:Date.now()})}};return{resumeRecovery:()=>g(e.gateway.snapshot),hasPendingTurn(e){let t=a(e)?.entry;return!!(t&&t.retainsConnection()&&c(t))},get(t){let n=a(t)?.entry;if(!n||!l(n))return null;let r=n.work.kind===`running`?n.work.recovery.phase===`sending`?`sending`:`pending`:`failed`;if(r===`pending`){let t=(e.sessions.state.result?.sessions.find(e=>P(e.key,n.owner.sessionKey)))?.placement?.state;t&&vu(t)&&(r=t)}return{sessionKey:n.owner.sessionKey,targetKind:n.work.recovery.target.kind,phase:r,startedAt:n.createdAt,initialTurn:yu(n),...n.work.kind===`running`?{}:{...n.work.recovery.phase===`paused`?{error:n.work.recovery.error}:{},retryable:!0,action:n.work.kind===`checking`||n.work.recovery.phase===`paused`&&n.work.recovery.reason===`unconfirmed`?`check-delivery`:`retry`}}},start:h,pause(e,t){let n=a(e)?.entry;if(!n||!l(n))return;let{recovery:r}=to(n.work.recovery,t,n.persistRecovery);n.work={kind:`paused`,recovery:r},u(n,!1),h({recovery:r,persistRecovery:n.persistRecovery,recovering:!0,createdAt:n.createdAt})},retry(e){let t=a(e)?.entry;if(!t||t.work.kind!==`paused`||!l(t))return;if(t.work.recovery.reason===`unconfirmed`){t.work={kind:`checking`,recovery:t.work.recovery},i(),m(t,t.work.recovery,!0);return}let{reason:n,error:r,...o}=t.work.recovery,s={...o,phase:`dispatching`,messageId:n===`rejected`?ut():o.messageId};if(t.persistRecovery&&!Jo(s,o.messageId)){p(t,t.work.recovery,`placement recovery storage is unavailable`);return}h({recovery:s,persistRecovery:t.persistRecovery,recovering:!1,createdAt:t.createdAt})},subscribe(e){return t.add(e),()=>t.delete(e)},dispose(){r.dispose(),n.clear(),t.clear()}}}var xu;function Su(){return(Su=t((()=>{Ye(),A(),us(),Ua(),Fe(),Ja(),so(),Fr(),xu=new Set([`requested`,`provisioning`,`syncing`,`starting`,`active`])})))()}function Cu(){let e,t=new Promise((t,n)=>{e=setTimeout(()=>n(Error(`Service worker not ready (timed out)`)),Uu)});return Promise.race([navigator.serviceWorker.ready,t]).finally(()=>{e!==void 0&&clearTimeout(e)})}function wu(e){let t=e?.pushManager;return t&&typeof t.getSubscription==`function`?t:null}function Tu(e){let t=wu(e);if(!t||typeof t.subscribe!=`function`)throw Error(`Web Push is unavailable in this browser. On iPhone or iPad, add OpenClaw to the Home Screen and open the installed app.`);return t}function Eu(e){let t=(e+`=`.repeat((4-e.length%4)%4)).replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e+=1)r[e]=n.charCodeAt(e);return r}async function Du(){return`serviceWorker`in navigator?await wu(await navigator.serviceWorker.getRegistration())?.getSubscription()??null:null}async function Ou(e){let t=(await e.request(`push.web.vapidPublicKey`,{})).vapidPublicKey;if(!t)throw Error(`Failed to retrieve VAPID public key`);return Eu(t)}function ku(e,t){let n=e.options.applicationServerKey;if(!n)return!1;let r=new Uint8Array(n);return r.length===t.length&&r.every((e,n)=>e===t[n])}function Au(e){let t=e.toJSON();if(!t.endpoint||!t.keys?.p256dh||!t.keys.auth)throw Error(`Invalid push subscription from browser`);return{endpoint:t.endpoint,keys:{p256dh:t.keys.p256dh,auth:t.keys.auth}}}async function ju(e,t,n){return ku(t,n)?(await e.request(`push.web.subscribe`,Au(t)),{state:`registered`}):(await e.request(`push.web.unsubscribe`,{endpoint:t.endpoint}).catch(()=>void 0),{state:`vapid-mismatch`,error:Wu})}async function Mu(e,t){return{subscription:t.state,preferences:t.state===`registered`?await Bu(e):null,error:t.state===`vapid-mismatch`?t.error:null}}async function Nu(e){let t=await Du();return await Mu(e,t?await ju(e,t,await Ou(e)):{state:`missing`})}function Pu(e){let t=null,n=0,r=!1,i=async(t,i)=>{let a;try{a=await Nu(t)}catch(e){a={error:M(e)}}!r&&i===n&&e.gateway.snapshot.phase===`connected`&&e.gateway.snapshot.client===t&&e.publish(a)},a=r=>{let a=r.phase===`connected`?r.client:null;if(a===t)return;t=a;let o=++n;if(e.publish({subscription:`unknown`,preferences:null,error:null}),a){let t=()=>i(a,o);(e.connectionBootstrap?.run(`web-push-reconcile`,t)??t()).catch(()=>void 0)}},o=e.gateway.subscribe(a),s=e.gateway.subscribeEvents(t=>{let r=t.payload,a=e.gateway.snapshot.client;t.event!==`users.prefs.changed`||!a||!r||typeof r!=`object`||!(`profileId`in r)||r.profileId!==e.gateway.snapshot.selfUser?.id||!(`keys`in r)||!Array.isArray(r.keys)||!r.keys.includes(Gu)||i(a,++n)});return a(e.gateway.snapshot),()=>{r=!0,n+=1,o(),s()}}function Fu(e){let t=null;return{run(n){let r=e.gateway.snapshot.client;if(!r)return Promise.resolve();let i=()=>e.gateway.snapshot.phase===`connected`&&e.gateway.snapshot.client===r;t||e.publish({loading:!0,error:null});let a=(t??Promise.resolve()).then(async()=>{if(!i())throw Error(`Gateway changed before the notification change could be saved.`);e.publish({error:null});let t=await Hu(r,n);i()&&e.publish(t)}).catch(t=>{i()&&e.publish({error:M(t)})}).finally(()=>{t===a&&(t=null,e.publish({loading:!1,permission:`Notification`in window?Notification.permission:`unsupported`}))});return t=a,a},dispose:Pu(e)}}async function Iu(e){let t=await Notification.requestPermission();if(t!==`granted`)throw Error(`Notification permission ${t}`);let n=Tu(await Cu()),r=await Ou(e),i=await n.getSubscription();if(i)return await ju(e,i,r);let a=await n.subscribe({userVisibleOnly:!0,applicationServerKey:r.buffer});try{return await ju(e,a,r)}catch(e){try{await a.unsubscribe()}catch{}throw e}}async function Lu(e){let t=await Du();if(t){try{await e.request(`push.web.unsubscribe`,{endpoint:t.endpoint})}catch{}await t.unsubscribe()}}async function Ru(e){await e.request(`push.web.test`,{})}async function zu(){let e=await Du();if(!e)throw Error(`Enable notifications before changing notification preferences.`);return e}async function Bu(e){let t=await zu();return await e.request(`push.web.preferences.get`,{endpoint:t.endpoint})}async function Vu(e,t,n){let r=await zu();return await e.request(`push.web.preferences.set`,{endpoint:r.endpoint,scope:t,preferences:n}),await Bu(e)}async function Hu(e,t){switch(t.kind){case`enable`:return await Mu(e,await Iu(e));case`disable`:return await Lu(e),{subscription:`missing`,preferences:null};case`test`:return await Ru(e),{};case`set`:return{preferences:await Vu(e,t.scope,t.preferences)};default:return t}}var Uu,Wu,Gu;function Ku(){return(Ku=t((()=>{Ye(),Uu=1e4,Wu=`This browser push subscription belongs to another Gateway. Open this Gateway's own Control UI, or configure every mutually trusted Gateway behind this PWA with the same VAPID keypair.`,Gu=`notifications.web.v1`})))()}function qu(e,t=null,n){let r=n===void 0&&e.agent?cn(e.agent,t):n??null;if(r)return R`<img class="agent-select__avatar" src=${r} alt="" loading="lazy" />`;if(e.icon)return R`<span class="agent-select__avatar agent-select__avatar--icon" aria-hidden="true"
>${e.icon}</span
>`;let i=e.agent?Qt(e.agent,t):null,a=tn(e.label)||`?`;return R`
<span
class="agent-select__avatar agent-select__avatar--text"
data-avatar=${i??a}
aria-hidden="true"
></span>
`}function Ju(e){return R`
<span class="agent-select__option-copy">
<span class="agent-select__option-label">${e.label}</span>
${e.description?R`<span class="agent-select__option-description">${e.description}</span>`:B}
</span>
`}var Yu;function Xu(){return(Xu=t((()=>{ne(),ge(),I(),F(),En(),W(),Yt(),St(),ka(),tt(),H(),oi(),Yu=class extends bt{constructor(...e){super(...e),this.options=[],this.value=``,this.placeholder=``,this.accessibleLabel=``,this.menuLabel=``,this.identityById={},this.disabled=!1,this.onSelect=()=>{},this.onCreateAgent=null,this.avatarLoader=new Qa(this),this.handleSelect=e=>{if(this.disabled){e.preventDefault();return}let t=e.detail.item;if(t.hasAttribute(`data-create-agent`)){this.onCreateAgent?.();return}let n=t.value??t.getAttribute(`value`);if(n!=null){if(n===this.value){e.preventDefault();let t=e.currentTarget;t.querySelector(`[slot="trigger"]`)?.focus({preventScroll:!0}),t.open=!1;return}this.onSelect(n)}},this.handleAfterShow=e=>{let t=e.currentTarget,n=Array.from(t.querySelectorAll(`wa-dropdown-item[data-agent-option]:not([disabled])`)),r=n.find(e=>e.hasAttribute(`data-selected`))??n[0];if(r){for(let e of n)e.active=e===r;r.focus({preventScroll:!0}),r.scrollIntoView?.({block:`nearest`})}}}willUpdate(e){if(e.has(`disabled`)&&this.disabled){let e=this.querySelector(`wa-dropdown`);e&&(e.open=!1)}}renderAvatar(e){let t=e.agent?.id,n=t?this.identityById[t]??null:null,r=e.agent?cn(e.agent,n):null;return qu(e,n,r?this.avatarLoader.resolve(r):null)}render(){return this.avatarLoader.withActiveRoutes(()=>this.renderContent())}renderContent(){let e=this.options.find(e=>e.value===this.value),t=!e&&this.value?{value:this.value,label:this.value,agent:{id:this.value}}:null,n=e??t,r=this.disabled||this.options.length===0&&!this.onCreateAgent,i=n?.label??(this.placeholder||G(`agents.noAgents`)),a=e?.badge,o=a?`${i}, ${a}`:i;return R`
<wa-dropdown
class="agent-select"
placement="bottom-start"
aria-label=${this.accessibleLabel||i}
@wa-select=${this.handleSelect}
@wa-after-show=${this.handleAfterShow}
>
<button
slot="trigger"
type="button"
class="agent-select__trigger"
aria-label=${this.accessibleLabel?`${this.accessibleLabel}: ${o}`:o}
?disabled=${r}
>
${n?this.renderAvatar(n):B}
<span class="agent-select__label">${i}</span>
${a?R`<span class="agent-select__badge">${a}</span>`:B}
<span class="agent-select__chevron" aria-hidden="true">${U.chevronDown}</span>
</button>
${this.menuLabel?R`<div class="agent-select__menu-title">${this.menuLabel}</div>`:B}
${this.options.map(e=>{let t=e.value===this.value,n=[e.label,e.description,e.badge].filter(Boolean).join(`, `);return R`
<wa-dropdown-item
class="agent-select__option"
data-agent-option
?data-selected=${t}
aria-label=${n}
.value=${e.value}
?disabled=${this.disabled||e.disabled}
${yn(e=>Zr(e,t))}
>
<span slot="icon">${this.renderAvatar(e)}</span>
${Ju(e)}
<span slot="details" class="agent-select__option-state" aria-hidden="true">
${e.badge?R`<span class="agent-select__badge">${e.badge}</span>`:B}
${t?R`<span class="agent-select__option-check">${U.check}</span>`:B}
</span>
</wa-dropdown-item>
`})}
${this.onCreateAgent?R`
${this.options.length>0?R`<div class="agent-select__separator" role="separator"></div>`:B}
<wa-dropdown-item
class="agent-select__option"
data-create-agent
?disabled=${this.disabled}
>
<span slot="icon" class="agent-select__footer-icon" aria-hidden="true"
>${U.users}</span
>
<span class="agent-select__option-label">${G(`custodian.newAgent`)}</span>
</wa-dropdown-item>
`:B}
</wa-dropdown>
`}},k([V({attribute:!1})],Yu.prototype,`options`,void 0),k([V({attribute:!1})],Yu.prototype,`value`,void 0),k([V({attribute:!1})],Yu.prototype,`placeholder`,void 0),k([V({attribute:!1})],Yu.prototype,`accessibleLabel`,void 0),k([V({attribute:!1})],Yu.prototype,`menuLabel`,void 0),k([V({attribute:!1})],Yu.prototype,`identityById`,void 0),k([V({attribute:!1})],Yu.prototype,`disabled`,void 0),k([V({attribute:!1})],Yu.prototype,`onSelect`,void 0),k([V({attribute:!1})],Yu.prototype,`onCreateAgent`,void 0)})))()}function Zu(e){let t=Date.now();return e!=null&&Number.isFinite(e)&&e<=t&&t-e<6e4?G(`common.now`):un(e,{fallback:``,suffix:e!=null&&e>t})}function Qu(e){return e!==void 0&&e<0xe8d4a51000?e*1e3:e}function $u(e){let t=Xe(e.sessionKey);for(let n of e.catalogs)for(let r of n.hosts)for(let i of r.sessions){let a=i.sessionKey??Se({catalogId:n.id,hostId:r.hostId,threadId:i.threadId}),o=t?.catalogId===n.id&&t.hostId===r.hostId&&t.threadId===i.threadId;if(a!==e.sessionKey&&!o)continue;let s=O(i.cwd),c=O(i.gitBranch);return{...e.liveRow,hasAutomation:e.liveRow?.hasAutomation===!0,label:e.liveRow?.label??(i.name||i.threadId),color:e.liveRow?e.liveRow.color:i.color,createdActor:e.liveRow?.createdActor??i.createdActor,createdAt:e.liveRow?.createdAt??Qu(i.createdAt),updatedAt:e.liveRow?.updatedAt??Qu(i.updatedAt),workContext:s?c||i.pullRequest?{kind:`project`,name:We(s),path:s,...c?{branch:c}:{}}:{kind:`workspace`,name:We(s),path:s}:e.liveRow?.workContext}}return e.liveRow}function ed(e){let t=new Set;for(let n of e)for(let e of n.hosts)for(let n of e.sessions)n.sessionKey&&t.add(n.sessionKey);return t}function td(e,t,n){return n?[]:e.filter(e=>!t.has(e.id))}function nd(e,t,n=new Map){let r=[];for(let i of e){let e=i.sessions.filter(e=>{if(!t)return!0;let r=e.sessionKey;return(r&&n.has(r)&&r?n.get(r):e.createdActor?.id)===t});e.length>0&&r.push(e.length===i.sessions.length?i:{...i,sessions:e})}return r}function rd(e,t){return e.map(e=>e.id===t.catalogId?{...e,hosts:e.hosts.map(e=>e.hostId===t.hostId?{...e,sessions:e.sessions.map(e=>e.threadId===t.threadId?{...e,sessionKey:t.sessionKey}:e)}:e)}:e)}function id(){return(id=t((()=>{W(),Lt(),Me(),Ge()})))()}function ad(e){let t=e.draggable!==!1&&!e.disabledReason;return R`
<div
class="sidebar-recent-sessions__head ${t?`sidebar-recent-sessions__head--draggable`:``}"
draggable=${t?`true`:`false`}
title=${e.disabledReason??B}
@mousedown=${e=>{e.currentTarget.toggleAttribute(`data-section-drag-blocked`,!!e.target.closest(`button, a`))}}
@mouseup=${e=>{e.currentTarget.removeAttribute(`data-section-drag-blocked`)}}
@dragstart=${n=>{if(!t){n.preventDefault();return}let r=n.currentTarget,i=!!n.target.closest(`button, a`)||r.hasAttribute(`data-section-drag-blocked`);if(r.removeAttribute(`data-section-drag-blocked`),i){n.preventDefault();return}n.dataTransfer&&(To(n.dataTransfer,e.sectionId),e.onStartDrag(e.sectionId))}}
@dragend=${t=>{t.currentTarget.removeAttribute(`data-section-drag-blocked`),e.onFinishDrag()}}
@mouseenter=${yo}
@mouseleave=${ss}
@contextmenu=${e.onContextMenu??B}
>
<span class="sidebar-session-group-drag-handle" aria-hidden="true"></span>
${e.content}
</div>
`}function od(){return(od=t((()=>{I(),mo(),Xo()})))()}function sd(e){switch(e.kind){case`question`:case`approval`:return 3;case`agent`:return 2;case`error`:return 1;case`none`:return 0;default:return e}}function cd(e,t=0){return t===1?e.hasActiveRun:t===2?e.attention.kind!==`none`:e.visuallyActive||e.containsActiveDescendant||e.hasActiveRun||e.runningChildCount>0||e.attention.kind!==`none`}function ld(e){let t=Math.max(0,e.scrollHeight-e.clientHeight);return t<=1?`none`:e.scrollTop<=1?`top`:e.scrollTop>=t-1?`bottom`:`middle`}function ud(e){return`sidebar-session-meta-${encodeURIComponent(e)}`}function dd(e){return`sidebar-session-state-${encodeURIComponent(e)}`}function fd(){return ts(j()?.getItem(Bd))}function pd(){return Do(j()?.getItem(Vd))}function md(){return j()?.getItem(Ud)===`true`}function hd(){return j()?.getItem(Hd)===`true`}function gd(){return j()?.getItem(Wd)===`true`}function _d(){return j()?.getItem(Gd)===`true`}function vd(){let e=j()?.getItem(Kd);return e===`archived`||e===`all`?e:`active`}function yd(e,t){return`${Xd}${me(e)}:${encodeURIComponent(t)}`}function bd(e,t){try{let n=j()?.getItem(yd(e,t)),r=n?.startsWith(`owner:`)?n.slice(6).trim():``;return{ownerId:n===`involving-me`?null:r||null,involvingMe:n===`involving-me`}}catch{return{ownerId:null,involvingMe:!1}}}function xd(){let e=j()?.getItem(qd);return e===`updated`||e===`people`?e:`created`}function Sd(){try{let e=j()?.getItem(Jd);if(e==null)return new Set([`work`]);let t=JSON.parse(e);return new Set(Array.isArray(t)?t.flatMap(e=>typeof e==`string`&&e?[e]:[]):[])}catch{return new Set([`work`])}}function Cd(){try{let e=JSON.parse(j()?.getItem(Yd)??`[]`);return new Set(Array.isArray(e)?e.flatMap(e=>typeof e==`string`&&e?[e]:[]):[])}catch{return new Set}}function wd(e){j()?.setItem(Bd,e)}function Td(e){j()?.setItem(Vd,e)}function Ed(e){j()?.setItem(Ud,String(e))}function Dd(e){j()?.setItem(Hd,String(e))}function Od(e){j()?.setItem(Wd,String(e))}function kd(e){j()?.setItem(Gd,String(e))}function Ad(e){j()?.setItem(Kd,e)}function jd(e,t,n){try{let r=j(),i=yd(e,t),a=n.involvingMe?`involving-me`:n.ownerId?`owner:${n.ownerId}`:null;a===null?r?.removeItem(i):r?.setItem(i,a)}catch{}}function Md(e,t){return e===`people`&&!t?`created`:e}function Nd(e,t){let n=Md(e,t!==!1);try{j()?.setItem(qd,n)}catch{}return n}function Pd(e){j()?.setItem(Jd,JSON.stringify([...e]))}function Fd(e){j()?.setItem(Yd,JSON.stringify([...e])),typeof window<`u`&&window.dispatchEvent(new CustomEvent(Zd))}function Id(e,t){let n=new Set(Cd());t?n.add(e):n.delete(e),Fd(n)}function Ld(e,t){return`${e}\u0000${t}`}var Rd,zd,Bd,Vd,Hd,Ud,Wd,Gd,Kd,qd,Jd,Yd,Xd,Zd,Qd,$d;function q(){return(q=t((()=>{po(),Rd={kind:`none`},zd=function(e){return e[e.Any=0]=`Any`,e[e.ActiveRun=1]=`ActiveRun`,e[e.Attention=2]=`Attention`,e}({}),Bd=`openclaw:sidebar:sessions:grouping`,Vd=`openclaw:sidebar:sessions:catalog-grouping`,Hd=`openclaw:sidebar:sessions:show-preview`,Ud=`openclaw:sidebar:sessions:show-cron`,Wd=`openclaw:sidebar:sessions:show-system`,Gd=`openclaw:sidebar:sessions:hide-empty-groups`,Kd=`openclaw:sidebar:sessions:status-filter`,qd=`openclaw:sidebar:sessions:sort-mode`,Jd=`openclaw:sidebar:sessions:collapsed-sections`,Yd=`openclaw:sidebar:sessions:hidden-catalogs`,Xd=`openclaw.control.sidebarSessionOwnerFilter.v1:`,Zd=`openclaw:sidebar-hidden-catalogs-changed`,Qd=[{mode:`created`,labelKey:`chat.sidebar.sortCreated`},{mode:`updated`,labelKey:`chat.sidebar.sortUpdated`},{mode:`people`,labelKey:`sessionsView.owners`}],$d=[`active`,`archived`,`all`]})))()}function ef(e){return e.split(/[-_]+/u).filter(Boolean).map(e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(` `)}function tf(e){return df[e]??ef(e)}function nf(e){let t=e.indexOf(`/`);return(t>0?e.slice(0,t).trim().toLowerCase():``)||null}function rf(e){let t=e.trim().toLowerCase(),n=uf[t]??t;return lf.has(n)?n:null}function af(e){return rf(e)!==null}function of(e){return nr(`provider-icons/ProviderIcon-${e}.svg`)}function sf(e,t){let n=t?.className?` ${t.className}`:``,r=De(e.trim().toUpperCase(),1)||`?`;return R`
<span
class="provider-brand-icon provider-brand-icon--fallback${n}"
aria-hidden="true"
>
${r}
</span>
`}function cf(e,t){let n=t?.className?` ${t.className}`:``,r=rf(e);return r?R`
<span
class="provider-brand-icon${n}"
data-provider-icon=${r}
style=${`--provider-icon-url: url("${of(r)}")`}
aria-hidden="true"
></span>
`:sf(e,t)}var lf,uf,df;function ff(){return(ff=t((()=>{I(),Kn(),Ae(),lf=new Set(`abacus.alibaba.amp.antigravity.arcee.augment.baseten.bedrock.byteplus.cerebras.chutes.claude.clawrouter.cloudflare.codebuff.codex.cohere.comfy.commandcode.copilot.crof.crossmodel.cursor.deepgram.deepinfra.deepseek.devin.doubao.elevenlabs.factory.fal.featherless.fireworks.gemini.grok.groq.huggingface.jetbrains.kilo.kimi.kiro.litellm.llamacpp.llmproxy.lmstudio.longcat.manus.meta.microsoft.mimo.minimax.mistral.novita.nvidia.ollama.opencode.opencodego.openrouter.perplexity.pi.pixverse.poe.qianfan.qoder.runway.sakana.stepfun.synthetic.t3chat.tencent.together.venice.vercel.vertexai.vllm.volcengine.warp.windsurf.zai.zed`.split(`.`)),uf={anthropic:`claude`,"amazon-bedrock":`bedrock`,"aws-bedrock":`bedrock`,"claude-cli":`claude`,"cloudflare-ai-gateway":`cloudflare`,"copilot-proxy":`copilot`,google:`gemini`,"google-gemini-cli":`gemini`,"github-copilot":`copilot`,kilocode:`kilo`,"kimi-coding":`kimi`,"llama-cpp":`llamacpp`,"microsoft-foundry":`microsoft`,"minimax-portal":`minimax`,"ollama-cloud":`ollama`,openai:`codex`,moonshot:`kimi`,"opencode-go":`opencodego`,"opencode-zen":`opencode`,qwen:`alibaba`,"qwen-token-plan":`alibaba`,"stepfun-plan":`stepfun`,"tencent-tokenhub":`tencent`,"tencent-tokenplan":`tencent`,xai:`grok`,xiaomi:`mimo`,"xiaomi-token-plan":`mimo`,"vercel-ai-gateway":`vercel`,"vertex-ai":`vertexai`,"z-ai":`zai`},df={anthropic:`Anthropic`,google:`Google`,"github-copilot":`GitHub`,"llama-cpp":`llama.cpp`,lmstudio:`LM Studio`,longcat:`LongCat`,openai:`OpenAI`,moonshot:`Moonshot AI`,opencode:`OpenCode`,openrouter:`OpenRouter`,qwen:`Qwen Cloud`,zai:`Z.AI`}})))()}function pf(e){switch(e){case`open`:return G(`chat.pullRequests.open`);case`draft`:return G(`chat.pullRequests.draft`);case`merged`:return G(`chat.pullRequests.merged`);case`closed`:return G(`chat.pullRequests.closed`);default:return e}}function mf(e){return`${e.numbers.map(e=>`#${e}`).join(`, `)} · ${pf(e.state)}`}function hf(e,t,n=``,r=0,i,a,o,s=0){return R`<openclaw-tooltip .content=${e}>
<span
class=${`session-row-badge${n?` ${n}`:``}`}
data-pull-request-state=${i??B}
data-placement-state=${a??B}
data-disk-space-status=${o??B}
data-workspace-conflicts=${s?String(s):B}
role="img"
aria-label=${e}
>${t}${r?R`<span aria-hidden="true">${r}</span>`:B}</span
>
</openclaw-tooltip>`}function gf(e){let t=e.pullRequest?mf(e.pullRequest):void 0,n=e.pullRequest?.state,r=e.isChild?void 0:e.placementState,i=Pi(r)?r:void 0,a=Math.max(0,Math.floor(e.workspaceConflictCount??0)),o=a>0?e.placementState:void 0,s=i??o,c=a>0,l=e.isChild?void 0:e.diskSpaceStatus,u=l===`critical`?G(`sessionsView.cloudWorkerDiskCritical`):l===`warning`?G(`sessionsView.cloudWorkerDiskWarning`):``,d=Math.max(0,Math.floor(e.outboxAttentionCount??0)),f=d>0?G(d===1?`sessionsView.messageNeedsAttention`:`sessionsView.messagesNeedAttention`,{count:String(d)}):``;if(!e.incognito&&!t&&!e.hasApproval&&d===0&&!e.hasComposerDraft&&!s&&!c)return B;let p=s?e.placementProviderId&&e.placementProfileId?`${e.placementProviderId} · ${e.placementProfileId} · ${s}`:G(`sessionsView.cloudWorkerPlacement`,{state:s}):``,m=[c?s?G(a===1?`sessionsView.placementWorkspaceConflict`:`sessionsView.placementWorkspaceConflicts`,{placement:p,count:String(a)}):G(a===1?`sessionsView.cloudWorkerDescendantConflict`:`sessionsView.cloudWorkerDescendantConflicts`,{count:String(a)}):p,u].filter(Boolean).join(` · `);return R`<span class="session-row-badges">
${e.incognito?hf(G(`sessionsView.incognito`),U.lock,`session-row-badge--incognito`):B}
${t?hf(t,n===`merged`?U.gitMerge:U.gitPullRequest,`session-row-badge--pull-request`,0,n):B}
${e.hasApproval?hf(G(`sessionsView.approvalNeeded`),U.alertTriangle,`session-row-badge--approval`):B}
${d>0?hf(f,U.alertTriangle,`session-row-badge--attention`,d):B}
${e.hasComposerDraft?hf(G(`sessionsView.unsentDraft`),U.pencil,`session-row-badge--draft`):B}
${s||c?hf(m,U.globe,`session-row-badge--cloud`,0,void 0,s,l,c?a:0):B}
</span>`}function _f(e){if(e.restartPending)return`restarting`;if(e.offline)return`offline`;switch(e.suspensionPhase){case`preparing`:case`draining`:return`suspending`;case`prepared`:return`suspended`;default:return null}}function vf(e){if(e.kind!==`offline`)return R`<span
class=${`sidebar-footer-bar__status sidebar-footer-bar__status--${e.kind}`}
role="status"
aria-live="polite"
><span class="sidebar-footer-bar__status-dot" aria-hidden="true"></span>${G(`connection.${e.kind}`)}</span
>`;let t=G(`common.offline`),n=e.queuedOutboxCount??0,r=n?G(`connection.queuedCount`,{count:String(n)}):null;return R`<openclaw-tooltip .content=${e.title??``}>
<button
type="button"
class="sidebar-footer-bar__status"
aria-live="polite"
aria-label=${`${t} — ${G(`connection.retryNow`)}${r?` — ${r}`:``}`}
@click=${e.onRetry}
>
<span class="sidebar-footer-bar__status-dot" aria-hidden="true"></span>${t}<span
class="sidebar-footer-bar__status-detail"
>· ${G(`connection.reconnecting`)}</span
>${r?R`<span class="sidebar-footer-bar__status-detail">· ${r}</span>`:B}
</button>
</openclaw-tooltip>`}function yf(){return(yf=t((()=>{I(),ha(),W(),H()})))()}function bf(e,t,n,r,i){let a=document.activeElement instanceof HTMLElement?document.activeElement:null,o=a?.closest(`[data-session-key]`),s=Of.find(e=>a?.matches(e)),c=s!==void 0&&(o?.dataset.catalogSessionKey===e||o?.dataset.sessionKey===e||o?.dataset.sessionKey===t);if(!(!r&&!c))return e=>{e instanceof HTMLElement&&(r&&i.onCatalogMenuTriggerRendered(n,e.querySelector(Of[3])??void 0),c&&queueMicrotask(()=>{e.isConnected&&document.activeElement===document.body&&e.querySelector(s)?.focus({preventScroll:!0})}))}}function xf(e=!0){return R`<span
class="session-run-spinner"
role="img"
aria-label=${G(`sessionsView.activeRun`)}
title=${e?G(`sessionsView.activeRun`):B}
></span>`}function Sf(e,t){return e?xf():t?R`<span
class="session-unread-dot"
role="img"
aria-label=${G(`sessionsView.unread`)}
></span>`:B}function Cf(e){let t=new Set,n=e=>{e&&t.add(M(`[${e.code}] ${e.message}`))};n(e.error);for(let t of e.hosts)t.error?.code!==`NODE_OFFLINE`&&n(t.error);return[...t]}function wf(e){let t=new Map,n=new Map;for(let r of e.liveRows)t.has(r.key)||(t.set(r.key,r),n.set(r.key,r.owner?.actor.id));return e.catalogs.map(r=>{let i=`catalog:${r.id}`,a=e.collapsedSections.has(i),o=r.hosts,s=nd(o,e.ownerId,n),c=s.flatMap(e=>e.sessions.map(t=>({host:e,session:t}))),l=c.flatMap(({session:e})=>{let n=e.sessionKey?t.get(e.sessionKey):void 0;return n?[n]:[]}),u=l.some(he),d=l.some(e=>e.unread===!0),f=af(r.id),p=e.loadingMoreCatalogIds.has(r.id),m=o.some(e=>!!e.nextCursor),h=r.capabilities.startTerminal===!0,g=Cf(r),_=g.length>0;if(c.length===0&&!m&&!_&&!h)return B;let v=g.join(`; `),y=G(`chat.sidebar.catalogDiscoveryHelp`,{error:v}),b=[`sidebar-recent-sessions__group`,`sidebar-recent-sessions__group--zone-coding`,a?`sidebar-recent-sessions__group--collapsed`:``,e.draggingSectionId===i?`sidebar-recent-sessions__group--dragging`:``,e.sectionDropTarget?.sectionId===i?`sidebar-recent-sessions__group--section-drop-${e.sectionDropTarget.position}`:``].filter(Boolean).join(` `);return R`
<div
class=${b}
data-session-section=${i}
@dragover=${e.sectionDragDisabledReason?B:t=>e.onSectionDragOver(t,i)}
@dragleave=${e.sectionDragDisabledReason?B:t=>e.onSectionDragLeave(t,i)}
@drop=${e.sectionDragDisabledReason?B:t=>e.onSectionDrop(t,i)}
>
${ad({sectionId:i,disabledReason:e.sectionDragDisabledReason,onStartDrag:e.onStartSectionDrag,onFinishDrag:e.onFinishSectionDrag,onContextMenu:t=>{t.preventDefault();let n=t.currentTarget,i=n.querySelector(`[data-session-catalog-view-menu]`)??n;e.onOpenViewMenu(r.id,i,{x:t.clientX,y:t.clientY})},content:R`
<button
type="button"
class="sidebar-session-group-toggle"
aria-expanded=${String(!a)}
aria-label=${_?`${r.label}: ${y}`:r.label}
title=${_?y:B}
@click=${()=>e.onToggleSection(i)}
>
<span
class="sidebar-session-group-toggle__lead ${f?`sidebar-session-group-toggle__lead--branded`:``}"
aria-hidden="true"
>
${f?cf(r.id,{className:`sidebar-session-catalog-provider-icon`}):B}
<span class="sidebar-session-group-toggle__icon"
>${a?U.chevronRight:U.chevronDown}</span
>
</span>
<span class="sidebar-recent-sessions__label-text hover-marquee"
>${r.label}</span
>
${Sf(u,d)}
${_||a&&c.length>0?R`<span
class="sidebar-session-group-count ${_?`sidebar-session-group-count--error`:``}"
data-session-catalog-error=${_?r.id:B}
aria-hidden="true"
>${_?U.alertTriangle:c.length}</span
>`:B}
</button>
<button
type="button"
class="sidebar-session-group-actions sidebar-session-sort sidebar-session-catalog-grouping ${e.ownerFilterActive?`sidebar-session-sort--filtered`:``}"
data-session-catalog-view-menu=${r.id}
title=${G(`chat.sidebar.catalogViewOptions`)}
aria-label=${G(`chat.sidebar.catalogViewOptions`)}
aria-haspopup="menu"
aria-expanded=${String(e.viewMenuOpenCatalogId===r.id)}
@click=${t=>{t.stopPropagation(),e.onOpenViewMenu(r.id,t.currentTarget)}}
>
${U.listFilter}
</button>
${h?fi({basePath:e.basePath,agentId:e.newSessionAgentId,target:{catalogId:r.id},className:`sidebar-session-group-actions sidebar-session-new sidebar-session-catalog-new`,label:`${G(`chat.runControls.newSession`)} — ${r.label}`,disabledReason:e.newSessionDisabledReason,onOpen:e.onOpenNewSession}):B}
`})}
${a?B:R`<div class="sidebar-recent-sessions__list">
${s.map(n=>Tf(r,n,t,e))}
</div>
${m?R`<button
type="button"
class="sidebar-session-catalog-load-more"
data-session-catalog-load-more=${r.id}
?disabled=${p}
aria-busy=${String(p)}
@click=${()=>e.onLoadMore(r.id)}
>
${G(`chat.selectors.loadMoreSessions`)}
</button>`:B}`}
</div>
`})}function Tf(e,t,n,r){let i=t.error?M(`[${t.error.code}] ${t.error.message}`):void 0,a=r.projectGrouping===`project`?Lo(t.sessions):r.projectGrouping===`person`?Uo(t.sessions):null,o=(i,a=!1)=>jn(i,n=>Se({catalogId:e.id,hostId:t.hostId,threadId:n.threadId}),i=>Ef(e,t,i,n,r,a)),s=(e,t,n=!1)=>{let i=(r.visibleSessionLimits.get(t)??Df)>Df;return o(i?e:e.slice(0,Df),n)},c=(e,t)=>{if(e.length<=Df)return B;let n=(r.visibleSessionLimits.get(t)??Df)>Df,i=G(n?`chat.messages.showLess`:`chat.messages.showMore`);return R`<div class="sidebar-session-pagination sidebar-session-pagination--catalog">
<button
type="button"
class="sidebar-session-pagination__button"
aria-label=${i}
@click=${()=>r.onSetVisibleSessionLimit(t,n?Df:e.length)}
>
${i}
</button>
</div>`},l=a?.ungrouped??t.sessions,u=a?`catalog-${r.projectGrouping}-ungrouped:${e.id}:${t.hostId}`:`catalog-host:${e.id}:${t.hostId}`,d=t.kind!==`gateway`;return R`
<section class="sidebar-session-catalog-host" data-session-catalog-host=${t.hostId}>
${d?R`<div
class="sidebar-session-catalog-host__head"
aria-label=${i?`${t.label}: ${i}`:t.label}
title=${i??t.label}
>
<span class="sidebar-session-group-toggle__lead" aria-hidden="true">
<span class="sidebar-session-group-toggle__icon">${U.monitor}</span>
</span>
<span class="sidebar-session-catalog-host__label">${t.label}</span>
<span
class="sidebar-session-catalog-host__count ${t.error?`sidebar-session-catalog-host__count--error`:``}"
aria-hidden="true"
>${t.error?U.alertTriangle:t.sessions.length}</span
>
</div>`:B}
<div class="sidebar-session-catalog-host__sessions" role="list" aria-label=${t.label}>
${a?R`${jn(a.groups,e=>e.key,n=>{let i=`catalog-${n.kind}:${e.id}:${t.hostId}:${n.key}`,a=n.legacySectionKey?`catalog-project:${e.id}:${t.hostId}:${n.legacySectionKey}`:null,o=r.collapsedSections.has(i)?i:a&&r.collapsedSections.has(a)?a:null,l=o!==null;return R`
<div class="sidebar-session-catalog-project" role="listitem">
<button
type="button"
class="sidebar-session-catalog-project__head"
data-session-catalog-project=${n.key}
aria-expanded=${String(!l)}
title=${n.title}
@click=${()=>r.onToggleSection(o??i)}
>
<span class="sidebar-session-catalog-project__icon" aria-hidden="true"
>${l?U.chevronRight:U.chevronDown}</span
>
<span class="sidebar-session-catalog-project__label">${n.label}</span>
<span class="sidebar-session-catalog-project__count" aria-hidden="true"
>${n.sessions.length}</span
>
</button>
${l?B:R`<div
class="sidebar-session-catalog-project__sessions"
role="list"
aria-label=${`${t.label}: ${n.label}`}
>
${s(n.sessions,i,!0)}
</div>
${c(n.sessions,i)}`}
</div>
`})}
${s(l,u)}`:s(l,u)}
</div>
${c(l,u)}
</section>
`}function Ef(e,t,n,r,i,a=!1){let o=Qu(n.recencyAt??n.updatedAt??n.createdAt),s={catalogId:e.id,hostId:t.hostId,threadId:n.threadId},c=Se(s),l=n.sessionKey??Se(s,i.newSessionAgentId),u=i.isMenuOpen(s),d=bf(c,l,s,u,i),f=n.sessionKey?r.get(n.sessionKey):void 0;if(f)return i.renderLiveRow(f,{catalogIdentityKey:c,catalogMenuOpen:u,...d?{rowRef:d}:{},...n.pullRequest?{pullRequest:n.pullRequest}:{}});let p=n.name||n.threadId,m=Zu(o),h=qi(n.color??``),g=`chat`,{href:_,options:v}=dt({face:g,sessionKey:l,fallbackAgentId:i.newSessionAgentId,basePath:i.basePath,mainKey:i.mainKey}),y=l===i.routeSessionKey,b=n.status===`active`||n.status===`running`,x=b?G(`sessionsView.activeRun`):``,S=b?dd(l):void 0,C=n.canOpenTerminal===!0&&i.terminalAvailable,w=()=>i.onOpenTerminal(s,i.newSessionAgentId),ee=(e,t,r)=>i.onOpenMenu({key:s,agentId:i.newSessionAgentId,routeId:g,navigation:v,canOpenTerminal:n.canOpenTerminal===!0,meta:m},e,t,r),te=e=>sn(e,e instanceof KeyboardEvent?e.currentTarget.querySelector(`[data-catalog-session-menu]`):null,(e,t,n)=>ee(t,n,e??void 0)),ne=Ln(JSON.stringify([p,n.status,n.pullRequest]),R`<span
${yn(ls)}
class="sidebar-recent-session__name hover-marquee"
>${p}</span
>`);return R`
<div
${d?yn(d):B}
class="sidebar-recent-session session-row-host sidebar-recent-session--single-line ${h?`sidebar-recent-session--colored`:``} ${y?`sidebar-recent-session--active`:``} ${a?`sidebar-recent-session--catalog-project-child`:``} ${b?`session-row-host--running`:``}"
style=${h?`--session-color: var(--session-color-${h})`:B}
data-session-key=${l}
data-catalog-session-key=${c}
data-session-row-action-count="1"
role="listitem"
@contextmenu=${te}
@keydown=${te}
@mouseenter=${yo}
@mouseleave=${ss}
>
<a
href=${qn(_)}
class="sidebar-recent-session__link"
aria-current=${y?`page`:B}
aria-describedby=${S??B}
@click=${e=>{Ve(e)&&(e.preventDefault(),i.catalogOpenTarget===`terminal`&&C?w():i.onNavigate?.(g,v))}}
>
<span class="sidebar-session-indicator"></span>
<span class="sidebar-recent-session__text">
<span class="sidebar-recent-session__title-row"> ${ne} </span>
<span class="sidebar-recent-session__details">
<span class="sidebar-recent-session__details-endcap">
${gf({pullRequest:n.pullRequest})}
${b?R`<span class="session-row-aside">
<span
class="session-row-state"
id=${S}
role="img"
aria-label=${x}
>${xf(!1)}</span
>
</span>`:B}
</span>
</span>
</span>
</a>
<span class="sidebar-recent-session__aside session-row-aside">
<span class="session-row-actions">
<button
class="session-action"
data-catalog-session-menu="true"
type="button"
title=${G(`chat.sidebar.openSessionMenu`)}
aria-label=${G(`chat.sidebar.openSessionMenu`)}
aria-haspopup="menu"
aria-expanded=${String(u)}
@click=${e=>{e.stopPropagation();let t=e.currentTarget,n=t.getBoundingClientRect();ee(n.right,n.bottom+4,t)}}
>
${U.moreHorizontal}
</button>
</span>
</span>
</div>
`}var Df,Of;function kf(){return(kf=t((()=>{I(),wn(),En(),Nn(),Gi(),tr(),W(),Ye(),mo(),Kt(),Ge(),Te(),id(),od(),q(),H(),vi(),ff(),yf(),Df=5,Of=[`.sidebar-recent-session__link`,`[data-child-session-toggle]`,`[data-sidebar-session-pin]`,`[data-catalog-session-menu], [data-session-menu]`]})))()}function Af(e,t=300){let n=sa(e,{mode:`message`}),r=n.didStrip&&/^[*`~_]+$/.test(n.text)?``:n.text;return{shouldSkip:n.shouldSkip||n.didStrip&&r.length<=t,text:r}}function jf(e){if(typeof e==`string`)return{text:e,hasVisibleNonTextContent:!1};if(!Array.isArray(e))return{text:``,hasVisibleNonTextContent:e!=null};let t=!1,n=[];return e.forEach(e=>{let r=u(e);r?.type===`text`&&typeof r.text==`string`?n.push(r.text):r?.type!==`thinking`&&r?.type!==`reasoning`&&(t=!0)}),{text:n.join(``),hasVisibleNonTextContent:t}}function Mf(e){let t=u(e);if(!t||v(t.role)!==`assistant`||typeof t.senderLabel==`string`&&t.senderLabel.trim())return!1;let{text:n,hasVisibleNonTextContent:r}=jf(typeof t.content==`string`||Array.isArray(t.content)?t.content:t.text);return!r&&n.trim().length>0&&Af(n).shouldSkip}function Nf(){return(Nf=t((()=>{ra()})))()}function Pf(e,t){return e===`text`||t===`user`&&e===`input_text`||t===`assistant`&&(e===`input_text`||e===`output_text`)}function Ff(e,t){let n=v(t)===`user`,r=ga(e);return t===`assistant`?Fa(r):n?Vi(Js(r)):Js(r)}function If(e){if(e==null)return null;let t=e,n=typeof t.role==`string`?t.role:``,r=n===`assistant`?Hs(e):Bf(e);return r?Ff(r,n):null}function Lf(e){if(!e||typeof e!=`object`)return If(e);let t=e;if(Gf.has(t))return Gf.get(t)??null;let n=If(e);return Gf.set(t,n),n}function Rf(e){if(e==null)return null;let t=e.content,n=[];if(Array.isArray(t))for(let e of t){let t=S(e);if(t?.type===`thinking`&&typeof t.thinking==`string`){let e=t.thinking.trim();e&&n.push(e)}}return n.length>0?n.join(`
`):null}function zf(e){if(!e||typeof e!=`object`)return Rf(e);let t=e;if(Kf.has(t))return Kf.get(t)??null;let n=Rf(e);return Kf.set(t,n),n}function Bf(e){if(e==null)return null;let t=e,n=v(t.role),r=t.content;if(typeof r==`string`)return r;if(Array.isArray(r)){let e=r.map(e=>{let t=S(e);return t&&Pf(t.type,n)&&typeof t.text==`string`?t.text:null}).filter(e=>typeof e==`string`);if(e.length>0)return e.join(`
`)}return typeof t.text==`string`?t.text:null}function Vf(e){return!e||typeof e!=`object`?[]:(bs(e)??[]).flatMap((e,t)=>{let n=e.path??e.url;return n?[{factIndex:t,path:n,mediaType:e.contentType??e.kind,fileName:e.fileName,...e.sizeBytes===void 0?{}:{sizeBytes:e.sizeBytes},...e.durationMs===void 0?{}:{durationMs:e.durationMs},...e.width===void 0?{}:{width:e.width},...e.height===void 0?{}:{height:e.height}}]:[]})}function Hf(e){let t=e.trim();if(!t)return``;let n=t.split(/\r?\n/).map(e=>e.trim()).filter(Boolean).map(e=>`_${e}_`);return n.length?[`_Reasoning:_`,...n].join(`
`):``}function Uf(e){if(typeof e==`string`)return!0;if(!Array.isArray(e))return!1;if(e.length===0)return!0;let t=!1;for(let n of e){if(!n||typeof n!=`object`)return!1;let e=n;if(e.type!==`text`||(t=!0,typeof e.text!=`string`))return!1}return t}function Wf(e){if(!e||typeof e!=`object`)return!1;let t=e;return v(t.role)!==`user`||Vf(t).length>0||!Uf(t.content??t.text)?!1:(If(e)?.trim()??``)===``}var Gf,Kf;function qf(){return(qf=t((()=>{Hi(),Xi(),Ls(),qs(),Vs(),ro(),Gf=new WeakMap,Kf=new WeakMap})))()}function Jf(e){let t=e.replace(/```[\s\S]*?```/g,` `).split(/\n\s*\n/).map(e=>Ri(e)).filter(Boolean).at(-1)??``;if(!t)return``;let n=t.match(/[^.!?…]+(?:[.!?…]+(?=\s|$)|$)/g)?.map(e=>e.trim()).findLast(e=>!!e)??t;return Xt(n,Yf)}var Yf;function Xf(){return(Xf=t((()=>{Lt(),Yf=120})))()}function Zf(e){let t=Ds(ga(Ys(e).text)),n=Af(t);return!t||vs(t)||fs(t)||n.shouldSkip?null:n.text}function Qf(e){let t=[pa,va];for(let n=Math.min(e.length,...t.map(e=>e.length-1));n>=1;--n){let r=e.slice(-n);if(t.some(e=>e.startsWith(r)))return r}return``}function $f(e){return e.startedAt??e.updatedAt??0}function ep(e,t){return typeof t!=`string`||!t.trim()||d(t)===d(e)}var tp,np,rp,ip;function ap(){return(ap=t((()=>{Ai(),Ti(),Hi(),ps(),Xs(),W(),Nf(),qf(),A(),Xf(),tp=6,np=2e3,rp=16384,ip=class{constructor(e,t=()=>void 0){this.onLinesChanged=e,this.onObserverDigestsChanged=t,this.source=null,this.connectionIdentity=null,this.connected=!1,this.enabled=!1,this.agentId=`main`,this.desiredKeys=new Set,this.subscriptions=new Map,this.pendingSubscriptions=new Map,this.internalRuntimeBlockDepth=new Map,this.internalRuntimeDelimiterTails=new Map,this.consumedStreamLength=new Map,this.visibleText=new Map,this.runIds=new Map,this.throttles=new Map,this.lines=new Map,this.observerDigests=new Map}sync(e){let t=this.connectionIdentity!==e.connectionIdentity,n=this.source!==e.source,r=!e.connected||!e.connectionIdentity||!e.source;if((t||n||r)&&this.resetSubscriptions(),this.source=e.source,this.connectionIdentity=e.connectionIdentity,this.connected=e.connected,this.enabled=e.enabled,this.agentId=d(e.agentId),r||!e.enabled){this.desiredKeys=new Set,this.resetSubscriptions(),this.clearAllLines();return}let i=e.openSessionKey.trim(),a=new Set,o=0;for(let t of e.rows.filter(e=>e.hasActiveRun).toSorted((e,t)=>$f(t)-$f(e))){let e=P(t.key,i);!e&&o>=tp||(a.add(t.key),e||(o+=1))}for(let e of this.desiredKeys)a.has(e)||this.releaseKey(e);this.desiredKeys=a;for(let e of a){let t=this.subscriptionAgentId(e),n=this.subscriptions.get(e)?.subscription.agentId??null,r=this.pendingSubscriptions.get(e)?.agentId??null;(this.subscriptions.has(e)&&n!==t||this.pendingSubscriptions.has(e)&&r!==t)&&this.releaseKey(e),!(this.subscriptions.has(e)||this.pendingSubscriptions.has(e))&&this.subscribeKey(e)}}handleEvent(e){if(!(!this.enabled||!this.connected)){if(e.event===`chat`){this.handleChatEvent(e.payload);return}if(e.event===`session.observer`){this.handleObserverEvent(e.payload);return}(e.event===`agent`||e.event===`session.tool`)&&this.handleAgentEvent(e.payload)}}disconnect(){this.desiredKeys=new Set,this.resetSubscriptions(),this.clearAllLines(),this.connected=!1}async subscribeKey(e){let t=this.source;if(!t||!this.connectionIdentity||!this.connected||!this.enabled||!this.desiredKeys.has(e))return;let n=Symbol(e),r=this.subscriptionAgentId(e);this.pendingSubscriptions.set(e,{agentId:r,operationId:n});try{let i=await t.subscribeMessages(e,{agentId:r??void 0});if(this.pendingSubscriptions.get(e)?.operationId!==n){await t.unsubscribeMessages(i).catch(()=>void 0);return}if(this.pendingSubscriptions.delete(e),t!==this.source||!this.connected||!this.enabled||!this.desiredKeys.has(e)){await t.unsubscribeMessages(i).catch(()=>void 0);return}this.subscriptions.set(e,{source:t,subscription:i})}catch{this.pendingSubscriptions.get(e)?.operationId===n&&this.pendingSubscriptions.delete(e)}}subscriptionAgentId(e){return qe(e)?this.agentId:null}releaseKey(e){this.pendingSubscriptions.delete(e);let t=this.subscriptions.get(e);this.subscriptions.delete(e),t&&t.source.unsubscribeMessages(t.subscription).catch(()=>void 0),this.clearLine(e)}resetSubscriptions(){let e=new Set([...this.subscriptions.keys(),...this.pendingSubscriptions.keys()]);for(let t of e)this.releaseKey(t)}matchingDesiredKey(e,t){if(typeof e!=`string`||!e.trim())return null;for(let n of this.desiredKeys)if(P(n,e)&&(!qe(n)||ep(this.agentId,t)))return n;return null}handleChatEvent(e){if(!e||typeof e!=`object`)return;let t=e,n=this.matchingDesiredKey(t.sessionKey,t.agentId);if(!n||(this.observeRun(n,t.runId),this.observerDigests.has(n)))return;let r=t.message;if(r&&typeof r.role==`string`&&r.role!==`assistant`)return;let i=typeof t.deltaText==`string`?t.deltaText:``,a=r?If(r):null,o=this.consumedStreamLength.get(n)??0;if(t.replace===!0){let e=i||a||``;this.publishText(n,{streamLength:e.length,fragment:e,reset:!0});return}if(i){a?o>0&&a.length-i.length===o?this.publishText(n,{streamLength:a.length,fragment:i,reset:!1}):this.publishText(n,{streamLength:a.length,fragment:a,reset:!0}):o>0&&this.publishText(n,{streamLength:o+i.length,fragment:i,reset:!1});return}a&&this.publishText(n,{streamLength:a.length,fragment:a,reset:!0})}publishText(e,t){if(t.streamLength<=0){t.reset&&this.clearLine(e);return}if(this.consumedStreamLength.set(e,t.streamLength),t.reset){this.internalRuntimeBlockDepth.delete(e),this.internalRuntimeDelimiterTails.delete(e),this.visibleText.delete(e);let t=this.throttles.get(e);t&&(t.pending=null)}let n=this.stripInternalRuntimeFragment(e,t.fragment),r=`${t.reset?``:this.visibleText.get(e)??``}${n}`;if(!r){t.reset&&this.lines.delete(e)&&this.onLinesChanged(new Map(this.lines));return}let i=r.length>rp?b(r,-16384):r;this.visibleText.set(e,i),this.publishThrottled(e,{kind:`text`,text:i})}stripInternalRuntimeFragment(e,t){let n=this.internalRuntimeDelimiterTails.get(e)??``;this.internalRuntimeDelimiterTails.delete(e);let r=`${n}${t}`,i=this.internalRuntimeBlockDepth.get(e)??0,a=0,o=``;for(;a<r.length;){let e=r.indexOf(pa,a),t=r.indexOf(va,a);if(i===0){if(e===-1&&t===-1){o+=r.slice(a);break}if(t!==-1&&(e===-1||t<e)){a=t+va.length;continue}o+=r.slice(a,e),i=1,a=e+pa.length;continue}if(e===-1&&t===-1)break;if(e!==-1&&(t===-1||e<t)){i+=1,a=e+pa.length;continue}--i,a=t+va.length}let s=Qf(r);return s&&(this.internalRuntimeDelimiterTails.set(e,s),i===0&&o.endsWith(s)&&(o=o.slice(0,-s.length))),i>0?this.internalRuntimeBlockDepth.set(e,i):this.internalRuntimeBlockDepth.delete(e),o}handleAgentEvent(e){if(!e||typeof e!=`object`)return;let t=e,n=this.matchingDesiredKey(t.sessionKey,t.agentId);if(!n||(this.observeRun(n,t.runId),this.observerDigests.has(n)))return;let r=t.data;if(t.stream===`tool`){let e=typeof r?.name==`string`?r.name.trim():``;if(!e)return;this.publishThrottled(n,{kind:`line`,line:G(`chat.sidebar.toolActivity`,{tool:e})});return}if(t.stream!==`assistant`)return;let i=typeof r?.text==`string`?r.text:``,a=typeof r?.delta==`string`?r.delta:``,o=this.consumedStreamLength.get(n)??0;if(r?.replace===!0){let e=i||a;this.publishText(n,{streamLength:e.length,fragment:e,reset:!0});return}if(i){a&&o>0&&i.length-a.length===o?this.publishText(n,{streamLength:i.length,fragment:a,reset:!1}):i.length!==o&&this.publishText(n,{streamLength:i.length,fragment:i,reset:!0});return}a&&o>0&&this.publishText(n,{streamLength:o+a.length,fragment:a,reset:!1})}handleObserverEvent(e){if(!e||typeof e!=`object`)return;let t=e,n=this.matchingDesiredKey(t.sessionKey,t.agentId),r=typeof t.runId==`string`?t.runId.trim():``;if(!n||!r||typeof t.headline!=`string`||typeof t.health!=`string`||typeof t.updatedAt!=`number`||typeof t.revision!=`number`)return;let i={...t,runId:r};if(!ea(Di,i))return;this.observeRun(n,r);let a=this.observerDigests.get(n);a&&no(a,i)===a||(this.clearNarration(n),this.observerDigests.set(n,i),this.onObserverDigestsChanged(new Map(this.observerDigests)))}observeRun(e,t){let n=typeof t==`string`?t.trim():``;if(!n)return;let r=this.runIds.get(e);r&&r!==n&&this.clearLine(e),this.runIds.set(e,n)}publishThrottled(e,t){let n=Date.now(),r=this.throttles.get(e);if(!r||n-r.lastPublishedAt>=np){r?.timer&&globalThis.clearTimeout(r.timer),this.throttles.set(e,{lastPublishedAt:n,pending:null,timer:null}),this.publishActivity(e,t);return}r.pending=t,!r.timer&&(r.timer=globalThis.setTimeout(()=>{r.timer=null;let t=r.pending;r.pending=null,!(!t||!this.desiredKeys.has(e))&&(r.lastPublishedAt=Date.now(),this.publishActivity(e,t))},np-(n-r.lastPublishedAt)))}publishActivity(e,t){let n=t.kind===`text`?Zf(t.text):null,r=n?Jf(n):t.kind===`line`?t.line:``;if(r){this.setLine(e,r);return}t.kind===`text`&&this.lines.delete(e)&&this.onLinesChanged(new Map(this.lines))}setLine(e,t){this.lines.get(e)!==t&&(this.lines.set(e,t),this.onLinesChanged(new Map(this.lines)))}clearLine(e){this.clearNarration(e),this.runIds.delete(e),this.observerDigests.delete(e)&&this.onObserverDigestsChanged(new Map(this.observerDigests))}clearNarration(e){this.internalRuntimeBlockDepth.delete(e),this.internalRuntimeDelimiterTails.delete(e),this.consumedStreamLength.delete(e),this.visibleText.delete(e);let t=this.throttles.get(e);t?.timer&&globalThis.clearTimeout(t.timer),this.throttles.delete(e),this.lines.delete(e)&&this.onLinesChanged(new Map(this.lines))}clearAllLines(){for(let e of this.throttles.values())e.timer&&globalThis.clearTimeout(e.timer);this.internalRuntimeBlockDepth.clear(),this.internalRuntimeDelimiterTails.clear(),this.consumedStreamLength.clear(),this.visibleText.clear(),this.runIds.clear(),this.throttles.clear(),this.lines.size>0&&(this.lines.clear(),this.onLinesChanged(new Map)),this.observerDigests.size>0&&(this.observerDigests.clear(),this.onObserverDigestsChanged(new Map))}}})))()}function op(e,t,n){let r=t.replaceAll(`\\`,`/`);return`${e}://file${(r.startsWith(`/`)?r:`/${r}`).split(`/`).map((e,t)=>t===1&&/^[a-z]:$/i.test(e)?e:encodeURIComponent(e)).join(`/`)}${n?`:${n}`:``}`}function sp(e,t,n){return window.open(op(e,t,n))}var cp,lp;function up(){return(up=t((()=>{cp=[`cursor`,`vscode`,`windsurf`,`zed`],lp={cursor:`Cursor`,vscode:`VS Code`,windsurf:`Windsurf`,zed:`Zed`}})))()}function dp(e){return ua.some(t=>t===e)}function fp(e){return dp(e)?pp[e]:null}var pp;function mp(){return(mp=t((()=>{Gi(),H(),pp={braces:U.braces,book:U.book,monitor:U.monitor,bot:U.bot,kanban:U.kanban,coins:U.coins}})))()}function hp(e){return R`
${cp.map(t=>R`
<wa-dropdown-item
slot=${e.inline?B:`submenu`}
class="session-menu__item"
value=${`open-in:${t}`}
?disabled=${e.disabled}
>
<span class="session-menu__text">${lp[t]}</span>
</wa-dropdown-item>
`)}
`}function gp(e){let t=1,n=()=>t<=9?String(t++):null,r=(t,r,i,a=!0)=>{let o=n(),s=i===`new-group`?`new-group`:`move-to-group`;return R`
<wa-dropdown-item
slot=${e.inline?B:`submenu`}
class="session-menu__item"
value=${i}
role=${a?`menuitemradio`:`menuitem`}
aria-checked=${a?String(r):B}
${a?yn(e=>Zr(e,r)):B}
data-shortcut=${o??B}
aria-keyshortcuts=${o??B}
?disabled=${e.actionDisabled(s)}
title=${e.actionTitle(s)}
>
<span class="session-menu__text">${t}</span>
${a&&r?R`<span slot="details" class="session-menu__check" aria-hidden="true"
>${U.check}</span
>`:B}
${o?_i(o):B}
</wa-dropdown-item>
`};return R`
${e.groups.map(t=>r(t,e.category===t,`move-to-group:${encodeURIComponent(t)}`))}
${e.category?r(G(e.categoryClearReturnsToGroups?`sessionsView.moveBackToGroups`:`sessionsView.removeFromGroup`),!1,`move-to-group:`,!1):B}
${r(G(`sessionsView.newGroup`),!1,`new-group`,!1)}
`}function _p(e){let t=qi(e.color??``);return R`<div
class="session-menu__colors"
role="group"
aria-label=${G(`sessionsView.setColorMenu`)}
>
${[null,...Qi].map(n=>{let r=G(n?`sessionsView.colors.${n}`:`common.default`);return R`<button
type="button"
class="session-menu__color-choice"
aria-label=${r}
aria-pressed=${String(t===n)}
?disabled=${e.disabled}
title=${e.disabledReason??r}
@click=${t=>e.onSelect(t,n)}
>
<span
class="session-menu__color-swatch"
style=${n?`background: var(--session-color-${n})`:B}
aria-hidden="true"
>${t===n?U.check:B}</span
>
</button>`})}
</div>`}function vp(){return(vp=t((()=>{I(),En(),Gi(),W(),up(),H(),qr(),oi()})))()}function yp(){let e=globalThis.navigator?.platform??``;return/Mac|iPhone|iPad|iPod/u.test(e)?`⌃⌘Space`:/Win/u.test(e)?`Win+.`:null}function bp(e){let t=aa(e.customIconValue),n=yp();return R`
<div class="session-menu__icon-picker session-menu__icon-custom-entry">
<div class="session-menu__icon-custom-header">
<button
type="button"
class="session-menu__icon-back"
aria-label=${G(`common.back`)}
@click=${e.onBack}
>
${U.arrowLeft}
</button>
<span>${G(`sessionsView.customEmojiTitle`)}</span>
</div>
<div class="session-menu__icon-custom-controls">
<input
class="session-menu__icon-custom-input"
type="text"
autocomplete="off"
autofocus
aria-label=${G(`sessionsView.customEmojiTitle`)}
.value=${e.customIconValue}
@input=${e.onInput}
/>
<button
type="button"
class="session-menu__icon-set"
?disabled=${!t||e.disabled}
@click=${e.onApply}
>
${G(`sessionsView.customEmojiSet`)}
</button>
</div>
<div class="session-menu__icon-custom-hint">
${n?G(`sessionsView.customEmojiHint`,{shortcut:n}):G(`sessionsView.customEmojiHintNoShortcut`)}
</div>
</div>
`}function xp(e){if(e.mode===`custom`)return bp(e);let t=[...Cp,...ua].find(t=>t===e.currentIcon)??Cp[0],n=(n,r=!1)=>R`
<button
type="button"
class=${`session-menu__icon-choice${r?` session-menu__icon-choice--glyph`:``}`}
aria-label=${r?n:B}
aria-pressed=${String(e.currentIcon===n)}
tabindex=${n===t?`0`:`-1`}
?disabled=${e.disabled}
title=${e.disabledReason??B}
@click=${t=>e.onSelect(t,n)}
>
${r?fp(n):n}
</button>
`;return R`
<div class="session-menu__icon-picker">
<div
class="session-menu__icon-options"
role="group"
aria-label=${G(`sessionsView.setIconMenu`)}
@keydown=${e.onGridKeydown}
>
<div class="session-menu__icon-section-label">${G(`sessionsView.iconEmojiSection`)}</div>
<div class="session-menu__icon-grid">
${Cp.map(e=>n(e))}
<button
type="button"
class="session-menu__icon-choice session-menu__icon-choice--custom"
aria-label=${G(`sessionsView.customEmojiCell`)}
aria-pressed="false"
tabindex="-1"
?disabled=${e.disabled}
title=${e.disabledReason??B}
@click=${e.onShowCustom}
>
${U.moreHorizontal}
</button>
</div>
<div class="session-menu__icon-section-label">${G(`sessionsView.iconGlyphSection`)}</div>
<div class="session-menu__icon-grid">
${ua.map(e=>n(e,!0))}
</div>
</div>
</div>
`}function Sp(e){return R`<div slot=${e.inline?B:`submenu`} class="session-menu__appearance">
<div class="session-menu__icon-section-label">${G(`sessionsView.setColorMenu`)}</div>
${_p({color:e.currentColor,disabled:e.colorDisabled,disabledReason:e.colorDisabledReason,onSelect:e.onSelectColor})}
${xp(e)}
<div class="session-menu__separator" role="separator"></div>
<button
type="button"
class="session-menu__icon-remove"
?disabled=${e.disabled||e.colorDisabled}
title=${e.disabledReason??e.colorDisabledReason??B}
@click=${e.onReset}
>
${G(`sessionsView.resetAppearance`)}
</button>
</div>`}var Cp;function wp(){return(wp=t((()=>{I(),Gi(),W(),H(),mp(),vp(),Cp=[`🦞`,`🚀`,`🐛`,`✅`,`🔥`,`📦`,`🧪`,`📝`,`🔍`,`⚡`,`🎯`]})))()}function Tp(e){return Op[e]??null}function Ep(e){return R`
<wa-dropdown-item
class=${`session-menu__item${e.details?` session-menu__item--compact-details`:``}`}
value=${e.value}
aria-label=${e.accessibleLabel??B}
?disabled=${e.disabled??!1}
title=${e.title??B}
>
<span slot="icon" class="session-menu__icon" aria-hidden="true">${e.icon}</span>
<span class="session-menu__text">${e.label}</span>
${e.details?R`<span class="session-menu__compact-details" aria-hidden="true"
>${e.details}</span
>`:B}
<span slot="details" class="session-menu__icon session-menu__chevron" aria-hidden="true"
>${U.chevronRight}</span
>
</wa-dropdown-item>
`}function Dp(e){return R`
<wa-dropdown-item class="session-menu__item session-menu__back" value="compact:back">
<span slot="icon" class="session-menu__icon" aria-hidden="true">${U.arrowLeft}</span>
<span class="session-menu__text">${G(`common.back`)}</span>
</wa-dropdown-item>
<div class="session-menu__separator" role="separator"></div>
${e}
`}var Op;function kp(){return(kp=t((()=>{I(),W(),H(),Op={"compact:back":`root`,"compact:open-copy":`copy`,"compact:open-assign-owner":`assign-owner`,"compact:open-group":`group`,"compact:open-icon":`icon`,"compact:open-open-in":`open-in`}})))()}function Ap(e){let t=ja(e),n=t.kind===`initials`?t:qa(e),r=t.kind===`profile`?is(t.url):null;return{fallback:n,imageUrl:r,sourceUrl:t.kind===`profile`?t.url:void 0,pending:r!==null&&typeof r!=`string`}}function jp(e,t){return An([e,t.imageUrl,t.pending],()=>In(`${e}${t.pending?` is-fallback`:``}`))}function Mp(e,t,n){let r=e.currentTarget;r instanceof HTMLImageElement&&r.closest(t)?.classList.toggle(`is-fallback`,n)}function Np({view:e,fallbackSelector:t,className:n,alt:r=``,ariaHidden:i=!1}){return e.imageUrl?R`<img
class=${n??B}
src=${Fp(e.imageUrl,e.sourceUrl)}
alt=${r}
aria-hidden=${i?`true`:B}
referrerpolicy="no-referrer"
@error=${e=>Mp(e,t,!0)}
@load=${e=>Mp(e,t,!1)}
/>`:B}var Pp,Fp;function Ip(){return(Ip=t((()=>{I(),bn(),On(),Dn(),Mn(),Et(),ka(),Ma(),Pp=class extends Tn{constructor(...e){super(...e),this.imageUrl=null,this.value=B}render(e,t){return B}update(e,[t,n]){let r=n??(typeof t==`string`?t:void 0),i=r?Ta(r,kt().origin):null,a=i&&t===r?is(i):t;if(this.part=e,this.sourceUrl=i??void 0,a!==this.imageUrl||!this.release){let e=this.isConnected?eo(a):void 0;this.release?.(),this.release=e,this.imageUrl=a,this.value=typeof a==`string`?a:a?.then(e=>e??B)??B}return super.update(e,[this.value,B])}disconnected(){super.disconnected(),this.release?.(),this.release=void 0}reconnected(){if(this.part){let e=this.sourceUrl?is(this.sourceUrl):this.imageUrl;this.setValue(this.update(this.part,[e,this.sourceUrl]))}super.reconnected()}},Fp=Cn(Pp)})))()}function Lp(e,t){return{basePath:e.basePath,navigate:(n,r)=>{t?.(),e.navigate(`activity`,Zn(n,e.basePath,r))}}}function Rp(e,t,n){let r=e?.trim();return!r||!t?null:{href:Zn(r,t.basePath,n).href,open:e=>{Ve(e)&&(e.preventDefault(),t.navigate(r,n))}}}function zp(e,t,n){return t?R`<a class="${n} person-activity-link" href=${t.href} @click=${t.open}
>${e}</a
>`:R`<span class=${n}>${e}</span>`}function Bp(e,t){return t?R`<a
class="person-activity-avatar-link"
href=${t.href}
tabindex="-1"
aria-hidden="true"
@click=${t.open}
>${e}</a
>`:e}function Vp(e,t){return t?R`<a class="person-activity-avatar-link" href=${t.href} @click=${t.open}
>${e}</a
>`:e}function Hp(){return(Hp=t((()=>{I(),sr()})))()}function Up(e){let t=R`<span
class=${e.imageUrl?`viewer-avatar__fallback`:B}
style=${`background: hsl(${e.fallback.colorSeed%360} 48% 42%)`}
>${e.fallback.initials}</span
>`;return e.imageUrl?R`${Np({view:e,fallbackSelector:`.viewer-avatar`})}${t}`:t}var Wp,Gp;function Kp(){return(Kp=t((()=>{I(),F(),W(),Fo(),tt(),Ip(),Hp(),Ur(),Wp=class extends hn{constructor(...e){super(...e),this.user=null,this.variant=`session`,this.markAsViewer=!0}render(){let e=this.user;if(!e)return B;let t=Ga(e),n=Ap({identity:this.identity??e.identity,id:e.id,name:e.name,username:e.email,profileAvatarUrl:e.avatarUrl});return R`<span
class=${jp(`viewer-avatar viewer-avatar--${this.variant}`,n)}
data-viewer-id=${this.markAsViewer?e.id:B}
aria-label=${t}
>
${Up(n)}
</span>`}},k([V({attribute:!1})],Wp.prototype,`user`,void 0),k([V()],Wp.prototype,`variant`,void 0),k([V({attribute:!1})],Wp.prototype,`identity`,void 0),k([V({type:Boolean,attribute:!1})],Wp.prototype,`markAsViewer`,void 0),Gp=class extends hn{constructor(...e){super(...e),this.excludeIdentities=[],this.maxVisible=3}render(){let e=this.staticParticipants?this.staticParticipants.map(({identity:e,label:t,avatarUrl:n})=>({identity:e,id:e.id,name:t,avatarUrl:n,watchedSessions:[]})):this.staticUsers??Pa(this.presencePayload,this.selfUser,this.selfInstanceId,this.sessionKey,this.excludeIdentities);if(e.length===0)return B;let t=e.slice(0,this.maxVisible),n=e.slice(this.maxVisible),r=Math.max(e.length,this.totalCount??0)-t.length,i=n.length===r?n.map(Ga).join(`
`):G(`sessionHovercard.moreParticipantsLabel`,{count:String(r)});return R`<span
class="viewer-facepile viewer-facepile--session"
data-viewer-count=${Math.max(e.length,this.totalCount??0)}
aria-label=${e.map(Ga).join(`, `)}
>
${t.map(e=>R`<openclaw-tooltip .content=${Ga(e)}>
<span class="viewer-facepile__tooltip-anchor">
${Vp(R`<openclaw-viewer-avatar
.user=${e}
.identity=${e.identity}
.markAsViewer=${!this.staticParticipants}
variant="session"
></openclaw-viewer-avatar>`,e.identity?.type===`profile`?Rp(e.identity.id,this.personActivity,e.name):null)}
</span>
</openclaw-tooltip>`)}
${r>0?R`<openclaw-tooltip .content=${i}>
<span class="viewer-avatar viewer-avatar--overflow" aria-label=${i}
>+${r}</span
>
</openclaw-tooltip>`:B}
</span>`}},k([V({attribute:!1})],Gp.prototype,`presencePayload`,void 0),k([V({attribute:!1})],Gp.prototype,`selfUser`,void 0),k([V({attribute:!1})],Gp.prototype,`selfInstanceId`,void 0),k([V({attribute:!1})],Gp.prototype,`sessionKey`,void 0),k([V({attribute:!1})],Gp.prototype,`excludeIdentities`,void 0),k([V({attribute:!1})],Gp.prototype,`staticParticipants`,void 0),k([V({attribute:!1})],Gp.prototype,`staticUsers`,void 0),k([V({type:Number,attribute:`max-visible`})],Gp.prototype,`maxVisible`,void 0),k([V({type:Number,attribute:!1})],Gp.prototype,`totalCount`,void 0),k([V({attribute:!1})],Gp.prototype,`personActivity`,void 0),globalThis.customElements&&(customElements.get(`openclaw-viewer-avatar`)||customElements.define(`openclaw-viewer-avatar`,Wp),customElements.get(`openclaw-viewer-facepile`)||customElements.define(`openclaw-viewer-facepile`,Gp))})))()}function qp(e){return e?{type:`human`,id:e.id,identity:{type:`profile`,id:e.id},label:e.name,avatarUrl:e.avatarUrl}:null}function Jp(e,t,n=`created`,r,i,a){return e?.id?R`<openclaw-session-owner-chip
.owner=${e}
size=${t}
attribution=${n}
.viewingNow=${r}
.participants=${i??[]}
.participantCount=${a??i?.length??0}
></openclaw-session-owner-chip>`:B}function Yp(e){let t=e.label?.trim()||e.id?.trim()||``;if(!t)return``;let n=t.replace(/@.*$/u,``).split(/[\s._-]+/u).filter(Boolean),r=e=>e?De(e,1):``;return(r(n[0])+r(n[1])).toUpperCase()||r(t).toUpperCase()}function Xp(e){let t=0;for(let n=0;n<e.length;n+=1)t=t*31+e.charCodeAt(n)|0;return Math.abs(t)%360}function Zp(e){return R`<openclaw-viewer-avatar
.identity=${e.identity}
.user=${{id:e.id,name:e.label,avatarUrl:e.avatarUrl,watchedSessions:[]}}
.markAsViewer=${!1}
variant="session"
aria-hidden="true"
></openclaw-viewer-avatar>`}var Qp;function $p(){return($p=t((()=>{I(),F(),W(),Ae(),Ma(),tt(),Kp(),Qp=class extends bt{constructor(...e){super(...e),this.owner=null,this.size=`row`,this.attribution=`created`,this.participants=[],this.participantCount=0}render(){let e=this.owner;if(!e?.id)return B;let t=Yp(e);if(!t)return B;let n=e.label||e.id,r=this.attribution===`archived`?`sessionsView.archivedBy`:this.attribution===`owned`?`sessionsView.ownedBy`:`sessionsView.createdBy`,i=G(r,{name:n}),a=this.viewingNow?`${i} · ${G(`sessionsView.viewingNow`)}`:i,o=ja({id:e.id,identity:e.identity,name:e.label,profileAvatarUrl:e.avatarUrl}),s=this.size===`row`&&this.participantCount>0,c=R`
<span
class="session-owner-chip session-owner-chip--${this.size} ${this.viewingNow===!1?`session-owner-chip--away`:``} ${s?`session-owner-stack__front`:``}"
style="--owner-hue: ${Xp(e.id)}"
role="img"
aria-label=${a}
title=${a}
>${o?.kind===`profile`?Zp({...e,id:e.id}):t}</span
>
`;if(!s)return c;let l=this.participants[0],u=l?.label||l?.identity.id,d=this.participantCount===1&&u?`${a} · ${G(`sessionsView.withParticipant`,{name:u})}`:`${a} · ${G(`sessionsView.withMoreParticipants`,{count:String(this.participantCount)})}`;return R`<span class="session-owner-stack" role="group" aria-label=${d}>
<span class="session-owner-stack__back" aria-hidden="true">
${this.participantCount===1&&l?Zp({...l,id:l.identity.id}):R`<span class="session-owner-stack__overflow">+${this.participantCount}</span>`}
</span>
${c}
</span>`}},k([V({attribute:!1})],Qp.prototype,`owner`,void 0),k([V({type:String})],Qp.prototype,`size`,void 0),k([V({type:String})],Qp.prototype,`attribution`,void 0),k([V({attribute:!1})],Qp.prototype,`viewingNow`,void 0),k([V({attribute:!1})],Qp.prototype,`participants`,void 0),k([V({type:Number})],Qp.prototype,`participantCount`,void 0),customElements.get(`openclaw-session-owner-chip`)||customElements.define(`openclaw-session-owner-chip`,Qp)})))()}var em;function tm(){return(tm=t((()=>{l(),ya(),I(),En(),ms(),lr(),W(),Yt(),St(),Ye(),Wa(),H(),$p(),oi(),em=class{constructor(e){this.opened=!1,this.load=()=>{this.opened=!0,this.profiles.run()},this.context=new x(e,{context:_r,subscribe:!0});let t=new Ra(e,{getGateway:()=>this.context.value?.gateway});this.profiles=new Ci(e,{args:()=>[t.epoch,this.opened,t.capture()?.client],task:([,e,t])=>e&&t?t.request(`users.list`,{}):Li})}render(e,t=!1){let n=this.context.value,r=qp(n?.gateway.snapshot.selfUser),i=e.currentOwner,a=i?.identity?.id??i?.id,o=this.profiles.status===Fi.COMPLETE?(this.profiles.value?.profiles??[]).filter(e=>!e.mergedInto&&e.id!==r?.id).map(e=>({type:`human`,id:e.id,identity:{type:`profile`,id:e.id},label:e.displayName?.trim()||e.githubIdentity?.login||e.emails[0]||e.id,avatarUrl:_s(e.id,e.updatedAt)})):i?.type===`human`&&a&&a!==r?.id?[{...i,type:i.type,id:a}]:[];for(let e of n?.agents.state.agentsList?.agents??[]){let t=n?.agentIdentity.get(e.id);o.push({type:`agent`,id:e.id,identity:{type:`agent`,id:e.id},label:Ht(e,t),avatarUrl:cn(e,t)??void 0})}o.sort((e,t)=>e.type.localeCompare(t.type)||(e.label??e.id).localeCompare(t.label??t.id)||e.id.localeCompare(t.id)),r&&o.unshift(r);let s=t?B:`submenu`;return R`
${o.map(t=>{let n=t.type===i?.type&&t.id===a;return R`<wa-dropdown-item
slot=${s}
class="session-menu__item"
value=${`assign-owner:${t.type}:${encodeURIComponent(t.id)}`}
role="menuitemradio"
aria-checked=${String(n)}
${yn(e=>Zr(e,n))}
?disabled=${e.disabled||n}
title=${e.disabledReason??B}
>
<span slot="icon" class="session-menu__icon" aria-hidden="true"
>${Zp(t)}</span
>
<span class="session-menu__text"
>${t===r?G(`sessionsView.assignToMe`):t.label??t.id}</span
>
${n?R`<span slot="details" class="session-menu__check" aria-hidden="true"
>${U.check}</span
>`:B}
</wa-dropdown-item>`})}
${this.profiles.render({pending:()=>R`<wa-dropdown-item slot=${s} disabled>${G(`common.loading`)}</wa-dropdown-item>`,error:e=>R`
<div slot=${s} class="session-menu__info" role="alert">
${M(e,G(`common.failed`))}
</div>
<wa-dropdown-item slot=${s} class="session-menu__item" value="reload-owners"
>${G(`common.retry`)}</wa-dropdown-item
>
`})}
`}}})))()}var nm,rm,im;function am(){return(am=t((()=>{I(),Gi(),W(),up(),H(),qr(),wp(),kp(),vp(),tm(),nm={label:``,sessionId:null,pinned:!1,unread:!1,archived:!1,category:null,icon:null,color:null,categoryClearReturnsToGroups:!1},rm=6,im=class{constructor(e,t,n,r){this.host=e,this.readState=t,this.onAction=n,this.onClose=r,this.iconPickerMode=`grid`,this.customIconValue=``,this.loadOwners=()=>{this.readState().selectionCount===1&&this.ownerMenu.load()},this.selectIcon=(e,t)=>{e.stopPropagation(),this.runAction({kind:`set-icon`,icon:t})},this.showCustomIconEntry=e=>{e.stopPropagation(),this.iconPickerMode=`custom`,this.customIconValue=``,this.host.requestUpdate(),this.host.updateComplete.then(()=>{this.host.querySelector(`.session-menu__icon-custom-input`)?.focus()})},this.showIconGrid=e=>{e?.stopPropagation(),this.iconPickerMode=`grid`,this.customIconValue=``,this.host.requestUpdate(),this.host.updateComplete.then(()=>{let e=this.host.querySelector(`.session-menu__icon-choice--custom`);for(let t of this.host.querySelectorAll(`.session-menu__icon-choice`))t.tabIndex=t===e?0:-1;e?.focus()})},this.updateCustomIconValue=e=>{e.currentTarget instanceof HTMLInputElement&&(this.customIconValue=e.currentTarget.value,this.host.requestUpdate())},this.applyCustomIcon=e=>{e?.stopPropagation();let t=aa(this.customIconValue);t&&this.runAction({kind:`set-icon`,icon:t})},this.handleIconGridKeydown=e=>{let t=e.target;if(!(t instanceof HTMLButtonElement))return;let n={ArrowLeft:-1,ArrowRight:1,ArrowUp:-6,ArrowDown:rm}[e.key];if(n===void 0)return;let r=e.currentTarget;if(!(r instanceof HTMLElement))return;let i=Array.from(r.querySelectorAll(`.session-menu__icon-choice:not(:disabled)`)),a=i.indexOf(t);if(a<0)return;e.preventDefault(),e.stopPropagation();let o=(a+n+i.length)%i.length;t.tabIndex=-1;let s=i[o];s&&(s.tabIndex=0,s.focus())},this.focusAppearanceOnOpen=e=>{let t=e.currentTarget;!(t instanceof HTMLElement)||e.detail.item!==t||t.getAttribute(`aria-expanded`)!==`true`&&(this.iconPickerMode=`grid`,this.customIconValue=``,this.host.requestUpdate(),this.host.updateComplete.then(()=>requestAnimationFrame(()=>{t.querySelector(`.session-menu__appearance button:not(:disabled)`)?.focus()})))},this.ownerMenu=new em(e)}actionDisabled(e,t=!1){let n=this.readState();return n.disabled||t||!!n.actionDisabledReasons[e]}actionTitle(e){return this.readState().actionDisabledReasons[e]??B}actionExtraDisabled(e){let t=this.readState(),{session:n}=t,r=t.selectionCount>1;switch(e){case`open-in`:return r||!t.worktreePath;case`copy-session-link`:case`open-new-tab`:case`open-new-window`:return r||!t.navigationAllowed;case`copy-markdown`:return r||!t.copyMarkdownAllowed;case`split-right`:case`split-below`:return r||!t.splitAllowed;case`reset-appearance`:return r||this.actionDisabled(`set-icon`)||this.actionDisabled(`set-color`);case`copy-session-id`:return r||!n.sessionId;case`toggle-pin`:return r||n.isChild===!0||n.archived;case`rename`:case`set-icon`:case`set-color`:case`assign-owner`:return r;case`fork`:return r||t.forkDisabled;case`move-to-group`:case`new-group`:return n.isChild===!0;case`toggle-archived`:return!r&&!n.archived&&!t.archiveAllowed;case`delete`:return!t.deleteAllowed;case`toggle-unread`:return!1;default:return e}}runAction(e){this.actionDisabled(e.kind,this.actionExtraDisabled(e.kind))||(e.kind!==`set-icon`&&e.kind!==`set-color`&&e.kind!==`reset-appearance`&&this.onClose(),this.onAction(e))}handleSelect(e){if(e===`reload-owners`)return this.ownerMenu.load(),!0;if(e===`copy-session-id`||e===`copy-session-link`||e===`copy-markdown`||e===`open-new-tab`||e===`open-new-window`||e===`split-right`||e===`split-below`||e===`reset-appearance`||e===`toggle-pin`||e===`toggle-unread`||e===`rename`||e===`fork`||e===`new-group`||e===`toggle-archived`||e===`delete`)return this.runAction({kind:e}),!0;if(e.startsWith(`open-in:`)){let t=this.readState(),n=cp.find(t=>t===e.slice(8));return t.worktreePath&&n&&this.runAction({kind:`open-in`,editor:n,path:t.worktreePath}),!0}if(e.startsWith(`move-to-group:`)){let t=e.slice(14);return this.runAction({kind:`move-to-group`,category:t?decodeURIComponent(t):null}),!0}let[t,n,r]=e.split(`:`);return t===`assign-owner`&&(n===`human`||n===`agent`)&&r?(this.runAction({kind:`assign-owner`,owner:{type:n,id:decodeURIComponent(r)}}),!0):!1}prepareCompactView(e){e===`icon`&&(this.iconPickerMode=`grid`,this.customIconValue=``)}focusCurrentView(){this.host.updateComplete.then(()=>{(this.host.querySelector(`.session-menu__appearance button:not(:disabled)`)??this.host.querySelector(`wa-dropdown-item:not([disabled])`))?.focus()})}handleKeydown(e){let t=e.composedPath().find(e=>e instanceof HTMLElement),n=t?.closest(`.session-menu__appearance`);if(e.key===`Tab`&&t&&n&&this.host.contains(n)){let r=Array.from(n.querySelectorAll(`button:not(:disabled):not([tabindex="-1"]), input:not(:disabled)`)),i=r.indexOf(t),a=i<0?void 0:r[i+(e.shiftKey?-1:1)];return a?(e.preventDefault(),e.stopPropagation(),a.focus(),!0):!1}let r=e.composedPath().find(e=>e instanceof HTMLInputElement&&e.classList.contains(`session-menu__icon-custom-input`));return r?(e.stopPropagation(),e.key===`Escape`?(e.preventDefault(),this.showIconGrid()):e.key===`Enter`&&aa(r.value)&&(e.preventDefault(),this.customIconValue=r.value,this.applyCustomIcon()),!0):!1}renderItem(e,t,n,r={}){return R`<wa-dropdown-item
slot=${r.inline===!1?`submenu`:B}
class=${`session-menu__item${e===`delete`?` session-menu__item--destructive`:``}`}
variant=${e===`delete`?`danger`:`neutral`}
value=${e}
data-shortcut=${r.shortcut??B}
aria-keyshortcuts=${r.shortcut?.toUpperCase()??B}
?data-new-tab-action=${e===`open-new-tab`||e===`open-new-window`}
?disabled=${this.actionDisabled(e,this.actionExtraDisabled(e))}
title=${this.readState().actionDisabledReasons[e]??r.title??B}
>
<span slot="icon" class="session-menu__icon" aria-hidden="true">${n}</span>
<span class="session-menu__text">${t}</span>
${r.shortcut?_i(r.shortcut):B}
</wa-dropdown-item>`}renderSubmenu(e,t,n,r=!1,i){if(this.readState().compact)return Ep({value:`compact:open-${e}`,label:t,icon:n,disabled:r,title:i});let a=e===`icon`?`i`:e===`copy`?`c`:void 0;return R`<wa-dropdown-item
class="session-menu__item"
?disabled=${r}
title=${i??B}
data-shortcut=${a??B}
aria-keyshortcuts=${a?.toUpperCase()??B}
@submenu-opening=${e===`icon`?this.focusAppearanceOnOpen:B}
>
<span slot="icon" class="session-menu__icon" aria-hidden="true">${n}</span>
<span class="session-menu__text">${t}</span>
${a?_i(a):B} ${this.renderSubmenuBody(e)}
</wa-dropdown-item>`}renderPrimaryActions(){let{session:e,selectionCount:t}=this.readState(),n=t>1,r=String(t);return R`
${n||e.isChild?B:this.renderItem(`toggle-pin`,G(e.pinned?`sessionsView.unpinSession`:`sessionsView.pinSession`),e.pinned?U.pinOff:U.pin,{shortcut:`p`})}
${n?B:this.renderItem(`rename`,G(`sessionsView.renameSessionMenu`),U.edit,{shortcut:`r`})}
${this.renderItem(`toggle-unread`,G(n?e.unread?`sessionsView.markReadCount`:`sessionsView.markUnreadCount`:e.unread?`sessionsView.markRead`:`sessionsView.markUnread`,{count:r}),e.unread?U.eye:U.circle,{shortcut:`u`})}
${this.renderItem(`toggle-archived`,G(n?e.archived?`sessionsView.restoreSessionCount`:`sessionsView.archiveSessionCount`:e.archived?`sessionsView.restoreSession`:`sessionsView.archiveSession`,{count:r}),e.archived?U.archiveRestore:U.archive,{shortcut:`a`})}
`}renderOrganizationActions(){let e=this.readState(),t=e.selectionCount>1;return R`
${t?B:this.renderSubmenu(`icon`,G(`sessionsView.setIconColorMenu`),U.palette,this.actionDisabled(`set-icon`)&&this.actionDisabled(`set-color`))}
${this.renderGroupAction()}
${t?B:this.renderSubmenu(`assign-owner`,G(`sessionsView.assignTo`),U.users,this.actionDisabled(`assign-owner`),e.actionDisabledReasons[`assign-owner`])}
`}renderTransferActions(){let e=this.readState();return e.selectionCount>1?B:R`
${this.renderItem(`fork`,G(`sessionsView.forkSession`),U.copy,{shortcut:`f`,title:e.forkFromLastCompleted?G(`sessionsView.forkFromLastCompleted`):void 0})}
${this.renderSubmenu(`copy`,G(`common.copy`),U.copy)}
${e.navigationAllowed||e.worktreePath||e.renderOpenInExtra?this.renderSubmenu(`open-in`,G(`sessionsView.openInEditorMenu`),U.externalLink):B}
`}renderGroupAction(){let e=this.readState(),t=e.selectionCount>1,n=String(e.selectionCount);if(e.session.isChild===!0)return B;let r=t?G(`sessionsView.moveToGroupMenuCount`,{count:n}):G(`sessionsView.moveToGroupMenu`);return this.renderSubmenu(`group`,r,U.folder,this.actionDisabled(`move-to-group`),e.actionDisabledReasons[`move-to-group`])}renderDeleteAction(){let e=this.readState(),t=e.selectionCount>1?G(`sessionsView.deleteSessionCount`,{count:String(e.selectionCount)}):G(`sessionsView.deleteSessionMenu`);return this.renderItem(`delete`,t,U.trash,{shortcut:`d`})}renderCompactView(e){return e===`root`?B:Dp(this.renderSubmenuBody(e,!0))}renderSubmenuBody(e,t=!1){let n=this.readState();switch(e){case`copy`:return this.renderCopySubmenu(t);case`open-in`:return this.renderOpenSubmenu(t);case`icon`:return this.renderAppearancePicker(t);case`group`:return this.renderGroupSubmenu(t);case`assign-owner`:return this.ownerMenu.render({currentOwner:n.currentOwner,disabled:this.actionDisabled(`assign-owner`),disabledReason:n.actionDisabledReasons[`assign-owner`]},t);default:return e}}renderCopySubmenu(e=!1){let t=this.readState();return R`
${t.navigationAllowed?this.renderItem(`copy-session-link`,G(`sessionsView.copySessionLink`),U.link,{inline:e}):B}
${this.renderItem(`copy-markdown`,G(`sessionsView.copyMarkdown`),U.fileText,{inline:e})}
${this.renderItem(`copy-session-id`,G(`sessionsView.copySessionId`),U.copy,{inline:e})}
`}renderOpenSubmenu(e=!1){let t=this.readState();return R`
${t.navigationAllowed?R`
${this.renderItem(`open-new-tab`,G(`sessionsView.openNewTab`),U.externalLink,{inline:e})}
${this.renderItem(`open-new-window`,G(`sessionsView.openNewWindow`),U.monitor,{inline:e})}
`:B}
${t.splitAllowed?R`
${this.renderItem(`split-right`,G(`chat.splitView.splitRight`),U.columns2,{inline:e})}
${this.renderItem(`split-below`,G(`sessionsView.splitBelow`),U.panelBottomOpen,{inline:e})}
`:B}
${t.renderOpenInExtra?.(e)??B}
${t.worktreePath?R`
<div slot=${e?B:`submenu`} class="session-menu__info">
${G(`sessionsView.workspaceEditors`)}
</div>
${hp({inline:e,disabled:this.actionDisabled(`open-in`)})}
`:B}
`}renderGroupSubmenu(e=!1){let t=this.readState();return gp({inline:e,category:t.session.category,categoryClearReturnsToGroups:t.session.categoryClearReturnsToGroups,groups:t.groups,actionDisabled:e=>this.actionDisabled(e),actionTitle:e=>this.actionTitle(e)})}renderAppearancePicker(e=!1){let t=this.readState();return Sp({inline:e,mode:this.iconPickerMode,currentIcon:t.session.icon,currentColor:t.session.color,colorDisabled:this.actionDisabled(`set-color`),colorDisabledReason:t.actionDisabledReasons[`set-color`],onSelectColor:(e,t)=>{e.stopPropagation(),this.runAction({kind:`set-color`,color:t})},onReset:e=>{e.stopPropagation(),this.runAction({kind:`reset-appearance`})},customIconValue:this.customIconValue,disabled:this.actionDisabled(`set-icon`),disabledReason:t.actionDisabledReasons[`set-icon`],onSelect:this.selectIcon,onShowCustom:this.showCustomIconEntry,onBack:this.showIconGrid,onInput:this.updateCustomIconValue,onApply:this.applyCustomIcon,onGridKeydown:this.handleIconGridKeydown})}}})))()}var J;function om(){return(om=t((()=>{I(),F(),wn(),W(),tt(),ai(),H(),qr(),li(),am(),kp(),J=class extends bt{constructor(...e){super(...e),this.session=nm,this.compact=!1,this.navigationAllowed=!1,this.copyMarkdownAllowed=!1,this.splitAllowed=!1,this.selectionCount=1,this.lastActive=``,this.anchor={x:0,y:0},this.trigger=null,this.disabled=!1,this.actionDisabledReasons={},this.forkDisabled=!1,this.forkFromLastCompleted=!1,this.archiveAllowed=!1,this.deleteAllowed=!1,this.cloudWorkerStopAllowed=!1,this.groups=[],this.currentOwner=null,this.work=null,this.pluginActions=[],this.onAction=()=>{},this.onClose=()=>{},this.compactView=`root`,this.managementActions=new im(this,()=>({session:this.session,selectionCount:this.selectionCount,compact:this.compact,navigationAllowed:this.navigationAllowed,copyMarkdownAllowed:this.copyMarkdownAllowed,splitAllowed:this.splitAllowed,disabled:this.disabled,actionDisabledReasons:this.actionDisabledReasons,forkDisabled:this.forkDisabled,forkFromLastCompleted:this.forkFromLastCompleted,archiveAllowed:this.archiveAllowed,deleteAllowed:this.deleteAllowed,groups:this.groups,currentOwner:this.currentOwner,worktreePath:this.work?.worktreePath??null}),e=>this.onAction(e),()=>this.onClose()),this.menuLifecycle=new Gr(this,{getTrigger:()=>this.trigger,onClose:()=>this.onClose(),onKeydown:e=>{this.managementActions.handleKeydown(e)||Hr(this,e)}}),this.handleSelect=e=>{e.preventDefault();let t=e.detail.item.value;if(!t)return;let n=Tp(t);if(n){this.compactView=n,this.managementActions.prepareCompactView(n),this.managementActions.focusCurrentView();return}if(!this.managementActions.handleSelect(t)){if(t.startsWith(`plugin:`)){let e=t.slice(7),n=this.pluginActions.find(t=>t.id===e);n&&this.selectionCount===1&&!this.actionDisabled(`plugin`,n.disabled)&&this.runAction({kind:`plugin`,id:e});return}if(t===`stop-cloud-worker`){this.runAction({kind:t});return}t===`open-pr`&&this.work?.pullRequestUrl&&this.runAction({kind:`open-pr`,url:this.work.pullRequestUrl})}},this.handleAfterHide=e=>{e.currentTarget instanceof Node&&e.currentTarget.isConnected&&this.onClose()}}connectedCallback(){super.connectedCallback(),yi(this)}runAction(e){this.actionDisabledReasons[e.kind]||(this.onClose(),this.onAction(e))}actionDisabled(e,t=!1){return this.disabled||t||!!this.actionDisabledReasons[e]}actionTitle(e){return this.actionDisabledReasons[e]??B}renderWorkItems(){let e=this.work?.pullRequestUrl;return e?R`
<wa-dropdown-item
class="session-menu__item"
value="open-pr"
data-new-tab-action
data-shortcut="g"
aria-keyshortcuts="G"
?disabled=${this.disabled||!e}
>
<span slot="icon" class="session-menu__icon" aria-hidden="true"
>${U.gitPullRequest}</span
>
<span class="session-menu__text">${G(`sessionsView.openPullRequest`)}</span>
${_i(`g`)}
</wa-dropdown-item>
`:B}render(){let e=Math.max(8,Math.min(this.anchor.x,window.innerWidth-240-8)),t=Math.max(8,Math.min(this.anchor.y,window.innerHeight-460-8)),n=this.session,r=this.selectionCount>1,i=String(this.selectionCount),a=r?G(`chat.sidebar.sessionMenuMany`,{count:i}):G(`chat.sidebar.sessionMenu`,{session:n.label});return Ln(this.anchor,R`<wa-dropdown
class=${`session-menu${this.compact?` session-menu--compact`:``}`}
.open=${!0}
placement="bottom-start"
.distance=${0}
aria-label=${a}
@wa-show=${this.managementActions.loadOwners}
@wa-select=${this.handleSelect}
@wa-after-hide=${this.handleAfterHide}
>
<button
slot="trigger"
type="button"
tabindex="-1"
aria-hidden="true"
aria-label=${a}
style="position: fixed; left: ${e}px; top: ${t}px; width: 1px; height: 1px; opacity: 0; pointer-events: none;"
></button>
${this.compact&&this.compactView!==`root`?this.managementActions.renderCompactView(this.compactView):R`
${!r&&this.lastActive?R`<div class="session-menu__info">
${G(`sessionsView.lastActive`,{time:this.lastActive})}
</div>`:B}
${this.managementActions.renderPrimaryActions()}
<div class="session-menu__separator" role="separator"></div>
${this.managementActions.renderOrganizationActions()}
${r?B:this.pluginActions.map(e=>R`
<wa-dropdown-item
class="session-menu__item"
value=${`plugin:${e.id}`}
?disabled=${this.actionDisabled(`plugin`,e.disabled)}
title=${this.actionTitle(`plugin`)}
>
<span slot="icon" class="session-menu__icon" aria-hidden="true"
>${U.puzzle}</span
>
<span class="session-menu__text">${e.label}</span>
</wa-dropdown-item>
`)}
${r?B:R`
<div class="session-menu__separator" role="separator"></div>
${this.managementActions.renderTransferActions()} ${this.renderWorkItems()}
`}
<div class="session-menu__separator" role="separator"></div>
${!r&&this.cloudWorkerStopAllowed?R`
<wa-dropdown-item
class="session-menu__item session-menu__item--destructive"
value="stop-cloud-worker"
variant="danger"
?disabled=${this.actionDisabled(`stop-cloud-worker`)}
title=${this.actionTitle(`stop-cloud-worker`)}
>
<span slot="icon" class="session-menu__icon" aria-hidden="true"
>${U.stop}</span
>
<span class="session-menu__text"
>${G(`sessionsView.stopCloudWorker`)}</span
>
</wa-dropdown-item>
`:B}
${this.managementActions.renderDeleteAction()}
`}
</wa-dropdown>`)}},k([V({attribute:!1})],J.prototype,`session`,void 0),k([V({attribute:!1})],J.prototype,`compact`,void 0),k([V({attribute:!1})],J.prototype,`navigationAllowed`,void 0),k([V({attribute:!1})],J.prototype,`copyMarkdownAllowed`,void 0),k([V({attribute:!1})],J.prototype,`splitAllowed`,void 0),k([V({attribute:!1})],J.prototype,`selectionCount`,void 0),k([V({attribute:!1})],J.prototype,`lastActive`,void 0),k([V({attribute:!1})],J.prototype,`anchor`,void 0),k([V({attribute:!1})],J.prototype,`trigger`,void 0),k([V({attribute:!1})],J.prototype,`disabled`,void 0),k([V({attribute:!1})],J.prototype,`actionDisabledReasons`,void 0),k([V({attribute:!1})],J.prototype,`forkDisabled`,void 0),k([V({attribute:!1})],J.prototype,`forkFromLastCompleted`,void 0),k([V({attribute:!1})],J.prototype,`archiveAllowed`,void 0),k([V({attribute:!1})],J.prototype,`deleteAllowed`,void 0),k([V({attribute:!1})],J.prototype,`cloudWorkerStopAllowed`,void 0),k([V({attribute:!1})],J.prototype,`groups`,void 0),k([V({attribute:!1})],J.prototype,`currentOwner`,void 0),k([V({attribute:!1})],J.prototype,`work`,void 0),k([V({attribute:!1})],J.prototype,`pluginActions`,void 0),k([V({attribute:!1})],J.prototype,`onAction`,void 0),k([V({attribute:!1})],J.prototype,`onClose`,void 0),k([z()],J.prototype,`compactView`,void 0),customElements.get(`openclaw-session-menu`)||customElements.define(`openclaw-session-menu`,J)})))()}var sm;function cm(){return(cm=t((()=>{I(),F(),W(),ka(),tt(),H(),sm=class extends hn{constructor(...e){super(...e),this.agentName=``,this.avatarUrl=null,this.avatarAuthReady=!1,this.avatarText=``,this.environment=null,this.menuOpen=!1,this.menuUnread=!1,this.switcherAvailable=!1,this.avatarLoader=new Qa(this)}render(){return this.avatarLoader.withActiveRoutes(()=>this.renderContent())}renderContent(){let e=this.avatarUrl?.startsWith(`/`)?this.avatarAuthReady?this.avatarLoader.resolve(this.avatarUrl):null:this.avatarUrl,t=this.switcherAvailable?G(`agentChip.switchAgent`):G(`agentChip.menuLabel`);return R`
<div class="sidebar-agent-card ${this.menuOpen?`sidebar-agent-card--open`:``}">
<button
type="button"
class="sidebar-agent-card__main"
aria-haspopup="menu"
aria-expanded=${String(this.menuOpen)}
aria-label="${this.agentName} · ${t}"
@pointerenter=${e=>{this.switcherAvailable&&e.currentTarget instanceof HTMLElement&&this.onMenuPointerEnter?.(e.currentTarget,e)}}
@pointerleave=${()=>this.onMenuPointerLeave?.()}
@pointerdown=${e=>{e.stopPropagation()}}
@click=${e=>{e.stopPropagation(),e.currentTarget instanceof HTMLElement&&this.onToggleMenu?.(e.currentTarget)}}
>
<span
class="sidebar-agent-card__avatar ${this.environment?`sidebar-agent-card__avatar--environment`:``}"
>
${e?R`<img
src=${e}
alt=""
aria-hidden="true"
loading="lazy"
decoding="async"
/>`:R`<span class="sidebar-agent-card__avatar-text" aria-hidden="true"
>${this.avatarText}</span
>`}
${this.menuUnread&&!this.menuOpen?R`<span
class="session-unread-dot sidebar-agent-card__menu-unread"
role="img"
aria-label=${G(`sessionsView.unread`)}
></span>`:B}
</span>
<span class="sidebar-agent-card__text">
<span class="sidebar-agent-card__name">
<span class="sidebar-agent-card__name-text">${this.agentName}</span>
<span class="sidebar-agent-card__chevron" aria-hidden="true"
>${U.chevronsUpDown}</span
>
</span>
${this.environment?R`<span class="sidebar-agent-card__subtitle-row">
<span class="control-ui-environment-pill">${this.environment.label}</span>
</span>`:B}
</span>
</button>
</div>
`}},k([V({attribute:!1})],sm.prototype,`agentName`,void 0),k([V({attribute:!1})],sm.prototype,`avatarUrl`,void 0),k([V({attribute:!1})],sm.prototype,`avatarAuthReady`,void 0),k([V({attribute:!1})],sm.prototype,`avatarText`,void 0),k([V({attribute:!1})],sm.prototype,`environment`,void 0),k([V({attribute:!1})],sm.prototype,`menuOpen`,void 0),k([V({attribute:!1})],sm.prototype,`menuUnread`,void 0),k([V({attribute:!1})],sm.prototype,`switcherAvailable`,void 0),k([V({attribute:!1})],sm.prototype,`onToggleMenu`,void 0),k([V({attribute:!1})],sm.prototype,`onMenuPointerEnter`,void 0),k([V({attribute:!1})],sm.prototype,`onMenuPointerLeave`,void 0),customElements.get(`openclaw-sidebar-agent-card`)||customElements.define(`openclaw-sidebar-agent-card`,sm)})))()}function lm(e){return e.state.phase===`hidden`?null:{type:`scopeUpgrade`,category:`system`,dismissal:Rr(e),requiresAction:!0,severity:e.state.phase===`error`||e.state.phase===`rejected`?`error`:`warning`,state:e.state}}function um(e){return e.visible?{type:`update`,category:`system`,dismissal:e.canDismiss&&!e.forced?e.dismissal:null,requiresAction:e.requiresAction,severity:e.severity}:null}function dm(e){let t=e.approvals.map(e=>({type:`approval`,approval:e,category:`approvals`,dismissal:null,requiresAction:!0,severity:`warning`})),n=e.attention.filter(e=>e.severity===`error`),r=e.attention.filter(e=>e.severity===`warning`),i=e.mentions.toSorted((e,t)=>t.createdAt-e.createdAt||e.id.localeCompare(t.id)).map(e=>({type:`mention`,mention:e,category:`mentions`,dismissal:null,requiresAction:!0,severity:`neutral`}));return[...t,...e.update?.severity===`error`?[e.update]:[],...e.scopeUpgrade?[e.scopeUpgrade]:[],...n,...e.update?.severity===`warning`?[e.update]:[],...r,...i]}function fm(e,t){return t===`all`||e.category===t}function pm(e){let t=e.filter(e=>e.requiresAction);return{all:t.length,approvals:t.filter(e=>e.category===`approvals`).length,mentions:t.filter(e=>e.category===`mentions`).length,automations:t.filter(e=>e.category===`automations`).length,system:t.filter(e=>e.category===`system`).length}}function mm(){return(mm=t((()=>{ti()})))()}function hm(e,t={}){let n={phase:`unavailable`,items:[],dismissing:[],error:null},r=null,i=!1,a=new Set,o=e=>{n={...n,...e};for(let e of a)e()},s=t=>!i&&r===t&&xa(e.snapshot,`mentions.list`,`operator.read`)&&e.snapshot.client===t.client&&e.snapshot.hello===t.hello&&e.connectionRevision===t.connectionRevision&&e.snapshot.selfUser?.identity?.id===t.profileId,c=async(e,t,n)=>{if(s(e))try{let r=await e.client.request(t,n);if(!s(e)||r.gatewayInstanceId!==e.gatewayInstanceId||e.revision!==null&&r.revision<e.revision||e.requiredRevision!==null&&r.revision<e.requiredRevision)return;e.revision=r.revision,o({phase:`ready`,items:r.items,error:null})}catch(t){if(!s(e))return;let n=t instanceof Or&&(t.gatewayCode===`FORBIDDEN`||Ar(t)===ae.AUTHENTICATED_PROFILE_UNAVAILABLE);n&&(r=null),o({phase:`error`,error:M(t),...n?{items:[],dismissing:[]}:{}})}},l=e=>s(e)?(e.refreshRequested=!0,e.refreshPromise||=Promise.resolve().then(async()=>{try{for(;s(e)&&e.refreshRequested;)e.refreshRequested=!1,o({phase:`loading`,error:null}),await c(e,`mentions.list`,{})}finally{e.refreshPromise=null,s(e)&&e.refreshRequested&&await l(e)}}),e.refreshPromise):Promise.resolve(),u=()=>{let n=e.snapshot,a=n.selfUser?.identity?.id,c=n.hello?.server?.bootId;if(r&&s(r))return;if(i||n.phase!==`connected`||!n.client||!n.hello||!a||!c||!xa(n,`mentions.list`,`operator.read`)){r=null,o({phase:`unavailable`,items:[],dismissing:[],error:null});return}let u={client:n.client,hello:n.hello,connectionRevision:e.connectionRevision,profileId:a,gatewayInstanceId:c,revision:null,requiredRevision:null,dismissing:new Set,refreshRequested:!1,refreshPromise:null};if(r=u,o({phase:`loading`,items:[],dismissing:[],error:null}),!s(u))return;let d=()=>l(u),f=`mentions:${c}:${n.hello.server?.connId}:${a}`;t.connectionBootstrap?.run(f,d)??d()},d=e.subscribeEvents(e=>{let t=r;if(e.event!==`mentions.changed`||!t||!s(t))return;let n=p(e.payload)?e.payload:void 0;n?.gatewayInstanceId!==t.gatewayInstanceId||typeof n.revision!=`number`||!Number.isSafeInteger(n.revision)||n.revision<0||t.revision!==null&&n.revision<=t.revision||(t.requiredRevision=Math.max(t.requiredRevision??0,n.revision),l(t))}),f=e.subscribe(u);return u(),{get snapshot(){return n},refresh:()=>(r||u(),r?l(r):Promise.resolve()),async dismiss(t){let i=r;if(!i||!s(i)||!xa(e.snapshot,`mentions.dismiss`,`operator.read`))return;let a=new Set(n.items.map(e=>e.id)),l=[...new Set(t)].filter(e=>a.has(e)&&!i.dismissing.has(e));if(l.length){for(let e of l)i.dismissing.add(e);o({dismissing:[...i.dismissing],error:null});try{await c(i,`mentions.dismiss`,{ids:l})}finally{for(let e of l)i.dismissing.delete(e);s(i)&&o({dismissing:[...i.dismissing]})}}},subscribe(e){return a.add(e),()=>a.delete(e)},dispose(){i=!0,r=null,f(),d(),a.clear()}}}function gm(){return(gm=t((()=>{ce(),hr(),Ye(),Sa()})))()}function _m(e,t,n=!1){let r=e.trim();if(n&&!vm.test(r)&&(r=String(Number(r))),!vm.test(r))return;let[i,a=``]=r.split(`.`),o=(i||`0`).replace(/^0+/u,``)||`0`,s=a.replace(/0+$/u,``);if(o.length>16||s.length>10)return;let c=10n**BigInt(s.length),l=(BigInt(o)*c+BigInt(s||`0`))*BigInt(ym[t]);if(l%c!==0n)return;let u=l/c;return u>0n&&u<=BigInt(864e13)?Number(u):void 0}var vm,ym;function bm(){return(bm=t((()=>{ue(),vm=/^(?:\d+(?:\.\d*)?|\.\d+)$/u,ym={seconds:1e3,minutes:6e4,hours:36e5,days:864e5}})))()}async function xm(e){if(!e.client||!e.connected||!e.cronAgentId){e.cronScopedTotal=null,e.cronScopedNextWakeAtMs=null;return}try{let[t,n]=await Promise.all([e.client.request(`cron.list`,{agentId:e.cronAgentId,includeDisabled:!0,includeDeliveryPreviews:!1,limit:1,offset:0}),e.client.request(`cron.list`,{agentId:e.cronAgentId,enabled:`enabled`,includeDeliveryPreviews:!1,limit:1,offset:0,sortBy:`nextRunAtMs`,sortDir:`asc`})]);e.cronScopedTotal=typeof t.total==`number`?t.total:null;let r=n.jobs[0]?.state?.nextRunAtMs;e.cronScopedNextWakeAtMs=typeof r==`number`&&Number.isFinite(r)?r:null}catch{e.cronScopedTotal=null,e.cronScopedNextWakeAtMs=null}}function Sm(){return(Sm=t((()=>{})))()}function Cm(e){return p(e)?e.kind===`systemEvent`?typeof e.text==`string`:e.kind===`agentTurn`?typeof e.message==`string`:e.kind===`command`?Array.isArray(e.argv)&&e.argv.every(e=>typeof e==`string`):e.kind===`script`?typeof e.script==`string`:!!Rs(e.kind):!1}function wm(e){return e===`main`||e===`isolated`||e===`current`||e.startsWith(`session:`)&&e.length>8}function Tm(e){let t=e.payload;return Cm(t)?t:null}function Em(e){return Tm(e)!==null}function Dm(e={}){return{client:e.client??null,connected:e.connected??!1,cronLoading:!1,cronJobsError:null,cronJobsLoadingMore:!1,cronJobsReloadPending:!1,cronJobsReloadPendingTableFilters:!1,cronJobs:[],cronJobsSnapshotRevision:null,cronJobsTotal:0,cronJobsHasMore:!1,cronJobsNextOffset:null,cronJobsLimit:50,cronJobsQuery:``,cronJobsEnabledFilter:`all`,cronJobsScheduleKindFilter:`all`,cronJobsLastStatusFilter:`all`,cronJobsTriggerFilter:`all`,cronJobsSortBy:`nextRunAtMs`,cronJobsSortDir:`asc`,cronAgentId:null,cronStatus:null,cronScopedTotal:null,cronScopedNextWakeAtMs:null,cronError:null,cronForm:{...Dh},cronCreateOpen:!1,cronFieldErrors:{},cronEditingJob:null,cronCloningJob:null,cronEditingJobId:null,cronEditingConfigRevision:null,cronRunsJobId:null,cronRunsLoadingMore:!1,cronRuns:[],cronRunsTotal:0,cronRunsHasMore:!1,cronRunsNextOffset:null,cronRunsLimit:50,cronRunsScope:`all`,cronRunsStatuses:[],cronRunsDeliveryStatuses:[],cronRunsStatusFilter:`all`,cronRunsQuery:``,cronRunsSortDir:`desc`,cronBusy:!1}}function Om(e){return e.sessionTarget!==`main`&&(e.payloadKind===`agentTurn`||e.payloadLocked)}function km(e,t={}){let n=e;if(!e.payloadLocked){if(t.sessionTarget!==void 0){let t=e.sessionTarget===`main`?`systemEvent`:`agentTurn`;e.payloadKind!==t&&(n={...n,payloadKind:t})}else e.payloadKind===`systemEvent`&&e.sessionTarget!==`main`?n={...n,sessionTarget:`main`}:e.payloadKind===`agentTurn`&&e.sessionTarget===`main`&&(n={...n,sessionTarget:`isolated`})}return n.deliveryMode!==`announce`||Om(n)?n:{...n,deliveryMode:`none`}}function Am(e){let t={};if(e.name.trim()||(t.name=`cron.errors.nameRequired`),e.scheduleKind===`at`){let n=Date.parse(e.scheduleAt);Number.isFinite(n)||(t.scheduleAt=`cron.errors.scheduleAtInvalid`)}else if(e.scheduleKind===`every`){let n=_m(e.everyAmount,e.everyUnit);n===void 0?t.everyAmount=`cron.errors.everyAmountInvalid`:e.triggerEnabled&&n<ds()&&(t.everyAmount=`cron.errors.triggerIntervalTooShort`)}else if(e.scheduleKind===`cron`&&(e.cronExpr.trim()||(t.cronExpr=`cron.errors.cronExprRequired`),!e.scheduleExact)){let n=e.staggerAmount.trim();n&&!_m(n,e.staggerUnit,!0)&&(t.staggerAmount=`cron.errors.staggerAmountInvalid`)}if(e.triggerEnabled&&(e.payloadKind===`script`?t.triggerScript=`cron.errors.triggerScriptPayloadUnsupported`:e.scheduleKind!==`every`&&e.scheduleKind!==`cron`&&e.scheduleKind!==`stream`?t.triggerScript=`cron.errors.triggerScheduleUnsupported`:e.triggerScript.trim()||(t.triggerScript=`cron.errors.triggerScriptRequired`)),!e.payloadLocked&&!e.payloadText.trim()&&(t.payloadText=e.payloadKind===`systemEvent`?`cron.errors.systemTextRequired`:`cron.errors.agentMessageRequired`),!e.payloadLocked&&e.payloadKind===`agentTurn`){let n=e.timeoutSeconds.trim();if(n){let e=xe(n,NaN);(!Number.isFinite(e)||e<0)&&(t.timeoutSeconds=`cron.errors.timeoutInvalid`)}}if(e.deliveryMode===`webhook`){let n=e.deliveryTo.trim();n?/^https?:\/\//i.test(n)||(t.deliveryTo=`cron.errors.webhookUrlInvalid`):t.deliveryTo=`cron.errors.webhookUrlRequired`}if(e.failureAlertMode===`custom`){let n=e.failureAlertAfter.trim();if(n){let e=xe(n,0);(!Number.isFinite(e)||e<1)&&(t.failureAlertAfter=`Failure alert threshold must be at least 1.`)}let r=e.failureAlertCooldownSeconds.trim();r&&sh(r)===void 0&&(t.failureAlertCooldownSeconds=`Cooldown must be finite and 0 or greater.`)}return t}function jm(e){return Object.keys(e).length>0}async function Mm(e,t){let n=e.client;if(!n||!e.connected)return;let r=Oh.get(e);if(t?.coalesce&&r?.client===n)return(r.queued??=Us()).promise;let i={client:n};Oh.set(e,i);let a=()=>Oh.get(e)===i&&e.connected&&e.client===n;try{let t=await n.request(`cron.status`,{});a()&&(e.cronStatus=t)}catch(t){if(!a()||i.queued)return;Vt(t)?(e.cronStatus=null,e.cronError=nn(`cron status`)):e.cronError=M(t)}finally{let n=a();Oh.get(e)===i&&Oh.delete(e),i.queued?.resolve(n?Mm(e,t):void 0)}}async function Nm(e,t){if(!(!e.client||!e.connected||!t))try{let n=(await e.client.request(`models.list`,{agentId:t,view:`configured`,preparedOnly:!0}))?.models;if(!Array.isArray(n)){e.cronModelSuggestions=[];return}let r=n.map(e=>{if(!e||typeof e!=`object`)return``;let t=e.id;return typeof t==`string`?t.trim():``}).filter(Boolean);e.cronModelSuggestions=f(r)}catch{e.cronModelSuggestions=[]}}function Pm(e,t){if(typeof t!=`string`)return;let n=t.trim();n&&e.add(n)}function Fm(e,t){if(!t)return;if(typeof t==`string`){Pm(e,t);return}if(typeof t!=`object`)return;let n=t;Pm(e,n.primary),Pm(e,n.model),Pm(e,n.id),Pm(e,n.value);let r=Array.isArray(n.fallbacks)?n.fallbacks:Array.isArray(n.fallback)?n.fallback:[];for(let t of r)Pm(e,t)}function Im(e){if(!e||typeof e!=`object`)return[];let t=e.agents;if(!t||typeof t!=`object`)return[];let n=new Set,r=t.defaults;if(r&&typeof r==`object`){let e=r;Fm(n,e.model);let t=e.models;if(t&&typeof t==`object`)for(let e of Object.keys(t))Pm(n,e)}let i=t.entries;if(i&&typeof i==`object`&&!Array.isArray(i))for(let e of Object.values(i))e&&typeof e==`object`&&Fm(n,e.model);return f([...n])}async function Lm(e,t){let n=e.client;if(!(!n||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{await t(n)}catch(t){e.cronError=M(t)}finally{e.cronBusy=!1}}}function Rm(e){if(e)return e;throw Error(`This automation is missing its configuration revision. Refresh and try again.`)}function zm(e,t){e.cronJobs=e.cronJobs.map(e=>e.id===t.id?t:e)}function Bm(e){return(p(e)&&p(e.details)?e.details:null)?.code===`CRON_JOB_CHANGED`}function Vm(e){let t=typeof e.totalRaw==`number`&&Number.isFinite(e.totalRaw)?Math.max(0,Math.floor(e.totalRaw)):e.pageCount,n=typeof e.offsetRaw==`number`&&Number.isFinite(e.offsetRaw)?Math.max(0,Math.floor(e.offsetRaw)):0,r=typeof e.hasMoreRaw==`boolean`?e.hasMoreRaw:n+e.pageCount<Math.max(t,n+e.pageCount);return{total:t,hasMore:r,nextOffset:typeof e.nextOffsetRaw==`number`&&Number.isFinite(e.nextOffsetRaw)?Math.max(0,Math.floor(e.nextOffsetRaw)):r?n+e.pageCount:null}}function Hm(e,t){if(!p(e)||!Array.isArray(e.jobs)||typeof e.snapshotRevision!=`string`||e.snapshotRevision.length===0||typeof e.total!=`number`||!Number.isSafeInteger(e.total)||e.total<0||typeof e.offset!=`number`||!Number.isSafeInteger(e.offset)||e.offset<0||typeof e.limit!=`number`||!Number.isSafeInteger(e.limit)||e.limit<1||e.limit>t||e.jobs.length>e.limit||typeof e.hasMore!=`boolean`||e.nextOffset!==null&&(typeof e.nextOffset!=`number`||!Number.isSafeInteger(e.nextOffset)||e.nextOffset<0))throw Error(`cron.list returned an invalid inventory page`);return e}function Um(e,t){let n=t+e.jobs.length;if(e.offset!==t||!Number.isSafeInteger(n)||n>e.total||(e.hasMore?e.nextOffset!==n||n<=t||n>=e.total:e.nextOffset!==null||n!==e.total))throw Error(`cron.list returned an invalid inventory page`)}function Wm(e,t){e.cronJobsReloadPending||(e.cronJobsReloadPending=!0,e.cronJobsReloadPendingTableFilters=t)}async function Gm(e){if(!e.cronJobsReloadPending)return;let t=e.cronJobsReloadPendingTableFilters;e.cronJobsReloadPending=!1,e.cronJobsReloadPendingTableFilters=!1,await Km(e,{tableFilters:t})}async function Km(e,t){if(!e.client||!e.connected)return;let n=t?.append===!0;if(e.cronLoading||e.cronJobsLoadingMore){n||(e.cronJobsReloadPending=!0,e.cronJobsReloadPendingTableFilters=t?.tableFilters===!0);return}if(!(n&&!e.cronJobsHasMore)){n?e.cronJobsLoadingMore=!0:e.cronLoading=!0,e.cronJobsError=null;try{let r=n?Math.max(0,e.cronJobsNextOffset??e.cronJobs.length):0,i=Hm(await e.client.request(`cron.list`,{...e.cronAgentId?{agentId:e.cronAgentId}:{},includeDisabled:e.cronJobsEnabledFilter===`all`,includeDeliveryPreviews:!1,limit:e.cronJobsLimit,offset:r,query:e.cronJobsQuery.trim()||void 0,enabled:e.cronJobsEnabledFilter,...t?.tableFilters?{scheduleKind:e.cronJobsScheduleKindFilter,lastRunStatus:e.cronJobsLastStatusFilter,trigger:e.cronJobsTriggerFilter}:{},sortBy:e.cronJobsSortBy,sortDir:e.cronJobsSortDir}),e.cronJobsLimit);if(n&&(i.snapshotRevision!==e.cronJobsSnapshotRevision||i.total!==e.cronJobsTotal)){Wm(e,t?.tableFilters===!0);return}Um(i,r);let a=i.jobs.filter(Em);e.cronJobs=n?[...e.cronJobs,...a]:a,e.cronJobsSnapshotRevision=i.snapshotRevision,e.cronJobsTotal=i.total,e.cronJobsHasMore=i.hasMore,e.cronJobsNextOffset=i.nextOffset}catch(t){e.cronJobsError=M(t)}finally{n?e.cronJobsLoadingMore=!1:e.cronLoading=!1,await Gm(e)}}}function qm(e,t){typeof t.cronJobsQuery==`string`&&(e.cronJobsQuery=t.cronJobsQuery),e.cronJobsEnabledFilter=t.cronJobsEnabledFilter??e.cronJobsEnabledFilter,e.cronJobsScheduleKindFilter=t.cronJobsScheduleKindFilter??e.cronJobsScheduleKindFilter,e.cronJobsLastStatusFilter=t.cronJobsLastStatusFilter??e.cronJobsLastStatusFilter,e.cronJobsTriggerFilter=t.cronJobsTriggerFilter??e.cronJobsTriggerFilter,e.cronJobsSortBy=t.cronJobsSortBy??e.cronJobsSortBy,e.cronJobsSortDir=t.cronJobsSortDir??e.cronJobsSortDir}function Jm(e){e.cronError=null,e.cronEditingJob=null,e.cronCloningJob=null,e.cronEditingJobId=null,e.cronEditingConfigRevision=null}function Ym(e){e.cronRuns=[],e.cronRunsTotal=0,e.cronRunsHasMore=!1,e.cronRunsNextOffset=null}function Xm(e,t){e.cronCloningJob=null,e.cronForm={...Dh,agentId:t??``},e.cronFieldErrors={}}function Zm(e){let t=Date.parse(e);if(!Number.isFinite(t))return``;let n=new Date(t);return`${n.getFullYear()}-${String(n.getMonth()+1).padStart(2,`0`)}-${String(n.getDate()).padStart(2,`0`)}T${String(n.getHours()).padStart(2,`0`)}:${String(n.getMinutes()).padStart(2,`0`)}`}function Qm(e){return e%864e5==0?{everyAmount:String(e/864e5),everyUnit:`days`}:e%36e5==0?{everyAmount:String(e/36e5),everyUnit:`hours`}:e%6e4==0?{everyAmount:String(e/6e4),everyUnit:`minutes`}:{everyAmount:$m(e),everyUnit:`seconds`}}function $m(e){let t=BigInt(e),n=t/1000n,r=t%1000n;return r===0n?String(n):`${n}.${r.toString().padStart(3,`0`).replace(/0+$/u,``)}`}function eh(e){return e===0?{scheduleExact:!0,staggerAmount:``,staggerUnit:`seconds`}:typeof e!=`number`||!Number.isFinite(e)||e<0?{scheduleExact:!1,staggerAmount:``,staggerUnit:`seconds`}:e%6e4==0?{scheduleExact:!1,staggerAmount:String(e/6e4),staggerUnit:`minutes`}:{scheduleExact:!1,staggerAmount:$m(e),staggerUnit:`seconds`}}function th(e){return e?.kind===`command`||e?.kind===`script`||Rs(e?.kind)}function nh(e,t){let n=typeof e.failureAlert==`object`?e.failureAlert:void 0,r=Tm(e),i=th(r);if(!wm(e.sessionTarget))throw TypeError(`Invalid cron session target: ${e.sessionTarget}`);let a={...t,name:e.name,description:e.description??``,agentId:e.agentId??``,sessionKey:e.sessionKey??``,clearAgent:!1,enabled:e.enabled,deleteAfterRun:e.deleteAfterRun??e.schedule.kind===`at`,scheduleKind:e.schedule.kind,scheduleAt:``,everyAmount:t.everyAmount,everyUnit:t.everyUnit,cronExpr:t.cronExpr,cronTz:``,scheduleExact:!1,staggerAmount:``,staggerUnit:`seconds`,triggerEnabled:e.trigger!==void 0,triggerScript:e.trigger?.script??``,triggerOnce:e.trigger?.once===!0,sessionTarget:e.sessionTarget,wakeMode:e.wakeMode,payloadKind:r?.kind??Dh.payloadKind,payloadLocked:i,payloadText:r?.kind===`systemEvent`?r.text:r?.kind===`agentTurn`?r.message:r?.kind===`command`?r.argv.join(` `):r?.kind===`script`?r.script:``,payloadModel:r?.kind===`agentTurn`?r.model??``:``,payloadThinking:r?.kind===`agentTurn`?r.thinking??``:``,payloadLightContext:r?.kind===`agentTurn`&&r.lightContext===!0,deliveryMode:e.delivery?.mode??`none`,deliveryChannel:e.delivery?.channel??Eh,deliveryTo:e.delivery?.to??``,deliveryAccountId:e.delivery?.accountId??``,deliveryBestEffort:e.delivery?.bestEffort??!1,deliveryThreadId:e.delivery?.threadId,deliveryCompletionDestination:e.delivery?.mode===`announce`?e.delivery.completionDestination:void 0,deliveryFailureDestination:e.delivery?.failureDestination,failureAlertMode:e.failureAlert===!1?`disabled`:n?`custom`:`inherit`,failureAlertAfter:typeof n?.after==`number`?String(n.after):``,failureAlertCooldownSeconds:typeof n?.cooldownMs==`number`?$m(n.cooldownMs):``,failureAlertChannel:n?.channel??Eh,failureAlertTo:n?.to??``,failureAlertDeliveryMode:n?.mode??``,failureAlertAccountId:n?.accountId??``,timeoutSeconds:r?.kind===`agentTurn`&&typeof r.timeoutSeconds==`number`?String(r.timeoutSeconds):``};if(e.schedule.kind===`at`)a.scheduleAt=Zm(e.schedule.at);else if(e.schedule.kind===`every`){let t=Qm(e.schedule.everyMs);a.everyAmount=t.everyAmount,a.everyUnit=t.everyUnit}else if(e.schedule.kind===`cron`){a.cronExpr=e.schedule.expr,a.cronTz=e.schedule.tz??``;let t=eh(e.schedule.staggerMs);a.scheduleExact=t.scheduleExact,a.staggerAmount=t.staggerAmount,a.staggerUnit=t.staggerUnit}return km(a)}function rh(e,t){let n=t.schedule;if(e.scheduleKind!==n.kind)return!1;if(n.kind===`at`)return e.scheduleAt===Zm(n.at);if(n.kind===`every`)return _m(e.everyAmount,e.everyUnit)===n.everyMs;if(n.kind===`cron`){let t=eh(n.staggerMs);return e.cronExpr.trim()===n.expr&&e.cronTz.trim()===(n.tz??``)&&e.scheduleExact===t.scheduleExact&&e.staggerAmount.trim()===t.staggerAmount&&e.staggerUnit===t.staggerUnit}return!0}function ih(e){if(e.scheduleKind===`at`){let t=Date.parse(e.scheduleAt);if(!Number.isFinite(t))throw Error(G(`cron.errors.invalidRunTime`));return{kind:`at`,at:new Date(t).toISOString()}}if(e.scheduleKind===`every`){let t=_m(e.everyAmount,e.everyUnit);if(t===void 0)throw Error(G(`cron.errors.invalidIntervalAmount`));return{kind:`every`,everyMs:t}}let t=e.cronExpr.trim();if(!t)throw Error(G(`cron.errors.cronExprRequiredShort`));if(e.scheduleExact)return{kind:`cron`,expr:t,tz:e.cronTz.trim()||void 0,staggerMs:0};let n=e.staggerAmount.trim();if(!n)return{kind:`cron`,expr:t,tz:e.cronTz.trim()||void 0};let r=_m(n,e.staggerUnit,!0);if(r===void 0)throw Error(G(`cron.errors.invalidStaggerAmount`));return{kind:`cron`,expr:t,tz:e.cronTz.trim()||void 0,staggerMs:r}}function ah(e,t,n){let r=!n&&t&&`toolsAllow`in t?t.toolsAllow:void 0,i=r?{toolsAllow:[...r]}:{};if(e.payloadKind===`systemEvent`){let t=e.payloadText.trim();if(!t)throw Error(G(`cron.errors.systemEventTextRequired`));return{kind:`systemEvent`,text:t,...i}}if(e.payloadKind!==`agentTurn`)throw Error(`Cron ${e.payloadKind} payloads are read-only in Control UI.`);let a=e.payloadText.trim();if(!a)throw Error(G(`cron.errors.agentMessageRequiredShort`));let o=t?.kind===`agentTurn`?t:void 0,s=n?void 0:o,c=e.payloadModel.trim()||(n&&o?.model!==void 0?null:void 0),l=e.payloadThinking.trim()||(n&&o?.thinking!==void 0?null:void 0),u=e.timeoutSeconds.trim(),d=xe(u,NaN),f=e.payloadLightContext||o?.lightContext!==void 0?e.payloadLightContext:void 0;return{kind:`agentTurn`,message:a,...c===void 0?{}:{model:c},...l===void 0?{}:{thinking:l},...u&&Number.isFinite(d)&&d>=0?{timeoutSeconds:d}:{},...f===void 0?{}:{lightContext:f},...i,...s?.fallbacks?{fallbacks:[...s.fallbacks]}:{},...s?.allowUnsafeExternalContent===void 0?{}:{allowUnsafeExternalContent:s.allowUnsafeExternalContent}}}function oh(e,t={}){let n=e.trim();if(n)return n===Eh?t.preserveLast?Eh:void 0:n}function sh(e){let t=e.trim(),n=xe(t,NaN);if(!t||!Number.isFinite(n)||n<0)return;let[r,i=`0`]=(n===0||g(t)===void 0?String(n):t).split(/[eE]/u),a=Number(`${r}e${Number(i)+3}`);return Number.isFinite(a)&&a>=0?Math.floor(a):void 0}function ch(e,t,n=!1){if(e.failureAlertMode===`disabled`)return!1;if(e.failureAlertMode!==`custom`)return n&&t!==void 0?null:void 0;let r=t&&typeof t==`object`?t:void 0,i=n?r:void 0,a=xe(e.failureAlertAfter.trim(),0),o=sh(e.failureAlertCooldownSeconds),s=e.failureAlertAccountId.trim(),c=e.failureAlertTo.trim();return{after:a>0?Math.floor(a):i?.after===void 0?void 0:null,channel:oh(e.failureAlertChannel,{preserveLast:!!r?.channel}),to:c||(i?.to?null:void 0),...o===void 0?i?.cooldownMs===void 0?{}:{cooldownMs:null}:{cooldownMs:o},mode:e.failureAlertDeliveryMode||(i?.mode===void 0?void 0:null),accountId:s||(i?.accountId?null:void 0),includeSkipped:r?.includeSkipped}}function lh(e){if(!e||typeof e!=`object`)return null;let t=`job`in e?e.job:e;if(!t||typeof t!=`object`)return null;let n=t.id;return typeof n==`string`&&n.length>0?n:null}async function uh(e){let t={saved:!1};return await Lm(e,async n=>{let r=km(e.cronForm);r!==e.cronForm&&(e.cronForm=r);let i=Am(r);if(e.cronFieldErrors=i,jm(i))return;let a=e.cronEditingJob,o=a?Rm(e.cronEditingConfigRevision):void 0,s=a??e.cronCloningJob,c=s?Tm(s):null,l=s&&rh(r,s)?a?void 0:s.schedule:ih(r),u=a&&r.payloadLocked&&th(c)?void 0:ah(r,c,!!a),d=r.deliveryMode,f=r.deliveryAccountId.trim(),p=d===`announce`?f||(a?.delivery?.accountId?null:void 0):void 0,m=d&&d!==`none`?{mode:d,channel:d===`announce`?oh(r.deliveryChannel,{preserveLast:!!a?.delivery?.channel}):void 0,to:r.deliveryTo.trim()||(d===`announce`&&a?.delivery?.to?null:void 0),accountId:p,bestEffort:r.deliveryBestEffort,...r.deliveryThreadId===void 0?{}:{threadId:r.deliveryThreadId},...d===`announce`&&r.deliveryCompletionDestination?{completionDestination:r.deliveryCompletionDestination}:{},...r.deliveryFailureDestination?{failureDestination:r.deliveryFailureDestination}:{}}:d===`none`?{mode:`none`,...r.deliveryBestEffort?{bestEffort:!0}:{},...r.deliveryThreadId===void 0?{}:{threadId:r.deliveryThreadId},...r.deliveryFailureDestination?{failureDestination:r.deliveryFailureDestination}:{}}:void 0,h=ch(r,s?.failureAlert,!!a),g=r.triggerScript.trim(),_=r.triggerEnabled?a?.trigger?.script===g&&a.trigger.once===!0===r.triggerOnce?void 0:{script:g,once:r.triggerOnce}:a?.trigger?null:void 0,v=r.clearAgent?null:r.agentId.trim(),y=r.sessionKey.trim()||(a?.sessionKey?null:void 0),b={name:r.name.trim(),description:r.description.trim(),agentId:v===null?null:v||void 0,sessionKey:y,enabled:r.enabled,...r.scheduleKind===`at`||r.scheduleKind===`on-exit`?{deleteAfterRun:r.deleteAfterRun}:{},sessionTarget:r.sessionTarget,wakeMode:r.wakeMode,trigger:_,delivery:m,failureAlert:h};if(l&&(b.schedule=l),u&&(b.payload=u),!b.name)throw Error(G(`cron.errors.nameRequiredShort`));if(a){let r=a.id;try{let t=await n.request(`cron.update`,{id:r,expectedConfigRevision:o,patch:b});zm(e,t),Sh(e,t)}catch(t){if(!Bm(t))throw t;await dh(e);try{Sh(e,await n.request(`cron.get`,{id:r})),e.cronError=`This automation changed on the Gateway. The latest definition is loaded; review it before retrying.`}catch{e.cronError=`This automation changed on the Gateway, but the latest definition could not be loaded. Refresh before retrying.`}return}t={saved:!0,jobId:r}}else{let r=await n.request(`cron.add`,b);Xm(e,v),t={saved:!0,jobId:lh(r)}}await dh(e)}),t}async function dh(e){await Km(e,{tableFilters:!0}),await Mm(e)}async function fh(e,t,n){let r=!1;return await Lm(e,async i=>{let a=await i.request(`cron.update`,{id:t.id,expectedConfigRevision:Rm(t.configRevision),patch:{enabled:n}});zm(e,a),e.cronEditingJob?.id===a.id&&xh(e,a,{...e.cronForm,enabled:a.enabled}),r=!0,await dh(e)}),r}function ph(e){if(!(`reason`in e))return G(`cron.runNotStarted.unknown`);switch(e.reason){case`not-due`:return G(`cron.runNotStarted.notDue`);case`already-running`:return G(`cron.runNotStarted.alreadyRunning`);case`restart-recovery-pending`:return G(`cron.runNotStarted.recoveryPending`);case`invalid-spec`:return G(`cron.runNotStarted.invalidSpec`);case`stopped`:return G(`cron.runNotStarted.stopped`)}return G(`cron.runNotStarted.unknown`)}async function mh(e,t,n=`force`){await Lm(e,async r=>{let i=await r.request(`cron.run`,{id:t,mode:n});if(!i.ok||`ran`in i&&!i.ran){e.cronError=ph(i),`reason`in i&&i.reason===`invalid-spec`&&await vh(e,e.cronRunsScope===`all`?null:t);return}await vh(e,e.cronRunsScope===`all`?null:t),`enqueued`in i&&i.enqueued&&(e.cronError=`Run queued. Run ID: ${i.runId}`)})}async function hh(e,t){await Lm(e,async n=>{await n.request(`cron.remove`,{id:t.id});let r=e.cronJobs.length;e.cronJobs=e.cronJobs.filter(e=>e.id!==t.id),e.cronJobs.length!==r&&(e.cronJobsTotal=Math.max(0,e.cronJobsTotal-1)),e.cronEditingJob?.id===t.id&&Jm(e),e.cronRunsJobId===t.id&&(e.cronRunsJobId=null,Ym(e)),await dh(e)})}function gh(e){Oh.get(e)?.queued?.resolve(),Oh.delete(e),kh.get(e)?.queued?.resolve(`skipped`),kh.delete(e),e.cronJobsReloadPending=!1,e.cronJobsReloadPendingTableFilters=!1}function _h(e,t){return kh.get(e)===t&&e.connected&&e.client===t.client&&e.cronAgentId===t.agentId&&e.cronRunsScope===t.scope&&(t.scope!==`job`||e.cronRunsJobId===t.jobId)&&e.cronRunsLimit===t.limit&&e.cronRunsStatusFilter===t.status&&e.cronRunsQuery.trim()===t.query&&e.cronRunsSortDir===t.sortDir&&e.cronRunsStatuses.length===t.statuses.length&&e.cronRunsStatuses.every((e,n)=>e===t.statuses[n])&&e.cronRunsDeliveryStatuses.length===t.deliveryStatuses.length&&e.cronRunsDeliveryStatuses.every((e,n)=>e===t.deliveryStatuses[n])&&(!t.append||Math.max(0,e.cronRunsNextOffset??e.cronRuns.length)===t.offset)}async function vh(e,t,n){let r=e.client;if(!r||!e.connected)return`skipped`;let i=e.cronRunsScope,a=t??e.cronRunsJobId;if(i===`job`&&!a)return Ym(e),`skipped`;let o=n?.append===!0;if(o&&!e.cronRunsHasMore)return`skipped`;let s=kh.get(e);if(n?.coalesce&&!o&&s&&!s.append&&s.jobId===(i===`job`?a:null)&&_h(e,s))return(s.queued??=Us()).promise;let c={client:r,agentId:e.cronAgentId,scope:i,jobId:i===`job`?a:null,limit:e.cronRunsLimit,offset:o?Math.max(0,e.cronRunsNextOffset??e.cronRuns.length):0,statuses:[...e.cronRunsStatuses],status:e.cronRunsStatusFilter,deliveryStatuses:[...e.cronRunsDeliveryStatuses],query:e.cronRunsQuery.trim(),sortDir:e.cronRunsSortDir,append:o};kh.set(e,c),e.cronRunsLoadingMore=o;try{let t=await r.request(`cron.runs`,{...c.scope===`all`&&c.agentId?{agentId:c.agentId}:{},scope:c.scope,id:c.jobId??void 0,limit:c.limit,offset:c.offset,statuses:c.statuses.length>0?c.statuses:void 0,status:c.status,deliveryStatuses:c.deliveryStatuses.length>0?c.deliveryStatuses:void 0,query:c.query||void 0,sortDir:c.sortDir});if(!_h(e,c))return`skipped`;let n=Array.isArray(t.entries)?t.entries:[];e.cronRuns=o?[...e.cronRuns,...n]:n;let i=Vm({totalRaw:t.total,offsetRaw:t.offset,nextOffsetRaw:t.nextOffset,hasMoreRaw:t.hasMore,pageCount:n.length});return e.cronRunsTotal=Math.max(i.total,e.cronRuns.length),e.cronRunsHasMore=i.hasMore,e.cronRunsNextOffset=i.nextOffset,`ok`}catch(t){return!_h(e,c)||c.queued?`skipped`:(e.cronError=M(t),`error`)}finally{let t=_h(e,c);kh.get(e)===c&&(kh.delete(e),o&&(e.cronRunsLoadingMore=!1)),c.queued?.resolve(t?vh(e,c.jobId,n):`skipped`)}}async function yh(e){e.cronRunsScope===`job`&&!e.cronRunsJobId||await vh(e,e.cronRunsJobId,{append:!0})}function bh(e,t){e.cronRunsScope=t.cronRunsScope??e.cronRunsScope,Array.isArray(t.cronRunsStatuses)&&(e.cronRunsStatuses=t.cronRunsStatuses,e.cronRunsStatusFilter=t.cronRunsStatuses[0]??`all`),Array.isArray(t.cronRunsDeliveryStatuses)&&(e.cronRunsDeliveryStatuses=t.cronRunsDeliveryStatuses),t.cronRunsStatusFilter&&(e.cronRunsStatusFilter=t.cronRunsStatusFilter,e.cronRunsStatuses=t.cronRunsStatusFilter===`all`?[]:[t.cronRunsStatusFilter]),typeof t.cronRunsQuery==`string`&&(e.cronRunsQuery=t.cronRunsQuery),e.cronRunsSortDir=t.cronRunsSortDir??e.cronRunsSortDir}function xh(e,t,n){e.cronError=null,e.cronEditingJob=t,e.cronCloningJob=null,e.cronEditingJobId=t.id,e.cronEditingConfigRevision=t.configRevision??null,e.cronRunsJobId=t.id,e.cronForm=n,e.cronFieldErrors=Am(n)}function Sh(e,t){xh(e,t,nh(t,e.cronForm))}function Ch(e,t){let n=e.trim()||`Job`,r=`${n} copy`;if(!t.has(v(r)))return r;let i=2;for(;i<1e3;){let e=`${n} copy ${i}`;if(!t.has(v(e)))return e;i+=1}return`${n} copy ${Date.now()}`}function wh(e,t){Jm(e),e.cronCloningJob=t,e.cronRunsJobId=t.id;let n=new Set(e.cronJobs.map(e=>v(e.name))),r=nh(t,e.cronForm);r.name=Ch(t.name,n),r.payloadLocked&&(r.payloadLocked=!1,r.payloadKind=Dh.payloadKind,r.payloadText=``),e.cronForm=km(r,{payloadKind:r.payloadKind}),e.cronFieldErrors=Am(e.cronForm)}function Th(e,t){Jm(e),Xm(e,t)}var Eh,Dh,Oh,kh;function Ah(){return(Ah=t((()=>{ue(),i(),ys(),Ks(),W(),Ye(),Lt(),wt(),bm(),Eh=`last`,Dh={name:``,description:``,agentId:``,sessionKey:``,clearAgent:!1,enabled:!0,deleteAfterRun:!1,scheduleKind:`every`,scheduleAt:``,everyAmount:`30`,everyUnit:`minutes`,cronExpr:`0 7 * * *`,cronTz:``,scheduleExact:!1,staggerAmount:``,staggerUnit:`seconds`,triggerEnabled:!1,triggerScript:``,triggerOnce:!1,sessionTarget:`isolated`,wakeMode:`now`,payloadKind:`agentTurn`,payloadLocked:!1,payloadText:``,payloadModel:``,payloadThinking:``,payloadLightContext:!1,deliveryMode:`none`,deliveryChannel:`last`,deliveryTo:``,deliveryAccountId:``,deliveryBestEffort:!1,deliveryThreadId:void 0,deliveryCompletionDestination:void 0,deliveryFailureDestination:void 0,failureAlertMode:`inherit`,failureAlertAfter:``,failureAlertCooldownSeconds:``,failureAlertChannel:`last`,failureAlertTo:``,failureAlertDeliveryMode:``,failureAlertAccountId:``,timeoutSeconds:``},Oh=new WeakMap,kh=new WeakMap})))()}function jh(e){return e.state?.lastRunStatus??e.state?.lastStatus??`unknown`}function Mh(e){let t=e.state?.runningAtMs;return typeof t==`number`&&Number.isFinite(t)}function Nh(e){return e.state?.autoDisabled?!0:e.enabled&&jh(e)===`error`}function Ph(){return(Ph=t((()=>{})))()}function Fh(e,t){return zh[e.kind]-zh[t.kind]}function Ih(e){let t=[],n=e=>e.name?.trim()||e.id,r=(t,n,r)=>{let i=e.cronOwnerByJobId?.get(t.id);return{...i?{context:i}:{},status:n,time:r}},i=e=>Xt(e,Rh),a=(e,t)=>({...e,type:`attention`,category:t,dismissal:{kind:e.kind,signature:e.signature},requiresAction:!0}),o=(e,t)=>({...e,action:{kind:`askCustodian`,alert:{...t,id:`${e.kind}:${e.signature}`}}}),s=e.cronJobs.filter(Nh).toSorted((e,t)=>(t.state?.lastRunAtMs??t.updatedAtMs)-(e.state?.lastRunAtMs??e.updatedAtMs));for(let i of s){let o=n(i),s=nt(Math.max(0,e.now-(i.state?.lastRunAtMs??i.updatedAtMs)));t.push(a({kind:`cronFailed`,severity:`error`,icon:`clock`,label:o,detail:G(`attention.automationFailed`,{time:s}),meta:r(i,G(`attention.failed`),s),action:{kind:`navigate`,routeId:`cron`},signature:i.id},`automations`))}let c=e.cronJobs.filter(t=>e.cronSchedulerEnabled!==!1&&t.enabled&&!Mh(t)&&t.state?.nextRunAtMs!=null&&e.now-t.state.nextRunAtMs>Lh).toSorted((e,t)=>(t.state?.nextRunAtMs??t.updatedAtMs)-(e.state?.nextRunAtMs??e.updatedAtMs));for(let i of c){let o=n(i),s=`${i.id}@${i.state?.nextRunAtMs}`,c=nt(Math.max(0,e.now-(i.state?.nextRunAtMs??i.updatedAtMs)));t.push(a({kind:`cronOverdue`,severity:`warning`,icon:`clock`,label:o,detail:G(`attention.automationOverdue`,{time:c}),meta:r(i,G(`attention.overdue`),c),action:{kind:`navigate`,routeId:`cron`},signature:s},`automations`))}let l=Aa(e.modelAuthStatus?.providers??[]).filter($a).filter(e=>e.status===`expired`||e.status===`missing`);for(let n of l){let r=e.modelAuthAgentId?`agent:${e.modelAuthAgentId}\n${n.provider}`:n.provider,s=`${n.displayName}: ${n.status}`,c=n.profiles.find(e=>e.status===`expired`||e.status===`missing`)?.profileId??e.modelAuthAgentId?.trim(),l=nt(Math.max(0,e.now-(e.modelAuthStatus?.ts??e.now)),{suffix:!1}),u=c?G(`attention.modelAuthExpiredWithScope`,{scope:c,time:l}):G(`attention.modelAuthExpiredState`,{time:l}),d=G(`attention.modelAuthExpired`,{providers:n.displayName});t.push(a(o({kind:`modelAuthExpired`,severity:`error`,icon:`plug`,label:n.displayName,detail:u,meta:{...c?{context:c}:{},status:G(`attention.authExpired`),time:l},inlineAction:{label:G(`attention.reconnect`),routeId:`model-providers`},signature:r},{title:d,facts:[s],question:i(G(`attention.alerts.modelAuthExpiredQuestion`,{facts:s})),action:{label:G(`routeTitles.modelProviders`),target:{kind:`navigate`,routeId:`model-providers`}}}),`system`))}return t}var Lh,Rh,zh;function Bh(){return(Bh=t((()=>{W(),Lt(),cs(),Lh=3e5,Rh=1e3,zh={modelAuthExpired:0,cronFailed:1,cronOverdue:2}})))()}function Vh(e,t,n=Date.now()){return!!(e&&(e.status===`running`||!t&&e.finishedAtMs!==null&&n-e.finishedAtMs<864e5))}function Hh(e){let t=e.overlays.snapshot,n=t.updateSchedule?.campaign,r=t.updateRun,i=Vh(r,t.updateRunAcknowledged),a=r?null:t.updateStatusBanner,o=t.updateRunning||t.updateReconciliationPending||n?.state===`applying`,s=xa(e.gateway.snapshot,`update.run`,`operator.admin`),c=xa(e.gateway.snapshot,`update.status`,`operator.admin`),l=n&&!t.updateCampaignStatusHydrated&&c,u=i||(t.updateReconciliationPending?!0:l?!!(t.updateRunning||a):!!(t.updateRunning||a||t.updateAvailable||n)),d=i&&r?.status!==`running`?{kind:`updateAvailable`,signature:JSON.stringify([`run`,r?.runId])}:mi({gatewayBootId:e.gateway.snapshot.hello?.server?.bootId,updateAvailable:t.updateAvailable,updateSchedule:t.updateSchedule}),f=t.updateRunning||t.updateReconciliationPending||n?.state===`applying`||Br(a?.tone);return{actionable:Un(t.updateAvailable,t.updateSchedule,o),busy:o,canUpdate:s,dismissal:d,forced:f,present:u}}function Uh(){return(Uh=t((()=>{Wn(),Sa(),ti()})))()}var Wh,Gh,Kh;function qh(){return(qh=t((()=>{gm(),Yt(),Ah(),cs(),A(),ti(),mm(),Bh(),Uh(),Wh=6e4,Gh=6e5,Kh=class{constructor(e,t){this.sources=e,this.onChange=t,this.cronJobs=[],this.cronSchedulerEnabled=null,this.modelAuthStatus=null,this.modelAuthAgentId=null,this.loadedOwner=null,this.loadedClient=this.sources.gateway.snapshot.client,this.loadedAgentScope={...this.sources.agentSelection.state},this.cronLoadedAtMs=0,this.modelAuthLoadedAtMs=0,this.dismissedScope=null,this.dismissed={},this.loadGeneration=0,this.cronRefresh=null,this.modelAuthRefresh=null,this.refreshIfStale=()=>{let e=this.sources.agentSelection.state.selectedId?Math.min(this.cronLoadedAtMs,this.modelAuthLoadedAtMs):this.cronLoadedAtMs;document.visibilityState===`visible`&&Date.now()-e>=Wh&&this.load()},this.syncDismissalsFromStorage=e=>{this.dismissedScope&&(e.key===null||e.key===xi(this.dismissedScope))&&this.syncDismissals()},this.mentions=hm(e.gateway,{connectionBootstrap:e.connectionBootstrap}),this.loadedClient=null,this.stopGateway=e.gateway.subscribe(()=>this.synchronizeGateway()),this.stopEvents=e.gateway.subscribeEvents(e=>{e.event===`cron`&&this.load(!1)}),this.stopSelection=e.agentSelection.subscribe(()=>this.synchronizeGateway()),this.stopAgents=e.agents.subscribe(t),this.stopOverlays=e.overlays.subscribe(t),this.stopMentions=this.mentions.subscribe(t),document.addEventListener(`visibilitychange`,this.refreshIfStale),globalThis.addEventListener(`storage`,this.syncDismissalsFromStorage),this.idleRefreshTimer=globalThis.setInterval(this.refreshIfStale,Gh),this.synchronizeGateway()}get entries(){return this.buildEntries().filter(e=>!e.dismissal||!Vr(this.dismissed,e.dismissal))}owner(){return{connectionRevision:this.sources.gateway.connectionRevision,profileId:this.sources.gateway.snapshot.selfUser?.id??null}}ownerEquals(e,t){return e.connectionRevision===t.connectionRevision&&e.profileId===t.profileId}clearHealth(){this.cronJobs=[],this.cronSchedulerEnabled=null,this.modelAuthStatus=null,this.modelAuthAgentId=null}cronOwnerByJobId(){let e=this.sources.agentSelection.state,t=this.sources.agents.state.agentsList;if(e.scopeId!==null||!t)return;let n=new Map(t.agents.map(e=>[d(e.id),Tt(e)])),r=d(t.defaultId);return new Map(this.cronJobs.map(e=>{let t=d(e.agentId??r);return[e.id,n.get(t)??t]}))}buildEntries(){let e=this.sources.gateway.snapshot;if(e.phase!==`connected`)return[];let t=this.sources.overlays.snapshot,n=Hh(this.sources),r=um({canDismiss:n.canUpdate,dismissal:n.dismissal,forced:n.forced,requiresAction:n.forced||n.canUpdate&&n.actionable,severity:t.updateStatusBanner?.tone===`danger`?`error`:`warning`,visible:n.present}),i=lm({scopes:e.hello?.auth?.scopes,state:this.sources.scopeUpgrade.state}),a=Ih({cronJobs:this.cronJobs,cronSchedulerEnabled:this.cronSchedulerEnabled,cronOwnerByJobId:this.cronOwnerByJobId(),modelAuthStatus:this.modelAuthStatus,modelAuthAgentId:this.modelAuthAgentId,now:Date.now()}).toSorted(Fh);return dm({approvals:t.approvalQueue,attention:a,mentions:this.mentions.snapshot.items,scopeUpgrade:i,update:r})}reconcileDismissals(e){this.dismissedScope&&(this.dismissed=hi({active:this.buildEntries().flatMap(e=>e.dismissal?[e.dismissal]:[]),gatewayUrl:this.dismissedScope,scope:e}))}load(e=!0){let t=this.sources.gateway.snapshot,n=t.client;if(t.phase!==`connected`||!n)return;let r=this.owner(),i={...this.sources.agentSelection.state},a=this.loadGeneration;this.loadedOwner=r,this.loadedClient=n,this.loadedAgentScope=i;let o=()=>a===this.loadGeneration&&this.sources.gateway.snapshot.phase===`connected`&&this.sources.gateway.snapshot.client===n&&this.ownerEquals(r,this.owner())&&this.sources.agentSelection.state.selectedId===i.selectedId&&this.sources.agentSelection.state.scopeId===i.scopeId,s=e=>{o()&&(e.modelAuthAgentId?this.modelAuthLoadedAtMs=Date.now():this.cronLoadedAtMs=Date.now(),this.reconcileDismissals(e),this.onChange())};if(this.cronRefresh?.generation===a)this.cronRefresh.requested=!0;else{let e={generation:a,requested:!0};this.cronRefresh=e,(async()=>{try{for(;e.requested&&o();){e.requested=!1;let t=Dm({client:n,connected:!0});t.cronAgentId=i.scopeId,await Promise.all([Km(t),Mm(t)]),o()&&(t.cronJobsError||(this.cronJobs=t.cronJobs),t.cronError||(this.cronSchedulerEnabled=t.cronStatus?.enabled??null),s({cronInventoryComplete:i.scopeId===null&&!t.cronJobsHasMore&&!e.requested&&!t.cronJobsError&&!t.cronError,modelAuthAgentId:null}))}}finally{this.cronRefresh===e&&(this.cronRefresh=null)}})()}if((e||i.selectedId!==this.modelAuthAgentId)&&i.selectedId){if(this.modelAuthRefresh?.generation===a)this.modelAuthRefresh.requested||=e;else{let e={generation:a,requested:!0},t=i.selectedId;this.modelAuthRefresh=e,(async()=>{try{for(;e.requested&&o();){e.requested=!1;let r=await as(n,{agentId:t}).catch(()=>null);o()&&(this.modelAuthStatus=r,this.modelAuthAgentId=t,s({cronInventoryComplete:!1,modelAuthAgentId:t}))}}finally{this.modelAuthRefresh===e&&(this.modelAuthRefresh=null)}})()}}else i.selectedId||(this.modelAuthStatus=null,this.modelAuthAgentId=null)}synchronizeGateway(){let e=this.sources.gateway.snapshot,t=this.sources.gateway.connection.gatewayUrl;if(t&&t!==this.dismissedScope&&(this.dismissedScope=t,this.dismissed=Xr(t)),e.phase!==`connected`||!e.client){this.loadGeneration+=1,this.loadedOwner=null,this.loadedClient=null,this.clearHealth(),this.onChange();return}let n=this.owner(),r=this.sources.agentSelection.state,i=this.loadedOwner!==null&&!this.ownerEquals(n,this.loadedOwner);if(i&&(this.clearHealth(),this.onChange()),!i&&e.client===this.loadedClient&&r.selectedId===this.loadedAgentScope.selectedId&&r.scopeId===this.loadedAgentScope.scopeId)return;let a=!1;r.selectedId!==this.loadedAgentScope.selectedId&&(this.modelAuthStatus=null,this.modelAuthAgentId=null,a=!0),r.scopeId!==this.loadedAgentScope.scopeId&&(this.cronJobs=[],a=!0),a&&this.onChange(),this.loadGeneration+=1,this.load()}syncDismissals(){this.dismissedScope&&(this.dismissed=Xr(this.dismissedScope),this.onChange())}dismiss(e){let t=this.sources.overlays.snapshot.updateRun;if(e.kind===`updateAvailable`&&t&&t.status!==`running`&&e.signature===JSON.stringify([`run`,t.runId])){this.sources.overlays.acknowledgeUpdateRun();return}this.dismissedScope&&(this.dismissed=zr(this.dismissedScope,e),this.onChange())}dispose(){this.loadGeneration+=1,this.stopGateway(),this.stopEvents(),this.stopSelection(),this.stopAgents(),this.stopOverlays(),this.stopMentions(),this.mentions.dispose(),document.removeEventListener(`visibilitychange`,this.refreshIfStale),globalThis.removeEventListener(`storage`,this.syncDismissalsFromStorage),globalThis.clearInterval(this.idleRefreshTimer)}}})))()}var Jh;function Yh(){return(Yh=t((()=>{_e(),I(),F(),lr(),W(),Sa(),tt(),Ee(),H(),ri(),mm(),qh(),Ur(),se(),Jh=class extends bt{constructor(...e){super(...e),this.panelOpen=!1,this.panelPosition={left:8,anchor:`bottom`,bottom:8},this.selectedTab=`all`,this.overflowAbove=!1,this.overflowBelow=!1,this.panelTrigger=null,this.mentions=null,this.panelRenderer=null,this.panelLoad=null,this.panelGeneration=0,this.subscriptions=new _n(this).watch(()=>this.context?.sidebarAttention,(e,t)=>e.subscribe(t)).watch(()=>this.context?.sessions,(e,t)=>e.subscribe(t)).watch(()=>this.context?.agents,(e,t)=>e.subscribe(t)).watch(()=>this.context?.agentIdentity,(e,t)=>e.subscribe(t)),this.handleOutsideInteraction=e=>{(e instanceof KeyboardEvent?e.key===`Escape`&&!this.panelOpen&&!e.defaultPrevented:!e.composedPath().includes(this))&&(e instanceof KeyboardEvent&&this.panelTrigger&&(e.preventDefault(),e.stopPropagation()),this.closePanel(!1))},this.syncOverflowCue=()=>{let e=this.querySelector(`.sidebar-issues-panel__list`),t=!!(e&&e.scrollTop>2),n=!!(e&&e.scrollHeight-e.scrollTop-e.clientHeight>2);t!==this.overflowAbove&&(this.overflowAbove=t),n!==this.overflowBelow&&(this.overflowBelow=n)},this.handlePanelKeydown=e=>{if(e.key===`Escape`){e.preventDefault(),this.closePanel(!0);return}if(e.key!==`Tab`)return;let t=e.currentTarget;if(!(t instanceof HTMLElement))return;let n=Array.from(t.querySelectorAll(`summary, button, a[href], [tabindex]:not([tabindex='-1'])`)).filter(e=>{let t=e.closest(`details:not([open])`),n=e.tagName===`SUMMARY`||!!e.parentElement?.closest(`summary`);return!e.hasAttribute(`disabled`)&&!e.closest(`[hidden]`)&&(!t||n)}),r=n[0],i=n.at(-1);e.shiftKey&&document.activeElement===r?(e.preventDefault(),i?.focus()):!e.shiftKey&&document.activeElement===i&&(e.preventDefault(),r?.focus())}}connectedCallback(){super.connectedCallback(),this.mentions=this.context?.sidebarAttention.activate(Kh)??null,document.addEventListener(`pointerdown`,this.handleOutsideInteraction,!0),document.addEventListener(`keydown`,this.handleOutsideInteraction,!0)}disconnectedCallback(){document.removeEventListener(`pointerdown`,this.handleOutsideInteraction,!0),document.removeEventListener(`keydown`,this.handleOutsideInteraction,!0),this.closePanel(!1),this.subscriptions.clear(),super.disconnectedCallback()}willUpdate(e){e.has(`activeRouteId`)&&e.get(`activeRouteId`)!==void 0&&this.closePanel(!1)}updated(e){super.updated(e),this.panelOpen&&this.syncOverflowCue()}dismiss(e){this.context?.sidebarAttention.dismiss(e)}currentInboxEntries(){return[...this.context?.sidebarAttention.entries??[]]}async openPanel(e){let t=++this.panelGeneration;this.panelTrigger=e,this.panelLoad??=D(()=>import(`./sidebar-attention-panel.runtime-BOkCPpjt.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]),import.meta.url);let n=await this.panelLoad;if(!this.isConnected||t!==this.panelGeneration)return;this.context?.scopeUpgrade.activate(n.ScopeUpgradeController);let r=e.getBoundingClientRect(),i=Math.min(390,globalThis.innerWidth-16),a=r.left+r.width/2-i/2,o=Math.max(8,Math.min(a,globalThis.innerWidth-i-8));this.panelRenderer=n.renderSidebarAttentionPanel,this.panelPosition=r.top<globalThis.innerHeight/2?{left:o,anchor:`top`,top:Math.max(8,r.bottom+8)}:{left:o,anchor:`bottom`,bottom:Math.max(8,globalThis.innerHeight-r.top+8)},this.selectedTab=`all`,this.panelOpen=!0,await this.updateComplete,t===this.panelGeneration&&this.querySelector(`.sidebar-issues-panel__list`)?.focus()}closePanel(e){let t=++this.panelGeneration,n=e&&this.panelOpen?this.panelTrigger:null;this.panelOpen=!1,this.overflowAbove=!1,this.overflowBelow=!1,this.panelTrigger=null,n&&this.updateComplete.then(()=>{t===this.panelGeneration&&n.focus()})}dismissPanel(){let e=this.panelOpen;return this.closePanel(!1),e}selectTab(e){this.selectedTab=e,this.updateComplete.then(()=>{if(!this.panelOpen||this.selectedTab!==e)return;let t=this.querySelector(`.sidebar-issues-panel__list`);t&&(t.scrollTop=0),this.syncOverflowCue()})}async open(e){if(this.closePanel(!1),e.action.kind===`navigate`){this.onNavigate?.(e.action.routeId);return}let{custodianAlertStore:t}=await D(async()=>{let{custodianAlertStore:e}=await import(`./custodian-alert-store-DfB2H-t3.js`);return{custodianAlertStore:e}},__vite__mapDeps([26,27,1]),import.meta.url);t.present(e.action.alert);let n=this.context?.gateway.snapshot;xa(n,`openclaw.chat`,`operator.admin`)?window.dispatchEvent(new CustomEvent(Yr,{detail:{open:!0}})):(this.onNavigate??(e=>this.context?.navigate(e)))(`custodian`)}async decideApproval(e,t,n){let r=this.context;if(!r)return;let i=e.currentTarget;if(!(i instanceof HTMLElement))return;let a=Array.from(this.querySelectorAll(`[data-issue-row-focus]`)),o=i.closest(`[data-approval-id]`)?.querySelector(`[data-issue-row-focus]`)??null,s=o?a.indexOf(o):0,c=this.panelGeneration;if(await r.overlays.decideApproval(n,t),await this.updateComplete,c!==this.panelGeneration||i.isConnected)return;let l=Array.from(this.querySelectorAll(`[data-issue-row-focus]`));l[Math.min(Math.max(s,0),l.length-1)]?.focus()}render(){if(this.context?.gateway.snapshot.phase!==`connected`)return B;let e=this.currentInboxEntries(),t=pm(e).all,n=G(t===1?`attention.issueCount`:`attention.issueCountPlural`,{count:String(t)});return R`
<span class="sr-only" role="status" aria-live="polite">${n}</span>
<button
type="button"
class="sidebar-issues-button"
aria-expanded=${String(this.panelOpen)}
aria-haspopup="dialog"
aria-controls="sidebar-issues-panel"
aria-label=${n}
@click=${e=>{let t=e.currentTarget;t instanceof HTMLElement&&(this.panelOpen?this.closePanel(!0):this.openPanel(t))}}
>
<span class="sidebar-issues-button__icon" aria-hidden="true">${U.inbox}</span>
${t>0?R`<span class="sidebar-issues-button__count" aria-hidden="true"
>${t>9?`9+`:t}</span
>`:B}
</button>
${this.panelOpen&&this.panelRenderer&&this.mentions?this.panelRenderer({context:this.context,mentions:this.mentions,entries:e,onApprovalDecision:(e,t,n)=>void this.decideApproval(e,t,n),onClose:e=>this.closePanel(e),onDismiss:e=>this.dismiss(e),onKeydown:this.handlePanelKeydown,onNavigate:e=>{this.closePanel(!1),(this.onNavigate??(e=>this.context?.navigate(e)))(e)},onOpen:e=>void this.open(e),onScroll:this.syncOverflowCue,onSelectTab:e=>this.selectTab(e),overflowAbove:this.overflowAbove,overflowBelow:this.overflowBelow,panelPosition:this.panelPosition,selectedTab:this.selectedTab,watchUpdateProgress:this.watchUpdateProgress}):B}
`}},k([y({context:_r,subscribe:!0})],Jh.prototype,`context`,void 0),k([z()],Jh.prototype,`panelOpen`,void 0),k([z()],Jh.prototype,`panelPosition`,void 0),k([z()],Jh.prototype,`selectedTab`,void 0),k([z()],Jh.prototype,`overflowAbove`,void 0),k([z()],Jh.prototype,`overflowBelow`,void 0),k([V({attribute:!1})],Jh.prototype,`activeRouteId`,void 0),k([V({attribute:!1})],Jh.prototype,`onNavigate`,void 0),k([V({attribute:!1})],Jh.prototype,`watchUpdateProgress`,void 0),customElements.get(`openclaw-sidebar-attention`)||customElements.define(`openclaw-sidebar-attention`,Jh)})))()}var Xh;function Zh(){return(Zh=t((()=>{I(),F(),W(),tt(),H(),Ur(),Xh=class extends hn{constructor(...e){super(...e),this.mode=`system`,this.handleModeChange=e=>{let t=this.mode===`system`?`light`:this.mode===`light`?`dark`:`system`;this.dispatchEvent(new CustomEvent(`theme-change`,{detail:{mode:t,element:e.currentTarget},bubbles:!0,composed:!0}))}}render(){let e=this.mode===`system`?`common.system`:this.mode===`light`?`common.light`:`common.dark`,t=G(e),n=G(`common.colorModeOption`,{mode:t});return R`
<openclaw-tooltip .content=${n}>
<button
type="button"
class="theme-mode-toggle"
aria-label=${n}
@click=${this.handleModeChange}
>
${this.mode===`system`?U.monitor:this.mode===`light`?U.sun:U.moon}
</button>
</openclaw-tooltip>
`}},k([V({attribute:!1})],Xh.prototype,`mode`,void 0),customElements.get(`openclaw-theme-mode-toggle`)||customElements.define(`openclaw-theme-mode-toggle`,Xh)})))()}function Qh(e,t){return e===void 0?!1:t===`config`?mr(e):t===`plugins`?Nr(e):t===`sessions`?Ir(e):e===t}function $h(e){let t=e??[];return[`chat`,`control`,`agent`,`settings`].flatMap(e=>t.filter(t=>(t.group??`control`)===e))}function eg(e){return R`
<a
href=${e.href}
class="nav-item ${e.active?`nav-item--active`:``}"
@focus=${t=>e.onPreload(t)}
@blur=${e.onCancelPreload}
@pointerenter=${t=>e.onPreload(t)}
@pointerleave=${e.onCancelPreload}
@touchstart=${t=>e.onPreload(t,!0)}
@click=${t=>{Ve(t)&&(t.preventDefault(),e.onNavigate())}}
>
<span class="nav-item__icon" aria-hidden="true"
>${U[rr(e.routeId)]}</span
>
<span class="nav-item__text">${xr(e.routeId)}</span>
</a>
`}function tg(e){let t=Jt({pluginId:e.tab.pluginId,id:e.tab.id}),n=Object.hasOwn(U,e.tab.icon)?e.tab.icon:`puzzle`;return R`
<a
href=${`${Er(`plugin`,e.basePath)}${t}`}
class="nav-item ${e.active?`nav-item--active`:``}"
aria-current=${e.active?`page`:B}
@click=${n=>{Ve(n)&&(n.preventDefault(),e.onNavigate(t))}}
>
<span class="nav-item__icon" aria-hidden="true">${U[n]}</span>
<span class="nav-item__text">${e.tab.label}</span>
</a>
`}function ng(e,t){let n=Qh(e.activeRouteId,t);return R`
<wa-dropdown-item
value=${t}
class="sidebar-customize-menu__item ${n?`sidebar-customize-menu__item--active`:``}"
aria-current=${n?`page`:B}
@pointerenter=${n=>e.onPreloadRoute(t,n)}
@pointerleave=${e.onCancelPreload}
@click=${e=>{if(!Ve(e)){e.currentTarget.dataset.nativeNavigation=`true`;return}e.preventDefault()}}
>
<a href=${Er(t,e.basePath)} tabindex="-1">
<span class="nav-item__icon" aria-hidden="true"
>${U[rr(t)]}</span
>
<span class="sidebar-customize-menu__text">${xr(t)}</span>
</a>
</wa-dropdown-item>
`}function rg(e){let t=e.position,n=Cr(e.sidebarEntries).filter(t=>e.isRouteEnabled(t));return R`
<wa-dropdown
class="sidebar-customize-menu sidebar-more-menu"
.open=${!0}
placement="bottom-start"
.distance=${0}
aria-label=${G(`nav.more`)}
@wa-select=${t=>{t.preventDefault();let r=t.detail.item;if(r.dataset.nativeNavigation){delete r.dataset.nativeNavigation;return}let i=r.value;if(i===`customize`){e.onEditPinnedItems();return}i&&n.includes(i)&&e.onNavigateRoute(i)}}
@keydown=${t=>Lr(t,e.onTabAway)}
@wa-after-hide=${t=>e.onClose(ii(t))}
>
<button
slot="trigger"
type="button"
tabindex="-1"
aria-hidden="true"
aria-label=${G(`nav.more`)}
style="position: fixed; left: ${t.x}px; top: ${t.y}px; width: 1px; height: 1px; opacity: 0; pointer-events: none;"
></button>
${n.map(t=>ng(e,t))}
<div class="sidebar-customize-menu__separator" role="separator"></div>
<wa-dropdown-item class="sidebar-customize-menu__item" value="customize">
<span slot="icon" class="nav-item__icon" aria-hidden="true">${U.penLine}</span>
<span class="sidebar-customize-menu__text">${G(`nav.customize`)}</span>
</wa-dropdown-item>
</wa-dropdown>
`}function ig(e){let t=e.position;return R`
<wa-dropdown
class="sidebar-customize-menu sidebar-pin-editor-menu"
.open=${!0}
placement="bottom-start"
.distance=${0}
aria-label=${G(`nav.customize`)}
@wa-select=${t=>{t.preventDefault();let n=t.detail.item.value;if(n===`reset`)e.onReset();else if(n?.startsWith(`plugin:`)){let t=n.slice(7);e.pluginNavigation.some(e=>e.key===t)&&e.onTogglePlugin(t)}else n&&br.includes(n)&&e.onToggleRoute(n)}}
@keydown=${t=>Lr(t,e.onTabAway)}
@wa-after-hide=${t=>e.onClose(ii(t))}
>
<button
slot="trigger"
type="button"
tabindex="-1"
aria-hidden="true"
aria-label=${G(`nav.customize`)}
style="position: fixed; left: ${t.x}px; top: ${t.y}px; width: 1px; height: 1px; opacity: 0; pointer-events: none;"
></button>
<div class="sidebar-customize-menu__title">${G(`nav.customize`)}</div>
${e.preferencesBrowserOnly?R`<div class="sidebar-customize-menu__provenance" role="note">
${G(`quickSettings.personal.browserOnly`)}
</div>`:B}
${br.filter(t=>e.isRouteEnabled(t)).map(t=>{let n=e.sidebarEntries.includes(ir({type:`route`,route:t}));return R`
<wa-dropdown-item
class="sidebar-customize-menu__item"
type="checkbox"
value=${t}
.checked=${n}
>
<span slot="icon" class="nav-item__icon" aria-hidden="true"
>${U[rr(t)]}</span
>
<span class="sidebar-customize-menu__text">${xr(t)}</span>
</wa-dropdown-item>
`})}
${e.pluginNavigation.filter(e=>e.value.defaultVisible===!1).map(t=>R` <wa-dropdown-item
class="sidebar-customize-menu__item"
type="checkbox"
value=${`plugin:${t.key}`}
.checked=${e.sidebarEntries.includes(`plugin:${t.key}`)}
>
<span slot="icon" class="nav-item__icon" aria-hidden="true">${U.puzzle}</span>
<span class="sidebar-customize-menu__text">${t.value.label}</span>
</wa-dropdown-item>`)}
<div class="sidebar-customize-menu__separator" role="separator"></div>
<wa-dropdown-item class="sidebar-customize-menu__item" value="reset">
<span slot="icon" class="nav-item__icon" aria-hidden="true">${U.refresh}</span>
<span class="sidebar-customize-menu__text">${G(`nav.customizeReset`)}</span>
</wa-dropdown-item>
</wa-dropdown>
`}function ag(){return(ag=t((()=>{I(),ur(),sr(),W(),Gt(),H(),oi()})))()}function og(e){return e.replace(cg,e=>e.replace(sg,``))}var sg,cg;function lg(){return(lg=t((()=>{sg=/(?:⚠️?|⛔|❌|🛠️?|✉️?)/gu,cg=/^[ \t]*(?:⚠️?|⛔|❌|🛠️?|✉️?)(?:[ \t]*(?:⚠️?|⛔|❌|🛠️?|✉️?))*/u})))()}function ug(e){return dg[e]}var dg;function fg(){return(fg=t((()=>{H(),dg={hand:U.hand,key:U.key,alert:U.alertTriangle,flag:U.flag,lock:U.lock,hourglass:U.circle}})))()}function pg(e){e.stopPropagation()}function mg(e,t=!1){if(e.kind===`none`)return B;let n=e.kind===`question`?hg(e):null,r=e.kind===`question`?U.hand:e.kind===`approval`?U.shieldQuestion:e.kind===`agent`?ug(e.icon):U.alertTriangle,i=R`<span
class="sidebar-session-attention__icon sidebar-session-attention__icon--${e.kind}"
data-session-attention=${e.kind}
role=${n?`img`:B}
aria-label=${n??B}
aria-hidden=${n?B:`true`}
tabindex=${n?`0`:B}
@focusin=${n?pg:B}
>${r}</span
>`;return t&&n?R`<openclaw-tooltip .content=${n}>${i}</openclaw-tooltip>`:i}function hg(e){switch(e.kind){case`question`:return G(`sessionsView.waitingForAnswer`);case`approval`:return G(`sessionsView.waitingForApproval`);case`error`:return G(`sessionsView.runFailedReason`,{reason:og(e.reason)});case`agent`:return e.note;case`none`:return;default:return e}}function gg(e=!0,t=!1){let n=G(t?`sessionsView.statusQueued`:`sessionsView.activeRun`);return R`<span
class="session-run-spinner sidebar-recent-session__state${t?` session-run-spinner--queued`:``}"
role="img"
aria-label=${n}
title=${e?n:B}
></span>`}function _g(e){return e.hasActiveRun||e.runningChildCount>0}function vg(e,t=!0){if(_g(e))return gg(t,e.hasActiveRun&&e.status===`queued`);if(!e.isChild)return e.unread?R`<span
class="session-unread-dot sidebar-recent-session__unread"
role="img"
aria-label=${G(`sessionsView.unread`)}
></span>`:B;let n=e.status;if(!n)return B;let r=n===`done`?{icon:U.check,label:G(`sessionsView.statusDone`)}:n===`killed`?{icon:U.stop,label:G(`sessionsView.statusKilled`)}:n===`timeout`?{icon:U.alertTriangle,label:G(`sessionsView.statusTimeout`)}:n===`failed`?{icon:U.alertTriangle,label:G(`sessionsView.statusFailed`)}:null;return r?R`<span
class="sidebar-child-session__status sidebar-child-session__status--${n}"
role="img"
aria-label=${r.label}
title=${r.label}
>${r.icon}</span
>`:B}function yg(){return(yg=t((()=>{I(),W(),lg(),H(),fg()})))()}function bg(e){let{content:t,running:n,queued:r=!1,circular:i=!1,badge:a=B}=e;return R`<span class="session-glyph${`${i?` session-glyph--circular`:``}${n?` session-glyph--running`:``}`}">
<span class="session-glyph__content">${t}</span>
${n?R`<span
class="session-glyph__ring${r?` session-glyph__ring--queued`:``}"
role="img"
aria-label=${G(r?`sessionsView.statusQueued`:`sessionsView.activeRun`)}
></span>`:B}
${a}
</span>`}function xg(){return R`<span
class="session-glyph__badge session-glyph__badge--unread"
role="img"
aria-label=${G(`sessionsView.unread`)}
></span>`}function Sg(){return(Sg=t((()=>{I(),W()})))()}async function Cg(e,t,n){let r=e.currentTarget;if(!(r instanceof HTMLButtonElement))return;let i=await Ct(t);r.dataset.copied=i?`1`:`0`,r.setAttribute(`aria-label`,G(i?`aboutPage.copiedCommit`:`common.copyFailed`)),window.setTimeout(()=>{r.isConnected&&(delete r.dataset.copied,r.setAttribute(`aria-label`,n))},Ng)}function wg(e){return!e||e===`main`?``:`${e.length>Mg?`${s(e,Mg)}…`:e}@`}function Tg(e){return e.commit?`${wg(e.branch)}${`${e.commit.slice(0,7)}${e.dirty===!0?`*`:``}`}`:null}function Eg(e){let t=Tg(e);return t?e.branch&&e.branch!==`main`?t:`git@${t}`:null}function Dg(e){return e.release?null:Eg(e)}function Og(e){let t=Dg(e);if(!t)return null;let n=e.commitAt?Date.parse(e.commitAt):NaN;return Number.isFinite(n)?`${t} · ${un(n)}`:t}function kg(e,t){let n=e.version??t,r=Dg(e);return r?[n,r].filter(e=>!!e).join(` · `):n}function Ag(e,t){let n=e.builtAt?Date.parse(e.builtAt):NaN;return{summary:e.version?`v${e.version}`:null,commit:e.commit?.slice(0,12)??null,builtAt:Number.isFinite(n)?`${mn(n,{day:`numeric`,month:`short`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,hour12:!1,timeZone:`UTC`})} UTC`:null,gatewayVersion:t}}function jg(e,t){let n=Ag(e,t),r=n.commit,i=G(`aboutPage.unavailable`),a=G(`aboutPage.copyCommit`);return R`
<div class="sidebar-hover-card__server-details">
<div class="sidebar-hover-card__summary">${n.summary||i}</div>
<dl class="sidebar-hover-card__metadata">
<div class="sidebar-hover-card__metadata-row">
<dt>${G(`aboutPage.commit`)}</dt>
<dd class="sidebar-hover-card__metadata-value--mono sidebar-build-hover-card__commit">
<span>${r??i}</span>
${r?R`<button
type="button"
class="sidebar-build-hover-card__copy"
aria-label=${a}
@click=${e=>void Cg(e,r,a)}
>
<span class="sidebar-build-hover-card__copy-idle" aria-hidden="true"
>${U.copy}</span
>
<span class="sidebar-build-hover-card__copy-done" aria-hidden="true"
>${U.check}</span
>
</button>`:null}
</dd>
</div>
<div class="sidebar-hover-card__metadata-row">
<dt>${G(`aboutPage.built`)}</dt>
<dd>${n.builtAt??i}</dd>
</div>
<div class="sidebar-hover-card__metadata-row">
<dt>${G(`aboutPage.gateway`)}</dt>
<dd>
${n.gatewayVersion?R`<span
class="sidebar-build-hover-card__gateway-state"
aria-hidden="true"
></span
><span class="sr-only">${G(`common.connected`)}</span>`:null}
${n.gatewayVersion??i}
</dd>
</div>
</dl>
</div>
`}var Mg,Ng;function Pg(){return(Pg=t((()=>{I(),W(),Lt(),H(),Mg=14,Ng=1500})))()}function Fg(){if(!yr())return null;let e=window.__OPENCLAW_NATIVE_GATEWAYS__;return!e||!Array.isArray(e.gateways)||e.gateways.length<2?null:e.gateways.find(t=>t.id===e.currentId)??null}function Ig(e){let{activeId:t,agent:n,agents:r,identity:i}=e.activeChipAgent(),a=r.some(n=>{let r=d(n.id);return r!==t&&e.agentUnreadCount(r)>0}),o=Tt(n??{id:t},i),s=e.sessionDataContext?.gateway,c=!!(s&&(s.snapshot.hello||s.connection.token.trim()||s.connection.password.trim())),l=(n?Qt(n,i):i?.emoji)??(tn(o||t)||`?`),u=e.readNewSessionAccess(),f=G(`nav.collapse`);return R`
<div class="sidebar-brand">
<openclaw-sidebar-agent-card
.agentName=${o}
.avatarUrl=${n?cn(n,i):i?.avatar}
.avatarAuthReady=${c}
.avatarText=${l}
.environment=${e.sessionDataContext?.config?.current?.environment??null}
.menuOpen=${e.sidebarMenus.agentMenuPosition!==null}
.menuUnread=${a}
.switcherAvailable=${r.length>1}
.onToggleMenu=${t=>e.sidebarMenus.toggleAgentMenu(t)}
.onMenuPointerEnter=${(t,n)=>e.sidebarMenus.scheduleAgentMenuHoverOpen(t,n)}
.onMenuPointerLeave=${()=>e.sidebarMenus.handleAgentMenuTriggerPointerLeave()}
@contextmenu=${t=>{if(t.preventDefault(),e.sidebarMenus.agentMenuPosition!==null)return;let n=t.currentTarget,r=n.querySelector(`.sidebar-agent-card__main`)??n;e.sidebarMenus.toggleAgentMenu(r)}}
></openclaw-sidebar-agent-card>
<div class="sidebar-brand__actions">
<openclaw-tooltip
.content=${`${f} (${pt(mt.toggleSidebar)})`}
>
<button
type="button"
class="sidebar-brand__icon sidebar-brand__header-control sidebar-brand__desktop-control sidebar-brand__collapse"
aria-label=${f}
aria-expanded="true"
?disabled=${!e.onToggleSidebar}
@click=${()=>e.onToggleSidebar?.()}
>
${U.panelLeftClose}
</button>
</openclaw-tooltip>
<openclaw-tooltip
.content=${`${G(`chat.openCommandPalette`)} (${pt(mt.commandPalette)})`}
>
<button
type="button"
class="sidebar-brand__icon sidebar-brand__header-control sidebar-brand__desktop-control sidebar-brand__search"
aria-label=${G(`chat.openCommandPalette`)}
?disabled=${!e.onOpenPalette}
@click=${()=>e.onOpenPalette?.()}
>
${U.search}
</button>
</openclaw-tooltip>
${fi({basePath:e.basePath,agentId:e.expandedAgentId(),className:`sidebar-brand__icon sidebar-brand__header-control sidebar-brand__new-thread`,label:G(`chat.runControls.newSession`),disabledReason:u.allowed?void 0:u.reason,onOpen:(t,n)=>e.requestOpenNewSession(t,n)})}
</div>
</div>
`}function Lg(e){let t=e.expandedAgentId(),n=e.selectedAgentMainSessionKey(t),r=e.mainSessionRow(t),i=e.resolveHomeSessionAttention(n,r),a=hg(i),o=e.outboxAttentionCountForSession(n),s=cr(e.activeRouteId)&&P(e.getRouteSessionKey(),n),c=e.hasSessionDraft(n),l=r?he(r):!1,u=l&&r?.status===`queued`,d=r?.unread===!0&&!s,f=l?G(u?`sessionsView.statusQueued`:`sessionsView.activeRun`):``,p=d?G(`sessionsView.unread`):``,m=a||f&&p?[a,f,p].filter(Boolean).join(` · `):``,h=bg({content:i.kind===`none`?R`<span class="nav-item__icon" aria-hidden="true">${U.home}</span>`:mg(i),running:!1,badge:d&&!l?xg():B});return R`
<a
href=${dt({face:Le(r),sessionKey:n,fallbackAgentId:t,basePath:e.basePath,row:r??void 0,mainKey:N(n)?.rest,preferenceDerivedFace:!0}).href}
class="nav-item nav-item--home ${s?`nav-item--active`:``}"
aria-label=${m?`${G(`nav.home`)} · ${m}`:B}
aria-current=${s?`page`:B}
@click=${n=>{Ve(n)&&(n.preventDefault(),e.openMainSession(t))}}
>
${a?R`<openclaw-tooltip .content=${a}>${h}</openclaw-tooltip>`:h}
<span class="nav-item__text">${G(`nav.home`)}</span>
${l||o>0||c?R`<span class="nav-item__state sidebar-home-session-states">
${l?gg(!0,u):B}
${gf({outboxAttentionCount:o,hasComposerDraft:c})}
</span>`:B}
</a>
`}function Rg(e){return R`
<div class="sidebar-nav__head">
<span class="sidebar-recent-sessions__label-text sr-only">${G(`nav.pages`)}</span>
<button
type="button"
class="sidebar-nav__head-action"
aria-haspopup="menu"
aria-expanded=${String(e.sidebarMenus.moreMenuPosition!==null)}
aria-label=${G(`nav.customize`)}
@click=${t=>e.sidebarMenus.toggleMoreMenu(t.currentTarget)}
>
${U.penLine}
</button>
</div>
`}function zg(e){let t=`online`,n=e.collapsedSessionSections.has(t),r=G(`presence.rosterTitle`),i=Jn({snapshotUser:e.sessionDataContext?.gateway.snapshot.selfUser,presenceEntries:Gn(e.sessionData.presencePayload),presenceInstanceId:e.sessionData.presenceInstanceId}),a=Ka(e.sessionData.presencePayload,i,e.sessionData.presenceInstanceId);return a.length===0?B:R`
<section class="sidebar-online" aria-label=${r} data-session-section=${t}>
${ad({sectionId:t,draggable:!1,onStartDrag:()=>void 0,onFinishDrag:()=>void 0,content:R`
<button
type="button"
class="sidebar-session-group-toggle"
aria-expanded=${String(!n)}
aria-label=${r}
@click=${()=>e.toggleSection(t)}
>
<span class="sidebar-session-group-toggle__lead" aria-hidden="true">
<span class="sidebar-session-group-toggle__icon"
>${n?U.chevronRight:U.chevronDown}</span
>
</span>
<span class="sidebar-recent-sessions__label-text hover-marquee">${r}</span>
${n?R`<span class="sidebar-online__facepile">
<openclaw-viewer-facepile
.staticUsers=${a}
.maxVisible=${2}
></openclaw-viewer-facepile>
</span>`:B}
</button>
`})}
${n?B:R`<div class="sidebar-online__list">
${jn(a,Bs,e=>R`<div
class="sidebar-online__row"
data-person-card
data-person-card-section="online"
>
<button
class="sidebar-online__person ${Ea(e)?`sidebar-online__person--away`:``}"
type="button"
data-online-user-id=${e.id}
data-person-card-key=${Bs(e)}
data-person-card-trigger
aria-haspopup="dialog"
aria-expanded="false"
aria-label=${G(`presence.card.details`,{name:Ga(e)})}
>
<openclaw-viewer-avatar
.user=${e}
.markAsViewer=${!1}
variant="footer"
aria-hidden="true"
></openclaw-viewer-avatar>
<span class="sidebar-online__person-name">${Ga(e)}</span>
<span class="sidebar-online__person-action" aria-hidden="true"
>${U.chevronRight}</span
>
</button>
</div>`)}
</div>`}
</section>
`}function Bg(e){let t=_f(e),n=Jn({snapshotUser:e.sessionDataContext?.gateway.snapshot.selfUser,presenceEntries:Gn(e.sessionData.presencePayload),presenceInstanceId:e.sessionData.presenceInstanceId}),r=n?.name??n?.email??G(`nav.owner`),i={id:`owner`,...n,name:r,watchedSessions:[]},a=e.offline?null:Fg(),o=Og(ei),s=a?.isPrimary?G(`chat.sessionHeader.gatewayPicker.primaryTag`):null,c=G(`profilePage.identity.menuButtonLabel`,{name:r}),l=e.offline?G(`connection.reconnecting`):a?`${a.name}${s?`, ${s}`:``}`:o;return R`
<div class="sidebar-footer-bar sidebar-footer-bar--one-action">
<button
type="button"
class="sidebar-identity-card"
aria-haspopup="menu"
aria-expanded=${String(e.sidebarMenus.identityMenuPosition!==null)}
aria-label=${l?`${c}: ${l}`:c}
@click=${t=>e.sidebarMenus.toggleIdentityMenu(t.currentTarget)}
>
<openclaw-viewer-avatar .user=${i} variant="footer"></openclaw-viewer-avatar>
<span class="sidebar-identity-card__text">
<span class="sidebar-identity-card__name" title=${r}>${r}</span>
</span>
</button>
${t?vf({kind:t,queuedOutboxCount:e.queuedOutboxCount,title:e.lastError?ht(e.lastError):G(`connection.reconnecting`),onRetry:()=>e.onRetryConnect?.()}):B}
<span class="sidebar-footer-actions">
${Vn(e.sessionDataContext?.gateway)?R`<openclaw-tooltip
.content=${`${G(`assistantPanel.toggle`)} (${pt(mt.homePanel)})`}
><button
type="button"
class="sidebar-brand__icon sidebar-footer-bar__home"
aria-label=${G(`assistantPanel.toggle`)}
@click=${()=>window.dispatchEvent(new CustomEvent(Wr))}
>
${U.home}
</button></openclaw-tooltip
>`:B}
${Ug(e)}
</span>
</div>
`}function Vg(e,t,n){if(t.type===`route`&&!e.sidebarMenus.isRouteEnabled(t.route))return B;let r=ir(t),i=e.sessionOrganizer.sidebarZoneDropTarget?.entry===r?e.sessionOrganizer.sidebarZoneDropTarget.position:null,a=t.type===`route`?e.sidebarMenus.renderRoute(t.route):t.type===`plugin`?R`<openclaw-plugin-contributions
.kind=${`navigation`}
.navigationKey=${t.key}
></openclaw-plugin-contributions>`:n.has(t.key)?e.renderPinnedSidebarSession(n.get(t.key)):B,o=t.type===`route`||t.type===`plugin`;return R`
<div
class="sidebar-zone-entry ${i?`sidebar-zone-entry--drop-${i}`:``} ${e.sessionOrganizer.draggingSidebarEntry===r?`sidebar-zone-entry--dragging`:``}"
data-sidebar-entry=${r}
draggable=${o?`true`:`false`}
@dragstart=${t.type===`route`?n=>e.sessionOrganizer.startSidebarRouteDrag(n,t.route):t.type===`plugin`?n=>e.sessionOrganizer.startSidebarPluginDrag(n,t.key):B}
@dragend=${o?()=>e.sessionOrganizer.finishSidebarEntryDrag():B}
@dragover=${t=>e.sessionOrganizer.handleSidebarZoneDragOver(t,r)}
@drop=${t=>e.sessionOrganizer.handleSidebarZoneDrop(t,r)}
>
${a}
</div>
`}function Hg(e,t){let n={pluginId:t.pluginId,id:t.id},r=Pt(n),i=t.placement?.startsWith(`route:`)?t.placement.slice(6):``,a=or(i)?i:null;return R`
<div class="sidebar-zone-entry" data-sidebar-entry=${`plugin:${r}`}>
${a?e.sidebarMenus.renderRoute(a):tg({tab:t,basePath:e.basePath,active:e.activeRouteId===`plugin`&&e.activePluginTabId===r,onNavigate:t=>e.onNavigate?.(`plugin`,{search:t})})}
</div>
`}function Ug(e){return R`<openclaw-sidebar-attention
.activeRouteId=${e.activeRouteId}
.onNavigate=${t=>e.onNavigate?.(t)}
.watchUpdateProgress=${e.watchUpdateProgress}
></openclaw-sidebar-attention>`}function Wg(){return(Wg=t((()=>{I(),Nn(),ur(),sr(),Tr(),pr(),ni(),W(),Yt(),St(),jt(),Ze(),Fo(),Te(),A(),Gt(),ag(),od(),H(),vi(),ri(),yg(),Sg(),yf(),Pg()})))()}function Gg(e,t){let n=Be(t);return!n||Xe(n)?null:e.find(e=>Be(e.request.sessionKey)===n)??null}function Kg(e){let t=new Map,n=new Set;for(let r of e){let e=r.request.agentId?.trim()||N(r.request.sessionKey)?.agentId;if(e){let n=d(e);t.set(n,(t.get(n)??0)+1)}let i=Be(r.request.sessionKey);i&&n.add(i)}return{agentCounts:t,sessionKeys:n}}function qg(e,t){let n=Be(t);return n?e.sessionKeys.has(n):!1}function Jg(){return(Jg=t((()=>{Ge(),A()})))()}function Yg(){$g??=D(()=>import(`./channel-avatar-Q3fUqgJ5.js`),__vite__mapDeps([28,1,3,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]),import.meta.url)}function Xg(e){let t=fp(e);return t?R`<span class="session-glyph__icon" aria-hidden="true">${t}</span>`:R`<span class="session-glyph__emoji" aria-hidden="true">${e}</span>`}function Zg(e){let t=G(e.hasActiveRun&&e.status===`queued`?`sessionsView.statusQueued`:`sessionsView.activeRun`);return[e.forkSource?G(`sessionsView.forkedSession`):``,_g(e)?t:``,e.unread?G(`sessionsView.unread`):``].filter(Boolean).join(` · `)}function Qg(e,t,n,r,i){let{participants:a,participantCount:o}=e,s=_g(e),c=e.hasActiveRun&&e.status===`queued`,l=e.isChild?B:vg(e,!1);if(e.isChild)return e.attention.kind===`none`?e.icon?{running:s,leadingIndicator:bg({content:Xg(e.icon),running:s,queued:c,badge:e.unread&&!e.hasActiveRun?xg():B}),trailingIndicator:l}:e.channelAvatarUrl?(Yg(),{running:s,leadingIndicator:bg({content:R`<openclaw-channel-avatar
.routeUrl=${e.channelAvatarUrl}
.authTokens=${i?.authTokens??[]}
.authReady=${i?.authReady??!1}
></openclaw-channel-avatar>`,running:s,queued:c,circular:!0,badge:e.unread&&!e.hasActiveRun?xg():B}),trailingIndicator:l}):{running:s,leadingIndicator:vg(e),trailingIndicator:l}:{running:s,leadingIndicator:bg({content:mg(e.attention,!0),running:s,queued:c,badge:e.unread&&!e.hasActiveRun?xg():B}),trailingIndicator:l};if(e.attention.kind!==`none`)return{running:s,leadingIndicator:bg({content:mg(e.attention,!0),running:!1}),trailingIndicator:l};if(e.icon)return{running:s,leadingIndicator:bg({content:Xg(e.icon),running:!1}),trailingIndicator:l};let u=t?.id?.trim()?Jp(t,`row`,n,r,a,o):void 0;return e.channelAvatarUrl?(Yg(),{running:s,leadingIndicator:bg({content:R`<openclaw-channel-avatar
.routeUrl=${e.channelAvatarUrl}
.authTokens=${i?.authTokens??[]}
.authReady=${i?.authReady??!1}
.fallback=${u??B}
></openclaw-channel-avatar>`,running:!1,circular:!0}),trailingIndicator:l}):u?{running:s,leadingIndicator:bg({content:u,running:!1,circular:!0}),trailingIndicator:l,renderedIdentities:[...t?.identity?[t.identity]:[],...(o??a?.length)===1?(a??[]).slice(0,1).map(e=>e.identity):[]]}:{running:s,leadingIndicator:B,trailingIndicator:l}}var $g;function e_(){return(e_=t((()=>{I(),W(),yg(),Sg(),mp(),$p(),se()})))()}function t_(e){let{session:t}=e;if(t.attention.kind===`question`)return{subtitle:void 0,narration:void 0};let n=hg(t.attention),r=t.hasActiveRun,i=t.activeRunIds??[],a=e=>!!(e?.runId&&i.includes(e.runId)),o=a(e.observerDigest)?e.observerDigest:void 0,s=a(t.observerDigest)?t.observerDigest:void 0,c=r?no(o,s):no(e.observerDigest,t.observerDigest),l=!!(c&&(c.health===`done`||c.health===`failed`)&&(t.lastReadAt??0)<c.updatedAt),u=r||l?c?.headline:void 0;if(!e.showPreview){let e=Da(c?.health)?u:void 0;return{subtitle:n??e,narration:void 0}}let d=t.agentStatusNote||void 0,f=n||d||u||!e.sidebarLiveActivity||!r?void 0:e.narrationLine,p=e.hasDisplay?e.displaySubtitle:t.subtitle&&t.workSession&&t.subtitle!==t.label?t.subtitle:void 0,m=!r&&!e.hasDisplay&&t.lastMessagePreview?.trim()||void 0;return{subtitle:r?n??d??u??f??p:n??d??u??m??p,narration:f}}function n_(e){return e.subtitle?e.narration?Ln(e.narration,R`<span
class="sidebar-recent-session__subtitle sidebar-recent-session__subtitle--narration"
>${e.subtitle}</span
>`):R`<span class="sidebar-recent-session__subtitle">${e.subtitle}</span>`:B}function r_(){return(r_=t((()=>{I(),wn(),yg()})))()}var i_;function a_(){return(a_=t((()=>{I(),F(),Lt(),tt(),ko(),i_=class extends hn{constructor(...e){super(...e),this.startMs=null,this.endMs=null,this.minimumUnit=`second`,this.singleUnit=!1,this.polling=new Ro(this,1e3,()=>this.requestUpdate(),!1)}connectedCallback(){super.connectedCallback(),this.syncTimer()}updated(){this.syncTimer()}syncTimer(){this.isConnected&&this.startMs!=null&&this.endMs==null?this.polling.start():this.polling.stop()}render(){let e=this.startMs;if(e==null)return B;let t=this.endMs??Date.now(),n=this.minimumUnit===`minute`?6e4:1e3,r=Math.max(n,t-e);return R`${this.singleUnit?fn(r):vt(this.minimumUnit===`minute`?Math.floor(r/6e4)*6e4:r)}`}},k([V({type:Number})],i_.prototype,`startMs`,void 0),k([V({type:Number})],i_.prototype,`endMs`,void 0),k([V({type:String})],i_.prototype,`minimumUnit`,void 0),k([V({type:Boolean})],i_.prototype,`singleUnit`,void 0),customElements.get(`openclaw-elapsed-time`)||customElements.define(`openclaw-elapsed-time`,i_)})))()}function o_(e){return e.fullyShown?e.session.children:e.session.children.filter((e,t)=>t<u_||cd(e))}function s_(e){let{host:t,session:n,display:r,listItem:i=!0}=e,a=t.readSessionMutationAccess({method:`sessions.patch`,params:{key:n.key,pinned:!n.pinned}}),o=n.label,{subtitle:s,narration:c}=t.sessionProjection.resolveSubtitle({session:n,hasDisplay:r!==void 0,displaySubtitle:r?.subtitle,sidebarLiveActivity:t.sidebarLiveActivity,showPreview:t.sessionsShowPreview,narrationLine:t.sidebarNarrationLines.get(n.key),observerDigest:t.sidebarObserverDigests.get(n.key)??null}),l=n.pullRequest??r?.pullRequest,u=n.worktreeId?t.sessionPullRequests.summary(n.key,n.worktreeId,l):l,d=t.sessionsStatusFilter===`archived`?`archived`:n.owner?.assignedAt===void 0?`created`:`owned`,f=t.sessionOwnershipVisible?t.sessionsStatusFilter===`archived`?n.archivedBy:n.owner?.actor:void 0,p=f?.identity?.type===`profile`?Ya(t.sessionData.presencePayload).users.some(e=>Po(e,f.identity)&&e.watchedSessions.includes(n.key)):void 0,m=t.sessionsGrouping===`person`&&!n.pinned&&d!==`archived`&&p!==!0?void 0:f,h=t.sessionDataContext?.gateway,{running:g,leadingIndicator:_,trailingIndicator:v,renderedIdentities:y}=Qg(n,m,d,p,{authTokens:h?ar({hello:h.snapshot.hello,settings:{token:h.connection.token},password:h.connection.password}):[],authReady:!!(h&&(h.snapshot.hello||h.connection.token.trim()||h.connection.password.trim()))}),b=n.isChild?g&&n.unread?G(`sessionsView.unread`):``:Zg(n),x=n.isChild&&(n.runtimeMs!=null||n.startedAt!=null),S=x?ud(n.key):void 0,C=b?dd(n.key):void 0,w=e=>sn(e,e.currentTarget.querySelector(`[data-session-menu]`),(e,r,i)=>t.sidebarMenus.openSessionMenu(n,r,i,e)),ee=G(n.pinned?`sessionsView.unpinSession`:`sessionsView.pinSession`),te=G(`chat.sidebar.openSessionMenu`),ne=`${te}: ${o}`,re=t.sidebarMenus.sessionMenu?.session.key===n.key||r?.catalogMenuOpen===!0,ie=qi(n.color??``),ae=[`sidebar-recent-session`,`session-row-host`,ie?`sidebar-recent-session--colored`:``,n.isChild?`sidebar-recent-session--child`:``,s?``:`sidebar-recent-session--single-line`,n.archived?`sidebar-session--archived`:``,n.visuallyActive?`sidebar-recent-session--active`:``,t.selectedSessionKeys.has(n.key)?`sidebar-recent-session--selected`:``,n.pinned?`session-row-host--pinned`:``,g?`session-row-host--running`:``,n.visibility===`draft`?`session-row-host--draft`:``,n.visibility===`draft`?n.draftOwnedBySelf?`session-row-host--draft-owner`:`session-row-host--draft-other`:``,n.attention.kind===`error`?`sidebar-recent-session--attention-danger`:n.attention.kind===`none`?``:`sidebar-recent-session--attention-amber`,t.sessionOrganizer.draggingSessionKey===n.key?`sidebar-recent-session--dragging`:``].filter(Boolean).join(` `),oe=t.isSessionChildrenExpanded(n),se=t.readSessionMutationAccess({method:`sessions.groups.put`,requiredScope:`operator.write`}),ce=!n.isChild&&se.allowed,le=R`<span
${r?yn(ls):B}
class="sidebar-recent-session__name hover-marquee"
>${n.archived?R`<span
class="sidebar-session__archive-glyph"
aria-label=${G(`sessionsView.archived`)}
title=${G(`sessionsView.archived`)}
>${U.archive}</span
>`:B}${n.forkSource?R`<span
class="sidebar-session-fork-indicator"
role="img"
aria-label=${G(`sessionsView.forkedSession`)}
>${U.gitFork}</span
>`:B}${o}</span
>`,ue=r?Ln(JSON.stringify([o,n.archived===!0,n.forkSource!==void 0,u]),le):le,de=R`
<div
${r?.rowRef?yn(r.rowRef):B}
class=${ae}
style=${ie?`--session-color: var(--session-color-${ie})`:B}
data-session-key=${n.key}
data-catalog-session-key=${r?.catalogIdentityKey??B}
role=${Rn(i?`listitem`:void 0)}
draggable=${ce?`true`:`false`}
@dragstart=${ce?e=>{e.dataTransfer&&(rs(e.dataTransfer,n.key),t.startSessionDrag(n))}:B}
@dragend=${ce?()=>{t.finishSessionDrag()}:B}
@contextmenu=${w}
@keydown=${w}
@mouseenter=${yo}
@mouseleave=${ss}
>
<a
href=${qn(t.sidebarSessionHref(n))}
class="sidebar-recent-session__link"
draggable="false"
aria-current=${n.visuallyActive?`page`:B}
aria-describedby=${[C,S].filter(Boolean).join(` `)||B}
@click=${e=>t.handleSessionRowClick(e,n)}
>
<span class="sidebar-session-indicator"
>${_}
${n.visibility===`draft`?R`<span
class="session-row-draft-indicator"
title=${G(`chat.sessionSharing.draft`)}
>👻</span
>`:B}</span
>
<span class="sidebar-recent-session__text">
<span class="sidebar-recent-session__title-row"> ${ue} </span>
<span class="sidebar-recent-session__details">
${n_({subtitle:s,narration:c})}
<span class="sidebar-recent-session__details-endcap">
<openclaw-viewer-facepile
.presencePayload=${t.sessionData.presencePayload}
.selfUser=${t.sessionDataContext?.gateway.snapshot.selfUser}
.selfInstanceId=${t.sessionData.presenceInstanceId}
.sessionKey=${n.key}
.excludeIdentities=${y??[]}
.maxVisible=${3}
variant="session"
></openclaw-viewer-facepile>
${gf({isChild:n.isChild,incognito:n.incognito,placementState:n.placementState,placementProviderId:n.placementProviderId,placementProfileId:n.placementProfileId,diskSpaceStatus:n.diskSpaceStatus,workspaceConflictCount:n.workspaceConflictCount,outboxAttentionCount:n.outboxAttentionCount,hasComposerDraft:n.hasComposerDraft===!0,pullRequest:u,hasApproval:qg(t.sessionData.approvalBadgeSnapshot(),n.key)})}
${v===B?b?R`<span class="sr-only" id=${C}>${b}</span>`:B:R`<span class="session-row-aside">
<span
class="session-row-state"
id=${C}
role="img"
aria-label=${b}
>${v}</span
>
</span>`}
${x?R`<span class="session-row-trail" id=${S}
>${n.runtimeMs==null?R`<openclaw-elapsed-time
.startMs=${n.startedAt}
.endMs=${n.endedAt??null}
></openclaw-elapsed-time>`:n.hasActiveRun?R`<openclaw-elapsed-time
.startMs=${n.runtimeSampledAt-n.runtimeMs}
></openclaw-elapsed-time>`:vt(n.runtimeMs)??`0ms`}</span
>`:B}
</span>
</span>
</span>
</a>
${n.childSessionKeys.length>0?R`<button
class="sidebar-child-session-toggle ${n.runningChildCount>0?`sidebar-child-session-toggle--running`:n.failedChildCount>0?`sidebar-child-session-toggle--failed`:``}"
type="button"
data-child-session-toggle=${n.key}
aria-expanded=${String(oe)}
aria-label=${G(oe?`sessionsView.hideChildSessions`:`sessionsView.showChildSessions`,{count:String(n.childSessionKeys.length),session:o})}
@click=${()=>t.toggleSessionChildren(n)}
>
<span class="sidebar-child-session-toggle__icon" aria-hidden="true"
>${oe?U.chevronDown:U.chevronRight}</span
>
${oe?B:R`<span class="sidebar-child-session-toggle__count"
>${n.childSessionKeys.length}</span
>`}
</button>`:B}
<span class="sidebar-recent-session__aside session-row-aside">
<span class="session-row-actions">
${n.isChild?B:R`<button
class="session-action session-action--pin"
data-sidebar-session-pin="true"
type="button"
title=${a.allowed?ee:a.reason}
aria-label=${ee}
?disabled=${!a.allowed}
@click=${()=>t.toggleSessionPin(n)}
>
${U.pin}
</button>`}
<openclaw-tooltip .content=${te} .describe=${!1} .disabled=${re}>
<button
class="session-action"
data-session-menu="true"
type="button"
aria-label=${ne}
aria-haspopup="menu"
aria-expanded=${String(re)}
@click=${e=>{e.stopPropagation();let r=e.currentTarget;t.toggleSessionMenu(n,r)}}
>
${U.moreHorizontal}
</button>
</openclaw-tooltip>
</span>
</span>
</div>
`;return Ln(n.key,de)}function c_(e,t){let n=e.sessionData.childSessionErrorsByParent.get(t);return n?R`<div
class="sidebar-session-error callout danger"
data-child-session-error=${t}
role="alert"
>
<span>${n}</span>
<button
class="sidebar-session-tree__show-more"
type="button"
data-retry-child-sessions=${t}
@click=${()=>e.sessionData.retryChildSessions(t)}
>
${G(`common.retry`)}
</button>
</div>`:B}function l_(e){let{host:t,session:n,listItem:r=!0}=e,i=t.isSessionChildrenExpanded(n),a=o_({session:n,fullyShown:t.isSessionChildrenFullyShown(n.key)}),o=n.children.length-a.length;return R`<div
class="sidebar-session-tree"
data-session-tree=${n.key}
role=${Rn(r?`listitem`:void 0)}
>
${s_({host:t,session:n,listItem:!1})}
${i?R`<div class="sidebar-session-tree__children">
${a.length>0?R`<div
class="sidebar-session-tree__list"
role=${Rn(r?`list`:void 0)}
aria-label=${Rn(r?G(`sessionsView.childSessions`):void 0)}
>
${jn(a,e=>e.key,e=>l_({host:t,session:e,listItem:r}))}
</div>`:B}
${o>0?R`<button
class="sidebar-session-tree__show-more"
type="button"
data-show-more-children=${n.key}
aria-label=${G(`sessionsView.showMoreChildren`,{count:String(o)})}
@click=${()=>t.showMoreChildren(n.key)}
>
${G(`sessionsView.showMoreChildren`,{count:String(o)})}
</button>`:B}
${c_(t,n.key)}
${n.loadingChildren&&n.children.length===0?R`<span
class="sidebar-session-tree__loading skeleton skeleton-line skeleton-line--medium"
role="status"
aria-busy="true"
aria-label=${G(`common.loading`)}
></span>`:B}
</div>`:B}
</div>`}var u_;function d_(){return(d_=t((()=>{I(),Sn(),wn(),En(),Nn(),Gi(),tr(),Jg(),Bn(),W(),Lt(),mo(),Kt(),Fo(),Xo(),q(),H(),e_(),yf(),r_(),a_(),Ur(),u_=4})))()}function f_(e){let{host:t,section:n,personHeaders:r}=e,i=n.totalRowCount,a=n.category,o=n.personOwner,s=o?.identity,c=s?.type===`profile`?r?.presence.get(s.id):void 0,l=o&&s?.type===`profile`&&s.id!==r?.selfProfileId,u=l?Bs({id:o.id,identity:s}):void 0,d=c?G(c===`idle`?`presence.idle`:`presence.rosterTitle`):void 0,f=c&&s?`sidebar-person-presence-${s.id}`:void 0,p=n.renderHeader&&t.collapsedSessionSections.has(n.id),m=o?o.label||o.id:n.project?n.project.name:n.groups?G(`chat.sidebar.groups`):n.work?G(`chat.sidebar.coding`):a||G(`chat.sidebar.otherSessions`),h=o?`person`:n.project?`project`:n.groups?`groups`:n.work?`coding`:a?`category`:`threads`,g=p&&n.work&&n.rows.some(e=>cd(e,zd.ActiveRun)),_=p&&n.rows.some(e=>cd(e,zd.Attention)),v=t.readNewSessionAccess(),y=t.readSessionMutationAccess({method:`sessions.groups.put`,requiredScope:`operator.write`}),b=!!(o||n.project),x=y.allowed&&!b,S=[`sidebar-recent-sessions__group`,`sidebar-recent-sessions__group--zone-${h}`,p?`sidebar-recent-sessions__group--collapsed`:``,t.sessionOrganizer.draggingSidebarSection===n.id?`sidebar-recent-sessions__group--dragging`:``,t.sessionOrganizer.sessionDropTarget===n.id?`sidebar-recent-sessions__group--session-drop`:``,t.sessionOrganizer.sidebarSectionDropTarget?.sectionId===n.id?`sidebar-recent-sessions__group--section-drop-${t.sessionOrganizer.sidebarSectionDropTarget.position}`:``].filter(Boolean).join(` `),C=R`<span class="sidebar-session-group-toggle__lead" aria-hidden="true">
<span class="sidebar-session-group-toggle__icon"
>${p?U.chevronRight:U.chevronDown}</span
>
</span>`,w=o?R`<span class="sidebar-session-group-toggle__person"
><openclaw-viewer-avatar
.identity=${o.identity}
.user=${{id:o.id,name:o.label,avatarUrl:o.avatarUrl,watchedSessions:[]}}
.markAsViewer=${!1}
variant="session"
aria-hidden="true"
></openclaw-viewer-avatar>
${c?R`<span
id=${f??B}
class="sidebar-session-group-presence ${c===`idle`?`sidebar-session-group-presence--idle`:``}"
role="img"
aria-label=${d}
></span>`:B}
</span>`:B,ee=R`<span class="sidebar-recent-sessions__label-text hover-marquee"
>${m}</span
>`,te=R`${p&&i>0?R`<span class="sidebar-session-group-count">${i}</span>`:B}${g?R`<span
class="session-run-spinner sidebar-session-group-running"
role="img"
aria-label=${G(`sessionsView.activeRun`)}
title=${G(`sessionsView.activeRun`)}
></span>`:B}${_?R`<span
class="sidebar-session-group-attention"
role="img"
aria-label=${G(`sessionsView.attentionRequired`)}
title=${G(`sessionsView.attentionRequired`)}
></span>`:B}`;return R`
<div
class=${S}
data-session-section=${n.id}
data-zone=${h}
@dragover=${x?e=>t.sectionDragOver(e,n.id,a):B}
@dragleave=${x?e=>t.sectionDragLeave(e,n.id,a):B}
@drop=${x?e=>t.sectionDrop(e,n.id,a):B}
>
${n.renderHeader?ad({sectionId:n.id,draggable:!b,disabledReason:y.allowed?void 0:y.reason,onStartDrag:e=>t.startSidebarSectionDrag(e),onFinishDrag:()=>t.finishSidebarSectionDrag(),onContextMenu:a?e=>{e.preventDefault(),t.sidebarMenus.openSessionGroupMenu(a,e.clientX,e.clientY,null)}:void 0,content:R`
${l?R`<button
type="button"
class="sidebar-session-group-toggle sidebar-session-group-toggle--lead"
aria-expanded=${String(!p)}
aria-label=${m}
@click=${()=>t.toggleSection(n.id)}
>
${C}
</button>
<button
type="button"
class="sidebar-session-group-person"
data-person-card
data-person-card-key=${u}
aria-haspopup="dialog"
aria-expanded="false"
aria-label=${G(`presence.card.details`,{name:m})}
aria-describedby=${f??B}
>
${w}${ee}
</button>
${te}`:R`<button
type="button"
class="sidebar-session-group-toggle"
aria-expanded=${String(!p)}
aria-label=${m}
title=${n.project?.path??B}
@click=${()=>t.toggleSection(n.id)}
>
${C}${w}${ee}${te}
</button>`}
${a?R`
${fi({basePath:t.basePath,agentId:t.expandedAgentId(),target:{group:a},className:`sidebar-session-group-actions sidebar-new-session`,label:G(`sessionsView.newSessionInGroup`,{group:a}),disabledReason:v.allowed?void 0:v.reason,onOpen:(e,n)=>t.requestOpenNewSession(e,n)})}
<button
type="button"
class="sidebar-session-group-actions"
title=${G(`sessionsView.groupMenu`,{group:a})}
aria-label=${G(`sessionsView.groupMenu`,{group:a})}
aria-haspopup="menu"
aria-expanded=${String(t.sidebarMenus.sessionGroupMenu?.group===a)}
@click=${e=>{e.stopPropagation();let n=e.currentTarget,r=n.getBoundingClientRect();t.sidebarMenus.openSessionGroupMenu(a,r.right,r.bottom+4,n)}}
>
${U.moreHorizontal}
</button>
`:B}
`}):B}
${p?B:R`
${n.rows.length>0?R`<div class="sidebar-recent-sessions__list" role="list" aria-label=${m}>
${jn(n.rows,e=>e.key,e=>l_({host:t,session:e}))}
</div>`:B}
${m_({host:t,section:n})}
`}
</div>
`}function p_(e,t,n){return n?R`
<div class="sidebar-session-pagination sidebar-session-pagination--roster">
<button
type="button"
class="sidebar-session-pagination__button"
aria-label=${G(`chat.selectors.loadMoreRosterSessions`)}
@click=${()=>{e.loadMoreSidebarSessions().then(()=>{for(let n of t)e.setVisibleSessionLimit(n.id,n.visibleLimit+10)})}}
>
${G(`chat.selectors.loadMoreRosterSessions`)}
</button>
</div>
`:B}function m_(e){let{host:t,section:n}=e,r=n.visibleRowCount<n.totalRowCount,i=n.visibleRowCount>30&&n.visibleRowCount>n.collapsedVisibleRowCount;return!r&&!i?B:R`
<div class="sidebar-session-pagination">
${r?R`<button
type="button"
class="sidebar-session-pagination__button"
aria-label=${G(`chat.selectors.loadMoreSessions`)}
@click=${()=>{t.setVisibleSessionLimit(n.id,n.visibleLimit+10)}}
>
${G(`chat.selectors.loadMoreSessions`)}
</button>`:B}
${i?R`<button
type="button"
class="sidebar-session-pagination__button"
aria-label=${G(`usage.details.collapse`)}
@click=${()=>{t.clearSessionSelection(),t.setVisibleSessionLimit(n.id,10)}}
>
${G(`usage.details.collapse`)}
</button>`:B}
</div>
`}function h_(e){let{host:t,snapshot:n,catalog:r,renderer:i}=e,a=t.readNewSessionAccess(),o=t.readSessionMutationAccess({method:`sessions.groups.put`,requiredScope:`operator.write`});return R`
${i({catalogs:[r],connected:t.connected,basePath:n.basePath,routeSessionKey:n.routeSessionKey,newSessionAgentId:n.newSessionAgentId,mainKey:n.mainKey,collapsedSections:t.collapsedSessionSections,loadingMoreCatalogIds:n.loadingMoreCatalogIds,visibleSessionLimits:t.sessionData.visibleSessionLimits,projectGrouping:n.projectGrouping,liveRows:n.liveRows,ownerId:n.ownerId,renderLiveRow:(e,r)=>s_({host:t,session:n.toSidebarSession(e),display:r}),onToggleSection:e=>t.toggleSection(e),draggingSectionId:t.sessionOrganizer.draggingSidebarSection,sectionDropTarget:t.sessionOrganizer.sidebarSectionDropTarget,onSectionDragOver:(e,n)=>t.sectionDragOver(e,n),onSectionDragLeave:(e,n)=>t.sectionDragLeave(e,n),onSectionDrop:(e,n)=>t.sectionDrop(e,n),onStartSectionDrag:e=>t.startSidebarSectionDrag(e),onFinishSectionDrag:()=>t.finishSidebarSectionDrag(),viewMenuOpenCatalogId:t.sidebarMenus.catalogViewMenuPosition?.catalogId??null,ownerFilterActive:t.sessionOwnerFilterActive,onOpenViewMenu:(e,n,r)=>{if(r){t.sidebarMenus.openCatalogViewMenu(e,r.x,r.y,n);return}t.sidebarMenus.toggleCatalogViewMenu(e,n)},onLoadMore:e=>void t.sessionData.loadMoreSessionCatalog(e),onSetVisibleSessionLimit:(e,n)=>t.setVisibleSessionLimit(e,n),onOpenNewSession:(e,n)=>t.requestOpenNewSession(e,n),newSessionDisabledReason:a.allowed?void 0:a.reason,sectionDragDisabledReason:o.allowed?void 0:o.reason,onNavigate:t.onNavigate,catalogOpenTarget:n.catalogOpenTarget,terminalAvailable:n.terminalAvailable,onOpenTerminal:ho,onOpenMenu:(e,n,r,i)=>t.openCatalogMenu(e,n,r,i),onCatalogMenuTriggerRendered:(e,n)=>t.retargetCatalogMenuTrigger(e,n),isMenuOpen:e=>t.sidebarMenus.catalogMenu.isOpenFor(e)})}
`}function g_(e){let{host:t}=e,n;if(t.sessionsGrouping===`person`){let e=Jn({snapshotUser:t.sessionDataContext?.gateway.snapshot.selfUser,presenceEntries:Gn(t.sessionData.presencePayload),presenceInstanceId:t.sessionData.presenceInstanceId}),r=new Map;for(let n of Pa(t.sessionData.presencePayload,e,t.sessionData.presenceInstanceId))n.identity?.type===`profile`&&r.set(n.identity.id,Ea(n)?`idle`:`active`);n={presence:r,selfProfileId:e?.identity?.type===`profile`?e.identity.id:void 0}}let r=new Map(e.catalogs.catalogs.map(e=>[`catalog:${e.id}`,e]));return R`
${jn(e.sections,e=>e.id,i=>{if(i.id.startsWith(`catalog:`)){let n=r.get(i.id);return n&&e.catalogRenderer?h_({host:t,snapshot:e.catalogs,catalog:n,renderer:e.catalogRenderer}):B}return i.id===`work`?i.totalRowCount===0?B:f_({host:t,section:i,personHeaders:n}):i.id===`ungrouped`&&i.totalRowCount===0&&!e.nativeSessionsHaveMore&&!t.sessionOwnershipVisible&&t.sessionsStatusFilter===`active`&&t.sessionOrganizer.draggingSessionKey===null?B:f_({host:t,section:i,personHeaders:n})})}
`}function __(e){let t=e.readNewSessionAccess(),n=e.sessionOwnerFilterActive||e.sessionsStatusFilter!==`active`;return R`
<div class="sidebar-session-toolbar">
<span class="sidebar-recent-sessions__label-text">${G(`chat.sidebar.threads`)}</span>
<button
type="button"
class="sidebar-session-toolbar__button sidebar-session-sort ${n?`sidebar-session-sort--filtered`:``}"
title=${G(`chat.sidebar.sortSessions`)}
aria-label=${G(`chat.sidebar.sortSessions`)}
aria-haspopup="menu"
aria-expanded=${String(e.sidebarMenus.sessionSortMenuPosition!==null)}
@click=${t=>e.sidebarMenus.toggleSessionSortMenu(t.currentTarget)}
>
${U.listFilter}
</button>
${fi({basePath:e.basePath,agentId:e.expandedAgentId(),className:`sidebar-session-toolbar__button sidebar-new-session`,label:G(`chat.runControls.newSession`),disabledReason:t.allowed?void 0:t.reason,onOpen:(t,n)=>e.requestOpenNewSession(t,n)})}
</div>
`}function v_(e){let{host:t}=e,n=t.mainSessionRow()?.key;return R`
<section
class="sidebar-sessions ${t.sessionOrganizer.sessionListRemovalDrop?`sidebar-sessions--removal-drop`:``}"
@dragover=${e=>t.handleSessionListDragOver(e)}
@dragleave=${e=>t.handleSessionListDragLeave(e)}
@drop=${e=>t.handleSessionListDrop(e)}
>
${__(t)}
${n?c_(t,n):B}
${t.sessionData.sessionMutationError?R`
<div
class="sidebar-session-error callout danger callout--dismissible"
role="alert"
data-sidebar-session-error
>
<span class="callout__content">${t.sessionData.sessionMutationError}</span>
<openclaw-tooltip .content=${G(`chat.actions.dismissError`)}>
<button
class="callout__dismiss"
type="button"
@click=${()=>t.dismissSessionMutationError()}
aria-label=${G(`chat.actions.dismissError`)}
>
${U.x}
</button>
</openclaw-tooltip>
</div>
`:B}
<div class="sidebar-recent-sessions">
${g_({host:t,sections:e.sections,nativeSessionsHaveMore:e.nativeSessionsHaveMore,catalogs:e.catalogs,catalogRenderer:e.catalogRenderer})}
${p_(t,e.sections,e.nativeSessionsHaveMore)}
${t.sessionsStatusFilter===`archived`&&e.empty?R`<span class="sidebar-session-empty-hint"
>${G(`sessionsView.noArchivedSessions`)}</span
>`:B}
</div>
</section>
`}function y_(){return(y_=t((()=>{I(),Nn(),W(),Fo(),Oo(),d_(),od(),q(),H(),vi()})))()}var Y;function b_(){return(b_=t((()=>{_e(),F(),ur(),Sr(),lr(),Dt(),Co(),Te(),A(),tt(),Y=class extends hn{constructor(...e){super(...e),this.basePath=``,this.activePluginTabId=``,this.connected=!1,this.offline=!1,this.restartPending=!1,this.queuedOutboxCount=0,this.lastError=null,this.outboxAttentionCountForSession=e=>0,this.hasSessionDraft=()=>!1,this.terminalAvailable=!1,this.catalogOpenTarget=`viewer`,this.canPairDevice=!1,this.preferencesBrowserOnly=!1,this.sessionKey=``,this.sidebarEntries=Dr,this.sidebarLiveActivity=!0,this.pinnedAgentIds=[],this.themeMode=`system`,this.lobsterPetVisits=!0,this.lobsterPetSounds=!1,this.gatewayVersion=null,this.devGitBranch=null,this.watchUpdateProgress=void 0}pluginNavigation(){return this.context?.plugins?.registrations(`navigation`)??[]}setApplicationSession(e,t){let n=this.context;n&&er({selection:n.agentSelection,gateway:n.gateway,sessionKey:e,agentId:N(e)?.agentId??t})}prepareSessionNavigation(e,t){this.context&&Eo(this.context.gateway,t,e)}bindLiteralSession(e,t,n){new URLSearchParams(n.search??``).has(`__openclawSessionKey`)||this.setApplicationSession(e,t)}sessionMainKey(){return lt({agentsList:this.context?.agents.state.agentsList,hello:this.context?.gateway.snapshot.hello})}readNewSessionAccess(){return an(this.connected?this.context?.gateway.snapshot:null,{method:`sessions.create`,params:{}})}readSessionMutationAccess(e){return an(this.connected?this.context?.gateway.snapshot:null,e)}requestOpenNewSession(e,t){this.readNewSessionAccess().allowed&&(t?this.onOpenNewSession?.(e,t):this.onOpenNewSession?.(e))}},k([V({attribute:!1})],Y.prototype,`basePath`,void 0),k([V({attribute:!1})],Y.prototype,`activeRouteId`,void 0),k([V({attribute:!1})],Y.prototype,`activePluginTabId`,void 0),k([V({attribute:!1})],Y.prototype,`enabledRouteIds`,void 0),k([V({attribute:!1})],Y.prototype,`connected`,void 0),k([V({attribute:!1})],Y.prototype,`offline`,void 0),k([V({attribute:!1})],Y.prototype,`restartPending`,void 0),k([V({attribute:!1})],Y.prototype,`suspensionPhase`,void 0),k([V({attribute:!1})],Y.prototype,`queuedOutboxCount`,void 0),k([V({attribute:!1})],Y.prototype,`lastError`,void 0),k([V({attribute:!1})],Y.prototype,`outboxAttentionCountForSession`,void 0),k([V({attribute:!1})],Y.prototype,`hasSessionDraft`,void 0),k([V({attribute:!1})],Y.prototype,`terminalAvailable`,void 0),k([V({attribute:!1})],Y.prototype,`catalogOpenTarget`,void 0),k([V({attribute:!1})],Y.prototype,`canPairDevice`,void 0),k([V({attribute:!1})],Y.prototype,`preferencesBrowserOnly`,void 0),k([V({attribute:!1})],Y.prototype,`sessionKey`,void 0),k([V({attribute:!1})],Y.prototype,`sidebarEntries`,void 0),k([V({attribute:!1})],Y.prototype,`sidebarLiveActivity`,void 0),k([V({attribute:!1})],Y.prototype,`pinnedAgentIds`,void 0),k([V({attribute:!1})],Y.prototype,`themeMode`,void 0),k([V({attribute:!1})],Y.prototype,`lobsterPetVisits`,void 0),k([V({attribute:!1})],Y.prototype,`lobsterPetSounds`,void 0),k([V({attribute:!1})],Y.prototype,`gatewayVersion`,void 0),k([V({attribute:!1})],Y.prototype,`devGitBranch`,void 0),k([V({attribute:!1})],Y.prototype,`watchUpdateProgress`,void 0),k([V({attribute:!1})],Y.prototype,`onOpenApprovals`,void 0),k([V({attribute:!1})],Y.prototype,`onOpenPalette`,void 0),k([V({attribute:!1})],Y.prototype,`onRetryConnect`,void 0),k([V({attribute:!1})],Y.prototype,`onToggleSidebar`,void 0),k([V({attribute:!1})],Y.prototype,`onOpenNewSession`,void 0),k([V({attribute:!1})],Y.prototype,`onUpdateSidebarEntries`,void 0),k([V({attribute:!1})],Y.prototype,`onPairMobile`,void 0),k([V({attribute:!1})],Y.prototype,`onNavigate`,void 0),k([V({attribute:!1})],Y.prototype,`onPreloadRoute`,void 0),k([y({context:_r,subscribe:!0})],Y.prototype,`context`,void 0)})))()}function x_(e){let t=t=>{let n=e.archiveVisibility(t);return e.deletionState(t,e.selectedAgentId)||n===`pending`||e.statusFilter===`active`&&n===`archived`},n=d(e.selectedAgentId),r=(n===d(e.sessionData.sessionsAgentId??``)?e.sessionData.sessionsResult?.sessions??[]:e.sessionData.sessionResultsByAgent[n]?.sessions??[]).filter(e=>!t(e.key));return{childSessionRowsByParent:Object.fromEntries(Object.entries(e.sessionData.childSessionRowsByParent).map(([e,n])=>[e,n.filter(e=>!t(e.key))])),isSessionHidden:t,rows:r}}function S_(){return(S_=t((()=>{A()})))()}function C_(e){return!e||!Pi(e.state)?null:{method:`sessions.reclaim`,requiredScope:`operator.write`,blocksActiveRun:e.state===`active`}}function w_(){return(w_=t((()=>{ha()})))()}function T_(e,t,n){return e.knownSessionAttention().find(e=>P(e.sessionKey,t))?.attention??(n?e.resolveSessionAttention(n):Rd)}function E_(e){let{a:t,b:n}=e;if(e.sortMode!==`people`)return e.sortMode===`updated`?Zt(t,n):D_(t,n,e.createdOrder);let r=e.owners??[],i=t.owner?.actor,a=n.owner?.actor,o=i?.id?.trim()??``,s=a?.id?.trim()??``;if(o!==s){let e=r.find(e=>e.id===o),t=r.find(e=>e.id===s),n=e?.label?.trim()||i?.label?.trim()||o,c=t?.label?.trim()||a?.label?.trim()||s,l=n.localeCompare(c)||o.localeCompare(s);if(l!==0)return l}return D_(t,n,e.createdOrder)}function D_(e,t,n){let r=typeof e.createdAt==`number`&&Number.isFinite(e.createdAt)&&e.createdAt>=0?e.createdAt:null,i=typeof t.createdAt==`number`&&Number.isFinite(t.createdAt)&&t.createdAt>=0?t.createdAt:null;if(r!==null||i!==null){if(r===null)return 1;if(i===null)return-1;let e=i-r;if(e!==0)return e}return(n.get(e.key)??2**53-1)-(n.get(t.key)??2**53-1)||e.key.localeCompare(t.key)}function O_(e,t){return e.visibility===`draft`&&(e.sharingRole===`owner`||!!(t&&e.createdActor?.id===t))}function k_(e){let{context:t}=e,n=yt({result:e.sessionsResult,activeSession:e.activeSession,resultAgentId:e.sessionsAgentId,sessionKey:e.routeSessionKey,assistantAgentId:t?.agentSelection.state.selectedId??t?.gateway.snapshot.assistantAgentId,hello:t?.gateway.snapshot.hello,showCron:e.showCron,showSystem:e.showSystem,archivedFilter:e.statusFilter,compareSessions:e.compareSessions});return{routeSessionKey:n.currentSessionKey,selectedAgentId:n.selectedAgentId,activeRowKey:n.activeRowKey,visibleSessionRows:n.visibleSessions,toSidebarSession:(r,i=!1)=>{let a=$e(r.key,r.channel),o=r.runtimeSampledAt;return r.runtimeMs!=null&&o==null&&(o=e.runtimeSampledAtByRow.get(r),o??(o=Date.now(),e.runtimeSampledAtByRow.set(r,o))),{key:r.key,sessionId:r.sessionId,displayName:r.displayName,incognito:r.incognito===!0,createdActor:r.createdActor,owner:r.owner,participants:r.participants,expandedParticipants:r.expandedParticipants,participantCount:r.participantCount,archivedBy:r.archivedBy,label:gn(r.key,r,{includeSubagentPrefix:!1}),userLabel:r.label,subtitle:st(r),workContext:we(r),active:r.key===n.activeRowKey,visuallyActive:e.highlightCurrentSession&&r.key===n.currentSessionKey,hasActiveRun:r.archived!==!0&&he(r),gatewayHasActiveRun:r.hasActiveRun,activeRunIds:r.archived===!0?void 0:r.activeRunIds,modelSelectionLocked:r.modelSelectionLocked===!0,kind:r.kind,pinned:r.pinned===!0,archived:r.archived===!0,visibility:r.visibility,draftOwnedBySelf:O_(r,t?.gateway.snapshot.selfUser?.id),category:O(r.category),icon:O(r.icon),color:O(r.color),channelAvatarUrl:O(r.channelAvatarUrl),boardFace:r.boardFace,channel:a.channel,channelSession:a.channelSession,workSession:!!(r.worktree||r.execNode)||t?.sessions.isPreparedWorkSession(r.key)===!0,acpSession:It(r.key),worktreeId:r.worktree?.id,execNode:r.execNode,placementState:r.placement?.state,placementProviderId:r.placement&&`providerId`in r.placement?r.placement.providerId:void 0,placementProfileId:r.placement&&`profileId`in r.placement?r.placement.profileId:void 0,diskSpaceStatus:r.placement?.state===`active`?r.placement.diskSpace?.status:void 0,workspaceConflictCount:r.placement&&`workspaceResultConflict`in r.placement&&Math.max(r.placement.workspaceResultConflict?.paths.length??0,r.placement.workspaceResultConflict?.totalCount??0)||void 0,cloudWorkerStopAction:C_(r.placement),hasAutomation:r.hasAutomation===!0,pullRequest:t?.sessions.pullRequestSummary(r.key),outboxAttentionCount:e.outboxAttentionCountForSessionKey(r.key),hasComposerDraft:e.hasSessionDraft(r.key),unread:r.archived!==!0&&r.unread===!0,lastMessagePreview:O(r.lastMessagePreview),lastReadAt:r.lastReadAt,attention:r.archived===!0?Rd:e.resolveAttention(r),agentStatusNote:e.resolveAgentStatusNote(r),observerDigest:r.observerDigest,spawnedBy:r.spawnedBy,forkSource:r.forkSource,status:r.status,createdAt:r.createdAt,startedAt:r.startedAt,updatedAt:r.updatedAt,endedAt:r.endedAt,runtimeMs:r.runtimeMs,runtimeSampledAt:o,childSessionKeys:r.archived===!0?[]:r.childSessions??[],children:[],isChild:i,loadingChildren:e.loadingChildSessionKeys.has(r.key),containsActiveDescendant:!1,runningChildCount:0,failedChildCount:0}}}}function A_(e){let t=e.rows.filter(e=>e.pinned),n=new Set(e.rows.filter(e=>!e.pinned).map(e=>e.key));return{...xo(e.sidebarEntries,t,br,n,e.pluginNavigationKeys),sessionRows:new Map(t.map(e=>[e.key,e]))}}function j_(e,t){let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),{selectedKeys:n,anchor:n.has(t)?t:null}}function M_(e){let t=e.anchor??e.rows.find(e=>e.visuallyActive||e.active)?.key??e.key,n=e.rows.findIndex(e=>e.key===t),r=e.rows.findIndex(t=>t.key===e.key);if(n===-1||r===-1)return{selectedKeys:new Set([e.key]),anchor:e.key};let[i,a]=n<=r?[n,r]:[r,n];return{selectedKeys:new Set(e.rows.slice(i,a+1).map(e=>e.key)),anchor:t}}function N_(e){let t=d(e.agentId),n=t===d(e.sessionsAgentId??``)?e.sessionsResult?.sessions??[]:e.sessionResultsByAgent[t]?.sessions??[];return At(n,{agentId:t,defaultAgentId:e.defaultAgentId,filterByAgent:!0,archivedFilter:`active`}).reduce((e,t)=>e!==null&&Zt(e,t)<=0?e:t,null)}function P_(e){let t=new Map(e.identities.map(e=>[e.agentId,e]));return{activeId:e.activeId,agent:e.roster.find(t=>d(t.id)===e.activeId),agents:rn(e.roster),identity:t.get(e.activeId)??null,identities:t}}function F_(e){return N_({agentId:e.agentId,sessionsAgentId:e.sessionData.sessionsAgentId,sessionsResult:e.sessionData.sessionsResult,sessionResultsByAgent:e.sessionData.sessionResultsByAgent,defaultAgentId:ot({agentsList:e.context?.agents.state.agentsList,hello:e.context?.gateway.snapshot.hello})})}function I_(e){return[...new Map([...Object.values(e.childRowsByParent).flat(),...e.rows].map(e=>[e.key,e])).values()]}function L_(e){return e.rows.filter(t=>{let n=He(t);return n!=null&&e.mainSessionKeys.has(n)&&!e.scopedRootKeys.has(t.key)&&!t.archived&&(e.showCron||!ze(t.key))&&(e.showSystem||!ln(t))})}function R_(e){let t=new Set(e.scopedRoots.map(e=>e.key));return e.rows.filter(n=>!t.has(n.key)&&O(n.category)!=null&&He(n)!=null&&ke(n,e.visibilityOptions))}function z_(e,t,n){return e?.key??it({agentId:t,mainKey:n})}function B_(e){if(e.hasLoaded)return[...e.loadedCatalogIds];let t=e.sectionOrder.flatMap(e=>e.startsWith(`catalog:`)?[e.slice(8)]:[]);return[...new Set([...e.loadedCatalogIds,...t])]}function V_(e){let t={agentsList:e.agentsList,hello:e.hello};return Ke(t)?O(vn(t)?.mainSessionKey)??`global`:it({agentId:e.agentId,mainKey:lt(t)})}function H_(e,t){return e.find(e=>P(e.key,t))??null}function U_(e,t){return Va(e,t)}function W_(e,t){let n=[...e];for(;n.length>0;){let e=n.pop();if(e){if(t(e))return!0;n.push(...e.children)}}return!1}function G_(e){let t=e.navigationState.visibleSessionRows.find(t=>t.key===e.sessionKey);if(t)return e.navigationState.toSidebarSession(t);for(let t of Object.values(e.sessionResultsByAgent)){let n=t.sessions.find(t=>t.key===e.sessionKey);if(n)return e.navigationState.toSidebarSession(n)}}function K_(e){let t=e.ownerFacet??[],n=e.self?.id,r=t.find(e=>e.id===n)?.type===`agent`?null:qp(e.self),i=r?[r,...t.filter(e=>e.id!==r.id)]:t,a=i.length<2&&W_(e.projected,e=>(e.participantCount??0)>0),o=i.length>=2||a,s=e.selectedOwnerId?.trim()||null,c=s&&(e.ownerFacet===void 0||i.some(e=>e.id===s))?s:null;if(!c)return{rows:e.projected,ownerOptions:i,ownershipVisible:o,activeOwnerId:c};let l=e=>{let t=[];for(let n of e){let e=l(n.children);if(n.owner?.actor.id===c)t.push({...n,children:e});else for(let n of e)t.push({...n,isChild:!1})}return t};return{rows:l(e.projected),ownerOptions:i,ownershipVisible:o,activeOwnerId:c}}function q_(){return(q_=t((()=>{ur(),Yt(),Me(),po(),Ue(),A(),es(),q(),w_(),$p()})))()}function J_(e,t){return[e.activeSessionLineageSelectedRow,e.activeSessionLineageRoot,...Object.values(e.childSessionRowsByParent).flat()].find(e=>e!=null&&P(e.key,t))}function Y_(e,t){let n=e.getSessionNavigationState(),r=J_(e.sessionData,t),i=G_({sessionKey:t,navigationState:n,sessionResultsByAgent:e.sessionData.sessionResultsByAgent})??(r?n.toSidebarSession(r,!0):void 0);return $u({catalogs:e.visibleSessionCatalogs(),sessionKey:t,liveRow:i})}function X_(e){if(e.adopted.size===0)return e.rows;let t=new Map(e.rows.map(e=>[e.key,e])),n=[...e.sessionsResult?.sessions??[],...Object.values(e.sessionResultsByAgent).flatMap(e=>e.sessions)];for(let r of n)e.adopted.has(r.key)&&!t.has(r.key)&&t.set(r.key,e.navigationState.toSidebarSession(r));return[...t.values()]}function Z_(){return(Z_=t((()=>{A(),id(),q_()})))()}var Q_;function $_(){return($_=t((()=>{Sa(),ns(),A(),Q_=class{constructor(e,t){this.host=e,this.options=t,this.states=new Map,this.gateway=null,this.client=null,this.agentId=null,this.store=null,this.stopStoreUpdates=null,this.connected=!1,e.addController(this)}hostConnected(){this.connected=!0}hostUpdated(){this.connected&&this.refreshVisible()}hostDisconnected(){this.connected=!1,this.releaseStore(),this.reset(!1)}summary(e,t,n){let r=this.states.get(e);return r?.worktreeId===t?r.summary:n}releaseStore(){this.store?.unwatch(this),this.stopStoreUpdates?.(),this.stopStoreUpdates=null,this.store=null,this.gateway=null,this.client=null,this.agentId=null}reset(e){this.states.size!==0&&(this.states.clear(),e&&this.host.requestUpdate())}eligibleRows(){return this.options.getRows().filter(e=>!e.isChild&&e.worktreeId)}scopedKey(e){return Bo(e,N(e)?.agentId??this.options.getSelectedAgentId())}applySnapshots(e){let t=this.store;if(!t)return;let n=!1;for(let r of e??this.eligibleRows()){if(!r.worktreeId)continue;let e=t.get(this.scopedKey(r.key));if(!e){let e=this.states.delete(r.key);if(e){let e=this.options.getSessions();e&&e.setPullRequestSummary(r.key,void 0,e.capturePullRequestEpoch(r.key))}n=e||n;continue}if(e.status!==`ready`&&e.pullRequests.length===0)continue;let i=this.states.get(r.key),a={summary:Mo(e.pullRequests,i?.summary),worktreeId:r.worktreeId};(!i||i.summary!==a.summary||i.worktreeId!==a.worktreeId)&&(this.states.set(r.key,a),n=!0)}n&&this.host.requestUpdate()}refreshVisible(){let e=this.options.getGateway();if(!e||!this.options.getConnected()||ba(e.snapshot,`controlUi.sessionPullRequests.subscribe`)!==!0){this.releaseStore(),this.reset(!0);return}e!==this.gateway&&(this.releaseStore(),this.gateway=e,this.store=Zo(e),this.stopStoreUpdates=this.store.subscribe(()=>this.applySnapshots())),e.snapshot.client!==this.client&&(this.client=e.snapshot.client,this.reset(!0));let t=this.options.getSelectedAgentId();t!==this.agentId&&(this.agentId=t,this.reset(!0));let n=this.eligibleRows(),r=new Set(n.map(e=>e.key)),i=!1;for(let e of this.states.keys())r.has(e)||(this.states.delete(e),i=!0);i&&this.host.requestUpdate(),this.store?.watch(this,n.map(e=>this.scopedKey(e.key))),this.applySnapshots(n)}}})))()}function ev(e){return!!(hg(e.attention)||e.agentStatusNote||e.hasActiveRun&&e.status===`queued`)}var tv,nv,rv;function iv(){return(iv=t((()=>{po(),q(),yg(),r_(),tv=1e3,nv=2e3,rv=class{constructor(e=()=>Date.now()){this.now=e,this.observedOrder=new Map,this.nextCreatedOrder=0,this.stickySections=new Map,this.childModes=new Map,this.heldSubtitles=new Map,this.previousInput=null,this.previousCollapsedSections=new Set}get createdOrder(){return this.observedOrder}observeRows(e){for(let t of e)for(let{key:e}of t.sessions)e&&!this.observedOrder.has(e)&&this.observedOrder.set(e,this.nextCreatedOrder++);if(this.observedOrder.size<=tv)return;let t=new Set(e.flatMap(e=>e.sessions.map(({key:e})=>e)));for(let e of this.observedOrder.keys()){if(this.observedOrder.size<=tv)break;t.has(e)||this.observedOrder.delete(e)}}promoteCreatedSession(e){let t=this.observedOrder.get(e);if(t===0)return!1;for(let[n,r]of this.observedOrder)n!==e&&(t===void 0||r<t)&&(this.observedOrder.set(n,r+1),this.nextCreatedOrder=Math.max(this.nextCreatedOrder,r+2));return this.observedOrder.set(e,0),this.nextCreatedOrder=Math.max(this.nextCreatedOrder,1),!0}project(e){let t=this.previousInput,n=t!==null&&(t.agentId!==e.agentId||t.connectionIdentity!==e.connectionIdentity||t.listSource!==e.listSource);(n||t!==null&&(t.grouping!==e.grouping||t.sortMode!==e.sortMode||t.statusFilter!==e.statusFilter))&&this.resetMembership(),t!==null&&(t.agentId!==e.agentId||t.connectionIdentity!==e.connectionIdentity)&&this.childModes.clear(),n&&this.heldSubtitles.clear();for(let t of e.collapsedSections)this.previousCollapsedSections.has(t)||this.resetMembership(t);this.previousInput={grouping:e.grouping,sortMode:e.sortMode,statusFilter:e.statusFilter,agentId:e.agentId,connectionIdentity:e.connectionIdentity,listSource:e.listSource},this.previousCollapsedSections=new Set(e.collapsedSections);let r=new Set([...this.childModes.keys(),...this.heldSubtitles.keys()]),i=t=>{r.delete(t.key),t.containsActiveDescendant&&!this.childModes.has(t.key)&&this.childModes.set(t.key,`expanded`),this.observeSubtitle(t,e.subtitle);for(let e of t.children)i(e)};e.rows.forEach(i);for(let e of r)this.childModes.delete(e),this.heldSubtitles.delete(e);let{grouping:a,knownGroups:o,selfOwnerId:s,sectionOrder:c,catalogIds:l}=e,u=oo(e.rows,{grouping:a,knownGroups:o,selfOwnerId:s,sectionOrder:c,catalogIds:l}).filter(t=>t.id!==`pinned`&&!(e.hideEmptyGroups&&t.category&&t.rows.length===0)),d=new Set(u.map(e=>e.id));for(let e of this.stickySections.keys())d.has(e)||this.stickySections.delete(e);let f=e.grouping!==`none`&&u.some(e=>e.id!==`ungrouped`&&(e.id!==`work`||e.rows.length>0)),p=[],m=[],h=[];for(let t of u){let n=t.rows.length,r=t.id!==`ungrouped`||f,i=r&&e.collapsedSections.has(t.id),a=e.visibleSessionLimits.get(t.id)??10,o=t.rows.reduce((e,t)=>e+Number(t.active||t.pinned),0),s=Math.max(o,Math.min(n,10)),c=0;if(!i){p.push(...t.rows);let e=Math.max(0,a-o),n=a,r=this.stickySections.get(t.id);t.rows=t.rows.filter(t=>t.active||t.pinned?!0:e>0?(--e,!0):n===0||!r?.has(t.key)?!1:(--n,!0)),this.stickySections.set(t.id,new Set(t.rows.map(e=>e.key))),m.push(...t.rows),c=t.rows.length}h.push(Object.assign(t,{totalRowCount:n,visibleRowCount:c,visibleLimit:a,collapsedVisibleRowCount:s,renderHeader:r}))}return{sections:h,expandedRows:p,visibleRows:m}}resetMembership(e){e===void 0?this.stickySections.clear():this.stickySections.delete(e)}isChildrenExpanded(e){let t=this.childModes.get(e);return t===`expanded`||t===`expanded-fully`}isChildrenFullyShown(e){return this.childModes.get(e)===`expanded-fully`}toggleChildren(e){return this.isChildrenExpanded(e.key)?(this.childModes.set(e.key,`collapsed-by-user`),{expanded:!1}):(this.childModes.set(e.key,`expanded`),{expanded:!0})}showMoreChildren(e){this.isChildrenExpanded(e)&&this.childModes.set(e,`expanded-fully`)}resolveSubtitle(e){if(!e.session.hasActiveRun||!e.showPreview)return t_(e);let t=this.heldSubtitles.get(e.session.key);return t?e.hasDisplay?t.catalogValue??t_(e):t.value:t_(e)}observeSubtitle(e,t){if(!e.hasActiveRun||!t.showPreview){this.heldSubtitles.delete(e.key);return}!t.sidebarLiveActivity&&this.heldSubtitles.get(e.key)?.value.narration&&this.heldSubtitles.delete(e.key);let n={session:e,hasDisplay:!1,displaySubtitle:void 0,sidebarLiveActivity:t.sidebarLiveActivity,showPreview:t.showPreview,narrationLine:t.narrationLines.get(e.key),observerDigest:t.observerDigests.get(e.key)??null},r=t_(n);if(!r.subtitle){e.attention.kind===`question`&&this.heldSubtitles.delete(e.key);return}let i=this.heldSubtitles.get(e.key),a=this.now(),o=i!==void 0&&i.value.subtitle!==r.subtitle;if(o&&a-i.shownAt<nv&&!ev(e))return;let s=t_({...n,hasDisplay:!0});this.heldSubtitles.set(e.key,{value:r,...s.subtitle?{catalogValue:s}:{},shownAt:i!==void 0&&!o?i.shownAt:a})}}})))()}function av(e){let{roots:t,agentRows:n,childRowsByParent:r,loadingChildKeys:i,knownSessionAttention:a,toSidebarSession:o}=e,s=new Map;for(let e of Object.values(r))for(let t of e)s.set(t.key,t);for(let e of n)s.set(e.key,e);let c=new Map,l=e=>typeof e?.category==`string`&&e.category.trim().length>0,u=(e,t)=>{let n=c.get(e)??[];n.includes(t)||(n.push(t),c.set(e,n))};for(let e of s.values())for(let t of e.childSessions??[]){let n=s.get(t);if(l(n))continue;let r=He(n);(!r||P(r,e.key))&&u(e.key,t)}for(let e of s.values()){let t=He(e);t&&!l(e)&&u(t,e.key)}let d=(e,t,n)=>{let r=e.archived===!0?[]:c.get(e.key)??[],l=new Set(n);l.add(e.key);let u=r.flatMap(e=>{let t=s.get(e);return t&&!l.has(e)?[d(t,!0,l)]:[]}),f=o(e,t),p=u.reduce((e,t)=>e+ +!!t.hasActiveRun+t.runningChildCount,0),m=Math.max(p,+!!e.hasActiveSubagentRun),h=u.reduce((e,t)=>e+ +(t.status===`failed`||t.status===`timeout`)+t.failedChildCount,0),g=Math.min(2**53-1,(f.workspaceConflictCount??0)+u.reduce((e,t)=>e+(t.workspaceConflictCount??0),0)),_=r.filter(e=>!s.has(e)),v=a.reduce((e,t)=>_.some(e=>P(t.sessionKey,e))&&sd(t.attention)>sd(e)?t.attention:e,Rd),y=u.reduce((e,t)=>cd(t,zd.Attention)&&sd(t.attention)>sd(e)?t.attention:e,sd(v)>sd(f.attention)?v:f.attention);return{...f,attention:y,childSessionKeys:r,children:u,loadingChildren:i.has(e.key),containsActiveDescendant:u.some(e=>e.active||e.visuallyActive||e.containsActiveDescendant),workspaceConflictCount:g||void 0,runningChildCount:m,failedChildCount:h}},f=new Set(t.map(e=>e.key));return t.filter(e=>{if(l(e))return!0;let t=He(e);return!t||!f.has(t)}).map(e=>d(e,!1,new Set))}function ov(){return(ov=t((()=>{A(),q()})))()}function sv(e,t){let n=dv.get(e);n||(n=new Set,dv.set(e,n)),n.add(t)}function cv(e,t){let n=dv.get(e);n&&(n.delete(t),n.size===0&&dv.delete(e))}function lv(e,t){let n=dv.get(e);if(!n)return;let r=Array.from(n,e=>({owner:e,generation:e.clientGeneration}));for(let{owner:i,generation:a}of r)n.has(i)&&i.client===e&&i.clientGeneration===a&&i.onQuestionResolution(t)}function uv(e,t,n,r){let i=r===void 0?h:Math.min(h,Math.max(0,r-Date.now()));return e.request(t,n,{timeoutMs:i})}var dv;function fv(){return(fv=t((()=>{ye(),dv=new WeakMap})))()}function pv(e){if(!p(e))return null;let{name:t,kind:n,allowedHosts:r,reason:i}=e;return typeof t!=`string`||!/^[A-Z][A-Z0-9_]{0,127}$/.test(t)||n!==`secret`&&n!==`env`||i!==void 0&&(typeof i!=`string`||i.length>200)||r!==void 0&&(n!==`secret`||!Array.isArray(r)||r.length>128||r.some(e=>typeof e!=`string`||!e||e.length>253)||new Set(r).size!==r.length)?null:{name:t,kind:n,...r===void 0?{}:{allowedHosts:[...r]},...i===void 0?{}:{reason:i}}}function mv(e){if(!p(e))return null;let t=r(e.updatedAtMs,{min:0}),i=e.updatedBy===void 0?void 0:n(e.updatedBy);return t===void 0||e.updatedBy!==void 0&&!i?null:{updatedAtMs:t,...i?{updatedBy:i}:{}}}function hv(e){if(e.isSecret!==void 0&&typeof e.isSecret!=`boolean`)return null;let t=e.secretStore===void 0?void 0:pv(e.secretStore),n=e.secretStoreExisting===void 0?void 0:mv(e.secretStoreExisting);return t===null||n===null||t&&!e.isSecret||n&&!t?null:{...typeof e.isSecret==`boolean`?{isSecret:e.isSecret}:{},...t?{secretStore:t}:{},...n?{secretStoreExisting:n}:{}}}function gv(e,t){for(let n of e)n.isSecret&&t.delete(n.questionId)}function _v(e,t){if(!p(e))return null;if(e.status===`cancelled`)return{status:`cancelled`};let n=t(e.answers);return e.status===`answered`&&n?{status:`answered`,answers:n}:null}function vv(e,t,n,r){if(!(`answers`in n))return{requestParams:{id:e,cancel:!0}};let i={answers:Object.fromEntries(Object.entries(n.answers).map(([e,t])=>[e,[...t]]))},a=t[0]?.secretStore?t[0]:void 0,o=a?.secretStore?.kind===`secret`?r===void 0?a.secretStore.allowedHosts:r.split(/[,\s]+/u).map(e=>e.trim()).filter(Boolean):void 0;return{requestParams:{id:e,answers:i,...o===void 0?{}:{secretStoreAllowedHosts:o}},submittedAnswers:a?{answers:{[a.questionId]:[`stored`]}}:i}}function yv(){return(yv=t((()=>{ue()})))()}function bv(e){return r(e,{min:0})??null}function xv(e){let t=[...new Intl.Segmenter().segment(e)];return t.length<=qv?e:t.slice(0,qv).map(e=>e.segment).join(``)}function Sv(e){if(!p(e))return null;let t=n(e.questionId),r=typeof e.header==`string`?e.header:null,i=n(e.question);if(!t||!/^[a-z][a-z0-9_]*$/.test(t)||r===null||!i)return null;let a=xv(r);if(!Array.isArray(e.options)||e.options.length>4)return null;let o=e.options.flatMap(e=>{if(!p(e))return[];let t=n(e.label);return!t||e.description!==void 0&&typeof e.description!=`string`?[]:[{label:t,...typeof e.description==`string`?{description:e.description}:{}}]});if(o.length!==e.options.length)return null;for(let t of[`multiSelect`,`isOther`])if(e[t]!==void 0&&typeof e[t]!=`boolean`)return null;let s=hv(e);return s?{questionId:t,header:a,question:i,options:o,...e.multiSelect===!0?{multiSelect:!0}:{},...typeof e.isOther==`boolean`?{isOther:e.isOther}:{},...s}:null}function Cv(e){if(!p(e)||!p(e.answers))return null;let t={};for(let[n,r]of Object.entries(e.answers)){if(!/^[a-z][a-z0-9_]*$/.test(n)||!Array.isArray(r)||!r.every(e=>typeof e==`string`))return null;t[n]=[...r]}return{answers:t}}function wv(e,t){if(!e||!t)return!1;let n=Object.keys(e.answers).toSorted(),r=Object.keys(t.answers).toSorted();return n.length===r.length&&n.every((n,i)=>n===r[i]&&e.answers[n]?.length===t.answers[n]?.length&&e.answers[n]?.every((e,r)=>Object.is(e,t.answers[n]?.[r])))}function Tv(e){if(!p(e))return null;let t=n(e.id),r=bv(e.createdAtMs),i=bv(e.expiresAtMs);if(!t||r===null||i===null||!Array.isArray(e.questions)||e.questions.length<1||e.questions.length>3)return null;let a=e.questions.map(Sv);if(a.some(e=>e===null)||new Set(a.map(e=>e?.questionId)).size!==a.length)return null;let o=e.agentId===void 0?void 0:n(e.agentId),s=e.sessionKey===void 0?void 0:n(e.sessionKey),c=e.runId===void 0?void 0:n(e.runId);if(e.agentId!==void 0&&!o||e.sessionKey!==void 0&&!s||e.runId!==void 0&&!c)return null;let l={id:t,questions:a,...o?{agentId:o}:{},...s?{sessionKey:s}:{},...c?{runId:c}:{},createdAtMs:r,expiresAtMs:i};if(e.status===`pending`)return{...l,status:`pending`};if(e.status===`answered`){let t=Cv(e.answers);return t?{...l,status:`answered`,answers:t}:null}return e.status===`cancelled`?{...l,status:`cancelled`}:e.status===`expired`?{...l,status:`expired`}:null}function Ev(e){let t=Tv(e);return t?.status===`pending`?t:null}function Dv(e){if(!p(e))return null;let t=n(e.id);if(!t)return null;if(e.status===`answered`){let n=Cv(e.answers);return n?{id:t,status:`answered`,answers:n}:null}return e.status===`cancelled`||e.status===`expired`?{id:t,status:e.status}:null}function Ov(e){let t={client:null,ownerClient:null,clientGeneration:0,prompts:new Map,unmatchedResolutions:new Map,revision:0,tickTimer:null,refreshRetryTimer:null,onChange:e,onQuestionResolution:e=>Mv(t,e)};return t}function kv(e){e.tickTimer||![...e.prompts.values()].some(e=>e.status===`pending`)||(e.tickTimer=globalThis.setTimeout(()=>{e.tickTimer=null;let t=Date.now(),n=!1;for(let r of e.prompts.values())r.status===`pending`&&r.expiresAtMs<=t&&(r.status=`expired`,gv(r.questions,r.drafts),r.locallyExpired=!0,r.submitting=!1,r.error=null,r.revision=++e.revision,n=!0);e.onChange(),(n||[...e.prompts.values()].some(e=>e.status===`pending`))&&kv(e)},1e3))}function Av(e,t,n){let r=++e.revision,i=n?.drafts??new Map;return t.status!==`pending`&&gv(t.questions,i),{id:t.id,questions:t.questions,...t.agentId?{agentId:t.agentId}:{},...t.sessionKey?{sessionKey:t.sessionKey}:{},...t.runId?{runId:t.runId}:{},createdAtMs:t.createdAtMs,expiresAtMs:t.expiresAtMs,status:t.status,...t.status===`answered`?{answers:t.answers}:{},...n?.submittedAnswers?{submittedAnswers:n.submittedAnswers}:{},answeredElsewhere:t.status===`answered`&&!(n?.localResolutionConfirmed??!1)&&!(n?.submitting??!1),localResolutionConfirmed:n?.localResolutionConfirmed??!1,locallyExpired:!1,submitting:t.status===`pending`||t.status===`answered`&&!(n?.localResolutionConfirmed??!1)?n?.submitting??!1:!1,error:t.status===`pending`?n?.error??null:null,drafts:i,...n?.secretStoreAllowedHostsDraft===void 0?{}:{secretStoreAllowedHostsDraft:n.secretStoreAllowedHostsDraft},revision:r}}function jv(e,t,n){t.status=n.status,gv(t.questions,t.drafts),t.answers=n.status===`answered`?n.answers:void 0;let r=n.status===`answered`&&wv(t.submittedAnswers,n.answers);t.answeredElsewhere=n.status===`answered`&&!t.localResolutionConfirmed&&!r&&!t.submitting,t.locallyExpired=!1,(n.status!==`answered`||t.localResolutionConfirmed)&&(t.submitting=!1),t.error=null,t.revision=++e.revision}function Mv(e,t){let n=e.prompts.get(t.id);n?jv(e,n,t):(e.unmatchedResolutions.set(t.id,t),e.revision+=1),e.onChange()}function Nv(e,t){if(t.event===`question.requested`){let n=Ev(t.payload);if(!n)return!1;let r=e.prompts.get(n.id);if(r&&r.status!==`pending`)return!0;let i=Av(e,n,r),a=e.unmatchedResolutions.get(n.id);return a&&(e.unmatchedResolutions.delete(n.id),jv(e,i,a)),e.prompts.set(n.id,i),kv(e),e.onChange(),!0}if(t.event!==`question.resolved`)return!1;let n=Dv(t.payload);return n?(Mv(e,n),!0):!1}function Pv(e){if(!p(e)||!Array.isArray(e.questions))return null;let t=e.questions.map(Ev);return t.some(e=>e===null)?null:t}function Fv(e){return p(e)?Tv(e.question):null}function Iv(e){return e instanceof Or&&p(e.details)&&e.details.reason===`QUESTION_NOT_FOUND`}function Lv(e,t){t.status=`unavailable`,gv(t.questions,t.drafts),t.answers=void 0,t.answeredElsewhere=!1,t.localResolutionConfirmed=!1,t.locallyExpired=!1,t.submitting=!1,t.error=null,t.revision=++e.revision}async function Rv(e,t,n=()=>e.client===t){let r=e.revision,i=Pv(await uv(t,`question.list`,{}));if(!i||!n())return!1;let a=new Set(i.map(e=>e.id));for(let t of i){let n=e.prompts.get(t.id);if(!n||n.revision<=r||n.locallyExpired){let r=Av(e,t,n),i=e.unmatchedResolutions.get(t.id);i&&(e.unmatchedResolutions.delete(t.id),jv(e,r,i)),e.prompts.set(t.id,r)}}kv(e),e.onChange();let o=[...e.prompts.values()].filter(e=>(e.locallyExpired||e.status===`pending`&&e.revision<=r)&&!a.has(e.id)).map(e=>({id:e.id,prompt:e,revision:e.revision})),s=new Set(o.map(e=>e.id));for(let t of e.unmatchedResolutions.keys())!a.has(t)&&!s.has(t)&&(o.push({id:t,prompt:void 0,revision:e.revision}),s.add(t));let c=await Promise.all(o.map(async r=>{let i=await uv(t,`question.get`,{id:r.id}).then(e=>({ok:!0,value:e}),e=>({ok:!1,error:e}));if(!n())return!1;let a=e.prompts.get(r.id);if(r.prompt&&a!==r.prompt)return!!(a&&a.status!==`pending`&&!a.locallyExpired);if(r.prompt&&a?.revision!==r.revision&&!a?.locallyExpired)return a?.status!==`pending`;if(!r.prompt&&!e.unmatchedResolutions.has(r.id))return!0;if(!i.ok)return Iv(i.error)?(a&&Lv(e,a),e.unmatchedResolutions.delete(r.id),e.onChange(),!0):!1;let o=Fv(i.value);if(!o)return!1;let s=Av(e,o,a),c=e.unmatchedResolutions.get(r.id);return c&&(e.unmatchedResolutions.delete(r.id),jv(e,s,c)),e.prompts.set(r.id,s),kv(e),e.onChange(),!0}));return n()&&c.every(Boolean)}function zv(e,t,n=()=>e.client===t){let r=e.clientGeneration,i=()=>e.client===t&&e.clientGeneration===r&&n(),a=0,o=async()=>{if(!i())return;let n;try{n=await Rv(e,t,i)}catch{n=!1}if(n||!i())return;let r=Kv[a];a=Math.min(a+1,Kv.length-1),e.refreshRetryTimer=globalThis.setTimeout(()=>{e.refreshRetryTimer=null,o()},r)};o()}function Bv(e,t){if(e.refreshRetryTimer&&=(globalThis.clearTimeout(e.refreshRetryTimer),null),e.client===t)return;e.client&&cv(e.client,e),e.clientGeneration+=1;let n=t!==null&&e.ownerClient!==null&&e.ownerClient!==t;if(e.client=t,t!==null&&(e.ownerClient=t,sv(t,e)),n){let t=e.prompts.size>0||e.unmatchedResolutions.size>0;e.tickTimer&&=(globalThis.clearTimeout(e.tickTimer),null),e.prompts.clear(),e.unmatchedResolutions.clear(),t&&(e.revision+=1,e.onChange());return}t&&kv(e);let r=!1;for(let t of e.prompts.values())t.submitting&&(t.submitting=!1,t.revision=++e.revision,r=!0);r&&e.onChange()}function Vv(e){e.client&&cv(e.client,e),e.tickTimer&&=(globalThis.clearTimeout(e.tickTimer),null),e.refreshRetryTimer&&=(globalThis.clearTimeout(e.refreshRetryTimer),null),e.clientGeneration+=1,e.client=null}async function Hv(e,t,n){let r=e.prompts.get(t),i=e.client,a=e.clientGeneration;if(!r||r.status!==`pending`||r.submitting)return;if(!i){r.error=G(`chat.questions.disconnected`),r.revision=++e.revision,e.onChange();return}r.submitting=!0;let o=vv(t,r.questions,n,r.secretStoreAllowedHostsDraft);r.submittedAnswers=o.submittedAnswers,r.error=null,r.revision=++e.revision,e.onChange();try{let n=_v(await uv(i,`question.resolve`,o.requestParams,r.expiresAtMs),Cv);if(!n||n.status!==(o.submittedAnswers?`answered`:`cancelled`))throw Error(`invalid question.resolve response`);if(e.client===i&&e.clientGeneration===a){let n=e.prompts.get(t);n&&(n.localResolutionConfirmed=!0)}lv(i,{...n,id:t})}catch(n){if(e.client!==i||e.clientGeneration!==a)return;let r=e.prompts.get(t);if(!r)return;if(r.submitting=!1,r.status===`pending`){r.error=M(n),r.revision=++e.revision,e.onChange();return}r.status===`answered`&&!r.localResolutionConfirmed&&(r.answeredElsewhere=!wv(r.submittedAnswers,r.answers)),r.revision=++e.revision,e.onChange()}}async function Uv(e,t,n){await Hv(e,t,{answers:n})}async function Wv(e,t){await Hv(e,t,{cancel:!0})}function Gv(e){return[...e.prompts.values()].toSorted((e,t)=>e.createdAtMs-t.createdAtMs||e.id.localeCompare(t.id))}var Kv,qv;function Jv(){return(Jv=t((()=>{ue(),hr(),W(),Ye(),fv(),yv(),Kv=[1e3,2e3,4e3],qv=12})))()}var Yv;function Xv(){return(Xv=t((()=>{Jv(),W(),Sa(),A(),Ee(),q(),Yv=class{constructor(e){this.host=e,this.attentionGateway=null,this.attentionGatewayClient=null,this.attentionGatewayConnected=!1,this.agentStatusExpiryTimer=null,this.agentStatusExpiryAt=null,e.addController(this),this.attentionSubscriptions=new _n(e),this.questionPromptState=Ov(()=>e.requestUpdate()),this.attentionSubscriptions.watch(()=>e.sessionAttentionContext?.gateway,(e,t)=>e.subscribe(t),e=>this.synchronizeAttentionGateway(e)).effect(()=>e.sessionAttentionContext?.gateway,e=>e.subscribeEvents(e=>{Nv(this.questionPromptState,e)})).watch(()=>e.sessionAttentionContext?.overlays,(e,t)=>e.subscribe(t))}hostDisconnected(){this.attentionGateway=null,this.attentionGatewayClient=null,this.attentionGatewayConnected=!1,this.agentStatusExpiryTimer&&(globalThis.clearTimeout(this.agentStatusExpiryTimer),this.agentStatusExpiryTimer=null,this.agentStatusExpiryAt=null),Vv(this.questionPromptState)}synchronizeAttentionGateway(e){let t=e.snapshot.phase===`connected`,n=t&&ba({hello:e.snapshot.hello},`question.list`)===!0&&typeof e.snapshot.client?.request==`function`?e.snapshot.client:null;(e!==this.attentionGateway||n!==this.attentionGatewayClient||t!==this.attentionGatewayConnected)&&(this.attentionGateway=e,this.attentionGatewayClient=n,this.attentionGatewayConnected=t,Bv(this.questionPromptState,n),n&&zv(this.questionPromptState,n,()=>this.host.isConnected&&this.host.sessionAttentionContext?.gateway===e&&e.snapshot.phase===`connected`&&e.snapshot.client===n))}resolveSessionAttention(e){let t=this.knownSessionAttention().find(t=>P(t.sessionKey,e.key));if(t)return t.attention;let n=this.resolveSessionAgentStatus(e);if(n?.attention)return{kind:`agent`,note:n.note,icon:n.attention};if(e.status!==`failed`&&e.status!==`timeout`)return Rd;let r=e.endedAt??e.updatedAt??0;return e.lastReadAt!=null&&r<=e.lastReadAt?Rd:{kind:`error`,reason:e.lastRunError?.trim()||G(e.status===`timeout`?`sessionsView.runErrorTimedOut`:`sessionsView.runErrorUnknown`)}}resolveSessionAgentStatus(e){let t=e.agentStatus;if(!(!t||t.expiresAt<=Date.now()||!t.note.trim()))return this.scheduleAgentStatusExpiry(t.expiresAt),t}scheduleAgentStatusExpiry(e){this.agentStatusExpiryAt!==null&&this.agentStatusExpiryAt<=e||(this.agentStatusExpiryTimer&&globalThis.clearTimeout(this.agentStatusExpiryTimer),this.agentStatusExpiryAt=e,this.agentStatusExpiryTimer=globalThis.setTimeout(()=>{this.agentStatusExpiryTimer=null,this.agentStatusExpiryAt=null,this.host.requestUpdate()},Math.max(0,e-Date.now()+1)))}knownSessionAttention(){let e=Gv(this.questionPromptState).flatMap(e=>e.status===`pending`&&e.sessionKey!==void 0?[{sessionKey:e.sessionKey,attention:{kind:`question`}}]:[]),t=(this.host.sessionAttentionContext?.overlays?.snapshot.approvalQueue??[]).flatMap(e=>typeof e.request.sessionKey==`string`?[{sessionKey:e.request.sessionKey,attention:{kind:`approval`}}]:[]);return[...e,...t]}}})))()}function Zv(e,t){let n=new Map;for(let r of[...Object.values(t).flat(),...e]){let e=Ne(r.key)||r.key;n.delete(e),n.set(e,r)}return new Map([...n.values()].map(e=>[e.key,e]))}async function Qv(e){let t={},n=e.sessionKey,r=null,i=!1,a=new Set;try{for(let i=0;i<ry&&!a.has(n);i+=1){a.add(n);let i=e.knownRows.get(n)??[...e.knownRows.values()].find(e=>P(e.key,n));if(!i){let t=await e.client.request(`sessions.describe`,{key:n});if(!e.isCurrent())return null;if(i=t?.session?{...t.session,runtimeSampledAt:Date.now()}:void 0,!i)break;e.knownRows.set(i.key,i)}r=i;let o=He(i);if(!o)break;t[o]=[...(t[o]??[]).filter(e=>e.key!==i.key),i],n=o}}catch{i=!0}return{rowsByParent:t,topmostRow:r,lookupFailed:i}}function $v(e,t){let n=Object.fromEntries(Object.entries(e).map(([e,t])=>[e,[...t]]));for(let[e,r]of Object.entries(t)){let t=n[e]??[];for(let e of r)t.some(t=>t.key===e.key)||t.push(e);n[e]=t}return n}function ey(e,t){let n={},r=e?.trim(),i=new Set;for(;r&&!i.has(r);){i.add(r);let e=Object.entries(t).find(([,e])=>e.some(e=>P(e.key,r)));if(!e)break;n[e[0]]=e[1].filter(e=>P(e.key,r)),r=e[0]}return n}function ty(e,t,n,r){let i=e.activeSessionLineageRoot,a=e.activeSessionLineageSelectedRow,o=n=>{let r=P(n.key,t)?a:i&&P(n.key,i.key)?i:null,o=e.sessionsResult?.sessions.find(e=>P(e.key,n.key));return Bt(o??n,r??void 0)},s=n.topmostRow?o(n.topmostRow):null,c=Object.fromEntries(Object.entries(n.rowsByParent).map(([e,t])=>[e,t.map(o)]));e.childSessionRowsByParent=$v(e.childSessionRowsByParent,c),e.activeSessionLineageRoot=s;let l=[s,...Object.values(c).flat(),...Zv(e.sessionsResult?.sessions??[],e.childSessionRowsByParent).values()].filter(e=>e!=null&&P(e.key,t)).reduce((e,t)=>!e||(t.updatedAt??0)>(e.updatedAt??0)?t:e,void 0);e.activeSessionLineageSelectedRow=l??(n.lookupFailed?a:null),l&&e.context?.sessions.reconcile(l,e.sessionsResult?.defaults,{archivedFilter:`all`,sourceCanonicalListRevision:r})}function ny(e,t){if(!t)return;let n=e.context?.gateway?.snapshot.sessionKey?.trim();if(n&&P(n,t))return;let r=e.sessionsResult?.sessions.find(e=>P(e.key,t))??[e.activeSessionLineageSelectedRow,e.activeSessionLineageRoot,...Object.values(e.childSessionRowsByParent).flat()].find(e=>e!=null&&P(e.key,t));r?.archived===!0&&(e.childSessionRowsByParent=Object.fromEntries(Object.entries(e.childSessionRowsByParent).map(([e,n])=>[e,n.filter(e=>!P(e.key,t))])),e.context?.sessions.reconcile(r,e.sessionsResult?.defaults,{archivedFilter:`active`}))}var ry;function iy(){return(iy=t((()=>{xt(),A(),fo(),ry=16})))()}function ay(e){return{code:e instanceof Or?e.gatewayCode:`UNAVAILABLE`,message:M(e)}}function oy(e,t){let n=new Set(e.map(e=>e.threadId));return[...e,...t.filter(e=>!n.has(e.threadId))]}function sy(e,t){if(!t)return e;let{sessions:n,nextCursor:r,...i}=e,{nextCursor:a,...o}=t;return{...o,...i,...a===void 0?{}:{nextCursor:a}}}function cy(e){let t=new Map(e.page.hosts.map(e=>[e.hostId,e])),n=[],r=e.current.hosts.map(r=>{let i=e.cursors[r.hostId],a=t.get(r.hostId);if(i===void 0||r.nextCursor!==i||!a)return r;if(a.error)return sy(a,r);n.push(r.hostId);let{nextCursor:o,sessions:s,error:c,...l}=a,{nextCursor:u,error:d,...f}=r;return{...f,...l,sessions:oy(r.sessions,s),...o?{nextCursor:o}:{}}}),{hosts:i,error:a,...o}=e.current,{hosts:s,error:c,...l}=e.page;return{catalog:{...o,...l,hosts:r,...c?{error:c}:{}},advancedHostIds:n}}async function ly(e){let t=new Map(e.previousCatalogs.map(e=>[e.id,e]));return Promise.all(e.catalogs.map(async n=>{let r=new Map(t.get(n.id)?.hosts.map(e=>[e.hostId,e])??[]),i=await Promise.all(n.hosts.map(async t=>{let i=e.pageDepths.get(Ld(n.id,t.hostId))??0;if(i===0)return t;let a=r.get(t.hostId);if(t.error)return sy(t,a);let o=t.sessions,s=t.nextCursor;for(let r=0;r<i&&s;r+=1){let r;try{r=await e.client.request(`sessions.catalog.list`,{agentId:e.agentId,catalogId:n.id,cursors:{[t.hostId]:s}})}catch{return a??t}if(!e.isCurrent())return a??t;let i=r.catalogs.find(e=>e.id===n.id)?.hosts.find(e=>e.hostId===t.hostId);if(!i)return a??t;if(i.error)return sy({...t,...i},a??t);o=oy(o,i.sessions),s=i.nextCursor}let{nextCursor:c,sessions:l,...u}=t;return{...u,sessions:o,...s?{nextCursor:s}:{}}}));return{...n,hosts:i}}))}function uy(){return(uy=t((()=>{hr(),Ye(),q()})))()}function dy(e){return JSON.stringify(e.map(e=>({id:e.id,label:e.label,hosts:e.hosts.map(e=>({hostId:e.hostId,label:e.label,connected:e.connected,errorCode:e.error?.code,sessions:e.sessions.map(e=>({threadId:e.threadId,name:e.name,status:e.status,archived:e.archived})).toSorted((e,t)=>e.threadId.localeCompare(t.threadId))})).toSorted((e,t)=>e.hostId.localeCompare(t.hostId))})).toSorted((e,t)=>e.id.localeCompare(t.id)))}function fy(e,t){return!t||e?.phase!==`connected`||!e.client||ba(e,`sessions.catalog.list`)!==!0?null:e.client}function py(e){if(!(e instanceof Or)||e.gatewayCode!==`INVALID_REQUEST`)return!1;let t=e.message.toLowerCase();return t.includes(`progressid`)&&/(?:unexpected|unknown|unrecognized) property|additional propert(?:y|ies)/.test(t)}function my(e){let t=C(e),n=C(t?.catalog),r=Array.isArray(n?.hosts)?n.hosts:[],i=C(r[0]);return!!(t&&n&&i&&typeof t.progressId==`string`&&t.progressId.length>0&&typeof t.agentId==`string`&&t.agentId.length>0&&typeof n.id==`string`&&typeof n.label==`string`&&n.capabilities!==null&&typeof n.capabilities==`object`&&r.length===1&&typeof i.hostId==`string`&&Array.isArray(i.sessions))}async function hy(e){let{live:t,client:n,generation:r,revision:i}=e;if(t.requestGeneration===r)return;let{progressId:a,progressSequence:o,requestOwner:s}=t.beginRequest(r),c=e.catalogs().length>0,l=dy(e.catalogs()),u=null,d=()=>t.ownsRequest(s)&&r===e.currentGeneration()&&n===e.currentClient(),f=()=>d()&&i===e.currentRevision();try{let r=await t.requestList(n,e.agentId,a);if(!d()||!r?.catalogs)return;u=t.beginRefetch(e.pageDepths.size>0);let i=e.catalogs(),s=await ly({catalogs:t.mergeFinal(r.catalogs,i),previousCatalogs:i,client:n,agentId:e.agentId,pageDepths:e.pageDepths,isCurrent:f});if(!f())return;e.applyFinal(s,new Set([...e.catalogs(),...s].map(e=>e.id))),t.markFinal({catalogs:s,hadCatalogs:c,previousMaterialSnapshot:l,progressSequence:o})}catch(n){f()&&(t.warnRequestError(n),e.applyError(n))}finally{t.endRefetch(u);let n=t.ownsRequest(s);if(n&&(t.requestGeneration=null),n&&d()&&e.connected()){let n=t.refreshPending?0:t.sawChange?gy:_y;t.refreshPending=!1,t.schedule(n,e.connected(),e.refresh)}}}var gy,_y,vy;function yy(){return(yy=t((()=>{hr(),Ye(),Sa(),A(),Fe(),uy(),q(),gy=5e3,_y=3e4,vy=class{constructor(){this.timer=null,this.requestGeneration=null,this.sawChange=!1,this.refreshPending=!1,this.progressive=!0,this.activationTimer=null,this.activationQueueIfActive=!1,this.connectionEpoch=0,this.refetchOwner=null,this.presenceSignature=null,this.progressSequence=0,this.progressSequences=new Map,this.hostProgressSequences=new Map,this.knownHostKeys=new Set,this.requestChangedHostKeys=new Set,this.warnedRequestErrors=new Set,this.requestOwner=null}cancelTimer(e=`timer`){let t=this[e];t!==null&&(globalThis.clearTimeout(t),this[e]=null)}clear(){this.cancelScheduledRefreshes(),this.requestGeneration=null,this.requestOwner=null,this.progressSequences.clear(),this.hostProgressSequences.clear(),this.knownHostKeys.clear(),this.requestChangedHostKeys.clear(),this.presenceSignature=null,this.sawChange=!1,this.refreshPending=!1,this.refetchOwner=null}resetConnection(){this.retireConnection(!0)}retireConnection(e=!1){this.clear(),e&&(this.connectionEpoch+=1,this.progressive=!0)}async requestList(e,t,n){let r=this.connectionEpoch,i={agentId:t,limitPerHost:40},a=this.progressive,o;try{o=await e.request(`sessions.catalog.list`,{...i,...a?{progressId:n}:{}})}catch(t){if(!a||!py(t))throw t;o=await e.request(`sessions.catalog.list`,i),a=!1}return r===this.connectionEpoch&&(this.progressive=a),o}mergeFinal(e,t){let n=new Map(t.flatMap(e=>e.hosts.map(t=>[Ld(e.id,t.hostId),t])));return e.map(e=>({...e,hosts:e.hosts.map(t=>{let r=Ld(e.id,t.hostId),i=n.get(r);return t.error&&this.requestChangedHostKeys.has(r)&&i&&!i.error?i:t})}))}get refetching(){return this.refetchOwner!==null}get hasRequested(){return this.progressSequence>0}beginRefetch(e){if(!e)return null;let t=Symbol(`session-catalog-refetch`);return this.refetchOwner=t,t}endRefetch(e){e!==null&&this.refetchOwner===e&&(this.refetchOwner=null)}beginRequest(e){this.requestGeneration=e;let t=Symbol(`session-catalog-request`);this.requestOwner=t,this.sawChange=!1,this.requestChangedHostKeys.clear();let n=ut(),r=++this.progressSequence;if(this.progressSequences.set(n,r),this.progressSequences.size>8){let e=this.progressSequences.keys().next().value;e&&this.progressSequences.delete(e)}return{progressId:n,progressSequence:r,requestOwner:t}}ownsRequest(e){return this.requestOwner===e}warnRequestError(e){let t=`${e instanceof Or?e.gatewayCode:`UNAVAILABLE`}\u0000${M(e)}`;this.warnedRequestErrors.has(t)||(this.warnedRequestErrors.add(t),console.warn(`Session catalog refresh failed`,e))}markFinal(e){this.sawChange=e.hadCatalogs&&(this.sawChange||e.previousMaterialSnapshot!==dy(e.catalogs));let t=new Set;for(let n of e.catalogs)for(let r of n.hosts){let i=Ld(n.id,r.hostId);t.add(i),!r.error&&this.hostProgressSequences.set(i,Math.max(this.hostProgressSequences.get(i)??-1,e.progressSequence))}for(let n of this.knownHostKeys)t.has(n)||this.hostProgressSequences.set(n,e.progressSequence);this.knownHostKeys=t}observePresence(e){let t=C(e)?.presence;if(!Array.isArray(t))return!1;let n=new Map;for(let e of t){let t=C(e);if(!t)continue;let r=typeof t.deviceId==`string`?t.deviceId:t.instanceId,i=typeof r==`string`?r.trim().toLowerCase():``,a=typeof t.mode==`string`?t.mode.trim().toLowerCase():``,o=a?a===`node`:Array.isArray(t.roles)&&t.roles.some(e=>typeof e==`string`&&e.trim().toLowerCase()===`node`);if(!i||!o)continue;let s=typeof t.reason==`string`?t.reason.trim().toLowerCase():``;n.set(i,s===`disconnect`?`offline`:`connected`)}let r=JSON.stringify([...n].toSorted(([e],[t])=>e.localeCompare(t))),i=this.presenceSignature;return this.presenceSignature=r,i===null?n.size>0:i!==r}applyHost(e){if(!my(e.payload))return null;let t=e.payload;if(d(t.agentId)!==d(e.agentId))return null;let n=this.progressSequences.get(t.progressId),r=t.catalog.hosts[0];if(n===void 0||!r)return null;let i=Ld(t.catalog.id,r.hostId);if(n<(this.hostProgressSequences.get(i)??-1))return null;this.hostProgressSequences.set(i,n),this.requestGeneration!==null&&this.requestChangedHostKeys.add(i);let a=e.catalogs.find(e=>e.id===t.catalog.id),o,s;if(!a)s={...t.catalog,hosts:[r]},o=[...e.catalogs,s].toSorted((e,t)=>e.id.localeCompare(t.id));else{let n=a.hosts.find(e=>e.hostId===r.hostId),c=(e.pageDepths.get(i)??0)>0?sy(r,n):r,l=n?a.hosts.map(e=>e.hostId===r.hostId?c:e):[...a.hosts,c];s={...t.catalog,hosts:l.toSorted((e,t)=>e.label.localeCompare(t.label))},o=e.catalogs.map(e=>e.id===t.catalog.id?s:e)}let c=a?.hosts.find(e=>e.hostId===r.hostId),l=s.hosts.find(e=>e.hostId===r.hostId);if(a!==void 0&&a.label===s.label&&JSON.stringify(a.capabilities)===JSON.stringify(s.capabilities)&&JSON.stringify(a.error)===JSON.stringify(s.error)&&JSON.stringify(c)===JSON.stringify(l))return null;let u=!a||!c||!l||dy([{...s,hosts:[l]}])!==dy([{...a,hosts:[c]}]);return this.sawChange||=u,{catalogs:o,catalogId:t.catalog.id,materialChange:u}}schedule(e,t,n){document.visibilityState===`hidden`||!t||(this.cancelTimer(),this.timer=globalThis.setTimeout(()=>{this.timer=null,n()},e))}requestRefresh(e){if(!(!e.visible||!e.connected)&&!(!e.queueIfActive&&this.timer!==null)){if(this.cancelTimer(),this.requestGeneration===e.generation){this.refreshPending||=e.queueIfActive;return}e.refresh()}}cancelActivation(){this.cancelTimer(`activationTimer`),this.activationQueueIfActive=!1}cancelScheduledRefreshes(){this.cancelTimer(),this.cancelActivation()}scheduleActivation(e,t){this.activationQueueIfActive||=e,this.activationTimer===null&&(this.activationTimer=globalThis.setTimeout(()=>{this.activationTimer=null;let e=this.activationQueueIfActive;this.activationQueueIfActive=!1,t(e)},50))}}})))()}function by(){return{error:null,hasLoaded:!1,stale:!1}}function xy(e,t){return{...e,error:t?.clearError===!1?e.error:null}}function Sy(){return{error:null,hasLoaded:!0,stale:!1}}function Cy(e,t){return{error:M(t),hasLoaded:e.hasLoaded,stale:e.hasLoaded}}function wy(e){let{status:t}=e,n=e.errorMessage??t.error,r=n&&M(n);if(!r&&!t.stale)return B;let i=e.className?` ${e.className}`:``;return r?R`
<div class="callout danger callout--dismissible${i}" role="alert">
<span class="callout__content">
<span>${r}</span>
${t.stale?R`<br /><strong>${G(`common.staleData`)}</strong>`:B}
</span>
<button class="btn btn--sm" ?disabled=${e.retryDisabled} @click=${e.onRetry}>
${G(`common.retry`)}
</button>
</div>
`:R`
<div class="callout warn${i}" role="status">
<strong>${G(`common.staleData`)}</strong>
</div>
`}function Ty(){return(Ty=t((()=>{I(),W(),Ye()})))()}function Ey(e){return document.visibilityState===`hidden`?null:fy(e.context?.gateway.snapshot,e.sessionDataHostConnected)}function Dy(e,t=e.expandedAgentId()){let n=e.context,r=n?.gateway.snapshot;if(r?.phase===`connected`&&ba(r,`sessions.catalog.list`)===!1)return null;let i=n?.agents.state,a=r?.phase===`connected`&&r.client&&i?.connected&&i.client===r.client?i.agentsList:null;if(a){let e=n?n.agentSelection.state.selectedId:t,r=e?.trim()?d(e):null;if(r&&a.agents.some(e=>d(e.id)===r))return r;let i=d(a.defaultId);return a.agents.some(e=>d(e.id)===i)?i:null}if(r?.phase!==`connected`||!r.hello||!r.assistantAgentId)return null;let o=d(r.assistantAgentId),s=n?.agentSelection.state.selectedId,c=s?.trim()?d(s):null;return c&&c!==o?null:o}function Oy(e,t=!1){if(document.visibilityState===`hidden`){e.sessionCatalogLive.cancelScheduledRefreshes();return}e.sessionCatalogLive.scheduleActivation(t,t=>{let n=e.context?.gateway.snapshot;e.sessionCatalogLive.requestRefresh({visible:document.visibilityState!==`hidden`,connected:e.isSessionDataHostConnected&&e.sessionCatalogAgentId!==null&&!!fy(n,e.sessionDataHostConnected),generation:e.sessionScopeGeneration,queueIfActive:t,refresh:()=>void e.refreshSessionCatalogs()})})}function ky(e,t=!1){if(e.context&&e.synchronizeSessionScope(),!(!Ey(e)||e.sessionCatalogLive.timer||e.sessionCatalogLive.requestGeneration===e.sessionScopeGeneration)){if(t&&e.sessionCatalogLive.hasRequested){Oy(e);return}e.refreshSessionCatalogs()}}function Ay(e,t){e.sessionCatalogLive.observePresence(t)&&Oy(e,!0)}function jy(e,t){let n=e.sessionCatalogLive.applyHost({payload:t,agentId:e.sessionCatalogAgentId??``,catalogs:e.sessionCatalogs,pageDepths:e.sessionCatalogPageDepths});if(!n)return;e.sessionCatalogs=n.catalogs,e.requestSessionDataUpdate(),e.sessionCatalogRevision+=+!!e.sessionCatalogLive.refetching;let r=e.sessionCatalogRevisions.get(n.catalogId)??0;e.sessionCatalogRevisions.set(n.catalogId,r+1),n.materialChange&&e.sessionCatalogLive.requestGeneration!==e.sessionScopeGeneration&&e.sessionCatalogLive.schedule(gy,e.isSessionDataHostConnected,()=>void e.refreshSessionCatalogs())}async function My(e){e.synchronizeSessionScope();let t=e.sessionCatalogAgentId,n=Ey(e);if(!n||!t)return;let r=e.sessionScopeGeneration,i=e.sessionCatalogRevision;await hy({live:e.sessionCatalogLive,client:n,agentId:t,generation:r,revision:i,currentGeneration:()=>e.sessionScopeGeneration,currentRevision:()=>e.sessionCatalogRevision,currentClient:()=>e.sessionCatalogGatewayClient(),catalogs:()=>e.sessionCatalogs,pageDepths:e.sessionCatalogPageDepths,connected:()=>e.isSessionDataHostConnected,applyFinal:(t,n)=>{e.sessionCatalogs=t,e.sessionCatalogRefreshStatus=Sy(),e.requestSessionDataUpdate();for(let t of n)e.sessionCatalogRevisions.set(t,(e.sessionCatalogRevisions.get(t)??0)+1);e.sessionCatalogRevision+=1},applyError:t=>{e.sessionCatalogRefreshStatus=Cy(e.sessionCatalogRefreshStatus,ay(t).message),e.requestSessionDataUpdate()},refresh:()=>void e.refreshSessionCatalogs()})}async function Ny(e,t){if(e.loadingMoreSessionCatalogIds.has(t))return;let n=e.sessionCatalogs.find(e=>e.id===t),r=Object.fromEntries((n?.hosts??[]).flatMap(e=>e.nextCursor?[[e.hostId,e.nextCursor]]:[]));if(!n||Object.keys(r).length===0)return;let i=e.context?.gateway.snapshot.client,a=Dy(e);if(!i||!e.sessionDataHostConnected||!a||a!==e.sessionCatalogAgentId)return;let o=e.sessionScopeGeneration,s=e.sessionCatalogRevisions.get(t)??0;e.loadingMoreSessionCatalogIds=new Set([...e.loadingMoreSessionCatalogIds,t]),e.requestSessionDataUpdate();try{let n=await i.request(`sessions.catalog.list`,{agentId:a,catalogId:t,cursors:r});if(!Py(e,t,i,o,s))return;let c=n.catalogs.find(e=>e.id===t),l=e.sessionCatalogs.find(e=>e.id===t);if(!c||!l)return;let u=cy({current:l,page:c,cursors:r});for(let n of u.advancedHostIds){let r=Ld(t,n);e.sessionCatalogPageDepths.set(r,(e.sessionCatalogPageDepths.get(r)??0)+1)}e.sessionCatalogs=e.sessionCatalogs.map(e=>e.id===t?u.catalog:e),e.requestSessionDataUpdate(),e.sessionCatalogRevisions.set(t,s+1),e.sessionCatalogRevision+=1}catch(n){if(!Py(e,t,i,o,s))return;e.sessionCatalogs=e.sessionCatalogs.map(e=>e.id===t?{...e,error:ay(n)}:e),e.requestSessionDataUpdate(),e.sessionCatalogRevisions.set(t,s+1),e.sessionCatalogRevision+=1}finally{if(o===e.sessionScopeGeneration){let n=new Set(e.loadingMoreSessionCatalogIds);n.delete(t),e.loadingMoreSessionCatalogIds=n,e.requestSessionDataUpdate()}}}function Py(e,t,n,r,i){return r===e.sessionScopeGeneration&&i===(e.sessionCatalogRevisions.get(t)??0)&&n===e.sessionCatalogGatewayClient()}function Fy(){return(Fy=t((()=>{Sa(),A(),yy(),uy(),q(),Ty()})))()}function Iy(e,t,n){(n!==`list`||Gy.get(e)!==`action`)&&(e.sessionMutationError=t,t===null?Gy.delete(e):Gy.set(e,n))}function Ly(e,t){let n=new Set(t.map(d));for(let t of Object.keys(e.sessionResultsByAgent))n.has(t)||delete e.sessionResultsByAgent[t];e.sessionsAgentId&&!n.has(d(e.sessionsAgentId))&&(e.sessionsResult=null,e.sessionsAgentId=null)}function Ry(e,t,n){let r=()=>{let n=e.state.agentsList;n&&Ly(t,n.agents.map(e=>e.id))};return r(),e.subscribe(()=>{r(),n()})}function zy(e){let{ownerId:t,involvingMe:n}=e.sidebarSessionOwnerFilter();return e.sidebarSessionStatusFilter()!==`active`||!!(t||n)}function By(e,t){let{ownerId:n,involvingMe:r}=e.sidebarSessionOwnerFilter();return{ownerId:r?void 0:n||void 0,involvingMe:r||void 0,agentId:t,archivedFilter:e.sidebarSessionStatusFilter(),limit:200,includeDerivedTitles:!0,includeLastMessage:!0}}function Vy(e,t){e.sessionsResult=t.result,e.sessionsAgentId=t.agentId,t.result&&t.agentId&&(e.sessionResultsByAgent[d(t.agentId)]=t.result)}function Hy(e,t,n,r){let i=t=>{r()&&(e.context?.gateway.snapshot.phase!==`connected`&&!t.result||(Vy(e,t),e.sessionsLoading=t.loading,Iy(e,t.error,`list`),e.requestSessionDataUpdate()))},a=t.subscribeList(n,i);return i(t.listSnapshot(n)),()=>{a(),Iy(e,null,`list`)}}function Uy(e,t,n=!1){let r=e.sessionsResult,i=r?.nextOffset===void 0?r?.sessions.length:r.nextOffset;return!e.context?.sessions||!t||n&&(e.sessionsLoading||!r?.hasMore||typeof i!=`number`||d(t)!==d(e.expandedAgentId()))?Promise.resolve():e.context.sessions.refreshList({...e.sessionListQuery(t),...n&&typeof i==`number`?{offset:i,append:!0}:{},force:!0})}function Wy(e,t){return e.subscribeEvents(e=>{if(e.event===`sessions.catalog.host`){t.handleSessionCatalogHostEvent(e.payload);return}if(e.event===`presence`){let n=Gn(e.payload);t.presencePayload=n?{presence:n}:void 0,t.requestSessionDataUpdate(),t.handleSessionCatalogPresence(e.payload)}})}var Gy;function Ky(){return(Ky=t((()=>{A(),Gy=new WeakMap})))()}var qy;function Jy(){return(Jy=t((()=>{q(),qy=class{constructor(e){this.notify=e,this.state=`none`,this.element=null,this.resizeObserver=null,this.frame=null}synchronize(e){let t=e.querySelector(`.sidebar-shell__body`);t!==this.element&&(this.resizeObserver?.disconnect(),this.element=t,this.resizeObserver=null,t&&typeof ResizeObserver==`function`&&(this.resizeObserver=new ResizeObserver(()=>this.update(t)),this.resizeObserver.observe(t))),t&&this.frame===null&&(this.frame=requestAnimationFrame(()=>{this.frame=null,this.element?.isConnected&&this.update(this.element)}))}update(e){let t=ld(e);t!==this.state&&(this.state=t,this.notify())}dispose(){this.resizeObserver?.disconnect(),this.resizeObserver=null,this.element=null,this.frame!==null&&(cancelAnimationFrame(this.frame),this.frame=null)}}})))()}var Yy;function Xy(){return(Xy=t((()=>{Jg(),Ye(),Ge(),xt(),A(),Ee(),iy(),yy(),id(),Ty(),Fy(),Ky(),Jy(),Yy=class{constructor(e){this.host=e,this.sessionCatalogs=[],this.sessionCatalogRefreshStatus=by(),this.loadingMoreSessionCatalogIds=new Set,this.visibleSessionLimits=new Map,this.sessionsResult=null,this.sessionsAgentId=null,this.sessionsLoading=!1,this.childSessionRowsByParent={},this.loadedChildSessionKeys=new Set,this.childSessionErrorsByParent=new Map,this.loadingChildSessionKeys=new Set,this.activeSessionLineageRoot=null,this.activeSessionLineageSelectedRow=null,this.sessionMutationError=null,this.sessionResultsByAgent={},this.sessionCatalogLive=new vy,this.sessionScopeGeneration=0,this.sessionCatalogAgentId=null,this.sessionCatalogRevision=0,this.sessionCatalogPageDepths=new Map,this.sessionCatalogRevisions=new Map,this.sessionScopeAgentId=null,this.sessionsSource=null,this.filteredSessionScope=null,this.unsubscribeFilteredSessions=null,this.childSessionGeneration=0,this.childSessionCanonicalListRevision=null,this.activeSessionLineageRouteKey=null,this.activeSessionLineageLoaded=!1,this.activeSessionLineageRequest=null,this.activeSessionLineageRetryTimer=null,this.reconnectListRevision=null,this.gatewaySource=null,this.gatewayConnectionRevision=0,this.gatewayClient=null,this.gatewayConnected=!1,this.sessionMutationEpoch=0,this.sessionMutationAbortController=new AbortController,this.scroll=new qy(()=>this.notify()),this.approvalBadgeQueue=[],this.approvalBadges=Kg([]),this.sessionListQuery=e=>By(this.host,e),this.notify=()=>this.requestSessionDataUpdate(),this.handleCatalogSessionContinued=e=>{let t=e.detail,n=typeof t?.agentId==`string`?t.agentId.trim():``,r=n?d(n):null,i=this.sessionCatalogAgentId?d(this.sessionCatalogAgentId):null;!t?.sessionKey||!r||r!==i||(this.sessionCatalogs=rd(this.sessionCatalogs,t),this.notify(),this.sessionCatalogRevision+=1,this.sessionCatalogRevisions.set(t.catalogId,(this.sessionCatalogRevisions.get(t.catalogId)??0)+1))},this.handleSessionCatalogPageActivation=e=>{Oy(this,e.type===`visibilitychange`)},this.updateSessions=e=>{if(this.childSessionCanonicalListRevision!==e.canonicalListRevision){this.childSessionCanonicalListRevision=e.canonicalListRevision;let t=this.activeSessionLineageRouteKey;if(t){let n=this.activeSessionLineageSelectedRow??this.sessionsResult?.sessions.find(e=>P(e.key,t)),r=e.state.result?.sessions.find(e=>P(e.key,t));this.activeSessionLineageSelectedRow=r?Bt(r,n):n??null}this.resetChildSessionState(!0),this.notify()}let t=e.state;if(zy(this.host))return;let n=this.context?.gateway,r=n!==void 0&&n===this.gatewaySource&&n.snapshot.client!==null&&n.snapshot.phase!==`connected`;r&&this.reconnectListRevision===null&&(this.reconnectListRevision=e.canonicalListRevision+1);let i=this.reconnectListRevision!==null&&e.canonicalListRevision<this.reconnectListRevision;!r&&!i&&(this.reconnectListRevision=null,Vy(this,t)),this.sessionsLoading=t.loading,this.notify()},e.addController(this),this.subscriptions=new _n({addController:()=>void 0,removeController:()=>void 0,requestUpdate:()=>e.requestUpdate(),get updateComplete(){return e.updateComplete}}),this.subscriptions.watch(()=>this.context?.gateway,(e,t)=>e.subscribe(t),e=>this.synchronizeGateway(e)).watch(()=>this.context?.sessions,(e,t)=>e.subscribe(t),e=>this.synchronizeSessions(e)).effect(()=>this.context?.sessions,t=>t.subscribeCreated(t=>e.promoteCreatedSession(t))).effect(()=>this.context?.gateway,e=>Wy(e,this)).watch(()=>this.context?.agents,(e,t)=>Ry(e,this,t)).watch(()=>this.context?.agentSelection,(e,t)=>e.subscribe(t),()=>this.synchronizeSessionScope()).watch(()=>this.context?.overlays,(e,t)=>e.subscribe(t))}get context(){return this.host.sessionDataContext}get isSessionDataHostConnected(){return this.host.isConnected}get sessionDataHostConnected(){return this.host.connected}expandedAgentId(){return this.host.expandedAgentId()}requestSessionDataUpdate(){this.host.requestUpdate()}hostConnected(){this.subscriptions.hostConnected(),this.connectSessionCatalogListeners()}hostUpdate(){this.subscriptions.hostUpdate()}hostUpdated(){this.synchronizeSessionScope(),this.scroll.synchronize(this.host),this.updateSessionCatalogData(!0)}hostDisconnected(){this.retireFilteredSessions(),this.disconnectSessionCatalogListeners(),this.host.dismissTransientMenus(),this.invalidateSessionMutations(),this.gatewaySource=null,this.gatewayClient=null,this.gatewayConnected=!1,this.retireSessionCatalogData(),this.scroll.dispose(),this.clearActiveSessionLineageRetry(),this.subscriptions.hostDisconnected()}approvalBadgeSnapshot(){let e=this.context?.overlays?.snapshot.approvalQueue??[];return e!==this.approvalBadgeQueue&&(this.approvalBadgeQueue=e,this.approvalBadges=Kg(e)),this.approvalBadges}sessionCatalogGatewayClient(){return this.gatewayClient}connectSessionCatalogListeners(){document.addEventListener(Je,this.handleCatalogSessionContinued),document.addEventListener(`visibilitychange`,this.handleSessionCatalogPageActivation),globalThis.addEventListener(`focus`,this.handleSessionCatalogPageActivation)}disconnectSessionCatalogListeners(){document.removeEventListener(Je,this.handleCatalogSessionContinued),document.removeEventListener(`visibilitychange`,this.handleSessionCatalogPageActivation),globalThis.removeEventListener(`focus`,this.handleSessionCatalogPageActivation)}retireSessionCatalogData(e=!1){this.sessionScopeGeneration+=1,this.sessionsLoading=!1,this.loadingMoreSessionCatalogIds=new Set,this.sessionCatalogLive.retireConnection(e)}resetSessionCatalogConnection(){this.retireSessionCatalogData(),this.sessionCatalogRevision+=1,this.sessionCatalogLive.resetConnection(),this.sessionCatalogs=[],this.sessionCatalogRefreshStatus=by(),this.sessionCatalogPageDepths.clear(),this.sessionCatalogRevisions.clear(),this.notify()}synchronizeSessionScope(){let e=this.context,t=e?d(this.host.expandedAgentId()):null,n=Dy(this)??(e?.gateway.snapshot.phase===`connected`?null:this.sessionCatalogAgentId);if(t===this.sessionScopeAgentId&&n===this.sessionCatalogAgentId)return;let r=this.sessionScopeAgentId,i=this.sessionCatalogAgentId,a=r!==null&&r!==t,o=i!==null&&i!==n,s=this.sessionsAgentId,c=!zy(this.host)&&t!==null&&s!==null&&d(s)===t&&this.sessionsResult===e?.sessions.state.result;this.sessionScopeAgentId=t,this.sessionCatalogAgentId=n,this.retireSessionCatalogData(),this.sessionCatalogRevision+=1,this.sessionCatalogRefreshStatus=by(),(a||o)&&(this.sessionCatalogs=[],this.sessionCatalogPageDepths.clear(),this.sessionCatalogRevisions.clear()),a&&!c&&this.clearSessionCache(),this.bindFilteredSessions(t??``),this.notify(),a&&e?.gateway.snapshot.phase===`connected`&&zy(this.host)&&this.refreshSidebarSessions()}updateSessionCatalogData(e=!1){ky(this,e)}handleSessionCatalogHostEvent(e){jy(this,e)}handleSessionCatalogPresence(e){Ay(this,e)}refreshSessionCatalogs(){return My(this)}loadMoreSessionCatalog(e){return Ny(this,e)}get sessionsScrollState(){return this.scroll.state}clearActiveSessionLineageRetry(){this.activeSessionLineageRetryTimer&&=(globalThis.clearTimeout(this.activeSessionLineageRetryTimer),null)}updateSessionsScrollState(e){this.scroll.update(e)}resetChildSessionState(e=!1){this.childSessionGeneration+=1,this.childSessionRowsByParent=e?ey(this.activeSessionLineageRouteKey,this.childSessionRowsByParent):{},this.loadedChildSessionKeys=new Set,this.loadingChildSessionKeys=new Set,e||(this.childSessionErrorsByParent=new Map,this.activeSessionLineageRoot=null,this.activeSessionLineageSelectedRow=null,this.activeSessionLineageRouteKey=null),this.activeSessionLineageLoaded=!1,this.activeSessionLineageRequest=null,this.clearActiveSessionLineageRetry()}synchronizeSessions(e){let t=e!==this.sessionsSource;t&&(this.invalidateSessionMutations(),this.retireFilteredSessions(),this.clearSessionCache(),this.sessionsSource=e),this.updateSessions(e),this.context?.gateway.snapshot.phase===`connected`&&(e.groupsLoad(),t&&zy(this.host)&&this.refreshSidebarSessions())}synchronizeGateway(e){let t=e.snapshot.client,n=e.snapshot.phase===`connected`,r=e!==this.gatewaySource||e.connectionRevision!==this.gatewayConnectionRevision,i=t!==this.gatewayClient,a=n&&!this.gatewayConnected,o=r||i,s=n!==this.gatewayConnected;if(!(!o&&!s)){if(this.invalidateSessionMutations(),this.gatewaySource=e,this.gatewayConnectionRevision=e.connectionRevision,this.gatewayClient=t,this.gatewayConnected=n,this.presenceInstanceId=t?.instanceId,!n)this.presencePayload=void 0;else if(i||a){let t=Gn(e.snapshot.hello?.snapshot);this.presencePayload=t?{presence:t}:void 0}if(this.notify(),!o){this.retireSessionCatalogData(!n),n&&this.sessionsSource&&zy(this.host)&&this.refreshSidebarSessions();return}r&&this.clearSessionCache(),this.resetSessionCatalogConnection(),n&&this.sessionsSource&&zy(this.host)&&this.refreshSidebarSessions()}}clearSessionCache(){this.childSessionCanonicalListRevision=null,this.reconnectListRevision=null,this.sessionsResult=null,this.sessionsAgentId=null,this.sessionResultsByAgent={},this.resetChildSessionState(),this.visibleSessionLimits.clear(),this.notify()}retireFilteredSessions(){this.unsubscribeFilteredSessions?.(),this.unsubscribeFilteredSessions=null,this.filteredSessionScope=null}bindFilteredSessions(e){let t=this.context?.sessions;if(!t||!zy(this.host)){this.retireFilteredSessions();return}let n=d(e),r=this.sessionListQuery(n),i=JSON.stringify(r);this.filteredSessionScope!==i&&(this.retireFilteredSessions(),this.filteredSessionScope=i,this.unsubscribeFilteredSessions=Hy(this,t,r,()=>this.filteredSessionScope===i&&this.context?.sessions===t&&this.host.sidebarSessionStatusFilter()===r.archivedFilter&&d(this.host.expandedAgentId())===n))}refreshSidebarSessions(e=this.host.expandedAgentId()){return this.bindFilteredSessions(e),Uy(this,e)}loadMoreSidebarSessions(){return Uy(this,this.sessionsAgentId,!0)}async loadChildSessions(e){if(!e||this.loadedChildSessionKeys.has(e)||this.childSessionErrorsByParent.has(e)||this.loadingChildSessionKeys.has(e))return;let t=this.context?.sessions;if(!t)return;let n=this.childSessionGeneration;this.loadingChildSessionKeys=new Set([...this.loadingChildSessionKeys,e]),this.notify();try{let r=()=>n===this.childSessionGeneration&&t===this.context?.sessions,i=await ao({sessions:t,parentKey:e,isCurrent:r});if(!i||!r())return;for(let t of this.childSessionRowsByParent[e]??[])i.some(e=>e.key===t.key)||i.push(t);this.childSessionRowsByParent={...this.childSessionRowsByParent,[e]:i},this.loadedChildSessionKeys=new Set([...this.loadedChildSessionKeys,e])}catch(r){if(n!==this.childSessionGeneration||t!==this.context?.sessions)return;this.childSessionRowsByParent={...this.childSessionRowsByParent,[e]:this.childSessionRowsByParent[e]??[]},this.childSessionErrorsByParent=new Map(this.childSessionErrorsByParent).set(e,M(r)),this.notify()}finally{if(n===this.childSessionGeneration&&t===this.context?.sessions){let t=new Set(this.loadingChildSessionKeys);t.delete(e),this.loadingChildSessionKeys=t,this.notify()}}}async loadActiveSessionLineage(e){let t=e.trim();(!this.activeSessionLineageRouteKey||!P(t,this.activeSessionLineageRouteKey))&&(ny(this,this.activeSessionLineageRouteKey),this.activeSessionLineageRouteKey=t,this.activeSessionLineageLoaded=!1,this.activeSessionLineageRequest=null,this.activeSessionLineageRoot=null,this.activeSessionLineageSelectedRow=null,this.clearActiveSessionLineageRetry(),this.notify());let{gateway:n,sessions:r}=this.context??{},i=n?.snapshot.client;if(!t||this.activeSessionLineageLoaded||this.activeSessionLineageRequest!==null||this.activeSessionLineageRetryTimer!==null||n?.snapshot.phase!==`connected`||!r||typeof i?.request!=`function`)return;let a=this.childSessionGeneration,o={sourceRevision:r.canonicalListRevision};this.activeSessionLineageRequest=o;let s=()=>a===this.childSessionGeneration&&o===this.activeSessionLineageRequest&&n===this.context?.gateway&&i===n.snapshot.client,c=await Qv({client:i,sessionKey:t,knownRows:Zv(this.sessionsResult?.sessions??[],this.childSessionRowsByParent),isCurrent:s});if(!(!c||!s())){if(ty(this,t,c,o.sourceRevision),this.notify(),this.activeSessionLineageRequest=null,c.lookupFailed){this.activeSessionLineageRetryTimer=globalThis.setTimeout(()=>{this.activeSessionLineageRetryTimer=null,this.activeSessionLineageRouteKey===t&&this.notify()},5e3);return}this.activeSessionLineageLoaded=!0}}setVisibleSessionLimit(e,t){this.visibleSessionLimits.set(e,t),this.notify()}dismissSessionMutationError(){Iy(this,null,`action`),this.notify()}resetSessionList(){this.retireFilteredSessions(),this.sessionsLoading=!1,this.visibleSessionLimits.clear(),this.resetChildSessionState(),this.sessionResultsByAgent={},!zy(this.host)&&this.context?(this.sessionsResult=this.context.sessions.state.result,this.sessionsAgentId=this.context.sessions.state.agentId):this.context&&this.bindFilteredSessions(this.host.expandedAgentId()),this.notify()}discardEmptyChildSessionSnapshot(e){if(this.childSessionRowsByParent[e]?.length===0){let t={...this.childSessionRowsByParent};delete t[e],this.childSessionRowsByParent=t;let n=new Set(this.loadedChildSessionKeys);n.delete(e),this.loadedChildSessionKeys=n,this.notify()}}retryChildSessions(e){if(this.childSessionErrorsByParent.has(e)){let t=new Map(this.childSessionErrorsByParent);t.delete(e),this.childSessionErrorsByParent=t,this.notify()}this.loadChildSessions(e)}invalidateSessionMutations(){this.sessionMutationEpoch+=1,Iy(this,null,`action`),this.sessionMutationAbortController.abort(),this.sessionMutationAbortController=new AbortController,this.notify()}beginSessionMutation(){let e=this.context;if(!e||!this.host.connected)return null;let t=e.gateway,n=t.snapshot.client;return t.snapshot.phase!==`connected`||!n?null:(Iy(this,null,`action`),this.notify(),{epoch:this.sessionMutationEpoch,context:e,gateway:t,sessions:e.sessions,client:n,selectedAgentId:this.host.selectedAgentIdForSessions(),signal:this.sessionMutationAbortController.signal})}isSessionMutationScopeCurrent(e){let t=this.context,n=t?.gateway;return this.host.connected&&this.sessionMutationEpoch===e.epoch&&t===e.context&&n===e.gateway&&t.sessions===e.sessions&&n.snapshot.phase===`connected`&&n.snapshot.client===e.client}publishSessionMutationError(e,t){this.isSessionMutationScopeCurrent(e)&&(Iy(this,M(t),`action`),this.notify())}}})))()}var Zy;function Qy(){return(Qy=t((()=>{q(),Zy=class{constructor(e,t){this.host=e,this.getContext=t,this.ownerId=null,this.involvingMe=!1,this.scope=null,this.ownerFacetResolved=!1,this.ownerOptions=[],this.pendingFacetRefresh=null,e.addController(this)}hostUpdated(){this.restore(),!this.pendingFacetRefresh&&this.ownerFacetResolved&&this.ownerId&&!this.ownerOptions.some(e=>e.id===this.ownerId)&&this.set(null)}observeOwnerFacet(e,t){this.pendingFacetRefresh||(this.ownerFacetResolved=e,this.ownerOptions=t)}set(e,t=!1){this.pendingFacetRefresh=null,this.ownerId=t?null:e?.trim()||null,this.involvingMe=t;let n=this.getContext(),r=n?.gateway.snapshot.selfUser?.id.trim();n&&r&&jd(n.gateway.connection.gatewayUrl,r,this.currentFilter()),this.host.requestUpdate(),this.refresh()}restore(){let e=this.getContext(),t=e?.gateway.snapshot.selfUser?.id.trim();if(!e||!t)return;let n=e.gateway.connection.gatewayUrl,r=`${n}\0${t}`;if(r===this.scope)return;let i=this.scope;if(this.scope=r,i===null&&(this.ownerId||this.involvingMe))jd(n,t,this.currentFilter());else{let e=bd(n,t);this.ownerId=e.ownerId,this.involvingMe=e.involvingMe}if(this.host.requestUpdate(),i!==null||this.ownerId||this.involvingMe){this.ownerFacetResolved=!1,this.ownerOptions=[];let e=this.refresh();this.pendingFacetRefresh=e,e.finally(()=>{this.pendingFacetRefresh===e&&(this.pendingFacetRefresh=null,this.host.requestUpdate())})}}refresh(){return this.host.sessionData.resetSessionList(),this.host.sessionData.refreshSidebarSessions()}currentFilter(){return{ownerId:this.ownerId,involvingMe:this.involvingMe}}}})))()}var $y;function eb(){return(eb=t((()=>{F(),ur(),sr(),W(),Ue(),Co(),Te(),A(),b_(),S_(),id(),Z_(),q_(),$_(),iv(),ov(),q(),Xv(),Xy(),Qy(),$y=class extends Y{constructor(...e){super(...e),this.sessionSortMode=xd(),this.sessionProjection=new rv,this.sessionData=new Yy(this),this.sessionPullRequests=new Q_(this,{getConnected:()=>this.connected,getRows:()=>X_({rows:this.visibleSessionRowsInOrder(),adopted:ed(this.visibleSessionCatalogs()),sessionsResult:this.sessionData.sessionsResult,sessionResultsByAgent:this.sessionData.sessionResultsByAgent,navigationState:this.getSessionNavigationState()}),getSelectedAgentId:()=>this.selectedAgentIdForSessions(),getGateway:()=>this.context?.gateway,getSessions:()=>this.context?.sessions}),this.compareSidebarSessionRows=(e,t)=>E_({a:e,b:t,sortMode:this.effectiveSessionSortMode(),owners:this.selectedAgentSessionResult()?.owners,createdOrder:this.sessionProjection.createdOrder}),this.sessionOwnerFilter=new Zy(this,()=>this.context),this.sessionOwnerOptions=[],this.activeSessionOwnerId=null,this.sessionOwnershipVisible=!1,this.selectedSessionKeys=new Set,this.sessionsGrouping=fd(),this.sessionsShowCron=md(),this.sessionsShowPreview=hd(),this.sessionsShowSystem=gd(),this.sessionsHideEmptyGroups=_d(),this.sessionsStatusFilter=vd(),this.hiddenSessionCatalogIds=Cd(),this.visibleSessionCatalogs=()=>td(this.sessionData.sessionCatalogs,this.hiddenSessionCatalogIds,this.sessionsStatusFilter===`archived`),this.sessionSelectionAnchor=null,this.runtimeSampledAtByRow=new WeakMap,this.attention=new Yv(this),this.setSessionOwnerFilter=(e,t=!1)=>this.sessionOwnerFilter.set(e,t),this.selectSession=e=>{let t=this.getSessionNavigationState(),n=this.sessionData.sessionResultsByAgent,r=G_({sessionKey:e,navigationState:t,sessionResultsByAgent:n}),i=Le(r),a=dt({face:i,sessionKey:e,fallbackAgentId:t.selectedAgentId,basePath:this.basePath,row:r,mainKey:this.sessionMainKey(),preferenceDerivedFace:!0,navigationKey:e});Wo(this,{commit:()=>(this.prepareSessionNavigation(e,a.options.pathname),this.onNavigate?.(i,a.options),this.bindLiteralSession(e,t.selectedAgentId,a.options),!0),face:i,sessionKey:e})},this.expandAgent=e=>{let t=this.context;if(!t)return;let n=d(e);if(n===d(this.expandedAgentId())){t.agentSelection.setScope(n);return}this.clearSessionSelection(),this.sessionProjection.resetMembership(),this.sessionData.visibleSessionLimits.clear(),t.agentSelection.set(n)},this.knownSectionOrder=()=>[...this.context?.sessions.state.sectionOrder??[]],this.openMainSession=e=>{if(!this.connected){this.onNavigate?.(`appearance`);return}this.clearSessionSelection(),this.selectSession(this.selectedAgentMainSessionKey(d(e)))}}sessionPeopleSortCapability(){let e=this.selectedAgentSessionResult()?.owners;return e?e.length>=2:void 0}sessionPeopleSortAvailable(){return this.sessionPeopleSortCapability()===!0}effectiveSessionSortMode(){return Md(this.sessionSortMode,this.sessionPeopleSortAvailable())}effectiveSessionsGrouping(){let e=this.sessionsGrouping;return e===`person`&&!this.sessionPeopleSortAvailable()?`category`:e}setSessionSortMode(e){this.sessionSortMode=Nd(e,this.sessionPeopleSortCapability())}sidebarSessionOwnerFilter(){return this.sessionOwnerFilter}get sessionOwnerFilterId(){return this.sessionOwnerFilter.ownerId}get sessionInvolvingMeFilterActive(){return this.sessionOwnerFilter.involvingMe}get sessionOwnerFilterActive(){return this.sessionOwnerFilter.ownerId!==null}get sessionAttentionContext(){return this.context}get sessionDataContext(){return this.context}get collapsedSessionSections(){return this.sessionOrganizer.collapsedSessionSections}dismissTransientMenus(){return this.sidebarMenus.dismissTransientMenus()}closeAgentMenu(e){this.sidebarMenus.closeAgentMenu(e)}promoteCreatedSession(e){this.sessionProjection.promoteCreatedSession(e)&&this.requestUpdate()}updated(e){super.updated(e),this.sessionSortMode===`people`&&this.sessionPeopleSortCapability()===!1&&this.setSessionSortMode(`created`);let t=cr(this.activeRouteId)?this.getRouteSessionKey():``;cr(this.activeRouteId)&&this.sessionData.loadActiveSessionLineage(t);let n=[...this.visibleSessionRowsInOrder()];for(;n.length>0;){let e=n.shift();e&&(n.push(...e.children),e.childSessionKeys.length>0&&(e.visuallyActive||this.isSessionChildrenExpanded(e))&&!this.sessionData.loadedChildSessionKeys.has(e.key)&&!this.sessionData.childSessionErrorsByParent.has(e.key)&&!this.sessionData.loadingChildSessionKeys.has(e.key)&&this.sessionData.loadChildSessions(e.key))}let r=this.mainSessionRow();r&&(r.childSessions?.length??0)>0&&!this.sessionData.loadedChildSessionKeys.has(r.key)&&!this.sessionData.childSessionErrorsByParent.has(r.key)&&!this.sessionData.loadingChildSessionKeys.has(r.key)&&this.sessionData.loadChildSessions(r.key)}applySessionOwnerFilter(e,t){let n=K_({projected:e,ownerFacet:t,selectedOwnerId:this.sessionOwnerFilterId,self:this.context?.gateway.snapshot.selfUser});return this.sessionOwnerFilter.observeOwnerFacet(t!==void 0,n.ownerOptions),this.sessionOwnerOptions=n.ownerOptions,this.sessionOwnershipVisible=n.ownershipVisible,this.activeSessionOwnerId=n.activeOwnerId,n.rows}getRouteSessionKey(){return this.sessionKey.trim()||this.context?.gateway.snapshot.sessionKey.trim()||``}getSessionNavigationState(){let e=this.getRouteSessionKey();return k_({context:this.context,routeSessionKey:e,sessionsResult:this.sessionData.sessionsResult,activeSession:J_(this.sessionData,e),sessionsAgentId:this.sessionData.sessionsAgentId,showCron:this.sessionsShowCron,showSystem:this.sessionsShowSystem,statusFilter:this.sessionsStatusFilter,compareSessions:this.compareSidebarSessionRows,highlightCurrentSession:cr(this.activeRouteId),runtimeSampledAtByRow:this.runtimeSampledAtByRow,loadingChildSessionKeys:this.sessionData.loadingChildSessionKeys,outboxAttentionCountForSessionKey:this.outboxAttentionCountForSession,hasSessionDraft:e=>this.hasSessionDraft(e),resolveAttention:e=>this.attention.resolveSessionAttention(e),resolveAgentStatusNote:e=>this.attention.resolveSessionAgentStatus(e)?.note})}selectedAgentIdForSessions(){return this.getSessionNavigationState().selectedAgentId}sidebarSessionHref(e){return dt({face:Le(e),sessionKey:e.key,fallbackAgentId:this.selectedAgentIdForSessions(),basePath:this.context?.basePath??``,row:e,mainKey:this.context?this.sessionMainKey():void 0,preferenceDerivedFace:!0}).href}sidebarSessionStatusFilter(){return this.sessionsStatusFilter}zonedVisibleSections(e){let t=this.effectiveSessionsGrouping();return this.sessionProjection.project({rows:e,grouping:t,knownGroups:t===`category`?this.knownSessionGroups():[],selfOwnerId:this.context?.gateway.snapshot.selfUser?.id??null,sectionOrder:this.knownSectionOrder(),catalogIds:this.sessionsStatusFilter===`archived`?[]:this.visibleSessionCatalogs().map(e=>e.id),collapsedSections:this.collapsedSessionSections,hideEmptyGroups:this.sessionsHideEmptyGroups||this.sessionOwnerFilterActive,visibleSessionLimits:this.sessionData.visibleSessionLimits,sortMode:this.effectiveSessionSortMode(),statusFilter:this.sessionsStatusFilter,agentId:this.expandedAgentId(),connectionIdentity:this.context?.gateway.snapshot.phase===`connected`?this.context.gateway.snapshot.client??null:null,listSource:this.context?.sessions??null,subtitle:{sidebarLiveActivity:this.sidebarLiveActivity,showPreview:this.sessionsShowPreview,narrationLines:this.sidebarNarrationLines,observerDigests:this.sidebarObserverDigests}})}reconciledSidebarZone(e=this.selectedAgentSessionRows(this.getSessionNavigationState())){return A_({sidebarEntries:this.sidebarEntries,rows:e,pluginNavigationKeys:new Set(this.pluginNavigation().map(e=>e.key))})}pruneSidebarSessionEntry(e){let t=ir({type:`session`,key:e});this.sidebarEntries.includes(t)&&this.onUpdateSidebarEntries?.(this.sidebarEntries.filter(e=>e!==t))}visibleSessionRowsInOrder(){let e=this.getSessionNavigationState(),t=this.selectedAgentSessionRows(e),{visibleRows:n}=this.zonedVisibleSections(t),{entries:r,sessionRows:i}=this.reconciledSidebarZone(t);return[...r.flatMap(e=>{let t=e.type===`session`?i.get(e.key):void 0;return t?[t]:[]}),...n]}selectedVisibleSessions(){return this.selectedSessionKeys.size===0?[]:this.visibleSessionRowsInOrder().filter(e=>this.selectedSessionKeys.has(e.key))}handleSessionRowClick(e,t){if(t.isChild&&Ve(e)){e.preventDefault(),this.clearSessionSelection(),this.selectSession(t.key);return}if(!(t.isChild||e.defaultPrevented||e.button!==0)&&!(e.metaKey||e.ctrlKey)){if(e.shiftKey){e.preventDefault(),this.extendSessionSelection(t.key);return}if(e.altKey){e.preventDefault(),this.toggleSessionSelected(t.key);return}e.preventDefault(),this.clearSessionSelection(),this.selectSession(t.key)}}toggleSessionSelected(e){let t=j_(this.selectedSessionKeys,e);this.sessionSelectionAnchor=t.anchor,this.selectedSessionKeys=t.selectedKeys}extendSessionSelection(e){let t=M_({rows:this.visibleSessionRowsInOrder(),anchor:this.sessionSelectionAnchor,key:e});this.sessionSelectionAnchor=t.anchor,this.selectedSessionKeys=t.selectedKeys}clearSessionSelection(){this.sessionSelectionAnchor=null,this.selectedSessionKeys.size>0&&(this.selectedSessionKeys=new Set)}expandedAgentId(){let e=O(this.context?.agentSelection.state.selectedId);return d(e||this.getSessionNavigationState().selectedAgentId)}activeChipAgent(){return P_({activeId:this.expandedAgentId(),roster:this.context?.agents.state.agentsList?.agents??[],identities:this.context?.agentIdentity.entries()??[]})}latestAgentSessionRow(e){return F_({agentId:e,sessionData:this.sessionData,context:this.context})}agentResumeKey(e){return z_(this.latestAgentSessionRow(e),e,this.sessionMainKey())}openAgentConversation(e){if(!this.connected){this.onNavigate?.(`appearance`);return}this.selectSession(this.agentResumeKey(e))}switchChipAgent(e){this.closeAgentMenu(),this.expandAgent(e),this.openAgentConversation(e)}askAgentCapabilities(e){if(this.closeAgentMenu(),!this.connected)return;let t=this.agentResumeKey(e),n=dt({face:`chat`,sessionKey:t,fallbackAgentId:e,basePath:this.basePath,row:this.findSidebarSessionByKey(t),mainKey:this.sessionMainKey()});this.setApplicationSession(t,this.selectedAgentIdForSessions()),this.onNavigate?.(`chat`,{...n.options,search:et(G(`chat.welcome.suggestions.whatCanYouDo`))})}knownSessionGroups(){return U_(this.context?.sessions.state.groups??[],this.sessionData.sessionsResult?.sessions??[])}knownSessionCatalogIds(){return B_({loadedCatalogIds:this.sessionData.sessionCatalogs.map(e=>e.id),hasLoaded:this.sessionData.sessionCatalogRefreshStatus.hasLoaded,sectionOrder:this.knownSectionOrder()})}findSidebarSessionByKey(e){return G_({sessionKey:e,navigationState:this.getSessionNavigationState(),sessionResultsByAgent:this.sessionData.sessionResultsByAgent})}findSidebarHovercardRowByKey(e){return Y_(this,e)}selectedAgentSessionRows(e){let t=ed(this.visibleSessionCatalogs()),n=this.expandedAgentId(),r=d(this.sessionData.sessionsAgentId??``),i=d(e.selectedAgentId),a={agentId:n,defaultAgentId:ot({agentsList:this.context?.agents.state.agentsList,hello:this.context?.gateway.snapshot.hello}),filterByAgent:!0,showCron:this.sessionsShowCron,showSystem:this.sessionsShowSystem,archivedFilter:this.sessionsStatusFilter},{childSessionRowsByParent:o,isSessionHidden:s,rows:c}=x_({sessionData:this.sessionData,selectedAgentId:n,statusFilter:this.sessionsStatusFilter,deletionState:(e,t)=>this.context?.sessions.deletionState(e,t),archiveVisibility:e=>this.context?.sessions.archiveVisibility(e)}),l=new Map(c.map(e=>[e.key,e])),u=n===i&&n===r?e.visibleSessionRows.flatMap(e=>{let t=l.get(e.key);return t?[t]:[]}):At(c,a).toSorted(this.compareSidebarSessionRows),f=this.selectedAgentMainSessionKey(n),p=this.sessionData.activeSessionLineageRoot,m=d(N(p?.key??``)?.agentId??``),h=e.visibleSessionRows.find(r=>(n===i||m===n)&&r.key===e.activeRowKey&&!s(r.key)&&!t.has(r.key)&&!P(r.key,f)),g=new Set([f]),_=u.filter(e=>!P(e.key,f)||(g.add(e.key),!1)),v=d(N(e.routeSessionKey)?.agentId??``);p&&!s(p.key)&&(P(p.key,e.routeSessionKey)||rt(p,this.sessionsStatusFilter))&&(m===n||v===n)&&!t.has(p.key)&&!P(p.key,f)&&!_.some(e=>e.key===p.key)&&_.push(p);let y=I_({rows:c,childRowsByParent:o}),b=R_({rows:y,scopedRoots:_,visibilityOptions:a});_.push(...b);let x=new Set(_.map(e=>e.key)),S=L_({rows:y,mainSessionKeys:g,scopedRootKeys:x,showCron:this.sessionsShowCron,showSystem:this.sessionsShowSystem});for(let e of S)x.has(e.key)||(x.add(e.key),_.push(e));let C=av({roots:(S.length>0||b.length>0?_.toSorted(this.compareSidebarSessionRows):_).filter(e=>!t.has(e.key)),agentRows:c,childRowsByParent:o,loadingChildKeys:this.sessionData.loadingChildSessionKeys,knownSessionAttention:this.attention.knownSessionAttention(),toSidebarSession:e.toSidebarSession});return h&&!W_(C,e=>e.key===h.key)&&C.unshift(e.toSidebarSession(h)),this.applySessionOwnerFilter(C,this.selectedAgentSessionResult()?.owners)}selectedAgentSessionResult(){let e=this.expandedAgentId();return e===d(this.sessionData.sessionsAgentId??``)?this.sessionData.sessionsResult:this.sessionData.sessionResultsByAgent[e]??null}selectedAgentMainSessionKey(e){return V_({agentId:e??this.expandedAgentId(),agentsList:this.context?.agents.state.agentsList,hello:this.context?.gateway.snapshot.hello})}resolveHomeSessionAttention(e,t){return T_(this.attention,e,t)}mainSessionRow(e){let t=d(e??this.expandedAgentId()),n=this.selectedAgentMainSessionKey(t);return H_(t===d(this.sessionData.sessionsAgentId??``)?this.sessionData.sessionsResult?.sessions??[]:this.sessionData.sessionResultsByAgent[t]?.sessions??[],n)}isSessionChildrenExpanded(e){return this.sessionProjection.isChildrenExpanded(e.key)}isSessionChildrenFullyShown(e){return this.sessionProjection.isChildrenFullyShown(e)}toggleSessionChildren(e){this.sessionProjection.toggleChildren(e).expanded?this.sessionData.retryChildSessions(e.key):this.sessionData.discardEmptyChildSessionSnapshot(e.key),this.requestUpdate()}showMoreChildren(e){this.sessionProjection.showMoreChildren(e),this.requestUpdate()}agentUnreadCount(e){return(this.sessionData.sessionResultsByAgent[d(e)]?.sessions??[]).filter(e=>e.unread===!0&&e.archived!==!0).length}},k([z()],$y.prototype,`sessionSortMode`,void 0),k([z()],$y.prototype,`selectedSessionKeys`,void 0),k([z()],$y.prototype,`sessionsGrouping`,void 0),k([z()],$y.prototype,`sessionsShowCron`,void 0),k([z()],$y.prototype,`sessionsShowPreview`,void 0),k([z()],$y.prototype,`sessionsShowSystem`,void 0),k([z()],$y.prototype,`sessionsHideEmptyGroups`,void 0),k([z()],$y.prototype,`sessionsStatusFilter`,void 0),k([z()],$y.prototype,`hiddenSessionCatalogIds`,void 0)})))()}function tb(e){let t=[],n=new Set(nb);for(let r of(e??``).split(/\s+/)){let e=ie(r);!e||n.has(e)||(n.add(e),t.push(e))}return[...nb,...t].join(` `)}var nb,rb;function ib(){return(ib=t((()=>{nb=[`noopener`,`noreferrer`],rb=`_blank`})))()}function ab(e){return R`
<div class="community-invite-card">
<aside class="invite" role="complementary" aria-label=${G(`communityInvite.cardLabel`)}>
<div class="invite__header">
<img
class="invite__art"
src=${nr(`community-art/discord-invite.webp`)}
alt=${G(`communityInvite.artAlt`)}
width="1024"
height="538"
loading="lazy"
/>
<button
class="invite__close"
type="button"
aria-label=${G(`communityInvite.dismissForever`)}
@click=${e}
>
${U.x}
</button>
</div>
<div class="invite__body">
<h2 class="invite__title">${G(`communityInvite.title`)}</h2>
<p class="invite__text">
${G(`communityInvite.body`)} ${G(`communityInvite.bodyGreeting`)}
</p>
<a
class="invite__cta"
href=${Ba}
target=${rb}
rel=${tb()}
>
${ob}
<span>${G(`communityInvite.action`)}</span>
</a>
</div>
</aside>
</div>
`}var ob;function sb(){return(sb=t((()=>{I(),Kn(),W(),ib(),lo(),H(),ob=R`
<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
<path
d="M20.32 4.37a19.8 19.8 0 0 0-4.93-1.51 13.78 13.78 0 0 0-.64 1.29 18.27 18.27 0 0 0-5.5 0 12.64 12.64 0 0 0-.64-1.29 19.74 19.74 0 0 0-4.93 1.51C.53 9.05-.32 13.6.1 18.06a19.9 19.9 0 0 0 6.07 3.03c.46-.63.87-1.3 1.24-2a12.86 12.86 0 0 1-1.96-.93c.16-.12.32-.24.48-.37a14.2 14.2 0 0 0 12.14 0c.16.13.32.25.48.37-.63.37-1.28.68-1.96.93.36.7.78 1.37 1.24 2a19.84 19.84 0 0 0 6.07-3.03c.5-5.18-.84-9.68-3.58-13.69ZM8.02 15.33c-1.18 0-2.16-1.08-2.16-2.42 0-1.33.95-2.42 2.16-2.42 1.21 0 2.18 1.09 2.16 2.42 0 1.34-.95 2.42-2.16 2.42Zm7.97 0c-1.18 0-2.15-1.08-2.15-2.42 0-1.33.95-2.42 2.15-2.42 1.22 0 2.18 1.09 2.16 2.42 0 1.34-.94 2.42-2.16 2.42Z"
/>
</svg>
`})))()}function cb(){if(db)return!1;try{return j()?.getItem(ub)===null}catch{return!1}}function lb(){db=!0;try{let e=j();return e?(e.setItem(ub,JSON.stringify({dismissedAtMs:Date.now()})),db=!1,ve(void 0)):m(`storage-unavailable`)}catch{return m(`storage-unavailable`)}}var ub,db;function fb(){return(fb=t((()=>{ub=`openclaw:control-ui:community-invite`,db=!1})))()}function pb(e){return(No(e)^gb)>>>0}function mb(e){let t=null;for(let n of e??[]){if(!n.status||n.status===`running`)continue;let e=n.endedAt??n.lastActivityAt??n.updatedAt??0;(!t||e>t.at)&&(t={at:e,outcome:n.status===`failed`||n.status===`timeout`?`error`:n.status===`killed`?`aborted`:`ok`})}return t?.outcome??`ok`}function hb(e,t){return e?t?.some(he)?`busy`:`idle`:`offline`}var gb;function _b(){return(_b=t((()=>{gb=Math.trunc(Math.random()*4294967295)})))()}var vb;function yb(){return(yb=t((()=>{ur(),W(),Xo(),po(),q(),se(),vb=class{constructor(e){this.host=e,this.collapsedSessionSections=Sd(),this.draggingSessionKey=null,this.draggingSidebarSection=null,this.sessionDropTarget=null,this.sidebarSectionDropTarget=null,this.draggingSidebarEntry=null,this.sidebarZoneDropTarget=null,this.sessionListRemovalDrop=!1,this.operationsLoad=null,this.patchSession=async(e,t,n=this.host.sessionData.beginSessionMutation())=>{if(!n)return`stale`;let r=await this.loadOperations(n);return r?r.patchSession(this.host,e,t,n):this.host.sessionData.isSessionMutationScopeCurrent(n)?`failed`:`stale`}}async loadOperations(e){let t=this.operationsLoad??=D(()=>import(`./session-organizer-operations.runtime-ESc5IOoL.js`),__vite__mapDeps([29,1,3,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,30,31]),import.meta.url);try{return await t}catch(n){return this.operationsLoad===t&&(this.operationsLoad=null),this.host.sessionData.isSessionMutationScopeCurrent(e)&&this.host.sessionData.publishSessionMutationError(e,n),null}}async patchSessions(e,t,n=this.host.sessionData.beginSessionMutation()){if(!n)return`stale`;let r=await this.loadOperations(n);return r?r.patchSessions(this.host,e,t,n):this.host.sessionData.isSessionMutationScopeCurrent(n)?`failed`:`stale`}async archiveSessionWithUndo(e){let t=this.host.sessionData.beginSessionMutation();t&&await(await this.loadOperations(t))?.archiveSessionWithUndo(this.host,e,t)}async deleteSessionsBatch(e){let t=this.host.sessionData.beginSessionMutation();t&&await(await this.loadOperations(t))?.deleteSessionsBatch(this.host,e,t)}async runBatchSessionAction(e,t,n){if(e.kind===`new-group`){await this.createSessionGroup(t);return}let r=this.host.sessionData.beginSessionMutation();r&&await(await this.loadOperations(r))?.runBatchSessionAction(this.host,e,t,n,r)}async forkSession(e){let t=this.host.sessionData.beginSessionMutation();t&&await(await this.loadOperations(t))?.forkSession(this.host,e,t)}async stopCloudWorker(e){let t=this.host.sessionData.beginSessionMutation();t&&await(await this.loadOperations(t))?.stopCloudWorker(this.host,e,t)}async assignSessionOwner(e,t){let n=this.host.sessionData.beginSessionMutation();n&&await(await this.loadOperations(n))?.assignSessionOwner(this.host,e,t,n)}async deleteSession(e){let t=this.host.sessionData.beginSessionMutation();t&&await(await this.loadOperations(t))?.deleteSession(this.host,e,t,{offerSkip:!0})}startSidebarRouteDrag(e,t){e.dataTransfer&&(So(e.dataTransfer,t),this.draggingSidebarEntry=ir({type:`route`,route:t}),this.host.requestUpdate())}startSidebarPluginDrag(e,t){if(!e.dataTransfer)return;let n=ir({type:`plugin`,key:t});So(e.dataTransfer,n),this.draggingSidebarEntry=n,this.host.requestUpdate()}finishSidebarEntryDrag(){this.draggingSidebarEntry=null,this.host.requestUpdate(),this.draggingSessionKey=null,this.host.requestUpdate(),this.sidebarZoneDropTarget=null,this.host.requestUpdate(),this.sessionListRemovalDrop=!1,this.host.requestUpdate()}startSessionDrag(e){this.draggingSessionKey=e.key,this.host.requestUpdate(),this.draggingSidebarEntry=e.pinned?`session:${e.key}`:null,this.host.requestUpdate()}finishSessionDrag(){this.finishSidebarEntryDrag(),this.sessionDropTarget=null,this.host.requestUpdate()}startSidebarSectionDrag(e){this.draggingSidebarSection=e,this.host.requestUpdate()}finishSidebarSectionDrag(){this.draggingSidebarSection=null,this.host.requestUpdate(),this.sidebarSectionDropTarget=null,this.host.requestUpdate()}draggedSidebarEntry(e){let t=_o(e),n=Hn(t?`route:${t}`:null);if(n?.type===`route`)return ir(n);let r=Hn(t);if(r?.type===`plugin`)return ir(r);let i=jo(e);return i?ir({type:`session`,key:i}):null}handleSidebarZoneDragOver(e,t){if(!bo(e.dataTransfer)&&!$o(e.dataTransfer))return;if(e.preventDefault(),e.stopPropagation(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),!t){this.sidebarZoneDropTarget=null,this.host.requestUpdate();return}let n=e.currentTarget.getBoundingClientRect();this.sidebarZoneDropTarget={entry:t,position:e.clientY<n.top+n.height/2?`before`:`after`},this.host.requestUpdate()}handleSidebarZoneDragLeave(e){let t=e.currentTarget;e.relatedTarget instanceof Node&&t.contains(e.relatedTarget)||(this.sidebarZoneDropTarget=null,this.host.requestUpdate())}writeSidebarEntryAt(e,t,n){let r=this.host.reconciledSidebarZone().sidebarEntries.filter(t=>t!==e),i=t?r.indexOf(t):-1,a=+(n===`after`);r.splice(i<0?r.length:i+a,0,e),this.host.onUpdateSidebarEntries?.(r)}handleSidebarZoneDrop(e,t){let n=this.draggedSidebarEntry(e.dataTransfer);if(!n)return;if(e.preventDefault(),e.stopPropagation(),t===n){this.finishSidebarEntryDrag();return}let r=this.sidebarZoneDropTarget?.position,i=jo(e.dataTransfer),a=i?this.host.findSidebarSessionByKey(i):void 0;a&&!a.pinned?this.patchSession(a,{pinned:!0}).then(e=>{e===`completed`&&this.writeSidebarEntryAt(n,t,r)}):this.writeSidebarEntryAt(n,t,r),this.finishSidebarEntryDrag()}removeSidebarEntry(e){let t=this.host.reconciledSidebarZone().sidebarEntries.filter(t=>t!==e);this.host.onUpdateSidebarEntries?.(t)}handleSessionListDragOver(e){let t=bo(e.dataTransfer),n=jo(e.dataTransfer),r=n?this.host.findSidebarSessionByKey(n):void 0;!t&&!r?.pinned||(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),this.sessionListRemovalDrop=!0,this.host.requestUpdate())}handleSessionListDragLeave(e){let t=e.currentTarget;e.relatedTarget instanceof Node&&t.contains(e.relatedTarget)||(this.sessionListRemovalDrop=!1,this.host.requestUpdate())}handleSessionListDrop(e){let t=_o(e.dataTransfer),n=Hn(t?`route:${t}`:null),r=Hn(t),i=n?.type===`route`?n:r?.type===`plugin`?r:null;if(i){e.preventDefault(),this.removeSidebarEntry(ir(i)),this.finishSidebarEntryDrag();return}let a=jo(e.dataTransfer),o=a?this.host.findSidebarSessionByKey(a):void 0;o?.pinned&&(e.preventDefault(),this.patchSession(o,{pinned:!1})),this.finishSidebarEntryDrag()}async loadInputDialog(){try{return(await D(async()=>{let{showInputDialog:e}=await import(`./input-dialog-C6w2KAqY.js`);return{showInputDialog:e}},__vite__mapDeps([32,1,2,3,4,5,6,7,8]),import.meta.url)).showInputDialog}catch(e){let t=this.host.sessionData.beginSessionMutation();return t&&this.host.sessionData.publishSessionMutationError(t,e),null}}async renameSession(e){let t=await(await this.loadInputDialog())?.({title:G(`sessionsView.renameSessionPrompt`),defaultValue:O(e.userLabel)??``})??null;if(t===null)return;let n=this.host.sessionData.beginSessionMutation();n&&await(await this.loadOperations(n))?.renameSession(this.host,e,t,n)}async createSessionGroup(e=[]){await(await this.loadInputDialog())?.({title:G(`sessionsView.newGroupTitle`),label:G(`sessionsView.newGroupPrompt`),submitLabel:G(`sessionsView.newGroupCreate`),requireValue:!0,submit:t=>this.writeSessionGroup(t,e)})}async writeSessionGroup(e,t){let n=this.host.sessionData.beginSessionMutation();if(!n)return G(`sessionsView.newGroupFailed`);let r=await this.loadOperations(n);if(!r)return this.host.sessionData.isSessionMutationScopeCurrent(n)?this.sessionGroupFailure():G(`sessionsView.newGroupStale`);let i=await r.createSessionGroup(this.host,e,t,n);return i===`failed`?this.sessionGroupFailure():i===`stale`?G(`sessionsView.newGroupStale`):null}sessionGroupFailure(){return this.host.sessionData.sessionMutationError??G(`sessionsView.newGroupFailed`)}async renameSessionGroupFromMenu(e){let t=await(await this.loadInputDialog())?.({title:G(`sessionsView.renameGroupTitle`,{group:e}),label:G(`sessionsView.groupNameLabel`),defaultValue:e,requireValue:!0,requireChange:!0});if(!t)return;let n=this.host.sessionData.beginSessionMutation();if(!n)return;let r=await this.loadOperations(n);if(!r||!await r.renameSessionGroup(this.host,e,t,n))return;let i=`category:${e}`;if(this.collapsedSessionSections.has(i)){let e=new Set(this.collapsedSessionSections);e.delete(i),e.add(`category:${t}`),this.saveCollapsedSessionSections(e)}this.host.requestUpdate()}async deleteSessionGroupFromMenu(e){let t=this.host.sessionData.beginSessionMutation();if(!t)return;let n=await this.loadOperations(t);if(!n||!await n.deleteSessionGroup(this.host,e,t))return;let r=new Set(this.collapsedSessionSections);r.delete(`category:${e}`),this.saveCollapsedSessionSections(r),this.host.requestUpdate()}async editSessionGroupDefaults(e){let t;try{t=(await D(async()=>{let{showSessionGroupDefaultsDialog:e}=await import(`./session-group-defaults-dialog-XW0LKW4M.js`);return{showSessionGroupDefaultsDialog:e}},__vite__mapDeps([33,1,3,2,4,5,6,7,8,16,10,11,12,13,17,18,19,34,35]),import.meta.url)).showSessionGroupDefaultsDialog}catch(e){let t=this.host.sessionData.beginSessionMutation();t&&this.host.sessionData.publishSessionMutationError(t,e);return}let n=this.host.sessionGroupDefaults(e);n&&await t({group:e,defaults:n,listDirectory:e=>this.host.listSessionGroupFolders(e),inspectRepository:e=>this.host.inspectSessionGroupRepository(e),submit:async t=>{let n=this.host.sessionData.beginSessionMutation();if(!n||!this.host.sessionGroupDefaults(e))return G(`sessionsView.groupDefaultsStale`);let r=await(await this.loadOperations(n))?.updateSessionGroupDefaults(this.host,e,{cwd:t.cwd||null,worktree:t.worktree},n);return r===`completed`?null:r===`stale`?G(`sessionsView.groupDefaultsStale`):this.host.sessionData.sessionMutationError??G(`sessionsView.groupDefaultsFailed`)}})}saveCollapsedSessionSections(e){this.collapsedSessionSections=new Set(e),this.host.requestUpdate();try{Pd(e)}catch{}}toggleSection(e){let t=new Set(this.collapsedSessionSections);t.has(e)?t.delete(e):t.add(e),this.saveCollapsedSessionSections(t)}async reorderSidebarSection(e,t,n){let r=this.host.sessionData.beginSessionMutation();r&&await(await this.loadOperations(r))?.reorderSidebarSection(this.host,e,t,n,r)}async assignSessionCategory(e,t,n={}){let r=this.host.sessionData.beginSessionMutation();r&&await(await this.loadOperations(r))?.assignSessionCategory(this.host,e,t,r,n)}sectionAcceptsSession(e,t,n){return e===`pinned`||this.host.sessionsGrouping===`category`&&(e===`ungrouped`||t)?!0:e===`groups`&&!!(n&&qo(n,this.host.sessionsGrouping))}sectionDragOver(e,t,n){let r=e.dataTransfer;if(Io(r)&&this.draggingSidebarSection!==t){e.preventDefault(),r&&(r.dropEffect=`move`);let n=e.currentTarget,i=(n.querySelector(`:scope > .sidebar-recent-sessions__head`)??n).getBoundingClientRect(),a=e.clientY<i.top+i.height/2?`before`:`after`;this.sidebarSectionDropTarget={sectionId:t,position:a},this.host.requestUpdate(),this.sessionDropTarget=null,this.host.requestUpdate();return}if(!$o(r))return;let i=this.draggingSessionKey?this.host.findSidebarSessionByKey(this.draggingSessionKey):void 0;if(!this.sectionAcceptsSession(t,n,i)){e.stopPropagation();return}e.preventDefault(),r&&(r.dropEffect=`move`),this.sessionDropTarget=t,this.host.requestUpdate(),this.sidebarSectionDropTarget=null,this.host.requestUpdate()}sectionDragLeave(e,t,n){let r=e.currentTarget;e.relatedTarget instanceof Node&&r.contains(e.relatedTarget)||(this.sessionDropTarget===t&&(this.sessionDropTarget=null,this.host.requestUpdate()),this.sidebarSectionDropTarget?.sectionId===t&&(this.sidebarSectionDropTarget=null,this.host.requestUpdate()))}sectionDrop(e,t,n){let r=Ho(e.dataTransfer),i=jo(e.dataTransfer);if(!r&&!i)return;let a=i?this.host.findSidebarSessionByKey(i):void 0;if(!r&&!this.sectionAcceptsSession(t,n,a)){e.stopPropagation();return}if(e.preventDefault(),e.stopPropagation(),r&&r!==t){let e=this.sidebarSectionDropTarget?.sectionId===t?this.sidebarSectionDropTarget.position:`before`;this.reorderSidebarSection(r,t,e)}else if(a&&t===`pinned`)a.pinned||this.patchSession(a,{pinned:!0});else if(a){let e=n??null;(a.category!==e||a.pinned)&&this.assignSessionCategory(a,e,a.pinned?{pinned:!1}:{})}this.finishSidebarEntryDrag(),this.draggingSidebarSection=null,this.host.requestUpdate(),this.sessionDropTarget=null,this.host.requestUpdate(),this.sidebarSectionDropTarget=null,this.host.requestUpdate()}setSessionsGrouping(e){this.host.sessionsGrouping=e;try{wd(e)}catch{}}setSessionsShowCron(e){this.host.sessionsShowCron=e;try{Ed(e)}catch{}}setSessionsShowPreview(e){this.host.sessionsShowPreview=e;try{Dd(e)}catch{}}setSessionsShowSystem(e){this.host.sessionsShowSystem=e;try{Od(e)}catch{}}setSessionsStatusFilter(e){if(e!==this.host.sessionsStatusFilter){this.host.sessionsStatusFilter=e,this.host.clearSessionSelection(),this.host.sessionData.resetSessionList();try{Ad(e)}catch{}this.host.sessionData.refreshSidebarSessions()}}setSessionsHideEmptyGroups(e){this.host.sessionsHideEmptyGroups=e;try{kd(e)}catch{}}}})))()}var bb;function xb(){return(xb=t((()=>{I(),F(),W(),tt(),ai(),H(),li(),oi(),bb=class extends bt{constructor(...e){super(...e),this.x=0,this.y=0,this.trigger=null,this.lastActive=``,this.terminalDisabled=!1,this.onAction=()=>{},this.onClose=()=>{},this.menuLifecycle=new Gr(this,{getTrigger:()=>this.trigger,onClose:()=>this.onClose()}),this.handleSelect=e=>{e.preventDefault();let t=e.detail.item.value;t&&this.run(t)},this.handleAfterHide=e=>{e.currentTarget instanceof Node&&e.currentTarget.isConnected&&this.onClose()}}connectedCallback(){super.connectedCallback(),yi(this)}run(e){this.onAction(e),this.onClose()}render(){let e=Math.max(8,Math.min(this.x,window.innerWidth-240-8)),t=Math.max(8,Math.min(this.y,window.innerHeight-140-8)),n=G(`chat.catalog.sessionMenu`);return R`
<wa-dropdown
class="session-menu"
.open=${!0}
placement="bottom-start"
.distance=${0}
aria-label=${n}
@wa-select=${this.handleSelect}
@wa-after-hide=${this.handleAfterHide}
>
<button
slot="trigger"
type="button"
tabindex="-1"
aria-hidden="true"
aria-label=${n}
style="position: fixed; left: ${e}px; top: ${t}px; width: 1px; height: 1px; opacity: 0; pointer-events: none;"
></button>
${this.lastActive?R`<div class="session-menu__info">
${G(`sessionsView.lastActive`,{time:this.lastActive})}
</div>`:``}
<wa-dropdown-item class="session-menu__item" value="viewer">
<span slot="icon" class="session-menu__icon" aria-hidden="true"
>${U.messageSquare}</span
>
<span class="session-menu__text">${G(`chat.catalog.openInOpenClaw`)}</span>
</wa-dropdown-item>
<wa-dropdown-item
class="session-menu__item"
value="terminal"
title=${this.terminalDisabled?G(`chat.catalog.terminalUnavailable`):``}
?disabled=${this.terminalDisabled}
>
<span slot="icon" class="session-menu__icon" aria-hidden="true">${U.terminal}</span>
<span class="session-menu__text">${G(`chat.catalog.openInTerminal`)}</span>
</wa-dropdown-item>
</wa-dropdown>
`}},k([V({attribute:!1})],bb.prototype,`x`,void 0),k([V({attribute:!1})],bb.prototype,`y`,void 0),k([V({attribute:!1})],bb.prototype,`trigger`,void 0),k([V({attribute:!1})],bb.prototype,`lastActive`,void 0),k([V({attribute:!1})],bb.prototype,`terminalDisabled`,void 0),k([V({attribute:!1})],bb.prototype,`onAction`,void 0),k([V({attribute:!1})],bb.prototype,`onClose`,void 0),customElements.get(`openclaw-catalog-session-menu`)||customElements.define(`openclaw-catalog-session-menu`,bb)})))()}function Sb(e){if(e instanceof PointerEvent&&e.pointerType===`touch`)return null;for(let t of e.composedPath()){if(t instanceof HTMLElement&&t.matches(Db))return t;if(t===e.currentTarget)break}return null}function Cb(e){return e.matches(Tb)?`horizontal`:`vertical`}var wb,Tb,Eb,Db;function Ob(){return(Ob=t((()=>{wb=`a.markdown-session-link[data-session-key]`,Tb=`.sidebar-recent-session[data-session-key]`,Eb=`openclaw-session-menu-open`,Db=`${wb}, ${Tb}`})))()}var kb;function Ab(){return(Ab=t((()=>{I(),Oo(),xb(),Ob(),kb=class{constructor(e){this.hooks=e,this.state=null,this.trigger=null}get isOpen(){return this.state!==null}isOpenFor(e){let t=this.state?.key;return t?.catalogId===e.catalogId&&t.hostId===e.hostId&&t.threadId===e.threadId}open(e,t,n,r=null){r?.dispatchEvent(new CustomEvent(Eb,{bubbles:!0,composed:!0})),this.hooks.beforeOpen(),this.trigger=r,this.state={...e,x:t,y:n},this.hooks.requestUpdate()}close(){!this.state&&!this.trigger||(this.trigger=null,this.state=null,this.hooks.requestUpdate())}retargetTrigger(e,t){!(t instanceof HTMLElement)||!this.isOpenFor(e)||queueMicrotask(()=>{t.isConnected&&!this.trigger?.isConnected&&this.isOpenFor(e)&&(this.trigger=t,this.hooks.requestUpdate())})}handleAction(e,t){if(t===`terminal`){e.canOpenTerminal&&this.hooks.terminalAvailable()&&ho(e.key,e.agentId);return}this.hooks.navigate(e)}render(){let e=this.state;return e?R`
<openclaw-catalog-session-menu
.x=${e.x}
.y=${e.y}
.trigger=${this.trigger}
.lastActive=${e.meta}
.terminalDisabled=${!e.canOpenTerminal||!this.hooks.terminalAvailable()}
.onAction=${t=>this.handleAction(e,t)}
.onClose=${()=>this.close()}
></openclaw-catalog-session-menu>
`:B}}})))()}function jb(e){if(!e||typeof e!=`object`)return null;let t=e;return Array.isArray(t.gateways)&&typeof t.currentId==`string`?t:null}function Mb(){if(typeof window>`u`)return null;let e=window,t=e.webkit?.messageHandlers?.openclawGateways;if(!t?.postMessage)return null;let n=t.postMessage.bind(t),r=(e,t)=>n({type:e,id:t}),i=jb(e.__OPENCLAW_NATIVE_GATEWAYS__),a=new Set;return window.addEventListener(Pb,e=>{let t=jb(e.detail);t&&(i=t,a.forEach(e=>e(t)))}),{get snapshot(){return i},subscribe(e){return a.add(e),()=>a.delete(e)},select:e=>r(`select`,e),openWindow:e=>r(`open-window`,e),setPrimary:e=>r(`set-primary`,e),openSettings:()=>n({type:`open-settings`})}}function Nb(){return Fb===void 0&&(Fb=Mb()),Fb}var Pb,Fb;function Ib(){return(Ib=t((()=>{Pb=`openclaw:native-gateways-changed`})))()}function Lb(){let e=Nb()?.snapshot;return e?.gateways.find(t=>t.id===e.currentId)?.kind===`local`}function Rb(e,t){return t||!Lb()?null:/^(?:\/|[a-z]:[\\/]|\\\\)/i.test(e.path)?e.path:e.root?`${e.root.replace(/[\\/]+$/,``)}/${e.path.replace(/^[\\/]+/,``)}`:null}function zb(e,t){new _n(e).watch(Nb,(e,t)=>e.subscribe(t),t)}function Bb(){return(Bb=t((()=>{Ee(),Ib()})))()}function Vb(e){for(let t of Gb){let n=e.find(e=>e.state===t);if(n)return n.url}return null}async function Hb(e){try{return Vb((await e.loadPullRequests?.())?.pullRequests??[])}catch{return null}}async function Ub(e){let t=e.worktreeId;if(!t||e.execNode||!Lb())return null;try{return(await e.client.request(`worktrees.list`,{})).worktrees.find(e=>e.id===t&&e.removedAt===void 0)?.path??null}catch{return null}}async function Wb(e){let[t,n]=await Promise.all([Hb(e),Ub(e)]);return{pullRequestUrl:t,worktreePath:n}}var Gb;function Kb(){return(Kb=t((()=>{Bb(),Gb=[`open`,`draft`,`merged`,`closed`]})))()}var qb,Jb,Yb,Xb;function Zb(){return(Zb=t((()=>{I(),ur(),sr(),Sa(),ns(),Te(),A(),Ab(),ag(),Kb(),Ob(),se(),qb=300,Jb=200,Yb=264,Xb=class{constructor(e){this.host=e,this.customizeMenuPosition=null,this.moreMenuPosition=null,this.sessionMenu=null,this.sessionMenuWork=null,this.sessionGroupMenu=null,this.sessionSortMenuPosition=null,this.catalogViewMenuPosition=null,this.filterMenuView=`root`,this.agentMenuPosition=null,this.identityMenuPosition=null,this.customizeMenuTrigger=null,this.moreMenuTrigger=null,this.sessionMenuTrigger=null,this.sessionMenuWorkVersion=0,this.sessionGroupMenuTrigger=null,this.sessionSortMenuTrigger=null,this.catalogViewMenuTrigger=null,this.agentMenuTrigger=null,this.agentMenuInteractionState=`closed`,this.identityMenuTrigger=null,this.agentMenuHoverOpenTimer=null,this.agentMenuHoverCloseTimer=null,this.agentMenuFocusBeforeHover=null,this.routePreloadTimers=new Map,this.menuRenderer=null,this.menuRendererImport=ft(()=>D(()=>import(`./sidebar-menus-render-kWI1teWE.js`),__vite__mapDeps([36,16,1,3,2,4,5,6,7,8,10,11,12,13,17,18,19]),import.meta.url),e=>{this.menuRenderer=e,this.host.requestUpdate()}),this.pluginActionLifetime=new AbortController,this.cancelPreload=e=>{vr(this.routePreloadTimers,e)},this.openCustomizeMenuFromContext=e=>{e.preventDefault(),this.openCustomizeMenu(e.clientX,e.clientY)},e.addController(this),this.catalogMenu=new kb({beforeOpen:()=>void this.dismissTransientMenus(),requestUpdate:()=>e.requestUpdate(),terminalAvailable:()=>e.terminalAvailable,navigate:({routeId:t,navigation:n})=>e.onNavigate?.(t,n)})}hostConnected(){this.pluginActionLifetime.signal.aborted&&(this.pluginActionLifetime=new AbortController),this.menuRendererImport.schedule()}hostDisconnected(){this.pluginActionLifetime.abort(),this.menuRendererImport.dispose(),this.clearAgentMenuHoverTimers();for(let e of this.routePreloadTimers.values())globalThis.clearTimeout(e);this.routePreloadTimers.clear()}updateState(e,t){Object.assign(this,{[e]:t}),this.host.requestUpdate()}preloadMenuRenderer(){return this.menuRendererImport.load()}loadMenuRenderer(){this.preloadMenuRenderer().catch(()=>void 0)}dismissTransientMenus(){let e=!!(this.customizeMenuPosition||this.moreMenuPosition||this.sessionMenu||this.catalogMenu.isOpen||this.sessionGroupMenu||this.sessionSortMenuPosition||this.catalogViewMenuPosition||this.agentMenuPosition||this.identityMenuPosition);return this.closeCustomizeMenu(),this.closeMoreMenu(),this.closeSessionMenu(),this.catalogMenu.close(),this.closeSessionGroupMenu(),this.closeSessionSortMenu(),this.closeCatalogViewMenu(),this.closeAgentMenu(),this.closeIdentityMenu(),e}preloadRoute(e,t,n=!1){Pr(this.routePreloadTimers,e,t,e=>this.host.onPreloadRoute?.(e),e===this.host.activeRouteId||!this.isRouteEnabled(e),n)}isRouteEnabled(e){return this.host.enabledRouteIds?.includes(e)??!0}openCustomizeMenu(e,t,n=null){this.loadMenuRenderer(),this.dismissTransientMenus(),this.customizeMenuTrigger=n,this.updateState(`customizeMenuPosition`,{x:Math.max(8,Math.min(e,window.innerWidth-240-8)),y:Math.max(8,Math.min(t,window.innerHeight-420-8))})}closeCustomizeMenu(e={}){let t=this.customizeMenuTrigger;this.customizeMenuTrigger=null,this.updateState(`customizeMenuPosition`,null),e.restoreFocus&&t?.focus()}toggleMoreMenu(e){if(this.moreMenuPosition){this.closeMoreMenu();return}this.loadMenuRenderer();let t=e.getBoundingClientRect();this.dismissTransientMenus(),this.moreMenuTrigger=e,this.updateState(`moreMenuPosition`,{x:Math.max(8,Math.min(t.left,window.innerWidth-240-8)),y:Math.max(8,Math.min(t.bottom+4,window.innerHeight-420-8))})}closeMoreMenu(e={}){let t=this.moreMenuTrigger;this.moreMenuTrigger=null,this.updateState(`moreMenuPosition`,null),e.restoreFocus&&t?.focus()}openSessionMenu(e,t,n,r=null){r?.dispatchEvent(new CustomEvent(Eb,{bubbles:!0,composed:!0})),this.host.selectedSessionKeys.has(e.key)||this.host.clearSessionSelection(),this.showSessionMenu(e,t,n,r)}showSessionMenu(e,t,n,r=null){this.loadMenuRenderer(),this.dismissTransientMenus(),this.sessionMenuTrigger=r,this.updateState(`sessionMenu`,{session:e,x:t,y:n}),this.loadSessionMenuWork(e)}closeSessionMenu(){let e=this.host.sessionDataContext?.gateway;e&&Zo(e).unwatch(this),this.sessionMenuTrigger=null,this.sessionMenuWorkVersion+=1,this.updateState(`sessionMenu`,null),this.updateState(`sessionMenuWork`,null)}loadSessionMenuWork(e){let t=++this.sessionMenuWorkVersion;if(!e.worktreeId){this.updateState(`sessionMenuWork`,null);return}this.updateState(`sessionMenuWork`,{loading:!0,pullRequestUrl:null,worktreePath:null});let n=this.host.sessionDataContext,r=n?.gateway.snapshot.client;if(!n||!r){this.updateState(`sessionMenuWork`,{loading:!1,pullRequestUrl:null,worktreePath:null});return}let{selectedAgentId:i}=this.host.getSessionNavigationState(),a=Zo(n.gateway),o=Bo(e.key,N(e.key)?.agentId??i);Wb({client:r,loadPullRequests:ba(n.gateway.snapshot,`controlUi.sessionPullRequests.subscribe`)===!0?()=>a.load(this,o):void 0,worktreeId:e.worktreeId,execNode:e.execNode}).then(e=>{t===this.sessionMenuWorkVersion&&this.updateState(`sessionMenuWork`,{loading:!1,...e})})}openSessionGroupMenu(e,t,n,r){this.loadMenuRenderer(),this.dismissTransientMenus(),this.sessionGroupMenuTrigger=r,this.updateState(`sessionGroupMenu`,{group:e,x:Math.max(8,Math.min(t,window.innerWidth-224-8)),y:Math.max(8,Math.min(n,window.innerHeight-160-8))})}closeSessionGroupMenu(e={}){let t=this.sessionGroupMenuTrigger;this.sessionGroupMenuTrigger=null,this.updateState(`sessionGroupMenu`,null),e.restoreFocus&&t?.focus()}toggleSessionSortMenu(e){if(this.sessionSortMenuPosition){this.closeSessionSortMenu();return}this.loadMenuRenderer();let t=e.getBoundingClientRect();this.dismissTransientMenus(),this.sessionSortMenuTrigger=e,this.filterMenuView=`root`,this.updateState(`sessionSortMenuPosition`,{x:Math.max(8,Math.min(t.right,window.innerWidth-200-8)),y:Math.max(8,Math.min(t.bottom+4,window.innerHeight-280-8))})}toggleCatalogViewMenu(e,t){if(this.catalogViewMenuPosition?.catalogId===e){this.closeCatalogViewMenu();return}let n=t.getBoundingClientRect();this.openCatalogViewMenu(e,n.right,n.bottom+4,t)}openCatalogViewMenu(e,t,n,r=null){this.loadMenuRenderer(),this.dismissTransientMenus(),this.catalogViewMenuTrigger=r,this.filterMenuView=`root`,this.updateState(`catalogViewMenuPosition`,{catalogId:e,x:Math.max(8,Math.min(t,window.innerWidth-200-8)),y:Math.max(8,Math.min(n,window.innerHeight-360-8))})}setFilterMenuView(e){!this.sessionSortMenuPosition&&!this.catalogViewMenuPosition||(this.filterMenuView=e,this.host.requestUpdate(),this.focusFilterMenuView())}focusFilterMenuView(){this.host.updateComplete.then(()=>{let e=(this.sessionSortMenuTrigger??this.catalogViewMenuTrigger)?.closest(`openclaw-app-sidebar`)?.querySelector(`.sidebar-session-sort-menu`),t=e?.shadowRoot?.querySelector(`[part="menu"]`);!e||!t||(t.scrollTop=0,e.querySelector(`wa-dropdown-item:not([disabled])`)?.focus())})}closeCatalogViewMenu(e={}){let t=this.catalogViewMenuTrigger;this.catalogViewMenuTrigger=null,this.updateState(`catalogViewMenuPosition`,null),e.restoreFocus&&t?.focus()}closeSessionSortMenu(e={}){let t=this.sessionSortMenuTrigger;this.sessionSortMenuTrigger=null,this.updateState(`sessionSortMenuPosition`,null),e.restoreFocus&&t?.focus()}toggleAgentMenu(e){if(this.clearAgentMenuHoverTimers(),this.agentMenuInteractionState===`open-click`){this.closeAgentMenu();return}if(this.agentMenuInteractionState===`open-hover`){this.agentMenuFocusBeforeHover=null,this.updateState(`agentMenuInteractionState`,`open-click`);return}this.openAgentMenu(e,`open-click`)}openAgentMenu(e,t){this.clearAgentMenuHoverTimers(),this.loadMenuRenderer();let n=Yb,r=e.getBoundingClientRect();this.closeCustomizeMenu(),this.closeMoreMenu(),this.closeSessionMenu(),this.closeSessionGroupMenu(),this.closeSessionSortMenu(),this.closeCatalogViewMenu(),this.closeIdentityMenu(),this.agentMenuTrigger=e,this.agentMenuFocusBeforeHover=t===`open-hover`&&document.activeElement instanceof HTMLElement?document.activeElement:null,this.updateState(`agentMenuInteractionState`,t),this.updateState(`agentMenuPosition`,{x:Math.max(8,Math.min(r.left,window.innerWidth-n-8)),top:Math.min(r.bottom+4,window.innerHeight-8)})}scheduleAgentMenuHoverOpen(e,t){globalThis.clearTimeout(this.agentMenuHoverCloseTimer??void 0),this.agentMenuHoverCloseTimer=null,!(this.agentMenuInteractionState===`open-hover`||this.agentMenuInteractionState===`open-click`||t.pointerType===`touch`||!globalThis.matchMedia(`(hover: hover) and (pointer: fine)`).matches)&&(this.loadMenuRenderer(),globalThis.clearTimeout(this.agentMenuHoverOpenTimer??void 0),this.updateState(`agentMenuInteractionState`,`hover-pending`),this.agentMenuHoverOpenTimer=globalThis.setTimeout(()=>{this.agentMenuHoverOpenTimer=null,this.agentMenuInteractionState===`hover-pending`&&this.openAgentMenu(e,`open-hover`)},qb))}handleAgentMenuTriggerPointerLeave(){if(globalThis.clearTimeout(this.agentMenuHoverOpenTimer??void 0),this.agentMenuHoverOpenTimer=null,this.agentMenuInteractionState===`hover-pending`){this.updateState(`agentMenuInteractionState`,`closed`);return}this.scheduleAgentMenuHoverClose()}handleAgentMenuPointerEnter(){globalThis.clearTimeout(this.agentMenuHoverCloseTimer??void 0),this.agentMenuHoverCloseTimer=null}handleAgentMenuPointerLeave(){this.scheduleAgentMenuHoverClose()}restoreFocusAfterAgentMenuHoverOpen(){if(this.agentMenuInteractionState!==`open-hover`)return;let e=this.agentMenuFocusBeforeHover;this.agentMenuFocusBeforeHover=null,e&&e!==document.body&&e.isConnected?e.focus({preventScroll:!0}):document.activeElement instanceof HTMLElement&&document.activeElement.closest(`.sidebar-agent-menu`)&&document.activeElement.blur()}closeAgentMenu(e={}){let t=this.agentMenuTrigger;this.clearAgentMenuHoverTimers(),this.agentMenuTrigger=null,this.agentMenuFocusBeforeHover=null,this.updateState(`agentMenuInteractionState`,`closed`),this.updateState(`agentMenuPosition`,null),e.restoreFocus&&t?.focus()}scheduleAgentMenuHoverClose(){this.agentMenuInteractionState===`open-hover`&&(globalThis.clearTimeout(this.agentMenuHoverCloseTimer??void 0),this.agentMenuHoverCloseTimer=globalThis.setTimeout(()=>{this.agentMenuHoverCloseTimer=null,this.agentMenuInteractionState===`open-hover`&&(document.activeElement?.closest(`.sidebar-agent-menu`)||this.closeAgentMenu())},Jb))}clearAgentMenuHoverTimers(){globalThis.clearTimeout(this.agentMenuHoverOpenTimer??void 0),globalThis.clearTimeout(this.agentMenuHoverCloseTimer??void 0),this.agentMenuHoverOpenTimer=null,this.agentMenuHoverCloseTimer=null}toggleIdentityMenu(e){if(this.identityMenuPosition){this.closeIdentityMenu();return}this.loadMenuRenderer();let t=e.getBoundingClientRect(),n=Math.max(240,t.width);this.dismissTransientMenus(),this.identityMenuTrigger=e,this.updateState(`identityMenuPosition`,{x:Math.max(8,Math.min(t.right-n,window.innerWidth-n-8)),bottom:Math.max(8,window.innerHeight-t.top+4),width:t.width})}closeIdentityMenu(e={}){let t=this.identityMenuTrigger;this.identityMenuTrigger=null,this.updateState(`identityMenuPosition`,null),e.restoreFocus&&t?.focus()}renderCustomizeMenu(){return this.menuRenderer?.renderSidebarCustomizeMenuForController(this)??B}renderAgentMenu(){return this.menuRenderer?.renderSidebarAgentMenuForController(this)??B}renderIdentityMenu(){return this.menuRenderer?.renderSidebarIdentityMenuForController(this)??B}renderSessionMenu(){return this.menuRenderer?.renderSidebarSessionMenuForController(this)??B}renderSessionGroupMenu(){return this.menuRenderer?.renderSidebarSessionGroupMenuForController(this)??B}renderSessionSortMenu(){return this.menuRenderer?.renderSidebarSessionSortMenuForController(this)??B}renderCatalogViewMenu(){return this.menuRenderer?.renderSidebarCatalogViewMenuForController(this)??B}renderRoute(e){if(!this.isRouteEnabled(e))return B;let t=cr(e)?this.host.getRouteSessionKey():``,n=this.host.sessionDataContext,r=cr(e)&&t&&n?dt({context:n,face:e,sessionKey:t}):null;return eg({routeId:e,href:r?.href??Er(e,this.host.basePath),active:Qh(this.host.activeRouteId,e),onNavigate:()=>{this.host.onNavigate?.(e,r?.options)},onPreload:(t,n)=>this.preloadRoute(e,t,n),onCancelPreload:this.cancelPreload})}renderMoreMenu(){return this.menuRenderer?.renderSidebarMoreMenuForController(this)??B}}})))()}var Qb,$b;function ex(){return(ex=t((()=>{W(),qt(),se(),Qb=[`pointerover`,`pointerout`,`focusin`,`focusout`,`click`,`keydown`],$b=class{constructor(e){this.host=e,this.runtime=null,this.loading=null,this.generation=0,this.pendingTarget=null,this.cancelPending=e=>{(e instanceof KeyboardEvent?e.key===`Escape`:e.target instanceof Node&&!this.pendingTarget?.contains(e.target))&&(this.generation+=1,this.clearPending())},this.handleEvent=e=>{if(this.runtime){this.runtime.handleEvent(e);return}let t=e.target instanceof Element?e.target.closest(`[data-person-card]`):null;if(!t||![`pointerover`,`focusin`,`click`].includes(e.type))return;let n=++this.generation;this.pendingTarget=t,document.addEventListener(`pointerdown`,this.cancelPending,!0),document.addEventListener(`keydown`,this.cancelPending,!0);let r=this.host.sessionDataContext?.gateway.snapshot.client,i=this.host.sessionDataContext?.gateway,a=i?.snapshot.hello,o=this.host.activeRouteId,s=this.host.sessionKey,c=performance.now();this.loading??=D(()=>import(`./sidebar-people.runtime-98Tvib7x.js`),__vite__mapDeps([37,1,3,2,4,5,6,7,8,16,10,11,12,13,17,18,19,38]),import.meta.url),this.loading.then(l=>{n===this.generation&&this.clearPending(),!(n!==this.generation||!this.host.isConnected||!t.isConnected||i!==this.host.sessionDataContext?.gateway||r!==i?.snapshot.client||a!==i?.snapshot.hello||o!==this.host.activeRouteId||s!==this.host.sessionKey)&&(this.runtime??=new l.SidebarPeopleRuntime(this.host),this.runtime.handleEvent(e,c))},()=>{this.loading=null,n===this.generation&&this.host.isConnected&&(this.clearPending(),en({message:G(`presence.card.loadFailed`)}))})},e.addController(this)}hostConnected(){for(let e of Qb)this.host.addEventListener(e,this.handleEvent)}hostUpdated(){this.runtime?.sync()}dismiss(){return this.generation+=1,this.clearPending(),this.runtime?.dismiss()??!1}hostDisconnected(){for(let e of Qb)this.host.removeEventListener(e,this.handleEvent);this.generation+=1,this.clearPending(),this.runtime?.dispose(),this.runtime=null}clearPending(){this.pendingTarget=null,document.removeEventListener(`pointerdown`,this.cancelPending,!0),document.removeEventListener(`keydown`,this.cancelPending,!0)}}})))()}var tx,nx;function rx(){return(rx=t((()=>{I(),F(),sr(),jr(),W(),om(),cm(),Yh(),Zh(),Ur(),qt(),Ee(),at(),gt(),Ut(),ag(),Wg(),y_(),eb(),d_(),q(),sb(),fb(),H(),_b(),Ty(),yb(),Zb(),ex(),se(),tx=ft(()=>D(()=>import(`./lobster-pet.runtime-DQoi-d-i.js`),[],import.meta.url)),nx=class extends $y{sessionGroupDefaults(e){if(this.context?.sessions.groupsStatus()!==`ready`)return null;let t=this.context?.sessions.state.groupSettings.find(t=>t.name===e);return t?{cwd:t.cwd??``,worktree:t.worktree===!0}:null}async listSessionGroupFolders(e){let t=this.context?.sessions,n=t?.captureConnectionScope();if(!t||!n)throw Error(G(`sessionsView.groupDefaultsStale`));let r=await n.client.request(`fs.listDir`,e?{path:e}:{});if(this.context?.sessions!==t||!t.isConnectionScopeCurrent(n))throw Error(G(`sessionsView.groupDefaultsStale`));return r}async inspectSessionGroupRepository(e){let t=e?.trim()||this.activeChipAgent().agent?.workspace?.trim();if(!t)return`unavailable`;let n=this.context?.sessions,r=n?.captureConnectionScope();if(!n||!r)throw Error(G(`sessionsView.groupDefaultsStale`));let i=await r.client.request(`worktrees.branches`,{repoRoot:t,includeRepositoryStatus:!0});if(this.context?.sessions!==n||!n.isConnectionScopeCurrent(r))throw Error(G(`sessionsView.groupDefaultsStale`));return i.repositoryStatus===`git`||i.repositoryStatus===`not_git`?i.repositoryStatus:`unavailable`}constructor(){super(),this.sidebarNarrationLines=new Map,this.sidebarObserverDigests=new Map,this.sessionOrganizer=new vb(this),this.sidebarMenus=new Xb(this),this.people=new $b(this),this.narration=null,this.narrationLoad=null,this.projectedSessionSections={sections:[],expandedRows:[],visibleRows:[]},this.subscriptions=new _n(this).effect(()=>this.context?.gateway,e=>e.subscribeEvents(e=>this.narration?.handleEvent(e))).watch(()=>this.context?.agentIdentity,(e,t)=>e.subscribe(t)).watch(()=>this.context?.config,(e,t)=>e.subscribe(t),()=>this.syncCommunityInviteState()).watch(()=>this.context?.plugins,(e,t)=>e.subscribe(t)),this.nativeGatewaysChanged=()=>this.sidebarMenus.closeSessionMenu(),this.refreshAppearanceSettings=()=>this.context?.theme.refresh(),this.hiddenSessionCatalogsChanged=()=>{this.hiddenSessionCatalogIds=Cd()},this.communityInvitePresentation=`unavailable`,this.communityInviteStorageChanged=e=>{(e.key===`openclaw:control-ui:community-invite`||e.key===null)&&this.syncCommunityInviteState()},this.catalogRenderer=null,this.catalogRendererImport=ft(()=>D(()=>import(`./app-sidebar-session-catalog-render-DuToBRF2.js`),[],import.meta.url),e=>{this.catalogRenderer=e.renderSessionCatalogGroups,this.isConnected&&this.requestUpdate()}),this.catalogProjectGrouping=pd(),this.handleSidebarInteractionEnd=e=>{this.communityInvitePresentation!==`pending`||e instanceof FocusEvent&&e.relatedTarget instanceof Node&&this.contains(e.relatedTarget)||this.requestUpdate()},this.dismissCommunityInvite=()=>{let e=lb();this.syncCommunityInviteState(),e.ok||en({message:G(`communityInvite.dismissFailed`)})},this.subscriptions}dismissTransientMenus(){let e=this.people.dismiss();return super.dismissTransientMenus()||e}disconnectedCallback(){window.removeEventListener(`openclaw:native-gateways-changed`,this.nativeGatewaysChanged),window.removeEventListener(Zd,this.hiddenSessionCatalogsChanged),this.narration?.disconnect(),this.catalogRendererImport.dispose(),window.removeEventListener(`storage`,this.communityInviteStorageChanged),super.disconnectedCallback()}willUpdate(e){super.willUpdate(e),this.communityInvitePresentation===`pending`&&!this.matches(`:hover, :focus-within`)&&this.sessionOrganizer.draggingSessionKey===null&&this.sessionOrganizer.draggingSidebarSection===null&&this.sessionOrganizer.draggingSidebarEntry===null&&(this.communityInvitePresentation=`shown`);let t=this.sessionData.sessionsResult;this.sessionProjection.observeRows([...t?[t]:[],...Object.values(this.sessionData.sessionResultsByAgent)]),this.sessionNavigationState=super.getSessionNavigationState(),this.projectedSessionRows=super.selectedAgentSessionRows(this.sessionNavigationState),this.projectedSessionSections=super.zonedVisibleSections(this.projectedSessionRows);let n=this.sidebarMenus.agentMenuPosition===null?[this.expandedAgentId()]:this.activeChipAgent().agents.map(e=>e.id);this.ensureAgentIdentities(n)}ensureAgentIdentities(e){this.connected&&this.context?.agentIdentity.ensure(e)}getSessionNavigationState(){return this.sessionNavigationState??super.getSessionNavigationState()}selectedAgentSessionRows(e){return this.projectedSessionRows??super.selectedAgentSessionRows(e)}zonedVisibleSections(e){return this.projectedSessionSections}updated(e){super.updated(e),this.narration?this.narration.sync(this.narrationSyncInput()):this.sidebarLiveActivity&&this.ensureNarrationController(),this.sessionNavigationState=void 0,this.projectedSessionRows=void 0}visibleNarrationRowsInOrder(){let e=[],t=n=>{e.push(n),this.isSessionChildrenExpanded(n)&&o_({session:n,fullyShown:this.isSessionChildrenFullyShown(n.key)}).forEach(t)};return this.visibleSessionRowsInOrder().forEach(t),e}narrationSyncInput(){let e=this.context?.gateway.snapshot;return{enabled:this.sidebarLiveActivity,connected:this.connected&&e?.phase===`connected`,connectionIdentity:e?.client??null,source:this.context?.sessions??null,rows:this.visibleNarrationRowsInOrder(),openSessionKey:cr(this.activeRouteId)?this.getRouteSessionKey():``,agentId:this.selectedAgentIdForSessions()}}ensureNarrationController(){this.narration||this.narrationLoad||(this.narrationLoad=D(()=>import(`./app-sidebar-session-narration-ulUvy9NJ.js`).then(e=>{this.narrationLoad=null,this.isConnected&&(this.narration=new e.SidebarSessionNarrationController(e=>{this.sidebarNarrationLines=e},e=>{this.sidebarObserverDigests=e}),this.narration.sync(this.narrationSyncInput()))}),[],import.meta.url))}connectedCallback(){super.connectedCallback(),window.addEventListener(`openclaw:native-gateways-changed`,this.nativeGatewaysChanged),this.hiddenSessionCatalogsChanged(),window.addEventListener(Zd,this.hiddenSessionCatalogsChanged),window.addEventListener(`storage`,this.communityInviteStorageChanged),this.syncCommunityInviteState(),tx.schedule(),this.catalogRendererImport.schedule()}syncCommunityInviteState(){this.context?.config.current.communityInvite!==!0||!cb()?this.communityInvitePresentation=`unavailable`:this.communityInvitePresentation!==`shown`&&(this.communityInvitePresentation=`pending`)}firstUpdated(){requestAnimationFrame(()=>requestAnimationFrame(()=>this.classList.add(`sidebar-r`)))}startSessionDrag(e){this.sessionOrganizer.startSessionDrag(e)}finishSessionDrag(){this.sessionOrganizer.finishSessionDrag()}toggleSessionPin(e){this.sessionOrganizer.patchSession(e,{pinned:!e.pinned})}toggleSessionMenu(e,t){if(this.sidebarMenus.sessionMenu?.session.key===e.key){this.sidebarMenus.closeSessionMenu();return}let n=t.getBoundingClientRect();this.sidebarMenus.openSessionMenu(e,n.right,n.bottom+4,t)}startSidebarSectionDrag(e){this.sessionOrganizer.startSidebarSectionDrag(e)}finishSidebarSectionDrag(){this.sessionOrganizer.finishSidebarSectionDrag()}sectionDragOver(e,t,n){this.sessionOrganizer.sectionDragOver(e,t,n)}sectionDragLeave(e,t,n){this.sessionOrganizer.sectionDragLeave(e,t,n)}sectionDrop(e,t,n){this.sessionOrganizer.sectionDrop(e,t,n)}toggleSection(e){this.collapsedSessionSections.has(e)||this.sessionProjection.resetMembership(e),this.sessionOrganizer.toggleSection(e)}handleSessionListDragOver(e){this.sessionOrganizer.handleSessionListDragOver(e)}handleSessionListDragLeave(e){this.sessionOrganizer.handleSessionListDragLeave(e)}handleSessionListDrop(e){this.sessionOrganizer.handleSessionListDrop(e)}setVisibleSessionLimit(e,t){t<(this.sessionData.visibleSessionLimits.get(e)??10)&&this.sessionProjection.resetMembership(e),this.sessionData.setVisibleSessionLimit(e,t)}loadMoreSidebarSessions(){return this.sessionData.loadMoreSidebarSessions()}dismissSessionMutationError(){this.sessionData.dismissSessionMutationError()}preloadCatalogRenderer(){return this.catalogRendererImport.load()}setCatalogProjectGrouping(e){Td(e),this.catalogProjectGrouping=e}hideSessionCatalog(e){let t=this.sessionData.sessionCatalogs.find(t=>t.id===e)?.label??e;Id(e,!0);let n=ct.appearanceSidebar,r=Er(n.routeId,this.basePath)+n.search+n.hash;en({message:R`${G(`chat.sidebar.sectionHidden`,{section:t})}
<a
class="session-link"
href=${r}
@click=${e=>{Ve(e)&&(e.preventDefault(),this.onNavigate?.(n.routeId,{search:n.search,hash:n.hash}))}}
>${G(`chat.sidebar.sectionHiddenRecovery`)}</a
>`,actionLabel:G(`common.undo`),onAction:()=>Id(e,!1),durationMs:12e3})}openCatalogMenu(e,t,n,r){this.sidebarMenus.catalogMenu.open(e,t,n,r)}retargetCatalogMenuTrigger(e,t){this.sidebarMenus.catalogMenu.retargetTrigger(e,t)}renderPinnedSidebarSession(e){return l_({host:this,session:e,listItem:!1})}renderSessions(){let e=this.getSessionNavigationState(),t=this.selectedAgentSessionRows(e),n=this.expandedAgentId(),r=[...this.sessionData.sessionsResult?.sessions??[],...Object.values(this.sessionData.sessionResultsByAgent).flatMap(e=>e.sessions)],{sections:i}=this.zonedVisibleSections(t),a=this.visibleSessionCatalogs(),o=new Set(a.map(e=>e.id)),s=i.filter(e=>!e.id.startsWith(`catalog:`)||o.has(e.id.slice(8)));return!this.catalogRenderer&&(a.length>0||this.sessionData.sessionCatalogRefreshStatus.error!==null)&&this.preloadCatalogRenderer().catch(()=>void 0),Mt(`session-list`,{sessionKey:this.sessionKey,agentId:e.selectedAgentId,sessions:this.context?.sessions.state.result?.sessions??[]},v_({host:this,empty:t.length===0,sections:s,nativeSessionsHaveMore:this.sessionData.sessionsResult?.hasMore===!0,catalogRenderer:this.catalogRenderer,catalogs:{catalogs:a,basePath:this.basePath,routeSessionKey:cr(this.activeRouteId)?this.getRouteSessionKey():``,newSessionAgentId:n,mainKey:this.sessionMainKey(),loadingMoreCatalogIds:this.sessionData.loadingMoreSessionCatalogIds,projectGrouping:this.catalogProjectGrouping,liveRows:r,toSidebarSession:e.toSidebarSession,ownerId:this.activeSessionOwnerId,catalogOpenTarget:this.catalogOpenTarget,terminalAvailable:this.terminalAvailable}}))}render(){let e=this.reconciledSidebarZone(),t=new Set(e.entries.flatMap(e=>e.type===`route`?[`route:${e.route}`]:[]));return R`
<aside
class="sidebar"
@pointerleave=${this.handleSidebarInteractionEnd}
@focusout=${this.handleSidebarInteractionEnd}
@contextmenu=${e=>{e.target.closest(`input, textarea, [contenteditable]`)||e.preventDefault()}}
>
<div class="sidebar-shell" @mousedown=${wr}>
${Ig(this)}
<div class="sidebar-shell__content">
<div
class="sidebar-shell__body sidebar-shell__body--scroll-${this.sessionData.sessionsScrollState}"
@scroll=${e=>this.sessionData.updateSessionsScrollState(e.currentTarget)}
>
<nav
class="sidebar-nav"
@contextmenu=${this.sidebarMenus.openCustomizeMenuFromContext}
>
${Rg(this)}
<div
class="nav-section__items"
@dragover=${e=>this.sessionOrganizer.handleSidebarZoneDragOver(e)}
@dragleave=${e=>this.sessionOrganizer.handleSidebarZoneDragLeave(e)}
@drop=${e=>this.sessionOrganizer.handleSidebarZoneDrop(e)}
>
${Lg(this)}
${e.entries.map(t=>Vg(this,t,e.sessionRows))}
${$h(this.context?.gateway.snapshot.hello?.controlUiTabs).filter(e=>(!e.placement||!t.has(e.placement))&&!this.pluginNavigation().some(t=>t.pluginId===e.pluginId&&t.value.page.id===e.id)).map(e=>Hg(this,e))}
<openclaw-plugin-contributions
.kind=${`navigation`}
.excludedNavigationKeys=${e.entries.filter(e=>e.type===`plugin`).map(e=>e.key)}
></openclaw-plugin-contributions>
</div>
</nav>
${zg(this)} ${this.renderSessions()}
</div>
${this.sessionsStatusFilter===`archived`?B:wy({status:this.sessionData.sessionCatalogRefreshStatus,onRetry:()=>void this.sessionData.refreshSessionCatalogs(),className:`sidebar-session-error sidebar-session-catalog-error`})}
</div>
<div class="sidebar-shell__invite">
${this.communityInvitePresentation===`shown`?ab(this.dismissCommunityInvite):B}
<openclaw-lobster-pet
.seed=${pb(this.sessionKey)}
.mode=${hb(!this.offline,this.sessionData.sessionsResult?.sessions)}
.runOutcome=${mb(this.sessionData.sessionsResult?.sessions)}
.visitsEnabled=${this.lobsterPetVisits}
.soundsEnabled=${this.lobsterPetSounds}
.gatewayVersion=${this.gatewayVersion}
.onVisitsDisabled=${this.refreshAppearanceSettings}
></openclaw-lobster-pet>
</div>
<div class="sidebar-shell__footer">
${this.devGitBranch?R`<openclaw-tooltip .content=${this.devGitBranch}>
<div class="sidebar-footer-branch">
<span class="sidebar-footer-branch__icon" aria-hidden="true"
>${U.gitBranch}</span
>
<span class="sidebar-footer-branch__name">${this.devGitBranch}</span>
</div>
</openclaw-tooltip>`:B}
${Bg(this)}
</div>
</div>
${this.sidebarMenus.renderCustomizeMenu()} ${this.sidebarMenus.renderMoreMenu()}
${this.sidebarMenus.renderAgentMenu()} ${this.sidebarMenus.renderIdentityMenu()}
${this.sidebarMenus.renderSessionMenu()} ${this.sidebarMenus.catalogMenu.render()}
${this.sidebarMenus.renderSessionGroupMenu()} ${this.sidebarMenus.renderSessionSortMenu()}
${this.sidebarMenus.renderCatalogViewMenu()}
</aside>
`}},k([z()],nx.prototype,`sidebarNarrationLines`,void 0),k([z()],nx.prototype,`sidebarObserverDigests`,void 0),k([z()],nx.prototype,`communityInvitePresentation`,void 0),k([z()],nx.prototype,`catalogProjectGrouping`,void 0),customElements.get(`openclaw-app-sidebar`)||customElements.define(`openclaw-app-sidebar`,nx)})))()}function ix(e){if(e.querySelector(`.agent-chat__composer-combobox`))return{cancel:()=>void 0,ready:Promise.resolve()};let t,n=new Promise(e=>{t=e}),r=()=>t();return e.addEventListener(sx,r,{once:!0}),{cancel:()=>e.removeEventListener(sx,r),ready:n}}async function ax(e,t,n){let r=e.querySelector(`openclaw-router-outlet`),i=ix(e);try{await t(),await r?.updateComplete,await i.ready}finally{i.cancel()}n||await(r?.animate?.(cx,lx))?.finished.catch(()=>void 0)}async function ox(e){let{document:t,from:n,navigate:r,prefersReducedMotion:i,to:a}=e;return n!==`new-session`||a!==`chat`?r():ax(t,r,i)}var sx,cx,lx;function ux(){return(ux=t((()=>{sx=`openclaw-chat-route-ready`,cx=[{transform:`translateY(5px) scale(0.997)`},{transform:`none`}],lx={duration:180,easing:`cubic-bezier(0.16, 1, 0.3, 1)`}})))()}function dx(){return G(`chat.actions.copyAsMarkdown`)}function fx(e){return e.querySelector(`[data-copy-label]`)?.textContent??e.getAttribute(`aria-label`)}function px(e,t,n=!1){let r=e.parentElement?.querySelector(`[data-copy-feedback]`);r&&(r.hidden=!n,r.textContent=t);let i=e.querySelector(`[data-copy-label]`)?.lastChild;i?.nodeType===Node.TEXT_NODE?i.nodeValue=t:e.setAttribute(`aria-label`,t)}async function mx(e,t,n){let r=e.currentTarget;if(!r||r.dataset.copyState===`copying`)return!1;let i=String(Number(r.dataset.copyAttempt??`0`)+1);r.dataset.copyAttempt=i,r.dataset.copyState=`copying`,r.setAttribute(`aria-busy`,`true`),r.disabled=!0,px(r,n);let a=()=>r.isConnected&&r.dataset.copyAttempt===i,o=await Ct(t,a);if(delete r.dataset.copyState,r.removeAttribute(`aria-busy`),r.disabled=!1,!a())return!1;r.dataset.copyState=o?`copied`:`error`;let s=fx(r)??n,c=G(o?`common.copied`:`common.copyFailed`);px(r,c,!0);let l=o?_x:vx;return window.setTimeout(()=>{if(!a())return;delete r.dataset.copyState;let e=fx(r);px(r,e&&e!==c?e:s)},l),o}function hx(e,t=dx(),n=!1){return R`
<openclaw-tooltip .content=${t}>
<button
class=${n?`chat-copy-btn`:`btn btn--xs chat-copy-btn`}
type="button"
aria-label=${t}
@click=${n=>void mx(n,e,t)}
>
<span class="chat-copy-btn__icon" aria-hidden="true">
<span class="chat-copy-btn__icon-copy">${U.copy}</span>
<span class="chat-copy-btn__icon-check">${U.check}</span>
</span>
</button>
<span data-copy-feedback role="status" hidden></span>
</openclaw-tooltip>
`}function gx(e){return hx(e,dx(),!0)}var _x,vx;function yx(){return(yx=t((()=>{I(),W(),H(),Ur(),_x=1500,vx=2e3})))()}function bx(e){return e===`image`||e===`audio`||e===`video`||e===`document`}function xx(e){let t=S(e);if(!t||t.type!==`attachment`&&t.type!==`attachment_error`)return;let n=S(t.attachment);if(!n||!bx(n.kind)||typeof n.label!=`string`)return[];let r=typeof n.mimeType==`string`?n.mimeType:void 0;if(t.type===`attachment_error`)return n.code!==`file-not-found`&&n.code!==`unsupported-format`&&n.code!==`delivery-failed`?[]:[{type:`attachment_error`,attachment:{code:n.code,kind:n.kind,label:n.label,...r===void 0?{}:{mimeType:r}}}];if(typeof n.url!=`string`)return[];let i={url:n.url,kind:n.kind,label:n.label,...r===void 0?{}:{mimeType:r},...n.isVoiceNote===!0?{isVoiceNote:!0}:{},...typeof n.artifactId==`string`?{artifactId:n.artifactId}:{},...n.playback===`native`||n.playback===`transcode`?{playback:n.playback}:{}};for(let e of[`sizeBytes`,`durationMs`,`width`,`height`]){let t=c(n[e]);t!==void 0&&(e===`width`||e===`height`?t>0:t>=0)&&(i[e]=t)}return[{type:`attachment`,attachment:i}]}function Sx(){return(Sx=t((()=>{ue()})))()}function Cx(e,t){return!!(e.viewId&&e.viewId===t.viewId||e.url&&e.url===t.url)}function wx(e){let t=S(e);if(!(!t||t.audioAsVoice!==void 0&&t.audioAsVoice!==!0||t.replyToCurrent!==void 0&&t.replyToCurrent!==!0))return{audioAsVoice:t.audioAsVoice,replyToCurrent:t.replyToCurrent,replyToId:E(t,`replyToId`)}}function Tx(e){let t=S(e);if(!t)return;let n=O(t.sessionKey),r=O(t.agentId);return n||r?{...`sessionKey`in t?{sessionKey:n}:{},...`agentId`in t?{agentId:r}:{}}:void 0}function Ex(e){if(e.type!==`image`||e.omitted!==!0||O(e.url)!==void 0)return null;let t=_(e.bytes);return{type:`omitted_media`,media:{kind:`image`,...t===void 0?{}:{sizeBytes:t}}}}function Dx(e){let t=e.toLowerCase();return[`user`,`assistant`,`system`].includes(t)?t:[`toolresult`,`tool_result`,`tool`,`function`].includes(t)?`tool`:e}function Ox(e){return typeof e?.toolCallId==`string`||typeof e?.tool_call_id==`string`||typeof e?.toolUseId==`string`||typeof e?.tool_use_id==`string`||typeof e?.toolName==`string`||typeof e?.tool_name==`string`}function kx(e){let t=S(e),n=t?.content;return Array.isArray(n)&&n.some(e=>{let t=S(e)?.type;return Ss(t)||Ps(t)})||Ox(t)?`toolResult`:E(t,`role`)??`unknown`}function Ax(e){let t=S(e),n=typeof t?.role==`string`?t.role.toLowerCase():``;return n===`toolresult`||n===`tool_result`}function jx(e){let t=S(e);return(typeof t?.role==`string`?Dx(t.role):`unknown`)===`tool`||Ox(t)}function Mx(e){let t=S(e),n=t?.type===`canvas`?S(t.preview):void 0;if(!n||n.kind!==`canvas`||n.surface===`tool_card`||n.render!==`url`)return null;let r={kind:`canvas`,surface:`assistant_message`,render:`url`};for(let e of[`title`,`url`,`viewId`,`className`,`style`]){let t=E(n,e);t!==void 0&&(r[e]=t)}let i=c(n.preferredHeight);i!==void 0&&(r.preferredHeight=i);let a=n.sandbox;(a===`strict`||a===`scripts`)&&(r.sandbox=a);let o=n.boardWidgetName;Ts(o)&&(r.boardWidgetName=o);let s=S(n.mcpApp),l=E(s,`viewId`);if(l?.trim()){r.mcpApp={viewId:l};for(let e of[`serverName`,`toolName`,`uiResourceUri`,`toolCallId`,`originSessionKey`]){let t=E(s,e);t!==void 0&&(r.mcpApp[e]=t)}}return r}function Nx(e){let t=io(e);return t?Ux[t]:void 0}function Px(e){let t=Nx(e),n=oa(t);return{kind:!n||n===`sticker`||n===`unknown`?`document`:n,mimeType:t,label:(()=>{try{if(/^https?:\/\//i.test(e)){let t=new URL(e);return t.pathname.split(`/`).pop()?.trim()||t.hostname||e}}catch{}return e.split(/[\\/]/).pop()?.trim()||e})()}}function Fx(e){if(e.type!==`audio`)return null;let t=S(e.source);if(!t)return null;let n=E(t,`media_type`)?.trim(),r=n?.toLowerCase().startsWith(`audio/`)?n:`audio/mpeg`,i=t.type,a=E(t,i===`base64`?`data`:`url`)?.trim();return!a||i!==`base64`&&i!==`url`?null:{type:`attachment`,attachment:{url:i===`base64`&&!a.startsWith(`data:`)?`data:${r};base64,${a}`:a,kind:`audio`,label:E(e,`label`)?.trim()||`Audio`,mimeType:r,...e.isVoiceNote===!0?{isVoiceNote:!0}:{}}}}function Ix(e){let t=e.type,n=E(e,`url`)?.trim();if(t!==`audio`&&t!==`video`||!n)return null;let r={url:n,kind:t,label:E(e,`fileName`)?.trim()||E(e,`label`)?.trim()||(t===`audio`?`Audio`:`Video`)};for(let t of[`mimeType`,`artifactId`]){let n=E(e,t);n!==void 0&&(r[t]=n)}t===`audio`&&e.isVoiceNote===!0&&(r.isVoiceNote=!0);let i=e.playback;(i===`native`||i===`transcode`)&&(r.playback=i);for(let n of[`sizeBytes`,`durationMs`,`width`,`height`]){let i=c(e[n]);i!==void 0&&(n===`width`||n===`height`?t===`video`&&i>0:i>=0)&&(r[n]=i)}return{type:`attachment`,attachment:r}}function Lx(e){let t=[];for(let n of e){let e=t[t.length-1];if(n.type===`text`&&e?.type===`text`){e.text=[e.text,n.text].filter(e=>e!==void 0).join(`
`);continue}t.push(n)}return t.filter(e=>e.type!==`text`||!!e.text?.trim())}function Rx(e){return Vi(e)}function zx(e){return e.map(e=>e.type!==`text`||typeof e.text!=`string`?e:{...e,text:Rx(e.text)}).filter(e=>e.type!==`text`||!!e.text?.trim())}function Bx(e,t,n){let r=Ms(e),i=xs(r.text,{extractAudioDirectives:!1}),a=[],o=t?.audioAsVoice===!0,s=t?.replyToId?.trim(),c=s?{kind:`id`,id:s}:t?.replyToCurrent===!0?{kind:`current`}:null,l=i.segments??[{type:`text`,text:i.text}];for(let e of l){if(e.type===`media`){if(Es(e.url)){a.push({type:`text`,text:`MEDIA:${e.url}`});continue}let t=Px(e.url);a.push({type:`attachment`,attachment:{url:e.url,kind:t.kind,label:t.label,mimeType:t.mimeType}});continue}e.text&&a.push({type:`text`,text:e.text})}for(let e of r.previews)e.surface!==`assistant_message`||n.some(t=>Cx(e,t))||a.push({type:`canvas`,preview:{...e,surface:`assistant_message`},rawText:null});let u=Lx(a.map(e=>e.type===`attachment`&&e.attachment.kind===`audio`&&o?Object.assign({},e,{attachment:{...e.attachment,isVoiceNote:!0}}):e));return{content:u.length>0?u:(i.mediaUrls??[]).some(Es)?(i.mediaUrls??[]).filter(Es).map(e=>({type:`text`,text:`MEDIA:${e}`})):c===null&&!o&&i.text.trim().length>0?[{type:`text`,text:i.text}]:[],audioAsVoice:o,replyTarget:c}}function Vx(e){let t=S(e)??{},n=kx(t),r=t.content,i=Array.isArray(r)?r:null,a=n===`assistant`,o=a?wx(t.openclawDelivery):void 0,s=(i??[]).flatMap(e=>{let t=Mx(e);return t?[t]:[]}),l=[],u=!1,d=null;if(typeof t.content==`string`){if(a){let e=Bx(t.content,o,s);l=e.content,u=e.audioAsVoice,d=e.replyTarget}else l=[{type:`text`,text:t.content}]}else if(i)l=i.flatMap(e=>{let t=S(e);if(!t)return[];let r=Ex(t);if(r)return[r];let i=t.type,c=E(t,`text`);if(i===`thinking`){let e=E(t,`thinking`);return e===void 0?[]:[{type:i,thinking:e}]}if(a){let e=Ix(t);if(e)return[e];let n=Fx(t);if(n)return[n]}else if(i===`audio`)return[];if(i===`attachment`||i===`attachment_error`)return xx(t)??[];if(i===`canvas`){let e=Mx(t);return e?[{type:`canvas`,preview:e,rawText:E(t,`rawText`)??null}]:[]}if(c!==void 0&&(i===`text`||n===`user`&&i===`input_text`||n===`assistant`&&(i===`input_text`||i===`output_text`))){if(a){let e=Bx(c,o,s);return u||=e.audioAsVoice,(e.replyTarget?.kind===`id`||e.replyTarget?.kind===`current`&&d===null)&&(d=e.replyTarget),e.content}return[{type:`text`,text:c,name:void 0,args:void 0}]}return[{type:i||`text`,text:c,name:t.name,args:Os(t)}]});else if(typeof t.text==`string`){if(a){let e=Bx(t.text,o,s);l=e.content,u=e.audioAsVoice,d=e.replyTarget}else l=[{type:`text`,text:t.text}]}let f=c(t.timestamp)??Date.now(),p=E(t,`id`),m=S(t.__openclaw),h=E(m,`replyToId`)?.trim()??``;h&&(d={kind:`id`,id:h});let g=S(m?.replyToPreview),_=E(g,`text`)?.trim()??``,v=E(g,`senderLabel`)?.trim()??``,y=gs(m?.senderIdentity),b=Wc({identity:y,id:m?.senderId,name:m?.senderName,username:m?.senderUsername,profileAvatarUrl:y?.type===`profile`?m?.senderProfileAvatarUrl:void 0}),x=E(t,`senderLabel`)?.trim()??``,C=x?x.replace(Hx,``).trim():Uc(b),w=b??(C?{name:C}:null);l=zx(l);let ee=Tx(t.senderSession);return{role:n,content:l,timestamp:f,id:p,senderLabel:C,...ee?{senderSession:ee}:{},...w?{sender:w}:{},...u?{audioAsVoice:!0}:{},..._?{replyPreview:{text:_,...v?{senderLabel:v}:{}}}:{},...d?{replyTarget:d}:{}}}var Hx,Ux;function Wx(){return(Wx=t((()=>{ta(),ue(),Xi(),ks(),hs(),js(),Ns(),uo(),Sx(),Kc(),Hx=/\s+\(([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\)$/iu,Ux={png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,webp:`image/webp`,gif:`image/gif`,heic:`image/heic`,heif:`image/heif`,ogg:`audio/ogg`,oga:`audio/ogg`,mp3:`audio/mpeg`,wav:`audio/wav`,flac:`audio/flac`,aac:`audio/aac`,opus:`audio/opus`,m4a:`audio/mp4`,m2a:`audio/mpeg`,mp4:`video/mp4`,webm:`video/webm`,mov:`video/quicktime`,pdf:`application/pdf`,txt:`text/plain`,md:`text/markdown`,csv:`text/csv`,json:`application/json`,zip:`application/zip`}})))()}function Gx(e,t){let n=!1;for(let e of t.content)if(e.type===`text`)n||=!!e.text?.trim();else if(e.type!==`thinking`&&!Ps(e.type)&&!Ss(e.type))return`non-text`;return n||Lf(e)?.trim()?`text`:`none`}function Kx(e){return eS.test(e)}function qx(e){let t=C(e);if(!t||v(t.role)!==`assistant`)return!1;if(typeof t.text==`string`)return Kx(t.text);let n=If(e);return typeof n==`string`&&Kx(n)}function Jx(e){let t=C(e);if(!t||v(t.role)!==`toolresult`)return!1;let n=If(e);return typeof n==`string`&&n.trim()===tS}function Yx(e){return Af(e).shouldSkip}function Xx(e){return Kx(e)||Yx(e)}function Zx(e){return qx(e)||Mf(e)}function Qx(e){return!(Zx(e)||Jx(e)||Wf(e))}function $x(e){return Array.isArray(e)?e.filter(Qx):[]}var eS,tS;function nS(){return(nS=t((()=>{js(),Nf(),qf(),eS=/^\s*NO_REPLY\s*$/,tS=`[openclaw] missing tool result in session history; inserted synthetic error result for transcript repair.`})))()}function rS(e,t){return`${uS}${t(e)}${dS}`}function iS(e){let t=fS.get(e);if(t)return t;let n=new Set,r=0;for(let t=0;t<e.length;t+=1){let i=e[t]?.type;i===`link_open`?r+=1:i===`link_close`?r=Math.max(0,r-1):i===`image`&&r>0&&n.add(t)}return fS.set(e,n),n}function aS(e,t){return iS(e).has(t)}function oS(e,t,n){let r=``,i=0;for(let a of t){let t=Math.max(i,Math.min(a.start,e.length)),o=Math.max(t,Math.min(a.end,e.length));r+=n(e.slice(i,t)),o>t&&(r+=rS(e.slice(t,o),n)),i=o}return r+n(e.slice(i))}function sS(e,t){e.use(_a,{isStructuralHtmlInline:e=>e.meta?.taskListPlugin===!0}),e.renderer.rules[zi]=(e,n)=>{let r=e[n];return r?rS(r.content,t):``}}function cS(e,t){e.renderer.rules.image=(e,n,r,i)=>{let a=e[n];if(!a)return``;let o=String(a.attrGet(`src`)??``).trim(),s=t.normalizeLabel(a.content),c=a.meta?.assistantTranscriptRoleImage,l=aS(e,n);if(!t.isInlineDataImage(o)&&!t.allowRemoteImages(i)){let e=c?oS(c.text,c.spans,t.escapeHtml):t.escapeHtml(s);return t.renderExternalImageFallback(o,e,l)}let u=`<img class="markdown-inline-image" src="${t.escapeHtml(o)}" alt="${t.escapeHtml(s)}">`,d=l||!t.interactiveImages(i)?u:`<button class="markdown-inline-image-button" type="button" aria-label="${t.escapeHtml(t.openImageLabel(s,a.content.trim().length>0))}">${u}</button>`;return c?`${rS(`${t.assistantLabel()}:`,t.escapeHtml)} ${d}`:d}}function lS(e,t,n,r){let i=r(e);return t?`<div class="markdown-plain-text-fallback">${rS(`${n()}:`,r)}\n<span class="markdown-plain-text-source">${i}</span></div>`:`<div class="markdown-plain-text-fallback">${i}</div>`}var uS,dS,fS;function pS(){return(pS=t((()=>{fa(),uS=`<code class="assistant-transcript-role">`,dS=`</code>`,fS=new WeakMap})))()}function X(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function mS(e){return e.replace(/\r\n?|[\u2028\u2029]/g,`
`)}function hS(e){if(!_S.test(e))return!1;let t=mS(e).split(`
`).filter(e=>e.trim().length>0);if(t.length<2)return!1;let n=0;for(let e of t){if(!gS.test(e)||!_S.test(e))return!1;n+=Array.from(e).filter(e=>_S.test(e)).length}return n>=8}var gS,_S;function vS(){return(vS=t((()=>{gS=/^[\t \u00a0▀▄█]+$/u,_S=/[▀▄█]/u})))()}function yS(e){return e}function bS(e){return yS(e)?.codeBlockChrome!==`none`}function xS(e){return yS(e)?.codeBlockInteraction===`interactive`}function SS(e){return`${FS}${JSON.stringify(e)}`}function CS(e,t){if(t!==IS||!e.startsWith(FS))return e;try{let t=JSON.parse(e.slice(24));return typeof t==`string`?t:e}catch{return e}}function wS(e){let t=e.target;if(!(t instanceof Element))return;TS(t);let n=t.closest(`.code-block-copy`);if(!n)return;let r=CS(n.dataset.code??``,n.dataset.codeEncoding),i=(RS.get(n)??0)+1;RS.set(n,i),Ct(r).then(e=>{if(RS.get(n)!==i)return;n.classList.toggle(`copied`,e),n.classList.toggle(`copy-failed`,!e),n.setAttribute(`aria-label`,G(e?`common.copied`:`common.copyFailed`)),clearTimeout(zS.get(n));let t=setTimeout(()=>{n.classList.remove(`copied`),n.classList.remove(`copy-failed`),n.setAttribute(`aria-label`,G(`common.copyCode`)),zS.delete(n)},e?1500:2e3);zS.set(n,t)})}function TS(e){let t=e.closest(`.code-block-wrapper`);if(!t)return;e.closest(`.code-block-expand`)&&(t.classList.add(`is-expanded`),e.closest(`.code-block-expand`)?.setAttribute(`aria-expanded`,`true`));let n=e.closest(`.code-block-wrap`);if(!n)return;let r=t.classList.toggle(`is-wrapped`),i=G(r?`chat.codeBlock.disableWrap`:`chat.codeBlock.enableWrap`);n.setAttribute(`aria-pressed`,String(r)),n.setAttribute(`aria-label`,i),n.title=i,ES(t)}function ES(e){let t=e.querySelector(`.code-block-viewport`),n=t?.querySelector(`code`);if(!t||!n)return;let r=!e.classList.contains(`is-wrapped`)&&n.scrollWidth>t.clientWidth+1;e.classList.toggle(`has-horizontal-overflow`,r)}function DS(e,t){let n=t.trim().toLowerCase();try{if(n&&Zs.getLanguage(n))return Zs.highlight(e,{language:n,ignoreIllegals:!0}).value;if(!n&&e.trim()){let t=Zs.highlightAuto(e);if(t.relevance>=2)return t.value}}catch{}return X(e)}function OS(e){return DS(e,`json`)}function kS(e,t){let n=[t.includes(`hljs-`)?`hljs`:``,e?`language-${e}`:``].filter(Boolean);return n.length>0?` class="${X(n.join(` `))}"`:``}function AS(e,t,n={}){if(n.blockArt||hS(e))return`<pre><code class="markdown-block-art">${X(e)}</code></pre>`;let r=n.highlight===!1?X(e):DS(e,t);return`<pre><code${kS(t,r)}>${r}</code></pre>`}function jS(e,t){return`<div class="code-block-header"><span class="code-block-lang">${X(e||G(`chat.codeBlock.languageFallback`))}</span><div class="code-block-actions">${t}</div></div>`}function MS(e,t,n){let r=n??e;return`<button type="button" class="code-block-copy" data-code="${X(t?SS(r):r)}"${t?` data-code-encoding="${IS}"`:``} aria-label="${X(G(`common.copyCode`))}"><span class="code-block-copy__idle" aria-hidden="true"></span><span class="code-block-copy__done" aria-hidden="true"></span><span class="code-block-copy__failed" aria-hidden="true">!</span></button>`}function NS(e,t,n,r={}){let i=r.blockArt||hS(e),a=AS(e,t,{blockArt:i,highlight:r.highlight});if(!bS(n)&&!xS(n))return a;let o=bS(n)?MS(e,i,r.copyText):``;if(!xS(n))return`<div class="code-block-wrapper">${jS(t,o)}${a}</div>`;let s=[`text`,`md`,`markdown`].includes(t.trim().toLowerCase())?0:Math.max(0,PS(e).split(`
`).length-LS),c={count:String(s)},l=G(s===1?`chat.codeBlock.showHiddenLine`:`chat.codeBlock.showHiddenLines`,c),u=G(s===1?`chat.codeBlock.hiddenLine`:`chat.codeBlock.hiddenLines`,c),d=s?`<button type="button" class="code-block-expand" aria-label="${X(l)}" aria-expanded="false"><span class="code-block-chevron" aria-hidden="true"></span><span>${X(u)}</span></button>`:``,f=X(G(`chat.codeBlock.enableWrap`)),p=jS(t,`${`<button type="button" class="code-block-wrap" aria-label="${f}" title="${f}" aria-pressed="false"><span class="code-block-wrap__enable" aria-hidden="true"></span><span class="code-block-wrap__disable" aria-hidden="true"></span></button>`}${o}`);return`<div class="code-block-wrapper${s?` is-collapsible`:``}">${p}<div class="code-block-viewport">${a}</div>${d}</div>`}function PS(e){return e.endsWith(`
`)?e.slice(0,-1):e}var FS,IS,LS,RS,zS;function BS(){return(BS=t((()=>{fc(),ac(),bc(),uc(),mc(),hc(),W(),vS(),FS=`openclaw:block-art-code:`,IS=`block-art-json`,LS=7,RS=new WeakMap,zS=new WeakMap;for(let[e,t]of Object.entries({bash:nc,cpp:Qs,css:xc,diff:ic,go:cc,java:Sc,javascript:oc,json:dc,markdown:gc,python:lc,rust:pc,typescript:vc,xml:sc,yaml:_c}))Zs.registerLanguage(e,t);Zs.registerAliases(`shell`,{languageName:`bash`})})))()}function VS(e){let t=e.target;if(!(t instanceof Element))return null;let n=t.closest(`a[data-file-path]`),r=n?.dataset.filePath;if(!r)return null;let i=n.dataset.fileLine;return{path:r,line:i?Number.parseInt(i,10):null}}function HS(e){if(e.key!==`Enter`&&e.key!==` `)return null;let t=VS(e);return t&&e.preventDefault(),t}function US(e){let t=oC.exec(e),n=t?.[1];return t&&n?{path:e.slice(0,t.index),line:Number.parseInt(n,10)}:{path:e,line:null}}function WS(e){if(e.includes(`/`)||e.includes(`\\`))return!1;let t=iC.exec(e);return!!(t?.[1]&&sC.has(t[1].toLowerCase()))}function GS(e){let t=e.trim();return!nC.test(t)&&!rC.test(t)&&!WS(t)?null:US(t)}function KS(e){return qS.test(e.trim())}var qS,JS,YS,XS,ZS,QS,$S,eC,tC,nC,rC,iC,aC,oC,sC;function cC(){return(cC=t((()=>{qS=/^(?:~\/|\/(?:Users|home|tmp|private\/tmp|var\/folders|private\/var\/folders)\/|\/[A-Za-z]:\/|[A-Za-z]:[\\/])/,JS=`[A-Za-z0-9_.@#+-]+`,YS=`[A-Za-z0-9]{1,8}`,XS=`:\\d{1,6}(?::\\d{1,6})?`,ZS=`${JS}\\.${YS}`,QS=`(?:~\\/|\\.\\.\\/|\\.\\/|\\/)(?:${JS}\\/)*${ZS}`,$S=`${JS}(?:\\/${JS})*\\/${ZS}`,eC=`(?:${QS}|${`[A-Za-z]:[\\\\/](?:${JS}[\\\\/])*${ZS}`}|${$S})(?:${XS})?`,tC=`${JS}\\.${YS}${XS}`,nC=RegExp(`^${eC}$`),rC=RegExp(`^${tC}$`),iC=RegExp(`^${JS}\\.(${YS})$`,`i`),aC=RegExp(`${eC}|${tC}`,`g`),oC=/:(\d{1,6})(?::\d{1,6})?$/,sC=new Set(`astro.bash.c.cc.cfg.cjs.conf.cpp.cs.css.diff.fish.go.h.hpp.htm.html.ini.java.js.json.jsonc.jsx.kt.kts.less.lock.log.markdown.md.mdx.mjs.patch.plist.proto.py.rb.rs.scss.sh.sql.svelte.svg.swift.toml.ts.tsx.txt.vue.xml.yaml.yml.zsh`.split(`.`))})))()}function lC(e){let t=e.split(gC);return t[t.length-1]??e}function uC(e){let t=lC(e).toLowerCase(),n=mC[t];if(n)return n;let r=t.lastIndexOf(`.`),i=r>0?t.slice(r+1):``;return hC[i]??`file`}function dC(e,t){let n=e;for(let e=t.length-1;e>=0;e--){let r=t[e],i=n.children.get(r);i||(i={pathCount:0,children:new Map},n.children.set(r,i)),n=i,n.pathCount+=1}}function fC(e,t){let n=e;for(let e=1;e<=t.length;e++)if(n=n.children.get(t[t.length-e])??n,n.pathCount===1||e===t.length)return e;return t.length}function pC(e){let t=[...new Set(e)],n=new Map(t.map(e=>[e,e.split(gC).filter(Boolean)])),r={pathCount:0,children:new Map};for(let e of n.values())dC(r,e);let i=new Map;for(let e of t){let t=n.get(e)??[],a=fC(r,t);i.set(e,t.slice(-a).join(e.includes(`\\`)?`\\`:`/`))}return i}var mC,hC,gC;function _C(){return(_C=t((()=>{mC={"bun.lock":`package`,"package-lock.json":`package`,"package.json":`package`,"pnpm-lock.yaml":`package`,"yarn.lock":`package`},hC={astro:`component`,avif:`image`,bash:`shell`,c:`code`,cc:`code`,cfg:`data`,cjs:`code`,conf:`data`,cpp:`code`,cs:`code`,css:`code`,cts:`code`,fish:`shell`,gif:`image`,go:`code`,h:`code`,hpp:`code`,htm:`code`,html:`code`,ico:`image`,ini:`data`,java:`code`,jpeg:`image`,jpg:`image`,js:`code`,json:`data`,jsonc:`data`,jsx:`component`,kt:`code`,kts:`code`,less:`code`,lock:`data`,markdown:`markdown`,md:`markdown`,mdx:`markdown`,mjs:`code`,mts:`code`,php:`code`,plist:`data`,png:`image`,proto:`data`,py:`code`,rb:`code`,rs:`code`,scss:`code`,sh:`shell`,sql:`code`,svelte:`component`,svg:`image`,swift:`code`,toml:`data`,ts:`code`,tsx:`component`,vue:`component`,webp:`image`,xml:`data`,yaml:`data`,yml:`data`,zsh:`shell`},gC=/[\\/]/})))()}function vC(e,t){let n=0;for(let r=t-1;r>=0&&e.charAt(r)===`\\`;--r)n+=1;return n%2==1}function yC(e,t){return t.some(([t,n])=>e>=t&&e<n)}function bC(e){let t=AC.exec(e);return t?t[1]?`details_open_expanded`:`details_open`:jC.test(e)?`details_close`:MC.test(e)?`summary_open`:NC.test(e)?`summary_close`:null}function xC(e,t=da(e),n=0){if(!/^[ \t]*<\/?(?:details|summary)(?=[\s>])/i.exec(e))return null;let r=[];for(let i of e.matchAll(kC)){let a=i.index??0;vC(e,a)||yC(n+a,t)||r.push({end:a+i[0].length,raw:i[0],start:a})}return r.length>0?r:null}function SC(e,t,n){if(!t.trim())return;let r=e.push(`paragraph_open`,`p`,1);r.map=[n,n+1];let i=e.push(`inline`,``,0);i.content=t,i.map=[n,n+1],i.children=[],e.push(`paragraph_close`,`p`,-1)}function CC(e,t,n){let r=e.push(`summary_open`,`summary`,1);r.map=[n,n+1];let i=e.push(`inline`,``,0);i.content=t,i.map=[n,n+1],i.children=[],e.push(`summary_close`,`summary`,-1)}function wC(e,t,n,r){let i=xC(t);if(!i)return!1;let a=i.map(e=>bC(e.raw)),o=Array.from({length:i.length},()=>-1),s=-1;for(let e=i.length-1;e>=0;--e)o[e]=s,a[e]===`summary_close`&&(s=e);let c=0,l=``,u=()=>{SC(e,l,n),l=``};for(let s=0;s<i.length;s+=1){let d=i[s];if(!d)continue;l+=t.slice(c,d.start);let f=a[s];if((f===`details_open`||f===`details_open_expanded`)&&r.length<32){u();let t=e.push(`details_open`,`details`,1);f===`details_open_expanded`&&t.attrSet(`open`,``),r.push({hasSummary:!1})}else if(f===`details_close`&&r.length>0)u(),e.push(`details_close`,`details`,-1),r.pop();else if(f===`summary_open`){let a=r.at(-1),f=o[s]??-1,p=f>=0?i[f]:void 0;if(a&&!a.hasSummary&&p){u(),CC(e,t.slice(d.end,p.start),n),a.hasSummary=!0,c=p.end,s=f;continue}l+=d.raw}else l+=d.raw;c=d.end}return l+=t.slice(c),u(),!0}function TC(e,t,n,r){if((e.sCount[t]??0)-e.blkIndent>=4)return!1;let i=(e.bMarks[t]??0)+(e.tShift[t]??0),a=e.eMarks[t]??e.src.length,o=e.src.slice(i,a);return xC(o)?r?!0:(wC(e,o,t,e[PC]??=[]),e.line=t+1,!0):!1}function EC(e){let t=e.trimStart();if(t.startsWith(`<!--`))return`comment`;if(t.startsWith(`<?`))return`processing_instruction`;if(t.startsWith(`<![CDATA[`))return`cdata`;if(/^<![A-Z]/.test(t))return`declaration`;let n=/^<(pre|script|style|textarea)(?=[\s>]|$)/i.exec(t)?.[1];return n?{element:n.toLowerCase()}:null}function DC(e,t){return typeof e==`object`?t.toLowerCase().includes(`</${e.element}>`):e===`comment`?t.includes(`-->`):e===`processing_instruction`?t.includes(`?>`):e===`declaration`?t.includes(`>`):t.includes(`]]>`)}function OC(e){e.block.ruler.before(`html_block`,`details_block`,TC,{alt:[`paragraph`,`reference`,`blockquote`]}),e.core.ruler.after(`block`,`details_balance`,e=>{let t=[],n=[];for(let r of e.tokens){if(r.type===`details_open`){n.push({hasSummary:!1}),t.push(r);continue}if(r.type===`summary_open`){let e=n.at(-1);e&&(e.hasSummary=!0),t.push(r);continue}if(r.type===`details_close`){n.pop(),t.push(r);continue}if(r.type!==`html_block`||n.length===0){t.push(r);continue}let i=r.level,a=[],o={push(t,n,r){let o=new e.Token(t,n,r);return o.block=!0,r<0&&--i,o.level=i,r>0&&(i+=1),a.push(o),o}},s=r.content.split(`
`),c=``,l=null,u=()=>{if(!c)return;let e=o.push(`html_block`,``,0);e.content=c,e.map=r.map,c=``};for(let[e,t]of s.entries()){let i=e<s.length-1;if(l){c+=t+(i?`
`:``),DC(l,t)&&(l=null);continue}let a=EC(t);if(a){c+=t+(i?`
`:``),DC(a,t)||(l=a);continue}if(!xC(t)){c+=t+(i?`
`:``);continue}u(),wC(o,t,(r.map?.[0]??0)+e,n)}u(),t.push(...a)}for(;n.length>0;){let r=new e.Token(`details_close`,`details`,-1);r.block=!0,t.push(r),n.pop()}let r=0;for(let e of t)e.nesting<0&&--r,e.level=r,e.nesting>0&&(r+=1);e.tokens=t}),e.renderer.rules.details_open=(e,t)=>e[t]?.attrGet(`open`)===null?`<details>`:`<details open>`,e.renderer.rules.details_close=()=>`</details>
`,e.renderer.rules.summary_open=()=>`<summary>`,e.renderer.rules.summary_close=()=>`</summary>`}var kC,AC,jC,MC,NC,PC;function FC(){return(FC=t((()=>{Ui(),kC=/<\/?(?:details|summary)(?=[\s>])[^>]*>/gi,AC=/^<details( open)?>$/i,jC=/^<\/details>$/i,MC=/^<summary>$/i,NC=/^<\/summary>$/i,PC=Symbol(`markdownDetailsStack`)})))()}function IC(e,t,n){let r=e[t-1],i=e[n];return(r===void 0||/\s/.test(r)||`([{<"'\``.includes(r))&&(i===void 0||/\s/.test(i)||`.,;:!?)]}>"'`.includes(i))}function LC(e){let t=e.trim(),n=N(t);return!n||`agent:${n.agentId}:${n.rest}`!==t.toLowerCase()?null:{sessionKey:t,agentId:n.agentId}}function RC(e,t){e.core.ruler.after(`linkify`,`session-links`,e=>{if(e.env?.sessionLinks===!0)for(let n of e.tokens){if(n.type!==`inline`||!n.children)continue;let r=n.children,i=0;for(let n=0;n<r.length;n++){let a=r[n];if(!a)continue;if(a.type===`link_open`){i+=1;continue}if(a.type===`link_close`){i=Math.max(0,i-1);continue}if(i>0)continue;if(a.type===`code_inline`){let e=LC(a.content);e&&(a.meta={...a.meta,sessionLink:{sessionKey:e.sessionKey}});continue}if(a.type!==`text`)continue;let o=[],s=0;t.lastIndex=0;for(let n of a.content.matchAll(t)){let t=n.index,r=n[0],i=t+r.length;if(!IC(a.content,t,i)||!LC(r))continue;if(t>s){let n=new e.Token(`text`,``,0);n.content=a.content.slice(s,t),o.push(n)}let c=new e.Token(`link_open`,`a`,1);c.markup=`session-link`,c.attrSet(`class`,`markdown-session-link`),c.attrSet(`role`,`link`),c.attrSet(`tabindex`,`0`),c.attrSet(`data-session-key`,r);let l=new e.Token(`text`,``,0);l.content=r;let u=new e.Token(`link_close`,`a`,-1);u.markup=`session-link`,o.push(c,l,u),s=i}if(o.length!==0){if(s<a.content.length){let t=new e.Token(`text`,``,0);t.content=a.content.slice(s),o.push(t)}r.splice(n,1,...o),n+=o.length-1}}}})}function zC(e){let t=e.target;if(!(t instanceof Element))return null;let n=t.closest(`a[data-session-key]`)?.dataset.sessionKey;return n?LC(n):null}function BC(e,t,n=``){let r=e.target;if(!(r instanceof Element))return null;let i=r.closest(`a[href]`)?.getAttribute(`href`)?.trim(),a=globalThis.location;if(!i||!a)return null;let o;try{o=new URL(i,a.href)}catch{return null}if(o.origin!==a.origin)return null;let s=t(o.pathname,n);return s?{namespace:s.namespace,pathname:o.pathname,...o.search?{search:o.search}:{},...o.hash?{hash:o.hash}:{}}:null}function VC(e){if(e.key!==`Enter`&&e.key!==` `)return null;let t=zC(e);return t&&e.preventDefault(),t}function HC(e,t){if(`pathname`in t){let{namespace:n,...r}=t;e.navigate(n,r);return}let n=dt({context:e,face:`chat`,sessionKey:t.sessionKey,agentId:t.agentId,exactKey:!0,preferenceDerivedFace:!0});e.navigate(`chat`,n.options)}var UC;function WC(){return(WC=t((()=>{Te(),A(),UC=/agent:[^\s<>"'`]*[^\s<>"'`.,;:!?)}\]]/g})))()}function GC(e){return typeof e==`object`&&!!e&&`tableInteractions`in e&&e.tableInteractions===`enabled`}function KC(e){let t=e.renderer.rules.table_open,n=e.renderer.rules.table_close;e.renderer.rules.table_open=(e,n,r,i,a)=>GC(i)?`<div class="markdown-table" data-table-interactions><div class="markdown-table__viewport"><table>`:t?.(e,n,r,i,a)??`<table>
`,e.renderer.rules.table_close=(e,t,r,i,a)=>GC(i)?`</table></div><div class="markdown-table__actions"><button type="button" class="markdown-table__expand" aria-label="${X(G(`common.expandTable`))}"></button><button type="button" class="markdown-table__copy" aria-label="${X(G(`common.copyTable`))}"></button></div></div>`:n?.(e,t,r,i,a)??`</table>
`}function qC(e){return[...e.rows].map(e=>[...e.cells].map(e=>e.textContent?.trim()??``).join(` `)).join(`
`)}function JC(e){let t=e.querySelector(tw);if(!t)return;let n=t.scrollWidth-t.clientWidth>1;e.classList.toggle(`markdown-table--can-scroll-left`,n&&t.scrollLeft>1),e.classList.toggle(`markdown-table--can-scroll-right`,n&&t.scrollLeft+t.clientWidth<t.scrollWidth-1)}function YC(e){if(nw.has(e)){JC(e);return}let t=e.querySelector(tw),n=e.querySelector(`.markdown-table__expand`),r=e.querySelector(`.markdown-table__copy`);!t||!n||!r||(nw.add(e),xn(Kr.maximize,n),xn(U.copy,r),t.addEventListener(`scroll`,()=>JC(e),{passive:!0}),JC(e))}function XC(e){let t=rw.get(e);if(!t){let n=new Set,r=typeof ResizeObserver==`function`?new ResizeObserver(e=>{for(let t of e){let e=t.target.closest(ew);e&&JC(e)}}):null,i=()=>{for(let t of n)(!t.isConnected||!e.contains(t))&&(r?.unobserve(t),n.delete(t));for(let t of e.querySelectorAll(ew)){let e=t.querySelector(tw);YC(t),e&&!n.has(e)&&(n.add(e),r?.observe(e))}},a=new MutationObserver(i);a.observe(e,{childList:!0,subtree:!0}),t={release:()=>{a.disconnect(),r?.disconnect()},sync:i},rw.set(e,t)}return t.sync(),t}function ZC(e){let t=rw.get(e);rw.delete(e),t?.release(),t?.closeDialog?.()}async function QC(e,t,n){let r=rw.get(n)??XC(n);if(r.closeDialog)return;let i,a=()=>{r.closeDialog===a&&delete r.closeDialog,i?.remove()};r.closeDialog=a;try{if(await D(()=>import(`./modal-dialog-DIUpFxKy.js`),__vite__mapDeps([39,3,1,2,4,5,6,7,8]),import.meta.url),r.closeDialog!==a||!n.isConnected||!t.isConnected)return;i=document.createElement(`openclaw-modal-dialog`),i.className=`markdown-table-modal`,i.label=G(`common.expandedTable`),i.setReturnFocusTarget(t);let o=e=>{let t=Pe(e);!t||e instanceof KeyboardEvent&&e.key!==`Enter`&&e.key!==` `||setTimeout(()=>{(e.type===`click`||e.defaultPrevented||e instanceof MouseEvent&&e.button===1&&t.hasAttribute(`href`))&&a()},0)};i.addEventListener(`modal-cancel`,a),xn(R`
<div
class="markdown-table-dialog chat-text"
@click=${o}
@auxclick=${o}
@keydown=${o}
>
<button
type="button"
class="markdown-table-dialog__close"
aria-label=${G(`common.closeTable`)}
autofocus
@click=${a}
>
${U.x}
</button>
${e.cloneNode(!0)}
</div>
`,i),n.append(i)}finally{i||a()}}function $C(e){let t=e.target;if(!(t instanceof Element))return;let n=t.closest(ew);if(!n)return;YC(n);let r=n.querySelector(`table`);if(!r)return;let i=t.closest(`.markdown-table__expand`);if(i&&e.currentTarget instanceof HTMLElement){QC(r,i,e.currentTarget);return}let a=t.closest(`.markdown-table__copy`);a&&Ct(qC(r)).then(e=>{a.setAttribute(`aria-label`,G(e?`common.copied`:`common.copyFailed`)),e&&xn(U.check,a),clearTimeout(iw.get(a));let t=setTimeout(()=>{xn(U.copy,a),a.setAttribute(`aria-label`,G(`common.copyTable`)),iw.delete(a)},e?1500:2e3);iw.set(a,t)})}var ew,tw,nw,rw,iw;function aw(){return(aw=t((()=>{I(),W(),Jr(),H(),vS(),se(),ew=`.chat-text .markdown-table[data-table-interactions]`,tw=`.markdown-table__viewport`,nw=new WeakSet,rw=new WeakMap,iw=new WeakMap})))()}function ow(e,t,n,r){let i=e[t];if(!i)return``;let a=i.content;return n?vw.test(a.trim())?a:``:X(a)+(r?`
`:``)}function sw(e,t){let n=``;for(let r=t+1;r<e.length;r++){let t=e[r];if(!t||t.type===`link_close`)break;(t.type===`text`||t.type===`code_inline`)&&(n+=t.content)}return n.trim()}function cw(e){return e?.trim()||`image`}function lw(e){let t;try{t=new URL(e)}catch{return null}return t.protocol===`https:`||t.protocol===`http:`?t:null}function uw(e){let t=e.pathname.split(`/`).filter(Boolean),n=Si(e);if(n)return t.length===4&&!e.search&&!e.hash?`#${n.number}`:e.href;if(t.length===2)return t.map(e=>di(e)??e).join(`/`);if(t[2]===`blob`&&t.length>4){let e=di(t.at(-1)??``);if(e)return e}return[`github.com`,...(t.length>2?t.slice(2):t).map(e=>di(e)??e)].join(`/`)}function dw(){let e=new rc({html:!0,breaks:!0,linkify:!0}),t=e.renderer.rules.code_inline;return e.enable(`strikethrough`),sS(e,X),OC(e),KC(e),e.linkify.set({fuzzyLink:!1}),e.linkify.add(`www`,{validate(e,t){let n=e.slice(t),r=n.match(/^\.(?:[a-zA-Z0-9-]+\.?)+[^\s<\u2E80-\u2FFF\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\u3400-\u4DBF\u4E00-\u9FFF\uAC00-\uD7AF\uF900-\uFAFF\uFF01-\uFF60]*/);if(!r)return 0;let i=r[0].length,a={")":`(`,"]":`[`,"}":`{`,'"':`"`,"'":`'`},o={};for(let[e,t]of Object.entries(a)){o[e]=0;for(let r=0;r<i;r++){let i=n.charAt(r);t===e?i===t&&(o[e]=+(o[e]===0)):i===t?o[e]=(o[e]??0)+1:i===e&&(o[e]=(o[e]??0)-1)}}for(;i>0;){let e=n.charAt(i-1);if(/[?!.,:*_~]/.test(e)){i--;continue}if(e===`;`){let e=i-2;for(;e>=0&&/[a-zA-Z0-9]/.test(n.charAt(e));)e--;if(e>=0&&n.charAt(e)===`&`&&e<i-2){i=e;continue}break}let t=a[e];if(t!==void 0){if(t===e){if((o[e]??0)!==0){o[e]=0,i--;continue}}else if((o[e]??0)<0){o[e]=(o[e]??0)+1,i--;continue}}break}return i},normalize(e){e.url=`http://`+e.url}}),e.validateLink=()=>!0,e.core.ruler.after(`linkify`,`disallowed-link-schemes`,e=>{for(let t of e.tokens){let e=t.children;if(t.type!==`inline`||!e)continue;let n=!1;for(let t of e)t.type===`link_open`&&mw.test(String(t.attrGet(`href`)??``))?(t.hidden=!0,n=!0):t.type===`link_close`&&n&&(t.hidden=!0,n=!1)}}),e.core.ruler.after(`linkify`,`linkify-cjk-trim`,e=>{for(let t of e.tokens){if(t.type!==`inline`||!t.children)continue;let n=t.children;for(let t=n.length-1;t>=0;t--){let r=n[t];if(!r||r.type!==`link_open`||r.markup!==`linkify`)continue;let i=n[t+1];if(!i||i.type!==`text`)continue;let a=i.content,o=a.length;for(;o>0&&hw.test(a.charAt(o-1));)o--;if(o<=0||o===a.length)continue;let s=a.slice(0,o),c=a.slice(o),l=String(r.attrGet(`href`)??``),u=l.indexOf(a),d=u>0?l.slice(0,u):``;r.attrSet(`href`,d+s),i.content=s;for(let r=t+1;r<n.length;r++)if(n[r]?.type===`link_close`){let t=new e.Token(`text`,``,0);t.content=c,n.splice(r+1,0,t);break}}}}),e.core.ruler.after(`linkify`,`file-links`,e=>{if(e.env?.fileLinks!==!0)return;let t=[];for(let n of e.tokens){if(n.type!==`inline`||!n.children)continue;let r=n.children,i=0;for(let n=0;n<r.length;n++){let a=r[n];if(!a)continue;if(a.type===`link_open`){let e=String(a.attrGet(`href`)??``);if(e){let t=e;try{t=decodeURIComponent(e)}catch{}if(!t.includes(`://`)){let e=GS(t)??(KS(t)?US(t.trim()):null);if(e){a.attrs=a.attrs?.filter(([e])=>e!==`href`)??null,a.attrJoin(`class`,`markdown-file-link`),a.attrSet(`role`,`button`),a.attrSet(`tabindex`,`0`),a.attrSet(`data-file-path`,e.path),a.attrSet(`data-file-kind`,uC(e.path)),e.line!==null&&a.attrSet(`data-file-line`,String(e.line));let i=t.trim();sw(r,n)!==i&&a.attrSet(`title`,i)}}}i+=1;continue}if(a.type===`link_close`){i=Math.max(0,i-1);continue}if(i>0)continue;if(a.type===`code_inline`){let e=GS(a.content);if(e){let n=a.content.trim(),r={path:e.path,line:e.line,title:null};a.meta={...a.meta,fileLink:r},t.push({path:e.path,reference:n,applyLabel:e=>{a.content=e,r.title=e===n?null:n}})}continue}if(a.type!==`text`)continue;let o=[],s=0;aC.lastIndex=0;for(let n of a.content.matchAll(aC)){let r=n.index,i=n[0],c=r+i.length;if(!IC(a.content,r,c))continue;let l=GS(i);if(!l)continue;if(r>s){let t=new e.Token(`text`,``,0);t.content=a.content.slice(s,r),o.push(t)}let u=new e.Token(`link_open`,`a`,1);u.markup=`file-link`,u.attrSet(`class`,`markdown-file-link`),u.attrSet(`role`,`button`),u.attrSet(`tabindex`,`0`),u.attrSet(`data-file-path`,l.path),u.attrSet(`data-file-kind`,uC(l.path)),l.line!==null&&u.attrSet(`data-file-line`,String(l.line));let d=new e.Token(`text`,``,0);d.content=i;let f=new e.Token(`link_close`,`a`,-1);f.markup=`file-link`,o.push(u,d,f),t.push({path:l.path,reference:i,applyLabel:e=>{d.content=e,e!==i&&u.attrSet(`title`,i)}}),s=c}if(o.length!==0){if(s<a.content.length){let t=new e.Token(`text`,``,0);t.content=a.content.slice(s),o.push(t)}r.splice(n,1,...o),n+=o.length-1}}}let n=pC(t.map(e=>e.path));for(let e of t){let t=n.get(e.path)??e.path;e.applyLabel(t+e.reference.slice(e.path.length))}}),RC(e,UC),e.core.ruler.after(`linkify`,`web-link-classes`,e=>{for(let t of e.tokens){if(t.type!==`inline`||!t.children)continue;let n=t.children;for(let t=0;t<n.length;t++){let r=n[t];if(r?.type!==`link_open`)continue;let i=String(r.attrGet(`href`)??``),a=i?lw(i):null;if(!a)continue;let o=r.markup===`linkify`||r.markup===`autolink`,s=a.hostname.toLowerCase(),c=s===`github.com`||s===`www.github.com`;o&&r.attrJoin(`class`,_w);let l=null;for(let e=t+1;e<n.length;e++){let t=n[e];if(!t||t.type===`link_close`)break;if((t.type===`text`||t.type===`code_inline`)&&t.content.trim()!==``){l=t;break}}if(c&&l&&r.attrJoin(`class`,gw),c&&o&&l&&(l.content=uw(a),r.attrSet(`title`,i??a.href)),!c&&l&&e.env.linkFavicons){let r=new e.Token(`link_favicon`,`img`,0);r.meta={hostname:s},n.splice(t+1,0,r),t+=1}}}}),e.use(fw.default,{enabled:!1,label:!1}),e.core.ruler.after(`github-task-lists`,`task-list-allowlist`,e=>{for(let[t,n]of e.tokens.entries()){if(n.type!==`list_item_open`||n.attrGet(`class`)!==`task-list-item`)continue;let r=e.tokens[t+2]?.children?.[0];r?.type===`html_inline`&&(r.meta={taskListPlugin:!0})}}),e.renderer.rules.html_block=(e,t,n,r)=>ow(e,t,r?.progressBars===!0,!0),e.renderer.rules.html_inline=(e,t,n,r)=>{let i=e[t];return i?.meta?.taskListPlugin===!0?i.content:ow(e,t,r?.progressBars===!0,!1)},e.renderer.rules.link_favicon=(e,t)=>{let n=e[t]?.meta?.hostname;return typeof n==`string`?`<img class="markdown-link-favicon" data-link-favicon-host="${X(n)}" alt="" role="presentation">`:``},e.renderer.rules.code_inline=(e,n,r,i,a)=>{let o=t(e,n,r,i,a),s=e[n]?.meta?.fileLink;if(s){let e=s.line===null?``:` data-file-line="${X(String(s.line))}"`,t=s.title===null?``:` title="${X(s.title)}"`;return`<a class="markdown-file-link" role="button" tabindex="0" data-file-path="${X(s.path)}" data-file-kind="${uC(s.path)}"${e}${t}>${o}</a>`}let c=S(e[n]?.meta?.sessionLink)?.sessionKey;return typeof c==`string`?`<a class="markdown-session-link" role="link" tabindex="0" data-session-key="${X(c)}">${o}</a>`:o},cS(e,{escapeHtml:X,isInlineDataImage:e=>pw.test(e),normalizeLabel:cw,assistantLabel:()=>G(`sessionsView.assistant`),openImageLabel:(e,t)=>G(`chat.imageLightbox.open`,{title:t?e:G(`chat.imageLightbox.untitled`)}),renderExternalImageFallback:(e,t,n)=>lw(e)?`<span class="markdown-external-image">${`<span>${X(G(`chat.externalImage.notLoaded`))}: ${t}</span>`}${n?``:` <a href="${X(e)}">${X(G(`chat.externalImage.open`))}</a>`}</span>`:t,interactiveImages:e=>e?.interactiveImages===!0,allowRemoteImages:e=>e?.mode===`document`}),e.renderer.rules.fence=(e,t,n,r)=>{let i=e[t];if(!i)return``;let a=i.info.trim().split(/\s+/)[0]||``,o=r?.streamingOpenFence===!0&&e.findLastIndex(({nesting:e})=>e!==-1)===t,s=NS(i.content,a,r,{copyText:PS(i.content),highlight:!o});return a.toLowerCase()===`mermaid`&&!o?`<div class="markdown-mermaid">${s}</div>`:s},e.renderer.rules.code_block=(e,t,n,r)=>{let i=e[t]?.content;return i===void 0?``:NS(i,``,r,{copyText:PS(i)})},e}var fw,pw,mw,hw,gw,_w,vw;function yw(){return(yw=t((()=>{$s(),fw=e(yc(),1),W(),_C(),bi(),pS(),BS(),FC(),cC(),WC(),aw(),vS(),pw=/^data:image\/[a-z0-9.+-]+;base64,/i,mw=/^(?!(?:https?|mailto):)[a-z][a-z0-9+.-]*:/i,hw=RegExp(`[\\u2E80-\\u2FFF\\u3000-\\u303F\\u3040-\\u309F\\u30A0-\\u30FF\\u3400-\\u4DBF\\u4E00-\\u9FFF\\uAC00-\\uD7AF\\uF900-\\uFAFF\\uFF01-\\uFF60]`),gw=`markdown-github-link`,_w=`markdown-bare-url`,vw=/^(?:<progress(?:\s[^<>]*)?>\s*(?:<\/progress>)?|<\/progress>)$/iu})))()}function bw(e={}){return{assistantTranscriptRoleHeaders:e.assistantTranscriptRoleHeaders??!1,codeBlockChrome:e.codeBlockChrome??`copy`,codeBlockInteraction:e.codeBlockInteraction??`static`,fileLinks:e.fileLinks??!1,interactiveImages:e.interactiveImages??!1,linkFavicons:e.linkFavicons??!1,progressBars:e.progressBars??!1,mode:e.mode??`message`,sessionLinks:e.sessionLinks??!1,tableInteractions:e.tableInteractions??`none`}}function xw(e){let t=e,n=0;for(let e=0;e<8;e+=1){let e=jw.exec(t)?.[0];if(!e)return{content:t,offset:n};t=t.slice(e.length),n+=e.length}return{content:t,offset:n}}function Sw(e){let t=Aw.exec(xw(e).content)?.[1];return t?{length:t.length,marker:t.charAt(0)}:null}function Cw(e,t){let n=xw(e).content.trimEnd(),r=Aw.exec(n),i=r?.[1];return!r||!i?!1:i.charAt(0)===t.marker&&i.length>=t.length&&n.slice(r[0].length).trim()===``}function ww(e,t,n,r,i){let a=xw(e),o=xC(a.content,r,i+a.offset);if(!o)return!1;let s=o.map(e=>bC(e.raw)),c=Array.from({length:o.length},()=>-1),l=-1;for(let e=o.length-1;e>=0;--e)c[e]=l,s[e]===`summary_close`&&(l=e);for(let e=0;e<o.length;e+=1){let r=s[e];if((r===`details_open`||r===`details_open_expanded`)&&t.length<32)t.push({hasSummary:!1});else if(r===`details_close`&&t.length>0)t.pop();else if(r===`summary_open`){let r=t.at(-1);if(!r||r.hasSummary)continue;let i=c[e]??-1;if(i>=0)r.hasSummary=!0,e=i;else if(n)return!0}}return!1}function Tw(e,t){return da(e.slice(t)).map(([e,n])=>[e+t,n+t])}function Ew(e,t={boundary:0,firstListOffset:null,hasLinkReferenceDefinition:!1,index:0,lastFenceOffset:0,lineMode:null,openFence:null}){let{boundary:n,firstListOffset:r,hasLinkReferenceDefinition:i,index:a,lastFenceOffset:o}=t,s=t.lineMode,c=t.openFence,l=[],u,d=t;for(;a<e.length;){let t=e.indexOf(`
`,a),f=t===-1?e.length:t+1;if(s){a=f,s=t===-1?s:null,d={boundary:n,firstListOffset:r,hasLinkReferenceDefinition:i,index:a,lastFenceOffset:o,lineMode:s,openFence:c};continue}let p=e.slice(a,t===-1?f:t),m=c;if(c)Cw(p,c)&&(c=null,o=f,l.length===0&&(n=f));else{r===null&&Mw.test(p)&&(r=a);let t=Sw(p);if(t)c=t,o=f;else{let t=xw(p).content;Pw.test(t)&&ww(p,l,!1,u??=Tw(e,r??n),a),l.length===0&&(Nw.test(t)&&(i=!0),p.trim()===``&&(n=f))}}a=f,l.length===0&&(t!==-1||Dw(p,m))&&(s=t===-1?m?`fence`:`plain`:null,d={boundary:n,firstListOffset:r,hasLinkReferenceDefinition:i,index:a,lastFenceOffset:o,lineMode:s,openFence:c})}return i?n=0:r!==null&&(n=Math.min(n,r)),{cursor:d,result:{boundary:n,tailRepairStart:c?null:Math.max(n,o)}}}function Dw(e,t){let n=xw(e).content.charAt(0);return n?t?n!==t.marker:!/[\s`~<[\]*+\-\d>]/u.test(n):!1}function Ow(e,t,n=e.length){if(!t)return Ew(e).result;let r=e.slice(0,n),i=Iw.get(t),a=Ew(r,i&&r.startsWith(i.markdown)?i.cursor:void 0);for(Iw.delete(t),Iw.set(t,{cursor:a.cursor,markdown:r});Iw.size>Fw;){let e=Iw.keys().next().value;if(e===void 0)break;Iw.delete(e)}return n===e.length?a.result:Ew(e,a.cursor).result}function kw(e,t=0){let n=e.slice(0,t)+Yi(e.slice(t),Lw);if(!n.includes(`<`))return n;let r=[],i=da(n),a=null,o=!1,s=0;for(;s<n.length;){let e=n.indexOf(`
`,s),t=e===-1?n.length:e+1,c=n.slice(s,e===-1?t:e);a?Cw(c,a)&&(a=null):(a=Sw(c),a||(o=ww(c,r,t===n.length,i,s))),s=t}return o?`${n}</summary>`:n}var Aw,jw,Mw,Nw,Pw,Fw,Iw,Lw;function Rw(){return(Rw=t((()=>{Ji(),Ui(),FC(),Aw=/^[ \t]{0,3}(`{3,}|~{3,})/,jw=/^[ \t]{0,3}(?:(?:>\s?)|(?:(?:[-+*]|\d{1,9}[.)])[ \t]+))/,Mw=/^[ \t]{0,3}(?:[-+*]|\d{1,9}[.)])[ \t]+/u,Nw=/^[ \t]*\[/u,Pw=/^[ \t]*<\/?(?:details|summary)(?=[\s>])/iu,Fw=8,Iw=new Map,Lw={katex:!1,linkMode:`text-only`}})))()}function zw(e){let t=gT.get(e);return t===void 0?null:(gT.delete(e),gT.set(e,t),t)}function Bw(e,t){if(gT.set(e,t),gT.size<=lT)return;let n=gT.keys().next().value;n&&gT.delete(n)}function Vw(e){if(dr(e)!==null)return!0;let t=Hw();return!t||e!==t&&!e.startsWith(`${t}/`)?!1:dr(e,t)!==null}function Hw(){return typeof window>`u`?``:$n(window.location.pathname)[0]}function Uw(e){return e.split(`/`).filter(Boolean)}function Ww(e){let t=Uw(e),n=Uw(Hw());return n.length===0||n.some((e,n)=>t[n]!==e)?t:t.slice(n.length)}function Gw(e,t){return t.every((t,n)=>e[n]===t)}function Kw(e){if(e.includes(`__openclaw__`)||e.includes(`__openclaw`))return!0;let t=e[0];return!t||mT.has(t)?!0:hT.some(t=>Gw(e,t))}function qw(e,t){if(pT.has(e))return!0;let n=t[0];return n?fT.has(n):!1}function Jw(e){let t=e.trim();if(!t.startsWith(`/`)||t.startsWith(`//`))return e;try{let n=new URL(t,dT);if(n.origin!==dT)return e;let r=n.pathname.replace(/\/+$/,``)||`/`;if(Vw(r))return e;let i=Uw(r);return Kw(Ww(r))?e:qw(r,i)?n.href:e}catch{return e}}function Yw(){oT||(oT=!0,tc.addHook(`afterSanitizeAttributes`,e=>{if(!(e instanceof HTMLAnchorElement))return;let t=e.getAttribute(`href`);if(!t)return;if(KS(t)){e.removeAttribute(`href`);return}let n=Jw(t);n!==t&&e.setAttribute(`href`,n);try{let t=new URL(n,window.location.href);if(t.protocol!==`http:`&&t.protocol!==`https:`&&t.protocol!==`mailto:`){e.removeAttribute(`href`);return}if(t.origin===window.location.origin&&Vw(t.pathname)){e.removeAttribute(`rel`),e.removeAttribute(`target`);return}}catch{}e.setAttribute(`rel`,`noreferrer noopener`),e.setAttribute(`target`,`_blank`)}))}function Xw(e){let t=e.truncated?`\n\n${G(`chat.markdown.truncated`,{total:String(e.total),shown:String(e.text.length)})}`:``;return`${e.text}${t}`}function Zw(e,t){Yw();let n=t.progressBars?iT:rT,r=t.mode===`document`,i=r?{text:e,truncated:!1,total:e.length}:Ft(e,sT),a=t.progressBars?Xw(i).replace(aT,``):Xw(i);if(hS(i.text))return tc.sanitize(NS(a,``,t,{blockArt:!0}),n);if(!r&&i.text.length>cT)return tc.sanitize($w(a,t),n);let o;try{o=_T.render(a,t)}catch(e){console.warn(`[markdown] md.render failed, falling back to plain text:`,e),o=$w(a,t)}return tc.sanitize(o,n)}function Qw(e,t={}){let n=bw(t),r=mS(zs(e)),i=r.trim();if(!i)return``;let a=hS(r)?r:i;if(i.length>uT)return Zw(a,n);let o=`${Qr.getLocale()}\0${n.assistantTranscriptRoleHeaders}\0${n.codeBlockChrome}\0${n.codeBlockInteraction}\0${n.fileLinks}\0${n.interactiveImages}\0${n.linkFavicons}\0${n.progressBars}\0${n.mode}\0${n.sessionLinks}\0${n.tableInteractions}\0${a}`,s=zw(o);if(s!==null)return s;let c=Zw(a,n);return Bw(o,c),c}function $w(e,t){return lS(mS(e),t.assistantTranscriptRoleHeaders,()=>G(`sessionsView.assistant`),X)}function eT(e,t={},n){let r=bw(t),i=mS(zs(e));if(hS(i))return[``,Zw(i,r)];let a=i.trim();if(!a)return[``,``];let o=Ft(a,sT),s=Xw(o),{boundary:c,tailRepairStart:l}=Ow(s,n,o.text.length),u=s.slice(0,c),d=s.slice(c),f=c>0?Qw(u,t):``;return d.trim()?[f,l===null?Zw(d,{...r,streamingOpenFence:!0}):Zw(kw(d,l-c),r)]:[f,``]}var tT,nT,rT,iT,aT,oT,sT,cT,lT,uT,dT,fT,pT,mT,hT,gT,_T;function vT(){return(vT=t((()=>{ec(),fe(),Gs(),sr(),Yn(),W(),Lt(),pS(),BS(),cC(),yw(),Rw(),vS(),tT=`a.b.blockquote.br.button.code.del.details.div.em.h1.h2.h3.h4.hr.i.input.li.ol.p.pre.s.span.strong.summary.table.tbody.td.th.thead.tr.ul.img`.split(`.`),nT=[`checked`,`class`,`disabled`,`href`,`open`,`rel`,`target`,`tabindex`,`title`,`start`,`src`,`alt`,`data-code`,`data-code-encoding`,`data-file-kind`,`data-file-line`,`data-file-path`,`data-link-favicon-host`,`data-session-key`,`data-table-interactions`,`type`,`aria-expanded`,`aria-label`,`aria-pressed`,`role`],rT={ALLOWED_TAGS:tT,ALLOWED_ATTR:nT,ADD_DATA_URI_TAGS:[`img`]},iT={...rT,ALLOWED_TAGS:[...tT,`progress`],ALLOWED_ATTR:[...nT,`value`,`max`]},aT=/<(script|style|iframe|object|template)\b[^>]*>[\s\S]*?<\/\1\s*>/giu,oT=!1,sT=14e4,cT=4e4,lT=500,uT=5e4,dT=`https://docs.openclaw.ai`,fT=new Set(`agent-runtime-architecture.announcements.auth-credential-semantics.automation.brave-search.channels.ci.clawhub.cli.concepts.date-time.debug.diagnostics.gateway.help.index.install.logging.maturity-scorecard.network.nodes.openclaw-agent-runtime.perplexity.plan.platforms.plugins.prose.providers.refactor.reference.security.specs.start.tools.tts.vps.web`.split(`.`)),pT=new Set(`/AGENTS.default,/RELEASING,/agent,/agent-loop,/agent-send,/agent-workspace,/android,/anthropic,/architecture,/audio,/auth-monitoring,/azure,/background-process,/bash,/bonjour,/browser,/browser-linux-troubleshooting,/bun,/camera,/clawd,/clawdhub,/compaction,/configuration,/context,/context-engine,/control-ui,/cron,/cron-jobs,/cron-vs-heartbeat,/dashboard,/device-models,/discord,/discovery,/docker,/doctor,/duckduckgo-search,/elevated,/exa-search,/experiments/plans/cron-add-hardening,/experiments/plans/group-policy-hardening,/faq,/gateway-lock,/gcp,/gemini-search,/getting-started,/glm,/gmail-pubsub,/grammy,/grok-search,/group-messages,/groups,/health,/heartbeat,/hubs,/images,/imessage,/ios,/kimi-search,/line,/linux,/location,/location-command,/lore,/mac/bun,/mac/canvas,/mac/child-process,/mac/dev-setup,/mac/health,/mac/icon,/mac/logging,/mac/menu-bar,/mac/peekaboo,/mac/permissions,/mac/release,/mac/remote,/mac/signing,/mac/skills,/mac/voice-overlay,/mac/voicewake,/mac/webchat,/mac/xpc,/macos,/mattermost,/mcp,/message,/messages,/minimax,/mistral,/model,/model-failover,/models,/moonshot,/multi-agent,/nix,/northflank,/oauth,/onboarding,/openai,/opencode,/opencode-go,/openrouter,/pairing,/pi,/pi-dev,/plugin,/podman,/poll,/presence,/provider-routing,/qianfan,/queue,/quickstart,/railway,/remote,/remote-gateway-readme,/render,/rpc,/sandbox,/sandboxing,/session,/session-tool,/sessions,/setup,/showcase,/signal,/skill-workshop,/skills,/skills-config,/slack,/slash-commands,/subagents,/tailscale,/talk,/telegram,/templates/AGENTS,/templates/BOOT,/templates/BOOTSTRAP,/templates/HEARTBEAT,/templates/IDENTITY,/templates/SOUL,/templates/TOOLS,/templates/USER,/test,/thinking,/timezone,/troubleshooting,/tui,/typebox,/updating,/voicewake,/web-fetch,/webchat,/webhook,/whatsapp,/windows,/wizard,/xiaomi,/zai`.split(`,`)),mT=new Set([`__openclaw`,`__openclaw__`,`_next`,`api`,`assets`,`avatar`,`manifest.json`,`media`,`res`,`socket.io`,`static`,`ws`,...te]),hT=[[`plugins`,`diffs`],[`plugins`,`diffs-language-pack`]],gT=new Map,_T=dw()})))()}function yT(e,t){let n=typeof e==`string`?e.trim():``;return n?s(n,t):void 0}function bT(e){return e!==void 0&&ET.has(e)}function xT(e){let t=C(e),n=yT(t?.id,256),r=yT(t?.label,80),i=yT(t?.status,32);if(!n||!r||!bT(i))return null;let a=yT(t?.riskLevel,40),o=yT(t?.userAuthorization,40),s=yT(t?.rationale,2e3);return{id:n,label:r,status:i,...a?{riskLevel:a}:{},...o?{userAuthorization:o}:{},...s?{rationale:s}:{}}}function ST(e){let t=C(e)?.approvalReviews;return Array.isArray(t)?t.slice(-16).map(xT).filter(e=>e!==null):[]}function CT(e,t,n){return{...C(e)??(e===void 0?{}:{toolDetails:e}),approvalReviews:[...t],...n?{approvalReviewOutcome:n}:{}}}function wT(e){let t=C(e)?.approvalReviewOutcome;return t===`approved`||t===`denied`||t===`reviewing`?t:void 0}function TT(e,t=[]){return t.includes(`denied`)||e.some(e=>[`denied`,`timed_out`,`aborted`].includes(e.status))?`denied`:t.includes(`reviewing`)||e.some(e=>e.status===`in_progress`)?`reviewing`:t.includes(`approved`)||e.some(e=>e.status===`approved`)?`approved`:null}var ET;function DT(){return(DT=t((()=>{ET=new Set([`in_progress`,`approved`,`denied`,`timed_out`,`aborted`])})))()}function OT(e,t=128){return typeof e==`string`&&e.length>0&&e.length<=t&&e.trim()===e}function kT(e){let t=C(e);if(!OT(t?.targetId)||!OT(t.profile))return;let n={targetId:t.targetId,profile:t.profile};if(t.target===`host`&&t.node===void 0)return{...n,target:`host`};if(t.target===`node`&&OT(t.node,256))return{...n,target:`node`,node:t.node}}function AT(e){return JSON.stringify([e?.target,e?.node,e?.profile])}function jT(e){return JSON.stringify([e.target,e.node,e.profile,e.targetId])}function MT(){return(MT=t((()=>{})))()}function NT(e){if(typeof e.messageId==`string`&&e.messageId.trim())return e.messageId;let t=e.__openclaw,n=C(t);return typeof n?.id==`string`&&n.id.trim()?n.id:void 0}function PT(e){return Array.isArray(e)?e.filter(e=>!!e&&typeof e==`object`):[]}function FT(e){if(typeof e!=`string`)return e;let t=e.trim();if(!t||!t.startsWith(`{`)&&!t.startsWith(`[`))return e;try{return JSON.parse(t)}catch{return e}}function IT(e){let t=e.trim();if(!t.startsWith(`{`)||!t.endsWith(`}`))return null;try{return a(JSON.parse(t))}catch{return null}}function LT(e){if(typeof e.text==`string`)return e.text;if(typeof e.content==`string`)return e.content;if(Array.isArray(e.content)){let t=e.content.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e.text;return typeof t==`string`?[t]:[]});if(t.length>0)return t.join(`
`)}}function RT(e){let t=e.isError??e.is_error;return typeof t==`boolean`?t:void 0}function zT(...e){for(let t of e){let e=a(t),n=e?.exitCode??e?.exit_code;if(typeof n==`number`&&Number.isInteger(n))return n}}function BT(e){return typeof e==`string`&&aE.has(e.trim().toLowerCase())}function VT(e){if(!e)return!1;let t=e.trim();if(!t)return!1;if(rE.test(t))return!0;if(t.length>iE||!t.startsWith(`{`)||!t.endsWith(`}`))return!1;let n;try{n=JSON.parse(t)}catch{return!1}if(!p(n))return!1;let r=n,i=RT(r);if(i!==void 0)return i;if(`error`in r){let e=r.error;if(typeof e==`string`)return e.trim().length>0;if(typeof e==`boolean`)return e;if(e&&typeof e==`object`)return!0}return BT(r.status)}function HT(e){let t=e.live!==!0||e.completed===!0;return e.isError??(t&&VT(e.outputText))}function UT(e,t){return HT(e)?`failed`:t===!0&&e.live===!0&&e.completed!==!0?`running`:e.completed===!0||e.live!==!0&&e.outputText!==void 0?`succeeded`:`unknown`}function WT(e,t){let n=ws(e,t);return n?.surface===`assistant_message`?{...n,surface:`assistant_message`}:void 0}function GT(e,t,n,r=n){let i=Cs(e),a=i?.surface===`assistant_message`?{...i,surface:`assistant_message`}:WT(t,n);if(a)return{...a,surface:`assistant_message`};let o=C(C(e)?.browserTab),c=kT(o);if(!(r!==`browser`||!o||!c))return{kind:`browser-tab`,...c,...typeof o.url==`string`?{url:s(o.url,2048)}:{},...typeof o.title==`string`?{title:s(o.title,512)}:{}}}function KT(e,t){return Is(e)||typeof e.callId==`string`&&e.callId.trim()||typeof t.toolCallId==`string`&&t.toolCallId.trim()||typeof t.tool_call_id==`string`&&t.tool_call_id.trim()||typeof t.toolUseId==`string`&&t.toolUseId.trim()||typeof t.tool_use_id==`string`&&t.tool_use_id.trim()||void 0}function qT(e,t){return typeof e.name==`string`&&e.name.trim()||typeof t.toolName==`string`&&t.toolName.trim()||typeof t.tool_name==`string`&&t.tool_name.trim()||`tool`}function JT(e,t,n){return KT(e,t)??`${qT(e,t)}:${n}`}function YT(e){if(e!=null){if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`?String(e):typeof e==`symbol`?e.description?`Symbol(${e.description})`:`Symbol()`:Object.prototype.toString.call(e)}}}function XT(e){let t=e?.trim().replace(/\s+/g,` `);if(t)return t.replace(/^with\s+/i,``).trim()||t}function ZT(e){return XT(e)?.toLowerCase().replace(/[\s._-]+/g,``)}function QT(e,t){let n=XT(e);if(!n)return;let r=ZT(n),i=ZT(t);return r&&i&&r===i?void 0:n}function $T(e){let t=XT(e);if(t)return s(t,120)}function eE(e){if(!p(e))return;let t=e;for(let e of oE){let n=t[e];if(typeof n!=`string`)continue;let r=n.split(/\r\n?|\n/).find(e=>e.trim().length>0),i=$T(r?Ce(r):void 0);if(i)return i}}function tE(e){let t=e,n=typeof t.role==`string`?t.role.toLowerCase():``,r=Ax(e)||n===`tool`||n===`function`||typeof t.toolName==`string`||typeof t.tool_name==`string`,i=PT(t.content),o=RT(t),s=t.__openclawToolStreamLive===!0,c=a(t.__openclawToolStreamDiffStat),l=typeof c?.added==`number`&&Number.isInteger(c.added)&&c.added>=0&&typeof c.removed==`number`&&Number.isInteger(c.removed)&&c.removed>=0?{added:c.added,removed:c.removed}:void 0,u=[],d=new WeakSet,f=NT(t);for(let e=0;e<i.length;e++){let n=i[e]??{};if(Ps(n.type)||typeof n.name==`string`&&(n.arguments!=null||n.args!=null||n.input!=null)){let r=FT(n.arguments??n.args??n.input),i=KT(n,t),a=n.details??t.details;u.push({id:JT(n,t,e),...i?{callId:i}:{},name:qT(n,t),args:r,inputText:YT(r),...a===void 0?{}:{details:a},...s?{live:!0,completed:t.__openclawToolStreamResultReceived===!0}:{},...l?{liveDiffStat:l}:{},messageId:f});continue}if(Ss(n.type)){let i=qT(n,t),a=JT(n,t,e),c=KT(n,t),l=u.find(e=>e.id===a)??u.find(e=>(!c||!e.callId)&&e.name===i&&e.outputText===void 0&&!d.has(e)),p=LT(n),m=n.details??t.details,h=r?qT({},t):void 0,g=GT(m,p,i,h&&h!==`browser`?h:l?.name??h??i),_=RT(n)??o,v=zT(n,m,p?IT(p):void 0,t);if(l){d.add(l),l.callId??=c,s||(l.completed=!0),l.outputText=p,l.preview=g,m!==void 0&&(l.details=m),_!==void 0&&(l.isError=_),v!==void 0&&(l.exitCode=v);continue}u.push({id:a,...c?{callId:c}:{},name:i,completed:!0,outputText:p,...m===void 0?{}:{details:m},messageId:f,..._===void 0?{}:{isError:_},...v===void 0?{}:{exitCode:v},preview:g})}}if(r&&u.length===0){let r=typeof t.toolName==`string`&&t.toolName||typeof t.tool_name==`string`&&t.tool_name||`tool`,i=Lf(e)??void 0,a=KT({},t),s=zT(t,t.details,i?IT(i):void 0);u.push({id:JT({},t,0),...a?{callId:a}:{},name:r,completed:Ax(e)||n===`tool`||n===`function`,outputText:i,...t.details===void 0?{}:{details:t.details},messageId:f,...o===void 0?{}:{isError:o},...s===void 0?{}:{exitCode:s},preview:GT(t.details,i,r)})}let p;for(let[e,t]of u.entries())t.preview?.kind!==`browser-tab`||t.callId||t.messageId||(p??=++sE,t.previewRevision=`${p}:${e}`);return u}function nE(e){if(!e||typeof e!=`object`)return tE(e);let t=cE.get(e);if(t)return t;let n=tE(e);return cE.set(e,n),n}var rE,iE,aE,oE,sE,cE;function lE(){return(lE=t((()=>{ks(),js(),MT(),Rt(),qf(),Wx(),rE=/^tool not found\.?$/i,iE=2e4,aE=new Set([`error`,`failed`,`timeout`]),oE=[`message`,`prompt`,`task`,`query`,`text`,`description`],sE=0,cE=new WeakMap})))()}function uE(e){return typeof e.itemId==`string`&&e.itemId.trim().length>0}function dE(e){return e.boundaryMarker!==!0&&!uE(e)}function fE(e,t){return t.trim()&&(e===null||t.startsWith(e))?t:e}function pE(e,t){return!t||!e.startsWith(t)?e:e.slice(t.length).trimStart()}function mE(e,t=e=>e){let n=null;for(let r of e)dE(r)&&(n=fE(n,t(r.text)));return n}function hE(){return(hE=t((()=>{})))()}function gE(e,t=``,n,r){let i=new URLSearchParams({source:e}),a=n?.trim();return a&&i.set(`mediaTicket`,a),r?.sessionKey&&i.set(`sessionKey`,r.sessionKey),r?.agentId&&i.set(`agentId`,r.agentId),`${ee(t)}/__openclaw__/assistant-media?${i.toString()}`}function _E(){return(_E=t((()=>{oe()})))()}function vE(e,t){let n=yE.length;return(No(`${e}:offset`)%n+t*(1+No(`${e}:stride`)%(n-1)))%n}var yE,bE,xE,SE;function CE(){return(CE=t((()=>{I(),F(),W(),tt(),ko(),yE=[`shelling`,`scuttling`,`clawing`,`pinching`,`molting`,`bubbling`,`tiding`,`reefing`,`cracking`,`sifting`,`brining`,`nautiling`,`krilling`,`barnacling`,`lobstering`,`tidepooling`,`pearling`,`snapping`,`surfacing`],bE=3e4,xE=45e3,SE=class extends hn{constructor(...e){super(...e),this.startMs=null,this.seed=``,this.polling=new Ro(this,1e3,()=>this.requestUpdate(),!1)}connectedCallback(){super.connectedCallback(),this.syncTimer()}updated(){this.syncTimer()}syncTimer(){this.isConnected&&this.startMs!=null?this.polling.start():this.polling.stop()}render(){if(this.startMs==null)return B;let e=Date.now()-this.startMs;if(e<bE)return B;let t=e-bE,n=Math.floor(t/xE),r=vE(this.seed,n);return R`<span>·</span> ${G(`chat.progressLabels.${yE[r]}`)}…`}},k([V({type:Number})],SE.prototype,`startMs`,void 0),k([V()],SE.prototype,`seed`,void 0),customElements.get(`openclaw-working-phrase`)||customElements.define(`openclaw-working-phrase`,SE)})))()}function wE(e){let t=Nt(e??``);return!!(t&&RE.has(t))}function TE(e){return Object.hasOwn(e.modelOverrides,e.sessionKey)?e.modelOverrides[e.sessionKey]==null?null:`user`:e.activeSession?.modelOverrideSource}function EE(e){let t=e.chatModelCatalog??[],n=e.modelOverrides;if(Object.hasOwn(n,e.sessionKey))return $t(n[e.sessionKey],t);let r=e.activeSession;return _t(r?.model,r?.modelProvider,t)}function DE(e){return _t(e.agentDefaultModel,void 0,e.chatModelCatalog??[])||_t(e.sessionsResult?.defaults?.model,e.sessionsResult?.defaults?.modelProvider,e.chatModelCatalog??[])}function OE(e){let t=e.trim().toLowerCase(),n=t.indexOf(`/`);return n<=0?t:`${Nt(t.slice(0,n))}/${t.slice(n+1)}`}function kE(e,t){let n=e.trim().toLowerCase();if(!n)return e;let r=OE(e);for(let e of[!1,!0]){let i=t.find(t=>!!t.disabled===e&&(t.value.trim().toLowerCase()===n||OE(t.value)===r));if(i)return i.value}return e}function AE(e,t){let n=new Set,r=[];for(let i of e.toSorted((e,t)=>Number(e.available===!1)-Number(t.available===!1)||Number(e.provider.trim().toLowerCase()!==Nt(e.provider))-Number(t.provider.trim().toLowerCase()!==Nt(t.provider)))){let e=be(i,t),a=e.value.trim(),o=a.toLowerCase();!a||n.has(o)||(n.add(o),r.push({...e,...i.available===!1?{disabled:!0,unavailableReason:i.unavailableReason}:{}}))}return r}function jE(e,t,n){let r=OE(_t(e,t,n)),i=n.filter(e=>OE(Ot(e.id,e.provider))===r);if(!(!i.length||i.some(e=>e.available!==!1||!e.unavailableReason)))return i.some(e=>e.unavailableReason===`cooldown`)?`cooldown`:i.some(e=>e.unavailableReason===`auth-failed`)?`auth-failed`:`missing-auth`}function ME(e){return e===`missing-auth`?G(`modelSetup.missingAuth`):e===`auth-failed`?`${G(`modelSetup.failure.auth`)}. ${G(`modelSetup.failureGuidance.auth`)}`:void 0}function NE(e){let t=e.chatModelCatalog??[],n=new Set(t.filter(e=>e.available!==!1).map(e=>OE(Ot(e.id,e.provider)))),r=t.filter(e=>e.available!==!1||!n.has(OE(Ot(e.id,e.provider)))),i=Qe(r),a=AE(r,i),o=kE(EE(e),a),s=kE(DE(e),a),c=on(s,i);return{currentOverride:o,defaultModel:s,defaultLabel:s?`Default (${c})`:`Default model`,modelOverrideSource:TE(e),options:a}}function PE(e){if(e===`auto`)return`auto`;if(e===`on`)return!0;if(e===`off`)return!1}function FE(e){let t=e?.effectiveFastMode??e?.fastMode,n=t===`auto`?G(`chat.commandResults.fast.autoValue`,{seconds:String(e?.fastAutoOnSeconds??60)}):G(t===!0?`chat.commandResults.fast.on`:`chat.commandResults.fast.off`),r=e?.effectiveFastModeSource,i=r===`session`?G(`chat.commandResults.fast.sourceSession`):r===`agent`?G(`chat.commandResults.fast.sourceAgent`):r===`config`?G(`chat.commandResults.fast.sourceModel`):r==="default"?G(`chat.commandResults.fast.sourceDefault`):``;return`${G(`chat.commandResults.fast.current`,{value:n})}${i}.`}function IE(e,t,n,r){let i=e.trim().toLowerCase();if(!i)return n??r;let a=new Set,o=new Set,s=!1;for(let e of t){let t=e.id.trim().toLowerCase()===i,n=Ot(e.id,e.provider).trim().toLowerCase()===i;if(!t&&!n)continue;s=!0;let r=Nt(e.provider);r&&(t&&a.add(r),n&&o.add(r))}return o.size===1?[...o][0]??null:n&&a.has(n)&&!o.has(n)?n:a.size===1?[...a][0]??null:s?null:n??r}function LE(e){let t=e.fastModeTarget,n=Nt(t?.modelProvider??``)||null,r=Nt(e.sessionsResult?.defaults?.modelProvider??``)||null,i=IE(e.currentModelOverride,e.catalog,n,r),a=t?.fastMode===`auto`?`auto`:t?.fastMode===!0?`on`:t?.fastMode===!1?`off`:``,o=i===`openai`,s=t?.effectiveFastMode??t?.fastMode,c=o?s===!0?`on`:s===`auto`?`auto`:`off`:a,l=wE(i),u=l||!!a,d=s===!0||s===`auto`,f=s===`auto`?`Auto`:d?`Fast`:o||c===`off`?`Standard`:`Default`,p=l?d?`off`:`on`:``;return{active:d,currentOverride:c,disabled:!u||!e.connected||e.loading||e.sending||!!e.activeRunId||e.stream!==null||!e.gatewayAvailable,label:f,nextValue:p,supported:u}}var RE;function zE(){return(zE=t((()=>{W(),Wt(),RE=new Set([`anthropic`,`minimax`,`minimax-portal`,`openai`,`xai`])})))()}function BE(e,t,n){let r=S(n)??Qn(Gn(e?.snapshot)??[],t?.trim());return r?Wc({id:r.id??r.email,name:r.name,identity:r.identity,profileAvatarUrl:r.avatarUrl}):null}function VE(){return(VE=t((()=>{Kc()})))()}function HE(e){return e.split(`;`,1)[0]?.trim().toLowerCase()??``}function UE(e){let t=/^data:([^,]*)/i.exec(e)?.[1];return t===void 0?void 0:HE(t)}var WE,GE,KE,qE;function JE(){return(JE=t((()=>{la(),I(),F(),W(),tt(),H(),$r(),WE=new Set([`image/avif`,`image/gif`,`image/jpeg`,`image/png`,`image/webp`]),GE=4,KE=2.5,qE=class extends pn{constructor(...e){super(...e),this.mediaKind=`image`,this.src=``,this.originalSrc=``,this.imageTitle=``,this.openOriginalUrl=``,this.scale=1,this.imageReady=!1,this.originalBlobUrl=``,this.originalUrlRequest=0,this.handleImageLoad=e=>{let t=e.currentTarget;t instanceof HTMLImageElement&&t===this.image&&this.initializePanzoom(t)},this.handleImageError=e=>{e.currentTarget===this.image&&(this.destroyPanzoom(),this.scale=1,this.imageReady=!1)},this.handlePanzoomChange=e=>{if(!(e instanceof CustomEvent))return;let t=e.detail;typeof t!=`object`||!t||!(`scale`in t)||typeof t.scale!=`number`||(this.scale=t.scale)},this.handleWheel=e=>{this.panzoom&&(e.preventDefault(),this.panzoom.zoomWithWheel(e))},this.handleDoubleClick=e=>{if(this.panzoom){if(e.preventDefault(),this.scale>1){this.resetZoom();return}this.panzoom?.zoomToPoint(KE,e)}},this.handleStagePointerDown=e=>{let t=e.currentTarget;if(e.button!==0||!e.isPrimary||e.target!==t||!(t instanceof HTMLElement)){this.backdropPointer=void 0;return}this.backdropPointer={pointerId:e.pointerId,clientX:e.clientX,clientY:e.clientY},t.setPointerCapture?.(e.pointerId)},this.handleStagePointerUp=e=>{let t=this.backdropPointer;this.backdropPointer=void 0;let n=e.currentTarget,r=this.shadowRoot?.elementFromPoint?.(e.clientX,e.clientY);e.button===0&&e.isPrimary&&t?.pointerId===e.pointerId&&r===n&&Math.hypot(e.clientX-t.clientX,e.clientY-t.clientY)<=4&&this.emitClose()},this.resetBackdropPointer=()=>{this.backdropPointer=void 0},this.handleMotionPreferenceChange=e=>{this.panzoom?.setOptions({duration:e.matches?0:200})},this.zoomIn=()=>this.panzoom?.zoomIn(),this.zoomOut=()=>this.panzoom?.zoomOut(),this.resetZoom=()=>this.panzoom?.reset({animate:!1}),this.handleKeydown=e=>{if(this.panzoom&&(e.key===`+`||e.key===`=`)){e.preventDefault(),this.zoomIn();return}if(this.panzoom&&e.key===`-`){e.preventDefault(),this.zoomOut();return}if(this.panzoom&&e.key===`0`){e.preventDefault(),this.resetZoom();return}if(e.key!==`Tab`)return;let t=[...this.focusables].filter(e=>!(e instanceof HTMLButtonElement&&e.disabled)),n=t[0],r=t.at(-1);if(!n||!r)return;let i=e.composedPath()[0];e.shiftKey&&i===n?(e.preventDefault(),r.focus()):!e.shiftKey&&i===r&&(e.preventDefault(),n.focus())},this.emitClose=()=>{this.dispatchEvent(new CustomEvent(`image-lightbox-close`,{bubbles:!0,composed:!0}))}}static{this.styles=kn`
:host {
--image-lightbox-control-background: rgba(12, 16, 24, 0.64);
--image-lightbox-control-background-hover: rgba(12, 16, 24, 0.78);
display: contents;
}
:host-context([data-theme-mode="dark"]) {
--image-lightbox-control-background: rgba(255, 255, 255, 0.16);
--image-lightbox-control-background-hover: rgba(255, 255, 255, 0.22);
}
openclaw-modal-dialog {
--openclaw-modal-width: 100vw;
--openclaw-modal-max-width: 100vw;
--openclaw-modal-max-height: 100dvh;
--openclaw-modal-backdrop-filter: none;
}
.lightbox {
width: 100vw;
height: 100dvh;
display: grid;
grid-template-rows: minmax(0, 1fr);
overflow: hidden;
}
.header {
display: contents;
}
.actions {
position: fixed;
z-index: 1;
top: max(16px, calc(12px + var(--safe-area-top, 0px)));
right: max(16px, calc(12px + var(--safe-area-right, 0px)));
display: inline-flex;
align-items: center;
gap: 4px;
}
.actions .action,
.action.zoom-control {
color: var(--media-foreground);
background-color: var(--image-lightbox-control-background);
-webkit-backdrop-filter: blur(16px) saturate(140%);
backdrop-filter: blur(16px) saturate(140%);
box-shadow: 0 6px 24px rgba(0, 0, 0, 0.18);
}
.actions .action {
border-radius: 999px;
transition: background-color 180ms ease;
}
.actions .action:hover,
.zoom-control:hover:not(:disabled) {
background-color: var(--image-lightbox-control-background-hover);
}
.title {
display: none;
}
.action {
min-height: 36px;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0 12px;
border: 0;
border-radius: var(--radius-md);
background: transparent;
color: #fff;
font: inherit;
font-size: 12px;
font-weight: 650;
text-decoration: none;
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.85);
}
.action:hover {
background: color-mix(in srgb, var(--text) 10%, transparent);
}
.action:focus-visible {
outline: 2px solid #fff;
outline-offset: 2px;
}
.action:focus:not(:focus-visible) {
outline: none;
}
.open-original {
min-height: 44px;
}
.open-original-icon {
display: none;
}
.close {
width: 44px;
height: 44px;
padding: 0;
color: rgba(255, 255, 255, 0.82);
}
.close svg {
width: 17px;
height: 17px;
/* Shadow DOM: global icon stroke rules don't reach in here; without a
stroke the open-path x icon renders invisible. */
fill: none;
stroke: currentColor;
stroke-width: 2;
stroke-linecap: round;
stroke-linejoin: round;
}
.stage {
min-height: 0;
width: 100%;
height: 100%;
display: grid;
place-items: center;
box-sizing: border-box;
padding: 20px 20px 72px;
overflow: hidden;
}
.image,
.video {
display: block;
min-width: 0;
min-height: 0;
max-width: 100%;
max-height: 100%;
height: auto;
object-fit: contain;
}
.image {
width: auto;
cursor: zoom-in;
-webkit-user-drag: none;
}
.video {
width: min(1280px, 100%);
background: var(--media-bg);
}
.image.zoomed {
cursor: grab;
}
.zoom-controls {
position: fixed;
z-index: 1;
bottom: max(14px, calc(10px + var(--safe-area-bottom, 0px)));
left: 50%;
display: inline-flex;
align-items: center;
gap: 4px;
transform: translateX(-50%);
}
.zoom-control {
min-width: 40px;
min-height: 40px;
padding: 0 10px;
border: 0;
font-size: 15px;
}
.zoom-control:disabled {
color: rgba(255, 255, 255, 0.8);
}
.zoom-level {
min-width: 58px;
font-size: 11px;
}
@media (max-width: 768px),
(max-width: 932px) and (max-height: 500px) and (orientation: landscape) {
openclaw-modal-dialog {
--openclaw-modal-width: 100vw;
--openclaw-modal-max-width: 100vw;
--openclaw-modal-max-height: 100dvh;
}
.lightbox {
width: 100vw;
height: 100dvh;
}
.stage {
padding: calc(68px + var(--safe-area-top, 0px)) calc(12px + var(--safe-area-right, 0px))
calc(64px + var(--safe-area-bottom, 0px)) calc(12px + var(--safe-area-left, 0px));
}
.open-original {
width: 44px;
padding: 0;
}
.open-original-label {
display: none;
}
.open-original-icon {
display: inline-flex;
}
.open-original-icon svg {
width: 17px;
height: 17px;
}
.zoom-control {
min-width: 44px;
min-height: 44px;
}
}
@media (prefers-reduced-motion: reduce) {
openclaw-modal-dialog {
--show-duration: 0ms;
--hide-duration: 0ms;
}
.actions .action {
transition: none;
}
}
`}connectedCallback(){super.connectedCallback(),this.motionQuery=globalThis.matchMedia?.(`(prefers-reduced-motion: reduce)`),this.motionQuery?.addEventListener(`change`,this.handleMotionPreferenceChange),this.hasUpdated&&(this.resolveOriginalUrl(),this.updateComplete.then(()=>{let e=this.image;e?.complete&&e.naturalWidth>0&&this.initializePanzoom(e)}))}disconnectedCallback(){this.originalUrlRequest+=1,this.motionQuery?.removeEventListener(`change`,this.handleMotionPreferenceChange),this.motionQuery=void 0,this.destroyPanzoom(),this.revokeOriginalBlobUrl(),super.disconnectedCallback()}updated(e){(e.has(`src`)||e.has(`originalSrc`)||e.has(`mediaKind`))&&(this.destroyPanzoom(),this.scale=1,this.resolveOriginalUrl())}render(){let e=this.imageTitle.trim()||G(`chat.imageLightbox.untitled`),t=this.mediaKind===`video`?G(`chat.mediaPlayer.videoPreview`,{title:e}):G(`chat.imageLightbox.label`,{title:e}),n=this.mediaKind===`video`?G(`chat.mediaPlayer.closeVideoPreview`):G(`chat.imageLightbox.close`),r=this.imageReady&&this.panzoom!==void 0;return R`
<openclaw-modal-dialog
class="mobile-edge-to-edge viewport-edge-to-edge"
label=${t}
@modal-cancel=${this.emitClose}
@keydown=${this.handleKeydown}
>
<section class="lightbox">
<header class="header">
<strong class="title">${e}</strong>
<div class="actions">
${this.openOriginalUrl?R`
<a
class="action open-original"
href=${this.openOriginalUrl}
target="_blank"
rel="noreferrer"
aria-label=${G(`chat.imageLightbox.openOriginal`)}
>
<span class="open-original-label">
${G(`chat.imageLightbox.openOriginal`)}
</span>
<span class="open-original-icon" aria-hidden="true">
${U.externalLink}
</span>
</a>
`:B}
<button
class="action close"
type="button"
autofocus
aria-label=${n}
@click=${this.emitClose}
>
${U.x}
</button>
</div>
</header>
<div
class="stage"
@pointerdown=${this.handleStagePointerDown}
@pointerup=${this.handleStagePointerUp}
@pointercancel=${this.resetBackdropPointer}
@dblclick=${this.handleDoubleClick}
>
${this.mediaKind===`video`?R`<video
class="video"
src=${this.src}
aria-label=${e}
controls
autoplay
playsinline
tabindex="0"
></video>`:R`<img
class=${this.scale>1?`image zoomed`:`image`}
src=${this.src}
alt=${e}
@load=${this.handleImageLoad}
@error=${this.handleImageError}
@dragstart=${e=>e.preventDefault()}
/>`}
</div>
${this.mediaKind===`image`?R`<div class="zoom-controls">
<button
class="action zoom-control"
type="button"
aria-label=${G(`chat.imageLightbox.zoomOut`)}
?disabled=${!r||this.scale<=1}
@click=${this.zoomOut}
>
−
</button>
<button
class="action zoom-control zoom-level"
type="button"
aria-label=${G(`chat.imageLightbox.resetZoom`)}
?disabled=${!r||this.scale===1}
@click=${this.resetZoom}
>
${Math.round(this.scale*100)}%
</button>
<button
class="action zoom-control"
type="button"
aria-label=${G(`chat.imageLightbox.zoomIn`)}
?disabled=${!r||this.scale>=GE}
@click=${this.zoomIn}
>
+
</button>
</div>`:B}
</section>
</openclaw-modal-dialog>
`}initializePanzoom(e){let t=this.stage;!t||e!==this.image||(this.destroyPanzoom(),this.panzoomImage=e,this.panzoomStage=t,this.panzoom=Zi(e,{duration:this.motionQuery?.matches?0:200,maxScale:GE,minScale:1,panOnlyWhenZoomed:!0}),e.addEventListener(`panzoomchange`,this.handlePanzoomChange),t.addEventListener(`wheel`,this.handleWheel,{passive:!1}),this.imageReady=!0)}destroyPanzoom(){let e=this.panzoomImage;e?.removeEventListener(`panzoomchange`,this.handlePanzoomChange),this.panzoomStage?.removeEventListener(`wheel`,this.handleWheel),this.panzoom?.destroy(),this.panzoom?.resetStyle(),e?.style.removeProperty(`transform`),e?.style.removeProperty(`transition`),this.panzoom=void 0,this.panzoomImage=void 0,this.panzoomStage=void 0,this.imageReady=!1}revokeOriginalBlobUrl(){this.originalBlobUrl&&=(URL.revokeObjectURL(this.originalBlobUrl),``)}async resolveOriginalUrl(){let e=++this.originalUrlRequest;this.revokeOriginalBlobUrl();let t=(this.originalSrc||this.src).trim();if(!t){this.openOriginalUrl=``;return}let n=t.slice(0,5).toLowerCase(),r=n===`data:`,i=n===`blob:`;if(!r&&!i){this.openOriginalUrl=t;return}this.openOriginalUrl=``;let a=r?UE(t):void 0;if(!(r&&(!a||!WE.has(a))))try{let n=await(await fetch(t)).blob();if(!this.isConnected||e!==this.originalUrlRequest||!WE.has(HE(n.type)))return;if(i){this.openOriginalUrl=t;return}this.originalBlobUrl=URL.createObjectURL(n),this.openOriginalUrl=this.originalBlobUrl}catch{}}},k([V()],qE.prototype,`mediaKind`,void 0),k([V()],qE.prototype,`src`,void 0),k([V()],qE.prototype,`originalSrc`,void 0),k([V({attribute:!1})],qE.prototype,`imageTitle`,void 0),k([Pn(`.stage`)],qE.prototype,`stage`,void 0),k([Pn(`.image`)],qE.prototype,`image`,void 0),k([Fn(`.action, video[controls]`)],qE.prototype,`focusables`,void 0),k([z()],qE.prototype,`openOriginalUrl`,void 0),k([z()],qE.prototype,`scale`,void 0),k([z()],qE.prototype,`imageReady`,void 0),customElements.get(`openclaw-image-lightbox`)||customElements.define(`openclaw-image-lightbox`,qE)})))()}function YE(e){let{snapshot:t,session:n,batchRows:r=null,cloudWorkerStopAction:i}=e,a=e=>{let n=an(t,e);return n.allowed?void 0:n.reason},o=a({method:`sessions.patch`,params:{key:n.key,label:null}}),s=e=>{if(!r)return o;let n=an(t,{method:`sessions.patchMany`,params:{targets:r.map(e=>({key:e.key,...e.sessionId?{expectedSessionId:e.sessionId}:{}})),patch:e}});if(!n.allowed)return n.cause===`method-unavailable`?o:n.reason},c=s({unread:!0}),l=s({category:null}),u=(r??[n]).some(e=>!e.sessionId?.trim())?`Session lifecycle action requires a durable session identity.`:s({archived:!0}),d=a({method:`sessions.groups.put`,requiredScope:`operator.write`}),f=(r??[n]).map(e=>a({method:`sessions.delete`,params:{key:e.key,...e.sessionId?{expectedSessionId:e.sessionId}:{},...e.archived?{archivedOnly:!0}:{}}})).find(e=>!!e),p=r?void 0:a({method:`sessions.create`,params:{parentSessionKey:n.key,fork:!0}}),m=i?a(i):void 0;return{...o?{"toggle-pin":o,rename:o,"set-icon":o,"set-color":o}:{},...c?{"toggle-unread":c}:{},...l?{"move-to-group":l}:{},...u?{"toggle-archived":u}:{},...d||l?{"new-group":d??l}:{},...p?{fork:p}:{},...m?{"stop-cloud-worker":m}:{},...f?{delete:f}:{}}}function XE(){return(XE=t((()=>{Dt()})))()}function ZE(e,t,n=`text/plain`){let r=URL.createObjectURL(new Blob([t],{type:n})),i=document.createElement(`a`);i.href=r,i.download=e,i.click(),URL.revokeObjectURL(r)}function QE(){return(QE=t((()=>{})))()}function $E(e){let t=[],n=``,r=null,i=!1;for(let a=0;a<e.length;a+=1){let o=e[a]??``;if(o===`\\`&&r===`"`){let t=1;for(;e[a+t]===`\\`;)t+=1;e[a+t]===`"`?(n+=`\\`.repeat(Math.floor(t/2)),t%2==0?r=null:n+=`"`,a+=t):(n+=`\\`.repeat(t),a+=t-1),i=!0;continue}if(o===`\\`&&r===null){let t=e[a+1];t&&(t===`"`||t===`'`||/\s/u.test(t))?(n+=t,i=!0,a+=1):(n+=o,i=!0);continue}if(r){o===r?r=null:n+=o,i=!0;continue}if(o===`'`||o===`"`){r=o,i=!0;continue}if(/\s/u.test(o)){i&&=(t.push(n),n=``,!1);continue}n+=o,i=!0}return r?null:(i&&t.push(n),t)}function eD(e,t){if(t!==`stdio`)try{let n=new URL(e).protocol;return n===`http:`||n===`https:`?{url:e,transport:t}:null}catch{return null}if(/^https?:\/\//i.test(e))return null;let[n,...r]=$E(e.trim())??[];return n?r.length>0?{command:n,args:r}:{command:n}:null}function tD(e){if(!e)return null;let t=C(C(e.mcp)?.servers)??{};return Object.entries(t).map(([e,t])=>{let n=C(t)??{},r=typeof n.url==`string`?n.url:``,i=typeof n.command==`string`?n.command:``,a=i?`stdio`:r?n.transport===`streamable-http`?`streamable-http`:n.transport===void 0||n.transport===`sse`?`sse`:`invalid`:`invalid`;return{name:e,enabled:n.enabled!==!1,transport:a,target:i||pe(r),auth:typeof n.auth==`string`?n.auth:null,toolFilter:!!n.toolFilter,parallel:n.supportsParallelToolCalls===!0,tls:n.sslVerify===!1?`verify-off`:n.clientCert||n.clientKey?`mtls`:null}}).toSorted((e,t)=>e.name.localeCompare(t.name))}function nD(e,t,n){return Object.hasOwn(e,t)?{error:G(`mcpServers.nameTaken`,{name:t})}:{patch:{[t]:n}}}function rD(e,t,n){return Object.hasOwn(e,t)?{patch:{[t]:{enabled:n?null:!1}}}:{error:G(`mcpServers.missing`,{name:t})}}function iD(e,t){return Object.hasOwn(e,t)?{patch:{[t]:null},replacePaths:Fs(e[t],`mcp.servers.${t}`)}:{error:G(`mcpServers.missing`,{name:t})}}async function aD(e,t){try{return await e.ensureLoaded(),await e.patchFromSnapshot(e=>{let n=C(C(e.mcp)?.servers)??{},r=t.buildPatch(n);return`error`in r?r:{options:{raw:{mcp:{servers:r.patch}},note:t.note,...r.replacePaths?.length?{replacePaths:r.replacePaths}:{}}}})?(await e.refresh(),{ok:!0}):{ok:!1,error:e.state.lastError??G(`mcpServers.configUnavailable`)}}catch(e){return{ok:!1,error:M(e)}}}var oD;function sD(){return(sD=t((()=>{le(),As(),W(),Ye(),oD=/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/})))()}var cD,lD;function uD(){return(uD=t((()=>{si(),cD={skillLibrary:{library:`Skill library`,mine:`My skills`,team:`Team`,all:`All libraries`,inventory:`Agent & workspace`,create:`Create skill`,import:`Import skill`,save:`Save skill`,propose:`Save workspace proposal`,apply:`Apply to workspace`,slug:`Skill name`,description:`Description`,file:`File`,newFile:`New text file path`,addFile:`Add file`,deleteFile:`Delete file`,deleteFileConfirm:`Remove {path} from the next saved bundle?`,fileExists:`That file already exists. Select it to edit its contents.`,binary:`Binary attachment. Its original bytes are preserved when you save.`,binaryRead:`Binary attachment retained with this revision.`,readOnly:`You can read this skill. Only its owner or an authorized administrator can edit it.`,personalTarget:`My skills. Save to your personal library; existing session selections change only when you explicitly attach or refresh.`,workspaceTarget:`Workspace: {agent}. Save creates a Workshop proposal; apply it after review.`,technicalDetails:`Skill details`,skillId:`Skill ID`,command:`Command`,ownerRevision:`{owner} · revision {revision}`,executable:`Executable supporting file`,defaultLimit:`New sessions select up to {count} default skills. Existing sessions keep their selected revisions.`,session:{selected:`Selected for this session`,attachable:`Add from your libraries`,pin:`Selected revision {revision}`,read:`Read selected revision`,empty:`No managed skills selected.`,refresh:`Refresh revision`,attachNamed:`Attach {name} · {owner}`,detach:`Detach`,queued:`Skill selections updated for the next turn. An active turn keeps its current revision.`,readOnly:`This is the exact revision selected for this session. Session access allows reading this pin, not editing its library or browsing other revisions.`},search:`Search names, descriptions, and owners`,empty:`No skills in this library. Create one or import a bundle.`,you:`You`,shared:`Shared with team`,private:`Private`,share:`Share with team`,unshare:`Make private`,transfer:`Transfer to team`,remove:`Remove skill`,enable:`Enable`,disable:`Disable`,revision:`Retained revision`,selectRevision:`Select a revision`,rollback:`Restore revision`,discard:`Discard your unsaved skill changes?`,conflict:`This skill changed since you opened it. Your draft is preserved. Copy your changes, then close and reopen the skill to review the current revision before saving.`,signIn:`Sign in with a Gateway profile to create personal skills. Administrators can still create skills in the selected agent workspace.`,connectionChanged:`The Gateway connection changed. Reopen the skill before saving.`,selectAgent:`Select an agent workspace before creating a skill.`,workspaceTextOnly:`Workshop imports support UTF-8 text files. Keep executable and binary assets in the file-authored workspace workflow.`,bundleLimit:`Use at most 256 files, 1 MiB per file, and 8 MiB per bundle or ZIP.`,missingSkill:`Choose SKILL.md together with its supporting files, or a folder containing SKILL.md at its root.`,uploadFailed:`The Gateway did not confirm the upload. Check your library before retrying the import.`,pending:`Proposal {id} saved for workspace {agent}. It is pending review and is not active yet.`,workspaceSaved:`Workspace {agent}: {state}. Start a new session to use the skill.`,importHelp:`Import SKILL.md with supporting files, a local folder, or a ZIP into your private library. Text bundles open for review before saving; ZIP imports publish when you choose Import skill.`,importWorkspace:`Choose SKILL.md and supporting text files or a folder. Review the content, then save and apply a Workshop proposal to the selected agent workspace. Use ClawHub below for workspace installs.`,importClawHub:`Import {source} into your private library. This does not publish your files or install host dependencies.`,chooseFiles:`SKILL.md, supporting files, or ZIP`,chooseFolder:`Skill folder`,confirm:{remove:`Remove {slug} from the library?`,transfer:`Transfer {slug} to team ownership? Team administrators will manage it.`},receipt:{published:`Saved {slug} to {target} library (owner: {owner}).`,unchanged:`Unchanged: {slug} in {target} library (owner: {owner}).`,removed:`Removed {slug} from {target} library (owner: {owner}).`}}},lD=Object.assign(()=>{pi.skillLibrary=cD.skillLibrary},{catalog:cD})})))()}function dD(e){return e.source!==`skill`}function fD(e){return e.key.replace(/[:.-]/g,`_`)}function pD(e){return(e.aliases??[]).map(e=>e.trim()).filter(Boolean).map(e=>e.startsWith(`/`)?e.slice(1):e)}function mD(e){return e.name.trim()||null}function hD(e){if(e.args?.length)return e.args.map(e=>{let t=`<${e.name}>`;return e.required?t:`[${e.name}]`}).join(` `)}function gD(e,t,n){let r=typeof n==`string`?n:n.value;return e.formatArgs?.({[t]:r})??r}function _D(e){let t=e.args?.[0];if(!t)return;let n=t.choices?.map(n=>gD(e,t.name,n)).filter(Boolean);return n?.length?n:void 0}function vD(e){let t=eO[fD(e)];if(t)return t;switch(e.category){case`session`:return`session`;case`options`:return`model`;case`management`:return`tools`;default:return`tools`}}function yD(e){return XD[fD(e)]??`terminal`}function bD(e){let t=e.tier;return t===`essential`||t===`standard`||t===`power`?t:`standard`}function xD(e,t=`local`){let n=mD(e);if(!n)return null;let r=e.source??(t===`local`?`native`:void 0);return{key:e.key,name:n,aliases:pD(e).filter(e=>e!==n),description:nO[e.key]??e.description,...tO[e.key]?{descriptionKey:tO[e.key]}:{},args:rO[e.key]??hD(e),icon:yD(e),category:vD(e),executeLocal:t===`local`&&QD.has(e.key),argOptions:_D(e),allowsInlineMultiWordArgs:ZD.has(e.key),tier:t===`local`?bD(e):`standard`,...r?{source:r}:{},...e.skillDisplayName?{skillDisplayName:e.skillDisplayName}:{},...e.skillModelVisible===void 0?{}:{skillModelVisible:e.skillModelVisible},...e.clientPresentation?{clientPresentation:e.clientPresentation}:{}}}function SD(e){let t=e.trim().replace(/^\//u,``).slice(0,qD),n=v(t);return!n||!HD.test(n)?null:n}function CD(e,t){let n=typeof e==`string`?e:``;return n.length>t?s(n,t):n}function wD(e){let t=`args`in e?e.args:void 0;return Array.isArray(t)?t.map(e=>C(e)).filter(e=>e!==null):[]}function TD(e){if(e.dynamic===!0)return[];let t=e.choices;return Array.isArray(t)?t.map(e=>{if(typeof e==`string`)return CD(e,qD);let t=C(e);return t?{value:CD(t.value,qD),label:CD(t.label,qD)}:null}).filter(e=>e?typeof e==`string`?!!e:!!e.value:!1):[]}function ED(e){let t=C(e);if(!t||Object.keys(t).length!==2||!Object.hasOwn(t,`when`)||!Object.hasOwn(t,`action`)||t.when!==`no-arguments`)return;let n=C(t.action);if(!(!n||Object.keys(n).length!==1||!Object.hasOwn(n,`kind`)||n.kind!==`device-pairing`))return{when:`no-arguments`,action:{kind:`device-pairing`}}}function DD(){return[...Bi().map(e=>({key:e.key,name:e.textAliases[0]?.replace(/^\//u,``)??e.key,aliases:e.textAliases,description:e.description,args:e.args?.map(e=>({name:e.name,required:e.required,choices:Array.isArray(e.choices)?e.choices:void 0})),formatArgs:e.formatArgs,category:e.category,tier:e.tier})).map(e=>xD(e,`local`)).filter(e=>e!==null),...$D]}function OD(e=DD()){let t=new Set;for(let n of e){t.add(v(n.name));for(let e of n.aliases??[]){let n=SD(e);n&&t.add(n)}}return t}function kD(e,t){let n=(Array.isArray(e.textAliases)?e.textAliases:[]).slice(0,WD).filter(e=>typeof e==`string`).map(SD).filter(e=>!!e).filter(e=>!t.has(e)),r=n[0]??(typeof e.name==`string`?SD(e.name):null);if(!r||t.has(r))return null;let i=wD(e).slice(0,GD).map(e=>({name:CD(e.name,YD),required:e.required===!0,choices:TD(e).slice(0,KD)})).filter(e=>e.name.length>0).map(e=>Object.assign({name:e.name},e.required?{required:!0}:{},e.choices.length>0?{choices:e.choices}:{}));return{key:r,name:r,aliases:n.map(e=>`/${e}`),description:CD(e.description,JD),...i.length>0?{args:i}:{},category:typeof e.category==`string`?e.category:void 0,source:e.source===`native`||e.source===`plugin`||e.source===`skill`?e.source:void 0,skillDisplayName:typeof e.skillDisplayName==`string`&&CD(e.skillDisplayName,qD).trim()||void 0,skillModelVisible:typeof e.skillModelVisible==`boolean`?e.skillModelVisible:void 0,clientPresentation:e.source===`plugin`?ED(e.clientPresentation):void 0}}function AD(e){iO.splice(0,iO.length,...e)}function jD(e){let t=DD(),n=OD(t),r=e.slice(0,UD).map(e=>kD(e,n)).filter(e=>e!==null).map(e=>xD(e,`remote`)).filter(e=>e!==null),i=new Map;for(let e of[...t,...r]){let t=v(e.name);!t||i.has(t)||i.set(t,e)}return Array.from(i.values())}function MD(e){let t=e?.commands;return Array.isArray(t)?t.map(e=>C(e)).filter(e=>e!==null):[]}function ND(){return DD()}function PD(e){return G(`chat.commands.categories.${e}`)}function FD(e){return e.descriptionKey?G(e.descriptionKey):e.description}function ID(e,t){let n=[e.name,...e.aliases??[]].map(v);return n.some(e=>e===t)?0:n.some(e=>e.startsWith(t))?1:n.some(e=>e.includes(t))?2:v(FD(e)).includes(t)?3:sO}function LD(e,t){let n=v(e),r=t?.showAll??!1,i=t?.inlineOnly?iO.filter(e=>e.source===`skill`&&e.skillModelVisible===!0||dD(e)&&t.allowImmediateInlineCommands!==!1):iO;return i=n?i.filter(e=>ID(e,n)<sO):i,!n&&!r&&(i=i.filter(e=>(e.tier??`standard`)!==`power`)),i.toSorted((e,t)=>{if(n){let r=ID(e,n)-ID(t,n);if(r!==0)return r}let r=oO[e.tier??`standard`]??1,i=oO[t.tier??`standard`]??1;if(r!==i)return r-i;let a=aO.indexOf(e.category??`session`),o=aO.indexOf(t.category??`session`);return a===o?0:a-o})}function RD(e,t=e.length){let n=Math.max(0,Math.min(t,e.length)),r=e.slice(0,n).match(/(?:^|\s)\/([^\s/:]*)(:?)$/u);if(!r||r.index===void 0)return null;let i=r[0].indexOf(`/`),a=r.index+i;if(e[a+1]===`/`)return null;let o=n;for(;o<e.length&&!/\s/u.test(e[o]??``);)o+=1;let s=r[1]??``;return/^[^\s/:]*$/u.test(s)?{query:s,start:a,end:o,inline:e.slice(0,a).trim().length>0||e.slice(o).trim().length>0||r[2]===`:`,...r[2]===`:`?{skillOnly:!0}:{}}:null}function zD(e){return e.skillDisplayName?.trim()||e.name}function BD(e){let t=v(e),n=t.replace(/[\s_]+/gu,`-`);return iO.filter(e=>e.source===`skill`&&e.skillModelVisible===!0).filter(e=>{let r=v(zD(e)),i=r.replace(/[\s_]+/gu,`-`),a=v(e.name).replace(/[\s_]+/gu,`-`);return!t||r.includes(t)||i.includes(n)||a.startsWith(n)||v(FD(e)).includes(t)}).toSorted((e,t)=>zD(e).localeCompare(zD(t)))}function VD(e){let t=e.trim();if(!t.startsWith(`/`))return null;let n=t.slice(1),r=n.search(/[\s:]/u),i=r===-1?n:n.slice(0,r),a=r===-1?``:n.slice(r).trimStart();a.startsWith(`:`)&&(a=a.slice(1).trimStart());let o=a.trim();if(!i)return null;let s=v(i),c=iO.find(e=>e.name===s||e.aliases?.some(e=>v(e)===s));return c?{command:c,args:o}:null}var HD,UD,WD,GD,KD,qD,JD,YD,XD,ZD,QD,$D,eO,tO,nO,rO,iO,aO,oO,sO;function cO(){return(cO=t((()=>{na(),W(),HD=/^[a-z0-9][a-z0-9_-]*$/u,UD=500,WD=20,GD=20,KD=50,qD=200,JD=2e3,YD=200,XD={help:`book`,status:`barChart`,usage:`barChart`,export:`download`,export_session:`download`,tools:`terminal`,dashboard:`layoutDashboard`,skill:`zap`,commands:`book`,new:`plus`,reset:`refresh`,compact:`loader`,stop:`stop`,clear:`trash`,model:`brain`,models:`brain`,think:`brain`,verbose:`terminal`,fast:`zap`,agents:`monitor`,subagents:`folder`,steer:`send`,tts:`volume2`},ZD=new Set([`dashboard`]),QD=new Set([`help`,`new`,`reset`,`stop`,`compact`,`model`,`think`,`fast`,`verbose`,`export-session`,`usage`,`agents`,`steer`,`redirect`]),$D=[{key:`clear`,name:`clear`,description:`Clear chat history`,descriptionKey:`chat.commands.clearDescription`,icon:`trash`,category:`session`,executeLocal:!0,tier:`standard`},{key:`redirect`,name:`redirect`,description:`Abort and restart with a new message`,descriptionKey:`chat.commands.redirectDescription`,args:`<message>`,icon:`refresh`,category:`agents`,executeLocal:!0,tier:`power`}],eO={help:`tools`,commands:`tools`,tools:`tools`,skill:`tools`,status:`tools`,export_session:`tools`,usage:`tools`,tts:`tools`,agents:`agents`,subagents:`agents`,steer:`agents`,redirect:`agents`,session:`session`,stop:`session`,reset:`session`,new:`session`,compact:`session`,model:`model`,models:`model`,think:`model`,verbose:`model`,fast:`model`,reasoning:`model`,elevated:`model`,queue:`model`},tO={steer:`chat.commands.steerDescription`},nO={steer:`Inject a message into the active run`},rO={steer:`<message>`},iO=ND(),aO=[`session`,`model`,`tools`,`agents`],oO={essential:0,standard:1,power:2},sO=4})))()}function lO(e,t,n=[],r){let{provider:i,model:a}=vO({defaults:t,session:e});return bO({catalogEntry:yO(n,i,a,e?.agentRuntime?.id),defaults:t,fallbackLabels:r,session:e})}function uO(e,t,n=[]){let r=lO(e,t,n,[]).map(e=>SO(e.id));return r.length>0?[`default`,...new Set(r.filter(e=>e&&e!=="default"))]:[]}function dO(e,t,n=[]){let r=lO(e,t,n).map(e=>e.label).join(`, `);return r.split(`, `).includes(`default`)?r:`default, ${r}`}function fO(e,t,n,r=[]){let i=ia(e);if(i)return i;let a=v(e);return lO(t,n,r).map(e=>({id:ia(e.id)??v(e.id),label:v(e.label)})).find(e=>e.id===a||e.label===a)?.id}function pO(e,t,n,r=[]){return lO(e,t,r).some(e=>(ia(e.id)??v(e.id))===n||ia(e.label)===n)}function mO(e,t,n){let r=ia(e?.thinkingLevel);if(r)return lO(e,t).find(e=>ia(e.id)===r)?.label??r;if(e?.thinkingDefault)return e.thinkingDefault;if((!e||Xa(e,t))&&t?.thinkingDefault)return t.thinkingDefault;let i=e?.modelProvider??t?.modelProvider,a=e?.model??t?.model;return!i||!a?`off`:$i({provider:i,model:a,catalog:n})}function hO(e){let t=new Set,n=[],r=(e,r)=>{let i=SO(e);wo(n,t,i,()=>wO(i,r))};for(let t of e)r(t.id,t.label);return n}function gO(e){return SO(e??``)===`off`}function _O(e){return e.every(e=>gO(e.id||e.label))}function vO(e){return{provider:e.session?.modelProvider??e.defaults?.modelProvider??null,model:e.session?.model??e.defaults?.model??null}}function yO(e,t,n,r){let i=r?.trim();return e.find(e=>{let r=e.agentRuntime?.id?.trim();return e.provider===t&&e.id===n&&(!i||!r||i===r)})}function bO(e){let{catalogEntry:t}=e,n=Xa(e.session,e.defaults),r=(e.session?.thinkingLevels?.length?e.session.thinkingLevels:null)??(e.session?.model&&t?.thinkingLevels?.length?t.thinkingLevels:null)??(n&&e.defaults?.thinkingLevels?.length?e.defaults.thinkingLevels:null);if(r)return e.hideUnsupportedOffOnly&&t?.reasoning===!1&&_O(r)?[]:r;let i=(e.session?.thinkingOptions?.length?e.session.thinkingOptions:null)??(n&&e.defaults?.thinkingOptions?.length?e.defaults.thinkingOptions:null);return e.hideUnsupportedOffOnly&&t?.reasoning===!1&&(!i||i.every(gO))?[]:(i??e.fallbackLabels??Wi).map(e=>({id:ia(e)??v(e),label:e}))}function xO(e){let t=e.session??e.sessionsResult?.sessions?.find(t=>P(t.key,e.sessionKey)),n=t?.thinkingLevel,r=typeof n==`string`&&n.trim()?ia(n)??n.trim():``,i=e.defaults??e.sessionsResult?.defaults,{provider:a,model:o}=vO({defaults:i,session:t}),s=yO(e.catalog,a,o,t?.agentRuntime?.id),c=bO({catalogEntry:s,defaults:i,hideUnsupportedOffOnly:!0,session:t}),l=(!t||Xa(t,i))&&i?.thinkingDefault?i.thinkingDefault:void 0,u=t?.thinkingDefault??(t?.model?s?.thinkingDefault:void 0)??l??(a&&o?$i({provider:a,model:o,catalog:[...e.catalog]}):`off`),d=c.length===0&&r===`off`?``:r,f=hO(c),p=SO(u),m={value:p,displayLabel:CO(u)},h=d||p,g=f.findIndex(e=>e.value===h),_=d?`override`:`default`,v=d?f[g]?.label??wO(d):m.displayLabel;return{selection:g>=0?{kind:`anchored`,source:_,value:h,displayLabel:v,index:g}:{kind:`unanchored`,source:_,value:h,displayLabel:v},inherited:m,options:f}}function SO(e){return ia(e)??v(e)}function CO(e){return`Inherited: ${TO(e?SO(e):`off`)}`}function wO(e,t){let n=SO(e);return!n||n===`off`?`Off`:TO(t?.trim()||n)}function TO(e){let t=v(e);if([`on`,`enable`,`enabled`].includes(t))return`On`;switch(SO(e)){case`adaptive`:return`Adaptive`;case`minimal`:return`Minimal`;case`low`:return`Low`;case`medium`:return`Medium`;case`high`:return`High`;case`xhigh`:return`Extra high`;case`max`:return`Maximum`;case`ultra`:return`Ultra`;default:return e.charAt(0).toUpperCase()+e.slice(1)}}function EO(){return(EO=t((()=>{Ki(),wa(),A()})))()}function DO(e,t,n={}){let r=e.querySelector(`:scope > summary`),i=e.querySelector(`:scope > wa-popup[data-anchored-overlay]`);!r||!i||(i.anchor=n.anchor??r,i.placement=`${t}-${n.alignment??`start`}`,i.boundary=`viewport`,i.distance=6,i.flip=!0,i.flipPadding=OO,i.shift=!0,i.shiftPadding=kO,i.autoSize=`vertical`,i.autoSizePadding=OO,i.active=e.open)}var OO,kO;function AO(){return(AO=t((()=>{ca(),OO=8,kO=12})))()}function jO(e){e.currentTarget.querySelector(`.chat-copy-btn`)?.click()}function MO(e){let t=G(`connection.help.copyCommand`);return R`
<openclaw-tooltip .content=${t}>
<div
class="login-gate__command"
role="button"
tabindex="0"
aria-label=${G(`connection.help.copyCommandAria`,{command:e})}
@click=${e=>{e.target?.closest(`.chat-copy-btn`)||jO(e)}}
@keydown=${e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),jO(e))}}
>
<code translate="no">${e}</code>
${hx(e,t)}
</div>
</openclaw-tooltip>
`}function NO(){return(NO=t((()=>{I(),W(),yx(),Ur()})))()}var PO,FO;function IO(){return(IO=t((()=>{si(),PO={profilePage:{modelAccounts:{title:`Connected accounts`,addAccount:`Add account`,provider:`Provider`,method:`Sign-in method`,noMethods:`No personal sign-in methods are available. Ask your administrator for help.`,gateway:`Gateway`,gatewayUnavailable:`Endpoint unavailable`,person:`Person`,currentPerson:`Current person`,noPerson:`Not identified`,scope:`Scope`,personal:`Personal`,personalDescription:`Sign-in saves an account for this person on this Gateway. System and agent credentials are unchanged.`,signInUnavailable:`Sign-in not ready`,connectionSettings:`Connection settings`,unavailable:{identity:`Use the identity-enabled Gateway address supplied by your administrator, through Tailscale Serve or a trusted proxy. A shared token or device pairing alone does not identify a person.`,write:`Personal account sign-in requires operator.write access. Ask your administrator for access, then reconnect to the Gateway.`,profile:`Wait for your identity profile to load. If it does not appear, use Refresh or Set identity above to retry.`},description:`Choose the account new chats prefer. Existing chats keep their account choice. Gateway fallback rules still apply; this preference is not a billing guarantee.`,empty:`No personal default selected. New chats use the gateway's default account.`,linkedDescription:`Preferred for new chats with this provider. Clearing the default keeps the saved credential and existing chat choices.`,linkedStatus:`New chat default`,gatewayAccount:`Selected saved account`,selectAction:`Use for new chats`,savedAccounts:`Saved accounts`,loadMore:`Load more saved accounts`,inventoryFailed:`Could not load saved accounts. Refresh to retry.`,authTypes:{oauth:`Browser sign-in · saved account`,token:`Token · saved account`,api_key:`API key · saved account`},checkStatusAction:`Check status`,actionFailed:`Could not update connected accounts. Try again.`,statusFailed:`Could not check sign-in status. Check again or cancel this attempt.`,statusTimedOut:`Sign-in has not finished. Check its status or cancel and sign in again.`,notices:{connected:`Account added.`,cancelled:`Sign-in cancelled. No account was added by this attempt.`,expired:`Sign-in expired. Sign in again to start a new attempt.`,selected:`Default updated for new chats. Existing chats are unchanged.`,cleared:`New chats use the gateway default for this provider. Saved credentials and existing chats are unchanged.`},connectErrors:{exchange:`Sign-in failed while exchanging the authorization code. Sign in again.`,identity:`The account identity could not be verified. Sign in again with your own account.`,authority:`Your access changed before sign-in finished. Reconnect to the gateway and try again.`,unavailable:`The gateway could not save the account. Sign in again or ask an administrator for help.`},inputLabel:`Use an existing gateway credential`,inputDescription:`Admin only: choose an existing Gateway credential for this person's new chats. This does not sign in or change the stored credential.`,inputPlaceholder:`openai:alice`,linkAction:`Use for new chats`,unlinkAction:`Use gateway default`,connectAction:`Sign in`,cancelAction:`Cancel`}}},FO=Object.assign(()=>{pi.profilePage=Object.assign({},pi.profilePage,PO.profilePage)},{catalog:PO})})))()}function LO(){try{let e=j()?.getItem(YO),t=e?JSON.parse(e):{},n=new Map;if(Array.isArray(t)){for(let e of t)typeof e==`string`&&e&&n.set(e,{firstSeenAt:null,name:null,shinySeenAt:null});return n}if(t&&typeof t==`object`)for(let[e,r]of Object.entries(t))e&&n.set(e,{firstSeenAt:typeof r?.firstSeenAt==`number`?r.firstSeenAt:null,name:typeof r?.name==`string`&&r.name?r.name:null,shinySeenAt:typeof r?.shinySeenAt==`number`?r.shinySeenAt:null});return n}catch{return new Map}}function RO(e){let t={};for(let[n,r]of[...e.entries()].toSorted(([e],[t])=>e.localeCompare(t)))t[n]={...r.firstSeenAt===null?{}:{firstSeenAt:r.firstSeenAt},...r.name===null?{}:{name:r.name},...r.shinySeenAt===null?{}:{shinySeenAt:r.shinySeenAt}};j()?.setItem(YO,JSON.stringify(t))}function zO(){return new Set(LO().keys())}function BO(){return LO()}function VO(e,t={}){try{let n=LO(),r=n.get(e);if(r){let i=t.shiny===!0&&r.shinySeenAt===null;if(r.firstSeenAt!==null&&r.name!==null&&!i)return;n.set(e,{firstSeenAt:r.firstSeenAt??Date.now(),name:r.name??t.name??null,shinySeenAt:r.shinySeenAt??(t.shiny===!0?Date.now():null)})}else n.set(e,{firstSeenAt:Date.now(),name:t.name??null,shinySeenAt:t.shiny===!0?Date.now():null});RO(n)}catch{}}function HO(){try{let e=j()?.getItem(XO),t=e?JSON.parse(e):{},n=t&&typeof t==`object`?t:{};return{visits:typeof n.visits==`number`&&n.visits>=0?n.visits:0,shoos:typeof n.shoos==`number`&&n.shoos>=0?n.shoos:0}}catch{return{visits:0,shoos:0}}}function UO(e){try{j()?.setItem(XO,JSON.stringify(e))}catch{}}function WO(){let e=HO();UO({...e,visits:e.visits+1})}function GO(){let e=HO();UO({...e,shoos:e.shoos+1})}function KO(){let{visits:e,shoos:t}=HO();return{tier:e<3?`shy`:e<15?`regular`:`friend`,wary:t>=3&&t>e*.3,visits:e,shoos:t}}function qO(e){for(let[t,n]of QO)if(e>=t)return n;return null}function JO(e,t){if(e===null||t.getTime()-e<$O)return!1;let n=new Date(e);return n.getMonth()===t.getMonth()&&n.getDate()===t.getDate()}var YO,XO,ZO,QO,$O;function ek(){return(ek=t((()=>{YO=`openclaw.control.lobsterdex.v1`,XO=`openclaw.control.lobsterpet.familiarity.v1`,ZO={shy:{stayMul:.6,firstDelayMul:1.3,gapMul:1},regular:{stayMul:1,firstDelayMul:1,gapMul:1},friend:{stayMul:1.6,firstDelayMul:.7,gapMul:.8},waryGapMul:1.7},QO=[[250,`Elder`],[100,`Captain`],[50,`Sir`]],$O=2592e7})))()}function tk(e,t,n){let r=e;if(!t)return r;try{let e=window.AudioContext;if(!e)return r;r??=new e,r.state===`suspended`&&r.resume();let t=r.currentTime,i=r.createOscillator(),a=r.createGain();i.type=`sine`,n===`poke`?(i.frequency.setValueAtTime(330,t),i.frequency.exponentialRampToValueAtTime(165,t+.09)):(i.frequency.setValueAtTime(392,t),i.frequency.exponentialRampToValueAtTime(523,t+.18)),a.gain.setValueAtTime(1e-4,t),a.gain.exponentialRampToValueAtTime(.05,t+.02),a.gain.exponentialRampToValueAtTime(1e-4,t+(n===`poke`?.12:.24)),i.connect(a).connect(r.destination),i.start(t),i.stop(t+.26)}catch{}return r}function nk(){let e=tk(null,!0,`poke`);e&&window.setTimeout(()=>void e.close().catch(()=>{}),300)}function rk(){return(rk=t((()=>{})))()}function ik(e){let t=e.position;return t?R`
<wa-dropdown
class="session-menu lobster-pet-dismiss-menu"
.open=${!0}
placement="top-start"
.distance=${0}
aria-label=${G(`quickSettings.appearance.lobsterVisits`)}
@wa-select=${t=>{t.preventDefault(),t.detail.item.value===`dismiss`?e.onDismiss(!1):t.detail.item.value===`dismiss-permanently`&&e.onDismiss(!0)}}
@wa-after-hide=${e.onClose}
>
<button
slot="trigger"
type="button"
tabindex="-1"
aria-hidden="true"
aria-label=${G(`quickSettings.appearance.lobsterVisits`)}
style="position: fixed; left: ${t.x}px; top: ${t.y}px; width: 1px; height: 1px; opacity: 0; pointer-events: none;"
></button>
<wa-dropdown-item class="session-menu__item" value="dismiss"
>${G(`common.dismiss`)}</wa-dropdown-item
>
<wa-dropdown-item class="session-menu__item" value="dismiss-permanently"
>${G(`common.dismissAndDontShowAgain`)}</wa-dropdown-item
>
</wa-dropdown>
`:B}function ak(){return(ak=t((()=>{I(),W(),oi()})))()}function ok(e){return ck[e]??e}function sk(e){return w(lk[(e>>>3)%lk.length],`lobster pet name catalog entry`)}var ck,lk,uk;function dk(){return(dk=t((()=>{re(),ck={blue:`Blueberry`,gold:`Goldie`,lumen:`Glimmer`,magma:`Ember`,oilslick:`Slick`,aurora:`Borealis`,nebula:`Cosmo`,banana:`Peel`,mood:`Ringo`,bee:`Buzz`,rubberduck:`Debuggy`,watermelon:`Pips`,clawtron:`Clawtron`,selene:`Selene`,geode:`Amethyst`,ghost:`Boo`,glass:`Prism`,split:`Picasso`,sourdough:`Boule`,zombie:`Shambles`,plush:`Buttons`,balloon:`Squeaky`,cottoncandy:`Taffy`,cryptid:`Nessie`,flatpack:`Skaldjur`,tinfoil:`Mulder`,actual:`Homarus`,disco:`Boogie`,chimera:`Frankie`,blueprint:`Prototype`,phosphor:`TTY`,ascii:`Figlet`,portal:`Warp`,notexture:`Magenta`,loading:`Spinner`,eclipse:`Umbra`,heisenbug:`Segfault`,invisible:`Nobody`,pixel:`Sprite`,retro:`OG`,goldenretro:`24K`},lk=[`Pinchy`,`Barnaby`,`Thermidor`,`Clawdette`,`Sheldon`,`Scuttles`,`Bisque`,`Crusty`,`Snips`,`Bubbles`,`Clawdia`,`Ferdinand`,`Maple`,`Pearl`,`Biscuit`,`Captain`,`Ziggy`,`Noodle`,`Waffles`,`Pippin`,`Squirt`,`Chip`,`Clementine`,`Moss`],uk={crimson:{flavor:`The classic red, first in every tide pool.`,hint:`Where every story starts.`},blue:{flavor:`1 in 2 million, and knows it.`,hint:`One in two million.`},gold:{flavor:`1 in 30 million karats.`,hint:`Worth its weight.`},lumen:{flavor:`Brings its own night lights.`,hint:`Glows where it's darkest.`},magma:{flavor:`Fresh from the vent, still cooling.`,hint:`Runs hot.`},oilslick:{flavor:`Black shell, rainbow finish.`,hint:`Spilled, not stirred.`},aurora:{flavor:`Northern lights, southern claws.`,hint:`Best seen on clear nights.`},nebula:{flavor:`Not from any ocean on this planet.`,hint:`Came from very far away.`},banana:{flavor:`Banana. For scale.`,hint:`For scale.`},mood:{flavor:`Wears whatever color you're feeling.`,hint:`Matches your vibe.`},bee:{flavor:`Technically not a bee.`,hint:`Do not tell the bees.`},rubberduck:{flavor:`Listens to your bugs. Judges silently.`,hint:`Quack.`},watermelon:{flavor:`Contains 6% lobster.`,hint:`Ripe when thumped.`},clawtron:{flavor:`60% rivets, 40% love.`,hint:`Beep boop snip.`},selene:{flavor:`Carries the current moon on its belly.`,hint:`Waxes and wanes.`},geode:{flavor:`Rock outside, amethyst inside.`,hint:`Crack the surface.`},ghost:{flavor:`1 in 100 million, barely there.`,hint:`You'd walk right past it.`},glass:{flavor:`Fully transparent. Nothing to hide.`,hint:`Easy to miss, hard to forget.`},split:{flavor:`Two lobsters, one shell.`,hint:`Can't pick a side.`},sourdough:{flavor:`Started from a starter. 24-hour proof.`,hint:`Still proofing.`},zombie:{flavor:`Slightly used. Still friendly.`,hint:`It's been better.`},plush:{flavor:`Machine washable. Air dry only.`,hint:`Soft to the touch.`},balloon:{flavor:`Do not pop.`,hint:`Handle with care.`},cottoncandy:{flavor:`Pastel, like the famous Maine catch.`,hint:`Sweeter than it looks.`},cryptid:{flavor:`Every photo comes out blurry.`,hint:`Sightings unconfirmed.`},flatpack:{flavor:`Some assembly required.`,hint:`Missing one screw.`},tinfoil:{flavor:`The tide is a psyop.`,hint:`They know.`},actual:{flavor:`An actual lobster. Unsettling, honestly.`,hint:`Anatomically correct.`},disco:{flavor:`Born under a mirror ball.`,hint:`The night is still young.`},chimera:{flavor:`Borrowed parts. No refunds.`,hint:`Something's off.`},blueprint:{flavor:`Final hardware pending approval.`,hint:`Still on the drawing board.`},phosphor:{flavor:`80 columns, 24 rows, one lobster.`,hint:`Hums at sixty hertz.`},ascii:{flavor:`Renders anywhere. Even over SSH.`,hint:`chmod +x`},portal:{flavor:`Arrives before it leaves.`,hint:`Mind the gap.`},notexture:{flavor:`Texture not found.`,hint:`404.`},loading:{flavor:`Still loading. Any second now.`,hint:`…`},eclipse:{flavor:`Do not look directly at it.`,hint:`Once in a blue moon.`},heisenbug:{flavor:`Only renders right when nobody's watching.`,hint:`Cannot be reproduced.`},invisible:{flavor:`It's right there. Look closer.`,hint:`Trust me, it exists.`},pixel:{flavor:`Rendered in 1987. Still runs.`,hint:`Insert coin.`},retro:{flavor:`The original: big claw, no apologies.`,hint:`The one that started it all.`},goldenretro:{flavor:`One in a generation.`,hint:`Worth the wait.`}}})))()}function fk(e){return((e.getTime()-mk)/864e5%pk+pk)%pk/pk}var pk,mk;function hk(){return(hk=t((()=>{pk=29.53059,mk=Date.parse(`2000-01-06T18:14:00.000Z`)})))()}function gk(e){let t=bk.map(e=>w(yk.find(t=>t.id===e),`chimera donor palette ${e}`)),n=()=>{let n=Math.floor(e()*t.length);return w(t.splice(n,1)[0],`distinct chimera donor`)};return{body:n().shell,clawLeft:n().shell,clawRight:n().shell,antennae:n().shell}}function _k(e){return yk.find(t=>t.shell===e)?.claw}var vk,yk,bk,xk;function Sk(){return(Sk=t((()=>{re(),vk=[[{id:`crimson`,shell:`#ff4f40`,claw:`#ff775f`},26],[{id:`blue`,shell:`#4a7dfc`,claw:`#7fa4ff`},7],[{id:`gold`,shell:`#f4b840`,claw:`#f9d47a`},5],[{id:`lumen`,shell:`#1d2f4e`,claw:`#2e4a77`},2],[{id:`magma`,shell:`#241214`,claw:`#3a1d18`},2],[{id:`oilslick`,shell:`#15171d`,claw:`#23262e`},2],[{id:`aurora`,shell:`#dce6f0`,claw:`#e9f0f7`},2],[{id:`nebula`,shell:`#34255c`,claw:`#4a3a7d`},2],[{id:`banana`,shell:`#f7e27d`,claw:`#f3d55b`},2],[{id:`mood`,shell:`var(--accent, #7f77dd)`,claw:`var(--accent-hover, #9a93e8)`},1.5],[{id:`bee`,shell:`#f4c531`,claw:`#2b2b23`},1.5],[{id:`rubberduck`,shell:`#ffd93b`,claw:`#ffb03b`},1.5],[{id:`watermelon`,shell:`#3f9d63`,claw:`#4fb072`},1.5],[{id:`clawtron`,shell:`#8d99a6`,claw:`#a2aeba`},1],[{id:`selene`,shell:`#c9ced8`,claw:`#d8dde5`},1],[{id:`geode`,shell:`#6b6474`,claw:`#7d7588`},1],[{id:`ghost`,shell:`#dce8f2`,claw:`#ecf3fa`},1],[{id:`glass`,shell:`#cfe4f4`,claw:`#e0eef8`},1],[{id:`split`,shell:`#ff4f40`,claw:`#ff775f`},1],[{id:`sourdough`,shell:`#d9a662`,claw:`#e6bc82`},1],[{id:`zombie`,shell:`#9db08a`,claw:`#86a17a`},1],[{id:`plush`,shell:`#e8967a`,claw:`#f2b09a`},1],[{id:`balloon`,shell:`#ff5c8a`,claw:`#ff7ea1`},1],[{id:`cryptid`,shell:`#6e6257`,claw:`#7d7263`},.9],[{id:`flatpack`,shell:`#d9c9a8`,claw:`#d9c9a8`},.9],[{id:`tinfoil`,shell:`#9aa4ad`,claw:`#a8b2bb`},.9],[{id:`actual`,shell:`#a63c28`,claw:`#8f3220`},.9],[{id:`cottoncandy`,shell:`#f6a8c9`,claw:`#a5c6f0`},.8],[{id:`disco`,shell:`#b8c4d8`,claw:`#cbd5e6`},.8],[{id:`chimera`,shell:`#b0685a`,claw:`#b0685a`},.75],[{id:`pixel`,shell:`#d84c3e`,claw:`#ef8f6a`},.7],[{id:`blueprint`,shell:`#123a66`,claw:`#123a66`},.7],[{id:`phosphor`,shell:`#0d2415`,claw:`#0f2b19`},.7],[{id:`ascii`,shell:`var(--lob-ascii-ink, #d8dee6)`,claw:`var(--lob-ascii-ink, #d8dee6)`},.7],[{id:`portal`,shell:`#4a9df8`,claw:`#ff9a2e`},.7],[{id:`notexture`,shell:`#ff00dc`,claw:`#111111`},.65],[{id:`loading`,shell:`#3a4150`,claw:`#454d5e`},.65],[{id:`eclipse`,shell:`#14161d`,claw:`#1d2026`},.65],[{id:`heisenbug`,shell:`#262a33`,claw:`#343945`},.6],[{id:`invisible`,shell:`rgba(127,140,160,0.07)`,claw:`rgba(127,140,160,0.07)`},.55],[{id:`retro`,shell:`#e8262c`,claw:`#f04a3e`},.5],[{id:`goldenretro`,shell:`#e8b422`,claw:`#f6cf5a`},.1]],yk=vk.map(([e])=>e),bk=[`crimson`,`blue`,`gold`,`banana`,`watermelon`],xk={body:`#ff4f40`,clawLeft:`#4a7dfc`,clawRight:`#f4b840`,antennae:`#3f9d63`}})))()}function Ck(e,t){return L`
<g class="lob-flatpack">
<path
d="M48 10 C28 10 17 25 17 41 C17 58 29 69 48 69 C67 69 79 58 79 41 C79 25 68 10 48 10 Z"
fill="var(--lob-shell)"
stroke="#8a7c5f"
stroke-width="2"
stroke-dasharray="4 3"
/>
<g class="lob-eye-open" style=${e}>
<circle cx="39" cy="34" r="4.5" fill="#0a1014" />
<circle cx="57" cy="34" r="4.5" fill="#0a1014" />
<circle cx="40.2" cy="32.8" r="1.7" fill="var(--lob-glint, #00e5cc)" />
<circle cx="58.2" cy="32.8" r="1.7" fill="var(--lob-glint, #00e5cc)" />
</g>
<g
class="lob-eye-closed"
stroke="#0a1014"
stroke-width="2.5"
stroke-linecap="round"
fill="none"
style=${t}
>
<path d="M34 35 Q39 31 44 35" />
<path d="M52 35 Q57 31 62 35" />
</g>
<g fill="none" stroke="#8a7c5f" stroke-width="1.5" stroke-dasharray="4 3">
<path d="M27 48 Q50 58 75 61" />
<path d="M68 47 Q79 58 92 70" />
</g>
<g class="lob-claw lob-claw--l">
<path
d="M76 53 C66 50 62 58 67 65 C72 72 82 68 85 60 C87 55 82 53 76 53 Z"
fill="var(--lob-claw)"
stroke="#8a7c5f"
stroke-width="1.5"
stroke-dasharray="4 3"
/>
</g>
<g class="lob-claw lob-claw--r">
<path
d="M98 65 C109 62 115 70 111 79 C107 88 96 84 91 76 C88 70 92 66 98 65 Z"
fill="var(--lob-claw)"
stroke="#8a7c5f"
stroke-width="1.5"
stroke-dasharray="4 3"
/>
</g>
<g fill="var(--lob-shell)" stroke="#8a7c5f" stroke-width="1.5" stroke-dasharray="4 3">
<rect x="15" y="88" width="15" height="6" rx="2" />
<rect x="34" y="88" width="15" height="6" rx="2" />
<rect x="53" y="88" width="15" height="6" rx="2" />
<rect x="72" y="88" width="15" height="6" rx="2" />
</g>
<g fill="none" stroke="#5f5648" stroke-width="3" stroke-linecap="round">
<path d="M84 24 L101 8" />
<path d="M93 31 L113 14" />
</g>
<g fill="#8a7c5f">
<circle cx="105" cy="29" r="3" />
<circle cx="113" cy="35" r="3" />
</g>
<path
class="lob-flatpack__allen-key"
d="M101 84 L101 99 L115 99"
fill="none"
stroke="#5f5648"
stroke-width="3"
stroke-linecap="round"
stroke-linejoin="round"
/>
</g>
`}function wk(e,t){return L`
<!-- Skeleton placeholders stay neutral instead of inheriting palette colors. -->
<g class="lob-skeleton">
<rect class="lob-skeleton__block" style="--i:0" x="24" y="18" width="72" height="64" rx="10" fill="#2f3542" />
<rect class="lob-skeleton__block" style="--i:1" x="2" y="43" width="24" height="20" rx="8" fill="#39404f" />
<rect class="lob-skeleton__block" style="--i:2" x="94" y="43" width="24" height="20" rx="8" fill="#39404f" />
<path class="lob-skeleton__block" style="--i:3" d="M45 21 L34 7" stroke="#39404f" stroke-width="6" stroke-linecap="round" />
<path class="lob-skeleton__block" style="--i:4" d="M75 21 L86 7" stroke="#39404f" stroke-width="6" stroke-linecap="round" />
<rect class="lob-skeleton__block" style="--i:5" x="31" y="79" width="10" height="22" rx="4" fill="#2f3542" />
<rect class="lob-skeleton__block" style="--i:6" x="46" y="79" width="10" height="24" rx="4" fill="#39404f" />
<rect class="lob-skeleton__block" style="--i:7" x="64" y="79" width="10" height="24" rx="4" fill="#39404f" />
<rect class="lob-skeleton__block" style="--i:8" x="79" y="79" width="10" height="22" rx="4" fill="#2f3542" />
<g class="lob-eye-open" style=${e}>
<circle cx="47" cy="43" r="5" fill="#4a5364" />
<circle cx="73" cy="43" r="5" fill="#4a5364" />
</g>
<g class="lob-eye-closed" style=${t} fill="#4a5364">
<rect x="41" y="42" width="12" height="3" rx="1.5" />
<rect x="67" y="42" width="12" height="3" rx="1.5" />
</g>
</g>
`}function Tk(e,t){return L`
<g class="lob-actual">
<g fill="none" stroke="#6f281d" stroke-linecap="round">
<path d="M47 27 Q27 5 2 3" stroke-width="2" />
<path d="M73 27 Q93 5 118 3" stroke-width="2" />
<path d="M46 29 Q34 16 22 13" stroke-width="1.3" />
<path d="M74 29 Q86 16 98 13" stroke-width="1.3" />
</g>
<g fill="none" stroke="#7f3022" stroke-width="2.2" stroke-linecap="round">
<path d="M39 48 Q22 52 10 65" />
<path d="M38 56 Q20 62 8 77" />
<path d="M40 65 Q24 72 15 88" />
<path d="M43 74 Q31 82 27 97" />
<path d="M81 48 Q98 52 110 65" />
<path d="M82 56 Q100 62 112 77" />
<path d="M80 65 Q96 72 105 88" />
<path d="M77 74 Q89 82 93 97" />
</g>
<g class="lob-actual__tail" fill="#8f3220" stroke="#6f281d" stroke-width="1.4">
<path d="M48 88 Q38 91 31 103 Q44 103 55 96 Z" />
<path d="M72 88 Q82 91 89 103 Q76 103 65 96 Z" />
<path d="M54 89 Q60 96 66 89 L69 104 Q60 101 51 104 Z" />
</g>
<g class="lob-claw lob-claw--l">
<path
d="M34 43 Q25 31 12 33 Q0 35 2 48 Q4 61 17 63 Q28 64 35 54 L30 49 Q22 54 15 50 Q10 47 13 42 Q17 37 24 42 Z"
fill="var(--lob-claw)"
stroke="#6f281d"
stroke-width="1.5"
/>
</g>
<g class="lob-claw lob-claw--r">
<path
d="M86 44 Q94 32 104 34 Q113 35 116 42 L107 45 L118 49 Q115 58 105 60 Q96 61 87 53 Z"
fill="var(--lob-claw)"
stroke="#6f281d"
stroke-width="1.5"
/>
</g>
<path
class="lob-actual__carapace"
d="M60 20 Q38 20 34 38 Q32 50 41 58 Q49 64 60 64 Q71 64 79 58 Q88 50 86 38 Q82 20 60 20 Z"
fill="var(--lob-shell)"
stroke="#6f281d"
stroke-width="1.8"
/>
<g class="lob-actual__abdomen" stroke="#6f281d" stroke-width="1.4">
<path d="M39 54 Q60 62 81 54 L79 65 Q60 72 41 65 Z" fill="#b34b35" />
<path d="M41 65 Q60 72 79 65 L76 76 Q60 82 44 76 Z" fill="#a63c28" />
<path d="M44 76 Q60 82 76 76 L72 87 Q60 92 48 87 Z" fill="#b34b35" />
<path d="M48 87 Q60 92 72 87 L67 96 Q60 99 53 96 Z" fill="#a63c28" />
</g>
<path d="M48 42 Q60 48 72 42 Q69 56 60 58 Q51 56 48 42 Z" fill="#bd6044" opacity="0.72" />
<g fill="none" stroke="#6f281d" stroke-width="2.2" stroke-linecap="round">
<path d="M47 28 L45 23" />
<path d="M73 28 L75 23" />
</g>
<g class="lob-eye-open" style=${e}>
<circle cx="45" cy="22" r="3.5" fill="#17100e" />
<circle cx="75" cy="22" r="3.5" fill="#17100e" />
<circle cx="46" cy="21" r="1" fill="#f2c6a8" />
<circle cx="76" cy="21" r="1" fill="#f2c6a8" />
</g>
<g class="lob-eye-closed" style=${t} fill="none" stroke="#17100e" stroke-width="2" stroke-linecap="round">
<path d="M41.5 22 H48.5" />
<path d="M71.5 22 H78.5" />
</g>
</g>
`}function Ek(e,t){return L`
<g class="lob-balloon">
<g fill="none" stroke="var(--lob-shell)" stroke-width="4" stroke-linecap="round">
<path d="M48 13 Q45 5 42 3" />
<path d="M72 13 Q75 5 78 3" />
</g>
<g class="lob-claw lob-claw--l" fill="var(--lob-claw)">
<ellipse cx="29" cy="29" rx="9" ry="7" transform="rotate(-20 29 29)" />
<ellipse cx="20" cy="35" rx="8" ry="6" transform="rotate(18 20 35)" />
</g>
<g class="lob-claw lob-claw--r" fill="var(--lob-claw)">
<ellipse cx="91" cy="29" rx="9" ry="7" transform="rotate(20 91 29)" />
<ellipse cx="100" cy="35" rx="8" ry="6" transform="rotate(-18 100 35)" />
</g>
<ellipse cx="60" cy="29" rx="24" ry="19" fill="var(--lob-shell)" />
<circle cx="60" cy="48" r="4" fill="#d94b72" />
<ellipse cx="60" cy="61" rx="18" ry="14" fill="var(--lob-shell)" />
<circle cx="60" cy="75" r="3.5" fill="#d94b72" />
<ellipse cx="60" cy="86" rx="13" ry="10" fill="var(--lob-shell)" />
<g fill="#ffffff" opacity="0.55">
<ellipse cx="50" cy="22" rx="4" ry="10" transform="rotate(35 50 22)" />
<ellipse cx="52" cy="56" rx="3" ry="7" transform="rotate(32 52 56)" />
<ellipse cx="54" cy="82" rx="2.4" ry="5" transform="rotate(28 54 82)" />
</g>
<g class="lob-eye-open" style=${e}>
<circle cx="50" cy="30" r="4.5" fill="#0a1014" />
<circle cx="70" cy="30" r="4.5" fill="#0a1014" />
<circle cx="51.3" cy="28.7" r="1.8" fill="var(--lob-glint, #00e5cc)" />
<circle cx="71.3" cy="28.7" r="1.8" fill="var(--lob-glint, #00e5cc)" />
</g>
<g
class="lob-eye-closed"
style=${t}
fill="none"
stroke="#0a1014"
stroke-width="2.5"
stroke-linecap="round"
>
<path d="M45 31 Q50 27 55 31" />
<path d="M65 31 Q70 27 75 31" />
</g>
<path d="M55 96 L60 91 L65 96 L60 101 Z" fill="#d94b72" />
<path
d="M60 100 Q67 102 62 105 Q57 108 65 111"
fill="none"
stroke="#c9d2da"
stroke-width="1.2"
stroke-linecap="round"
/>
</g>
`}function Dk(e,t){return L`
<!-- Like pet names and lore, terminal glyph art is an English-only easter-egg channel. -->
<g
class="lob-ascii"
fill="var(--lob-shell)"
font-family="ui-monospace, SFMono-Regular, Menlo, monospace"
font-size="11"
text-anchor="middle"
xml:space="preserve"
>
<text x="60" y="17">\\ / \\ /</text>
<text x="60" y="31">{ \\_______/ }</text>
<g class="lob-eye-open" style=${e}>
<text x="60" y="45">(o) (o)</text>
</g>
<g class="lob-eye-closed" style=${t}>
<text x="60" y="45">(-) (-)</text>
</g>
<text x="60" y="59">( '---' )</text>
<text x="60" y="73"> \\ _____ /</text>
<text x="60" y="87"> (_________)</text>
<text x="60" y="101"> | | | |</text>
</g>
`}function Ok(e,t){return L`
<g class="lob-portal">
<ellipse
class="lob-portal-ring lob-portal-ring--blue"
cx="30"
cy="50"
rx="14"
ry="30"
fill="#0d1b33"
fill-opacity="0.85"
stroke="currentColor"
stroke-width="3"
transform="rotate(-12 30 50)"
/>
<!-- Fixed lobster red preserves the split-body gag while shell/claw vars carry portal identity. -->
<path d="M31 30 Q45 20 56 30 Q62 39 60 53 Q58 64 47 70 L31 67 Z" fill="#b0432f" />
<g class="lob-claw lob-claw--l">
<path
d="M52 54 Q58 48 63 51 Q67 56 63 62 Q58 67 52 63 Z"
fill="#b0432f"
/>
</g>
<g fill="none" stroke="#b0432f" stroke-width="2" stroke-linecap="round">
<path d="M42 31 Q43 16 50 7" />
<path d="M52 28 Q58 14 66 9" />
</g>
<g class="lob-eye-open" style=${e}>
<circle cx="45" cy="39" r="4" fill="#0a1014" />
<circle cx="57" cy="37" r="4" fill="#0a1014" />
<circle cx="46" cy="38" r="1.5" fill="var(--lob-glint, #00e5cc)" />
<circle cx="58" cy="36" r="1.5" fill="var(--lob-glint, #00e5cc)" />
</g>
<g
class="lob-eye-closed"
style=${t}
fill="none"
stroke="#0a1014"
stroke-width="2.2"
stroke-linecap="round"
>
<path d="M41 40 Q45 37 49 40" />
<path d="M53 38 Q57 35 61 38" />
</g>
<g class="lob-portal-rear" fill="#b0432f">
<path d="M91 44 Q82 40 75 44 L82 51 L74 56 L82 61 L75 68 Q83 70 92 64 Z" />
<path d="M88 52 Q82 49 78 45" fill="none" stroke="#7f3022" stroke-width="2" />
<path d="M88 61 Q82 64 78 69" fill="none" stroke="#7f3022" stroke-width="2" />
</g>
<ellipse
class="lob-portal-ring lob-portal-ring--orange"
cx="92"
cy="58"
rx="14"
ry="30"
fill="#0d1b33"
fill-opacity="0.85"
stroke="currentColor"
stroke-width="3"
transform="rotate(10 92 58)"
/>
</g>
`}function kk(e){return L`
<g class="lob-tinfoil" fill="none" stroke="#c9d2da" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M27 31 L38 27 L45 34 L55 25 L64 33 L75 26 L91 34" />
<path d="M20 51 L31 45 L43 54 L55 45 L68 54 L82 44 L100 53" />
<path d="M23 70 L36 64 L47 73 L60 63 L74 72 L90 65 L98 72" />
<path d="M35 86 L46 80 L58 87 L70 79 L84 85" />
</g>
${e?L`
<g class="lob-tinfoil-hat">
<path d="M43 14 L57 0 L78 15 L60 11 Z" fill="#c0c9d1" />
<path d="M57 0 L60 11 L78 15" fill="none" stroke="#7f8992" stroke-width="1.5" />
<path d="M43 14 L60 11 L53 5" fill="none" stroke="#9aa4ad" stroke-width="1.5" />
</g>
`:``}
`}var Ak,jk,Mk,Nk,Pk;function Fk(){return(Fk=t((()=>{I(),Ak=L`
<g class="lob-watermelon">
<g fill="none" stroke="#2c7a4a" stroke-width="4" stroke-linecap="round">
<path d="M31 25 Q39 13 48 11" />
<path d="M48 22 Q54 10 60 9" />
<path d="M66 22 Q72 10 80 15" />
<path d="M82 28 Q89 20 94 30" />
</g>
<ellipse cx="60" cy="69" rx="35" ry="23" fill="#e5484d" />
<g fill="#28211c">
<ellipse cx="42" cy="62" rx="2" ry="3.4" transform="rotate(-20 42 62)" />
<ellipse cx="58" cy="58" rx="2" ry="3.4" transform="rotate(8 58 58)" />
<ellipse cx="76" cy="64" rx="2" ry="3.4" transform="rotate(24 76 64)" />
<ellipse cx="49" cy="77" rx="2" ry="3.4" transform="rotate(18 49 77)" />
<ellipse cx="68" cy="79" rx="2" ry="3.4" transform="rotate(-16 68 79)" />
<ellipse cx="84" cy="75" rx="1.8" ry="3.1" transform="rotate(30 84 75)" />
</g>
</g>
`,jk=L`
<path
class="lob-eclipse-corona"
d="M29 31 Q40 10 61 9 Q82 9 94 31"
fill="none"
stroke="#ffe9b8"
stroke-width="2.5"
stroke-linecap="round"
/>
`,Mk=[{y:12,x:44,count:4},{y:20,x:36,count:6},{y:28,x:28,count:8},{y:36,x:20,count:10},{y:44,x:16,count:11},{y:52,x:16,count:11},{y:60,x:16,count:11},{y:68,x:20,count:10},{y:76,x:24,count:9},{y:84,x:32,count:7},{y:92,x:44,count:4}],Nk=L`
<g class="lob-notexture" shape-rendering="crispEdges">
${Mk.flatMap((e,t)=>Array.from({length:e.count},(n,r)=>L`<rect
x=${e.x+r*8}
y=${e.y}
width="8"
height="8"
fill=${(t+r)%2==0?`#ff00dc`:`#111111`}
/>`))}
</g>
`,Pk=L`
<g class="lob-chimera-stitches" fill="none" stroke="#4a3f3a" stroke-width="1.8" stroke-linecap="round">
<path d="M18 47 L27 50 M19 51 L22 46 M23 53 L26 48" />
<path d="M93 50 L102 47 M94 48 L97 53 M98 46 L101 51" />
</g>
`})))()}function Ik(e){let t=(Math.round(e)%8+8)%8;if(t===0)return L`<g class="lob-selene-moon"><circle cx="60" cy="64" r="12" fill="#26304a" /><circle cx="60" cy="64" r="11" fill="none" stroke="#f4f7fc" stroke-width="1" /></g>`;if(t===4)return L`<g class="lob-selene-moon"><circle cx="60" cy="64" r="12" fill="#26304a" /><circle cx="60" cy="64" r="11" fill="#f4f7fc" /></g>`;let n=t<4?[-5,-9,-14][t-1]:[14,9,5][t-5];return L`
<g class="lob-selene-moon">
<circle cx="60" cy="64" r="12" fill="#26304a" />
<circle cx="60" cy="64" r="11" fill="#f4f7fc" />
<circle cx=${60+(n??0)} cy="64" r="11" fill="#26304a" />
</g>
`}function Lk(e,t){return L`
<g class="lob-pixel-frame" shape-rendering="crispEdges">
<g class="lob-pixel-antennae" fill="#d84c3e">
<rect x="30" y="0" width="6" height="6" /><rect x="36" y="6" width="6" height="6" /><rect x="42" y="12" width="6" height="6" />
<rect x="84" y="0" width="6" height="6" /><rect x="78" y="6" width="6" height="6" /><rect x="72" y="12" width="6" height="6" />
</g>
<g class="lob-pixel-claws">
<path d="M18 42 H6 V48 H0 V60 H6 V66 H18 V60 H24 V48 H18 Z M6 48 H12 V60 H6 Z" fill="#d84c3e" />
<rect x="6" y="60" width="12" height="6" fill="#a83428" />
<path d="M102 42 H114 V48 H120 V60 H114 V66 H102 V60 H96 V48 H102 Z M108 48 H114 V60 H108 Z" fill="#d84c3e" />
<rect x="102" y="60" width="12" height="6" fill="#a83428" />
</g>
<!-- Main cells keep the palette variable so offline and mood-style tinting still read. -->
<g class="lob-pixel-body" fill="var(--lob-shell, #d84c3e)">
<rect x="42" y="12" width="36" height="6" /><rect x="36" y="18" width="48" height="6" />
<rect x="30" y="24" width="60" height="6" /><rect x="24" y="30" width="72" height="48" />
<rect x="30" y="78" width="60" height="12" /><rect x="36" y="90" width="48" height="6" />
<rect x="36" y="96" width="12" height="9" /><rect x="72" y="96" width="12" height="9" />
</g>
<g fill="#ef8f6a"><rect x="36" y="24" width="24" height="6" /><rect x="30" y="30" width="18" height="12" /><rect x="24" y="42" width="12" height="12" /></g>
<g fill="#a83428"><rect x="30" y="78" width="60" height="12" /><rect x="36" y="90" width="48" height="6" /><rect x="36" y="96" width="12" height="9" /><rect x="72" y="96" width="12" height="9" /></g>
<g class="lob-eye-open" style=${e}>
<rect x="42" y="30" width="6" height="6" fill="#0a1014" /><rect x="72" y="30" width="6" height="6" fill="#0a1014" />
<rect x="42" y="30" width="2.5" height="2.5" fill="#fff" /><rect x="72" y="30" width="2.5" height="2.5" fill="#fff" />
</g>
<g class="lob-eye-closed" style=${t} fill="#0a1014"><rect x="42" y="33" width="6" height="3" /><rect x="72" y="33" width="6" height="3" /></g>
</g>
`}function Rk(){return L`
<svg
class="lobster-pet__svg"
viewBox="0 0 120 105"
preserveAspectRatio="none"
aria-hidden="true"
>
<g stroke="#a63a2e" stroke-width="4" stroke-linecap="round" fill="none">
<path d="M22 78 L8 88" />
<path d="M28 88 L16 99" />
<path d="M98 78 L112 88" />
<path d="M92 88 L104 99" />
</g>
<g stroke="#c44536" stroke-width="3.5" stroke-linecap="round" fill="none">
<path d="M44 38 L40 24" />
<path d="M76 38 L80 24" />
</g>
<circle cx="40" cy="22" r="4.5" fill="#0a1014" />
<circle cx="80" cy="22" r="4.5" fill="#0a1014" />
<circle cx="41.5" cy="20.5" r="1.8" fill="#ffd166" />
<circle cx="81.5" cy="20.5" r="1.8" fill="#ffd166" />
<ellipse cx="60" cy="70" rx="46" ry="30" fill="#c44536" />
<ellipse cx="48" cy="60" rx="16" ry="9" fill="#ffffff" opacity="0.1" />
<path
d="M16 58 C2 52 -2 62 4 72 C10 82 20 76 24 66 C26 60 22 58 16 58 Z"
fill="#d95f4b"
/>
<path
d="M104 58 C118 52 122 62 116 72 C110 82 100 76 96 66 C94 60 98 58 104 58 Z"
fill="#d95f4b"
/>
<path d="M48 82 Q60 90 72 82" stroke="#7e2a20" stroke-width="3" stroke-linecap="round" fill="none" />
</svg>
`}function zk(){return L`
<svg
class="lobster-pet__svg"
viewBox="0 0 120 105"
preserveAspectRatio="none"
aria-hidden="true"
>
<path
d="M14 96 Q32 84 58 88 L96 88 Q110 90 112 97 Q112 103 102 103 L24 103 Q14 103 14 96 Z"
fill="#c9a06a"
/>
<g stroke="#c9a06a" stroke-width="3.5" stroke-linecap="round" fill="none">
<path d="M94 88 Q96 76 91 68" />
<path d="M103 88 Q107 76 103 66" />
</g>
<circle cx="90" cy="65" r="3.6" fill="#0a1014" />
<circle cx="103" cy="63" r="3.6" fill="#0a1014" />
<circle cx="91" cy="64" r="1.3" fill="#ffd166" />
<circle cx="104" cy="62" r="1.3" fill="#ffd166" />
<circle cx="50" cy="62" r="27" fill="#8a5a2b" />
<path
d="M50 41 a21 21 0 1 1 -15 36 a14 14 0 1 0 11 -25 a8 8 0 1 0 4 14"
stroke="#5f3d1c"
stroke-width="4"
stroke-linecap="round"
fill="none"
/>
</svg>
`}function Bk(){return L`
<svg
class="lobster-pet__svg"
viewBox="0 0 120 105"
preserveAspectRatio="none"
aria-hidden="true"
>
<path d="M30 82 Q20 74 27 65 Q30 76 40 79 Z" fill="#f0b52e" />
<ellipse cx="58" cy="85" rx="34" ry="17" fill="#ffd23e" />
<circle cx="82" cy="50" r="18" fill="#ffd23e" />
<path d="M98 49 Q112 52 99 59 Q95 56 95 51 Z" fill="#ff8c2e" />
<circle cx="86" cy="44" r="3.6" fill="#0a1014" />
<circle cx="87" cy="43" r="1.3" fill="#ffffff" />
<path d="M44 82 Q58 72 72 82 Q58 93 44 82 Z" fill="#f0b52e" opacity="0.75" />
</svg>
`}function Vk(){return L`
<svg
class="lobster-pet__svg"
viewBox="0 0 120 105"
preserveAspectRatio="none"
aria-hidden="true"
>
<g class="lob-jelly-tentacles" stroke="#9f7dfa" stroke-width="2.5" stroke-linecap="round" fill="none" opacity="0.8">
<path d="M40 58 Q35 74 42 90" />
<path d="M54 61 Q52 78 57 96" />
<path d="M68 61 Q71 78 64 94" />
<path d="M80 58 Q85 72 78 88" />
</g>
<path
d="M30 52 C30 22 90 22 90 52 L90 58 Q82 52 75 58 Q67 52 60 58 Q52 52 45 58 Q38 52 30 58 Z"
fill="#b79bff"
opacity="0.78"
/>
<ellipse cx="47" cy="37" rx="12" ry="6" fill="#ffffff" opacity="0.25" />
<circle cx="52" cy="45" r="2.6" fill="#0a1014" />
<circle cx="66" cy="45" r="2.6" fill="#0a1014" />
</svg>
`}function Hk(e){return L`
<svg class="lobster-bottle__svg" viewBox="0 0 48 44" aria-hidden="true">
<g transform="rotate(-16 24 30)">
<rect x="5" y="18" width="30" height="16" rx="7" fill="#7fc8b8" opacity="0.72" />
<rect x="33" y="22" width="9" height="8" rx="2.5" fill="#7fc8b8" opacity="0.72" />
${e?L`
<rect x="36" y="20" width="11" height="7" rx="1.5" fill="#f2e5c9" transform="rotate(-24 41 23)" />
<rect x="43" y="30" width="4.5" height="8" rx="1.6" fill="#8a5a2b" transform="rotate(38 45 34)" />
`:L`<rect x="41" y="21.5" width="5" height="9" rx="1.8" fill="#8a5a2b" />`}
<rect x="11" y="22" width="12" height="8" rx="1.5" fill="#f2e5c9" />
<path d="M13 24.5 L21 24.5 M13 27 L19 27" stroke="#b6a071" stroke-width="1" />
<ellipse cx="13" cy="20.5" rx="5" ry="2" fill="#ffffff" opacity="0.35" />
</g>
</svg>
`}var Uk,Wk,Gk,Kk,qk,Jk,Yk,Xk,Zk,Qk,$k,eA,tA,nA,rA,iA,aA,oA,sA,cA,lA,uA,dA,fA,pA,mA,hA,gA,_A,vA,yA,bA,xA,SA,CA;function wA(){return(wA=t((()=>{I(),Fk(),Uk={crown:L`
<path
d="M46 12 L46 2 L53 8 L60 0 L67 8 L74 2 L74 12 Q60 8 46 12 Z"
fill="#f6c945"
/>
`,sprout:L`
<g>
<path d="M60 12 Q58 4 63 1" stroke="#3f9d63" stroke-width="3" stroke-linecap="round" fill="none" />
<ellipse cx="67" cy="3" rx="5" ry="3" fill="#57c785" transform="rotate(-24 67 3)" />
</g>
`,patch:L`
<g>
<path d="M28 27 Q60 14 92 22" stroke="#101820" stroke-width="4" stroke-linecap="round" fill="none" />
<circle cx="75" cy="32" r="9" fill="#101820" />
</g>
`,santa:L`
<g>
<path d="M47 10 Q54 1 68 3 L72 9 Z" fill="#e0312f" />
<circle cx="71" cy="3.5" r="3.5" fill="#f5f7fa" />
<ellipse cx="59" cy="10.5" rx="15" ry="3.5" fill="#f5f7fa" />
</g>
`,pumpkin:L`
<g>
<ellipse cx="60" cy="6.5" rx="8.5" ry="5.5" fill="#e8871e" />
<path d="M56 2.5 Q56 6.5 56 10.5 M64 2.5 Q64 6.5 64 10.5" stroke="#c96a10" stroke-width="1.5" fill="none" />
<path d="M60 1.5 Q60.5 0 63 0.5" stroke="#4c9a4c" stroke-width="2.5" stroke-linecap="round" fill="none" />
</g>
`,party:L`
<g>
<path d="M52 11 L60 0.5 L68 11 Z" fill="#7c5cff" />
<path d="M55.5 6.5 L64.5 6.5" stroke="#ffd166" stroke-width="2" />
<circle cx="60" cy="1" r="2.4" fill="#ff5c8a" />
</g>
`,barnacle:L`
<g class="lob-barnacles">
<path d="M32 22 L36.5 13 L41 22 Z" fill="#cfd8de" />
<path d="M42 18 L45.5 11 L49 18 Z" fill="#b8c4cc" />
<path d="M27 26 L30 20.5 L33 26 Z" fill="#b8c4cc" />
<circle cx="36.5" cy="18.5" r="1.1" fill="#8a949d" />
<circle cx="45.5" cy="15" r="0.9" fill="#8a949d" />
</g>
`,monocle:L`
<g class="lob-monocle" fill="none" stroke="#f4b840">
<circle cx="75" cy="32" r="8.5" stroke-width="2.5" />
<path d="M81 39 Q85 48 80 56" stroke-width="1.5" />
</g>
`},Wk=L`
<g class="lob-freckles" fill="#ffffff" opacity="0.3">
<circle cx="42" cy="45" r="1.6" />
<circle cx="50" cy="41" r="1.2" />
<circle cx="70" cy="45" r="1.6" />
<circle cx="78" cy="41" r="1.2" />
<circle cx="55" cy="62" r="1.4" />
<circle cx="67" cy="66" r="1.2" />
</g>
`,Gk=L`
<g class="lob-lumen" fill="#7ef5dd">
<circle cx="36" cy="54" r="2.4" />
<circle cx="50" cy="66" r="2" />
<circle cx="66" cy="70" r="2.2" />
<circle cx="80" cy="60" r="2" />
<circle cx="88" cy="46" r="1.7" />
<circle cx="60" cy="86" r="1.7" />
</g>
`,Kk=L`
<g class="lob-magma" fill="none" stroke="#ff6a3d" stroke-width="2" stroke-linecap="round">
<path d="M40 44 L48 54 L42 66 L50 78" />
<path d="M74 40 L68 52 L78 64" />
<path d="M56 82 L62 90" />
</g>
`,qk=L`
<g class="lob-oilsheen">
<ellipse cx="46" cy="60" rx="22" ry="11" fill="#7f77dd" opacity="0.3" transform="rotate(-14 46 60)" />
<ellipse cx="76" cy="74" rx="17" ry="8" fill="#1d9e75" opacity="0.28" transform="rotate(10 76 74)" />
</g>
`,Jk=L`
<g class="lob-aurora" fill="none" stroke-linecap="round">
<path class="lob-aurora__band1" d="M24 62 Q48 48 70 58 T102 54" stroke="#4ecfa6" stroke-width="6" opacity="0.5" />
<path class="lob-aurora__band2" d="M28 76 Q54 62 78 72 T100 68" stroke="#a184ec" stroke-width="5" opacity="0.45" />
</g>
`,Yk=L`
<g class="lob-nebula-stars">
<circle cx="38" cy="52" r="1" fill="#fff" />
<circle cx="52" cy="70" r="1.2" fill="#fff" />
<circle cx="84" cy="48" r="1.4" fill="#fff" />
<circle cx="66" cy="86" r="1" fill="#fff" />
<circle cx="72" cy="60" r="1.6" fill="#8be9fd" />
<circle cx="46" cy="40" r="1.4" fill="#ff9de2" />
<path class="lob-twinkle" d="M60 52 L61.5 55.5 L65 57 L61.5 58.5 L60 62 L58.5 58.5 L55 57 L58.5 55.5 Z" fill="#fff" />
</g>
`,Xk=L`
<g class="lob-glass-glints" fill="none" stroke="#ffffff" stroke-width="2.5" stroke-linecap="round" opacity="0.7">
<path d="M34 22 L28 32" />
<path d="M40 16 L37 22" />
</g>
`,Zk=L`
<g class="lob-geode-facets">
<polygon points="70,34 80,30 78,44" fill="#9b6ff0" />
<polygon points="82,46 94,42 88,58" fill="#b48ef0" />
<polygon points="72,58 84,62 74,74" fill="#7a4fd0" />
<polygon points="86,68 96,64 90,80" fill="#9b6ff0" />
<circle class="lob-twinkle" cx="90" cy="50" r="1.8" fill="#fff" />
</g>
`,Qk=L`
<g class="lob-scanlines" stroke="#3fff7d" stroke-width="1" opacity="0.16">
<path d="M40 20 H80 M30 27 H90 M26 34 H94 M21 41 H99 M18 48 H102 M17 55 H103 M17 62 H103 M18 69 H102 M22 76 H98 M31 83 H89 M45 90 H75" />
</g>
`,$k=L`
<g class="lob-glitch-ghosts">
<path d="M60 8 C32 8 16 32 16 52 C16 72 30 90 44 95 L44 104 L54 104 L54 96 C58 97.5 62 97.5 66 96 L66 104 L76 104 L76 95 C90 90 104 72 104 52 C104 32 88 8 60 8 Z" transform="translate(-3 0)" fill="#ff3355" opacity="0.4" />
<path d="M60 8 C32 8 16 32 16 52 C16 72 30 90 44 95 L44 104 L54 104 L54 96 C58 97.5 62 97.5 66 96 L66 104 L76 104 L76 95 C90 90 104 72 104 52 C104 32 88 8 60 8 Z" transform="translate(3 1)" fill="#22d3ee" opacity="0.4" />
</g>
`,eA=L`
<g class="lob-blueprint" fill="none" stroke="#cfe3ff">
<path class="lob-bp-outline" d="M60 8 C32 8 16 32 16 52 C16 72 30 90 44 95 L44 104 L54 104 L54 96 C58 97.5 62 97.5 66 96 L66 104 L76 104 L76 95 C90 90 104 72 104 52 C104 32 88 8 60 8 Z" stroke-width="1.5" stroke-dasharray="5 3" />
<path d="M54 58 H66 M60 52 V64" stroke-width="1" opacity="0.7" />
<path d="M16 100 H104" stroke-width="1" stroke-dasharray="2 3" opacity="0.7" />
</g>
`,tA=L`
<g class="lob-mecha">
<g fill="none" stroke="#5f6a75" stroke-width="1.5">
<path d="M28 56 Q60 66 92 56" />
<path d="M34 74 Q60 82 86 74" />
</g>
<g fill="#5f6a75">
<circle cx="36" cy="61" r="1.4" />
<circle cx="60" cy="64" r="1.4" />
<circle cx="84" cy="61" r="1.4" />
</g>
<circle class="lob-led" cx="89" cy="7" r="3" fill="#ff4444" />
</g>
`,nA=new Set(`split.retro.lumen.magma.oilslick.aurora.nebula.glass.geode.phosphor.heisenbug.blueprint.clawtron.selene.pixel.banana.bee.rubberduck.watermelon.sourdough.zombie.plush.balloon.disco.cryptid.flatpack.tinfoil.actual.chimera.notexture.loading.eclipse.ascii.portal.invisible.goldenretro`.split(`.`)),rA=L`
<g fill="#8a6430">
<rect x="56" y="8" width="8" height="6" rx="2.5" />
<ellipse cx="60" cy="91" rx="6" ry="3.5" />
<circle cx="37" cy="48" r="2.5" />
<circle cx="79" cy="55" r="2" />
<circle cx="47" cy="70" r="1.8" />
<circle cx="72" cy="79" r="2.3" />
</g>
`,iA=L`
<g class="lob-bee-wings" fill="#ffffff" opacity="0.45">
<ellipse cx="38" cy="14" rx="8" ry="4.5" transform="rotate(-24 38 14)" />
<ellipse cx="82" cy="14" rx="8" ry="4.5" transform="rotate(24 82 14)" />
</g>
<g fill="#2b2b23" opacity="0.9">
<path d="M19 42 Q60 51 101 42 L103 50 Q60 60 17 50 Z" />
<path d="M17 58 Q60 67 103 58 L101 67 Q60 76 19 67 Z" />
<path d="M24 76 Q60 84 96 76 L90 85 Q60 92 30 85 Z" />
</g>
`,aA=L`
<g>
<ellipse cx="60" cy="71" rx="21" ry="14" fill="#ffffff" opacity="0.5" />
<rect x="47" y="41" width="26" height="8" rx="4" fill="#ff9a2e" />
<rect x="50" y="47" width="20" height="5" rx="2.5" fill="#e98322" />
</g>
`,oA=L`
<g fill="none" stroke="#a8763e" stroke-width="2.5" stroke-linecap="round">
<path d="M38 23 Q45 29 52 30" />
<path d="M52 17 Q59 24 66 25" />
<path d="M67 18 Q74 24 81 25" />
</g>
<g fill="#ffffff" opacity="0.5">
<circle cx="34" cy="39" r="1.2" /><circle cx="86" cy="38" r="1" />
<circle cx="45" cy="57" r="1.4" /><circle cx="74" cy="62" r="1.1" />
<circle cx="56" cy="78" r="1" /><circle cx="83" cy="75" r="1.3" />
</g>
`,sA=L`
<g fill="none" stroke="#5a6b52" stroke-width="2" stroke-linecap="round">
<path d="M32 24 Q47 19 61 23" />
<path d="M38 19 L40 26 M46 18 L47 25 M54 19 L53 26" />
<path d="M57 72 Q72 78 87 72" />
<path d="M65 72 L63 79 M73 73 L72 80 M81 71 L83 78" />
</g>
<ellipse cx="35" cy="61" rx="9" ry="6" fill="#86987a" opacity="0.8" transform="rotate(-18 35 61)" />
`,cA=L`
<g fill="none" stroke="#c97a5e" stroke-width="1.5" stroke-dasharray="3 3">
<path d="M30 32 Q60 4 90 32" />
<path d="M60 50 Q58 72 60 96" />
</g>
<g class="lob-plush-button">
<circle cx="78" cy="44" r="3.5" fill="#7a4a3a" />
<circle cx="76.8" cy="44" r="0.7" fill="#e8967a" />
<circle cx="79.2" cy="44" r="0.7" fill="#e8967a" />
</g>
`,lA=L`
<g class="lob-disco" fill="#ffffff">
<rect x="42" y="18" width="4" height="4" opacity="0.3" /><rect x="52" y="16" width="4" height="4" opacity="0.5" />
<rect x="63" y="17" width="4" height="4" opacity="0.25" /><rect x="74" y="20" width="4" height="4" opacity="0.4" />
<rect x="31" y="40" width="4" height="4" opacity="0.4" /><rect x="53" y="39" width="4" height="4" opacity="0.25" />
<rect x="65" y="42" width="4" height="4" opacity="0.5" /><rect x="86" y="40" width="4" height="4" opacity="0.3" />
<rect x="39" y="59" width="4" height="4" opacity="0.25" /><rect x="51" y="62" width="4" height="4" opacity="0.45" />
<rect x="68" y="60" width="4" height="4" opacity="0.3" /><rect x="80" y="58" width="4" height="4" opacity="0.5" />
<rect x="49" y="79" width="4" height="4" opacity="0.35" /><rect x="70" y="80" width="4" height="4" opacity="0.25" />
</g>
`,uA={lumen:Gk,magma:Kk,oilslick:qk,aurora:Jk,nebula:Yk,glass:Xk,geode:Zk,phosphor:Qk,blueprint:eA,clawtron:tA,banana:rA,bee:iA,rubberduck:aA,sourdough:oA,zombie:sA,plush:cA,disco:lA,watermelon:Ak,eclipse:jk,notexture:Nk,chimera:Pk},dA=L`
<path
class="lob-split-half"
d="M60 8 C88 8 104 32 104 52 C104 72 90 90 76 95 L76 104 L66 104 L66 96 C64 96.8 62 97.1 60 97.1 L60 8 Z"
fill="var(--lob-shell2, #46536b)"
/>
`,fA=L`
<path
d="M95 55 C112 53 119 39 116 25 C113 11 99 5 91 12 C88 15 87 19 88 23 C83 27 83 36 88 43 C91 49 93 52 95 55 Z"
fill="var(--lob-claw)"
/>
<path
d="M92 14 C97 22 99 31 95 41"
class="lob-retro-claw-line"
stroke="#b8151b"
stroke-width="3"
stroke-linecap="round"
fill="none"
/>
`,pA=L`
<g class="lob-antennae" stroke="var(--lob-shell)" stroke-width="4" stroke-linecap="round" fill="none">
<path d="M50 16 Q45 4 37 1" />
<path d="M70 16 Q75 4 83 1" />
</g>
`,mA=L`
<g stroke="#0a1014" stroke-linecap="round" fill="none">
<path d="M37 24 L51 28" stroke-width="3.5" />
<path d="M69 28 L83 24" stroke-width="3.5" />
<path d="M49 45 Q59 51 69 45 L72 42" stroke-width="3" />
</g>
`,hA=L`
<g class="lob-tail">
<ellipse cx="16" cy="84" rx="11" ry="7" transform="rotate(-32 16 84)" />
<ellipse cx="104" cy="84" rx="11" ry="7" transform="rotate(32 104 84)" />
</g>
`,gA=L`
<g class="lob-bindle">
<path d="M70 62 L99 30" stroke="#8a5a2b" stroke-width="3.5" stroke-linecap="round" />
<circle cx="101" cy="27" r="9.5" fill="#e8b04b" />
<circle cx="98" cy="24" r="1.6" fill="#b6791f" />
<circle cx="104" cy="29" r="1.6" fill="#b6791f" />
<circle cx="100" cy="32" r="1.3" fill="#b6791f" />
</g>
`,_A=new Set([`crown`,`sprout`,`santa`,`pumpkin`,`party`]),vA=L`
<g class="lob-cap">
<path d="M46 10 Q60 -3 74 10 L74 13 Q60 7 46 13 Z" fill="#f5f7fa" />
<path d="M45 12 Q60 6 75 12 L75 16 Q60 10.5 45 16 Z" fill="#dfe7ee" />
<circle cx="60" cy="2.5" r="1.8" fill="#3b6ea5" />
</g>
`,yA=L`
<g stroke="#0a1014" stroke-linecap="round" fill="none">
<path d="M37 24 L51 28" stroke-width="3.5" />
<path d="M69 28 L83 24" stroke-width="3.5" />
<path d="M50 48 Q60 42 70 48" stroke-width="3" />
</g>
`,bA={perky:L`
<g class="lob-antennae" stroke="var(--lob-shell)" stroke-width="4" stroke-linecap="round" fill="none">
<path d="M46 14 Q38 4 31 7" />
<path d="M74 14 Q82 4 89 7" />
</g>
`,droopy:L`
<g class="lob-antennae" stroke="var(--lob-shell)" stroke-width="4" stroke-linecap="round" fill="none">
<path d="M46 14 Q36 8 34 18" />
<path d="M74 14 Q84 8 86 18" />
</g>
`},xA={crab:Rk,snail:zk,duck:Bk,jellyfish:Vk},SA=L`
<svg class="lobster-pet__balloon" viewBox="0 0 40 62" aria-hidden="true">
<path d="M20 34 Q23 46 18 60" stroke="#8a949d" stroke-width="1.5" fill="none" />
<ellipse cx="20" cy="16" rx="13" ry="15" fill="#ff5c8a" />
<path d="M17 30 L20 34.5 L23 30 Z" fill="#e0446f" />
<ellipse cx="15" cy="10" rx="4" ry="6" fill="#ffffff" opacity="0.3" />
</svg>
`,CA={stranger:`a stranger`,crab:`definitely a lobster`,snail:`in no particular hurry`,duck:`a duck. obviously`,jellyfish:`just drifting`}})))()}function TA(e){return{palette:e,scale:2,accessory:`none`,antennae:`perky`,side:`left`,spotPct:0,facing:1,personality:`friendly`,blinkDelayS:No(e.id)%36/10,build:`round`,clawSize:`regular`,tailFan:!1,shiny:!1,crusherSide:null,freckles:!1,glint:null,chimeraParts:e.id===`chimera`?xk:null}}function EA(e){return e.getMonth()===HA.month&&e.getDate()===HA.day}function DA(e){let t=e.getMonth(),n=e.getDate();return t===11?[[`santa`,18]]:t===9&&n>=20?[[`pumpkin`,18]]:t===8&&n===25?[[`monocle`,24]]:[]}function OA(e,t){let n=ok(e.palette.id);return n===e.palette.id?sk(t):n}function kA(e,t){for(let n=1;n<=24;n++){let r=MA(e+n*7919>>>0);if(r.palette.id!==t)return r}return MA(e+1>>>0)}function Z(e){let t=e>>>0;return()=>{t=t+1831565813|0;let e=Math.imul(t^t>>>15,1|t);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296}}function AA(e,t){let n=t.reduce((e,[,t])=>e+t,0),r=e()*n;for(let[e,n]of t)if(r-=n,r<=0)return e;return w(t.at(-1),`weighted lobster choice fallback`)[0]}function jA(e,t,n){return t+e()*(n-t)}function MA(e,t=new Date){let n=Z(e),r=AA(n,vk),i=AA(n,WA),a=AA(n,[...VA,...DA(t)]),o=n()<.6?`perky`:`droopy`,s=n()<.5?`left`:`right`,c=ZA[s],l=Math.round(jA(n,c[0],c[1])),u=n()<.5?1:-1,d=AA(n,UA),f=Math.round(jA(n,0,4)*10)/10,p=AA(n,GA),m=AA(n,KA),h=n()<.3,g=n()<1/512,_=n(),v=n()<.5?`left`:`right`,y=_<.15?v:null,b=n()<.12,x=n(),S=YA[Math.floor(n()*YA.length)]??null,C=x<.3?S:null,w=gk(n),ee={palette:r,scale:i,accessory:a,antennae:o,side:s,spotPct:l,facing:u,personality:d,blinkDelayS:f,build:p,clawSize:m,tailFan:h,shiny:g,crusherSide:y,freckles:b,glint:C,chimeraParts:r.id===`chimera`?w:null},te=r.id===`clawtron`?{...ee,antennae:`perky`}:ee;if(r.id===`zombie`&&(te={...ee,antennae:`droopy`}),EA(t)){let e=vk.find(([e])=>e.id===`retro`)?.[0];return{...te,palette:e??r,accessory:`party`,chimeraParts:null}}return te}function NA(e,t={}){let n=e.palette.id===`pixel`,r=e.palette.id===`flatpack`,i=e.palette.id===`loading`,a=e.palette.id===`actual`,o=e.palette.id===`balloon`,s=e.palette.id===`ascii`,c=e.palette.id===`portal`,l=o||s||c,u=zA.has(e.palette.id),d=t.shell||t.sleeping&&!t.reading,f=d?`display:none`:``,p=d?`opacity:1`:t.standalone||t.reading?`display:none`:``,m=Math.round(fk(new Date)*8)%8;return L`
<svg
class="lobster-pet__svg"
viewBox="0 0 120 105"
preserveAspectRatio="none"
aria-hidden="true"
>
<g class=${BA[e.palette.id]??``}>
${r?Ck(f,p):i?wk(f,p):a?Tk(f,p):o?Ek(f,p):s?Dk(f,p):c?Ok(f,p):n?Lk(f,p):L`
${u?pA:bA[e.antennae]}
${e.tailFan?hA:B}
<g class="lob-claw lob-claw--l">
<path d="M20 42 C5 37 0 47 5 57 C10 67 20 62 25 52 C28 45 25 42 20 42 Z" fill="var(--lob-claw)" />
</g>
${u?B:L`<g class="lob-claw lob-claw--r"><path d="M100 42 C115 37 120 47 115 57 C110 67 100 62 95 52 C92 45 95 42 100 42 Z" fill="var(--lob-claw)" /></g>`}
${e.palette.id===`heisenbug`?$k:B}
<path class="lob-standard-dome" d="M60 8 C32 8 16 32 16 52 C16 72 30 90 44 95 L44 104 L54 104 L54 96 C58 97.5 62 97.5 66 96 L66 104 L76 104 L76 95 C90 90 104 72 104 52 C104 32 88 8 60 8 Z" fill="var(--lob-shell)" />
${e.palette.id===`split`||e.palette.id===`geode`?dA:B}
${e.palette.id===`selene`?Ik(m):B}
${uA[e.palette.id]??B}
${e.palette.id===`tinfoil`?kk(!_A.has(e.accessory)):B}
${e.freckles&&!nA.has(e.palette.id)?Wk:B}
${e.palette.id===`invisible`?B:L`<ellipse cx="48" cy="28" rx="20" ry="11" fill="#ffffff" opacity="0.1" />`}
<g class="lob-eye-open" style=${f}>
<circle cx="45" cy="32" r="5.5" fill="#0a1014" />
<circle cx="75" cy="32" r="5.5" fill="#0a1014" />
<circle cx="46.5" cy="30.5" r="2.2" fill="var(--lob-glint, #00e5cc)" />
<circle cx="76.5" cy="30.5" r="2.2" fill="var(--lob-glint, #00e5cc)" />
</g>
${t.sleeping&&!t.reading?L`<g class="lob-eye-peek"><circle cx="45" cy="32" r="4" fill="#0a1014" /><circle cx="46" cy="30.8" r="1.6" fill="var(--lob-glint, #00e5cc)" /></g>`:B}
<g class="lob-eye-closed" stroke="#0a1014" stroke-width="3" stroke-linecap="round" fill="none" style=${p}>
<path d="M39 33 Q45 28 51 33" /><path d="M69 33 Q75 28 81 33" />
</g>
`}
${u?L`
${mA}
<g class="lob-claw lob-claw--r">${fA}</g>
`:B}
${t.grumpy&&!u&&!r&&!i&&!a&&!l?yA:B}
${e.accessory===`none`||t.shell||r?B:Uk[e.accessory]}
${t.bindle&&!u&&!r?gA:B}
${t.sailorCap&&!t.shell&&!r&&!_A.has(e.accessory)&&e.palette.id!==`tinfoil`?vA:B}
${t.reading?XA:B}
</g>
</svg>
`}function PA(e){let t=e.crusherSide,n=(No(e.palette.id)>>>8)%34/10,r=e.chimeraParts?_k(e.chimeraParts.body):void 0,i=n=>t===null?JA[e.clawSize]:t===n?JA.mighty:JA.dainty;return[`--lob-shell:${e.chimeraParts?.body??e.palette.shell}`,`--lob-claw:${r??e.palette.claw}`,`--lob-blink-delay:${e.blinkDelayS}s`,`--lob-breathe-delay:-${n}s`,`--lob-w:${qA[e.build].w}`,`--lob-h:${qA[e.build].h}`,`--lob-claw-l:${i(`left`)}`,`--lob-claw-r:${i(`right`)}`,...e.chimeraParts?[`--lob-chimera-l:${e.chimeraParts.clawLeft}`,`--lob-chimera-r:${e.chimeraParts.clawRight}`,`--lob-antennae-color:${e.chimeraParts.antennae}`]:[],...e.glint?[`--lob-glint-seed:${e.glint}`]:[]]}function FA(e){return PA(e).join(`;`)}function IA(e,t,n,r){return[...PA(e),`--lob-scale:${t}`,`--lob-x:${n}%`,`--lob-face:${r}`].join(`;`)}function LA(e){let t=t=>e.anchor===`bar`?Math.min(t,e.barMaxScale):t,n=n=>{let r=e.anniversary&&e.look.accessory!==`party`?{...e.look,accessory:`party`}:e.look,i=[`lobster-pet`,`lobster-pet--${e.mode}`,`lobster-pet--palette-${e.look.palette.id}`,n?`lobster-pet--twin`:``,r.accessory===`party`?`lobster-pet--party`:``,e.look.shiny?`lobster-pet--shiny`:``,e.elder?`lobster-pet--elder`:``,e.presence===`leaving`?`lobster-pet--away`:``,e.entering?`lobster-pet--entering`:``,e.entering&&e.entrance!==`walk`?`lobster-pet--enter-${e.entrance}`:``,e.grumpy?`lobster-pet--grumpy`:``,e.vigil?`lobster-pet--vigil`:``,e.act?`lobster-pet--act-${e.act}`:``].filter(Boolean).join(` `),a=n?Math.min(e.zone[1],Math.max(e.zone[0],e.spotPct+(e.facing===1?-12:12))):e.spotPct,o=t(n?e.look.scale*.55:e.look.scale),s=n?`${IA(e.look,o,a,e.facing===1?-1:1)};--lob-act-delay:0.18s`:IA(e.look,o,a,e.facing),c=qO(e.familiarityVisits),l=e.nameOverride??OA(e.look,e.seed),u=c?`${c} ${l}`:l,d=e.look.shiny?`✦ ${u}`:u,f=e.movingDay&&!n,p=n?`${d} Jr.`:f?`${d} · just moved in`:e.flavor?`${d} · ${e.flavor}`:d;return R`
<div
class=${i}
style=${s}
aria-hidden="true"
title=${p}
@pointerdown=${e.onPointerDown}
@pointerup=${e.onPointerUp}
@pointercancel=${e.onPointerCancel}
@pointerleave=${e.onPointerCancel}
@contextmenu=${e.onContextMenu}
>
<div class="lobster-pet__body">
${NA(r,{grumpy:e.grumpy,bindle:f,sailorCap:e.sailorDay})}
${e.entering&&e.entrance===`balloon`?SA:B}
${e.entering&&e.entrance===`bubble`?R`<span class="lobster-pet__entry-bubble"></span>`:B}
${e.look.shiny?R`
<span class="lobster-pet__sparkle" style="--i:0;left:12%;bottom:64%">✦</span>
<span class="lobster-pet__sparkle" style="--i:1;left:76%;bottom:82%">✦</span>
`:B}
<span class="lobster-pet__z" style="--i:0">z</span>
<span class="lobster-pet__z" style="--i:1">z</span>
<span class="lobster-pet__z" style="--i:2">Z</span>
<span class="lobster-pet__bubble" style="--i:0"></span>
<span class="lobster-pet__bubble" style="--i:1"></span>
<span class="lobster-pet__bubble" style="--i:2"></span>
<span class="lobster-pet__heart">♥</span>
<svg class="lobster-pet__broom" viewBox="0 0 24 40" aria-hidden="true">
<path d="M12 2 L12 24" stroke="#8a5a2b" stroke-width="3" stroke-linecap="round" />
<path d="M6 24 L18 24 L21 38 L3 38 Z" fill="#e8b04b" />
<path
d="M7.5 28 L6.5 36 M12 28 L12 36 M16.5 28 L17.5 36"
stroke="#b6791f"
stroke-width="1.5"
/>
</svg>
</div>
</div>
`},r=e.presence!==`out`,i=e.shellVisible&&e.visitsEnabled&&!e.dismissed,a=e.passer!==null&&e.visitsEnabled,o=e.bottle!==null&&e.visitsEnabled&&!e.dismissed;if(!r&&!i&&!a&&!o)return B;let s=IA(e.look,t(e.shellScale),e.shellSpotPct,e.facing),c=e.passer?.kind===`stranger`?kA(e.seed,e.look.palette.id):e.look,l=e.passer?[`lobster-pet`,`lobster-pet--passer`,e.passer.kind===`stranger`?`lobster-pet--palette-${c.palette.id}`:`lobster-pet--${e.passer.kind}`,e.passer.kind===`stranger`&&c.shiny?`lobster-pet--shiny`:``,e.passer.direction===1?`lobster-pet--passer-ltr`:`lobster-pet--passer-rtl`].filter(Boolean).join(` `):``,u=e.passer?`${RA(e.passer.kind,e.passer.direction,c)};--lob-cross:${e.passer.crossMs}ms`:``;return R`
${i?R`
<div class="lobster-pet lobster-pet--shell" style=${s} aria-hidden="true">
<div class="lobster-pet__body">${NA(e.look,{shell:!0})}</div>
</div>
`:B}
${o&&e.bottle?R`
<div
class="lobster-bottle ${e.bottle.opened?`lobster-bottle--open`:``}"
style="--lob-x:${e.bottle.spotPct}%"
title=${e.bottle.opened?e.bottle.fortune:`a message in a bottle`}
aria-hidden="true"
@pointerdown=${e.onBottleOpen}
>
${Hk(e.bottle.opened)}
</div>
`:B}
${r?n(!1):B}
${r&&e.twinPlanned?n(!0):B}
${a&&e.passer?R`
<div
class=${l}
style=${u}
aria-hidden="true"
title=${CA[e.passer.kind]}
>
<div class="lobster-pet__body">
${e.passer.kind===`stranger`?NA(c,{standalone:!0}):xA[e.passer.kind]()}
</div>
</div>
`:B}
`}function RA(e,t,n){return e===`stranger`?IA(n,Math.min(n.scale,2),0,t):{crab:`--lob-scale:2;--lob-w:1;--lob-h:0.82;--lob-face:1`,snail:`--lob-scale:1.7;--lob-w:1;--lob-h:0.9;--lob-face:${t}`,duck:`--lob-scale:1.9;--lob-w:1;--lob-h:1;--lob-face:${t}`,jellyfish:`--lob-scale:1.7;--lob-w:0.9;--lob-h:1.1;--lob-face:1`}[e]}var zA,BA,VA,HA,UA,WA,GA,KA,qA,JA,YA,XA,ZA;function QA(){return(QA=t((()=>{re(),I(),ek(),dk(),hk(),Sk(),Fk(),wA(),zA=new Set([`retro`,`goldenretro`]),BA={heisenbug:`lob-heisenbug-frame`,cryptid:`lob-cryptid-frame`,balloon:`lob-balloon-frame`},VA=[[`none`,62],[`sprout`,14],[`patch`,14],[`crown`,10]],HA={month:10,day:24},UA=[[`sleepy`,25],[`zoomy`,25],[`friendly`,25],[`showoff`,25]],WA=[[1.7,25],[2,55],[2.5,20]],GA=[[`round`,40],[`squat`,30],[`slender`,30]],KA=[[`regular`,55],[`dainty`,25],[`mighty`,20]],qA={round:{w:1,h:1},squat:{w:1.14,h:.94},slender:{w:.88,h:1.1}},JA={dainty:.85,regular:1,mighty:1.18},YA=[`#ffd166`,`#ff8ac2`,`#b79bff`],XA=L`
<g class="lob-reading-book" transform="translate(0 2)">
<path
d="M25 62 Q43 56 59 66 L59 92 Q43 82 25 86 Z M61 66 Q77 56 95 62 L95 86 Q77 82 61 92 Z"
fill="var(--lob-claw)"
stroke="color-mix(in srgb, var(--lob-claw) 72%, #0a1014)"
stroke-width="2.5"
stroke-linejoin="round"
/>
<path d="M29 62 Q44 58 59 68 L59 88 Q44 79 29 82 Z" fill="#fffaf0" />
<path d="M61 68 Q76 58 91 62 L91 82 Q76 79 61 88 Z" fill="#fffaf0" />
<path d="M60 67 L60 89" stroke="#d7cfc0" stroke-width="1.5" />
<g stroke="#b8b0a3" stroke-width="1.25" stroke-linecap="round" opacity="0.58">
<path d="M34 67 L51 71" /><path d="M34 72 L50 75" /><path d="M67 71 L85 67" />
<path d="M68 76 L85 72" /><path d="M70 80 L83 77" />
</g>
<path
class="lob-reading-book__page-glow"
d="M31 62 Q45 59 57 68 L57 72 Q44 65 31 67 Z"
fill="#ffffff"
opacity="0"
/>
</g>
`,ZA={left:[12,38],right:[60,84]}})))()}function $A(e,t,n=new Date){return e===`busy`||e===`offline`?hj[e]:dj(n)?mj.sleepy:t?mj[t]:null}function ej(e){return e===`error`?`droop`:e===`aborted`?`startle`:`cheer`}function tj(e){return e<.06?`balloon`:e<.13?`bubble`:`walk`}function nj(e){return Z((e^12317)>>>0)()<.12}function rj(e){return Z((e^30485)>>>0)()<.04}function ij(e){let t=Z((e^3243)>>>0),n=t();return n>=.095?null:{kind:n<.015?`crab`:n<.027?`snail`:n<.039?`duck`:n<.05?`jellyfish`:`stranger`,atMs:Math.round(6e4+t()*84e4),direction:t()<.5?1:-1}}function aj(e){return Z((e^57811)>>>0)()<.015}function oj(e,t){if(t.length===0)return null;let n=Z((e^61982)>>>0);return n()>=.08?null:t[Math.floor(n()*t.length)]??null}function sj(e,t){let n=zO(),r={elder:!1,oldFriend:!1,friendName:null,dexComplete:yk.every(e=>n.has(e.id)),look:t};if(aj(e))return{...r,elder:!0,look:{...t,scale:3,accessory:`barnacle`,personality:`sleepy`,clawSize:`mighty`,crusherSide:null}};if(t.palette.id===`retro`||t.palette.id===`goldenretro`)return r;let i=oj(e,[...n].filter(e=>yk.some(t=>t.id===e)).toSorted()),a=i?yk.find(e=>e.id===i):void 0;return a?{...r,oldFriend:!0,friendName:BO().get(a.id)?.name??null,look:{...t,palette:a,chimeraParts:a.id===`chimera`?TA(a).chimeraParts:null}}:r}function cj(e,t){return e.elder?`Methuselah`:e.friendName??OA(e.look,t)}function lj(e){let t=Z((e^45175)>>>0);return t()>=.03?null:{atMs:Math.round(45e3+t()*855e3),spotPct:Math.round(15+t()*70),fortuneIndex:Math.floor(t()*Cj.length)}}function uj(e){try{let t=j();if(!t)return!1;let n=t.getItem(wj);return n!==e&&(t.setItem(wj,e),n!==null)}catch{return!1}}function dj(e=new Date){let t=e.getHours();return t>=22||t<6}function fj(){return typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}var pj,mj,hj,gj,_j,vj,yj,bj,xj,Sj,Cj,wj;function Tj(){return(Tj=t((()=>{ek(),QA(),Sk(),pj={wave:1400,snip:1e3,hop:750,spin:950,peek:1700,nap:4400,bubble:2600,scuttle:1250,startle:750,cheer:1300,molt:2600,pet:1500,droop:1600,sweep:1800},mj={sleepy:{delayMs:[6e3,12e3],acts:[[`nap`,40],[`bubble`,20],[`wave`,12],[`scuttle`,12],[`peek`,10],[`hop`,6]]},zoomy:{delayMs:[2800,6e3],acts:[[`scuttle`,42],[`hop`,22],[`spin`,12],[`peek`,12],[`wave`,12]]},friendly:{delayMs:[3600,7500],acts:[[`wave`,32],[`snip`,22],[`scuttle`,18],[`hop`,14],[`bubble`,14]]},showoff:{delayMs:[3600,7500],acts:[[`spin`,24],[`snip`,22],[`peek`,20],[`hop`,18],[`wave`,16]]}},hj={busy:{delayMs:[2200,4500],acts:[[`scuttle`,40],[`hop`,20],[`snip`,20],[`wave`,12],[`spin`,8]]},offline:{delayMs:[2800,5600],acts:[[`scuttle`,55],[`peek`,30],[`hop`,15]]}},gj={walk:450,balloon:1250,bubble:700},_j={stranger:11e3,crab:11e3,snail:9e4,duck:14e3,jellyfish:16e3},vj=[18,50],yj=1.7,bj=[12e4,6e5],xj=[9e4,3e5],Sj=[18e5,36e5],Cj=[`the tide returns every branch to shore`,`molt before you feel ready`,`a shell is just armor you outgrew`,`somewhere, a test is green because of you`,`swim sideways when forward fails`,`the reef remembers kind commits`,`even the deep keeps a night light`,`barnacles are only patient passengers`,`no current lasts forever`,`bury your treasure in version control`,`the crab was a lobster all along`,`small claws, firm grip`,`rest is also progress`,`what washes away was never pinned`],wj=`openclaw.control.lobsterpet.gatewayVersion.v1`})))()}var Ej;function Dj(){return(Dj=t((()=>{re(),Tj(),Ej=class{constructor(e,t){this.host=e,this.hooks=t,this.passer=null,this.bottlePlan=null,this.bottleVisible=!1,this.bottleOpened=!1,this.passerTimer=null,this.passerEndTimer=null,this.passerWatchTimer=null,this.bottleTimer=null,this.bottleEndTimer=null,this.openBottle=()=>{this.bottleOpened||!this.bottleVisible||(this.bottleOpened=!0,this.armBottleEbb(12e4),this.host.requestUpdate())},e.addController(this)}hostDisconnected(){this.clearTimers(),this.passer=null,this.bottleVisible=!1,this.host.requestUpdate()}reset(e){this.clearTimers(),this.passer=null,this.bottleVisible=!1,this.bottleOpened=!1,this.schedulePasser(e),this.scheduleBottle(e)}passerCrossMs(){return this.passer?_j[this.passer.kind]:0}bottle(){return!this.bottleVisible||!this.bottlePlan?null:{spotPct:this.bottlePlan.spotPct,opened:this.bottleOpened,fortune:w(Cj[this.bottlePlan.fortuneIndex],`lobster bottle fortune`)}}clearTimers(){for(let e of[this.passerTimer,this.passerEndTimer,this.passerWatchTimer,this.bottleTimer,this.bottleEndTimer])e!==null&&window.clearTimeout(e);this.passerTimer=null,this.passerEndTimer=null,this.passerWatchTimer=null,this.bottleTimer=null,this.bottleEndTimer=null}schedulePasser(e){let t=ij(e);!t||fj()||(this.passerTimer=window.setTimeout(()=>{if(this.passerTimer=null,!this.hooks.visitsEnabled()||document.hidden)return;this.passer=t,this.host.requestUpdate();let e=_j[t.kind];this.hooks.onPasserFacing(t.direction===1?-1:1),this.passerWatchTimer=window.setTimeout(()=>{this.passerWatchTimer=null,this.hooks.onPasserFacing(t.direction),this.hooks.onPasserMidCross()},e/2),this.passerEndTimer=window.setTimeout(()=>{this.passerEndTimer=null,this.passer=null,this.host.requestUpdate(),this.hooks.onPasserDone()},e)},t.atMs))}scheduleBottle(e){this.bottlePlan=lj(e),this.bottlePlan&&(this.bottleTimer=window.setTimeout(()=>{this.bottleTimer=null,this.bottleVisible=!0,this.host.requestUpdate(),this.armBottleEbb(3e5)},this.bottlePlan.atMs))}armBottleEbb(e){this.bottleEndTimer!==null&&window.clearTimeout(this.bottleEndTimer),this.bottleEndTimer=window.setTimeout(()=>{this.bottleEndTimer=null,this.bottleVisible=!1,this.host.requestUpdate()},e)}}})))()}var Q;function Oj(){return(Oj=t((()=>{re(),I(),F(),Xn(),ek(),_b(),ak(),QA(),Tj(),Dj(),Q=class extends de{constructor(...e){super(...e),this.seed=0,this.mode=`idle`,this.visitsEnabled=!0,this.runOutcome=`ok`,this.soundsEnabled=!1,this.gatewayVersion=null,this.onVisitsDisabled=()=>void 0,this.act=null,this.spotPct=80,this.facing=1,this.entering=!1,this.entrance=`walk`,this.presence=`out`,this.anchor=`ledge`,this.scheduledVisiting=!1,this.dismissed=!1,this.dismissMenuPosition=null,this.grumpy=!1,this.vigil=!1,this.outcomePresenceOwner=null,this.movingDay=!1,this.movingDayChecked=!1,this.anniversary=!1,this.sailorDay=!1,this.identity=null,this.entranceRng=Z(0),this.traffic=new Ej(this,{visitsEnabled:()=>this.visitsEnabled,onPasserFacing:e=>this.watchTraffic(e),onPasserMidCross:()=>this.reactToPasser(),onPasserDone:()=>this.scheduleNextAct()}),this.shellVisible=!1,this.shellSpotPct=50,this.shellScale=2,this.molted=!1,this.moltPlanned=!1,this.twinPlanned=!1,this.shellTimer=null,this.familiarity={tier:`regular`,wary:!1,visits:0,shoos:0},this.greetedThisLoad=!1,this.look=null,this.rng=Z(0),this.visitRng=Z(0),this.idleTimer=null,this.actEndTimer=null,this.enterTimer=null,this.visitTimer=null,this.leaveTimer=null,this.grumpyTimer=null,this.vigilTimer=null,this.holdTimer=null,this.holdPetted=!1,this.audioCtx=null,this.pokeTimes=[],this.lastGazeAt=0,this.restartPending=!1,this.handleVisibilityChange=()=>{document.hidden?(this.outcomePresenceOwner=null,this.clearActTimers(),this.act=null):this.scheduleNextAct()},this.handleHoldStart=e=>{e.button!==0||fj()||(this.holdPetted=!1,this.holdTimer!==null&&window.clearTimeout(this.holdTimer),this.holdTimer=window.setTimeout(()=>{this.holdTimer=null,this.holdPetted=!0,this.grumpy=!1,this.playChirp(`pet`),this.performAct(`pet`)},600))},this.handleHoldEnd=e=>{e.button===0&&(this.holdTimer!==null&&(window.clearTimeout(this.holdTimer),this.holdTimer=null,this.holdPetted||this.pokeNow()),this.holdPetted=!1)},this.handleHoldCancel=()=>{this.holdTimer!==null&&(window.clearTimeout(this.holdTimer),this.holdTimer=null),this.holdPetted=!1},this.handleGaze=e=>{if(this.presence!==`in`||this.act!==null||this.vigil||fj())return;let t=Date.now();if(t-this.lastGazeAt<120)return;this.lastGazeAt=t;let n=this.querySelector(`.lobster-pet:not(.lobster-pet--shell)`);if(!n)return;let r=n.getBoundingClientRect(),i=r.left+r.width/2,a=e.clientX<i?-1:1;a!==this.facing&&(this.facing=a)},this.openDismissMenu=e=>{e.preventDefault(),e.stopPropagation(),this.handleHoldCancel(),this.dismissMenuPosition={x:e.clientX,y:e.clientY}}}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),document.addEventListener(`visibilitychange`,this.handleVisibilityChange),document.addEventListener(`pointermove`,this.handleGaze,{passive:!0})}disconnectedCallback(){document.removeEventListener(`visibilitychange`,this.handleVisibilityChange),this.clearActTimers(),this.clearVisitTimers(),this.grumpyTimer!==null&&(window.clearTimeout(this.grumpyTimer),this.grumpyTimer=null),this.shellTimer!==null&&(window.clearTimeout(this.shellTimer),this.shellTimer=null);for(let e of[this.vigilTimer,this.holdTimer])e!==null&&window.clearTimeout(e);this.vigilTimer=null,this.holdTimer=null,this.audioCtx&&=(this.audioCtx.close().catch(()=>{}),null),document.removeEventListener(`pointermove`,this.handleGaze),super.disconnectedCallback()}wantsVisible(){return this.visitsEnabled&&!this.dismissed&&(this.mode===`offline`||this.vigil||this.outcomePresenceOwner!==null||this.scheduledVisiting)}willUpdate(e){if(this.look===null||e.has(`seed`))this.look=MA(this.seed),this.rng=Z(this.seed^2654435769),this.visitRng=Z(this.seed^99282957),this.entranceRng=Z((this.seed^57978)>>>0),this.identity=sj(this.seed,this.look),this.look=this.identity.look,this.spotPct=this.look.spotPct,this.facing=this.look.facing,this.clearActTimers(),this.act=null,this.dismissed=!1,this.dismissMenuPosition=null,this.presence=`out`,this.molted=!1,this.shellVisible=!1,this.shellTimer!==null&&(window.clearTimeout(this.shellTimer),this.shellTimer=null),this.moltPlanned=nj(this.seed)&&!this.identity.elder,this.twinPlanned=rj(this.seed),this.familiarity=KO(),this.sailorDay=Ws(new Date),this.greetedThisLoad=!1,this.scheduleVisits(),this.traffic.reset(this.seed),this.vigil=!1,this.outcomePresenceOwner=null,this.trackVigil();else if(e.has(`mode`)){let t=e.get(`mode`)===`busy`&&this.mode===`idle`,n=t&&this.vigil?`vigil`:null;if(this.trackVigil(),this.presence===`in`&&!fj()){let e=ej(this.runOutcome);this.performAct(t?e:`startle`,n)}}e.has(`visitsEnabled`)&&(this.visitsEnabled?e.get(`visitsEnabled`)===!1&&(this.dismissed=!1):this.dismissMenuPosition=null),!this.movingDayChecked&&this.gatewayVersion&&(this.movingDayChecked=!0,this.movingDay=uj(this.gatewayVersion)),this.toggleAttribute(`data-dex-complete`,(this.identity?.dexComplete??!1)&&this.visitsEnabled&&!this.dismissed),this.reconcilePresence()}reconcilePresence(){let e=this.wantsVisible();if(e&&this.presence!==`in`){this.leaveTimer!==null&&(window.clearTimeout(this.leaveTimer),this.leaveTimer=null),this.presence===`out`&&(this.rollPerch(),this.entrance=tj(this.entranceRng()),this.look&&(this.anniversary=JO(BO().get(this.look.palette.id)?.firstSeenAt??null,new Date),VO(this.look.palette.id,{name:this.identity?cj(this.identity,this.seed):OA(this.look,this.seed),shiny:this.look.shiny}),WO())),this.presence=`in`,this.entering=!fj(),this.restartPending=!0;return}!e&&this.presence===`in`&&(this.dismissMenuPosition=null,this.outcomePresenceOwner=null,this.clearActTimers(),this.act=null,this.entering=!1,this.presence=`leaving`,this.leaveTimer=window.setTimeout(()=>{this.leaveTimer=null,this.presence=`out`},350))}updated(){this.restartPending&&(this.restartPending=!1,this.enterTimer=window.setTimeout(()=>{this.enterTimer=null,this.entering=!1,!this.greetedThisLoad&&(this.familiarity.tier===`friend`||this.identity?.oldFriend===!0)&&this.presence===`in`&&!fj()&&(this.greetedThisLoad=!0,this.performAct(`wave`))},gj[this.entrance]),this.scheduleNextAct())}playChirp(e){this.audioCtx=tk(this.audioCtx,this.soundsEnabled,e)}pokeNow(){this.playChirp(`poke`);let e=Date.now();if(this.pokeTimes=[...this.pokeTimes.filter(t=>e-t<6e3),e],this.pokeTimes.length>=10&&this.mode!==`offline`){this.huffOff();return}this.pokeTimes.length>=3&&this.enterGrumpy(),this.performAct(`startle`)}enterGrumpy(){this.grumpy=!0,this.grumpyTimer!==null&&window.clearTimeout(this.grumpyTimer),this.grumpyTimer=window.setTimeout(()=>{this.grumpyTimer=null,this.grumpy=!1},6e4)}huffOff(){this.pokeTimes=[],this.grumpy=!1,this.clearVisitTimers(),this.scheduledVisiting=!1,this.armArrival(jA(this.visitRng,Sj[0],Sj[1]))}trackVigil(){this.vigilTimer!==null&&(window.clearTimeout(this.vigilTimer),this.vigilTimer=null),this.mode===`busy`?this.vigilTimer=window.setTimeout(()=>{this.vigilTimer=null,this.vigil=!0,this.clearActTimers(),this.act=null},6e5):this.vigil=!1}dismiss(e){this.dismissMenuPosition=null,this.dismissed=!0,GO(),e&&(this.visitsEnabled=!1,fr({lobsterPetVisits:!1}),this.onVisitsDisabled())}clearActTimers(){for(let e of[this.idleTimer,this.actEndTimer,this.enterTimer])e!==null&&window.clearTimeout(e);this.idleTimer=null,this.actEndTimer=null,this.enterTimer=null}clearVisitTimers(){for(let e of[this.visitTimer,this.leaveTimer])e!==null&&window.clearTimeout(e);this.visitTimer=null,this.leaveTimer=null}scheduleVisits(){if(this.clearVisitTimers(),this.scheduledVisiting=!1,this.visitRng()<.5)return;let e=ZO[this.familiarity.tier];this.armArrival(jA(this.visitRng,bj[0],bj[1])*e.firstDelayMul)}armArrival(e){this.visitTimer=window.setTimeout(()=>{this.visitTimer=null,this.rollPerch(),this.scheduledVisiting=!0,this.armDeparture(jA(this.visitRng,xj[0],xj[1])*ZO[this.familiarity.tier].stayMul)},e)}armDeparture(e){this.visitTimer=window.setTimeout(()=>{this.visitTimer=null,this.scheduledVisiting=!1;let e=ZO[this.familiarity.tier],t=this.familiarity.wary?ZO.waryGapMul:1;this.armArrival(jA(this.visitRng,Sj[0],Sj[1])*e.gapMul*t)},e)}watchTraffic(e){this.presence===`in`&&this.act!==`scuttle`&&!this.vigil&&(this.facing=e)}reactToPasser(){let e=this.familiarity.tier===`friend`?`wave`:this.familiarity.tier===`shy`?`peek`:null;e===null||this.presence!==`in`||this.act!==null||this.vigil||this.mode!==`idle`||fj()||this.performAct(e)}rollPerch(){this.anchor=this.visitRng()<.6?`ledge`:`bar`,this.setAttribute(`data-spot`,this.anchor);let e=this.currentZone();this.spotPct=Math.round(jA(this.visitRng,e[0],e[1])),this.facing=this.visitRng()<.5?1:-1}currentZone(){if(this.anchor===`bar`)return vj;let e=this.look?.side??`right`;return ZA[e]}scheduleNextAct(){if(!this.look||this.presence!==`in`||this.vigil||this.traffic.passer!==null||this.idleTimer!==null||this.actEndTimer!==null||fj())return;let e=$A(this.mode,this.look.personality);if(!e)return;let t=jA(this.rng,e.delayMs[0],e.delayMs[1]);this.idleTimer=window.setTimeout(()=>{this.idleTimer=null;let e=$A(this.mode,this.look?.personality??null);if(!(!e||document.hidden||this.presence!==`in`||this.traffic.passer!==null)){if(this.moltPlanned&&!this.molted&&this.mode===`idle`){this.performAct(`molt`);return}this.performAct(AA(this.rng,e.acts))}},t)}performAct(e,t=null){this.clearActTimers(),this.outcomePresenceOwner=t,this.entering=!1,e===`scuttle`&&this.startScuttle(),this.act=e,this.actEndTimer=window.setTimeout(()=>{if(this.actEndTimer=null,this.act=null,e===`molt`&&this.completeMolt(),e===`droop`){this.performAct(`sweep`,t);return}this.outcomePresenceOwner=null,this.wantsVisible()&&this.scheduleNextAct()},pj[e])}completeMolt(){if(this.molted=!0,this.look){let e=[1.7,2,2.5],t=e.indexOf(this.look.scale);this.shellScale=this.look.scale,this.look={...this.look,scale:w(e[Math.min(t+1,e.length-1)],`lobster molt size tier`)}}this.shellSpotPct=this.spotPct,this.shellVisible=!0;let e=this.currentZone();this.spotPct=Math.min(e[1],Math.max(e[0],this.spotPct+(this.facing===1?9:-9))),this.shellTimer!==null&&window.clearTimeout(this.shellTimer),this.shellTimer=window.setTimeout(()=>{this.shellTimer=null,this.shellVisible=!1},6e4)}startScuttle(){if(!this.look)return;let e=this.currentZone(),t=Math.round(jA(this.rng,e[0],e[1]));Math.abs(t-this.spotPct)<4&&(t=Math.abs(e[0]-this.spotPct)>Math.abs(e[1]-this.spotPct)?e[0]:e[1]),this.facing=t<this.spotPct?-1:1,this.spotPct=t}render(){let e=this.look;if(!e)return B;let t=this.identity,n=t?.elder?`old as the tides`:t?.oldFriend?`an old friend`:null;return[LA({look:e,mode:this.mode,presence:this.presence,shellVisible:this.shellVisible,visitsEnabled:this.visitsEnabled,dismissed:this.dismissed,passer:this.traffic.passer?{kind:this.traffic.passer.kind,direction:this.traffic.passer.direction,crossMs:this.traffic.passerCrossMs()}:null,twinPlanned:this.twinPlanned,anniversary:this.anniversary,entering:this.entering,entrance:this.entrance,grumpy:this.grumpy,vigil:this.vigil,elder:t?.elder??!1,act:this.act,zone:this.currentZone(),spotPct:this.spotPct,facing:this.facing,anchor:this.anchor,barMaxScale:yj,shellScale:this.shellScale,shellSpotPct:this.shellSpotPct,familiarityVisits:this.familiarity.visits,seed:this.seed,movingDay:this.movingDay,sailorDay:this.sailorDay,nameOverride:t?cj(t,this.seed):null,flavor:n,bottle:this.traffic.bottle(),onPointerDown:this.handleHoldStart,onPointerUp:this.handleHoldEnd,onPointerCancel:this.handleHoldCancel,onContextMenu:this.openDismissMenu,onBottleOpen:this.traffic.openBottle}),ik({position:this.dismissMenuPosition,onDismiss:e=>this.dismiss(e),onClose:()=>{this.dismissMenuPosition=null}})]}},k([V({attribute:!1})],Q.prototype,`seed`,void 0),k([V({attribute:!1})],Q.prototype,`mode`,void 0),k([V({attribute:!1})],Q.prototype,`visitsEnabled`,void 0),k([V({attribute:!1})],Q.prototype,`runOutcome`,void 0),k([V({attribute:!1})],Q.prototype,`soundsEnabled`,void 0),k([V({attribute:!1})],Q.prototype,`gatewayVersion`,void 0),k([V({attribute:!1})],Q.prototype,`onVisitsDisabled`,void 0),k([z()],Q.prototype,`act`,void 0),k([z()],Q.prototype,`spotPct`,void 0),k([z()],Q.prototype,`facing`,void 0),k([z()],Q.prototype,`entering`,void 0),k([z()],Q.prototype,`entrance`,void 0),k([z()],Q.prototype,`presence`,void 0),k([z()],Q.prototype,`anchor`,void 0),k([z()],Q.prototype,`scheduledVisiting`,void 0),k([z()],Q.prototype,`dismissed`,void 0),k([z()],Q.prototype,`dismissMenuPosition`,void 0),k([z()],Q.prototype,`grumpy`,void 0),k([z()],Q.prototype,`vigil`,void 0),k([z()],Q.prototype,`outcomePresenceOwner`,void 0),k([z()],Q.prototype,`movingDay`,void 0),k([z()],Q.prototype,`anniversary`,void 0),k([z()],Q.prototype,`shellVisible`,void 0),customElements.get(`openclaw-lobster-pet`)||customElements.define(`openclaw-lobster-pet`,Q)})))()}function kj(e){for(let t of e)for(let e of t.addedNodes)if(e instanceof Element&&(e.matches(`a.markdown-session-link[data-session-key]`)||e.querySelector(`a.markdown-session-link[data-session-key]`))){Nj.define();return}}async function Aj(e,t){if(t===`pointer`&&(e instanceof PointerEvent&&e.pointerType===`touch`||!globalThis.matchMedia?.(`(hover: hover)`).matches))return;let n=Sb(e);if(!n||!Nj.providerFor(n))return;await Nj.define();let r=e.target;!(r instanceof EventTarget)||!n.isConnected||!ui(n,t,!0)||r.dispatchEvent(new Event(t===`pointer`?`pointerover`:`focusin`,{bubbles:!0,composed:!0}))}var jj,Mj,Nj;function Pj(){return(Pj=t((()=>{gi(),Ob(),se(),jj=`openclaw-session-progress-hovercard-provider`,Mj=null,Nj=new ci({tag:jj,load:async()=>(await D(async()=>{let{SessionProgressHovercardProvider:e}=await import(`./session-progress-hovercard.runtime-BGOKu33u.js`);return{SessionProgressHovercardProvider:e}},__vite__mapDeps([40,1,3,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,41,42,43,44,45,46,38,47]),import.meta.url)).SessionProgressHovercardProvider,onDefined:()=>{Mj?.disconnect(),Mj=null}}),Nj.install(Aj),customElements.get(jj)||(Mj=new MutationObserver(kj),Mj.observe(document,{childList:!0,subtree:!0}),document.querySelector(`a.markdown-session-link[data-session-key]`)&&Nj.define())})))()}var Fj;function Ij(){return(Ij=t((()=>{I(),F(),sr(),ni(),W(),tt(),Pg(),Ur(),Fj=class extends hn{constructor(...e){super(...e),this.basePath=``,this.gatewayVersion=null,this.updateAttentionDismissed=!1,this.variant=`compact`}render(){let e=this.variant===`settings`?kg(ei,this.gatewayVersion):this.variant===`identity`?this.updateAttentionDismissed?kg(ei,this.gatewayVersion):Og(ei):Tg(ei);return!e&&!this.updateAttentionDismissed?B:R`
<openclaw-tooltip class="sidebar-hover-tooltip" .delay=${600} .closeDelay=${300}>
<a
class="sidebar-footer-build"
href=${Er(`about`,this.basePath)}
aria-label=${this.updateAttentionDismissed?`${G(`aboutPage.artifactDetails`)}. ${G(`updates.sidebar.availableTitle`)}`:G(`aboutPage.artifactDetails`)}
@click=${e=>{Ve(e)&&(e.preventDefault(),this.onNavigate?.(`about`))}}
>${e?R`<span class="sidebar-footer-build__text">${e}</span>`:B}
${this.updateAttentionDismissed?R`<span class="agent-select__badge sidebar-footer-build__update"
>${G(`updates.sidebar.availableTitle`)}</span
>`:B}</a
>
<div slot="content" class="sidebar-hover-card sidebar-build-hover-card">
${jg(ei,this.gatewayVersion)}
</div>
</openclaw-tooltip>
`}},k([V({attribute:!1})],Fj.prototype,`basePath`,void 0),k([V({attribute:!1})],Fj.prototype,`gatewayVersion`,void 0),k([V({attribute:!1})],Fj.prototype,`updateAttentionDismissed`,void 0),k([V({attribute:!1})],Fj.prototype,`onNavigate`,void 0),k([V({attribute:!1})],Fj.prototype,`variant`,void 0),globalThis.customElements&&!customElements.get(`openclaw-sidebar-build-chip`)&&customElements.define(`openclaw-sidebar-build-chip`,Fj)})))()}function Lj(e){return[...e?.querySelectorAll(`:scope > wa-dropdown-item:not([disabled]), :scope > .sidebar-agent-menu__agent-grid > wa-dropdown-item:not([disabled])`)??[]]}function Rj(e,t){e.forEach(e=>e.active=e===t),t.focus({preventScroll:!0}),t.scrollIntoView?.({block:`nearest`})}function zj(e,t){e.target===e.currentTarget&&t(ii(e))}function Bj(e){if(![`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key)||e.target instanceof HTMLInputElement&&(e.key===`Home`||e.key===`End`))return!1;let t=e.currentTarget.closest(`wa-dropdown`),n=Lj(t),r=t?.querySelector(`.sidebar-identity-menu__footer`),i=[...n,...r?.querySelectorAll(`a[href], button:not([disabled])`)??[]],a=e.target instanceof HTMLElement?e.target:null,o=a?i.indexOf(a):-1;if(r&&o<0)return!1;let s=e.key===`ArrowDown`?1:-1,c=e.key===`Home`?n[0]:e.key===`End`?n.at(-1):o<0?n.at(s===1?0:-1):i[(o+s+i.length)%i.length];return!c||r&&!r.contains(a)&&!r.contains(c)?!1:(e.preventDefault(),e.stopPropagation(),Rj(n,c),!0)}function Vj(e){if(e.key.length!==1||e.metaKey||e.ctrlKey||e.altKey)return!1;let t=e.currentTarget;if(!(t instanceof HTMLElement))return!1;let n=Qj.get(t);if(e.key===` `&&!n?.query)return!1;e.preventDefault(),e.stopPropagation(),n&&clearTimeout(n.timeout);let r=`${n?.query??``}${e.key}`.trim().toLowerCase(),i=setTimeout(()=>Qj.delete(t),1e3);Qj.set(t,{query:r,timeout:i});let a=Lj(t),o=a.find(e=>(e.textContent??``).trim().toLowerCase().startsWith(r));return o&&Rj(a,o),!0}function Hj(e){let t=Lj(e),n=t.find(e=>e.classList.contains(`sidebar-agent-menu__agent-switch--active`))??t.find(e=>e.classList.contains(`sidebar-agent-menu__agent-switch`));n&&Rj(t,n)}function Uj(e){let{agents:t}=e,n=new Set(t.map(e=>d(e.id))),r=new Set(e.pinnedAgentIds.map(e=>d(e)).filter(e=>n.has(e)));return t.toSorted((e,t)=>!r.has(d(e.id))-+!r.has(d(t.id)))}function Wj(e,t){let n=d(e.id),r=t.identities.get(n)??null,i=Tt(e,r),a=n===t.activeId,o=a?0:t.agentUnreadCount(n),s={value:n,label:i,agent:e};return R`
<wa-dropdown-item
class="sidebar-customize-menu__item sidebar-agent-menu__agent-switch agent-select__option ${a?`sidebar-agent-menu__agent-switch--active`:``}"
value=${`${Yj}${encodeURIComponent(n)}`}
type="checkbox"
role="menuitemradio"
aria-checked=${String(a)}
${yn(e=>Zr(e,a))}
>
<span class="sidebar-agent-menu__agent-tile">
<span class="sidebar-agent-menu__agent-avatar">
${qu(s,r)}
</span>
${Ju(s)}
<span class="sidebar-agent-menu__agent-status">
${o>0?R`<span
class="session-unread-dot"
role="img"
aria-label=${G(`sessionsView.unread`)}
></span>`:B}
</span>
</span>
</wa-dropdown-item>
`}function Gj(){return R`
${Jj.map(e=>R`
<wa-dropdown-item
slot="submenu"
class="sidebar-customize-menu__item"
value=${`${Zj}${encodeURIComponent(e.href)}`}
data-new-tab-action
@click=${e=>{e.target instanceof Element&&e.target.closest(`a`)&&(e.currentTarget.dataset.nativeNavigation=`true`)}}
>
<a
href=${e.href}
target=${rb}
rel=${tb()}
tabindex="-1"
>
<span slot="icon" class="nav-item__icon" aria-hidden="true">${U[e.icon]}</span>
<span class="sidebar-customize-menu__text">${e.label()}</span>
</a>
</wa-dropdown-item>
`)}
`}function Kj(e){let t=e.position,{activeId:n,activeName:r,agents:i}=e,a=Uj(e);return R`
<wa-dropdown
class="sidebar-customize-menu sidebar-agent-menu"
data-chat-autotype-exempt
.open=${!0}
placement="bottom-start"
.distance=${0}
aria-label=${G(`agentChip.menuLabel`)}
@pointerenter=${e.onPointerEnter}
@pointerleave=${e.onPointerLeave}
@wa-select=${t=>{t.preventDefault();let r=t.detail.item;if(r.dataset.nativeNavigation){delete r.dataset.nativeNavigation,e.onClose(!1);return}let i=r.value;if(i){if(e.onClose(!1),i.startsWith(Yj)){e.onSwitchAgent(decodeURIComponent(i.slice(6)));return}switch(i){case`${Xj}capabilities`:e.onAskCapabilities(n);break;case`${Xj}agent-settings`:e.onNavigate(`agents`,{pathname:zn(n,null,e.basePath)});break;case`${Xj}new-agent`:e.onNavigate(`custodian`,{search:`?intent=new-agent`})}}}}
@wa-after-show=${t=>{t.currentTarget instanceof HTMLElement&&(e.onAfterShow(),e.openMode!==`hover`&&Hj(t.currentTarget))}}
@keydown=${t=>{if(Bj(t)||Vj(t))return;let n=t.target instanceof HTMLElement?t.target.closest(`.sidebar-agent-menu__agent-grid > wa-dropdown-item:not([disabled])`):null;if((t.key===`Enter`||t.key===` `)&&n){t.preventDefault(),t.stopPropagation(),n.click();return}Lr(t,e.onTabAway)}}
@wa-after-hide=${t=>zj(t,e.onClose)}
>
<button
slot="trigger"
type="button"
tabindex="-1"
aria-hidden="true"
aria-label=${G(`agentChip.menuLabel`)}
style="position: fixed; left: ${t.x}px; top: ${t.top}px; width: 1px; height: 1px; opacity: 0; pointer-events: none;"
></button>
${i.length>1?R`
<div class="sidebar-customize-menu__title">${G(`agentChip.agents`)}</div>
<div class="sidebar-agent-menu__agent-grid">
${a.map(t=>Wj(t,e))}
</div>
`:B}
<div class="sidebar-customize-menu__separator" role="separator"></div>
<wa-dropdown-item class="sidebar-customize-menu__item" value="command:new-agent">
<span slot="icon" class="nav-item__icon" aria-hidden="true">${U.users}</span>
<span class="sidebar-customize-menu__text">${G(`custodian.newAgent`)}</span>
</wa-dropdown-item>
<wa-dropdown-item
class="sidebar-customize-menu__item"
value="command:capabilities"
?disabled=${!e.connected}
>
<span slot="icon" class="nav-item__icon" aria-hidden="true">${U.bot}</span>
<span class="sidebar-customize-menu__text">
${G(`agentChip.whatCanAgentDo`,{name:r})}
</span>
</wa-dropdown-item>
<wa-dropdown-item class="sidebar-customize-menu__item" value="command:agent-settings">
<span slot="icon" class="nav-item__icon" aria-hidden="true">${U.users}</span>
<span class="sidebar-customize-menu__text">${G(`agentChip.agentSettings`)}</span>
</wa-dropdown-item>
</wa-dropdown>
`}function qj(e){let t=e.position,n=e.profileViewer?.name??e.profileViewer?.email??G(`nav.owner`),r={id:`owner`,watchedSessions:[],...e.profileViewer,name:n},i=e.profileViewer?.email&&e.profileViewer.email!==n?e.profileViewer.email:null;return R`
<wa-dropdown
class="sidebar-customize-menu sidebar-identity-menu"
style=${`--sidebar-identity-menu-min-width: ${e.triggerWidth}px`}
.open=${!0}
placement="top-start"
.distance=${0}
aria-label=${G(`profilePage.identity.menuLabel`)}
@wa-select=${t=>{t.preventDefault();let n=t.detail.item;if(n.dataset.nativeNavigation){delete n.dataset.nativeNavigation,e.onClose(!1);return}let r=n.value;if(r){if(e.onClose(!1),r.startsWith(Zj)){os(decodeURIComponent(r.slice(5)));return}switch(r){case`${Xj}profile`:e.onNavigate(`profile`,{hash:`#settings-profile-identity`});break;case`${Xj}settings`:e.onNavigate(`appearance`);break;case`${Xj}usage`:e.onNavigate(`usage`);break;case`${Xj}pair-mobile`:e.onPairMobile();break;case`${Xj}apps`:e.onNavigate(`apps`);break;case`${Xj}debug-overlay`:Ao();break;case`${Xj}retry-connect`:e.onRetryConnect?.()}}}}
@keydown=${t=>{Bj(t)||Lr(t,e.onTabAway)}}
@wa-after-hide=${t=>zj(t,e.onClose)}
>
<button
slot="trigger"
type="button"
tabindex="-1"
aria-hidden="true"
aria-label=${G(`profilePage.identity.menuLabel`)}
style="position: fixed; left: ${t.x}px; bottom: ${t.bottom}px; width: 1px; height: 1px; opacity: 0; pointer-events: none;"
></button>
<wa-dropdown-item
class="sidebar-customize-menu__item sidebar-identity-menu__header"
value="command:profile"
>
<span slot="icon" class="sidebar-identity-menu__avatar" aria-hidden="true">
<openclaw-viewer-avatar .user=${r} variant="footer"></openclaw-viewer-avatar>
</span>
<span class="sidebar-identity-menu__identity">
<span class="sidebar-identity-menu__name" title=${n}>${n}</span>
${i?R`<span class="sidebar-identity-menu__email" title=${i}
>${i}</span
>`:B}
</span>
</wa-dropdown-item>
<div class="sidebar-customize-menu__separator" role="separator"></div>
<wa-dropdown-item class="sidebar-customize-menu__item" value="command:settings">
<span slot="icon" class="nav-item__icon" aria-hidden="true">${U.settings}</span>
<span class="sidebar-customize-menu__text">${G(`nav.settings`)}</span>
<kbd slot="details" class="session-menu__shortcut" aria-hidden="true"
>${pt(mt.appearanceSettings)}</kbd
>
</wa-dropdown-item>
<wa-dropdown-item class="sidebar-customize-menu__item" value="command:usage">
<span slot="icon" class="nav-item__icon" aria-hidden="true">${U.coins}</span>
<span class="sidebar-customize-menu__text">${xr(`usage`)}</span>
</wa-dropdown-item>
<div class="sidebar-customize-menu__separator" role="separator"></div>
<wa-dropdown-item
class="sidebar-customize-menu__item sidebar-pair-mobile"
value="command:pair-mobile"
?disabled=${!e.canPairDevice}
title=${e.canPairDevice?B:G(`devices.pairing.adminRequired`)}
>
<span slot="icon" class="nav-item__icon" aria-hidden="true">${U.smartphone}</span>
<span class="sidebar-customize-menu__text">${G(`devices.pairing.button`)}</span>
</wa-dropdown-item>
<wa-dropdown-item class="sidebar-customize-menu__item" value="command:apps">
<span slot="icon" class="nav-item__icon" aria-hidden="true">${U.layoutGrid}</span>
<span class="sidebar-customize-menu__text">${G(`agentChip.getApps`)}</span>
</wa-dropdown-item>
<wa-dropdown-item class="sidebar-customize-menu__item" value="command:debug-overlay">
<span slot="icon" class="nav-item__icon" aria-hidden="true">${U.activity}</span>
<span class="sidebar-customize-menu__text">${G(`debug.overlay.title`)}</span>
<span slot="details" class="session-menu__shortcut" aria-hidden="true"
>${zo}</span
>
</wa-dropdown-item>
<div class="sidebar-customize-menu__separator" role="separator"></div>
<wa-dropdown-item
class="sidebar-customize-menu__item sidebar-identity-menu__help"
value="command:help"
>
<span slot="icon" class="nav-item__icon" aria-hidden="true"
>${U.circleQuestionMark}</span
>
<span class="sidebar-customize-menu__text">${G(`agentChip.help`)}</span>
${Gj()}
</wa-dropdown-item>
${e.offline?R`<div class="sidebar-customize-menu__separator" role="separator"></div>
<wa-dropdown-item
class="sidebar-customize-menu__item sidebar-identity-menu__retry"
value="command:retry-connect"
>
<span class="sidebar-customize-menu__text">${G(`connection.retryNow`)}</span>
</wa-dropdown-item>`:B}
<div class="sidebar-customize-menu__separator" role="separator"></div>
<div class="sidebar-identity-menu__footer">
<openclaw-sidebar-build-chip
.variant=${`identity`}
.basePath=${e.basePath}
.gatewayVersion=${e.gatewayVersion}
.updateAttentionDismissed=${e.updateAttentionDismissed}
.onNavigate=${t=>{e.onClose(),e.onNavigate(t)}}
></openclaw-sidebar-build-chip>
<span class="sidebar-mode-switch">
<openclaw-theme-mode-toggle .mode=${e.themeMode}></openclaw-theme-mode-toggle>
</span>
</div>
</wa-dropdown>
`}var Jj,Yj,Xj,Zj,Qj;function $j(){return($j=t((()=>{I(),En(),ur(),sr(),W(),Yt(),ib(),Ca(),vo(),A(),Yo(),Xu(),H(),Ij(),Kp(),oi(),Jj=[{href:`https://docs.openclaw.ai`,icon:`book`,label:()=>G(`common.docs`)},{href:`https://docs.openclaw.ai/help`,icon:`messageSquare`,label:()=>G(`agentChip.getHelp`)},{href:`https://discord.gg/clawd`,icon:`users`,label:()=>G(`agentChip.discord`)},{href:`https://docs.openclaw.ai/releases`,icon:`scrollText`,label:()=>G(`agentChip.viewChangelog`)}],Yj=`agent:`,Xj=`command:`,Zj=`link:`,Qj=new WeakMap})))()}function eM(e,t){return R`
<button
slot="trigger"
type="button"
tabindex="-1"
aria-hidden="true"
aria-label=${t}
style="position: fixed; left: ${e.x}px; top: ${e.y}px; width: 1px; height: 1px; opacity: 0; pointer-events: none;"
></button>
`}function tM(e){return R`
<wa-dropdown-item
slot=${e.submenu?`submenu`:B}
class="sidebar-session-sort-menu__item"
value=${e.value}
role="menuitemradio"
aria-checked=${String(e.checked)}
${yn(t=>Zr(t,e.checked))}
>
<span slot="details" class="session-menu__check" aria-hidden="true"
>${e.checked?U.check:B}</span
>
<span class="row session-menu__label">
${e.owner?Jp(e.owner,`row`,`owned`):B}
<span class="session-menu__text">${e.label}</span>
</span>
</wa-dropdown-item>
`}function nM(e){return e.owners.map(t=>tM({value:`owner:${t.id}`,checked:e.ownerFilterId===t.id,label:t.id===e.selfOwnerId?G(`sessionsView.ownerYou`,{name:t.label??t.id}):t.label??t.id,owner:t,submenu:e.submenu}))}function rM(e){let{owners:t,ownerFilterId:n,involvingMe:r}=e;if(t.length===0&&n===null&&!r)return B;let i=t.find(e=>e.id===n),a=i?.label??i?.id,o=a?G(`sessionsView.specificOwnerSelected`,{name:a}):G(`sessionsView.specificOwnerAvailable`,{count:String(t.length)}),s=i?R`${Zp(i)}
<span class="sidebar-session-owner-selection__name">${a}</span>`:R`<span class="sidebar-session-owner-count">${t.length}</span>`;return R`
<div class="session-menu__separator" role="separator"></div>
<div class="sidebar-session-sort-menu__title">${G(`sessionsView.owners`)}</div>
${tM({value:`owner:`,checked:n===null&&!r,label:G(`sessionsView.allOwners`)})}
${tM({value:`involving-me`,checked:r,label:G(`sessionsView.involvingMe`)})}
${t.length>0?e.compact?Ep({value:`compact:open-specific-owner`,label:G(`sessionsView.specificOwner`),icon:U.users,details:R`<span class="session-menu__shortcut sidebar-session-owner-selection"
>${s}</span
>`,accessibleLabel:o}):R`<wa-dropdown-item
class="sidebar-session-sort-menu__item sidebar-session-owner-submenu"
aria-label=${o}
>
<span class="session-menu__text">${G(`sessionsView.specificOwner`)}</span>
<span
slot="details"
class="session-menu__shortcut sidebar-session-owner-selection"
aria-hidden="true"
>${s}</span
>
${nM({...e,submenu:!0})}
</wa-dropdown-item>`:B}
`}function iM(e){return Dp(R`${nM({...e,submenu:!1})}`)}function aM(e){return e===`compact:open-specific-owner`?`specific-owner`:e===`compact:back`?`root`:null}function oM(e){let t=e.menu;return Ln(t,R`
<wa-dropdown
class="session-menu sidebar-session-group-menu"
.open=${!0}
placement="bottom-start"
.distance=${0}
aria-label=${G(`sessionsView.groupMenu`,{group:t.group})}
@wa-select=${n=>{n.preventDefault();let r=n.detail.item.value;(r===`group-defaults`||r===`rename-group`||r===`new-group`||r===`delete-group`)&&!e.actionDisabledReasons?.[r]&&e.onAction(r,t.group)}}
@keydown=${t=>Lr(t,()=>e.trigger?.focus())}
@wa-after-hide=${t=>e.onClose(ii(t))}
>
${eM(t,G(`sessionsView.groupMenu`,{group:t.group}))}
<wa-dropdown-item
class="session-menu__item"
value="group-defaults"
?disabled=${!e.connected||!!e.actionDisabledReasons?.[`group-defaults`]}
title=${e.actionDisabledReasons?.[`group-defaults`]??B}
>
<span slot="icon" class="session-menu__icon" aria-hidden="true">${U.settings}</span>
<span class="session-menu__text"
>${e.groupDefaultsUnavailable?`${G(`common.retry`)}: ${G(`sessionsView.groupDefaultsMenu`)}`:G(`sessionsView.groupDefaultsMenu`)}</span
>
</wa-dropdown-item>
<wa-dropdown-item
class="session-menu__item"
value="rename-group"
?disabled=${!e.connected||!!e.actionDisabledReasons?.[`rename-group`]}
title=${e.actionDisabledReasons?.[`rename-group`]??B}
>
<span slot="icon" class="session-menu__icon" aria-hidden="true">${U.edit}</span>
<span class="session-menu__text">${G(`sessionsView.renameGroupMenu`)}</span>
</wa-dropdown-item>
<wa-dropdown-item
class="session-menu__item"
value="new-group"
?disabled=${!e.connected||!!e.actionDisabledReasons?.[`new-group`]}
title=${e.actionDisabledReasons?.[`new-group`]??B}
>
<span slot="icon" class="session-menu__icon" aria-hidden="true">${U.folder}</span>
<span class="session-menu__text">${G(`sessionsView.newGroup`)}</span>
</wa-dropdown-item>
<div class="session-menu__separator" role="separator"></div>
<wa-dropdown-item
class="session-menu__item session-menu__item--destructive"
value="delete-group"
variant="danger"
?disabled=${!e.connected||!!e.actionDisabledReasons?.[`delete-group`]}
title=${e.actionDisabledReasons?.[`delete-group`]??B}
>
<span slot="icon" class="session-menu__icon" aria-hidden="true">${U.trash}</span>
<span class="session-menu__text">${G(`sessionsView.deleteGroupMenu`)}</span>
</wa-dropdown-item>
</wa-dropdown>
`)}function sM(e){let t=e.position,n=[{grouping:`project`,label:G(`chat.sidebar.catalogGroupByProject`)},{grouping:`person`,label:G(`chat.sidebar.catalogGroupByPerson`)},{grouping:`none`,label:G(`sessionsView.groupByNone`)}];return Ln(`${t.catalogId}:${t.x}:${t.y}`,R`
<wa-dropdown
class=${`sidebar-session-sort-menu sidebar-catalog-view-menu${e.compact?` session-menu--compact`:``}`}
.open=${!0}
placement="bottom-start"
.distance=${0}
aria-label=${G(`chat.sidebar.catalogViewOptions`)}
@wa-select=${t=>{t.preventDefault();let n=t.detail.item.value,r=aM(n);r?e.onViewChange(r):n?.startsWith(`grouping:`)?e.onGroupingChange(n.slice(9)):n?.startsWith(`owner:`)?e.onOwnerFilterChange(n.slice(6)||null):n===`involving-me`?e.onOwnerFilterChange(null,!0):n===`hide-catalog`&&e.onHide()}}
@keydown=${t=>Lr(t,()=>e.trigger?.focus())}
@wa-after-hide=${t=>e.onClose(ii(t))}
>
${eM(t,G(`chat.sidebar.catalogViewOptions`))}
${e.compact&&e.view===`specific-owner`?iM(e):R`<div class="sidebar-session-sort-menu__title">${G(`sessionsView.groupBy`)}</div>
${n.map(t=>tM({value:`grouping:${t.grouping}`,checked:e.grouping===t.grouping,label:t.label}))}
${rM(e)}
<div class="session-menu__separator" role="separator"></div>
<wa-dropdown-item class="sidebar-session-sort-menu__item" value="hide-catalog">
<span class="session-menu__text">${G(`chat.sidebar.hideFromSidebar`)}</span>
</wa-dropdown-item>`}
</wa-dropdown>
`)}function cM(e){let t=e.position,n=[{grouping:`category`,label:G(`sessionsView.groupByCategory`)},{grouping:`project`,label:G(`chat.sidebar.catalogGroupByProject`)},{grouping:`person`,label:G(`sessionsView.groupByPerson`)},{grouping:`none`,label:G(`sessionsView.groupByNone`)}];return Ln(`${t.x}:${t.y}`,R`
<wa-dropdown
class=${`sidebar-session-sort-menu${e.compact?` session-menu--compact`:``}`}
.open=${!0}
placement="bottom-start"
.distance=${0}
aria-label=${G(`chat.sidebar.sortSessions`)}
@wa-select=${t=>{t.preventDefault();let n=t.detail.item.value,r=aM(n);r?e.onViewChange(r):n?.startsWith(`grouping:`)?e.onGroupingChange(n.slice(9)):n?.startsWith(`sort:`)?e.onSortModeChange(n.slice(5)):n?.startsWith(`status:`)?e.onStatusFilterChange(n.slice(7)):n?.startsWith(`owner:`)?e.onOwnerFilterChange(n.slice(6)||null):n===`involving-me`?e.onOwnerFilterChange(null,!0):n===`show-preview`?e.onShowPreviewChange(!e.showPreview):n===`show-cron`?e.onShowCronChange(!e.showCron):n===`show-system`?e.onShowSystemChange(!e.showSystem):n===`hide-empty-groups`&&e.onHideEmptyGroupsChange(!e.hideEmptyGroups)}}
@keydown=${t=>Lr(t,()=>e.trigger?.focus())}
@wa-after-hide=${t=>e.onClose(ii(t))}
>
${eM(t,G(`chat.sidebar.sortSessions`))}
${e.compact&&e.view===`specific-owner`?iM(e):R`<div class="sidebar-session-sort-menu__title">${G(`sessionsView.groupBy`)}</div>
${n.filter(t=>t.grouping!==`person`||e.peopleSortAvailable).map(t=>tM({value:`grouping:${t.grouping}`,checked:e.grouping===t.grouping,label:t.label}))}
<div class="session-menu__separator" role="separator"></div>
<div class="sidebar-session-sort-menu__title">${G(`chat.sidebar.sortBy`)}</div>
${Qd.filter(t=>t.mode!==`people`||e.peopleSortAvailable).map(t=>tM({value:`sort:${t.mode}`,checked:e.sortMode===t.mode,label:G(t.labelKey)}))}
<div class="session-menu__separator" role="separator"></div>
<div class="sidebar-session-sort-menu__title">${G(`sessionsView.status`)}</div>
${$d.map(t=>tM({value:`status:${t}`,checked:e.statusFilter===t,label:G(t===`active`?`common.active`:t===`archived`?`sessionsView.archived`:`sessionsView.all`)}))}
${rM(e)}
<div class="session-menu__separator" role="separator"></div>
<wa-dropdown-item
class="sidebar-session-sort-menu__item"
type="checkbox"
value="show-preview"
.checked=${e.showPreview}
>
<span class="session-menu__text">${G(`sessionsView.showSessionPreview`)}</span>
<span slot="details" class="session-menu__check" aria-hidden="true"
>${e.showPreview?U.check:B}</span
>
</wa-dropdown-item>
<wa-dropdown-item
class="sidebar-session-sort-menu__item"
type="checkbox"
value="show-cron"
.checked=${e.showCron}
>
<span class="session-menu__text">${G(`sessionsView.showCronSessions`)}</span>
<span slot="details" class="session-menu__check" aria-hidden="true"
>${e.showCron?U.check:B}</span
>
</wa-dropdown-item>
<wa-dropdown-item
class="sidebar-session-sort-menu__item"
type="checkbox"
value="show-system"
.checked=${e.showSystem}
>
<span class="session-menu__text">${G(`sessionsView.showSystemSessions`)}</span>
<span slot="details" class="session-menu__check" aria-hidden="true"
>${e.showSystem?U.check:B}</span
>
</wa-dropdown-item>
<wa-dropdown-item
class="sidebar-session-sort-menu__item"
type="checkbox"
value="hide-empty-groups"
.checked=${e.hideEmptyGroups}
>
<span class="session-menu__text">${G(`sessionsView.hideEmptyGroups`)}</span>
<span slot="details" class="session-menu__check" aria-hidden="true"
>${e.hideEmptyGroups?U.check:B}</span
>
</wa-dropdown-item>`}
</wa-dropdown>
`)}function lM(){return(lM=t((()=>{I(),wn(),En(),W(),q(),H(),kp(),$p(),oi()})))()}function uM(e){let{host:t}=e,n=e.customizeMenuPosition;if(!n)return B;let r=e.customizeMenuTrigger;return ig({position:n,sidebarEntries:t.sidebarEntries,preferencesBrowserOnly:t.preferencesBrowserOnly,isRouteEnabled:t=>e.isRouteEnabled(t),pluginNavigation:t.pluginNavigation(),onTabAway:()=>r?.focus(),onClose:t=>{e.customizeMenuPosition===n&&e.closeCustomizeMenu({restoreFocus:t})},onToggleRoute:e=>{let n=ir({type:`route`,route:e}),r=t.reconciledSidebarZone().sidebarEntries,i=r.includes(n)?r.filter(e=>e!==n):[...r,n];t.onUpdateSidebarEntries?.(i)},onTogglePlugin:e=>{let n=ir({type:`plugin`,key:e}),r=t.reconciledSidebarZone().sidebarEntries,i=r.includes(n)?r.filter(e=>e!==n):[...r,n];t.onUpdateSidebarEntries?.(i)},onReset:()=>{let n=t.reconciledSidebarZone().sidebarEntries.filter(e=>e.startsWith(`session:`));t.onUpdateSidebarEntries?.([...Dr,...n]),e.closeCustomizeMenu({restoreFocus:!0})}})}function dM(e){let{host:t}=e,n=e.agentMenuPosition;if(!n)return B;let r=e.agentMenuTrigger,{activeId:i,agent:a,agents:o,identity:s,identities:c}=t.activeChipAgent();return Kj({position:n,basePath:t.basePath,activeId:i,activeName:Tt(a??{id:i},s),agents:o,identities:c,pinnedAgentIds:t.pinnedAgentIds,connected:t.connected,openMode:e.agentMenuInteractionState===`open-hover`?`hover`:`click`,agentUnreadCount:e=>t.agentUnreadCount(e),onPointerEnter:()=>e.handleAgentMenuPointerEnter(),onPointerLeave:()=>e.handleAgentMenuPointerLeave(),onAfterShow:()=>e.restoreFocusAfterAgentMenuHoverOpen(),onSwitchAgent:e=>t.switchChipAgent(e),onAskCapabilities:e=>t.askAgentCapabilities(e),onTabAway:()=>r?.focus(),onClose:t=>{e.agentMenuPosition===n&&e.closeAgentMenu({restoreFocus:t})},onNavigate:(e,n)=>t.onNavigate?.(e,n)})}function fM(e){let{host:t}=e,n=e.identityMenuPosition;if(!n)return B;let r=e.identityMenuTrigger,i=Jn({snapshotUser:t.sessionDataContext?.gateway.snapshot.selfUser,presenceEntries:Gn(t.sessionData.presencePayload),presenceInstanceId:t.sessionData.presenceInstanceId}),a=t.sessionDataContext,o=a?.overlays.snapshot,s=mi({gatewayBootId:a?.gateway.snapshot.hello?.server?.bootId,updateAvailable:o?.updateAvailable,updateSchedule:o?.updateSchedule}),c=!!(a&&s&&Un(o?.updateAvailable,o?.updateSchedule,!!(o?.updateRunning||o?.updateReconciliationPending))&&!o?.updateRunning&&!o?.updateReconciliationPending&&o?.updateSchedule?.campaign?.state!==`applying`&&!Br(o?.updateStatusBanner?.tone)&&Vr(Xr(a.gateway.connection.gatewayUrl),s));return qj({position:n,canPairDevice:t.canPairDevice,basePath:t.basePath,gatewayVersion:t.gatewayVersion,updateAttentionDismissed:c,profileViewer:i?{...i,watchedSessions:[]}:void 0,offline:t.offline,themeMode:t.themeMode,triggerWidth:n.width,onTabAway:()=>r?.focus(),onClose:t=>{e.identityMenuPosition===n&&e.closeIdentityMenu({restoreFocus:t})},onNavigate:(e,n)=>t.onNavigate?.(e,n),onPairMobile:()=>t.onPairMobile?.(),onRetryConnect:t.onRetryConnect})}function pM(e){let{host:t}=e,n=e.sessionMenu;if(!n)return B;let r=t.sessionDataContext,i=e.pluginActionLifetime.signal,a=t.findSidebarSessionByKey(n.session.key),o=()=>t.sessionData.sessionsResult?.sessions.find(e=>e.key===n.session.key&&e.sessionId===n.session.sessionId),s=o(),c=a&&a.sessionId===n.session.sessionId?a:n.session,l=lt({agentsList:t.sessionDataContext?.agents.state.agentsList,hello:t.sessionDataContext?.gateway.snapshot.hello}),u=t.selectedVisibleSessions(),d=u.length>1&&u.some(e=>e.key===c.key)?u:null,f=d??[c],p=f.every(e=>je(e,l)),m=Oe(f,l),h=f.every(e=>e.unread),g=f.every(e=>e.archived===!0),_=f.every(e=>(e.category??null)===(f[0]?.category??null))?f[0]?.category??null:null,v=c.cloudWorkerStopAction,y=!!(!d&&v&&(!v.blocksActiveRun||!c.hasActiveRun)&&r&&ba(r.gateway.snapshot,v.method)===!0),b=r?.gateway.snapshot.selfUser??null,x=t.readSessionMutationAccess({method:`sessions.assignOwner`,params:{key:c.key,owner:{type:`human`,id:b?.id??`profile`}},requiredScope:`operator.write`}),S={...YE({snapshot:r?.gateway.snapshot,session:c,batchRows:d,cloudWorkerStopAction:c.cloudWorkerStopAction}),...x.allowed?{}:{"assign-owner":x.reason}};return Ln(n,R`
<openclaw-session-menu
.session=${{label:c.label,sessionId:c.sessionId??null,isChild:c.isChild,pinned:c.pinned,unread:d?h:c.unread,archived:g,category:d?_:c.category??null,icon:d?null:c.icon??null,color:d?null:c.color??null,categoryClearReturnsToGroups:_!==null&&f.every(e=>qo(e,t.sessionsGrouping))}}
.selectionCount=${f.length}
.compact=${gr()}
.lastActive=${d?``:Zu(c.updatedAt)}
.anchor=${n}
.trigger=${e.sessionMenuTrigger}
.disabled=${!t.connected}
.actionDisabledReasons=${S}
.navigationAllowed=${!!r}
.copyMarkdownAllowed=${Ha(r?.gateway.snapshot)}
.splitAllowed=${Ko()}
.forkDisabled=${t.sessionData.sessionsLoading||c.modelSelectionLocked}
.forkFromLastCompleted=${c.gatewayHasActiveRun??c.hasActiveRun}
.archiveAllowed=${p}
.deleteAllowed=${m}
.cloudWorkerStopAllowed=${y}
.groups=${t.knownSessionGroups()}
.currentOwner=${c.owner?.actor??null}
.work=${d?null:e.sessionMenuWork}
.pluginActions=${!d&&r?.plugins&&s?Vo(r.plugins,s):[]}
.onClose=${()=>{e.sessionMenu===n&&e.closeSessionMenu()}}
.onAction=${e=>{if(d){t.sessionOrganizer.runBatchSessionAction(e,d,h);return}switch(e.kind){case`open-pr`:os(e.url);break;case`open-in`:sp(e.editor,e.path);break;case`copy-session-id`:case`copy-session-link`:case`copy-markdown`:case`open-new-tab`:case`open-new-window`:case`split-right`:case`split-below`:if(r){let n=t.getSessionNavigationState().selectedAgentId;co(e.kind,{context:r,session:c,agentId:n,isCurrent:()=>t.sessionDataContext===r&&t.getSessionNavigationState().selectedAgentId===n})}break;case`toggle-pin`:t.sessionOrganizer.patchSession(c,{pinned:!c.pinned});break;case`toggle-unread`:t.sessionOrganizer.patchSession(c,{unread:!c.unread});break;case`rename`:t.sessionOrganizer.renameSession(c);break;case`set-color`:t.sessionOrganizer.patchSession(c,{color:e.color});break;case`set-icon`:t.sessionOrganizer.patchSession(c,{icon:e.icon});break;case`reset-appearance`:t.sessionOrganizer.patchSession(c,{icon:null,color:null});break;case`assign-owner`:t.sessionOrganizer.assignSessionOwner(c,e.owner);break;case`fork`:t.sessionOrganizer.forkSession(c);break;case`plugin`:r?.plugins&&Qo({runtime:r.plugins,id:e.id,placement:`session`,sessionKey:n.session.key,session:o(),signal:i}).catch(e=>{i.aborted||en({message:e instanceof Error?e.message:String(e)})});break;case`move-to-group`:(e.category===null||c.category!==e.category)&&t.sessionOrganizer.assignSessionCategory(c,e.category);break;case`new-group`:t.sessionOrganizer.createSessionGroup([c]);break;case`toggle-archived`:c.archived?t.sessionOrganizer.patchSession(c,{archived:!1}):t.sessionOrganizer.archiveSessionWithUndo(c);break;case`stop-cloud-worker`:t.sessionOrganizer.stopCloudWorker(c);break;case`delete`:t.sessionOrganizer.deleteSession(c)}}}
></openclaw-session-menu>
`)}function mM(e){let{host:t}=e,n=e.sessionGroupMenu;if(!n)return B;let r=t.sessionDataContext?.sessions.groupsStatus()??`idle`,i={"group-defaults":an(t.sessionDataContext?.gateway.snapshot,{method:`sessions.groups.update`,requiredScope:`operator.write`}),"rename-group":an(t.sessionDataContext?.gateway.snapshot,{method:`sessions.groups.rename`,requiredScope:`operator.write`}),"new-group":an(t.sessionDataContext?.gateway.snapshot,{method:`sessions.groups.put`,requiredScope:`operator.write`}),"delete-group":an(t.sessionDataContext?.gateway.snapshot,{method:`sessions.groups.delete`,requiredScope:`operator.write`})};return oM({menu:n,trigger:e.sessionGroupMenuTrigger,connected:t.connected,groupDefaultsUnavailable:r===`unavailable`,actionDisabledReasons:Object.fromEntries(Object.entries(i).flatMap(([e,t])=>t.allowed?e===`group-defaults`&&r!==`ready`&&r!==`unavailable`?[[e,G(`common.loading`)]]:[]:[[e,t.reason]])),onAction:(n,i)=>{switch(e.closeSessionGroupMenu({restoreFocus:!0}),n){case`group-defaults`:if(r===`unavailable`){t.sessionDataContext?.sessions.groupsInvalidate(),t.sessionDataContext?.sessions.groupsLoad();break}t.sessionOrganizer.editSessionGroupDefaults(i);break;case`rename-group`:t.sessionOrganizer.renameSessionGroupFromMenu(i);break;case`new-group`:t.sessionOrganizer.createSessionGroup();break;case`delete-group`:t.sessionOrganizer.deleteSessionGroupFromMenu(i)}},onClose:t=>{e.sessionGroupMenu===n&&e.closeSessionGroupMenu({restoreFocus:t})}})}function hM(e){let{host:t}=e,n=e.sessionSortMenuPosition;return n?cM({position:n,trigger:e.sessionSortMenuTrigger,grouping:t.effectiveSessionsGrouping(),sortMode:t.effectiveSessionSortMode(),peopleSortAvailable:t.sessionPeopleSortAvailable(),statusFilter:t.sessionsStatusFilter,showCron:t.sessionsShowCron,showPreview:t.sessionsShowPreview,showSystem:t.sessionsShowSystem,hideEmptyGroups:t.sessionsHideEmptyGroups,owners:t.sessionOwnershipVisible?t.sessionOwnerOptions:[],ownerFilterId:t.sessionOwnerFilterActive?t.sessionOwnerFilterId:null,involvingMe:t.sessionInvolvingMeFilterActive,selfOwnerId:t.sessionDataContext?.gateway.snapshot.selfUser?.id??null,compact:gr(),view:e.filterMenuView,onViewChange:t=>e.setFilterMenuView(t),onGroupingChange:n=>{t.sessionOrganizer.setSessionsGrouping(n),e.closeSessionSortMenu({restoreFocus:!0})},onSortModeChange:n=>{t.setSessionSortMode(n),e.closeSessionSortMenu({restoreFocus:!0})},onStatusFilterChange:n=>{t.sessionOrganizer.setSessionsStatusFilter(n),e.closeSessionSortMenu({restoreFocus:!0})},onOwnerFilterChange:(n,r=!1)=>{t.setSessionOwnerFilter(n,r),e.closeSessionSortMenu({restoreFocus:!0})},onShowCronChange:n=>{t.sessionOrganizer.setSessionsShowCron(n),e.closeSessionSortMenu({restoreFocus:!0})},onShowPreviewChange:n=>{t.sessionOrganizer.setSessionsShowPreview(n),e.closeSessionSortMenu({restoreFocus:!0})},onShowSystemChange:n=>{t.sessionOrganizer.setSessionsShowSystem(n),e.closeSessionSortMenu({restoreFocus:!0})},onHideEmptyGroupsChange:n=>{t.sessionOrganizer.setSessionsHideEmptyGroups(n),e.closeSessionSortMenu({restoreFocus:!0})},onClose:t=>{e.sessionSortMenuPosition===n&&e.closeSessionSortMenu({restoreFocus:t})}}):B}function gM(e){let{host:t}=e,n=e.catalogViewMenuPosition;return n?sM({position:n,trigger:e.catalogViewMenuTrigger,grouping:t.catalogProjectGrouping,owners:t.sessionOwnershipVisible?t.sessionOwnerOptions:[],ownerFilterId:t.sessionOwnerFilterActive?t.sessionOwnerFilterId:null,involvingMe:t.sessionInvolvingMeFilterActive,selfOwnerId:t.sessionDataContext?.gateway.snapshot.selfUser?.id??null,compact:gr(),view:e.filterMenuView,onViewChange:t=>e.setFilterMenuView(t),onGroupingChange:n=>{t.setCatalogProjectGrouping(n),e.closeCatalogViewMenu({restoreFocus:!0})},onHide:()=>{e.catalogViewMenuPosition===n&&(t.hideSessionCatalog(n.catalogId),e.closeCatalogViewMenu())},onOwnerFilterChange:(n,r=!1)=>{t.setSessionOwnerFilter(n,r),e.closeCatalogViewMenu({restoreFocus:!0})},onClose:t=>{e.catalogViewMenuPosition===n&&e.closeCatalogViewMenu({restoreFocus:t})}}):B}function _M(e){let{host:t}=e,n=e.moreMenuPosition;if(!n)return B;let r=e.moreMenuTrigger;return rg({position:n,basePath:t.basePath,activeRouteId:t.activeRouteId,sidebarEntries:t.sidebarEntries,isRouteEnabled:t=>e.isRouteEnabled(t),onTabAway:()=>r?.focus(),onClose:t=>{e.moreMenuPosition===n&&e.closeMoreMenu({restoreFocus:t})},onNavigateRoute:n=>{e.closeMoreMenu({restoreFocus:!0}),t.onNavigate?.(n)},onPreloadRoute:(t,n)=>e.preloadRoute(t,n),onCancelPreload:t=>e.cancelPreload(t),onEditPinnedItems:()=>{let t=e.moreMenuPosition,n=e.moreMenuTrigger;t&&e.openCustomizeMenu(t.x,t.y,n)}})}function vM(){return(vM=t((()=>{I(),wn(),ur(),kr(),Wn(),W(),Yt(),up(),Sa(),vo(),Dt(),po(),A(),za(),qt(),go(),$j(),ag(),id(),lM(),XE(),ti()})))()}async function yM(){let e=await rl();return WM!==e&&(WM=e,globalThis.setTimeout(()=>void OM(e).catch(()=>void 0),0)),e}function bM(e){return JSON.stringify([e.gatewayOwner,e.recoveryScope])}function xM(e){return JSON.stringify([e.gatewayOwner,e.recoveryScope,e.scopeKey])}function SM(e){let t=Math.max(Date.now(),e+1,UM+1);return UM=t,t}function CM(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.blob instanceof Blob&&typeof t.mimeType==`string`}function wM(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.key!=`string`||typeof t.ownerKey!=`string`||typeof t.gatewayOwner!=`string`||typeof t.recoveryScope!=`string`||typeof t.scopeKey!=`string`||typeof t.updatedAt!=`number`||typeof t.writeId!=`string`||typeof t.text!=`string`||t.goalMode!==void 0&&!Vc(t.goalMode)||typeof t.revision!=`number`||!Number.isSafeInteger(t.revision)||t.revision<=0||!Array.isArray(t.attachments)||!t.attachments.every(CM)?null:(t.mentions=Nc(t.text,t.mentions),t)}function TM(e){return!!(e.text||e.goalMode||e.attachments.length>0)}function EM(e,t){let n=SM(e.revision);return{...e,revision:n,text:``,mentions:void 0,goalMode:void 0,attachments:[],updatedAt:t,writeId:`fence:${n}`}}function DM(e,t){if(!(AM(e)||e.updatedAt>t-BM))return TM(e)?EM(e,t):null}async function OM(e){let t=e.transaction($,`readwrite`),n=t.objectStore($),r=Date.now(),i=n.openCursor();i.addEventListener(`success`,()=>{try{let e=i.result;if(!e)return;let t=wM(e.value),n=t?DM(t,r):void 0;n===null?e.delete():n&&e.update(n),e.continue()}catch{t.abort()}}),await K(t)}async function kM(e,t,n){let r=(await nl(e.index(RM).getAll(t))).flatMap(e=>{let t=wM(e);return t?[t]:[]}),i=[];for(let t of r){let r=DM(t,n);if(r===null){e.delete(t.key);continue}if(r){e.put(r);continue}TM(t)&&!AM(t)&&i.push(t)}i.sort((e,t)=>t.updatedAt-e.updatedAt);for(let t of i.slice(VM))e.put(EM(t,n))}function AM(e){return!e.scopeKey.startsWith(zM)&&e.scopeKey.includes(`\0agent:`)&&TM(e)}async function jM(e){let t;try{t=(await yM()).transaction($,`readwrite`);let n=t.objectStore($),r=(await nl(n.index(RM).getAll(bM({...e,scopeKey:``})))).map(wM).filter(e=>e!==null),i=[],a=r.filter(e=>TM(e)&&!AM(e)).length;for(let t of r){if(!AM(t))continue;if(t.gatewayOwner!==e.gatewayOwner||t.recoveryScope!==e.recoveryScope)throw Error(`Composer recovery owner mismatch`);let r=Rl(t.scopeKey),o=r&&![`global`,`main`].includes(r.sessionKey),s={...e,scopeKey:`${zM}${r?Hl(r):t.scopeKey}`},c=o?await nl(n.get(xM(s))):void 0,l=wM(c);o&&l&&!TM(l)&&l.revision>t.revision?n.put(EM(t,Date.now())):o&&a<VM&&c===void 0?(n.put({...t,key:xM(s),scopeKey:s.scopeKey,updatedAt:Date.now()}),a++,n.put(EM(t,Date.now()))):i.push({scopeKey:t.scopeKey,revision:t.revision,writeId:t.writeId,text:t.text,attachmentNames:t.attachments.map(e=>e.fileName??e.mimeType)})}return await K(t),{status:`ready`,entries:i}}catch{try{t?.abort()}catch{}return{status:`storage-failed`}}}async function MM(e,t,n,r,i,a){let o;try{o=(await yM()).transaction($,`readwrite`);let s=o.objectStore($),c=wM(await nl(s.get(xM({...e,scopeKey:t.scopeKey})))),l=wM(await nl(s.get(xM(e))));if(!i()||!c||!AM(c)||c.gatewayOwner!==e.gatewayOwner||c.recoveryScope!==e.recoveryScope||c.revision!==t.revision||c.writeId!==t.writeId||(l?.revision??0)!==n||l?.writeId!==r||l&&TM(l))return o.abort(),{status:`conflict`};let u=SM(Math.max(a,c.revision,l?.revision??0));return s.put({...c,key:xM(e),scopeKey:e.scopeKey,revision:u,writeId:`recovered:${u}`,updatedAt:Date.now()}),s.put(EM(c,Date.now())),await K(o),{status:`persisted`,revision:u}}catch{try{o?.abort()}catch{}return{status:`storage-failed`}}}async function NM(e){try{let t=(await yM()).transaction($,`readwrite`),n=t.objectStore($),r=await nl(n.get(xM(e))),i=wM(r),a=Date.now();if(!i)return r!==void 0&&n.delete(xM(e)),await K(t),{status:`not-found`};if(i.gatewayOwner!==e.gatewayOwner||i.recoveryScope!==e.recoveryScope||i.scopeKey!==e.scopeKey)return t.abort(),{status:`storage-failed`};let o=DM(i,a);return o===null?(n.delete(i.key),await K(t),{status:`not-found`}):o?(n.put(o),await K(t),{status:`not-found`,revision:o.revision,writeId:o.writeId}):(await K(t),TM(i)?{status:`found`,draft:{revision:i.revision,writeId:i.writeId,text:i.text,...i.mentions?.length?{mentions:i.mentions}:{},...i.goalMode?{goalMode:i.goalMode}:{},attachments:i.attachments}}:{status:`not-found`,revision:i.revision,writeId:i.writeId})}catch{return{status:`storage-failed`}}}async function PM(e,t,n){if(t.attachments.reduce((e,t)=>e+t.blob.size,0)>HM){let r=await PM(e,{...t,attachments:[]},n);return r.status===`persisted`?{status:`payload-too-large`,revision:r.revision,writeId:r.writeId}:r}try{let r=(await yM()).transaction($,`readwrite`),i=r.objectStore($),a=xM(e),o=wM(await nl(i.get(a)));if(o?.revision===t.revision)return r.abort(),o.writeId===n.writeId?{status:`persisted`,revision:o.revision,writeId:o.writeId}:{status:`conflict`};if(!(o?o.revision===n.expectedRevision&&(n.expectedWriteId===void 0||o.writeId===n.expectedWriteId)||n.expectedWriteIds?.includes(o.writeId)===!0:n.expectedRevision===0&&n.expectedWriteId===void 0)||(o?.revision??0)>t.revision)return r.abort(),{status:`conflict`};let s=Date.now(),c={key:a,ownerKey:bM(e),gatewayOwner:e.gatewayOwner,recoveryScope:e.recoveryScope,scopeKey:e.scopeKey,revision:t.revision,text:t.text,...t.mentions?.length?{mentions:t.mentions.map(e=>({...e}))}:{},...t.goalMode?{goalMode:t.goalMode}:{},attachments:t.attachments,updatedAt:s,writeId:n.writeId};return i.put(c),await kM(i,c.ownerKey,s),await K(r),{status:`persisted`,revision:t.revision,writeId:n.writeId}}catch{return{status:`storage-failed`}}}async function FM(e,t=0,n){try{let r=(await yM()).transaction($,`readwrite`),i=r.objectStore($),a=Date.now(),o=await IM(i,e,t,n,a);return o.status===`conflict`?(r.abort(),o):(await kM(i,bM(e),a),await K(r),o)}catch{return{status:`storage-failed`}}}async function IM(e,t,n,r,i){let a=xM(t),o=wM(await nl(e.get(a)));if(r!==void 0&&(o?.revision??0)>=r)return{status:`conflict`};let s=SM(Math.max(n,o?.revision??0)),c=`retired:${s}`;return e.put({key:a,ownerKey:bM(t),gatewayOwner:t.gatewayOwner,recoveryScope:t.recoveryScope,scopeKey:t.scopeKey,revision:s,text:``,attachments:[],updatedAt:i,writeId:c}),{status:`persisted`,revision:s,writeId:c}}async function LM(e,t){try{let n=(await yM()).transaction($,`readwrite`),r=n.objectStore($),i=Date.now();for(let n of t)await IM(r,{...e,scopeKey:n.scopeKey},n.minimumRevision,n.retireBeforeRevision,i);return await kM(r,bM({...e,scopeKey:``}),i),await K(n),`completed`}catch{return`storage-failed`}}var $,RM,zM,BM,VM,HM,UM,WM;function GM(){return(GM=t((()=>{ll(),Hc(),Ic(),su(),$=`composerDrafts`,RM=`ownerKey`,zM=`chat:v3:`,BM=6048e5,VM=20,HM=26214400,UM=0,WM=null})))()}export{dD as $,fu as $a,Dp as $i,mx as $n,Nh as $r,UT as $t,rk as A,Id as Aa,pm as Ai,BS as An,Kc as Ao,Wv as Ar,PE as At,CO as B,Pu as Ba,Hp as Bi,$x as Bn,Tc as Bo,uv as Br,fE as Bt,FA as C,tf as Ca,Am as Ci,_C as Cn,dl as Co,ib as Cr,YE as Ct,uk as D,Zd as Da,_m as Di,wS as Dn,Zc as Do,Cy as Dr,ME as Dt,Sk as E,sf as Ea,bm as Ei,HS as En,Xc as Eo,by as Er,BE as Et,FO as F,Bu as Fa,am as Fi,Xx as Fn,Lc as Fo,Gv as Fr,jE as Ft,SO as G,_u as Ga,Vp as Gi,Dx as Gn,Jg as Gr,nE as Gt,wO as H,Lu as Ha,Lp as Hi,Wx as Hn,wc as Ho,C_ as Hr,uE as Ht,NO as I,Ku as Ia,$p as Ii,Kx as In,Ic as Io,zv as Ir,CE as It,uO as J,du as Ja,Ip as Ji,kx as Jn,Zh as Jr,XT as Jt,xO as K,hu as Ka,jp as Ki,Mx as Kn,og as Kr,WT as Kt,MO as L,Hu as La,Jp as Li,Qx as Ln,Nc as Lo,Bv as Lr,gE as Lt,BO as M,Xu as Ma,om as Mi,vS as Mn,Rc as Mo,Vv as Mr,FE as Mt,ek as N,Fu as Na,nm as Ni,hS as Nn,Bc as No,Nv as Nr,EE as Nt,dk as O,q as Oa,mm as Oi,DS as On,qc as Oo,Ty as Or,zE as Ot,IO as P,Du as Pa,im as Pi,nS as Pn,zc as Po,Jv as Pr,NE as Pt,jD as Q,uu as Qa,kp as Qi,dx as Qn,Ph as Qr,eE as Qt,AO as R,Ru as Ra,Yp as Ri,Gx as Rn,Fc as Ro,Uv as Rr,_E as Rt,QA as S,ff as Sa,bh as Si,uC as Sn,pl as So,tb as Sr,XE as St,yk as T,cf as Ta,xm as Ti,VS as Tn,el as To,Sy as Tr,VE as Tt,EO as U,bu as Ua,Bp as Ui,jx as Un,Cc as Uo,a_ as Ur,dE as Ut,dO as V,Iu as Va,Rp as Vi,Cx as Vn,Mc as Vo,w_ as Vr,hE as Vt,pO as W,Su as Wa,zp as Wi,Vx as Wn,Gg as Wr,pE as Wt,iO as X,lu as Xa,Ap as Xi,Sx as Xn,Uh as Xr,lE as Xt,fO as Y,cu as Ya,Np as Yi,Rx as Yn,Yh as Yr,QT as Yt,ND as Z,pu as Za,Tp as Zi,xx as Zn,Vh as Zr,HT as Zt,Ij as _,yf as _a,mh as _i,WC as _n,wl as _o,Cb as _r,eD as _t,FM as a,ap as aa,Tm as ai,xT as an,Rl as ao,ox as ar,LD as at,TA as b,ef as ba,fh as bi,VC as bn,ml as bo,pb as br,ZE as bt,vM as c,zf as ca,gh as ci,TT as cn,Ll as co,Kb as cr,VD as ct,uM as d,Vf as da,vh as di,Qw as dn,Jl as do,Rb as dr,lD as dt,cp as ea,Mh as ei,AT as en,Xl as eo,yx as er,RD as et,fM as f,Nf as fa,Mm as fi,eT as fn,Nl as fo,zb as fr,oD as ft,hM as g,wf as ga,Im as gi,ZC as gn,Dl as go,Ob as gr,sD as gt,pM as h,kf as ha,hh as hi,aw as hn,Ol as ho,Eb as hr,rD as ht,MM as i,ip as ia,Dm as ii,DT as in,Fl as io,ux as ir,PD as it,nk as j,Yu as ja,cm as ji,ES as jn,Gc as jo,Ov as jr,LE as jt,ok as k,Cd as ka,fm as ki,OS as kn,Uc as ko,wy as kr,wE as kt,dM as l,Hf as la,Km as li,CT as ln,Hl as lo,Bb as lr,AD as lt,mM as m,Af as ma,km as mi,$C as mn,Al as mo,Nb as mr,iD as mt,jM as n,up as na,uh as ni,MT as nn,Ul as no,hx as nr,BD as nt,LM as o,If as oa,jm as oi,wT as on,Kl as oo,rx as or,FD as ot,_M as p,Mf as pa,yh as pi,XC as pn,El as po,Ib as pr,nD as pt,mO as q,gu as qa,Fp as qi,Tx as qn,lg as qr,$T as qt,NM as r,sp as ra,Th as ri,kT as rn,su as ro,sx as rr,zD as rt,PM as s,Lf as sa,Ah as si,ST as sn,zl as so,Wb as sr,cO as st,GM as t,lp as ta,jh as ti,jT as tn,Bl as to,gx as tr,MD as tt,gM as u,qf as ua,Nm as ui,vT as un,Pl as uo,Lb as ur,uD as ut,Pj as v,vf as va,wh as vi,BC as vn,hl as vo,Sb as vr,aD as vt,NA as w,nf as wa,Sm as wi,cC as wn,$c as wo,xy as wr,JE as wt,MA as x,af as xa,qm as xi,HC as xn,fl as xo,rb as xr,QE as xt,Oj as y,_f as ya,Sh as yi,zC as yn,gl as yo,_b as yr,tD as yt,DO as z,Vu as za,Kp as zi,Zx as zn,Pc as zo,fv as zr,mE as zt};
//# sourceMappingURL=control-ui-boot-shared-DfZ39Yj9.js.map