openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
23 lines • 22.1 kB
JavaScript
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./agent-avatar-D8zh9CNF.js","./agent-avatar-C-BT7KyB.js","./gateway-runtime-5YzSCmfV.js","./control-ui-boot-shared-DoKu-5Ju.js","./control-ui-boot-shared-JlZTSJEC.js","./control-ui-boot-shared-3SP_aL-Y.js","./control-ui-boot-shared-90V688bk.js","./control-ui-boot-shared-DBJri5ri.js","./control-ui-boot-shared-BykNRHBP.js","./plugin-contracts-runtime-CsJ0WpAd.js","./markdown-runtime-Hc-lvqnn.js","./config-runtime-CgOgfOrG.js","./control-ui-boot-shared-CG9HtEG-.js","./control-ui-boot-shared-73R4ErOy.js","./control-ui-boot-shared-CcmBeh0v.js","./control-ui-boot-shared-BR12heUA.js","./css-chat-Ckz95ikh.js","./chat-transcript-layout-w3EszKw8.js","./css-chat-custodian-new-session-B_euK-Vu.js","./sidebar-update-runtime-B0vYzX3D.js","./control-ui-core-D-VUH4Gq.css","./control-ui-boot-shared-BJ_QKfFn.css","./css-chat-DCHf01mf.css","./css-chat-custodian-new-session-CEndYuO5.css","./sidebar-update-runtime-ah7rgQE7.css","./appearance-picker-ChQdgR4f.js","./modal-dialog-BgQB7Fm_.js","./agent-select-registration-BnvYzOga.js","./control-ui-boot-new-BTHisEC4.js","./css-cron-custodian-new-session-DdqVeFqw.js","./chat-transcript-styles-BVZgOT1t.js","./css-new-session-BGJnpiJ5.js","./css-config-njfbfHBk.js","./css-cron-custodian-new-session-Ci5c-FgJ.css","./chat-transcript-styles-DHHd4Hhc.css","./css-new-session-C71huhgC.css","./css-config-vi6FusyS.css","./control-ui-boot-new-D-SpiTTi.css","./select-picker-DG1mYlll.js","./control-ui-session-summary-vQysEHPv.js","./css-agents-plugins-skill-workshop-skills-DvcafeYi.js","./css-agents-plugins-skill-workshop-skills-DP4CzO_X.css","./control-ui-session-summary-CxyDNZvN.css","./control-ui-dashboard-DuWOyoUs.js","./control-ui-dashboard-BZzcciLT.css"])))=>i.map(i=>d[i]);
import{n as e}from"./rolldown-runtime-8BhlS34s.js";import{Bi as t,Br as n,J as r,q as i,qr as a,zi as o,zr as s}from"./control-ui-foundation-ZY_Flbbd.js";import{Jl as c,Xl as l,_c as u,bs as d,cc as f,hc as p,hu as m,lu as ee,mc as h,n as te,nl as g,ou as _,pu as v,r as ne,sc as y,ul as b,uu as x}from"./control-ui-core-3P365fbR.js";import{So as re,Xi as S,Zi as C,_r as w,co as T,go as E,hr as D,lo as O,qa as ie,vi as k,vr as A,yi as ae}from"./control-ui-core-CFW9Qtjn.js";import{$ as j,X as M,Y as N,Z as P,ct as F,m as I,nt as L,p as R,ut as z}from"./lit-runtime-P5vbNq6b.js";import{it as B,rt as V}from"./control-ui-boot-shared-Rs4iS2kF.js";import{a as H,r as U,s as W}from"./control-ui-boot-shared-CApmg5ot.js";function G(e){let t=B(e??``);if(t)return`var(--session-color-${t})`;let n=e?.trim()??``;return/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/iu.test(n)?n:``}function K(e){function t(t,n,r,i,a,o){e.current(),e.signal.throwIfAborted();let s=n,c,l=!0,u,d,f=()=>{if(!l)throw Error(`This plugin component has been disposed.`);return e.signal.throwIfAborted(),e.current()},p=()=>{c&&l&&i(c,s,f)},m=()=>{l&&(l=!1,e.signal.removeEventListener(`abort`,m),u?.(),d?.(),c?.remove())};return e.signal.addEventListener(`abort`,m,{once:!0}),r().then(n=>{if(!l||e.signal.aborted)return;f(),c=n,d=a?.(c,()=>(f(),s)),p(),t.append(c);let r=f(),i=[r.gateway.subscribe(p),r.agents.subscribe(p)];o&&i.push(o(r,p)),u=()=>i.forEach(e=>e())}).catch(t=>{l&&(m(),e.onError(t))}),{update(e){f(),s=e,p()},dispose:m}}return{resolveAppearanceColor(t){return e.current(),e.signal.throwIfAborted(),G(t)},mountAgentAvatar:(e,n)=>t(e,n,async()=>{let{AgentAvatar:e}=await o(async()=>{let{AgentAvatar:e}=await import(`./agent-avatar-D8zh9CNF.js`);return{AgentAvatar:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]),import.meta.url);return new e},(e,t,n)=>{let r=n(),i=r.agents.state.agentsList,a=t.agentId||i?.defaultId||``;e.option={value:a,label:t.label,agent:i?.agents.find(e=>e.id===a)??{id:a}},e.identity=r.agentIdentity.get(a),r.agentIdentity.ensure([a])},void 0,(e,t)=>e.agentIdentity.subscribe(t)),mountAppearancePicker:(e,n)=>t(e,n,async()=>{let{AppearancePicker:e}=await o(async()=>{let{AppearancePicker:e}=await import(`./appearance-picker-ChQdgR4f.js`);return{AppearancePicker:e}},__vite__mapDeps([25,2,5,4,6,7,11,8,9,10,12,3,13,14,15,16,17,18,19,20,21,22,23,24]),import.meta.url);return new e},(e,t,n)=>{e.props={...t,onChange:e=>{n(),t.onChange(e)}}}),mountAppearanceGlyph:(e,n)=>t(e,n,async()=>{let{AppearanceGlyph:e}=await o(async()=>{let{AppearanceGlyph:e}=await import(`./appearance-picker-ChQdgR4f.js`);return{AppearanceGlyph:e}},__vite__mapDeps([25,2,5,4,6,7,11,8,9,10,12,3,13,14,15,16,17,18,19,20,21,22,23,24]),import.meta.url);return new e},(e,t)=>{e.props=t,e.style.setProperty(`--appearance-color`,G(t.color)||`var(--muted)`)}),mountDialog:(e,n)=>t(e,n,async()=>(await o(()=>import(`./modal-dialog-BgQB7Fm_.js`),__vite__mapDeps([26,2,20]),import.meta.url),document.createElement(`openclaw-modal-dialog`)),(e,t)=>{e.label=t.label,e.description=t.description??``,e.className=t.className??``,e.style.cssText=t.style??``,t.returnFocusTarget!==void 0&&e.setReturnFocusTarget(t.returnFocusTarget),e.firstChild!==t.content&&e.replaceChildren(t.content)},(e,t)=>{let n=e=>{t().onCancel()===!1&&e.preventDefault()};return e.addEventListener(`modal-cancel`,n),()=>e.removeEventListener(`modal-cancel`,n)}),mountAgentPicker:(e,n)=>t(e,n,async()=>(await o(()=>import(`./agent-select-registration-BnvYzOga.js`),__vite__mapDeps([27,28,2,5,4,6,7,11,8,9,10,3,12,13,14,15,16,17,18,19,29,30,31,32,20,21,22,23,24,33,34,35,36,37]),import.meta.url),document.createElement(`openclaw-agent-select`)),(e,t,n)=>{let r=n().agents.state.agentsList?.agents??[];e.options=t.options.map(e=>({...e,agent:r.find(t=>t.id===e.agent?.id)??e.agent,icon:e.icon?S[e.icon]:void 0})),e.value=t.value,e.placeholder=t.placeholder??``,e.accessibleLabel=t.accessibleLabel,e.menuLabel=t.menuLabel??``,e.variant=t.variant??`default`,e.disabled=t.disabled??!1,e.onSelect=e=>{n(),t.onSelect(e)}}),mountSelectPicker:(e,n)=>t(e,n,async()=>{let{SelectPicker:e}=await o(async()=>{let{SelectPicker:e}=await import(`./select-picker-DG1mYlll.js`);return{SelectPicker:e}},__vite__mapDeps([38,12,2,4,5,6,7,8,9,10,11,3,13,14,15,16,17,18,19,20,21,22,23,24]),import.meta.url);return new e},(e,t,n)=>{e.className=`settings-select picker-select`,e.params={options:t.options,value:t.value,label:t.accessibleLabel,searchable:t.searchable,disabled:t.disabled,onChange:e=>{n(),t.onSelect(e)}}}),mountSessionSummary:(e,n)=>t(e,n,async()=>(await o(()=>import(`./control-ui-session-summary-vQysEHPv.js`),__vite__mapDeps([39,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,1,40,20,21,22,23,24,41,42]),import.meta.url),document.createElement(`openclaw-plugin-session-summary`)),(e,t,n)=>{e.session=t.session,e.gateway=n().gateway,e.agents=n().agents.state.agentsList?.agents??[],e.agentIdentity=n().agentIdentity,e.presented=t.presented,e.requestUpdate()}),mountDashboard:(e,n)=>t(e,n,async()=>(await o(()=>import(`./control-ui-dashboard-DuWOyoUs.js`),__vite__mapDeps([43,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,44]),import.meta.url),document.createElement(`openclaw-plugin-session-dashboard`)),(e,t,n)=>{let r=n().gateway.snapshot,i=A(r);e.session=t.session,e.client=r.client,e.connected=r.phase===`connected`,e.canMutate=t.canMutate&&i.canWrite,e.canGrant=t.canGrant&&i.canGrantApprovals,e.presented=t.presented??!0})}}function q(){return(q=e((()=>{V(),w(),C(),t()})))()}function oe(e,t,n){let r=()=>{if(!t.isCurrent(n))throw Error(`This plugin UI activation has ended. Use the current activation.`);return e()},i=e=>(t.isCurrent(n)||(e(),r()),n.disposers.add(e),()=>{n.disposers.delete(e),e()}),a=async e=>{let t=await e(r());return r(),t},o=(e,t)=>{let i=r(),a=i.gateway.snapshot.hello?.controlUiTabs?.find(t=>t.pluginId===n.descriptor.pluginId&&t.id===e.id),o=a?.placement?.startsWith(`route:`)?a.placement.slice(6):null,s=o&&O(o)?o:null,c=re(a??{pluginId:n.descriptor.pluginId,id:e.id},i.basePath),l=s?E(s,i.basePath):c.pathname,u=s?e.path?.map(encodeURIComponent).join(`/`):void 0,d=new URLSearchParams(t?.preserveSearch?window.location.search:``);if(!s){d.delete(`plugin`),d.delete(`id`);for(let[e,t]of new URLSearchParams(c.search))d.set(e,t)}for(let[t,n]of Object.entries(e.params??{}))d.set(`p.${t}`,n);return{route:s??`plugin`,pathname:u?`${l}/${u}`:l,search:d.size?`?${d}`:``}};return{apiVersion:1,pluginId:n.descriptor.pluginId,signal:n.abort.signal,get basePath(){return r().basePath},get locale(){return v.getLocale()},redact:l,components:K({current:r,signal:n.abort.signal,onError:e=>t.reportError(n.descriptor.pluginId,e)}),get connection(){let e=r().gateway.snapshot,t=A(e);return{connected:e.phase===`connected`,canRead:D(e.hello?.auth??null),canWrite:t.canWrite,canGrant:t.canGrantApprovals,canAdmin:t.canAdmin,assistantAgentId:e.assistantAgentId}},request:(e,t={})=>a(()=>n.client.request(e,t)),onEvent(e,a){return i(r().gateway.subscribeEvents(r=>{t.isCurrent(n)&&r.event===e&&a(r.payload)}))},subscribe(e){let a=r(),o=()=>{t.isCurrent(n)&&e()},s=[a.gateway.subscribe(o),a.sessions.subscribe(o),a.agents.subscribe(o),a.agentSelection.subscribe(o),a.theme.subscribe(o),v.subscribe(o)];return i(()=>s.forEach(e=>e()))},sessions:{get rows(){return structuredClone(r().sessions.state.result?.sessions??[])},get selectedKey(){return r().gateway.snapshot.sessionKey},normalizeKey:b,refresh:()=>a(async e=>{if(await e.sessions.refreshReplacement()===null)throw Error(`The session refresh did not complete. Try again.`)}),observe(e,o){let{archived:s,...c}=e,l=!1,u=r().sessions.observeList({...c,archivedFilter:s===`all`?`all`:s?`archived`:`active`},({result:e,loading:r,error:i})=>{if(!l&&t.isCurrent(n))try{o({loading:r,error:i,result:e?{sessions:structuredClone(e.sessions),hasMore:e.hasMore,nextOffset:e.nextOffset,totalCount:e.totalCount}:null})}catch(e){t.reportError(n.descriptor.pluginId,e)}}),d=i(()=>{l=!0,u.dispose()}),f=()=>a(()=>u.refresh());return f().catch(e=>{!l&&t.isCurrent(n)&&t.reportError(n.descriptor.pluginId,e)}),{refresh:f,dispose:d}},open({sessionKey:e,agentId:t}){u(r(),e,t)},create:e=>a(t=>t.sessions.create(e)),patch:({sessionKey:e,agentId:t},n)=>a(async i=>{if(!await i.sessions.patch(e,n,{agentId:t,ownsModelOverride:()=>!1,deferListRefresh:!0}))throw Error(`The session update did not complete. Try again.`);if(r(),await i.sessions.refreshReplacement()===null)throw Error(`The session was updated, but the session list could not be refreshed. Refresh the list to see the change.`)})},agents:{get rows(){return structuredClone(r().agents.state.agentsList?.agents??[])},get selectedId(){return r().agentSelection.state.selectedId},get defaultId(){return r().agents.state.agentsList?.defaultId??null},get scopeId(){return r().agentSelection.state.scopeId},select(e){r().agentSelection.set(e)},setScope(e){r().agentSelection.setScope(e)},refresh:()=>a(async e=>{if(await e.agents.refreshList()===null)throw Error(`The agent refresh did not complete. Try again.`)})},navigation:{openPage(e,t){let n=o(e,t),i=r();t?.replace?i.replace(n.route,n):i.navigate(n.route,n)},pageHref(e,t){let n=o(e,t);return`${n.pathname}${n.search}`}},ui:{invalidate:()=>t.invalidate(n),registerPage:e=>t.register(n,`pages`,e),registerNavigation:e=>t.register(n,`navigation`,e),registerPanel:e=>t.register(n,`panels`,e),registerAction:e=>t.register(n,`actions`,e),registerAccessory:e=>t.register(n,`accessories`,e),registerWidget:e=>t.register(n,`widgets`,e),registerReplacement:e=>t.register(n,`replacements`,e),selectReplacement(e,i){if(r(),i!==null&&n.contributions.replacements.get(i)?.value.surface!==e)throw Error(`A plugin can select only its own registered UI replacement.`);n.selections.set(e,i),t.registrations(`replacements`).some(e=>e.host.signal===n.abort.signal)&&t.selectReplacement(e,i===null?null:`${n.descriptor.pluginId}/${i}`)}}}}function J(){return(J=e((()=>{T(),w(),x(),c(),p(),g(),q()})))()}var Y,X;function Z(){return(Z=e((()=>{n(),N(),L(),R(),ae(),C(),x(),p(),ee(),f(),U(),te(),Y=class extends _{constructor(...e){super(...e),this.kind=`replacements`,this.contributionKey=``,this.surface=`workspace`,this.props={},this.defaultView=M,this.replacementCompanion=M,this.presented=!0,this.error=``,this.mountGeneration=0,this.composerGeneration=0,this.ownerChanged=!1,this.defaultContainers=new Set,this.subscriptions=new y(this).watch(()=>this.context?.plugins,(e,t)=>e.subscribe(t),()=>{let e=this.resolveRegistration();(this.registration?.value!==e?.value||this.registration?.signal!==e?.signal)&&(this.ownerChanged=!0,this.mountAbort?.abort())})}resolveRegistration(){let e=this.context?.plugins;return this.kind===`replacements`?e?.selectedReplacement(this.surface):e?.registrations(this.kind).find(e=>e.key===this.contributionKey)}requestUpdate(...e){let[t,n]=e;if(t===`presented`&&this.presented!==n&&(this.composerGeneration+=1),t===`props`){let e=n,t=this.props;(e?.sessionKey!==t?.sessionKey||e?.agentId!==t?.agentId)&&(this.ownerChanged=!0,this.mountAbort?.abort())}super.requestUpdate(...e)}shouldUpdate(){return this.isConnected}willUpdate(){this.renderOptions.host=this.defaultHost??this;let e=this.resolveRegistration();(this.registration?.value!==e?.value||this.registration?.signal!==e?.signal||this.ownerChanged)&&(this.ownerChanged=!1,this.unmount(),this.registration=e,this.error=``)}updated(){let e=this.registration;if(!(!e||this.error||e.signal.aborted))try{if(this.mountAbort)this.viewContext&&(this.viewContext={...this.viewContext,props:this.scopedProps(this.mountAbort.signal),presented:this.presented},this.handle?.update?.(this.viewContext));else{let t=this.querySelector(`[data-plugin-view-root]`);if(!t)return;let n=new AbortController;this.mountAbort=n,e.signal.addEventListener(`abort`,()=>{this.unmount(),this.requestUpdate()},{once:!0,signal:n.signal}),this.viewContext={host:W(e.host,n.signal),signal:n.signal,props:this.scopedProps(n.signal),presented:this.presented,mountDefault:e=>{if(n.signal.aborted)throw Error(`This plugin UI view has ended.`);let t=this.defaultContainers.size===0;return this.defaultContainers.add(e),P(this.defaultView,e,{host:this.defaultHost??this}),t&&this.requestUpdate(),()=>{this.defaultContainers.delete(e)&&(P(M,e),this.defaultContainers.size===0&&this.requestUpdate())}}},this.handle=e.value.mount(t,this.viewContext)}for(let e of this.defaultContainers)P(this.defaultView,e,{host:this.defaultHost??this})}catch(e){this.fail(e)}}scopedProps(e){if(this.kind!==`replacements`||this.surface!==`composer`)return structuredClone(this.props);let t=this.props,n=this.composerGeneration,r=()=>{if(!this.presented||n!==this.composerGeneration||e.aborted||this.registration?.signal.aborted)throw Error(`This plugin UI view has ended.`)};return{...t,setDraft:e=>{r(),t.setDraft(e)},send:async()=>{r();let e=await t.send();return r(),e},abort:t.abort?()=>{r(),t.abort()}:void 0}}focus(e){if(this.handle?.focus){this.handle.focus();return}let t=this.querySelector(`textarea, input, [contenteditable=true]`);t?t.focus(e):super.focus(e)}fail(e){let t=this.registration?.pluginId??`host`;this.unmount(),this.error=e instanceof Error?e.message:String(e),this.context?.plugins.reportError(t,e)}unmount(){this.mountGeneration+=1,this.mountAbort?.abort(),this.mountAbort=void 0;let e=this.handle;this.handle=void 0;try{e?.dispose?.()}catch(e){this.context?.plugins.reportError(this.registration?.pluginId??`host`,e)}for(let e of this.defaultContainers)P(M,e);this.defaultContainers.clear(),this.viewContext=void 0}connectedCallback(){super.connectedCallback(),this.requestUpdate()}disconnectedCallback(){this.unmount(),this.subscriptions.clear(),super.disconnectedCallback()}render(){return!this.registration||this.error?j`${this.error?j`<div class="card" role="alert">
${this.error}<button
class="btn btn--sm"
@click=${()=>{this.error=``}}
>
${m(`pluginUi.retryView`)}
</button>
</div>`:M}${this.defaultView}`:j`${this.defaultContainers.size===0?this.replacementCompanion:M}${I(this.mountGeneration,j`<div data-plugin-view-root style="display: contents"></div>`)}`}},a([s({context:k,subscribe:!0})],Y.prototype,`context`,void 0),a([z({attribute:!1})],Y.prototype,`kind`,void 0),a([z({attribute:!1})],Y.prototype,`contributionKey`,void 0),a([z({attribute:!1})],Y.prototype,`surface`,void 0),a([z({attribute:!1})],Y.prototype,`props`,void 0),a([z({attribute:!1})],Y.prototype,`defaultView`,void 0),a([z({attribute:!1})],Y.prototype,`replacementCompanion`,void 0),a([z({attribute:!1})],Y.prototype,`defaultHost`,void 0),a([z({type:Boolean})],Y.prototype,`presented`,void 0),a([F()],Y.prototype,`error`,void 0),X=class extends _{constructor(...e){super(...e),this.lifetime=new AbortController,this.actionLifetimes=new Map,this.kind=`navigation`,this.sessionKey=``,this.navigationKey=``,this.presented=!0,this.actionError=``,this.subscriptions=new y(this).watch(()=>this.context?.plugins,(e,t)=>e.subscribe(t),()=>this.retireHiddenActions()).watch(()=>this.kind===`navigation`?this.context?.router:void 0,(e,t)=>e.subscribe(t)).watch(()=>this.kind===`header`||this.kind===`composer`?this.context?.sessions:void 0,(e,t)=>e.subscribe(t),()=>this.retireHiddenActions())}connectedCallback(){this.lifetime.signal.aborted&&(this.lifetime=new AbortController),super.connectedCallback()}disconnectedCallback(){this.lifetime.abort(),this.actionLifetimes.clear(),this.subscriptions.clear(),super.disconnectedCallback()}requestUpdate(...e){let[t,n]=e;(t===`sessionKey`||t===`agentId`||t===`presented`)&&this[t]!==n&&(this.lifetime.abort(),this.actionLifetimes.clear(),this.lifetime=new AbortController),super.requestUpdate(...e)}currentSession(){return this.context?h(this.context,this.sessionKey,this.agentId):void 0}resolveAction(e){let t=this.currentSession();try{return e.value.resolve?.({sessionKey:this.sessionKey,agentId:this.agentId??t?.agentId,session:t?structuredClone(t):void 0})}catch(t){return this.retireAction(e.signal),this.context?.plugins.reportError(e.pluginId,t),{hidden:!0}}}retireAction(e){let t=this.actionLifetimes.get(e);this.actionLifetimes.delete(e),t?.abort.abort()}retireHiddenActions(){for(let[e,{entry:t}]of this.actionLifetimes)(e.aborted||this.resolveAction(t)?.hidden)&&this.retireAction(e)}render(){let e=this.context?.plugins;return e?this.kind===`navigation`?e.registrations(`navigation`).filter(e=>e.key===this.navigationKey).map(e=>{let t=e.host.navigation.pageHref(e.value.page),n=new URL(t,window.location.href),r=new URLSearchParams(window.location.search),i=n.pathname===window.location.pathname&&[...n.searchParams].every(([e,t])=>r.get(e)===t),a=`plug`;return e.value.icon&&Object.hasOwn(S,e.value.icon)&&(a=e.value.icon),j`<a
class="nav-item ${i?`nav-item--active`:``}"
href=${t}
aria-current=${i?`page`:M}
@click=${t=>{d(t)&&(t.preventDefault(),e.host.navigation.openPage(e.value.page))}}
><span class="nav-item__icon" aria-hidden="true">${S[a]}</span
><span class="nav-item__text">${e.value.label}</span></a
>`}):this.kind===`session-header`?e.registrations(`accessories`).filter(e=>e.value.placement===`session-header`).map(e=>ne(`accessories`,e.key,{sessionKey:this.sessionKey,agentId:this.agentId},M,this.presented)):j`${this.actionError?j`<span role="alert">${this.actionError}</span>`:M}${e.registrations(`actions`).filter(e=>e.value.placement===this.kind).map(t=>{let n=this.resolveAction(t);if(n?.hidden)return this.retireAction(t.signal),M;let r=this.actionLifetimes.get(t.signal);r||(r={entry:t,abort:new AbortController},this.actionLifetimes.set(t.signal,r));let i=AbortSignal.any([this.lifetime.signal,t.signal,r.abort.signal]);return j`<button
class="btn btn--sm"
type="button"
?disabled=${n?.disabled??!1}
@click=${async()=>{if(!i.aborted&&this.presented&&this.isConnected){this.actionError=``;try{await H({runtime:e,id:t.key,placement:t.value.placement,sessionKey:this.sessionKey,agentId:this.agentId,session:this.currentSession(),signal:i})}catch(e){i.aborted||(this.actionError=e instanceof Error?e.message:String(e))}}}}
>
${n?.label??t.value.label}
</button>`})}`:M}},a([s({context:k,subscribe:!0})],X.prototype,`context`,void 0),a([z({attribute:!1})],X.prototype,`kind`,void 0),a([z({attribute:!1})],X.prototype,`sessionKey`,void 0),a([z({attribute:!1})],X.prototype,`agentId`,void 0),a([z({attribute:!1})],X.prototype,`navigationKey`,void 0),a([z({type:Boolean})],X.prototype,`presented`,void 0),a([F()],X.prototype,`actionError`,void 0),customElements.get(`openclaw-plugin-contributions`)||customElements.define(`openclaw-plugin-contributions`,X),customElements.get(`openclaw-plugin-view`)||customElements.define(`openclaw-plugin-view`,Y)})))()}function Q(e,t){let n=new URL(ie(e),window.location.href);if(n.origin!==window.location.origin||!n.pathname.startsWith(t))throw Error(`Native plugin assets must be served by this Control UI Gateway.`);return n.href}async function se(e,t,n,r,a){if(!t.isCurrent(n))return;let{descriptor:s,abort:c}=n,l=`${i(s.pluginId,e().resourceBasePath)}${encodeURIComponent(s.revision)}/`,u=Object.assign(n,{host:oe(e,t,n)}),d=Q(s.entryUrl,l);for(let e of s.styles){let t=document.createElement(`link`);t.rel=`stylesheet`,t.media=`not all`,t.href=Q(e,l);let n=new Promise((e,n)=>{t.addEventListener(`load`,()=>e(),{once:!0,signal:c.signal}),t.addEventListener(`error`,()=>n(Error(`Could not load plugin stylesheet: ${s.pluginId}`)),{once:!0,signal:c.signal}),c.signal.addEventListener(`abort`,()=>n(Error(`Plugin UI activation ended.`)),{once:!0})});document.head.append(t),u.disposers.add(()=>t.remove()),r.push(t),await n}let f=await o(()=>import(d),[],import.meta.url);if(!t.isCurrent(n)){a();return}if(f.default?.id!==s.pluginId||typeof f.default.activate!=`function`)throw Error(`Native UI entry must export its matching defineControlUiPlugin definition.`);let p=await f.default.activate(u.host);if(p&&u.disposers.add(p),!t.isCurrent(n)){a();return}return u}function $(){return($=e((()=>{r(),J(),Z(),t()})))()}$();export{se as initializeControlUiPlugin};