eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.93 kB
JavaScript
import{workflowToolRunFailureOutput}from"#execution/tools/workflow/owner-inbox.js";import{isTerminalTaskStatus,readTaskInputRequestId}from"#tasks/types.js";function applyTaskTransition(e,t){if(isTerminalTaskStatus(e.status))return t.kind===`cancel`&&e.status===`cancelled`?{action:`noop`,view:e}:{action:`rejected`,reason:`Task "${e.taskId}" is already ${e.status}; "${t.kind}" cannot change a terminal task.`,view:e};let n={metadata:e.metadata,taskId:e.taskId};if(t.kind===`outcome`){let e=t.result;return{action:`accepted`,view:e.status===`completed`?{...n,status:`completed`,lastOutput:{type:`result`,data:e.output}}:e.status===`failed`?{...n,status:`failed`,lastOutput:{type:`error`,data:workflowToolRunFailureOutput(t)}}:{...n,status:`cancelled`}}}switch(t.kind){case`reject-dispatch`:return{action:`accepted`,view:{...n,lastOutput:{data:t.data,type:`error`},status:`failed`}};case`cancel`:return{action:`accepted`,view:t.usage===void 0?{...n,status:`cancelled`}:{...n,status:`cancelled`,usage:t.usage}};case`require-input`:return isValidInputRequestBatch(t.inputRequests)?{action:`accepted`,view:{inputRequests:t.inputRequests,metadata:e.metadata,status:`input_required`,taskId:e.taskId}}:{action:`rejected`,reason:`Task "${e.taskId}" received an invalid input request batch.`,view:e};case`ready`:return{action:`accepted`,view:e};case`answered`:{if(e.status!==`input_required`)return{action:`noop`,view:e};let n=new Set(t.requestIds),r=e.inputRequests.filter(e=>{let t=readTaskInputRequestId(e);return t===void 0||!n.has(t)});return r.length===e.inputRequests.length?{action:`noop`,view:e}:r.length>0?{action:`accepted`,view:{...e,inputRequests:r}}:{action:`accepted`,view:{metadata:e.metadata,status:`working`,taskId:e.taskId}}}}}function isValidInputRequestBatch(e){if(e.length===0)return!1;let t=e.map(readTaskInputRequestId);return t.every(e=>e!==void 0&&e.length>0)&&new Set(t).size===t.length}export{applyTaskTransition};