openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
266 lines • 55.6 kB
JavaScript
import{n as e}from"./rolldown-runtime-8BhlS34s.js";import{Ac as t,Bl as n,Eu as r,Lc as i,Qs as a,Sl as o,Su as s,Tu as c,Uc as l,Ul as u,W as d,Ys as f,_u as p,bu as m,cl as h,ft as g,il as _,iu as ee,ju as v,k as y,kc as b,kt as te,lu as ne,mt as re,nc as ie,nl as ae,nu as oe,uu as se,wt as ce,xu as le,z as ue}from"./control-ui-core-BncvAZjR.js";import{Ai as de,B as fe,H as pe,J as me,La as he,Na as ge,Qi as x,Ti as _e,U as ve,V as ye,Wr as be,Xi as xe,Yr as Se,Zi as S,Zr as Ce,aa as we,ai as Te,ba as Ee,bi as De,bo as Oe,cr as ke,ea as Ae,gr as je,ia as Me,mo as Ne,na as C,q as Pe,ra as w,sr as T,vo as Fe,wa as Ie,wi as Le,xi as Re,xo as ze,xr as Be,za as Ve}from"./control-ui-core-9qYjK5B2.js";import{$ as E,F as He,M as Ue,Q as We,X as D,Y as O,ct as k,nt as Ge,tt as Ke,ut as A}from"./lit-runtime-B8uOr6OX.js";import"./control-ui-boot-shared-umGE-sEP.js";import{J as qe}from"./control-ui-boot-chat-VeeaXyJz.js";import{d as Je,l as Ye}from"./gateway-runtime-Cr51Pi7N.js";import{Fo as Xe,Io as Ze,Po as Qe,To as j,jo as M,wo as N}from"./control-ui-boot-shared-DJkUdZmL.js";import{Do as P,Xr as $e,Zr as et,ii as F,wo as I}from"./ui-DuRgK6kL.js";import{Ci as tt,Dr as nt,Or as rt,Ti as it,ct as L,ut as at}from"./control-ui-boot-shared-xfDhIVun.js";import{Ar as ot,At as st,Hc as ct,M as lt,Qa as ut,Uc as dt,_r as ft,eo as R,fr as pt,gr as mt,hr as ht,j as gt,kr as _t,kt as vt}from"./control-ui-boot-shared-D3oo_6Fq.js";import{at as yt}from"./control-ui-boot-shared-D4XEBdOG.js";import{N as bt,P as xt}from"./markdown-runtime-ORQpioyT.js";import"./control-ui-boot-shared-styles-BaQ2sAfZ.js";import{_ as St,g as Ct,v as wt}from"./control-ui-boot-chat-DxoNF0Ad.js";import{B as Tt,C as Et,E as Dt,F as Ot,I as z,K as kt,L as At,M as jt,N as Mt,P as Nt,T as Pt,ct as Ft,dt as It,lt as Lt,q as Rt,ut as zt,w as Bt}from"./control-ui-boot-new-CxgnwT6A.js";import{n as Vt,t as Ht}from"./transcript-search-C_sHjcNy.js";import"./control-ui-boot-new-styles-Bb6Ub5D3.js";import{n as Ut,t as Wt}from"./en-apps-BZRaTvSe.js";import{a as Gt,o as Kt}from"./settings-targets-B_ZHOn2L.js";import{n as qt,t as Jt}from"./consent-dialog-qHYDRXx-.js";var B;function V(){return(V=e((()=>{B=class{constructor(e,t,n){this.read=e,this.restore=t,this.notify=n,this.remember=!1,this.saving=!1,this.failed=!1,this.selection=null,this.edited=!1,this.scope=``,this.generation=0,this.pending=null}get available(){let{draft:e}=this.read();return e?.gateway.connected===!0&&e.gateway.preferenceState?.mode===`remote`}begin(){if(this.saving||this.failed){this.restore(this.selection);return}this.edited=!1,this.observed=void 0,this.selection=null,this.remember=!1,this.failed=!1,this.synchronize()}synchronize(){let{draft:e,context:t}=this.read();if(!e||!t)return;let n=t.gateway,r=JSON.stringify([n.connection.gatewayUrl,n.snapshot.selfUser?.id??``,n.snapshot.hello?.auth?.recoveryScope??``]);n.snapshot.phase===`connected`&&(this.scope!==r||this.source!==n)&&(this.scope=r,this.source=n,this.generation+=1,this.edited=!1,this.observed=void 0,this.saving=!1,this.failed=!1,this.remember=!1,this.selection=null,this.pending=null);let i=e.gateway.preferenceState;if(i!==this.binding){let e=this.saving;this.binding=i,this.observed=void 0,this.generation+=1,this.saving=!1,e&&(this.failed=!0,this.remember=!1,this.notify())}let a=i?.mode===`remote`?i.palettePreference:null;this.observed!==a&&i?.mode!==`loading`&&e.agentsReady()&&(this.observed=a,!(this.edited||e.submission.submitting||e.submission.pendingPlacement.sessionKey||e.submission.submissionOutcomeUnknown)&&(this.selection=a,this.remember=this.selection!==null,this.restore(this.selection),this.notify()))}changed(){this.edited=!0,this.selection=this.capture(),this.failed&&this.pending&&(this.pending=this.selection),this.remember&&this.save(this.selection),this.notify()}setRemember(e){this.available&&(this.edited=!0,this.remember=e,this.selection=e?this.capture():null,e||this.restore(null),this.save(this.selection),this.notify())}retry(){this.failed&&this.available&&this.save(this.pending)}capture(){let e=this.read().draft?.place;if(!e?.agentId)return null;let t=e.preferenceSelection();return delete t.worktreeName,{agentId:e.agentId,selection:t}}async save(e){let{draft:t}=this.read();if(!t)return;let n=++this.generation,r=t.gateway.preferenceState;this.pending=e,this.saving=!0,this.failed=!1;let i=await t.gateway.savePalettePreference(e);n===this.generation&&r===t.gateway.preferenceState&&(this.saving=!1,this.failed=!i,!i&&e&&!r?.palettePreference&&(this.remember=!1),i&&(this.remember=e!==null),this.notify())}}})))()}var H,U;function Yt(){return(Yt=e((()=>{O(),Ue(),Me(),w(),xe(),L(),r(),N(),Xe(),m(),kt(),Et(),Pt(),Ze(),j(),H=we(Ke`<path d="M4 7h8m4 0h4M4 17h2m4 0h10"/><circle cx="14" cy="7" r="2"/><circle cx="8" cy="17" r="2"/>`),U=class{constructor(e,t){this.host=e,this.id=t,this.open=!1,this.places=!1,this.query=``}close(){this.open=!1,this.places=!1,this.query=``,this.host.requestUpdate()}async showPlaces(e,t=!1){this.places=e,this.query=``,this.host.requestUpdate(),await this.host.updateComplete;let n=e?t?`back`:`search`:`workspace`;this.host.querySelector(`.palette-session-settings__`+n)?.focus({preventScroll:!0})}keydown(e){if(e.defaultPrevented||e.isComposing||e.keyCode===229||e.composedPath().some(e=>e instanceof Element&&e.matches(`wa-dropdown[open]`)))return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),this.places?this.showPlaces(!1):(this.close(),this.host.querySelector(`#`+this.id+`-settings-trigger`)?.focus({preventScroll:!0}));return}if(![`ArrowDown`,`ArrowUp`].includes(e.key)||!(e.currentTarget instanceof HTMLElement)||e.composedPath().some(e=>e instanceof Element&&e.tagName===`WA-DROPDOWN`))return;let t=[...e.currentTarget.querySelectorAll(`button:not(:disabled), input:not(:disabled)`)],n=t.findIndex(e=>e===this.host.ownerDocument.activeElement);t.length&&(e.preventDefault(),e.stopPropagation(),t[(n+(e.key===`ArrowDown`?1:-1)+t.length)%t.length]?.focus())}render(e){let{draft:t,context:n,preferences:r,onChange:i}=e,{place:a,gateway:o,submission:s}=t,c=s.submitting||!!s.pendingPlacement.sessionKey||!!s.submissionOutcomeUnknown,l=Dt({environments:a.canWrite()?o.environments:[],cloudProfiles:a.isAdmin()?o.cloudProfiles:[],cloudProfileId:a.cloudProfileId,...a.cloudSelection,deviceId:a.deviceId,autoDevice:a.autoDevice,devicePlacement:a.devicePlacementRuntime()?.devicePlacement,deviceDisabledReason:a.modelControl.devicePlacementUnsupportedReason()??o.deviceCatalogDisabledReason}),u=l.kind===`local`?o.gatewayName||v(`newSession.local`):l.label,d=[l.operatingSystems.find(e=>e.id===l.selectedOsId)?.label,l.cloudMachines.find(e=>e.id===l.selectedMachineId)?.label].filter(Boolean).join(` · `),f=Rt({folder:a.folder,workspace:a.workspacePath(),projectId:t.browser.projectId,selectedRemoteProject:t.browser.remoteProject,projects:t.browser.projects,recents:[],projectQuery:``,freshWorkspace:a.freshWorkspace}),m=[{id:`local`,label:o.gatewayName||v(`newSession.local`),remote:!1,selected:!a.remotePlacement,select:()=>a.selectDevice(``)},...l.devices.map(e=>({id:`device:`+e.deviceId,label:e.label,remote:!0,selected:a.deviceId===e.deviceId,disabledReason:e.disabledReason,select:()=>a.selectDevice(e.deviceId)})),...l.devices.length?[{id:`auto-device`,label:v(`newSession.autoDevice`),remote:!0,selected:a.autoDevice,disabledReason:l.autoDeviceDisabledReason,select:()=>a.selectDevice(``,!0)}]:[],...l.cloudProfiles.map(e=>({id:`cloud:`+e.id,label:v(`newSession.cloudWorker`,{profile:e.id}),remote:!0,selected:a.cloudProfileId===e.id,disabledReason:a.modelControl.cloudRuntimeUnsupportedReason(e),select:()=>a.selectCloudProfile(e.id)}))],h=(e,t)=>{c||e.disabledReason||(e.select(),t?a.selectProjectId(t):e.remote?a.selectNewWorkspace():a.applyFolder(a.workspacePath()),i(),this.showPlaces(!1))},g=this.query.trim().toLocaleLowerCase(),_=m.map(e=>({machine:e,choices:[{id:``,label:e.remote?v(`newSession.newWorkspace`):ie(a.workspacePath())||v(`newSession.folderPlaceholder`)},...t.browser.projects.map(e=>({id:e.id,label:e.displayName}))].filter(t=>!g||(e.label+` `+t.label).toLocaleLowerCase().includes(g))})).filter(e=>e.choices.length);return E`
<button
id=${this.id+`-settings-trigger`}
class="palette-session-settings__trigger"
type="button"
aria-label=${v(`commandPalette.newSessionSettings`)}
title=${v(`commandPalette.newSessionSettings`)}
aria-haspopup="dialog"
aria-expanded=${String(this.open)}
>
${H}
</button>
<wa-popover
${He(at)}
class="palette-session-settings"
for=${this.id+`-settings-trigger`}
placement="bottom-end"
without-arrow
.open=${this.open}
@wa-show=${e=>{e.target===e.currentTarget&&(this.open=!0,this.host.requestUpdate())}}
@wa-hide=${e=>{e.target===e.currentTarget&&this.close()}}
>
<div
class="palette-session-settings__content"
@keydown=${e=>this.keydown(e)}
>
${this.places?E`
<div class="palette-session-settings__heading">
<button
type="button"
class="palette-session-settings__back"
aria-label=${v(`common.back`)}
@click=${()=>this.showPlaces(!1)}
>
${C.arrowLeft}</button
><span>${v(`newSession.projects`)}</span>
</div>
<input
class="palette-session-settings__search"
type="search"
aria-label=${v(`common.search`)}
placeholder=${v(`common.search`)}
.value=${this.query}
@input=${e=>{e.currentTarget instanceof HTMLInputElement&&(this.query=e.currentTarget.value,this.host.requestUpdate())}}
/>
<div class="palette-session-settings__choices">
${_.map(({machine:e,choices:n})=>E` <section aria-label=${e.label}>
<div class="palette-session-settings__machine">${e.label}</div>
${n.map(n=>{let r=e.selected&&(n.id?t.browser.projectId===n.id:!t.browser.projectId&&(e.remote?a.freshWorkspace:a.folder===a.workspacePath()));return E`<button
type="button"
class="palette-session-settings__row"
data-machine=${e.id}
data-project=${n.id}
aria-pressed=${String(r)}
title=${e.disabledReason??D}
?disabled=${c||!!e.disabledReason}
@click=${()=>h(e,n.id)}
>
<span class="palette-session-settings__icon"
>${n.id?C.gitBranch:C.folder}</span
><span class="palette-session-settings__label">${n.label}</span
><span class="palette-session-settings__check"
>${r?C.check:D}</span
>
</button>`})}
${e.disabledReason?E`<div class="palette-session-settings__unavailable">${e.disabledReason}</div>`:D}
</section>`)}
${_.length?D:E`<div class="palette-session-settings__unavailable">${v(`newSession.environmentSearchEmpty`)}</div>`}
${o.cloudProfilesPending?E`<div role="status" class="palette-session-settings__unavailable">${v(`common.loading`)}</div>`:D}
</div>
${a.isAdmin()?E`<button class="palette-session-settings__row" type="button" ?disabled=${c} @click=${e.onConnectMachine}><span class="palette-session-settings__icon">${C.plus}</span><span>${v(`newSession.connectMachine`)}</span></button>`:D}
`:E`
<div class="palette-session-settings__title">
${v(`commandPalette.newSessionSettings`)}
</div>
<div class="palette-session-settings__agent">
${Bt({agents:a.agents(),variant:`default`,agentId:a.agentId,agentIdentity:n?.agentIdentity,disabled:c,onSelect:e=>{a.selectAgentId(e),i()},onOpenChange:e.onAgentPickerOpen})}
</div>
<button
class="palette-session-settings__row palette-session-settings__workspace"
type="button"
?disabled=${c}
@click=${e=>this.showPlaces(!0,e.detail>0)}
>
<span class="palette-session-settings__icon">${C.folder}</span
><span class="palette-session-settings__copy"
><span class="palette-session-settings__label">${f.label}</span
><span class="palette-session-settings__secondary"
>${u}${d?` · `+d:``}</span
></span
><span class="palette-session-settings__chevron">${C.chevronRight}</span>
</button>
${a.checkoutVisible&&!a.remoteRepository?E`<button
class="palette-session-settings__row palette-session-settings__worktree"
type="button"
role="switch"
aria-checked=${String(a.worktree)}
aria-label=${v(`newSession.checkoutWorktree`)}
title=${a.remotePlacement?v(`newSession.checkoutRemoteLocked`):a.worktreeAvailable()?D:v(`newSession.gitCheckUnavailable`)}
?disabled=${c||a.remotePlacement}
@click=${()=>{a.selectWorktree(!a.worktree),i()}}
>
<span class="palette-session-settings__icon">${C.gitBranch}</span
><span>${v(`newSession.checkoutWorktree`)}</span
><span class="palette-session-settings__switch" aria-hidden="true"></span>
</button>`:D}
`}
${!this.places||r.failed?E`<div class="palette-session-settings__footer">
${this.places?D:E`<label
class="palette-session-settings__remember"
title=${r.available?D:v(`commandPalette.rememberUnavailable`)}
><input
type="checkbox"
.checked=${r.remember}
?disabled=${c||!r.available}
@change=${e=>{e.currentTarget instanceof HTMLInputElement&&r.setRemember(e.currentTarget.checked)}}
/><span
>${Ae(v(`commandPalette.rememberSettings`,{shortcut:`{shortcut}`}),x(p.commandPalette,{inline:!0}))}</span
></label
>`}
${r.failed?E`<div class="palette-session-settings__error" role="alert">${v(`commandPalette.settingsSaveFailed`)} <button type="button" class="btn btn--sm" @click=${()=>r.retry()}>${v(`common.retry`)}</button></div>`:D}
</div>`:D}
</div>
</wa-popover>
`}}})))()}var Xt;function Zt(){return(Zt=e((()=>{O(),De(),ke(),r(),N(),f(),i(),ne(),t(),_t(),L(),mt(),Lt(),Ot(),jt(),At(),V(),Yt(),j(),Xt=class e{static{this.nextId=0}constructor(t,n,r){this.host=t,this.read=n,this.callbacks=r,this.agentPickerOpen=!1,this.idPrefix=`palette-session-${++e.nextId}`,this.pasteImages=e=>{this.synchronizePresentationScope();let t=this.attachmentProps();this.read().open&&!this.messageLocked&&t&&ht(e,t,{imagesOnly:!0})},this.preferences=new B(()=>({draft:this.draft,context:this.read().context}),e=>this.restoreSettings(e),()=>t.requestUpdate()),this.settings=new U(t,this.idPrefix),this.connectMachine=new Ft(()=>({client:this.draft?.gateway.client??null,connected:this.draft?.gateway.connected??!1}),()=>t.requestUpdate()),this.subscriptions=new b(t).watchStore(()=>this.draft&&this.read().context?.agents).watchStore(()=>this.draft&&this.read().context?.agentIdentity).watchStore(()=>this.draft&&this.read().context?.sessions).watch(()=>this.draft&&this.read().context?.config,(e,t)=>e.subscribe(()=>t())),t.addController(this)}get message(){return this.draft?.submission.message??``}get mentions(){return this.draft?.submission.mentions??[]}get mentionDirectory(){return this.draft&&this.read().open&&!this.messageLocked?Mt({context:this.read().context,agentId:this.draft.place.agentId,draftOwnerKey:this.idPrefix,visibility:this.draft.submission.visibility}):void 0}get submitting(){return this.draft?.submission.submitting??!1}get messageLocked(){return this.submitting||!!(this.coldSubmitReadSignal||this.draft?.submission.pendingPlacement.sessionKey)}get hasPrompt(){return!!(this.message.trim()||this.draft?.submission.attachmentDraft.attachments.length)}get canSubmit(){return!this.coldSubmitReadSignal&&this.hasPrompt&&!!this.draft?.submission.canSubmit()}get error(){let e=this.draft?.submission;return e?.error??e?.blockedSubmitNotice()??(e?.submissionOutcomeUnknown?e.submitDisabledReason():null)??(this.preferences.failed?v(`commandPalette.settingsSaveFailed`):null)}get disabledReason(){return this.draft?.submission.submitDisabledReason()}setMessage(e,t){this.draft&&!this.messageLocked&&((e!==this.message||t!==void 0&&t!==this.mentions)&&(this.rejectedOpen=void 0,this.draft.submission.clearError()),this.draft.submission.setMessage(e,t))}attachmentProps(){let e=this.draft?.submission.attachmentDraft;if(!e)return;let t=e.reads.readSignal;return{uploadConfig:this.read().context?.config,attachments:e.attachments,attachmentReads:e.reads,attachmentLimits:ot(this.read().context?.gateway.snapshot.hello?.policy),disabled:this.messageLocked,getAttachments:()=>e.attachments,readSignal:t,onPendingReadsChange:n=>e.reads.updatePending(t,n),onAttachmentsChange:n=>{t.aborted||!this.read().open||this.submitting||this.draft?.submission.pendingPlacement.sessionKey||(this.rejectedOpen=void 0,this.draft?.submission.clearError(),e.replace(n))}}}adoptImageFiles(e,t=!1){let n=this.attachmentProps();if(!this.read().open||this.messageLocked||!n)return;let r=pt(e,n);t&&r===e.length&&(this.coldSubmitReadSignal=n.readSignal,this.host.requestUpdate())}renderAttachments(){let e=this.attachmentProps(),t=e?ft(e):D;return t===D?D:E`<div class="cmd-palette__attachments">${t}</div>`}open(){if(this.synchronizePresentationScope(),this.draft&&(this.submitting||this.draft.submission.pendingPlacement.sessionKey||this.draft.submission.submissionOutcomeUnknown||this.draft.submission.error))return;let e=this.read().context?.agentSelection.state.selectedId??``;this.data={agentId:e,requestedAgentId:e,catalogId:``,catalogLabel:``,startTerminal:!1},this.draft||=new Nt(this.host,()=>({context:this.read().context,data:this.data,isConnected:this.host.isConnected}),{requestUpdate:()=>this.host.requestUpdate(),onMessageChange:e=>this.callbacks.onMessageChange?.(e),querySelector:e=>this.host.querySelector(e),activeElement:()=>this.host.ownerDocument.activeElement,body:()=>this.host.ownerDocument.body,pickerIdPrefix:this.idPrefix,preferenceScope:`palette`,readPalettePreference:()=>this.preferences.selection,closeTransientUi:()=>z(this.host),onInvalidate:()=>this.connectMachine.close(),onRecoveryReady:(e,t)=>this.bindOwner(e,t),onAccepted:e=>this.accepted(e),retainRejectedPrompt:!0}),this.rejectedOpen=void 0,this.coldSubmitReadSignal=void 0,this.draft.place.resetDraft(),this.draft.submission.resetDraft(),this.draft.place.setAgentsHydrated(this.draft.agentsReady()),this.preferences.begin(),this.draft.place.adoptAgentDefaults(),this.host.requestUpdate()}close(){this.coldSubmitReadSignal=void 0;let e=this.draft?.submission;e&&!this.submitting&&!e.pendingPlacement.sessionKey&&!e.submissionOutcomeUnknown&&!e.error?e.attachmentDraft.reset({release:!0}):e?.attachmentDraft.reads.abortReads(),this.settings.close(),this.draft?.browser.close(),this.connectMachine.close(),z(this.host)}async submit(){this.synchronizePresentationScope(),this.read().open&&!this.coldSubmitReadSignal&&this.hasPrompt&&this.draft&&await this.draft.submission.submit(void 0,!0)}hostUpdate(){this.synchronizePresentationScope()}synchronizePresentationScope(){let e=this.read().context?.gateway,t=e?T(e):void 0,n=this.presentationScope!==void 0&&this.presentationScope!==t;this.presentationScope=t,n&&(this.close(),this.rejectedOpen=void 0,this.owner=void 0,this.draft?.gateway.invalidateDiscovery(!0,`gateway-changed`),this.draft?.submission.releasePendingPlacementOwner(),this.draft?.submission.resetDraft(),this.draft?.submission.restoreMessage(``),this.callbacks.onMessageChange?.(``))}hostUpdated(){let e=this.draft;if(!e)return;this.connectMachine.open&&!e.place.isAdmin()&&this.connectMachine.close(),this.preferences.synchronize(),e.synchronizeSelections(),e.submission.resumeInterruptedSubmission();let t=e.submission.attachmentDraft;if(this.coldSubmitReadSignal&&(this.coldSubmitReadSignal.aborted||t.reads.pendingReads===0)){let e=!this.coldSubmitReadSignal.aborted&&!t.reads.project(t.attachments).some(e=>e.state===`error`);this.coldSubmitReadSignal=void 0,this.host.requestUpdate(),e&&this.submit()}this.read().open&&this.read().context?.agentIdentity.ensure(this.agentPickerOpen?e.place.agents().map(e=>e.id):[e.place.agentId])}hostDisconnected(){this.disconnect()}disconnect(){this.close(),this.subscriptions.clear(),this.draft?.disconnect()}renderControls(){let e=this.draft;return e?this.settings.render({draft:e,context:this.read().context,preferences:this.preferences,onAgentPickerOpen:e=>{this.agentPickerOpen=e,this.host.requestUpdate()},onChange:()=>this.preferences.changed(),onConnectMachine:()=>{e.place.isAdmin()&&(this.settings.close(),e.browser.close(),this.connectMachine.start())}}):D}restoreSettings(e){if(!this.draft||!this.data||this.messageLocked)return;let t=this.read().context?.agentSelection.state.selectedId??``,n=e?.agentId??t;this.data={...this.data,agentId:n,requestedAgentId:n},this.draft.place.resetDraft(),this.draft.place.setAgentsHydrated(this.draft.agentsReady()),this.draft.place.adoptAgentDefaults(),this.draft.place.restorePreferenceSelections()}renderRecovery(){return this.rejectedOpen?E`<button class="btn btn--sm" type="button" @click=${this.rejectedOpen}>
${v(`sessionsView.openSession`)}
</button>`:D}renderAuxiliary(){return this.connectMachine.render(this.read().open&&(this.draft?.place.isAdmin()??!1),()=>{this.callbacks.onClose(),this.read().context?.navigate(`devices`)})}bindOwner(e,t){let n=this.read().context?.gateway;n&&(this.owner&&(this.owner.gateway!==n||this.owner.url!==e||this.owner.scope!==t)&&(this.rejectedOpen=void 0,this.draft?.submission.restoreMessage(``)),this.owner={gateway:n,url:e,scope:t})}accepted(e){let t=this.read().context;if(!t)return;let{gateway:n}=t,r=Tt(t),i=t.sessions.state.result?.sessions.find(t=>t.key===e.key),o=e.initialRun.status===`rejected`?e.initialRun.error:v(e.initialRun.status===`started`?`sessionsView.statusRunning`:`sessionsView.statusIdle`),s=()=>{this.read().context===t&&r()&&(Re({selection:t.agentSelection,gateway:n,sessionKey:e.key,agentId:e.agentId}),t.navigate(`chat`,l({context:t,face:`chat`,sessionKey:e.key,agentId:e.agentId}).options),e.initialRun.status===`rejected`&&this.callbacks.onClose())};se({fifo:!0,message:`${a(e.key,i)}: ${o}`,actionLabel:v(`sessionsView.openSession`),onAction:s}),e.initialRun.status===`rejected`?(this.rejectedOpen=s,this.host.requestUpdate()):this.callbacks.onClose()}}})))()}function Qt(e){let t=an.get(e);return t?v(t):e}function W(e,t,n,r={}){return{...r,id:`nav-${r.id??e}`,label:t,icon:n,category:`navigation`,action:`nav:${e}`}}function $t(e,t){return[W(`new-session`,v(`newSession.title`),`plus`),W(`sessions`,v(`palette.items.sessions`),`fileText`),W(`meetings`,v(`tabs.meetings`),`book`,{description:v(`subtitles.meetings`)}),W(`cron`,v(`palette.items.scheduled`),`scrollText`),W(`skills`,v(`palette.items.skills`),`zap`),W(`plugins`,v(`palette.items.plugins`),`plug`),W(`apps`,v(`palette.items.apps`),`layoutGrid`),W(`appearance`,v(`palette.items.settings`),`settings`,{id:`settings`}),W(`agents`,v(`palette.items.agents`),`folder`),{id:`slash:verbose`,label:`/verbose`,icon:`terminal`,category:`search`,action:`/verbose full`,description:v(`palette.descriptions.verboseMode`)},...e?[{id:`panel-desktop`,label:v(`palette.items.desktop`),icon:`monitor`,category:`navigation`,action:`panel:desktop`}]:[],...t?[{id:`panel-custodian`,label:v(`nav.askOpenClaw`),icon:`lobster`,category:`navigation`,action:`panel:custodian`}]:[]]}function en(e){let t=$t(e.desktopAvailable,e.custodianAvailable).filter(t=>e.includeSlashCommands||t.category!==`search`);if(!e.query)return t;let n=I(e.query),r=t=>{let r=I(t.label);return r===n?3:r.startsWith(n)?2:r.includes(n)||I(t.description).includes(n)||I(t.searchText).includes(n)||e.primaryModelSearch&&I(t.primaryModel).includes(n)?1:0},i=t.filter(e=>r(e)>0),a=e.catalogItems.map(e=>({item:e,rank:r(e)})).filter(({rank:e})=>e>0).toSorted((e,t)=>t.rank-e.rank||e.item.label.localeCompare(t.item.label)).slice(0,on).map(({item:e})=>e);return[...e.sessionItems,...i,...a]}function tn(e,t=null){let n=Ve(e,t).flatMap(e=>e.routes).concat(Ee).map(e=>({id:`settings-${e}`,label:ge(e),icon:`settings`,category:`settings`,action:`nav:${e}`,description:he(e),searchText:e})),r=sn.map(e=>({id:`app-${e}`,label:v(`appsPage.cards.${e}.title`),icon:`layoutGrid`,category:`apps`,action:`nav:apps`,description:v(`appsPage.cards.${e}.desc`),searchText:e})),i=Gt.meetingCapture;return[...n,...e?[{id:`settings-meeting-capture`,label:v(i.labelKey),icon:`settings`,category:`settings`,action:`nav:${i.routeId}`,search:i.search,hash:i.hash,searchText:i.aliases}]:[],...r]}async function nn(e){let t=async(t,n)=>e.methodAvailable(t)?e.client.request(t,n).catch(()=>null):null,[n,r,i,a]=await Promise.all([e.agents().catch(()=>null),e.methodAvailable(`cron.list`)?re(e.client).catch(()=>null):null,t(`skills.status`,{agentId:e.agentId}),t(`plugins.list`,{})]);return[...(n?.agents??[]).map(e=>({id:`agent-${e.id}`,label:e.identity?.name??e.name??e.id,icon:`bot`,category:`agents`,action:`nav:agents`,agentId:e.id,description:e.id,searchText:[e.id,e.workspace,e.identity?.theme].filter(Boolean).join(` `),primaryModel:e.model?.primary})),...(r?.jobs??[]).map(e=>({id:`automation-${e.id}`,label:e.displayName??e.name,icon:`calendarClock`,category:`automations`,action:`nav:cron`,searchText:[e.id,e.declarationKey,e.name,e.agentId].filter(Boolean).join(` `)})),...(i?.skills??[]).map(e=>({id:`skill-${e.skillKey}`,label:e.name,icon:`zap`,category:`skills`,action:`nav:skills`,description:e.description,searchText:[e.skillKey,e.source].filter(Boolean).join(` `)})),...(a?.plugins??[]).map(e=>({id:`plugin-${e.id}`,label:e.name,icon:`plug`,category:`plugins`,action:e.installed?`nav:plugin-settings`:`nav:plugins`,pluginId:e.id,catalogId:e.installed?void 0:e.catalogId,hasPluginIcon:e.hasIcon,description:e.description,searchText:[e.id,e.packageName,e.category,e.kind?.join(` `)].filter(Boolean).join(` `)}))]}function rn(e){return e.models.map(e=>({id:`model-${JSON.stringify([e.provider,e.id])}`,label:e.name||e.id,icon:`brain`,category:`models`,action:`nav:model-providers`,description:e.provider,searchText:[e.id,e.provider,e.alias,e.tags?.join(` `)].filter(Boolean).join(` `)}))}var an,on,sn;function G(){return(G=e((()=>{Ie(),r(),Wt(),N(),g(),Kt(),j(),Ut(),an=new Map([[`search`,`palette.categories.search`],[`navigation`,`palette.categories.navigation`],[`skills`,`palette.categories.skills`],[`agents`,`palette.items.agents`],[`apps`,`palette.items.apps`],[`automations`,`palette.items.scheduled`],[`models`,`routeTitles.modelProviders`],[`plugins`,`palette.items.plugins`],[`settings`,`palette.items.settings`],[`chats`,`sessionsView.title`],[`messages`,`palette.categories.messages`]]),on=10,sn=[`ios`,`android`,`appleWatch`,`wearOs`,`macos`,`windows`,`linux`,`chrome`,`plugins`]})))()}function cn(e){return I(e).replace(/[\p{P}\s]+/gu,` `).trim()}function ln(){return(ln=e((()=>{})))()}function un(e,t,n,r){let i=[r,e.label,e.subject,e.category],a=[...i,e.key,e.kind,e.model,e.modelProvider,e.owner?.actor.label,e.owner?.actor.id,e.createdActor?.label,e.createdActor?.id].map(e=>I(e)).filter(Boolean),o=n?i.map(cn):[];return a.some(e=>e===t)||o.some(e=>e===n)?3:a.some(e=>e.startsWith(t))||o.some(e=>e.startsWith(n))?2:a.some(e=>e.includes(t))||o.some(e=>e.includes(n))?1:0}function dn(e){let{visibleRows:t,visibleKeys:n,transcriptResult:r}=e,i=I(e.search),o=cn(e.search),s=qe(r?.results??[],e=>e.sessionKey),c=new Map(t.map(e=>[e.key,e]));for(let e of r?.sessions??[])c.has(e.key)||c.set(e.key,e);return[...c.values()].map(e=>{let t=a(e.key,e),r=un(e,i,o,t);return{row:e,label:t,rawMetadataRank:r,metadataRank:Math.max(+!!n.has(e.key),r),transcriptHit:s.get(e.key)}}).filter(({metadataRank:e,transcriptHit:t})=>e>0||t).toSorted((e,t)=>{let n=t.metadataRank-e.metadataRank;return n===0?(t.transcriptHit?.score??-1/0)-(e.transcriptHit?.score??-1/0)||(t.row.updatedAt??0)-(e.row.updatedAt??0):n}).slice(0,10).map(({row:e,label:t,rawMetadataRank:n,transcriptHit:r})=>({id:`session-${e.key}`,label:t,icon:`messageSquare`,category:r&&n===0?`messages`:`chats`,action:`${K}${e.key}`,session:e,description:r&&n===0?y(r.snippet.replace(/\s+/gu,` `).trim(),fn):void 0}))}var K,fn;function q(){return(q=e((()=>{ln(),d(),f(),K=`session:`,fn=160})))()}function J(e,t){let n=t.trim();return n?new RegExp(yt(n),`iu`).exec(e):null}function Y(e,t){let n=J(e,t),r=n?.index??-1;return n?E`${e.slice(0,r)}<mark>${e.slice(r,r+n[0].length)}</mark>${e.slice(r+n[0].length)}`:e}function pn(e,t){function n(e,n){return e&&J(e,t)&&!n?` (${e})`:``}function r(e){let i=[],a=!1;for(let o of e){if(o.nesting===-1)break;if(o.nesting===1||o.type===`image`){let s=r(o.type===`image`?(o.children??[]).values():e);switch(a||=s.matched,o.type){case`strong_open`:i.push(E`<strong>${s.parts}</strong>`);break;case`em_open`:i.push(E`<em>${s.parts}</em>`);break;case`s_open`:i.push(E`<s>${s.parts}</s>`);break;case`image`:case`link_open`:{let e=n(String(o.attrGet(o.type===`image`?`src`:`href`)??``),s.matched);i.push(...s.parts,Y(e,t)),a||=e.length>0;break}default:i.push(...s.parts)}}else o.type===`code_inline`?(i.push(E`<code>${Y(o.content,t)}</code>`),a||=J(o.content,t)!==null):o.type===`softbreak`||o.type===`hardbreak`?i.push(` `):(i.push(Y(o.content,t)),a||=J(o.content,t)!==null)}return{parts:i,matched:a}}return r((X.parseInline(e,{})[0]?.children??[]).values()).parts}function mn(e,t,n,r,i={},a){let o=e.session,s=o?.owner?.actor,c=n?_(n,r):void 0,l=e.pluginId;return E`
${n?E`<span class="cmd-palette__avatar" aria-hidden="true">
${it({id:n.id,avatar:ee(n,r),textAvatar:h(n,r)})}
${s?.id?E`<span class="cmd-palette__owner">${rt({...s,id:s.id})}</span>`:D}
</span>`:l?qt(l,e.label,{iconUrl:i[l],onIconError:()=>a?.(l),className:`cmd-palette__plugin-icon`}):E`<span class="nav-item__icon" aria-hidden="true">${C[e.icon]}</span>`}
<span class="cmd-palette__item-copy">
<span class="cmd-palette__item-heading">
<span class="cmd-palette__item-title">${Y(e.label,t)}</span>
${o?.updatedAt?E`<span class="cmd-palette__item-time">${ue(o.updatedAt,{fallback:``})}</span>`:D}
</span>
${o?E`<span class="cmd-palette__item-meta">${c}${s?.id?E`<span aria-hidden="true"> · </span>${v(`sessionsView.ownedBy`,{name:s.label||s.id})}`:D}</span>`:D}
${e.description?E`<span class="cmd-palette__item-desc">${o?pn(e.description,t):Y(e.description,t)}</span>`:D}
</span>
`}var X;function hn(){return(hn=e((()=>{O(),xt(),r(),ae(),oe(),d(),Jt(),w(),tt(),nt(),X=new bt({html:!1,linkify:!1}),X.normalizeLink=e=>e,X.normalizeLinkText=e=>e})))()}function gn(e){let t=new Map;for(let n of e){let e=t.get(n.category)??[];e.push(n),t.set(n.category,e)}return[...t.entries()]}function _n(e,t){if(!(t.draft.submitting||t.searchDebouncing)){if(e.action.startsWith(`nav:`)){let n=e.action.slice(4);e.agentId?t.onNavigate?.(n,{pathname:Fe(e.agentId,null,t.basePath)}):e.catalogId?t.onNavigate?.(n,{pathname:Oe(e.catalogId,t.basePath)}):e.pluginId&&n===`plugin-settings`?t.onNavigate?.(n,{pathname:ze(e.pluginId,t.basePath)}):e.search||e.hash?t.onNavigate?.(n,{search:e.search,hash:e.hash}):t.onNavigate?.(n)}else e.action.startsWith(`session:`)?t.onSelectSession?.(e.action.slice(K.length)):e.action===`panel:desktop`?window.dispatchEvent(new CustomEvent(Ce,{detail:{open:!0}})):e.action===`panel:custodian`?window.dispatchEvent(new CustomEvent(Se,{detail:{open:!0}})):t.onSlashCommand?.(e.action);t.onToggle()}}function vn(){requestAnimationFrame(()=>{document.querySelector(`.cmd-palette__item--active`)?.scrollIntoView({block:`nearest`})})}function yn(e,t){let n=t();if(e.defaultPrevented)return;if(n.composing||e.isComposing||e.keyCode===229){e.stopPropagation();return}if(!(e.target instanceof HTMLTextAreaElement)||e.target.id!==wn)return;if(e.key===`Enter`&&e.repeat){e.preventDefault();return}if(!n.draft.messageLocked&&!e.shiftKey&&!e.altKey&&!e.metaKey&&!e.ctrlKey&&n.mentionMenu.handleKeydown(e,n.mentionHost,n.requestUpdate)){e.stopPropagation();return}if(le(p.modifiedEnter,e)){e.preventDefault(),e.stopPropagation(),n.draft.submit();return}if(e.shiftKey||e.altKey||e.metaKey||e.ctrlKey)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),n.onToggle();return}if(n.draft.submitting)return;e.key===`Enter`&&n.searchDebouncing&&(n.onFlushSearch(),n=t());let{items:r,activeIndex:i}=Sn(n),a=n.searchDebouncing?[]:r;if(e.key===`Enter`){e.preventDefault();let t=a[i];t&&_n(t,n);return}if(a.length===0||n.query.includes(`
`)||e.key!==`ArrowDown`&&e.key!==`ArrowUp`)return;e.preventDefault();let o=e.key===`ArrowDown`?1:-1;n.onActiveIdChange(a[(i+o+a.length)%a.length].id),vn()}function bn(e){return`cmd-palette-option-${e}`}function xn(e,t){return t===`all`||e.category===(t===`sessions`?`chats`:`messages`)}function Sn(e){let t=e.promptMode||e.mentionMenu.open||e.draft.mentions.length>0,n=t?[]:en({...e,query:e.searchQuery,includeSlashCommands:!!e.onSlashCommand}),r=gn(n.filter(t=>xn(t,e.filter))),i=r.flatMap(([,e])=>e);return{hideSearch:t,matches:n,grouped:r,items:i,activeIndex:Math.max(0,i.findIndex(t=>t.id===e.activeId))}}function Cn(e){let t=e();if(!t.open)return D;let n=t.mentionMenu.open,r=R(t.mentionHost.paneId,`mention-menu-listbox`),i=R(t.mentionHost.paneId,`mention-announcement`),{hideSearch:a,matches:o,grouped:s,items:c,activeIndex:l}=Sn(t),d=[t.sessionSearchFailed?v(`palette.searchFailed`):t.sessionSearchIndexing?v(`palette.searchIndexing`):t.sessionSearchPartial?v(`palette.searchPartial`):null,t.archivedTranscriptsExcluded>0?v(`sessionsView.transcriptSearchArchivedExcluded`,{count:String(t.archivedTranscriptsExcluded)}):null].filter(e=>!!e),f=!t.searchDebouncing&&c[l]?bn(l):void 0,m=v(`palette.placeholder`),h=v(t.draft.submitting?`palette.startingSession`:`palette.startSession`),g=t.composing||!t.draft.canSubmit,_=t.draft.disabledReason??(t.draft.hasPrompt?void 0:v(`palette.promptRequired`)),ee=x(p.modifiedEnter),y=!!t.searchQuery.trim()&&!t.sessionSearchPending&&!t.catalogSearchPending&&!t.modelSearchError&&!t.sessionSearchFailed&&!t.sessionSearchPartial&&!t.sessionSearchIndexing&&t.archivedTranscriptsExcluded===0;return E`
<openclaw-modal-dialog
class="cmd-palette-overlay palette"
label=${m}
style=${ve}
@modal-cancel=${e=>{if(t.composing||t.mentionMenu.open){e.preventDefault(),t.composing||(t.mentionMenu.close(),t.requestUpdate());return}if(t.draft.submitting){e.preventDefault();return}t.onToggle()}}
>
<div
class="cmd-palette ${a?`cmd-palette--prompt`:``}"
@click=${e=>e.stopPropagation()}
@keydown=${t=>yn(t,e)}
>
${pe({value:t.query,placeholder:m,onInputRef:t.onInputRef,onValueChange:t.onQueryChange,onBeforeInput:t.onBeforeInput,onSelectionChange:t.onSelectionChange,onCompositionStart:t.onCompositionStart,onCompositionEnd:t.onCompositionEnd,onPaste:t.draft.pasteImages,disabled:t.draft.submitting,readOnly:t.draft.messageLocked,controls:n?r:a?void 0:Z,activeDescendant:n?(t.draft.mentions.length<10?t.mentionMenu.activeId(t.mentionHost.paneId):null)??void 0:f,describedBy:n?i:a?void 0:`cmd-palette-keys`,actions:E`
<openclaw-tooltip content=${_??v(`palette.startSessionBackground`)}>
<button
type="button"
class="cmd-palette__create"
aria-label=${v(`palette.startSessionBackground`)}
aria-busy=${String(t.draft.submitting)}
?disabled=${g}
@click=${()=>{t.composing||t.draft.submit()}}
>
${h}${ee}
</button>
</openclaw-tooltip>
${t.draft.renderControls()}
`})}
${t.draft.mentions.length?E`<div class="cmd-palette__mentions" ?inert=${t.draft.messageLocked}>
${lt(t.query,t.draft.mentions,()=>{t.draft.setMessage(t.query,[]),t.requestUpdate(),t.mentionHost.getTextarea()?.focus({preventScroll:!0})},t.mentionMenu.selectedAvatarUrls)}
</div>`:D}
${t.draft.renderAttachments()}
${t.mentionMenu.render(t.mentionHost,t.requestUpdate)}
<span
id=${i}
class="sr-only"
role="status"
aria-live="polite"
aria-atomic="true"
>${t.mentionMenu.activeLabel()}</span
>
<div
class="cmd-palette__search"
?inert=${a}
aria-hidden=${a?`true`:D}
>
<div class="cmd-palette__search-content">
${a?We:E`
${t.searchQuery.trim()&&t.onSelectSession?E`<div
class="cmd-palette__filters"
role="group"
aria-label=${v(`palette.filterLabel`)}
>
${[`all`,`sessions`,`messages`].map(e=>E`<button type="button" class="cmd-palette__filter" aria-pressed=${t.filter===e?`true`:`false`} @click=${()=>t.onFilterChange(e)}>${v(`palette.filters.${e}`)}<span>${o.filter(t=>xn(t,e)).length}</span></button>`)}
</div>`:D}
${t.sessionSearchPending||t.catalogSearchPending?E`<div class="cmd-palette__empty" role="status">
${v(t.sessionSearchPending?`palette.searchingSessions`:`palette.searchingCommands`)}
</div>`:D}
<div
id=${Z}
class="cmd-palette__results"
?hidden=${c.length===0}
role="listbox"
aria-label=${m}
aria-busy=${t.searchDebouncing||t.sessionSearchPending||t.catalogSearchPending?`true`:`false`}
>
${s.map(([e,n])=>E`
<div class="cmd-palette__group-label">
${Qt(e)}<span
class="cmd-palette__group-count"
>${n.length}</span
>
</div>
${n.map(e=>{let n=c.indexOf(e),r=n===l,i=e.session?u(e.session,t.defaultAgentId):e.agentId,a=i?t.agents.find(e=>e.id===i)??{id:i}:void 0;return E`
<div
id=${bn(n)}
class="cmd-palette__item ${e.session?`cmd-palette__item--session`:``} ${r?`cmd-palette__item--active`:``}"
role="option"
aria-selected=${r?`true`:`false`}
aria-disabled=${t.draft.submitting||t.searchDebouncing?`true`:D}
@click=${n=>{n.stopPropagation(),_n(e,t)}}
@mouseenter=${()=>t.onActiveIdChange(e.id)}
>
${mn(e,t.searchQuery,a,t.agentIdentity?.get(i),t.pluginIconUrls,t.onPluginIconError)}
</div>
`})}
`)}
</div>
${t.modelSearchError?E`<div class="cmd-palette__source-error" role="status">${t.modelSearchError}</div>`:D}
${d.map(e=>E`<div class="cmd-palette__source-error" role="status">${e}</div>`)}
${c.length===0&&y?E`<div class="cmd-palette__no-results" role="status">
<span class="cmd-palette__no-results-icon" aria-hidden="true"
>${C.messageSquarePlus}</span
>
<h2>${v(`palette.noResults`)}</h2>
<p>
${Ae(v(`palette.noResultsStart`,{shortcut:`{shortcut}`}),x(p.modifiedEnter,{inline:!0}))}
</p>
</div>`:D}
<div id="cmd-palette-keys" class="cmd-palette__footer">
${c.length>0&&!t.query.includes(`
`)?E`<span class="cmd-palette__hint"
>${S([`↑`,`↓`])}${` `}<span
>${v(`palette.footer.navigate`)}</span
></span
>
<span class="cmd-palette__hint"
>${S(`↵`)}${` `}<span
>${v(`palette.footer.select`)}</span
></span
>`:D}
<span class="cmd-palette__hint"
>${x(p.newline)}${` `}<span
>${v(`palette.footer.newline`)}</span
></span
>
</div>
`}
</div>
</div>
${t.draft.error?E`<div class="cmd-palette__creation-error" role="alert">${t.draft.error}</div>`:D}
${t.draft.renderRecovery()===D?D:E`<div class="cmd-palette__footer">${t.draft.renderRecovery()}</div>`}
</div>
</openclaw-modal-dialog>
${t.draft.renderAuxiliary()}
`}var wn,Z;function Tn(){return(Tn=e((()=>{O(),Ne(),r(),N(),M(),m(),o(),ut(),gt(),G(),Pe(),ye(),hn(),q(),w(),xe(),be(),de(),Te(),j(),wn=fe,Z=`cmd-palette-listbox`})))()}var En,Dn,On,kn,Q,An,$;function jn(){return(jn=e((()=>{et(),Ge(),_e(),ke(),Be(),r(),M(),Ye(),ce(),It(),o(),Ht(),dt(),c(),t(),st(),Zt(),St(),G(),Pe(),q(),Tn(),En=200,Dn=2,On=60,kn=50,Q={includeGlobal:!1,includeUnknown:!1,configuredAgentsOnly:!0,excludeSubagents:!0,excludeCron:!0,excludeSystem:!0},An=3e4,$=class extends s{get query(){return this.draft.message}constructor(){super(),this.desktopAvailable=!1,this.custodianAvailable=!1,this.open=!1,this.pluginIconUrls={},this.pluginIcons=new Ct({getFetchContext:()=>wt(this.context),isConnected:()=>this.isConnected&&this.open&&this.gateway.connected,onUrlsChange:e=>{this.pluginIconUrls=e}}),this.mentionMenu=new vt,this.composing=!1,this.mentionHost={paneId:`command-palette`,getDraft:()=>this.query,getMentions:()=>this.draft.mentions,getTextarea:()=>this.inputElement??null,commitDraft:(e,t)=>this.draft.setMessage(e,t)},this.requestMentionUpdate=()=>{this.mentionMenu.open||this.draft.mentions.length>0?(this.clearSessionSearch(),this.clearCatalogSearch()):this.scheduleSessionSearch(this.query),this.requestUpdate()},this.filter=`all`,this.draft=new Xt(this,()=>({context:this.context,open:this.open}),{onClose:()=>this.closePalette(),onMessageChange:e=>{let t=e.trim(),n=Array.from(t).length;this.promptMode=t.includes(`
`)||(this.promptMode?n>kn:n>=On),t||(this.filter=`all`),this.scheduleSessionSearch(e)}}),this.searchQuery=``,this.promptMode=!1,this.activeId=null,this.sessionItems=[],this.catalogItems=[],this.sessionSearchPending=!1,this.sessionSearchFailed=!1,this.sessionSearchPartial=!1,this.archivedTranscriptsExcluded=0,this.sessionSearchIndexing=!1,this.subscriptions=new b(this),this.sessionSearchTimer=null,this.sessionSearchId=0,this.modelReader=new zt(()=>this.requestUpdate()),this.gateway=new ct(this,{getGateway:()=>this.context?.gateway,invalidateRequests:()=>{this.clearSessionSearch(),this.clearCatalogSearch(),this.scheduleSessionSearch(this.query)},onSnapshot:()=>this.synchronizePresentationScope(),ensureInitialData:()=>this.scheduleSessionSearch(this.query)}),this.togglePalette=()=>{if(this.open){this.draft.submitting||this.closePalette();return}this.openPalette()},this.handleInputRef=e=>{this.inputElement?.removeEventListener(`focus`,this.adoptInitialInput),this.inputElement=e instanceof HTMLTextAreaElement?e:void 0,this.inputElement?.addEventListener(`focus`,this.adoptInitialInput)},this.adoptInitialInput=()=>{let e=this.inputElement;if(!this.open||!e?.isConnected||document.activeElement!==e)return;if(this.takeInitialInput){let t=this.takeInitialInput;this.takeInitialInput=void 0;let n=t();if(!n){this.closePalette();return}this.initialInput=n,this.draft.setMessage(n.value),e.value=n.value}let t=this.initialInput;t&&(this.initialInput=void 0,t.returnFocus!==void 0&&e.closest(`openclaw-modal-dialog`)?.setReturnFocusTarget(t.returnFocus),e.setSelectionRange(t.selectionStart,t.selectionEnd,t.selectionDirection),!t.submitRequested&&t.mentionTrigger!==void 0&&t.selectionStart===t.selectionEnd&&t.value.slice(0,t.selectionStart).lastIndexOf(`@`)===t.mentionTrigger&&(this.mentionMenu.syncDirectory(this.draft.mentionDirectory),this.mentionMenu.update(e,this.requestMentionUpdate,`trigger`)),t.imageFiles?.length?this.draft.adoptImageFiles(t.imageFiles,t.submitRequested):t.submitRequested&&this.draft.submit())},this.handleGlobalKeydown=e=>{e.defaultPrevented||this.composing||e.isComposing||e.keyCode===229||me(e)&&(e.preventDefault(),this.togglePalette())},this.subscriptions.effect(()=>this.context?.gateway,e=>e.subscribeEvents(t=>{let n=te(t);this.context?.gateway===e&&(t.event===`cron`||t.event===`chat.metadata.changed`||n)&&(n===`clear`&&(this.catalogLoad=void 0,this.catalogItems=[]),this.open?this.ensureCatalogItems(!0):this.clearCatalogSearch())})),this.subscriptions.watchStore(()=>this.context?.agentSelection,()=>{this.clearSessionSearch(),this.clearCatalogSearch(),this.scheduleSessionSearch(this.query)})}connectedCallback(){super.connectedCallback(),document.addEventListener(`keydown`,this.handleGlobalKeydown)}disconnectedCallback(){document.removeEventListener(`keydown`,this.handleGlobalKeydown),this.initialInput=void 0,this.takeInitialInput=void 0,this.inputElement?.removeEventListener(`focus`,this.adoptInitialInput),this.inputElement=void 0,this.open=!1,this.mentionMenu.dispose(),this.composing=!1,this.mentionInput=void 0,this.activeId=null,this.clearSessionSearch(),this.clearCatalogSearch(),super.disconnectedCallback()}openPalette(e){let t=document.activeElement instanceof HTMLElement?document.activeElement:null;this.open=!0,this.mentionMenu.close(),this.draft.open(),this.composing=!1,this.mentionInput=void 0,this.takeInitialInput=typeof e==`function`?e:void 0,this.initialInput=typeof e==`function`?void 0:e??{value:this.query,selectionStart:this.query.length,selectionEnd:this.query.length,selectionDirection:`none`,returnFocus:t},this.initialInput&&this.draft.setMessage(this.initialInput.value),this.activeId=null,this.filter=`all`,this.scheduleSessionSearch(this.query)}synchronizePresentationScope(){let e=this.context?.gateway,t=e?T(e):void 0;this.presentationScope&&this.presentationScope!==t&&(this.closePalette(),this.activeId=null,this.clearCatalogSearch()),this.presentationScope=t}get isOpen(){return this.open}closePalette(){this.mentionMenu.close(),this.composing=!1,this.mentionInput=void 0,this.initialInput=void 0,this.takeInitialInput=void 0,this.open=!1,this.draft.close(),this.clearSessionSearch()}updated(){this.adoptInitialInput();let e=new Set(this.catalogItems.flatMap(e=>e.hasPluginIcon&&e.pluginId?[e.pluginId]:[]));this.pluginIcons.reconcileKeys(e);for(let t of this.querySelectorAll(`.cmd-palette__plugin-icon[data-plugin-icon-id]`)){let n=t.dataset.pluginIconId;n&&e.has(n)&&this.pluginIcons.load(n)}}invalidateSessionSearch(){this.sessionSearchTimer!==null&&(globalThis.clearTimeout(this.sessionSearchTimer),this.sessionSearchTimer=null),this.sessionSearchId+=1}clearSessionSearch(){this.invalidateSessionSearch(),this.sessionItems=[],this.sessionSearchPending=!1,this.sessionSearchFailed=!1,this.sessionSearchPartial=!1,this.archivedTranscriptsExcluded=0,this.sessionSearchIndexing=!1}clearCatalogSearch(){this.modelReader.clear(),this.catalogLoad=void 0,this.catalogItems=[],this.pluginIcons.reset()}ensureCatalogItems(e=!1){let t=this.context,r=t?.gateway,i=r?.snapshot.client;if(!this.open||this.promptMode||this.mentionMenu.open||this.draft.mentions.length>0||!t||!this.gateway.connected||!r||!i)return Promise.resolve();let a=t.agentSelection.state.selectedId??n(r.snapshot),o=this.catalogLoad,s=!e&&o?.client===i&&o.agentId===a&&(o.loadedAt===void 0||Date.now()-o.loadedAt<An),c=this.modelReader.bind(r,{agentId:a});if((!s&&!e||c||this.modelReader.failed)&&this.modelReader.read(),s)return o.promise;let l=r.snapshot,u=T(r),d=nn({client:i,agentId:a,agents:()=>t.agents?.ensureList?.()??Promise.resolve(null),methodAvailable:e=>!!Je(l,e)}).then(e=>{this.catalogLoad?.promise===d&&T(r)===u&&this.context?.gateway===r&&this.context?.agentSelection===t.agentSelection&&r.snapshot.client===i&&(this.catalogItems=e,this.catalogLoad={...this.catalogLoad,loadedAt:Date.now()})});return this.catalogLoad={client:i,agentId:a,promise:d},d}scheduleSessionSearch(e,t=!1){if(this.invalidateSessionSearch(),this.promptMode||this.mentionMenu.open||this.draft.mentions.length>0){this.clearSessionSearch(),this.clearCatalogSearch();return}let n=P(e);if(!this.open||!n){this.clearSessionSearch(),this.searchQuery=e,this.activeId=null;return}if(this.composing)return;let r=()=>{this.clearSessionSearch(),this.searchQuery!==e&&(this.activeId=null),this.searchQuery=e,!(n.length<Dn)&&(this.sessionSearchPending=!!(this.onSelectSession&&this.context?.sessions&&this.gateway.connected),this.ensureCatalogItems(),this.onSelectSession?this.searchSessions(n):this.sessionSearchPending=!1)};t?r():this.sessionSearchTimer=globalThis.setTimeout(r,En)}async searchSessions(e){let t=this.context,n=t?.sessions,r=t?.gateway,i=r?.snapshot.client;if(!n||r?.snapshot.phase!==`connected`||!i){this.sessionSearchPending=!1;return}let a=++this.sessionSearchId,o=T(r),s=()=>a===this.sessionSearchId&&T(r)===o&&this.open&&this.context?.sessions===n&&this.context?.gateway===r&&this.context?.agentSelection===t?.agentSelection&&r.snapshot.client===i&&r.snapshot.phase===`connected`,c=Vt({client:i,query:e,listOptions:Q,isCurrent:s}).then(e=>({error:!1,result:e})).catch(()=>({error:!0,result:null}));try{let t=await n.list({...Q,search:e,limit:10});if(!s()||!t)return;let r=t.sessions,i=new Set(r.map(e=>e.key)),a=await c;if(!s())return;let o=a.result;this.sessionSearchPartial=a.error,this.archivedTranscriptsExcluded=o?.archivedTranscriptsExcluded??0,this.sessionSearchIndexing=o?.indexing===!0,this.sessionItems=dn({visibleRows:r,visibleKeys:i,transcriptResult:o,search:e})}catch{s()&&(this.sessionSearchFailed=!0)}finally{s()&&(this.sessionSearchPending=!1)}}updateMentionMenu(e){if(this.mentionMenu.syncDirectory(this.draft.mentionDirectory),!this.mentionMenu.open&&!e)return;let t=this.inputElement;if(!t||this.composing||e?.isComposing||e?.inputType===`insertFromPaste`||e?.inputType===`insertFromDrop`){this.mentionMenu.close(),this.requestMentionUpdate();return}this.mentionMenu.update(t,this.requestMentionUpdate,e?e.inputType===`insertText`&&e.data?.includes(`@`)===!0?`trigger`:`input`:`selection`)}render(){this.mentionMenu.syncDirectory(this.draft.mentionDirectory);let e=this.modelReader.snapshot;return Cn(()=>({basePath:this.context?.basePath??``,open:this.open,query:this.query,searchQuery:this.searchQuery,searchDebouncing:this.composing||this.query!==this.searchQuery,onFlushSearch:()=>this.scheduleSessionSearch(this.query,!0),promptMode:this.promptMode,mentionMenu:this.mentionMenu,mentionHost:this.mentionHost,requestUpdate:this.requestMentionUpdate,composing:this.composing,onBeforeInput:e=>{let t=this.inputElement;this.mentionInput=t?{value:t.value,start:t.selectionStart,end:t.selectionEnd,inputType:e.inputType}:void 0},onSelectionChange:()=>this.updateMentionMenu(),onCompositionStart:()=>{this.composing=!0,this.invalidateSessionSearch(),this.mentionMenu.close(),this.requestUpdate()},onCompositionEnd:()=>{this.composing=!1,this.updateMentionMenu(),this.scheduleSessionSearch(this.query)},activeId:this.activeId,filter:this.filter,onFilterChange:e=>{this.filter=e,this.activeId=null},agents:this.context?.agents.state.agentsList?.agents??[],agentIdentity:this.context?.agentIdentity,defaultAgentId:this.context?.agentSelection.state.selectedId??n(this.context?.gateway.snapshot??{}),sessionItems:this.sessionItems,modelSearchError:this.modelReader.failed?v(`palette.modelSearchFailed`):null,primaryModelSearch:e.hasSnapshot&&!e.modelSelectionPolicy?.restricted,catalogItems:[...tn(je(this.context?.gateway.snapshot.hello?.auth??null),this.context?.nativeDeviceSettings),...this.catalogItems,...rn(e)],sessionSearchPending:this.sessionSearchPending,catalogSearchPending:!!(P(this.searchQuery)&&!this.promptMode&&(this.catalogLoad&&this.catalogLoad.loadedAt===void 0||this.modelReader.pending)),sessionSearchFailed:this.sessionSearchFailed,sessionSearchPartial:this.sessionSearchPartial,sessionSearchIndexing:this.sessionSearchIndexing,archivedTranscriptsExcluded:this.archivedTranscriptsExcluded,desktopAvailable:this.desktopAvailable,custodianAvailable:this.custodianAvailable,onToggle:this.togglePalette,onQueryChange:(e,t)=>{this.draft.setMessage(e,Qe(this.query,e,this.draft.mentions,this.mentionInput)),this.mentionInput=void 0,this.updateMentionMenu(t)},onActiveIdChange:e=>{this.activeId=e},onNavigate:this.onNavigate,onSelectSession:this.onSelectSession,onSlashCommand:this.onSlashCommand,pluginIconUrls:this.pluginIconUrls,onPluginIconError:e=>this.pluginIcons.handleError(e),onInputRef:this.handleInputRef,draft:this.draft}))}},F([A({attribute:!1})],$.prototype,`onNavigate`,void 0),F([A({attribute:!1})],$.prototype,`onSelectSession`,void 0),F([A({attribute:!1})],$.prototype,`onSlashCommand`,void 0),F([A({attribute:!1})],$.prototype,`desktopAvailable`,void 0),F([A({attribute:!1})],$.prototype,`custodianAvailable`,void 0),F([$e({context:Le,subscribe:!0})],$.prototype,`context`,void 0),F([k()],$.prototype,`open`,void 0),F([k()],$.prototype,`pluginIconUrls`,void 0),F([k()],$.prototype,`composing`,void 0),F([k()],$.prototype,`filter`,void 0),F([k()],$.prototype,`searchQuery`,void 0),F([k()],$.prototype,`promptMode`,void 0),F([k()],$.prototype,`activeId`,void 0),F([k()],$.prototype,`sessionItems`,void 0),F([k()],$.prototype,`catalogItems`,void 0),F([k()],$.prototype,`sessionSearchPending`,void 0),F([k()],$.prototype,`sessionSearchFailed`,void 0),F([k()],$.prototype,`sessionSearchPartial`,void 0),F([k()],$.prototype,`archivedTranscriptsExcluded`,void 0),F([k()],$.prototype,`sessionSearchIndexing`,void 0),F([k()],$.prototype,`sessionSearchTimer`,void 0),F([k()],$.prototype,`catalogLoad`,void 0),customElements.get(`openclaw-command-palette`)||customElements.define(`openclaw-command-palette`,$)})))()}jn();export{$ as CommandPalette};