UNPKG

eve

Version:

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

1 lines 1.32 kB
import{WizardCancelledError}from"./step.js";function isCancellation(t,n){return t instanceof WizardCancelledError||n?.aborted===!0}var RetryableSetupError=class extends Error{constructor(e,t){super(e,t),this.name=`RetryableSetupError`}};function isRetryable(e){return e instanceof RetryableSetupError}async function runInteractive(e,t,n,r){let i=t,view=()=>r?.snapshot?r.snapshot(i):i,a={};try{for(let t of e)if(r?.signal?.throwIfAborted(),t.shouldRun?.(view())!==!1)for(;;){let e=await t.gather({state:view(),initial:a[t.id],signal:r?.signal});r?.signal?.throwIfAborted(),a[t.id]=e;try{let a=await t.perform({state:view(),input:e,sink:n,signal:r?.signal});r?.signal?.throwIfAborted(),i=t.apply(i,a);break}catch(e){if(!isRetryable(e))throw e;n.write(e instanceof Error?e.message:String(e))}}}catch(e){if(isCancellation(e,r?.signal))return{kind:`cancelled`};throw e}return{kind:`done`,state:i}}async function runHeadless(e,t,n,r){let i=t,view=()=>r?.snapshot?r.snapshot(i):i;for(let t of e){if(r?.signal?.throwIfAborted(),t.shouldRun?.(view())===!1)continue;let e=await t.gather({state:view(),signal:r?.signal});r?.signal?.throwIfAborted();let a=await t.perform({state:view(),input:e,sink:n,signal:r?.signal});r?.signal?.throwIfAborted(),i=t.apply(i,a)}return i}export{RetryableSetupError,runHeadless,runInteractive};