UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

32 lines • 6.93 kB
import{n as e}from"./rolldown-runtime-8BhlS34s.js";import{Ji as t,qr as n}from"./control-ui-foundation-ZY_Flbbd.js";import{El as r,Fr as i,Ur as a,cc as o,dl as s,hu as c,lu as l,nl as u,sc as d,su as f,uu as p}from"./control-ui-core-3P365fbR.js";import{Xi as m,Zi as h}from"./control-ui-core-CFW9Qtjn.js";import{$ as g,X as _,Y as v,ct as y,nt as b,r as x,t as S,ut as C}from"./lit-runtime-P5vbNq6b.js";import{Bc as w,Fs as T,Ls as E,Vc as D,ec as O,rc as k}from"./control-ui-boot-shared-DoKu-5Ju.js";import{Bt as A,K as j,U as M,ar as N,rr as P,zt as F}from"./control-ui-boot-shared-CG9HtEG-.js";import{Tr as I,wr as L}from"./control-ui-boot-shared-CcmBeh0v.js";import{n as R}from"./agent-avatar-C-BT7KyB.js";import"./css-agents-plugins-skill-workshop-skills-DvcafeYi.js";var z;function B(){return(B=e((()=>{v(),b(),S(),R(),h(),P(),A(),M(),p(),k(),T(),D(),i(),u(),l(),o(),L(),z=class extends f{constructor(){super(),this.session=null,this.gateway=null,this.presented=!1,this.agents=[],this.agentIdentity=null,this.avatarAgentIds=new Set,this.history=null,this.loading=!1,this.error=!1,this.requestKey=``,this.requestGateway=null,this.generation=0,this.pending=!1,this.dirty=!1,this.progress=new F(this,{gateway:()=>this.presented?this.gateway:void 0,target:()=>this.presented?this.session:void 0}),this.retry=()=>{this.dirty=!0,this.progress.retry(),this.requestUpdate()},new d(this).watch(()=>this.presented?this.agentIdentity:null,(e,t)=>e.subscribe(t)).watch(()=>this.presented?this.gateway:null,(e,t)=>e.subscribe(t),e=>{e===this.gateway&&this.synchronizeHistory()}).effect(()=>this.presented?this.gateway:null,e=>e.subscribeEvents(t=>{if(t.event!==`sessions.changed`&&t.event!==`session.message`)return;let n=a(t.payload),i=this.session;n&&i&&this.presented&&r({...e.snapshot,sessionKey:i.sessionKey,assistantAgentId:i.agentId??e.snapshot.assistantAgentId},n.key,n.agentId)&&(this.dirty=!0,this.requestUpdate())}))}willUpdate(){this.synchronizeHistory()}synchronizeHistory(){let e=this.gateway?.snapshot,t=e?.phase===`connected`?e.client:null,n=this.session,r=this.presented&&this.isConnected&&t&&n?JSON.stringify([n.sessionKey,n.agentId,this.gateway?.connectionRevision]):``;if((r!==this.requestKey||t!==this.requestClient||this.gateway!==this.requestGateway)&&(this.requestGateway=this.gateway,this.requestKey=r,this.requestClient=t,++this.generation,this.pending=!1,this.dirty=!!r,this.history=null,this.error=!1,this.loading=!!r),!r||!t||!n||this.pending||!this.dirty)return;this.dirty=!1,this.pending=!0,this.error=!1;let i=this.generation,a=this.gateway,o=a?.connectionRevision,s=()=>i===this.generation&&this.isConnected&&this.presented&&this.gateway===a&&a?.snapshot.phase===`connected`&&a.snapshot.client===t&&a.connectionRevision===o&&this.session?.sessionKey===n.sessionKey&&this.session?.agentId===n.agentId;t.request(`chat.history`,{...n,limit:20,maxChars:12e3}).then(e=>{s()&&(this.history=e)}).catch(()=>{s()&&(this.error=!0)}).finally(()=>{s()&&(this.pending=!1,this.loading=!1,this.dirty&&this.requestUpdate())})}disconnectedCallback(){++this.generation,this.requestKey=``,this.requestClient=void 0,super.disconnectedCallback()}updated(){this.presented&&this.isConnected&&this.agentIdentity?.ensure([...this.avatarAgentIds])}render(){if(this.avatarAgentIds.clear(),!this.presented)return _;if(this.gateway?.snapshot.phase!==`connected`)return g`<p role="status">${c(`pluginUi.sessionHistoryUnavailable`)}</p>`;let e=this.progress.card,n=this.history?.sessionInfo,r=(this.history?.messages??[]).slice(-20).flatMap(e=>{if(!t(e)||e.role!==`user`&&e.role!==`assistant`)return[];let n=O(e);if(!n)return[];let r=E({role:e.role,content:n}).content.flatMap(e=>e.type===`text`&&e.text?[e.text]:[]).join(` `);if(!r)return[];let i=E(e),a=i.sender,o=i.senderSession?.agentId??s(i.senderSession?.sessionKey)?.agentId,l=i.senderSession?o:e.role===`assistant`?this.session?.agentId??s(this.session?.sessionKey)?.agentId:void 0,u=l?this.agents.find(e=>e.id===l):void 0,d=w(a)??u?.name??u?.identity?.name??(l||c(e.role===`user`?`sessionsView.user`:`sessionsView.assistant`));!a&&l&&this.avatarAgentIds.add(l);let f=a?I(a):l?g`<openclaw-agent-avatar .option=${{value:l,label:d,agent:u??{id:l}}} .identity=${this.agentIdentity?.get(l)??null} ></openclaw-agent-avatar>`:g`<span class="plugin-session-summary__unknown" aria-hidden="true" >${e.role===`user`?m.users:m.bot}</span >`,p=typeof e.timestamp==`number`&&Number.isFinite(e.timestamp)?new Date(e.timestamp):null;return[{text:r,label:d,avatar:f,time:p&&Number.isFinite(p.getTime())?p:null}]});return g`<div class="plugin-session-summary"> ${this.progress.error||this.progress.loading||e?g`<section class="plugin-session-summary__progress"> ${this.progress.error?g`<p role="alert">${c(`sessionProgressCard.widgetUnavailable`)}</p>`:this.progress.loading?g`<p>${c(`sessionProgressCard.widgetLoading`)}</p>`:e?j(e,`board`,void 0,n?.status,n?.startedAt,n?.endedAt,n?.hasActiveRun===!0):_} </section>`:_} <section class="plugin-session-summary__history" aria-label=${c(`pluginUi.sessionRecentMessages`)} > <h3>${c(`pluginUi.sessionRecentMessages`)}</h3> ${this.loading||!this.history&&!this.error?g`<p>${c(`common.loading`)}</p>`:this.error?g`<p role="alert">${c(`pluginUi.sessionHistoryUnavailable`)}</p>`:r.length?r.map(e=>g`<article class="plugin-session-summary__message"> <header class="plugin-session-summary__message-header"> <span class="plugin-session-summary__avatar">${e.avatar}</span> <strong class="plugin-session-summary__role">${e.label}</strong> ${e.time?g`<time datetime=${e.time.toISOString()} title=${e.time.toLocaleString()} >${e.time.toLocaleTimeString(void 0,{hour:`numeric`,minute:`2-digit`})}</time >`:_} </header> <div class="sidebar-markdown"> ${x(N(e.text))} </div> </article>`):g`<p>${c(`pluginUi.sessionHistoryEmpty`)}</p>`} </section> ${this.error||this.progress.error?g`<button class="btn" @click=${this.retry}>${c(`common.retry`)}</button>`:_} </div>`}},n([C({attribute:!1})],z.prototype,`session`,void 0),n([C({attribute:!1})],z.prototype,`gateway`,void 0),n([C({attribute:!1})],z.prototype,`presented`,void 0),n([C({attribute:!1})],z.prototype,`agents`,void 0),n([C({attribute:!1})],z.prototype,`agentIdentity`,void 0),n([y()],z.prototype,`history`,void 0),n([y()],z.prototype,`loading`,void 0),n([y()],z.prototype,`error`,void 0),customElements.get(`openclaw-plugin-session-summary`)||customElements.define(`openclaw-plugin-session-summary`,z)})))()}B();