eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.35 kB
JavaScript
import{getWorkflowSandboxPendingInterrupts}from"#shared/workflow-sandbox.js";const WORKFLOW_TASK_INTERRUPT_KIND=`eve.workflow-task`;function isWorkflowTaskInterrupt(e){return isRecord(e)&&isRecord(e.payload)&&e.payload.kind===`eve.workflow-task`}function buildWorkflowTaskFromInterrupt(e){let t=e.payload,n=t.task,r=t.toolInput,i=t.toolName,a=sanitizeCallId(`${i}_${`interruptId`in e?String(e.interruptId):``}`);if(n===void 0||typeof n.workflowId!=`string`)throw Error(`Workflow delegation interrupts require a workflow task.`);let o={callId:a,executeInput:n.executeInput,input:r,kind:`workflow-task`,resultKind:n.resultKind,toolName:i,workflowId:n.workflowId};return n.nodeId!==void 0&&(o.nodeId=n.nodeId),o}function getWorkflowTaskInterrupts(e){return getWorkflowSandboxPendingInterrupts(e).filter(isWorkflowTaskInterrupt)}function buildWorkflowTasksFromInterrupt(e){return getWorkflowTaskInterrupts(e).map(e=>buildWorkflowTaskFromInterrupt(e))}function getWorkflowTaskCallIds(e){return buildWorkflowTasksFromInterrupt(e).map(e=>e.callId)}function sanitizeCallId(e){return e.replace(/[^a-zA-Z0-9_-]/g,`_`)}function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}export{WORKFLOW_TASK_INTERRUPT_KIND,buildWorkflowTaskFromInterrupt,buildWorkflowTasksFromInterrupt,getWorkflowTaskCallIds,getWorkflowTaskInterrupts,isWorkflowTaskInterrupt};