UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

1 lines 2.21 kB
import{createLogger,logError}from"#internal/logging.js";import{resolveRemoteAgentForAction,startRemoteAgentSession}from"#subagents/remote-dispatch.js";import{deriveChildActivityObserverConfig}from"#execution/activity-work.js";import{createRemoteAgentStartFailureResult}from"#execution/dispatch-action-failures.js";import{mintStartOperation}from"#execution/dispatch-start-operation.js";const log=createLogger(`execution.subagent-start-remote`);async function startRemoteSubagent(e){let{action:t}=e,n=deriveChildActivityObserverConfig({activityObserver:e.activityObserver,callId:t.callId,kind:`remote-agent`,name:t.remoteAgentName,parentSessionId:e.session.sessionId,parentTurnId:e.parent.lineage.turn.id}),r,i;try{if(e.callbackBaseUrl===void 0)throw Error(`Cannot dispatch remote agent without a callback base URL.`);r=e.callbackBaseUrl,i=resolveRemoteAgentForAction({dynamicRemoteAgent:e.dynamicRemoteAgent,nodeId:t.nodeId,remoteAgentName:t.remoteAgentName,registry:e.bundle.subagentRegistry.subagentsByNodeId})}catch(n){return logError(log,`remote agent start failed`,n,{remoteAgentName:t.remoteAgentName,nodeId:t.nodeId,callId:t.callId}),{kind:`error`,result:createRemoteAgentStartFailureResult({action:t,error:n}),session:e.currentSession}}let{operation:a}=mintStartOperation({callId:t.callId,name:t.remoteAgentName,nodeId:t.nodeId,parentSessionId:e.session.sessionId,parentTurnId:e.parent.lineage.turn.id}),o={resolverId:e.dynamicRemoteAgent===void 0?t.nodeId:e.dynamicRemoteAgent.credentialsStepId};try{let s=await startRemoteAgentSession({action:t,auth:e.auth,callbackBaseUrl:r,originAudience:e.parent.originAudience,initiatorAuth:e.initiatorAuth,operationId:a.id,parent:e.parent,activityObserver:n,remote:i,session:e.session,taskId:e.taskId});return{address:{callbackBaseUrl:r,credentialResolver:o,kind:`agent/remote`,sessionId:s.sessionId,url:i.url},callId:t.callId,kind:`called`,name:t.name,session:e.currentSession,toolName:t.remoteAgentName}}catch(n){return logError(log,`remote agent start failed`,n,{remoteAgentName:t.remoteAgentName,nodeId:t.nodeId,callId:t.callId}),{kind:`error`,result:createRemoteAgentStartFailureResult({action:t,error:n}),session:e.currentSession}}}export{startRemoteSubagent};