eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 3.58 kB
JavaScript
import{readDurableSession,replaceDurableSessionSnapshot}from"#execution/durable-session-store.js";import{findSessionTaskEntry}from"#tasks/session-index.js";import{resumeSessionInbox}from"#execution/wire/session-inbox-resume.js";import{createTaskInputRequestId,retireProxyInputRequests}from"#harness/proxy-input-requests.js";import{coalesceDeliverPayloads}from"#execution/deliver-payloads.js";import{routeDeliverPayload}from"#subagents/hitl-proxy.js";import{sendTaskInboundPayload}from"#execution/tasks/parent/run-parent.js";import{resumeWorkflowToolRunAnswers}from"#execution/tools/workflow/answer.js";async function routeProxiedDeliverStep(e){"use step";let t=await readDurableSession(e.sessionState),n=!(`delivery`in e),r=`delivery`in e?e.delivery:{auth:e.auth,kind:`deliver`,payloads:[e.payload]},i=new Map,a=new Map,o;for(let[e,n]of r.payloads.entries()){let s=routeDeliverPayload({allowRoute:(e,n)=>n.taskId===void 0||findSessionTaskEntry(t.state,n.taskId)!==void 0,payload:n,state:t.state});o??=s.parentAction,s.forSelf!==void 0&&i.set(e,s.forSelf);for(let[t,n]of s.forChildren.entries()){let i=[n.childContinuationToken,n.childSessionInbox?.sessionId??``,n.childResponseUrl??``,n.taskId??``].join(`\0`),o=a.get(i)??{answerHook:n.answerHook,childContinuationToken:n.childContinuationToken,childSessionInbox:n.childSessionInbox,childResponseUrl:n.childResponseUrl,metadata:[],payloads:[],retireRequestIds:[],sourcePayloadIndexes:[],taskId:n.taskId},c=o.payloads.length;if(o.payloads.push(n.payload),o.retireRequestIds.push(...n.retireRequestIds),o.sourcePayloadIndexes.push(e),s.forSelf===void 0&&t===0)for(let t of r.deliveryMetadata??[])t.payloadIndex===e&&o.metadata.push({...t,payloadIndex:c});a.set(i,o)}}let s=!1;for(let e of a.values()){let n=e.taskId;if(n!==void 0){let a=findSessionTaskEntry(t.state,n);if(a===void 0){mergeStrandedResponses(i,e,n);continue}if(await sendTaskInboundPayload({taskInboxToken:a.taskInboxToken,payload:{auth:r.auth,childContinuationToken:e.childContinuationToken,childSessionInbox:e.childSessionInbox,childResponseUrl:e.childResponseUrl,inputResponses:coalesceDeliverPayloads(e.payloads).inputResponses??[],kind:`input-response`,taskId:n}})===`unreachable`){mergeStrandedResponses(i,e,n);continue}t=retireProxyInputRequests(t,e.retireRequestIds),s=!0;continue}if(e.answerHook!==void 0){await resumeWorkflowToolRunAnswers(e.childContinuationToken,coalesceDeliverPayloads(e.payloads).inputResponses),t=retireProxyInputRequests(t,e.retireRequestIds),s=!0;continue}let a={...r,deliveryMetadata:e.metadata.length===0?void 0:e.metadata,payloads:e.payloads};await resumeSessionInbox(e.childSessionInbox??e.childContinuationToken,a),t=retireProxyInputRequests(t,e.retireRequestIds),s=!0}let c={serializedContext:e.serializedContext??{},sessionState:s?replaceDurableSessionSnapshot({session:t,state:e.sessionState}):e.sessionState};if(o!==void 0)return{...c,...o};let l=[...i].sort(([e],[t])=>e-t),u=l.flatMap(([e],t)=>(r.deliveryMetadata??[]).filter(t=>t.payloadIndex===e).map(e=>({...e,payloadIndex:t}))),d=l.length===0?void 0:n?coalesceDeliverPayloads(l.map(([,e])=>e)):{...r,deliveryMetadata:u.length===0?void 0:u,payloads:l.map(([,e])=>e)};return{...c,kind:`continue`,remainder:d}}function mergeStrandedResponses(e,t,n){for(let[r,i]of t.payloads.entries()){let a=t.sourcePayloadIndexes[r];if(a===void 0)continue;let o=(i.inputResponses??[]).map(e=>({...e,requestId:createTaskInputRequestId(n,e.requestId)}));if(o.length===0)continue;let s=e.get(a);e.set(a,{...s,inputResponses:[...s?.inputResponses??[],...o]})}}export{routeProxiedDeliverStep};