openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
23 lines • 43.7 kB
JavaScript
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{Di as t,I as n,Ii as r,Kn as i,Mi as a,Si as o,Un as s,Vn as c,Zn as l,bn as u,gi as d,tt as f,wi as p,xi as m,yi as h}from"./control-ui-foundation-Cydpkyqa.js";import{Aa as ee,As as g,Bi as _,Bs as te,Bt as ne,Eo as re,Gt as ie,Ii as ae,It as oe,Li as se,Ls as v,Ma as ce,Ns as le,Oo as ue,Pi as de,Rt as fe,Ts as pe,Us as me,Vs as he,Wi as ge,Wt as _e,ja as ve,lt as ye,st as be,ws as y,zi as xe,zt as Se}from"./control-ui-core-Rwzhj6nO.js";import{K as Ce,X as b,q as we}from"./lit-runtime-CV_MH99K.js";import{At as x,J as Te,Nt as Ee,Pt as De,Un as S,Yn as Oe,an as C,at as ke,in as Ae,nr as je}from"./control-ui-core-YphAl4aM.js";import{Mt as Me,Ot as Ne,Yt as Pe,en as w}from"./control-ui-core-vvcQQV2m.js";import{Gr as Fe,It as Ie,Kt as Le,Ur as Re,nn as ze}from"./control-ui-boot-shared-BYq7Cchl.js";import{Fn as Be,Pn as Ve,oa as He,ua as Ue,zn as We}from"./control-ui-boot-shared-DfZ39Yj9.js";import{S as Ge,a as Ke,c as qe,d as Je,h as T,l as Ye,m as E,y as D}from"./config-runtime-D-5ybyEi.js";import{Lt as Xe,Rt as Ze,_t as Qe,n as $e,r as et,t as tt,vt as nt,zt as rt}from"./control-ui-boot-chat-Cgwe4GEM.js";import{Ar as it,Cl as at,Dl as ot,Io as st,Ir as ct,Lo as lt,Lr as ut,Nr as dt,Sr as ft,Wa as pt,Ya as mt,_l as O,al as ht,bl as gt,dl as _t,ds as vt,el as yt,fl as k,fs as bt,gl as xt,hl as St,il as Ct,jr as wt,ml as A,nl as Tt,pl as j,sl as Et,ul as Dt,us as Ot,wl as kt,xl as At,xr as jt,yl as Mt}from"./control-ui-boot-shared-CXVvK2AW.js";import{c as Nt,o as Pt,s as Ft}from"./control-ui-boot-shared-3juXI2I2.js";import{_ as It,g as Lt}from"./control-ui-boot-shared-Deak_Sjt.js";import{C as Rt,T as zt,w as Bt}from"./control-ui-boot-chat-Bia0O-uD.js";function Vt(e){return e===void 0?void 0:Ht[e]}var Ht;function Ut(){return(Ut=e((()=>{Ht={main_session_restart_recovery:{icon:`cpu`,labelKey:`chat.systemNotice.restartRecovery.label`,summaryKey:`chat.systemNotice.restartRecovery.summary`},"restart-sentinel":{icon:`cpu`,labelKey:`chat.systemNotice.gatewayRestarted.label`},cli_harness_context:{icon:`cpu`,labelKey:`chat.systemNotice.cliHarnessContext.label`,collapsedBody:!0,startsTurn:!1}}})))()}function Wt(e){return!e||e.startsWith(`/`)||e.includes(`\0`)?!1:e.split(`/`).every(e=>e!==``&&e!==`.`&&e!==`..`)}function Gt(e){return Array.from(e).map(e=>{if(e===`\\`)return`\\\\`;let t=e.codePointAt(0);return t!==void 0&&(t<=31||t>=127&&t<=159)?`\\u{${t.toString(16).padStart(4,`0`)}}`:e}).join(``)}function Kt(e){let t=c(e);if(!t||!Array.isArray(t.paths)||t.paths.length===0)return;let n=t.paths.filter(e=>typeof e==`string`&&Wt(e));if(!(n.length!==t.paths.length||typeof t.stagedResultRef!=`string`||!/^refs\/openclaw\/worker-results\/[A-Za-z0-9-]+$/u.test(t.stagedResultRef)||t.totalCount!==void 0&&(!Number.isSafeInteger(t.totalCount)||t.totalCount<n.length)))return{paths:n,stagedResultRef:t.stagedResultRef,...t.totalCount===void 0?{}:{totalCount:t.totalCount}}}function qt(e){if(!(!e||!(`workspaceResultConflict`in e)))return Kt(e.workspaceResultConflict)}function Jt(e){let t=c(e);if(t?.role===`custom`&&t.customType===$t)return Kt(t.details)}function Yt(e){return Math.max(e.paths.length,e.totalCount??e.paths.length)}function Xt(e){let t=e.paths.slice(0,en);return{paths:t,remaining:Math.max(0,Yt(e)-t.length)}}function Zt(e){return`'${e.replaceAll(`'`,`'\\''`)}'`}function Qt(e,t){let n=t===void 0?e.paths.find(e=>!Qe(e)):e.paths.includes(t)&&!Qe(t)?t:void 0;if(!n)return;let r=Zt(`${e.stagedResultRef}:${n}`),i=Zt(e.stagedResultRef),a=Zt(`:(top,literal)${n}`);return{inspect:`git show ${r}`,takeCloud:`git checkout ${i} -- ${a}`}}var $t,en;function tn(){return(tn=e((()=>{nt(),$t=`cloud-workspace-conflict`,en=5})))()}function M(e){return structuredClone(e)}function nn(){return{id:`side-panel-column`,side:`right`,panels:[],activePanelId:``,height:wn,width:Cn}}function rn(e){return Math.min(En,Math.max(260,e))}function an(e){return Math.min(Dn,Math.max(220,e))}function on(e){return e.dock===`bottom`||e.dock===`left`?e.dock:`right`}function N(e){return e.columns[0]?.panels.find(t=>t.id===e.mainPanelId)}function P(e){return e.columns[0]?.panels.filter(t=>t.id!==e.mainPanelId)??[]}function sn(e){return P(e).find(t=>t.id===e.columns[0]?.activePanelId)}function cn(e,t){return(N(e)?.slot??`conversation`)===t||e.open===!0&&!e.expanded&&sn(e)?.slot===t}function ln(e,t){let n=new Set(e.columns.flatMap(e=>e.panels.map(e=>e.id)));if(!n.has(t))return t;let r=2;for(;n.has(`${t}-${r}`);)r+=1;return`${t}-${r}`}function un(e,t){for(let n of e.columns){let r=n.panels.findIndex(e=>e.id===t);if(r<0)continue;let i=n.panels.filter(t=>t.id!==e.mainPanelId).findIndex(e=>e.id===t),a=n.panels.splice(r,1)[0];if(n.activePanelId===t){let t=n.panels.filter(t=>t.id!==e.mainPanelId);n.activePanelId=t[Math.min(i,t.length-1)]?.id??``}return a}return null}function dn(e){let t=M(e),n=t.columns[0]??=nn(),r=n.panels.find(e=>e.slot===`conversation`);return r||(r={id:ln(t,`conversation`),slot:`conversation`},n.panels.push(r)),t.mainPanelId=N(t)?.id??r.id,n.activePanelId===t.mainPanelId&&(n.activePanelId=P(t)[0]?.id??``),t}function fn(e,t){if(!e.columns[0]?.panels.find(e=>e.id===t)||N(e)?.id===t)return M(e);let n=dn(e),r=n.mainPanelId;return n.mainPanelId=t,n.columns[0].activePanelId=r,n.open=!0,n.expanded=!1,n}function pn(e,t){let n=M(e);if((N(n)?.slot??`conversation`)===t)return n;let r=n.columns.flatMap(e=>e.panels).find(e=>e.slot===t);if(r){n.open=!0,n.expanded&&=!1;let e=n.columns.find(e=>e.panels.includes(r));return e&&(e.activePanelId=r.id),n}let i={id:ln(n,t),slot:t},a=n.columns[0]??=nn();return a.panels.push(i),a.activePanelId=i.id,n.open=!0,n.expanded&&=!1,n}function mn(e,t){let n=M(e),r=n.columns.flatMap(e=>e.panels).find(e=>e.slot===t);if(r){if(t===`conversation`)return r.id!==n.mainPanelId&&(n.open=!1),n;r.id===n.mainPanelId&&(n=dn(n),n.mainPanelId=n.columns[0].panels.find(e=>e.slot===`conversation`).id),un(n,r.id);let e=n.columns[0];e&&!sn(n)&&(e.activePanelId=P(n)[0]?.id??``),P(n).length===0&&(n.open=!1)}return n.columns.length===0&&(n.open=!1),n}function hn(e,t){let n=M(e),r=n.columns.find(e=>e.panels.some(e=>e.id===t));return r&&t!==n.mainPanelId&&(r.activePanelId=t,n.open=!0,n.expanded&&=!1),n}function gn(e,t,n,r){let i=M(e),a=i.columns[0]?.panels;if(!a||t===n)return i;let o=a.findIndex(e=>e.id===t),s=a.findIndex(e=>e.id===n);if(o<0||s<0)return i;let[c]=a.splice(o,1),l=a.findIndex(e=>e.id===n);return a.splice(l+ +(r===`after`),0,c),i}function _n(e,t){let n=M(e);return t&&(n.columns[0]??=nn(),n.expanded&&=!1),n.open=t,n}function vn(e,t){return{...M(e),expanded:t,...t?{open:!0}:{}}}function yn(e,t){return{...M(e),dock:t}}function bn(e,t,n){let r=M(e),i=r.columns.find(e=>e.id===t);return i&&Number.isFinite(n)&&(on(r)===`bottom`?i.height=an(n):i.width=rn(n)),r}function xn(e,t){let n=M(e);if(!Number.isFinite(t)||t<=0)return n;let r=n.columns[0];if(!r)return n;if(n.columns=[r],on(n)===`bottom`)return r.height=an(r.height),n;let i=Math.max(260,Math.min(En,t*.6)),a=Math.max(0,t-On-kn);return 260>a?null:(r.width=Math.min(i,a,rn(r.width)),n)}function Sn(e,t){return t<680}var Cn,wn,Tn,En,Dn,On,kn;function An(){return(An=e((()=>{ie(),Cn=480,wn=360,Tn=`openclaw-sidebar-geometry-commit`,En=1200,Dn=800,On=312,kn=4})))()}function jn(e,t,n){if(e===t)return!0;let i=v(e);return!!(n&&le(t)&&i?.rest===`global`&&r(i.agentId)===r(n))}function Mn(e,t,n){let r=e.presentation,i={id:e.id,request:{command:r.kind===`exec`?r.commandText:r.title,agentId:r.agentId??null,sessionKey:t,allowedDecisions:r.allowedDecisions},...n&&n!==t?{sourceSessionKey:n}:{},createdAtMs:e.createdAtMs,expiresAtMs:e.expiresAtMs};return r.kind===`exec`?{...i,kind:`exec`,request:{...i.request,host:r.host??null}}:r.kind===`plugin`?{...i,kind:`plugin`,pluginTitle:r.title,pluginDescription:r.description,pluginSeverity:r.severity,pluginId:r.pluginId??null}:{...i,kind:`system-agent`,pluginTitle:r.title,pluginDescription:r.description,proposalHash:r.proposalHash}}function Nn(e,t,n){if(!ze(Ze,e))return[];let r=Le(Ze,e);return jn(r.sessionKey,t,n)?r.approvals.filter(e=>e.status===`pending`).map(e=>Mn(e,t,e.sourceSessionKey)):[]}function Pn(e,t,n,r){if(!ze(Xe,t))return null;let i=Le(Xe,t),a=n??i.sessionKey;if(!jn(i.sessionKey,a,r))return null;if(i.phase===`terminal`)return e.filter(e=>e.id!==i.approval.id);let o=e.filter(e=>e.id!==i.approval.id);return o.push(Mn(i.approval,a,i.sourceSessionKey)),o.toSorted((e,t)=>e.createdAtMs-t.createdAtMs)}function Fn(){return(Fn=e((()=>{Ie(),rt(),g()})))()}function In(e,t,n){return{columns:[{id:e,panes:[{id:t,sessionKey:n}],paneWeights:[1]}],columnWeights:[1],activePaneId:t}}function Ln(e,t,n){return l(e[t],n)}function Rn(e,t,n){let r=Ln(e,t,`${n} before divider`);return r/(r+Ln(e,t+1,`${n} after divider`))}function F(e){return{columns:e.columns.map(e=>({...e,panes:e.panes.map(e=>({...e})),paneWeights:[...e.paneWeights]})),columnWeights:[...e.columnWeights],activePaneId:e.activePaneId}}function zn(e){return`c${e.columns.reduce((e,t)=>Math.max(e,Se(t.id,`c`)),0)+1}`}function Bn(e){return`p${L(e).reduce((e,t)=>Math.max(e,Se(t.id,`p`)),0)+1}`}function I(e,t){for(let[n,r]of e.columns.entries()){let e=r.panes.findIndex(e=>e.id===t),i=r.panes[e];if(i)return{column:r,columnIndex:n,pane:i,paneIndex:e}}return null}function L(e){return e.columns.flatMap(e=>e.panes)}function Vn(e,t){if(!t)return L(e);let n=I(e,e.activePaneId)?.pane;return n?[n]:[]}function Hn(e,t,n,r){let i=I(e,t),a=F(e);if(!i)return a;let o=Bn(e);if(r===`left`||r===`right`){let t=l(a.columnWeights[i.columnIndex],`split column weight for located pane`),s=i.columnIndex+ +(r===`right`);a.columns.splice(s,0,{id:zn(e),panes:[{id:o,sessionKey:n}],paneWeights:[1]}),a.columnWeights.splice(i.columnIndex,1,t/2,t/2)}else{let e=a.columns[i.columnIndex];if(!e)return a;let t=l(e.paneWeights[i.paneIndex],`split pane weight for located pane`),s=i.paneIndex+ +(r===`down`);e.panes.splice(s,0,{id:o,sessionKey:n}),e.paneWeights.splice(i.paneIndex,1,t/2,t/2)}return a.activePaneId=o,a}function Un(e,t){let n=I(e,t);if(!n)return F(e);let r=F(e),i=r.columns[n.columnIndex];if(!i)return r;let a=r.activePaneId===t,o=r.activePaneId;if(a&&(o=i.panes[n.paneIndex-1]?.id??r.columns[n.columnIndex-1]?.panes.at(-1)?.id??r.columns.flatMap(e=>e.panes).find(e=>e.id!==t)?.id??``),i.panes.splice(n.paneIndex,1),i.paneWeights.splice(n.paneIndex,1),i.panes.length===0?(r.columns.splice(n.columnIndex,1),r.columnWeights.splice(n.columnIndex,1)):i.paneWeights=fe(i.paneWeights),!(L(r).length<=1))return r.columnWeights=fe(r.columnWeights),r.activePaneId=o,r}function Wn(e,t,n){let r=F(e),i=I(r,t)?.pane;return i&&(i.sessionKey=n),r}function Gn(e,t){let n=F(e);return I(e,t)&&(n.activePaneId=t),n}function Kn(e,t,n){if(t.kind===`split`){let r=n?L(e).find(e=>e.sessionKey===n):void 0;return n&&!r?e:Hn(e,r?.id??e.activePaneId,t.sessionKey,t.direction)}let r=L(e).find(e=>e.sessionKey===t.sessionKey);return r?t.kind===`close-pane`?Un(e,r.id):Gn(e,r.id):e}function qn(e,t,n){let r=[...e];if(t<0||t+1>=e.length)return r;let i=e[t],a=e[t+1];if(i===void 0||a===void 0)return r;let o=i+a,s=Math.max(Xn,Math.min(.85,n));return r[t]=o*s,r[t+1]=o*(1-s),r}function Jn(e,t,n){let r=F(e);return r.columnWeights=qn(r.columnWeights,t,n),r}function Yn(e,t,n,r){let i=F(e),a=i.columns.find(e=>e.id===t);return a&&(a.paneWeights=qn(a.paneWeights,n,r)),i}var Xn;function Zn(){return(Zn=e((()=>{u(),oe(),Xn=.15})))()}function Qn(e){if(We(e))return null;let t=c(e),n=It(e),r=typeof t?.stopReason==`string`?t.stopReason.trim().toLowerCase():``,i=c(t?.__openclaw);if(n===`commentary`||(!r||r===`tooluse`)&&i?.runTerminal!==!0)return null;let a=He(e);if(typeof a==`string`&&Be(a))return null;let o=(lt(e)?.content??[]).filter(e=>e.type===`text`?typeof e.text==`string`&&e.text.trim().length>0:!Ft(e.type)&&!Nt(e.type));if(o.length===0)return null;try{return JSON.stringify(o)??null}catch{return null}}function $n(e,t){let n=ot(e),r=at(e,n),i=r.runs[t],a=i?.message===void 0?[]:[i.message];for(let e of r.messages)Fe(e)?.role===`assistant`&&mt(e)===t&&a.push(e);let o=new Set;for(let e of a){let t=Qn(e);t&&o.add(t)}return{acceptedFinal:(i?.acceptedFinalMessageIdentities?.length??0)>0,terminalReplySignatures:o}}function er(){return(er=e((()=>{Re(),Pt(),Lt(),Ue(),Ve(),pt(),st(),kt()})))()}function tr(e,t){try{let n=e.getItem(t);if(!n)return!1;let r=JSON.parse(n);return i(r)&&r.open===!0}catch{return!1}}function nr(e){try{e.setItem(or,`1`)}catch{}}function rr(e){try{return e.getItem(or)===`1`}catch{return!1}}function ir(){try{return globalThis.localStorage??null}catch{return null}}function ar(e){let t=e.sessionKey.trim(),n=e.storage===void 0?ir():e.storage;if(!t||!n||rr(n))return e.settings;if(e.settings.sidebarSessionLayouts?.[t]!==void 0)return nr(n),e.settings;let r=new Set([...e.browserAvailable?[`browser`]:[],...e.desktopAvailable?[`desktop`]:[]]),i={columns:[]};for(let e of sr)r.has(e.slot)&&tr(n,e.storageKey)&&(i=pn(i,e.slot));let a=i.columns.length>0?ke({sidebarSessionLayouts:_e(e.settings.sidebarSessionLayouts,t,i)}):e.settings;return nr(n),a}var or,sr;function cr(){return(cr=e((()=>{u(),Te(),ne(),An(),or=`openclaw.chat.sidePanel.legacyDockVisibility.v1`,sr=[{storageKey:`openclaw.browser.panel.v1`,slot:`browser`},{storageKey:`openclaw.desktopPanel`,slot:`desktop`}]})))()}function R(e){let t=v(e)?.rest.match(m)?.[1];return t?t.toLowerCase().replaceAll(`-`,``):null}function lr(e,t){let n=R(e.key);return!n||!n.startsWith(t.shortId.toLowerCase().replaceAll(`-`,``))?!1:!t.slugHint||a(e.displayName)===t.slugHint}function ur(e,t,n){let i=new URLSearchParams(t.search).get(se)?.trim(),a=Ot(e.gateway,t.pathname),o=i??a,s=!!(a&&a===o);if(o){let a=()=>{i&&bt(e.gateway,t.pathname,i)},c=xe(e,o,n.agentId);if(c&&lr(c,n))return a(),{sessionKey:c.key,row:c};let l=R(o),u=v(o)?.agentId;if(s&&l?.startsWith(n.shortId.toLowerCase().replaceAll(`-`,``))&&u&&r(u)===r(n.agentId))return a(),{sessionKey:o}}}function dr(){return(dr=e((()=>{p(),vt(),_(),g()})))()}function fr(e){return new URLSearchParams(e.search).get(`draft`)||void 0}function pr(e){return new URLSearchParams(e.search).get(de)===`1`}function mr(e,t={}){let n=new URLSearchParams(e.search);for(let[e,r]of new URLSearchParams(t.search))n.set(e,r);n.delete(`draft`),n.delete(de);let r=n.toString();return{...e,...t,search:r?`?${r}`:``}}function hr(e){return{draft:fr(e),...pr(e)?{focusComposer:!0}:{}}}function gr(e){let t=new URLSearchParams,n=fr(e);return n&&t.set(`draft`,n),pr(e)&&t.set(de,`1`),t.size>0?`?`+t.toString():``}function _r(e,t,n=e?.sessionKey){return!e||!y(n,e.sessionKey)||t===e?void 0:e.draft}function vr(){return(vr=e((()=>{_(),g()})))()}function yr(e,t){return z?z.expiresAt<=Date.now()?(z=void 0,!1):z.sourceData!==t&&y(z.sessionKey,e):!1}var br,xr,Sr,Cr,z,wr;function Tr(){return(Tr=e((()=>{g(),br=3e4,xr=15e3,Sr=250,Cr=`.agent-chat__composer-combobox textarea`,wr=class{constructor(e){this.host=e}rendered(e,t,n){let r=!!(e&&(t===void 0||t!==null&&y(t,e.sessionKey)));return e&&!e.draft&&r&&yr(e.sessionKey,e)&&(z=void 0,this.maintain(e.sessionKey)),!!(e&&n!==e&&r&&(e.draft!==void 0||e.focusComposer))}shouldFocusPane(e,t,n,r){return!!(e&&r&&(t&&r.focusComposer||!t&&yr(n,r)))}beforeDraftCleanup(e){e.focusComposer&&(z={expiresAt:Date.now()+br,sessionKey:e.sessionKey,sourceData:e})}maintain(e){this.timer!==void 0&&(window.clearTimeout(this.timer),this.timer=void 0);let t=Date.now()+xr,n,r=()=>{if(!this.host.isConnected){this.timer=void 0;return}let i=[...this.host.querySelectorAll(`openclaw-chat-pane`)].find(t=>t.active&&t.sessionKey!==void 0&&y(t.sessionKey,e))?.querySelector(Cr),a=document.activeElement,o=a===n||a===document.body||a instanceof HTMLElement&&!a.isConnected;if(i&&(!n||o))i.focus({preventScroll:!0}),n=i;else if(n&&!o){this.timer=void 0;return}this.timer=Date.now()<t?window.setTimeout(r,Sr):void 0};r()}}})))()}function B(e){return e.lastActivityAt??e.updatedAt??0}function Er(e,t){t===void 0?console.debug(`[chat-session-prefetch] ${e}`):console.debug(`[chat-session-prefetch] ${e}`,t)}function Dr(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function Or(e,t,n,r){return new Pr(e,t,n,r)}var kr,Ar,jr,Mr,Nr,Pr;function Fr(){return(Fr=e((()=>{zt(),dt(),gt(),Ct(),_t(),kr=2,Ar=250,jr=3e4,Mr=`openclaw-chat-prefetch`,Nr=class{constructor(e,t){this.cache=e,this.snapshotStore=t,this.connected=!1,this.snapshot=null,this.lastAttemptAt=new Map,this.delayTimer=null,this.idleTimer=null,this.idleCallback=null,this.running=!1,this.rescheduleDelayMs=null,this.handleVisibilityChange=()=>{document.visibilityState===`visible`&&this.schedule()}}connect(){this.connected||(this.connected=!0,document.addEventListener(`visibilitychange`,this.handleVisibilityChange),this.schedule())}disconnect(){this.connected=!1,this.rescheduleDelayMs=null,document.removeEventListener(`visibilitychange`,this.handleVisibilityChange),this.cancelScheduledWork()}update(e){let t=this.snapshot;this.snapshot=e,(!t||t.client!==e.client||t.listRevision!==e.listRevision||t.intentSessionKey!==e.intentSessionKey||t.presentedTranscriptsReady!==e.presentedTranscriptsReady||!Dr(t.openSessionKeys,e.openSessionKeys))&&this.schedule()}schedule(e=Ar){if(this.connected){if(this.running){this.rescheduleDelayMs=this.rescheduleDelayMs===null?e:Math.min(this.rescheduleDelayMs,e);return}this.delayTimer===null&&this.idleTimer===null&&this.idleCallback===null&&(this.delayTimer=globalThis.setTimeout(()=>{this.delayTimer=null,this.scheduleIdleCycle()},e))}}scheduleIdleCycle(){if(this.connected){if(typeof window.requestIdleCallback==`function`){this.idleCallback=window.requestIdleCallback(()=>{this.idleCallback=null,this.runCycle()});return}this.idleTimer=globalThis.setTimeout(()=>{this.idleTimer=null,this.runCycle()},0)}}async runCycle(){if(!(!this.connected||this.running||document.visibilityState===`hidden`)){this.running=!0;try{let e=typeof navigator>`u`?void 0:navigator.locks;e?await e.request(Mr,{ifAvailable:!0},async e=>{e&&await this.prefetchEligibleSessions()}):await this.prefetchEligibleSessions()}catch(e){Er(`cycle failed`,e)}finally{if(this.running=!1,this.rescheduleDelayMs!==null){let e=this.rescheduleDelayMs;this.rescheduleDelayMs=null,this.schedule(e)}}}}async prefetchEligibleSessions(){let e=this.snapshot;if(!e?.client||!e.rows||!e.presentedTranscriptsReady||document.visibilityState===`hidden`||!this.connected)return;let{client:t}=e;if(await this.snapshotStore.loadSavedAtIndex(),!this.isCurrent(e))return;for(let t of e.openSessionKeys){let n=Et(this.cache,e.snapshotHost,{sessionKey:t});n&&this.cache.size===20&&this.snapshotStore.write(k(e.snapshotHost,{sessionKey:t}),n)}let n=this.selectCandidates(e);n.deferMs!==null&&this.schedule(n.deferMs);for(let r of n.candidates){if(!this.snapshot?.presentedTranscriptsReady)return;await this.prefetchCandidate(e,t,r)}}async prefetchCandidate(e,t,n){let r=this.snapshotStore.captureReadScope(n.snapshotKey),i=()=>this.isCurrent(e,n)&&r(),a=()=>i()&&this.snapshot?.presentedTranscriptsReady===!0;if(!(!a()||this.isOpen(n.snapshotKey,this.snapshot)))try{let o=Et(this.cache,e.snapshotHost,{sessionKey:n.snapshotKey});if(!o&&this.snapshotStore.readSavedAt(n.snapshotKey)!==null){if(o=await this.snapshotStore.read(n.snapshotKey),!a())return;o&&(Tt(this.cache,e.snapshotHost,{sessionKey:n.snapshotKey},o),r=this.snapshotStore.captureReadScope(n.snapshotKey))}this.lastAttemptAt.set(n.snapshotKey,Date.now());let c=await ut(t,n.snapshotKey,this,a,o?.deltaCursor);if(!i())return;if(c.kind===`reset`){if(o?.deltaCursor!==void 0){let{deltaCursor:t,...i}=o;Tt(this.cache,e.snapshotHost,{sessionKey:n.snapshotKey},i),o=i,r=this.snapshotStore.captureReadScope(n.snapshotKey)}if(!a()||(c=await ut(t,n.snapshotKey,this,a),!i()))return}if(this.isOpen(n.snapshotKey,this.snapshot))return;let l;if(c.kind===`delta`){for(let t of c.messages){let r=s(t);!r||!Object.hasOwn(r,`message`)||yt(this.cache,e.snapshotHost,{sessionKey:n.snapshotKey},r.message,r)}let t=Et(this.cache,e.snapshotHost,{sessionKey:n.snapshotKey});if(!t)return;l={...t,...c.inFlightRun?{}:{deltaCursor:c.deltaCursor},...Object.hasOwn(c.sessionInfo,`activeLeafEntryId`)?{displayedLeafEntryId:c.sessionInfo.activeLeafEntryId?.trim()||null}:{},sessionId:c.sessionInfo.sessionId?.trim()||t.sessionId}}else if(c.kind===`snapshot`)l=c.snapshot;else throw Error(`chat history page request returned a cursor reset`);Tt(this.cache,e.snapshotHost,{sessionKey:n.snapshotKey},l)}catch(e){Er(`history fetch failed for ${n.snapshotKey}`,e)}}selectCandidates(e){let t=new Set(e.openSessionKeys.map(t=>k(e.snapshotHost,{sessionKey:t}))),n=Math.max(0,20-t.size),r=(e.rows??[]).toSorted((t,n)=>Number(n.key===e.intentSessionKey)-Number(t.key===e.intentSessionKey)||B(n)-B(t)),i=[],a=new Set,o=null;for(let s of r){if(f(s))continue;let r=k(e.snapshotHost,{sessionKey:s.key,agentId:s.agentId});if(t.has(r)||a.has(r))continue;if(a.add(r),a.size>n)break;let c=B(s),l=this.snapshotStore.readSavedAt(r);if(l!==null&&l>=c)continue;let u=Date.now()-(this.lastAttemptAt.get(r)??0);if(u<jr){let e=jr-u;o=o===null?e:Math.min(o,e);continue}if(i.push({activityAt:c,snapshotKey:r,sessionId:s.sessionId,activeLeafEntryId:s.activeLeafEntryId,updatedAt:s.updatedAt}),i.length===kr)break}return{candidates:i,deferMs:o}}isCurrent(e,t){let n=this.snapshot;if(!this.connected||document.visibilityState===`hidden`||!e.isCurrent()||!n||n.client!==e.client)return!1;if(!t)return!0;let r=!1;for(let e of n.rows??[]){if(k(n.snapshotHost,{sessionKey:e.key,agentId:e.agentId})!==t.snapshotKey)continue;let i=B(e);if(e.sessionId!==t.sessionId||e.activeLeafEntryId!==t.activeLeafEntryId||(e.updatedAt??0)>(t.updatedAt??0)||i>t.activityAt||f(e))return!1;r||=e.updatedAt===t.updatedAt&&i===t.activityAt}return r}isOpen(e,t){return!!t?.openSessionKeys.some(n=>k(t.snapshotHost,{sessionKey:n})===e)}cancelScheduledWork(){this.delayTimer!==null&&(globalThis.clearTimeout(this.delayTimer),this.delayTimer=null),this.idleTimer!==null&&(globalThis.clearTimeout(this.idleTimer),this.idleTimer=null),this.idleCallback!==null&&(window.cancelIdleCallback(this.idleCallback),this.idleCallback=null)}},Pr=class{constructor(e,t,n,r){this.host=e,this.readContext=r,this.subscriptions=[],this.intentSessionKey=null,this.handleNavigationIntent=e=>{let t=e.composedPath().find(e=>e instanceof HTMLElement&&e.hasAttribute(`data-session-key`));if(t&&t.closest(`openclaw-app-shell`)!==this.paneRoot.closest(`openclaw-app-shell`))return;let n=t?.dataset.sessionKey??null;n!==this.intentSessionKey&&(this.intentSessionKey=n,this.sync())},this.sync=()=>{let e=this.readContext();if(e!==this.context&&(this.clearSubscriptions(),this.context=e,e&&(this.subscriptions=[e.gateway.subscribe(this.sync),e.sessions.subscribe(this.sync)])),!e)return;let t=[...this.paneRoot.querySelectorAll(`openclaw-chat-pane`)].filter(e=>e.closest(`openclaw-app-shell`)===this.paneRoot.closest(`openclaw-app-shell`)),n=t.flatMap(e=>e.sessionKey?[e.sessionKey]:[]),r=e.sessions,i=r.captureConnectionScope();this.prefetcher.update({client:i?.client??null,isCurrent:()=>this.context===e&&e.sessions===r&&i!==null&&r.isConnectionScopeCurrent(i),listRevision:e.sessions.canonicalListRevision,openSessionKeys:n,intentSessionKey:this.intentSessionKey,presentedTranscriptsReady:!t.some(e=>e.presented!==!1&&e.transcriptLoading===!0),rows:e.sessions.state.result?.sessions??null,snapshotHost:{assistantAgentId:e.gateway.snapshot.assistantAgentId,agentsList:e.agents.state.agentsList,hello:e.gateway.snapshot.hello}})},this.paneRoot=e,this.prefetcher=new Nr(t,n),e.addController(this)}hostConnected(){this.paneRoot=this.host.closest(`openclaw-app-shell`)??this.host,this.paneRoot.addEventListener(Bt,this.sync),this.paneRoot.addEventListener(Rt,this.sync),this.paneRoot.addEventListener(`pointerover`,this.handleNavigationIntent),this.paneRoot.addEventListener(`focusin`,this.handleNavigationIntent),this.prefetcher.connect(),this.sync()}hostUpdated(){this.sync()}hostDisconnected(){this.paneRoot.removeEventListener(Bt,this.sync),this.paneRoot.removeEventListener(Rt,this.sync),this.paneRoot.removeEventListener(`pointerover`,this.handleNavigationIntent),this.paneRoot.removeEventListener(`focusin`,this.handleNavigationIntent),this.clearSubscriptions(),this.prefetcher.disconnect()}clearSubscriptions(){for(let e of this.subscriptions)e();this.subscriptions=[],this.context=void 0}}})))()}function V(e,t){t===void 0?console.debug(`[chat-snapshot-cache] ${e}`):console.debug(`[chat-snapshot-cache] ${e}`,t)}function Ir(e){return new Promise((t,n)=>{e.addEventListener(`complete`,()=>t()),e.addEventListener(`error`,()=>n(e.error??Error(`IndexedDB failed`))),e.addEventListener(`abort`,()=>n(e.error??Error(`IndexedDB aborted`)))})}function Lr(e){return new Promise((t,n)=>{e.addEventListener(`success`,()=>t(e.result)),e.addEventListener(`error`,()=>n(e.error??Error(`IndexedDB request failed`)))})}function Rr(e){try{let t=JSON.stringify(e);return t?JSON.parse(t):null}catch{return null}}function zr(e,t){let n=Yr.safeParse(e);return n.success&&(!t||n.data.sessionKey===t)?n.data:null}function Br(e,t){let n=Rr(t.snapshot);if(!n)return null;let r=Yr.safeParse({savedAt:t.savedAt,sessionId:t.snapshot.sessionId,sessionKey:e,snapshot:n});return r.success?r.data:null}async function Vr(e){let t=await xt();if(!t)return null;try{let n=t.transaction(A,`readonly`),r=await Lr(n.objectStore(A).get(e));return await Ir(n),r===void 0?null:zr(r,e)||(V(`resetting cache after record shape mismatch`),await O(t),null)}catch(e){return V(`IndexedDB read failed`,e),await O(t),null}finally{t.close()}}async function Hr(){let e=await xt();if(!e)return[];try{let t=e.transaction(j,`readonly`),n=await Lr(t.objectStore(j).getAll());await Ir(t);let r=[];for(let t of n){let n=Xr.safeParse(t);if(!n.success)return V(`resetting cache after metadata shape mismatch`),await O(e),null;r.push(n.data)}return r}catch(t){return V(`IndexedDB read failed`,t),await O(e),null}finally{e.close()}}function Ur(e){let t=ht(e.snapshot)??0;try{return t+JSON.stringify({savedAt:e.savedAt,sessionId:e.sessionId,sessionKey:e.sessionKey}).length}catch{return t}}async function Wr(e,t){if(e.length===0||t!==U)return[];let n=await xt();if(!n)return[];try{let t=n.transaction([A,j],`readwrite`),r=t.objectStore(A),i=t.objectStore(j),a=await Lr(i.getAll()),o=new Map;for(let e of a){let n=Xr.safeParse(e);if(!n.success)throw t.abort(),Error(`IndexedDB metadata shape mismatch`);o.set(n.data.sessionKey,n.data)}for(let t of e){let e={savedAt:t.savedAt,sessionKey:t.sessionKey,weight:Ur(t)};o.set(t.sessionKey,e),r.put(t),i.put(e)}let s=[...o.values()].toSorted((e,t)=>e.savedAt-t.savedAt),c=s.reduce((e,t)=>e+t.weight,0),l=[];for(;s.length>20||c>25165824;){let e=s.shift();if(!e)break;c-=e.weight,r.delete(e.sessionKey),i.delete(e.sessionKey),l.push(e.sessionKey)}return await Ir(t),l}catch(e){return V(`resetting cache after IndexedDB write failure`,e),await O(n),null}finally{n.close()}}function Gr(){for(let e of H)e.flush()}var Kr,qr,Jr,Yr,Xr,H,U,Zr;function Qr(){return(Qr=e((()=>{Ye(),gt(),Ct(),St(),be(),_t(),Kr=500,qr=qe(`hasMore`,[T({completeSnapshot:Je(!0).optional(),hasMore:Je(!1),totalMessages:E().finite().nonnegative().optional()}).strict(),T({hasMore:Je(!0),nextOffset:E().finite().nonnegative(),totalMessages:E().finite().nonnegative().optional()}).strict()]),Jr=T({deltaCursor:D().optional(),displayedLeafEntryId:D().nullable().optional(),messages:Ke(Ge()),pagination:qr,sessionId:D().nullable()}).strict(),Yr=T({savedAt:E().finite().nonnegative(),sessionId:D().nullable(),sessionKey:D().min(1),snapshot:Jr}).strict().refine(e=>e.sessionId===e.snapshot.sessionId),Xr=T({savedAt:E().finite().nonnegative(),sessionKey:D().min(1),weight:E().finite().nonnegative()}).strict(),H=new Set,U=0,Zr=class{constructor(e){this.memoryCache=e,this.connected=!1,this.pending=new Map,this.hydratedSnapshots=new Map,this.revisions=new Map,this.savedAtBySession=new Map,this.savedAtSeed=null,this.writeTimer=null,this.writeChain=Promise.resolve()}connect(){this.connected=!0,H.add(this)}disconnect(){this.connected=!1,this.flush().finally(()=>{this.connected||H.delete(this)})}captureReadScope(e){let t=U,n=this.revisions.get(e)??0;return()=>t===U&&n===(this.revisions.get(e)??0)}async read(e){let t=this.captureReadScope(e),n=await Vr(e);return!n||!t()?null:(At(this.hydratedSnapshots,e,new WeakRef(n.snapshot)),n.snapshot)}async loadSavedAtIndex(){this.savedAtSeed??=this.seedSavedAtIndex(),await this.savedAtSeed}readSavedAt(e){return this.pending.get(e)?.savedAt??this.savedAtBySession.get(e)??null}write(e,t){this.revisions.set(e,(this.revisions.get(e)??0)+1),Mt(this.hydratedSnapshots,e)?.deref()!==t&&(this.hydratedSnapshots.delete(e),this.schedule(e,t))}async delete(e){this.forget(e),await Dt(e)}forget(e){this.revisions.set(e,(this.revisions.get(e)??0)+1),this.pending.delete(e),this.hydratedSnapshots.delete(e),this.savedAtBySession.delete(e),this.memoryCache?.delete(e)}async flush(){this.writeTimer!==null&&(globalThis.clearTimeout(this.writeTimer),this.writeTimer=null);let e=[...this.pending.entries()],t=new Map(e.map(([e])=>[e,this.revisions.get(e)??0]));this.pending.clear();let n=[];for(let[t,r]of e){let e=Br(t,r);e?n.push(e):await this.delete(t)}let r=U;this.writeChain=this.writeChain.then(async()=>{let e=await Wr(n.filter(({sessionKey:e})=>t.get(e)===(this.revisions.get(e)??0)),r);if(e===null){this.resetSavedAtIndex();return}for(let t of e)this.pending.has(t)||this.savedAtBySession.delete(t)}),await this.writeChain}clearMemory(){this.writeTimer!==null&&(globalThis.clearTimeout(this.writeTimer),this.writeTimer=null),this.pending.clear(),this.hydratedSnapshots.clear(),this.revisions.clear(),this.savedAtBySession.clear(),this.memoryCache?.clear()}async whenIdle(){await this.writeChain}schedule(e,t){let n={savedAt:Date.now(),snapshot:t};this.pending.set(e,n),this.savedAtBySession.set(e,n.savedAt),this.writeTimer!==null&&globalThis.clearTimeout(this.writeTimer),this.writeTimer=globalThis.setTimeout(()=>{this.writeTimer=null,this.flush()},Kr)}async seedSavedAtIndex(){let e=U,t=new Map(this.revisions),n=await Hr();if(e===U){if(!n){this.resetSavedAtIndex();return}for(let e of n){if((t.get(e.sessionKey)??0)!==(this.revisions.get(e.sessionKey)??0))continue;let n=this.savedAtBySession.get(e.sessionKey)??0;this.savedAtBySession.set(e.sessionKey,Math.max(n,e.savedAt))}}}resetSavedAtIndex(){this.savedAtBySession.clear();for(let[e,t]of this.pending)this.savedAtBySession.set(e,t.savedAt)}},ye(async({sessionKey:e})=>{e||(U+=1);for(let t of H)e?t.forget(e):t.clearMemory();await Promise.all([...H].map(e=>e.whenIdle()))}),typeof window<`u`&&(window.addEventListener(`pagehide`,Gr),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&Gr()}))})))()}function $r(e,t,n){let r=(t-e.left)/e.width,i=(n-e.top)/e.height,a=r<=W?{edge:`left`,distance:r}:1-r<=W?{edge:`right`,distance:1-r}:null,o=i<=W?{edge:`up`,distance:i}:1-i<=W?{edge:`down`,distance:1-i}:null,s=a&&o?a.distance<=o.distance?a:o:a??o;return s?{kind:`edge`,edge:s.edge}:{kind:`center`}}function ei(e,t){let n={left:e.left,top:e.top,width:e.width,height:e.height};return t.kind===`center`?n:t.edge===`left`?{...n,width:e.width/2}:t.edge===`right`?{...n,left:e.left+e.width/2,width:e.width/2}:t.edge===`up`?{...n,height:e.height/2}:{...n,top:e.top+e.height/2,height:e.height/2}}var W;function ti(){return(ti=e((()=>{W=.3})))()}async function ni(e,t,n,r=!1){let i=await x(e.gateway,n);n.throwIfAborted();let a={shortId:t.shortId,...t.slugHint?{slugHint:t.slugHint}:{},agentId:t.agentId},o;if(r){let t=ft(e,n),r=Date.now()+wt,s=e.sessions.canonicalListRevision,{hello:c}=e.gateway.snapshot,l=()=>!n.aborted&&e.gateway.snapshot.client===i&&e.gateway.snapshot.hello===c;try{let e=await ct(i,`chat.startup`,{...a,limit:80,maxBytes:it},l,()=>Date.now()<r);n.throwIfAborted(),o=e.resolution,o.ok?t.store(o.key,{...e,sourceCanonicalListRevision:s}):t.dispose()}catch(e){throw t.dispose(),e}}else o=await i.request(`sessions.resolve`,{...a,allowMissing:!0});return n.throwIfAborted(),ri(o)}function ri(e){return e.ok?{kind:`unique`,session:e}:e.candidates?.length?{kind:`ambiguous`,sessions:e.candidates,truncated:e.candidates.length===10}:{kind:`not-found`}}function G(){return(G=e((()=>{dt(),jt()})))()}function ii(e,t,n){let r=he({agentsList:e.agents.state.agentsList,hello:e.gateway.snapshot.hello}),i=pe({agentId:n,mainKey:r});return{kind:`missing-session`,face:t,currentSessionHref:ge({context:e,face:t,sessionKey:i,agentId:n}).href,sessionsHref:je(`sessions`,e.basePath)}}function ai(e,t,n){let r=e.toLowerCase().replaceAll(`-`,``);if(!o.test(r))return null;if(n)return r;let i=t.map(e=>e.toLowerCase().replaceAll(`-`,``));for(let e=8;e<=r.length;e+=1){let t=r.slice(0,e);if(i.filter(e=>e.startsWith(t)).length===1)return t}return r}async function K(e,t,n){let i=await x(e.gateway,n);n.throwIfAborted();let a=oi.get(i)??new Map;oi.set(i,a);let o=JSON.stringify([r(t.agentId),t.key,t.slug]),s=a.get(o);if(!s||s.controller.signal.aborted){let n=new AbortController,{hello:r}=e.gateway.snapshot,c=()=>e.gateway.snapshot.phase===`connected`&&e.gateway.snapshot.client===i&&e.gateway.snapshot.hello===r;s={controller:n,promise:Promise.resolve().then(async()=>{if(n.signal.throwIfAborted(),!c())return null;try{let e=await i.request(`sessions.resolve`,{reference:{key:t.key,...t.slug?{slug:t.slug}:{}},agentId:t.agentId,includeGlobal:!0,includeUnknown:!0,allowMissing:!0});return c()?ri(e):null}catch(e){if(!c())return null;throw e}}),subscribers:new Set},a.set(o,s)}s.subscribers.add(n);let c=s,l=()=>void 0,u=new Promise((e,t)=>{l=t}),d=()=>{c.subscribers.delete(n),c.subscribers.size===0&&c.controller.abort(n.reason),l(n.reason)};n.addEventListener(`abort`,d,{once:!0}),n.aborted&&d();try{return await Promise.race([c.promise,u])}finally{n.removeEventListener(`abort`,d),c.subscribers.delete(n),c.subscribers.size===0&&a.get(o)===c&&a.delete(o)}}var oi;function si(){return(si=e((()=>{p(),Oe(),_(),g(),G(),oi=new WeakMap})))()}function ci(e,n){let r=new URLSearchParams(n.search),i=r.get(S),a=i||n.pathname,o=t({pathname:a,basePath:e.basePath});if(!o||!i)return o?{target:o,location:n}:null;r.delete(S);let s=r.toString();return{target:o,location:{...n,pathname:a,search:s?`?${s}`:``}}}function q(e){return{kind:`route-error`,message:e,face:`chat`}}async function li(e,t,n){let r=ci(e,t);if(!r)return null;let{target:i,location:a}=r;try{let t=await x(e.gateway,n);n.throwIfAborted();let r=me({agentsList:e.agents.state.agentsList,hello:e.gateway.snapshot.hello}),o=await t.request(`sessions.catalog.list`,{agentId:r,search:i.shortId,limitPerHost:2});n.throwIfAborted();let s=o.catalogs.filter(e=>e.shareRoute?.routeSegment===i.routeSegment),c=s.length===1?s[0]:void 0;if(!c?.shareRoute)return q(w(`chat.sessionRoute.catalogShareUnavailable`));let l=c.shareRoute;if(!et(l,i.shortId))return q(w(`chat.sessionRoute.catalogShareInvalid`,{catalog:c.label}));if(c.error)return q(c.error.message);let u=c.hosts.filter(e=>e.hostId===l.hostId),d=u.length===1?u[0]:void 0;if(!d)return q(w(`chat.sessionRoute.catalogShareUnavailable`));if(d?.error)return q(d.error.message);let f=d.sessions.filter(e=>et(l,e.threadId)&&e.threadId.length===l.fullLength&&e.threadId.startsWith(i.shortId));if(f.length>1||d.nextCursor){let t=f.flatMap(t=>{let n=tt({shareRoute:l,threadId:t.threadId,displayName:t.name,basePath:e.basePath,prefixLength:l.fullLength});return n?[{agentId:c.label,displayName:t.name?.trim()||t.threadId,href:n,idPrefix:t.threadId}]:[]});return{kind:`ambiguous`,shortId:i.shortId,candidates:t,truncated:!!d.nextCursor,face:`chat`}}let p=f[0];if(!p)return ii(e,`chat`,r);let m=tt({shareRoute:l,threadId:p.threadId,displayName:p.name,basePath:e.basePath,prefixLength:i.shortId.length});return m?{kind:`session`,sessionKey:ee({catalogId:c.id,hostId:l.hostId,threadId:p.threadId},r),agentId:r,draft:void 0,face:`chat`,...m===a.pathname?{}:{canonicalLocation:{...a,pathname:m},canonicalLocationSource:a}}:q(w(`chat.sessionRoute.catalogShareUnavailable`))}catch(e){return n.throwIfAborted(),q(re(e,w(`chat.sessionRoute.catalogShareUnavailable`)))}}function ui(){return(ui=e((()=>{n(),$e(),Oe(),Pe(),ue(),ce(),g(),si()})))()}function J(e){return{...hr(e),...new URLSearchParams(e.search).get(`dashboard`)===`expanded`?{dashboardExpanded:!0}:{}}}function di(e){return new URLSearchParams(e.search).get(ae)===`1`}function fi(e,t){let n=new URLSearchParams(e.search);n.delete(t);let r=n.toString();return{...e,search:r?`?${r}`:``}}function Y(e){return fi(fi(e,ae),se)}function X(e){return e.boardFace===`dashboard`?`dashboard`:`chat`}function Z(e){return he({agentsList:e.agents.state.agentsList,hello:e.gateway.snapshot.hello})}function pi(e){return!!(e.agents.state.agentsList?.mainKey?.trim()||e.gateway.snapshot.phase===`connected`&&e.gateway.snapshot.hello)}function mi(e,t,n,r){let i=v(r);if(!i)return null;let a=Z(e).toLowerCase();if(i.rest.toLowerCase()!==a)return null;let o=C(n,i.agentId,r,e.basePath,{mainKey:a});return o&&o!==t.pathname?{...Y(t),pathname:o}:null}function hi(e){let t=e.face,n=te(e.row.key),r=C(t,n,e.row.key,e.context.basePath,{displayName:e.row.displayName,mainKey:Z(e.context),shortIdLength:e.shortIdLength});if(!r)return;let i=Y(e.location);return r!==e.location.pathname||i.search!==e.location.search?{...i,pathname:r}:null}function gi(e,t){let n=Z(e),r=De(t.pathname,e.basePath,n);if(r)return{target:r,location:t};let i=new URLSearchParams(t.search).get(S);if(!i)return null;let a=De(i,e.basePath,n);return a?{target:a,location:{...fi(t,S),pathname:i}}:null}function Q(e,t){return pe({agentId:t.agentId,mainKey:Z(e)})}function _i(e,t,n,r,i){let a=n.sessions.flatMap(e=>{let t=R(e.key);return t?[{row:e,uuid:t}]:[]}),o=a.map(({uuid:e})=>e);return a.flatMap(({row:a,uuid:s})=>{let c=ai(s,o,n.truncated);if(!c)return[];let l=te(a.key),u=i?X(a):t,d=C(u,l,a.key,e.basePath,{displayName:a.displayName,mainKey:Z(e),shortIdLength:c.length});return d?[{agentId:l,displayName:a.displayName?.trim()||a.key,href:`${d}${gr(r)}`,idPrefix:c}]:[]})}function $(e){let t=e.preferenceDerived?X(e.row):e.face,n=hi({context:e.context,location:e.location,face:t,row:e.row,...e.shortId?{shortIdLength:e.shortId.length}:{}});return n===void 0?null:{kind:`session`,sessionKey:e.row.key,...J(e.location),face:t,...e.shortId&&e.shortId.length>8?{shortId:e.shortId}:{},...n?{canonicalLocation:n,canonicalLocationSource:e.location}:{}}}function vi(e){if(!le(e.row.key))return $(e);let t=e.preferenceDerived?X(e.row):e.face,n=C(t,e.target.agentId,Q(e.context,e.target),e.context.basePath,{mainKey:Z(e.context)});if(!n)return null;let r=Y(e.location),i=n!==e.location.pathname||r.search!==e.location.search?{...r,pathname:n}:void 0;return{kind:`session`,sessionKey:e.row.key,agentId:e.target.agentId,...J(e.location),face:t,...i?{canonicalLocation:i,canonicalLocationSource:e.location}:{}}}async function yi(e,t,n,r){let i=n===`chat`&&await li(e,t,r);if(i)return i;let a=gi(e,t);if(!a||a.target.namespace!==n)return h({routeId:n});let{target:o}=a,s=a.location,c=di(s),l=ve(s.search);if(o.kind===`main`&&l){let t=ee(l),i=c?Y(s):null,a=n;if(c){let n=await K(e,{key:t,agentId:o.agentId},r);if(n?.kind===`unique`){a=X(n.session);let t=C(a,o.agentId,Q(e,o),e.basePath,{mainKey:Z(e)});t&&(i={...Y(s),pathname:t})}}return{kind:`session`,sessionKey:ee(l,o.agentId),agentId:o.agentId,...J(s),face:a,...i?{canonicalLocation:i,canonicalLocationSource:s}:{}}}if(o.kind===`main`){await x(e.gateway,r);let t=Q(e,o);if(c){let i=await K(e,{key:t,agentId:o.agentId},r);if(i?.kind===`unique`)return vi({context:e,location:s,face:n,row:i.session,target:o,preferenceDerived:c})??h({routeId:n})}let i=c?Y(s):null;return{kind:`session`,sessionKey:t,...J(s),face:n,...i&&i.search!==s.search?{canonicalLocation:i,canonicalLocationSource:s}:{}}}if(o.kind===`literal`){let t=pi(e),i=c||!!o.slugCandidate;if(!t&&i&&(await x(e.gateway,r),t=pi(e),t))return await yi(e,s,n,r);if(i){let i=t?xe(e,o.sessionKey,o.agentId):void 0,a=i?{kind:`unique`,session:i}:await K(e,{key:o.sessionKey,agentId:o.agentId,...o.slugCandidate?{slug:o.slugCandidate}:{}},r);if(a?.kind===`unique`)return $({context:e,location:s,face:n,row:a.session,preferenceDerived:c})??h({routeId:n});if(o.slugCandidate){if(a?.kind===`not-found`)return ii(e,n,o.agentId);if(a?.kind===`ambiguous`)return{kind:`ambiguous`,shortId:o.slugCandidate,candidates:_i(e,n,a,s,c),truncated:a.truncated,face:n}}}let a=t?mi(e,s,n,o.sessionKey):null,l=v(o.sessionKey),u=!t&&l?x(e.gateway,r).then(()=>mi(e,s,n,o.sessionKey)).catch(()=>null):void 0,d=c?Y(s):null;return{kind:`session`,sessionKey:o.sessionKey,...J(s),face:n,...a?{canonicalLocation:a,canonicalLocationSource:s}:d&&d.search!==s.search?{canonicalLocation:d,canonicalLocationSource:s}:{},...u?{canonicalLocationReady:u,canonicalLocationSource:s}:{}}}let u=ur(e,s,o);if(u&&!u.row){let e=Y(s),t=e.search!==s.search;return{kind:`session`,sessionKey:u.sessionKey,...J(s),face:n,...o.shortId.length>8?{shortId:o.shortId}:{},...t?{canonicalLocation:e,canonicalLocationSource:s}:{}}}let d=u?.row?{kind:`unique`,session:u.row}:await ni(e,o,r,n===`chat`&&!c);if(d.kind===`not-found`){let t=await K(e,{key:o.literalSessionKey,agentId:o.agentId},r);return t?.kind===`unique`?$({context:e,location:s,face:n,row:t.session,preferenceDerived:c})??h({routeId:n}):t?.kind===`not-found`?ii(e,n,o.agentId):h({routeId:n})}return d.kind===`ambiguous`?{kind:`ambiguous`,shortId:o.shortId,candidates:_i(e,n,d,s,c),truncated:d.truncated,face:n}:$({context:e,location:s,face:n,row:d.session,preferenceDerived:c,shortId:o.shortId})??h({routeId:n})}function bi(){return(bi=e((()=>{d(),Oe(),Ae(),Ee(),ce(),_(),g(),vr(),ui(),si(),dr(),G()})))()}function xi(e){window.history.pushState({},``,e),window.dispatchEvent(new PopStateEvent(`popstate`))}function Si(e){return b`
<section class="card">
<h2>${w(`chat.sessionRoute.chooseTitle`)}</h2>
<p>
${e.candidates.length>1?w(`chat.sessionRoute.multipleMatches`,{shortId:e.shortId}):w(`chat.sessionRoute.additionalMatches`)}
</p>
${e.candidates.map(e=>b`
<p>
<a href=${e.href}>${e.displayName}</a><br />
<small>${e.agentId} · ${e.idPrefix}</small>
</p>
`)}
${e.truncated&&e.candidates.length>1?b`<p><small>${w(`chat.sessionRoute.additionalMatches`)}</small></p>`:null}
</section>
`}function Ci(e){return Me({className:`session-route-not-found`,role:`status`,title:w(`chat.sessionRoute.notFoundTitle`),subtitle:w(`chat.sessionRoute.notFoundExplanation`),actions:b`
<button class="btn primary" type="button" =${()=>xi(e.currentSessionHref)}>
${w(`chat.sessionRoute.goToMain`)}
</button>
<button class="btn" type="button" =${()=>xi(e.sessionsHref)}>
${w(`chat.sessionRoute.viewSessions`)}
</button>
`})}function wi(e){let t=e;return t?t.kind===`ambiguous`?Si(t):t.kind===`route-error`?b`<section class="card"><p role="alert">${t.message}</p></section>`:t.kind===`missing-session`?Ci(t):b`<openclaw-chat-page .data=${t}></openclaw-chat-page>`:we}function Ti(e,t){return(e.data??t?.data)?.kind===`session`?Ei:void 0}var Ei;function Di(){return(Di=e((()=>{Ce(),Ne(),Pe(),Ei=`chat-page`})))()}export{yn as $,Jn as A,Pn as B,$n as C,Zn as D,I as E,Rn as F,xn as G,hn as H,Ln as I,cn as J,An as K,Vn as L,Gn as M,Wn as N,Hn as O,In as P,bn as Q,Fn as R,er as S,Un as T,mn as U,Tn as V,dn as W,fn as X,pn as Y,gn as Z,_r as _,yi as a,P as at,cr as b,ei as c,Yt as ct,Fr as d,qt as dt,vn as et,Or as f,Jt as ft,mr as g,vr as h,bi as i,N as it,Yn as j,L as k,Zr as l,Qt as lt,Tr as m,Vt as mt,wi as n,sn as nt,ti as o,tn as ot,wr as p,Ut as pt,Sn as q,Ti as r,on as rt,$r as s,Xt as st,Di as t,_n as tt,Qr as u,Gt as ut,dr as v,Kn as w,ar as x,R as y,Nn as z};
//# sourceMappingURL=control-ui-boot-chat-CMe3QBDk.js.map