eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.19 kB
JavaScript
import{WORKFLOW_RUNTIME_ACTION_INTERRUPT_KIND}from"#harness/workflow-runtime-action-state.js";const PENDING_KEY=`eve.harness.pendingWorkflowInterrupt`;function getPendingWorkflowInterrupt(e){let n=e?.[PENDING_KEY];if(isRecord(n)&&!(!isWorkflowInterruptShape(n.interrupt)||!Array.isArray(n.responseMessages)))return{interrupt:n.interrupt,responseMessages:n.responseMessages}}function setPendingWorkflowInterrupt(e){return{...e.session,state:{...e.session.state,[PENDING_KEY]:{interrupt:e.interrupt,responseMessages:e.responseMessages}}}}function clearPendingWorkflowInterrupt(e){if(e.state?.[PENDING_KEY]===void 0)return e;let n={...e.state};return delete n[PENDING_KEY],{...e,state:Object.keys(n).length>0?n:void 0}}function isWorkflowInterruptShape(t){return isRecord(t)&&t.type===`code-mode-interrupt`&&typeof t.interruptId==`string`&&typeof t.outerToolCallId==`string`&&isRecord(t.payload)&&t.payload.kind===WORKFLOW_RUNTIME_ACTION_INTERRUPT_KIND&&isRecord(t.continuation)&&typeof t.continuation.outerToolCallId==`string`}function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}export{clearPendingWorkflowInterrupt,getPendingWorkflowInterrupt,setPendingWorkflowInterrupt};