UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

24 lines • 199 kB
import{n as e,r as t}from"./rolldown-runtime-8BhlS34s.js";import{$l as n,Ct as r,G as i,Gs as a,Gu as o,H as s,It as c,Ji as l,Ks as u,Lt as d,Lu as f,Ol as p,Ps as m,Pu as h,Rt as g,Su as _,W as v,Wl as y,Wu as b,Xu as x,Yi as ee,Ys as te,Yu as ne,Zi as re,au as ie,cu as S,fc as ae,gt as oe,ht as se,iu as ce,jt as le,kl as ue,kt as de,lu as fe,mc as C,nu as pe,ou as me,pc as he,qu as ge,ru as _e,su as ve,wl as ye,wu as be,xu as xe,yu as w,zl as Se,zt as Ce,zu as T}from"./control-ui-core-CBJ5efDh.js";import{A as we,B as Te,F as Ee,G as De,H as Oe,I as ke,K as Ae,L as je,M as Me,N as Ne,O as Pe,P as Fe,U as Ie,V as Le,W as Re,X as ze,Y as Be,Z as Ve,_ as He,a as Ue,at as We,b as Ge,ct as Ke,f as qe,g as Je,h as Ye,j as Xe,k as Ze,lt as Qe,o as $e,ot as et,p as tt,st as nt,v as rt,x as it,y as at,z as ot}from"./control-ui-boot-shared-gZIpWrfw.js";import{At as st,Mt as ct,Za as lt,ca as ut,dr as dt,mr as ft,pr as pt,sa as mt,to as ht,ur as gt}from"./control-ui-core-DtLivg_r.js";import{A as _t,G as vt,J as yt,M as bt,P as xt,W as St,s as Ct}from"./lit-runtime-IOnANfcZ.js";import{A as wt,At as Tt,Ct as Et,Et as Dt,Jn as Ot,M as kt,O as At,Ot as jt,St as Mt,Tt as Nt,Xt as Pt,Yn as Ft,Yt as It,_ as Lt,_t as Rt,at as zt,bt as Bt,ct as Vt,g as Ht,gr as Ut,i as Wt,in as Gt,it as Kt,j as qt,mr as Jt,o as Yt,ot as Xt,qn as Zt,r as Qt,rt as $t,st as en,v as tn,vt as nn,wt as rn,xt as an,y as on,yt as sn}from"./control-ui-boot-shared-CkXlyZBY.js";import{d as cn,l as ln}from"./gateway-runtime-C77LeWZN.js";import{$i as un,Bi as dn,Di as fn,Dr as pn,Er as mn,Fo as E,G as hn,H as gn,Io as _n,J as vn,Ji as yn,K as bn,Ki as xn,Mo as D,Mt as Sn,Oi as Cn,Po as O,Sr as wn,Ta as k,U as Tn,Ui as En,ai as Dn,ao as On,ba as kn,bo as An,ci as jn,go as Mn,hi as Nn,ho as Pn,io as Fn,jo as A,jt as In,ma as Ln,pa as Rn,pi as j,q as zn,si as Bn,uo as Vn,va as M,wa as N,xa as P,xi as Hn,xr as Un,ya as F,yi as I}from"./ui-CmSP4d14.js";import{A as Wn,X as Gn,Y as Kn,it as qn,k as Jn,nt as Yn}from"./control-ui-boot-shared-VLPz5vN2.js";import{m as Xn,n as Zn,t as Qn,y as $n}from"./control-ui-boot-shared-SQHdJTzb.js";import{_a as er,ga as tr}from"./control-ui-boot-shared-XreXSF7h.js";import{$p as nr,On as rr,Sn as ir,Xp as ar,Zp as or,bn as sr,kn as cr,mo as lr,vn as ur,wn as dr,xn as fr}from"./control-ui-boot-shared-dOnP4mAA.js";import{F as pr,G as mr,H as hr,I as gr,U as _r,_ as vr,g as yr,nt as br,rt as xr}from"./control-ui-boot-shared-Q8KG_noF.js";import{N as Sr,P as Cr}from"./markdown-runtime-ORQpioyT.js";function wr(e){let t;return n=>{let r=()=>{let r=n.state.scopeId,i=t;t={selection:n,scopeId:r,revision:n.intentRevision},i&&r!==i.scopeId&&e(r,n!==i.selection||n.intentRevision!==i.revision)};return r(),n.subscribe(r)}}function Tr(){return(Tr=e((()=>{})))()}function Er(e){let t=D(e?.name)??D(e?.username);if(t)return t;let n=D(e?.id);return n?/^([^@\s]+)@[^@\s]+$/.exec(n)?.[1]??n:null}function Dr(e){let t=D(e?.id),n=D(e?.name),r=D(e?.username),i=D(e?.profileAvatarUrl),a=et(e?.identity);return!t&&!n&&!r&&!i?null:{...a?{identity:a}:{},...t?{id:t}:{},...n?{name:n}:{},...r?{username:r}:{},...i?{profileAvatarUrl:i}:{}}}function Or(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 kr(e){switch(e.type){case`profile`:case`agent`:return JSON.stringify([e.type,e.id]);case`remote`:return JSON.stringify([e.type,e.pluginId,e.domain,e.idKind,e.id]);case`observation`:return JSON.stringify([e.type,e.pluginId,e.accountId,e.senderKind,e.id]);case`legacy`:return JSON.stringify([e.type,e.actorType,e.source,e.id]);default:return e}}function Ar(e){return e?kr({type:`profile`,id:e}):JSON.stringify([`local`])}function jr(){return(jr=e((()=>{We()})))()}function Mr(e,t,n=g().resourceBasePath){try{let r=new URL(e,Lr),i=lt();if(i){let e=new URL(i.gatewayUrl).pathname.replace(/\/$/u,``),t=zn(r.pathname,e);t&&(r.pathname=`${e}${t}`);let n=r.origin===Lr?`${r.pathname}${r.search}`:r.href;r=new URL(ht(n),Lr)}let a=r.origin===Lr,o=zn(r.pathname,n),s=hn(`agentAvatar`,r.pathname,n),c=o?`${n}${o}`:s.matched&&s.value?gn(`agentAvatar`,n,s.value):null;if(!c)return null;let l=`${c}${r.search}`;return a?t?new URL(l,t).toString():l:t&&r.origin===t?t+l:null}catch{return null}}function Nr(e){return e.trim().split(/\s+/u).filter(Boolean).slice(0,2).map(e=>x(e,1)).join(``).toUpperCase()||`?`}function Pr(e){let t=e.id?.trim(),n=Er(e)??`?`;return{kind:`initials`,initials:Nr(n),colorSeed:m(t||n)}}function Fr(e){return Pr(e).colorSeed%360}function Ir(e){let t=e.identity;if(t&&t.type!==`profile`&&t.type!==`agent`)return Pr(e);let{origin:n,resourceBasePath:r}=g(),i=e.profileAvatarUrl?.trim();if(i){let e=Mr(i,n);if(e&&(!t||hn(t.type===`agent`?`agentAvatar`:`userAvatar`,new URL(e,Lr).pathname,r).matched))return{kind:`profile`,url:e}}if(t?.type===`profile`){let e=Mr(bn(t.id),n);if(e)return{kind:`profile`,url:e}}return Pr(e)}var Lr;function Rr(){return(Rr=e((()=>{Tn(),vn(),jr(),ne(),d(),Lr=`https://origin-probe.invalid`})))()}function zr(){R+=1;for(let e of L.values())e.blobUrl&&URL.revokeObjectURL(e.blobUrl);L.clear()}function Br(){for(let[e,t]of L){if(L.size<=Wr)break;!t.settled||t.references>0||(L.delete(e),t.blobUrl&&URL.revokeObjectURL(t.blobUrl))}}function Vr(e){let t=L.get(e);if(L.delete(e),t&&(t.retryAt===void 0||Date.now()<t.retryAt))return L.set(e,t),t.blobUrl??t.promise;let n={blobUrl:null,references:0,settled:!1,promise:Promise.resolve(null)};return n.promise=(async()=>{try{let t=await c(e,Gr);if(!t.ok)return null;let r=await t.blob();if(r.size===0||r.size>2097152||!pn(r.type))return null;let i=URL.createObjectURL(r);return L.get(e)===n?(n.blobUrl=i,Br(),i):(URL.revokeObjectURL(i),null)}catch{return null}finally{!n.blobUrl&&L.get(e)===n&&(n.settled=!0,n.retryAt=Date.now()+Kr,Br())}})(),L.set(e,n),Br(),n.promise}function Hr(e){let{authTokens:t,origin:n,resourceBasePath:r}=g(),i=Mr(e,n,r);return i?n||t.length?Vr(i):i:null}function Ur(e){let t=e?[...L.values()].find(t=>t.blobUrl===e||t.promise===e):void 0;if(!t)return()=>void 0;t.references+=1;let n=!1;return()=>{n||(n=!0,--t.references,t.settled=!0,Br())}}var Wr,Gr,Kr,L,R,qr;function Jr(){return(Jr=e((()=>{mn(),d(),Rr(),Wr=128,Gr=3e4,Kr=6e4,L=new Map,R=0,Ce(zr),qr=class{constructor(e){this.host=e,this.connected=!1,this.routes=new Map,this.activeRoutes=null,this.generation=R,e.addController(this)}hostConnected(){this.connected=!0,this.unsubscribeGatewayReset=Ce(()=>this.host.requestUpdate()),this.host.requestUpdate()}hostDisconnected(){this.connected=!1,this.unsubscribeGatewayReset?.(),this.unsubscribeGatewayReset=void 0,this.clearRoutes()}clearRoutes(){for(let e of this.routes.values())e.release?.();this.routes.clear()}withActiveRoutes(e){this.activeRoutes=new Set;try{return e()}finally{for(let[e,t]of this.routes)this.activeRoutes.has(e)||(t.release?.(),this.routes.delete(e));this.activeRoutes=null}}imageErrorHandler(e){let t=this.routes.get(e);return()=>{t?.url&&this.connected&&this.generation===R&&this.routes.get(e)===t&&(t.url=null,this.host.requestUpdate())}}resolve(e){if(!this.connected)return null;this.generation!==R&&(this.clearRoutes(),this.generation=R),this.activeRoutes?.add(e);let t=e.startsWith(`/`)?Hr(e):e,n=this.routes.get(e);if(n&&n.result===t)return n.url;let r={url:e,result:t,release:Ur(t)};this.routes.set(e,r);let i=t=>{if(this.generation!==R||this.routes.get(e)!==r){r.release?.();return}r.url=t};return typeof t==`string`||t===null?i(t):t.then(t=>{i(t),this.connected&&this.routes.get(e)===r&&this.host.requestUpdate()}),n?.release?.(),r.url}}})))()}function Yr(e){return e.startsWith(`/`)&&!e.startsWith(`//`)&&!/[#\\ ]/u.test(e)&&!Pn(e)}function Xr(e){let t=URL.parse(e);if(!t)return null;let n=(t.protocol===`codex:`||t.protocol===`chatgpt:`||t.protocol===`openclaw:`)&&t.hostname===`plugins`,r=t.protocol===`https:`&&t.hostname===`chatgpt.com`;if(!n&&!r||t.hash||t.username||t.password||t.port)return null;let i=(n?t.pathname:t.pathname.replace(/^\/plugins(?=\/)/u,``)).match(/^\/([^/]+)\/app\/([^/]+)\/?$/u);if(!i?.[1]||!i[2]||r&&!t.pathname.startsWith(`/plugins/`))return null;try{let e=n?i[1].split(`@`):[i[1]];if(e.length>2||!e[0]||e.length===2&&!e[1])return null;let r=decodeURIComponent(e[0]),a=e[1]?decodeURIComponent(e[1]):void 0,o=decodeURIComponent(i[2]),s=t.searchParams.get(`path`)??`/`;return!r||!o||!Yr(s)?null:{kind:`plugin`,pluginId:r,...a?{marketplace:a}:{},toolName:o,deepLink:s}}catch{return null}}function Zr(e){let t=new URLSearchParams({tool:e.toolName,path:e.deepLink});return e.kind===`server`?t.set(`server`,e.serverName):(t.set(`plugin`,e.pluginId),e.marketplace&&t.set(`marketplace`,e.marketplace)),`?${t}`}function Qr(e){let t=new URLSearchParams(e),n=t.get(`server`),r=t.get(`plugin`),i=t.get(`marketplace`),a=t.get(`tool`),o=t.get(`path`)??`/`;return!a||!Yr(o)||!!n==!!r?null:n?i?null:{kind:`server`,serverName:n,toolName:a,deepLink:o}:r?{kind:`plugin`,pluginId:r,...i?{marketplace:i}:{},toolName:a,deepLink:o}:null}function $r(e,t,n=!1){let r=e.filter(e=>(t.kind===`server`?e.serverName===t.serverName:e.pluginId===t.pluginId&&(e.marketplace??void 0)===t.marketplace)&&(e.entrypoints.some(e=>e.toolName===t.toolName&&(e.entrypoint.type===`global`||n&&e.entrypoint.type===`settings`))||n&&e.settings?.readTool===t.toolName));return r.length===1?r[0]:void 0}function ei(){return(ei=e((()=>{Mn()})))()}var ti,ni;function ri(){return(ri=e((()=>{o(),ti={newSession:{title:b.newSession.title,hint:b.newSession.hint,environments:`Environments`,gateway:`Gateway · local`,cloudWorkerMachine:`{profile} · {machine}`,cloudWorkerOsMachine:`{profile} · {os} · {machine}`,cloudWorkerOs:`{profile} · {os}`,cloudRuntimeUnsupported:`The {runtime} runtime does not support cloud workers.`,cloudProfileRuntimeUnsupported:`The {runtime} runtime cannot use this cloud worker. Choose a compatible cloud worker or run locally.`,deviceRuntimeUnsupported:`This runtime does not support paired devices`,placementStartFailed:`The session was created, but startup needs attention: {error}`,placementCreateFailed:`Couldn't prepare session recovery. Your draft has been kept.`,placementStillStarting:`Worker setup is still in progress. Retry to check the existing worker; your message has not been sent.`,placementCompletionUnconfirmed:`Could not confirm whether worker setup finished. Retry to check again; your message has not been sent.`,placementReloadBlocked:b.newSession.placementReloadBlocked,placementCancelled:`Session setup was interrupted and the temporary session was cleaned up. Your prompt is kept here.`,discardUnsavedAndReload:b.newSession.discardUnsavedAndReload,yourDevices:`Your devices`,autoDeviceSub:`Least-busy device`,autoDeviceSubEligible:`First eligible device`,cloud:`Cloud`,machine:`Machine`,operatingSystem:`Operating system`,runsOn:`Runs on {place}`,browse:`Browse folders`,worktree:`Worktree`,checkingGit:`Checking Git availability…`,gitCheckUnavailable:`Couldn't verify Git for this folder. Choose it again to retry.`,starting:`Starting…`,createFailed:`Couldn't create the session.`,checkoutCurrentNote:`Works in the selected folder on its current branch.`,preferenceSaveUnconfirmed:`Saving your new-session choices could not be confirmed. Check them before starting a session.`,worktreeNameClearUnconfirmed:`Session accepted, but clearing the saved worktree name could not be confirmed. Check Name before starting another worktree.`,agent:`Agent`,agents:`Agents`,where:`Where`,gatewayNamed:`Gateway · {name}`,cloudWorker:`Cloud · {profile}`,cloudWorkerProvider:`Cloud worker provider: {provider}`,cloudRecoveryUnavailable:`Cloud workers are unavailable because this connection does not support task recovery. Reconnect or update the Gateway.`,placementSyncsFolder:`Syncs {folder} to the selected runner`,placementClonesRepository:`Clones {folder} on the selected runner. No Gateway checkout is created.`,folder:`Folder`,autoDevice:`Auto`,neverConnected:`Never connected`,offlineFor:`Offline for {duration}`,lastSeen:`Last seen {time}`,nodeUpdateRequired:`Update required: run {updateCommand}, then reconnect. For a headless node, run {restartCommand}.`,nodeCommandPendingApproval:`Ask an administrator to approve the pending {command} request, or pick another device.`,nodeCommandUndeclared:`Make {command} available on this device, then reconnect, or pick another device.`,nodeCommandUnauthorized:`Authorize {command} in the Gateway node command policy, or pick another device.`,capabilityCamera:`Camera`,capabilityLocation:`Location`,capabilityTalk:`Talk`,capabilityScreenCapture:`Screen capture`,capabilityCanvas:`Canvas`,capabilityVoice:`Voice`,environmentDisposable:`Disposable`,environmentPersistent:`Persistent`,registerProject:`Register as project`,machineShape:`{cpu} vCPU · {memory} GB`,machineCpu:`{cpu} vCPU`,machineMemory:`{memory} GB`,machineDefault:`Default`,browseRequiresAdmin:`To browse outside agent workspaces, open Inbox, select Limited access, request admin, then approve in Devices.`,connectMachine:`Connect a device`,browserUp:`Parent folder`,browserUse:`Use this folder`,browserEmpty:`No subfolders`,browserNoMatches:`No matching folders`,browserLoadFailed:`Couldn't list that folder.`,hiddenFolder:`Hidden folder`,worktreeUnavailable:`Selected folder is not a Git checkout`,worktreeBaseRef:`From`,worktreeBranchesLimited:`Suggestions are limited. Enter any branch or commit.`,worktreeBranchesUnavailable:`Branch suggestions are unavailable. Enter a branch or commit.`,worktreeName:`Name`,worktreeNamePlaceholder:`Named from the session title`,worktreeBranchNote:`Creates branch {branch} in a separate checkout.`,worktreeBranchFromTitleNote:`Creates a branch from the session title in a separate checkout.`,worktreeNameInvalid:`Use lowercase letters, digits, and dashes.`,incognito:`Incognito`,incognitoDescription:`Keep this session for 24 hours or until the Gateway restarts, whichever comes first`,draft:`Draft`,draftDescription:`Keep this session to yourself until you publish it`,messagePlaceholder:`What should this session work on?`,dictate:`Dictate`,readingAttachment:`Reading attachment`,start:`Start session`,created:`Session created`,startInTerminal:`Start in terminal`,nativeTerminalHint:`Start the native CLI on the selected machine using its own account and configuration. This does not create an OpenClaw Chat.`,chooseNativeHost:`Choose a native CLI host`,nativeHostsUnavailable:`No native CLI is available. Install it on the Gateway or connect a machine with CLI access, then reconnect to the Gateway.`,nativeTerminalPrompt:`Optional initial prompt for the native CLI`,terminalNodeFolder:`Existing absolute folder on this node`,terminalAttachmentsUnsupported:`Remove attachments before starting a native CLI. Add files from the terminal after it opens.`,createOutcomeUnknown:`The Gateway changed while this session was starting. Check recent sessions before starting this task again.`,cliAgentsGroup:`CLI agents`,cliAgentsUnavailable:`CLI agents unavailable`,placementSetupInterrupted:`This session's runner setup was interrupted. Check recent sessions before starting this task again.`,catalogUnavailable:`This session target is unavailable.`,placementNotReady:`The selected runner isn't ready yet. Try again in a moment.`,nodeUnavailable:`The selected device is unavailable. Pick another place.`,terminalCapabilityOverridesUnsupported:`Clear session capability overrides before starting in a terminal.`,checkout:`Checkout`,checkoutCurrent:`Current checkout`,checkoutWorktree:`New worktree`,checkoutWorktreeNamed:`Worktree · {name}`,checkoutWorktreeSub:`Isolated copy of the repo`,checkoutWorktreeFrom:`New worktree from {branch}`,checkoutCloud:`Starting branch`,checkoutCloudFrom:`From {branch}`,checkoutRepository:`Remote checkout`,checkoutRepositoryFrom:`Remote checkout from {branch}`,checkoutRemoteLocked:`Devices and cloud run in a worktree`,local:`Local`,folderPlaceholder:`Agent workspace`,projects:`Projects`,projectsAdminHint:`Admins can register projects from Browse folders`,projectSearchPlaceholder:`Search projects or paste a Git URL`,githubProjects:`GitHub`,githubTokenHint:`No Control UI GitHub credential or shared Gateway environment token is configured; public GitHub results only.`,cloneProject:`Clone`,recentFolders:`Recent`,what:`What`,newWorkspace:`New workspace`,newWorkspaceDescription:`Start in an empty folder for this session.`,remoteSourceUnavailable:`This folder cannot provide a Git checkout. Select New workspace to start empty, or choose a repository.`,environmentSearchPlaceholder:`Search environments`,environmentSearchEmpty:`No matching environments`,gatewayHost:`Gateway host`,device:`Device`,environmentDetails:`Show details for {name}`,concurrentSessionsValue:`{used} of {total} session slots in use`,autoDeviceChoose:`Any available device`,manageCloudWorkers:`Manage cloud workers`,persistentEnvironmentHint:`Reusable host`,disposableEnvironmentHint:`Disposable host`,sessionHostingAction:`Session hosting is disabled. Run these commands on the paired device:`,updateAction:`This device needs an update. Run the following command:`,reconnectAction:`Then reconnect the device. For a headless device, run:`,runsOnGateway:`Runs on your gateway`,autoDeviceHint:`Chooses the least-busy connected device`,autoDeviceHintEligible:`Chooses the first eligible connected device`,autoDeviceInfo:`About automatic device selection`,autoDeviceScope:`Connected devices only`,restoringPreferences:`Restoring your last session setup…`,checkingPlace:`Checking the selected place…`,agentsUnavailable:`No agents are available on this Gateway yet.`,loadingAgentDefaults:`Refreshing agent defaults…`,agentDefaultsUnavailable:`Could not refresh agent defaults. Reload to try again.`,terminalHostUnavailable:`Native CLI host unavailable. Check that the CLI is installed and the node is connected with its fresh-start command approved, then retry the catalog.`,terminalDisabled:`Enable CLI agents and terminals in Gateway settings to start a native CLI.`,terminalPlacementUnsupported:`Native CLI sessions use a specific host, not OpenClaw worker placement. Reset this draft and choose a native host.`,terminalNeedsFolder:`Pick a folder before starting in a terminal.`,noSessionHosts:`No devices have session hosting enabled. Connect a machine with session hosting enabled, or enable it on a paired device.`,deviceUnavailable:`Device unavailable. Reconnect it and try again.`,sessionHostingDisabled:`Session hosting is disabled. On the paired device, run openclaw config set nodeHost.workerRuns.enabled true, then openclaw node install --force.`,deviceCapacityUnavailable:`Worker capacity is unavailable. Restart the device session host and try again.`,deviceNoSlots:`No worker slots are available. Wait for a slot or pick another device.`,connectMachineTitle:`Connect a machine`,connectMachineDescription:`Run this command on the machine you want to connect.`,connectMachineGenerating:`Creating a secure connection link…`,connectMachineFailed:`Couldn't create a connection link.`,connectMachineMissingUrl:`The Gateway did not return a join URL. Update it and try again.`,connectMachineUnavailable:`Reconnect to the Gateway and try again.`,connectMachineTeamHint:`Installs a background node service that pairs this machine with your team and can run agent sessions.`,connectMachineCommandOnly:`Command access only (no agent sessions)`,connectMachineSingleUse:`This link is single-use and expires soon.`,connectMachineSingleUseExpires:`This link is single-use and expires at {time}.`,connectMachineFreshCode:`Mint fresh code`,connectMachineRefreshing:`Minting…`,connectMachineManageDevices:`Manage devices`}},ni=Object.assign(()=>{Object.assign(b.newSession,ti.newSession)},{catalog:ti})})))()}function ii(e,t){if(!Array.isArray(t)||t.length===0||t.length>10)return;let n=[],r=0;for(let i of t){if(!N(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 ai(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 ii(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 oi(e,t=[]){let n=e.trim(),r=e.length-e.trimStart().length,i=ii(n,t.map(e=>({...e,start:e.start-r,end:e.end-r})));return{text:n,...i?{mentions:i}:{}}}function si(){return(si=e((()=>{Gt()})))()}function ci(e,t){if(!t.sendRunId||t.sessionId&&t.sessionId!==(e.sessionInfo?.sessionId??e.sessionId))return;let n=e.inputReceipts?.find(e=>e.runId===t.sendRunId);return n?.state===`pending`&&n.cancelled?`cancelled`:n?.state}function li(e,t,n=!1){let r=null;if(!t||!Array.isArray(e))return r;for(let i of e){let e=Ut(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 ui(e){let t=F(e),n=F(t?.__openclaw),r=n?.seq,i=n?.id??t?.messageId;return typeof r==`number`&&Number.isSafeInteger(r)&&r>0?`seq:${r}`:typeof i==`string`&&i.trim()?`id:${i}`:null}function di(e){let t=ui(e);if(!t)return null;let n=F(e),r=F(n?.__openclaw),{recordTimestampMs:i,...a}=r??{},o=r?{...n,__openclaw:a}:n;try{return`${t}:${JSON.stringify(o)}`}catch{return t}}function fi(e,t){let n=new Set;for(let t of e){let e=ui(t);e&&n.add(e)}let r=new Set,i=new Map;for(let e of t){let t=ui(e);if(!t||!n.has(t))continue;let a=di(e);a&&(r.add(t),i.set(a,(i.get(a)??0)+1))}return[...e.filter(e=>{let t=ui(e);if(!t||!r.has(t))return!0;let n=di(e),a=n?i.get(n)??0:0;return!n||a===0||(i.set(n,a-1),!1)}),...t]}function pi(){return(pi=e((()=>{Jt()})))()}var z,mi;function hi(){return(hi=e((()=>{o(),z={commandPalette:{newSessionSettings:`New session settings`,rememberSettings:`Remember settings for {shortcut}`,rememberUnavailable:`Reconnect to remember settings.`,settingsSaveFailed:`Could not save settings.`},palette:{placeholder:b.palette.placeholder,noResults:`No results found`,noResultsStart:`Press {shortcut} to start a new session.`,startSession:`New session`,startSessionBackground:`Start new session in background`,startingSession:`Starting…`,promptRequired:`Write a prompt to start a session.`,searchingSessions:`Searching sessions…`,searchingCommands:`Searching commands…`,clearSearch:`Clear search`,escapeKey:`esc`,filterLabel:`Filter search results`,filters:{all:`All`,sessions:`Sessions`,messages:`Messages`},searchFailed:`Chat search failed — check the gateway logs and retry`,modelSearchFailed:`Model search unavailable. Change your search to retry.`,searchPartial:`Transcript search unavailable — showing chat titles and metadata`,searchIndexing:`Indexing older messages — search again shortly.`,categories:{search:`Search`,navigation:b.palette.categories.navigation,skills:`Skills`,messages:`In messages`},items:{apps:`Apps`,sessions:`Sessions`,scheduled:`Automations`,skills:`Skills`,plugins:`Plugins`,settings:`Settings`,agents:`Agents`,desktop:`Desktop`},descriptions:{verboseMode:`Toggle verbose mode.`},footer:{navigate:`navigate`,select:`select`,close:`close`,newline:`newline`}},sessionsView:{transcriptSearchTitle:`Search transcripts`,transcriptSearchDescription:`Find exact words or phrases in user and assistant messages across the default agent's sessions.`,transcriptSearchInputLabel:`Search session transcripts`,transcriptSearchPlaceholder:`Search exact words or phrases…`,transcriptSearchAction:`Search`,transcriptSearchClear:`Clear`,transcriptSearchRetry:`Retry`,transcriptSearchSearching:`Searching transcripts…`,transcriptSearchUnavailable:`Transcript search requires a newer Gateway.`,transcriptSearchError:`Transcript search failed`,transcriptSearchIndexing:`The transcript index is still updating. Retry to include recent messages.`,transcriptSearchArchivedExcluded:`{count} archived transcripts excluded; open a session to restore its searchable history.`,transcriptSearchEmpty:`No transcript messages match that search.`,transcriptSearchMatches:`Transcript matches: {count}`,transcriptSearchTruncated:`Showing the first 25 matches.`},shortcutsOverlay:{title:b.shortcutsOverlay.title,sections:{general:`General`,chat:`Chat`,panels:`Panels`,sidebar:`Sidebar`,imageViewer:`Image viewer`,approvals:`Approvals`},labels:{commandPalette:`Open command palette`,newSession:`Open New Session`,archiveSession:`Archive current session`,paletteStartSession:`Start a background session (in the command palette)`,keyboardShortcuts:`Show keyboard shortcuts`,toggleSidebar:`Toggle sidebar`,debugOverlay:`Toggle debug overlay`,appearanceSettings:`Open appearance settings`,startNewSession:`Start new session (from the new-session page)`,closeDialog:`Close dialog or exit settings`,sendMessage:`Send message`,newline:`Insert new line`,steerImmediately:`Steer active response`,historyRecall:`Browse sent message history`,transcriptSearch:`Search conversation`,clearReply:`Clear reply`,stopResponse:`Stop active response`,cancelDictation:`Cancel dictation`,saveQueuedMessage:`Save queued message`,toggleSessionSelect:`Select multiple sessions`,extendSessionSelect:`Extend session selection`,zoomIn:`Zoom in`,zoomOut:`Zoom out`,zoomReset:`Reset zoom`,panImageHorizontal:`Pan image horizontally`,panImageVertical:`Pan image vertically`,terminalPanel:`Toggle terminal panel`,homePanel:`Talk to your Home agent`,workspaceFiles:`Toggle workspace files`,sideChat:`Toggle side chat`,browserPanel:`Toggle browser panel`,desktopPanel:`Toggle desktop panel`,discussionPanel:`Toggle discussion panel`,dashboardPanel:`Toggle dashboard panel`,reviewPanel:`Toggle review panel`,approveOnce:`Approve once`,approveAlways:`Always allow`,denyApproval:`Deny approval`}},chat:{welcome:{hintBeforeShortcut:`Type a message below ·`,hintAfterShortcut:`for commands`,recentSessions:`Recent chats`,suggestions:{whatCanYouDo:b.chat.welcome.suggestions.whatCanYouDo,summarizeRecentSessions:`Summarize my recent sessions`,configureChannel:`Help me configure a channel`,checkSystemHealth:`Check system health`}},commands:{arguments:`Command arguments`,menu:`Slash commands`,optionCount:`{count} options`,clearDescription:`Clear chat history`,redirectDescription:`Abort and restart with a new message`,steerDescription:`Inject a message into the active run`,exportDescription:`Download this conversation as Markdown`,categories:{session:`Session`,model:`Model`,agents:`Agents`,tools:`Tools`}}}},mi=Object.assign(()=>{Object.assign(b.shortcutsOverlay,z.shortcutsOverlay),Object.assign(b.chat.welcome,z.chat.welcome),Object.assign(b.chat.commands,z.chat.commands),Object.assign(b.commandPalette,z.commandPalette),Object.assign(b.palette,z.palette),Object.assign(b.sessionsView,z.sessionsView)},{catalog:z})})))()}function gi(e){return e.source!==`skill`}function _i(e){return(e.aliases??[]).map(e=>e.trim()).filter(Boolean).map(e=>e.startsWith(`/`)?e.slice(1):e)}function vi(e){if(e.args?.length)return e.args.map(e=>e.required?`<${e.name}>`:`[${e.name}]`).join(` `)}function yi(e,t,n){let r=typeof n==`string`?n:n.value;return e.formatArgs?.({[t]:r})??r}function bi(e){let t=e.args?.[0];if(!t||!Array.isArray(t.choices))return;let n=t.choices.map(n=>yi(e,t.name,n)).filter(Boolean);return n.length?n:void 0}function xi(e){let t=e.tier;return t===`essential`||t===`standard`||t===`power`?t:`standard`}function Si(e,t){let n=e.name.trim();if(!n)return null;let r=e.source??(t===`local`?`native`:void 0),i=Qi[e.key.replace(/[:.-]/g,`_`)];return{key:e.key,name:n,aliases:_i(e).filter(e=>e!==n),description:e.description,args:vi(e),...na[e.key],icon:i?.icon??`terminal`,category:i?.category??(e.category===`session`?`session`:e.category===`options`?`model`:`tools`),executeLocal:t===`local`&&ea.has(e.key),modelIndependent:e.modelIndependent,argOptions:bi(e),allowsInlineMultiWordArgs:$i.has(e.key),tier:t===`local`?xi(e):`standard`,...r?{source:r}:{},...e.skillDisplayName?{skillDisplayName:e.skillDisplayName}:{},...e.skillModelVisible===void 0?{}:{skillModelVisible:e.skillModelVisible},...e.clientPresentation?{clientPresentation:e.clientPresentation}:{}}}function Ci(e){let t=e.trim().replace(/^\//u,``).slice(0,Yi),n=A(t);return!n||!Wi.test(n)?null:n}function wi(e,t){return dn(typeof e==`string`?e:``,t)}function Ti(e){if(e.dynamic===!0)return[];let t=e.choices;return Array.isArray(t)?t.map(e=>{if(typeof e==`string`)return wi(e,Yi);let t=F(e);return t?{value:wi(t.value,Yi),label:wi(t.label,Yi)}:null}).filter(e=>!!(typeof e==`string`?e:e?.value)):[]}function Ei(e){let t=F(e);if(!t||Object.keys(t).length!==2||!Object.hasOwn(t,`when`)||!Object.hasOwn(t,`action`)||t.when!==`no-arguments`)return;let n=F(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 Di(){return[...rn().map(e=>Si({...e,name:e.textAliases[0]?.replace(/^\//u,``)??e.key,aliases:e.textAliases},`local`)).filter(e=>e!==null),...ta]}function Oi(e){let t=new Set;for(let n of e){t.add(A(n.name));for(let e of n.aliases??[]){let n=Ci(e);n&&t.add(n)}}return t}function ki(e,t){let n=(Array.isArray(e.textAliases)?e.textAliases:[]).slice(0,Ki).filter(e=>typeof e==`string`).map(Ci).filter(e=>!!e).filter(e=>!t.has(e)),r=n[0]??(typeof e.name==`string`?Ci(e.name):null);if(!r||t.has(r))return null;let i=(Array.isArray(e.args)?e.args:[]).map(e=>F(e)).filter(e=>e!==null).slice(0,qi).map(e=>({name:wi(e.name,Zi),required:e.required===!0,choices:Ti(e).slice(0,Ji)})).filter(e=>e.name.length>0);return{key:r,name:r,aliases:n.map(e=>`/${e}`),description:wi(e.description,Xi),...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`&&wi(e.skillDisplayName,Yi).trim()||void 0,skillModelVisible:typeof e.skillModelVisible==`boolean`?e.skillModelVisible:void 0,clientPresentation:e.source===`plugin`?Ei(e.clientPresentation):void 0}}function Ai(e){B.splice(0,B.length,...e)}function ji(e){let t=Di(),n=Oi(t),r=e.slice(0,Gi).map(e=>ki(e,n)).filter(e=>e!==null).map(e=>Si(e,`remote`)).filter(e=>e!==null),i=new Map;for(let e of[...t,...r]){let t=A(e.name);t&&!i.has(t)&&i.set(t,e)}return Array.from(i.values())}function Mi(e){let t=e?.commands;return Array.isArray(t)?t.map(e=>F(e)).filter(e=>e!==null):[]}function Ni(e){return T(`chat.commands.categories.${e}`)}function Pi(e){return e.descriptionKey?T(e.descriptionKey):e.description}function Fi(e,t){let n=[e.name,...e.aliases??[]].map(A);return n.some(e=>e===t)?0:n.some(e=>e.startsWith(t))?1:n.some(e=>e.includes(t))?2:A(Pi(e)).includes(t)?3:aa}function Ii(e,t){let n=A(e),r=t?.showAll??!1,i=t?.inlineOnly?B.filter(e=>e.source===`skill`&&e.skillModelVisible===!0||gi(e)&&t.allowImmediateInlineCommands!==!1):B;return i=n?i.filter(e=>Fi(e,n)<aa):i,!n&&!r&&(i=i.filter(e=>(e.tier??`standard`)!==`power`)),i.toSorted((e,t)=>(n?Fi(e,n)-Fi(t,n):0)||(ia[e.tier??`standard`]??1)-(ia[t.tier??`standard`]??1)||ra.indexOf(e.category??`session`)-ra.indexOf(t.category??`session`))}function Li(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;return{query:r[1]??``,start:a,end:o,inline:e.slice(0,a).trim().length>0||e.slice(o).trim().length>0||r[2]===`:`,...r[2]===`:`?{skillOnly:!0}:{}}}function Ri(e){return e.skillDisplayName?.trim()||e.name}function zi(e){let t=A(e),n=t.replace(/[\s_]+/gu,`-`);return B.filter(e=>e.source===`skill`&&e.skillModelVisible===!0).filter(e=>{let r=A(Ri(e)),i=r.replace(/[\s_]+/gu,`-`),a=A(e.name).replace(/[\s_]+/gu,`-`);return!t||r.includes(t)||i.includes(n)||a.startsWith(n)||A(Pi(e)).includes(t)}).toSorted((e,t)=>Ri(e).localeCompare(Ri(t)))}function Bi(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=A(i),c=B.find(e=>e.name===s||e.aliases?.some(e=>A(e)===s));return c?{command:c,args:o}:null}function Vi(e){let t=Bi(e)?.command.key;return A(e.trim())===`/stop`||t===`approve`}function Hi(e){return!e.trimStart().startsWith(`/`)||Vi(e)}function Ui(e){let t=Bi(e);if(!t)return!1;let n=t.command.modelIndependent;if(n===`directive`){let e=an(t.command.key);return e!==void 0&&(e===`model`&&!Dt(t.args)||Bt(e,t.args))}return n===`always`||(n===`no-args`?t.args===``:typeof n==`function`&&n(t.args))}var Wi,Gi,Ki,qi,Ji,Yi,Xi,Zi,Qi,$i,ea,ta,na,B,ra,ia,aa;function oa(){return(oa=e((()=>{Nt(),sn(),h(),hi(),mi(),Wi=/^[a-z0-9][a-z0-9_-]*$/u,Gi=500,Ki=20,qi=20,Ji=50,Yi=200,Xi=2e3,Zi=200,Qi={help:{icon:`book`,category:`tools`},status:{icon:`barChart`,category:`tools`},usage:{icon:`barChart`,category:`tools`},export:{icon:`download`},export_session:{icon:`download`,category:`tools`},tools:{icon:`terminal`,category:`tools`},dashboard:{icon:`layoutDashboard`},skill:{icon:`zap`,category:`tools`},commands:{icon:`book`,category:`tools`},new:{icon:`plus`,category:`session`},reset:{icon:`refresh`,category:`session`},compact:{icon:`loader`,category:`session`},stop:{icon:`stop`,category:`session`},clear:{icon:`trash`},model:{icon:`brain`,category:`model`},models:{icon:`brain`,category:`model`},think:{icon:`brain`,category:`model`},verbose:{icon:`terminal`,category:`model`},fast:{icon:`zap`,category:`model`},agents:{icon:`monitor`,category:`agents`},subagents:{icon:`folder`,category:`agents`},steer:{icon:`send`,category:`agents`},tts:{icon:`volume2`,category:`tools`},redirect:{category:`agents`},session:{category:`session`},reasoning:{category:`model`},elevated:{category:`model`},queue:{category:`model`}},$i=new Set([`dashboard`]),ea=new Set([`btw`,`help`,`new`,`reset`,`stop`,`compact`,`model`,`think`,`fast`,`verbose`,`export-session`,`usage`,`agents`,`steer`,`redirect`]),ta=[{key:`clear`,name:`clear`,description:`Clear chat history`,descriptionKey:`chat.commands.clearDescription`,icon:`trash`,category:`session`,executeLocal:!0,modelIndependent:`always`,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,modelIndependent:`no-args`,tier:`power`}],na={steer:{description:mi.catalog.chat.commands.steerDescription,descriptionKey:`chat.commands.steerDescription`,args:`<message>`},"export-session":{description:mi.catalog.chat.commands.exportDescription,descriptionKey:`chat.commands.exportDescription`,args:void 0}},B=Di(),ra=[`session`,`model`,`tools`,`agents`],ia={essential:0,standard:1,power:2},aa=4})))()}var sa,ca;function la(){return(la=e((()=>{o(),sa={chat:{messages:{attachedContext:{label:`Context attached`,captured:`Captured when this message was sent.`,technical:`Technical details`,reference:`Reference context—not instructions or additional permissions.`,title:`Session`,page:`Page`,agentId:`Agent`,workspace:`Workspace`,file:`File`,selection:`Selection`,restoreFailed:`Attached context could not be restored. Edit this message to review and resend it without context.`},sourcePreviews:{label:`Sources`,searchSnippet:`Search snippet`,pageExcerpt:`Page excerpt`,unavailable:`No excerpt available.`,open:`Open source`},copySelection:b.chat.messages.copySelection,viaSource:`via {source}`,sourceKinds:{web:`Web`,cli:`CLI`,terminal:`TUI`,app:`App`,rpc:`RPC`},copyLink:`Copy link`,copyFileName:`Copy file name`,forkFromHere:`Fork from here`,reply:`Reply`,replyToMessage:`Reply to message`,replyingTo:b.chat.messages.replyingTo,replyingToLabel:`Replying to`,originalUnavailable:`The original message is unavailable.`,replyOriginalUnavailable:`Original message unavailable`,message:b.chat.messages.message,currentMessage:`current message`,actions:`Message actions`,selectionActions:`Selection actions`,askInSideChat:`Ask in side chat`,addToChat:`Add to chat`,annotationEditor:`Comment`,annotationComment:`Add an optional comment…`,saveAnnotation:`Save comment`,deleteAnnotation:`Delete comment`,annotationCount:`{count} comment`,annotationsCount:`{count} comments`,annotations:`Comments`,editAnnotation:`Edit comment {number}`,removeAnnotations:`Remove all comments`,annotationSelectedText:`Highlighted passage:`,annotationUserComment:`Your comment:`,rewind:`Rewind`,rewindConfirm:`Rewind to before this message?`,dontAskAgain:`Don't ask again`,rewindToHere:`Rewind to here`,rewindUnavailable:`Rewind is unavailable while the agent is working`,forkUnavailable:`Fork is unavailable while the agent is working`,showLess:b.chat.messages.showLess,showMore:b.chat.messages.showMore,tooLargeToDisplay:b.chat.messages.tooLargeToDisplay,unknownDate:`Unknown date`,unattributedSender:b.chat.messages.unattributedSender,toolSender:b.chat.messages.toolSender,errorSender:b.chat.messages.errorSender,forwardedFrom:`From`,interSessionUpdateFrom:`1 update from`,interSessionUpdatesFrom:`{count} updates from`,interSessionUpdate:`1 update`,interSessionUpdates:`{count} updates`,forwardedAutomation:`Automation`,forwardedFromAgent:`Forwarded from {agentId}`,forwardedMessage:`Forwarded message`,fullContentLoadExhausted:`Could not load the full message.`,voiceNote:`Voice note`,duplicatesCollapsed:`{count} consecutive identical messages collapsed`,contextFor:`Message context for {timestamp}`}}},ca=Object.assign(()=>Object.assign(b.chat.messages,sa.chat.messages),{catalog:sa})})))()}function ua(e){if(!N(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 da(){return(da=e((()=>{})))()}function fa(e){return N(e)&&typeof e.messageId==`string`&&e.messageId.length>0&&typeof e.text==`string`&&(e.senderLabel==null||typeof e.senderLabel==`string`)&&(e.sourceMessageId==null||typeof e.sourceMessageId==`string`)}function pa(){return(pa=e((()=>{})))()}function ma(e){if(!(!N(e)||typeof e.text!=`string`||typeof e.comment!=`string`||typeof e.sessionKey!=`string`||typeof e.start!=`number`||!Number.isSafeInteger(e.start)||e.start<0||typeof e.end!=`number`||!Number.isSafeInteger(e.end)||e.end<e.start||e.messageId!==void 0&&typeof e.messageId!=`string`||e.entryId!==void 0&&typeof e.entryId!=`string`))return{text:e.text,comment:e.comment,sessionKey:e.sessionKey,start:e.start,end:e.end,...typeof e.messageId==`string`?{messageId:e.messageId}:{},...typeof e.entryId==`string`?{entryId:e.entryId}:{}}}function ha(){return(ha=e((()=>{})))()}function ga(e,t){return e.id===t.id&&e.storageScope===t.storageScope&&e.asyncQuestionItemId===t.asyncQuestionItemId&&e.text===t.text&&e.workContextUnavailable===t.workContextUnavailable&&JSON.stringify(e.workContext)===JSON.stringify(t.workContext)&&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 _a(e){if(!N(e))return null;let t=E(e.id),n=E(e.mimeType);if(!t||!n)return null;let r={id:t,mimeType:n};(e.origin===`paste`||e.origin===`file`)&&(r.origin=e.origin);let i=ma(e.selectionAnnotation);i&&(r.selectionAnnotation=i);let a=E(e.fileName);a&&(r.fileName=a),typeof e.sizeBytes==`number`&&Number.isFinite(e.sizeBytes)&&(r.sizeBytes=e.sizeBytes);let o=E(e.dataUrl);return o&&(r.dataUrl=o),r}function va(e){if(!N(e))return null;let t=E(e.id),n=typeof e.text==`string`?e.text:``,r=j(e.createdAt)??Date.now();if(!t||!n.trim()&&!Array.isArray(e.attachments)&&e.attachmentPayload===void 0&&e.attachmentStorageError===void 0)return null;let i=Array.isArray(e.attachments)?e.attachments.map(_a).filter(e=>e!==null):[],a={id:t,text:n,createdAt:r},o=E(e.storageScope);o&&(a.storageScope=o);let s=E(e.asyncQuestionItemId);s&&s.length<=256&&(a.asyncQuestionItemId=s),e.workContext!==void 0&&(a.workContext=Ve(e.workContext),a.workContext||(a.workContextUnavailable=!0));let c=ii(n,e.mentions);if(c&&(a.mentions=c),e.attachmentPayload!==void 0){let t=e.attachmentPayload;N(t)&&typeof t.key==`string`&&typeof t.recoveryScope==`string`&&typeof t.tabId==`string`?a.attachmentPayload={key:t.key,recoveryScope:t.recoveryScope,tabId:t.tabId}:a.attachmentStorageError=`missing`}if((e.attachmentStorageError===`missing`||e.attachmentStorageError===`unavailable`||e.attachmentStorageError===`capacity`)&&(a.attachmentStorageError=e.attachmentStorageError),Array.isArray(e.attachments)&&i.length!==e.attachments.length&&(a.attachmentStorageError=`missing`),a.attachmentPayload&&!i.length&&(a.attachmentStorageError=`missing`),e.intent!==void 0){let t=e.intent;if(!N(t)||Object.keys(t).length!==3||t.kind!==`session-goal-start`||t.version!==1||typeof t.issuedAtMs!=`number`||!Number.isSafeInteger(t.issuedAtMs)||t.issuedAtMs<=0)return null;a.intent={kind:t.kind,version:t.version,issuedAtMs:t.issuedAtMs},(e.expectedLeafEntryId===null||typeof e.expectedLeafEntryId==`string`)&&(a.expectedLeafEntryId=e.expectedLeafEntryId)}let l=E(e.sessionId);l&&(a.sessionId=l),typeof e.orderKey==`number`&&Number.isFinite(e.orderKey)&&(a.orderKey=e.orderKey);let u=Dr(e.sender);u&&(a.sender=u);let d=e.kind===`steered`||E(e.steerTargetRunId)!==void 0||e.sendState===`steering`?`steer`:Et(typeof e.queueMode==`string`?e.queueMode:void 0);d&&(a.queueMode=d),i.length&&(a.attachments=i),typeof e.refreshSessions==`boolean`&&(a.refreshSessions=e.refreshSessions);let f=E(e.replyToId);f&&(a.replyToId=f),e.sendState===`steering`||e.sendState===`executing-command`?a.sendState=`unconfirmed`:e.sendState===`submitting`?a.sendState=`waiting-idle`:e.sendState===`sending`?a.sendState=`waiting-reconnect`:e.sendState===`failed`||e.sendState===`unconfirmed`||e.sendState===`held`||e.sendState===`waiting-idle`||e.sendState===`waiting-reconnect`?a.sendState=e.sendState:e.sendState===`waiting-model`&&(a.sendState=`failed`,a.sendError=xa);for(let t of[`sendError`,`sendRunId`]){let n=E(e[t]);n&&(a[t]=n)}typeof e.sendAttempts==`number`&&Number.isFinite(e.sendAttempts)&&(a.sendAttempts=e.sendAttempts);for(let t of[`localCommandArgs`,`localCommandName`,`sessionKey`]){let n=E(e[t]);n&&(a[t]=n)}let p=E(e.agentId);return p&&(a.agentId=Vn(p)),e.mentions!==void 0&&(!Array.isArray(e.mentions)||e.mentions.length!==(c?.length??0))&&(a.sendState=a.sendState===`held`?`held`:`failed`,a.sendError=T(`chat.mentions.restoreFailed`)),(e.workContextUnavailable===!0||a.workContextUnavailable)&&(a.workContextUnavailable=!0,a.sendState=a.sendState===`held`?`held`:`failed`,a.sendError=T(`chat.messages.attachedContext.restoreFailed`)),a}function ya(e){if(!N(e))return null;let t=typeof e.draft==`string`?e.draft:void 0,n=t?ii(t,e.draftMentions):void 0;if(e.goalMode!==void 0&&!ua(e.goalMode))return null;let r=e.goalMode;if(e.replyTarget!==void 0&&!fa(e.replyTarget))return null;let i=e.replyTarget;if(Array.isArray(e.queue)&&e.queue.length>ba)return null;let a=Array.isArray(e.queue)?e.queue.map(va).filter(e=>e!==null):void 0,o=Array.isArray(e.removedQueueItemIds)?e.removedQueueItemIds.map(E).filter(e=>e!==void 0):void 0,s=new Set(o??[]),c=a?.filter(e=>!s.has(e.id)),l=j(e.updatedAt)??Date.now(),u=(typeof e.draftRevision==`number`&&Number.isSafeInteger(e.draftRevision)?e.draftRevision:void 0)??(t?l:void 0);return!t&&!r&&!i&&u===void 0&&(!c||c.length===0)?null:{...e.awaitingDefaults===!0?{awaitingDefaults:!0}:{},...t?{draft:t}:{},...n?{draftMentions:n}:{},...r?{goalMode:r}:{},...i?{replyTarget:{...i}}:{},...u===void 0?{}:{draftRevision:u},...c&&c.length>0?{queue:c}:{},updatedAt:l}}var ba,xa;function Sa(){return(Sa=e((()=>{I(),Mt(),Be(),h(),la(),ue(),da(),si(),pa(),ha(),jr(),ca(),ba=1e3,xa=`Chat settings update was interrupted. Review and retry when ready.`})))()}function Ca(e){ja=Math.max(ja,e??0)}function wa(e=0){let t=Math.max(Date.now(),ja+1,e+1);return ja=t,t}function Ta(e,t,n,r){if(r===void 0)return;let i=ka(e,t,n);i.committed=Math.max(i.committed,r)}function Ea(e,t,n,r){let i=ka(e,t,n);i.attempted=Math.max(i.attempted,r)}function Da(e,t,n,r){let i=ka(e,t,n);i.edited=Math.max(i.edited,r)}function Oa(e,t,n,r){let i=ka(e,t,n),a=Symbol(`composer-replacement`),o=Math.max(r,i.committed,i.attempted,i.edited);return i.replacement=a,()=>i.replacement===a&&Math.max(i.committed,i.attempted,i.edited)<=o}function ka(e,t,n){let r=Ma.get(e);r||(r=new Map,Ma.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,edited:0},i.set(n,a)),a}function Aa(e,t,n,r){let i=Ma.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 ja,Ma;function Na(){return(Na=e((()=>{ja=0,Ma=new WeakMap})))()}function V(e){return new Promise((t,n)=>{e.addEventListener(`success`,()=>t(e.result),{once:!0}),e.addEventListener(`error`,()=>n(e.error??Error(`IndexedDB request failed`)),{once:!0})})}function H(e){return new Promise((t,n)=>{e.addEventListener(`complete`,()=>t(),{once:!0}),e.addEventListener(`abort`,()=>n(e.error??Error(`IndexedDB transaction aborted`)),{once:!0}),e.addEventListener(`error`,()=>n(e.error??Error(`IndexedDB transaction failed`)),{once:!0})})}function Pa(){if(za)return za;let e=new Promise((t,n)=>{let r=()=>{za===e&&(za=null)};if(typeof indexedDB>`u`){n(Error(`IndexedDB is unavailable`));return}let i=indexedDB.open(Fa,Ia);i.addEventListener(`upgradeneeded`,()=>{let e=i.result;e.objectStoreNames.contains(`outboxPayloads`)||e.createObjectStore(`outboxPayloads`,{keyPath:`key`});let t=e.objectStoreNames.contains(La)?i.transaction?.objectStore(La):e.createObjectStore(La,{keyPath:`key`});t&&!t.indexNames.contains(Ra)&&t.createIndex(Ra,Ra,{unique:!1})},{once:!0});let a=!1;i.addEventListener(`success`,()=>{let e=i.result;if(a){e.close(),r();return}e.addEventListener(`close`,r,{once:!0}),e.addEventListener(`versionchange`,()=>{e.close(),r()}),t(e)},{once:!0}),i.addEventListener(`error`,()=>{r(),n(i.error??Error(`IndexedDB open failed`))},{once:!0}),i.addEventListener(`blocked`,()=>{a=!0,n(Error(`IndexedDB upgrade was blocked`))},{once:!0})});return za=e,e}var Fa,Ia,La,Ra,za;function Ba(){return(Ba=e((()=>{Fa=`openclaw-control-ui`,Ia=2,La=`composerDrafts`,Ra=`ownerKey`,za=null})))()}function Va(e){return{status:`failed`,reason:e instanceof DOMException&&e.name===`QuotaExceededError`?`capacity`:`unavailable`}}async function Ha(e,t){let n=t.reduce((e,t)=>e+t.blob.size,0);if(n>Ya)return{status:`failed`,reason:`capacity`};try{let r=(await Pa()).transaction(U,`readwrite`,{durability:`strict`}),i=H(r),a=r.objectStore(U),o=await V(a.getAll()).catch(async e=>{throw await i,e}),s=o.reduce((e,t)=>e+(N(t)&&typeof t.bytes==`number`&&Number.isSafeInteger(t.bytes)&&t.bytes>=0?t.bytes:Xa),0);if(o.length>=Za||s+n>Xa)return await i,{status:`failed`,reason:`capacity`};let c=JSON.stringify([e.gatewayOwner,e.recoveryScope,e.queueId,In()]);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 Va(e)}}async function Ua(e,t){if(t.recoveryScope!==e.recoveryScope)return{status:`failed`,reason:`missing`};try{let n=(await Pa()).transaction(U),r=H(n),[i]=await Promise.all([V(n.objectStore(U).get(t.key)),r]);if(!N(i)||!N(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(!N(e)||!(e.blob instanceof Blob)||typeof e.mimeType!=`string`||e.origin!==void 0&&e.origin!==`paste`&&e.origin!==`file`||e.fileName!==void 0&&typeof e.fileName!=`string`||e.sizeBytes!==void 0&&e.sizeBytes!==e.blob.size)return{status:`failed`,reason:`missing`};let t=ma(e.selectionAnnotation);a.push({blob:e.blob,mimeType:e.mimeType,...e.origin?{origin:e.origin}:{},...t?{selectionAnnotation:t}:{},...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 Va(e)}}async function Wa(e){try{let t=await Ga(),n=e.filter(e=>e.tabId===t);if(!n.length)return;let r=(await Pa()).transaction(U,`readwrite`),i=r.objectStore(U);for(let e of n)i.delete(e.key);await H(r)}catch{}}function Ga(){return $a??=(async()=>{let e=ge();if(!e)throw Error(`Outbox ownership unavailable`);let t=globalThis.navigator?.locks;if(!t){let t=In();return e.setItem(Qa,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(Qa),i=r&&await n(r)?r:In();if(i!==r&&!await n(i))throw Error(`Outbox ownership unavailable`);return e.setItem(Qa,i),i})().catch(e=>{throw $a=null,e})}function Ka(e){let t=ft(e);return t?JSON.stringify([e.settings?.gatewayUrl?.trim()||`default`,t]):void 0}function qa(e,t){return(!t.storageScope||t.storageScope===Ka(e))&&(!t.attachmentPayload||t.attachmentPayload.recoveryScope===ft(e))}function Ja(e,t){return!!(t.storageScope&&qa(e,t))}var U,Ya,Xa,Za,Qa,$a;function eo(){return(eo=e((()=>{pt(),Sn(),Ba(),ha(),U=`outboxPayloads`,Ya=26214400,Xa=262144e3,Za=1e3,Qa=`openclaw.control.outboxTab.v1`,$a=null})))()}function to(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(!N(e)||e.version!==4||e.gatewayOwner!==t.gatewayOwner||!N(e.sessions)||!N(e.recovery))throw Error(`Unreadable outbox retention source`);return[...Object.values(e.sessions),...Object.values(e.recovery).map(e=>{if(!N(e))throw Error(`Unreadable recovery source`);return e.session})].flatMap(e=>{if(!N(e)||e.queue!==void 0&&!Array.isArray(e.queue))throw Error(`Unreadable outbox row`);return(e.queue??[]).flatMap(e=>{if(!N(e))throw Error(`Unreadable outbox item`);let t=e.attachmentPayload;if(t===void 0)return[];if(!N(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));for(let n=0;n<e.length;n+=1){let r=e.key(n);if(r&&r!==t.key&&(r===t.unscopedKey||r.startsWith(t.unscopedKey+`:account:`))){let t=e.getItem(r);if(t)for(let e of i(JSON.parse(t)))a.add(e.key)}}let o=i(JSON.parse(n)).filter(e=>!a.has(e.key));o.length&&Wa(o)}catch{}}function no(){return(no=e((()=>{eo()})))()}function W(e){return!!(e.draft||e.goalMode||e.replyTarget)}function ro(e,t){W(e)!==W(t)&&co()}function io(e){return!e.draft&&!e.draftMentions&&!e.goalMode&&!e.replyTarget?!1:(delete e.draft,delete e.draftMentions,delete e.goalMode,delete e.replyTarget,!0)}function ao(e){let t=!1,n=[...Object.entries(e.sessions),...Object.values(e.recovery).map(e=>[e.sourceScopeKey,e.session])];for(let[e,r]of n)On(G(e)?.sessionKey)&&(t=io(r)||t);return t}function oo(e){for(let[t,{session:n}]of Object.entries(e.recovery))!W(n)&&!n.queue?.length&&n.draftRevision!==void 0&&delete e.recovery[t]}function so(e){return Eo.add(e),!Do&&typeof window<`u`&&(Do=!0,window.addEventListener(`storage`,lo)),()=>{Eo.delete(e),Do&&Eo.size===0&&typeof window<`u`&&(Do=!1,window.removeEventListener(`storage`,lo))}}function co(){un(Eo,void 0,e=>console.error(`[openclaw] stored chat outbox listener failed`,e))}function lo(e){(e.key===null&&e.storageArea||e.key?.startsWith(To)||e.key?.startsWith(So)||e.key?.startsWith(Co)||e.key?.startsWith(wo))&&(e.storageArea&&Ao.get(e.storageArea)?.clear(),co())}function uo(e,t){let n=e?.trim()||`default`,r=encodeURIComponent(n);return{key:`${To}${r}${t?`:account:${encodeURIComponent(t)}`:``}`,unscopedKey:`${To}${r}`,recoveryScope:t,legacyKey:`${So}${r.slice(0,240)}`,previousKey:`${Co}${r}`,blobKey:`${wo}${r}`,gatewayOwner:n,legacyOwnerIsUnambiguous:r.length<240}}function fo(e){let t=ft(e);return{...uo(e.settings?.gatewayUrl,t),unavailable:!(!e.client||t)}}function G(e){let t=e.lastIndexOf(`\0agent:`);if(t<1)return null;let n=e.slice(0,t),r=e.slice(t+7),i=Se(n)?.agentId;if(i&&Vn(r)!==Vn(i))return null;let a=i??(n===`global`&&r!==`@unresolved`?r:void 0);return{sessionKey:n,...a?{agentId:Vn(a)}:{}}}function po(e,t){let n=!1;for(let[r,i]of Object.entries(e.sessions)){if(!i.awaitingDefaults||!p(t))continue;let a=G(r);if(!a)continue;let o=y(t,a.sessionKey,a.agentId),s=C(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||W(l)&&!i)go(e,`pending:${r}`,4,r,l);else{let t=i?l:u;e.sessions[s]={...t,queue:[...u.queue??[],...(l.queue??[]).map(e=>xo(e,o))],updatedAt:Math.max(l.updatedAt,u.updatedAt)}}}else e.sessions[s]={...l,...l.queue?{queue:l.queue.map(e=>xo(e,o))}:{}};s!==r&&delete e.sessions[r],n=!0}return n}function mo(e,t,n){return{owner:ft(e),gatewayOwner:uo(e.settings?.gatewayUrl).gatewayOwner,scope:y(e,t,n),awaitingDefaults:!p(e)}}function ho(e,t,n=``){return JSON.stringify([e.settings?.gatewayUrl,e.client?.recoveryScope,C(t)])+n}function go(e,t,n,r,i){let{queue:a,...o}=i,s=new Map;W(o)&&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 _o(e,t,n,r,i,a){let o=i?C(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}))}:{}}:go(e,`${t}:${a}:${n}`,t,n,r)}function vo(e,t){if(t.unavailable)throw Error(`Offline account recovery is unavailable`);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=ya(i);if(!a)throw Error(`Invalid chat outbox record`);r.sessions[n]=a,Ca(a.draftRevision),Ta(e,t.key,n,a.draftRevision)}}if(t.recoveryScope)return r;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){s===``&&i.push({key:a,raw:s});continue}let c=Yn(Gn(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},f=!1;for(let[e,t]of Object.entries(l.sessions)){let i=ya(t),a=N(t)&&Array.isArray(t.removedQueueItemIds)?t.removedQueueItemIds:[],s=N(t)&&Array.isArray(t.queue)?t.queue.filter(e=>!N(e)||!a.includes(e.id)):[];if(!i||s.length!==(i.queue?.length??0))throw Error(`Invalid legacy chat outbox record`);let u=G(e);N(t)&&On(u?.sessionKey)&&(f=io(t)||f,io(i),ya(t)||delete l.sessions[e]);let d=u&&(Se(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=Se(e.sessionKey);if(!n||e.agentId&&e.agentId!==n.agentId)return!0;let i=C({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)_o(r,o,`${e}:${n}`,{queue:a,updatedAt:i.updatedAt},G(n),c)}(W(i)||i.draftRevision!==void 0||i.queue?.length)&&_o(r,o,e,i,!n&&d?u:null,c)}if(oo(r),Object.keys(r.recovery).length>Oo){if(r.sessions=u,r.recovery=d,r.recoveryBlocked=!0,f&&e.getItem(a)===s)try{e.setItem(a,JSON.stringify(l))}catch{}continue}r.legacyReceipts={...r.legacyReceipts,[o]:c},i.push({key:a,raw:s})}let a=ao(r);if(i.length||a){i.length&&ko.set(r,i);try{bo(e,t,r)}catch{}}return r}function yo(e,t){if(t.unavailable)throw Error(`Offline account recovery is unavailable`);let n=Ao.get(e),r=n?.get(t.key);if(r)return r;let i=vo(e,t),a=n??new Map;return a.set(t.key,i),Ao.set(e,a),i}function bo(e,t,n,r={}){if(t.unavailable)throw Error(`Offline account recovery is unavailable`);ao(n),oo(n);let i=e.getItem(t.key);if(Ao.get(e)?.delete(t.key),Object.keys(n.recovery).length>Oo)throw Error(`Chat outbox recovery limit reached; legacy source retained`);let a=Object.entries(n.sessions),o=a.filter(([,e])=>e.queue?.length);if(o.length>20)throw Error(`Chat outbox session limit reached`);let s=a.filter(([,e])=>!e.queue?.length),c=`global\u0000agent:${ae}`,l=(e,t)=>Number(t[1].awaitingDefaults===!0&&!Se(t[0]))-Number(e[1].awaitingDefaults===!0&&!Se(e[0]))||t[1].updatedAt-e[1].updatedAt||(t[1].draftRevision??0)-(e[1].draftRevision??0)||e[0].localeCompare(t[0]),u=s.find(([e])=>e===c),d=[...u?[u]:[],...s.filter(([e,t])=>e!==c&&!W(t)&&t.draftRevision!==void 0).toSorted(l)].slice(0,20),f=[...[...o.toSorted(l),...s.filter(([e,t])=>e!==c&&W(t)).toSorted(l)].slice(0,20),...d];if(r.requiredSessionKey!==void 0){let e=new Set(f.map(([e])=>e));if(!e.has(r.requiredSessionKey)||a.some(([t,n])=>(n.queue?.length||W(n))&&!e.has(t)))throw Error(`Required chat outbox destination exceeds retention; source retained`)}if(f.length===0&&Object.keys(n.recovery).length===0&&!ko.has(n)&&!n.legacyReceipts){if(r.beforeCommit?.(),e.removeItem(t.key),e.getItem(t.key)!==null)throw Error(`Chat outbox removal verification failed`);to(e,t,i,null);return}if(ko.has(n)&&f.length<a.length)throw Error(`Chat outbox migration exceeds retention; source retained`);let p={version:4,gatewayOwner:t.gatewayOwner,sessions:Object.fromEntries(f),recovery:n.recovery,...n.legacyReceipts?{legacyReceipts:n.legacyReceipts}:{}},m=JSON.stringify(p);if(r.beforeCommit?.(),e.setItem(t.key,m),e.getItem(t.key)!==m)throw Error(`Chat outbox write verification failed`);for(let t of ko.get(n)??[])if(e.getItem(t.key)===t.raw){try{e.removeItem(t.key)}catch{}try{e.getItem(t.key)===t.raw&&e.setItem(t.key,``)}catch{}}ko.delete(n),to(e,t,i,p)}function xo(e,t){let{agentId:n,...r}=e,i=t.agentId??Se(t.sessionKey)?.agentId;return{...r,sessionKey:t.sessionKey,...i?{agentId:i}:{}}}var So,Co,wo,To,Eo,Do,Oo,ko,Ao;function jo(){return(jo=e((()=>{Kn(),qn(),Fn(),pt(),ue(),Sa(),Na(),no(),he(),So=`openclaw.control.chatComposer.v1:`,Co=`openclaw.control.chatComposer.v2:`,wo=`openclaw.control.chatComposer.v3:`,To=`openclaw.control.chatComposer.v4:`,Eo=new Set,Do=!1,Oo=80,ko=new WeakMap,Ao=new WeakMap})))()}function Mo(e){let t=Po.exec(e);return t?.groups?(t.groups.label??``)+t.groups.body:e}function No(e){let t=P(e);if(!t||t.role!==`user`&&t.role!==`assistant`)return e;let n=P(t.__openclaw)?.idempotencyKey??t.idempotencyKey;if(typeof n!=`string`||!/^[^:\s]+-catalog:/u.test(n))return e;let r=t.content;return{...t,...typeof t.text==`string`?{text:Mo(t.text)}:{},...typeof r==`string`?{content:Mo(r)}:Array.isArray(r)?{content:r.map(e=>{let n=P(e);return n&&typeof n.text==`string`&&(n.type===`text`||n.type===`input_text`||t.role===`assistant`&&n.type===`output_text`)?Object.assign({},n,{text:Mo(n.text)}):e})}:{}}}var Po;function Fo(){return(Fo=e((()=>{Po=/^(?<label>(?:Thinking|Tool call|Tool result|Other)\r?\n\r?\n)?<<<EXTERNAL_UNTRUSTED_CONTENT id="(?<id>[a-f0-9]{16})">>>\r?\nSource: External\r?\n---\r?\n(?<body>[\s\S]*?)\r?\n<<<END_EXTERNAL_UNTRUSTED_CONTENT id="\k<id>">>>$/u})))()}function Io(e,t){return e===`text`||t===`user`&&e===`input_text`||t===`assistant`&&(e===`input_text`||e===`output_text`)}function Lo(e,t){let n=A(t)===`user`,r=nn(e);return t===`assistant`?hr(r):n?Xt(r):xr(r)}function Ro(e){if(e==null)return null;let t=ze(No(e)),n=t,r=typeof n.role==`string`?n.role:``,i=r===`assistant`?_r(t):Wo(t);return i?Lo(i,r):null}function zo(e,t,n){if(!e||typeof e!=`object`)return n(e);if(t.has(e))return t.get(e)??null;let r=n(e);return t.set(e,r),r}function Bo(e){return zo(e,Jo,Ro)}function Vo(e,t){let n=Array.isArray(e)?e.flatMap(e=>{let n=P(e),r=n?t(n):void 0;return r===void 0?[]:[r]}):[];return n.length>0?n.join(`
`):null}function Ho(e){return Vo(e?.content,e=>e.type===`thinking`&&typeof e.thinking==`string`&&e.thinking.trim()||void 0)}function Uo(e){return zo(e,Yo,Ho)}function Wo(e){if(e==null)return null;let t=e,n=A(t.role),r=t.content;return typeof r==`string`?r:Vo(r,e=>Io(e.type,n)&&typeof e.text==`string`?e.text:void 0)??(typeof t.text==`string`?t.text:null)}function Go(e){return!e||typeof e!=`object`?[]:(Ae(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.origin?{origin:e.origin}:{},...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 Ko(e){if(typeof e==`string`)return!0;if(!Array.isArray(e))return!1;for(let t of e){if(!t||typeof t!=`object`)return!1;let e=t;if(e.type!==`text`||typeof e.text!=`string`)return!1}return!0}function qo(e){if(!e||typeof e!=`object`)return!1;let t=e;return A(t.role)!==`user`||Go(t).length>0||!Ko(t.content??t.text)?!1:(Ro(e)?.trim()??``)===``}var Jo,Yo;function Xo(){return(Xo=e((()=>{Rt(),zt(),Be(),De(),br(),mr(),nr(),Fo(),Jo=new WeakMap,Yo=new WeakMap})))()}function Zo(e){return e===`image`||e===`audio`||e===`video`||e===`document`}function Qo(e){let t=P(e);if(!t||t.type!==`attachment`&&t.type!==`attachment_error`)return;let n=P(t.attachment);if(!n||!Zo(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`&&n.code!==`invalid-reference`?[]:[{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.origin===`paste`||n.origin===`file`?{origin:n.origin}:{},...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=j(n[e]);t!==void 0&&(e===`width`||e===`height`?t>0:t>=0)&&(i[e]=t)}return[{type:`attachment`,attachment:i}]}function $o(){return($o=e((()=>{I()})))()}function es(e,t){return typeof e==`string`?e.startsWith(`data:`)?e:`data:${typeof t==`string`?t:`image/png`};base64,${e}`:void 0}function ts(e){let t=P(e.source);if(e.type===`image`){let n=t?.type===`base64`&&typeof t.data==`string`,r={url:O(e.url)??O(t?.url),dataUrl:es(n?t.data:e.data,n?t.media_type:e.mimeType),preferData:!0,mimeType:k(e,`mimeType`)??k(t,`media_type`)};for(let t of[`artifactId`,`fileName`,`openUrl`,`alt`]){let n=k(e,t);n!==void 0&&(r[t]=n)}for(let t of[`sizeBytes`,`width`,`height`]){let n=j(e[t]);n!==void 0&&(r[t]=n)}return{type:`image`,sources:[r],inlineSlot:!0}}if(e.type===`image_url`)return{type:`image`,sources:[{url:O(P(e.image_url)?.url)}]};if(e.type===`input_image`)return{type:`image`,sources:[{url:O(e.image_url)??O(P(e.image_url)?.url)},{url:O(t?.url),dataUrl:es(t?.data,t?.media_type),mimeType:k(t,`media_type`)}]};if(e.type===`openclaw_pairing_qr`)return{type:`image`,sources:[{url:O(e.image_url),alt:k(e,`alt`)}],expiresAtMs:j(e.expiresAtMs)}}function ns(){return(ns=e((()=>{I()})))()}function rs(e,t){return!!(e.viewId&&e.viewId===t.viewId||e.url&&e.url===t.url)}function is(e){let t=P(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:k(t,`replyToId`)}}function as(e){let t=P(e);if(!t)return;let n=O(t.sessionKey),r=O(t.agentId),i=O(t.label);return n||r?{...`sessionKey`in t?{sessionKey:n}:{},...`agentId`in t?{agentId:r}:{},...i?{label:i}:{}}:void 0}function os(e){if(e.type!==`image`||e.omitted!==!0||O(e.artifactId)!==void 0||O(e.url)!==void 0)return null;let t=Nn(e.bytes);return{type:`omitted_media`,media:{kind:`image`,...t===void 0?{}:{sizeBytes:t}}}}function ss(e){let t=e.toLowerCase();return[`user`,`assistant`,`system`].includes(t)?t:[`toolresult`,`tool_result`,`tool`,`function`].includes(t)?`tool`:e}function cs(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 ls(e){let t=P(e),n=t?.content;return Array.isArray(n)&&n.some(e=>{let t=P(e)?.type;return Ne(t)||Xe(t)})||cs(t)?`toolResult`:k(t,`role`)??`unknown`}function us(e){let t=et(e?.senderIdentity);return Dr({identity:t,id:e?.senderId,name:e?.senderName,username:e?.senderUsername,profileAvatarUrl:t?.type===`profile`?e?.senderProfileAvatarUrl:void 0})}function ds(e,t){let n=P(e),r=k(n,`senderLabel`)?.trim()??``;return r?r.replace(Cs,``).trim():Er(t===void 0?us(P(n?.__openclaw)):t)}function fs(e){return Ne(P(e)?.role)}function ps(e){let t=P(e);return(typeof t?.role==`string`?ss(t.role):`unknown`)===`tool`||cs(t)}function ms(e){let t=P(e),n=t?.type===`canvas`?P(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=k(n,e);t!==void 0&&(r[e]=t)}let i=j(n.preferredHeight);i!==void 0&&(r.preferredHeight=i);let a=n.sandbox;(a===`strict`||a===`scripts`)&&(r.sandbox=a);let o=n.boardWidgetName;Re(o)&&(r.boardWidgetName=o);let s=P(n.mcpApp),c=k(s,`viewId`);if(c?.trim()){r.mcpApp={viewId:c};for(let e of[`serverName`,`toolName`,`uiResourceUri`,`toolCallId`,`originSessionKey`]){let t=k(s,e);t!==void 0&&(r.mcpApp[e]=t)}}return r}function hs(e){let t=ar(e);return t?ws[t]:void 0}function gs(e){let t=hs(e),n=Kt(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 _s(e){let t=e.type,n=k(e,`url`)?.trim();if(t!==`audio`&&t!==`video`)return null;let r=n,i=n?k(e,`mimeType`):void 0;if(!r){let n=t===`audio`?P(e.source):void 0;if(!n)return null;let a=k(n,`media_type`)?.trim();i=a?.toLowerCase().startsWith(`audio/`)?a:`audio/mpeg`;let o=n.type,s=k(n,o===`base64`?`data`:`url`)?.trim();if(!s||o!==`base64`&&o!==`url`)return null;r=o===`base64`&&!s.startsWith(`data:`)?`data:${i};base64,${s}`:s}let a={url:r,kind:t,label:(n?k(e,`fileName`)?.trim():void 0)||k(e,`label`)?.trim()||(t===`audio`?`Audio`:`Video`),...i===void 0?{}:{mimeType:i}},o=n?k(e,`artifactId`):void 0;if(o!==void 0&&(a.artifactId=o),t===`audio`&&e.isVoiceNote===!0&&(a.isVoiceNote=!0),n){let n=e.playback;(n===`native`||n===`transcode`)&&(a.playback=n);for(let n of[`sizeBytes`,`durationMs`,`width`,`height`]){let r=j(e[n]);r!==void 0&&(n===`width`||n===`height`?t===`video`&&r>0:r>=0)&&(a[n]=r)}}return{type:`attachment`,attachment:a}}function vs(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 ys(e,t){return e.map(e=>e.type!==`text`||typeof e.text!=`string`?e:{...e,text:t.toLowerCase()===`user`?Xt(e.text):Vt(e.text)}).filter(e=>e.type!==`text`||!!e.text?.trim())}function bs(e){let t=e?.replyToId?.trim();return t?{kind:`id`,id:t}:e?.replyToCurrent===!0?{kind:`current`}:null}function xs(e,t,n){let r=Oe(e),i=Ze(r.text,{extractAudioDirectives:!1}),a=[],o=t?.audioAsVoice===!0,s=bs(t),c=i.segments??[{type:`text`,text:i.text}];for(let e of c){if(e.type===`media`){let t=gs(e.url);a.push({type:`attachment`,attachment:{url:e.url,...t,...t.kind===`audio`&&o?{isVoiceNote:!0}:{}}});continue}e.text&&a.push({type:`text`,text:e.text})}for(let e of r.previews)e.surface!==`assistant_message`||n.some(t=>rs(e,t))||a.push({type:`canvas`,preview:{...e,surface:`assistant_message`},rawText:null});let l=vs(a);return l.length>0?l:s===null&&!o&&i.text.trim().length>0?[{type:`text`,text:i.text}]:[]}function Ss(e){let t=P(e),n=t&&Ts.get(t);if(n)return n;let r=P(ze(No(e)))??{},i=ls(r),a=typeof r.content==`string`||Array.isArray(r.content)?r.content:typeof r.text==`string`?r.text:void 0,o=Array.isArray(a)?a:null,s=i===`assistant`,c=s?is(r.openclawDelivery):void 0,l=(o??[]).flatMap(e=>{let t=ms(e);return t?[t]:[]}),u=[],d=!1,f=bs(c),p=(e,t=!1)=>s?(d=c?.audioAsVoice===!0,xs(e,c,l)):[{type:`text`,text:e,...t?{name:void 0,args:void 0}:{}}];typeof a==`string`?u=p(a):o&&(u=o.flatMap(e=>{let t=P(e);if(!t)return[];let n=os(t);if(n)return[n];let r=ts(t);if(r)return[r];let a=t.type;if(a===`clawhub`){let e=s?gr(t):null;return e?[e]:[]}let o=k(t,`text`);if(a===`thinking`){let e=k(t,`thinking`);return e===void 0?[]:[{type:a,thinking:e}]}if(s){let e=_s(t);if(e)return[e]}else if(a===`audio`)return[];if(a===`attachment`||a===`attachment_error`)return Qo(t)??[];if(a===`canvas`){let e=ms(t);return e?[{type:`canvas`,preview:e,rawText:k(t,`rawText`)??null}]:[]}return o!==void 0&&(a===`text`||i===`user`&&a===`input_text`||i===`assistant`&&(a===`input_text`||a===`output_text`))?p(o,!0):[{type:a||`text`,text:o,name:t.name,args:Ee(t)}]}));let m=j(r.timestamp)??Date.now(),h=k(r,`id`),g=P(r.__openclaw),_=k(g,`replyToId`)?.trim()??``;_&&(f={kind:`id`,id:_});let v=P(g?.replyToPreview),y=k(v,`text`)?.trim()??``,b=k(v,`senderLabel`)?.trim()??``,x=us(g),ee=ds(r,x),te=x??(ee?{name:ee}:null),ne=i===`user`?ot(r):[];u=ys(u,i);let re=as(r.senderSession),ie={role:i,content:u,timestamp:m,id:h,senderLabel:ee,...re?{senderSession:re}:{},...te?{sender:te}:{},...ne.length?{sourceClients:ne}:{},...d?{audioAsVoice:!0}:{},...y||b?{replyPreview:{text:y,...b?{senderLabel:b}:{}}}:{},...f?{replyTarget:f}:{}};return t&&j(r.timestamp)!==void 0&&Ts.set(t,ie),ie}var Cs,ws,Ts;function Es(){return(Es=e((()=>{$t(),I(),en(),zt(),Ie(),je(),We(),we(),Be(),Pe(),pr(),or(),Fo(),$o(),ns(),jr(),Cs=/\s+\(([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\)$/iu,ws={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`},Ts=new WeakMap})))()}function Ds(e){return e.orderKey??e.createdAt}function Os(e,t){return Ds(e)-Ds(t)}function ks(e){return!e.pendingRunId&&!e.intent&&(e.sendAttempts??0)===0&&(e.sendState===void 0||e.sendState===`waiting-idle`||e.sendState===`waiting-reconnect`||e.sendState===`failed`)}function As(e,t=ks){let n=[],r=[];for(let i of e.toSorted(Os)){if(t(i)){r.push(i);continue}r.length>0&&(n.push(r),r=[])}return r.length>0&&n.push(r),n}function js(e,t,n){let r=e.toSorted(Os),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(Ds);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)=>Ds(e)===o[t]?[]:[{...e,orderKey:o[t]}])}function Ms(){return(Ms=e((()=>{})))()}function Ns(e){let t=ge();return t&&!Rs.has(t)&&Rs.set(t,++zs),`${t?Rs.get(t):0}\u0000${e.settings?.gatewayUrl?.trim()||`default`}\u0000${ft(e)??``}`}function Ps(e){return!e.pendingRunId&&(e.sendState===`failed`||e.sendState===`unconfirmed`||e.sendState===`held`)}function Fs(e){return Bs.add(e),()=>{Bs.delete(e)}}function Is(e){un(Bs,e,e=>console.error(`[openclaw] chat outbox attention listener failed`,e))}var Ls,Rs,zs,Bs;function Vs(){return(Vs=e((()=>{pt(),Ls=new Map,Rs=new WeakMap,zs=0,Bs=new Set})))()}var Hs=t({createStoredChatOutboxReader:()=>Us});function Us(){let e=null,t,n=new Set,r,i,a=0,o=!0,s=!1,c,l,u,d,f=()=>{e=null},p=()=>{f(),un(n,void 0,e=>console.error(`[openclaw] stored outbox reader listener failed`,e))},m=()=>{a+=1,o=!0},h=e=>[e.settings?.gatewayUrl,e.assistantAgentId,e.agentsList,e.hello,e.client,e.client?.recoveryScope,e.client?.recoveryScopeReady,r?.recoveryScope,e.connected,i],g=n=>{let r=e,a=t?h(t):void 0;return n?.(),r&&t&&a?.every((e,t)=>Object.is(e,r.inputs[t]))&&qs(t,i).signature===r.signature?(r.inputs=h(t),r):(p(),null)},_=e=>g(()=>{i=e,o=!1}),v=async()=>{if(s||!o||!r||!n.size)return;s=!0;let e=r,t=a;try{if(c??=await Rn(()=>Promise.resolve().then(()=>(Gm(),vm)),void 0,import.meta.url),!n.size||(l??=c.subscribeDurableComposerDraftChanges(()=>{m(),v()}),t!==a))return;let r=await c.listDurableChatDraftPresence(e);if(t!==a)return;_(r.status===`ready`?r.presence:void 0)}catch{t===a&&_(void 0)}finally{s=!1,v()}};return{invalidate:f,subscribe(e){return n.add(e),u??=so(p),d??=Fs(e=>{if(!t||e!==Ns(t))return;let n=Ls.get(e),r=g();r&&(r.attentionOwner=n,r.attentionRevision=n?.attentionRevision)}),v(),()=>{n.delete(e),n.size||(u?.(),u=void 0,d?.(),d=void 0,l?.(),l=void 0,m(),i=void 0,f())}},read(n){t=n;let a=fo(n).gatewayOwner,o=ft(n);(r?.gatewayOwner!==a||r?.recoveryScope!==o)&&(r=o?{gatewayOwner:a,recoveryScope:o}:void 0,i=void 0,m()),v();let s=h(n),c=Ls.get(Ns(n)),l=e;return l&&l.attentionOwner===c&&l.attentionRevision===c?.attentionRevision&&s.every((e,t)=>Object.is(e,l.inputs[t]))?l.summary:(e={inputs:s,attentionOwner:c,attentionRevision:c?.attentionRevision,...qs(n,i)},e.summary)}}}function Ws(e){let t=ge();if(!t)return[];try{let n=fo(e),r=yo(t,n);if(po(r,e))try{bo(t,n,r)}catch{}return Object.entries(r.sessions).flatMap(([t,n])=>{let r=G(t);return r?[{scope:r,session:{...n,queue:n.queue?.filter(t=>Ja(e,t))}}]:[]})}catch{return[]}}function Gs(e){return Ws(e).flatMap(({scope:e,session:t})=>t.queue?.length?[{...e,queue:t.queue.toSorted(Os)}]:[]).toSorted((e,t)=>(e.queue[0]?.createdAt??2**53-1)-(t.queue[0]?.createdAt??2**53-1)||e.sessionKey.localeCompare(t.sessionKey))}function Ks(e,t){return Gs(e).find(e=>e.sessionKey===t.sessionKey&&e.agentId===t.agentId)}function qs(e,t){let n=new Map,r=new Map,i=new Map,a=Ls.get(Ns(e));for(let{scope:t,session:o}of Ws(e)){let e=C(t);i.set(e,t),On(t.sessionKey)||r.set(e,{revision:o.draftRevision??0,active:W(o)});let s=n.get(e)??{all:new Set,attention:new Set};for(let e of o.queue??[])e.pendingRunId||(s.all.add(e.id),(a?a.needsReview(t,e):Ps(e))&&s.attention.add(e.id));s.all.size&&n.set(e,s)}for(let[e,n]of t??[]){let t=G(e);t&&!On(t.sessionKey)&&n.revision>=(r.get(e)?.revision??0)&&(r.set(e,n),i.set(e,t))}let o=e=>n.get(e)?.attention.size??0,s=[...n.values()].reduce((e,t)=>e+t.all.size,0),c=t=>C(y(e,t));return{signature:JSON.stringify([s,[...r].flatMap(([e,t])=>t.active?[e]:[]).toSorted(),[...n].filter(([,e])=>e.attention.size).toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,[...t.attention].toSorted()])]),summary:{total:s,sessions:[...i.entries()].filter(([e])=>r.get(e)?.active||o(e)>0).toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>({sessionKey:t.sessionKey,agentId:t.agentId,hasComposerDraft:!!r.get(e)?.active,outboxAttentionCount:o(e)})),attentionCountForSession:e=>o(c(e)),hasSessionDraft:e=>!!r.get(c(e))?.active}}}function Js(){return(Js=e((()=>{Fn(),pt(),ue(),Vs(),eo(),jo(),Ln()})))()}function Ys(e,{readError:t=`Blob read failed`,invalidResultError:n=`Blob read returned no data`}={}){let r=e=>Error(typeof e==`function`?e():e);return new Promise((i,a)=>{let o=new FileReader;o.addEventListener(`error`,()=>a(o.error??r(t)),{once:!0}),o.addEventListener(`load`,()=>typeof o.result==`string`?i(o.result):a(r(n)),{once:!0}),o.readAsDataURL(e)})}function Xs(){return(Xs=e((()=>{})))()}function Zs(e){let t=M(e),n=t?.added,r=t?.removed;return typeof n==`number`&&Number.isInteger(n)&&n>=0&&typeof r==`number`&&Number.isInteger(r)&&r>=0?{added:n,removed:r}:void 0}function Qs(e){let t=0,n=0;for(let r of e)r.kind===`add`?t+=1:r.kind===`del`&&(n+=1);return{added:t,removed:n}}function $s(e){if(!e.trim())return null;let t=[],n=!1;for(let r of e.split(`
`)){if(!r)continue;if(/^\s*\.\.\.\(truncated\)\.\.\.\s*$/.test(r)){n=!0,t.push({kind:`skip`,text:``});continue}if(/^\s*\.\.\.\s*$/.test(r)){t.push({kind:`skip`,text:``});continue}let e=r.match(/^([+\- ])\s*(\d+) ?(.*)$/s);if(!e)return null;let[,i,a,o]=e;if(t.push({kind:i===`+`?`add`:i===`-`?`del`:`ctx`,lineNo:Number.parseInt(a,10),text:o??``}),t.length>400){t.push({kind:`skip`,text:``}),n=!0;break}}return t.some(e=>e.kind===`add`||e.kind===`del`)?n?{kind:`truncated`,lines:t}:{kind:`complete`,lines:t,stat:Qs(t)}:null}function K(e){let t=e.replace(/\r\n/g,`
`).replace(/\r/g,`
`);if(t===``)return[];let n=t.split(`
`);return n.length>1&&n[n.length-1]===``&&n.pop(),n}function ec(e,t){if(e.length<=400&&!t)return e;if(!e.some(e=>e.kind===`add`||e.kind===`del`))return t?[{kind:`skip`,text:``}]:[...e.slice(0,400),{kind:`skip`,text:``}];let n=new Uint8Array(e.length);for(let[t,r]of e.entries()){if(r.kind!==`add`&&r.kind!==`del`)continue;let i=Math.max(0,t-3),a=Math.min(e.length,t+4);n.fill(1,i,a)}let r=[],i=!1,a=t;for(let[t,o]of e.entries()){if(n[t]===0){i=!0,a=!0;continue}if(i&&r.at(-1)?.kind!==`skip`&&r.push({kind:`skip`,text:``}),i=!1,r.length>=400){a=!0;break}r.push(o)}return a&&r.at(-1)?.kind!==`skip`&&r.push({kind:`skip`,text:``}),r}function tc(e,t){let n=K(e),r=K(t),i=n.length>ic||r.length>ic,a=n.length===r.length&&n.every((e,t)=>e===r[t]),o=i&&!a,s=[],c=0;for(;c<Math.min(n.length,r.length,ic)&&n[c]===r[c];)s.push({kind:`ctx`,text:n[c]}),c++;let l=n.slice(c,ic),u=r.slice(c,ic),d=u.length+1,f=new Uint16Array((l.length+1)*d);for(let e=l.length-1;e>=0;e--)for(let t=u.length-1;t>=0;t--){let n=e*d+t;f[n]=l[e]===u[t]?f[n+d+1]+1:Math.max(f[n+d],f[n+1])}for(let e=0,t=0;e<l.length||t<u.length;){let n=l[e],r=u[t];n!==void 0&&n===r?(s.push({kind:`ctx`,text:n}),e++,t++):n!==void 0&&(r===void 0||f[(e+1)*d+t]>=f[e*d+t+1])?(s.push({kind:`del`,text:n}),e++):r!==void 0&&(s.push({kind:`add`,text:r}),t++)}let p=ec(s,o);return o?{kind:`truncated`,lines:p}:{kind:`complete`,lines:p,stat:Qs(s)}}function nc(e){let t=K(e),n=[];for(let[e,r]of t.slice(0,ac).entries())n.push({kind:`add`,lineNo:e+1,text:r});return t.length>ac&&n.push({kind:`skip`,text:``}),n}function rc(e,t){let n=[],r=t?.truncated===!0||e.some(e=>e.kind===`truncated`),i=r;for(let t of e){if(t.lines.length===0)continue;if(n.length>0){if(n.length>=400){i=!0;break}n.push({kind:`skip`,text:``})}let e=400-n.length;if(t.lines.length>e){n.push(...t.lines.slice(0,e)),i=!0;break}n.push(...t.lines)}return i&&n.at(-1)?.kind!==`skip`&&n.push({kind:`skip`,text:``}),r?{kind:`truncated`,lines:n}:{kind:`complete`,lines:n,stat:e.reduce((e,t)=>({added:e.added+(t.kind===`complete`?t.stat.added:0),removed:e.removed+(t.kind===`complete`?t.stat.removed:0)}),{added:0,removed:0})}}var ic,ac;function oc(){return(oc=e((()=>{ic=600,ac=80})))()}function sc(e){let t=P(e)?.activity;return Array.isArray(t)?t.filter(e=>$n(It,e)):[]}function cc(e,t={}){let n=wt(e,t),r=Object.entries(n.counts).filter(([,e])=>e>0).map(([e,t])=>T(`chat.toolCards.activity.${e}${t===1?`One`:`Many`}`,{count:String(t)})).join(` · `),i=Object.entries(n.outcomes).filter(([,e])=>e>0).map(([e,t])=>({kind:e,label:T(e===`skipped`?`chat.toolCards.skippedCount`:`chat.toolCards.activity.${e}`,{count:String(t)})}));return{total:n.total,label:r,outcomes:i}}function lc(e,t={}){let n=cc(e,t);return[n.label,...n.outcomes.filter(({kind:e})=>t.includeInlineOutcomes!==!1||e!==`failed`&&e!==`skipped`).map(({label:e})=>e)].filter(Boolean).join(` · `)||T(`chat.toolCards.rawDetails`)}function uc(){return(uc=e((()=>{Xn(),Pt(),At(),h()})))()}function dc(e){return E(e.messageId)??E(F(e.__openclaw)?.id)}function fc(e){let t=F(F(e)?.__openclaw),n=F(t?.toolOutput);return(n?.source===`provider-response`||n?.source===`execution`)&&n.modelInput===`unverified`?{source:n.source,modelInput:n.modelInput,...n.outcome===`unknown`?{outcome:`unknown`}:{},...n.captureTruncated===!0?{captureTruncated:!0}:{}}:void 0}function pc(e){return Array.isArray(e)?e.filter(e=>M(e)!==null):[]}function mc(e){if(typeof e!=`string`)return e;let t=e.trim();return t.startsWith(`{`)||t.startsWith(`[`)?fn(t)??e:e}function hc(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=>{let t=M(e)?.text;return typeof t==`string`?[t]:[]});if(t.length>0)return t.join(`
`)}}function gc(...e){for(let t of e){let e=M(t),n=e?.exitCode??e?.exit_code;if(typeof n==`number`&&Number.isInteger(n))return n}}function _c(e){if(e.activity)return e.activity.status===`skipped`;let t=M(e.details);return(e.live!==!0||e.completed===!0)&&t?.status===`skipped`&&t.deniedReason===`steering`}function vc(e){if(_c(e))return!1;if(e.activity)return e.activity.status===`failed`;let t=e.live!==!0||e.completed===!0;return e.isError??(t&&Me(e.outputText))}function yc(e,t){if(_c(e))return`skipped`;if(e.toolOutput?.outcome===`unknown`)return vc(e)?`failed`:`unknown`;if(e.activity){let{status:n,phase:r}=e.activity;return n===`failed`||n===`blocked`?n:n===`completed`?`succeeded`:t===!0&&e.live===!0&&(n===`running`||r!==`end`&&e.completed!==!0)?`running`:`unknown`}return vc(e)?`failed`:t===!0&&e.live===!0&&e.completed!==!0?`running`:e.completed===!0||e.live!==!0&&e.outputText!==void 0?`succeeded`:`unknown`}function bc(e){let t=Le(e);return t?.surface===`assistant_message`?{...t,surface:`assistant_message`}:void 0}function xc(e,t,n){let r=Te(e),i=r?.surface===`assistant_message`?{...r,surface:`assistant_message`}:bc(t);if(i)return{preview:{...i,surface:`assistant_message`}};let a=F(F(e)?.browserTab),o=er(a);if(n!==`browser`||!a||!o)return{};let s=typeof a.url==`string`?dn(a.url,2048):``;return{browserTab:o,preview:Ft(s)?{kind:`browser-tab`,...o,url:s,...typeof a.title==`string`?{title:dn(a.title,512)}:{}}:void 0}}function Sc(e,t){return ke(e)??O(e.callId)??O(t.toolCallId)??O(t.tool_call_id)??O(t.toolUseId)??O(t.tool_use_id)}function Cc(e,t){return O(e.name)??O(t.toolName)??O(t.tool_name)??`tool`}function wc(e){if(e!=null){if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return typeof e==`bigint`?String(e):Object.prototype.toString.call(e)}}}function Tc(e){let t=kt(e);return t===e?e:{...e,...t,inputText:wc(t.args)}}function Ec(e){let t=e?.trim().replace(/\s+/g,` `);if(t)return t.replace(/^with\s+/i,``).trim()||t}function Dc(e){return Ec(e)?.toLowerCase().replace(/[\s._-]+/g,``)}function Oc(e,t){let n=Ec(e);if(!n)return;let r=Dc(n),i=Dc(t);return r&&i&&r===i?void 0:n}function kc(e){let t=Ec(e);if(t)return dn(t,120)}function Ac(e){if(N(e))for(let t of Fc){let n=e[t];if(typeof n!=`string`)continue;let r=n.search(/\S/),i;if(r>=0){let e=Math.max(n.lastIndexOf(`\r`,r),n.lastIndexOf(`
`,r))+1,t=/[\r\n]/g;t.lastIndex=r,i=n.slice(e,t.exec(n)?.index??n.length)}let a=kc(i?be(i):void 0);if(a)return a}}function jc(e){return Xe(e.type)||typeof e.name==`string`&&(e.arguments!=null||e.args!=null||e.input!=null)}function Mc(e){let t=e,n=typeof t.role==`string`?t.role.toLowerCase():``,r=fs(e)||n===`tool`||n===`function`||typeof t.toolName==`string`||typeof t.tool_name==`string`,i=pc(t.content),a=Fe(t),o=t.__openclawToolStreamLive===!0,s=Zs(t.__openclawToolStreamDiffStat),c=[],l=new WeakSet,u=dc(t),d=Ut(t)?.runId??E(t.runId),f=(e,n,r=!1)=>{let i=hc(e),o=e.details??t.details,s=F(e.__openclaw),c=Fe(e)??a,l=gc(e,o,i?Cn(i.trim()):void 0,r?void 0:t);return{outputText:i,resultMessageId:!r&&s&&Object.hasOwn(s,`id`)?E(s.id):u,outputTruncated:(s&&Object.hasOwn(s,`truncated`)?s:F(t.__openclaw))?.truncated===!0,toolOutput:fc(e)??fc(t),...o===void 0?{}:{details:o},...c===void 0?{}:{isError:c},...l===void 0?{}:{exitCode:l},...xc(o,i,n)}};for(let e=0;e<i.length;e++){let n=i[e]??{},a=jc(n);if(!a&&!Ne(n.type))continue;let p=E(n.runId)??d,m=E(n.parentToolCallId),h=Sc(n,t),g=Cc(n,t),_={id:h??`${g}:${e}`,...h?{callId:h}:{},...p?{runId:p}:{},...m?{parentToolCallId:m}:{},name:g,messageId:u},v=n.details??t.details;if(a){let e=mc(n.arguments??n.args??n.input);c.push({..._,args:e,inputText:wc(e),...v===void 0?{}:{details:v},...o?{live:!0,completed:t.__openclawToolStreamResultReceived===!0||t.__openclawToolStreamItemEnded===!0}:{},...s?{liveDiffStat:s}:{}});continue}let y=c.find(e=>e.id===_.id)??c.find(e=>(!h||!e.callId)&&e.name===g&&e.outputText===void 0&&!l.has(e)),b=r?Cc({},t):void 0,x=f(n,b&&b!==`browser`?b:y?.name??b??g);if(y){l.add(y),y.callId??=h,y.runId??=p,y.parentToolCallId??=m,o||(y.completed=!0),Object.assign(y,x,{preview:x.preview,browserTab:x.browserTab});continue}c.push({..._,completed:!0,...x})}if(r&&c.length===0){let r=typeof t.toolName==`string`&&t.toolName||typeof t.tool_name==`string`&&t.tool_name||`tool`,i=Sc({},t);c.push({id:i??`${Cc({},t)}:0`,...i?{callId:i}:{},...d?{runId:d}:{},name:r,completed:fs(e)||n===`tool`||n===`function`,messageId:u,...f(t,r,!0)})}let p=new Map(sc(e).filter(e=>!e.suppressChannelProgress).map(e=>[e.toolCallId??e.itemId,e])),m;for(let[e,t]of c.entries()){let n=t.callId?p.get(t.callId):void 0;n&&(t.activity=n),!(!t.browserTab||t.callId||t.messageId)&&(m??=++Ic,t.previewRevision=`${m}:${e}`)}return c}function Nc(e){if(!e||typeof e!=`object`)return Mc(e);let t=Lc.get(e);if(t)return t;let n=Mc(e);return Lc.set(e,n),n}function Pc(e,t){let n=Rc.get(e),r=n?.get(t);if(r)return r;let i=Mc({...e,content:[t]});return n||(n=new WeakMap,Rc.set(e,n)),n.set(t,i),i}var Fc,Ic,Lc,Rc;function zc(){return(zc=e((()=>{Jt(),Ot(),jn(),qt(),Ie(),we(),tr(),_(),Es(),oc(),uc(),Fc=[`message`,`prompt`,`task`,`query`,`text`,`description`],Ic=0,Lc=new WeakMap,Rc=new WeakMap})))()}function Bc(e){return typeof e.itemId==`string`&&e.itemId.trim().length>0}function Vc(e){return!Bc(e)}function Hc(e,t){return t.trim()&&(e===null||t.startsWith(e))?t:e}function Uc(e,t){return!t||!e.startsWith(t)?e:e.slice(t.length).trimStart()}function Wc(e,t=e=>e){let n=null;for(let r of e)Vc(r)&&(n=Hc(n,t(r.text)));return n}function Gc(){return(Gc=e((()=>{})))()}var Kc,qc;function Jc(){return(Jc=e((()=>{o(),Kc={chat:{providerReview:{pausedTitle:`Chat paused as a precaution`,stoppedTitle:`Chat stopped as a precaution`,pausedBody:`The provider could not confirm the agent was interpreting your instructions correctly. Review its findings before deciding to continue.`,stoppedBody:`The provider stopped this chat without reviewable findings. This conversation remains stopped; no continuation is available.`,stoppedWithFindingsBody:`The provider stopped this conversation. Review its findings before starting further work.`,review:`Review findings`,findings:`Provider findings`,continuationTitle:`Continuation message`,continuationBody:`Acknowledging sends this exact provider-supplied message:`,acknowledge:`Acknowledge findings and continue`,continuing:`Requesting continuation…`,waiting:`Continuation requested. Waiting for the provider to accept it.`,checkStatus:`Check continuation status`,checkingStatus:`Checking continuation status…`,refreshFailed:`Continuation was requested, but its status could not be refreshed. Check again to see whether it was accepted.`,noContinuation:`Continuation is not available for this conversation. It remains stopped.`,continuationFailed:`Continuation was not accepted. This conversation remains paused.`,queueHelp:`Queued messages stay held. Review and retry each message separately after continuation is accepted.`,queueStopped:`Queued messages remain held.`,queueHoldFailed:`Could not save the queued-message review hold. Free browser storage and try again. No continuation was sent.`,queuedInputHeld:`Held when the provider paused this conversation. Review the findings, then retry this message separately if it is still needed.`}}},qc=Object.assign(()=>Object.assign(b.chat,Kc.chat),{catalog:Kc})})))()}function Yc(e,t,n={}){return yt`<span
    class="${t} hover-marquee ${n.loop?`hover-marquee--loop`:``}"
    dir=${n.loop?`auto`:vt}
    ${nl(n,t)}
    ><span class="hover-marquee__text">${e}</span></span
  >`}var Xc,Zc,Qc,$c,el,tl,nl;function rl(){return(rl=e((()=>{St(),Ct(),xt(),Xc=40,Zc=500,Qc=.4,$c=new Set,tl=class extends _t{constructor(...e){super(...e),this.visible=!1,this.readyToScroll=!1,this.options={},this.shift=0,this.schedule=()=>{this.isConnected&&($c.add(this.measure),el===void 0&&(el=requestAnimationFrame(()=>{el=void 0;let e=[...$c];$c.clear(),e.map(e=>e()).forEach(e=>e?.())})))},this.measure=()=>{let e=this.label;if(!this.isConnected||!e?.isConnected||((!this.host||this.options.loop)&&!this.visibilityObserver&&(this.visibilityObserver=new IntersectionObserver(e=>{for(let t of e)this.visible=t.isIntersecting;this.schedule()}),this.visibilityObserver.observe(e)),!this.host&&!this.visible))return;if(!this.host){if(this.text=e.querySelector(`.hover-marquee__text`)??void 0,this.host=e.closest(`.session-row-host, .sidebar-recent-sessions__head, .sidebar-identity-card, .sidebar-agent-card__main, .sidebar-workspace-header__main`)??void 0,!this.host||!this.text)return;for(let e of[`pointerenter`,`pointerleave`,`focusin`,`focusout`])this.host.addEventListener(e,this.schedule);this.motion=matchMedia(`(prefers-reduced-motion: reduce)`),this.motion.addEventListener(`change`,this.schedule),this.observer=new ResizeObserver(this.schedule),this.observer.observe(e),this.observer.observe(this.text),this.contentObserver=new MutationObserver(this.schedule),this.contentObserver.observe(e,{childList:!0,characterData:!0,subtree:!0,attributes:!0,attributeFilter:[`dir`]}),this.contentObserver.observe(this.host,{attributes:!0,attributeFilter:[`aria-expanded`,`dir`]}),this.contentObserver.observe(e.ownerDocument.documentElement,{attributes:!0,attributeFilter:[`dir`]})}!this.options.loop&&this.visibilityObserver&&(this.visibilityObserver.disconnect(),this.visibilityObserver=void 0,this.visible=!0);let t=e.clientWidth;if(t<=0)return()=>this.clearOverflow(e);let n=this.text,r=getComputedStyle(e),i=Number.parseFloat(r.paddingLeft)+Number.parseFloat(r.paddingRight),a=r.whiteSpace===`nowrap`?n.scrollWidth+i-t:0,o=a>+!this.options.loop;if(!o)return()=>this.clearOverflow(e);if(!(this.host.matches(`:hover, :focus-visible`)||this.host.querySelector(`:focus-visible`)||this.options.loop&&this.host.getAttribute(`aria-expanded`)===`true`)||!this.visible||this.motion?.matches)return()=>{e.classList.toggle(`hover-marquee--overflowing`,o),this.stop()};let s=Number.parseFloat(r.getPropertyValue(`--hover-marquee-fade-width`)),c=(a+(this.options.loop?0:s))*(r.direction===`rtl`?1:-1),l=e.classList.contains(`hover-marquee--scrolling`),u;if(c!==this.shift||!l){let e=getComputedStyle(n).transform,t=e===`none`?0:new DOMMatrixReadOnly(e).m41;u=(this.options.loop?Math.abs(c)/Qc:Math.abs(c-t))/(this.options.speed??Xc)*1e3}return()=>{e.classList.toggle(`hover-marquee--overflowing`,o),u!==void 0&&(e.style.setProperty(`--hover-marquee-shift`,`${c}px`),e.style.setProperty(`--hover-marquee-duration`,`${u}ms`),this.shift=c),this.readyToScroll?(this.readyToScroll=!1,e.classList.add(`hover-marquee--scrolling`)):this.timer===void 0&&!l&&(this.timer=window.setTimeout(()=>{this.timer=void 0,this.readyToScroll=!0,this.schedule()},this.options.delay??Zc))}}}render(e,t){return vt}update(e,[t,n]){return this.label=e.element instanceof HTMLElement?e.element:void 0,(!this.host||n!==this.className||t.delay!==this.options.delay||t.speed!==this.options.speed||t.loop!==this.options.loop)&&this.schedule(),this.options={...t},this.className=n,vt}reconnected(){this.schedule()}disconnected(){$c.delete(this.measure),$c.size===0&&el!==void 0&&(cancelAnimationFrame(el),el=void 0),this.stop();for(let e of[`observer`,`contentObserver`,`visibilityObserver`])this[e]?.disconnect(),this[e]=void 0;this.visible=!1,this.motion?.removeEventListener(`change`,this.schedule);for(let e of[`pointerenter`,`pointerleave`,`focusin`,`focusout`])this.host?.removeEventListener(e,this.schedule);this.host=void 0}clearOverflow(e){e.classList.toggle(`hover-marquee--overflowing`,!1),this.stop(),e.style.removeProperty(`--hover-marquee-shift`),e.style.removeProperty(`--hover-marquee-duration`),this.shift=0}stop(){window.clearTimeout(this.timer),this.timer=void 0,this.readyToScroll=!1,this.label?.classList.remove(`hover-marquee--scrolling`)}},nl=bt(tl)})))()}function il(e,t,n){if(e instanceof MouseEvent){e.preventDefault(),e.stopPropagation(),n(t,e.clientX,e.clientY);return}let r=e.key===`ContextMenu`||e.key===`F10`&&e.shiftKey;if(e.altKey||e.ctrlKey||e.metaKey||!r||!t&&!(e.target instanceof HTMLElement))return;e.preventDefault(),e.stopPropagation();let i=t??e.target,a=i.getBoundingClientRect();n(i,a.right,a.bottom+4)}function al(){return(al=e((()=>{yn()})))()}function ol(e,t=300){let n=on(e,{mode:`message`}),r=n.didStrip&&/^[*`~_]+$/.test(n.text)?``:n.text;return{shouldSkip:n.shouldSkip||n.didStrip&&r.length<=t,text:r}}function sl(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=kn(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 cl(e){let t=kn(e);if(!t||A(t.role)!==`assistant`||typeof t.senderLabel==`string`&&t.senderLabel.trim())return!1;let{text:n,hasVisibleNonTextContent:r}=sl(typeof t.content==`string`||Array.isArray(t.content)?t.content:t.text);return!r&&n.trim().length>0&&ol(n).shouldSkip}function ll(){return(ll=e((()=>{tn()})))()}var ul,dl;function fl(){return(fl=e((()=>{o(),ul={sessionsView:{searchPeople:`Search people and agents…`,noPeopleMatch:`No matching people or agents`}},dl=Object.assign(()=>{Object.assign(b.sessionsView,ul.sessionsView)},{catalog:ul})})))()}function pl(e,t,n){let r=t.replaceAll(`\\`,`/`),i=(r.startsWith(`/`)?r:`/${r}`).split(`/`).map((e,t)=>t===1&&/^[a-z]:$/i.test(e)?e:encodeURIComponent(e)).join(`/`);return window.open(`${e}://file${i}${n?`:${n}`:``}`)}var ml,hl;function gl(){return(gl=e((()=>{ml=[`cursor`,`vscode`,`windsurf`,`zed`],hl={cursor:`Cursor`,vscode:`VS Code`,windsurf:`Windsurf`,zed:`Zed`}})))()}var _l,vl;function yl(){return(yl=e((()=>{o(),_l={mcpApp:{title:`MCP App`,catalogTitle:`Plugin apps`,catalogDescription:`Open an app directly, without sending a message to your agent.`,open:`Open app`,threadApps:`Conversation apps`,empty:`No plugin apps are available for this agent.`,loading:`Loading plugin apps…`,disconnected:`Connect to the Gateway to use plugin apps.`,configure:`Configure MCP servers`,settings:`App settings`,onboarding:`Set up app`,settingsSaved:`App settings saved.`,settingsDescription:`These settings are provided by the app. Changes are sent only when you save.`,save:`Save settings`,actionComplete:`App action completed.`,resources:`App resources`,resourceSearch:`Search app resources`,resourceQuery:`Search resources…`,resourceDescription:`Attach a resource reference from an app. This does not mention or notify a person.`,noResources:`No matching resources.`,attach:`Attach resource`,contextTitle:`App context`,contextDescription:`Included with your next message. Apps can replace their own context; you can remove it here.`,removeContext:`Remove {title}`,textContent:`Text`,imageContent:`Image`,resourceContent:`Resource`,openWith:`Open with app`,fileViewer:`App file viewer`,invalidLink:`This app link is invalid or the app is unavailable.`,close:`Close app`,retry:`Try again`,relaunch:`Relaunch`,sessionEnded:`This app session ended. Relaunch to interact`,reconstructed:`Send a message to interact again`,newConversation:`Start a new conversation`,confirmMessage:`Send this message to the assistant?`,sendMessage:`Send`,cancel:`Cancel`,confirmFile:`Open this file?`,openFile:`Open`,unavailable:`MCP App unavailable: {error}`,errors:{sessionUnavailable:`The App conversation could not be opened`,gatewayUnavailable:`MCP App gateway unavailable`,mountUnavailable:`MCP App mount unavailable`,sandboxTimedOut:`MCP App sandbox timed out`,sandboxUnavailable:`MCP App sandbox unavailable`,initializationTimedOut:`MCP App initialization timed out`,requestFailed:`Request failed`,unsupportedResources:`This app returned an unsupported resource list`,invalidSandboxUrl:`MCP App sandbox URL is invalid`}}},vl=Object.assign(()=>Object.assign(b.mcpApp,_l.mcpApp),{catalog:_l})})))()}var bl,xl;function Sl(){return(Sl=e((()=>{dt(),h(),xe(),ln(),bl=new WeakMap,xl=class{constructor(e,t,n,r=()=>!1){this.host=e,this.context=t,this.target=n,this.prepareSession=r,this.servers=[],this.onboarding=[],this.loading=!1,this.error=null,this.generation=0,this.identity=``,this.preparedSessionIdentity=``,this.cleanup=[],this.connected=!1,e.addController(this)}get available(){return cn(this.context()?.gateway.snapshot??{},`mcp.app.discover`)===!0}hostConnected(){this.connected=!0}hostUpdate(){let e=this.context();if(e){if(!this.cleanup.length){let t=()=>{this.sync(),this.host.requestUpdate()};this.cleanup.push(e.gateway.subscribe(t)),this.cleanup.push(e.agentSelection.subscribe(t)),this.cleanup.push(e.gateway.subscribeEvents(e=>{e.event===`config.changed`&&this.refresh(e)}))}this.sync()}}hostDisconnected(){this.connected=!1,this.generation++,this.identity=``,this.preparedSessionIdentity=``;for(let e of this.cleanup.splice(0))e()}sync(){let e=this.context();if(!e)return;let t=e.gateway,n=this.target(),r=JSON.stringify([gt(t).key,t.snapshot.phase===`connected`,this.available,n.agentId,n.sessionKey]);r!==this.identity&&(this.identity=r,this.generation++,this.servers=[],this.onboarding=[],this.error=null,this.loading=!1,t.snapshot.phase===`connected`&&this.available&&n.sessionKey&&this.refresh(null))}async refresh(e={}){let t=this.context(),n=t?.gateway.snapshot.client,r=this.target();if(!t||!n||t.gateway.snapshot.phase!==`connected`||!this.available||!r.sessionKey)return;let i=++this.generation,a=gt(t.gateway).key,o=bl.get(n);o||(o={pending:new Map},bl.set(n,o)),e&&o.invalidation!==e&&(o.invalidation=e,o.pending.clear());let s=o.pending,c=JSON.stringify([a,r.agentId,r.sessionKey]);this.loading=!0,this.error=null,this.host.requestUpdate();let l=()=>this.connected&&i===this.generation&&n===t.gateway.snapshot.client&&a===gt(t.gateway).key&&JSON.stringify(r)===JSON.stringify(this.target());try{if(this.prepareSession()&&this.preparedSessionIdentity!==this.identity){let e={key:r.sessionKey,agentId:r.agentId},n=await t.sessions.describe(e);if(!l())return;if(!n.session){let n=await t.sessions.createResult(e,{reconciliation:`background`});if(!l())return;if(!n)throw Error(t.sessions.state.error??T(`mcpApp.errors.sessionUnavailable`));s.delete(c)}this.preparedSessionIdentity=this.identity}let e=s.get(c);if(!e){e=n.request(`mcp.app.discover`,r);let t=()=>{s.get(c)===e&&s.delete(c)};e.then(t,t),s.set(c,e)}let i=await e;l()&&(this.servers=i.servers,this.onboarding=i.onboarding??[])}catch(e){l()&&(this.error=w(e))}finally{l()&&(this.loading=!1,this.host.requestUpdate())}}}})))()}var Cl,wl;function Tl(){return(Tl=e((()=>{o(),Cl={connection:{scopeUpgrade:{limited:`This browser has limited access.`,guidance:`This browser has limited access. Manage it with openclaw devices on the Gateway or from Devices on an admin browser.`,status:`Limited access`,inboxState:`Administrator access required`,showDetails:`Show limited access details`,closeDetails:`Close limited access details`,request:`Request admin`,requesting:`Requesting administrator access…`,requestingAction:`Requesting…`,pending:`Approve this browser by running {command} on the Gateway or from Devices on an admin browser. Retry reattaches to the request; Cancel stops waiting.`,retry:`Retry`,cancel:`Cancel`,rejected:`The administrator access request was rejected.`,expired:`The administrator access request expired.`,error:`Administrator access request failed: {error}`}},attention:{cronErrorUnknown:`Unknown error`,cronFailed:`{job} failed`,cronOverdue:`{job} overdue`,automationFailed:`Failed · {time}`,automationOverdue:`Overdue · {time}`,failed:`Failed`,overdue:`Overdue`,dismissItem:`Dismiss {item}`,dismissShown:`Dismiss shown`,emptyTitle:`Nothing waiting`,emptyBody:`New requests and alerts land here.`,issues:`Inbox`,issueCount:`{count} inbox item`,issueCountPlural:`{count} inbox items`,tabs:{label:`Inbox categories`,all:`All`,approvals:`Approvals`,mentions:`Mentions`,automations:`Automations`,system:`System`},mentions:{from:`{sender} mentioned you`,open:`Open`,dismiss:`Dismiss`,dismissing:`Dismissing…`,emptyTitle:`No mentions yet`,emptyBody:`When someone mentions you in a chat, it appears here.`,retention:`Mentions expire after 7 days.`,notifications:`Notification settings`,loading:`Loading mentions…`,unavailable:`Sign in and connect to the Gateway to see your mentions.`,refresh:`Refresh mentions`,error:`Mentions could not be updated. Refresh or try dismissing again.`},outbox:{conversation:`Conversation`,failed:`Your message wasn’t sent`,unconfirmed:`Your message may not have arrived`,commandFailed:`Your command failed`,commandUnconfirmed:`Your command may not have run`,review:`Review in chat`,reviewShort:`Review`,reviewHint:`Open the conversation to review it before trying again.`,checkBeforeRetry:`Open the conversation to check whether it arrived before trying again.`,checkCommandBeforeRetry:`The command may already have run. Review the conversation before retrying.`,offline:`Offline`,offlineHint:`Offline: reconnect before retrying.`},modelAuthExpired:`Model auth expired: {providers}`,authExpired:`Auth expired`,modelAuthExpiredState:`Auth expired · {time}`,modelAuthExpiredWithScope:`{scope} · Auth expired · {time}`,reconnect:`Reconnect`,pendingApproval:`{count} pending approval`,pendingApprovals:`{count} pending approvals`,alerts:{updateQuestion:`These are the available update facts:
{facts}
Summarize what is new and whether anything needs my attention before updating.`,cronFailedQuestion:`These automations failed:
{facts}
Explain why they failed and how to fix them.`,cronOverdueFact:`{job}: {duration} late`,cronOverdueQuestion:`These automations are overdue:
{facts}
Explain why they have not run and how to fix them.`,modelAuthExpiredQuestion:`These model-provider credentials need attention:
{facts}
Explain what expired and how to re-authenticate them.`}}},wl=Object.assign(()=>{Object.assign(b.connection,Cl.connection),b.attention=Cl.attention},{catalog:Cl})})))()}function El(e,t,n=!1){let r=e.trim();if(n&&!Dl.test(r)&&(r=String(Number(r))),!Dl.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(Ol[t]);if(l%c!==0n)return;let u=l/c;return u>0n&&u<=BigInt(864e13)?Number(u):void 0}var Dl,Ol;function kl(){return(kl=e((()=>{I(),Dl=/^(?:\d+(?:\.\d*)?|\.\d+)$/u,Ol={seconds:1e3,minutes:6e4,hours:36e5,days:864e5}})))()}function Al(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 jl(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:Ml(e),everyUnit:`seconds`}}function Ml(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 Nl(e){if(e===0||typeof e!=`number`||!Number.isFinite(e)||e<0)return{scheduleExact:e===0,staggerAmount:``,staggerUnit:`seconds`};let t=e%6e4==0;return{scheduleExact:!1,staggerAmount:t?String(e/6e4):Ml(e),staggerUnit:t?`minutes`:`seconds`}}function Pl(e,t){let n=t.schedule;if(e.scheduleKind!==n.kind)return!1;if(n.kind===`at`)return e.scheduleAt===Al(n.at);if(n.kind===`every`)return El(e.everyAmount,e.everyUnit)===n.everyMs;if(n.kind===`cron`){let t=Nl(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 Fl(e,t){if(e.scheduleKind===`at`){let t=Date.parse(e.scheduleAt);if(!Number.isFinite(t))throw Error(T(`cron.errors.invalidRunTime`));return{kind:`at`,at:new Date(t).toISOString()}}if(e.scheduleKind===`every`){let t=El(e.everyAmount,e.everyUnit);if(t===void 0)throw Error(T(`cron.errors.invalidIntervalAmount`));return{kind:`every`,everyMs:t}}let n=e.cronExpr.trim();if(!n)throw Error(T(`cron.errors.cronExprRequiredShort`));let r,i=e.staggerAmount.trim();if(e.scheduleExact)r=0;else if(!i){let e=t?.kind===`cron`&&t.expr===n&&t.staggerMs!==void 0;r=tt(n)??(e?0:void 0)}else if(r=El(i,e.staggerUnit,!0),r===void 0)throw Error(T(`cron.errors.invalidStaggerAmount`));return{kind:`cron`,expr:n,tz:e.cronTz.trim()||void 0,staggerMs:r}}function Il(){return(Il=e((()=>{qe(),h(),kl()})))()}function Ll(e){return N(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`:Ye(e.kind):!1}function Rl(e){let t=e.payload;return Ll(t)?t:null}function zl(){return(zl=e((()=>{})))()}function Bl(e,t){if(!N(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 Vl(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 Hl(e,t){e.cronJobsReloadPending||(e.cronJobsReloadPending=!0,e.cronJobsReloadPendingTableFilters=t)}async function Ul(e,t){if(!e.cronJobsReloadPending)return;let n=e.cronJobsReloadPendingTableFilters;e.cronJobsReloadPending=!1,e.cronJobsReloadPendingTableFilters=!1,await Jl(e,t,{tableFilters:n})}function Wl(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0}function Gl(e){if(!N(e))return!1;let t=e.autoDisabled;return typeof e.id==`string`&&e.id.trim().length>0&&typeof e.name==`string`&&(e.agentId===void 0||typeof e.agentId==`string`)&&typeof e.enabled==`boolean`&&Wl(e.updatedAtMs)&&(e.nextRunAtMs===null||Wl(e.nextRunAtMs))&&(e.lastRunAtMs===null||Wl(e.lastRunAtMs))&&(e.lastRunStatus===null||e.lastRunStatus===`ok`||e.lastRunStatus===`error`||e.lastRunStatus===`skipped`)&&(e.runningAtMs===void 0||Wl(e.runningAtMs))&&(t===void 0||N(t)&&(t.reason===`consecutive-failures`||t.reason===`schedule-errors`)&&Wl(t.atMs)&&typeof t.consecutiveErrors==`number`&&Number.isSafeInteger(t.consecutiveErrors)&&t.consecutiveErrors>0)}function Kl(e,t){return Jl(e,Xl,t)}function ql(e,t){return Jl(e,Zl,t)}async function Jl(e,t,n){if(!e.client||!e.connected||e.canRefresh?.()===!1)return;let r=e.cronSessionFilter??e.cronAgentId,i=()=>(e.cronSessionFilter??e.cronAgentId)===r;Yl.has(e)&&Yl.get(e)!==r&&(e.cronJobs=[],e.cronJobsSnapshotRevision=null,e.cronJobsTotal=0,e.cronJobsHasMore=!1,e.cronJobsNextOffset=null),Yl.set(e,r);let a=n?.append===!0;if(e.cronLoading||e.cronJobsLoadingMore){a||(e.cronJobsReloadPending=!0,e.cronJobsReloadPendingTableFilters=n?.tableFilters===!0);return}if(a&&!e.cronJobsHasMore)return;let o=a?`cronJobsLoadingMore`:`cronLoading`;e[o]=!0,e.cronJobsError=null;try{let r=a?Math.max(0,e.cronJobsNextOffset??e.cronJobs.length):0,o=await e.client.request(`cron.list`,{...e.cronSessionFilter??(e.cronAgentId?{agentId:e.cronAgentId}:{}),includeDisabled:e.cronJobsEnabledFilter===`all`,includeDeliveryPreviews:!1,...t.compact?{compact:!0}:{},limit:e.cronJobsLimit,offset:r,query:e.cronJobsQuery.trim()||void 0,enabled:e.cronJobsEnabledFilter,...n?.tableFilters?{scheduleKind:e.cronJobsScheduleKindFilter,lastRunStatus:e.cronJobsLastStatusFilter,trigger:e.cronJobsTriggerFilter}:{},sortBy:e.cronJobsSortBy,sortDir:e.cronJobsSortDir});if(!i())return;let s=Bl(o,e.cronJobsLimit);if(a&&(s.snapshotRevision!==e.cronJobsSnapshotRevision||s.total!==e.cronJobsTotal)){Hl(e,n?.tableFilters===!0);return}Vl(s,r);let c=t.readRows(s.jobs);e.cronJobs=a?[...e.cronJobs,...c]:c,e.cronJobsSnapshotRevision=s.snapshotRevision,e.cronJobsTotal=s.total,e.cronJobsHasMore=s.hasMore,e.cronJobsNextOffset=s.nextOffset}catch(t){i()&&(e.cronJobsError=w(t))}finally{e[o]=!1,await Ul(e,t)}}var Yl,Xl,Zl;function Ql(){return(Ql=e((()=>{xe(),zl(),Yl=new WeakMap,Xl={readRows:e=>e.filter(e=>Rl(e)!==null)},Zl={compact:!0,readRows:e=>{if(!e.every(Gl))throw Error(`cron.list returned an invalid compact inventory row`);return e}}})))()}function $l(e){return T(`reason`in e&&eu.get(e.reason)||`cron.runNotStarted.unknown`)}var eu;function tu(){return(tu=e((()=>{h(),eu=new Map([[`not-due`,`cron.runNotStarted.notDue`],[`already-running`,`cron.runNotStarted.alreadyRunning`],[`invalid-spec`,`cron.runNotStarted.invalidSpec`],[`stopped`,`cron.runNotStarted.stopped`]])})))()}function nu(e,t){let n=Math.max(0,Math.floor(j(e.total)??t)),r=Math.max(0,Math.floor(j(e.offset)??0)),i=typeof e.hasMore==`boolean`?e.hasMore:r+t<n,a=j(e.nextOffset);return{total:n,hasMore:i,nextOffset:a===void 0?i?r+t:null:Math.max(0,Math.floor(a))}}function ru(e){du.delete(e),e.cronRunsError=null,e.cronRuns=[],e.cronRunsTotal=0,e.cronRunsHasMore=!1,e.cronRunsNextOffset=null}function iu(e,t){return 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])}function au(e,t){return q.get(e)===t&&e.connected&&iu(e,t)&&(!t.append||Math.max(0,e.cronRunsNextOffset??e.cronRuns.length)===t.offset)}function ou(e){let t=q.get(e);if(t&&au(e,t))return`pending`;let n=du.get(e);return!n||!iu(e,n)?`idle`:e.cronRunsError===null?`ready`:`failed`}async function su(e,t){let n=e.client;if(!n||!e.connected||e.canRefresh?.()===!1)return`skipped`;let r=e.cronRunsScope,i=e.cronRunsJobId;if(r===`job`&&!i)return ru(e),`skipped`;let a=du.get(e);(!a||!iu(e,a))&&ru(e);let o=t?.append===!0;if(o&&!e.cronRunsHasMore)return`skipped`;let s=q.get(e);if(t?.coalesce&&!o&&s&&!s.append&&s.jobId===(r===`job`?i:null)&&au(e,s))return(s.queued??=Un()).promise;let c={client:n,agentId:e.cronAgentId,scope:r,jobId:r===`job`?i: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};q.set(e,c),o||(e.cronRunsHasMore=!1,e.cronRunsNextOffset=null),e.cronRunsLoadingMore=o;try{let t=await n.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(!au(e,c))return`skipped`;du.set(e,c),e.cronRunsError=null;let r=Array.isArray(t.entries)?t.entries:[];e.cronRuns=o?[...e.cronRuns,...r]:r;let i=nu(t,r.length);return e.cronRunsTotal=Math.max(i.total,e.cronRuns.length),e.cronRunsHasMore=i.hasMore,e.cronRunsNextOffset=i.nextOffset,`ok`}catch(t){return!au(e,c)||c.queued?`skipped`:(du.set(e,c),e.cronRunsError=w(t),`error`)}finally{let n=au(e,c);q.get(e)===c&&(q.delete(e),o&&(e.cronRunsLoadingMore=!1)),c.queued?.resolve(n?su(e,t):`skipped`)}}async function cu(e){(e.cronRunsScope!==`job`||e.cronRunsJobId)&&await su(e,{append:!0})}function lu(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 uu(e){q.get(e)?.queued?.resolve(`skipped`),q.delete(e)}var q,du;function fu(){return(fu=e((()=>{I(),wn(),xe(),q=new WeakMap,du=new WeakMap})))()}function pu(e){let t=e.trim();if(!t)return`cron.errors.webhookUrlRequired`;if(!Zt(t))return`cron.errors.webhookUrlInvalid`;let n=URL.parse(t);return!n||n.username||n.password||n.hostname.includes(`%`)?`cron.errors.webhookUrlInvalid`:void 0}function mu(){return(mu=e((()=>{Ot()})))()}async function hu(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 gu(){return(gu=e((()=>{})))()}function _u(e){let t=M(e?.agents);if(!t)return[];let n=M(t.defaults);return An([...Lt(n?.model),...Object.keys(M(n?.models)??{}),...Object.values(F(t.entries)??{}).flatMap(e=>Lt(M(e)?.model))])}function vu(){return(vu=e((()=>{Ht(),Mn()})))()}function yu(e){return e===`main`||e===`isolated`||e===`current`||e.startsWith(`session:`)&&e.length>8}function bu(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:{...td},cronCreateOpen:!1,cronFieldErrors:{},cronEditingJob:null,cronCloningJob:null,cronRunsError: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 xu(e){return e.sessionTarget!==`main`&&(e.payloadKind===`agentTurn`||e.payloadLocked)}function Su(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`||xu(n)?n:{...n,deliveryMode:`none`}}function Cu(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=El(e.everyAmount,e.everyUnit);n===void 0?t.everyAmount=`cron.errors.everyAmountInvalid`:e.triggerEnabled&&n<it()&&(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&&!El(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=i(n,NaN);(!Number.isFinite(e)||e<0)&&(t.timeoutSeconds=`cron.errors.timeoutInvalid`)}}if(e.deliveryMode||(t.deliveryMode=`cron.errors.deliveryModeRequired`),e.deliveryMode===`webhook`){let n=pu(e.deliveryTo);n&&(t.deliveryTo=n)}if(e.failureAlertMode===`custom`){let n=e.failureAlertAfter.trim();if(n){let e=i(n,0);(!Number.isFinite(e)||e<1)&&(t.failureAlertAfter=`Failure alert threshold must be at least 1.`)}let r=e.failureAlertCooldownSeconds.trim();r&&Bu(r)===void 0&&(t.failureAlertCooldownSeconds=`Cooldown must be finite and 0 or greater.`)}return t}function wu(e){return Object.keys(e).length>0}function Tu(e){J.get(e)?.queued?.resolve(),J.delete(e)}function Eu(e){let t=J.get(e);t&&(t.reportErrors=!1)}async function Du(e,t){let n=e.client;if(!n||!e.connected||e.canRefresh?.()===!1)return;let r=J.get(e);if(t?.coalesce&&r?.client===n)return(r.queued??=Un()).promise;let i=e.cronAgentId,a=e.cronEditingJob,o={client:n,selectedJob:a,reportErrors:!t?.coalesce||!e.cronBusy};J.set(e,o);let s=()=>J.get(e)===o&&e.connected&&e.client===n&&e.cronAgentId===i,c=()=>s()&&o.selectedJob===a&&e.cronEditingJob===a,u=a?n.request(`cron.get`,{id:a.id}).then(e=>{c()&&e.id===a.id&&(a.state=e.state)},n=>{c()&&o.reportErrors&&(!t?.coalesce||!o.queued)&&(e.cronError=w(n))}):Promise.resolve();try{let t=await n.request(`cron.status`,{});s()&&(e.cronStatus=t)}catch(n){if(!s()||!o.reportErrors||t?.coalesce&&o.queued)return;re(n)?(e.cronStatus=null,e.cronError=l(`cron status`)):e.cronError=w(n)}finally{await u;let t=s();if(J.get(e)===o&&J.delete(e),o.queued){let n=t?Du(e,{coalesce:!0}):void 0;t&&!o.reportErrors&&Eu(e),o.queued.resolve(n)}}}async function Ou(e,t,n){let r=e.client;if(!r||!e.connected||e.cronBusy)return;let i=t?{id:t.id,name:t.displayName??t.name}:null,a=t=>{e.cronError=i&&e.cronEditingJob?.id!==i.id?`${i.name}: ${t}`:t};Eu(e),e.cronBusy=!0,e.cronError=null;try{await n(r,a)}catch(e){a(w(e))}finally{Eu(e),e.cronBusy=!1}}function ku(e){if(e)return e;throw Error(`This automation is missing its configuration revision. Refresh and try again.`)}function Au(e,t){e.cronJobs=e.cronJobs.map(e=>e.id===t.id?t:e)}function ju(e){return(N(e)&&N(e.details)?e.details:null)?.code===`CRON_JOB_CHANGED`}function Mu(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 Nu(e){let t=J.get(e);t&&(t.selectedJob=null)}function Pu(e){Nu(e),e.cronError=null,e.cronEditingJob=null,e.cronCloningJob=null}function Fu(e,t){e.cronCloningJob=null,e.cronForm={...td,agentId:t??``},e.cronFieldErrors={}}function Iu(e,t){return e?.kind===`command`||e?.kind===`script`||Ye(e?.kind)||He(t)}function Lu(e,t){let n=typeof e.failureAlert==`object`?e.failureAlert:void 0,r=Rl(e),i=r?.kind===`agentTurn`?r:void 0,a=Iu(r,e.declarationKey);if(!yu(e.sessionTarget))throw TypeError(`Invalid cron session target: ${e.sessionTarget}`);let o={...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:``,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??td.payloadKind,payloadLocked:a,payloadText:r?.kind===`systemEvent`?r.text:r?.kind===`agentTurn`?r.message:r?.kind===`command`?r.argv.join(` `):r?.kind===`script`?r.script:``,payloadModel:i?.model??``,payloadThinking:i?.thinking??``,payloadLightContext:i?.lightContext===!0,deliveryMode:rt(e.delivery)?e.delivery?.mode??`none`:``,deliveryChannel:e.delivery?.channel??ed,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`?Ml(n.cooldownMs):``,failureAlertChannel:n?.channel??ed,failureAlertTo:n?.to??``,failureAlertDeliveryMode:n?.mode??``,failureAlertAccountId:n?.accountId??``,timeoutSeconds:typeof i?.timeoutSeconds==`number`?String(i.timeoutSeconds):``};return e.schedule.kind===`at`?o.scheduleAt=Al(e.schedule.at):e.schedule.kind===`every`?Object.assign(o,jl(e.schedule.everyMs)):e.schedule.kind===`cron`&&(o.cronExpr=e.schedule.expr,o.cronTz=e.schedule.tz??``,Object.assign(o,Nl(e.schedule.staggerMs))),Su(o)}function Ru(e,t,n){let r=!n&&t&&`toolsAllow`in t?t.toolsAllow:void 0,a=r?{toolsAllow:[...r]}:{};if(e.payloadKind===`systemEvent`){let t=e.payloadText.trim();if(!t)throw Error(T(`cron.errors.systemEventTextRequired`));return{kind:`systemEvent`,text:t,...a}}if(e.payloadKind!==`agentTurn`)throw Error(`Cron ${e.payloadKind} payloads are read-only in Control UI.`);let o=e.payloadText.trim();if(!o)throw Error(T(`cron.errors.agentMessageRequiredShort`));let s=t?.kind===`agentTurn`?t:void 0,c=n?void 0:s,l=e.payloadModel.trim()||(n&&s?.model!==void 0?null:void 0),u=e.payloadThinking.trim()||(n&&s?.thinking!==void 0?null:void 0),d=e.timeoutSeconds.trim(),f=i(d,NaN),p=e.payloadLightContext||s?.lightContext!==void 0?e.payloadLightContext:void 0;return{kind:`agentTurn`,message:o,...l===void 0?{}:{model:l},...u===void 0?{}:{thinking:u},...d&&Number.isFinite(f)&&f>=0?{timeoutSeconds:f}:n&&s?.timeoutSeconds!==void 0?{timeoutSeconds:null}:{},...p===void 0?{}:{lightContext:p},...a,...c?.fallbacks?{fallbacks:[...c.fallbacks]}:{},...c?.allowUnsafeExternalContent===void 0?{}:{allowUnsafeExternalContent:c.allowUnsafeExternalContent}}}function zu(e,t={}){let n=e.trim();if(n&&(n!==ed||t.preserveLast))return n}function Bu(e){let t=e.trim(),n=i(t,NaN);if(!t||!Number.isFinite(n)||n<0)return;let[r,a=`0`]=(n===0||Hn(t)===void 0?String(n):t).split(/[eE]/u),o=Number(`${r}e${Number(a)+3}`);return Number.isFinite(o)&&o>=0?Math.floor(o):void 0}function Vu(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,a=n?r:void 0,o=i(e.failureAlertAfter.trim(),0),s=Bu(e.failureAlertCooldownSeconds),c=e.failureAlertAccountId.trim(),l=e.failureAlertTo.trim();return{after:o>0?Math.floor(o):a?.after===void 0?void 0:null,channel:zu(e.failureAlertChannel,{preserveLast:!!r?.channel}),to:l||(a?.to?null:void 0),...s===void 0?a?.cooldownMs===void 0?{}:{cooldownMs:null}:{cooldownMs:s},mode:e.failureAlertDeliveryMode||(a?.mode===void 0?void 0:null),accountId:c||(a?.accountId?null:void 0),includeSkipped:r?.includeSkipped}}function Hu(e){let t=M(e),n=t&&`job`in t?M(t.job):t;return _n(n?.id)??null}async function Uu(e){let t={saved:!1};return await Ou(e,void 0,async n=>{let r=Su(e.cronForm);r!==e.cronForm&&(e.cronForm=r);let i=Cu(r);if(e.cronFieldErrors=i,wu(i))return;let a=e.cronEditingJob,o=a?ku(a.configRevision):void 0,s=a??e.cronCloningJob,c=s?Rl(s):null,l=s&&Pl(r,s)?a?void 0:s.schedule:Fl(r,a?.schedule),u=a&&r.payloadLocked&&Iu(c,s?.declarationKey)?void 0:Ru(r,c,!!a),d=r.deliveryMode,f=r.deliveryAccountId.trim(),p=d===`announce`?f||(a?.delivery?.accountId?null:void 0):void 0,m=d?{mode:d,...d===`none`?r.deliveryBestEffort?{bestEffort:!0}:{}:{channel:d===`announce`?zu(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}:{}}:void 0,h=Vu(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),s?.pacing&&(l?.kind===`every`||l?.kind===`cron`?a||(b.pacing={...s.pacing}):a&&l&&(b.pacing=null)),u&&(b.payload=u),a){let i=a.id,s=()=>e.cronEditingJob===a&&e.cronForm===r;try{let t=await n.request(`cron.update`,{id:i,expectedConfigRevision:o,patch:b});Au(e,t),s()&&Xu(e,t)}catch(t){if(!ju(t)){if(s())throw t;return}if(await Wu(e),!s())return;try{let t=await n.request(`cron.get`,{id:i});if(!s())return;Xu(e,t),e.cronError=`This automation changed on the Gateway. The latest definition is loaded; review it before retrying.`}catch{s()&&(e.cronError=`This automation changed on the Gateway, but the latest definition could not be loaded. Refresh before retrying.`)}return}t={saved:!0,jobId:i}}else{let r=await n.request(`cron.add`,b);Fu(e,v),t={saved:!0,jobId:Hu(r)}}await Wu(e)}),t}async function Wu(e){await Kl(e,{tableFilters:!0}),await Du(e)}async function Gu(e,t,n){let r=!1;return await Ou(e,t,async i=>{let a=await i.request(`cron.update`,{id:t.id,expectedConfigRevision:ku(t.configRevision),patch:{enabled:n}});Au(e,a),e.cronEditingJob?.id===a.id&&Yu(e,a,{...e.cronForm,enabled:a.enabled}),r=!0,await Wu(e)}),r}async function Ku(e,t,n=`force`){await Ou(e,e.cronEditingJob?.id===t?e.cronEditingJob:e.cronJobs.find(e=>e.id===t)??{id:t,name:t},async(r,i)=>{let a=await r.request(`cron.run`,{id:t,mode:n});if(!a.ok||`ran`in a&&!a.ran){i($l(a)),`reason`in a&&a.reason===`invalid-spec`&&await su(e);return}await su(e),`enqueued`in a&&a.enqueued&&i(`Run queued. Run ID: ${a.runId}`)})}async function qu(e,t){await Ou(e,t,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&&Pu(e),e.cronRunsJobId===t.id&&(e.cronRunsJobId=null,ru(e)),await Wu(e)})}function Ju(e){Tu(e),uu(e),e.cronJobsReloadPending=!1,e.cronJobsReloadPendingTableFilters=!1}function Yu(e,t,n){Nu(e),e.cronError=null,e.cronEditingJob=t,e.cronCloningJob=null,e.cronRunsJobId=t.id,e.cronForm=n,e.cronFieldErrors=Cu(n)}function Xu(e,t){Yu(e,t,Lu(t,e.cronForm))}function Zu(e,t){let n=e.trim()||`Job`;for(let e=1;e<1e3;e+=1){let r=e===1?`${n} copy`:`${n} copy ${e}`;if(!t.has(A(r)))return r}return`${n} copy ${Date.now()}`}function Qu(e,t){Pu(e),e.cronCloningJob=t,e.cronRunsJobId=t.id;let n=new Set(e.cronJobs.map(e=>A(e.name))),r=Lu(t,e.cronForm);r.name=Zu(t.name,n),r.payloadLocked&&(r.payloadLocked=!1,r.payloadKind=td.payloadKind,r.payloadText=``),e.cronForm=Su(r,{payloadKind:r.payloadKind}),e.cronFieldErrors=Cu(e.cronForm)}function $u(e,t){Pu(e),Fu(e,t)}var ed,td,J;function nd(){return(nd=e((()=>{I(),Ge(),at(),Je(),wn(),h(),xe(),v(),ee(),kl(),Il(),Ql(),zl(),tu(),fu(),mu(),vu(),ed=`last`,td={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:``},J=new WeakMap})))()}function rd(e){return e.state?.lastRunStatus??e.state?.lastStatus??`unknown`}function id(e){let t=e.state?.runningAtMs;return typeof t==`number`&&Number.isFinite(t)}function ad(e){return e.state?.autoDisabled?!0:e.enabled&&rd(e)===`error`}function od(){return(od=e((()=>{})))()}function sd(e,t,n,r){let i=[...e],a=i.indexOf(t),o=i.indexOf(n);if(a<0||o<0||a===o)return i;let[s]=i.splice(a,1);if(s===void 0)return i;let c=i.indexOf(n)+ +(r===`after`);return i.splice(c,0,s),i}function cd(){return(cd=e((()=>{})))()}function ld(e){return Ke(e)?.map(s).join(` `)}function ud(e){let t=Ke(e);if(!t)return;let n=f.getLocale();return fd?.locale!==n&&(fd={locale:n,formatter:new Intl.ListFormat(n,{type:`unit`,style:`long`})}),fd.formatter.format(t.map(e=>s({...e,unitDisplay:`long`})))}function dd(e,t=T(`common.na`)){return e==null||!Number.isFinite(e)||e<0?t:Qe(e).map(s).join(` `)}var fd;function pd(){return(pd=e((()=>{nt(),h(),v()})))()}function md(e){return Object.hasOwn(mt,e)}function hd(e){let t=e.trim().toLowerCase(),n=gd.get(t)??gd.get(_d.get(t)??``)??Wn.fallback;return md(n.icon)?n.icon:`puzzle`}var gd,_d;function vd(){return(vd=e((()=>{Jn(),ut(),gd=new Map(Object.entries(Wn.tools)),_d=new Map([[`shell`,`exec`],[`search`,`web_search`],[`grep`,`web_search`],[`find`,`web_search`],[`glob`,`web_search`]])})))()}function yd(){let e=null,t=bd,n=()=>{e!==null&&(globalThis.clearTimeout(e),e=null)};return{cancel:n,reset(){n(),t=bd},schedule(r){n();let i=t;t=Math.min(t*2,xd),e=globalThis.setTimeout(()=>{e=null,r()},i)}}}var bd,xd;function Sd(){return(Sd=e((()=>{bd=3e4,xd=3e5})))()}function Cd(e,t){let n=yd(),r=!1,i=!1,a=0,o=null,s=null,c=null;function l(){i=!1,r&&t.sync()}function u(){if(!r||i)return;i=!0;let e=a;globalThis.queueMicrotask(()=>{e===a&&l()})}let d=()=>{n.reset(),u()};return{get attached(){return r},get retry(){return n},sync:l,schedule:u,attach(){r||(r=!0,t.onAttach(),o=e.subscribe(t.onSnapshot??u),s=t.onEvent?e.subscribeEvents(t.onEvent):null,typeof document<`u`&&(document.addEventListener(`visibilitychange`,d),c=document))},detach(){r&&(r=!1,o?.(),o=null,s?.(),s=null,c?.removeEventListener(`visibilitychange`,d),c=null,n.reset(),a+=1,i=!1,t.onDetach())}}}function wd(){return(wd=e((()=>{Sd()})))()}function Td(){return`noopener noreferrer`}var Ed;function Dd(){return(Dd=e((()=>{Ed=`_blank`})))()}function Od(e,t){let n=F(F(e)?.__openclaw);if(n?.truncated===!0&&n.reason===`oversized`)return T(`chat.messages.tooLargeToDisplay`);let r=t.content.flatMap(e=>e.type===`text`&&typeof e.text==`string`?e.text:[]).join(`
`);return t.role.toLowerCase()===`assistant`?hr(r):r}function kd(){return(kd=e((()=>{h(),nr()})))()}function Ad(e,t){let n=!1;for(let e of t.content)if(e.type===`text`)n||=!!e.text?.trim();else if(e.type!==`thinking`&&!Xe(e.type)&&!Ne(e.type))return`non-text`;return n||Bo(e)?.trim()?`text`:`none`}function jd(e){return Rd.test(e)}function Md(e){let t=F(e);if(!t||A(t.role)!==`assistant`)return!1;if(typeof t.text==`string`)return jd(t.text);let n=Ro(e);return typeof n==`string`&&jd(n)}function Nd(e){let t=F(e);if(!t||A(t.role)!==`toolresult`)return!1;let n=Ro(e);return typeof n==`string`&&n.trim()===zd}function Pd(e){return jd(e)||ol(e).shouldSkip}function Fd(e){return Md(e)||cl(e)}function Id(e){return!(Fd(e)||Nd(e)||qo(e))}function Ld(e){return Array.isArray(e)?e.filter(Id):[]}var Rd,zd;function Bd(){return(Bd=e((()=>{we(),ll(),Xo(),Rd=/^\s*NO_REPLY\s*$/,zd=`[openclaw] missing tool result in session history; inserted synthetic error result for transcript repair.`})))()}var Vd,Hd;function Ud(){return(Ud=e((()=>{o(),Vd={chat:{codeBlock:{languageFallback:`Code`,hiddenLine:`1 hidden line`,hiddenLines:`{count} hidden lines`,showHiddenLine:`Show 1 hidden line`,showHiddenLines:`Show {count} hidden lines`,enableWrap:`Enable word wrap`,disableWrap:`Disable word wrap`,jsonView:`JSON view`,jsonTree:`Tree`,jsonRaw:`Raw`,jsonArrayItem:`Array ({count} item)`,jsonArrayItems:`Array ({count} items)`,jsonObjectKeys:`Object ({count} keys)`}}},Hd=Object.assign(()=>Object.assign(b.chat.codeBlock,Vd.chat.codeBlock),{catalog:Vd})})))()}function Wd(e){let t=F(e)?.approvalReviews;return Array.isArray(t)?t.slice(-16).map(vr).filter(e=>e!==null):[]}function Gd(e,t,n){return{...F(e)??(e===void 0?{}:{toolDetails:e}),approvalReviews:[...t],...n?{approvalReviewOutcome:n}:{}}}function Kd(e){let t=F(e)?.approvalReviewOutcome;return t===`approved`||t===`denied`||t===`reviewing`?t:void 0}function qd(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}function Jd(){return(Jd=e((()=>{yr()})))()}function Yd(e,t,n){let r=n.trim(),i={operation:t,sourcePath:r,path:r,lines:[],stat:{added:0,removed:0}};return e.sections.push(i),i}function Xd(e,t,n){n.kind===`add`?t.stat.added+=1:n.kind===`del`&&(t.stat.removed+=1),e.storedRows<400?(t.lines.push(n),e.storedRows+=1):e.truncated=!0}function Zd(e,t){t.lines.length!==0&&t.lines.at(-1)?.kind!==`skip`&&Xd(e,t,{kind:`skip`,text:``})}function Qd(e){let t=e.match(/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);return t?{oldLine:Number.parseInt(t[1]??``,10),oldLeft:t[2]===void 0?1:Number.parseInt(t[2],10),newLine:Number.parseInt(t[3]??``,10),newLeft:t[4]===void 0?1:Number.parseInt(t[4],10)}:{}}function $d(e,t,n,r){let i=n.startsWith(`+`)?`add`:n.startsWith(`-`)?`del`:`ctx`,a=i===`del`?r?.oldLine:r?.newLine;return r&&(i!==`ctx`||r.oldLine!==void 0&&r.newLine!==void 0)&&(i!==`add`&&r.oldLine!==void 0&&(r.oldLine+=1,r.oldLeft=Math.max(0,(r.oldLeft??0)-1)),i!==`del`&&r.newLine!==void 0&&(r.newLine+=1,r.newLeft=Math.max(0,(r.newLeft??0)-1))),Xd(e,t,{kind:i,...a===void 0?{}:{lineNo:a},text:n.slice(1)}),r?.oldLeft===0&&r.newLeft===0?null:r}function ef(e,t,n,r,i=!1){return n.startsWith(`@@`)?(t&&Zd(e,t),Qd(n)):t&&(r||i)&&(n.startsWith(`+`)||n.startsWith(`-`)||n.startsWith(` `)||i&&n===``)?$d(e,t,n,r):r}function tf(e){return e.operation===`update`&&e.path!==e.sourcePath?`Move ${e.sourcePath} → ${e.path}`:`${e.operation===`add`?`Add`:e.operation===`delete`?`Delete`:`Update`} ${e.path}`}function nf(e){if(e.sections.length===0)return null;let t=[...new Set(e.sections.map(e=>e.path).filter(Boolean))],n=e.sections.map(({operation:e,path:t,sourcePath:n})=>({operation:e,path:t,...e===`update`&&n!==t?{oldPath:n}:{}})),r=e.sections.reduce((e,t)=>({added:e.added+t.stat.added,removed:e.removed+t.stat.removed}),{added:0,removed:0}),i=[],a=e.truncated,o=e=>{i.length<400?i.push(e):a=!0};for(let[t,r]of e.sections.entries()){e.sections.length>1&&(i.length>0&&i.at(-1)?.kind!==`skip`&&o({kind:`skip`,text:``}),o({kind:`file`,path:r.path,...`oldPath`in n[t]?{oldPath:r.sourcePath}:{},text:tf(r)}));for(let e of r.lines)o(e)}a&&i.at(-1)?.kind!==`skip`&&i.push({kind:`skip`,text:``});let s=e.sections.length===1?e.sections.at(0):void 0,c=s&&s.operation===`update`&&s.sourcePath!==s.path?{from:s.sourcePath,to:s.path}:void 0;return{paths:t,fileOperations:n,lines:i,stat:r,...c?{move:c}:{}}}function rf(e){return(e.split(`	`,1)[0]?.trim()??``).replace(/^[ab]\//,``)}function af(e,t,n,r,i){let a=rf(n.slice(4)),o=rf(r.slice(4)),s=a===`/dev/null`?`add`:o===`/dev/null`?`delete`:`update`,c=o===`/dev/null`?a:o,l=i&&t?t:Yd(e,s,c);return l.operation=s,l.sourcePath=a||l.sourcePath,l.path=c||l.path,l}function of(e,t){let n={sections:[],storedRows:0,truncated:!1},r=K(e),i=null,a=null,o=!1;for(let e=0;e<r.length;e++){let s=r[e];if(t){let e=i?.operation===`update`?s.trimEnd():s.trim(),t=e.match(/^\*\*\* (Update|Add|Delete) File: (.+)$/);if(t){i=Yd(n,t[1].toLowerCase(),t[2]),a=null;continue}let r=i?.operation===`update`?e.match(/^\*\*\* Move to: (.+)$/):null;if(r&&i){i.path=r[1]?.trim()??i.path;continue}if(e===`*** Begin Patch`||e===`*** End Patch`||e===`*** End of File`||e.startsWith(`*** Environment ID:`)||!i||(i.operation===`add`&&s.startsWith(`+`)&&Xd(n,i,{kind:`add`,lineNo:i.stat.added+1,text:s.slice(1)}),i.operation!==`update`))continue}else{let t=s.match(/^diff --git a\/(.+) b\/(.+)$/);if(t){i=Yd(n,`update`,t[2]),i.sourcePath=t[1],a=null,o=!0;continue}let c=r[e+1];if(!a&&s.startsWith(`--- `)&&c?.startsWith(`+++ `)){i=af(n,i,s,c,o),o=!1,e+=1;continue}if(s.startsWith(`@@`)&&(o=!1),/^index |^new file mode |^deleted file mode |^similarity index /.test(s))continue}a=ef(n,i,s,a,t)}return nf(n)}function sf(e){let t=typeof e==`string`?e:F(e)?.type;return t===`add`||t===`delete`?t:`update`}function cf(e){let t=F(e),n=t?.added,r=t?.removed;return typeof n==`number`&&typeof r==`number`&&n>=0&&r>=0?{added:Math.trunc(n),removed:Math.trunc(r)}:null}function lf(e){let t={sections:[],storedRows:0,truncated:!1};for(let n of e){let e=F(n),r=E(e?.path)?.trim();if(!e||!r)continue;let i=sf(e.kind),a=Yd(t,i,r),o=E(F(e.kind)?.move_path??F(e.kind)?.movePath);if(o&&(a.path=o.trim()),typeof e.diff==`string`){if(i===`update`){let n=null;for(let r of K(e.diff))n=ef(t,a,r,n)}else{let n=i===`add`?`add`:`del`;for(let[r,i]of K(e.diff).entries())Xd(t,a,{kind:n,lineNo:r+1,text:i})}}let s=cf(e.stat);s&&(a.stat=s),t.truncated||=e.diffTruncated===!0}return nf(t)}function uf(e){let t=F(e);if(!t)return null;if(Array.isArray(t.changes)){let e=lf(t.changes);if(e)return e}let n=E(t.patch)??E(t.input)??E(t.diff);return n?of(n,/(?:^|\n)\s*\*\*\* (?:Begin Patch|Update File:|Add File:|Delete File:)/.test(n)):null}function df(){return(df=e((()=>{oc()})))()}function ff(e){return E(e?.path)??E(e?.file_path)??E(e?.filePath)??E(e?.file)??E(e?.filepath)??E(e?.filename)??E(e?.notebook_path)}function pf(e){let t=e.replace(/\\/g,`/`).replace(/\/+$/,``),n=t.lastIndexOf(`/`);return n<=0?{base:t||e}:{base:t.slice(n+1),dir:t.slice(0,n)}}function mf(e){if(!e)return null;let t=[],n=0,r=!1,i=Array.isArray(e.edits)?e.edits:[e];for(let[e,a]of i.entries()){if(e>=Tf){r=!0;break}let i=F(a);if(!i)continue;let o=i.oldText??i.old_string??i.oldString??i.old_str,s=i.newText??i.new_string??i.newString??i.new_str;if(typeof o==`string`&&typeof s==`string`){let e=o.length+s.length;if(n+e>Ef){r=!0;break}n+=e,t.push({oldText:o,newText:s})}}if(t.length===0)return r?{diff:[{kind:`skip`,text:``}]}:null;let a=rc(t.map(e=>tc(e.oldText,e.newText)),{truncated:r});return a.lines.length===0?null:{diff:a.lines,...a.kind===`complete`?{stat:a.stat}:{}}}function hf(e){let t=F(e),n=E(t?.diff);if(!n)return null;let r=$s(n);return r?{diff:r.lines,...r.kind===`complete`?{stat:r.stat}:{}}:null}function gf(e){let t=E(e?.insert_text);if(!t)return null;let n=tc(``,t).lines;return n.length>0?{diff:n}:null}function _f(e){let t=uf(e);if(!t)return null;let n={kind:`edit`,fileOperations:t.fileOperations,diff:t.lines,stat:t.stat};if(t.paths.length>1)return{...n,target:`${t.paths.length} files`};if(t.move){let e=pf(t.move.from),r=pf(t.move.to),i=e.dir===r.dir?e.dir:void 0;return{...n,target:i?`${e.base} → ${r.base}`:`${t.move.from} → ${t.move.to}`,targetDetail:i}}let r=t.paths[0]?pf(t.paths[0]):null;return{...n,target:r?.base,targetDetail:r?.dir}}function vf(e,t,n){if(Sf.has(e))switch(n){case`view`:return`read`;case`str_replace`:case`insert`:case`undo_edit`:return`edit`;case`create`:return`write`;default:return`generic`}for(let[t,n]of wf)if(n.has(e))return t;return t&&typeof t.command==`string`&&Object.keys(t).length<=3?`command`:`generic`}function yf(e){let t=kt(e),n=F(t.args),r=n??F(e.details),i=t.name.trim().toLowerCase();if(r){let t=Df.get(r);if(t&&t.details===e.details&&t.name===i)return t.view}let a=bf(e,n,i);return r&&Df.set(r,{details:e.details,name:i,view:a}),a}function bf(e,t,n){let r=Sf.has(n)?E(t?.command)?.trim().toLowerCase():void 0,i=vf(n,t,r);if(i===`command`){let e=E(t?.command),r=e?.match(/^\s*(?:\/(?:usr\/)?bin\/)?(?:ba|z|da)?sh\s+-l?c\s+(['"])([\s\S]+)\1\s*$/);return{kind:i,title:xf.has(n)?Yt(t):void 0,command:r?.[2]??e,code:Wt(t)}}if(i===`edit`&&Cf.has(n))return _f(t)??{kind:`generic`};if(i===`read`||i===`edit`||i===`write`){let n=ff(t);if(!n)return{kind:`generic`};let{base:a,dir:o}=pf(n),s={kind:i,target:a,targetDetail:o};if(i===`read`)return s;let c=hf(e.details);if(c)return{...s,...c};if(i===`edit`){let e=r===`insert`?gf(t):r===`undo_edit`?null:mf(t);return{...s,...e}}let l=F(e.details);if(l?.changed===!1)return s;let u=E(t?.[r===`create`?`file_text`:`content`]);if(!u)return s;let d=nc(u);return{...s,diff:d,...l&&l.created!==!0?{}:{stat:{added:K(u).length,removed:0}}}}if(i===`search`){let e=E(t?.pattern)??E(t?.query)??E(t?.glob),n=ff(t);return!e&&!n?{kind:`generic`}:{kind:i,target:e??n,targetDetail:e?n:void 0}}if(i===`fetch`){let e=E(t?.url);return e?{kind:i,target:e}:{kind:`generic`}}return{kind:`generic`}}var xf,Sf,Cf,wf,Tf,Ef,Df;function Of(){return(Of=e((()=>{qt(),Qt(),oc(),df(),xf=new Set([`bash`,`exec`,`shell`,`run_command`,`run_terminal_cmd`]),Sf=new Set([`str_replace_editor`,`str_replace_based_edit_tool`]),Cf=new Set([`apply_patch`,`applypatch`,`patch`]),wf=[[`command`,xf],[`read`,new Set([`read`,`read_file`,`readfile`,`notebookread`,`notebook_read`])],[`edit`,new Set([`edit`,`edit_file`,`multiedit`,`multi_edit`,`notebookedit`,`notebook_edit`,...Cf])],[`write`,new Set([`write`,`write_file`,`create_file`])],[`search`,new Set([`grep`,`find`,`glob`,`ls`,`list`,`codebase_search`])],[`fetch`,new Set([`web_fetch`,`webfetch`,`fetch`])]],Tf=8,Ef=12e4,Df=new WeakMap})))()}var kf,Af;function jf(){return(jf=e((()=>{o(),kf={chat:{goals:{composerMode:`Goal`,sessionChanged:`Conversation changed. Cancel and select Goal again.`,start:`Start goal`,save:`Save goal`,startHint:`Enter your objective.`,editHint:`Save without starting a run.`,objectivePlaceholder:`What should this goal accomplish?`,cancel:`Cancel goal entry`,offline:`Reconnect to manage goals.`,busy:`Wait for this run to finish. Your draft is unchanged.`,annotationUnsupported:`Send or remove browser annotations first. Your draft is unchanged.`,actionPending:`Wait for the pending goal action.`,invalidRequest:`Goal update is invalid. Check the objective and try again.`,outcomeUnknown:`Goal update not confirmed. Check its outcome before making another change.`,recoveryTitle:`Goal update not confirmed`,recoveryHint:`Check the saved request. If it already succeeded, it will not run again.`,checking:`Checking goal update…`,checkOutcome:`Check outcome`,refreshCurrent:`Review current goal`,recoveryExpired:`The saved request expired after 24 hours. Review the current goal before making another change.`,recoveryUnavailable:`Goal update was not sent because its recovery request could not be saved.`,recoveryInvalid:`The saved goal request is invalid; review the current goal before retrying.`,admissionImmutable:`Retry or remove this request. Editing requires a new goal.`,edit:`Edit goal`,editChip:`Edit`,pause:`Pause goal`,pauseChip:`Pause`,resume:`Resume goal`,resumeChip:`Resume`,clear:`Clear goal`,clearChip:`Clear`,showDetails:`Show goal details`,hideDetails:`Hide goal details`}}},Af=Object.assign(()=>Object.assign(b.chat.goals,kf.chat.goals),{catalog:kf})})))()}var Mf,Nf;function Pf(){return(Pf=e((()=>{o(),Mf={chat:{modelControls:{subscription:`Subscription`,api:`API`,default:`Default`,routes:{claudeCli:{label:`Claude CLI · native`,detail:`Runs through Claude Code, using its native login or a selected saved account. An explicitly selected API-key account has separate API billing; CLI does not mean free or subscription-only.`},anthropicApi:{label:`API · OpenClaw`,detail:`Uses the configured Anthropic API connection with OpenClaw's runtime. API-key usage is billed separately from a Claude subscription.`},anthropicConfigured:{label:`Configured route`,detail:`Anthropic models can use the API or Claude CLI, depending on their configured runtime and account. The provider name alone does not determine billing.`}},completionRoutes:{api:{label:`API · OpenClaw`,detail:`Uses the provider's API connection with OpenClaw's runtime. API usage is billed to that provider account.`},cli:{label:`{runtime} · native`,detail:`Runs through {runtime} using its own login. Billing follows the account it is signed in with; an API-key login is billed as API usage.`},harness:{label:`{runtime}`,detail:`Runs through the {runtime} agent runtime and the account it uses.`}},decisionLabel:`Decision Model`,decisionDisabled:`Disabled`,decisionInherit:`Use global default · {model}`,decisionUnavailable:`This decision model is unavailable. Enable its plugin or choose another model.`,decisionHelp:`Makes typed choices, scores, and yes/no judgments. Disabled until you select a decision model; chat models are not used as a fallback.`,decisionAgentHelp:`Use the global decision model, choose an override, or disable decisions for this agent.`,effort:`Effort`,faster:`Faster`,smarter:`Smarter`,fastMode:`Fast mode`,speed:`Speed`,standard:`Standard`,fast:`Fast`,ultrafast:`Ultrafast`,tierDowngrade:`{requested} requested, currently served as {served}`,tierRejected:`{requested} requested, currently unavailable`,searchModels:`Search models`,noMatchingModels:`No models match your search`,configureModels:`Configure models`,selectionScopeSessionLabel:`This session`,selectionScopeAgentLabel:`Agent default`,selectionScopeGlobalLabel:`Global default`,selectionScopeSession:`Selecting a model changes only this session.`,selectionScopeAgent:`Selecting a model updates this agent's default.`,selectionScopeGlobal:`Selecting a model updates the global default.`,defaultWithModel:`Default ({model})`,defaultWithLevel:`Default ({level})`,fastHelp:`Faster responses, higher usage of limits.`,contextWindow:`Context window`,contextWindowAria:`Context window: {state}`,speedUnsupported:`Speed control is not supported for this model.`,contextActiveAndMax:`{active} active · {maximum} max`,chatOnly:`Chat only`,chatOnlyHelp:`This model can chat, but it cannot use tools. Choose another model for files, commands, web, or media tasks.`,loadingModels:`Loading models…`,refreshingModels:`Refreshing models…`,refreshingProviderModels:`Refreshing models for {providers}…`,modelPending:`Model pending`,modelsUnavailable:`Models unavailable`,runtimeUnavailable:`This harness is unavailable for this model.`,modelsRefreshFailed:`Some models could not be refreshed. Open Models to try again.`,checkingProviderModels:`{providers}: checking models…`,noModelsAvailable:`No models available`,claudeCliNotReady:`Claude Code isn't ready. If signed out, run claude auth login.`,noPermittedModels:`No models are permitted by your administrator.`,selectionRequired:`Choose a model`,restrictedModelsHelp:`Your administrator centrally configures the models available here.`,emptyModelsAction:`Manage models`,providerModels:`{provider} models`,allModels:`All models ({count})`,useDefaultReasoning:`Use default reasoning ({level})`,fastResponsesAria:`Fast responses: {state}`},nativeRuntimeRecovery:{title:`Use {runtime}’s native permissions?`,confirm:`Continue for this chat`,confirmMessage:`{runtime} will run on the Gateway host under its own permissions. OpenClaw’s optional native tool and sandbox restrictions, including workspace-only restrictions, will not be enforced for this harness. Only this chat is changed; other chats and global configuration stay unchanged. OpenClaw-hosted tools keep their own policy checks.`,retryMessage:`Continue will retry the message you just sent.`,chooseAnother:`Choose another model to keep this chat’s current execution restrictions.`,failed:`Could not change this chat’s execution permissions: {error}`,refreshFailed:`The model and permissions were saved, but refreshing this chat failed: {error}`,reasons:{"sandbox-required":`{runtime} cannot run because this chat requires a sandbox.`,sandbox:`{runtime} uses native tools that cannot run inside the OpenClaw sandbox.`,"workspace-only":`{runtime} cannot enforce this chat’s OpenClaw workspace-only restriction.`,"permission-mode":`{runtime} cannot enforce this chat’s current execution permissions.`,"tool-policy":`{runtime} cannot enforce this chat’s OpenClaw native tool restrictions.`,"remote-execution":`{runtime} cannot use this chat’s remote execution target.`}},permissionControls:{label:`Execution permissions`,help:`Choose what available tools may do in this session. This does not change the tool profile.`,default:`Default`,defaultDescription:`Follow the agent's configured execution permissions.`,defaultWithMode:`Default ({mode})`,fullRequiresAdmin:`Full access requires operator.admin access.`,updateFailed:`Failed to update permissions: {error}`,refreshFailed:`Permissions were saved, but refreshing the session failed: {error}`,modes:{"read-only":{label:`Read Only`,description:`Agent tools can read within the session root, but cannot write or run commands.`},guarded:{label:`Guarded`,description:`A human reviews requests beyond the session root.`},workspace:{label:`Workspace`,description:`An AI reviewer checks requests beyond the session root.`},full:{label:`Full Access`,description:`No reviewer; files and commands are unrestricted.`}}}}},Nf=Object.assign(()=>{b.chat=Object.assign({},b.chat,Mf.chat)},{catalog:Mf})})))()}function Ff(e){return Qf.has(S(e??``))}function If(e){return Object.hasOwn(e.modelOverrides,e.sessionKey)?e.modelOverrides[e.sessionKey]==null?null:`user`:e.activeSession?.modelOverrideSource}function Lf(e){let t=e.chatModelCatalog??[],n=e.modelOverrides;if(Object.hasOwn(n,e.sessionKey))return ve(n[e.sessionKey],t);let r=e.activeSession;return fe(r?.model,r?.modelProvider,t)}function Rf(e){return e.catalogRetired||e.catalogInitialized===!1?``:e.modelSelectionPolicy?.restricted?e.modelSelectionPolicy.defaultModel??``:fe(e.agentDefaultModel,void 0,e.chatModelCatalog??[])||fe(e.sessionsResult?.defaults?.model,e.sessionsResult?.defaults?.modelProvider,e.chatModelCatalog??[])}function zf(e){let t=e.trim().toLowerCase(),n=t.indexOf(`/`);return n<=0?t:`${S(t.slice(0,n))}/${t.slice(n+1)}`}function Bf(e){return zf(ce(e.id,e.provider))}function Vf(e,t){let n=e.trim().toLowerCase();if(!n)return e;let r=zf(e);for(let e of[!1,!0]){let i=t.find(t=>!!t.disabled===e&&(t.value.trim().toLowerCase()===n||zf(t.value)===r));if(i)return i.value}return e}function Hf(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()!==S(e.provider))-Number(t.provider.trim().toLowerCase()!==S(t.provider)))){if(i.manualSelectionAllowed===!1)continue;let e=_e(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 Uf(e,t,n){let r=zf(fe(e,t,n)),i=n.filter(e=>Bf(e)===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 Wf(e,t,n){let r=zf(fe(e,t,n));return n.some(e=>e.manualSelectionAllowed!==!1&&Bf(e)===r)}function Gf(e,t){if(t!==`worker`||e!==`missing-auth`&&e!==`auth-failed`)return e===`missing-auth`?T(`modelSetup.missingAuth`):e===`unsupported-runtime`?T(`chat.modelControls.runtimeUnavailable`):e===`auth-failed`?`${T(`modelSetup.failure.auth`)}. ${T(`modelSetup.failureGuidance.auth`)}`:void 0}function Kf(e){let t=e.chatModelCatalog??[],n=new Set(t.filter(e=>e.available!==!1).map(Bf)),r=t.filter(e=>e.available!==!1||!n.has(Bf(e))),i=pe(r),a=Hf(r,i),o=Vf(Lf(e),a),s=Vf(Rf(e),a),c=ie(s,i);return{currentOverride:o,defaultModel:s,defaultLabel:s?`Default (${c})`:`Default model`,modelOverrideSource:If(e),options:a}}function qf(e){if(e===`auto`||e===`ultrafast`)return e;if(e===`on`)return!0;if(e===`off`)return!1}function Jf(e){let t=e?.effectiveFastMode??e?.fastMode,n=t===`auto`?T(`chat.commandResults.fast.autoValue`,{seconds:String(e?.fastAutoOnSeconds??60)}):T(t===`ultrafast`?`chat.modelControls.ultrafast`:t===!0?`chat.commandResults.fast.on`:`chat.commandResults.fast.off`),r=e?.effectiveFastModeSource,i=r===`session`?T(`chat.commandResults.fast.sourceSession`):r===`agent`?T(`chat.commandResults.fast.sourceAgent`):r===`config`?T(`chat.commandResults.fast.sourceModel`):r==="default"?T(`chat.commandResults.fast.sourceDefault`):``;return`${T(`chat.commandResults.fast.current`,{value:n})}${i}.`}function Yf(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=ce(e.id,e.provider).trim().toLowerCase()===i;if(!t&&!n)continue;s=!0;let r=S(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 Xf(e,t){return e?.serviceTiers!==void 0&&!e.serviceTiers.some(e=>e===`priority`||e===`ultrafast`)&&(t||e.supportsFastMode===!1&&e.serviceTiers.length===1&&e.serviceTiers[0]==="default")}function Zf(e){let t=e.fastModeTarget,n=S(t?.modelProvider??``)||null,r=S(e.sessionsResult?.defaults?.modelProvider??``)||null,i=Yf(e.currentModelOverride,e.catalog,n,r),a=t?.fastMode===`auto`||t?.fastMode===`ultrafast`?t.fastMode:t?.fastMode===!0?`on`:t?.fastMode===!1?`off`:``,o=i===`openai`,s=t?.effectiveFastMode??t?.fastMode,c=zf(ve(e.currentModelOverride||ce(t?.model??e.sessionsResult?.defaults?.model??``,i),e.catalog)),l=e.catalog.filter(e=>Bf(e)===c).map(e=>({entry:e,runtime:lr(e,t?.agentRuntime?.id)})),u=new Set(l.map(({entry:e,runtime:t})=>(t??e).supportsFastMode)),d=(u.size===1?[...u][0]:void 0)??Ff(i),f=e=>l.length>0&&l.every(e),p=d&&f(({runtime:e})=>e?.available===!0&&e.serviceTiers?.includes(`ultrafast`)),m=f(({runtime:e})=>e?.supportsServiceTierRecovery===!0),h=f(({runtime:e})=>Xf(e,m)),g=f(({runtime:e})=>e?.serviceTiers!==void 0&&!e.serviceTiers.includes(`ultrafast`)),_=h?!1:s===`ultrafast`&&m&&g&&d?!0:s,v=o||h?_===!0?`on`:_===`auto`||_===`ultrafast`?_:`off`:a,y=h||d||!!a,b=_===!0||_===`auto`||_===`ultrafast`,x=_===`auto`?`Auto`:_===`ultrafast`?`Ultrafast`:b?`Fast`:o||v===`off`?`Standard`:`Default`,ee=h?`off`:d?b?`off`:`on`:``,te=_===`ultrafast`?`ultrafast`:b?`priority`:void 0,ne=l.map(({runtime:e})=>e?.serviceTierObservation).find(e=>e&&e.requestedTier===te);return{active:b,currentOverride:v,disabled:h||!y||!e.connected||e.loading||e.sending||!!e.activeRunId||e.stream!==null||!e.gatewayAvailable,label:x,hint:ne?ne.responseTier?T(`chat.modelControls.tierDowngrade`,{requested:x,served:ne.responseTier}):T(`chat.modelControls.tierRejected`,{requested:x}):void 0,nextValue:ee,supported:y,ultrafastSupported:g?!1:p||void 0}}var Qf;function $f(){return($f=e((()=>{h(),Pf(),me(),Nf(),Qf=new Set([`anthropic`,`minimax`,`minimax-portal`,`openai`,`xai`])})))()}function ep(e,t,n=`text/plain`){tp(e,new Blob([t],{type:n}))}function tp(e,t){let n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=e,r.click(),setTimeout(()=>URL.revokeObjectURL(n),0)}function np(){return(np=e((()=>{})))()}function rp(e,t,n){let r=n===void 0?ct(st(e?.snapshot)??[],t?.trim()):P(n);return r?Dr({id:r.id??r.email,name:r.name,identity:r.identity,profileAvatarUrl:r.avatarUrl}):null}function ip(){return(ip=e((()=>{jr()})))()}var ap,op;function sp(){return(sp=e((()=>{o(),ap={mcpServers:{signIn:`Sign in`,authenticationSaved:`Authentication saved`,signInFailed:`Sign-in did not finish. Check the connector settings and try again.`,signInExpired:`This sign-in session ended. Close the dialog and sign in again.`,profileSignIn:`Sign in through the linked account in Models.`,requesterSignIn:`Each person signs in through this connector in chat.`,add:`Add server`,adding:`Adding…`,nameLabel:`Name`,transportLabel:`Transport`,transportStreamableHttp:`Streamable HTTP`,transportSse:`SSE`,transportStdio:`Stdio`,targetLabel:`URL or command`,nameInvalid:`Server names use letters, numbers, dots, dashes, or underscores.`,targetInvalid:`Enter a URL for HTTP transports or a valid command line for stdio.`,sessionEnableFailed:`The server was saved disabled globally, but enabling it for this session failed: {error}`,sessionChanged:`The active session changed before it could be enabled.`,sessionUnavailable:`The active session is unavailable; refresh and try again.`,nameTaken:`An MCP server named “{name}” already exists.`,missing:`MCP server “{name}” was not found in the configuration.`,missingTransport:`missing transport`,addedSuccess:`Added MCP server {name}.`,enabledSuccess:`Enabled MCP server {name}.`,disabledSuccess:`Disabled MCP server {name}.`,removedSuccess:`Removed MCP server {name}.`,configUnavailable:`Configuration is unavailable; refresh and try again.`,connectRequired:`Connect to the gateway to change MCP servers.`,adminRequired:`MCP server changes require operator.admin access.`,enable:`Enable`,disable:`Disable`,removeNamed:`Remove {name}`,working:`Working…`},mcpPage:{intro:`Connect and manage MCP servers that provide tools to OpenClaw.`,servers:`Servers`,oauth:`OAuth`,filtered:`Filtered`,configuredServers:`Configured servers`,noServers:`No MCP servers configured.`,setUpFirstServer:`Set up your first MCP server`,operatorCommands:`MCP operator commands`,operatorCommandsHint:`Status, diagnostics, auth, connection checks, and runtime reload.`,runtimeHint:`Edits save automatically. With automatic reload enabled, MCP connections rebuild on next use.`,toolFilter:`tool filter`,parallel:`parallel`,tlsVerifyOff:`TLS verify off`,mtls:`mTLS`}},op=Object.assign(()=>{Object.assign(b.mcpServers,ap.mcpServers),Object.assign(b.mcpPage,ap.mcpPage)},{catalog:ap})})))()}function cp(e){let t=[],n=``,r=null,i=!1;for(let a=0;a<e.length;a+=1){let o=e[a]??``;if(!r&&/\s/u.test(o)){i&&=(t.push(n),n=``,!1);continue}if(i=!0,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);continue}if(o===`\\`&&r===null){let t=e[a+1];t&&(t===`"`||t===`'`||/\s/u.test(t))?(n+=t,a+=1):n+=o;continue}if(r){o===r?r=null:n+=o;continue}if(o===`'`||o===`"`){r=o;continue}n+=o}return r?null:(i&&t.push(n),t)}function lp(e,t){if(t!==`stdio`)return Ft(e)?{url:e,transport:t}:null;if(/^https?:\/\//i.test(e))return null;let[n,...r]=cp(e.trim())??[];return n?r.length>0?{command:n,args:r}:{command:n}:null}function up(e){if(!e)return null;let t=F(F(e.mcp)?.servers)??{};return Object.entries(t).map(([e,t])=>{let n=F(t)??{},r=typeof n.url==`string`?n.url:``,i=typeof n.command==`string`?n.command:``,a=F(n.oauth),o=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:o,target:i||Bn(r),auth:typeof n.auth==`string`?n.auth:null,signIn:n.auth===`oauth`?a?.authProfileId?`profile`:a?.identity===`per-requester`?`requester`:o!==`stdio`&&o!==`invalid`&&lp(r,o)?`operator`:null: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 dp(e,t,n){return Object.hasOwn(e,t)?{error:T(`mcpServers.nameTaken`,{name:t})}:{patch:{[t]:n}}}function fp(e,t,n){return Object.hasOwn(e,t)?{patch:{[t]:{enabled:n?null:!1}}}:{error:T(`mcpServers.missing`,{name:t})}}function pp(e,t){return Object.hasOwn(e,t)?{patch:{[t]:null},replacePaths:Ue(e[t],`mcp.servers.${t}`)}:{error:T(`mcpServers.missing`,{name:t})}}async function mp(e,t){try{return await e.ensureLoaded(),await e.patchFromSnapshot(e=>{let n=F(F(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??T(`mcpServers.configUnavailable`)}}catch(e){return{ok:!1,error:w(e)}}}var hp;function gp(){return(gp=e((()=>{Dn(),Ot(),$e(),h(),sp(),xe(),op(),hp=/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/})))()}var _p,vp;function yp(){return(yp=e((()=>{o(),_p={skillDiscovery:{search:`Search skills`,settings:`Skill settings`,libraryStatus:`Library skill. Session selections control when it is used.`},skillLibrary:{library:`Skill library`,mine:`My skills`,team:`Team`,all:`All libraries`,inventory:`Agent & workspace`,create:`Create skill`,import:`Import skill`,save:`Save skill`,slug:`Skill name`,slugHelp:`Use 1–63 lowercase letters, digits, or hyphens; start with a letter or digit.`,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.`,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.`,connectionChanged:`The Gateway connection changed. Reopen the skill before saving.`,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.`,importHelp:`Import a skill into your private library.`,importClawHub:`Import {source} into your private library.`,files:`Files`,filesHelp:`SKILL.md with supporting files, a folder, or a ZIP (saved on import).`,chooseFilesButton:`Choose files`,chooseFolderButton:`Choose folder`,noFilesSelected:`No files selected.`,selectedFile:`{count} file · {names}`,selectedFiles:`{count} files · {names}`,clearSelection:`Clear`,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}).`}}},vp=Object.assign(()=>{b.skillLibrary=_p.skillLibrary,b.skillDiscovery=_p.skillDiscovery},{catalog:_p})})))()}function bp(e,t){un(Array.from(e.listeners.keys()),t,e=>console.error(`[chat-metadata] listener error:`,e))}function xp({agentId:e,sessionKey:t,authProfileId:n}){return JSON.stringify([e?.trim()??``,t??null,n??null])}function Sp(e,t){let r=xp(t),i=se.get(e);if(!i){let t=new Map;i={entries:t,invalidate:(e,r,{sessionOnly:i=!1,matchesCatalog:a,commandsChanged:o=!0,delayMs:s=0}={})=>{let c=Array.from(t.values()).filter(t=>(!a||a(t.scope))&&(!i||e!==void 0||t.scope.sessionKey!==void 0)&&(r&&e?.sessionKey?n(r,t.scope.sessionKey,e.sessionKey,e.agentId,t.scope.agentId):(!e?.agentId||t.scope.agentId===e.agentId)&&(!e?.sessionKey||t.scope.sessionKey===e.sessionKey))&&(!e?.authProfileId||t.scope.authProfileId===e.authProfileId));for(let e of c)e.refreshRevision+=1,e.refreshAfter=s?Date.now()+s:void 0,!i&&o&&(e.invalidated=!0,e.writer=void 0,e.activeRequest?.controller.abort());for(let t of c)bp(t,{type:`invalidated`,scope:i?`session`:`full`,refreshSessionFacts:i||!e?.sessionKey}),t.release()}},se.set(e,i)}let a=i.entries,o=a.get(r);if(o)a.delete(r),a.set(r,o);else{let n=le(t),i=de(n),s={scope:t,catalogController:new AbortController,listeners:new Map,refreshRevision:0,catalogRevision:0,release:()=>{s.listeners.size===0&&!s.activeRequest&&!s.queuedRequest&&(!s.result||a.size>Mp)&&(s.writer=void 0,a.get(r)===s&&(a.delete(r),c()))}},c=cr(e,e=>{e.type===`invalidated`&&e.matches(n,i)&&(s.catalogRevision+=1)});o=s,a.set(r,o);for(let e of a.values()){if(a.size<=Mp)break;e!==o&&e.release()}}return o}function Cp(e){let t={};e.writer=t;let n=()=>e.writer===t;return{isCurrent:n,publish:t=>{let r=`unchanged`in t?e.result:t.commands===void 0?void 0:{commands:t.commands,...t.revision?{revision:t.revision}:{}};if(!r)throw n()&&(e.invalidated=!0),Error(`Chat commands are unavailable. Retry the metadata request.`);if(`unchanged`in t&&r.revision!==t.revision)throw Error(`Chat metadata was unchanged without a retained revision.`);return n()&&(e.result=r,e.invalidated=!1,bp(e,{type:`result`,result:r})),e.release(),r},fail:t=>{n()&&bp(e,{type:`error`,error:t}),e.release()}}}function wp(e,t,n){let r=t.queuedRequest??t.activeRequest;if(r?.publication.isCurrent()&&!r.controller.signal.aborted&&(!n||r.revalidation||r===t.queuedRequest))return n&&(r.revalidation=!0),r.promise;let i=Cp(t),a=t.queuedRequest;if(a)return a.controller.signal.aborted&&(a.controller=new AbortController),a.publication=i,a.revalidation||=n,bp(t,{type:`loading`}),a.promise;let{promise:o,resolve:s,reject:c}=Un(),l=t.activeRequest!==void 0,d={controller:new AbortController,promise:o,publication:i,revalidation:n,start:()=>{let n=d.publication;(async()=>{try{let r;try{l&&d.controller.signal.throwIfAborted();let n=0;for(;;){n>0&&d.controller.signal.throwIfAborted();try{r=await e.request(`chat.metadata`,{agentId:t.scope.agentId,includeModels:!1,...t.result?.revision?{ifRevision:t.result.revision}:{}});break}catch(e){if(!u(e))throw e;await xn(te(e,n++),d.controller.signal)}}}finally{t.activeRequest=void 0;let e=t.queuedRequest;t.queuedRequest=void 0,e&&(t.activeRequest=e,e.start())}s(n.publish(r))}catch(e){n.fail(e),c(e)}finally{t.release()}})()}};return t.activeRequest?t.queuedRequest=d:t.activeRequest=d,bp(t,{type:`loading`}),t.activeRequest===d&&d.start(),o}function Tp(e,t){let n=se.get(e)?.entries.get(xp(t));return n?.invalidated?void 0:n?.result}function Ep(e,t,n,r=()=>!0){let i=Sp(e,t);return i.listeners.set(n,r),()=>{i.listeners.delete(n),i.listeners.size===0&&(i.activeRequest?.controller.abort(),i.queuedRequest?.controller.abort(),i.catalogController.abort()),(t.sessionKey||t.authProfileId)&&i.listeners.size===0&&(i.refreshRevision+=1,i.writer=void 0),i.refresh?.start(),i.release()}}function Dp(e,t){let n=Sp(e,t);return n.result&&!n.invalidated?Promise.resolve(n.result):wp(e,n,!1)}function Op(e,t){return wp(e,Sp(e,t),!0)}function kp(e,t){let n=Sp(e,t),{isCurrent:r,publish:i}=Cp(n);return bp(n,{type:`loading`}),{isCurrent:r,publish:i}}function Ap(e,t){let n=Sp(e,t);n.refreshRevision+=1,n.refreshAfter=void 0;let r=n.refresh;n.refresh=void 0,r?.start()}function jp(e,t,n){let r=Sp(e,t);r.catalogController.signal.aborted&&(r.catalogController=new AbortController),dr(e,t);let i=r.refresh,a=n?.kind===void 0&&i?.revision===r.refreshRevision&&!i.controller.signal.aborted&&!i.metadataRequired,o=n?.kind!==`startup`&&!a;if(i?.phase===`waiting`&&!i.controller.signal.aborted)return i.metadataRequired||=o,i.revalidateMetadata=n?.revalidateMetadata??i.revalidateMetadata,i.revision=r.refreshRevision,i.catalogRevision=r.catalogRevision,i.start(),i;if(i&&!i.controller.signal.aborted&&i.phase!==`inactive`&&i.revision===r.refreshRevision&&i.catalogRevision===r.catalogRevision&&!n?.revalidateMetadata&&(!o||i.metadataRequired||n?.kind===void 0))return i;let s=r.refreshRevision,c=r.catalogRevision,l=i?.revision===s&&!i.controller.signal.aborted&&i.catalogRevision===c&&i.phase!==`inactive`&&n?.kind===`metadata`?i.catalog:void 0,u=Un(),d=Un(),f=!1,p,m={controller:r.catalogController,catalog:u.promise,completed:d.promise,revision:s,catalogRevision:c,phase:`waiting`,metadataRequired:o,revalidateMetadata:n?.revalidateMetadata,isCurrent:()=>se.get(e)?.entries.get(xp(t))===r&&m.revision===r.refreshRevision&&m.catalogRevision===r.catalogRevision,start:()=>{if(m.phase!==`waiting`)return;clearTimeout(p),dr(e,t);let n=r.refresh===m,i=n&&!m.controller.signal.aborted&&Array.from(r.listeners.values()).some(e=>e()),a=(r.refreshAfter??0)-Date.now();if(i&&a>0){p=setTimeout(m.start,a);return}i&&m.metadataRequired&&r.queuedRequest&&Dp(e,t);let o=s===r.refreshRevision&&c===r.catalogRevision?l:void 0,h=o&&i?void 0:rr(e,t),g=[r.activeRequest?.promise,h].filter(e=>e!==void 0);if(n&&g.length){f||(f=!0,Promise.allSettled(g).then(()=>{f=!1,m.start()}));return}if(!i){m.phase=`inactive`,u.resolve(void 0),d.resolve(),r.release();return}m.phase=`admitted`,m.revision=r.refreshRevision,m.catalogRevision=r.catalogRevision;let _=o??ir(e,{...t,signal:m.controller.signal}),v=m.metadataRequired?m.revalidateMetadata?.()?Op(e,t):Dp(e,t):Promise.resolve();_.then(u.resolve,u.reject),Promise.allSettled([v,u.promise]).then(()=>{d.resolve(),r.release()})}};return r.refresh=m,m.start(),m}var Mp;function Np(){return(Np=e((()=>{En(),wn(),a(),r(),fr(),ue(),oe(),Mp=64})))()}function Pp(e,t,n){let r=e?.model||e?.modelProvider?e:t,i=Vp(n,r?.modelProvider??null,r?.model??null,e?.agentRuntime?.id),a=[e,ur(e,t)?t:void 0,i].find(e=>e?.thinkingLevels!==void 0||e?.thinkingOptions!==void 0||e?.thinkingDefault!==void 0);if(a)return{agentRuntime:a.agentRuntime,thinkingLevels:a.thinkingLevels??a.thinkingOptions?.map(e=>({id:Y(e),label:e})),thinkingDefault:a.thinkingDefault,reasoning:i?.reasoning}}function Fp(e,t,n=[]){let r=(Pp(e,t,n)?.thinkingLevels??[]).map(e=>Y(e.id));return r.length>0?[`default`,...new Set(r.filter(e=>e&&e!=="default"))]:[]}function Ip(e,t,n=[]){let r=Pp(e,t,n)?.thinkingLevels;if(r===void 0)return T(`common.unknown`);let i=r.map(e=>e.label);return i.length===0?T(`common.none`):(i.includes(`default`)?i:[`default`,...i]).join(`, `)}function Lp(e,t,n,r=[]){let i=Tt(e);if(i)return i;let a=A(e);return(Pp(t,n,r)?.thinkingLevels??[]).map(e=>({id:Y(e.id),label:A(e.label)})).find(e=>e.id===a||e.label===a)?.id}function Rp(e,t,n,r=[]){return Pp(e,t,r)?.thinkingLevels?.some(e=>Y(e.id)===n||Tt(e.label)===n)}function zp(e,t,n){let r=e?.thinkingLevel?.trim(),i=Pp(e,t,n);return r?i?.thinkingLevels?.find(e=>Y(e.id)===Y(r))?.label??r:i?.thinkingDefault??T(`common.unknown`)}function Bp(e){let t=new Set,n=[];for(let r of e){let e=Y(r.id);sr(n,t,e,()=>Wp(e,r.label))}return n}function Vp(e,t,n,r){let i=r?.trim(),a=e.find(e=>{let r=e.agentRuntime?.id?.trim();return e.provider===t&&e.id===n&&(!i||!r||i===r||e.runtimeChoices?.some(e=>e.agentRuntime.id===i))});return i&&(a?.agentRuntime?.id||a?.runtimeChoices?.length)?lr(a,i):a}function Hp(e){let t=e.session??e.sessionsResult?.sessions?.find(t=>ye(t.key,e.sessionKey)),n=t?.thinkingLevel,r=typeof n==`string`&&n.trim()?Tt(n)??n.trim():``,i=Pp(t,e.defaults??e.sessionsResult?.defaults,e.catalog),a=i?.thinkingLevels??[],o=i?.reasoning===!1&&a.length>0&&a.every(e=>Y(e.id||e.label)===`off`),s=o?[]:a,c=i?.thinkingDefault??``,l=o&&r===`off`?``:r,u=Bp(s),d=Y(c),f={value:d,displayLabel:Up(c)},p=l||d,m=u.findIndex(e=>e.value===p),h=l?`override`:`default`,g=l?u[m]?.label??Wp(l):f.displayLabel;return{selection:m>=0?{kind:`anchored`,source:h,value:p,displayLabel:g,index:m}:{kind:`unanchored`,source:h,value:p,displayLabel:g},inherited:f,options:u}}function Y(e){return Tt(e)??A(e)}function Up(e){return e?`Inherited: ${Gp(Y(e))}`:T(`common.unknown`)}function Wp(e,t){let n=Y(e);return!n||n===`off`?`Off`:Gp(t?.trim()||n)}function Gp(e){let t=A(e);return[`on`,`enable`,`enabled`].includes(t)?`On`:Kp.get(Y(e))??e.charAt(0).toUpperCase()+e.slice(1)}var Kp;function qp(){return(qp=e((()=>{jt(),h(),ue(),Kp=new Map([[`adaptive`,`Adaptive`],[`minimal`,`Minimal`],[`low`,`Low`],[`medium`,`Medium`],[`high`,`High`],[`xhigh`,`Extra high`],[`max`,`Maximum`],[`ultra`,`Ultra`]])})))()}function Jp(e,t,n){if(e.trimStart().startsWith(`/`))return!0;let r=e.slice(0,n),i=r.split(`
`).length-1,a=!1,o;em??=new Sr().disable([`inline`,`linkify`,`replacements`,`smartquotes`,`text_join`]);for(let e of em.parse(r,{}))if(e.map&&(a=e.map[0]<=i&&e.map[1]>i),a){if([`fence`,`code_block`,`html_block`].includes(e.type))return!0;e.type===`inline`&&e.content&&(o=e.content)}if(o===void 0)return!0;let s=0,c=0,l=0,u=``,d=!1,f=!1,p=!1,m=0;for(let e=0;e<o.length;){let t=o[e++];if(s){if(t!=="`")continue;let n=1;for(;o[e]==="`";)n+=1,e+=1;s===n&&(s=0,m=e);continue}if(f){p?t===`>`&&(f=!1,m=e):u?t===u&&(u=``):t===`"`||t===`'`?u=t:t===`>`&&(f=!1,m=e);continue}if(t===`\\`){e+=1;continue}if(l){d?t===`>`&&(d=!1):u?t===u&&(u=``):(t===`"`||t===`'`)&&/\s/u.test(o[e-2]??``)?u=t:t===`<`&&o[e-2]===`(`?d=!0:t===`(`?l+=1:t===`)`&&--l===0&&(m=e);continue}if(t==="`")for(s=1;o[e]==="`";)s+=1,e+=1;else if(t===`[`)c+=1;else if(t===`]`&&c>0)--c,o[e]===`(`&&(l=1,e+=1);else if(t===`<`){let t=o.slice(e);p=/^[a-zA-Z][a-zA-Z0-9+.-]*:/u.test(t)||/^[^\s<>]*@/u.test(t),f=p||/^[a-zA-Z!?/]/u.test(t)}}if(s||l||f)return!0;let h=o.length-(n-t),g=h,_=/\s/u;for(;g>m&&!_.test(o[g-1]);)--g;let v=o.slice(g,h);if(v.toLowerCase().includes(`www.`)||/[/?#]/u.test(v))return!0;let y=!1;for(let e=0;e<v.length;e+=1){let t=v.charCodeAt(e);if(t===58&&y&&e+1<v.length)return!0;t>=65&&t<=90||t>=97&&t<=122?y=!0:y&&(t>=48&&t<=57||t===43||t===45||t===46)||(y=!1)}return!1}function Yp(e){let t=0,n=Qp.length;for(;t<n;){let r=t+n>>>1;Qp[r]<e?t=r+1:n=r}return t}function Xp(e){return Object.hasOwn(Qn,e)?Qn[e]:void 0}function Zp(e){let t=[];for(let n=Yp(e);n<Qp.length&&t.length<12;n+=1){let r=Qp[n];if(!r.startsWith(e))break;t.push(r)}return t}var Qp,$p,em,tm;function nm(){return(nm=e((()=>{Cr(),Zn(),Qp=Object.keys(Qn).toSorted(),$p=Qp.reduce((e,t)=>Math.max(e,t.length),0),tm=class{constructor(){this.context=null,this.snapshot=null}reset(){this.context=null,this.snapshot=null}find(e,t){if(this.snapshot?.value===e&&this.snapshot.caret===t)return this.snapshot.target;let n=this.resolve(e,t);return this.snapshot={value:e,caret:t,target:n},n}resolve(e,t){let n=e.slice(Math.max(0,t-$p-1),t),r=/:([a-z0-9_+-]+)$/u.exec(n);if(!r||!Qp[Yp(r[1])]?.startsWith(r[1]))return this.context=null,null;let i=t-r[0].length;if(/[\p{L}\p{N}_/:\\]$/u.test(e.slice(Math.max(0,i-2),i)))return null;let a=t;for(;a-i<=$p&&/[a-z0-9_+-]/u.test(e[a]??``);)a+=1;if(/[a-z0-9_+-]/u.test(e[a]??``))return null;e[a]===`:`&&(a+=1);let o=e.slice(0,i);return this.context?.prefix!==o&&(this.context={prefix:o,literal:Jp(e,i,t)}),this.context.literal?null:{start:i,end:a,query:r[1]}}}})))()}var rm,im;function am(){return(am=e((()=>{o(),rm={chat:{camera:{title:`Take photo`,previewHint:`Preview your camera before taking a photo.`,reviewHint:`Use this photo or retake it. Your camera is off.`,photoAlt:`Captured photo`,requesting:`Waiting for your camera. Allow access if prompted.`,capturing:`Preparing your photo…`,capture:`Capture`,retake:`Retake`,usePhoto:`Use photo`,upload:`Upload photo`,retry:`Try again`,errorTitle:`Camera unavailable`,previewUnavailable:`Camera preview unavailable`,useNativeCamera:`Use device camera`,insecure:`Live preview requires HTTPS or localhost. Use your device camera or upload a photo. Your browser may show a camera or file picker.`,unsupported:`This browser cannot show a live camera preview. Use your device camera or upload a photo. Your browser may show a camera or file picker.`,permissionDenied:`Camera access was denied. Allow camera access in your browser and system settings, then try again.`,notFound:`No camera was found. Connect a camera, or upload a photo instead.`,unavailable:`The camera could not start. Check that another app is not using it, then try again.`,stopped:`Your camera stopped. Reconnect it and try again, or upload a photo instead.`,captureFailed:`The photo could not be captured. Try again, or upload a photo instead.`}}},im=Object.assign(()=>Object.assign(b.chat,rm.chat),{catalog:rm})})))()}var om,sm;function cm(){return(cm=e((()=>{o(),om={skillsPage:{title:`Skills`,tabs:{all:`All`,ready:`Ready`,needsSetup:`Needs Setup`,disabled:`Disabled`},defaultAgent:`{name} (default)`,filterPlaceholder:`Filter installed skills`,shown:`{count} shown`,clawHub:`ClawHub`,clawHubSubtitle:`Search and install skills from the registry`,searchClawHub:`Search ClawHub skills…`,searching:`Searching…`,disconnected:`Not connected to gateway.`,empty:`No skills found.`,noClawHubResults:`No skills found on ClawHub.`,notScannedByClawHub:`Not scanned by ClawHub`,install:`Install`,installed:`Installed`,installing:`Installing…`,close:`Close`,by:`By`,latest:`Latest: v{version}`,platforms:`Platforms: {platforms}`,installNamed:`Install {name}`,notFound:`Skill not found.`,openDetails:`Open {name} details`,enabledNamed:`{name} enabled`,invalidLink:`ClawHub link invalid`,overview:`Overview`,skillCard:`Skill Card`,missingRequirements:`Missing requirements`,reason:`Reason: {reasons}`,disabled:`Disabled`,enabled:`Enabled`,apiKey:`API key`,getKey:`Get your key:`,saveKey:`Save key`,source:`Source:`,refreshing:`Refreshing…`,fullSecurityReport:`Full security report`,loadingSkillCard:`Loading Skill Card…`,skillCardNotLoaded:`Skill Card not loaded.`,verdict:{unavailable:`Unavailable`,clean:`Clean`,pending:`Pending`,blocked:`Blocked`,review:`Review`}}},sm=Object.assign(()=>{b.skillsPage=om.skillsPage},{catalog:om})})))()}var lm,um;function dm(){return(dm=e((()=>{o(),lm={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`}}},um=Object.assign(()=>{b.profilePage=Object.assign({},b.profilePage,lm.profilePage)},{catalog:lm})})))()}function fm(e){return pm.add(e),()=>void pm.delete(e)}function X(){un(pm,void 0,e=>console.error(`[openclaw] durable composer draft listener failed`,e))}var pm;function mm(){return(mm=e((()=>{pm=new Set})))()}function hm(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.blob instanceof Blob&&typeof t.mimeType==`string`&&(t.origin===void 0||t.origin===`paste`||t.origin===`file`)}function gm(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.itemId==`string`&&typeof t.signature==`string`&&typeof t.edited==`boolean`&&(t.dismissed===void 0||typeof t.dismissed==`boolean`)&&(t.reopenedAfterBoundary===void 0||typeof t.reopenedAfterBoundary==`string`)&&Array.isArray(t.answers)&&t.answers.every(e=>e&&typeof e==`object`&&typeof e.freeText==`string`&&Array.isArray(e.selected)&&e.selected.every(e=>typeof e==`string`))}function Z(e){if(!e||typeof e!=`object`)return null;let t=e;if(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&&!ua(t.goalMode)||t.replyTarget!==void 0&&!fa(t.replyTarget)||typeof t.revision!=`number`||!Number.isSafeInteger(t.revision)||t.revision<=0||!Array.isArray(t.attachments)||!t.attachments.every(hm)||t.questionDrafts!==void 0&&(!Array.isArray(t.questionDrafts)||!t.questionDrafts.every(gm)))return null;let n=t.modelSelection;return n!==void 0&&(!n||typeof n!=`object`||typeof n.agentId!=`string`||typeof n.model!=`string`||typeof n.thinkingLevel!=`string`||n.agentRuntime!==void 0&&typeof n.agentRuntime!=`string`)&&(t.modelSelection=void 0),t.mentions=ii(t.text,t.mentions),t}function _m(){return(_m=e((()=>{da(),si(),pa()})))()}var vm=t({discardDurableComposerRecovery:()=>Am,listDurableChatDraftPresence:()=>Tm,prepareDurableComposerRecovery:()=>km,readDurableComposerDraft:()=>Mm,restoreDurableComposerRecovery:()=>jm,retireDurableComposerDraft:()=>Pm,retireDurableComposerDrafts:()=>Im,subscribeDurableComposerDraftChanges:()=>fm,writeDurableComposerDraft:()=>Nm});async function ym(){let e=await Pa();return Wm!==e&&(Wm=e,globalThis.setTimeout(()=>void Em(e).catch(()=>void 0),0)),e}async function bm(e,t=!1){let n;try{return n=(await ym()).transaction(Lm,`readwrite`),await e(n.objectStore(Lm))}catch{if(t)try{n?.abort()}catch{}return{status:`storage-failed`}}}function xm(e){return JSON.stringify([e.gatewayOwner,e.recoveryScope])}function Q(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 $(e){return!!(e.text||e.goalMode||e.replyTarget||e.modelSelection||e.attachments.length>0||e.questionDrafts?.length)}function Cm(e,t){let n=Sm(e.revision);return{...e,revision:n,text:``,mentions:void 0,goalMode:void 0,replyTarget:void 0,modelSelection:void 0,attachments:[],questionDrafts:void 0,updatedAt:t,writeId:`fence:${n}`}}function wm(e,t){if(!(Om(e)||e.updatedAt>t-Bm))return $(e)?Cm(e,t):null}async function Tm(e){try{let t=(await Pa()).transaction(Lm,`readonly`),n=await V(t.objectStore(Lm).index(Rm).getAll(xm(e))),r=new Map;for(let t of n){let n=Z(t);n&&n.gatewayOwner===e.gatewayOwner&&n.recoveryScope===e.recoveryScope&&n.scopeKey.startsWith(zm)&&r.set(n.scopeKey.slice(8),n.updatedAt>Date.now()-Bm?{revision:n.revision,active:$(n)}:{revision:2**53-1,active:!1})}return await H(t),{status:`ready`,presence:r}}catch{return{status:`storage-failed`}}}async function Em(e){let t=e.transaction(Lm,`readwrite`),n=t.objectStore(Lm),r=Date.now(),i=n.openCursor(),a=!1;i.addEventListener(`success`,()=>{try{let e=i.result;if(!e)return;let t=Z(e.value),n=t?wm(t,r):void 0;n===null?(e.delete(),a=!0):n&&(e.update(n),a=!0),e.continue()}catch{t.abort()}}),await H(t),a&&X()}async function Dm(e,t,n){let r=(await V(e.index(Rm).getAll(t))).map(Z).filter(e=>e!==null),i=[];for(let t of r){let r=wm(t,n);if(r===null){e.delete(t.key);continue}if(r){e.put(r);continue}$(t)&&!Om(t)&&i.push(t)}i.sort((e,t)=>t.updatedAt-e.updatedAt);for(let t of i.slice(Vm))e.put(Cm(t,n))}function Om(e){return!e.scopeKey.startsWith(zm)&&!e.scopeKey.startsWith(`questions:v1:`)&&e.scopeKey.includes(`\0agent:`)&&$(e)}async function km(e){return bm(async t=>{let n=(await V(t.index(Rm).getAll(xm(e)))).map(Z).filter(e=>e!==null),r=[],i=!1,a=n.filter(e=>$(e)&&!Om(e)).length;for(let o of n){if(!Om(o))continue;if(o.gatewayOwner!==e.gatewayOwner||o.recoveryScope!==e.recoveryScope)throw Error(`Composer recovery owner mismatch`);let n=G(o.scopeKey),s=n&&![`global`,`main`].includes(n.sessionKey),c={...e,scopeKey:`${zm}${n?C(n):o.scopeKey}`},l=s?await V(t.get(Q(c))):void 0,u=Z(l);s&&u&&!$(u)&&u.revision>o.revision?t.put(Cm(o,Date.now())):s&&a<Vm&&l===void 0?(t.put({...o,key:Q(c),scopeKey:c.scopeKey,updatedAt:Date.now()}),a++,t.put(Cm(o,Date.now())),i=!0):r.push({owner:{gatewayOwner:o.gatewayOwner,recoveryScope:o.recoveryScope},scopeKey:o.scopeKey,revision:o.revision,writeId:o.writeId,updatedAt:o.updatedAt,text:o.text,...o.goalMode?{goalMode:{...o.goalMode}}:{},...o.replyTarget?{replyTarget:{...o.replyTarget}}:{},attachmentNames:o.attachments.map(e=>e.fileName??e.mimeType)})}return await H(t.transaction),i&&X(),{status:`ready`,entries:r}},!0)}async function Am(e,t,n){try{if(!n()||t.owner.gatewayOwner!==e.gatewayOwner||t.owner.recoveryScope!==e.recoveryScope)return{status:`conflict`}}catch{return{status:`storage-failed`}}return bm(async r=>{let i={...e,scopeKey:t.scopeKey},a=Z(await V(r.get(Q(i))));return!a||!Om(a)||a.gatewayOwner!==e.gatewayOwner||a.recoveryScope!==e.recoveryScope||a.scopeKey!==t.scopeKey||a.key!==Q(i)||a.ownerKey!==xm(e)||a.revision!==t.revision||a.writeId!==t.writeId||!n()?(r.transaction.abort(),{status:`conflict`}):(r.put(Cm(a,Date.now())),await H(r.transaction),X(),{status:`discarded`})},!0)}async function jm(e,t,n,r,i,a){return bm(async o=>{let s=Z(await V(o.get(Q({...e,scopeKey:t.scopeKey})))),c=Z(await V(o.get(Q(e))));if(!i()||!s||!Om(s)||s.gatewayOwner!==e.gatewayOwner||s.recoveryScope!==e.recoveryScope||s.revision!==t.revision||s.writeId!==t.writeId||(c?.revision??0)!==n||c?.writeId!==r||c&&$(c))return o.transaction.abort(),{status:`conflict`};let l=Sm(Math.max(a,s.revision,c?.revision??0));return o.put({...s,key:Q(e),scopeKey:e.scopeKey,revision:l,writeId:`recovered:${l}`,updatedAt:Date.now()}),o.put(Cm(s,Date.now())),await H(o.transaction),X(),{status:`persisted`,revision:l}},!0)}async function Mm(e){return bm(async t=>{let n=await V(t.get(Q(e))),r=Z(n),i=Date.now();if(r&&(r.gatewayOwner!==e.gatewayOwner||r.recoveryScope!==e.recoveryScope||r.scopeKey!==e.scopeKey))return t.transaction.abort(),{status:`storage-failed`};let a=r?wm(r,i):void 0,o=a===void 0?r:a;return a===null||!r&&n!==void 0?t.delete(r?.key??Q(e)):a&&t.put(a),await H(t.transaction),a!==void 0&&X(),!o||!$(o)?{status:`not-found`,...o?{revision:o.revision,writeId:o.writeId}:{}}:{status:`found`,draft:{revision:o.revision,writeId:o.writeId,text:o.text,...o.mentions?.length?{mentions:o.mentions}:{},...o.goalMode?{goalMode:o.goalMode}:{},...o.replyTarget?{replyTarget:{...o.replyTarget}}:{},...o.modelSelection?{modelSelection:o.modelSelection}:{},attachments:o.attachments,...o.questionDrafts?.length?{questionDrafts:o.questionDrafts}:{}}}})}async function Nm(e,t,n){if(t.attachments.reduce((e,t)=>e+t.blob.size,0)>Hm){let r=await Nm(e,{...t,attachments:[]},n);return r.status===`persisted`?{status:`payload-too-large`,revision:r.revision,writeId:r.writeId}:r}return bm(async r=>{let i=Q(e),a=Z(await V(r.get(i)));if(a?.revision===t.revision)return r.transaction.abort(),a.writeId===n.writeId?{status:`persisted`,revision:a.revision,writeId:a.writeId}:{status:`conflict`};if(!(a?a.revision===n.expectedRevision&&(n.expectedWriteId===void 0||a.writeId===n.expectedWriteId)||n.expectedWriteIds?.includes(a.writeId)===!0:n.expectedRevision===0&&n.expectedWriteId===void 0)||(a?.revision??0)>t.revision)return r.transaction.abort(),{status:`conflict`};let o=Date.now(),s={key:i,ownerKey:xm(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}:{},...t.replyTarget?{replyTarget:{...t.replyTarget}}:{},...t.modelSelection?{modelSelection:{...t.modelSelection}}:{},attachments:t.attachments,...t.questionDrafts?.length?{questionDrafts:t.questionDrafts}:{},updatedAt:o,writeId:n.writeId};return r.put(s),await Dm(r,s.ownerKey,o),await H(r.transaction),X(),{status:`persisted`,revision:t.revision,writeId:n.writeId}})}async function Pm(e,t=0,n){return bm(async r=>{let i=Date.now(),a=await Fm(r,e,t,n,i);return a.status===`conflict`?(r.transaction.abort(),a):(await Dm(r,xm(e),i),await H(r.transaction),X(),a)})}async function Fm(e,t,n,r,i){t.scopeKey.startsWith(zm)&&await Fm(e,{...t,scopeKey:`questions:v1:${t.scopeKey}`},n,r,i);let a=Q(t),o=Z(await V(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:xm(t),gatewayOwner:t.gatewayOwner,recoveryScope:t.recoveryScope,scopeKey:t.scopeKey,revision:s,text:``,attachments:[],questionDrafts:void 0,updatedAt:i,writeId:c}),{status:`persisted`,revision:s,writeId:c}}async function Im(e,t){return(await bm(async n=>{let r=Date.now();for(let i of t)await Fm(n,{...e,scopeKey:i.scopeKey},i.minimumRevision,i.retireBeforeRevision,r);return await Dm(n,xm(e),r),await H(n.transaction),X(),{status:`completed`}})).status}var Lm,Rm,zm,Bm,Vm,Hm,Um,Wm;function Gm(){return(Gm=e((()=>{mm(),_m(),Ba(),jo(),Lm=`composerDrafts`,Rm=`ownerKey`,zm=`chat:v3:`,Bm=6048e5,Vm=20,Hm=26214400,Um=0,Wm=null})))()}var Km,qm;function Jm(){return(Jm=e((()=>{o(),Km={cron:{suggestions:{title:`Starter automations`,schedules:{weekdayMornings:`Weekdays at 9:00 AM`,everyMorning:`Daily at 8:00 AM`,weekly:`Mondays at 9:00 AM`,hourly:`Every hour`},ideas:{repoPulse:{name:`Repo pulse`,tagline:`Overnight issues, PRs, and CI failures, ranked by urgency.`,prompt:`Review overnight activity in my repositories: new issues, pull requests, and CI failures. Summarize the three things that most need my attention today, each with a link and a one-line reason.`},standupGhostwriter:{name:`Standup ghostwriter`,tagline:`Your standup update, drafted from yesterday's work.`,prompt:`Draft my standup update from yesterday's commits, merged pull requests, and open review threads. Three bullets max: done, doing, blocked.`},hackerNewsScout:{name:`Hacker News scout`,tagline:`Three links worth your coffee, with hot takes.`,prompt:`Scan today's Hacker News front page for posts about AI agents, developer tooling, and TypeScript. Send me the three most interesting links, each with a one-line hot take.`},dependencyRadar:{name:`Dependency radar`,tagline:`Outdated or vulnerable dependencies, with upgrade notes.`,prompt:`Check my main project for outdated or vulnerable dependencies. List the notable updates with a one-line risk note each, and draft the upgrade command.`},watchdog:{name:`Night watch`,tagline:`Hourly health check with a one-line verdict.`,prompt:`Check that my services and gateway are healthy: scan recent logs for new errors, restarts, or unusual load. Reply with a single short all-clear line when everything is fine; if something looks broken, report what failed and where to start looking.`},polyglotMinute:{name:`Polyglot minute`,tagline:`One useful foreign phrase with your morning coffee.`,prompt:`Teach me one useful phrase in Japanese: the phrase, how to pronounce it, its literal meaning, and when to use it. Keep it under five lines.`}}},list:{viewLabel:`Automation views`,sessionFilter:`Automations attached to this session.`,showAll:`Show all automations`,searchPlaceholder:`Search automations`,newTask:`New automation`,filters:`Filters`,shownOf:`{shown} of {total}`,emptyTitle:`No automations yet`,emptyHint:`Describe what OpenClaw should do and when — it runs on schedule.`,noMatching:`No automations match the current filters.`,loadMore:`Load more`,loading:`Loading...`,schedulerOff:`Scheduler disabled`,refresh:`Refresh`,refreshing:`Refreshing...`,paused:`Paused`,autoDisabledRunFailures:`Auto-disabled · {count} run failures`,autoDisabledScheduleErrors:`Auto-disabled · {count} schedule errors`,tasksTab:`Automations`,activityTab:`Run history`}}},qm=Object.assign(()=>{Object.assign(b.cron,Km.cron)},{catalog:Km})})))()}export{$f as $,oa as $i,Nc as $n,xo as $r,Su as $t,Tp as A,Mr as Aa,Da as Ai,vl as An,As as Ar,Td as At,gp as B,ca as Bi,il as Bn,ss as Br,cd as Bt,Fp as C,Jr as Ca,V as Ci,kl as Cn,Ks as Cr,Id as Ct,Np as D,Ir as Da,wa as Di,xl as Dn,Ns as Dr,kd as Dt,kp as E,Rr as Ea,Na as Ei,wl as En,Is as Er,Ld as Et,vp as F,kr as Fa,ya as Fi,fl as Fn,js as Fr,hd as Ft,op as G,gi as Gi,qc as Gn,ds as Gr,rd as Gt,mp as H,Di as Hi,rl as Hn,as as Hr,od as Ht,hp as I,Tr as Ia,ga as Ii,dl as In,rs as Ir,ld as It,tp as J,zi as Ji,Gc as Jn,Ro as Jr,bu as Jt,ip as K,Li as Ki,Wc as Kn,$o as Kr,Uu as Kt,dp as L,wr as La,ha as Li,ll as Ln,Es as Lr,dd as Lt,Op as M,jr as Ma,xa as Mi,hl as Mn,Os as Mr,Cd as Mt,Ep as N,Ar as Na,Sa as Ni,gl as Nn,Ms as Nr,wd as Nt,Dp as O,Pr as Oa,Aa as Oi,Sl as On,Ps as Or,Od as Ot,yp as P,Or as Pa,va as Pi,pl as Pn,ks as Pr,vd as Pt,Wf as Q,Pi as Qi,Pc as Qn,Go as Qr,Du as Qt,pp as R,ma as Ri,cl as Rn,ps as Rr,ud as Rt,zp as S,qr as Sa,Ba as Si,zl as Sn,Hs as Sr,jd as St,Pp as T,Ur as Ta,Oa as Ti,Tl as Tn,Vs as Tr,Fd as Tt,up as U,ji as Ui,Yc as Un,ls as Ur,ad as Ut,lp as V,B as Vi,al as Vn,ms as Vr,sd as Vt,sp as W,Hi as Wi,Jc as Wn,us as Wr,id as Wt,np as X,Ni as Xi,Vc as Xn,Uo as Xr,nd as Xt,ep as Y,Ri as Yi,Bc as Yn,Bo as Yr,wu as Yt,Gf as Z,Ii as Zi,Uc as Zn,Xo as Zr,Ju as Zt,Wp as _,ei as _a,Ga as _i,Ql as _n,K as _r,Gd as _t,Im as a,mi as aa,ro as ai,Mu as an,jc as ar,Kf as at,Y as b,Xr as ba,Wa as bi,Bl as bn,Js as br,Bd as bt,cm as c,di as ca,vo as ci,_u as cn,Ac as cr,Nf as ct,im as d,si as da,uo as di,ou as dn,cc as dr,Of as dt,Vi as ea,mo as ei,qu as en,bc as er,Ff as et,tm as f,ii as fa,so as fi,fu as fn,uc as fr,yf as ft,Ip as g,ni as ga,Ja as gi,Vl as gn,Zs as gr,qd as gt,Zp as h,ri as ha,qa as hi,lu as hn,oc as hr,Wd as ht,Gm as i,hi as ia,jo as ii,Gu as in,zc as ir,Lf as it,Ap as j,Er as ja,Ta as ji,ml as jn,Ds as jr,Dd as jt,jp as k,Fr as ka,Ea as ki,yl as kn,Fs as kr,Ed as kt,sm as l,fi as la,po as li,gu as ln,Tc as lr,jf as lt,nm as m,ai as ma,eo as mi,cu as mn,lc as mr,Kd as mt,qm as n,Bi as na,io as ni,Qu as nn,Ec as nr,Zf as nt,dm as o,li as oa,co as oi,Cu as on,vc as or,Uf as ot,Xp as p,oi as pa,bo as pi,su as pn,sc as pr,Jd as pt,rp as q,Mi as qi,Hc as qn,Qo as qr,$u as qt,vm as r,Ai as ra,W as ri,Xu as rn,Oc as rr,Jf as rt,um as s,pi as sa,G as si,vu as sn,_c as sr,Pf as st,Jm as t,Ui as ta,ho as ti,Ku as tn,kc as tr,qf as tt,am as u,ci as ua,fo as ui,hu as un,yc as ur,Af as ut,qp as v,Qr as va,Ka as vi,ql as vn,Xs as vr,Ud as vt,Lp as w,Hr as wa,H as wi,El as wn,Ls as wr,Ad as wt,Hp as x,$r as xa,Ha as xi,Rl as xn,Gs as xr,Pd as xt,Rp as y,Zr as ya,Ua as yi,Kl as yn,Ys as yr,Hd as yt,fp as z,la as zi,ol as zn,Ss as zr,pd as zt};