openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
1 lines • 7.82 kB
JavaScript
import{n as e}from"./rolldown-runtime-8BhlS34s.js";import{Br as t,br as n,et as r,qr as i,yr as a,zr as o}from"./control-ui-foundation-ZY_Flbbd.js";import{Cl as s,Cr as c,Fr as l,Gl as u,Ic as d,Il as f,Kc as p,Lr as m,Mo as h,No as g,Pc as _,Pr as v,Rl as y,Ur as b,Vc as ee,ai as te,bu as ne,cc as re,dr as ie,fr as ae,gl as x,hc as S,hu as C,ii as w,lu as T,nl as E,pa as D,ql as O,sc as k,su as A,uu as j,wr as M,xc as N,xu as P}from"./control-ui-core-3P365fbR.js";import{vi as F,yi as oe}from"./control-ui-core-CFW9Qtjn.js";import{nt as I,ut as L}from"./lit-runtime-P5vbNq6b.js";import{Di as R,Jo as z,Oi as B,Yo as V}from"./control-ui-boot-shared-DoKu-5Ju.js";var H,U;function W(){return(W=e((()=>{P(),H={agentsHome:{manage:`Manage agents`,create:`New agent`,openChat:`Open chat`,openMainChat:`Open main chat`,allSessions:`All sessions`,collapseOthers:`Collapse others`,agentOptions:`Options for {agent}`,expandAgent:`Expand {agent}`,collapseAgent:`Collapse {agent}`,working:`Working now`,workingPreview:`Working: {preview}`,seeAll:`See all`,seeAllCount:`See all {count} agents`,lastActive:`Active {time}`,neverActive:`No recent activity`,noMessage:`No messages yet`,loading:`Loading agents…`,disconnected:`Connect to the Gateway to see your agents.`,loadFailed:`Could not load agents. Try again.`,empty:`Your team starts here. Add an agent to get started.`}},U=Object.assign(()=>{Object.assign(ne,H)},{catalog:H})})))()}function G(e,t,n=()=>null){if(!e)return[];let i=p(e).agents;if(i.length===0)return[];let a=new Map;return t.forEach(t=>{let n=s(t,e.defaultId),r=a.get(n);r?r.push(t):a.set(n,[t])}),i.map(t=>{let i=n(t.id),o=d(t,i),s=x({agentsList:e},e.mainKey,t.id).sessionKey,c=a.get(t.id)??[],l=c.reduce((e,t)=>!e||(t.updatedAt??0)>(e.updatedAt??0)?t:e,void 0),u=c.find(e=>e.key===s)??c.find(e=>e.isMain);return{id:t.id,name:o,role:t.identity?.theme,model:t.model?.primary,avatar:y(t,i),textAvatar:ee(t,i),mainKey:s,activeNow:c.some(r),unreadCount:c.filter(e=>e.unread&&!e.archived).length,lastActiveAt:l?.updatedAt??0,preview:(u??l)?.lastMessagePreview}})}function K(){return(K=e((()=>{f(),E(),_()})))()}function q(e){let t=Y.get(e.gateway);return t||(t=new X(e),Y.set(e.gateway,t)),t}var J,Y,X;function Z(){return(Z=e((()=>{n(),j(),O(),B(),ae(),l(),te(),M(),g(),_(),K(),J={cards:[],result:null,involvingMe:!1,loading:!1,error:null,subscriptionError:null},Y=new WeakMap,X=class{constructor(e){this.context=e,this.current=J,this.listeners=new Set,this.lifecycle=D({client:null,phase:`stopped`}),this.rawRequests=new WeakMap,this.activeRequest=null,this.queued=null,this.generation=0,this.pageActive=!1,this.involvingMe=!1,this.events=w({isCurrent:e=>this.lifecycle.isCurrent(e),onError:(e,t)=>this.publish({...this.current,subscriptionError:t}),retryDelayMs:()=>null}),this.refreshEvents=ie({active:!1,refresh:()=>this.refresh()});let t,n;this.observation=R(e.gateway,{sync:()=>this.syncPageActivity(),onSnapshot:e=>this.applyGateway(e),onEvent:e=>this.applyEvent(e),onAttach:()=>{t=e.agents.subscribe(()=>this.publishResult(this.current.result)),n=e.agentIdentity.subscribe(()=>this.publishResult(this.current.result))},onDetach:()=>{t?.(),n?.(),this.pageActive=!1,this.refreshEvents.setActive(!1),this.reset()}})}get snapshot(){return this.current}subscribe(e){let t=()=>e();return this.listeners.add(t),this.listeners.size===1&&(this.observation.attach(),this.syncPageActivity(),this.applyGateway(this.context.gateway.snapshot)||this.refresh()),()=>{!this.listeners.delete(t)||this.listeners.size>0||this.observation.detach()}}publish(e){this.current=e;for(let t of Array.from(this.listeners)){if(this.current!==e)return;t()}}publishResult(e){this.publish({...this.current,result:e,cards:G(this.context.agents.state.agentsList??void 0,e?.sessions.filter(e=>e.archived!==!0)??[],e=>this.context.agentIdentity.get(e))})}applyEvent(e){if(!this.lifecycle.capture()||e.event!==`sessions.changed`&&e.event!==`session.message`)return;let t=b(e.payload);if(e.event===`sessions.changed`&&t?.reason===`activity-summary`)return;let n=this.current.error===null&&!this.activeRequest&&c(this.current.result,e.payload,{archivedFilter:`all`,involvingMe:this.involvingMe}),r=m(this.current.result,e.payload,{archivedFilter:`all`});if(r.result!==this.current.result&&this.publishResult(r.result),n)return;let i=t?.hasActiveRun===!1||t?.status!=null&&t.status!==`running`;(e.event!==`session.message`||i)&&(this.revokeRequest(),this.refreshEvents.schedule())}setInvolvingMe(e){this.involvingMe!==e&&(this.involvingMe=e,this.publish({...this.current,result:null,involvingMe:e}),this.refresh())}reset(){this.revokeRequest(),this.queued?.resolve(),this.queued=null,this.events.reset(),this.refreshEvents.reset(),this.publish({...J,involvingMe:this.involvingMe})}applyGateway(e){let t=this.lifecycle.transition(e);return t&&(this.reset(),this.refresh()),this.publish(this.current),t}revokeRequest(){this.generation+=1,this.activeRequest=null}canRead(){return this.listeners.size>0&&(typeof document>`u`||document.visibilityState!==`hidden`)}syncPageActivity(){let e=this.canRead();!e&&this.pageActive&&(this.revokeRequest(),this.listeners.size>0&&this.lifecycle.capture()&&(this.queued??=a()),this.publish({...this.current,loading:!1})),this.pageActive=e,this.refreshEvents.setActive(e),e&&this.startQueuedRefresh()}refresh(){if(!this.lifecycle.capture()||this.listeners.size===0)return Promise.resolve();this.refreshEvents.absorb(),this.revokeRequest();let e=this.queued??=a();return this.startQueuedRefresh(),e.promise}startQueuedRefresh(){let e=this.lifecycle.capture();if(!e||!this.queued||!this.canRead()||this.rawRequests.has(e.client))return;this.refreshEvents.absorb();let t={scope:e,generation:this.generation,involvingMe:this.involvingMe,completion:this.queued};this.queued=null,this.activeRequest=t,this.rawRequests.set(e.client,t),this.load(t).finally(()=>{this.rawRequests.get(e.client)===t&&this.rawRequests.delete(e.client),this.activeRequest===t&&(this.activeRequest=null),t.completion.resolve(),this.startQueuedRefresh()})}async load(e){let{scope:t}=e,n=()=>this.generation===e.generation&&this.activeRequest===e&&this.lifecycle.isCurrent(t)&&this.canRead();this.events.ensure(t),this.publish({...this.current,loading:!0,error:null});try{let r=await this.context.agents.ensureList();if(!n())return;if(!r)throw Error(this.context.agents.state.agentsError??C(`agentsHome.loadFailed`));let i=p(r);if(await this.context.agentIdentity.ensure(i.agents.map(e=>e.id)),!n())return;let a=null,o=0;for(let r=0;r<3;r+=1){if(!n())return;let r=await t.client.request(`sessions.list`,h({includeDerivedTitles:!0,includeLastMessage:!0,archivedFilter:`all`,involvingMe:e.involvingMe,limit:100,offset:o}));if(!n())return;if(a=a?v(a,r):r,!r.hasMore||r.sessions.length===0)break;o=r.nextOffset??o+r.sessions.length}if(this.publishResult(a),!n())return;this.publish({...this.current,loading:!1})}catch(e){if(n()){if(this.publishResult(this.current.result),!n())return;this.publish({...this.current,loading:!1,error:u(e,C(`agentsHome.loadFailed`))})}}}}})))()}var Q;function $(){return($=e((()=>{t(),I(),oe(),V(),S(),T(),re(),Z(),Q=class extends A{constructor(){super(),this.active=!0,this.avatars=new z(this),new k(this).watch(()=>this.active&&this.context?q(this.context):void 0,(e,t)=>e.subscribe(t))}get roster(){return q(this.context).snapshot}get connected(){return this.context.gateway.snapshot.phase===`connected`}refresh(){return q(this.context).refresh()}cards(){return this.roster.cards.map(e=>Object.assign({},e,{avatar:e.avatar?this.avatars.resolve(e.avatar):null,target:N({context:this.context,face:`chat`,sessionKey:e.mainKey,agentId:e.id})}))}},i([L({attribute:!1})],Q.prototype,`active`,void 0),i([o({context:F,subscribe:!0})],Q.prototype,`context`,void 0)})))()}export{W as a,q as i,$ as n,U as o,Z as r,Q as t};