eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.84 kB
JavaScript
import{completeLegacyDriverStep}from"./completion-step.js";import{interruptLegacySessionStep}from"./interrupt-step.js";import{prepareLegacySessionStep}from"./prepare-step.js";import{sessionCommandHookToken}from"#execution/session-inbox/address.js";import{isHookConflictError}from"#execution/hook-ownership.js";import{sessionTimeoutDeadline}from"#execution/session/timeout.js";import{sessionHookTokens}from"#execution/session/hook-tokens.js";import{createSessionInbox}from"#execution/session-inbox/inbox.js";import{failSession,runPreparedSession}from"#execution/session/program.js";async function turnWorkflow(e){"use workflow";let t=await prepareLegacySessionStep(e),{sessionId:n}=t.sessionState,r=createSessionInbox(n);try{await r.claimSessionHook(sessionCommandHookToken(n))}catch(e){if(isHookConflictError(e))return;throw e}let{mode:i,sessionWritable:a}=t.input,o;try{await r.claimSessionHooks(sessionHookTokens(t)),o=await interruptLegacySessionStep(t)}catch(e){return await r.dispose(),await failSession({error:e,mode:i,serializedContext:t.serializedContext,sessionId:n,sessionState:t.sessionState,sessionWritable:a})}await runPreparedSession({anchor:{kind:`self`,notify:e=>completeLegacyDriverStep({completionToken:t.input.completionToken,result:e,serializedContext:t.serializedContext,sessionState:t.sessionState,sessionWritable:a})},caller:void 0,capabilities:t.input.capabilities,deploymentId:t.deploymentId,initialInput:t.input.delivery===void 0?void 0:{...t.input.delivery,caller:void 0},awaitFirstMessage:!1,mode:i,retention:t.input.retention,serializedContext:o.serializedContext,sessionId:n,sessionState:o.sessionState,sessionTimeoutMs:t.sessionTimeoutMs,sessionTimeoutDeadline:sessionTimeoutDeadline(t.sessionTimeoutMs,Date.now()),sessionWritable:a},r)}turnWorkflow.workflowId=`workflow//eve//turnWorkflow`;export{turnWorkflow};