eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.64 kB
JavaScript
import{SessionDynamicSubagentSelectionsKey,TurnDynamicSubagentSelectionsKey}from"#context/keys.js";import{getRun}from"#internal/workflow/runtime.js";import{sendTaskCommand,sendTaskCommandToOwner}from"#execution/tasks/parent/run-parent.js";import{deriveTaskId,deriveTaskInboxToken}from"#tasks/task-id.js";function createTaskAgentDispatchContext(e,t){return{auth:t,sessionDynamicSubagentSelections:e.get(SessionDynamicSubagentSelectionsKey),turnDynamicSubagentSelections:e.get(TurnDynamicSubagentSelectionsKey)}}function prepareBackgroundTask(e){let t=deriveTaskId({callId:e.callId,parentSessionId:e.parentSessionId,parentTurnId:e.parentTurnId});return{callId:e.callId,toolName:e.metadata.name,lifetime:`session`,origin:{turnId:e.parentTurnId,stepIndex:e.parentStepIndex??0},address:{hookToken:deriveTaskInboxToken({parentContinuationToken:e.session.continuationToken,taskId:t})},task:{dispatchContext:e.dispatchContext,metadata:e.metadata,taskId:t}}}async function acknowledgeDelegatedTasksStep(e){"use step";for(let t of e.tasks){if(await sendTaskCommandToOwner({command:{kind:`ready`},taskInboxToken:t.taskInboxToken,retryUnreachable:{attempts:20,delayMs:250}})!==void 0)continue;let e=await getRun(t.taskRunId).status;if(e!==`completed`&&e!==`cancelled`)throw Error(`Task run "${t.taskId}" did not accept its readiness command.`)}}async function rejectDelegatedDispatch(e){await sendTaskCommand({command:{data:e.error,kind:`reject-dispatch`},taskInboxToken:e.task.address.hookToken,retryUnreachable:{attempts:20,delayMs:250}})}export{acknowledgeDelegatedTasksStep,createTaskAgentDispatchContext,prepareBackgroundTask,rejectDelegatedDispatch};