openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
1 lines • 15.9 kB
JavaScript
import{n as e}from"./rolldown-runtime-8BhlS34s.js";import{Ar as t,Cl as n,Fo as r,Gl as i,No as a,Nr as o,Ul as s,Wl as c,hu as l,jr as u,nl as d,ql as f,uu as p}from"./control-ui-core-3P365fbR.js";import{$n as m,Sn as h,er as g,fn as ee,mn as te}from"./control-ui-core-CFW9Qtjn.js";import{Al as _,Ii as v,Li as y,aa as b,jl as x,oa as S,sa as ne}from"./control-ui-boot-shared-DoKu-5Ju.js";import{To as C,wo as w}from"./control-ui-boot-shared-CG9HtEG-.js";import{a as T,i as re,n as E,o as ie,r as D,t as O}from"./session-workspace-recovery.runtime-DzJr_zYd.js";import{n as k,t as A}from"./input-dialog-3BQGQ1js.js";import{n as j,t as M}from"./cloud-worker-stop.runtime-Deft5Au6.js";function N(e,t,n){let r=u(t.gateway.snapshot,n);return r.allowed?!0:(e.sessionData.publishSessionMutationError(t,r.reason),!1)}async function P(e,t,r){let i=[...new Set(r.map(e=>n(e,t.selectedAgentId)))],a=e.sidebarSessionStatusFilter()!==`active`;for(let n of i){if(!e.sessionData.isSessionMutationScopeCurrent(t))return`stale`;try{let r=await t.sessions.reconcileMutation(n);if(!e.sessionData.isSessionMutationScopeCurrent(t))return`stale`;if(r.status!==`refreshed`)return r.status===`failed`&&e.sessionData.publishSessionMutationError(t,r.error),r.status;a&&await e.sessionData.refreshSidebarSessions(n)}catch(n){return e.sessionData.isSessionMutationScopeCurrent(t)?(e.sessionData.publishSessionMutationError(t,n),`failed`):`stale`}}return e.sessionData.isSessionMutationScopeCurrent(t)?`completed`:`stale`}async function F(e,t,r,a,s={}){if(typeof r.archived==`boolean`&&t.some(e=>!e.sessionId?.trim()))return e.sessionData.publishSessionMutationError(a,`Session lifecycle action requires a durable session identity.`),null;let c=[],l=null;for(let i=0;i<t.length;i+=100){if(!e.sessionData.isSessionMutationScopeCurrent(a))return null;let d=t.slice(i,i+100),f={targets:d.map(e=>({key:e.key,agentId:n(e,a.selectedAgentId),...e.sessionId?{expectedSessionId:e.sessionId}:{}})),patch:r},p=u(a.gateway.snapshot,{method:`sessions.patchMany`,params:f,sessionScope:s.sessionScope,session:o(d)});if(!p.allowed){l=p.reason,c.length===0&&e.sessionData.publishSessionMutationError(a,p.reason);break}try{let t=await a.sessions.patchMany(f.targets,f.patch);if(!t||!e.sessionData.isSessionMutationScopeCurrent(a))return null;c.push({rows:d,result:t})}catch(t){l=t,c.length===0&&e.sessionData.publishSessionMutationError(a,t);break}}if(c.length===0||!s.deferListRefresh&&await P(e,a,t)===`stale`||!e.sessionData.isSessionMutationScopeCurrent(a))return null;let d=[],f=c.flatMap(({rows:t,result:n})=>n.outcomes.flatMap((n,i)=>{if(!n.ok)return d.push(`${n.key}: ${O(new m(n.error))}`),[];let a=t[i];return a?.pinned&&r.archived===!0&&e.pruneSidebarSessionEntry(a.key),a?[a]:[]})),p=l===null?``:i(l);return p&&d.push(p),d.length>0&&e.sessionData.publishSessionMutationError(a,d.join(`; `)),f}async function I(e,t,i,a){if(!e.sessionData.isSessionMutationScopeCurrent(a)||!t.sessionId)return;let o=n(t,a.selectedAgentId);if(N(e,a,{method:`sessions.setInvolvement`,requiredScope:`operator.read`}))try{if(await r(a.client,{key:t.key,agentId:o,expectedSessionId:t.sessionId,hidden:i}),!e.sessionData.isSessionMutationScopeCurrent(a))return;a.sessions.patchRowLocal(t.key,{hiddenFromInvolvingMe:i},{agentId:o,sessionId:t.sessionId}),await e.sessionData.refreshSidebarSessions(o)}catch(t){e.sessionData.isSessionMutationScopeCurrent(a)&&e.sessionData.publishSessionMutationError(a,t)}}function L(){return(L=e((()=>{g(),f(),t(),d(),a(),E()})))()}async function R(e,t,n){let r=e.knownSessionGroups();return r.includes(t)?`completed`:H(e,n,`sessions.groups.put`,()=>n.sessions.groupsPut([...r,t]))}async function z(e,t,n,r){return await H(e,r,`sessions.groups.rename`,()=>r.sessions.groupsRename(t,n))===`completed`}async function B(e,t,n){if(!e.sessionData.isSessionMutationScopeCurrent(n)||!N(e,n,{method:`sessions.groups.delete`,requiredScope:`operator.write`}))return!1;let r=await C({title:l(`sessionsView.deleteGroupTitle`,{group:t}),message:l(`sessionsView.deleteGroupConfirm`),confirmLabel:l(`common.delete`),danger:!0,signal:n.signal});if(!e.sessionData.isSessionMutationScopeCurrent(n))return c({message:l(`sessionsView.deleteGroupStale`,{group:t})}),!1;if(!r)return!1;try{return await n.sessions.groupsDelete(t)===`completed`&&e.sessionData.isSessionMutationScopeCurrent(n)}catch(t){return e.sessionData.publishSessionMutationError(n,t),!1}}async function V(e,t,n,r){return H(e,r,`sessions.groups.update`,()=>r.sessions.groupsUpdate(t,n))}async function H(e,t,n,r){if(!e.sessionData.isSessionMutationScopeCurrent(t))return`stale`;if(!N(e,t,{method:n,requiredScope:`operator.write`}))return`failed`;try{return await r()===`completed`&&e.sessionData.isSessionMutationScopeCurrent(t)?`completed`:`stale`}catch(n){return e.sessionData.isSessionMutationScopeCurrent(t)?(e.sessionData.publishSessionMutationError(t,n),`failed`):`stale`}}async function U(e,t,n,r,i){if(e.sessionData.isSessionMutationScopeCurrent(i)&&N(e,i,{method:`sessions.groups.put`,requiredScope:`operator.write`}))try{let a=e.knownSessionGroups(),o=e.knownSessionCatalogIds(),s=S(ne(e.knownSectionOrder(),a,o),t,n,r),c=s.flatMap(e=>e.startsWith(`category:`)?[e.slice(9)]:[]);if(await i.sessions.groupsPut(c,s),!e.sessionData.isSessionMutationScopeCurrent(i))return;e.requestUpdate()}catch(t){e.sessionData.publishSessionMutationError(i,t)}}function W(){return(W=e((()=>{p(),b(),s(),w(),L()})))()}async function G(e,t,r,i,a={}){if(!e.sessionData.isSessionMutationScopeCurrent(i))return`stale`;let o=n(t,i.selectedAgentId),s={key:t.key,...r,agentId:o,...t.sessionId?{expectedSessionId:t.sessionId}:{}};if(typeof r.archived==`boolean`&&!t.sessionId?.trim())return e.sessionData.publishSessionMutationError(i,`Session lifecycle action requires a durable session identity.`),`failed`;if(!N(e,i,{method:`sessions.patch`,params:s,sessionScope:a.sessionScope,session:t}))return`failed`;try{let n=()=>i.sessions.patch(t.key,r,{agentId:o,...t.sessionId?{expectedSessionId:t.sessionId}:{},...a.deferListRefresh?{deferListRefresh:!0}:{}}),s=r.archived===!0?await D({action:`archive`,session:{...t,agentId:o},scope:i,isCurrent:()=>e.sessionData.isSessionMutationScopeCurrent(i),request:n}):await n();return e.sessionData.isSessionMutationScopeCurrent(i)?s?((r.pinned===!1||r.archived===!0&&t.pinned)&&e.pruneSidebarSessionEntry(t.key),!a.deferListRefresh&&e.sidebarSessionStatusFilter()!==`active`&&(await e.sessionData.refreshSidebarSessions(o),!e.sessionData.isSessionMutationScopeCurrent(i))?`stale`:`completed`):(i.sessions.state.error&&e.sessionData.publishSessionMutationError(i,i.sessions.state.error),`failed`):`stale`}catch(t){return e.sessionData.isSessionMutationScopeCurrent(i)?(e.sessionData.publishSessionMutationError(i,t),`failed`):`stale`}}async function K(e,t,n,r){if(t.length===0)return`completed`;let i=await F(e,t,n,r);return i?i.length===t.length?`completed`:`failed`:e.sessionData.isSessionMutationScopeCurrent(r)?`failed`:`stale`}async function q(e,t,n){if(!e.sessionData.isSessionMutationScopeCurrent(n))return;let r=n.sessions.beginArchive(t.key,t.sessionId);if(!r)return;let i;try{i=await G(e,t,{archived:!0},n,{sessionScope:!0})}finally{r()}i===`completed`&&e.sessionData.isSessionMutationScopeCurrent(n)&&c({message:l(`sessionsView.sessionArchived`),actionLabel:l(`common.undo`),onAction:Y(e,[{session:t,pinned:t.pinned}],n)})}async function J(e,t,n){if(t.length===0||!e.sessionData.isSessionMutationScopeCurrent(n))return;let r=t.flatMap(e=>{let t=n.sessions.beginArchive(e.key,e.sessionId);return t?[{row:e,finish:t}]:[]});if(r.length===0)return;let i=r.map(({row:e})=>e),a;try{a=await F(e,i,{archived:!0},n,{sessionScope:!0})}finally{for(let{finish:e}of r)e()}if(!a||a.length===0)return;let o=a.map(e=>({session:e,pinned:e.pinned}));c({message:o.length===1?l(`sessionsView.sessionArchived`):l(`sessionsView.sessionsArchived`,{count:String(o.length)}),actionLabel:l(`common.undo`),onAction:Y(e,o,n)})}function Y(e,t,n){let r=n.sessions.captureConnectionScope(),a={pruneSidebarSessionEntry:t=>e.pruneSidebarSessionEntry(t),selectSession:t=>e.selectSession(t),sidebarSessionStatusFilter:()=>e.sidebarSessionStatusFilter(),sessionData:{refreshSidebarSessions:t=>e.sessionData.refreshSidebarSessions(t),isSessionMutationScopeCurrent:()=>r!==null&&n.sessions.isConnectionScopeCurrent(r),publishSessionMutationError:(t,a)=>{e.sessionData.isSessionMutationScopeCurrent(t)?e.sessionData.publishSessionMutationError(t,a):r&&n.sessions.isConnectionScopeCurrent(r)&&c({message:i(a)})}}};return()=>void ae(a,t,n)}async function ae(e,t,n){let r=t.map(e=>e.session);if(t.length===1){let{session:r,pinned:i}=t[0];if(await G(e,r,{archived:!1,...i?{pinned:!0}:{}},n,{deferListRefresh:!0,sessionScope:!0})===`stale`)return}else{let i=await F(e,r,{archived:!1},n,{deferListRefresh:!0,sessionScope:!0});if(!i)return;let a=t.flatMap(({session:e,pinned:t})=>t&&i.includes(e)?[e]:[]);if(a.length>0&&!await F(e,a,{pinned:!0},n,{deferListRefresh:!0,sessionScope:!0})&&!e.sessionData.isSessionMutationScopeCurrent(n))return}if(e.sessionData.isSessionMutationScopeCurrent(n)){n.sessions.invalidate();try{let t=await n.sessions.refreshReplacement();if(!e.sessionData.isSessionMutationScopeCurrent(n))return;!t&&n.sessions.state.error&&e.sessionData.publishSessionMutationError(n,n.sessions.state.error)}catch(t){e.sessionData.isSessionMutationScopeCurrent(n)&&e.sessionData.publishSessionMutationError(n,t)}}}function X(e){return{skipped:te().sessionDeleteConfirm===!1,remember:()=>{h({sessionDeleteConfirm:!1}),e.context.theme.refresh()}}}async function Z(e,t,r){if(t.length===0)return;let i=await C({message:l(`sessionsView.deleteSessionsConfirm`,{count:String(t.length)}),confirmLabel:l(`common.delete`),danger:!0,skipPreference:X(r),signal:r.signal});if(!e.sessionData.isSessionMutationScopeCurrent(r)){c({message:l(`sessionsView.deleteSessionsStale`,{count:String(t.length)})});return}if(!i)return;let a=t.map(e=>({key:e.key,agentId:n(e,r.selectedAgentId),deleteTranscript:!0,...e.sessionId?{expectedSessionId:e.sessionId}:{},...e.archived===!0?{archivedOnly:!0}:{}}));for(let t of a)if(!N(e,r,{method:`sessions.delete`,params:t}))return;try{let t=await r.sessions.deleteMany(a);if(!e.sessionData.isSessionMutationScopeCurrent(r)){t.preservedWorktrees.length>0&&c({message:T(t.preservedWorktrees)});return}if(e.sidebarSessionStatusFilter()!==`active`&&(await e.sessionData.refreshSidebarSessions(r.selectedAgentId),!e.sessionData.isSessionMutationScopeCurrent(r))||t.preservedWorktrees.length>0&&(window.alert(T(t.preservedWorktrees)),!e.sessionData.isSessionMutationScopeCurrent(r)))return;t.errors.length>0&&e.sessionData.publishSessionMutationError(r,t.errors.map(({error:e})=>O(e)).join(`; `))}catch(t){e.sessionData.publishSessionMutationError(r,t)}}async function oe(e,t,n,r,i){switch(t.kind){case`toggle-unread`:await K(e,n,{unread:!r},i);break;case`move-to-group`:await K(e,n.filter(e=>(e.category??null)!==t.category),{category:t.category},i);break;case`toggle-archived`:n.every(e=>e.archived===!0)?await F(e,n,{archived:!1},i,{sessionScope:!0}):await J(e,n.filter(e=>e.archived!==!0),i);break;case`delete`:await Z(e,n,i)}}async function se(e,t,n){let r=await k({signal:n.signal,title:l(`sessionsView.renameSessionPrompt`),defaultValue:t.renameValue});if(r===null)return;let i=y(r,t.renameValue,t.userLabel);i&&await G(e,t,i,n,{sessionScope:!0})}async function ce(e,t,r,i){if(!N(e,i,{method:`sessions.assignOwner`,params:{key:t.key,owner:r},requiredScope:`operator.write`}))return;let a=await i.sessions.assignOwner(t.key,r,{agentId:n(t,i.selectedAgentId)});e.sessionData.isSessionMutationScopeCurrent(i)&&!a&&i.sessions.state.error&&e.sessionData.publishSessionMutationError(i,i.sessions.state.error)}async function le(e,t,n,r){if(n.some(e=>!e.sessionId))return e.sessionData.publishSessionMutationError(r,l(`common.refresh`)),`failed`;let i=await R(e,t,r);return i===`completed`?n.length>0?n.length===1?G(e,n[0],{category:t},r):K(e,n,{category:t},r):e.sessionData.isSessionMutationScopeCurrent(r)?(e.requestUpdate(),`completed`):`stale`:i}async function ue(e,t,n,r,i={},a={}){if(!e.sessionData.isSessionMutationScopeCurrent(r))return;let o=!(!n||e.knownSessionGroups().includes(n));if(n&&await R(e,n,r)!==`completed`)return;let s=a.resolveSession?a.resolveSession():t;if(!s){c({message:l(o?`sessionsView.newGroupMoveSkipped`:`common.refresh`)});return}((s.category??null)!==n||i.pinned!==void 0)&&await G(e,s,{category:n,...i},r)}async function Q(e,t,r){if(!e.sessionData.isSessionMutationScopeCurrent(r))return;let i=n(t,r.selectedAgentId),a={parentSessionKey:t.key,fork:!0,...t.gatewayHasActiveRun??t.hasActiveRun?{forkFrom:`last-completed`}:{},agentId:i};if(N(e,r,{method:`sessions.create`,params:a}))try{let t=await r.sessions.create(a);if(!e.sessionData.isSessionMutationScopeCurrent(r))return;t?e.selectSession(t):e.sessionData.publishSessionMutationError(r,r.sessions.state.error??l(`newSession.createFailed`))}catch(t){e.sessionData.publishSessionMutationError(r,t)}}async function de(e,t,r){let i=t.cloudWorkerStopAction;if(!i||i.blocksActiveRun&&t.hasActiveRun)return;let a=await C({message:l(`sessionsView.stopCloudWorkerConfirm`,{session:t.label}),confirmLabel:l(`sessionsView.stopCloudWorkerConfirmAction`),danger:!0,signal:r.signal});if(!e.sessionData.isSessionMutationScopeCurrent(r)){c({message:l(`sessionsView.stopCloudWorkerStale`,{session:t.label})});return}if(a&&N(e,r,i))try{let i=n(t,r.selectedAgentId);if(await j(r.client,{key:t.key,agentId:i},r.context.placementStartup),!e.sessionData.isSessionMutationScopeCurrent(r))return;let a=await r.sessions.reconcileMutation(i);a.status===`failed`&&e.sessionData.isSessionMutationScopeCurrent(r)&&e.sessionData.publishSessionMutationError(r,a.error)}catch(t){e.sessionData.publishSessionMutationError(r,t)}}async function fe(e,t,r,i={}){let a=await C({message:l(`sessionsView.deleteSessionConfirm`,{session:t.label}),confirmLabel:l(`common.delete`),danger:!0,...i.offerSkip?{skipPreference:X(r)}:{},signal:r.signal});if(!e.sessionData.isSessionMutationScopeCurrent(r)){c({message:l(`sessionsView.deleteSessionStale`,{session:t.label})});return}if(!a)return;let o=n(t,r.selectedAgentId),s={agentId:o,deleteTranscript:!0,...t.sessionId?{expectedSessionId:t.sessionId}:{},...t.archived===!0?{archivedOnly:!0}:{}};if(N(e,r,{method:`sessions.delete`,params:{key:t.key,...s}}))try{let n=await D({action:`delete`,session:{...t,agentId:o},scope:r,isCurrent:()=>e.sessionData.isSessionMutationScopeCurrent(r),request:()=>r.sessions.delete(t.key,s)});if(!n)return;if(!e.sessionData.isSessionMutationScopeCurrent(r)){n.worktreePreserved&&c({message:T([n.worktreePreserved])});return}if(e.sidebarSessionStatusFilter()!==`active`&&(await e.sessionData.refreshSidebarSessions(o),!e.sessionData.isSessionMutationScopeCurrent(r)))return;if(n.worktreePreserved){let t=n.worktreePreserved;if(!u(r.gateway.snapshot,{method:`worktrees.remove`,requiredScope:`operator.admin`}).allowed)window.alert(T([t]));else{let n=await C({message:re(t),confirmLabel:l(`common.remove`),danger:!0,signal:r.signal});if(!e.sessionData.isSessionMutationScopeCurrent(r)){c({message:T([t])});return}if(n)try{let n=await r.client.request(`worktrees.remove`,{id:t.id,force:!0});n.snapshotError&&e.sessionData.publishSessionMutationError(r,n.snapshotError)}catch(t){e.sessionData.publishSessionMutationError(r,t)}}}}catch(t){e.sessionData.publishSessionMutationError(r,t)}}function $(){return($=e((()=>{ee(),p(),_(),f(),t(),v(),d(),ie(),s(),M(),w(),A(),L(),W(),E(),x()})))()}$();export{q as archiveSessionWithUndo,ue as assignSessionCategory,ce as assignSessionOwner,le as createSessionGroup,fe as deleteSession,B as deleteSessionGroup,Z as deleteSessionsBatch,Q as forkSession,G as patchSession,se as renameSession,z as renameSessionGroup,U as reorderSidebarSection,oe as runBatchSessionAction,I as setSessionInvolvement,de as stopCloudWorker,V as updateSessionGroupDefaults};