UNPKG

eve

Version:

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

1 lines 1.78 kB
import{sessionCommandHookToken}from"#execution/session-command-token.js";import{readLatestTaskView,sendTaskCommand,sendTaskCommandToOwner,startTaskRun,waitForTaskCommandOwner}from"#execution/tasks/parent/run-parent.js";import{isTerminalTaskStatus}from"#tasks/types.js";import{deriveTaskId,deriveTaskInboxToken}from"#tasks/task-id.js";function prepareBackgroundTask(e){let t=deriveTaskId({callId:e.callId,parentSessionId:e.parentSessionId,parentTurnId:e.parentTurnId});return{taskInboxToken:deriveTaskInboxToken({parentContinuationToken:e.session.continuationToken,taskId:t}),createdByStepIndex:e.parentStepIndex??0,createdByTurnId:e.parentTurnId,metadata:e.metadata,taskId:t}}async function beginBackgroundTask(e){let t=prepareBackgroundTask(e);await startTaskRun({activityObserver:e.activityObserver,taskInboxToken:t.taskInboxToken,initialView:{metadata:t.metadata,status:`working`,taskId:t.taskId},parentContinuationToken:sessionCommandHookToken(e.session.sessionId)});let n=await waitForTaskCommandOwner({taskInboxToken:t.taskInboxToken});return{...t,taskRunId:n.runId}}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 readLatestTaskView({taskRunId:t.taskRunId});if(!(e!==void 0&&isTerminalTaskStatus(e.status)))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.taskInboxToken,retryUnreachable:{attempts:20,delayMs:250}})}export{acknowledgeDelegatedTasksStep,beginBackgroundTask,prepareBackgroundTask,rejectDelegatedDispatch};