eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 2.32 kB
JavaScript
import{coalesceDeliverPayloads}from"#execution/deliver-payloads.js";import{routeProxiedDeliverStep}from"#execution/proxied-deliver-step.js";import{emitRecordedTaskInputRequestStep,runProxySubagentEventStep}from"#subagents/event-proxy-step.js";import{recordTaskInputRequestStep,recordTerminalTaskViewsStep}from"#execution/tasks/parent/hitl-proxy-steps.js";import{acceptTaskAuthorizationEventStep}from"#execution/tools/subagent/accept-event-step.js";import{applyTaskAgentRequest}from"#execution/tools/subagent/task-agent-requests.js";async function routeDeliverToChildren(e){let t=coalesceDeliverPayloads(e.delivery.payloads),n=e.serializedContext,r=e.sessionState;for(let i of t.task?.inputRequests??[]){let t=await recordTaskInputRequestStep({request:i,sessionState:r});if(r=t.sessionState,!t.accepted)continue;let a=await emitRecordedTaskInputRequestStep({parentWritable:e.parentWritable,request:t.request,serializedContext:n,sessionState:r});n=a.serializedContext,r=a.sessionState}for(let i of t.task?.agentRequests??[]){let t=await applyTaskAgentRequest({...i,ownerId:i.taskId},{parentWritable:e.parentWritable,serializedContext:n,sessionState:r});n=t.serializedContext,r=t.sessionState}for(let i of t.task?.authorizationEvents??[]){if(!await acceptTaskAuthorizationEventStep({delivery:i,sessionState:r}))continue;let t=await runProxySubagentEventStep({hookPayload:i.hookPayload,parentWritable:e.parentWritable,serializedContext:n,sessionState:r});n=t.serializedContext,r=t.sessionState}if((t.task?.views?.length??0)>0){let e=await recordTerminalTaskViewsStep({serializedContext:n,sessionState:r,views:t.task?.views??[]});n=e.serializedContext,r=e.sessionState}let i=[],a=[];for(let[t,n]of e.delivery.payloads.entries()){let r={...n};if(delete r.task,Object.keys(r).length===0)continue;let o=i.length;i.push(r);for(let n of e.delivery.deliveryMetadata??[])n.payloadIndex===t&&a.push({...n,payloadIndex:o})}let o=i.length===0?void 0:{...e.delivery,deliveryMetadata:a.length===0?void 0:a,payloads:i};return o===void 0?{kind:`continue`,remainder:void 0,serializedContext:n,sessionState:r}:r.hasProxyInputRequests?await routeProxiedDeliverStep({delivery:o,parentWritable:e.parentWritable,serializedContext:n,sessionState:r}):{kind:`continue`,remainder:o,serializedContext:n,sessionState:r}}export{routeDeliverToChildren};